pax_global_header00006660000000000000000000000064141724774300014523gustar00rootroot0000000000000052 comment=084dce52e54af5adbd1e2b0a67f3733dd8bfddc0 freebayes-1.3.6/000077500000000000000000000000001417247743000134775ustar00rootroot00000000000000freebayes-1.3.6/.github/000077500000000000000000000000001417247743000150375ustar00rootroot00000000000000freebayes-1.3.6/.github/ISSUE_TEMPLATE/000077500000000000000000000000001417247743000172225ustar00rootroot00000000000000freebayes-1.3.6/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000024561417247743000217230ustar00rootroot00000000000000--- name: Bug report 🐞 about: Create a report to help us improve title: '' labels: bug assignees: '' --- **Only bug reports!** The C++ version of Freebayes is in *maintenance* mode. Use the github issue tracker to report bugs *only*. For comments, questions and features, please use the google group mailing list as stated on the [README](https://github.com/freebayes/freebayes/blob/master/README.md)! **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Include all steps to reproduce the behavior and paste any complete errors from the terminal. **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. Include a set of BAM/BED files to reproduce the issue + bonus points if you try to minimize the test case yourself, as issues are often localized: - try to use sambamba or samtools slice to first extract the reference where the error occurs - if that succeeds (the error is still reproducible), continue to crop the file in binary-search fashion **Finally** Please check the README and docs carefully. Everyone working on freebayes is doing that for free. Please respect our time (too). freebayes-1.3.6/.github/workflows/000077500000000000000000000000001417247743000170745ustar00rootroot00000000000000freebayes-1.3.6/.github/workflows/ci_test.yml000066400000000000000000000014501417247743000212510ustar00rootroot00000000000000name: CI on: [push, pull_request] jobs: arch: name: freebayes-CI runs-on: ubuntu-latest strategy: matrix: os: [ubuntu-latest] python-version: [3.8] steps: - name: Update ubuntu run: sudo apt-get update - name: Install dependencies run: sudo apt-get -y -f install samtools bc parallel libvcflib-tools vcftools - uses: actions/checkout@v2 - uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Checkout submodules run: git submodule update --init --recursive - run: pip install meson ninja - name: Configure run: meson build/ - name: Compile run: ninja -C build/ - name: Run tests run: meson test --timeout-multiplier 4 --print-errorlogs -C build/ freebayes-1.3.6/.github/workflows/issue-tracker-bot.yaml000066400000000000000000000013351417247743000233250ustar00rootroot00000000000000name: "Close stale issues" on: schedule: - cron: "0 1 * * *" jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is marked stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days' close-issue-message: 'This issue was closed for lack of activity. Feel free to re-open if someone feels like working on it.' days-before-stale: 120 days-before-close: 5 exempt-issue-labels: "bug,build,enhancement,help wanted,in progress" debug-only: false operations-per-run: 100 freebayes-1.3.6/.github/workflows/main.yml000066400000000000000000000021641417247743000205460ustar00rootroot00000000000000# This is a basic workflow to help you get started with Actions name: CI # Controls when the action will run. on: # Triggers the workflow on push or pull request events but only for the master branch push: branches: [ master ] pull_request: branches: [ master ] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 # Runs a single command using the runners shell - name: Run a one-line script run: echo Hello, world! # Runs a set of commands using the runners shell - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project. freebayes-1.3.6/.github/workflows/support-tracker-bot.yaml000066400000000000000000000014441417247743000237120ustar00rootroot00000000000000name: "Close support issues" on: schedule: - cron: "0 1 * * *" jobs: stale: runs-on: ubuntu-latest steps: - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is marked stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' close-issue-message: 'This issue was closed for lack of activity. Feel free to re-open if someone feels like working on it.' days-before-stale: 30 days-before-close: 5 only-labels: "please file bugs only - use google groups instead" exempt-issue-labels: "build,enhancement,help wanted,in progress" debug-only: false operations-per-run: 100 freebayes-1.3.6/.gitignore000066400000000000000000000002661417247743000154730ustar00rootroot00000000000000paper/main.log paper/main.rtf bugs/ bin/ build/ builddir/ test/build/ CMakeFiles/ Makefile *~ \#* .#* .gdb_history *.cmake CMakeCache.txt *.patch *.rej seqlib-prefix/ vcflib-prefix/ freebayes-1.3.6/.gitmodules000066400000000000000000000007521417247743000156600ustar00rootroot00000000000000[submodule "intervaltree"] path = intervaltree url = https://github.com/ekg/intervaltree.git [submodule "test/test-simple-bash"] path = test/test-simple-bash url = https://github.com/ingydotnet/test-simple-bash.git [submodule "bash-tap"] path = test/bash-tap url = https://github.com/illusori/bash-tap.git [submodule "vcflib"] path = vcflib url = https://github.com/vcflib/vcflib.git [submodule "contrib/htslib"] path = contrib/htslib url = https://github.com/samtools/htslib.git freebayes-1.3.6/.travis.yml000066400000000000000000000010071417247743000156060ustar00rootroot00000000000000language: cpp os: linux dist: focal addons: apt: packages: - bc - samtools - parallel - meson - ninja-build - libvcflib-tools - vcftools jobs: include: - arch: amd64 compiler: gcc - arch: arm64 compiler: gcc - arch: arm64 compiler: clang script: - if [ "$TRAVIS_CPU_ARCH" = arm64 ]; then meson_opts="-Doptimization=0"; fi - meson build/ $meson_opts - ninja -C build/ - meson test --timeout-multiplier 8 --print-errorlogs -C build/ freebayes-1.3.6/CMakeLists-do-not-use.txt000066400000000000000000000104021417247743000202240ustar00rootroot00000000000000# Specify the minimum version for CMake # # Note that the main build system has moved to meson (see meson.build). # message(FATAL_ERROR "+++ WARNING: CMake has been replaced with the meson/ninja build system +++") # If you want to use cmake make sure to align with upstream. cmake_minimum_required(VERSION 3.1) # Project's name project(freebayes) # We build using c++14 set(CMAKE_CXX_STANDARD 14) # Use all standard-compliant optimizations set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3 -g") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -g") # Set the output folder where your program will be created set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/bin) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) # The following folder will be included include_directories("${PROJECT_SOURCE_DIR}") # Add external projects include(ExternalProject) # Find our dependencies include(FindZLIB) include(FindBZip2) include(FindLibLZMA) include(FindThreads) ExternalProject_Add(vcflib SOURCE_DIR "${CMAKE_SOURCE_DIR}/vcflib" CMAKE_ARGS "${CMAKE_ARGS};-DBUILD_ONLY_LIB=1;-DCMAKE_INSTALL_PREFIX=") ExternalProject_Get_property(vcflib INSTALL_DIR) set(vcflib_INCLUDE "${INSTALL_DIR}/include") set(vcflib_LIB "${INSTALL_DIR}/lib") ExternalProject_Add(seqlib SOURCE_DIR ${CMAKE_SOURCE_DIR}/SeqLib BUILD_IN_SOURCE 1 # why do we have to build in source? CONFIGURE_COMMAND ./configure BUILD_COMMAND $(MAKE) CXXFLAGS='-std=c++14' INSTALL_COMMAND $(MAKE) install) ExternalProject_Get_property(seqlib SOURCE_DIR) set(seqlib_INCLUDE "${SOURCE_DIR}") set(seqlib_LIB "${SOURCE_DIR}/lib") #set(CMAKE_BUILD_TYPE Release) #set(CMAKE_BUILD_TYPE Debug) # set up our target executable and specify its dependencies and includes add_library(freebayes_OBJS OBJECT ${CMAKE_SOURCE_DIR}/src/Contamination.cpp ${CMAKE_SOURCE_DIR}/src/Marginals.cpp ${CMAKE_SOURCE_DIR}/src/DataLikelihood.cpp ${CMAKE_SOURCE_DIR}/src/NonCall.cpp ${CMAKE_SOURCE_DIR}/src/Genotype.cpp ${CMAKE_SOURCE_DIR}/src/Utility.cpp ${CMAKE_SOURCE_DIR}/src/AlleleParser.cpp ${CMAKE_SOURCE_DIR}/src/Dirichlet.cpp ${CMAKE_SOURCE_DIR}/src/split.cpp ${CMAKE_SOURCE_DIR}/src/Sample.cpp ${CMAKE_SOURCE_DIR}/src/SegfaultHandler.cpp ${CMAKE_SOURCE_DIR}/src/BedReader.cpp ${CMAKE_SOURCE_DIR}/src/Multinomial.cpp ${CMAKE_SOURCE_DIR}/src/LeftAlign.cpp ${CMAKE_SOURCE_DIR}/src/CNV.cpp ${CMAKE_SOURCE_DIR}/src/ResultData.cpp ${CMAKE_SOURCE_DIR}/src/Bias.cpp ${CMAKE_SOURCE_DIR}/src/Result.cpp ${CMAKE_SOURCE_DIR}/src/Allele.cpp ${CMAKE_SOURCE_DIR}/src/IndelAllele.cpp ${CMAKE_SOURCE_DIR}/src/Fasta.cpp ${CMAKE_SOURCE_DIR}/src/Ewens.cpp ${CMAKE_SOURCE_DIR}/src/Parameters.cpp ${CMAKE_SOURCE_DIR}/src/BGZF.cpp) set(freebayes_DEPS vcflib seqlib) add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/src/version_git.txt COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/update_version.sh ${CMAKE_CURRENT_SOURCE_DIR}) add_custom_target(SetVersion ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/version_git.txt) add_dependencies(freebayes_OBJS ${freebayes_DEPS} SetVersion) set(freebayes_INCLUDES "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/ttmath" "${vcflib_INCLUDE}" "${seqlib_INCLUDE}" "${seqlib_INCLUDE}/htslib") set(freebayes_LIBS "${vcflib_LIB}/libvcflib.a" "${seqlib_LIB}/libseqlib.a" "${seqlib_LIB}/libhts.a" ${CMAKE_THREAD_LIBS_INIT} ${ZLIB_LIBRARIES} ${LIBLZMA_LIBRARIES} ${BZIP2_LIBRARIES}) target_include_directories(freebayes_OBJS PUBLIC ${freebayes_INCLUDES}) set_target_properties(freebayes_OBJS PROPERTIES POSITION_INDEPENDENT_CODE TRUE) add_executable(freebayes $ ${CMAKE_SOURCE_DIR}/src/freebayes.cpp) target_include_directories(freebayes PUBLIC ${freebayes_INCLUDES}) target_link_libraries(freebayes ${freebayes_LIBS}) set_target_properties(freebayes PROPERTIES OUTPUT_NAME "freebayes") add_executable(bamleftalign $ ${CMAKE_SOURCE_DIR}/src/bamleftalign.cpp) target_include_directories(bamleftalign PUBLIC ${freebayes_INCLUDES}) target_link_libraries(bamleftalign ${freebayes_LIBS}) set_target_properties(bamleftalign PROPERTIES OUTPUT_NAME "bamleftalign") install(TARGETS freebayes DESTINATION bin) install(TARGETS bamleftalign DESTINATION bin) if (APPLE) elseif (TRUE) if (BUILD_STATIC) set(CMAKE_EXE_LINKER_FLAGS "-static") endif() endif() freebayes-1.3.6/LICENSE000066400000000000000000000020561417247743000145070ustar00rootroot00000000000000Copyright (c) 2010 Erik Garrison, Gabor Marth Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. freebayes-1.3.6/README.md000066400000000000000000000652101417247743000147620ustar00rootroot00000000000000# *freebayes*, a haplotype-based variant detector ## user manual and guide [![Github-CI](https://github.com/freebayes/freebayes/workflows/CI/badge.svg)](https://github.com/freebayes/freebayes/actions) [![Travis-CI](https://travis-ci.com/freebayes/freebayes.svg?branch=master)](https://travis-ci.com/freebayes/freebayes) [![AnacondaBadge](https://anaconda.org/bioconda/freebayes/badges/installer/conda.svg)](https://anaconda.org/bioconda/freebayes) [![DL](https://anaconda.org/bioconda/freebayes/badges/downloads.svg)](https://anaconda.org/bioconda/freebayes) [![BrewBadge](https://img.shields.io/badge/%F0%9F%8D%BAbrew-freebayes-brightgreen.svg)](https://github.com/brewsci/homebrew-bio) [![GuixBadge](https://img.shields.io/badge/gnuguix-freebayes-brightgreen.svg)](https://www.gnu.org/software/guix/packages/F/) [![DebianBadge](https://badges.debian.net/badges/debian/testing/freebayes/version.svg)](https://packages.debian.org/testing/freebayes) [![Chat on Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#vcflib:matrix.org) -------- ## Overview [*freebayes*](http://arxiv.org/abs/1207.3907) is a [Bayesian](http://en.wikipedia.org/wiki/Bayesian_inference) genetic variant detector designed to find small polymorphisms, specifically SNPs (single-nucleotide polymorphisms), indels (insertions and deletions), MNPs (multi-nucleotide polymorphisms), and complex events (composite insertion and substitution events) smaller than the length of a short-read sequencing alignment. *freebayes* is haplotype-based, in the sense that it calls variants based on the literal sequences of reads aligned to a particular target, not their precise alignment. This model is a straightforward generalization of previous ones (e.g. PolyBayes, samtools, GATK) which detect or report variants based on alignments. This method avoids one of the core problems with alignment-based variant detection--- that identical sequences may have multiple possible alignments: *freebayes* uses short-read alignments ([BAM](http://samtools.sourceforge.net/SAMv1.pdf) files with [Phred+33](http://en.wikipedia.org/wiki/Phred_quality_score) encoded quality scores, now standard) for any number of individuals from a population and a [reference genome](http://en.wikipedia.org/wiki/Reference_genome) (in [FASTA](http://en.wikipedia.org/wiki/FASTA_format) format) to determine the most-likely combination of genotypes for the population at each position in the reference. It reports positions which it finds putatively polymorphic in variant call file ([VCF](http://www.1000genomes.org/node/101)) format. It can also use an input set of variants (VCF) as a source of prior information, and a copy number variant map (BED) to define non-uniform ploidy variation across the samples under analysis. freebayes is maintained by Erik Garrison and Pjotr Prins. See also [RELEASE-NOTES](./RELEASE-NOTES.md). ## Citing freebayes A preprint [Haplotype-based variant detection from short-read sequencing](http://arxiv.org/abs/1207.3907) provides an overview of the statistical models used in freebayes. We ask that you cite this paper if you use freebayes in work that leads to publication. This preprint is used for documentation and citation. freebayes was never submitted for review, but has been used in over 1000 publications. Please use this citation format: Garrison E, Marth G. Haplotype-based variant detection from short-read sequencing. *arXiv preprint arXiv:1207.3907 [q-bio.GN]* 2012 If possible, please also refer to the version number provided by freebayes when it is run without arguments or with the `--help` option. ## Install freebayes is provided as a pre-built 64-bit static Linux binary as part of [releases](https://github.com/freebayes/freebayes/releases). Debian and Conda packages should work too, see the badges at the top of this page. To build freebayes from source check the [development](#Development) section below. It is important to get the full recursive git checkout and dependencies. ## Support Please report any issues or questions to the [freebayes mailing list](https://groups.google.com/forum/#!forum/freebayes). Report bugs on the [freebayes issue tracker](https://github.com/freebayes/freebayes/issues) ## Usage In its simplest operation, freebayes requires only two inputs: a FASTA reference sequence, and a BAM-format alignment file sorted by reference position. For instance: freebayes -f ref.fa aln.bam >var.vcf ... will produce a VCF file describing all SNPs, INDELs, and haplotype variants between the reference and aln.bam. The CRAM version is freebayes -f ref.fa aln.cram >var.vcf Multiple BAM files may be given for joint calling. Typically, we might consider two additional parameters. GVCF output allows us to have coverage information about non-called sites, and we can enable it with `--gvcf`. For performance reasons we may want to skip regions of extremely high coverage in the reference using the `--skip-coverage` parameter or `-g`. These can greatly increase runtime but do not produce meaningful results. For instance, if we wanted to exclude regions of 1000X coverage, we would run: freebayes -f ref.fa aln.bam --gvcf -g 1000 >var.vcf For a description of available command-line options and their defaults, run: freebayes --help ## Examples Call variants assuming a diploid sample: freebayes -f ref.fa aln.bam >var.vcf Call variants on only chrQ: freebayes -f ref.fa -r chrQ aln.bam >var.vcf Call variants on only chrQ, from position 1000 to 2000: freebayes -f ref.fa -r chrQ:1000-2000 aln.bam >var.vcf Require at least 5 supporting observations to consider a variant: freebayes -f ref.fa -C 5 aln.bam >var.vcf Skip over regions of high depth by discarding alignments overlapping positions where total read depth is greater than 200: freebayes -f ref.fa -g 200 aln.bam >var.vcf Use a different ploidy: freebayes -f ref.fa -p 4 aln.bam >var.vcf Assume a pooled sample with a known number of genome copies. Note that this means that each sample identified in the BAM file is assumed to have 32 genome copies. When running with high --ploidy settings, it may be required to set `--use-best-n-alleles` to a low number to limit memory usage. freebayes -f ref.fa -p 32 --use-best-n-alleles 4 --pooled-discrete aln.bam >var.vcf Generate frequency-based calls for all variants passing input thresholds. You'd do this in the case that you didn't know the number of samples in the pool. freebayes -f ref.fa -F 0.01 -C 1 --pooled-continuous aln.bam >var.vcf Use an input VCF (bgzipped + tabix indexed) to force calls at particular alleles: freebayes -f ref.fa -@ in.vcf.gz aln.bam >var.vcf Generate long haplotype calls over known variants: freebayes -f ref.fa --haplotype-basis-alleles in.vcf.gz \ --haplotype-length 50 aln.bam Naive variant calling: simply annotate observation counts of SNPs and indels: freebayes -f ref.fa --haplotype-length 0 --min-alternate-count 1 \ --min-alternate-fraction 0 --pooled-continuous --report-monomorphic >var.vcf ## Parallelisation In general, freebayes can be parallelised by running multiple instances of freebayes on separate regions of the genome, and then concatenating the resulting output. The wrapper, [freebayes-parallel](https://github.com/ekg/freebayes/blob/master/scripts/freebayes-parallel) will perform this, using [GNU parallel](https://www.gnu.org/software/parallel/). Example freebayes-parallel operation (use 36 cores in this case): freebayes-parallel <(fasta_generate_regions.py ref.fa.fai 100000) 36 \ -f ref.fa aln.bam > var.vcf Note that any of the above examples can be made parallel by using the scripts/freebayes-parallel script. If you find freebayes to be slow, you should probably be running it in parallel using this script to run on a single host, or generating a series of scripts, one per region, and run them on a cluster. Be aware that the freebayes-parallel script contains calls to other programs using relative paths from the scripts subdirectory; the easiest way to ensure a successful run is to invoke the freebayes-parallel script from within the scripts subdirectory. A current limitation of the freebayes-parallel wrapper, is that due to variance in job memory and runtimes, some cores can go unused for long periods, as they will not move onto the next job unless all cores in use have completed their respective genome chunk. This can be partly avoided by calculating coverage of the input bam file, and splitting the genome into regions of equal coverage using the [coverage_to_regions.py script](https://github.com/freebayes/freebayes/blob/master/scripts/coverage_to_regions.py). An alternative script [split_ref_by_bai_datasize.py](https://github.com/freebayes/freebayes/blob/master/scripts/split_ref_by_bai_datasize.py) will determine target regions based on the data within multiple bam files, with the option of choosing a target data size. This is useful when submitting to Slurm and other cluster job managers, where use of resources needs to be controlled. Alternatively, users may wish to parallelise freebayes within the workflow manager [snakemake](https://snakemake.readthedocs.io/en/stable/). As snakemake automatically dispatches jobs when a core becomes available, this avoids the above issue. An example [.smk file](https://github.com/freebayes/freebayes/blob/master/examples/snakemake-freebayes-parallel.smk), and associated [conda environment recipe](https://github.com/freebayes/freebayes/blob/master/examples/freebayes-env.yaml), can be found in the /examples directory. ## Calling variants: from fastq to VCF You've sequenced some samples. You have a reference genome or assembled set of contigs, and you'd like to determine reference-relative variants in your samples. You can use freebayes to detect the variants, following these steps: * **Align** your reads to a suitable reference (e.g. with [bwa](http://bio-bwa.sourceforge.net/) or [MOSAIK](https://github.com/wanpinglee/MOSAIK)) * Ensure your alignments have **read groups** attached so their sample may be identified by freebayes. Aligners allow you to do this, but you can also use [bamaddrg](http://github.com/ekg/bamaddrg) to do so post-alignment. * **Sort** the alignments (e.g. [sambamba sort](https://github.com/biod/sambamba)). * **Mark duplicates**, for instance with [sambamba markdup](https://github.com/biod/sambamba) (if PCR was used in the preparation of your sequencing library) * ***Run freebayes*** on all your alignment data simultaneously, generating a VCF. The default settings should work for most use cases, but if your samples are not diploid, set the `--ploidy` and adjust the `--min-alternate-fraction` suitably. * **Filter** the output e.g. using reported QUAL and/or depth (DP) or observation count (AO). * **Interpret** your results. * (possibly, **Iterate** the variant detection process in response to insight gained from your interpretation) freebayes emits a standard VCF 4.1 output stream. This format is designed for the probabilistic description of allelic variants within a population of samples, but it is equally suited to describing the probability of variation in a single sample. Of primary interest to most users is the QUAL field, which estimates the probability that there is a polymorphism at the loci described by the record. In freebayes, this value can be understood as 1 - P(locus is homozygous given the data). It is recommended that users use this value to filter their results, rather than accepting anything output by freebayes as ground truth. By default, records are output even if they have very low probability of variation, in expectation that the VCF will be filtered using tools such as [vcffilter](http://github.com/ekg/vcflib#vcffilter) in [vcflib](http://github.com/ekg/vcflib), which is also included in the repository under `vcflib/`. For instance, freebayes -f ref.fa aln.bam | vcffilter -f "QUAL > 20" >results.vcf removes any sites with estimated probability of not being polymorphic less than phred 20 (aka 0.01), or probability of polymorphism > 0.99. In simulation, the [receiver-operator characteristic](https://en.wikipedia.org/wiki/Receiver_operating_characteristic) (ROC) tends to have a very sharp inflection between Q1 and Q30, depending on input data characteristics, and a filter setting in this range should provide decent performance. Users are encouraged to examine their output and both variants which are retained and those they filter out. Most problems tend to occur in low-depth areas, and so users may wish to remove these as well, which can also be done by filtering on the DP flag. ## Calling variants in a population freebayes is designed to be run on many individuals from the same population (e.g. many human individuals) simultaneously. The algorithm exploits a neutral model of allele diffusion to impute most-confident genotypings across the entire population. In practice, the discriminant power of the method will improve if you run multiple samples simultaneously. In other words, if your study has multiple individuals, you should run freebayes against them at the same time. This also ensures consistent reporting of information about evidence for all samples at any locus where any are apparently polymorphic. To call variants in a population of samples, each alignment must have a read group identifier attached to it (RG tag), and the header of the BAM file in which it resides must map the RG tags to sample names (SM). Furthermore, read group IDs must be unique across all the files used in the analysis. One read group cannot map to multiple samples. The reason this is required is that freebayes operates on a virtually merged BAM stream provided by the BamTools API. If merging the files in your analysis using bamtools merge would generate a file in which multiple samples map to the same RG, the files are not suitable for use in population calling, and they must be modified. Users may add RG tags to BAM files which were generated without this information by using (as mentioned in "Calling variants" above) [bamaddrg](http://github.com/ekg/bamaddrg). If you have many files corresponding to many individuals, add a unique read group and sample name to each, and then open them all simultaneously with freebayes. The VCF output will have one column per sample in the input. ## Performance tuning If you find freebayes to be slow, or use large amounts of memory, consider the following options: - Set `--use-best-n-alleles 4`: this will reduce the number of alleles that are considered, which will decrease runtime at the cost of sensitivity to lower-frequency alleles at multiallelic loci. Calculating site qualities requires O(samples\*genotypes) runtime, and the number of genotypes is exponential in ploidy and the number of alleles that are considered, so this is very important when working with high ploidy samples (and also `--pooled-discrete`). By default, freebayes puts no limit on this. - Remove `--genotype-qualities`: calculating genotype qualities requires O(samples\*genotypes) memory. - Set higher input thresholds. Require that N reads in one sample support an allele in order to consider it: `--min-alternate-count N`, or that the allele fraction in one sample is M: `--min-alternate-fraction M`. This will filter noisy alleles. The defaults, `--min-alternate-count 2 --min-alternate-fraction 0.2`, are most-suitable for diploid, moderate-to-high depth samples, and should be changed when working with different ploidy samples. Alternatively, `--min-alternate-qsum` can be used to set a specific quality sum, which may be more flexible than setting a hard count on the number of observations. ## Observation filters and qualities ### Input filters By default, freebayes doesn't freebayes may be configured to filter its input so as to ignore low-confidence alignments and alleles which are only supported by low-quality sequencing observations (see `--min-mapping-quality` and `--min-base-quality`). It also will only evaluate a position if at least one read has mapping quality of `--min-supporting-mapping-quality` and one allele has quality of at least `--min-supporting-base-quality`. Reads with more than a fixed number of high-quality mismatches can be excluded by specifying `--read-mismatch-limit`. This is meant as a workaround when mapping quality estimates are not appropriately calibrated. Reads marked as duplicates in the BAM file are ignored, but this can be disabled for testing purposes by providing `--use-duplicate-reads`. freebayes does not mark duplicates on its own, you must use another process to do this, such as that in [sambamba](https://github.com/biod/sambamba). ### Observation thresholds As a guard against spurious variation caused by sequencing artifacts, positions are skipped when no more than `--min-alternate-count` or `--min-alternate-fraction` non-clonal observations of an alternate are found in one sample. These default to 2 and 0.05 respectively. The default setting of `--min-alternate-fraction 0.05` is suitable for diploid samples but may need to be changed for higher ploidy. ### Allele type exclusion freebayes provides a few methods to ignore certain classes of allele, e.g. `--throw-away-indels-obs` and `--throw-awary-mnps-obs`. Users are *strongly cautioned against using these*, because removing this information is very likely to reduce detection power. To generate a report only including SNPs, use vcffilter post-call as such: freebayes ... | vcffilter -f "TYPE = snp" ### Normalizing variant representation If you wish to obtain a VCF that does not contain haplotype calls or complex alleles, first call with default parameters and then decompose the output with tools in vcflib, vt, vcf-tools, bcftools, GATK, or Picard. Here we use a tool in vcflib that normalizes the haplotype calls into pointwise SNPs and indels: freebayes ... | vcfallelicprimitives -kg >calls.vcf Note that this is not done by default as it makes it difficult to determine which variant calls freebayes completed. The raw output faithfully describes exactly the calls that were made. ### Observation qualities freebayes estimates observation quality using several simple heuristics based on manipulations of the phred-scaled base qualities: * For single-base observations, *mismatches* and *reference observations*: the un-adjusted base quality provided in the BAM alignment record. * For *insertions*: the mean quality of the bases inside of the putatively inserted sequence. * For *deletions*: the mean quality of the bases flanking the putatively deleted sequence. * For *haplotypes*: the mean quality of allele observations within the haplotype. By default, both base and mapping quality are into the reported site quality (QUAL in the VCF) and genotype quality (GQ, when supplying `--genotype-qualities`). This integration is driven by the "Effective Base Depth" metric first developed in [snpTools](http://www.hgsc.bcm.edu/software/snptools), which scales observation quality by mapping quality: *P(Obs|Genotype) ~ P(MappedCorrectly(Obs))P(SequencedCorrectly(Obs))*. Set `--standard-gls` to use the model described in the freebayes preprint. ## Stream processing freebayes can read BAM from standard input `--stdin` instead of directly from files. This allows the application of any number of streaming BAM filters and calibrators to its input. bam_merger.sh | streaming_filter_or_process.sh | freebayes --stdin ... This pattern allows the adjustment of alignments without rewriting BAM files, which could be expensive depending on context and available storage. A prime example of this would be graph-based realignment of reads to known variants as implemented in [glia](http://github.com/ekg/glia). Using this pattern, you can filter out reads with certain criteria using bamtools filter without having to modify the input BAM file. You can also use the bamtools API to write your own custom filters in C++. An example filter is bamfiltertech [src/bamfiltertech.cpp](http://github.com/freebayes/freebayes/blob/master/src/bamfilte rtech.cpp), which could be used to filter out technologies which have characteristic errors which may frustrate certain types of variant detection. ## INDELs In principle, any gapped aligner which is sensitive to indels will produce satisfactory input for use by freebayes. Due to potential ambiguity, indels are not parsed when they overlap the beginning or end of alignment boundaries. When calling indels, it is important to homogenize the positional distribution of insertions and deletions in the input by using left realignment. This is now done automatically by freebayes, but the behavior can be turned off via `--dont-left-align-indels` flag. You probably don't want to do this. Left realignment will place all indels in homopolymer and microsatellite repeats at the same position, provided that doing so does not introduce mismatches between the read and reference other than the indel. This method computationally inexpensive and handles the most common classes of alignment inconsistency. ## Haplotype calls As freebayes is haplotype-based, left-alignment is necessary only for the determination of candidate polymorphic loci. Once such loci are determined, haplotype observations are extracted from reads where: 1. putative variants lie within `--haplotype-length` bases of each other (default 3bp), 2. the reference sequence has repeats (e.g. microsatellites or STRs are called as one haplotype), 3. the haplotype which is called has Shannon entropy less than `--min-repeat-entropy`, which is off by default but can be set to ~1 for optimal genotyping of indels in lower-complexity sequence. After a haplotype window is determined by greedily expanding the window across overlapping haplotype observations, all reads overlapping the window are used to establish data likelihoods, *P(Observations|Genotype)*, for all haplotypes which have sufficient support to pass the input filters. Partial observations are considered to support those haplotypes which they could match exactly. For expedience, only haplotypes which are contiguously observed by the reads are considered as putative alleles in this process. This differs from other haplotype-based methods, such as [Platypus](http://www.well.ox.ac.uk/platypus), which consider all possible haplotypes composed of observed component alleles (SNPs, indels) in a given region when generating likelihoods. The primary adantages of this approach are conceptual simplicity and performance, and it is primarily limited in the case of short reads, an issue that is mitigated by increasing read lengths. Also, a hybrid approach must be used to call haplotypes from high-error rate long reads. ### Re-genotyping known variants and calling long haplotypes For longer reads with higher error rates, it is possible to generate long haplotypes in two passes over the data. For instance, if we had very long reads (e.g. >10kb) at moderate depth and high error rate (>5%) such as might be produced by PacBio, we could do something like: freebayes -f ref.fa aln.bam | vcffilter -f "QUAL > 20" >vars.vcf ... thus generating candidate variants of suitable quality using the default detection window. We can then use these as "basis alleles" for the observation of haplotypes, considering all other putative variants supported by the alignment to be sequencing errors: freebayes -f ref.fa --haplotype-length 500 \ --haplotype-basis-alleles vars.vcf aln.bam >haps.vcf These steps should allow us to read long haplotypes directly from input data with high error rates. The high error rate means that beyond a small window each read will contain a completely different literal haplotype. To a point, this property improves our signal to noise ratio and can effectively filter out sequencing errors at the point of the input filters, but it also decreases the effective observation depth will prevent the generation of any calls if a long `--haplotype-length` is combined with high a sequencing error rate. ## Best practices and design philosophy freebayes follows the patterns suggested by the [Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy), which promotes the development of simple, modular systems that perform a single function, and can be combined into more complex systems using stream processing of common interchange formats. freebayes incorporates a number of features in order to reduce the complexity of variant detection for researchers and developers: * **Indel realignment is accomplished internally** using a read-independent method, and issues resulting from discordant alignments are dramatically reducedy through the direct detection of haplotypes. * The need for **base quality recalibration is avoided** through the direct detection of haplotypes. Sequencing platform errors tend to cluster (e.g. at the ends of reads), and generate unique, non-repeating haplotypes at a given locus. * **Variant quality recalibration is avoided** by incorporating a number of metrics, such as read placement bias and allele balance, directly into the Bayesian model. (Our upcoming publication will discuss this in more detail.) A minimal pre-processing pipeline similar to that described in "Calling variants" should be sufficient for most uses. For more information, please refer to a post by Brad Chapman [on minimal BAM preprocessing methods](http://bcbio.wordpress.com/2013/10/21/updated-comparison-of-variant-detection-methods-ensemble-freebayes-and-minimal-bam-preparation-pipelines/). ## Development To download freebayes, please use git to download the most recent development tree: git clone --recursive https://github.com/freebayes/freebayes.git If you have a repo, update the submodules with git submodule update --init --recursive --progress On Debian you'll need a gcc compiler and want packages: - bc - samtools - parallel - meson - ninja-build - libvcflib-tools - vcftools Build dependencies are listed in [guix.scm](./guix.scm) and [travis](.travis.yml). Builds have been tested with gcc 7 and clang 9. ## Compilation Make sure to have dependencies installed and checkout the tree with `--recursive`. Freebayes can target AMD64 and ARM64 (with Neon extensions). Recently we added the meson build system which can be run with meson build/ --buildtype debug or to setup with clang instead env CXX=clang++ CC=clang CC_LD=lld meson build --buildtype debug Next compile and test in the ~build~ directory cd build ninja ninja test The freebayes binary should be in build/freebayes Tests on ARM may be slow. If you get a TIMEOUT use a multiplier, e.g. meson test -t 4 -C build/ See [meson.build](./meson.build) for more information. ### Compile in a Guix container After checking out the repo with git recursive create a Guix container with all the build tools with guix shell -C -D -f guix.scm See also [guix.scm](./guix.scm). freebayes-1.3.6/RELEASE-NOTES.md000066400000000000000000000063651417247743000160010ustar00rootroot00000000000000For contributions see [contributors](https://github.com/freebayes/freebayes/graphs/contributors) and [commits](https://github.com/freebayes/freebayes/commits/master). ## ChangeLog v1.3.6 (20220121) This is a maintenance release of Freebayes: + Added parallel snakemake example and text (thanks @sanjaynagi) + Updated packaged htslib build to release 1.14 + README fixes https://github.com/freebayes/freebayes/issues/726 (thanks @veghp) + Add option to force use of submodule deps (thanks @jnumm) + Using recent guix shell support for building freebayes + Added static build support with meson+ninja + Started tracking freebayes performance in ./test/performance/benchmark.md + Added matrix channel badge to README + Added Pjotr Prins as maintainer in README and banner The provided static binary is built against gcc 10.3.0 and htslib 1.12. Note that at this point the static binary builds with: meson build -Dstatic=true -Dprefer_system_deps=false --buildtype release ## ChangeLog v1.3.5 (20210210) This is a maintenance and bug-fix release of Freebayes: + Namespace Fasta* classes which has a build conflict with fastahack https://github.com/freebayes/freebayes/commit/00594a1db84855f99c9fe2c23305b86fa542dff2 (thanks @jnumm) ## ChangeLog v1.3.4 (20210129) This is a maintenance and bug-fix release of Freebayes: + 9 issues [closed](https://github.com/freebayes/freebayes/milestone/1?closed=1) + Added support for --trim-complex-tail with #139 and 97735089a1bbf658862fb16f4514c0ad93195e0a (thanks @tsibley) + Fixed meson to not build dependencies if they are found to be installed. This should facilitate Debian builds (thanks @jnumm) + Cleanup and small fixes (thanks @jnumm) + Tested running combinations of builds with installed libs and local builds (htslib, vcflib, tabixpp --- only seqlib needs confirmation) + Updated scripts to use python3 (thanks @tillea) ## ChangeLog v1.3.3 (20201213) This is a maintenance release of Freebayes: + Freebayes compiles for ARM64 + Freebayes supports CRAM and we added a test for CRAM and a hint in the README + Added Meson+Ninja build system for faster builds + Merged: Set CRAM reference for the reader #632 (thanks @SebastianHollizeck) + Merged: Fix help messages for python tools #635 (thanks @ibebio) + Fixed: Please port to Python3 #569 which removes Debian patch (thanks @tillea) + Moved unused files from ./src to ./contrib/freebayes + Moved stripped SeqLib source into ./contrib/SeqLib as SeqLib is no longer maintained + Made htslib a primary dependency of freebayes + Updated htslib to the latest version + Fixed clang build, requires a patch on htslib sent upstream with https://github.com/samtools/htslib/pull/1190 + Applied https://github.com/walaj/SeqLib/pull/53 (thanks @jmarshall) + Freebayes builds against stock htslib for Debian etc. Unfortunately Debian does not include htslib headers, nor does it handle LZMA codecs for CRAM, so the source tree is pulled in for local builds. See #664. + Updated travis-CI: passes new meson builds for gcc + Added github-CI: passes Some minor stuff: + Added regression test so we track some changes through git repo + Added github agent to deal with stale issues on the issue tracker ## Earlier release notes See github [releases](https://github.com/freebayes/freebayes/releases) freebayes-1.3.6/TODO.md000066400000000000000000000002501417247743000145630ustar00rootroot00000000000000# TODO for freebayes - [ ] Update Debian - [ ] Update Conda - [ ] Fix CI builds - [ ] Introduce metrics such as from rtg-tools https://hpc.nih.gov/apps/rtg-tools.html freebayes-1.3.6/contrib/000077500000000000000000000000001417247743000151375ustar00rootroot00000000000000freebayes-1.3.6/contrib/README.md000066400000000000000000000006571417247743000164260ustar00rootroot00000000000000# Contrib This directory contains (stripped down) editions of projects that are no longer actively maintained. The goal is to have a clean repository of files that are in (active) use for freebayes. ## Htslib Freebayes has a submodule for htslib CRAM/BAM reading ## SeqLib A subset of SeqLib is included that is patched for ARM64 using simde in ssw.c: #define SIMDE_ENABLE_NATIVE_ALIASES #include freebayes-1.3.6/contrib/SeqLib/000077500000000000000000000000001417247743000163165ustar00rootroot00000000000000freebayes-1.3.6/contrib/SeqLib/LICENSE000066400000000000000000000010551417247743000173240ustar00rootroot00000000000000Copyright 2016 Jeremiah A. Wala Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. freebayes-1.3.6/contrib/SeqLib/README.md000066400000000000000000000314651417247743000176060ustar00rootroot00000000000000Important: the freebayes repository contains a subset of SeqLib and a patch for building on ARM64 [![Build Status](https://travis-ci.org/walaj/SeqLib.svg?branch=master)](https://travis-ci.org/walaj/SeqLib) [![Coverage Status](https://coveralls.io/repos/github/walaj/SeqLib/badge.svg?branch=master)](https://coveralls.io/github/walaj/SeqLib?branch=master) C++ interface to HTSlib, BWA-MEM and Fermi **License:** [Apache2][license] API Documentation ----------------- [API Documentation][htmldoc] Citation -------- If you use SeqLib in your applications, please cite: http://bioinformatics.oxfordjournals.org/content/early/2016/12/21/bioinformatics.btw741.full.pdf+html Note that the values for the SeqAn benchmarking in Table 2 should be corrected to 7.7 Gb memory and 33.92 seconds in CPU time, when compiling SeqAn with ``-O3 -DNDEBUG``. SeqAn also does full string decompression. Wall times for SeqAn may be shorter than CPU time because it uses embedded multi-threading during BAM IO. Table of contents ================= * [Installation](#installation) * [Integrating into build system](#integrating-into-build-system) * [Description](#description) * [Memory management](#memory-management) * [Other C++ APIs](#other-c++-apis) * [Command line usage](#command-line-usage) * [Examples](#examples) * [Attributions](#attributions) Installation ------------ ####### ```bash git clone --recursive https://github.com/walaj/SeqLib.git cd SeqLib ## cd htslib && ./configure --enable-libcurl && cd .. # support for remote (FTP/HTTPS/Google etc) BAM access ./configure ## or: ./configure LDFLAGS='-lcurl -lcrypto' # for remote support make ## for c++11 (req. for AhoCorasick), run as: make CXXFLAGS='-std=c++11' make install make seqtools ## for the command line version ``` I have successfully compiled with GCC-4.5+ and Clang on Linux and OSX. SeqLib is compatible with c++98 and later. Integrating into build system ----------------------------- After building, you will need to add the relevant header directories: ```bash SEQ= C_INCLUDE_PATH=$C_INCLUDE_PATH:$SEQ:$SEQ/htslib ``` And need to link the SeqLib static library and Fermi, BWA and HTSlib libraries ```bash SEQ= LDFLAGS="$LDFLAGS $SEQ/bin/libseqlib.a $SEQ/bin/libbwa.a $SEQ/bin/libfml.a $SEQ/bin/libhts.a" ``` To add support for reading BAMs, etc with HTTPS, FTP, S3, Google cloud, etc, you must compile and link with libcurl. ```bash ## set hts to build with libcurl links and hfile_libcurl.c cd SeqLib/htslib ./configure --enable-libcurl ## compile seqlib with libcurl support cd ../ # back to SeqLib main directory ./configure LDFLAGS="-lcurl -lcrypto" make make install ``` Remember then to then link any projects made with SeqLib with the additional ``-lcurl -lcrypto`` flags. Description ----------- SeqLib is a C++ library for querying BAM/SAM/CRAM files, performing BWA-MEM operations in memory, and performing sequence assembly. Core operations in SeqLib are peformed by: * [HTSlib][htslib] * [BWA-MEM][BWA] (Apache2 branch) * [FermiKit][fermi] The primary developer for these three projects is Heng Li. SeqLib also has support for storing and manipulating genomic intervals via ``GenomicRegion`` and ``GenomicRegionCollection``. It uses an [interval tree][int] (provided by Erik Garrison @ekg) to provide for rapid interval queries. SeqLib is built to be extendable. See [VariantBam][var] for examples of how to take advantage of C++ class extensions to build off of the SeqLib base functionality. Memory management ----------------- SeqLib is built to automatically handle memory management of C code from BWA-MEM and HTSlib by using C++ smart pointers that handle freeing memory automatically. One of the main motivations behind SeqLib is that all access to sequencing reads, BWA, etc should completely avoid ``malloc`` and ``free``. In SeqLib all the mallocs/frees are handled automatically in the constructors and destructors. Other C++ APIs ------------------------------ There are overlaps between this project and [BamTools][BT] from Derek Barnett, [Gamgee][gam] from the Broad Institute, and [SeqAn][seqan] from Freie Universitat Berlin. These projects provide excellent and high quality APIs. SeqLib provides further performance enhancement and new capabilites for certain classes of bioinformatics problems. Some differences: * SeqLib has ~2-4x faster read/write speed over BamTools and lower memory footprint. * SeqLib has support for CRAM file * SeqLib provides in memory access to BWA-MEM, BLAT, chromosome aware interval tree, read correction, and sequence assembly with Fermi. * SeqAn provide a substantial amount of additional capabilites not in SeqLib, including graph operations and an expanded suite of multi-sequence alignments. * SeqAn embeds multi-threading into some functionality like BAM IO to improve wall times. For your particular application, our hope is that SeqLib will provide a comprehensive and powerful envrionment to develop bioinformatics tools, or to be used in conjuction with the capablities in SeqAn and BamTools. Feature requests and comments are welcomed. Command Line Usage ------------------ ```bash ## BFC correction (input mode -m is b (BAM/SAM/CRAM), output mode -w is SAM stream samtools view in.bam -h 1:1,000,000-1,002,000 | seqtools bfc - -G $REF | samtools sort - -m 4g -o corrected.bam ## Without a pipe, write to BAM seqtools bfc in.bam -G $REF -b > corrected.bam ## Skip realignment, send to fasta seqtools bfc in.bam -f > corrected.fasta ## Input as gzipped or plain fasta (or fastq), send to aligned BAM seqtools bfc --infasta in.fasta -G $REG -b > corrected.bam ##### ASSEMBLY (same patterns as above) samtools view in.bam -h 1:1,000,000-1,002,000 | seqtools fml - -G $REF | samtools sort - -m 4g -o assembled.bam ``` Examples -------- ##### Targeted re-alignment of reads to a given region with BWA-MEM ``` #include "SeqLib/RefGenome.h" #include "SeqLib/BWAWrapper.h" using namespace SeqLib; RefGenome ref; ref.LoadIndex("hg19.fasta"); // get sequence at given locus std::string seq = ref.QueryRegion("1", 1000000,1001000); // Make an in-memory BWA-MEM index of region BWAWrapper bwa; UnalignedSequenceVector usv = {{"chr_reg1", seq}}; bwa.ConstructIndex(usv); // align an example string with BWA-MEM std::string querySeq = "CAGCCTCACCCAGGAAAGCAGCTGGGGGTCCACTGGGCTCAGGGAAG"; BamRecordVector results; // hardclip=false, secondary score cutoff=0.9, max secondary alignments=10 bwa.AlignSequence(querySeq, "my_seq", results, false, 0.9, 10); // print results to stdout for (auto& i : results) std::cout << i << std::endl; ``` ##### Read a BAM line by line, realign reads with BWA-MEM, write to new BAM ``` #include "SeqLib/BamReader.h" #include "SeqLib/BWAWrapper.h" using namespace SeqLib; // open the reader BAM/SAM/CRAM BamReader bw; bw.Open("test.bam"); // open a new interface to BWA-MEM BWAWrapper bwa; bwa.LoadIndex("hg19.fasta"); // open the output BAM BamWriter writer; // or writer(SeqLib::SAM) or writer(SeqLib::CRAM) writer.SetWriteHeader(bwa.HeaderFromIndex()); writer.Open("out.bam"); writer.WriteHeader(); BamRecord r; bool hardclip = false; float secondary_cutoff = 0.90; // secondary alignments must have score >= 0.9*top_score int secondary_cap = 10; // max number of secondary alignments to return while (GetNextRecord(r)) { BamRecordVector results; // alignment results (can have multiple alignments) bwa.AlignSequence(r.Sequence(), r.Qname(), results, hardclip, secondary_cutoff, secondary_cap); for (auto& i : results) writer.WriteRecord(i); } ``` ##### Perform sequence assembly with Fermi directly from a BAM ``` #include "SeqLib/FermiAssembler.h" using namespace SeqLib; FermiAssembler f; // read in data from a BAM BamReader br; br.Open("test_data/small.bam"); // retreive sequencing reads (up to 20,000) BamRecord r; BamRecordVector brv; size_t count = 0; while(br.GetNextRead(r) && count++ < 20000) brv.push_back(r); // add the reads and error correct them f.AddReads(brv); f.CorrectReads(); // peform the assembly f.PerformAssembly(); // retrieve the contigs std::vector contigs = f.GetContigs(); // write as a fasta to stdout for (size_t i = 0; i < contigs.size(); ++i) std::cout << ">contig" << i << std::endl << contigs[i] << std::endl; ``` ##### Plot a collection of gapped alignments ``` using namespace SeqLib; BamReader r; r.Open("test_data/small.bam"); GenomicRegion gr("X:1,002,942-1,003,294", r.Header()); r.SetRegion(gr); SeqPlot s; s.SetView(gr); BamRecord rec; BamRecordVector brv; while(r.GetNextRecord(rec)) if (!rec.CountNBases() && rec.MappedFlag()) brv.push_back(rec); s.SetPadding(20); std::cout << s.PlotAlignmentRecords(brv); ``` Trimmed output from above (NA12878): ``` CTATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTGTCCATCCATCCATCCATCCA CTATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTAT CATCCATCCATCCATCCATCCACCCATTCATCCATCCACCTATCCATCTATCAATCCATCCATCCATCCA TATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCA TATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTGTCCATCCATCCATCCATC TATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCA ATCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCAT TCTATCTATCTCTTCTTCTGTCCGCTCATGTGTCTGTCCATCTATCTATC GTCCATCCATCCATCCATCCATCCATCCACCCATTCATCCATCCACCTATCCATCTATCAATCCATCCATCCATCCATCCGTCTATCTTATGCATCACAGC TCTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCATT CTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCATTC CTATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCATTC ATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCATTCAT ATCTATCTCTTCTTCTGTCCGTTCATGTGTCTGTCCATCTATCTATCCATCTATCTATCATCTAACTATCTG----TCCATCCATCCATCCATCCACCCATTCAT ``` ##### Read simultaneously from a BAM, CRAM and SAM file and send to stdout ``` using namespace SeqLib; #include "SeqLib/BamReader.h" BamReader r; // read from multiple streams coordinate-sorted order r.Open("test_data/small.bam"); r.Open("test_data/small.cram"); r.Open("test_data/small.sam"); BamWriter w(SeqLib::SAM); // set uncompressed output w.Open("-"); // write to stdout w.SetHeader(r.Header()); // specify the header w.WriteHeader(); // write out the header BamRecord rec; while(r.GetNextRecord(rec)) w.WriteRecord(rec); w.Close(); // Optional. Will close on destruction ``` ##### Perform error correction on reads, using [BFC][bfc] ``` #include "SeqLib/BFC.h" using namespace SeqLib; // brv is some set of reads to train the error corrector for (BamRecordVector::const_iterator r = brv.begin(); r != brv.end(); ++r) b.AddSequence(r->Sequence().c_str(), r->Qualities().c_str(), r->Qname().c_str()); b.Train(); b.clear(); // clear the training sequences. Training parameters saved in BFC object // brv2 is some set to correct for (BamRecordVector::const_iterator r = brv2.begin(); r != brv2.end(); ++r) b.AddSequence(r->Sequence().c_str(), r->Qualities().c_str(), r->Qname().c_str()); b.ErrorCorrect(); // retrieve the sequences UnalignedSequenceVector v; std::string name, seq; while (b.GetSequences(seq, name)) v.push_back({name, seq}); ``` Support ------- This project is being actively developed and maintained by Jeremiah Wala (jwala@broadinstitute.org). Attributions ------------ We would like to thank Heng Li (htslib/bwa/fermi), Erik Garrison (interval tree), Christopher Gilbert (aho corasick), and Mengyao Zhao (sw alignment), for providing open-source and robust bioinformatics solutions. Development, support, guidance, testing: * Steve Huang - Research Scientist, Broad Institute * Steve Schumacher - Computational Biologist, Dana Farber Cancer Institute * Cheng-Zhong Zhang - Research Scientist, Broad Institute * Marcin Imielinski - Assistant Professor, Cornell University * Rameen Beroukhim - Assistant Professor, Harvard Medical School [htslib]: https://github.com/samtools/htslib.git [SGA]: https://github.com/jts/sga [BLAT]: https://genome.ucsc.edu/cgi-bin/hgBlat?command=start [BWA]: https://github.com/lh3/bwa [license]: https://github.com/walaj/SeqLib/blob/master/LICENSE [BamTools]: https://raw.githubusercontent.com/wiki/pezmaster31/bamtools/Tutorial_Toolkit_BamTools-1.0.pdf [API]: http://pezmaster31.github.io/bamtools/annotated.html [htmldoc]: http://walaj.github.io/seqlibdocs/doxygen [var]: https://github.com/walaj/VariantBam [BT]: https://github.com/pezmaster31/bamtools [seqan]: https://www.seqan.de [gam]: https://github.com/broadinstitute/gamgee [int]: https://github.com/ekg/intervaltree.git [fermi]: https://github.com/lh3/fermi-lite [bfc]: https://github.com/lh3/bfc freebayes-1.3.6/contrib/SeqLib/SeqLib/000077500000000000000000000000001417247743000174755ustar00rootroot00000000000000freebayes-1.3.6/contrib/SeqLib/SeqLib/BamHeader.h000066400000000000000000000070251417247743000214620ustar00rootroot00000000000000#ifndef SEQLIB_BAM_HEADER_H__ #define SEQLIB_BAM_HEADER_H__ #include "htslib/hts.h" #include "htslib/sam.h" #include "htslib/bgzf.h" #include "htslib/kstring.h" #include "SeqLib/SeqLibUtils.h" #include #include namespace SeqLib { /** Store a reference chromosome and its length * @note This parallels the data found in SQ tag of BAM header */ struct HeaderSequence { /** Make a new header sequence * @param n Name of the chromosome * @param l Length of the chromosome */ HeaderSequence(const std::string& n, uint32_t l) : Name(n), Length(l) {} std::string Name; ///< Name of the sequence (eg "1") uint32_t Length; ///< Length of the sequence (eg LN:191469) }; typedef std::vector HeaderSequenceVector; /** Store a header to a BAM file * * Stores a BAM header, which also acts as a dictionary of * reference sequences, with names and lengths. */ class BamHeader { public: /** Initializes a new empty BamHeader with no data * * @note No memory is allocated here */ BamHeader() {}; /** Construct a new header from ref sequences and lengths * */ BamHeader(const HeaderSequenceVector& hsv); /** Initialize a BamHeader from a string containing * a BAM header in human-readable form (e.g. PG ... ) * @param hdr Text of a BAM header, with newlines separating lines */ BamHeader(const std::string& hdr); /** Create a new BamHeader from a raw HTSlib header. * * @note This will make a copy of the input header */ BamHeader(const bam_hdr_t * hdr); /** Return the number of sequences store in this dictionary * Returns 0 if header is unitialized. */ int NumSequences() const; /** Return the length of the sequence */ int GetSequenceLength(int id) const; /** Return the length of the sequence */ int GetSequenceLength(const std::string& id) const; /** Return if the header has been opened */ bool IsOpen() const { return h.get() != NULL; } /** Return the full text of the header */ std::string AsString() const; /** Convert a numeric sequence ID to a name * * @exception Throws an out_of_range if ID is >= then number of * targets in dictionary, or if header is uninitialized.. * @exception Throws an invalid_argument if ID is < 0; */ std::string IDtoName(int id) const; /** Check if the header has been initialized */ bool isEmpty() const { return h.get() == NULL; } /** Return the raw bam_hdr_t */ const bam_hdr_t* get() const { return h.get(); } /** Return the raw bam_hdr_t */ bam_hdr_t* get_() const { return h.get(); } /** Get the numeric ID associated with a sequence name. * @param name Name of the sequence * @return ID of named sequence, or -1 if not in dictionary */ int Name2ID(const std::string& name) const; /** Return the reference sequences as vector of HeaderSequence objects */ HeaderSequenceVector GetHeaderSequenceVector() const; private: // adapted from sam.c - bam_nam2id int bam_name2id_2(const bam_hdr_t *h, const char *ref) const; SeqPointer h; // make the name 2 id map (to be used by Name2ID) // replaces part of bam_name2id that makes the hash table void ConstructName2IDTable(); // hash table for name to id SeqPointer > n2i; // adapted from sam_hdr_read bam_hdr_t* sam_hdr_read2(const std::string& hdr) const; }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/BamReader.h000066400000000000000000000220731417247743000214740ustar00rootroot00000000000000#ifndef SEQLIB_BAM_POLYREADER_H #define SEQLIB_BAM_POLYREADER_H #include #include "SeqLib/ReadFilter.h" #include "SeqLib/BamWalker.h" #include "SeqLib/ThreadPool.h" // forward declare this from hts.c extern "C" { int hts_useek(htsFile *file, long uoffset, int where); } namespace SeqLib { class BamReader; typedef SeqPointer SharedIndex; ///< Shared pointer to the HTSlib index struct typedef SeqPointer SharedHTSFile; ///< Shared pointer to the HTSlib file pointer // store file accessors for single BAM class _Bam { friend class BamReader; public: _Bam(const std::string& m) : m_region_idx(0), m_in(m), empty(true), mark_for_closure(false) {} _Bam() : m_region_idx(0), empty(true), mark_for_closure(false) {} //! Return the header for this BAM const BamHeader& GetHeader() const { return m_hdr; } ~_Bam() {} std::string GetFileName() const { return m_in; } // point index to this region of bam bool SetRegion(const GenomicRegion& gp); // which region are we on size_t m_region_idx; private: // do the read loading // the return value here is just passed along from sam_read1 int32_t load_read(BamRecord& r); void set_pool(ThreadPool t) { if (t.IsOpen() && fp) // probably dont need this, it can handle null hts_set_opt(fp.get(), HTS_OPT_THREAD_POOL, &t.p); //t.p is htsThreadPool } void reset() { empty = true; mark_for_closure = false; m_region_idx = 0; } // close this bam bool close() { if (!fp) return false; fp.reset(); idx.reset(); hts_itr.reset(); //fp = nullptr; // calls destructor actually //idx = nullptr; //hts_itr = nullptr; empty = true; mark_for_closure = false; m_region_idx = 0; return true; } // set a pre-loaded index (save on loading each time) //void set_index(SharedIndex& i) { idx = i; } // set a pre-loaded htsfile (save on loading each time) //void set_file(SharedHTSFile& i) { fp = i; } // set a pre-loaded index and make a deep copy //void deep_set_index(); GRC* m_region; // local copy of region SharedHTSFile fp; // BAM file pointer SharedIndex idx; // bam index SeqPointer hts_itr; // iterator to index location std::string m_in; // file name BamHeader m_hdr; // the BAM header // the next read "slotted" for this BAM BamRecord next_read; // the next read "slot" is empty bool empty; // if set to true, then won't even attempt to lookup read bool mark_for_closure; // open the file pointer bool open_BAM_for_reading(SeqLib::ThreadPool t); // hold the reference for CRAM reading std::string m_cram_reference; }; typedef SeqHashMap _BamMap; /** Stream in reads from multiple BAM/SAM/CRAM or stdin */ class BamReader { public: /** Construct an empty BamReader */ BamReader(); /** Destroy a BamReader and close all connections to the BAMs * * Calling the destructor will take care of all of the C-style dealloc * calls required within HTSlib to close a BAM or SAM file. */ ~BamReader() { } /** Explicitly set a reference genome to be used to decode CRAM file. * If no reference is specified, will automatically load from * file pointed to in CRAM header using the SQ tags. * @note This function is useful if the reference path pointed * to by the UR field of SQ is not on your system, and you would * like to explicitly provide one. * @param ref Path to an index reference genome */ void SetCramReference(const std::string& ref); /** Set a part of the BAM to walk. * * This will set the BAM pointer to the given region. * @note This clears all other regions and resets the index * pointer to this location * @param gp Location to point the BAM to * @return true if the region is found in the index */ bool SetRegion(const GenomicRegion& gp); /** Assign this BamReader a thread pool * * The thread pool with stay with this object, but * will not be created or destroyed. This must be done * separately, which allows for multiple readers/writers * to be connected to one thread pool * @return false if the thread pool has not been opened */ bool SetThreadPool(ThreadPool p); /** Set up multiple regions. Overwrites current regions. * * This will set the BAM pointer to the first element of the * input list. * @note This clears all other regions and resets the index * pointer to the first element of grc * @param grc Set of location to point BAM to * @return true if the regions are found in the index */ bool SetMultipleRegions(const GRC& grc); /** Return if the reader has opened the first file */ bool IsOpen() const { if (m_bams.size()) return m_bams.begin()->second.fp.get() != NULL; return false; } /* Set pre-loaded raw htslib index Provide the reader with an index structure that is already loaded. This is useful if there are multiple newly created BamReader objects that use the same index (e.g. make a BAM index in a loop) @note This does not make a copy, so ops on this index are shared with every other object that controls it. @param i Pointer to an HTSlib index @param f Name of the file to set index for @return True if the file f is controlled by this object bool SetPreloadedIndex(const std::string& f, SharedIndex& i); Return a shared pointer to the raw htsFile object @exception Throws runtime_error if the requested file has not been opened already with Open @param f File to retrieve the htsFile from. SharedHTSFile GetHTSFile (const std::string& f) const; Return a shared pointer to the raw htsFile object from the first BAM @exception Throws runtime_error if no files have been opened already with Open @param f File to retrieve the htsFile from. SharedHTSFile GetHTSFile () const; Set a pre-loaded raw index, to the first BAM @note see SetPreloadedIndex(const std::string& f, SharedIndex& i) bool SetPreloadedIndex(SharedIndex& i); */ /** Return if the reader has opened the file * @param f Name of file to check */ bool IsOpen(const std::string& f) const { SeqHashMap::const_iterator ff = m_bams.find(f); if (ff == m_bams.end()) return false; return ff->second.fp.get() != NULL; } /** Close all of the BAMs */ bool Close(); /** Close a particular BAM/CRAM/SAM * @param f Particular file to close * @return True if BAM is found and is closable (eg no already closed) */ bool Close(const std::string& f); /** Reset the given BAM/SAM/CRAM to the begining, but keep the loaded indicies and file-pointers * @param f Name of file to reset * @return Returns false if this BAM is not found in object * @note Unlike Reset(), this version will NOT reset the regions, since other BAMs may still be * using them. */ bool Reset(const std::string& f); /** Return a vector of all of the BAM/SAM/CRAMs in this reader */ std::vector ListFiles() const { std::vector out; for (_BamMap::const_iterator i = m_bams.begin(); i != m_bams.end(); ++i) out.push_back(i->first); return out; } /** Create a string representation of * all of the regions to walk */ std::string PrintRegions() const; /** Print out some basic info about this reader */ friend std::ostream& operator<<(std::ostream& out, const BamReader& b); /** Open a BAM/SAM/CRAM/STDIN file for streaming in * @param bam Path to a SAM/CRAM/BAM file, or "-" for stdin * @return True if open was successful */ bool Open(const std::string& bam); /** Open a set of BAM/SAM/CRAM/STDIN files for streaming in * @param bams Path to a vector fo SAM/CRAM/BAM files, or "-" for stdin * @return True if open was successful */ bool Open(const std::vector& bams); /** Retrieve the next read from the available input streams. * @note Will chose the read with the lowest left-alignment position * from the available streams. * @param r Read to fill with data * @return true if the next read is available */ bool GetNextRecord(BamRecord &r); /** Reset all the regions, but keep the loaded indicies and file-pointers */ void Reset(); /** Return a copy of the header to the first file * @note The object returned is a copy of the BamHeader, but * this does not actually copy the actual header contents. Header contents * are stored in a shared_ptr, and so the new returned BamHeader * have a copy of the shared_ptr that will point to the originally alloced * raw header data. */ BamHeader Header() const; /** Return a concatenation of all the headers */ std::string HeaderConcat() const; protected: GRC m_region; ///< Regions to access _BamMap m_bams; ///< store the htslib file pointers etc to BAM files private: // hold the reference for CRAM reading std::string m_cram_reference; // for multicore reading/writing ThreadPool pool; }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/BamRecord.h000066400000000000000000000772261417247743000215220ustar00rootroot00000000000000#ifndef SEQLIB_BAM_RECORD_H #define SEQLIB_BAM_RECORD_H #include //#include //+11 #include #include #include #include #include extern "C" { #include "htslib/hts.h" #include "htslib/sam.h" #include "htslib/bgzf.h" #include "htslib/kstring.h" #include "htslib/faidx.h" } #include "SeqLib/SeqLibUtils.h" #include "SeqLib/GenomicRegion.h" #include "SeqLib/UnalignedSequence.h" static const char BASES[16] = {' ', 'A', 'C', ' ', 'G', ' ', ' ', ' ', 'T', ' ', ' ', ' ', ' ', ' ', ' ', 'N'}; static std::string cigar_delimiters = "MIDNSHPX"; static const uint8_t CIGTAB[255] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; #define FRORIENTATION 0 #define FFORIENTATION 1 #define RFORIENTATION 2 #define RRORIENTATION 3 #define UDORIENTATION 4 namespace SeqLib { /** Basic container for a single cigar operation * * Stores a single cigar element in a compact 32bit form (same as HTSlib). */ class CigarField { friend class Cigar; public: /** Construct the cigar op by type (MIDNSHP=X) and length * @param t Cigar op (MIDNSHP=X) * @param l Cigar length * @exception Throws an invalid_argument if l <= 0 or invalid cigar op */ CigarField(char t, uint32_t l); /** Construct the cigar op from the raw sam.h uint32_t (first 4 bits op, last 28 len) */ CigarField(uint32_t f) : data(f) {} /** Return the raw sam.h uint8_t cigar data */ inline uint32_t raw() const { return data; } /** Print the cigar field (eg 35M) */ friend std::ostream& operator<<(std::ostream& out, const CigarField& c); /** Return the cigar op type (one of MIDNSHPX) as a char */ inline char Type() const { return bam_cigar_opchr(data); } /** Return the raw sam.h uint8_t cigar type (bam_cigar_op(data)) */ inline uint8_t RawType() const { return bam_cigar_op(data); } /** Return the length of the cigar op (eg 35M returns 35) */ inline uint32_t Length() const { return bam_cigar_oplen(data); } /** Returns true if cigar op matches bases on the reference (MDN=X) */ inline bool ConsumesReference() const { return bam_cigar_type(bam_cigar_op(data))&2; } /** Returuns true cigar op matches bases on the query (MIS=X) */ inline bool ConsumesQuery() const { return bam_cigar_type(bam_cigar_op(data))&1; } /** Return whether two CigarField objects have same op and len */ inline bool operator==(const CigarField& c) const { return c.Type() == Type() && c.Length() == Length(); } /** Return whether two CigarField objects have different op and/or len */ inline bool operator!=(const CigarField& c) const { return !(c == *this); } private: // first 4 bits hold op, last 28 hold len uint32_t data; }; /** CIGAR for a single gapped alignment * * Constructed as a vector of CigarField objects. */ class Cigar { public: /** Construct an empty CIGAR */ Cigar() {} /** Construct from a CIGAR string * @param cig CIGAR string, e.g. 54M46S */ Cigar(const std::string& cig); typedef std::vector::iterator iterator; ///< Iterator for move between CigarField ops typedef std::vector::const_iterator const_iterator; ///< Iterator (const) for move between CigarField ops iterator begin() { return m_data.begin(); } ///< Iterator (aka std::vector.begin() iterator end() { return m_data.end(); } ///< Iterator (aka std::vector.end() const_iterator begin() const { return m_data.begin(); } ///< Iterator (aka std::vector.begin() const_iterator end() const { return m_data.end(); } ///< Iterator (aka std::vector.end() /** Const reference to last cigar op */ inline const CigarField& back() const { return m_data.back(); } /** Reference to last cigar op */ inline CigarField& back() { return m_data.back(); } /** Const reference to first cigar op */ inline const CigarField& front() const { return m_data.front(); } /** Reference to first cigar op */ inline CigarField& front() { return m_data.front(); } /** Returns the number of cigar ops */ inline size_t size() const { return m_data.size(); } /** Returns the i'th cigar op */ inline CigarField& operator[](size_t i) { return m_data[i]; } /** Returns the i'th cigar op (const) */ const CigarField& operator[](size_t i) const { return m_data[i]; } /** Return the sum of all of the lengths for all kinds */ inline int TotalLength() const { int t = 0; for (Cigar::const_iterator c = m_data.begin(); c != m_data.end(); ++c) //for (auto& c : m_data) t += c->Length(); return t; } /** Return the number of query-consumed bases */ inline int NumQueryConsumed() const { int out = 0; for (Cigar::const_iterator c = m_data.begin(); c != m_data.end(); ++c) if (c->ConsumesQuery()) out += c->Length(); return out; } /** Return the number of reference-consumed bases */ inline int NumReferenceConsumed() const { int out = 0; // for (auto& c : m_data) for (Cigar::const_iterator c = m_data.begin(); c != m_data.end(); ++c) if (c->ConsumesReference()) out += c->Length(); return out; } /** Add a new cigar op */ inline void add(const CigarField& c) { m_data.push_back(c); } /** Return whether two Cigar objects are equivalent */ bool operator==(const Cigar& c) const; /** Return whether two Cigar objects are not equivalent */ bool operator!=(const Cigar& c) const { return !(c == *this); } /** Print cigar string (eg 35M25S) */ friend std::ostream& operator<<(std::ostream& out, const Cigar& c); private: std::vector m_data; // should make this simpler }; typedef SeqHashMap CigarMap; /** Class to store and interact with a SAM alignment record * * HTSLibrary reads are stored in the bam1_t struct. Memory allocation * is taken care of by bam1_t init, and deallocation by destroy_bam1. This * class is a C++ interface that automatically takes care of memory management * for these C allocs/deallocs. The only member of BamRecord is a bam1_t object. * Alloc/dealloc is taken care of by the constructor and destructor. */ class BamRecord { friend class BLATWraper; friend class BWAWrapper; public: /** Construct a BamRecord manually from a name, sequence, cigar and location * @param name Name of the read * @param seq Sequence of the read (compsed of ACTG or N). * @param gr Location of the alignment * @param cig Cigar alignment * @exception Throws an invalid_argument exception if length of seq is not commensurate * with number of query-bases consumed in cigar. * @exception Throws an invalid_argument exception if width of gr is not commensurate * with number of reference-bases consumed in cigar. */ BamRecord(const std::string& name, const std::string& seq, const GenomicRegion * gr, const Cigar& cig); /** Construct an empty BamRecord by calling bam_init1() */ void init(); /** Check if a read is empty (not initialized) * @return true if read was not initialized with any values */ bool isEmpty() const { return !b; } /** Explicitly pass a bam1_t to the BamRecord. * * The BamRecord now controls the memory, and will delete at destruction * @param a An allocated bam1_t */ void assign(bam1_t* a); /** Make a BamRecord with no memory allocated and a null header */ BamRecord() {} /** BamRecord is aligned on reverse strand */ inline bool ReverseFlag() const { return b ? ((b->core.flag&BAM_FREVERSE) != 0) : false; } /** BamRecord has mate aligned on reverse strand */ inline bool MateReverseFlag() const { return b ? ((b->core.flag&BAM_FMREVERSE) != 0) : false; } /** BamRecord has is an interchromosomal alignment */ inline bool Interchromosomal() const { return b ? b->core.tid != b->core.mtid && PairMappedFlag() : false; } /** BamRecord is a duplicate */ inline bool DuplicateFlag() const { return b ? ((b->core.flag&BAM_FDUP) != 0) : false; } /** BamRecord is a secondary alignment */ inline bool SecondaryFlag() const { return b ? ((b->core.flag&BAM_FSECONDARY) != 0) : false; } /** BamRecord is paired */ inline bool PairedFlag() const { return b ? ((b->core.flag&BAM_FPAIRED) != 0) : false; } /** Get the relative pair orientations * * 0 - FR (RFORIENTATION) (lower pos read is Fwd strand, higher is reverse) * 1 - FF (FFORIENTATION) * 2 - RF (RFORIENTATION) * 3 - RR (RRORIENTATION) * 4 - Undefined (UDORIENTATION) (unpaired or one/both is unmapped) */ inline int PairOrientation() const { if (!PairMappedFlag()) return UDORIENTATION; else if ( (!ReverseFlag() && Position() <= MatePosition() && MateReverseFlag() ) || // read 1 (ReverseFlag() && Position() >= MatePosition() && !MateReverseFlag() ) ) // read 2 return FRORIENTATION; else if (!ReverseFlag() && !MateReverseFlag()) return FFORIENTATION; else if (ReverseFlag() && MateReverseFlag()) return RRORIENTATION; else if ( ( ReverseFlag() && Position() < MatePosition() && !MateReverseFlag()) || (!ReverseFlag() && Position() > MatePosition() && MateReverseFlag())) return RFORIENTATION; assert(false); } /** BamRecord is failed QC */ inline bool QCFailFlag() const { return b ? ((b->core.flag&BAM_FQCFAIL) != 0) : false; } /** BamRecord is supplementary alignment */ inline bool SupplementaryFlag() const { return b ? ((b->core.flag&BAM_FSUPPLEMENTARY) != 0) : false; } /** BamRecord is mapped */ inline bool MappedFlag() const { return b ? ((b->core.flag&BAM_FUNMAP) == 0) : false; } /** BamRecord mate is mapped */ inline bool MateMappedFlag() const { return b ? ((b->core.flag&BAM_FMUNMAP) == 0) : false; } /** BamRecord is mapped and mate is mapped and in pair */ inline bool PairMappedFlag() const { return b ? (!(b->core.flag&BAM_FMUNMAP) && !(b->core.flag&BAM_FUNMAP) && (b->core.flag&BAM_FPAIRED) ) : false; } /** BamRecord is mapped in proper pair */ inline bool ProperPair() const { return b ? (b->core.flag&BAM_FPROPER_PAIR) : false;} /** BamRecord has proper orientation (FR) */ inline bool ProperOrientation() const { if (!b) return false; // mate on diff chrom gets false if (b->core.tid != b->core.mtid) return false; // if FR return true if (b->core.pos < b->core.mpos) { return (b->core.flag&BAM_FREVERSE) == 0 && (b->core.flag&BAM_FMREVERSE) != 0 ? true : false; } else { return (b->core.flag&BAM_FREVERSE) == 0 && (b->core.flag&BAM_FMREVERSE) != 0 ? false : true; } } /** Count the total number of N bases in this sequence */ int32_t CountNBases() const; /** Trim the sequence down by removing bases from ends with low quality scores. Stores the * trimmed sequence in the GV tag, but does not affect any other part of read. * @param qualTrim Minimal quality score, zero-based (eg # == 2) * @param startpoint Returns the new starting point for the sequence * @param endpoint Return the new ending point for the sequence */ void QualityTrimmedSequence(int32_t qualTrim, int32_t& startpoint, int32_t& endpoint) const; /** Retrieve the quality trimmed seqeuence from QT tag if made. Otherwise return normal seq */ std::string QualitySequence() const; /** Get the alignment position */ inline int32_t Position() const { return b ? b->core.pos : -1; } /** Get the alignment position, including soft clips */ int32_t PositionWithSClips() const; /** Get the alignment position of mate */ inline int32_t MatePosition() const { return b ? b->core.mpos: -1; } /** Count the number of secondary alignments by looking at XA tag. * @note A secondary alignment is an alternative mapping. This may not * work for non-BWA aligners that may not place the XA tag. */ int32_t CountBWASecondaryAlignments() const; /** Count the number of chimeric alignments by looking at XP and SA tags * @note A secondary alignment is an alternative mapping. This may not * work for non-BWA aligners that may not place the XP/SA tags. BWA-MEM * used the XP tag prior to v0.7.5, and SA aftewards. */ int32_t CountBWAChimericAlignments() const; /** Get the end of the alignment */ int32_t PositionEnd() const; /** Get the end of the alignment, including soft clips */ int32_t PositionEndWithSClips() const; /** Get the end of the aligment mate pair */ int32_t PositionEndMate() const; /** Get the chromosome ID of the read */ inline int32_t ChrID() const { return b ? b->core.tid : -1; } /** Get the chrosome ID of the mate read */ inline int32_t MateChrID() const { return b ? b->core.mtid : -1; } /** Get the mapping quality */ inline int32_t MapQuality() const { return b ? b->core.qual : -1; } /** Set the qc fail flag on/off (true -> on) */ inline void SetQCFail(bool f) { if (f) b->core.flag |= BAM_FQCFAIL; else b->core.flag &= ~BAM_FQCFAIL; } /** Set the mapping quality */ inline void SetMapQuality(int32_t m) { if (b) b->core.qual = m; } /** Set the chr id */ inline void SetChrID(int32_t i) { b->core.tid = i; } /** Set the chr id of mate */ inline void SetChrIDMate(int32_t i) { b->core.mtid = i; } /** Set the position of the mate read */ inline void SetPositionMate(int32_t i) { b->core.mpos = i; } /** Set the pair mapped flag on/off (true -> on) */ inline void SetPairMappedFlag(bool f) { if (f) b->core.flag |= BAM_FPAIRED; else b->core.flag &= ~BAM_FPAIRED; } /** Set the mate reverse flag on/off (true -> on) */ inline void SetMateReverseFlag(bool f) { if (f) b->core.flag |= BAM_FMREVERSE; else b->core.flag &= ~BAM_FMREVERSE; } /** Get the number of cigar fields */ inline int32_t CigarSize() const { return b ? b->core.n_cigar : -1; } /** Check if this read is first in pair */ inline bool FirstFlag() const { return (b->core.flag&BAM_FREAD1); } /** Get the qname of this read as a string */ inline std::string Qname() const { return std::string(bam_get_qname(b)); } /** Get the qname of this read as a char array */ inline char* QnameChar() const { return bam_get_qname(b); } /** Get the full alignment flag for this read */ inline uint32_t AlignmentFlag() const { return b->core.flag; } /** Get the insert size for this read */ inline int32_t InsertSize() const { return b->core.isize; } /** Get the read group, first from qname, then by RG tag * @return empty string if no readgroup found */ inline std::string ParseReadGroup() const { // try to get from RG tag first std::string RG; if (GetZTag("RG", RG)) return RG; // try to get the read group tag from qname second std::string qn = Qname(); size_t posr = qn.find(":", 0); return (posr != std::string::npos) ? qn.substr(0, posr) : "NA"; } /** Get the insert size, absolute value, and always taking into account read length */ inline int32_t FullInsertSize() const { if (b->core.tid != b->core.mtid || !PairMappedFlag()) return 0; return std::abs(b->core.pos - b->core.mpos) + GetCigar().NumQueryConsumed(); } /** Get the number of query bases of this read (aka length) */ inline int32_t Length() const { return b->core.l_qseq; } /** Append a tag with new value, delimited by 'x' */ void SmartAddTag(const std::string& tag, const std::string& val); /** Set the query name */ void SetQname(const std::string& n); /** Set the quality scores * @param n String of quality scores or empty string * @param offset Offset parameter for encoding (eg 33) * @exception Throws an invalid_argument if n is non-empty * and different length than sequence */ void SetQualities(const std::string& n, int offset); /** Set the sequence name * @param seq Sequence in upper-case (ACTGN) letters. */ void SetSequence(const std::string& seq); /** Set the cigar field explicitly * @param c Cigar operation to set * @note Will not check if the cigar ops are consistent with * the length of the sequence. */ void SetCigar(const Cigar& c); /** Print a SAM-lite record for this alignment */ friend std::ostream& operator<<(std::ostream& out, const BamRecord &r); /** Return read as a GenomicRegion */ GenomicRegion AsGenomicRegion() const; /** Return mate read as a GenomicRegion */ GenomicRegion AsGenomicRegionMate() const; /** Return the number of "aligned bases" in the same style as BamTools * * BamTools reports AlignedBases, which for example returns the literal strings (for diff CIGARs): * 3S5M - CTG * 5M - CTAGC * 3M1D3M - ATG-TGA * 3M1I3M - ATGCTGA * * @return The number of M, D, X, = and I bases */ inline int NumAlignedBases() const { int out = 0; uint32_t* c = bam_get_cigar(b); for (size_t i = 0; i < b->core.n_cigar; i++) if (bam_cigar_opchr(c[i]) == 'M' || bam_cigar_opchr(c[i]) == 'I' || bam_cigar_opchr(c[i]) == '=' || bam_cigar_opchr(c[i]) == 'X' || bam_cigar_opchr(c[i]) == 'D') out += bam_cigar_oplen(c[i]); return out; } /** Return the max single insertion size on this cigar */ inline uint32_t MaxInsertionBases() const { uint32_t* c = bam_get_cigar(b); uint32_t imax = 0; for (size_t i = 0; i < b->core.n_cigar; i++) if (bam_cigar_opchr(c[i]) == 'I') imax = std::max(bam_cigar_oplen(c[i]), imax); return imax; } /** Return the max single deletion size on this cigar */ inline uint32_t MaxDeletionBases() const { uint32_t* c = bam_get_cigar(b); uint32_t dmax = 0; for (size_t i = 0; i < b->core.n_cigar; i++) if (bam_cigar_opchr(c[i]) == 'D') dmax = std::max(bam_cigar_oplen(c[i]), dmax); return dmax; } /** Get the number of matched bases in this alignment */ inline uint32_t NumMatchBases() const { uint32_t* c = bam_get_cigar(b); uint32_t dmax = 0; for (size_t i = 0; i < b->core.n_cigar; i++) if (bam_cigar_opchr(c[i]) == 'M') dmax += bam_cigar_oplen(c[i]); return dmax; } /** Retrieve the CIGAR as a more managable Cigar structure */ Cigar GetCigar() const { uint32_t* c = bam_get_cigar(b); Cigar cig; for (size_t k = 0; k < b->core.n_cigar; ++k) { cig.add(CigarField(c[k])); } return cig; } /** Retrieve the inverse of the CIGAR as a more managable Cigar structure */ Cigar GetReverseCigar() const { uint32_t* c = bam_get_cigar(b); Cigar cig; for (int k = b->core.n_cigar - 1; k >= 0; --k) cig.add(CigarField(c[k])); return cig; } /** Remove the sequence, quality and alignment tags. * Make a more compact alignment stucture, without the string data */ void ClearSeqQualAndTags(); /** Retrieve the sequence of this read as a string (ACTGN) */ std::string Sequence() const; /** Return the mean quality score */ double MeanPhred() const; /** Performa a Smith-Waterman alignment between two strings * @param name Name of the query sequence to align * @param seq Sequence (ACTGN) of the query string * @param ref Sequence (ACTGN) of the reference string * @param gr Location of the reference string. The alignment record after Smith-Waterman alignment * will be relative to this location. */ BamRecord(const std::string& name, const std::string& seq, const std::string& ref, const GenomicRegion * gr); /** Get the quality scores of this read as a string * @param offset Encoding offset for phred quality scores. Default 33 * @return Qualties scores after converting offset. If first char is empty, returns empty string */ inline std::string Qualities(int offset = 33) const { uint8_t * p = bam_get_qual(b); if (!p) return std::string(); //if (!p[0]) // return std::string(); std::string out(b->core.l_qseq, ' '); for (int32_t i = 0; i < b->core.l_qseq; ++i) out[i] = (char)(p[i] + offset); return out; } /** Get the start of the alignment on the read, by removing soft-clips * Do this in the reverse orientation though. */ inline int32_t AlignmentPositionReverse() const { uint32_t* c = bam_get_cigar(b); int32_t p = 0; for (int32_t i = b->core.n_cigar - 1; i >= 0; --i) { if ( (bam_cigar_opchr(c[i]) == 'S') || (bam_cigar_opchr(c[i]) == 'H')) p += bam_cigar_oplen(c[i]); else // not a clip, so stop counting break; } return p; } /** Get the end of the alignment on the read, by removing soft-clips * Do this in the reverse orientation though. */ inline int32_t AlignmentEndPositionReverse() const { uint32_t* c = bam_get_cigar(b); int32_t p = 0; for (size_t i = 0; i < b->core.n_cigar; ++i) { // loop from the end if ( (bam_cigar_opchr(c[i]) == 'S') || (bam_cigar_opchr(c[i]) == 'H')) p += bam_cigar_oplen(c[i]); else // not a clip, so stop counting break; } return (b->core.l_qseq - p); } /** Get the start of the alignment on the read, by removing soft-clips */ inline int32_t AlignmentPosition() const { uint32_t* c = bam_get_cigar(b); int32_t p = 0; for (size_t i = 0; i < b->core.n_cigar; ++i) { if (bam_cigar_opchr(c[i]) == 'S') p += bam_cigar_oplen(c[i]); else if (bam_cigar_opchr(c[i]) != 'H') break; } return p; } /** Get the end of the alignment on the read, by removing soft-clips */ inline int32_t AlignmentEndPosition() const { uint32_t* c = bam_get_cigar(b); int32_t p = 0; for (int32_t i = b->core.n_cigar - 1; i >= 0; --i) { // loop from the end if ( (bam_cigar_opchr(c[i]) == 'S') || (bam_cigar_opchr(c[i]) == 'H')) p += bam_cigar_oplen(c[i]); else // not a clip, so stop counting break; } return (b->core.l_qseq - p); } /** Get the number of soft clipped bases */ inline int32_t NumSoftClip() const { int32_t p = 0; uint32_t* c = bam_get_cigar(b); for (size_t i = 0; i < b->core.n_cigar; ++i) if (bam_cigar_opchr(c[i]) == 'S') p += bam_cigar_oplen(c[i]); return p; } /** Get the number of hard clipped bases */ inline int32_t NumHardClip() const { int32_t p = 0; uint32_t* c = bam_get_cigar(b); for (size_t i = 0; i < b->core.n_cigar; ++i) if (bam_cigar_opchr(c[i]) == 'H') p += bam_cigar_oplen(c[i]); return p; } /** Get the number of clipped bases (hard clipped and soft clipped) */ inline int32_t NumClip() const { int32_t p = 0; uint32_t* c = bam_get_cigar(b); for (size_t i = 0; i < b->core.n_cigar; ++i) if ( (bam_cigar_opchr(c[i]) == 'S') || (bam_cigar_opchr(c[i]) == 'H') ) p += bam_cigar_oplen(c[i]); return p; } /** Get a string (Z) tag * @param tag Name of the tag. eg "XP" * @param s The string to be filled in with the tag information * @return Returns true if the tag is present, even if empty. Return false if no tag or not a Z tag. */ bool GetZTag(const std::string& tag, std::string& s) const; /** Get a string of either Z, f or i type. Useful if tag type not known at compile time. * @param tag Name of the tag. eg "XP" * @param s The string to be filled in with the tag information * @return Returns true if the tag is present and is either Z or i, even if empty. Return false if no tag or not Z or i. */ bool GetTag(const std::string& tag, std::string& s) const; /** Get a vector of type int from a Z tag delimited by "^" * Smart-tags allow one to store vectors of strings, ints or doubles in the alignment tags, and * do not require an additional data structure on top of bseq1_t. * @param tag Name of the tag eg "AL" * @return A vector of ints, retrieved from the x delimited Z tag * @exception Throws an invalid_argument if cannot convert delimited field val to int */ std::vector GetSmartIntTag(const std::string& tag) const; /** Get a vector of type double from a Z tag delimited by "x" * Smart-tags allow one to store vectors of string, ints or doubles in the alignment tags, and * do not require an additional data structure on top of bseq1_t. * @param tag Name of the tag eg "AL" * @return A vector of double elems, retrieved from the "^" delimited Z tag * @exception Throws an invalid_argument if cannot convert delimited field val to double */ std::vector GetSmartDoubleTag(const std::string& tag) const; /** Get a vector of strings from a Z tag delimited by "^" * Smart-tags allow one to store vectors of strings, ints or doubles in the alignment tags, and * do not require an additional data structure on top of bseq1_t. * @param tag Name of the tag eg "CN" * @return A vector of strngs, retrieved from the x delimited Z tag */ std::vector GetSmartStringTag(const std::string& tag) const; /** Get an int (i) tag * @param tag Name of the tag. eg "XP" * @param t Value to be filled in with the tag value. * @return Return true if the tag exists. */ inline bool GetIntTag(const std::string& tag, int32_t& t) const { uint8_t* p = bam_aux_get(b.get(),tag.c_str()); if (!p) return false; t = bam_aux2i(p); int type = *p++; if (!(type == 'i' || type == 'C' || type=='S' || type=='s' || type =='I' || type=='c')) return false; return true; } /** Get a float (f) tag * @param tag Name of the tag. eg "AS" * @param t Value to be filled in with the tag value. * @return Return true if the tag exists. */ inline bool GetFloatTag(const std::string& tag, float& t) const { uint8_t* p = bam_aux_get(b.get(),tag.c_str()); if (!p) return false; t = bam_aux2f(p); int type = *p; type = *p++; if (!(type == 'f' || type == 'd')) return false; return true; } /** Add a string (Z) tag * @param tag Name of the tag. eg "XP" * @param val Value for the tag */ void AddZTag(std::string tag, std::string val); /** Add an int (i) tag * @param tag Name of the tag. eg "XP" * @param val Value for the tag */ inline void AddIntTag(const std::string& tag, int32_t val) { bam_aux_append(b.get(), tag.data(), 'i', 4, (uint8_t*)&val); } /** Set the chr id number * @param id Chromosome id. Typically is 0 for chr1, etc */ inline void SetID(int32_t id) { b->core.tid = id; } /** Set the alignment start position * @param pos Alignment start position */ inline void SetPosition(int32_t pos) { b->core.pos = pos; } /** Convert CIGAR to a string */ inline std::string CigarString() const { std::stringstream cig; uint32_t* c = bam_get_cigar(b); for (size_t k = 0; k < b->core.n_cigar; ++k) cig << bam_cigar_oplen(c[k]) << "MIDNSHP=XB"[c[k]&BAM_CIGAR_MASK]; return cig.str(); } /** Return a human readable chromosome name assuming chr is indexed * from 0 (eg id 0 return "1") * @note This is a quick convienence function, and is not robust to non-numbered * chromosomes (eg chrX becomes 23). For accurate string representation of * any chromosomes, use the full ChrName with BamHeader input. */ inline std::string ChrName() const { std::stringstream ss; ss << (b->core.tid + 1); return ss.str(); //return std::to_string(b->core.tid + 1); //c++11 } /** Retrieve the human readable chromosome name. * @param h Dictionary for chr name lookup. If it is empty, assumes this is chr1 based reference. * @exception Throws an out_of_range exception if chr id is not in dictionary * @return Empty string if chr id < 0, otherwise chromosome name from dictionary. */ inline std::string ChrName(const SeqLib::BamHeader& h) const { if (b->core.tid < 0) return std::string(); if (!h.isEmpty()) return h.IDtoName(b->core.tid); // c++98 std::stringstream ss; ss << b->core.tid; // no header, assume zero based return ss.str(); //std::to_string(b->core.tid + 1); } /** Return a short description (chr:pos) of this read */ inline std::string Brief() const { //if (!h) // c++11 // return(std::to_string(b->core.tid + 1) + ":" + AddCommas(b->core.pos) + "(" + ((b->core.flag&BAM_FREVERSE) != 0 ? "+" : "-") + ")"); // c++98 std::stringstream ss; ss << (b->core.tid + 1) << ":" << AddCommas(b->core.pos) << "(" << ((b->core.flag&BAM_FREVERSE) != 0 ? "+" : "-") << ")"; return ss.str(); //else // return(std::string(h->target_name[b->core.tid]) + ":" + AddCommas(b->core.pos) + "(" + ((b->core.flag&BAM_FREVERSE) != 0 ? "+" : "-") + ")"); } /** Return a short description (chr:pos) of this read's mate */ inline std::string BriefMate() const { //if (!h) // c++11 // return(std::to_string(b->core.mtid + 1) + ":" + AddCommas(b->core.mpos) + "(" + ((b->core.flag&BAM_FMREVERSE) != 0 ? "+" : "-") + ")"); std::stringstream ss; ss << (b->core.mtid + 1) << ":" << AddCommas(b->core.mpos) << "(" << ((b->core.flag&BAM_FMREVERSE) != 0 ? "+" : "-") << ")"; return ss.str(); //else // return(std::string(h->target_name[b->core.mtid]) + ":" + AddCommas(b->core.mpos) + "(" + ((b->core.flag&BAM_FMREVERSE) != 0 ? "+" : "-") + ")"); } /** Strip a particular alignment tag * @param tag Tag to remove */ inline void RemoveTag(const char* tag) { uint8_t* p = bam_aux_get(b.get(), tag); if (p) bam_aux_del(b.get(), p); } /** Strip all of the alignment tags */ inline void RemoveAllTags() { size_t keep = (b->core.n_cigar<<2) + b->core.l_qname + ((b->core.l_qseq + 1)>>1) + b->core.l_qseq; b->data = (uint8_t*)realloc(b->data, keep); // free the end, which has aux data b->l_data = keep; b->m_data = b->l_data; } /** Return the raw pointer */ inline bam1_t* raw() const { return b.get(); } /** Return the number of bases on the query that are covered by a match (M) on both reads * This is for tracking overlapping coverage on the reads, regardless of their alignment locations. * For instance, two reads with 101M will have overlapping coverage of 101, regardless of alignment location. * A read with 50S50M and 50M50S will have 0 overlapping coverage. */ int OverlappingCoverage(const BamRecord& r) const; /** Return the shared pointer */ SeqPointer shared_pointer() const { return b; } protected: SeqPointer b; // bam1_t shared pointer }; typedef std::vector BamRecordVector; ///< Store a vector of alignment records typedef std::vector BamRecordClusterVector; ///< Store a vector of alignment vectors /** @brief Sort methods for alignment records */ namespace BamRecordSort { /** @brief Sort by read position */ struct ByReadPosition { bool operator()( const BamRecord& lx, const BamRecord& rx ) const { return (lx.ChrID() < rx.ChrID()) || (lx.ChrID() == rx.ChrID() && lx.Position() < rx.Position()); } }; /** @brief Sort by mate position */ struct ByMatePosition { bool operator()( const BamRecord& lx, const BamRecord& rx ) const { return (lx.MateChrID() < rx.MateChrID()) || (lx.MateChrID() == rx.MateChrID() && lx.MatePosition() < rx.MatePosition()); } }; } } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/BamWalker.h000066400000000000000000000040201417247743000215070ustar00rootroot00000000000000#ifndef SEQLIB_BAM_WALKER_H__ #define SEQLIB_BAM_WALKER_H__ #include #include #include "SeqLib/BamRecord.h" // not sure what going on here... #ifndef INT32_MAX #define INT32_MAX 0x7fffffffL #endif /* extern "C" { #include "htslib/cram/cram.h" #include "htslib/cram/cram_io.h" } */ struct idx_delete { void operator()(hts_idx_t* x) { if (x) hts_idx_destroy(x); } }; struct hts_itr_delete { void operator()(hts_itr_t* x) { if (x) hts_itr_destroy(x); } }; struct bgzf_delete { void operator()(BGZF* x) { if(x) bgzf_close(x); } }; struct bam_hdr_delete { void operator()(bam_hdr_t* x) { if (x) bam_hdr_destroy(x); } }; struct htsFile_delete { // shoudl also close cram index void operator()(htsFile* x) { if (x) sam_close(x); } }; // Phred score transformations inline int char2phred(char b) { uint8_t v = b; assert(v >= 33); return v - 33; } // from samtools inline char *samfaipath(const char *fn_ref) { char *fn_list = 0; if (fn_ref == 0) return 0; fn_list = (char*)calloc(strlen(fn_ref) + 5, 1); strcat(strcpy(fn_list, fn_ref), ".fai"); if (access(fn_list, R_OK) == -1) { // fn_list is unreadable std::cerr << "ERROR: Cannot read the index file for CRAM read/write" << std::endl; } return fn_list; } namespace SeqLib { /** Small class to store a counter to measure BamReader progress. * Currently only stores number of reads seen / kept. */ struct ReadCount { uint32_t keep; ///< Store total number of reads kept uint32_t total; ///< Store total number of reads seen ReadCount() : keep(0), total(0) {} /** Return the percent of total reads kept */ int percent () const { int perc = SeqLib::percentCalc(keep, total); return perc; } /** Return the total reads visited as a comma-formatted string */ std::string totalString() const { return SeqLib::AddCommas(total); } /** Return the kept reads as a comma-formatted string */ std::string keepString() const { return SeqLib::AddCommas(keep); } }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/BamWriter.h000066400000000000000000000066211417247743000215470ustar00rootroot00000000000000#ifndef SEQLIB_BAM_WRITER_H #define SEQLIB_BAM_WRITER_H #include #include "SeqLib/BamRecord.h" #include "SeqLib/ThreadPool.h" namespace SeqLib { const int BAM = 4; const int SAM = 3; const int CRAM = 6; /** Walk along a BAM or along BAM regions and stream in/out reads */ class BamWriter { public: /** Construct an empty BamWriter to write BAM */ BamWriter() : output_format("wb") {} /** Construct an empty BamWriter and specify output format * @param o One of SeqLib::BAM, SeqLib::CRAM, SeqLib::SAM * @exception Throws an invalid_argument if not one of accepted values */ BamWriter(int o); /** Destroy a BamWriter and close all connections to the BAM * * Calling the destructor will take care of all of the C-style dealloc * calls required within HTSlib to close a BAM or SAM file. */ ~BamWriter() {} /** Write the BAM header * @return False if cannot write header */ bool WriteHeader() const; /** Assign this BamWriter a thread pool * * The thread pool with stay with this object, but * will not be created or destroyed. This must be done * separately, which allows for multiple readers/writers * to be connected to one thread pool * @return false if the thread pool has not been opened */ bool SetThreadPool(ThreadPool p); /** Provide a header to this writer * @param h Header for this writer. Copies contents */ void SetHeader(const SeqLib::BamHeader& h); /** Close a file explitily. This is required before indexing with makeIndex. * @note If not called, BAM will close properly on object destruction * @return False if BAM already closed or was never opened */ bool Close(); /** Create the index file for the output bam in BAI format. * * This will make a call to HTSlib bam_index_build for the output file. * @return Returns false if sam_index_build exits with < 0 status */ bool BuildIndex() const; /** Print out some basic info about this writer */ friend std::ostream& operator<<(std::ostream& out, const BamWriter& b); /** Open a BAM file for streaming out. * @param f Path to the output BAM/SAM/CRAM or "-" for stdout * @return False if cannot openf for writing */ bool Open(const std::string& f); /** Return if the writer has opened the file */ bool IsOpen() const { return fop.get() != NULL; } /** Write an alignment to the output BAM file * @param r The BamRecord to save * @return False if cannot write alignment * @exception Throws a runtime_error if cannot write alignment */ bool WriteRecord(const BamRecord &r); /** Explicitly set a reference genome to be used to decode CRAM file. * If no reference is specified, will automatically load from * file pointed to in CRAM header using the SQ tags. * @note This function is useful if the reference path pointed * to by the UR field of SQ is not on your system, and you would * like to explicitly provide one. * @param ref Path to an index reference genome * @return Returns true if reference loaded. */ bool SetCramReference(const std::string& ref); /** Return the BAM header */ BamHeader Header() const { return hdr; }; private: // path to output file std::string m_out; // output format std::string output_format; // hts SeqPointer fop; // header SeqLib::BamHeader hdr; // for multicore reading/writing ThreadPool pool; }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/GenomicRegion.h000066400000000000000000000143221417247743000223750ustar00rootroot00000000000000#ifndef SEQLIB_GENOMIC_REGION_H__ #define SEQLIB_GENOMIC_REGION_H__ #include #include #include #include #include #include #include "SeqLib/SeqLibCommon.h" #include "SeqLib/SeqLibUtils.h" #include "SeqLib/BamHeader.h" namespace SeqLib { /** @brief Container for an interval on the genome */ class GenomicRegion { template friend class GenomicRegionCollection; public: /** Construct an "empty" GenomicRegion at (chr -1), pos 0, width = 1 */ GenomicRegion() : chr(-1), pos1(0), pos2(0), strand('*') {}; /** Construct a GenomicRegion from another * @param gr A GenomicRegion to copy */ GenomicRegion(const GenomicRegion& gr) : chr(gr.chr), pos1(gr.pos1), pos2(gr.pos2), strand(gr.strand) {} /** Construct a GenomicRegion at a specific start and end location * @param t_chr Chromosome id (chr1 = 0, etc) * @param t_pos1 Start position * @param t_pos2 End position. Must be >= start position. * @param t_strand +, -, or * (default is *) * @exception throws an invalid_argument exception if pos2 < pos1 * @exception throws an invalid_argument exception if char not one of +, - , * */ GenomicRegion(int32_t t_chr, int32_t t_pos1, int32_t t_pos2, char t_strand = '*'); /** Construct a GenomicRegion from a set of strings * @param tchr Chromosome name * @param tpos1 Position 1 * @param tpos2 Position 2 * @param hdr Header to be used as sequence dictionary to convert chromosome name to id * @exception Throws an invalid_argument if cannot convert string to int * @exception Throws an out_of_range if number if greater than int32_t max * @note If an empty BamHeader is provided, will try to guess chromosome id. * eg "1" -> 0, "X" -> 22, "chr2" -> 1. */ GenomicRegion(const std::string& tchr, const std::string& tpos1, const std::string& tpos2, const BamHeader& hdr); /** Construct a GenomicRegion from a samtools style region string. * * This calls the samtools-like parser, which accepts in form "chr7:10,000-11,100". * Note that this requires that a BamHeader be provided as well * to convert the text representation of the chr to the id number. * @param reg Samtools-style string (e.g. "1:1,000,000-2,000,000") or single chr * @param hdr Pointer to BAM header that will be used to convert chr string to ref id * @exception throws an invalid_argument exception if cannot parse correctly */ GenomicRegion(const std::string& reg, const BamHeader& hdr); /** Return a string representation of just the first base-pair * @param h BamHeader used as a lookup table for id to string (i.e. chr name) * e.g. 1:10,000 */ std::string PointString(const BamHeader& h) const; // Randomize the position of this GenomicRegion on the genome // // Creates a GenomicRegion with pos1 = pos2. Simulates a random value // with val <= genome_size_XY and then converts to GenomicRegion // @note Seed is set before-hand at any time with srand // //void Random(); /** Check if the GenomicRegion is empty (aka chr -1 and pos1=pos2=0) */ bool IsEmpty() const; /** Find the absolute distance between start of two GenomicRegion objects * * If chr1 != chr2, then -1 is returned * @param gr GenomicRegion object to compare with */ int32_t DistanceBetweenStarts(const GenomicRegion &gr) const; /** Find the absolute distance between ends of two GenomicRegion objects * * If chr1 != chr2, then -1 is returned * @param gr GenomicRegion object to compare with */ int32_t DistanceBetweenEnds(const GenomicRegion &gr) const; /** Returns true if a.chr < b.chr or a.pos1 < a.pos1 if on same chrome, or if a.pos2 < b.pos2 if same chrom and same pos1 */ bool operator < (const GenomicRegion& b) const; /** Returns true if a.chr > b.chr or a.pos1 > a.pos1 if on same chrome, or if a.pos2 > b.pos2 if same chrom and same pos1 */ bool operator > (const GenomicRegion& b) const; /** Returns true if chr, pos1, pos2. No strand consideration */ bool operator==(const GenomicRegion& b) const; /** Returns opposite of == */ bool operator!=(const GenomicRegion& b) const; /** Returns true if < or == . No strand consideration */ bool operator<=(const GenomicRegion &b) const; /** Returns true if > or == . No strand consideration */ bool operator>=(const GenomicRegion &b) const; /** Check if the GenomicRegion has a complete or partial overlap * If the argument contains the calling object, returns 3 * If the argument is contained in the calling object, returns 2 * If the argument overlaps partially the calling object, returns 1 * If the argument and calling object do not overlap, returns 0 * @param gr GenomicRegion to compare against */ int GetOverlap(const GenomicRegion& gr) const; /** Print with chr ID bumped up by one to make eg ID 0 * print as "1" */ friend std::ostream& operator<<(std::ostream& out, const GenomicRegion& gr); /** Print the chromosome with the correct chromosome name as store in the header * @param h BamHeader that stores the lookup between chr id and chr name string */ std::string ToString(const BamHeader& h) const; /** Extract the chromosome name as a string * @param h BamHeader to serve as sequence dictionary * @exception throws an out_of_range exception if ref id >= h->n_targets */ std::string ChrName(const BamHeader& h) const; /** Pad the object to make larger or smaller * @param pad Amount to pad by. * @exception throws an out_of_bounds if for pad < -width/2 */ void Pad(int32_t pad); /** Return the width (inclusive) * @note Width is inclusive, so that if pos1=1 and pos2=2, width is 2 */ int Width() const; int32_t chr; ///< Chromosome ID int32_t pos1; ///< Start position int32_t pos2; ///< End Position char strand; ///< Strand. Should be one of *, -, + private: // Convert a chromosome number to a string using default ordering (1-Y) // Assumes a 1-based ordering (1, ...), not zero-based. // e.g. chrToString(10) return "11" // @param ref Reference ID to convert // @exception throws an invalid_argument exception if ref < 0 std::string chrToString(int32_t ref) const; }; typedef std::vector GenomicRegionVector; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/GenomicRegionCollection.cpp000066400000000000000000000466351417247743000247600ustar00rootroot00000000000000#include "SeqLib/GenomicRegionCollection.h" #include #include #include #include #include #include #include #include #define GZBUFFER 65472 //#define DEBUG_OVERLAPS 1 namespace SeqLib { template GenomicRegionCollection::GenomicRegionCollection(int width, int ovlp, const HeaderSequenceVector& h) { idx = 0; allocate_grc(); // undefined otherwise if (width <= ovlp) throw std::invalid_argument("Width should be > ovlp"); size_t chr = 0; for (HeaderSequenceVector::const_iterator i = h.begin(); i != h.end(); ++i) { T gr; gr.chr = chr; gr.pos1 = 0; gr.pos2 = i->Length; ++chr; if (width >= gr.Width()) { m_grv->push_back(gr); continue; } int32_t start = gr.pos1; int32_t end = gr.pos1 + width; // region is smaller than width if ( end > gr.pos2 ) { std::cerr << "GenomicRegionCollection constructor: GenomicRegion is smaller than bin width" << std::endl; return; } // loop through the sizes until done while (end <= gr.pos2) { T tg; tg.chr = gr.chr; tg.pos1 = start; tg.pos2 = end; m_grv->push_back(tg); end += width - ovlp; // make the new one start += width - ovlp; } assert(m_grv->size() > 0); } } template void GenomicRegionCollection::CoordinateSort() { if (m_grv) { std::sort(m_grv->begin(), m_grv->end()); m_sorted = true; } } template void GenomicRegionCollection::Shuffle() { std::random_shuffle ( m_grv->begin(), m_grv->end() ); } template void GenomicRegionCollection::SortAndStretchRight(int max) { if (!m_grv->size()) return; CoordinateSort(); if (max > 0 && max < m_grv->back().pos2) throw std::out_of_range("GenomicRegionCollection::SortAndStrech Can't stretch to max, as we are already past max."); for (size_t i = 0; i < m_grv->size() - 1; ++i) m_grv->at(i).pos2 = m_grv->at(i+1).pos1 - 1; if (max > 0) m_grv->back().pos2 = max; } template void GenomicRegionCollection::SortAndStretchLeft(int min) { if (!m_grv->size()) return; CoordinateSort(); if (min >= 0 && min < m_grv->begin()->pos1) throw std::out_of_range("GenomicRegionCollection::SortAndStrechLeft - Can't stretch to min, as we are already below min"); if (min >= 0) m_grv->at(0).pos1 = min; for (size_t i = 1; i < m_grv->size(); ++i) m_grv->at(i).pos1 = m_grv->at(i-1).pos2 + 1; } template bool GenomicRegionCollection::ReadBED(const std::string & file, const BamHeader& hdr) { m_sorted = false; idx = 0; gzFile fp = NULL; fp = strcmp(file.c_str(), "-")? gzopen(file.c_str(), "r") : gzdopen(fileno(stdin), "r"); if (file.empty() || !fp) { std::cerr << "BED file not readable: " << file << std::endl; return false; } // http://www.lemoda.net/c/gzfile-read/ while (1) { int err; char buffer[GZBUFFER]; gzgets(fp, buffer, GZBUFFER); int bytes_read = strlen(buffer); // get one line if (bytes_read < GZBUFFER - 1) { if (gzeof (fp)) break; else { const char * error_string; error_string = gzerror (fp, &err); if (err) { fprintf (stderr, "Error: %s.\n", error_string); exit (EXIT_FAILURE); } } } // prepare to loop through each field of BED line //size_t counter = 0; std::string chr, pos1, pos2; std::string line(buffer); std::istringstream iss_line(line); std::string val; if (line.find("#") != std::string::npos) continue; // read first three BED columns iss_line >> chr >> pos1 >> pos2; // construct the GenomicRegion T gr(chr, pos1, pos2, hdr); if (gr.chr >= 0) m_grv->push_back(gr); } return true; } template bool GenomicRegionCollection::ReadVCF(const std::string & file, const BamHeader& hdr) { m_sorted = false; idx = 0; gzFile fp = NULL; fp = strcmp(file.c_str(), "-")? gzopen(file.c_str(), "r") : gzdopen(fileno(stdin), "r"); if (file.empty() || !fp) { std::cerr << "VCF file not readable: " << file << std::endl; return false; } // http://www.lemoda.net/c/gzfile-read/ while (1) { int err; char buffer[GZBUFFER]; gzgets(fp, buffer, GZBUFFER); int bytes_read = strlen(buffer); // get one line if (bytes_read < GZBUFFER - 1) { if (gzeof (fp)) break; else { const char * error_string; error_string = gzerror (fp, &err); if (err) { fprintf (stderr, "Error: %s.\n", error_string); exit (EXIT_FAILURE); } } } // prepare to loop through each field of BED line std::string chr, pos; std::string line(buffer); std::istringstream iss_line(line); std::string val; if (line.empty() || line.at(0) == '#') continue; // read first two columnes iss_line >> chr >> pos; // construct the GenomicRegion T gr; try { gr = T(chr, pos, pos, hdr); } catch (...) { std::cerr << "...Could not parse pos: " << pos << std::endl << std::endl << "...on line " << line << std::endl; } if (gr.chr >= 0) m_grv->push_back(gr); } return true; } template GenomicRegionCollection::GenomicRegionCollection(const std::string &file, const BamHeader& hdr) { allocate_grc(); idx = 0; // check if it's samtools-style file if (file.find(":") != std::string::npos) { m_sorted = true; // only one, so sorted m_grv->push_back(T(file, hdr)); return; } // BED file if (file.find(".bed") != std::string::npos) ReadBED(file, hdr); // VCF file else if (file.find(".vcf") != std::string::npos) ReadVCF(file, hdr); else // default is BED file ReadBED(file, hdr); } // reduce a set of GenomicRegions into the minium overlapping set (same as GenomicRanges "reduce") template void GenomicRegionCollection::MergeOverlappingIntervals() { // make the list std::list intervals(m_grv->begin(), m_grv->end()); intervals.sort(); typename std::list::iterator inext(intervals.begin()); ++inext; for (typename std::list::iterator i(intervals.begin()), iend(intervals.end()); inext != iend;) { if((i->pos2 >= inext->pos1) && (i->chr == inext->chr)) // change >= to > to not overlap touching intervals (eg [4,5][5,6]) { if(i->pos2 >= inext->pos2) intervals.erase(inext++); else if(i->pos2 < inext->pos2) { i->pos2 = inext->pos2; intervals.erase(inext++); } } else { ++i; ++inext; } } // move it over to a grv m_grv->clear(); // clear the old data // c++11 //std::vector v{ std::make_move_iterator(std::begin(intervals)), // std::make_move_iterator(std::end(intervals)) }; //m_grv->insert(m_grv->end(), v.begin(), v.end()); // non c++11 //std::vector v; // v.push_back(std::make_move_iterator(std::begin(intervals))); //v.push_back(std::make_move_iterator(std::end(intervals))); //std::vector v{ std::make_move_iterator(std::begin(intervals)), // std::make_move_iterator(std::end(intervals)) }; //m_grv->insert(m_grv->end(), v.begin(), v.end()); //m_grv->reserve(intervals.size()); //m_grv->append(intervals.begin(), intervals.end()); m_grv->insert(m_grv->end(), intervals.begin(), intervals.end()); // clear the old interval tree m_tree->clear(); } template GenomicRegionVector GenomicRegionCollection::AsGenomicRegionVector() const { GenomicRegionVector gg; for (typename std::vector::const_iterator i = m_grv->begin(); i != m_grv->end(); ++i) gg.push_back(GenomicRegion(i->chr, i->pos1, i->pos2, i->strand)); return gg; } template void GenomicRegionCollection::CreateTreeMap() { if (!m_grv->size()) return; // sort the genomic intervals if (!m_sorted) CoordinateSort(); // loop through and make the intervals for each chromosome GenomicIntervalMap map; for (size_t i = 0; i < m_grv->size(); ++i) { map[m_grv->at(i).chr].push_back(GenomicInterval(m_grv->at(i).pos1, m_grv->at(i).pos2, i)); } // for each chr, make the tree from the intervals //for (auto it : map) { for (GenomicIntervalMap::iterator it = map.begin(); it != map.end(); ++it) { GenomicIntervalTreeMap::iterator ff = m_tree->find(it->first); if (ff != m_tree->end()) ff->second = GenomicIntervalTree(it->second); else m_tree->insert(std::pair(it->first, GenomicIntervalTree(it->second))); //old //m_tree[it.first] = GenomicIntervalTree(it.second); } } template int GenomicRegionCollection::TotalWidth() const { int wid = 0; for (typename std::vector::const_iterator i = m_grv->begin(); i != m_grv->end(); ++i) // for (auto& i : *m_grv) wid += i->Width(); return wid; } // divide a region into pieces of width and overlaps template GenomicRegionCollection::GenomicRegionCollection(int width, int ovlp, const T &gr) { idx = 0; allocate_grc(); // undefined otherwise if (width <= ovlp) throw std::invalid_argument("Width should be > ovlp"); if (width >= gr.Width()) { m_grv->push_back(gr); return; } int32_t start = gr.pos1; int32_t end = gr.pos1 + width; // region is smaller than width if ( end > gr.pos2 ) { std::cerr << "GenomicRegionCollection constructor: GenomicRegion is smaller than bin width" << std::endl; return; } // loop through the sizes until done while (end <= gr.pos2) { m_grv->push_back(T(gr.chr, start, end)); end += width - ovlp; // make the new one start += width - ovlp; } assert(m_grv->size() > 0); // finish the last one if we need to if (m_grv->back().pos2 != gr.pos2) { start = m_grv->back().pos2 - ovlp; //width; end = gr.pos2; m_grv->push_back(T(gr.chr, start, end)); } m_sorted = true; } template size_t GenomicRegionCollection::CountOverlaps(const T &gr) const { if (m_tree->size() == 0 && m_grv->size() != 0) { std::cerr << "!!!!!! WARNING: Trying to find overlaps on empty tree. Need to run this->createTreeMap() somewhere " << std::endl; return 0; } GenomicIntervalVector giv; GenomicIntervalTreeMap::const_iterator ff = m_tree->find(gr.chr); if (ff == m_tree->end()) return 0; ff->second.findOverlapping(gr.pos1, gr.pos2, giv); return (giv.size()); } template template bool GenomicRegionCollection::OverlapSameInterval(const K &gr1, const K &gr2) const { // events on diff chr do not overlap same bin if (gr1.chr != gr2.chr) return false; if (m_tree->size() == 0 && m_grv->size() != 0) { std::cerr << "!!!!!! WARNING: Trying to find overlaps on empty tree. Need to run this->createTreeMap() somewhere " << std::endl; return false; } GenomicIntervalTreeMap::const_iterator ff1 = m_tree->find(gr1.chr); GenomicIntervalTreeMap::const_iterator ff2 = m_tree->find(gr2.chr); if (ff1 == m_tree->end() || ff2 == m_tree->end()) return false; // do the interval tree query GenomicIntervalVector giv1, giv2; ff1->second.findOverlapping(gr1.pos1, gr1.pos2, giv1); ff2->second.findOverlapping(gr2.pos1, gr2.pos2, giv2); if (!giv1.size() || !giv2.size()) return false; // each one only overlapped one element if (giv1.size() == 1 && giv2.size() == 1) return (giv1[0].value == giv2[0].value); // make a set of the possible starts SeqHashSet vals; // for (auto& i : giv1) for (GenomicIntervalVector::iterator i = giv1.begin(); i != giv1.end(); ++i) vals.insert(i->value); // loop the other side and see if they mix for (GenomicIntervalVector::iterator i = giv2.begin(); i != giv2.end(); ++i) if (vals.count(i->value)) return true; return false; } template std::string GenomicRegionCollection::AsBEDString(const BamHeader& h) const { if (m_grv->size() == 0) return std::string(); std::stringstream ss; //for (auto& i : *m_grv) for (typename std::vector::const_iterator i = m_grv->begin(); i != m_grv->end(); ++i) ss << i->ChrName(h) << "\t" << i->pos1 << "\t" << i->pos2 << "\t" << i->strand << std::endl; return ss.str(); } template void GenomicRegionCollection::Concat(const GenomicRegionCollection& g) { if (!g.size()) return; m_sorted = false; m_grv->insert(m_grv->end(), g.m_grv->begin(), g.m_grv->end()); } template GenomicRegionCollection::GenomicRegionCollection() { idx = 0; allocate_grc(); } template GenomicRegionCollection::~GenomicRegionCollection() { } template void GenomicRegionCollection::allocate_grc() { m_sorted = false; m_grv = SeqPointer >(new std::vector()) ; m_tree = SeqPointer(new GenomicIntervalTreeMap()) ; } template GenomicRegionCollection::GenomicRegionCollection(const BamRecordVector& brv) { idx = 0; allocate_grc(); //for (auto& i : brv) for (BamRecordVector::const_iterator i = brv.begin(); i != brv.end(); ++i) m_grv->push_back(GenomicRegion(i->ChrID(), i->Position(), i->PositionEnd())); } template const T& GenomicRegionCollection::at(size_t i) const { if (i >= m_grv->size()) throw 20; return m_grv->at(i); } // this is query template template std::vector GenomicRegionCollection::FindOverlappedIntervals(const K& gr, bool ignore_strand) const { if (m_tree->size() == 0 && m_grv->size() != 0) throw std::logic_error("Need to run CreateTreeMap to make the interval tree before doing range queries"); // which chr (if any) are common between query and subject GenomicIntervalTreeMap::const_iterator ff = m_tree->find(gr.chr); std::vector output; //must as least share a chromosome if (ff == m_tree->end()) return output; // get the subject hits GenomicIntervalVector giv; ff->second.findOverlapping(gr.pos1, gr.pos2, giv); for (GenomicIntervalVector::const_iterator i = giv.begin(); i != giv.end(); ++i) if (ignore_strand || m_grv->at(i->value).strand == gr.strand) output.push_back(i->value); return output; } template template size_t GenomicRegionCollection::FindOverlapWidth(const K& gr, bool ignore_strand) const { SeqLib::GRC out = FindOverlaps(gr, ignore_strand); if (!out.size()) return 0; // make sure merged down out.MergeOverlappingIntervals(); size_t val = 0; for (size_t i = 0; i < out.size(); ++i) val += out[i].Width(); return val; } // this is query template template GenomicRegionCollection GenomicRegionCollection::FindOverlaps(const K& gr, bool ignore_strand) const { GenomicRegionCollection output; if (m_tree->size() == 0 && m_grv->size() != 0) throw std::logic_error("Need to run CreateTreeMap to make the interval tree before doing range queries"); // which chr (if any) are common between query and subject GenomicIntervalTreeMap::const_iterator ff = m_tree->find(gr.chr); //must as least share a chromosome if (ff == m_tree->end()) return output; // get the subject hits GenomicIntervalVector giv; ff->second.findOverlapping(gr.pos1, gr.pos2, giv); #ifdef DEBUG_OVERLAPS std::cerr << "ff->second.intervals.size() " << ff->second.intervals.size() << std::endl; for (auto& k : ff->second.intervals) std::cerr << " intervals " << k.start << " to " << k.stop << " value " << k.value << std::endl; std::cerr << "GIV NUMBER OF HITS " << giv.size() << " for query " << gr << std::endl; #endif // loop through the hits and define the GenomicRegion for (GenomicIntervalVector::const_iterator j = giv.begin(); j != giv.end(); ++j) { //for (auto& j : giv) { // giv points to positions on subject if (ignore_strand || (m_grv->at(j->value).strand == gr.strand) ) { #ifdef DEBUG_OVERLAPS std::cerr << "find overlaps hit " << j->start << " " << j->stop << " -- " << j->value << std::endl; #endif output.add(GenomicRegion(gr.chr, std::max(static_cast(j->start), gr.pos1), std::min(static_cast(j->stop), gr.pos2))); } } return output; } // this is query template template GenomicRegionCollection GenomicRegionCollection::FindOverlaps(const GenomicRegionCollection& subject, std::vector& query_id, std::vector& subject_id, bool ignore_strand) const { GenomicRegionCollection output; if (subject.NumTree() == 0 && subject.size() != 0) { std::cerr << "!!!!!! findOverlaps: WARNING: Trying to find overlaps on empty tree. Need to run this->createTreeMap() somewhere " << std::endl; return output; } // we loop through query, so want it to be smaller if (subject.size() < m_grv->size() && m_grv->size() - subject.size() > 20) std::cerr << "findOverlaps warning: Suggest switching query and subject for efficiency." << std::endl; #ifdef DEBUG_OVERLAPS std::cerr << "OVERLAP SUBJECT: " << std::endl; for (auto& i : subject) std::cerr << i << std::endl; #endif // loop through the query GRanges (this) and overlap with subject for (size_t i = 0; i < m_grv->size(); ++i) { // which chr (if any) are common between query and subject GenomicIntervalTreeMap::const_iterator ff = subject.GetTree()->find(m_grv->at(i).chr); GenomicIntervalVector giv; #ifdef DEBUG_OVERLAPS std::cerr << "TRYING OVERLAP ON QUERY " << m_grv->at(i) << std::endl; #endif //must as least share a chromosome if (ff != m_tree->end()) { // get the subject hits ff->second.findOverlapping(m_grv->at(i).pos1, m_grv->at(i).pos2, giv); #ifdef DEBUG_OVERLAPS std::cerr << "ff->second.intervals.size() " << ff->second.intervals.size() << std::endl; for (auto& k : ff->second.intervals) std::cerr << " intervals " << k.start << " to " << k.stop << " value " << k.value << std::endl; std::cerr << "GIV NUMBER OF HITS " << giv.size() << " for query " << m_grv->at(i) << std::endl; #endif // loop through the hits and define the GenomicRegion for (GenomicIntervalVector::const_iterator j = giv.begin(); j != giv.end(); ++j) { //for (auto& j : giv) { // giv points to positions on subject if (ignore_strand || (subject.at(j->value).strand == m_grv->at(i).strand) ) { query_id.push_back(i); subject_id.push_back(j->value); #ifdef DEBUG_OVERLAPS std::cerr << "find overlaps hit " << j->start << " " << j->stop << " -- " << j->value << std::endl; #endif output.add(GenomicRegion(m_grv->at(i).chr, std::max(static_cast(j->start), m_grv->at(i).pos1), std::min(static_cast(j->stop), m_grv->at(i).pos2))); } } } } return output; } template GenomicRegionCollection::GenomicRegionCollection(const T& gr) { m_sorted = true; idx = 0; allocate_grc(); m_grv->push_back(gr); } template template GRC GenomicRegionCollection::Intersection(const GenomicRegionCollection& subject, bool ignore_strand) const { std::vector sub, que; GRC out; if (subject.size() > this->size()) // do most efficient ordering out = this->FindOverlaps(subject, que, sub, ignore_strand); else out = subject.FindOverlaps(*this, que, sub, ignore_strand); return out; } template void GenomicRegionCollection::Pad(int v) { //for (auto& i : *m_grv) for (typename std::vector::iterator i = m_grv->begin(); i != m_grv->end(); ++i) i->Pad(v); } } freebayes-1.3.6/contrib/SeqLib/SeqLib/GenomicRegionCollection.h000066400000000000000000000270341417247743000244150ustar00rootroot00000000000000#ifndef SWAP_GENOMIC_REGION_COLLECTION_H #define SWAP_GENOMIC_REGION_COLLECTION_H #include #include #include #include #include "SeqLib/IntervalTree.h" #include "SeqLib/GenomicRegionCollection.h" #include "SeqLib/BamRecord.h" namespace SeqLib { /** Simple structure to store overlap results */ typedef std::pair OverlapResult; /** Class to store vector of intervals on the genome */ typedef TInterval GenomicInterval; typedef SeqHashMap > GenomicIntervalMap; typedef TIntervalTree GenomicIntervalTree; typedef SeqHashMap GenomicIntervalTreeMap; typedef std::vector GenomicIntervalVector; /** @brief Template class to store / query a collection of genomic intervals * * Can hold a collection of GenomicRegion objects, or any object whose * class is a child of GenomicRegion. Contains an implementation of an * interval tree (as provided by Erik Garrison) for fast interval queries. */ template class GenomicRegionCollection { public: /** Construct an empty GenomicRegionCollection */ GenomicRegionCollection(); ~GenomicRegionCollection(); /** Construct from a plain vector of GenomicRegion objects */ GenomicRegionCollection(std::vector& vec); /** Construct from a single GenomicRegion */ GenomicRegionCollection(const T& gr); /** Construct from a vector of reads * * @note See BamRecord::AsGenomicRegion */ GenomicRegionCollection(const BamRecordVector& brv); /** Construct a GenomicRegionCollection with overlapping intervals * * @param width Desired bin width * @param ovlp Amount that the bins should overlap * @param gr GenomicRegion to divide into smaller overlapping bins */ GenomicRegionCollection(int width, int ovlp, const T &gr); /** Construct a tiled set of intervals across a genome * * @param width Width of each interval tile * @param ovlp Amount of overlap between neighboring tiles * @param h Set of chromosomes and their lengths to build the tile on */ GenomicRegionCollection(int width, int ovlp, const HeaderSequenceVector& h); // Read in a MuTect call-stats file and adds to GenomicRegionCollection object. // // Reads a MuTect call-stats file and imports only // lines with KEEP marked. // @param file Path to call-stats file // @param pad Amount to pad intervals by // @return True if file was succesfully read // //bool ReadMuTect(const std::string &file, const SeqLib::BamHeader& hdr); /** Read in a BED file and adds to GenomicRegionCollection object * @param file Path to BED file * @param hdr Dictionary for converting chromosome strings in BED file to chr indicies * @return True if file was succesfully read */ bool ReadBED(const std::string &file, const SeqLib::BamHeader& hdr); /** Read in a VCF file and adds to GenomicRegionCollection object * @param file Path to VCF file. All elements will be width = 1 (just read start point) * @param hdr Dictionary for converting chromosome strings in BED file to chr indicies */ bool ReadVCF(const std::string &file, const SeqLib::BamHeader& hdr); /** Shuffle the order of the intervals */ void Shuffle(); /** Read in a text file (can be gzipped) and construct a GenomicRegionCollection * * This function will automatically detect which file type is being input: * -- ends in .vcf -> readVCFfile * -- ends in .bed -> readBEDfile * -- contains ':' -> Assumes single samtools-style region (eg 1:100-100) * The values are appended to existing vector of GenomicRegion objects * @param file Text file to read and store intervals * @param hdr BamHeader to serve as dictionary for chromosomes */ GenomicRegionCollection(const std::string &file, const BamHeader& hdr); /** Create the set of interval trees (one per chromosome) * * A GenomicIntervalTreeMap is an unordered_map of GenomicIntervalTrees for * each chromosome. A GenomicIntervalTree is an interval tree on the ranges * defined by the genomic interval, with cargo set at the same GenomicRegion object. */ void CreateTreeMap(); /** Reduces the GenomicRegion objects to minimal set by merging overlapping intervals * @note This will merge intervals that touch. eg [4,6] and [6,8] * @note This will also call CreateTreeMap() at end to re-create the interval tree */ void MergeOverlappingIntervals(); /** Return the number of GenomicRegions stored */ size_t size() const { return m_grv->size(); } /** Add a new GenomicRegion (or child of) to end */ void add(const T& g) { m_grv->push_back(g); /*createTreeMap();*/ } /** Is this object empty? */ bool IsEmpty() const { return !m_grv->size(); } /** Clear out all of the GenomicRegion objects */ void clear() { m_grv->clear(); m_tree->clear(); idx = 0; } /** Get the number of trees (eg number of chromosomes, each with own tree */ int NumTree() const { return m_tree->size(); } /** Get the IDs of all intervals that overlap with a query range * * The IDs are created during CreateTreeMap, and are the position of the * the individual intervals from the tree, in genomic order. e.g the first * interval on chromosome 1 gets 0, the next one gets 1, etc. * The returned IDs can then be used as lookups with [], as long as the * collection is not altered in between. * @param gr Query range to check overlaps against * @param ignore_strand Should strandedness be ignore when doing overlaps * @return A vector of IDs of intervals in this collection that overlap with gr */ template std::vector FindOverlappedIntervals(const K& gr, bool ignore_strand) const; /** Get a const pointer to the genomic interval tree map */ const GenomicIntervalTreeMap* GetTree() const { return m_tree.get(); } /** Retrieve a GenomicRegion at given index. * * Note that this does not move the idx iterator, which is * used to loop through all the regions. Throws an exception * if the index is out of bounds. * @return GenomicRegion pointed to by index i */ const T& at(size_t i) const; /** Find overlaps between this vector and input GenomicRegion. * * Requires that the GenomicIntervalTreeMap have been created first * @param gr Region to test * @return Number of overlapping elements in this GenomicRegionCollection */ size_t CountOverlaps(const T &gr) const; /** Test if two intervals overlap the same element in the collection */ template bool OverlapSameInterval(const K &gr1, const K &gr2) const; /** Count the number of intervals in the collection contained in this range */ size_t CountContained(const T &gr); /** Return the overlaps between the collection and the query collection * @param subject Subject collection of intervals * @param query_id Indices of the queries that have an overlap. Will be same size as output and subject_id and in same order * @param subject_id Indices of the subject that have an overlap. Will be same size as output and query_id and in same order * @param ignore_strand If true, won't exclude overlap if on different strand * @return A collection of overlapping intervals from this collection, trimmed to be contained * @exception Throws a logic_error if this tree is non-empty, but the interval tree has not been made with * CreateTreeMap * inside the query collection */ template GenomicRegionCollection FindOverlaps(const GenomicRegionCollection &subject, std::vector& query_id, std::vector& subject_id, bool ignore_strand) const; /** Return the overlaps between the collection and the query interval * @param gr Query region * @param ignore_strand If true, won't exclude overlap if on different strand * @return A collection of overlapping intervals from this collection, trimmed to be contained * inside gr */ template GenomicRegionCollection FindOverlaps(const K& gr, bool ignore_strand) const; /** Return the number of bases in query that overlap this collection * @param gr Query GenomicRegion (or child of) * @param ignore_strand If true, won't exclude overlap if on different strand * @return Number of bases in query that overlap with region in collection */ template size_t FindOverlapWidth(const K& gr, bool ignore_strand) const; /** Return the total amount spanned by this collection */ int TotalWidth() const; /** Increase the left and right ends of each contained GenomicRegion by * the pad value. * @param v Amount to pad each end by. Result is increase in width by 2*pad. * @note See GenomicRegion::Pad */ void Pad(int v); /** Set the i'th GenomicRegion */ T& operator[](size_t i) { return m_grv->at(i); } /** Retreive the i'th GenomicRegion */ const T& operator[](size_t i) const { return m_grv->at(i); } /** Add two GenomicRegionCollection objects together */ void Concat(const GenomicRegionCollection& g); /** Output the GenomicRegionCollection to a BED format * * @param h Header to convert id to chromosome name * @return BED formated string reprsentation */ std::string AsBEDString(const BamHeader& h) const; /** Coordinate sort the interval collection */ void CoordinateSort(); /** Expand all the elements so they are sorted and become adjacent * by stretching them to the right up to max * @param max Element furthest to the right will be stretched to max. If set to 0, will not stretch furthest right element. * @exception Throws an out_of_range if furthest right position is > max */ void SortAndStretchRight(int max); /** Expand all the elements so they are sorted and become adjacent * by stretching them to the left down to min. * @param min Element furthest to the left will be stretched to min. If set to < 0, will not stretch furthest right element. * @exception Throws an out_of_range if furthest left is < min */ void SortAndStretchLeft(int min); /** Rewind the element pointer to the first GenomicRegion */ void Rewind() { idx = 0; } /** Return elements as an STL vector of GenomicRegion objects */ GenomicRegionVector AsGenomicRegionVector() const; /** Iterator to first element of the region collection */ typename std::vector::iterator begin() { return m_grv->begin(); } /** Iterator to end of the region collection */ typename std::vector::iterator end() { return m_grv->end(); } /** Const iterator to first element of the region collection */ typename std::vector::const_iterator begin() const { return m_grv->begin(); } /** Const iterator to end of the region collection */ typename std::vector::const_iterator end() const { return m_grv->end(); } /** Shortcut to FindOverlaps that just returns the intersecting regions * without keeping track of the query / subject ids * @param subject Collection of regions to intersect this object with * @param ignore_strand Ignore strand considerations when performing intersection * @return Intersecting regions between subject and query */ template GenomicRegionCollection Intersection(const GenomicRegionCollection& subject, bool ignore_strand) const; protected: bool m_sorted; // always construct this object any time m_grv is modifed SeqPointer m_tree; // hold the genomic regions SeqPointer > m_grv; // index for current GenomicRegion size_t idx; // open the memory void allocate_grc(); }; typedef GenomicRegionCollection GRC; } #include "SeqLib/GenomicRegionCollection.cpp" #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/IntervalTree.h000066400000000000000000000162301417247743000222540ustar00rootroot00000000000000/*Copyright (c) 2011 Erik Garrison Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Modifed by Jeremiah Wala to switch unique_ptr to traditional pointer (requiring free on destruction) */ #ifndef SEQLIB_INTERVAL_TREE_H__ #define SEQLIB_INTERVAL_TREE_H__ #include #include #include namespace SeqLib { template class TInterval { public: K start; K stop; T value; TInterval(K s, K e, const T& v) : start(s) , stop(e) , value(v) { } }; template K intervalStart(const TInterval& i) { return i.start; } template K intervalStop(const TInterval& i) { return i.stop; } template std::ostream& operator<<(std::ostream& out, TInterval& i) { out << "Interval(" << i.start << ", " << i.stop << "): " << i.value; return out; } template class IntervalStartSorter { public: bool operator() (const TInterval& a, const TInterval& b) { return a.start < b.start; } }; template class TIntervalTree { public: typedef TInterval interval; typedef std::vector intervalVector; typedef TIntervalTree intervalTree; intervalVector intervals; intervalTree * left; intervalTree * right; K center; // jwala added destructor ~TIntervalTree() { if (left) delete left; if (right) delete right; } TIntervalTree(void) : left(NULL) , right(NULL) , center(0) { } private: intervalTree* copyTree(const intervalTree& orig){ return (new intervalTree(orig)); } public: TIntervalTree(const intervalTree& other) : intervals(other.intervals), left(other.left ? copyTree(*other.left) : NULL), right(other.right ? copyTree(*other.right) : NULL), center(other.center) { } public: TIntervalTree& operator=(const intervalTree& other) { center = other.center; intervals = other.intervals; left = other.left ? copyTree(*other.left) : NULL; right = other.right ? copyTree(*other.right) : NULL; return *this; } // Note: changes the order of ivals TIntervalTree( intervalVector& ivals, std::size_t depth = 16, std::size_t minbucket = 64, K leftextent = 0, K rightextent = 0, std::size_t maxbucket = 512 ) : left(NULL) , right(NULL) { --depth; IntervalStartSorter intervalStartSorter; if (depth == 0 || (ivals.size() < minbucket && ivals.size() < maxbucket)) { std::sort(ivals.begin(), ivals.end(), intervalStartSorter); intervals = ivals; } else { if (leftextent == 0 && rightextent == 0) { // sort intervals by start std::sort(ivals.begin(), ivals.end(), intervalStartSorter); } K leftp = 0; K rightp = 0; K centerp = 0; if (leftextent || rightextent) { leftp = leftextent; rightp = rightextent; } else { leftp = ivals.front().start; std::vector stops; stops.resize(ivals.size()); transform(ivals.begin(), ivals.end(), stops.begin(), intervalStop); rightp = *max_element(stops.begin(), stops.end()); } //centerp = ( leftp + rightp ) / 2; centerp = ivals.at(ivals.size() / 2).start; center = centerp; intervalVector lefts; intervalVector rights; for (typename intervalVector::const_iterator i = ivals.begin(); i != ivals.end(); ++i) { const interval& interval = *i; if (interval.stop < center) { lefts.push_back(interval); } else if (interval.start > center) { rights.push_back(interval); } else { intervals.push_back(interval); } } if (!lefts.empty()) { left = new intervalTree(lefts, depth, minbucket, leftp, centerp); } if (!rights.empty()) { right = new intervalTree(rights, depth, minbucket, centerp, rightp); } } } intervalVector findOverlapping(K start, K stop) const { intervalVector ov; this->findOverlapping(start, stop, ov); return ov; } void findOverlapping(K start, K stop, intervalVector& overlapping) const { if (!intervals.empty() && ! (stop < intervals.front().start)) { for (typename intervalVector::const_iterator i = intervals.begin(); i != intervals.end(); ++i) { const interval& interval = *i; if (interval.stop >= start && interval.start <= stop) { overlapping.push_back(interval); } } } if (left && start <= center) { left->findOverlapping(start, stop, overlapping); } if (right && stop >= center) { right->findOverlapping(start, stop, overlapping); } } intervalVector findContained(K start, K stop) const { intervalVector contained; this->findContained(start, stop, contained); return contained; } void findContained(K start, K stop, intervalVector& contained) const { if (!intervals.empty() && ! (stop < intervals.front().start)) { for (typename intervalVector::const_iterator i = intervals.begin(); i != intervals.end(); ++i) { const interval& interval = *i; if (interval.start >= start && interval.stop <= stop) { contained.push_back(interval); } } } if (left && start <= center) { left->findContained(start, stop, contained); } if (right && stop >= center) { right->findContained(start, stop, contained); } } //~TIntervalTree(void) = default; }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/ReadFilter.h000066400000000000000000000422021417247743000216670ustar00rootroot00000000000000#ifndef SEQLIB_READ_FILTER_H #define SEQLIB_READ_FILTER_H #define AHO_CORASICK 1 #include #include #include #include "json/json.h" #include "SeqLib/GenomicRegionCollection.h" #include "SeqLib/BamRecord.h" #ifdef HAVE_C11 #include "SeqLib/aho_corasick.hpp" #endif #define MINIRULES_MATE_LINKED 1 #define MINIRULES_MATE_LINKED_EXCLUDE 2 #define MINIRULES_REGION 3 #define MINIRULES_REGION_EXCLUDE 4 namespace SeqLib { typedef SeqHashSet StringSet; namespace Filter { #ifdef HAVE_C11 /** Tool for using the Aho-Corasick method for substring queries of * using large dictionaries * @note Trie construction / searching implemented by https://github.com/blockchaindev/aho_corasick */ struct AhoCorasick { /** Allocate a new empty trie */ AhoCorasick() { aho_trie = SeqPointer(new aho_corasick::trie()); inv = false; count = 0; } /** Deallocate the trie */ ~AhoCorasick() { } /** Add a motif to the trie * @note Trie construction is lazy. Won't build trie until * first query. Therefore first query is slow, the rest are * O(n) where (n) is length of query string. */ void AddMotif(const std::string& m) { aho_trie->insert(m); } /** Add a set of motifs to the trie from a file * @param f File storing the motifs (new line separated) * @exception Throws a runtime_error if file cannot be opened */ void TrieFromFile(const std::string& f); /** Query if a string is in the trie * @param t Text to query * @return Returns number of substrings in tree that are in t */ int QueryText(const std::string& t) const; SeqPointer aho_trie; ///< The trie for the Aho-Corasick search std::string file; ///< Name of the file holding the motifs bool inv; ///< Is this an inverted dictinary (ie exclude hits) int count; ///< Number of motifs in dictionary }; #endif /** Stores a rule for a single alignment flag. * * Rules for alignment flags can be one of three states: * - NA - All flag values are valid * - Off - Flag is valid if OFF * - On - Flag is valid if ON */ class Flag { public: /** Construct a new Flag with NA rule */ Flag() : on(false), off(false), na(true) {} /** Set the flag to NA (pass alignment regardless of flag value) */ void setNA() { on = false; off = false; na = true; } /** Set the flag to ON (require flag ON to pass) */ void setOn() { on = true; off = false; na = false; } /** Set the flag to OFF (require flag OFF to pass) */ void setOff() { on = false; off = true; na = false; } /** Return if the Flag filter is NA */ bool isNA() const { return na; } /** Return if the Flag filter is ON */ bool isOn() const { return on; } /** Return if the Flag filter is OFF */ bool isOff() const { return off; } /** Parse the Flag rule from a JSON entry */ bool parseJson(const Json::Value& value, const std::string& name); private: bool on; bool off; bool na; }; /** Filter numeric values on whether they fall in/out of a range of values (eg mapping quality). * * Can optionally invert the range to make rule the complement of the range * (eg insert-size NOT in [300,600] */ class Range { public: /** Construct a default range with everything accepted */ Range() : m_min(0), m_max(0), m_inverted(false), m_every(true) {} /** Construct a Range from min to max, inclusive * @param min Minimum for range * @param max Maximum for range * @param inverted Declare if this should be an inverted range (do NOT accept vals in range) */ Range(int min, int max, bool inverted) : m_min(min), m_max(max), m_inverted(inverted), m_every(false) {} /** Given a query value, determine if the value passes this Range * @param val Query value (e.g. mapping quality) * @return true if the value passes this Range rule */ bool isValid(int val) { if (m_every) return true; if (!m_inverted) return (val >= m_min && val <= m_max); else return (val < m_min || val > m_max); } /** Parse a JSON value * @param value * @param name */ void parseJson(const Json::Value& value, const std::string& name); /** Print the contents of this Range */ friend std::ostream& operator<<(std::ostream &out, const Range &r); /** Return if this range accepts all values */ bool isEvery() const { return m_every; } /** Return the lower bound of the range */ int lowerBound() const { return m_min; } /** Return the upper bound of the range */ int upperBound() const { return m_max; } /** Return true if the range is inverted (e.g. do NOT accept i in [min,max] */ bool isInverted() const { return m_inverted; } private: int m_min; int m_max; bool m_inverted; bool m_every; }; /** Stores a set of Flag objects for filtering alignment flags * * An alignment can be queried against a FlagRule to check if it * satisfies the requirements for its alignment flag. */ class FlagRule { public: FlagRule() { dup = Flag(); supp = Flag(); qcfail = Flag(); hardclip = Flag(); fwd_strand = Flag(); rev_strand = Flag(); mate_fwd_strand = Flag(); mate_rev_strand = Flag(); mapped = Flag(); mate_mapped = Flag(); ff = Flag(); fr = Flag(); rf = Flag(); rr = Flag(); ic = Flag(); paired = Flag(); m_all_on_flag = 0; m_all_off_flag = 0; m_any_on_flag = 0; m_any_off_flag = 0; every = false; } Flag dup; ///< Filter for duplicated flag Flag supp; ///< Flag for supplementary flag Flag qcfail; ///< Flag for qcfail flag Flag hardclip; ///< Flag for presence of hardclip in cigar string Flag fwd_strand; ///< Flag for forward strand alignment Flag rev_strand; ///< Flag for reverse strand alignment Flag mate_fwd_strand; ///< Flag for forward strand alignment for mate Flag mate_rev_strand; ///< Flag for reverse strand alignment for mate Flag mapped; ///< Flag for mapped alignment Flag mate_mapped; ///< Flag for mate-mapped alignment Flag ff; ///< Flag for both reads on forward strand Flag fr; ///< Flag for lower (by position) read on forward strand, higher on reverse Flag rf; ///< Flag for lower (by position) read on reverse strand, higher on forward Flag rr; ///< Flag for both reads on reverse strand Flag ic; ///< Flag for read and mate aligned to different chromosomes Flag paired; ///< Flag for read is part of pair /** Parse a FlagRule from a JSON object */ void parseJson(const Json::Value& value); /** Set rule to pass all alignment flags that have any bit in f on * @param f Alignment flags to be on for alignment record to pass */ void setAnyOnFlag(uint32_t f) { m_any_on_flag = f; every = (every && f == 0); } // NOTE: every = (every && f == 0) means to set every to true only if // input flag is zero and every was already true /** Set rule to pass all alignment flags that have any bit in f off * @param f Alignment flags to be off for alignment record to pass */ void setAnyOffFlag(uint32_t f) { m_any_off_flag = f; every = (every && f == 0); } /** Set rule to reject all alignment flags that have any bit in f off * @param f Alignment flags to be on for alignment record to pass */ void setAllOnFlag(uint32_t f) { m_all_on_flag = f; every = (every && f == 0); } /** Set rule to reject all alignment flags that have any bit in f on * @param f Alignment flags to be off for alignment record to pass */ void setAllOffFlag(uint32_t f) { m_all_off_flag = f; every = (every && f == 0); } /** Return whether a read passes the alignment flag rules in this object * @param r Alignment record to query * @return true if record passes rules */ bool isValid(const BamRecord &r); /** Print the flag rule */ friend std::ostream& operator<<(std::ostream &out, const FlagRule &fr); /** Return if every this object will pass all records provided to it */ bool isEvery() const { return every; } private: bool every; // does this pass all flags? uint32_t m_all_on_flag; // if read has all of these, keep uint32_t m_all_off_flag; // if read has all of these, fail uint32_t m_any_on_flag; // if read has any of these, keep uint32_t m_any_off_flag;// if read has any of these, fail int parse_json_int(const Json::Value& v); }; /** Stores a full rule (Flag + Range + motif etc) * * An alignment can be queried with an AbstractRule object * to check if it passes that rule. */ class AbstractRule { friend class ReadFilter; friend class ReadFilterCollection; public: /** Create empty rule with default to accept all */ AbstractRule() : m_count(0), subsam_frac(1), subsam_seed(999) { } /** Destroy the filter */ ~AbstractRule() {} /** Add a list of motifs that will be search as sub-strings * of the read sequence * @param f Path to new-line separted file of motifs * @param inverted If true, the reads that have a matching motif will fail isValid */ void addMotifRule(const std::string& f, bool inverted); /** Query a read against this rule. If the * read passes this rule, return true. * @param r An aligned sequencing read to query against filter */ bool isValid(const BamRecord &r); /** Supply the rule parameters with a JSON * @param value JSON object created by parsing a string */ void parseJson(const Json::Value& value); /** Print some basic information about this filter */ friend std::ostream& operator<<(std::ostream &out, const AbstractRule &fr); /** Return if this rule accepts all reads */ bool isEvery() const; /** Set the rate to subsample (default 1 = no subsampling) * @param s A rate between 0 and 1 */ void SetSubsampleRate(double s) { subsam_frac = s; }; /** Supply a name for this rule * @param s ID to be associated with this rule */ void SetRuleID(const std::string& s) { id = s; }; /** Specify a read-group for this filter. * Reads that do not belong to this read group * will not pass isValid * @param rg Read group to be matched against RG:Z:readgroup */ void SetReadGroup(const std::string& rg) { read_group = rg; } FlagRule fr; ///< FlagRule specifying the alignment flag filter Range isize; ///< Range object for insert-size filter Range mapq; ///< Range object for mapping quality filter Range len; ///< Range object for length filter Range phred; ///< Range object for base-quality filter Range clip; ///< Range object for number of clipped bases filter Range nm; ///< Range object for NM (num mismatch) filter Range nbases; ///< Range object for number of "N" bases filer Range ins; ///< Range object for max CIGAR insertion size filter Range del; ///< Range object for max CIGAR deletion size filter Range xp; ///< Range object for number of secondary alignments private: void parseSeqLine(const Json::Value& value); // read group std::string read_group; // how many reads pass this rule? size_t m_count; // the aho-corasick trie #ifdef HAVE_C11 AhoCorasick aho; #endif // id for this rule std::string id; // fraction reads to subsample double subsam_frac; // data uint32_t subsam_seed; // random seed for subsampling void parseSubLine(const Json::Value& value); }; class ReadFilterCollection; /** * A set of AbstractRules on a region united by logi rules. * * ReadFilter stores an arbitrarily complex collection of AbstractRules * (e.g. (Mapped && Clipped) || (Unmapped)). */ class ReadFilter { friend class ReadFilterCollection; public: /** Construct an empty filter that passes all reads */ ReadFilter() : excluder(false), m_applies_to_mate(false), m_count(0) {} /** Destroy the filter */ ~ReadFilter(); // ReadFilter(const ReadFilter& rf); // Make a ReadFilter with an all exclude or include rule // @param Samtools style string, BED file or VCF // @param reg_type The type of rule this will be // @param h BAM header that defines available chromosomes /// //ReadFilter(const CommandLineRegion& c, const BamHeader& hdr); /** Return whether a read passes this filter * @param r A read to query * @note If this is an excluder rule, then this * returns false if the read passes the filter */ bool isValid(const BamRecord &r); /** Add a rule to this filter. A read must pass all * of the rules contained in this filter to pass * @param ar A rule (eg MAPQ > 30) that the read must satisfy to pass this filter. */ void AddRule(const AbstractRule& ar); /** Provide the region covered by this read filter * @param g Region that this filter applies to */ void setRegions(const GRC& g); /** Add additional regions to the filtered region * @param g Additional regions to be included in filter */ void addRegions(const GRC& g); /** Check if a read is overlapping the region defined by this filter * @param r Read to query whether it overlaps (even partially) the region. * @note If this is a mate-linked region, then the read will overlap * if its mate overlaps as well. */ bool isReadOverlappingRegion(const BamRecord &r) const; /** Print basic information about this filter */ friend std::ostream& operator<<(std::ostream& out, const ReadFilter &mr); /** Return the number of rules in this filter */ size_t size() const { return m_abstract_rules.size(); } /** Set as an excluder region * An excluder region is such that if a read satisfies * this rule, then it will fail isValid, rather than pass */ void SetExcluder(bool e) { excluder = e; } /** Set as a mate linked region */ void SetMateLinked(bool e) { m_applies_to_mate = e; } private: GRC m_grv; // the interval tree with the regions this rule applies to. Empty is whole-genome std::string id; // set a unique id for this filter bool excluder; // this filter is such that if read passes, it gets excluded std::string m_region_file; std::vector m_abstract_rules; // hold all of the rules // rule applies to mate too bool m_applies_to_mate; // how many reads pass this MiniRule size_t m_count; }; /** A full set of rules across any number of regions * * Stores the entire set of ReadFilter, each defined on a unique interval. * A single ReadFilterCollection object is sufficient to store any combination of rules, * and is the highest in the rule hierarchy. (ReadFilterCollection stores ReadFilter * stores AbstractRules stores FlagRule/Ranges). */ class ReadFilterCollection { public: /** Construct an empty ReadFilterCollection * that will pass all reads. */ ReadFilterCollection() : m_count(0), m_count_seen(0) {} /** Create a new filter collection directly from a JSON * @param script A JSON file or directly as JSON formatted string * @param h BamHeader to convert chr sequence to id * @exception invalid_argument if cannot parse JSON */ ReadFilterCollection(const std::string& script, const SeqLib::BamHeader& h); /** Add a new rule to the collection. * If a read passes this rule, it will be included, * even if it fails the other filters. Or, if this filter * has the excluder tag, then if a read passes this filter * then it will be excluded, regardless of the other filters */ void AddReadFilter(const ReadFilter& rf); /** Provide a global rule set (applies to each filter) * @param rule A filter specified in JSON format */ void addGlobalRule(const std::string& rule); /** Query a read to see if it passes any one of the * filters contained in this collection */ bool isValid(const BamRecord &r); /** Print some basic information about this object */ friend std::ostream& operator<<(std::ostream& out, const ReadFilterCollection &mr); /** Return a GenomicRegionCollection of all * of the regions specified by the filters. * @note This returns the raw regions. It may be useful * to run mergeOverlappingIntervals on the output to see * the minimal covered regions. */ GRC getAllRegions() const; /** Return the number of filters in this collection */ size_t size() const { return m_regions.size(); } /** Return the total number of rules in this collection. * Filters are composed of collections of rules, and this * returns the total number of rules (e.g. MAPQ > 30) across * all of the filters */ size_t numRules() const { size_t num = 0; for (std::vector::const_iterator it = m_regions.begin(); it != m_regions.end(); ++it) num += it->size(); return num; } /** Check that the filter collection includes something. * If not, then give it a universal includer */ void CheckHasIncluder(); // Return the a tab-delimited tally of which filters were satisfied. // Includes the header: // total_seen_count total_passed_count region region_passed_count rule rule_passed_count // //std::string EmitCounts() const; private: // the global rule that all other rules are inherited from AbstractRule rule_all; size_t m_count; // passed size_t m_count_seen; // tested // store all of the individual filters std::vector m_regions; bool ParseFilterObject(const std::string& filterName, const Json::Value& filterObject); }; } } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/SeqLibCommon.h000066400000000000000000000073701417247743000222050ustar00rootroot00000000000000#ifndef SEQLIB_COMMON_H #define SEQLIB_COMMON_H /*! \mainpage SeqLib 1.0 * * \section intro_sec Introduction * * SeqLib is a C++ package for querying BAM/SAM/CRAM files with HTSlib, performing * BWA-MEM operations in memory, and peforming sequence assembly with FermiKit. * See https://github.com/walaj/SeqLib for * full description. */ #include #include /** HTSlib/BWA-MEM/BLAT/Fermi operations */ namespace SeqLib { static const char RCOMPLEMENT_TABLE[128] = {' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ', ' ',' ',' ',' ',' ','T',' ','G',' ',' ',' ','C',' ',' ',' ',' ',' ',' ','N',' ', ' ',' ',' ',' ','A',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','t',' ','g', ' ',' ',' ','c',' ',' ',' ',' ',' ',' ','n',' ',' ',' ',' ',' ','a',' ',' ',' ', ' ',' ',' ',' ',' ',' ',' ',' '}; /* static const std::vector CHR_NAME {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "X", "Y", "M"}; static const std::vector CHR_NAME_NUM {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"}; static const std::vector CHR_LEN_VEC = {249250621, 243199373, 198022430, 191154276, //1-4 180915260, 171115067, //5-6 159138663, 146364022, 141213431, 135534747, 135006516, 133851895, //7-12 115169878, 107349540, 102531392, 90354753, 81195210, 78077248, //13-18 59128983, 63025520, 48129895, 51304566, 155270560, 59373566, //19-24 16571}; //25 static const std::vector CHR_CUMSUM_WEIGHT_X = {0.08209014, 0.16218732, 0.22740558, 0.29036182, 0.34994586, 0.40630223, 0.45871420, 0.50691887, 0.55342720, 0.59806527, 0.64252937, 0.68661320, 0.72454415, 0.75989948, 0.79366797, 0.82342611, 0.85016757, 0.87588214, 0.89535614, 0.91611346, 0.93196494, 0.94886198, 1.00000000}; static const std::vector CHR_WEIGHT_X = {0.08209014, 0.08009718, 0.06521825, 0.06295624, //1-4 0.05958404, 0.05635637, //5-6 0.05241197, 0.04820467, 0.04650833, 0.04463807, 0.04446410, 0.04408383, //7-12 0.03793095, 0.03535534, 0.03376849, 0.02975814, 0.02674146, 0.02571457, 0.01947400, 0.02075732, 0.01585148, 0.01689705, 0.05113802}; static const int CHR_LEN [25] = {249250621, 243199373, 198022430, 191154276, //1-4 180915260, 171115067, //5-6 159138663, 146364022, 141213431, 135534747, 135006516, 133851895, //7-12 115169878, 107349540, 102531392, 90354753, 81195210, 78077248, //13-18 59128983, 63025520, 48129895, 51304566, 155270560, 59373566, //19-24 16571}; //25 static const uint32_t CHR_CLEN [25] = {0, 249250621, 492449994, 690472424, 881626700, 1062541960, 1233657027, 1392795690,1539159712,1680373143,1815907890,1950914406,2084766301, 2199936179, 2307285719, 2409817111, 2500171864, 2581367074, 2659444322, 2718573305, 2781598825, 2829728720, 2881033286, 3036303846, 3095677412}; static const uint32_t genome_size_XY = 3095677411; static std::string const REFHG19 = "/seq/references/Homo_sapiens_assembly19/v1/Homo_sapiens_assembly19.fasta"; static const int NONCENT_CHR [44] = {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,14,15,16,16,17,17,18,18,19,19,20,20,21,21,22,23,23,24,24}; */ } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/SeqLibUtils.h000066400000000000000000000101201417247743000220400ustar00rootroot00000000000000#ifndef SEQLIB_UTILS_H #define SEQLIB_UTILS_H #include #include #include #include #include #include #include #include #include #include "SeqLib/SeqLibCommon.h" #if __cplusplus > 199711L #include #include #include #define SeqHashMap std::unordered_map #define SeqHashSet std::unordered_set #define SeqPointer std::shared_ptr #define HAVE_C11 1 #else #ifdef __APPLE__ #include #include #include #define SeqHashMap std::unordered_map #define SeqHashSet std::unordered_set #define SeqPointer std::shared_ptr #else #include #include #include #define SeqHashMap std::tr1::unordered_map #define SeqHashSet std::tr1::unordered_set #define SeqPointer std::tr1::shared_ptr #endif #endif namespace SeqLib { template inline std::string tostring(T d) { std::stringstream ss; ss << d; return ss.str(); } /** Check if a file is readable and exists * @param name Name of a file to test * @return File is readable and exists */ inline bool read_access_test (const std::string& name) { return (access (name.c_str(), R_OK) == 0); } /** Format an integer to include commas * @param data Number to format * @return String with formatted number containing commas */ template inline std::string AddCommas(T data) { std::stringstream ss; ss << data; std::string s = ss.str(); if (s.length() > 3) for (int i = s.length()-3; i > 0; i -= 3) s.insert(i,","); return s; } /** Display the runtime (CPU and Wall) * * @param start Running timer * @return Time formatted as "CPU: XmYs Wall: XmYs" * @note Does not work on OSX or Windows (returns "not configured") */ inline std::string displayRuntime( #ifndef __APPLE__ const timespec start #endif ) { #ifndef __APPLE__ struct timespec finish; clock_gettime(CLOCK_MONOTONIC, &finish); double elapsed = (finish.tv_sec - start.tv_sec); int t = clock()/CLOCKS_PER_SEC; int min = (int)std::floor(elapsed / 60.0); int sec = (int)(elapsed-min*60); char buffer[100]; sprintf (buffer, "CPU: %4dm%02ds Wall: %4dm%02ds", (int)floor( ((double)t) /60.0), t % 60, min, sec); buffer[99] = '\0'; return std::string(buffer); #else return "--- time not configured for apple\n"; #endif } /** Reverse complement in-place sequence containg upper/lower case ACTGN * @param a Sequence to be reverse complmented */ inline void rcomplement(std::string &a) { std::reverse(&a[0], &a[a.size()]); std::string::iterator it = a.begin(); for (; it != a.end(); it++) *it = RCOMPLEMENT_TABLE[(unsigned char)*it]; } /** Calculate the percentage and return as integer * @param numer Numerator * @param denom Denominator * @return Integer with the percentage floored */ template inline int percentCalc(T numer, T denom) { if (denom <= 0) return 0; int perc = numer * 100 / denom; //int perc = static_cast(floor((float)numer / (float)denom * 100.0)); return perc; } /** Remove substrings from a string * @param toscrub Input string to clean * @param toremove Substring to remove from input * @return Scrubbed string */ inline std::string scrubString(const std::string& toscrub, const std::string& toremove) { if (toscrub.empty() || toremove.empty()) return toscrub; std::string::size_type i = toscrub.find(toremove); if (i == std::string::npos) return toscrub; std::string ts = toscrub; while (i != std::string::npos) { ts.erase(i, toremove.length()); i = ts.find(toremove); } return ts; } // Generate a weighed random integer // @param cs Weighting for each integer (values must sum to one) // @return Random integer bounded on [0,cs.size()) // //int weightedRandom(const std::vector& cs); } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/ThreadPool.h000066400000000000000000000011011417247743000217000ustar00rootroot00000000000000#ifndef SEQLIB_THREAD_POOL_H #define SEQLIB_THREAD_POOL_H #include #include "SeqLib/BamWalker.h" #include "htslib/thread_pool.h" namespace SeqLib{ class ThreadPool { public: ThreadPool() : nthreads(1) { p.pool = NULL; } ThreadPool(int n) : nthreads(1) { p.pool = NULL; if (n < 1) throw std::invalid_argument( "n threads must be > 0"); if (!(p.pool = hts_tpool_init(n))) throw std::runtime_error( "Error creating thread pool"); } bool IsOpen() { return p.pool != NULL; } htsThreadPool p; size_t nthreads; }; } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/UnalignedSequence.h000066400000000000000000000045651417247743000232570ustar00rootroot00000000000000#ifndef SEQLIB_UNALIGNED_SEQ_H #define SEQLIB_UNALIGNED_SEQ_H extern "C" { #include "bwa/bwa.h" #include "bwa/bwt.h" #include "bwa/bntseq.h" #include "bwa/kseq.h" #include #include "bwa/utils.h" #include "bwa/bwamem.h" int is_bwt(ubyte_t *T, int n); KSEQ_DECLARE(gzFile) } #include #include #include namespace SeqLib { /** Structure to hold unaligned sequence (name and bases) */ struct UnalignedSequence { /** Construct an empty sequence */ UnalignedSequence() {} /** Construct an unaligned sequence with name and sequence * @param n Name of the sequence * @param s Sequence, stored as ACTG or N characters */ UnalignedSequence(const std::string& n, const std::string& s) : Name(n), Com(std::string()), Seq(s), Qual(std::string()), Strand('*') {} /** Construct an unaligned sequence with name, sequence and quality score * @param n Name of the sequence * @param s Sequence, stored as ACTG or N characters * @param q Quality string */ UnalignedSequence(const std::string& n, const std::string& s, const std::string& q) : Name(n), Com(std::string()), Seq(s), Qual(q), Strand('*') {} /** Construct an unaligned sequence with name, sequence, quality score and strand * @param n Name of the sequence * @param s Sequence, stored as ACTG or N characters * @param q Quality string * @param t Strand of the sequence, one of '*', '+', '-' */ UnalignedSequence(const std::string& n, const std::string& s, const std::string& q, char t) : Name(n), Com(std::string()), Seq(s), Qual(q), Strand(t) {} std::string Name; ///< Name of the contig std::string Com; ///< Comment of the contig std::string Seq; ///< Sequence of the contig (upper-case ACTGN) std::string Qual; ///< Quality scores char Strand; ///< Strand of the sequence. Default is '*' /** Output an unaligned sequence to ostream * @param os ostream * @param us UnalignedSequence */ friend std::ostream& operator<<(std::ostream& os, const SeqLib::UnalignedSequence& us){ os << "@" << us.Name << " " << us.Com << "\n"; os << us.Seq << "\n+\n"; os << us.Qual << "\n"; return os; } }; typedef std::vector UnalignedSequenceVector; ///< A collection of unaligned sequences } #endif freebayes-1.3.6/contrib/SeqLib/SeqLib/aho_corasick.hpp000066400000000000000000000412661417247743000226440ustar00rootroot00000000000000/* * Copyright (C) 2015 Christopher Gilbert. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #ifndef AHO_CORASICK_HPP #define AHO_CORASICK_HPP #include #include #include #include #include #include #include #include namespace aho_corasick { // class interval class interval { size_t d_start; size_t d_end; public: interval(size_t start, size_t end) : d_start(start) , d_end(end) {} size_t get_start() const { return d_start; } size_t get_end() const { return d_end; } size_t size() const { return d_end - d_start + 1; } bool overlaps_with(const interval& other) const { return d_start <= other.d_end && d_end >= other.d_start; } bool overlaps_with(size_t point) const { return d_start <= point && point <= d_end; } bool operator <(const interval& other) const { return get_start() < other.get_start(); } bool operator !=(const interval& other) const { return get_start() != other.get_start() || get_end() != other.get_end(); } bool operator ==(const interval& other) const { return get_start() == other.get_start() && get_end() == other.get_end(); } }; // class interval_tree template class interval_tree { public: using interval_collection = std::vector; private: // class node class node { enum direction { LEFT, RIGHT }; using node_ptr = std::unique_ptr; size_t d_point; node_ptr d_left; node_ptr d_right; interval_collection d_intervals; public: node(const interval_collection& intervals) : d_point(0) , d_left(nullptr) , d_right(nullptr) , d_intervals() { d_point = determine_median(intervals); interval_collection to_left, to_right; for (const auto& i : intervals) { if (i.get_end() < d_point) { to_left.push_back(i); } else if (i.get_start() > d_point) { to_right.push_back(i); } else { d_intervals.push_back(i); } } if (to_left.size() > 0) { d_left.reset(new node(to_left)); } if (to_right.size() > 0) { d_right.reset(new node(to_right)); } } size_t determine_median(const interval_collection& intervals) const { int start = -1; int end = -1; for (const auto& i : intervals) { int cur_start = i.get_start(); int cur_end = i.get_end(); if (start == -1 || cur_start < start) { start = cur_start; } if (end == -1 || cur_end > end) { end = cur_end; } } return (start + end) / 2; } interval_collection find_overlaps(const T& i) { interval_collection overlaps; if (d_point < i.get_start()) { add_to_overlaps(i, overlaps, find_overlapping_ranges(d_right, i)); add_to_overlaps(i, overlaps, check_right_overlaps(i)); } else if (d_point > i.get_end()) { add_to_overlaps(i, overlaps, find_overlapping_ranges(d_left, i)); add_to_overlaps(i, overlaps, check_left_overlaps(i)); } else { add_to_overlaps(i, overlaps, d_intervals); add_to_overlaps(i, overlaps, find_overlapping_ranges(d_left, i)); add_to_overlaps(i, overlaps, find_overlapping_ranges(d_right, i)); } return interval_collection(overlaps); } protected: void add_to_overlaps(const T& i, interval_collection& overlaps, interval_collection new_overlaps) const { for (const auto& cur : new_overlaps) { if (cur != i) { overlaps.push_back(cur); } } } interval_collection check_left_overlaps(const T& i) const { return interval_collection(check_overlaps(i, LEFT)); } interval_collection check_right_overlaps(const T& i) const { return interval_collection(check_overlaps(i, RIGHT)); } interval_collection check_overlaps(const T& i, direction d) const { interval_collection overlaps; for (const auto& cur : d_intervals) { switch (d) { case LEFT: if (cur.get_start() <= i.get_end()) { overlaps.push_back(cur); } break; case RIGHT: if (cur.get_end() >= i.get_start()) { overlaps.push_back(cur); } break; } } return interval_collection(overlaps); } interval_collection find_overlapping_ranges(node_ptr& node, const T& i) const { if (node) { return interval_collection(node->find_overlaps(i)); } return interval_collection(); } }; node d_root; public: interval_tree(const interval_collection& intervals) : d_root(intervals) {} interval_collection remove_overlaps(const interval_collection& intervals) { interval_collection result(intervals.begin(), intervals.end()); std::sort(result.begin(), result.end(), [](const T& a, const T& b) -> bool { if (b.size() - a.size() == 0) { return a.get_start() > b.get_start(); } return a.size() > b.size(); }); std::set remove_tmp; for (const auto& i : result) { if (remove_tmp.find(i) != remove_tmp.end()) { continue; } auto overlaps = find_overlaps(i); for (const auto& overlap : overlaps) { remove_tmp.insert(overlap); } } for (const auto& i : remove_tmp) { result.erase( std::find(result.begin(), result.end(), i) ); } std::sort(result.begin(), result.end(), [](const T& a, const T& b) -> bool { return a.get_start() < b.get_start(); }); return interval_collection(result); } interval_collection find_overlaps(const T& i) { return interval_collection(d_root.find_overlaps(i)); } }; // class ahoemit template class ahoemit: public interval { public: typedef std::basic_string string_type; typedef std::basic_string& string_ref_type; private: string_type d_keyword; public: ahoemit() : interval(-1, -1) , d_keyword() {} ahoemit(size_t start, size_t end, string_type keyword) : interval(start, end) , d_keyword(keyword) {} string_type get_keyword() const { return string_type(d_keyword); } bool is_empty() const { return (get_start() == -1 && get_end() == -1); } }; // class token template class token { public: enum token_type{ TYPE_FRAGMENT, TYPE_MATCH, }; using string_type = std::basic_string; using string_ref_type = std::basic_string&; using ahoemit_type = ahoemit; private: token_type d_type; string_type d_fragment; ahoemit_type d_ahoemit; public: token(string_ref_type fragment) : d_type(TYPE_FRAGMENT) , d_fragment(fragment) , d_ahoemit() {} token(string_ref_type fragment, const ahoemit_type& e) : d_type(TYPE_MATCH) , d_fragment(fragment) , d_ahoemit(e) {} bool is_match() const { return (d_type == TYPE_MATCH); } string_type get_fragment() const { return string_type(d_fragment); } ahoemit_type get_ahoemit() const { return d_ahoemit; } }; // class state template class state { public: typedef state* ptr; typedef std::unique_ptr> unique_ptr; typedef std::basic_string string_type; typedef std::basic_string& string_ref_type; typedef std::set string_collection; typedef std::vector state_collection; typedef std::vector transition_collection; private: size_t d_depth; ptr d_root; std::map d_success; ptr d_failure; string_collection d_ahoemits; public: state(): state(0) {} state(size_t depth) : d_depth(depth) , d_root(depth == 0 ? this : nullptr) , d_success() , d_failure(nullptr) , d_ahoemits() {} ptr next_state(CharType character) const { return next_state(character, false); } ptr next_state_ignore_root_state(CharType character) const { return next_state(character, true); } ptr add_state(CharType character) { auto next = next_state_ignore_root_state(character); if (next == nullptr) { next = new state(d_depth + 1); d_success[character].reset(next); } return next; } size_t get_depth() const { return d_depth; } void add_ahoemit(string_ref_type keyword) { d_ahoemits.insert(keyword); } void add_ahoemit(const string_collection& ahoemits) { for (const auto& e : ahoemits) { string_type str(e); add_ahoemit(str); } } string_collection get_ahoemits() const { return d_ahoemits; } ptr failure() const { return d_failure; } void set_failure(ptr fail_state) { d_failure = fail_state; } state_collection get_states() const { state_collection result; for (auto it = d_success.cbegin(); it != d_success.cend(); ++it) { result.push_back(it->second.get()); } return state_collection(result); } transition_collection get_transitions() const { transition_collection result; for (auto it = d_success.cbegin(); it != d_success.cend(); ++it) { result.push_back(it->first); } return transition_collection(result); } private: ptr next_state(CharType character, bool ignore_root_state) const { ptr result = nullptr; auto found = d_success.find(character); if (found != d_success.end()) { result = found->second.get(); } else if (!ignore_root_state && d_root != nullptr) { result = d_root; } return result; } }; template class basic_trie { public: using string_type = std::basic_string < CharType > ; using string_ref_type = std::basic_string&; typedef state state_type; typedef state* state_ptr_type; typedef token token_type; typedef ahoemit ahoemit_type; typedef std::vector token_collection; typedef std::vector ahoemit_collection; class config { bool d_allow_overlaps; bool d_only_whole_words; bool d_case_insensitive; public: config() : d_allow_overlaps(true) , d_only_whole_words(false) , d_case_insensitive(false) {} bool is_allow_overlaps() const { return d_allow_overlaps; } void set_allow_overlaps(bool val) { d_allow_overlaps = val; } bool is_only_whole_words() const { return d_only_whole_words; } void set_only_whole_words(bool val) { d_only_whole_words = val; } bool is_case_insensitive() const { return d_case_insensitive; } void set_case_insensitive(bool val) { d_case_insensitive = val; } }; private: std::unique_ptr d_root; config d_config; bool d_constructed_failure_states; public: basic_trie(): basic_trie(config()) {} basic_trie(const config& c) : d_root(new state_type()) , d_config(c) , d_constructed_failure_states(false) {} basic_trie& case_insensitive() { d_config.set_case_insensitive(true); return (*this); } basic_trie& remove_overlaps() { d_config.set_allow_overlaps(false); return (*this); } basic_trie& only_whole_words() { d_config.set_only_whole_words(true); return (*this); } void insert(string_type keyword) { if (keyword.empty()) return; state_ptr_type cur_state = d_root.get(); for (const auto& ch : keyword) { cur_state = cur_state->add_state(ch); } cur_state->add_ahoemit(keyword); } template void insert(InputIterator first, InputIterator last) { for (InputIterator it = first; first != last; ++it) { insert(*it); } } token_collection tokenise(string_type text) { token_collection tokens; auto collected_ahoemits = parse_text(text); size_t last_pos = -1; for (const auto& e : collected_ahoemits) { if (e.get_start() - last_pos > 1) { tokens.push_back(create_fragment(e, text, last_pos)); } tokens.push_back(create_match(e, text)); last_pos = e.get_end(); } if (text.size() - last_pos > 1) { tokens.push_back(create_fragment(typename token_type::ahoemit_type(), text, last_pos)); } return token_collection(tokens); } ahoemit_collection parse_text(string_type text) { check_construct_failure_states(); size_t pos = 0; state_ptr_type cur_state = d_root.get(); ahoemit_collection collected_ahoemits; for (auto c : text) { if (d_config.is_case_insensitive()) { c = std::tolower(c); } cur_state = get_state(cur_state, c); store_ahoemits(pos, cur_state, collected_ahoemits); pos++; } if (d_config.is_only_whole_words()) { remove_partial_matches(text, collected_ahoemits); } if (!d_config.is_allow_overlaps()) { interval_tree tree(typename interval_tree::interval_collection(collected_ahoemits.begin(), collected_ahoemits.end())); auto tmp = tree.remove_overlaps(collected_ahoemits); collected_ahoemits.swap(tmp); } return ahoemit_collection(collected_ahoemits); } private: token_type create_fragment(const typename token_type::ahoemit_type& e, string_ref_type text, size_t last_pos) const { auto start = last_pos + 1; auto end = (e.is_empty()) ? text.size() : e.get_start(); auto len = end - start; typename token_type::string_type str(text.substr(start, len)); return token_type(str); } token_type create_match(const typename token_type::ahoemit_type& e, string_ref_type text) const { auto start = e.get_start(); auto end = e.get_end() + 1; auto len = end - start; typename token_type::string_type str(text.substr(start, len)); return token_type(str, e); } void remove_partial_matches(string_ref_type search_text, ahoemit_collection& collected_ahoemits) const { size_t size = search_text.size(); ahoemit_collection remove_ahoemits; for (const auto& e : collected_ahoemits) { if ((e.get_start() == 0 || !std::isalpha(search_text.at(e.get_start() - 1))) && (e.get_end() + 1 == size || !std::isalpha(search_text.at(e.get_end() + 1))) ) { continue; } remove_ahoemits.push_back(e); } for (auto& e : remove_ahoemits) { collected_ahoemits.erase( std::find(collected_ahoemits.begin(), collected_ahoemits.end(), e) ); } } state_ptr_type get_state(state_ptr_type cur_state, CharType c) const { state_ptr_type result = cur_state->next_state(c); while (result == nullptr) { cur_state = cur_state->failure(); result = cur_state->next_state(c); } return result; } void check_construct_failure_states() { if (!d_constructed_failure_states) { construct_failure_states(); } } void construct_failure_states() { std::queue q; for (auto& depth_one_state : d_root->get_states()) { depth_one_state->set_failure(d_root.get()); q.push(depth_one_state); } d_constructed_failure_states = true; while (!q.empty()) { auto cur_state = q.front(); for (const auto& transition : cur_state->get_transitions()) { state_ptr_type target_state = cur_state->next_state(transition); q.push(target_state); state_ptr_type trace_failure_state = cur_state->failure(); while (trace_failure_state->next_state(transition) == nullptr) { trace_failure_state = trace_failure_state->failure(); } state_ptr_type new_failure_state = trace_failure_state->next_state(transition); target_state->set_failure(new_failure_state); target_state->add_ahoemit(new_failure_state->get_ahoemits()); } q.pop(); } } void store_ahoemits(size_t pos, state_ptr_type cur_state, ahoemit_collection& collected_ahoemits) const { auto ahoemits = cur_state->get_ahoemits(); if (!ahoemits.empty()) { for (const auto& str : ahoemits) { auto ahoemit_str = typename ahoemit_type::string_type(str); collected_ahoemits.push_back(ahoemit_type(pos - ahoemit_str.size() + 1, pos, ahoemit_str)); } } } }; typedef basic_trie trie; typedef basic_trie wtrie; } // namespace aho_corasick #endif // AHO_CORASICK_HPP freebayes-1.3.6/contrib/SeqLib/SeqLib/ssw.h000066400000000000000000000204551417247743000204700ustar00rootroot00000000000000/* * ssw.h * * Created by Mengyao Zhao on 6/22/10. * Copyright 2010 Boston College. All rights reserved. * Version 0.1.4 * Last revision by Mengyao Zhao on 02/11/16. * */ #ifndef SSW_H #define SSW_H #include #include #include #ifdef __cplusplus extern "C" { #endif // __cplusplus #define MAPSTR "MIDNSHP=X" #ifndef BAM_CIGAR_SHIFT #define BAM_CIGAR_SHIFT 4 #endif /*! @typedef structure of the query profile */ struct _profile; typedef struct _profile s_profile; /*! @typedef structure of the alignment result @field score1 the best alignment score @field score2 sub-optimal alignment score @field ref_begin1 0-based best alignment beginning position on reference; ref_begin1 = -1 when the best alignment beginning position is not available @field ref_end1 0-based best alignment ending position on reference @field read_begin1 0-based best alignment beginning position on read; read_begin1 = -1 when the best alignment beginning position is not available @field read_end1 0-based best alignment ending position on read @field read_end2 0-based sub-optimal alignment ending position on read @field cigar best alignment cigar; stored the same as that in BAM format, high 28 bits: length, low 4 bits: M/I/D (0/1/2); cigar = 0 when the best alignment path is not available @field cigarLen length of the cigar string; cigarLen = 0 when the best alignment path is not available */ typedef struct { uint16_t score1; uint16_t score2; int32_t ref_begin1; int32_t ref_end1; int32_t read_begin1; int32_t read_end1; int32_t ref_end2; uint32_t* cigar; int32_t cigarLen; } s_align; /*! @function Create the query profile using the query sequence. @param read pointer to the query sequence; the query sequence needs to be numbers @param readLen length of the query sequence @param mat pointer to the substitution matrix; mat needs to be corresponding to the read sequence @param n the square root of the number of elements in mat (mat has n*n elements) @param score_size estimated Smith-Waterman score; if your estimated best alignment score is surely < 255 please set 0; if your estimated best alignment score >= 255, please set 1; if you don't know, please set 2 @return pointer to the query profile structure @note example for parameter read and mat: If the query sequence is: ACGTATC, the sequence that read points to can be: 1234142 Then if the penalty for match is 2 and for mismatch is -2, the substitution matrix of parameter mat will be: //A C G T 2 -2 -2 -2 //A -2 2 -2 -2 //C -2 -2 2 -2 //G -2 -2 -2 2 //T mat is the pointer to the array {2, -2, -2, -2, -2, 2, -2, -2, -2, -2, 2, -2, -2, -2, -2, 2} */ s_profile* ssw_init (const int8_t* read, const int32_t readLen, const int8_t* mat, const int32_t n, const int8_t score_size); /*! @function Release the memory allocated by function ssw_init. @param p pointer to the query profile structure */ void init_destroy (s_profile* p); // @function ssw alignment. /*! @function Do Striped Smith-Waterman alignment. @param prof pointer to the query profile structure @param ref pointer to the target sequence; the target sequence needs to be numbers and corresponding to the mat parameter of function ssw_init @param refLen length of the target sequence @param weight_gapO the absolute value of gap open penalty @param weight_gapE the absolute value of gap extension penalty @param flag bitwise FLAG; (from high to low) bit 5: when setted as 1, function ssw_align will return the best alignment beginning position; bit 6: when setted as 1, if (ref_end1 - ref_begin1 < filterd && read_end1 - read_begin1 < filterd), (whatever bit 5 is setted) the function will return the best alignment beginning position and cigar; bit 7: when setted as 1, if the best alignment score >= filters, (whatever bit 5 is setted) the function will return the best alignment beginning position and cigar; bit 8: when setted as 1, (whatever bit 5, 6 or 7 is setted) the function will always return the best alignment beginning position and cigar. When flag == 0, only the optimal and sub-optimal scores and the optimal alignment ending position will be returned. @param filters score filter: when bit 7 of flag is setted as 1 and bit 8 is setted as 0, filters will be used (Please check the decription of the flag parameter for detailed usage.) @param filterd distance filter: when bit 6 of flag is setted as 1 and bit 8 is setted as 0, filterd will be used (Please check the decription of the flag parameter for detailed usage.) @param maskLen The distance between the optimal and suboptimal alignment ending position >= maskLen. We suggest to use readLen/2, if you don't have special concerns. Note: maskLen has to be >= 15, otherwise this function will NOT return the suboptimal alignment information. Detailed description of maskLen: After locating the optimal alignment ending position, the suboptimal alignment score can be heuristically found by checking the second largest score in the array that contains the maximal score of each column of the SW matrix. In order to avoid picking the scores that belong to the alignments sharing the partial best alignment, SSW C library masks the reference loci nearby (mask length = maskLen) the best alignment ending position and locates the second largest score from the unmasked elements. @return pointer to the alignment result structure @note Whatever the parameter flag is setted, this function will at least return the optimal and sub-optimal alignment score, and the optimal alignment ending positions on target and query sequences. If both bit 6 and 7 of the flag are setted while bit 8 is not, the function will return cigar only when both criteria are fulfilled. All returned positions are 0-based coordinate. */ s_align* ssw_align (const s_profile* prof, const int8_t* ref, int32_t refLen, const uint8_t weight_gapO, const uint8_t weight_gapE, const uint8_t flag, const uint16_t filters, const int32_t filterd, const int32_t maskLen); /*! @function Release the memory allocated by function ssw_align. @param a pointer to the alignment result structure */ void align_destroy (s_align* a); /*! @function Produce CIGAR 32-bit unsigned integer from CIGAR operation and CIGAR length @param length length of CIGAR @param op_letter CIGAR operation character ('M', 'I', etc) @return 32-bit unsigned integer, representing encoded CIGAR operation and length */ static inline uint32_t to_cigar_int (uint32_t length, char op_letter) { switch (op_letter) { case 'M': /* alignment match (can be a sequence match or mismatch */ default: return length << BAM_CIGAR_SHIFT; case 'S': /* soft clipping (clipped sequences present in SEQ) */ return (length << BAM_CIGAR_SHIFT) | (4u); case 'D': /* deletion from the reference */ return (length << BAM_CIGAR_SHIFT) | (2u); case 'I': /* insertion to the reference */ return (length << BAM_CIGAR_SHIFT) | (1u); case 'H': /* hard clipping (clipped sequences NOT present in SEQ) */ return (length << BAM_CIGAR_SHIFT) | (5u); case 'N': /* skipped region from the reference */ return (length << BAM_CIGAR_SHIFT) | (3u); case 'P': /* padding (silent deletion from padded reference) */ return (length << BAM_CIGAR_SHIFT) | (6u); case '=': /* sequence match */ return (length << BAM_CIGAR_SHIFT) | (7u); case 'X': /* sequence mismatch */ return (length << BAM_CIGAR_SHIFT) | (8u); } return (uint32_t)-1; // This never happens } /*! @function Extract CIGAR operation character from CIGAR 32-bit unsigned integer @param cigar_int 32-bit unsigned integer, representing encoded CIGAR operation and length @return CIGAR operation character ('M', 'I', etc) */ //char cigar_int_to_op (uint32_t cigar_int); static inline char cigar_int_to_op(uint32_t cigar_int) { return (cigar_int & 0xfU) > 8 ? 'M': MAPSTR[cigar_int & 0xfU]; } /*! @function Extract length of a CIGAR operation from CIGAR 32-bit unsigned integer @param cigar_int 32-bit unsigned integer, representing encoded CIGAR operation and length @return length of CIGAR operation */ //uint32_t cigar_int_to_len (uint32_t cigar_int); static inline uint32_t cigar_int_to_len (uint32_t cigar_int) { return cigar_int >> BAM_CIGAR_SHIFT; } #ifdef __cplusplus } #endif // __cplusplus #endif // SSW_H freebayes-1.3.6/contrib/SeqLib/SeqLib/ssw_cpp.h000066400000000000000000000175511417247743000213350ustar00rootroot00000000000000#ifndef COMPLETE_STRIPED_SMITH_WATERMAN_CPP_H_ #define COMPLETE_STRIPED_SMITH_WATERMAN_CPP_H_ #include #include #include namespace StripedSmithWaterman { struct Alignment { uint16_t sw_score; // The best alignment score uint16_t sw_score_next_best; // The next best alignment score int32_t ref_begin; // Reference begin position of the best alignment int32_t ref_end; // Reference end position of the best alignment int32_t query_begin; // Query begin position of the best alignment int32_t query_end; // Query end position of the best alignment int32_t ref_end_next_best; // Reference end position of the next best alignment int32_t mismatches; // Number of mismatches of the alignment std::string cigar_string; // Cigar string of the best alignment std::vector cigar; // Cigar stored in the BAM format // high 28 bits: length // low 4 bits: M/I/D/S/X (0/1/2/4/8); void Clear() { sw_score = 0; sw_score_next_best = 0; ref_begin = 0; ref_end = 0; query_begin = 0; query_end = 0; ref_end_next_best = 0; mismatches = 0; cigar_string.clear(); cigar.clear(); }; }; struct Filter { // NOTE: No matter the filter, those five fields of Alignment will be given anyway. // sw_score; sw_score_next_best; ref_end; query_end; ref_end_next_best. // NOTE: Only need score of alignments, please set 'report_begin_position' // and 'report_cigar' false. bool report_begin_position; // Give ref_begin and query_begin. // If it is not set, ref_begin and query_begin are -1. bool report_cigar; // Give cigar_string and cigar. // report_begin_position is automatically TRUE. // When *report_cigar* is true and alignment passes these two filters, // cigar_string and cigar will be given. uint16_t score_filter; // score >= score_filter uint16_t distance_filter; // ((ref_end - ref_begin) < distance_filter) && // ((query_end - read_begin) < distance_filter) Filter() : report_begin_position(true) , report_cigar(true) , score_filter(0) , distance_filter(32767) {}; Filter(const bool& pos, const bool& cigar, const uint16_t& score, const uint16_t& dis) : report_begin_position(pos) , report_cigar(cigar) , score_filter(score) , distance_filter(dis) {}; }; class Aligner { public: // ========= // @function Construct an Aligner on default values. // The function will build the {A.C,G,T,N} aligner. // If you target for other character aligners, then please // use the other constructor and pass the corresponding matrix in. // ========= Aligner(void); // ========= // @function Construct an Aligner by assigning scores. // The function will build the {A.C,G,T,N} aligner. // If you target for other character aligners, then please // use the other constructor and pass the corresponding matrix in. // ========= Aligner(const uint8_t& match_score, const uint8_t& mismatch_penalty, const uint8_t& gap_opening_penalty, const uint8_t& gap_extending_penalty); // ========= // @function Construct an Aligner by the specific matrixs. // ========= Aligner(const int8_t* score_matrix, const int& score_matrix_size, const int8_t* translation_matrix, const int& translation_matrix_size); ~Aligner(void); // ========= // @function Build the reference sequence and thus make // Align(const char* query, s_align* alignment) function; // otherwise the reference should be given when aligning. // [NOTICE] If there exists a sequence, that one will be deleted // and replaced. // @param seq The reference bases; // [NOTICE] It is not necessary null terminated. // @param length The length of bases will be be built. // @return The length of the built bases. // ========= int SetReferenceSequence(const char* seq, const int& length); void CleanReferenceSequence(void); // ========= // @function Set penalties for opening and extending gaps // [NOTICE] The defaults are 3 and 1 respectively. // ========= void SetGapPenalty(const uint8_t& opening, const uint8_t& extending) { gap_opening_penalty_ = opening; gap_extending_penalty_ = extending; }; // ========= // @function Align the query againt the reference that is set by // SetReferenceSequence. // @param query The query sequence. // @param filter The filter for the alignment. // @param alignment The container contains the result. // @return True: succeed; false: fail. // ========= bool Align(const char* query, const Filter& filter, Alignment* alignment) const; // ========= // @function Align the query againt the reference. // [NOTICE] The reference won't replace the reference // set by SetReferenceSequence. // @param query The query sequence. // @param ref The reference sequence. // [NOTICE] It is not necessary null terminated. // @param ref_len The length of the reference sequence. // @param filter The filter for the alignment. // @param alignment The container contains the result. // @return True: succeed; false: fail. // ========= bool Align(const char* query, const char* ref, const int& ref_len, const Filter& filter, Alignment* alignment) const; // @function Clear up all containers and thus the aligner is disabled. // To rebuild the aligner please use Build functions. void Clear(void); // ========= // @function Rebuild the aligner's ability on default values. // [NOTICE] If the aligner is not cleaned, rebuilding will fail. // @return True: succeed; false: fail. // ========= bool ReBuild(void); // ========= // @function Rebuild the aligner's ability by the specific matrixs. // [NOTICE] If the aligner is not cleaned, rebuilding will fail. // @return True: succeed; false: fail. // ========= bool ReBuild( const uint8_t& match_score, const uint8_t& mismatch_penalty, const uint8_t& gap_opening_penalty, const uint8_t& gap_extending_penalty); // ========= // @function Construct an Aligner by the specific matrixs. // [NOTICE] If the aligner is not cleaned, rebuilding will fail. // @return True: succeed; false: fail. // ========= bool ReBuild( const int8_t* score_matrix, const int& score_matrix_size, const int8_t* translation_matrix, const int& translation_matrix_size); private: int8_t* score_matrix_; int score_matrix_size_; int8_t* translation_matrix_; uint8_t match_score_; // default: 2 uint8_t mismatch_penalty_; // default: 2 uint8_t gap_opening_penalty_; // default: 3 uint8_t gap_extending_penalty_; // default: 1 int8_t* translated_reference_; int32_t reference_length_; int TranslateBase(const char* bases, const int& length, int8_t* translated) const; void SetAllDefault(void); void BuildDefaultMatrix(void); void ClearMatrices(void); Aligner& operator= (const Aligner&); Aligner (const Aligner&); }; // class Aligner // ================ // inline functions // ================ inline void Aligner::CleanReferenceSequence(void) { if (reference_length_ == 0) return; // delete the current buffer if (reference_length_ > 1) delete [] translated_reference_; else delete translated_reference_; reference_length_ = 0; } } // namespace StripedSmithWaterman #endif // COMPLETE_STRIPED_SMITH_WATERMAN_CPP_H_ freebayes-1.3.6/contrib/SeqLib/bwa/000077500000000000000000000000001417247743000170675ustar00rootroot00000000000000freebayes-1.3.6/contrib/SeqLib/bwa/bntseq.h000066400000000000000000000053271417247743000205430ustar00rootroot00000000000000/* The MIT License Copyright (c) 2008 Genome Research Ltd (GRL). Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Contact: Heng Li */ #ifndef BWT_BNTSEQ_H #define BWT_BNTSEQ_H #include #include #include #include #ifndef BWA_UBYTE #define BWA_UBYTE typedef uint8_t ubyte_t; #endif typedef struct { int64_t offset; int32_t len; int32_t n_ambs; uint32_t gi; int32_t is_alt; char *name, *anno; } bntann1_t; typedef struct { int64_t offset; int32_t len; char amb; } bntamb1_t; typedef struct { int64_t l_pac; int32_t n_seqs; uint32_t seed; bntann1_t *anns; // n_seqs elements int32_t n_holes; bntamb1_t *ambs; // n_holes elements FILE *fp_pac; } bntseq_t; extern unsigned char nst_nt4_table[256]; #ifdef __cplusplus extern "C" { #endif void bns_dump(const bntseq_t *bns, const char *prefix); bntseq_t *bns_restore(const char *prefix); bntseq_t *bns_restore_core(const char *ann_filename, const char* amb_filename, const char* pac_filename); void bns_destroy(bntseq_t *bns); int64_t bns_fasta2bntseq(gzFile fp_fa, const char *prefix, int for_only); int bns_pos2rid(const bntseq_t *bns, int64_t pos_f); int bns_cnt_ambi(const bntseq_t *bns, int64_t pos_f, int len, int *ref_id); uint8_t *bns_get_seq(int64_t l_pac, const uint8_t *pac, int64_t beg, int64_t end, int64_t *len); uint8_t *bns_fetch_seq(const bntseq_t *bns, const uint8_t *pac, int64_t *beg, int64_t mid, int64_t *end, int *rid); int bns_intv2rid(const bntseq_t *bns, int64_t rb, int64_t re); #ifdef __cplusplus } #endif static inline int64_t bns_depos(const bntseq_t *bns, int64_t pos, int *is_rev) { return (*is_rev = (pos >= bns->l_pac))? (bns->l_pac<<1) - 1 - pos : pos; } #endif freebayes-1.3.6/contrib/SeqLib/bwa/bwa.h000066400000000000000000000035031417247743000200120ustar00rootroot00000000000000#ifndef BWA_H_ #define BWA_H_ #include #include "bntseq.h" #include "bwt.h" #define BWA_IDX_BWT 0x1 #define BWA_IDX_BNS 0x2 #define BWA_IDX_PAC 0x4 #define BWA_IDX_ALL 0x7 #define BWA_CTL_SIZE 0x10000 typedef struct { bwt_t *bwt; // FM-index bntseq_t *bns; // information on the reference sequences uint8_t *pac; // the actual 2-bit encoded reference sequences with 'N' converted to a random base int is_shm; int64_t l_mem; uint8_t *mem; } bwaidx_t; typedef struct { int l_seq, id; char *name, *comment, *seq, *qual, *sam; } bseq1_t; extern int bwa_verbose; extern char bwa_rg_id[256]; #ifdef __cplusplus extern "C" { #endif bseq1_t *bseq_read(int chunk_size, int *n_, void *ks1_, void *ks2_); void bseq_classify(int n, bseq1_t *seqs, int m[2], bseq1_t *sep[2]); void bwa_fill_scmat(int a, int b, int8_t mat[25]); uint32_t *bwa_gen_cigar(const int8_t mat[25], int q, int r, int w_, int64_t l_pac, const uint8_t *pac, int l_query, uint8_t *query, int64_t rb, int64_t re, int *score, int *n_cigar, int *NM); uint32_t *bwa_gen_cigar2(const int8_t mat[25], int o_del, int e_del, int o_ins, int e_ins, int w_, int64_t l_pac, const uint8_t *pac, int l_query, uint8_t *query, int64_t rb, int64_t re, int *score, int *n_cigar, int *NM); char *bwa_idx_infer_prefix(const char *hint); bwt_t *bwa_idx_load_bwt(const char *hint); bwaidx_t *bwa_idx_load_from_shm(const char *hint); bwaidx_t *bwa_idx_load_from_disk(const char *hint, int which); bwaidx_t *bwa_idx_load(const char *hint, int which); void bwa_idx_destroy(bwaidx_t *idx); int bwa_idx2mem(bwaidx_t *idx); int bwa_mem2idx(int64_t l_mem, uint8_t *mem, bwaidx_t *idx); void bwa_print_sam_hdr(const bntseq_t *bns, const char *hdr_line); char *bwa_set_rg(const char *s); char *bwa_insert_header(const char *s, char *hdr); #ifdef __cplusplus } #endif #endif freebayes-1.3.6/contrib/SeqLib/bwa/bwamem.h000066400000000000000000000173701417247743000205200ustar00rootroot00000000000000#ifndef BWAMEM_H_ #define BWAMEM_H_ #include "bwt.h" #include "bntseq.h" #include "bwa.h" #define MEM_MAPQ_COEF 30.0 #define MEM_MAPQ_MAX 60 struct __smem_i; typedef struct __smem_i smem_i; #define MEM_F_PE 0x2 #define MEM_F_NOPAIRING 0x4 #define MEM_F_ALL 0x8 #define MEM_F_NO_MULTI 0x10 #define MEM_F_NO_RESCUE 0x20 #define MEM_F_REF_HDR 0x100 #define MEM_F_SOFTCLIP 0x200 #define MEM_F_SMARTPE 0x400 typedef struct { int a, b; // match score and mismatch penalty int o_del, e_del; int o_ins, e_ins; int pen_unpaired; // phred-scaled penalty for unpaired reads int pen_clip5,pen_clip3;// clipping penalty. This score is not deducted from the DP score. int w; // band width int zdrop; // Z-dropoff uint64_t max_mem_intv; int T; // output score threshold; only affecting output int flag; // see MEM_F_* macros int min_seed_len; // minimum seed length int min_chain_weight; int max_chain_extend; float split_factor; // split into a seed if MEM is longer than min_seed_len*split_factor int split_width; // split into a seed if its occurence is smaller than this value int max_occ; // skip a seed if its occurence is larger than this value int max_chain_gap; // do not chain seed if it is max_chain_gap-bp away from the closest seed int n_threads; // number of threads int chunk_size; // process chunk_size-bp sequences in a batch float mask_level; // regard a hit as redundant if the overlap with another better hit is over mask_level times the min length of the two hits float drop_ratio; // drop a chain if its seed coverage is below drop_ratio times the seed coverage of a better chain overlapping with the small chain float XA_drop_ratio; // when counting hits for the XA tag, ignore alignments with score < XA_drop_ratio * max_score; only effective for the XA tag float mask_level_redun; float mapQ_coef_len; int mapQ_coef_fac; int max_ins; // when estimating insert size distribution, skip pairs with insert longer than this value int max_matesw; // perform maximally max_matesw rounds of mate-SW for each end int max_XA_hits, max_XA_hits_alt; // if there are max_hits or fewer, output them all int8_t mat[25]; // scoring matrix; mat[0] == 0 if unset } mem_opt_t; typedef struct { int64_t rb, re; // [rb,re): reference sequence in the alignment int qb, qe; // [qb,qe): query sequence in the alignment int rid; // reference seq ID int score; // best local SW score int truesc; // actual score corresponding to the aligned region; possibly smaller than $score int sub; // 2nd best SW score int alt_sc; int csub; // SW score of a tandem hit int sub_n; // approximate number of suboptimal hits int w; // actual band width used in extension int seedcov; // length of regions coverged by seeds int secondary; // index of the parent hit shadowing the current hit; <0 if primary int secondary_all; int seedlen0; // length of the starting seed int n_comp:30, is_alt:2; // number of sub-alignments chained together float frac_rep; uint64_t hash; } mem_alnreg_t; typedef struct { size_t n, m; mem_alnreg_t *a; } mem_alnreg_v; typedef struct { int low, high; // lower and upper bounds within which a read pair is considered to be properly paired int failed; // non-zero if the orientation is not supported by sufficient data double avg, std; // mean and stddev of the insert size distribution } mem_pestat_t; typedef struct { // This struct is only used for the convenience of API. int64_t pos; // forward strand 5'-end mapping position int rid; // reference sequence index in bntseq_t; <0 for unmapped int flag; // extra flag uint32_t is_rev:1, is_alt:1, mapq:8, NM:22; // is_rev: whether on the reverse strand; mapq: mapping quality; NM: edit distance int n_cigar; // number of CIGAR operations uint32_t *cigar; // CIGAR in the BAM encoding: opLen<<4|op; op to integer mapping: MIDSH=>01234 char *XA; // alternative mappings int score, sub, alt_sc; } mem_aln_t; #ifdef __cplusplus extern "C" { #endif smem_i *smem_itr_init(const bwt_t *bwt); void smem_itr_destroy(smem_i *itr); void smem_set_query(smem_i *itr, int len, const uint8_t *query); void smem_config(smem_i *itr, int min_intv, int max_len, uint64_t max_intv); const bwtintv_v *smem_next(smem_i *itr); mem_opt_t *mem_opt_init(void); void mem_fill_scmat(int a, int b, int8_t mat[25]); /** * Align a batch of sequences and generate the alignments in the SAM format * * This routine requires $seqs[i].{l_seq,seq,name} and write $seqs[i].sam. * Note that $seqs[i].sam may consist of several SAM lines if the * corresponding sequence has multiple primary hits. * * In the paired-end mode (i.e. MEM_F_PE is set in $opt->flag), query * sequences must be interleaved: $n must be an even number and the 2i-th * sequence and the (2i+1)-th sequence constitute a read pair. In this * mode, there should be enough (typically >50) unique pairs for the * routine to infer the orientation and insert size. * * @param opt alignment parameters * @param bwt FM-index of the reference sequence * @param bns Information of the reference * @param pac 2-bit encoded reference * @param n number of query sequences * @param seqs query sequences; $seqs[i].seq/sam to be modified after the call * @param pes0 insert-size info; if NULL, infer from data; if not NULL, it should be an array with 4 elements, * corresponding to each FF, FR, RF and RR orientation. See mem_pestat() for more info. */ void mem_process_seqs(const mem_opt_t *opt, const bwt_t *bwt, const bntseq_t *bns, const uint8_t *pac, int64_t n_processed, int n, bseq1_t *seqs, const mem_pestat_t *pes0); /** * Find the aligned regions for one query sequence * * Note that this routine does not generate CIGAR. CIGAR should be * generated later by mem_reg2aln() below. * * @param opt alignment parameters * @param bwt FM-index of the reference sequence * @param bns Information of the reference * @param pac 2-bit encoded reference * @param l_seq length of query sequence * @param seq query sequence * * @return list of aligned regions. */ mem_alnreg_v mem_align1(const mem_opt_t *opt, const bwt_t *bwt, const bntseq_t *bns, const uint8_t *pac, int l_seq, const char *seq); /** * Generate CIGAR and forward-strand position from alignment region * * @param opt alignment parameters * @param bns Information of the reference * @param pac 2-bit encoded reference * @param l_seq length of query sequence * @param seq query sequence * @param ar one alignment region * * @return CIGAR, strand, mapping quality and forward-strand position */ mem_aln_t mem_reg2aln(const mem_opt_t *opt, const bntseq_t *bns, const uint8_t *pac, int l_seq, const char *seq, const mem_alnreg_t *ar); mem_aln_t mem_reg2aln2(const mem_opt_t *opt, const bntseq_t *bns, const uint8_t *pac, int l_seq, const char *seq, const mem_alnreg_t *ar, const char *name); /** * Infer the insert size distribution from interleaved alignment regions * * This function can be called after mem_align1(), as long as paired-end * reads are properly interleaved. * * @param opt alignment parameters * @param l_pac length of concatenated reference sequence * @param n number of query sequences; must be an even number * @param regs region array of size $n; 2i-th and (2i+1)-th elements constitute a pair * @param pes inferred insert size distribution (output) */ void mem_pestat(const mem_opt_t *opt, int64_t l_pac, int n, const mem_alnreg_v *regs, mem_pestat_t pes[4]); #ifdef __cplusplus } #endif #endif freebayes-1.3.6/contrib/SeqLib/bwa/bwt.h000066400000000000000000000115461417247743000200430ustar00rootroot00000000000000/* The MIT License Copyright (c) 2008 Genome Research Ltd (GRL). Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Contact: Heng Li */ #ifndef BWA_BWT_H #define BWA_BWT_H #include #include // requirement: (OCC_INTERVAL%16 == 0); please DO NOT change this line because some part of the code assume OCC_INTERVAL=0x80 #define OCC_INTV_SHIFT 7 #define OCC_INTERVAL (1LL<bwt[(k)/OCC_INTERVAL * (OCC_INTERVAL/(sizeof(uint32_t)*8/2) + sizeof(bwtint_t)/4*4) + sizeof(bwtint_t)/4*4 + (k)%OCC_INTERVAL/16]) #define bwt_occ_intv(b, k) ((b)->bwt + (k)/OCC_INTERVAL * (OCC_INTERVAL/(sizeof(uint32_t)*8/2) + sizeof(bwtint_t)/4*4) */ // The following two lines are ONLY correct when OCC_INTERVAL==0x80 #define bwt_bwt(b, k) ((b)->bwt[((k)>>7<<4) + sizeof(bwtint_t) + (((k)&0x7f)>>4)]) #define bwt_occ_intv(b, k) ((b)->bwt + ((k)>>7<<4)) /* retrieve a character from the $-removed BWT string. Note that * bwt_t::bwt is not exactly the BWT string and therefore this macro is * called bwt_B0 instead of bwt_B */ #define bwt_B0(b, k) (bwt_bwt(b, k)>>((~(k)&0xf)<<1)&3) #define bwt_set_intv(bwt, c, ik) ((ik).x[0] = (bwt)->L2[(int)(c)]+1, (ik).x[2] = (bwt)->L2[(int)(c)+1]-(bwt)->L2[(int)(c)], (ik).x[1] = (bwt)->L2[3-(c)]+1, (ik).info = 0) #ifdef __cplusplus extern "C" { #endif void bwt_dump_bwt(const char *fn, const bwt_t *bwt); void bwt_dump_sa(const char *fn, const bwt_t *bwt); bwt_t *bwt_restore_bwt(const char *fn); void bwt_restore_sa(const char *fn, bwt_t *bwt); void bwt_destroy(bwt_t *bwt); void bwt_bwtgen(const char *fn_pac, const char *fn_bwt); // from BWT-SW void bwt_bwtgen2(const char *fn_pac, const char *fn_bwt, int block_size); // from BWT-SW void bwt_cal_sa(bwt_t *bwt, int intv); void bwt_bwtupdate_core(bwt_t *bwt); bwtint_t bwt_occ(const bwt_t *bwt, bwtint_t k, ubyte_t c); void bwt_occ4(const bwt_t *bwt, bwtint_t k, bwtint_t cnt[4]); bwtint_t bwt_sa(const bwt_t *bwt, bwtint_t k); // more efficient version of bwt_occ/bwt_occ4 for retrieving two close Occ values void bwt_gen_cnt_table(bwt_t *bwt); void bwt_2occ(const bwt_t *bwt, bwtint_t k, bwtint_t l, ubyte_t c, bwtint_t *ok, bwtint_t *ol); void bwt_2occ4(const bwt_t *bwt, bwtint_t k, bwtint_t l, bwtint_t cntk[4], bwtint_t cntl[4]); int bwt_match_exact(const bwt_t *bwt, int len, const ubyte_t *str, bwtint_t *sa_begin, bwtint_t *sa_end); int bwt_match_exact_alt(const bwt_t *bwt, int len, const ubyte_t *str, bwtint_t *k0, bwtint_t *l0); /** * Extend bi-SA-interval _ik_ */ void bwt_extend(const bwt_t *bwt, const bwtintv_t *ik, bwtintv_t ok[4], int is_back); /** * Given a query _q_, collect potential SMEMs covering position _x_ and store them in _mem_. * Return the end of the longest exact match starting from _x_. */ int bwt_smem1(const bwt_t *bwt, int len, const uint8_t *q, int x, int min_intv, bwtintv_v *mem, bwtintv_v *tmpvec[2]); int bwt_smem1a(const bwt_t *bwt, int len, const uint8_t *q, int x, int min_intv, uint64_t max_intv, bwtintv_v *mem, bwtintv_v *tmpvec[2]); int bwt_seed_strategy1(const bwt_t *bwt, int len, const uint8_t *q, int x, int min_len, int max_intv, bwtintv_t *mem); #ifdef __cplusplus } #endif #endif freebayes-1.3.6/contrib/SeqLib/bwa/kseq.h000066400000000000000000000212311417247743000202020ustar00rootroot00000000000000/* The MIT License Copyright (c) 2008, 2009, 2011 Attractive Chaos Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Last Modified: 05MAR2012 */ #ifndef AC_KSEQ_H #define AC_KSEQ_H #include #include #include #ifdef USE_MALLOC_WRAPPERS # include "malloc_wrap.h" #endif #define KS_SEP_SPACE 0 // isspace(): \t, \n, \v, \f, \r #define KS_SEP_TAB 1 // isspace() && !' ' #define KS_SEP_LINE 2 // line separator: "\n" (Unix) or "\r\n" (Windows) #define KS_SEP_MAX 2 #define __KS_TYPE(type_t) \ typedef struct __kstream_t { \ unsigned char *buf; \ int begin, end, is_eof; \ type_t f; \ } kstream_t; #define ks_eof(ks) ((ks)->is_eof && (ks)->begin >= (ks)->end) #define ks_rewind(ks) ((ks)->is_eof = (ks)->begin = (ks)->end = 0) #define __KS_BASIC(type_t, __bufsize) \ static inline kstream_t *ks_init(type_t f) \ { \ kstream_t *ks = (kstream_t*)calloc(1, sizeof(kstream_t)); \ ks->f = f; \ ks->buf = (unsigned char*)malloc(__bufsize); \ return ks; \ } \ static inline void ks_destroy(kstream_t *ks) \ { \ if (ks) { \ free(ks->buf); \ free(ks); \ } \ } #define __KS_GETC(__read, __bufsize) \ static inline int ks_getc(kstream_t *ks) \ { \ if (ks->is_eof && ks->begin >= ks->end) return -1; \ if (ks->begin >= ks->end) { \ ks->begin = 0; \ ks->end = __read(ks->f, ks->buf, __bufsize); \ if (ks->end == 0) { ks->is_eof = 1; return -1;} \ } \ return (int)ks->buf[ks->begin++]; \ } #ifndef KSTRING_T #define KSTRING_T kstring_t typedef struct __kstring_t { size_t l, m; char *s; } kstring_t; #endif #ifndef kroundup32 #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x)) #endif #define __KS_GETUNTIL(__read, __bufsize) \ static int ks_getuntil2(kstream_t *ks, int delimiter, kstring_t *str, int *dret, int append) \ { \ int gotany = 0; \ if (dret) *dret = 0; \ str->l = append? str->l : 0; \ for (;;) { \ int i; \ if (ks->begin >= ks->end) { \ if (!ks->is_eof) { \ ks->begin = 0; \ ks->end = __read(ks->f, ks->buf, __bufsize); \ if (ks->end == 0) { ks->is_eof = 1; break; } \ } else break; \ } \ if (delimiter == KS_SEP_LINE) { \ for (i = ks->begin; i < ks->end; ++i) \ if (ks->buf[i] == '\n') break; \ } else if (delimiter > KS_SEP_MAX) { \ for (i = ks->begin; i < ks->end; ++i) \ if (ks->buf[i] == delimiter) break; \ } else if (delimiter == KS_SEP_SPACE) { \ for (i = ks->begin; i < ks->end; ++i) \ if (isspace(ks->buf[i])) break; \ } else if (delimiter == KS_SEP_TAB) { \ for (i = ks->begin; i < ks->end; ++i) \ if (isspace(ks->buf[i]) && ks->buf[i] != ' ') break; \ } else i = 0; /* never come to here! */ \ if (str->m - str->l < (size_t)(i - ks->begin + 1)) { \ str->m = str->l + (i - ks->begin) + 1; \ kroundup32(str->m); \ str->s = (char*)realloc(str->s, str->m); \ } \ gotany = 1; \ memcpy(str->s + str->l, ks->buf + ks->begin, i - ks->begin); \ str->l = str->l + (i - ks->begin); \ ks->begin = i + 1; \ if (i < ks->end) { \ if (dret) *dret = ks->buf[i]; \ break; \ } \ } \ if (!gotany && ks_eof(ks)) return -1; \ if (str->s == 0) { \ str->m = 1; \ str->s = (char*)calloc(1, 1); \ } else if (delimiter == KS_SEP_LINE && str->l > 1 && str->s[str->l-1] == '\r') --str->l; \ str->s[str->l] = '\0'; \ return str->l; \ } \ static inline int ks_getuntil(kstream_t *ks, int delimiter, kstring_t *str, int *dret) \ { return ks_getuntil2(ks, delimiter, str, dret, 0); } #define KSTREAM_INIT(type_t, __read, __bufsize) \ __KS_TYPE(type_t) \ __KS_BASIC(type_t, __bufsize) \ __KS_GETC(__read, __bufsize) \ __KS_GETUNTIL(__read, __bufsize) #define kseq_rewind(ks) ((ks)->last_char = (ks)->f->is_eof = (ks)->f->begin = (ks)->f->end = 0) #define __KSEQ_BASIC(SCOPE, type_t) \ SCOPE kseq_t *kseq_init(type_t fd) \ { \ kseq_t *s = (kseq_t*)calloc(1, sizeof(kseq_t)); \ s->f = ks_init(fd); \ return s; \ } \ SCOPE void kseq_destroy(kseq_t *ks) \ { \ if (!ks) return; \ free(ks->name.s); free(ks->comment.s); free(ks->seq.s); free(ks->qual.s); \ ks_destroy(ks->f); \ free(ks); \ } /* Return value: >=0 length of the sequence (normal) -1 end-of-file -2 truncated quality string */ #define __KSEQ_READ(SCOPE) \ SCOPE int kseq_read(kseq_t *seq) \ { \ int c; \ kstream_t *ks = seq->f; \ if (seq->last_char == 0) { /* then jump to the next header line */ \ while ((c = ks_getc(ks)) != -1 && c != '>' && c != '@'); \ if (c == -1) return -1; /* end of file */ \ seq->last_char = c; \ } /* else: the first header char has been read in the previous call */ \ seq->comment.l = seq->seq.l = seq->qual.l = 0; /* reset all members */ \ if (ks_getuntil(ks, 0, &seq->name, &c) < 0) return -1; /* normal exit: EOF */ \ if (c != '\n') ks_getuntil(ks, KS_SEP_LINE, &seq->comment, 0); /* read FASTA/Q comment */ \ if (seq->seq.s == 0) { /* we can do this in the loop below, but that is slower */ \ seq->seq.m = 256; \ seq->seq.s = (char*)malloc(seq->seq.m); \ } \ while ((c = ks_getc(ks)) != -1 && c != '>' && c != '+' && c != '@') { \ if (c == '\n') continue; /* skip empty lines */ \ seq->seq.s[seq->seq.l++] = c; /* this is safe: we always have enough space for 1 char */ \ ks_getuntil2(ks, KS_SEP_LINE, &seq->seq, 0, 1); /* read the rest of the line */ \ } \ if (c == '>' || c == '@') seq->last_char = c; /* the first header char has been read */ \ if (seq->seq.l + 1 >= seq->seq.m) { /* seq->seq.s[seq->seq.l] below may be out of boundary */ \ seq->seq.m = seq->seq.l + 2; \ kroundup32(seq->seq.m); /* rounded to the next closest 2^k */ \ seq->seq.s = (char*)realloc(seq->seq.s, seq->seq.m); \ } \ seq->seq.s[seq->seq.l] = 0; /* null terminated string */ \ if (c != '+') return seq->seq.l; /* FASTA */ \ if (seq->qual.m < seq->seq.m) { /* allocate memory for qual in case insufficient */ \ seq->qual.m = seq->seq.m; \ seq->qual.s = (char*)realloc(seq->qual.s, seq->qual.m); \ } \ while ((c = ks_getc(ks)) != -1 && c != '\n'); /* skip the rest of '+' line */ \ if (c == -1) return -2; /* error: no quality string */ \ while (ks_getuntil2(ks, KS_SEP_LINE, &seq->qual, 0, 1) >= 0 && seq->qual.l < seq->seq.l); \ seq->last_char = 0; /* we have not come to the next header line */ \ if (seq->seq.l != seq->qual.l) return -2; /* error: qual string is of a different length */ \ return seq->seq.l; \ } #define __KSEQ_TYPE(type_t) \ typedef struct { \ kstring_t name, comment, seq, qual; \ int last_char; \ kstream_t *f; \ } kseq_t; #define KSEQ_INIT2(SCOPE, type_t, __read) \ KSTREAM_INIT(type_t, __read, 16384) \ __KSEQ_TYPE(type_t) \ __KSEQ_BASIC(SCOPE, type_t) \ __KSEQ_READ(SCOPE) #define KSEQ_INIT(type_t, __read) KSEQ_INIT2(static, type_t, __read) #define KSEQ_DECLARE(type_t) \ __KS_TYPE(type_t) \ __KSEQ_TYPE(type_t) \ extern kseq_t *kseq_init(type_t fd); \ void kseq_destroy(kseq_t *ks); \ int kseq_read(kseq_t *seq); #endif freebayes-1.3.6/contrib/SeqLib/bwa/utils.h000066400000000000000000000073551417247743000204120ustar00rootroot00000000000000/* The MIT License Copyright (c) 2008 Genome Research Ltd (GRL). Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Contact: Heng Li */ #ifndef LH3_UTILS_H #define LH3_UTILS_H #include #include #include #ifdef __GNUC__ // Tell GCC to validate printf format string and args #define ATTRIBUTE(list) __attribute__ (list) #else #define ATTRIBUTE(list) #endif #define err_fatal_simple(msg) _err_fatal_simple(__func__, msg) #define err_fatal_simple_core(msg) _err_fatal_simple_core(__func__, msg) #define xopen(fn, mode) err_xopen_core(__func__, fn, mode) #define xreopen(fn, mode, fp) err_xreopen_core(__func__, fn, mode, fp) #define xzopen(fn, mode) err_xzopen_core(__func__, fn, mode) #define xassert(cond, msg) if ((cond) == 0) _err_fatal_simple_core(__func__, msg) typedef struct { uint64_t x, y; } pair64_t; typedef struct { size_t n, m; uint64_t *a; } uint64_v; typedef struct { size_t n, m; pair64_t *a; } pair64_v; #ifdef __cplusplus extern "C" { #endif void err_fatal(const char *header, const char *fmt, ...) ATTRIBUTE((noreturn)); void err_fatal_core(const char *header, const char *fmt, ...) ATTRIBUTE((noreturn)); void _err_fatal_simple(const char *func, const char *msg) ATTRIBUTE((noreturn)); void _err_fatal_simple_core(const char *func, const char *msg) ATTRIBUTE((noreturn)); FILE *err_xopen_core(const char *func, const char *fn, const char *mode); FILE *err_xreopen_core(const char *func, const char *fn, const char *mode, FILE *fp); gzFile err_xzopen_core(const char *func, const char *fn, const char *mode); size_t err_fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); size_t err_fread_noeof(void *ptr, size_t size, size_t nmemb, FILE *stream); int err_gzread(gzFile file, void *ptr, unsigned int len); int err_fseek(FILE *stream, long offset, int whence); #define err_rewind(FP) err_fseek((FP), 0, SEEK_SET) long err_ftell(FILE *stream); int err_fprintf(FILE *stream, const char *format, ...) ATTRIBUTE((format(printf, 2, 3))); int err_printf(const char *format, ...) ATTRIBUTE((format(printf, 1, 2))); int err_fputc(int c, FILE *stream); #define err_putchar(C) err_fputc((C), stdout) int err_fputs(const char *s, FILE *stream); int err_puts(const char *s); int err_fflush(FILE *stream); int err_fclose(FILE *stream); int err_gzclose(gzFile file); double cputime(); double realtime(); void ks_introsort_64 (size_t n, uint64_t *a); void ks_introsort_128(size_t n, pair64_t *a); #ifdef __cplusplus } #endif static inline uint64_t hash_64(uint64_t key) { key += ~(key << 32); key ^= (key >> 22); key += ~(key << 13); key ^= (key >> 8); key += (key << 3); key ^= (key >> 15); key += ~(key << 27); key ^= (key >> 31); return key; } #endif freebayes-1.3.6/contrib/SeqLib/json/000077500000000000000000000000001417247743000172675ustar00rootroot00000000000000freebayes-1.3.6/contrib/SeqLib/json/json-forwards.h000066400000000000000000000254061417247743000222450ustar00rootroot00000000000000/// Json-cpp amalgated forward header (http://jsoncpp.sourceforge.net/). /// It is intended to be used with #include "json/json-forwards.h" /// This header provides forward declaration for all JsonCpp types. // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: LICENSE // ////////////////////////////////////////////////////////////////////// /* The JsonCpp library's source code, including accompanying documentation, tests and demonstration applications, are licensed under the following conditions... The author (Baptiste Lepilleur) explicitly disclaims copyright in all jurisdictions which recognize such a disclaimer. In such jurisdictions, this software is released into the Public Domain. In jurisdictions which do not recognize Public Domain property (e.g. Germany as of 2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is released under the terms of the MIT License (see below). In jurisdictions which recognize Public Domain property, the user of this software may choose to accept it either as 1) Public Domain, 2) under the conditions of the MIT License (see below), or 3) under the terms of dual Public Domain/MIT License conditions described here, as they choose. The MIT License is about as close to Public Domain as a license can get, and is described in clear, concise terms at: http://en.wikipedia.org/wiki/MIT_License The full text of the MIT License follows: ======================================================================== Copyright (c) 2007-2010 Baptiste Lepilleur Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ======================================================================== (END LICENSE TEXT) The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. */ // ////////////////////////////////////////////////////////////////////// // End of content of file: LICENSE // ////////////////////////////////////////////////////////////////////// #ifndef JSON_FORWARD_AMALGATED_H_INCLUDED # define JSON_FORWARD_AMALGATED_H_INCLUDED /// If defined, indicates that the source file is amalgated /// to prevent private header inclusion. #define JSON_IS_AMALGAMATION // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/config.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef JSON_CONFIG_H_INCLUDED #define JSON_CONFIG_H_INCLUDED #include #include //typdef String /// If defined, indicates that json library is embedded in CppTL library. //# define JSON_IN_CPPTL 1 /// If defined, indicates that json may leverage CppTL library //# define JSON_USE_CPPTL 1 /// If defined, indicates that cpptl vector based map should be used instead of /// std::map /// as Value container. //# define JSON_USE_CPPTL_SMALLMAP 1 // If non-zero, the library uses exceptions to report bad input instead of C // assertion macros. The default is to use exceptions. #ifndef JSON_USE_EXCEPTION #define JSON_USE_EXCEPTION 1 #endif /// If defined, indicates that the source file is amalgated /// to prevent private header inclusion. /// Remarks: it is automatically defined in the generated amalgated header. // #define JSON_IS_AMALGAMATION #ifdef JSON_IN_CPPTL #include #ifndef JSON_USE_CPPTL #define JSON_USE_CPPTL 1 #endif #endif #ifdef JSON_IN_CPPTL #define JSON_API CPPTL_API #elif defined(JSON_DLL_BUILD) #if defined(_MSC_VER) || defined(__MINGW32__) #define JSON_API __declspec(dllexport) #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING #endif // if defined(_MSC_VER) #elif defined(JSON_DLL) #if defined(_MSC_VER) || defined(__MINGW32__) #define JSON_API __declspec(dllimport) #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING #endif // if defined(_MSC_VER) #endif // ifdef JSON_IN_CPPTL #if !defined(JSON_API) #define JSON_API #endif // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for // integer // Storages, and 64 bits integer support is disabled. // #define JSON_NO_INT64 1 #if defined(_MSC_VER) // MSVC # if _MSC_VER <= 1200 // MSVC 6 // Microsoft Visual Studio 6 only support conversion from __int64 to double // (no conversion from unsigned __int64). # define JSON_USE_INT64_DOUBLE_CONVERSION 1 // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255' // characters in the debug information) // All projects I've ever seen with VS6 were using this globally (not bothering // with pragma push/pop). # pragma warning(disable : 4786) # endif // MSVC 6 # if _MSC_VER >= 1500 // MSVC 2008 /// Indicates that the following function is deprecated. # define JSONCPP_DEPRECATED(message) __declspec(deprecated(message)) # endif #endif // defined(_MSC_VER) // In c++11 the override keyword allows you to explicity define that a function // is intended to override the base-class version. This makes the code more // managable and fixes a set of common hard-to-find bugs. #if __cplusplus >= 201103L # define JSONCPP_OVERRIDE override #else # define JSONCPP_OVERRIDE #endif #ifndef JSON_HAS_RVALUE_REFERENCES #if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010 #define JSON_HAS_RVALUE_REFERENCES 1 #endif // MSVC >= 2010 #ifdef __clang__ #if __has_feature(cxx_rvalue_references) #define JSON_HAS_RVALUE_REFERENCES 1 #endif // has_feature #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L) #define JSON_HAS_RVALUE_REFERENCES 1 #endif // GXX_EXPERIMENTAL #endif // __clang__ || __GNUC__ #endif // not defined JSON_HAS_RVALUE_REFERENCES #ifndef JSON_HAS_RVALUE_REFERENCES #define JSON_HAS_RVALUE_REFERENCES 0 #endif #ifdef __clang__ #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) # define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message))) # elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) # define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__)) # endif // GNUC version #endif // __clang__ || __GNUC__ #if !defined(JSONCPP_DEPRECATED) #define JSONCPP_DEPRECATED(message) #endif // if !defined(JSONCPP_DEPRECATED) #if __GNUC__ >= 6 # define JSON_USE_INT64_DOUBLE_CONVERSION 1 #endif #if !defined(JSON_IS_AMALGAMATION) # include "version.h" # if JSONCPP_USING_SECURE_MEMORY # include "allocator.h" //typedef Allocator # endif #endif // if !defined(JSON_IS_AMALGAMATION) namespace Json { typedef int Int; typedef unsigned int UInt; #if defined(JSON_NO_INT64) typedef int LargestInt; typedef unsigned int LargestUInt; #undef JSON_HAS_INT64 #else // if defined(JSON_NO_INT64) // For Microsoft Visual use specific types as long long is not supported #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else // if defined(_MSC_VER) // Other platforms, use long long typedef long long int Int64; typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) typedef Int64 LargestInt; typedef UInt64 LargestUInt; #define JSON_HAS_INT64 #endif // if defined(JSON_NO_INT64) #if JSONCPP_USING_SECURE_MEMORY #define JSONCPP_STRING std::basic_string, Json::SecureAllocator > #define JSONCPP_OSTRINGSTREAM std::basic_ostringstream, Json::SecureAllocator > #define JSONCPP_OSTREAM std::basic_ostream> #define JSONCPP_ISTRINGSTREAM std::basic_istringstream, Json::SecureAllocator > #define JSONCPP_ISTREAM std::istream #else #define JSONCPP_STRING std::string #define JSONCPP_OSTRINGSTREAM std::ostringstream #define JSONCPP_OSTREAM std::ostream #define JSONCPP_ISTRINGSTREAM std::istringstream #define JSONCPP_ISTREAM std::istream #endif // if JSONCPP_USING_SECURE_MEMORY } // end namespace Json #endif // JSON_CONFIG_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/config.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/forwards.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef JSON_FORWARDS_H_INCLUDED #define JSON_FORWARDS_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "config.h" #endif // if !defined(JSON_IS_AMALGAMATION) namespace Json { // writer.h class FastWriter; class StyledWriter; // reader.h class Reader; // features.h class Features; // value.h typedef unsigned int ArrayIndex; class StaticString; class Path; class PathArgument; class Value; class ValueIteratorBase; class ValueIterator; class ValueConstIterator; } // namespace Json #endif // JSON_FORWARDS_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/forwards.h // ////////////////////////////////////////////////////////////////////// #endif //ifndef JSON_FORWARD_AMALGATED_H_INCLUDED freebayes-1.3.6/contrib/SeqLib/json/json.h000066400000000000000000002106151417247743000204160ustar00rootroot00000000000000/// Json-cpp amalgated header (http://jsoncpp.sourceforge.net/). /// It is intended to be used with #include "json/json.h" // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: LICENSE // ////////////////////////////////////////////////////////////////////// /* The JsonCpp library's source code, including accompanying documentation, tests and demonstration applications, are licensed under the following conditions... The author (Baptiste Lepilleur) explicitly disclaims copyright in all jurisdictions which recognize such a disclaimer. In such jurisdictions, this software is released into the Public Domain. In jurisdictions which do not recognize Public Domain property (e.g. Germany as of 2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is released under the terms of the MIT License (see below). In jurisdictions which recognize Public Domain property, the user of this software may choose to accept it either as 1) Public Domain, 2) under the conditions of the MIT License (see below), or 3) under the terms of dual Public Domain/MIT License conditions described here, as they choose. The MIT License is about as close to Public Domain as a license can get, and is described in clear, concise terms at: http://en.wikipedia.org/wiki/MIT_License The full text of the MIT License follows: ======================================================================== Copyright (c) 2007-2010 Baptiste Lepilleur Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ======================================================================== (END LICENSE TEXT) The MIT license is compatible with both the GPL and commercial software, affording one all of the rights of Public Domain with the minor nuisance of being required to keep the above copyright notice and license text in the source code. Note also that by accepting the Public Domain "license" you can re-license your copy using whatever license you like. */ // ////////////////////////////////////////////////////////////////////// // End of content of file: LICENSE // ////////////////////////////////////////////////////////////////////// #ifndef JSON_AMALGATED_H_INCLUDED # define JSON_AMALGATED_H_INCLUDED /// If defined, indicates that the source file is amalgated /// to prevent private header inclusion. #define JSON_IS_AMALGAMATION // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/version.h // ////////////////////////////////////////////////////////////////////// // DO NOT EDIT. This file (and "version") is generated by CMake. // Run CMake configure step to update it. #ifndef JSON_VERSION_H_INCLUDED # define JSON_VERSION_H_INCLUDED # define JSONCPP_VERSION_STRING "1.7.2" # define JSONCPP_VERSION_MAJOR 1 # define JSONCPP_VERSION_MINOR 7 # define JSONCPP_VERSION_PATCH 2 # define JSONCPP_VERSION_QUALIFIER # define JSONCPP_VERSION_HEXA ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | (JSONCPP_VERSION_PATCH << 8)) #ifdef JSONCPP_USING_SECURE_MEMORY #undef JSONCPP_USING_SECURE_MEMORY #endif #define JSONCPP_USING_SECURE_MEMORY 0 // If non-zero, the library zeroes any memory that it has allocated before // it frees its memory. #endif // JSON_VERSION_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/version.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/config.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef JSON_CONFIG_H_INCLUDED #define JSON_CONFIG_H_INCLUDED #include #include //typdef String /// If defined, indicates that json library is embedded in CppTL library. //# define JSON_IN_CPPTL 1 /// If defined, indicates that json may leverage CppTL library //# define JSON_USE_CPPTL 1 /// If defined, indicates that cpptl vector based map should be used instead of /// std::map /// as Value container. //# define JSON_USE_CPPTL_SMALLMAP 1 // If non-zero, the library uses exceptions to report bad input instead of C // assertion macros. The default is to use exceptions. #ifndef JSON_USE_EXCEPTION #define JSON_USE_EXCEPTION 1 #endif /// If defined, indicates that the source file is amalgated /// to prevent private header inclusion. /// Remarks: it is automatically defined in the generated amalgated header. // #define JSON_IS_AMALGAMATION #ifdef JSON_IN_CPPTL #include #ifndef JSON_USE_CPPTL #define JSON_USE_CPPTL 1 #endif #endif #ifdef JSON_IN_CPPTL #define JSON_API CPPTL_API #elif defined(JSON_DLL_BUILD) #if defined(_MSC_VER) || defined(__MINGW32__) #define JSON_API __declspec(dllexport) #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING #endif // if defined(_MSC_VER) #elif defined(JSON_DLL) #if defined(_MSC_VER) || defined(__MINGW32__) #define JSON_API __declspec(dllimport) #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING #endif // if defined(_MSC_VER) #endif // ifdef JSON_IN_CPPTL #if !defined(JSON_API) #define JSON_API #endif // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for // integer // Storages, and 64 bits integer support is disabled. // #define JSON_NO_INT64 1 #if defined(_MSC_VER) // MSVC # if _MSC_VER <= 1200 // MSVC 6 // Microsoft Visual Studio 6 only support conversion from __int64 to double // (no conversion from unsigned __int64). # define JSON_USE_INT64_DOUBLE_CONVERSION 1 // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255' // characters in the debug information) // All projects I've ever seen with VS6 were using this globally (not bothering // with pragma push/pop). # pragma warning(disable : 4786) # endif // MSVC 6 # if _MSC_VER >= 1500 // MSVC 2008 /// Indicates that the following function is deprecated. # define JSONCPP_DEPRECATED(message) __declspec(deprecated(message)) # endif #endif // defined(_MSC_VER) // In c++11 the override keyword allows you to explicity define that a function // is intended to override the base-class version. This makes the code more // managable and fixes a set of common hard-to-find bugs. #if __cplusplus >= 201103L # define JSONCPP_OVERRIDE override #else # define JSONCPP_OVERRIDE #endif #ifndef JSON_HAS_RVALUE_REFERENCES #if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010 #define JSON_HAS_RVALUE_REFERENCES 1 #endif // MSVC >= 2010 #ifdef __clang__ #if __has_feature(cxx_rvalue_references) #define JSON_HAS_RVALUE_REFERENCES 1 #endif // has_feature #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L) #define JSON_HAS_RVALUE_REFERENCES 1 #endif // GXX_EXPERIMENTAL #endif // __clang__ || __GNUC__ #endif // not defined JSON_HAS_RVALUE_REFERENCES #ifndef JSON_HAS_RVALUE_REFERENCES #define JSON_HAS_RVALUE_REFERENCES 0 #endif #ifdef __clang__ #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) # define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message))) # elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) # define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__)) # endif // GNUC version #endif // __clang__ || __GNUC__ #if !defined(JSONCPP_DEPRECATED) #define JSONCPP_DEPRECATED(message) #endif // if !defined(JSONCPP_DEPRECATED) #if __GNUC__ >= 6 # define JSON_USE_INT64_DOUBLE_CONVERSION 1 #endif #if !defined(JSON_IS_AMALGAMATION) # include "version.h" # if JSONCPP_USING_SECURE_MEMORY # include "allocator.h" //typedef Allocator # endif #endif // if !defined(JSON_IS_AMALGAMATION) namespace Json { typedef int Int; typedef unsigned int UInt; #if defined(JSON_NO_INT64) typedef int LargestInt; typedef unsigned int LargestUInt; #undef JSON_HAS_INT64 #else // if defined(JSON_NO_INT64) // For Microsoft Visual use specific types as long long is not supported #if defined(_MSC_VER) // Microsoft Visual Studio typedef __int64 Int64; typedef unsigned __int64 UInt64; #else // if defined(_MSC_VER) // Other platforms, use long long typedef long long int Int64; typedef unsigned long long int UInt64; #endif // if defined(_MSC_VER) typedef Int64 LargestInt; typedef UInt64 LargestUInt; #define JSON_HAS_INT64 #endif // if defined(JSON_NO_INT64) #if JSONCPP_USING_SECURE_MEMORY #define JSONCPP_STRING std::basic_string, Json::SecureAllocator > #define JSONCPP_OSTRINGSTREAM std::basic_ostringstream, Json::SecureAllocator > #define JSONCPP_OSTREAM std::basic_ostream> #define JSONCPP_ISTRINGSTREAM std::basic_istringstream, Json::SecureAllocator > #define JSONCPP_ISTREAM std::istream #else #define JSONCPP_STRING std::string #define JSONCPP_OSTRINGSTREAM std::ostringstream #define JSONCPP_OSTREAM std::ostream #define JSONCPP_ISTRINGSTREAM std::istringstream #define JSONCPP_ISTREAM std::istream #endif // if JSONCPP_USING_SECURE_MEMORY } // end namespace Json #endif // JSON_CONFIG_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/config.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/forwards.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef JSON_FORWARDS_H_INCLUDED #define JSON_FORWARDS_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "config.h" #endif // if !defined(JSON_IS_AMALGAMATION) namespace Json { // writer.h class FastWriter; class StyledWriter; // reader.h class Reader; // features.h class Features; // value.h typedef unsigned int ArrayIndex; class StaticString; class Path; class PathArgument; class Value; class ValueIteratorBase; class ValueIterator; class ValueConstIterator; } // namespace Json #endif // JSON_FORWARDS_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/forwards.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/features.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef CPPTL_JSON_FEATURES_H_INCLUDED #define CPPTL_JSON_FEATURES_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "forwards.h" #endif // if !defined(JSON_IS_AMALGAMATION) namespace Json { /** \brief Configuration passed to reader and writer. * This configuration object can be used to force the Reader or Writer * to behave in a standard conforming way. */ class JSON_API Features { public: /** \brief A configuration that allows all features and assumes all strings * are UTF-8. * - C & C++ comments are allowed * - Root object can be any JSON value * - Assumes Value strings are encoded in UTF-8 */ static Features all(); /** \brief A configuration that is strictly compatible with the JSON * specification. * - Comments are forbidden. * - Root object must be either an array or an object value. * - Assumes Value strings are encoded in UTF-8 */ static Features strictMode(); /** \brief Initialize the configuration like JsonConfig::allFeatures; */ Features(); /// \c true if comments are allowed. Default: \c true. bool allowComments_; /// \c true if root must be either an array or an object value. Default: \c /// false. bool strictRoot_; /// \c true if dropped null placeholders are allowed. Default: \c false. bool allowDroppedNullPlaceholders_; /// \c true if numeric object key are allowed. Default: \c false. bool allowNumericKeys_; }; } // namespace Json #endif // CPPTL_JSON_FEATURES_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/features.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/value.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef CPPTL_JSON_H_INCLUDED #define CPPTL_JSON_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "forwards.h" #endif // if !defined(JSON_IS_AMALGAMATION) #include #include #include #ifndef JSON_USE_CPPTL_SMALLMAP #include #else #include #endif #ifdef JSON_USE_CPPTL #include #endif //Conditional NORETURN attribute on the throw functions would: // a) suppress false positives from static code analysis // b) possibly improve optimization opportunities. #if !defined(JSONCPP_NORETURN) # if defined(_MSC_VER) # define JSONCPP_NORETURN __declspec(noreturn) # elif defined(__GNUC__) # define JSONCPP_NORETURN __attribute__ ((__noreturn__)) # else # define JSONCPP_NORETURN # endif #endif // Disable warning C4251: : needs to have dll-interface to // be used by... #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(push) #pragma warning(disable : 4251) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) /** \brief JSON (JavaScript Object Notation). */ namespace Json { /** Base class for all exceptions we throw. * * We use nothing but these internally. Of course, STL can throw others. */ class JSON_API Exception : public std::exception { public: Exception(JSONCPP_STRING const& msg); ~Exception() throw() JSONCPP_OVERRIDE; char const* what() const throw() JSONCPP_OVERRIDE; protected: JSONCPP_STRING msg_; }; /** Exceptions which the user cannot easily avoid. * * E.g. out-of-memory (when we use malloc), stack-overflow, malicious input * * \remark derived from Json::Exception */ class JSON_API RuntimeError : public Exception { public: RuntimeError(JSONCPP_STRING const& msg); }; /** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros. * * These are precondition-violations (user bugs) and internal errors (our bugs). * * \remark derived from Json::Exception */ class JSON_API LogicError : public Exception { public: LogicError(JSONCPP_STRING const& msg); }; /// used internally JSONCPP_NORETURN void throwRuntimeError(JSONCPP_STRING const& msg); /// used internally JSONCPP_NORETURN void throwLogicError(JSONCPP_STRING const& msg); /** \brief Type of the value held by a Value object. */ enum ValueType { nullValue = 0, ///< 'null' value intValue, ///< signed integer value uintValue, ///< unsigned integer value realValue, ///< double value stringValue, ///< UTF-8 string value booleanValue, ///< bool value arrayValue, ///< array value (ordered list) objectValue ///< object value (collection of name/value pairs). }; enum CommentPlacement { commentBefore = 0, ///< a comment placed on the line before a value commentAfterOnSameLine, ///< a comment just after a value on the same line commentAfter, ///< a comment on the line after a value (only make sense for /// root value) numberOfCommentPlacement }; //# ifdef JSON_USE_CPPTL // typedef CppTL::AnyEnumerator EnumMemberNames; // typedef CppTL::AnyEnumerator EnumValues; //# endif /** \brief Lightweight wrapper to tag static string. * * Value constructor and objectValue member assignement takes advantage of the * StaticString and avoid the cost of string duplication when storing the * string or the member name. * * Example of usage: * \code * Json::Value aValue( StaticString("some text") ); * Json::Value object; * static const StaticString code("code"); * object[code] = 1234; * \endcode */ class JSON_API StaticString { public: explicit StaticString(const char* czstring) : c_str_(czstring) {} operator const char*() const { return c_str_; } const char* c_str() const { return c_str_; } private: const char* c_str_; }; /** \brief Represents a JSON value. * * This class is a discriminated union wrapper that can represents a: * - signed integer [range: Value::minInt - Value::maxInt] * - unsigned integer (range: 0 - Value::maxUInt) * - double * - UTF-8 string * - boolean * - 'null' * - an ordered list of Value * - collection of name/value pairs (javascript object) * * The type of the held value is represented by a #ValueType and * can be obtained using type(). * * Values of an #objectValue or #arrayValue can be accessed using operator[]() * methods. * Non-const methods will automatically create the a #nullValue element * if it does not exist. * The sequence of an #arrayValue will be automatically resized and initialized * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue. * * The get() methods can be used to obtain default value in the case the * required element does not exist. * * It is possible to iterate over the list of a #objectValue values using * the getMemberNames() method. * * \note #Value string-length fit in size_t, but keys must be < 2^30. * (The reason is an implementation detail.) A #CharReader will raise an * exception if a bound is exceeded to avoid security holes in your app, * but the Value API does *not* check bounds. That is the responsibility * of the caller. */ class JSON_API Value { friend class ValueIteratorBase; public: typedef std::vector Members; typedef ValueIterator iterator; typedef ValueConstIterator const_iterator; typedef Json::UInt UInt; typedef Json::Int Int; #if defined(JSON_HAS_INT64) typedef Json::UInt64 UInt64; typedef Json::Int64 Int64; #endif // defined(JSON_HAS_INT64) typedef Json::LargestInt LargestInt; typedef Json::LargestUInt LargestUInt; typedef Json::ArrayIndex ArrayIndex; static const Value& null; ///< We regret this reference to a global instance; prefer the simpler Value(). static const Value& nullRef; ///< just a kludge for binary-compatibility; same as null /// Minimum signed integer value that can be stored in a Json::Value. static const LargestInt minLargestInt; /// Maximum signed integer value that can be stored in a Json::Value. static const LargestInt maxLargestInt; /// Maximum unsigned integer value that can be stored in a Json::Value. static const LargestUInt maxLargestUInt; /// Minimum signed int value that can be stored in a Json::Value. static const Int minInt; /// Maximum signed int value that can be stored in a Json::Value. static const Int maxInt; /// Maximum unsigned int value that can be stored in a Json::Value. static const UInt maxUInt; #if defined(JSON_HAS_INT64) /// Minimum signed 64 bits int value that can be stored in a Json::Value. static const Int64 minInt64; /// Maximum signed 64 bits int value that can be stored in a Json::Value. static const Int64 maxInt64; /// Maximum unsigned 64 bits int value that can be stored in a Json::Value. static const UInt64 maxUInt64; #endif // defined(JSON_HAS_INT64) private: #ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION class CZString { public: enum DuplicationPolicy { noDuplication = 0, duplicate, duplicateOnCopy }; CZString(ArrayIndex index); CZString(char const* str, unsigned length, DuplicationPolicy allocate); CZString(CZString const& other); #if JSON_HAS_RVALUE_REFERENCES CZString(CZString&& other); #endif ~CZString(); CZString& operator=(CZString other); bool operator<(CZString const& other) const; bool operator==(CZString const& other) const; ArrayIndex index() const; //const char* c_str() const; ///< \deprecated char const* data() const; unsigned length() const; bool isStaticString() const; private: void swap(CZString& other); struct StringStorage { unsigned policy_: 2; unsigned length_: 30; // 1GB max }; char const* cstr_; // actually, a prefixed string, unless policy is noDup union { ArrayIndex index_; StringStorage storage_; }; }; public: #ifndef JSON_USE_CPPTL_SMALLMAP typedef std::map ObjectValues; #else typedef CppTL::SmallMap ObjectValues; #endif // ifndef JSON_USE_CPPTL_SMALLMAP #endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION public: /** \brief Create a default Value of the given type. This is a very useful constructor. To create an empty array, pass arrayValue. To create an empty object, pass objectValue. Another Value can then be set to this one by assignment. This is useful since clear() and resize() will not alter types. Examples: \code Json::Value null_value; // null Json::Value arr_value(Json::arrayValue); // [] Json::Value obj_value(Json::objectValue); // {} \endcode */ Value(ValueType type = nullValue); Value(Int value); Value(UInt value); #if defined(JSON_HAS_INT64) Value(Int64 value); Value(UInt64 value); #endif // if defined(JSON_HAS_INT64) Value(double value); Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.) Value(const char* begin, const char* end); ///< Copy all, incl zeroes. /** \brief Constructs a value from a static string. * Like other value string constructor but do not duplicate the string for * internal storage. The given string must remain alive after the call to this * constructor. * \note This works only for null-terminated strings. (We cannot change the * size of this class, so we have nowhere to store the length, * which might be computed later for various operations.) * * Example of usage: * \code * static StaticString foo("some text"); * Json::Value aValue(foo); * \endcode */ Value(const StaticString& value); Value(const JSONCPP_STRING& value); ///< Copy data() til size(). Embedded zeroes too. #ifdef JSON_USE_CPPTL Value(const CppTL::ConstString& value); #endif Value(bool value); /// Deep copy. Value(const Value& other); #if JSON_HAS_RVALUE_REFERENCES /// Move constructor Value(Value&& other); #endif ~Value(); /// Deep copy, then swap(other). /// \note Over-write existing comments. To preserve comments, use #swapPayload(). Value& operator=(Value other); /// Swap everything. void swap(Value& other); /// Swap values but leave comments and source offsets in place. void swapPayload(Value& other); ValueType type() const; /// Compare payload only, not comments etc. bool operator<(const Value& other) const; bool operator<=(const Value& other) const; bool operator>=(const Value& other) const; bool operator>(const Value& other) const; bool operator==(const Value& other) const; bool operator!=(const Value& other) const; int compare(const Value& other) const; const char* asCString() const; ///< Embedded zeroes could cause you trouble! #if JSONCPP_USING_SECURE_MEMORY unsigned getCStringLength() const; //Allows you to understand the length of the CString #endif JSONCPP_STRING asString() const; ///< Embedded zeroes are possible. /** Get raw char* of string-value. * \return false if !string. (Seg-fault if str or end are NULL.) */ bool getString( char const** begin, char const** end) const; #ifdef JSON_USE_CPPTL CppTL::ConstString asConstString() const; #endif Int asInt() const; UInt asUInt() const; #if defined(JSON_HAS_INT64) Int64 asInt64() const; UInt64 asUInt64() const; #endif // if defined(JSON_HAS_INT64) LargestInt asLargestInt() const; LargestUInt asLargestUInt() const; float asFloat() const; double asDouble() const; bool asBool() const; bool isNull() const; bool isBool() const; bool isInt() const; bool isInt64() const; bool isUInt() const; bool isUInt64() const; bool isIntegral() const; bool isDouble() const; bool isNumeric() const; bool isString() const; bool isArray() const; bool isObject() const; bool isConvertibleTo(ValueType other) const; /// Number of values in array or object ArrayIndex size() const; /// \brief Return true if empty array, empty object, or null; /// otherwise, false. bool empty() const; /// Return isNull() bool operator!() const; /// Remove all object members and array elements. /// \pre type() is arrayValue, objectValue, or nullValue /// \post type() is unchanged void clear(); /// Resize the array to size elements. /// New elements are initialized to null. /// May only be called on nullValue or arrayValue. /// \pre type() is arrayValue or nullValue /// \post type() is arrayValue void resize(ArrayIndex size); /// Access an array element (zero based index ). /// If the array contains less than index element, then null value are /// inserted /// in the array so that its size is index+1. /// (You may need to say 'value[0u]' to get your compiler to distinguish /// this from the operator[] which takes a string.) Value& operator[](ArrayIndex index); /// Access an array element (zero based index ). /// If the array contains less than index element, then null value are /// inserted /// in the array so that its size is index+1. /// (You may need to say 'value[0u]' to get your compiler to distinguish /// this from the operator[] which takes a string.) Value& operator[](int index); /// Access an array element (zero based index ) /// (You may need to say 'value[0u]' to get your compiler to distinguish /// this from the operator[] which takes a string.) const Value& operator[](ArrayIndex index) const; /// Access an array element (zero based index ) /// (You may need to say 'value[0u]' to get your compiler to distinguish /// this from the operator[] which takes a string.) const Value& operator[](int index) const; /// If the array contains at least index+1 elements, returns the element /// value, /// otherwise returns defaultValue. Value get(ArrayIndex index, const Value& defaultValue) const; /// Return true if index < size(). bool isValidIndex(ArrayIndex index) const; /// \brief Append value to array at the end. /// /// Equivalent to jsonvalue[jsonvalue.size()] = value; Value& append(const Value& value); /// Access an object value by name, create a null member if it does not exist. /// \note Because of our implementation, keys are limited to 2^30 -1 chars. /// Exceeding that will cause an exception. Value& operator[](const char* key); /// Access an object value by name, returns null if there is no member with /// that name. const Value& operator[](const char* key) const; /// Access an object value by name, create a null member if it does not exist. /// \param key may contain embedded nulls. Value& operator[](const JSONCPP_STRING& key); /// Access an object value by name, returns null if there is no member with /// that name. /// \param key may contain embedded nulls. const Value& operator[](const JSONCPP_STRING& key) const; /** \brief Access an object value by name, create a null member if it does not exist. * If the object has no entry for that name, then the member name used to store * the new entry is not duplicated. * Example of use: * \code * Json::Value object; * static const StaticString code("code"); * object[code] = 1234; * \endcode */ Value& operator[](const StaticString& key); #ifdef JSON_USE_CPPTL /// Access an object value by name, create a null member if it does not exist. Value& operator[](const CppTL::ConstString& key); /// Access an object value by name, returns null if there is no member with /// that name. const Value& operator[](const CppTL::ConstString& key) const; #endif /// Return the member named key if it exist, defaultValue otherwise. /// \note deep copy Value get(const char* key, const Value& defaultValue) const; /// Return the member named key if it exist, defaultValue otherwise. /// \note deep copy /// \note key may contain embedded nulls. Value get(const char* begin, const char* end, const Value& defaultValue) const; /// Return the member named key if it exist, defaultValue otherwise. /// \note deep copy /// \param key may contain embedded nulls. Value get(const JSONCPP_STRING& key, const Value& defaultValue) const; #ifdef JSON_USE_CPPTL /// Return the member named key if it exist, defaultValue otherwise. /// \note deep copy Value get(const CppTL::ConstString& key, const Value& defaultValue) const; #endif /// Most general and efficient version of isMember()const, get()const, /// and operator[]const /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30 Value const* find(char const* begin, char const* end) const; /// Most general and efficient version of object-mutators. /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30 /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue. Value const* demand(char const* begin, char const* end); /// \brief Remove and return the named member. /// /// Do nothing if it did not exist. /// \return the removed Value, or null. /// \pre type() is objectValue or nullValue /// \post type() is unchanged /// \deprecated Value removeMember(const char* key); /// Same as removeMember(const char*) /// \param key may contain embedded nulls. /// \deprecated Value removeMember(const JSONCPP_STRING& key); /// Same as removeMember(const char* begin, const char* end, Value* removed), /// but 'key' is null-terminated. bool removeMember(const char* key, Value* removed); /** \brief Remove the named map member. Update 'removed' iff removed. \param key may contain embedded nulls. \return true iff removed (no exceptions) */ bool removeMember(JSONCPP_STRING const& key, Value* removed); /// Same as removeMember(JSONCPP_STRING const& key, Value* removed) bool removeMember(const char* begin, const char* end, Value* removed); /** \brief Remove the indexed array element. O(n) expensive operations. Update 'removed' iff removed. \return true iff removed (no exceptions) */ bool removeIndex(ArrayIndex i, Value* removed); /// Return true if the object has a member named key. /// \note 'key' must be null-terminated. bool isMember(const char* key) const; /// Return true if the object has a member named key. /// \param key may contain embedded nulls. bool isMember(const JSONCPP_STRING& key) const; /// Same as isMember(JSONCPP_STRING const& key)const bool isMember(const char* begin, const char* end) const; #ifdef JSON_USE_CPPTL /// Return true if the object has a member named key. bool isMember(const CppTL::ConstString& key) const; #endif /// \brief Return a list of the member names. /// /// If null, return an empty list. /// \pre type() is objectValue or nullValue /// \post if type() was nullValue, it remains nullValue Members getMemberNames() const; //# ifdef JSON_USE_CPPTL // EnumMemberNames enumMemberNames() const; // EnumValues enumValues() const; //# endif /// \deprecated Always pass len. JSONCPP_DEPRECATED("Use setComment(JSONCPP_STRING const&) instead.") void setComment(const char* comment, CommentPlacement placement); /// Comments must be //... or /* ... */ void setComment(const char* comment, size_t len, CommentPlacement placement); /// Comments must be //... or /* ... */ void setComment(const JSONCPP_STRING& comment, CommentPlacement placement); bool hasComment(CommentPlacement placement) const; /// Include delimiters and embedded newlines. JSONCPP_STRING getComment(CommentPlacement placement) const; JSONCPP_STRING toStyledString() const; const_iterator begin() const; const_iterator end() const; iterator begin(); iterator end(); // Accessors for the [start, limit) range of bytes within the JSON text from // which this value was parsed, if any. void setOffsetStart(ptrdiff_t start); void setOffsetLimit(ptrdiff_t limit); ptrdiff_t getOffsetStart() const; ptrdiff_t getOffsetLimit() const; private: void initBasic(ValueType type, bool allocated = false); Value& resolveReference(const char* key); Value& resolveReference(const char* key, const char* end); struct CommentInfo { CommentInfo(); ~CommentInfo(); void setComment(const char* text, size_t len); char* comment_; }; // struct MemberNamesTransform //{ // typedef const char *result_type; // const char *operator()( const CZString &name ) const // { // return name.c_str(); // } //}; union ValueHolder { LargestInt int_; LargestUInt uint_; double real_; bool bool_; char* string_; // actually ptr to unsigned, followed by str, unless !allocated_ ObjectValues* map_; } value_; ValueType type_ : 8; unsigned int allocated_ : 1; // Notes: if declared as bool, bitfield is useless. // If not allocated_, string_ must be null-terminated. CommentInfo* comments_; // [start, limit) byte offsets in the source JSON text from which this Value // was extracted. ptrdiff_t start_; ptrdiff_t limit_; }; /** \brief Experimental and untested: represents an element of the "path" to * access a node. */ class JSON_API PathArgument { public: friend class Path; PathArgument(); PathArgument(ArrayIndex index); PathArgument(const char* key); PathArgument(const JSONCPP_STRING& key); private: enum Kind { kindNone = 0, kindIndex, kindKey }; JSONCPP_STRING key_; ArrayIndex index_; Kind kind_; }; /** \brief Experimental and untested: represents a "path" to access a node. * * Syntax: * - "." => root node * - ".[n]" => elements at index 'n' of root node (an array value) * - ".name" => member named 'name' of root node (an object value) * - ".name1.name2.name3" * - ".[0][1][2].name1[3]" * - ".%" => member name is provided as parameter * - ".[%]" => index is provied as parameter */ class JSON_API Path { public: Path(const JSONCPP_STRING& path, const PathArgument& a1 = PathArgument(), const PathArgument& a2 = PathArgument(), const PathArgument& a3 = PathArgument(), const PathArgument& a4 = PathArgument(), const PathArgument& a5 = PathArgument()); const Value& resolve(const Value& root) const; Value resolve(const Value& root, const Value& defaultValue) const; /// Creates the "path" to access the specified node and returns a reference on /// the node. Value& make(Value& root) const; private: typedef std::vector InArgs; typedef std::vector Args; void makePath(const JSONCPP_STRING& path, const InArgs& in); void addPathInArg(const JSONCPP_STRING& path, const InArgs& in, InArgs::const_iterator& itInArg, PathArgument::Kind kind); void invalidPath(const JSONCPP_STRING& path, int location); Args args_; }; /** \brief base class for Value iterators. * */ class JSON_API ValueIteratorBase { public: typedef std::bidirectional_iterator_tag iterator_category; typedef unsigned int size_t; typedef int difference_type; typedef ValueIteratorBase SelfType; bool operator==(const SelfType& other) const { return isEqual(other); } bool operator!=(const SelfType& other) const { return !isEqual(other); } difference_type operator-(const SelfType& other) const { return other.computeDistance(*this); } /// Return either the index or the member name of the referenced value as a /// Value. Value key() const; /// Return the index of the referenced Value, or -1 if it is not an arrayValue. UInt index() const; /// Return the member name of the referenced Value, or "" if it is not an /// objectValue. /// \note Avoid `c_str()` on result, as embedded zeroes are possible. JSONCPP_STRING name() const; /// Return the member name of the referenced Value. "" if it is not an /// objectValue. /// \deprecated This cannot be used for UTF-8 strings, since there can be embedded nulls. JSONCPP_DEPRECATED("Use `key = name();` instead.") char const* memberName() const; /// Return the member name of the referenced Value, or NULL if it is not an /// objectValue. /// \note Better version than memberName(). Allows embedded nulls. char const* memberName(char const** end) const; protected: Value& deref() const; void increment(); void decrement(); difference_type computeDistance(const SelfType& other) const; bool isEqual(const SelfType& other) const; void copy(const SelfType& other); private: Value::ObjectValues::iterator current_; // Indicates that iterator is for a null value. bool isNull_; public: // For some reason, BORLAND needs these at the end, rather // than earlier. No idea why. ValueIteratorBase(); explicit ValueIteratorBase(const Value::ObjectValues::iterator& current); }; /** \brief const iterator for object and array value. * */ class JSON_API ValueConstIterator : public ValueIteratorBase { friend class Value; public: typedef const Value value_type; //typedef unsigned int size_t; //typedef int difference_type; typedef const Value& reference; typedef const Value* pointer; typedef ValueConstIterator SelfType; ValueConstIterator(); ValueConstIterator(ValueIterator const& other); private: /*! \internal Use by Value to create an iterator. */ explicit ValueConstIterator(const Value::ObjectValues::iterator& current); public: SelfType& operator=(const ValueIteratorBase& other); SelfType operator++(int) { SelfType temp(*this); ++*this; return temp; } SelfType operator--(int) { SelfType temp(*this); --*this; return temp; } SelfType& operator--() { decrement(); return *this; } SelfType& operator++() { increment(); return *this; } reference operator*() const { return deref(); } pointer operator->() const { return &deref(); } }; /** \brief Iterator for object and array value. */ class JSON_API ValueIterator : public ValueIteratorBase { friend class Value; public: typedef Value value_type; typedef unsigned int size_t; typedef int difference_type; typedef Value& reference; typedef Value* pointer; typedef ValueIterator SelfType; ValueIterator(); explicit ValueIterator(const ValueConstIterator& other); ValueIterator(const ValueIterator& other); private: /*! \internal Use by Value to create an iterator. */ explicit ValueIterator(const Value::ObjectValues::iterator& current); public: SelfType& operator=(const SelfType& other); SelfType operator++(int) { SelfType temp(*this); ++*this; return temp; } SelfType operator--(int) { SelfType temp(*this); --*this; return temp; } SelfType& operator--() { decrement(); return *this; } SelfType& operator++() { increment(); return *this; } reference operator*() const { return deref(); } pointer operator->() const { return &deref(); } }; } // namespace Json namespace std { /// Specialize std::swap() for Json::Value. template<> inline void swap(Json::Value& a, Json::Value& b) { a.swap(b); } } #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(pop) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #endif // CPPTL_JSON_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/value.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/reader.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef CPPTL_JSON_READER_H_INCLUDED #define CPPTL_JSON_READER_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "features.h" #include "value.h" #endif // if !defined(JSON_IS_AMALGAMATION) #include #include #include #include #include // Disable warning C4251: : needs to have dll-interface to // be used by... #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(push) #pragma warning(disable : 4251) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) namespace Json { /** \brief Unserialize a JSON document into a *Value. * * \deprecated Use CharReader and CharReaderBuilder. */ class JSON_API Reader { public: typedef char Char; typedef const Char* Location; /** \brief An error tagged with where in the JSON text it was encountered. * * The offsets give the [start, limit) range of bytes within the text. Note * that this is bytes, not codepoints. * */ struct StructuredError { ptrdiff_t offset_start; ptrdiff_t offset_limit; JSONCPP_STRING message; }; /** \brief Constructs a Reader allowing all features * for parsing. */ Reader(); /** \brief Constructs a Reader allowing the specified feature set * for parsing. */ Reader(const Features& features); /** \brief Read a Value from a JSON * document. * \param document UTF-8 encoded string containing the document to read. * \param root [out] Contains the root value of the document if it was * successfully parsed. * \param collectComments \c true to collect comment and allow writing them * back during * serialization, \c false to discard comments. * This parameter is ignored if * Features::allowComments_ * is \c false. * \return \c true if the document was successfully parsed, \c false if an * error occurred. */ bool parse(const std::string& document, Value& root, bool collectComments = true); /** \brief Read a Value from a JSON document. * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the document to read. * \param endDoc Pointer on the end of the UTF-8 encoded string of the document to read. * Must be >= beginDoc. * \param root [out] Contains the root value of the document if it was * successfully parsed. * \param collectComments \c true to collect comment and allow writing them back during * serialization, \c false to discard comments. * This parameter is ignored if Features::allowComments_ * is \c false. * \return \c true if the document was successfully parsed, \c false if an error occurred. */ bool parse(const char* beginDoc, const char* endDoc, Value& root, bool collectComments = true); /// \brief Parse from input stream. /// \see Json::operator>>(std::istream&, Json::Value&). bool parse(JSONCPP_ISTREAM& is, Value& root, bool collectComments = true); /** \brief Returns a user friendly string that list errors in the parsed * document. * \return Formatted error message with the list of errors with their location * in * the parsed document. An empty string is returned if no error * occurred * during parsing. * \deprecated Use getFormattedErrorMessages() instead (typo fix). */ JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.") JSONCPP_STRING getFormatedErrorMessages() const; /** \brief Returns a user friendly string that list errors in the parsed * document. * \return Formatted error message with the list of errors with their location * in * the parsed document. An empty string is returned if no error * occurred * during parsing. */ JSONCPP_STRING getFormattedErrorMessages() const; /** \brief Returns a vector of structured erros encounted while parsing. * \return A (possibly empty) vector of StructuredError objects. Currently * only one error can be returned, but the caller should tolerate * multiple * errors. This can occur if the parser recovers from a non-fatal * parse error and then encounters additional errors. */ std::vector getStructuredErrors() const; /** \brief Add a semantic error message. * \param value JSON Value location associated with the error * \param message The error message. * \return \c true if the error was successfully added, \c false if the * Value offset exceeds the document size. */ bool pushError(const Value& value, const JSONCPP_STRING& message); /** \brief Add a semantic error message with extra context. * \param value JSON Value location associated with the error * \param message The error message. * \param extra Additional JSON Value location to contextualize the error * \return \c true if the error was successfully added, \c false if either * Value offset exceeds the document size. */ bool pushError(const Value& value, const JSONCPP_STRING& message, const Value& extra); /** \brief Return whether there are any errors. * \return \c true if there are no errors to report \c false if * errors have occurred. */ bool good() const; private: enum TokenType { tokenEndOfStream = 0, tokenObjectBegin, tokenObjectEnd, tokenArrayBegin, tokenArrayEnd, tokenString, tokenNumber, tokenTrue, tokenFalse, tokenNull, tokenArraySeparator, tokenMemberSeparator, tokenComment, tokenError }; class Token { public: TokenType type_; Location start_; Location end_; }; class ErrorInfo { public: Token token_; JSONCPP_STRING message_; Location extra_; }; typedef std::deque Errors; bool readToken(Token& token); void skipSpaces(); bool match(Location pattern, int patternLength); bool readComment(); bool readCStyleComment(); bool readCppStyleComment(); bool readString(); void readNumber(); bool readValue(); bool readObject(Token& token); bool readArray(Token& token); bool decodeNumber(Token& token); bool decodeNumber(Token& token, Value& decoded); bool decodeString(Token& token); bool decodeString(Token& token, JSONCPP_STRING& decoded); bool decodeDouble(Token& token); bool decodeDouble(Token& token, Value& decoded); bool decodeUnicodeCodePoint(Token& token, Location& current, Location end, unsigned int& unicode); bool decodeUnicodeEscapeSequence(Token& token, Location& current, Location end, unsigned int& unicode); bool addError(const JSONCPP_STRING& message, Token& token, Location extra = 0); bool recoverFromError(TokenType skipUntilToken); bool addErrorAndRecover(const JSONCPP_STRING& message, Token& token, TokenType skipUntilToken); void skipUntilSpace(); Value& currentValue(); Char getNextChar(); void getLocationLineAndColumn(Location location, int& line, int& column) const; JSONCPP_STRING getLocationLineAndColumn(Location location) const; void addComment(Location begin, Location end, CommentPlacement placement); void skipCommentTokens(Token& token); typedef std::stack Nodes; Nodes nodes_; Errors errors_; JSONCPP_STRING document_; Location begin_; Location end_; Location current_; Location lastValueEnd_; Value* lastValue_; JSONCPP_STRING commentsBefore_; Features features_; bool collectComments_; }; // Reader /** Interface for reading JSON from a char array. */ class JSON_API CharReader { public: virtual ~CharReader() {} /** \brief Read a Value from a JSON document. * The document must be a UTF-8 encoded string containing the document to read. * * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the document to read. * \param endDoc Pointer on the end of the UTF-8 encoded string of the document to read. * Must be >= beginDoc. * \param root [out] Contains the root value of the document if it was * successfully parsed. * \param errs [out] Formatted error messages (if not NULL) * a user friendly string that lists errors in the parsed * document. * \return \c true if the document was successfully parsed, \c false if an error occurred. */ virtual bool parse( char const* beginDoc, char const* endDoc, Value* root, JSONCPP_STRING* errs) = 0; class JSON_API Factory { public: virtual ~Factory() {} /** \brief Allocate a CharReader via operator new(). * \throw std::exception if something goes wrong (e.g. invalid settings) */ virtual CharReader* newCharReader() const = 0; }; // Factory }; // CharReader /** \brief Build a CharReader implementation. Usage: \code using namespace Json; CharReaderBuilder builder; builder["collectComments"] = false; Value value; JSONCPP_STRING errs; bool ok = parseFromStream(builder, std::cin, &value, &errs); \endcode */ class JSON_API CharReaderBuilder : public CharReader::Factory { public: // Note: We use a Json::Value so that we can add data-members to this class // without a major version bump. /** Configuration of this builder. These are case-sensitive. Available settings (case-sensitive): - `"collectComments": false or true` - true to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if allowComments is false. - `"allowComments": false or true` - true if comments are allowed. - `"strictRoot": false or true` - true if root must be either an array or an object value - `"allowDroppedNullPlaceholders": false or true` - true if dropped null placeholders are allowed. (See StreamWriterBuilder.) - `"allowNumericKeys": false or true` - true if numeric object keys are allowed. - `"allowSingleQuotes": false or true` - true if '' are allowed for strings (both keys and values) - `"stackLimit": integer` - Exceeding stackLimit (recursive depth of `readValue()`) will cause an exception. - This is a security issue (seg-faults caused by deeply nested JSON), so the default is low. - `"failIfExtra": false or true` - If true, `parse()` returns false when extra non-whitespace trails the JSON value in the input string. - `"rejectDupKeys": false or true` - If true, `parse()` returns false when a key is duplicated within an object. - `"allowSpecialFloats": false or true` - If true, special float values (NaNs and infinities) are allowed and their values are lossfree restorable. You can examine 'settings_` yourself to see the defaults. You can also write and read them just like any JSON Value. \sa setDefaults() */ Json::Value settings_; CharReaderBuilder(); ~CharReaderBuilder() JSONCPP_OVERRIDE; CharReader* newCharReader() const JSONCPP_OVERRIDE; /** \return true if 'settings' are legal and consistent; * otherwise, indicate bad settings via 'invalid'. */ bool validate(Json::Value* invalid) const; /** A simple way to update a specific setting. */ Value& operator[](JSONCPP_STRING key); /** Called by ctor, but you can use this to reset settings_. * \pre 'settings' != NULL (but Json::null is fine) * \remark Defaults: * \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults */ static void setDefaults(Json::Value* settings); /** Same as old Features::strictMode(). * \pre 'settings' != NULL (but Json::null is fine) * \remark Defaults: * \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode */ static void strictMode(Json::Value* settings); }; /** Consume entire stream and use its begin/end. * Someday we might have a real StreamReader, but for now this * is convenient. */ bool JSON_API parseFromStream( CharReader::Factory const&, JSONCPP_ISTREAM&, Value* root, std::string* errs); /** \brief Read from 'sin' into 'root'. Always keep comments from the input JSON. This can be used to read a file into a particular sub-object. For example: \code Json::Value root; cin >> root["dir"]["file"]; cout << root; \endcode Result: \verbatim { "dir": { "file": { // The input stream JSON would be nested here. } } } \endverbatim \throw std::exception on parse error. \see Json::operator<<() */ JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&); } // namespace Json #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(pop) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #endif // CPPTL_JSON_READER_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/reader.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/writer.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef JSON_WRITER_H_INCLUDED #define JSON_WRITER_H_INCLUDED #if !defined(JSON_IS_AMALGAMATION) #include "value.h" #endif // if !defined(JSON_IS_AMALGAMATION) #include #include #include // Disable warning C4251: : needs to have dll-interface to // be used by... #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(push) #pragma warning(disable : 4251) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) namespace Json { class Value; /** Usage: \code using namespace Json; void writeToStdout(StreamWriter::Factory const& factory, Value const& value) { std::unique_ptr const writer( factory.newStreamWriter()); writer->write(value, &std::cout); std::cout << std::endl; // add lf and flush } \endcode */ class JSON_API StreamWriter { protected: JSONCPP_OSTREAM* sout_; // not owned; will not delete public: StreamWriter(); virtual ~StreamWriter(); /** Write Value into document as configured in sub-class. Do not take ownership of sout, but maintain a reference during function. \pre sout != NULL \return zero on success (For now, we always return zero, so check the stream instead.) \throw std::exception possibly, depending on configuration */ virtual int write(Value const& root, JSONCPP_OSTREAM* sout) = 0; /** \brief A simple abstract factory. */ class JSON_API Factory { public: virtual ~Factory(); /** \brief Allocate a CharReader via operator new(). * \throw std::exception if something goes wrong (e.g. invalid settings) */ virtual StreamWriter* newStreamWriter() const = 0; }; // Factory }; // StreamWriter /** \brief Write into stringstream, then return string, for convenience. * A StreamWriter will be created from the factory, used, and then deleted. */ JSONCPP_STRING JSON_API writeString(StreamWriter::Factory const& factory, Value const& root); /** \brief Build a StreamWriter implementation. Usage: \code using namespace Json; Value value = ...; StreamWriterBuilder builder; builder["commentStyle"] = "None"; builder["indentation"] = " "; // or whatever you like std::unique_ptr writer( builder.newStreamWriter()); writer->write(value, &std::cout); std::cout << std::endl; // add lf and flush \endcode */ class JSON_API StreamWriterBuilder : public StreamWriter::Factory { public: // Note: We use a Json::Value so that we can add data-members to this class // without a major version bump. /** Configuration of this builder. Available settings (case-sensitive): - "commentStyle": "None" or "All" - "indentation": "" - "enableYAMLCompatibility": false or true - slightly change the whitespace around colons - "dropNullPlaceholders": false or true - Drop the "null" string from the writer's output for nullValues. Strictly speaking, this is not valid JSON. But when the output is being fed to a browser's Javascript, it makes for smaller output and the browser can handle the output just fine. - "useSpecialFloats": false or true - If true, outputs non-finite floating point values in the following way: NaN values as "NaN", positive infinity as "Infinity", and negative infinity as "-Infinity". You can examine 'settings_` yourself to see the defaults. You can also write and read them just like any JSON Value. \sa setDefaults() */ Json::Value settings_; StreamWriterBuilder(); ~StreamWriterBuilder() JSONCPP_OVERRIDE; /** * \throw std::exception if something goes wrong (e.g. invalid settings) */ StreamWriter* newStreamWriter() const JSONCPP_OVERRIDE; /** \return true if 'settings' are legal and consistent; * otherwise, indicate bad settings via 'invalid'. */ bool validate(Json::Value* invalid) const; /** A simple way to update a specific setting. */ Value& operator[](JSONCPP_STRING key); /** Called by ctor, but you can use this to reset settings_. * \pre 'settings' != NULL (but Json::null is fine) * \remark Defaults: * \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults */ static void setDefaults(Json::Value* settings); }; /** \brief Abstract class for writers. * \deprecated Use StreamWriter. (And really, this is an implementation detail.) */ class JSON_API Writer { public: virtual ~Writer(); virtual JSONCPP_STRING write(const Value& root) = 0; }; /** \brief Outputs a Value in JSON format *without formatting (not human friendly). * * The JSON document is written in a single line. It is not intended for 'human' *consumption, * but may be usefull to support feature such as RPC where bandwith is limited. * \sa Reader, Value * \deprecated Use StreamWriterBuilder. */ class JSON_API FastWriter : public Writer { public: FastWriter(); ~FastWriter() JSONCPP_OVERRIDE {} void enableYAMLCompatibility(); /** \brief Drop the "null" string from the writer's output for nullValues. * Strictly speaking, this is not valid JSON. But when the output is being * fed to a browser's Javascript, it makes for smaller output and the * browser can handle the output just fine. */ void dropNullPlaceholders(); void omitEndingLineFeed(); public: // overridden from Writer JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE; private: void writeValue(const Value& value); JSONCPP_STRING document_; bool yamlCompatiblityEnabled_; bool dropNullPlaceholders_; bool omitEndingLineFeed_; }; /** \brief Writes a Value in JSON format in a *human friendly way. * * The rules for line break and indent are as follow: * - Object value: * - if empty then print {} without indent and line break * - if not empty the print '{', line break & indent, print one value per *line * and then unindent and line break and print '}'. * - Array value: * - if empty then print [] without indent and line break * - if the array contains no object value, empty array or some other value *types, * and all the values fit on one lines, then print the array on a single *line. * - otherwise, it the values do not fit on one line, or the array contains * object or non empty array, then print one value per line. * * If the Value have comments then they are outputed according to their *#CommentPlacement. * * \sa Reader, Value, Value::setComment() * \deprecated Use StreamWriterBuilder. */ class JSON_API StyledWriter : public Writer { public: StyledWriter(); ~StyledWriter() JSONCPP_OVERRIDE {} public: // overridden from Writer /** \brief Serialize a Value in JSON format. * \param root Value to serialize. * \return String containing the JSON document that represents the root value. */ JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE; private: void writeValue(const Value& value); void writeArrayValue(const Value& value); bool isMultineArray(const Value& value); void pushValue(const JSONCPP_STRING& value); void writeIndent(); void writeWithIndent(const JSONCPP_STRING& value); void indent(); void unindent(); void writeCommentBeforeValue(const Value& root); void writeCommentAfterValueOnSameLine(const Value& root); bool hasCommentForValue(const Value& value); static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text); typedef std::vector ChildValues; ChildValues childValues_; JSONCPP_STRING document_; JSONCPP_STRING indentString_; unsigned int rightMargin_; unsigned int indentSize_; bool addChildValues_; }; /** \brief Writes a Value in JSON format in a human friendly way, to a stream rather than to a string. * * The rules for line break and indent are as follow: * - Object value: * - if empty then print {} without indent and line break * - if not empty the print '{', line break & indent, print one value per line * and then unindent and line break and print '}'. * - Array value: * - if empty then print [] without indent and line break * - if the array contains no object value, empty array or some other value types, * and all the values fit on one lines, then print the array on a single line. * - otherwise, it the values do not fit on one line, or the array contains * object or non empty array, then print one value per line. * * If the Value have comments then they are outputed according to their #CommentPlacement. * * \param indentation Each level will be indented by this amount extra. * \sa Reader, Value, Value::setComment() * \deprecated Use StreamWriterBuilder. */ class JSON_API StyledStreamWriter { public: StyledStreamWriter(JSONCPP_STRING indentation = "\t"); ~StyledStreamWriter() {} public: /** \brief Serialize a Value in JSON format. * \param out Stream to write to. (Can be ostringstream, e.g.) * \param root Value to serialize. * \note There is no point in deriving from Writer, since write() should not * return a value. */ void write(JSONCPP_OSTREAM& out, const Value& root); private: void writeValue(const Value& value); void writeArrayValue(const Value& value); bool isMultineArray(const Value& value); void pushValue(const JSONCPP_STRING& value); void writeIndent(); void writeWithIndent(const JSONCPP_STRING& value); void indent(); void unindent(); void writeCommentBeforeValue(const Value& root); void writeCommentAfterValueOnSameLine(const Value& root); bool hasCommentForValue(const Value& value); static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text); typedef std::vector ChildValues; ChildValues childValues_; JSONCPP_OSTREAM* document_; JSONCPP_STRING indentString_; unsigned int rightMargin_; JSONCPP_STRING indentation_; bool addChildValues_ : 1; bool indented_ : 1; }; #if defined(JSON_HAS_INT64) JSONCPP_STRING JSON_API valueToString(Int value); JSONCPP_STRING JSON_API valueToString(UInt value); #endif // if defined(JSON_HAS_INT64) JSONCPP_STRING JSON_API valueToString(LargestInt value); JSONCPP_STRING JSON_API valueToString(LargestUInt value); JSONCPP_STRING JSON_API valueToString(double value); JSONCPP_STRING JSON_API valueToString(bool value); JSONCPP_STRING JSON_API valueToQuotedString(const char* value); /// \brief Output using the StyledStreamWriter. /// \see Json::operator>>() JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root); } // namespace Json #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #pragma warning(pop) #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) #endif // JSON_WRITER_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/writer.h // ////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////// // Beginning of content of file: include/json/assertions.h // ////////////////////////////////////////////////////////////////////// // Copyright 2007-2010 Baptiste Lepilleur // Distributed under MIT license, or public domain if desired and // recognized in your jurisdiction. // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE #ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED #define CPPTL_JSON_ASSERTIONS_H_INCLUDED #include #include #if !defined(JSON_IS_AMALGAMATION) #include "config.h" #endif // if !defined(JSON_IS_AMALGAMATION) /** It should not be possible for a maliciously designed file to * cause an abort() or seg-fault, so these macros are used only * for pre-condition violations and internal logic errors. */ #if JSON_USE_EXCEPTION // @todo <= add detail about condition in exception # define JSON_ASSERT(condition) \ {if (!(condition)) {Json::throwLogicError( "assert json failed" );}} # define JSON_FAIL_MESSAGE(message) \ { \ JSONCPP_OSTRINGSTREAM oss; oss << message; \ Json::throwLogicError(oss.str()); \ abort(); \ } #else // JSON_USE_EXCEPTION # define JSON_ASSERT(condition) assert(condition) // The call to assert() will show the failure message in debug builds. In // release builds we abort, for a core-dump or debugger. # define JSON_FAIL_MESSAGE(message) \ { \ JSONCPP_OSTRINGSTREAM oss; oss << message; \ assert(false && oss.str().c_str()); \ abort(); \ } #endif #define JSON_ASSERT_MESSAGE(condition, message) \ if (!(condition)) { \ JSON_FAIL_MESSAGE(message); \ } #endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED // ////////////////////////////////////////////////////////////////////// // End of content of file: include/json/assertions.h // ////////////////////////////////////////////////////////////////////// #endif //ifndef JSON_AMALGATED_H_INCLUDED freebayes-1.3.6/contrib/SeqLib/src/000077500000000000000000000000001417247743000171055ustar00rootroot00000000000000freebayes-1.3.6/contrib/SeqLib/src/BamHeader.cpp000066400000000000000000000131321417247743000214210ustar00rootroot00000000000000#include "SeqLib/BamHeader.h" #include "SeqLib/BamWalker.h" #include #include #include #include "htslib/khash.h" namespace SeqLib { BamHeader::BamHeader(const HeaderSequenceVector& hsv) { bam_hdr_t * hdr = bam_hdr_init(); hdr->n_targets = hsv.size(); hdr->target_len = (uint32_t*)malloc(hdr->n_targets * sizeof(uint32_t)); hdr->target_name = (char**)malloc(hdr->n_targets * sizeof(char*)); // fill the names and make the text std::stringstream text; text << "@HD\tVN:1.4" << std::endl; for (size_t i = 0; i < hsv.size(); ++i) { hdr->target_len[i] = hsv[i].Length; hdr->target_name[i] = strdup(hsv[i].Name.c_str()); text << "@SQ\tSN:" << hsv[i].Name << "\tLN:" << hsv[i].Length << std::endl; } hdr->text = strdup(text.str().c_str()); // give to object h = SeqPointer(hdr, bam_hdr_delete()); ConstructName2IDTable(); } int BamHeader::GetSequenceLength(int id) const { if (h && id < NumSequences()) return h->target_len[id]; return -1; } int BamHeader::GetSequenceLength(const std::string& id) const { int nid = Name2ID(id); if (nid == -1) return -1; if (h && nid < NumSequences()) return h->target_len[nid]; return -1; } BamHeader::BamHeader(const std::string& hdr) { h = SeqPointer(sam_hdr_read2(hdr), bam_hdr_delete()); ConstructName2IDTable(); } std::string BamHeader::AsString() const { std::stringstream ss; ss << h->text; return ss.str(); } BamHeader::BamHeader(const bam_hdr_t * hdr) { h = SeqPointer(bam_hdr_dup(hdr), bam_hdr_delete()); ConstructName2IDTable(); } void BamHeader::ConstructName2IDTable() { // create the lookup table if not already made if (!n2i) { n2i = SeqPointer >(new SeqHashMap()); for (int i = 0; i < h->n_targets; ++i) n2i->insert(std::pair(std::string(h->target_name[i]), i)); } } int BamHeader::Name2ID(const std::string& name) const { SeqHashMap::const_iterator ff = n2i->find(name); if (ff != n2i->end()) return ff->second; else return -1; } bam_hdr_t* BamHeader::sam_hdr_read2(const std::string& hdr) const { kstring_t str; bam_hdr_t *hhh; str.l = str.m = 0; str.s = 0; std::istringstream iss(hdr); std::string line; while (std::getline(iss, line, '\n')) { //while (hts_getline(fp, KS_SEP_LINE, &fp->line) >= 0) { if (line.length() == 0 || line.at(0) != '@') break; //if (line.length() > 3 && line.substr(0,3) == "@SQ") has_SQ = 1; //if (fp->line.l > 3 && strncmp(fp->line.s,"@SQ",3) == 0) has_SQ = 1; //kputsn(fp->line.s, fp->line.l, &str); kputsn(line.c_str(), line.length(), &str); kputc('\n', &str); } /* if (! has_SQ && fp->fn_aux) { char line[2048]; FILE *f = fopen(fp->fn_aux, "r"); if (f == NULL) return NULL; while (fgets(line, sizeof line, f)) { const char *name = strtok(line, "\t"); const char *length = strtok(NULL, "\t"); ksprintf(&str, "@SQ\tSN:%s\tLN:%s\n", name, length); } fclose(f); } */ if (str.l == 0) kputsn("", 0, &str); hhh = sam_hdr_parse(str.l, str.s); hhh->l_text = str.l; hhh->text = str.s; // hhh->text needs to be freed return hhh; } /** Return the reference sequences as vector of HeaderSequence objects */ HeaderSequenceVector BamHeader::GetHeaderSequenceVector() const { std::vector out; for (int i = 0; i < h->n_targets; ++i) out.push_back(HeaderSequence(std::string(h->target_name[i]), h->target_len[i])); return out; } int BamHeader::NumSequences() const { if (!h) return 0; return h->n_targets; } std::string BamHeader::IDtoName(int id) const { if (id < 0) throw std::invalid_argument("BamHeader::IDtoName - ID must be >= 0"); if (!h) throw std::out_of_range("BamHeader::IDtoName - Header is uninitialized"); if (id >= h->n_targets) throw std::out_of_range("BamHeader::IDtoName - Requested ID is higher than number of sequences"); return std::string(h->target_name[id]); } // copied from htslib - sam.c /* std::string BamHeader::sam_hdr_write2(htsFile *fp, const bam_hdr_t *h) { switch (fp->format.format) { case binary_format: fp->format.category = sequence_data; fp->format.format = bam; // fall-through case bam: if (bam_hdr_write(fp->fp.bgzf, h) < 0) return -1; break; case cram: { cram_fd *fd = fp->fp.cram; SAM_hdr *hdr = bam_header_to_cram((bam_hdr_t *)h); if (! hdr) return -1; if (cram_set_header(fd, hdr) < 0) return -1; if (fp->fn_aux) cram_load_reference(fd, fp->fn_aux); if (cram_write_SAM_hdr(fd, fd->header) < 0) return -1; } break; case text_format: fp->format.category = sequence_data; fp->format.format = sam; // fall-through case sam: { char *p; hputs(h->text, fp->fp.hfile); p = strstr(h->text, "@SQ\t"); // FIXME: we need a loop to make sure "@SQ\t" does not match something unwanted!!! if (p == 0) { int i; for (i = 0; i < h->n_targets; ++i) { fp->line.l = 0; kputsn("@SQ\tSN:", 7, &fp->line); kputs(h->target_name[i], &fp->line); kputsn("\tLN:", 4, &fp->line); kputw(h->target_len[i], &fp->line); kputc('\n', &fp->line); if ( hwrite(fp->fp.hfile, fp->line.s, fp->line.l) != fp->line.l ) return -1; } } if ( hflush(fp->fp.hfile) != 0 ) return -1; } break; default: abort(); } return 0; } */ } freebayes-1.3.6/contrib/SeqLib/src/BamReader.cpp000066400000000000000000000262731417247743000214450ustar00rootroot00000000000000#include "SeqLib/BamReader.h" //#define DEBUG_WALKER 1 namespace SeqLib { // set the bam region bool _Bam::SetRegion(const GenomicRegion& gp) { // mark it "open" again, may be new reads here mark_for_closure = false; //HTS set region if ( (fp->format.format == 4 || fp->format.format == 6) && !idx) // BAM (4) or CRAM (6) idx = SharedIndex(sam_index_load(fp.get(), m_in.c_str()), idx_delete()); if (!idx) { if (m_in != "-") std::cerr << "Failed to load index for " << m_in << ". Rebuild samtools index" << std::endl; else std::cerr << "Random access with SetRegion not available for STDIN reading (no index file)" << std::endl; return false; } if (gp.chr >= m_hdr.NumSequences()) { std::cerr << "Failed to set region on " << gp << ". Chr ID is bigger than n_targets=" << m_hdr.NumSequences() << std::endl; return false; } // should work for BAM or CRAM hts_itr = SeqPointer(sam_itr_queryi(idx.get(), gp.chr, gp.pos1, gp.pos2), hts_itr_delete()); if (!hts_itr) { std::cerr << "Error: Failed to set region: " << gp << std::endl; return false; } return true; } void BamReader::Reset() { for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) b->second.reset(); m_region = GRC(); } bool BamReader::Reset(const std::string& f) { // cant reset what we don't have if (!m_bams.count(f)) return false; m_bams[f].reset(); return true; } bool BamReader::Close() { bool success = true; for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) success = success && b->second.close(); return success; } bool BamReader::Close(const std::string& f) { // cant close what we don't have if (!m_bams.count(f)) return false; return m_bams[f].close(); } /* SharedHTSFile BamReader::GetHTSFile () const { if (!m_bams.size()) throw std::runtime_error("No BAMs have been opened yet"); return m_bams.begin()->second.fp; } SharedHTSFile BamReader::GetHTSFile(const std::string& f) const { _BamMap::const_iterator ff = m_bams.find(f); if (ff == m_bams.end()) throw std::runtime_error("File " + f + " has not been opened yet"); return ff->second.fp; } bool BamReader::SetPreloadedIndex(SharedIndex& i) { if (!m_bams.size()) return false; m_bams.begin()->second.set_index(i); return true; } bool BamReader::SetPreloadedIndex(const std::string& f, SharedIndex& i) { if (!m_bams.count(f)) return false; m_bams[f].set_index(i); return true; } */ bool BamReader::SetRegion(const GenomicRegion& g) { m_region.clear(); m_region.add(g); bool success = true; if (m_region.size()) { for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) { b->second.m_region = &m_region; b->second.m_region_idx = 0; // set to the begining success = success && b->second.SetRegion(m_region[0]); } return success; } return false; } bool BamReader::SetMultipleRegions(const GRC& grc) { if (grc.size() == 0) { std::cerr << "Warning: Trying to set an empty bam region" << std::endl; return false; } m_region = grc; // go through and start all the BAMs at the first region bool success = true; if (m_region.size()) { for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) { b->second.m_region = &m_region; b->second.m_region_idx = 0; // set to the begining success = success && b->second.SetRegion(m_region[0]); } return success; } return false; } bool BamReader::Open(const std::string& bam) { // dont open same bam twice if (m_bams.count(bam)) return false; _Bam new_bam(bam); if (!m_cram_reference.empty()) new_bam.m_cram_reference = m_cram_reference; new_bam.m_region = &m_region; bool success = new_bam.open_BAM_for_reading(pool); m_bams.insert(std::pair(bam, new_bam)); return success; } bool BamReader::Open(const std::vector& bams) { bool pass = true; for (std::vector::const_iterator i = bams.begin(); i != bams.end(); ++i) pass = pass && Open(*i); return pass; } BamReader::BamReader() {} std::string BamReader::HeaderConcat() const { std::stringstream ss; for (_BamMap::const_iterator i = m_bams.begin(); i != m_bams.end(); ++i) ss << i->second.m_hdr.AsString(); return ss.str(); } bool BamReader::SetThreadPool(ThreadPool p) { if (!p.IsOpen()) return false; pool = p; for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) b->second.set_pool(p); return true; } BamHeader BamReader::Header() const { if (m_bams.size()) return m_bams.begin()->second.m_hdr; return BamHeader(); } bool _Bam::open_BAM_for_reading(SeqLib::ThreadPool t) { // HTS open the reader fp = SharedHTSFile(hts_open(m_in.c_str(), "r"), htsFile_delete()); // connect the thread pool (may already be done, but its ok set_pool(t); // open cram reference if (!m_cram_reference.empty()) { int ret = hts_set_fai_filename(fp.get(), m_cram_reference.c_str()); if (ret < 0) throw std::invalid_argument("Could not read reference genome " + m_cram_reference + " for CRAM opt"); } // check if opening failed if (!fp) return false; // read the header and create a BamHeader bam_hdr_t * hdr = sam_hdr_read(fp.get()); m_hdr = BamHeader(hdr); // calls BamHeader(bam_hdr_t), makes a copy // deallocate the memory we just made if (hdr) bam_hdr_destroy(hdr); // if BAM header opening failed, return false if (!m_hdr.get()) return false; // everything worked return true; } void BamReader::SetCramReference(const std::string& ref) { m_cram_reference = ref; for (_BamMap::iterator b = m_bams.begin(); b != m_bams.end(); ++b) b->second.m_cram_reference = ref; } bool BamReader::GetNextRecord(BamRecord& r) { // shortcut if we have only a single bam if (m_bams.size() == 1) { if (m_bams.begin()->second.fp.get() == NULL || m_bams.begin()->second.mark_for_closure) // cant read if not opened return false; // try and get the next read int32_t status = m_bams.begin()->second.load_read(r); if (status >= 0) return true; if (status == -1) { // didn't find anything, clear it m_bams.begin()->second.mark_for_closure = true; return false; } // run time error std::stringstream ss; ss << "sam_read1 return status: " << status << " file: " << m_bams.begin()->first; throw std::runtime_error(ss.str()); return false; } // loop the files and load the next read // for the one that was emptied last for (_BamMap::iterator bam = m_bams.begin(); bam != m_bams.end(); ++bam) { _Bam *tb = &(bam->second); // if marked, then don't even try on this BAM if (tb->mark_for_closure) continue; // skip un-opened BAMs if (tb->fp.get() == NULL) continue; // if next read is not marked as empty, skip to next if (!tb->empty) continue; // load the next read int32_t status = tb->load_read(r); if (status == -1) { // can't load, so mark for closing tb->empty = true; tb->mark_for_closure = true; // no more reads in this BAM continue; } else if (status < 0) { // error sent back from sam_read1 // run time error std::stringstream ss; ss << "sam_read1 return status: " << status << " file: " << bam->first; throw std::runtime_error(ss.str()); } } // for multiple bams, choose the one to return // sort based on chr and left-most alignment pos. Same as samtools int min_chr = INT_MAX; int min_pos = INT_MAX; _BamMap::iterator hit; bool found = false; // did we find a valid read for (_BamMap::iterator bam = m_bams.begin(); bam != m_bams.end(); ++bam) { // dont check if already marked for removal or doesnt need new read if (bam->second.empty || bam->second.mark_for_closure) continue; found = true; if (bam->second.next_read.ChrID() < min_chr || // check if read in this BAM is lowest (bam->second.next_read.Position() < min_pos && bam->second.next_read.ChrID() == min_chr)) { min_pos = bam->second.next_read.Position(); min_chr = bam->second.next_read.ChrID(); hit = bam; // read is lowest, so mark this BAM as having the hit } } // mark the one we just found as empty if (found) { r = hit->second.next_read; // read is lowest, so assign hit->second.empty = true; // mark as empty, so we fill this slot again } return found; } std::string BamReader::PrintRegions() const { std::stringstream ss; //for (GRC::const_iterator r = m_region.begin(); r != m_region.end(); ++r) // ss << *r << std::endl; return(ss.str()); } int32_t _Bam::load_read(BamRecord& r) { // allocated the memory bam1_t* b = bam_init1(); int32_t valid = -1; // start with EOF return code if (hts_itr.get() == NULL) { valid = sam_read1(fp.get(), m_hdr.get_(), b); if (valid < 0) { #ifdef DEBUG_WALKER std::cerr << "ended reading on null hts_itr" << std::endl; #endif //goto endloop; bam_destroy1(b); return valid; } } else { //changed to sam from hts_itr_next // move to next region of bam valid = sam_itr_next(fp.get(), hts_itr.get(), b); } if (valid < 0) { // read still not found do { #ifdef DEBUG_WALKER std::cerr << "Failed read, trying next region. Moving counter to " << m_region_idx << " of " << m_region.size() << " FP: " << fp_htsfile << " hts_itr " << std::endl; #endif // try next region, return if no others to try ++m_region_idx; // increment to next region if (m_region_idx >= m_region->size()) { bam_destroy1(b); return valid; } //goto endloop; // next region exists, try it SetRegion(m_region->at(m_region_idx)); valid = sam_itr_next(fp.get(), hts_itr.get(), b); } while (valid <= 0); // keep trying regions until works } // if we got here, then we found a read in this BAM empty = false; next_read.assign(b); // assign the shared_ptr for the bam1_t r = next_read; return valid; } std::ostream& operator<<(std::ostream& out, const BamReader& b) { for(_BamMap::const_iterator bam = b.m_bams.begin(); bam != b.m_bams.end(); ++bam) out << ":" << bam->second.GetFileName() << std::endl; if (b.m_region.size() && b.m_region.size() < 20) { out << " ------- BamReader Regions ----------" << std::endl;; //for (GRC::const_iterator r = b.m_region.begin(); r != b.m_region.end(); ++r) // out << *i << std::endl; } else if (b.m_region.size() >= 20) { int wid = 0; //for (GRC::const_iterator r = b.m_region.begin(); r != b.m_region.end(); ++r) // wid += r->Width(); out << " ------- BamReader Regions ----------" << std::endl;; out << " -- " << b.m_region.size() << " regions covering " << AddCommas(wid) << " bp of sequence" << std::endl; } else out << " - BamReader - Walking whole genome -" << std::endl; out << " ------------------------------------"; return out; } } freebayes-1.3.6/contrib/SeqLib/src/BamRecord.cpp000066400000000000000000000521271417247743000214560ustar00rootroot00000000000000#include "SeqLib/BamRecord.h" #include #include #include #include #include "SeqLib/ssw_cpp.h" #define TAG_DELIMITER "^" #define CTAG_DELIMITER '^' namespace SeqLib { const int CigarCharToInt[128] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //0-9 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //10-19 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //20 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //30 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //40 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1, //50 -1,BAM_CEQUAL,-1,-1,-1,-1,BAM_CBACK,-1,BAM_CDEL,-1, //60-69 -1,-1,BAM_CHARD_CLIP,BAM_CINS,-1,-1,-1,BAM_CMATCH,BAM_CREF_SKIP,-1, BAM_CPAD,-1,-1,BAM_CSOFT_CLIP,-1,-1,-1,-1,BAM_CDIFF,-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}; struct free_delete { void operator()(void* x) { bam_destroy1((bam1_t*)x); } }; void BamRecord::init() { bam1_t* f = bam_init1(); b = SeqPointer(f, free_delete()); } void BamRecord::assign(bam1_t* a) { b = SeqPointer(a, free_delete()); } int32_t BamRecord::PositionWithSClips() const { if(!b) return -1; // to be consistent with BamRecord::Position() uint32_t* cig = bam_get_cigar(b); return ((*cig) & 0xF) == BAM_CSOFT_CLIP ? b->core.pos - ((*cig) >> 4) : b->core.pos; } int32_t BamRecord::PositionEnd() const { return b ? (b->core.l_qseq > 0 ? bam_endpos(b.get()) : b->core.pos + GetCigar().NumQueryConsumed()) : -1; } int32_t BamRecord::PositionEndWithSClips() const { if(!b) return -1; // to be consistent with BamRecord::PositionEnd() uint32_t* cig_last = bam_get_cigar(b) + b->core.n_cigar - 1; if(b->core.l_qseq > 0) { return ((*cig_last) & 0xF) == BAM_CSOFT_CLIP ? bam_endpos(b.get()) + ((*cig_last) >> 4) : bam_endpos(b.get()); } else { return b->core.pos + GetCigar().NumQueryConsumed(); } } int32_t BamRecord::PositionEndMate() const { return b ? (b->core.mpos + (b->core.l_qseq > 0 ? b->core.l_qseq : GetCigar().NumQueryConsumed())) : -1; } GenomicRegion BamRecord::AsGenomicRegion() const { char s = '*'; if (MappedFlag()) s = ReverseFlag() ? '-' : '+'; return GenomicRegion(b->core.tid, b->core.pos, PositionEnd(), s); } GenomicRegion BamRecord::AsGenomicRegionMate() const { char s = '*'; if (MateMappedFlag()) s = MateReverseFlag() ? '-' : '+'; return GenomicRegion(b->core.mtid, b->core.mpos, PositionEndMate(), s); } std::string BamRecord::Sequence() const { uint8_t * p = bam_get_seq(b); std::string out(b->core.l_qseq, 'N'); for (int32_t i = 0; i < b->core.l_qseq; ++i) out[i] = BASES[bam_seqi(p,i)]; return out; } void BamRecord::SetCigar(const Cigar& c) { // case where they are equal, just swap them out if (c.size() == b->core.n_cigar) { b->core.n_cigar = c.size(); uint32_t * cigr = bam_get_cigar(b); for (size_t i = 0; i < b->core.n_cigar; ++i) cigr[i] = c[i].raw(); return; } // make the new cigar structure uint32_t* new_cig = (uint32_t*)malloc(4 * c.size()); for (size_t i = 0; i < c.size(); ++i) new_cig[i] = c[i].raw(); int new_size = b->l_data - (b->core.n_cigar<<2) + (c.size()<<2); int old_seqaux_spot = (b->core.n_cigar<<2) + b->core.l_qname; int old_seqaux_len = bam_get_l_aux(b) + ((b->core.l_qseq + 1)>>1) + b->core.l_qseq; // set the new cigar size b->core.n_cigar = c.size(); // copy out all the old data uint8_t* oldd = (uint8_t*)malloc(b->l_data); memcpy(oldd, b->data, b->l_data); // clear out the old data and alloc the new amount free(b->data); b->data = (uint8_t*)calloc(new_size, sizeof(uint8_t)); // add back the qname memcpy(b->data, oldd, b->core.l_qname); // add in the new cigar memcpy(b->data + b->core.l_qname, new_cig, c.size()<<2); // add back the rest of the data memcpy(b->data + b->core.l_qname + (b->core.n_cigar<<2), oldd + old_seqaux_spot, old_seqaux_len); // update the sizes // >>1 shift is because only 4 bits needed per ATCGN base b->l_data = new_size; b->core.n_cigar = c.size(); free(oldd); free(new_cig); } BamRecord::BamRecord(const std::string& name, const std::string& seq, const std::string& ref, const GenomicRegion * gr) { StripedSmithWaterman::Aligner aligner; // Declares a default filter StripedSmithWaterman::Filter filter; // Declares an alignment that stores the result StripedSmithWaterman::Alignment alignment; // Aligns the seq to the ref aligner.Align(seq.c_str(), ref.c_str(), ref.size(), filter, &alignment); init(); b->core.tid = gr->chr; b->core.pos = gr->pos1 + alignment.ref_begin + 1; // add to make it 1-indexed, not 0-indexed b->core.qual = 60; //alignment.sw_score; b->core.flag = 0; b->core.n_cigar = alignment.cigar.size(); // set dumy mate b->core.mtid = -1; b->core.mpos = -1; b->core.isize = 0; // allocate all the data b->core.l_qname = name.length() + 1; b->core.l_qseq = seq.length(); //(seq.length()>>1) + seq.length() % 2; // 4-bit encoding b->l_data = b->core.l_qname + (b->core.n_cigar<<2) + ((b->core.l_qseq+1)>>1) + (b->core.l_qseq); b.get()->data = (uint8_t*)malloc(b.get()->l_data); // allocate the qname memcpy(b->data, name.c_str(), name.length() + 1); // allocate the cigar. 32 bits per elem (4 type, 28 length) uint32_t * cigr = bam_get_cigar(b); for (size_t i = 0; i < alignment.cigar.size(); ++i) { cigr[i] = alignment.cigar[i]; //Length << BAM_CIGAR_SHIFT | BAM_CMATCH; } // allocate the sequence uint8_t* m_bases = b->data + b->core.l_qname + (b->core.n_cigar<<2); // TODO move this out of bigger loop int slen = seq.length(); for (int i = 0; i < slen; ++i) { // bad idea but works for now uint8_t base = 15; if (seq.at(i) == 'A') base = 1; else if (seq.at(i) == 'C') base = 2; else if (seq.at(i) == 'G') base = 4; else if (seq.at(i) == 'T') base = 8; m_bases[i >> 1] &= ~(0xF << ((~i & 1) << 2)); ///< zero out previous 4-bit base encoding m_bases[i >> 1] |= base << ((~i & 1) << 2); ///< insert new 4-bit base encoding } // add in the actual alignment score AddIntTag("AS", alignment.sw_score); } void BamRecord::SmartAddTag(const std::string& tag, const std::string& val) { // get the old tag assert(tag.length()); assert(val.length()); std::string tmp; GetZTag(tag, tmp); if (!tmp.length()) { AddZTag(tag, val); return; } // check that we don't have the tag delimiter in the stirng if (val.find(TAG_DELIMITER) != std::string::npos) std::cerr << "BamRecord::SmartAddTag -- Tag delimiter " << TAG_DELIMITER << " is in the value to be added. Compile with diff tag delimiter or change val" << std::endl; // append the tag tmp += TAG_DELIMITER + val; // remove the old tag RemoveTag(tag.c_str()); // add the new one assert(tmp.length()); AddZTag(tag, tmp); } void BamRecord::ClearSeqQualAndTags() { int new_size = b->core.l_qname + ((b)->core.n_cigar<<2);// + 1; ///* 0xff seq */ + 1 /* 0xff qual */; b->data = (uint8_t*)realloc(b->data, new_size); b->l_data = new_size; b->core.l_qseq = 0; } void BamRecord::SetSequence(const std::string& seq) { int new_size = b->l_data - ((b->core.l_qseq+1)>>1) - b->core.l_qseq + ((seq.length()+1)>>1) + seq.length(); int old_aux_spot = (b->core.n_cigar<<2) + b->core.l_qname + ((b->core.l_qseq + 1)>>1) + b->core.l_qseq; int old_aux_len = bam_get_l_aux(b); //(b->core.n_cigar<<2) + b->core.l_qname + ((b->core.l_qseq + 1)>>1) + b->core.l_qseq; // copy out all the old data uint8_t* oldd = (uint8_t*)malloc(b->l_data); memcpy(oldd, b->data, b->l_data); // clear out the old data and alloc the new amount free(b->data); b->data = (uint8_t*)calloc(new_size, sizeof(uint8_t)); // add back the qname and cigar memcpy(b->data, oldd, b->core.l_qname + (b->core.n_cigar<<2)); // update the sizes // >>1 shift is because only 4 bits needed per ATCGN base b->l_data = new_size; //b->l_data - ((b->core.l_qseq + 1)>>1) - b->core.l_qseq + ((seq.length()+1)>>1) + seq.length(); b->core.l_qseq = seq.length(); // allocate the sequence uint8_t* m_bases = b->data + b->core.l_qname + (b->core.n_cigar<<2); int slen = seq.length(); for (int i = 0; i < slen; ++i) { // bad idea but works for now uint8_t base = 15; if (seq.at(i) == 'A') base = 1; else if (seq.at(i) == 'C') base = 2; else if (seq.at(i) == 'G') base = 4; else if (seq.at(i) == 'T') base = 8; m_bases[i >> 1] &= ~(0xF << ((~i & 1) << 2)); ///< zero out previous 4-bit base encoding m_bases[i >> 1] |= base << ((~i & 1) << 2); ///< insert new 4-bit base encoding } // add in a NULL qual uint8_t* s = bam_get_qual(b); s[0] = 0xff; // add the aux data uint8_t* t = bam_get_aux(b); memcpy(t, oldd + old_aux_spot, old_aux_len); // reset the max size b->m_data = b->l_data; free(oldd); //just added } void BamRecord::SetQname(const std::string& n) { // copy out the non-qname data size_t nonq_len = b->l_data - b->core.l_qname; uint8_t* nonq = (uint8_t*)malloc(nonq_len); memcpy(nonq, b->data + b->core.l_qname, nonq_len); // clear the old data and alloc the new amount free(b->data); b->data = (uint8_t*)calloc(nonq_len + n.length() + 1, 1); // add in the new qname memcpy(b->data, (uint8_t*)n.c_str(), n.length() + 1); // +1 for \0 // update the sizes b->l_data = b->l_data - b->core.l_qname + n.length() + 1; b->core.l_qname = n.length() + 1; // copy over the old data memcpy(b->data + b->core.l_qname, nonq, nonq_len); free(nonq); // reset the max size b->m_data = b->l_data; } void BamRecord::SetQualities(const std::string& n, int offset) { if (!n.empty() && n.length() != b->core.l_qseq) throw std::invalid_argument("New quality score should be same as seq length"); // length of qual is always same as seq. If empty qual, just set first bit of qual to 0 if (n.empty()) { uint8_t* r = bam_get_qual(b); r[0] = 0; return; } char * q = strdup(n.data()); for (size_t i = 0; i < n.length(); ++i) q[i] -= offset; memcpy(bam_get_qual(b), q, n.length()); // dont copy /0 terminator free(q); } double BamRecord::MeanPhred() const { if (b->core.l_qseq <= 0) return -1; double s = 0; uint8_t* p = bam_get_qual(b); for (int32_t i = 0; i < b->core.l_qseq; ++i) s += p[i]; return s / b->core.l_qseq; } std::string BamRecord::QualitySequence() const { std::string seq; GetZTag("GV", seq); if (!seq.length()) seq = Sequence(); return seq; } std::ostream& operator<<(std::ostream& out, const BamRecord &r) { if (!r.b) { out << "empty read"; return out; } out << bam_get_qname(r.b) << "\t" << r.b->core.flag << "\t" << (r.b->core.tid+1) << "\t" << r.b->core.pos << "\t" << r.b->core.qual << "\t" << r.CigarString() << "\t" << (r.b->core.mtid+1) << "\t" << r.b->core.mpos << "\t" << r.FullInsertSize() //r.b->core.isize << "\t" << r.Sequence() << "\t*" << std::endl; return out; } int32_t BamRecord::CountBWASecondaryAlignments() const { int xp_count = 0; // xa tag std::string xar_s; GetZTag("XA", xar_s); if (xar_s.length()) { xp_count += std::count(xar_s.begin(), xar_s.end(), ';'); } return xp_count; } int32_t BamRecord::CountBWAChimericAlignments() const { int xp_count = 0; // sa tag (post bwa mem v0.7.5) std::string xar_s; GetZTag("SA", xar_s); if (xar_s.length()) xp_count += std::count(xar_s.begin(), xar_s.end(), ';'); // xp tag (pre bwa mem v0.7.5) std::string xpr_s; GetZTag("XP", xpr_s); if (xpr_s.length()) xp_count += std::count(xpr_s.begin(), xpr_s.end(), ';'); return xp_count; } int32_t BamRecord::CountNBases() const { uint8_t* p = bam_get_seq(b); int32_t n = 0; for (int ww = 0; ww < b->core.l_qseq; ww++) if (bam_seqi(p,ww) == 15) ++n; return n; } void BamRecord::QualityTrimmedSequence(int32_t qualTrim, int32_t& startpoint, int32_t& endpoint) const { endpoint = -1; //seq.length(); startpoint = 0; int i = 0; uint8_t * qual = bam_get_qual(b.get()); // if there is no quality score, return whole thing if (qual[0] == 0xff) { startpoint = 0; return; //return Sequence(); } // get the start point (loop forward) while(i < b->core.l_qseq) { int ps = qual[i]; if (ps >= qualTrim) { startpoint = i; break; } ++i; } // get the end point (loop backwards) i = b->core.l_qseq - 1; //seq.length() - 1; while(i >= 0) { int ps = qual[i]; if (ps >= qualTrim) { //ps >= qualTrim) { endpoint = i + 1; // endpoint is one past edge break; } --i; } } void BamRecord::AddZTag(std::string tag, std::string val) { if (tag.empty() || val.empty()) return; bam_aux_append(b.get(), tag.data(), 'Z', val.length()+1, (uint8_t*)val.c_str()); } bool BamRecord::GetTag(const std::string& tag, std::string& s) const { if (GetZTag(tag, s)) return true; int32_t t; if (GetIntTag(tag, t)) { std::stringstream ss; ss << t; s = ss.str(); return true; } float f; if (GetFloatTag(tag, f)) { std::stringstream ss; ss << f; s = ss.str(); return true; } return false; } bool BamRecord::GetZTag(const std::string& tag, std::string& s) const { uint8_t* p = bam_aux_get(b.get(),tag.c_str()); if (!p) return false; int type = *p; if (type != 'Z') return false; char* pp = bam_aux2Z(p); if (!pp) return false; s = std::string(pp); return true; } // get a string tag that might be separted by "x" std::vector BamRecord::GetSmartStringTag(const std::string& tag) const { std::vector out; std::string tmp; GetZTag(tag, tmp); if (tmp.empty()) return std::vector(); if (tmp.find(TAG_DELIMITER) != std::string::npos) { std::istringstream iss(tmp); std::string line; while (std::getline(iss, line, CTAG_DELIMITER)) { out.push_back(line); } } else { out.push_back(tmp); } assert(out.size()); return out; } std::vector BamRecord::GetSmartIntTag(const std::string& tag) const { std::vector out; std::string tmp; GetZTag(tag, tmp); if (tmp.empty()) return std::vector(); if (tmp.find(TAG_DELIMITER) != std::string::npos) { std::istringstream iss(tmp); std::string line; while (std::getline(iss, line, CTAG_DELIMITER)) out.push_back(atoi(line.c_str())); } else { out.push_back(atoi(tmp.c_str())); } assert(out.size()); return out; } std::vector BamRecord::GetSmartDoubleTag(const std::string& tag) const { std::vector out; std::string tmp; GetZTag(tag, tmp); if (tmp.empty()) return std::vector(); if (tmp.find(TAG_DELIMITER) != std::string::npos) { std::istringstream iss(tmp); std::string line; while (std::getline(iss, line, CTAG_DELIMITER)) out.push_back(std::atof(line.c_str())); } else { // single entry out.push_back(std::atof(tmp.c_str())); } assert(out.size()); return out; } BamRecord::BamRecord(const std::string& name, const std::string& seq, const GenomicRegion * gr, const Cigar& cig) { // make sure cigar fits with sequence if (cig.NumQueryConsumed() != seq.length()) throw std::invalid_argument("Sequence string length mismatches cigar consumed query bases"); // make sure alignment fits if (cig.NumReferenceConsumed() != gr->Width()) throw std::invalid_argument("Alignment position mismatches cigar consumed reference bases"); init(); b->core.tid = gr->chr; b->core.pos = gr->pos1; //gr->pos1 + 1; b->core.qual = 60; b->core.flag = 0; b->core.n_cigar = cig.size(); // set dumy mate b->core.mtid = -1; b->core.mpos = -1; b->core.isize = 0; // if alignment is reverse, set it if (gr->strand == '-') // just choose this convention to reverse b->core.flag |= BAM_FREVERSE; // allocate all the data b->core.l_qname = name.length() + 1; b->core.l_qseq = seq.length(); //(seq.length()>>1) + seq.length() % 2; // 4-bit encoding b->l_data = b->core.l_qname + (b->core.n_cigar<<2) + ((b->core.l_qseq+1)>>1) + (b->core.l_qseq); b.get()->data = (uint8_t*)malloc(b.get()->l_data); // allocate the qname memcpy(b->data, name.c_str(), name.length() + 1); // allocate the cigar. 32 bits per elem (4 type, 28 length) uint32_t * cigr = bam_get_cigar(b); for (size_t i = 0; i < cig.size(); ++i) cigr[i] = cig[i].raw(); //Length << BAM_CIGAR_SHIFT | BAM_CMATCH; // allocate the sequence uint8_t* m_bases = b->data + b->core.l_qname + (b->core.n_cigar<<2); // TODO move this out of bigger loop int slen = seq.length(); for (int i = 0; i < slen; ++i) { // bad idea but works for now uint8_t base = 15; if (seq.at(i) == 'A') base = 1; else if (seq.at(i) == 'C') base = 2; else if (seq.at(i) == 'G') base = 4; else if (seq.at(i) == 'T') base = 8; m_bases[i >> 1] &= ~(0xF << ((~i & 1) << 2)); ///< zero out previous 4-bit base encoding m_bases[i >> 1] |= base << ((~i & 1) << 2); ///< insert new 4-bit base encoding } } CigarField::CigarField(char t, uint32_t len) { int op = CigarCharToInt[(int)t]; if (op < 0) throw std::invalid_argument("Cigar type must be one of MIDSHPN=X"); data = len << BAM_CIGAR_SHIFT; data = data | static_cast(op); } std::ostream& operator<<(std::ostream& out, const CigarField& c) { out << bam_cigar_oplen(c.data) << bam_cigar_opchr(c.data); return out; } std::ostream& operator<<(std::ostream& out, const Cigar& c) { for (Cigar::const_iterator i = c.begin(); i != c.end(); ++i) out << *i; return out; } Cigar::Cigar(const std::string& cig) { //Cigar tc; // get the ops (MIDSHPN) std::vector ops; for (size_t i = 0; i < cig.length(); ++i) if (!isdigit(cig.at(i))) { ops.push_back(cig.at(i)); } std::size_t prev = 0, pos; std::vector lens; while ((pos = cig.find_first_of("MIDSHPNX", prev)) != std::string::npos) { if (pos > prev) lens.push_back(cig.substr(prev, pos-prev)); prev = pos+1; } if (prev < cig.length()) lens.push_back(cig.substr(prev, std::string::npos)); assert(ops.size() == lens.size()); for (size_t i = 0; i < lens.size(); ++i) { add(CigarField(ops[i], std::atoi(lens[i].c_str()))); } //return tc; } bool Cigar::operator==(const Cigar& c) const { if (m_data.size() != c.size()) return false; if (!m_data.size()) // both empty return true; for (size_t i = 0; i < m_data.size(); ++i) if (m_data[i].Type() != c[i].Type() || m_data[i].Length() != c[i].Length()) return false; return true; } int BamRecord::OverlappingCoverage(const BamRecord& r) const { uint32_t* c = bam_get_cigar(b); uint32_t* c2 = bam_get_cigar(r.b); //uint8_t * cov1 = (uint8_t*)calloc(l > 0 ? l : b->core.l_qseq, sizeof(uint8_t)); uint8_t * cov1 = (uint8_t*)calloc(GetCigar().NumQueryConsumed(), sizeof(uint8_t)); size_t pos = 0; for (int k = 0; k < b->core.n_cigar; ++k) { if (bam_cigar_opchr(c[k]) == 'M') // is match, so track locale for (size_t j = 0; j < bam_cigar_oplen(c[k]); ++j) cov1[pos + j] = 1; if (bam_cigar_type(bam_cigar_op(c[k]))&1) // consumes query, so move position pos = pos + bam_cigar_oplen(c[k]); } pos = 0; size_t ocov = 0; // overlapping coverage for (int k = 0; k < r.b->core.n_cigar; ++k) { if (bam_cigar_opchr(c2[k]) == 'M') // is match, so track local for (size_t j = 0; j < bam_cigar_oplen(c2[k]); ++j) if (cov1[pos+j]) // r is covered. Check again this too ++ocov; if (bam_cigar_type(bam_cigar_op(c2[k]))&1) // consumes query, so move position pos = pos + bam_cigar_oplen(c2[k]); } free(cov1); return ocov; } } freebayes-1.3.6/contrib/SeqLib/src/BamWriter.cpp000066400000000000000000000067771417247743000215260ustar00rootroot00000000000000#include "SeqLib/BamWalker.h" #include "SeqLib/BamWriter.h" #include //#define DEBUG_WALKER 1 namespace SeqLib { void BamWriter::SetHeader(const SeqLib::BamHeader& h) { hdr = h; } bool BamWriter::WriteHeader() const { if (hdr.isEmpty()) { std::cerr << "BamWriter::WriteHeader - No header supplied. Provide with SetWriteHeader" << std::endl; return false; } if (!fop) { std::cerr << "BamWriter::WriteHeader - Output not open for writing. Open with Open()" << std::endl; return false; } if (sam_hdr_write(fop.get(), hdr.get()) < 0) { std::cerr << "Cannot write header. sam_hdr_write exited with < 0" << std::endl; return false; } return true; } bool BamWriter::Close() { if (!fop) return false; fop.reset(); //tr1 compatible //fop = NULL; // this clears shared_ptr, calls sam_close (c++11) return true; } bool BamWriter::BuildIndex() const { // throw an error if BAM is not already closed if (fop) { std::cerr << "Trying to index open BAM. Close first with Close()" << std::endl; return false; } if (m_out.empty()) { std::cerr << "Trying to make index, but no BAM specified" << std::endl; return false; } // call to htslib to build bai index if (sam_index_build(m_out.c_str(), 0) < 0) { // 0 is "min_shift", which is 0 for bai index std::cerr << "Failed to create index"; return false; } return true; } bool BamWriter::Open(const std::string& f) { // don't reopen if (fop) return false; m_out = f; // hts open the writer fop = SeqPointer(hts_open(m_out.c_str(), output_format.c_str()), htsFile_delete()); // open the thread pool. It's OK if already connected before opening SetThreadPool(pool); if (!fop) { return false; //throw std::runtime_error("BamWriter::Open - Cannot open output file: " + f); } return true; } BamWriter::BamWriter(int o) { switch(o) { case BAM : output_format = "wb"; break; case CRAM : output_format = "wc"; break; case SAM : output_format = "w"; break; default : throw std::invalid_argument("Invalid writer type"); } } bool BamWriter::WriteRecord(const BamRecord &r) { if (!fop) { return false; } else { if (sam_write1(fop.get(), hdr.get(), r.raw()) < 0) return false; } return true; } std::ostream& operator<<(std::ostream& out, const BamWriter& b) { if (b.fop) out << "Write format: " << b.fop->format.format; out << " Write file " << b.m_out; return out; } bool BamWriter::SetThreadPool(ThreadPool p) { if (!p.IsOpen()) return false; pool = p; if (fop.get()) hts_set_opt(fop.get(), HTS_OPT_THREAD_POOL, &pool.p); return true; } //does not return false if file not found bool BamWriter::SetCramReference(const std::string& ref) { if (!fop) return false; // need to open reference for CRAM writing char* fn_list = samfaipath(ref.c_str()); // eg ref = my.fa returns my.fa.fai if (fn_list) { // in theory hts_set_fai_filename should give back < 0 // if fn_list not there, but it doesnt if (!read_access_test(std::string(fn_list))) return false; int status = hts_set_fai_filename(fop.get(), fn_list); if (status < 0) { fprintf(stderr, "Failed to use reference \"%s\".\n", fn_list); return false; } } else { std::cerr << "Failed to get the reference for CRAM compression" << std::endl; return false; } return true; } } freebayes-1.3.6/contrib/SeqLib/src/GenomicRegion.cpp000066400000000000000000000171331417247743000223430ustar00rootroot00000000000000#include "SeqLib/GenomicRegion.h" #include #include #include #ifdef HAVE_C11 #include #endif // 4 billion #define END_MAX 4000000000 namespace SeqLib { // return the width of the genomic region int GenomicRegion::Width() const { return pos2 - pos1 + 1; } // returns 0 for no overlaps, 1 for partial and 2 for complete int GenomicRegion::GetOverlap(const GenomicRegion& gr) const { if (gr.chr != chr) return 0; // argument pos1 is in bool gr1_in = gr.pos1 >= pos1 && gr.pos1 <= pos2; // argument pos2 is in bool gr2_in = gr.pos2 >= pos1 && gr.pos2 <= pos2; // object pos1 is in bool pos1_in = pos1 >= gr.pos1 && pos1 <= gr.pos2; // object pos2 is in bool pos2_in = pos2 >= gr.pos1 && pos2 <= gr.pos2; // object is in the argument if (pos1_in && pos2_in) return 3; // argument is in the oboject if ( gr1_in && gr2_in) return 2; // partial overlap if (gr1_in || gr2_in || pos1_in || pos2_in) return 1; return 0; } std::string GenomicRegion::ChrName(const BamHeader& h) const { std::string cc; if (!h.isEmpty()) { if (chr >= h.NumSequences()) throw std::invalid_argument( "GenomicRegion::ChrName - not enough targets in BamHeader to cover ref id"); else cc = h.IDtoName(chr); // std::string(h->target_name[chr]); } else { cc = chrToString(chr); } return cc; } std::string GenomicRegion::PointString(const BamHeader& h) const { std::stringstream out; out << ChrName(h) << ":" << SeqLib::AddCommas(pos1) << "(" << strand << ")"; return out.str(); } void GenomicRegion::Pad(int32_t pad) { if (-pad*2 > Width()) throw std::out_of_range( "GenomicRegion::pad - negative pad values can't obliterate GenomicRegion with val " + tostring(chr) + ":" + tostring(pos1) + "-" + tostring(pos2) + " and pad " + tostring(pad)); pos1 -= pad; pos2 += pad; //if (pad > pos1) // pos1 = 1; //else // pos1 = pos1-pad; //const int32_t maxpos = 250000000; //pos2 = std::min(pos2+pad, maxpos); // 2500000000 is dummy for now. should be chr end } bool GenomicRegion::operator<(const GenomicRegion& b) const { return (chr < b.chr) || (chr == b.chr && pos1 < b.pos1) || (chr==b.chr && pos1 == b.pos1 && pos2 < b.pos2); } bool GenomicRegion::operator>(const GenomicRegion& b) const { return !(*this == b) && !(*this < b); } bool GenomicRegion::operator==(const GenomicRegion &b) const { return (chr == b.chr && pos1 == b.pos1 && b.pos2 == pos2); } bool GenomicRegion::operator!=(const GenomicRegion &b) const { return !(*this == b); } bool GenomicRegion::operator<=(const GenomicRegion &b) const { return (*this < b || *this == b); } bool GenomicRegion::operator>=(const GenomicRegion &b) const { return (*this > b || *this == b); } /* std::string GenomicRegion::ToString() const { return chrToString(chr) + ":" + SeqLib::AddCommas(pos1) + "-" + AddCommas(pos2) + "(" + strand + ")"; }*/ std::string GenomicRegion::ToString(const BamHeader& h) const { return ChrName(h) + ":" + SeqLib::AddCommas(pos1) + "-" + AddCommas(pos2) + "(" + strand + ")"; } std::ostream& operator<<(std::ostream& out, const GenomicRegion& gr) { out << gr.chrToString(gr.chr) << ":" << SeqLib::AddCommas(gr.pos1) << "-" << AddCommas(gr.pos2) << "(" << gr.strand << ")"; return out; } GenomicRegion::GenomicRegion(const std::string& reg, const BamHeader& hdr) { if (hdr.isEmpty()) throw std::invalid_argument("GenomicRegion constructor - supplied empty BamHeader"); // scrub String //std::string reg2 = SeqLib::scrubString(reg, "chr"); // use htslib region parsing code int tid, beg, end; const char * q = hts_parse_reg(reg.c_str(), &beg, &end); if (q) { char *tmp = (char*)alloca(q - reg.c_str() + 1); // stack alloc strncpy(tmp, reg.c_str(), q - reg.c_str()); tmp[q - reg.c_str()] = 0; tid = hdr.Name2ID(std::string(tmp)); //bam_name2id(h.get(), tmp); if (tid < 0) { std::string inv = "GenomicRegion constructor: Failed to set region for " + reg; throw std::invalid_argument(inv); } if (end == INT_MAX) { // single chrome tid = hdr.Name2ID(reg); beg = 0; end = hdr.GetSequenceLength(reg); } } else { std::string inv = "GenomicRegion constructor: Failed to set region for " + reg; throw std::invalid_argument(inv); } chr = tid; pos1 = beg+1; pos2 = end; strand = '*'; } // constructor to take a pair of coordinates to define the genomic interval GenomicRegion::GenomicRegion(int32_t t_chr, int32_t t_pos1, int32_t t_pos2, char t_strand) { if (t_pos2 < t_pos1 ) throw std::invalid_argument( "GenomicRegion constructor: end pos must be >= start pos" ); if ( !(t_strand == '+' || t_strand == '-' || t_strand == '*') ) throw std::invalid_argument( "GenomicRegion constructor: strand must be one of +, -, *" ); chr = t_chr; pos1 = t_pos1; pos2 = t_pos2; strand = t_strand; } //private std::string GenomicRegion::chrToString(int32_t ref) const { std::string ref_id; if (ref < 0) ref_id = tostring(ref); if (ref == 22) ref_id = "X"; else if (ref == 23) ref_id = "Y"; else if (ref == 24) ref_id = "M"; else if (ref >= 0) ref_id = tostring(ref+1); assert(ref_id != "23"); return ref_id; } // checks whether a GenomicRegion is empty bool GenomicRegion::IsEmpty() const { return chr == -1 && pos1 == 0 && pos2 == 0; } int32_t GenomicRegion::DistanceBetweenStarts(const GenomicRegion &gr) const { if (gr.chr != chr) return -1; else return std::abs(pos1 - gr.pos1);//((pos1 > gr.pos1) ? (pos1 - gr.pos1) : (gr.pos1 - pos1)); } int32_t GenomicRegion::DistanceBetweenEnds(const GenomicRegion &gr) const { if (gr.chr != chr) return -1; else return std::abs(pos2 - gr.pos2); } /*void GenomicRegion::Random() { uint32_t big = rand() % SeqLib::genome_size_XY; //SeqLib::genRandomValue(big, SeqLib::genome_size_XY, seed); for (size_t k = 0; k < 25; ++k) if (big < SeqLib::CHR_CLEN[k]) { assert(k > 0); chr = --k; assert(big > SeqLib::CHR_CLEN[chr]); pos1 = big - SeqLib::CHR_CLEN[chr]; pos2 = pos1; return; } std::cerr << "Value of " << big << " outside of expected range." << std::endl; assert(false); }*/ GenomicRegion::GenomicRegion(const std::string& tchr, const std::string& tpos1, const std::string& tpos2, const SeqLib::BamHeader& hdr) { strand = '*'; // convert the pos strings // throws invalid_argument if conversion can't be performed // or throws an out_of_range if it is too big for result #ifdef HAVE_C11 pos1 = std::stoi(tpos1); pos2 = std::stoi(tpos2); #else pos1 = std::atoi(tpos1.c_str()); pos2 = std::atoi(tpos2.c_str()); #endif // if no header, assume that it is "standard" if (hdr.isEmpty()) { if (tchr == "X" || tchr == "chrX") chr = 22; else if (tchr == "Y" || tchr == "chrY") chr = 23; else #ifdef HAVE_C11 chr = std::stoi(SeqLib::scrubString(tchr, "chr")) - 1; #else chr = std::atoi(SeqLib::scrubString(tchr, "chr").c_str()); #endif return; } else { chr = hdr.Name2ID(tchr); //bam_name2id(hdr.get(), tchr.c_str()); // if tchr was not found in sequence dictionary, it's possible that we're // specifying our contigs in b37 style whereas dict is hg** style; // let's attempt to automatically convert [0-9XY]+ -> chr[0-9XY]+ #ifdef HAVE_C11 static std::regex b37_regex("[0-9XY]+"); if(chr == -1 && std::regex_match(tchr, b37_regex)) { chr = hdr.Name2ID("chr" + tchr); } #endif } } } freebayes-1.3.6/contrib/SeqLib/src/ssw.c000066400000000000000000000655511417247743000201010ustar00rootroot00000000000000/* The MIT License Copyright (c) 2012-1015 Boston College. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* Contact: Mengyao Zhao */ /* * ssw.c * * Created by Mengyao Zhao on 6/22/10. * Copyright 2010 Boston College. All rights reserved. * Version 0.1.4 * Last revision by Mengyao Zhao on 02/11/16. * */ #define SIMDE_ENABLE_NATIVE_ALIASES #include #include #include #include #include #include #include "SeqLib/ssw.h" #ifdef __GNUC__ #define LIKELY(x) __builtin_expect((x),1) #define UNLIKELY(x) __builtin_expect((x),0) #else #define LIKELY(x) (x) #define UNLIKELY(x) (x) #endif /* Convert the coordinate in the scoring matrix into the coordinate in one line of the band. */ #define set_u(u, w, i, j) { int x=(i)-(w); x=x>0?x:0; (u)=(j)-x+1; } /* Convert the coordinate in the direction matrix into the coordinate in one line of the band. */ #define set_d(u, w, i, j, p) { int x=(i)-(w); x=x>0?x:0; x=(j)-x; (u)=x*3+p; } /*! @function @abstract Round an integer to the next closest power-2 integer. @param x integer to be rounded (in place) @discussion x will be modified. */ #define kroundup32(x) (--(x), (x)|=(x)>>1, (x)|=(x)>>2, (x)|=(x)>>4, (x)|=(x)>>8, (x)|=(x)>>16, ++(x)) typedef struct { uint16_t score; int32_t ref; //0-based position int32_t read; //alignment ending position on read, 0-based } alignment_end; typedef struct { uint32_t* seq; int32_t length; } cigar; struct _profile{ __m128i* profile_byte; // 0: none __m128i* profile_word; // 0: none const int8_t* read; const int8_t* mat; int32_t readLen; int32_t n; uint8_t bias; }; /* Generate query profile rearrange query sequence & calculate the weight of match/mismatch. */ static __m128i* qP_byte (const int8_t* read_num, const int8_t* mat, const int32_t readLen, const int32_t n, /* the edge length of the squre matrix mat */ uint8_t bias) { int32_t segLen = (readLen + 15) / 16; /* Split the 128 bit register into 16 pieces. Each piece is 8 bit. Split the read into 16 segments. Calculat 16 segments in parallel. */ __m128i* vProfile = (__m128i*)malloc(n * segLen * sizeof(__m128i)); int8_t* t = (int8_t*)vProfile; int32_t nt, i, j, segNum; /* Generate query profile rearrange query sequence & calculate the weight of match/mismatch */ for (nt = 0; LIKELY(nt < n); nt ++) { for (i = 0; i < segLen; i ++) { j = i; for (segNum = 0; LIKELY(segNum < 16) ; segNum ++) { *t++ = j>= readLen ? bias : mat[nt * n + read_num[j]] + bias; j += segLen; } } } return vProfile; } /* Striped Smith-Waterman Record the highest score of each reference position. Return the alignment score and ending position of the best alignment, 2nd best alignment, etc. Gap begin and gap extension are different. wight_match > 0, all other weights < 0. The returned positions are 0-based. */ static alignment_end* sw_sse2_byte (const int8_t* ref, int8_t ref_dir, // 0: forward ref; 1: reverse ref int32_t refLen, int32_t readLen, const uint8_t weight_gapO, /* will be used as - */ const uint8_t weight_gapE, /* will be used as - */ const __m128i* vProfile, uint8_t terminate, /* the best alignment score: used to terminate the matrix calculation when locating the alignment beginning point. If this score is set to 0, it will not be used */ uint8_t bias, /* Shift 0 point to a positive value. */ int32_t maskLen) { #define max16(m, vm) (vm) = _mm_max_epu8((vm), _mm_srli_si128((vm), 8)); \ (vm) = _mm_max_epu8((vm), _mm_srli_si128((vm), 4)); \ (vm) = _mm_max_epu8((vm), _mm_srli_si128((vm), 2)); \ (vm) = _mm_max_epu8((vm), _mm_srli_si128((vm), 1)); \ (m) = _mm_extract_epi16((vm), 0) uint8_t max = 0; /* the max alignment score */ int32_t end_read = readLen - 1; int32_t end_ref = -1; /* 0_based best alignment ending point; Initialized as isn't aligned -1. */ int32_t segLen = (readLen + 15) / 16; /* number of segment */ /* array to record the largest score of each reference position */ uint8_t* maxColumn = (uint8_t*) calloc(refLen, 1); /* array to record the alignment read ending position of the largest score of each reference position */ int32_t* end_read_column = (int32_t*) calloc(refLen, sizeof(int32_t)); /* Define 16 byte 0 vector. */ __m128i vZero = _mm_set1_epi32(0); __m128i* pvHStore = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvHLoad = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvE = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvHmax = (__m128i*) calloc(segLen, sizeof(__m128i)); int32_t i, j; /* 16 byte insertion begin vector */ __m128i vGapO = _mm_set1_epi8(weight_gapO); /* 16 byte insertion extension vector */ __m128i vGapE = _mm_set1_epi8(weight_gapE); /* 16 byte bias vector */ __m128i vBias = _mm_set1_epi8(bias); __m128i vMaxScore = vZero; /* Trace the highest score of the whole SW matrix. */ __m128i vMaxMark = vZero; /* Trace the highest score till the previous column. */ __m128i vTemp; int32_t edge, begin = 0, end = refLen, step = 1; /* outer loop to process the reference sequence */ if (ref_dir == 1) { begin = refLen - 1; end = -1; step = -1; } for (i = begin; LIKELY(i != end); i += step) { //fprintf(stderr, "%d", ref[i]); int32_t cmp; __m128i e, vF = vZero, vMaxColumn = vZero; /* Initialize F value to 0. Any errors to vH values will be corrected in the Lazy_F loop. */ // max16(maxColumn[i], vMaxColumn); // fprintf(stderr, "middle[%d]: %d\n", i, maxColumn[i]); __m128i vH = pvHStore[segLen - 1]; vH = _mm_slli_si128 (vH, 1); /* Shift the 128-bit value in vH left by 1 byte. */ const __m128i* vP = vProfile + ref[i] * segLen; /* Right part of the vProfile */ /* Swap the 2 H buffers. */ __m128i* pv = pvHLoad; pvHLoad = pvHStore; pvHStore = pv; /* inner loop to process the query sequence */ for (j = 0; LIKELY(j < segLen); ++j) { vH = _mm_adds_epu8(vH, _mm_load_si128(vP + j)); vH = _mm_subs_epu8(vH, vBias); /* vH will be always > 0 */ // max16(maxColumn[i], vH); // fprintf(stderr, "H[%d]: %d\n", i, maxColumn[i]); // int8_t* t; // int32_t ti; //for (t = (int8_t*)&vH, ti = 0; ti < 16; ++ti) fprintf(stderr, "%d\t", *t++); /* Get max from vH, vE and vF. */ e = _mm_load_si128(pvE + j); vH = _mm_max_epu8(vH, e); vH = _mm_max_epu8(vH, vF); vMaxColumn = _mm_max_epu8(vMaxColumn, vH); // max16(maxColumn[i], vMaxColumn); // fprintf(stderr, "middle[%d]: %d\n", i, maxColumn[i]); // for (t = (int8_t*)&vMaxColumn, ti = 0; ti < 16; ++ti) fprintf(stderr, "%d\t", *t++); /* Save vH values. */ _mm_store_si128(pvHStore + j, vH); /* Update vE value. */ vH = _mm_subs_epu8(vH, vGapO); /* saturation arithmetic, result >= 0 */ e = _mm_subs_epu8(e, vGapE); e = _mm_max_epu8(e, vH); _mm_store_si128(pvE + j, e); /* Update vF value. */ vF = _mm_subs_epu8(vF, vGapE); vF = _mm_max_epu8(vF, vH); /* Load the next vH. */ vH = _mm_load_si128(pvHLoad + j); } /* Lazy_F loop: has been revised to disallow adjecent insertion and then deletion, so don't update E(i, j), learn from SWPS3 */ /* reset pointers to the start of the saved data */ j = 0; vH = _mm_load_si128 (pvHStore + j); /* the computed vF value is for the given column. since */ /* we are at the end, we need to shift the vF value over */ /* to the next column. */ vF = _mm_slli_si128 (vF, 1); vTemp = _mm_subs_epu8 (vH, vGapO); vTemp = _mm_subs_epu8 (vF, vTemp); vTemp = _mm_cmpeq_epi8 (vTemp, vZero); cmp = _mm_movemask_epi8 (vTemp); while (cmp != 0xffff) { vH = _mm_max_epu8 (vH, vF); vMaxColumn = _mm_max_epu8(vMaxColumn, vH); _mm_store_si128 (pvHStore + j, vH); vF = _mm_subs_epu8 (vF, vGapE); j++; if (j >= segLen) { j = 0; vF = _mm_slli_si128 (vF, 1); } vH = _mm_load_si128 (pvHStore + j); vTemp = _mm_subs_epu8 (vH, vGapO); vTemp = _mm_subs_epu8 (vF, vTemp); vTemp = _mm_cmpeq_epi8 (vTemp, vZero); cmp = _mm_movemask_epi8 (vTemp); } vMaxScore = _mm_max_epu8(vMaxScore, vMaxColumn); vTemp = _mm_cmpeq_epi8(vMaxMark, vMaxScore); cmp = _mm_movemask_epi8(vTemp); if (cmp != 0xffff) { uint8_t temp; vMaxMark = vMaxScore; max16(temp, vMaxScore); vMaxScore = vMaxMark; if (LIKELY(temp > max)) { max = temp; if (max + bias >= 255) break; //overflow end_ref = i; /* Store the column with the highest alignment score in order to trace the alignment ending position on read. */ for (j = 0; LIKELY(j < segLen); ++j) pvHmax[j] = pvHStore[j]; } } /* Record the max score of current column. */ max16(maxColumn[i], vMaxColumn); // fprintf(stderr, "maxColumn[%d]: %d\n", i, maxColumn[i]); if (maxColumn[i] == terminate) break; } /* Trace the alignment ending position on read. */ uint8_t *t = (uint8_t*)pvHmax; int32_t column_len = segLen * 16; for (i = 0; LIKELY(i < column_len); ++i, ++t) { int32_t temp; if (*t == max) { temp = i / 16 + i % 16 * segLen; if (temp < end_read) end_read = temp; } } free(pvHmax); free(pvE); free(pvHLoad); free(pvHStore); /* Find the most possible 2nd best alignment. */ alignment_end* bests = (alignment_end*) calloc(2, sizeof(alignment_end)); bests[0].score = max + bias >= 255 ? 255 : max; bests[0].ref = end_ref; bests[0].read = end_read; bests[1].score = 0; bests[1].ref = 0; bests[1].read = 0; edge = (end_ref - maskLen) > 0 ? (end_ref - maskLen) : 0; for (i = 0; i < edge; i ++) { // fprintf (stderr, "maxColumn[%d]: %d\n", i, maxColumn[i]); if (maxColumn[i] > bests[1].score) { bests[1].score = maxColumn[i]; bests[1].ref = i; } } edge = (end_ref + maskLen) > refLen ? refLen : (end_ref + maskLen); for (i = edge + 1; i < refLen; i ++) { // fprintf (stderr, "refLen: %d\tmaxColumn[%d]: %d\n", refLen, i, maxColumn[i]); if (maxColumn[i] > bests[1].score) { bests[1].score = maxColumn[i]; bests[1].ref = i; } } free(maxColumn); free(end_read_column); return bests; } static __m128i* qP_word (const int8_t* read_num, const int8_t* mat, const int32_t readLen, const int32_t n) { int32_t segLen = (readLen + 7) / 8; __m128i* vProfile = (__m128i*)malloc(n * segLen * sizeof(__m128i)); int16_t* t = (int16_t*)vProfile; int32_t nt, i, j; int32_t segNum; /* Generate query profile rearrange query sequence & calculate the weight of match/mismatch */ for (nt = 0; LIKELY(nt < n); nt ++) { for (i = 0; i < segLen; i ++) { j = i; for (segNum = 0; LIKELY(segNum < 8) ; segNum ++) { *t++ = j>= readLen ? 0 : mat[nt * n + read_num[j]]; j += segLen; } } } return vProfile; } static alignment_end* sw_sse2_word (const int8_t* ref, int8_t ref_dir, // 0: forward ref; 1: reverse ref int32_t refLen, int32_t readLen, const uint8_t weight_gapO, /* will be used as - */ const uint8_t weight_gapE, /* will be used as - */ const __m128i* vProfile, uint16_t terminate, int32_t maskLen) { #define max8(m, vm) (vm) = _mm_max_epi16((vm), _mm_srli_si128((vm), 8)); \ (vm) = _mm_max_epi16((vm), _mm_srli_si128((vm), 4)); \ (vm) = _mm_max_epi16((vm), _mm_srli_si128((vm), 2)); \ (m) = _mm_extract_epi16((vm), 0) uint16_t max = 0; /* the max alignment score */ int32_t end_read = readLen - 1; int32_t end_ref = 0; /* 1_based best alignment ending point; Initialized as isn't aligned - 0. */ int32_t segLen = (readLen + 7) / 8; /* number of segment */ /* array to record the largest score of each reference position */ uint16_t* maxColumn = (uint16_t*) calloc(refLen, 2); /* array to record the alignment read ending position of the largest score of each reference position */ int32_t* end_read_column = (int32_t*) calloc(refLen, sizeof(int32_t)); /* Define 16 byte 0 vector. */ __m128i vZero = _mm_set1_epi32(0); __m128i* pvHStore = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvHLoad = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvE = (__m128i*) calloc(segLen, sizeof(__m128i)); __m128i* pvHmax = (__m128i*) calloc(segLen, sizeof(__m128i)); int32_t i, j, k; /* 16 byte insertion begin vector */ __m128i vGapO = _mm_set1_epi16(weight_gapO); /* 16 byte insertion extension vector */ __m128i vGapE = _mm_set1_epi16(weight_gapE); __m128i vMaxScore = vZero; /* Trace the highest score of the whole SW matrix. */ __m128i vMaxMark = vZero; /* Trace the highest score till the previous column. */ __m128i vTemp; int32_t edge, begin = 0, end = refLen, step = 1; /* outer loop to process the reference sequence */ if (ref_dir == 1) { begin = refLen - 1; end = -1; step = -1; } for (i = begin; LIKELY(i != end); i += step) { int32_t cmp; __m128i e, vF = vZero; /* Initialize F value to 0. Any errors to vH values will be corrected in the Lazy_F loop. */ __m128i vH = pvHStore[segLen - 1]; vH = _mm_slli_si128 (vH, 2); /* Shift the 128-bit value in vH left by 2 byte. */ /* Swap the 2 H buffers. */ __m128i* pv = pvHLoad; __m128i vMaxColumn = vZero; /* vMaxColumn is used to record the max values of column i. */ const __m128i* vP = vProfile + ref[i] * segLen; /* Right part of the vProfile */ pvHLoad = pvHStore; pvHStore = pv; /* inner loop to process the query sequence */ for (j = 0; LIKELY(j < segLen); j ++) { vH = _mm_adds_epi16(vH, _mm_load_si128(vP + j)); /* Get max from vH, vE and vF. */ e = _mm_load_si128(pvE + j); vH = _mm_max_epi16(vH, e); vH = _mm_max_epi16(vH, vF); vMaxColumn = _mm_max_epi16(vMaxColumn, vH); /* Save vH values. */ _mm_store_si128(pvHStore + j, vH); /* Update vE value. */ vH = _mm_subs_epu16(vH, vGapO); /* saturation arithmetic, result >= 0 */ e = _mm_subs_epu16(e, vGapE); e = _mm_max_epi16(e, vH); _mm_store_si128(pvE + j, e); /* Update vF value. */ vF = _mm_subs_epu16(vF, vGapE); vF = _mm_max_epi16(vF, vH); /* Load the next vH. */ vH = _mm_load_si128(pvHLoad + j); } /* Lazy_F loop: has been revised to disallow adjecent insertion and then deletion, so don't update E(i, j), learn from SWPS3 */ for (k = 0; LIKELY(k < 8); ++k) { vF = _mm_slli_si128 (vF, 2); for (j = 0; LIKELY(j < segLen); ++j) { vH = _mm_load_si128(pvHStore + j); vH = _mm_max_epi16(vH, vF); vMaxColumn = _mm_max_epi16(vMaxColumn, vH); //newly added line _mm_store_si128(pvHStore + j, vH); vH = _mm_subs_epu16(vH, vGapO); vF = _mm_subs_epu16(vF, vGapE); if (UNLIKELY(! _mm_movemask_epi8(_mm_cmpgt_epi16(vF, vH)))) goto end; } } end: vMaxScore = _mm_max_epi16(vMaxScore, vMaxColumn); vTemp = _mm_cmpeq_epi16(vMaxMark, vMaxScore); cmp = _mm_movemask_epi8(vTemp); if (cmp != 0xffff) { uint16_t temp; vMaxMark = vMaxScore; max8(temp, vMaxScore); vMaxScore = vMaxMark; if (LIKELY(temp > max)) { max = temp; end_ref = i; for (j = 0; LIKELY(j < segLen); ++j) pvHmax[j] = pvHStore[j]; } } /* Record the max score of current column. */ max8(maxColumn[i], vMaxColumn); if (maxColumn[i] == terminate) break; } /* Trace the alignment ending position on read. */ uint16_t *t = (uint16_t*)pvHmax; int32_t column_len = segLen * 8; for (i = 0; LIKELY(i < column_len); ++i, ++t) { int32_t temp; if (*t == max) { temp = i / 8 + i % 8 * segLen; if (temp < end_read) end_read = temp; } } free(pvHmax); free(pvE); free(pvHLoad); free(pvHStore); /* Find the most possible 2nd best alignment. */ alignment_end* bests = (alignment_end*) calloc(2, sizeof(alignment_end)); bests[0].score = max; bests[0].ref = end_ref; bests[0].read = end_read; bests[1].score = 0; bests[1].ref = 0; bests[1].read = 0; edge = (end_ref - maskLen) > 0 ? (end_ref - maskLen) : 0; for (i = 0; i < edge; i ++) { if (maxColumn[i] > bests[1].score) { bests[1].score = maxColumn[i]; bests[1].ref = i; } } edge = (end_ref + maskLen) > refLen ? refLen : (end_ref + maskLen); for (i = edge; i < refLen; i ++) { if (maxColumn[i] > bests[1].score) { bests[1].score = maxColumn[i]; bests[1].ref = i; } } free(maxColumn); free(end_read_column); return bests; } static cigar* banded_sw (const int8_t* ref, const int8_t* read, int32_t refLen, int32_t readLen, int32_t score, const uint32_t weight_gapO, /* will be used as - */ const uint32_t weight_gapE, /* will be used as - */ int32_t band_width, const int8_t* mat, /* pointer to the weight matrix */ int32_t n) { uint32_t *c = (uint32_t*)malloc(16 * sizeof(uint32_t)), *c1; int32_t i, j, e, f, temp1, temp2, s = 16, s1 = 8, l, max = 0; int64_t s2 = 1024; char op, prev_op; int32_t width, width_d, *h_b, *e_b, *h_c; int8_t *direction, *direction_line; cigar* result = (cigar*)malloc(sizeof(cigar)); h_b = (int32_t*)malloc(s1 * sizeof(int32_t)); e_b = (int32_t*)malloc(s1 * sizeof(int32_t)); h_c = (int32_t*)malloc(s1 * sizeof(int32_t)); direction = (int8_t*)malloc(s2 * sizeof(int8_t)); do { width = band_width * 2 + 3, width_d = band_width * 2 + 1; while (width >= s1) { ++s1; kroundup32(s1); h_b = (int32_t*)realloc(h_b, s1 * sizeof(int32_t)); e_b = (int32_t*)realloc(e_b, s1 * sizeof(int32_t)); h_c = (int32_t*)realloc(h_c, s1 * sizeof(int32_t)); } while (width_d * readLen * 3 >= s2) { ++s2; kroundup32(s2); if (s2 < 0) { fprintf(stderr, "Alignment score and position are not consensus.\n"); exit(1); } direction = (int8_t*)realloc(direction, s2 * sizeof(int8_t)); } direction_line = direction; for (j = 1; LIKELY(j < width - 1); j ++) h_b[j] = 0; for (i = 0; LIKELY(i < readLen); i ++) { int32_t beg = 0, end = refLen - 1, u = 0, edge; j = i - band_width; beg = beg > j ? beg : j; // band start j = i + band_width; end = end < j ? end : j; // band end edge = end + 1 < width - 1 ? end + 1 : width - 1; f = h_b[0] = e_b[0] = h_b[edge] = e_b[edge] = h_c[0] = 0; direction_line = direction + width_d * i * 3; for (j = beg; LIKELY(j <= end); j ++) { int32_t b, e1, f1, d, de, df, dh; set_u(u, band_width, i, j); set_u(e, band_width, i - 1, j); set_u(b, band_width, i, j - 1); set_u(d, band_width, i - 1, j - 1); set_d(de, band_width, i, j, 0); set_d(df, band_width, i, j, 1); set_d(dh, band_width, i, j, 2); temp1 = i == 0 ? -weight_gapO : h_b[e] - weight_gapO; temp2 = i == 0 ? -weight_gapE : e_b[e] - weight_gapE; e_b[u] = temp1 > temp2 ? temp1 : temp2; //fprintf(stderr, "de: %d\twidth_d: %d\treadLen: %d\ts2:%lu\n", de, width_d, readLen, s2); direction_line[de] = temp1 > temp2 ? 3 : 2; temp1 = h_c[b] - weight_gapO; temp2 = f - weight_gapE; f = temp1 > temp2 ? temp1 : temp2; direction_line[df] = temp1 > temp2 ? 5 : 4; e1 = e_b[u] > 0 ? e_b[u] : 0; f1 = f > 0 ? f : 0; temp1 = e1 > f1 ? e1 : f1; temp2 = h_b[d] + mat[ref[j] * n + read[i]]; h_c[u] = temp1 > temp2 ? temp1 : temp2; if (h_c[u] > max) max = h_c[u]; if (temp1 <= temp2) direction_line[dh] = 1; else direction_line[dh] = e1 > f1 ? direction_line[de] : direction_line[df]; } for (j = 1; j <= u; j ++) h_b[j] = h_c[j]; } band_width *= 2; } while (LIKELY(max < score)); band_width /= 2; // trace back i = readLen - 1; j = refLen - 1; e = 0; // Count the number of M, D or I. l = 0; // record length of current cigar op = prev_op = 'M'; temp2 = 2; // h while (LIKELY(i > 0)) { set_d(temp1, band_width, i, j, temp2); switch (direction_line[temp1]) { case 1: --i; --j; temp2 = 2; direction_line -= width_d * 3; op = 'M'; break; case 2: --i; temp2 = 0; // e direction_line -= width_d * 3; op = 'I'; break; case 3: --i; temp2 = 2; direction_line -= width_d * 3; op = 'I'; break; case 4: --j; temp2 = 1; op = 'D'; break; case 5: --j; temp2 = 2; op = 'D'; break; default: fprintf(stderr, "Trace back error: %d.\n", direction_line[temp1 - 1]); free(direction); free(h_c); free(e_b); free(h_b); free(c); free(result); return 0; } if (op == prev_op) ++e; else { ++l; while (l >= s) { ++s; kroundup32(s); c = (uint32_t*)realloc(c, s * sizeof(uint32_t)); } c[l - 1] = to_cigar_int(e, prev_op); prev_op = op; e = 1; } } if (op == 'M') { ++l; while (l >= s) { ++s; kroundup32(s); c = (uint32_t*)realloc(c, s * sizeof(uint32_t)); } c[l - 1] = to_cigar_int(e + 1, op); }else { l += 2; while (l >= s) { ++s; kroundup32(s); c = (uint32_t*)realloc(c, s * sizeof(uint32_t)); } c[l - 2] = to_cigar_int(e, op); c[l - 1] = to_cigar_int(1, 'M'); } // reverse cigar c1 = (uint32_t*)malloc(l * sizeof(uint32_t)); s = 0; e = l - 1; while (LIKELY(s <= e)) { c1[s] = c[e]; c1[e] = c[s]; ++ s; -- e; } result->seq = c1; result->length = l; free(direction); free(h_c); free(e_b); free(h_b); free(c); return result; } static int8_t* seq_reverse(const int8_t* seq, int32_t end) /* end is 0-based alignment ending position */ { int8_t* reverse = (int8_t*)calloc(end + 1, sizeof(int8_t)); int32_t start = 0; while (LIKELY(start <= end)) { reverse[start] = seq[end]; reverse[end] = seq[start]; ++ start; -- end; } return reverse; } s_profile* ssw_init (const int8_t* read, const int32_t readLen, const int8_t* mat, const int32_t n, const int8_t score_size) { s_profile* p = (s_profile*)calloc(1, sizeof(struct _profile)); p->profile_byte = 0; p->profile_word = 0; p->bias = 0; if (score_size == 0 || score_size == 2) { /* Find the bias to use in the substitution matrix */ int32_t bias = 0, i; for (i = 0; i < n*n; i++) if (mat[i] < bias) bias = mat[i]; bias = abs(bias); p->bias = bias; p->profile_byte = qP_byte (read, mat, readLen, n, bias); } if (score_size == 1 || score_size == 2) p->profile_word = qP_word (read, mat, readLen, n); p->read = read; p->mat = mat; p->readLen = readLen; p->n = n; return p; } void init_destroy (s_profile* p) { free(p->profile_byte); free(p->profile_word); free(p); } s_align* ssw_align (const s_profile* prof, const int8_t* ref, int32_t refLen, const uint8_t weight_gapO, const uint8_t weight_gapE, const uint8_t flag, // (from high to low) bit 5: return the best alignment beginning position; 6: if (ref_end1 - ref_begin1 <= filterd) && (read_end1 - read_begin1 <= filterd), return cigar; 7: if max score >= filters, return cigar; 8: always return cigar; if 6 & 7 are both setted, only return cigar when both filter fulfilled const uint16_t filters, const int32_t filterd, const int32_t maskLen) { alignment_end* bests = 0, *bests_reverse = 0; __m128i* vP = 0; int32_t word = 0, band_width = 0, readLen = prof->readLen; int8_t* read_reverse = 0; cigar* path; s_align* r = (s_align*)calloc(1, sizeof(s_align)); r->ref_begin1 = -1; r->read_begin1 = -1; r->cigar = 0; r->cigarLen = 0; if (maskLen < 15) { fprintf(stderr, "When maskLen < 15, the function ssw_align doesn't return 2nd best alignment information.\n"); } // Find the alignment scores and ending positions if (prof->profile_byte) { bests = sw_sse2_byte(ref, 0, refLen, readLen, weight_gapO, weight_gapE, prof->profile_byte, -1, prof->bias, maskLen); if (prof->profile_word && bests[0].score == 255) { free(bests); bests = sw_sse2_word(ref, 0, refLen, readLen, weight_gapO, weight_gapE, prof->profile_word, -1, maskLen); word = 1; } else if (bests[0].score == 255) { fprintf(stderr, "Please set 2 to the score_size parameter of the function ssw_init, otherwise the alignment results will be incorrect.\n"); free(r); return NULL; } }else if (prof->profile_word) { bests = sw_sse2_word(ref, 0, refLen, readLen, weight_gapO, weight_gapE, prof->profile_word, -1, maskLen); word = 1; }else { fprintf(stderr, "Please call the function ssw_init before ssw_align.\n"); free(r); return NULL; } r->score1 = bests[0].score; r->ref_end1 = bests[0].ref; //fprintf(stderr, "0based ref_end: %d\n", r->ref_end1); r->read_end1 = bests[0].read; if (maskLen >= 15) { r->score2 = bests[1].score; r->ref_end2 = bests[1].ref; } else { r->score2 = 0; r->ref_end2 = -1; } free(bests); if (flag == 0 || (flag == 2 && r->score1 < filters)) goto end; // Find the beginning position of the best alignment. read_reverse = seq_reverse(prof->read, r->read_end1); if (word == 0) { vP = qP_byte(read_reverse, prof->mat, r->read_end1 + 1, prof->n, prof->bias); bests_reverse = sw_sse2_byte(ref, 1, r->ref_end1 + 1, r->read_end1 + 1, weight_gapO, weight_gapE, vP, r->score1, prof->bias, maskLen); } else { vP = qP_word(read_reverse, prof->mat, r->read_end1 + 1, prof->n); bests_reverse = sw_sse2_word(ref, 1, r->ref_end1 + 1, r->read_end1 + 1, weight_gapO, weight_gapE, vP, r->score1, maskLen); } free(vP); free(read_reverse); r->ref_begin1 = bests_reverse[0].ref; r->read_begin1 = r->read_end1 - bests_reverse[0].read; free(bests_reverse); if ((7&flag) == 0 || ((2&flag) != 0 && r->score1 < filters) || ((4&flag) != 0 && (r->ref_end1 - r->ref_begin1 > filterd || r->read_end1 - r->read_begin1 > filterd))) goto end; // Generate cigar. refLen = r->ref_end1 - r->ref_begin1 + 1; readLen = r->read_end1 - r->read_begin1 + 1; band_width = abs(refLen - readLen) + 1; path = banded_sw(ref + r->ref_begin1, prof->read + r->read_begin1, refLen, readLen, r->score1, weight_gapO, weight_gapE, band_width, prof->mat, prof->n); if (path == 0) { free(r); r = NULL; } else { r->cigar = path->seq; r->cigarLen = path->length; free(path); } end: return r; } void align_destroy (s_align* a) { free(a->cigar); free(a); } /* inline char cigar_int_to_op(uint32_t cigar_int) { return UNLIKELY((cigar_int & 0xfU) > 8) ? 'M': MAPSTR[cigar_int & 0xfU]; } inline uint32_t cigar_int_to_len (uint32_t cigar_int) { return cigar_int >> BAM_CIGAR_SHIFT; }*/ freebayes-1.3.6/contrib/SeqLib/src/ssw_cpp.cpp000066400000000000000000000330001417247743000212630ustar00rootroot00000000000000#include "SeqLib/ssw_cpp.h" #include "SeqLib/ssw.h" #include namespace { static const int8_t kBaseTranslation[128] = { 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, // A C G 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, // T 4, 4, 4, 4, 3, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, // a c g 4, 0, 4, 1, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4, 4, // t 4, 4, 4, 4, 3, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }; void BuildSwScoreMatrix(const uint8_t& match_score, const uint8_t& mismatch_penalty, int8_t* matrix) { // The score matrix looks like // // A, C, G, T, N // score_matrix_ = { 2, -2, -2, -2, -2, // A // -2, 2, -2, -2, -2, // C // -2, -2, 2, -2, -2, // G // -2, -2, -2, 2, -2, // T // -2, -2, -2, -2, -2};// N int id = 0; for (int i = 0; i < 4; ++i) { for (int j = 0; j < 4; ++j) { matrix[id] = ((i == j) ? match_score : static_cast(-mismatch_penalty)); ++id; } matrix[id] = static_cast(-mismatch_penalty); // For N ++id; } for (int i = 0; i < 5; ++i) matrix[id++] = static_cast(-mismatch_penalty); // For N } void ConvertAlignment(const s_align& s_al, const int& query_len, StripedSmithWaterman::Alignment* al) { al->sw_score = s_al.score1; al->sw_score_next_best = s_al.score2; al->ref_begin = s_al.ref_begin1; al->ref_end = s_al.ref_end1; al->query_begin = s_al.read_begin1; al->query_end = s_al.read_end1; al->ref_end_next_best = s_al.ref_end2; al->cigar.clear(); al->cigar_string.clear(); if (s_al.cigarLen > 0) { std::ostringstream cigar_string; if (al->query_begin > 0) { uint32_t cigar = to_cigar_int(al->query_begin, 'S'); al->cigar.push_back(cigar); cigar_string << al->query_begin << 'S'; } for (int i = 0; i < s_al.cigarLen; ++i) { al->cigar.push_back(s_al.cigar[i]); cigar_string << cigar_int_to_len(s_al.cigar[i]) << cigar_int_to_op(s_al.cigar[i]); } int end = query_len - al->query_end - 1; if (end > 0) { uint32_t cigar = to_cigar_int(end, 'S'); al->cigar.push_back(cigar); cigar_string << end << 'S'; } al->cigar_string = cigar_string.str(); } // end if } // @Function: // Calculate the length of the previous cigar operator // and store it in new_cigar and new_cigar_string. // Clean up in_M (false), in_X (false), length_M (0), and length_X(0). void CleanPreviousMOperator( bool* in_M, bool* in_X, uint32_t* length_M, uint32_t* length_X, std::vector* new_cigar, std::ostringstream* new_cigar_string) { if (*in_M) { uint32_t match = to_cigar_int(*length_M, '='); new_cigar->push_back(match); (*new_cigar_string) << *length_M << '='; } else if (*in_X){ //in_X uint32_t match = to_cigar_int(*length_X, 'X'); new_cigar->push_back(match); (*new_cigar_string) << *length_X << 'X'; } // Clean up *in_M = false; *in_X = false; *length_M = 0; *length_X = 0; } // @Function: // 1. Calculate the number of mismatches. // 2. Modify the cigar string: // differentiate matches (M) and mismatches(X). // Note that SSW does not differentiate matches and mismatches. // @Return: // The number of mismatches. int CalculateNumberMismatch( StripedSmithWaterman::Alignment* al, int8_t const *ref, int8_t const *query, const int& query_len) { ref += al->ref_begin; query += al->query_begin; int mismatch_length = 0; std::vector new_cigar; std::ostringstream new_cigar_string; if (al->query_begin > 0) { uint32_t cigar = to_cigar_int(al->query_begin, 'S'); new_cigar.push_back(cigar); new_cigar_string << al->query_begin << 'S'; } bool in_M = false; // the previous is match bool in_X = false; // the previous is mismatch uint32_t length_M = 0; uint32_t length_X = 0; for (unsigned int i = 0; i < al->cigar.size(); ++i) { char op = cigar_int_to_op(al->cigar[i]); uint32_t length = cigar_int_to_len(al->cigar[i]); if (op == 'M') { for (uint32_t j = 0; j < length; ++j) { if (*ref != *query) { ++mismatch_length; if (in_M) { // the previous is match; however the current one is mismatche uint32_t match = to_cigar_int(length_M, '='); new_cigar.push_back(match); new_cigar_string << length_M << '='; } length_M = 0; ++length_X; in_M = false; in_X = true; } else { // *ref == *query if (in_X) { // the previous is mismatch; however the current one is matche uint32_t match = to_cigar_int(length_X, 'X'); new_cigar.push_back(match); new_cigar_string << length_X << 'X'; } ++length_M; length_X = 0; in_M = true; in_X = false; } // end of if (*ref != *query) ++ref; ++query; } } else if (op == 'I') { query += length; mismatch_length += length; CleanPreviousMOperator(&in_M, &in_X, &length_M, &length_X, &new_cigar, &new_cigar_string); new_cigar.push_back(al->cigar[i]); new_cigar_string << length << 'I'; } else if (op == 'D') { ref += length; mismatch_length += length; CleanPreviousMOperator(&in_M, &in_X, &length_M, &length_X, &new_cigar, &new_cigar_string); new_cigar.push_back(al->cigar[i]); new_cigar_string << length << 'D'; } } CleanPreviousMOperator(&in_M, &in_X, &length_M, &length_X, &new_cigar, &new_cigar_string); int end = query_len - al->query_end - 1; if (end > 0) { uint32_t cigar = to_cigar_int(end, 'S'); new_cigar.push_back(cigar); new_cigar_string << end << 'S'; } al->cigar_string.clear(); al->cigar.clear(); al->cigar_string = new_cigar_string.str(); al->cigar = new_cigar; return mismatch_length; } void SetFlag(const StripedSmithWaterman::Filter& filter, uint8_t* flag) { if (filter.report_begin_position) *flag |= 0x08; if (filter.report_cigar) *flag |= 0x0f; } // http://www.cplusplus.com/faq/sequences/arrays/sizeof-array/#cpp template inline size_t SizeOfArray( const T(&)[ N ] ) { return N; } } // namespace namespace StripedSmithWaterman { Aligner::Aligner(void) : score_matrix_(NULL) , score_matrix_size_(5) , translation_matrix_(NULL) , match_score_(2) , mismatch_penalty_(2) , gap_opening_penalty_(3) , gap_extending_penalty_(1) , translated_reference_(NULL) , reference_length_(0) { BuildDefaultMatrix(); } Aligner::Aligner( const uint8_t& match_score, const uint8_t& mismatch_penalty, const uint8_t& gap_opening_penalty, const uint8_t& gap_extending_penalty) : score_matrix_(NULL) , score_matrix_size_(5) , translation_matrix_(NULL) , match_score_(match_score) , mismatch_penalty_(mismatch_penalty) , gap_opening_penalty_(gap_opening_penalty) , gap_extending_penalty_(gap_extending_penalty) , translated_reference_(NULL) , reference_length_(0) { BuildDefaultMatrix(); } Aligner::Aligner(const int8_t* score_matrix, const int& score_matrix_size, const int8_t* translation_matrix, const int& translation_matrix_size) : score_matrix_(NULL) , score_matrix_size_(score_matrix_size) , translation_matrix_(NULL) , match_score_(2) , mismatch_penalty_(2) , gap_opening_penalty_(3) , gap_extending_penalty_(1) , translated_reference_(NULL) , reference_length_(0) { score_matrix_ = new int8_t[score_matrix_size_ * score_matrix_size_]; memcpy(score_matrix_, score_matrix, sizeof(int8_t) * score_matrix_size_ * score_matrix_size_); translation_matrix_ = new int8_t[translation_matrix_size]; memcpy(translation_matrix_, translation_matrix, sizeof(int8_t) * translation_matrix_size); } Aligner::~Aligner(void){ Clear(); } int Aligner::SetReferenceSequence(const char* seq, const int& length) { int len = 0; if (translation_matrix_) { // calculate the valid length //int calculated_ref_length = static_cast(strlen(seq)); //int valid_length = (calculated_ref_length > length) // ? length : calculated_ref_length; int valid_length = length; // delete the current buffer CleanReferenceSequence(); // allocate a new buffer translated_reference_ = new int8_t[valid_length]; len = TranslateBase(seq, valid_length, translated_reference_); } else { // nothing } reference_length_ = len; return len; } int Aligner::TranslateBase(const char* bases, const int& length, int8_t* translated) const { const char* ptr = bases; int len = 0; for (int i = 0; i < length; ++i) { translated[i] = translation_matrix_[(int) *ptr]; ++ptr; ++len; } return len; } bool Aligner::Align(const char* query, const Filter& filter, Alignment* alignment) const { if (!translation_matrix_) return false; if (reference_length_ == 0) return false; int query_len = strlen(query); if (query_len == 0) return false; int8_t* translated_query = new int8_t[query_len]; TranslateBase(query, query_len, translated_query); const int8_t score_size = 2; s_profile* profile = ssw_init(translated_query, query_len, score_matrix_, score_matrix_size_, score_size); uint8_t flag = 0; SetFlag(filter, &flag); s_align* s_al = ssw_align(profile, translated_reference_, reference_length_, static_cast(gap_opening_penalty_), static_cast(gap_extending_penalty_), flag, filter.score_filter, filter.distance_filter, query_len); alignment->Clear(); ConvertAlignment(*s_al, query_len, alignment); alignment->mismatches = CalculateNumberMismatch(&*alignment, translated_reference_, translated_query, query_len); // Free memory delete [] translated_query; align_destroy(s_al); init_destroy(profile); return true; } bool Aligner::Align(const char* query, const char* ref, const int& ref_len, const Filter& filter, Alignment* alignment) const { if (!translation_matrix_) return false; int query_len = strlen(query); if (query_len == 0) return false; int8_t* translated_query = new int8_t[query_len]; TranslateBase(query, query_len, translated_query); // calculate the valid length //int calculated_ref_length = static_cast(strlen(ref)); //int valid_ref_len = (calculated_ref_length > ref_len) // ? ref_len : calculated_ref_length; int valid_ref_len = ref_len; int8_t* translated_ref = new int8_t[valid_ref_len]; TranslateBase(ref, valid_ref_len, translated_ref); const int8_t score_size = 2; s_profile* profile = ssw_init(translated_query, query_len, score_matrix_, score_matrix_size_, score_size); uint8_t flag = 0; SetFlag(filter, &flag); s_align* s_al = ssw_align(profile, translated_ref, valid_ref_len, static_cast(gap_opening_penalty_), static_cast(gap_extending_penalty_), flag, filter.score_filter, filter.distance_filter, query_len); alignment->Clear(); ConvertAlignment(*s_al, query_len, alignment); alignment->mismatches = CalculateNumberMismatch(&*alignment, translated_ref, translated_query, query_len); // Free memory delete [] translated_query; delete [] translated_ref; align_destroy(s_al); init_destroy(profile); return true; } void Aligner::Clear(void) { ClearMatrices(); CleanReferenceSequence(); } void Aligner::SetAllDefault(void) { score_matrix_size_ = 5; match_score_ = 2; mismatch_penalty_ = 2; gap_opening_penalty_ = 3; gap_extending_penalty_ = 1; reference_length_ = 0; } bool Aligner::ReBuild(void) { if (translation_matrix_) return false; SetAllDefault(); BuildDefaultMatrix(); return true; } bool Aligner::ReBuild( const uint8_t& match_score, const uint8_t& mismatch_penalty, const uint8_t& gap_opening_penalty, const uint8_t& gap_extending_penalty) { if (translation_matrix_) return false; SetAllDefault(); match_score_ = match_score; mismatch_penalty_ = mismatch_penalty; gap_opening_penalty_ = gap_opening_penalty; gap_extending_penalty_ = gap_extending_penalty; BuildDefaultMatrix(); return true; } bool Aligner::ReBuild( const int8_t* score_matrix, const int& score_matrix_size, const int8_t* translation_matrix, const int& translation_matrix_size) { ClearMatrices(); score_matrix_ = new int8_t[score_matrix_size_ * score_matrix_size_]; memcpy(score_matrix_, score_matrix, sizeof(int8_t) * score_matrix_size_ * score_matrix_size_); translation_matrix_ = new int8_t[translation_matrix_size]; memcpy(translation_matrix_, translation_matrix, sizeof(int8_t) * translation_matrix_size); return true; } void Aligner::BuildDefaultMatrix(void) { ClearMatrices(); score_matrix_ = new int8_t[score_matrix_size_ * score_matrix_size_]; BuildSwScoreMatrix(match_score_, mismatch_penalty_, score_matrix_); translation_matrix_ = new int8_t[SizeOfArray(kBaseTranslation)]; memcpy(translation_matrix_, kBaseTranslation, sizeof(int8_t) * SizeOfArray(kBaseTranslation)); } void Aligner::ClearMatrices(void) { delete [] score_matrix_; score_matrix_ = NULL; delete [] translation_matrix_; translation_matrix_ = NULL; } } // namespace StripedSmithWaterman freebayes-1.3.6/contrib/freebayes/000077500000000000000000000000001417247743000171045ustar00rootroot00000000000000freebayes-1.3.6/contrib/freebayes/GenotypePriors.cpp000066400000000000000000000166561417247743000226170ustar00rootroot00000000000000#include "GenotypePriors.h" /* long double alleleFrequencyProbability(const map& alleleFrequencyCounts, long double theta) { int M = 0; long double p = 1; for (map::const_iterator f = alleleFrequencyCounts.begin(); f != alleleFrequencyCounts.end(); ++f) { int frequency = f->first; int count = f->second; M += frequency * count; p *= (double) pow((double) theta, (double) count) / (double) pow((double) frequency, (double) count) * factorial(count); } long double thetaH = 1; for (int h = 1; h < M; ++h) thetaH *= theta + h; return factorial(M) / (theta * thetaH) * p; } AlleleFrequencyProbabilityCache alleleFrequencyProbabilityCache; long double alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta) { return alleleFrequencyProbabilityCache.alleleFrequencyProbabilityln(alleleFrequencyCounts, theta); } // Implements Ewens' Sampling Formula, which provides probability of a given // partition of alleles in a sample from a population long double __alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta) { int M = 0; // multiplicity of site long double p = 0; long double thetaln = log(theta); for (map::const_iterator f = alleleFrequencyCounts.begin(); f != alleleFrequencyCounts.end(); ++f) { int frequency = f->first; int count = f->second; M += frequency * count; p += powln(thetaln, count) - powln(log(frequency), count) + factorialln(count); } long double thetaH = 0; for (int h = 1; h < M; ++h) thetaH += log(theta + h); return factorialln(M) - (thetaln + thetaH) + p; } */ long double probabilityGenotypeComboGivenAlleleFrequencyln(GenotypeCombo& genotypeCombo, Allele& allele) { int n = genotypeCombo.numberOfAlleles(); long double lnhetscalar = 0; for (GenotypeCombo::iterator gc = genotypeCombo.begin(); gc != genotypeCombo.end(); ++gc) { SampleDataLikelihood& sgp = **gc; if (!sgp.genotype->homozygous) { lnhetscalar += multinomialCoefficientLn(sgp.genotype->ploidy, sgp.genotype->counts()); } } return lnhetscalar - multinomialCoefficientLn(n, genotypeCombo.counts()); } // core calculation of genotype combination likelihoods // GenotypeComboResult genotypeCombinationPriorProbability( GenotypeCombo* combo, Allele& refAllele, long double theta, bool pooled, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { // when we are operating on pooled samples, we will not be able to // ascertain the number of heterozygotes in the pool, // rendering P(Genotype combo | Allele frequency) meaningless long double priorProbabilityOfGenotypeComboG_Af = 0; if (!pooled) { priorProbabilityOfGenotypeComboG_Af = probabilityGenotypeComboGivenAlleleFrequencyln(*combo, refAllele); } long double priorObservationExpectationProb = 0; if (binomialObsPriors) { // for each alternate and the reference allele // calculate the binomial probability that we see the given strand balance and read placement prob vector alleles = combo->alleles(); // cerr << *combo << endl; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { const string& allele = *a; map::iterator ac = combo->alleleCounters.find(allele); if (ac != combo->alleleCounters.end()) { const AlleleCounter& alleleCounter = ac->second; int obs = alleleCounter.observations; /* cerr << allele << " counts: " << alleleCounter.frequency << " observations " << alleleCounter.observations << " " << alleleCounter.forwardStrand << "," << alleleCounter.reverseStrand << " " << alleleCounter.placedLeft << "," << alleleCounter.placedRight << " " << alleleCounter.placedStart << "," << alleleCounter.placedEnd << endl; cerr << "priorObservationExpectationProb = " << priorObservationExpectationProb << endl; cerr << "binprobln strand = " << binomialProbln(alleleCounter.forwardStrand, obs, 0.5) << endl; cerr << "binprobln position = " << binomialProbln(alleleCounter.placedLeft, obs, 0.5) << endl; cerr << "binprobln start = " << binomialProbln(alleleCounter.placedStart, obs, 0.5) << endl; cerr << "priorObservationExpectationProb = " << priorObservationExpectationProb << endl; */ priorObservationExpectationProb += binomialProbln(alleleCounter.forwardStrand, obs, 0.5) + binomialProbln(alleleCounter.placedLeft, obs, 0.5) + binomialProbln(alleleCounter.placedStart, obs, 0.5); } } // ok... now do the same move for the observation counts // --- this should capture "Allele Balance" } if (alleleBalancePriors) { priorObservationExpectationProb += multinomialSamplingProbLn(combo->alleleProbs(), combo->observationCounts()); } // with larger population samples, the effect of // P(Genotype combo | Allele frequency) may bias us against reporting // true variants which are under selection despite overwhelming evidence // for variation. this allows us to scale the effect of this prior if (diffusionPriorScalar != 1) { priorProbabilityOfGenotypeComboG_Af /= diffusionPriorScalar; } // Ewens' Sampling Formula long double priorProbabilityOfGenotypeComboAf = alleleFrequencyProbabilityln(combo->countFrequencies(), theta); long double priorProbabilityOfGenotypeCombo = priorProbabilityOfGenotypeComboG_Af + priorProbabilityOfGenotypeComboAf; long double priorComboProb = priorProbabilityOfGenotypeCombo + combo->prob + priorObservationExpectationProb; return GenotypeComboResult(combo, priorComboProb, combo->prob, priorProbabilityOfGenotypeCombo, priorProbabilityOfGenotypeComboG_Af, priorProbabilityOfGenotypeComboAf, priorObservationExpectationProb); } void genotypeCombinationsPriorProbability( vector& genotypeComboProbs, vector& bandedCombos, Allele& refAllele, long double theta, bool pooled, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { for (vector::iterator c = bandedCombos.begin(); c != bandedCombos.end(); ++c) { GenotypeCombo* combo = &*c; genotypeComboProbs.push_back( genotypeCombinationPriorProbability( combo, refAllele, theta, pooled, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar)); } } freebayes-1.3.6/contrib/freebayes/GenotypePriors.h000066400000000000000000000035011417247743000222450ustar00rootroot00000000000000#ifndef __GENOTYPE_PRIORS_H #define __GENOTYPE_PRIORS_H #include #include "Allele.h" #include "Genotype.h" #include "Multinomial.h" #include "CNV.h" #include "Utility.h" using namespace std; map countAlleles(vector& genotypeCombo); map countFrequencies(vector& genotypeCombo); long double alleleFrequencyProbability(const map& alleleFrequencyCounts, long double theta); long double alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta); long double __alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta); long double probabilityGenotypeComboGivenAlleleFrequencyln(GenotypeCombo& genotypeCombo, Allele& allele); class AlleleFrequencyProbabilityCache : public map, long double> { public: long double alleleFrequencyProbabilityln(const map& counts, long double theta) { map, long double>::iterator p = find(counts); if (p == end()) { long double pln = __alleleFrequencyProbabilityln(counts, theta); insert(make_pair(counts, pln)); return pln; } else { return p->second; } } }; GenotypeComboResult genotypeCombinationsPriorProbability( GenotypeCombo* combo, Allele& refAllele, long double theta, bool pooled, bool obsBinomialPriors, bool alleleBalancePriors, long double diffusionPriorScalarln); void genotypeCombinationsPriorProbability( vector& genotypeComboProbs, vector& bandedCombos, Allele& refAllele, long double theta, bool pooled, bool obsBinomialPriors, bool alleleBalancePriors, long double diffusionPriorScalarln); #endif freebayes-1.3.6/contrib/freebayes/alleles.cpp000066400000000000000000000051131417247743000212310ustar00rootroot00000000000000// alleles.cpp // outputs a json-formatted stream of alleles over target regions // // Erik Garrison // Marth Lab, Boston College // July 14, 2010 // // standard includes //#include #include #include #include #include #include #include #include #include #include // private libraries #include "BamReader.h" #include "Fasta.h" #include "TryCatch.h" #include "Parameters.h" #include "Allele.h" #include "AlleleParser.h" #include "split.h" #include "multichoose.h" #include "multipermute.h" using namespace std; // Allele object recycling: // // We use the Allele freelist for performance reasons. When an Allele object // is destroyed, it is pushed onto this freelist. When a new Allele object is // created, new first checks if we have a free Allele object on the freelist. // Because we are dynamically linked, we have to declare the freelist here, // although it exists as a static member of the Allele class. // AlleleFreeList Allele::_freeList; int main (int argc, char *argv[]) { AlleleParser* parser = new AlleleParser(argc, argv); list alleles; int allowedAlleleTypes = ALLELE_REFERENCE | ALLELE_SNP | ALLELE_INSERTION | ALLELE_DELETION; map > sampleGroups; while (parser->getNextAlleles(sampleGroups, allowedAlleleTypes)) { int coverage = countAlleles(sampleGroups); // skips 0-coverage regions if (coverage == 0) continue; // report in json-formatted stream // cout << "{\"sequence\":\"" << parser->currentTarget->seq << "\"," << "\"total coverage\":" << coverage << "," << "\"position\":" << parser->currentPosition + 1 << "," /// XXX basing somehow is 1-off... << "\"reference base\":\"" << parser->currentReferenceBase << "\"," //<< "\"raDepth\":" << parser->registeredAlleles.size() << "," << "\"samples\":{"; // TODO ... quality (~pSnp) bool suppressComma = true; // output flag for (map >::iterator sample = sampleGroups.begin(); sample != sampleGroups.end(); ++sample) { if (!suppressComma) { cout << ","; } else { suppressComma = false; } cout << "\"" << sample->first << "\":{" << "\"coverage\":" << sample->second.size() << ",\"alleles\":" << tojson(sample->second) << "}"; } cout << "}}" << endl; } delete parser; return 0; } freebayes-1.3.6/contrib/freebayes/bamfiltertech.cpp000066400000000000000000000064501417247743000224260ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include "BamAlignment.h" #include "BamReader.h" #include "BamWriter.h" #include "split.h" using namespace std; using namespace BamTools; int main(int argc, char** argv) { if (argc == 1) { cerr << "usage: " << argv[0] << " [technology name] [ [technology name] ... ]" << endl; cerr << "filters BAM file piped on stdin for reads generated by a sequencing technology listed on the command line" << endl; return 1; } map technologies; for (int i = 1; i < argc; ++i) { technologies[argv[i]] = true; } BamReader reader; if (!reader.Open("stdin")) { cerr << "Could not open stdin for reading" << endl; return 1; } // retrieve header information map readGroupToTechnology; string bamHeader = reader.GetHeaderText(); vector headerLines = split(bamHeader, '\n'); for (vector::const_iterator it = headerLines.begin(); it != headerLines.end(); ++it) { // get next line from header, skip if empty string headerLine = *it; if ( headerLine.empty() ) { continue; } // lines of the header look like: // "@RG ID:- SM:NA11832 CN:BCM PL:454" // ^^^^^^^\ is our sample name if ( headerLine.find("@RG") == 0 ) { vector readGroupParts = split(headerLine, "\t "); string tech; string readGroupID; for (vector::const_iterator r = readGroupParts.begin(); r != readGroupParts.end(); ++r) { vector nameParts = split(*r, ":"); if (nameParts.at(0) == "PL") { tech = nameParts.at(1); } else if (nameParts.at(0) == "ID") { readGroupID = nameParts.at(1); } } if (tech.empty()) { cerr << " could not find PL: in @RG tag " << endl << headerLine << endl; return 1; } if (readGroupID.empty()) { cerr << " could not find ID: in @RG tag " << endl << headerLine << endl; return 1; } //string name = nameParts.back(); //mergedHeader.append(1, '\n'); //cerr << "found read group id " << readGroupID << " containing sample " << name << endl; readGroupToTechnology[readGroupID] = tech; } } // open writer, uncompressed BAM BamWriter writer; bool writeUncompressed = true; if ( !writer.Open("stdout", bamHeader, reader.GetReferenceData(), writeUncompressed) ) { cerr << "Could not open stdout for writing." << endl; return 1; } BamAlignment alignment; while (reader.GetNextAlignment(alignment)) { string name; if (alignment.GetTag("RG", name)) { if (technologies.find(readGroupToTechnology[name]) != technologies.end()) { //cout << name << " " << readGroupToTechnology[name] << endl; writer.SaveAlignment(alignment); } } } reader.Close(); writer.Close(); return 0; } freebayes-1.3.6/contrib/freebayes/dummy.cpp000066400000000000000000000015011417247743000207400ustar00rootroot00000000000000// alleles.cpp // outputs a json-formatted stream of alleles over target regions // // Erik Garrison // Marth Lab, Boston College // July 14, 2010 // // standard includes //#include #include #include #include #include #include #include #include #include #include // private libraries #include "BamReader.h" #include "Fasta.h" #include "TryCatch.h" #include "Parameters.h" #include "Allele.h" #include "AlleleParser.h" #include "multichoose.h" #include "multipermute.h" using namespace std; AlleleFreeList Allele::_freeList; int main (int argc, char *argv[]) { AlleleParser* parser = new AlleleParser(argc, argv); while (parser->dummyProcessNextTarget()) { } delete parser; return 0; } freebayes-1.3.6/contrib/freebayes/levenshtein.cpp000066400000000000000000000035641417247743000221440ustar00rootroot00000000000000// Levenshtein Distance Algorithm: C++ Implementation // by Anders Sewerin Johansen // http://www.merriampark.com/ldcpp.htm #include #include int levenshteinDistance(const std::string source, const std::string target) { // Step 1 const int n = source.length(); const int m = target.length(); if (n == 0) { return m; } if (m == 0) { return n; } // Good form to declare a TYPEDEF typedef std::vector< std::vector > Tmatrix; Tmatrix matrix(n+1); // Size the vectors in the 2.nd dimension. Unfortunately C++ doesn't // allow for allocation on declaration of 2.nd dimension of vec of vec for (int i = 0; i <= n; i++) { matrix[i].resize(m+1); } // Step 2 for (int i = 0; i <= n; i++) { matrix[i][0]=i; } for (int j = 0; j <= m; j++) { matrix[0][j]=j; } // Step 3 for (int i = 1; i <= n; i++) { const char s_i = source[i-1]; // Step 4 for (int j = 1; j <= m; j++) { const char t_j = target[j-1]; // Step 5 int cost; if (s_i == t_j) { cost = 0; } else { cost = 1; } // Step 6 const int above = matrix[i-1][j]; const int left = matrix[i][j-1]; const int diag = matrix[i-1][j-1]; const int cell = min( above + 1, min(left + 1, diag + cost)); // Step 6A: Cover transposition, in addition to deletion, // insertion and substitution. This step is taken from: // Berghel, Hal ; Roach, David : "An Extension of Ukkonen's // Enhanced Dynamic Programming ASM Algorithm" // (http://www.acm.org/~hlb/publications/asm/asm.html) if (i>2 && j>2) { int trans=matrix[i-2][j-2]+1; if (source[i-2]!=t_j) trans++; if (s_i!=target[j-2]) trans++; if (cell>trans) cell=trans; } matrix[i][j]=cell; } } // Step 7 return matrix[n][m]; } freebayes-1.3.6/contrib/htslib/000077500000000000000000000000001417247743000164245ustar00rootroot00000000000000freebayes-1.3.6/contrib/htslib_config/000077500000000000000000000000001417247743000177515ustar00rootroot00000000000000freebayes-1.3.6/contrib/htslib_config/config.h000066400000000000000000000005011417247743000213630ustar00rootroot00000000000000// freebayes htslib configuration // // This file is used when building a local htslib. The local version has // LZMA CRAM support. // #define HAVE_LIBBZ2 1 // may add BZ2 support for CRAM later #define HAVE_LIBLZMA 1 #ifndef __APPLE__ #define HAVE_LZMA_H 1 #endif #define HAVE_DRAND48 1 // #define HAVE_LIBCURL 1 freebayes-1.3.6/contrib/htslib_config/config_vars.h000066400000000000000000000002741417247743000224250ustar00rootroot00000000000000#define HTS_CC "gcc" #define HTS_CPPFLAGS "" #define HTS_CFLAGS "-g -Wall -O2 -fvisibility=hidden" #define HTS_LDFLAGS "-fvisibility=hidden" #define HTS_LIBS "-lz -lm -lbz2 -llzma -lcurl" freebayes-1.3.6/contrib/htslib_config/version.h000066400000000000000000000001161417247743000216050ustar00rootroot00000000000000#define HTS_VERSION_TEXT "freebayes htslib" #define HTSCODECS_VERSION_TEXT "" freebayes-1.3.6/examples/000077500000000000000000000000001417247743000153155ustar00rootroot00000000000000freebayes-1.3.6/examples/freebayes-env.yaml000066400000000000000000000001551417247743000207350ustar00rootroot00000000000000channels: - bioconda - conda-forge dependencies: - freebayes>=1.3.4 - bcftools=1.11 - vcflib=1.0.0 freebayes-1.3.6/examples/pipeline.sh000066400000000000000000000016121417247743000174560ustar00rootroot00000000000000#!/bin/bash outdir=OUTPUT mkdir -p $outdir reference=REFERENCE.fasta bamlist=BAMFILENAMES.txt cnvmap=CNVMAP.bed region=REGION time /share/home/erik/bin/bamtools merge -region $region \ $(for file in $(cat $bamlist); do echo " -in "$file; done) \ | time /share/home/erik/bin/ogap -z -R 25 -C 20 -Q 20 -S 0 -f $reference \ | time /share/home/erik/bin/bamleftalign -f $reference \ | time /share/home/erik/bin/samtools calmd -EAru - $reference 2>/dev/null \ | time /share/home/erik/bin/freebayes \ --min-alternate-count 2 \ --min-alternate-qsum 40 \ --pvar 0.0001 \ --use-mapping-quality \ --posterior-integration-limits 1,3 \ --genotype-variant-threshold 4 \ --site-selection-max-iterations 3 \ --genotyping-max-iterations 25 \ --max-complex-gap 3 \ --cnv-map $cnvmap \ --stdin \ --region $region \ -f $reference \ | gzip >$outdir/$region.vcf.gz freebayes-1.3.6/examples/snakemake-freebayes-parallel.smk000066400000000000000000000052671417247743000235370ustar00rootroot00000000000000## A simple example snakemake .smk file for parallelising freebayes ## Uses a fasta_generate_regions to split the genome into regions of equal size based on the .fai index ## As snakemake automatically moves each cpu core to the next genome chunk, this works out faster ## than the freebayes-parallel wrapper. ## This .smk file assumes we have a list of the bam files called bam.list ## This .smk file splits the genome by chromosome, which of course, is not necessary. ## One will want to edit the paths (for example, the path to bam files) # these parameters should usually be stored in the snakemake configuration file (config.yaml) and accessed e.g. config['ref'] samples = ['SampleA', 'SampleB', 'SampleC'] reference = "path/to/reference" chroms = [1,2,3] nchunks = 9 bamlist = "path/to/bam.list" chunks = list(range(1,nchunks+1)) rule GenomeIndex: input: ref = reference output: idx = reference + ".fai" log: "logs/GenomeIndex.log" wrapper: "v0.69.0/bio/samtools/faidx" rule GenerateFreebayesRegions: input: ref_idx = reference, index = reference + ".fai", bams = expand("resources/alignments/{sample}.bam", sample=samples) output: regions = expand("resources/regions/genome.{chrom}.region.{i}.bed", chrom=chroms, i = chunks) log: "logs/GenerateFreebayesRegions.log" params: chroms = chroms, chunks = chunks conda: "../envs/freebayes-env.yaml" script: # "../scripts/GenerateFreebayesRegions.R" # This is located in the scripts/ directory of freebayes "../scripts/fasta_generate_regions.py --chunks --bed resources/regions/genome --chromosome {params.chroms} {input.index} {params.chunks}" rule VariantCallingFreebayes: input: bams = expand("resources/alignments/{sample}.bam", sample=samples), index = expand("resources/alignments/{sample}.bam.bai", sample=samples), ref = reference, samples = bamlist, regions = "resources/regions/genome.{chrom}.region.{i}.bed" output: temp("results/variants/vcfs/{chrom}/variants.{i}.vcf") log: "logs/VariantCallingFreebayes/{chrom}.{i}.log" conda: "../envs/freebayes-env.yaml" threads:1 shell: "freebayes -f {input.ref} -t {input.regions} -L {input.samples} > {output} 2> {log}" rule ConcatVCFs: input: calls = expand("results/variants/vcfs/{{chrom}}/variants.{i}.vcf", i=chunks) output: "results/variants/vcfs/variants.{chrom}.vcf" log: "logs/ConcatVCFs/{chrom}.log" conda: "../envs/freebayes-env.yaml" threads:4 shell: "bcftools concat {input.calls} | vcfuniq > {output} 2> {log}"freebayes-1.3.6/guix.scm000066400000000000000000000060541417247743000151640ustar00rootroot00000000000000;; To use this file to build HEAD of freebayes: ;; ;; guix build -f guix.scm ;; ;; To get a development container ;; ;; guix shell -C -D -f guix.scm ;; ;; For the tests you need /usr/bin/env. Inside the container: ;; ;; mkdir -p /usr/bin ; ln -s $GUIX_ENVIRONMENT/bin/env /usr/bin/env (use-modules ((guix licenses) #:prefix license:) (guix gexp) (guix packages) (guix git-download) (guix build-system meson) (gnu packages algebra) (gnu packages base) (gnu packages compression) (gnu packages bioinformatics) (gnu packages build-tools) (gnu packages curl) (gnu packages llvm) (gnu packages ninja) (gnu packages parallel) (gnu packages perl) (gnu packages perl6) (gnu packages pkg-config) (srfi srfi-1) (ice-9 popen) (ice-9 rdelim)) (define %source-dir (dirname (current-filename))) (define %git-commit (read-string (open-pipe "git show HEAD | head -1 | cut -d ' ' -f 2" OPEN_READ))) (define-public freebayes-git (package (name "freebayes-git") (version (git-version "1.3.6" "HEAD" %git-commit)) (source (local-file %source-dir #:recursive? #t)) (build-system meson-build-system) (propagated-inputs `(("perl" ,perl) ; for testing ("grep" ,grep) ; for testing ("samtools" ,samtools) ; for testing ("vcflib" ,vcflib) ; for freebayes-parallel ("which" ,which) ; for version ("htslib" ,htslib) ; does work, but lacks codecs ("tabixpp" ,tabixpp) ; for htslib ("bzip2-static" ,bzip2 "static") ; libz2 part of htslib for static builds ("xz-static" ,xz "static") ; for static builds ("zlib-static" ,zlib "static"))) (native-inputs `( ("meson" ,meson) ("ninja" ,ninja) ("pkg-config" ,pkg-config) )) (inputs `( ;; ("clang" ,clang) ; add this to test clang builds ;; ("lld" ,lld) ; add this to test clang builds ("bc" ,bc) ; for tests ("coreutils" ,coreutils) ; for echo and env in tests ("curl" ,curl) ("perl6-tap-harness" ,perl6-tap-harness) ; for tests ("parallel" ,parallel) ; for freebayes-parallel ("zlib" ,zlib) ("xz" ,xz) ; liblzma part of htslib ("bzip2" ,bzip2) ; libz2 part of htslib )) (arguments `(#:phases (modify-phases %standard-phases ;; add timeout extension for slower processors (replace 'check (lambda _ (invoke "meson" "test" "--timeout-multiplier" "5")))))) (synopsis "freebayes haplotype-based genetic variant caller") (description "freebayes is a Bayesian genetic variant detector designed to find small polymorphisms, specifically SNPs (single-nucleotide polymorphisms), indels (insertions and deletions), MNPs (multi-nucleotide polymorphisms), and complex events (composite insertion and substitution events) smaller than the length of a short-read sequencing alignment.") (home-page "https://github.com/freebayes/freebayes") (license license:expat))) freebayes-git freebayes-1.3.6/intervaltree/000077500000000000000000000000001417247743000162035ustar00rootroot00000000000000freebayes-1.3.6/meson.build000066400000000000000000000213071417247743000156440ustar00rootroot00000000000000# Meson build definition # # meson --buildtype [debug|release] [--default-library static] build/ # meson test -C build / # # Meson builds with locally installed htslib, vcflib, tabixpp and seqlib. # If one is missing it should pick up the sources from git submodules. # # to compile htslib with local sources use # # meson build -Dprefer_system_deps=false # # to build static binary for release # # meson build -Dstatic=true -Dprefer_system_deps=false --buildtype release project('freebayes', ['cpp', 'c'], version : '1.3.6', default_options : ['warning_level=1', 'cpp_std=c++14', 'optimization=3']) static_build = get_option('static') cc = meson.get_compiler('cpp') zlib_dep = dependency('zlib', static: static_build) lzma_dep = dependency('liblzma', static: static_build) thread_dep = dependency('threads', static: static_build) tabixpp_dep = cc.find_library('tabixpp', required: false, static: static_build) # to compile htslib use # meson build -Dprefer_system_deps=false # otherwise it tries to pick up the local system libs if get_option('prefer_system_deps') htslib_dep = dependency('htslib', static: static_build, required: false) tabixpp_dep = cc.find_library('tabixpp', static: static_build, required: false) vcflib_dep = dependency('libvcflib', static: static_build, required: false) seqlib_dep = dependency('libseqlib', static: static_build, required: false) else # uses the local git submodules htslib_dep = dependency('', required : false) tabixpp_dep = dependency('', required : false) vcflib_dep = dependency('', required : false) seqlib_dep = dependency('', required : false) endif # for setting a warning_level on the external code in custom_* targets below warn_quiet = ['warning_level=0'] # optionally build from source # note that the build version adds support for lzma and bzip2 in CRAM if not htslib_dep.found() htslib_inc = include_directories( 'contrib/htslib', 'contrib/htslib_config', 'contrib/htslib/cram', ) htslib_src = files( 'contrib/htslib/tbx.c', # used by vcflib 'contrib/htslib/bgzf.c', 'contrib/htslib/sam.c', 'contrib/htslib/hts.c', 'contrib/htslib/hfile.c', # 'contrib/htslib/hfile_net.c', # 'contrib/htslib/knetfile.c', 'contrib/htslib/textutils.c', 'contrib/htslib/thread_pool.c', 'contrib/htslib/region.c', 'contrib/htslib/hts_os.c', 'contrib/htslib/cram/cram_index.c', 'contrib/htslib/cram/cram_io.c', # the older 'contrib/htslib/cram/sam_header.c', was renamed to 'contrib/htslib/header.c', 'contrib/htslib/cram/pooled_alloc.c', 'contrib/htslib/cram/string_alloc.c', 'contrib/htslib/md5.c', 'contrib/htslib/cram/cram_encode.c', 'contrib/htslib/cram/cram_stats.c', 'contrib/htslib/cram/cram_codecs.c', 'contrib/htslib/cram/cram_decode.c', # 'contrib/htslib/cram/cram_samtools.c', 'contrib/htslib/kstring.c', 'contrib/htslib/cram/cram_external.c', # 'contrib/htslib/cram/files.c', 'contrib/htslib/cram/mFILE.c', 'contrib/htslib/faidx.c', 'contrib/htslib/hts_expr.c', 'contrib/htslib/htscodecs/htscodecs/rANS_static.c', 'contrib/htslib/htscodecs/htscodecs/arith_dynamic.c', 'contrib/htslib/htscodecs/htscodecs/fqzcomp_qual.c', 'contrib/htslib/htscodecs/htscodecs/htscodecs.c', 'contrib/htslib/htscodecs/htscodecs/rANS_static.c', 'contrib/htslib/htscodecs/htscodecs/tokenise_name3.c', 'contrib/htslib/cram/open_trace_file.c', 'contrib/htslib/multipart.c', 'contrib/htslib/htscodecs/htscodecs/rANS_static4x16pr.c', 'contrib/htslib/htscodecs/htscodecs/pack.c', 'contrib/htslib/htscodecs/htscodecs/rle.c', ) htslib_lib = static_library('custom_htslib', htslib_src, include_directories : htslib_inc, override_options : warn_quiet) htslib_dep = declare_dependency(link_with : htslib_lib, include_directories : htslib_inc) else htslib_inc = [] endif if not tabixpp_dep.found() tabixpp_inc = include_directories('vcflib/tabixpp') tabixpp_src = files('vcflib/tabixpp/tabix.cpp') tabixpp_lib = static_library('custom_tabixpp', tabixpp_src, include_directories : [tabixpp_inc, htslib_inc], override_options : warn_quiet) tabixpp_dep = declare_dependency(link_with : tabixpp_lib, include_directories : tabixpp_inc) else tabixpp_inc = [] endif if not vcflib_dep.found() vcflib_inc = include_directories( 'vcflib/src', 'vcflib/smithwaterman', 'vcflib/multichoose', 'vcflib/filevercmp', 'vcflib/fastahack', ) vcflib_src = files( 'vcflib/src/Variant.cpp', 'vcflib/smithwaterman/SmithWatermanGotoh.cpp', 'vcflib/smithwaterman/disorder.cpp', 'vcflib/smithwaterman/Repeats.cpp', 'vcflib/smithwaterman/LeftAlign.cpp', 'vcflib/smithwaterman/IndelAllele.cpp', 'vcflib/fastahack/Fasta.cpp', 'vcflib/src/split.cpp', ) vcflib_lib = static_library('custom_vcflib', vcflib_src, include_directories : [htslib_inc, tabixpp_inc, vcflib_inc], override_options : warn_quiet) vcflib_dep = declare_dependency(link_with : vcflib_lib, include_directories : vcflib_inc) endif if not seqlib_dep.found() seqlib_inc = include_directories( 'contrib', 'contrib/SeqLib', ) seqlib_src = files( 'contrib/SeqLib/src/BamReader.cpp', 'contrib/SeqLib/src/BamRecord.cpp', 'contrib/SeqLib/src/BamHeader.cpp', 'contrib/SeqLib/src/BamWriter.cpp', 'contrib/SeqLib/src/GenomicRegion.cpp', 'contrib/SeqLib/src/ssw_cpp.cpp', 'contrib/SeqLib/src/ssw.c', ) seqlib_lib = static_library('custom_seqlib', seqlib_src, include_directories : [htslib_inc, vcflib_inc, seqlib_inc], override_options : warn_quiet) seqlib_dep = declare_dependency(link_with : seqlib_lib, include_directories : seqlib_inc) endif # # Sources # freebayes_common_src = files( 'src/Allele.cpp', 'src/AlleleParser.cpp', 'src/BedReader.cpp', 'src/Bias.cpp', 'src/CNV.cpp', 'src/Contamination.cpp', 'src/DataLikelihood.cpp', 'src/Dirichlet.cpp', 'src/Ewens.cpp', 'src/FBFasta.cpp', 'src/Genotype.cpp', 'src/IndelAllele.cpp', 'src/LeftAlign.cpp', 'src/Marginals.cpp', 'src/Multinomial.cpp', 'src/NonCall.cpp', 'src/Parameters.cpp', 'src/Result.cpp', 'src/ResultData.cpp', 'src/Sample.cpp', 'src/SegfaultHandler.cpp', 'src/Utility.cpp', ) freebayes_src = files('src/freebayes.cpp') bamleftalign_src = files('src/bamleftalign.cpp') # Include paths incdir = include_directories( 'src', 'ttmath', ) extra_cpp_args = cc.get_supported_arguments( '-fpermissive', '-Wno-reorder', '-Wno-sign-compare', '-Wno-unused-variable', '-Wno-unused-but-set-variable', ) freebayes_lib = static_library( 'freebayes_common', freebayes_common_src, include_directories : incdir, cpp_args : extra_cpp_args, dependencies : [zlib_dep, lzma_dep, thread_dep, htslib_dep, tabixpp_dep, vcflib_dep, seqlib_dep], install : false, ) if static_build link_arguments = '-static' else link_arguments = [] endif executable('freebayes', freebayes_src, include_directories : incdir, cpp_args : extra_cpp_args, link_args: link_arguments, dependencies: [zlib_dep, lzma_dep, thread_dep, htslib_dep, tabixpp_dep, vcflib_dep, seqlib_dep], link_with : freebayes_lib, install: true ) executable('bamleftalign', bamleftalign_src, include_directories : incdir, cpp_args : extra_cpp_args, link_args: link_arguments, dependencies: [zlib_dep, lzma_dep, thread_dep, htslib_dep, vcflib_dep, seqlib_dep], link_with : freebayes_lib, install: true ) testdir = meson.current_source_dir()+'/test' prove = find_program('prove') test('T00', prove, args : ['-e','bash','-v','t/00_region_and_target_handling.t'], workdir: testdir) test('T01', prove, args : ['-e','bash','-v','t/01_call_variants.t'], workdir : testdir ) test('T01b', prove, args : ['-e','bash','-v','t/01b_call_variants.t'], workdir : testdir ) test('T02', prove, args : ['-e','bash','-v','t/02_multi_bam.t'], workdir : testdir ) test('T03', prove, args : ['-e','bash','-v','t/03_reference_bases.t'], workdir: testdir ) freebayes-1.3.6/meson_options.txt000066400000000000000000000001571417247743000171370ustar00rootroot00000000000000option('prefer_system_deps', type : 'boolean', value : true) option('static', type : 'boolean', value : false) freebayes-1.3.6/paper/000077500000000000000000000000001417247743000146065ustar00rootroot00000000000000freebayes-1.3.6/paper/.gitignore000066400000000000000000000000331417247743000165720ustar00rootroot00000000000000main.aux main.bbl main.blg freebayes-1.3.6/paper/1000G_performance_comparison.png000066400000000000000000001706771417247743000226400ustar00rootroot00000000000000PNG  IHDR?piCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYsgR IDATxE'$z'CTD@T,`?EX@AQDDAE@z ^!;/f{w{'ݻ;;ݩgΜQ՜DD@D@D@D@D@D@D@D@D@F`GD@D@D@D@D@D@D@D@D@ ҁ@% HYϪSi@D@D@D@D@D@D@D@D@DgKH4 " " " " " " " " "PIR~VD@D@D@D@D@D@D@D@D@T$)?+YR" " " " " " " " " "1bģEQxK܁@,ynV@ o7=ު冒uuoP>-" "06j}>pް!W~P ," " " " " " " " " )g'4=D?E@D@D@D@D@D@D@D@D@'|SEL"VD@D@D@D@D@D@D@D@D4 |KrzxmF1mbzL*[Xy)@ ynE u$cws[`JnГ " " 50V~.fn" ^c;b9`'*(ןz.(W9G{_fuKV kU G}E@D4M," " " " " " " " "К)@ HYGhM@֌BD@D@D@D@D@D@D@D@D,G#& gkF !" " " " " " " " "PBR~E@D@D@D@D@D@D@D@D@Z5#(!)?K" " " " " " " " "  HٚB%hzdlͨk!_p]?r?W~x;]S$OZJ;ֽ'P">^Os-H+&}^q1ýwRVYj6 Q{]{dZҿ˩lFI`8\h9݁;Fo5=kе =\2}4-Oc-#RJ{Αn%uޜ&=yWUsɸcϼxʍMMM#Q]~|nt/>=+iH^}^ו{ =#o?2L` K}ډBT@(?Qb|nFO7c qLO9ܣ>iPrm-=7x/t+BP:׺F#-#2Ů"]w:+,ޱ֘ݏ8ΏbK:+}ePٗp/Vv,vc7TD$v+]6_><{7{(:gmQ9jE< qn[p9M|ޝ{LwH^}^>~ V^Qbq9I '$G}h6I5䓓 z犩_6spmE)[yDEJ!H{%wϻ{!tpCL/J_k]Oou{޹"FvIk` o>u+rON}ͽ1}#lbnuV^PJ`-w~3 Kwr\gɪzOt =K=c:ѫ/P0_Oy;lt~/5[8>JShi+%0X麣E67ݷ{tD"0@VrVelV{Z;{f\B.^oⲪl^"0vy>ު7ߚ~~u3ޮ嗘/X|KO漉UzT~snsLovWLӕb%6^֭OmkvN~%_ox?ֵ~o|~P c3PbX֣l-Go׃2gW>o.7%7ON5 4]3}ie;g^|]yS!!_m1wՏig+]Q=iww>^|m'}]m!立χY/_c0KpΏ]sp{o|%U\d r;n>_ ӡ3C3}}=}pA3s~&.?H2n|~!1|Oy_ă)1zŐ}Sih!,lV e vO=7˨sypEeg}v]08m_,X%+u`&VCӣϽwЭL|yLIΛ_q6*=Z߅9+g_iY:W-y¾lj. _O Pcy 捯U^ouޞ'OަWϣw>^Fy6k m5oK/6opr/{oy9MvLWm?xR]p am-{ބTkyo-rm#μ= f.텵2_O<;G}RUm7z4|Nێ_Cyʱ|ŷO/pHǥ<6k_Olk.y!r9w!Lz2_en}ت}J« 4.HaXX;%ГϷ?o qDXI߰M}}jW _A}bnUq9Q]m'm?m!;.(b^8_vyA;J$;W7StBLXsLPVomI`A(qDNGG(;?^g{P" 7i%׆}:z]h|cep:O7lH','gВ ;} -<-~jw&y$4DLw-oMor/o/;S^>Q]x; }jVF1ӭ _ȳnt%_y5fG~}0i"CVcWL3zg54Ga` [F{b׶W e(ߵRR~#狴,遛RCr/oz`j[Ͷ,[)?1b*2֗a\3O=.v<}ԁY}czW' |k~h"0~~}@O?Zw<Ù殾B2yF2J #_ kUnrh2sx+>J #{B~)oo be//??9޷ɲΛ.*tM|7w!_⮼ߧ 5)?JFsCn>lWJxd,&sx[zO][64LzO[_>㤜ł)_EM+`P`^θ?_"Eݫ'o{]qSa۬ʬX^yk[yt|c eOe>av|ez<+ >W|86v3&?8GPՊad‚yMLn:^ͫofg3O?AV0Vo_wϳ.^v/^o'Lێˏci!XyY|meWPU>}/#̤1suOƛMq> =}5Ox Wrij'uR'S/up aP@x^1ԭg^P12P#3 %? Η_ۨ&fuI2 J4y4/ 6<G>J4⤠(:iVX`љ_t_h<9% bOT˔h7]C _I,E la4V(AQzcw=jXz|A֘sշ,S1754,~`')ia K<;H޲:Nt'S`:osgYx/[d$=o<2dkoΪ']S _g/F*!o0%0̊KLJ?>MΎ?am#xc)svJF’(~ABsw![O3`_̏l2v3!n2oP#"4ʙ:k;`IW%f)^^Bx3k&vӵe) AO0pKއ MQKcb#SP#гO>V(?;ŋ6 YS9geoSgYp^֤ogS;B!3> oJ<' Y"4R܂$޷cɭ)R߶d&ނҨO1-&m?[jlgKL>zw=$褥 ۙfJ9F7_|: l#-ĺ|?l2i.my&M4cIZNY1B=Zx%,>l˔;ܩ`/m~!wpbEʱ"v=ʎmjD/8ɠNx}zqa*zCZ~PRpi[Kbj7al?v/R{ $ۻ6݇0yDEY||`;3O.$MFՒ<$\fϓ &ir{ ylµ'-\mS}gjV&)?gp@N2$>I9іy;F(xbutF|kf/Y^0:75ˑ{;/-+\SP@X! E Nƪ6ZT i2gbmRh٢3ݴȖP}}WLS+q='+ҒP/4!omTָ`1 |}jGxƢGnr,vn-QzV oO;5c̼N$vj2,s9N~VBze|=^ HzշF_^4_߽M}w˾ɗm#y.VɯŁ m\4of^kvX&ɴkzݾ@}^9憃}X`||}s⎌t\}B SUP/Fl7J.IjDJ4XD;[@ ~Ӄ}b½fe^#3qW}k#((q%~E9[ UY@"),oF{v5ai8fq#te7,JD fx飶z>3^ua5 L` }J6pt1wE5͙-=Sֶշ,Yhvf` n"eu2~wV (e) `{G7ipSc&#gRVe٪~epGavFGYG}.MfhU sשr1OY0U2_}3,dyqDWDC4=`Sқ'}\M%B΀!%^şҳFQڂ('>5M(냕i,KߪIˮѶn, FX 66thwgU-jV^ku_\`,A]Ί 칎oԓ) ȋeP/K}Ufbhv ݳvL,7&Z$NY}#"XzŰ Nz$E!_ :?/DTDۖmBF IDAT 2|?bA y<qA\f_ [>E5~--}8_]nE`s9tŃ\;0it`6}_5c׷EaE^R_!*DL=V2q*+.=H_z}]:U^Qo޳2AǓs}4=YexpEiΓuXL|;r?톼WWMmΑWc#yk[YKV-fJM[Ύ%O|>ӈsLi ۫a~Q~?fY>ýKÓZEZ'˳{B9>Aϼ5 ʫ<$ᓒVy~y Å=YmhV;NuA2 RaowLo`b` AB/[uFBRXS԰)p(e5'a8σsqamqVt?d5B>Yqei/=.?no7(K]}Nk:uOErw`i7WatUY&Yaj(Rit`!TqlD1'ɧ?M?7$6o+ힶ%L933ζLc<&dN{&\;i6O~!δN;s⧎s(E;ى7v[nwG1Ɨ?n'{2:O9V0牏k[Vy62d{)GQc}7yɲʺk,ᾶW5zOP{Te{Ovo泧Zm@Es\Ƙۘ8VijqS|)Nrd&%WRh[剴c\'z@XhxbZWz%q4Y=Ē+='bjVkޚLζҶ5>Di^((GoYY|Vś9>yg?4ɛ_Ҟ;ϙR7Ytwi@%ksyʱʵi'>k[{i2קOOK{G{x97[ ;h&&Jl6򛸊~ہgy|,NvTV|e]m5 .yìvtyZZ|y) O$Isq.x|8l۪/@ҁ`\!;ЮնzJYOCߡyX7'}=]=GT3aHGW詤,KE@D@D@D@D@D@D@D@D@BìW_,3f'#Fqi+A"" =M't[j܂ .,"0N+ѣGT+&OgW" " E ULY)SWQ3~И~G"(}]}Nr{G^@O,&@;_]w ^m( osxb-?{ 1c^D@D@D@D@D@D@D@D@D` ^D@D@D@D@D@D@D@D@D;W*" " " " " " " " "0ۋtXE@D@D@D@D@D@D@D@D@Ct{;\s?n/" " " " " " " " "R~vbbR~E@D@D@D@D@D@D@D@D@C@s6m{衇o]'tSN֎l{キ}g^KbQ^{[c5UW]TZ7{wc:븅Zp$ܷmwM74\ۻ 6O*.z(I&73fs9PvҤI{qo[s5*L'{N<3Ǝg0s08Oe]֭nĈ^u`",Xbr͊+k`x^oV(x߅^8yJSO=>oZ˭ OOyWCĬZvmnwmZ2#OoiB7yPQ!yn[yu%tk[|Źuee&ys/|y2B1c8q{GBݸjѣG7 ɗ뮻nq~Pu].>NJ)]tQ6I|ZIx64d,Rdz!Q%\ xW^-{„ O{ثNk} _hkt:۸qWFT{eY&kuA]{Ỹw[t6/'xC?[o nwgS;Ő :.~o% wX=nUW]z#jH(F?mSꫯv_җB!>I{'[.>\}:Xy{=3o}[.GcqoX=#C^#B;?Bܧ~yаW;Um7tc=BXq3hjT)PnV1rrh r~v arwy{GS_?;묳Щ P/E޻e>o|/KP w`(shqie;^v?מ{a'tdv垕v۟'Hބ)sfI/3K2G>mѶB@((CK涛mn>p秽osz֑FAO}*d :e1|;e{(=MIB [o}c #tRI>u'X  .n:t;< L'x9F~i@lB? Xzu/BhLc_~<`A}e<ޓ rN4V/ ?OSV} >˳Y1vۥ*E+vz1/}Y3 >qO+gee:i/tvm`y6( _.9QQG^~?lB!q׾`xG7yXC9Ll N{g:̲ fw<׿;.ԟvZ`ڲ7i䫯_tЇB}{aUO~27c݅bfhq۩ci{aU*o ?XV{k'P+Hԧ &VEȇ pAl>, u@Y_|qh{^!kd0 %lvه[=$Sp2]%(t[oud4 J+rii? #Bh"XvLU?яOut@CACG*hc)w+T 4ykD;͖[n~c XcėiH`GU<ޗtEc,]U%\`t𶚢B#8!VO'ޥWt4,(VzWpg(2/~y;ÈϦ֖I}O=Ԡe*1X1RK((LHDE=[BUK/p{?li4:AKq[\z.-9*y_tQg63f : fG:i+}n1Ei '?cdV# RaX4f,!(Z `M SQ18{åG2Vs |r8b'\Q00Mߖ:yHۦ9zZɈ&HF<')A fm3I`!2L(2BCiL;akl#Fh#3}ǔqɸ}kbҐ $ QBp!171EH&4R EMw}CX+ \UIXIQou}V(יYU},bNL 'bhbjۼeBw/uoU'$:XLEN KǗx)21*'I[IEK/ CWT9,/P4f)4Cyt]=sI>bDr<e>"$1:[^zeXMAaY2=Fʆg1e8.?z(MC~ؔM:Mp:Ubx,X@kJ Xi03] dq(qL*%ݤ52ħSG[e> MHƁ_eF6ڐYZx㍃KSQv1J7'tPJJ/ X0y-$-᪊0iz؄)L? pmJȑw&am;O(hc=Lٮ:*bW4i2XC7((;QyZ0۱tVӞ231_ŀG Pbm}y ҘL뱩Pe_.TT#XKѱYwև.yx itƻ`C?̰H[ ~*s>L }tYqd76Ρ Ŕ .p,2+Ƃk#,Q0bY֠ue]0 OX_~ $f}3d鏣g6J@km*Dr-m3N鬛mSؘΉ)圉a`-yBf -:F6E3,D*2Kov ۞V~2]^Lo1Ǩh:8"CÚpm % "b!.Fut*Le;NV8Mݧ3H,cQ2-!!4Cl#:[ɵspMl|)OF:D}tJ%~cVf9żح2)AX*#XaA? wrnTP/LgʸʷT.3mw<3O\xI`Pe:qtx2;[][5~S=3 gԠ\NU"?Y#u"DS'ffY e}qx G[u['s)ñFknĒ'M``c oSו7Z\~uQHb>Ct8L}a`0fu 49ehcSbJ6Yڦ0Blpl,;{'+ɧ$n֒S;-n:Xwg-~fʶ[+}Lǭ%/ĬEr= EQnk6_Y;E_']gݫh&em٘qtO6[GzW^ye0<$TWX_E)ɺYfOGo;#E7}tb|XTaS"eM Jf%Y2mI {͏jdYin)eh3L 11 0;?N#mf0 Yy>nXl 湶a:6M>ԥ 1s?l z2 6 6NFz7c)mqh{wBFu"Ai40%3ۀ 4!@aC4g4IhtBhx1u 4bQR9J L?FM2\ɸM$#TE0X wemvM`4EIZOrH/‡ +P3EY$ :Cc g7TQL{w:*sO8e=qy+1zPOTV|,%TpZDlTs8gDb)dLqDz Mj%C|[q::ᄏݪe{8M?X;ioUPpk˶衇- :(;@",eȿ=cm qڌ(V^y倢}l"9K_0p) r\˶O~a N,~H@>i OztM0O1~f͢J}H9LBD]q) k\,0`Aܴ RTE沃<&LYR(S>VEW|G0;t&bf$obC?2o/}\+`,e̾۬. iH&/ V(76Y'=H D,FXTWhP/!W{uBzZ @F}i0GQޘe% #<2z Pw A>W"*(?yfDiI}>K4yLn\Khod!r 1ivh?PX'ޝmZhǓdXh02y⎽WOe8J2VHKi>Bm,i c;sUbIqH/f!fبq[+LʺNZ~l& %4Xbڠ=)& @S~֦ӯ`+A8fY7⡭gcfk5@#w^l(P&MX]/N+ƋL%M=',VF|\ˌK,hD_\ %(C   y_La,y^ T@Yk I䏎_aGK!w%-_yA;^-JW޷w$]XYH+X.+M^1H7+eqԣuo2WPnjl7iY"Iԩz5iQ&ԵKݼ '`k Y-:X`ɔiWe-h76XiI>p ʵ,ϥ՗YaH/hVV)cʼncqC |Y;_})ȇiF1kuaG3W`|b,ɤ =_V"2kmJy7g{}) W tNܟ!͈OޭF c{@c؛)=-LMG2K*rMNKfVBf8iz*U|w&,`Z6YT="2ҔmC7)Fe~s>igUQa]W>*Le(ZMQe>qZC5K8LIxq-9sieVX'-&j6g* ;,Ś WR ^ 8,MeX7d d)>|Q@ݶ)Mo6 yUU _7i/c" " " " " " " "iX8|,8nƍ3 dٟt-Ӆ+O"ҁ@% HYϪSi@D@D@D@D@D@D@D@D@DgKH4 " " " " " " " " "PIR~VD@D@D@D@D@D@D@D@D@FE0vآ( 3B#FpJƩD@DF{V]P/2#G[|ŕ?Yd E@DDdYGO@RD@D@D@D@D@D@D@D@DD,ң' g~V )" " " " " " " " "P"R~cQE@D@D@D@D@D@D@D@D@3?+()?K" " " " " " " " "  HB%XzTJ!E@D@D@D@D@D@D@D@D@JD@},=@~R~g" " " " " " " " " %" g>UD@D@D@D@D@D@D@D@D ?Q*p"K/ &G{ ?_~m7by晧p@D@D@D@D@D@D@D@D@+J+?n袋Z*ꩧ?^{[o;=cnwni?E࣏>j[i'Nt?[r%{?^=|e]1 n9wdž^xa /}{UVY-"{O{mW_u|;̙3CN8r! ùx =z[c5f)SԹ1ۮ3<.u+lܨQȂ>1c~}Kz_`Ӎ7Xb +ǧofφ:9眳~J;0$vZh~ƀeO?_~y뺹暫_8;@:#7߼(cP =C:&βHѲʛ~+9~z=åM_>i')b=V|U;nЇ:Pa`7섇-iFaw}ZkUΕW^YFR@+k_b~wb| >TmY|6}E__yW_}u8|[n-;k>1ּ4:B8W܆A{_;찆{\rwk_җj#GljH[e+bR_WPm6\~05W6 n)5|_?~Lo^Zꪫ ̨gXu`뭷sʧ`Vb-I2.jo'|҂TfیW$׼o 򗿤|z~ RǮ L|A=23ꑗlv;nn79Sj~-l=|/tV[52~H>NC=!\rw;<㭷X*~IY̸C/"ub8~wy!юпco .~lx.hOtܥWjE*$O) BH?B,gm Mnw޸U; /y~OA8p0>3w@ (g~z=rNނ#kK/tPvz{AQ&eyfmu^ziG3Ψwgd~7hΞ5V~zyV<5?U!(g)X8`^[®zvءEGa˸sEַU~+4Qg4姷 ӟt/8ҙ.;;3 }.>] =!]ѷ[2N ?\y,=N;k ;zPo6ޒ#&͞zꩁ!vҪ"͘ u !#hwr;Op-IHaqiK% zkGy~^]~5/(t5˟#-8X\:|5?S__:_n`(?_^fԉyt,姟-F09kނ.ԍPI?CYvs[O`vYm޲H.v*Oo~3 [}֖Mnw%ц߭K [nYC'fqgřz4=em9ahtY@ƕb*ϓN:SBh(GLE{N'D]ɫ% ؤH$+O,g)?Fab&/bPJ>OZsϵZCKV&J?>tvK:8%)Lo%MZ*&<2'>vm Trswu:$W7DPJkjԧ{Ou]ޒL2cwygCX9^<^3tg b8S떌m] S~)cg:S"I^$z,^ZO9f: t~0E//^HkyEļq(Q\ln[~b-P$ e㇊ l[e-"ಱJ>oF8_ג.oS~Rv¶&{V`1Ѝ{>0vKۤ2O0_׿G??|'k܁FGs^Y|~aXTkq|p tկܻ}{K¹կ~'?V'W;r^IG;c4J(3}}cq^iX߯~MP#$_B2 RYwAUpWJM'LƌSr[r~;~2ݢ\k&IfGW?ФXc[ƇKߊkxG -o^?7/(鎷b iC)iޢY&%:"=-БWW9sp(Z'3$G[|9oTeF+gNWwӪ\v>~lF}Xw>~ҪLv_)c҉n,Nl+ ԏ\~5 ̰:e*/YЦ4pO' [gCq9?' IDATweSkƹ?,VA% 4^ʰhh3y2 0(U҄αv?Ah QƠ|GXHEpʝ[@L*QXQf)YG>;g)3l o?ΤY¢uޤڡ$tP͚;zZ?/Lz@D7Ū$^(IGX h_rkjH_V _V;Kv_s1!e=i 4I_X)Ӭ,˺t:?-yBx#N"Vjb?6A~O S哧J;3F G !$޵L@'-M-ߛi)1̚>C;Vo'/BYƪС}?z7Cq~Ux8J*VGz'kfPTtr̒"{:#^e8Y+ԋXsfPb2 Jd,Q2]]zw˛? v"?~10 [Z`Xcbֶ@kYZO ub1~_A9@Bis9jF>Iݲ1_yW`,#1HdMEyd?)J %}%=icm۝O}(fdƧ-y?|W wAY3ю7ks~o1Yk |8"f NOp;J5>ǰ~ߊF;y<:#36Kl2^axz-";|gf_շ J ΂&?{eg '~%ě][- ˰r4i+ ]r;y)KUao?4;&`ݺyVeUf܃~B:*1r7'^v0l;[y#,j޵`˭?h_Bʉ̌[Լ[piO%yy[5ԸO)UC<7NL0Mk^S[DgQ~ǚNEH9XDyΟ_t'#Ё dZ[ꭱHLoj`٧3]z饩ԪҶ1Y my?d7|pO [Լy5}ZƇߴ;4tHO(*cnVi߬ uK} 0,Q0a gM,r5+DfD(P:I|vm;Ǻ>^wۣ`EG R8vfuFYm}wfx!.Hgޝ=O?e8-?##{C\Hߋ kZ`0z]UYʃBN?޿oy5?ehnaϴ%KZ h}T|[lm>_?qI YwaէJ9LS|9=Ŵ+/B'uײ"Su ' ؙ+όO_i:|%O8Z؅ʙf;2wڲ^jdԟ f1/--f+R,o>6nVQ+}O|^r6<ߞiG&6r-!xSL _rcʡt'ͷ/",\GFY4P+cW !);UoY,aYc^xWs|oHM,8oљn1b/;#YgTD̪g_hҎʆ̶l~v~Y@Pմ3ub^E.+eUxwjd!̞h3an KУZ;SojrP17ƽW]uUg8_m,Vľ5~a31¿K'4ց >Xe^{UW 4*^2rtLPồ!aXFqmbXRV3A@Y-9+޲/?LR;lG䧀;o=+x5Tؔ+4Jv*! b¯T< z8[y"uFٲJtZ9"\~PI"3 "q;v jQz[T_frZWNˁp૎<Ow5b?J?}t]Z@٩1gW5n=`} |V'v뮻t}ߴY3~c?87lpة'PYQ1,.Ձ'X]BٸʍZbVZY|"P+8A#xRYL]'x;Ãv6V=/#z4bMohBʅJP l3[. LV#M 0a1\SO APṭDG#_$M;▴l^xp? 7|i4'x,X决~c@ ޷r(XEtbPt~ =X`52@h u6qH/~ZB>FGY8|üL9??e 鉲[3>eڒF)h貐JdB8&a<7 hYz.:~J^Pc6 cI$/fQU׼z!mYƴFFਣrZ>R?OB3r(~^IEynaUyOvpi'\|a>>OU @ǂD vY̚.tm)ygX"݀w62ղ_w,^Qk}4;S,6W'^Dk91l~UOB?(8pi[ x 3@{6,05_7\?A[֏ COF~뫯(IG^],ԐH,T5U|ycw֫]tE^+:|5p_kF~hxo}Wc$KayACX_QgrJ冰UGeCGg,2S+~@,Zc;Ҕ>D*iʢFX[Ð733 |5z{:yvB ߹,hidkRyErbRX&-[6\VlԿ}xqϼWY/"탼ub8;'ϋ/gڸ,ky>kI?CYvdUOde]*~3v*,oꖥ;bqyFFTg.k/Oh8ҹb.6>sb@`4LQ22MK4kOd8fgWK< |kΙ)<}!C|}|W Tw0hoZ2FHq}$ aq.2#myuFaԷY^) 3LN eC'/[2l/Ɗ,=WЇ5Y.Ƭ̧oխ=Y>v yB|<}0k;Fʓw=o1Ӎ{. |m.?秊{M/ɬ2˄~}_;o0ÅN^; wf}n^?\Dff`ٶۆ0d@)UH9kKPgr;[eUvp/;v"Ў5g$]Y`-̬p9\82Cst#=w|y4Y}%;i+{%ymIvF݌_~htcnC ,y٪ iNd`Vi߅ʵ7yNM/tlh1S>nJ"{: ߳+K,O2@V$B^1"xԉH0e . ʴ'HkӪUVin;~hǤu$ܔgꜲ[pS ))h+kW:l _kFD@D@D@D@D@D@D@D@@@2|gd!Y)a}ԄdM#" " " " " " " " U gI"bMzz[|@b1LT%" " " " " " " " " EHYŠTzP",BKaE@D@D@D@D@D@D@D@D@JC@|*=@W{2eJV:Bg j54DD@JG7 /.(W̙3+N:U{^w>P`?n-" Àرcs?,?sR@2L_K*" " " " " " " " "Q)@HYgM@ܨPD@D@D@D@D@D@D@D@DL,ҳ& gnT (" " " " " " " " "P&R~kYE@D@D@D@D@D@D@D@D@r37*()?" " " " " " " " "  HeZzV̍JE@D@D;Q%*[ENPh,ٲD iE(B dɖp=߳ss^99sf>gg>3B@! B@! B]JҚew}wvgOzғ<9w.;<ĹK6evg ,@*d~ŧB@! B@! {?ٟ챏}l +d /pae_%X"{ԣU&HXYn=A[ϲ.=!_+}fO}S-X⶛.h<]O9~:fZk<:',hfoy[/=ٺꪫ߲O}S j6'r!ٛ~m?曳+"=qꫯ-Py''^ϧ+Їf?E Nnɗ=iu !꩓]Լp W_/oOySj~m"d[;Q{~_grljv|`)J`LcRL^za{X`G~vOzM_.63y+*Ly,Z*[|nϹN|~o_~:5IikEC/F?zc03uu|:i'/wwla,޷詩BJG>2{xSfP֯Yp1:bY• /e/+Rط,\O}Sg'y/s0icy`8I̞Sa>m)gv&{O yk<q;쬳 6t)nǽګwξo{ϞC>tIw=Ã|; . w (lM> 5D8y}ݷOywd(}_~y/LA 3]gu=#`O~OܒN -P 3ַzB: SuN|g3Hy[.Ƞ2p饗ɀ#S9@䨣]wE'X>ooh˵Լ~,]cknm<9[p}uv$yG?}hMhg<.u[?7`zܛC_soG@Ҧura]w$/Q'[o=]x|K_p O<~ʽwܱ|ضm!SП.袁lVّGY98qye[nvevX>H`JaJM!dB7ؾ}%/yI|Ƣq뭷.B~t^֯YRt~/{8`|qqy օc 1[YSOYm>),~l23ܧ}L9~x .'Ig0΃/s9'1੊ _b |{ˎ>ho!u>\(Xa?9$ R3 `Ɂ/| G>o@@[E0\Bዒ`RR ?+t`ud>𙶞ChСb6xco$!5"weI/@PlR2z!E=⋳_,. $BX|" }$b|Nz̄qW&Scp-?S&c)_LbQԾVF9F֢vMY҆_IΑa +0pf|򶷽^K"}+l){-'yoscqX[Z,Ad?'+Rah1X%ԏ-?!Xʊ'k|٩Q,Bb-|o뗧9g>me}0ِ |Q3r?Ͼo4 , =Ƌ,6k7bI05h?@N !Hx#(X#_]Qr@ߧ~򏸾oG(gyW2@!mXΩ~=Xk c¤2,? ԟgd=>䅰t@}s ۓŒ1FvYR0#v.l`o~1IL  ,7ͺ( ט8 bQT,i\ͷѯȥp }[e1mmO OzlC?9ccmKU!i7L{}Lzn@ ^<ҩ02O?ޒIBYø! hM? K*ac_8$f_U|m*-\[L_IΑaVXVYI>m%e woӵ,b۷~r}9t6s`i+Љ&8 o|}^o!o]> T-? XT@;:@#^:"a[e,'DuK∽`҈ ,L (` X&xvbhvlA -A3k|LBE’D)4pu 8&X4 #@H|rH.LX CZ ly1l:KӸVpt^26picJ^(X=YmӸӔYӴPCh3{&03LRB$Xx?yP/q/9&ڨ|>_uNvUض3/YxoyҥC /;6EG&} mʐMPNm6ݷ _WBt"_ d >c6߁fnĢwu;8RFX`K!Z6[gsϺiQ;n$Uﴯ5)?i h 嫈{auͲ[f>ӎ!NƎ6c&1>Fa\<7 h.¢If1}{m<<8j̈w>O3<i鶼7oxsu;pWgڱzϛZ aIN)?l;i"t.m顾A]٤~J?s4g {/V1m,bapLI}ڎۤ0X?J8qXQ&}t[[srH+7hX A"l_?gF)q#B46N,:%֬(B:|~4Qj DX/}8>ss, JYJ%e967 K,q8e &;~e` F8|Kڎ}α$SHTWGj3h*WXVX9. .6e9;u.yJ-!$0 'X⺁2= &$_ꭐo94zXzRn (zF0X+0![(3;N<߫ kB-l}D/sbX0k-#8q,nXw*(3=<ᄒ|Q$3e-< /~Eaq6xߓmV-=E}E(u+1)8g&r=];ƶ9{߱zٔa̬K,!7p/X&&p Cd\]#&gu'~խkRfH9~\RVF,7e5Xaцc*ôo34L 30g&|;@fE*ܓY%cɸ.+fS#gh;gy3kb°eʀ,Ė;$T 7;1)f _B JK( WXaoU&b֟xa$dAHJKbK›ߥW&($KeTvt#֞ +#字{PG(L`͌G'O X^HzL'5ey2D ex m*|WYm<Ѹ攓v"lw: lŌ2L8k9mj|:Sg19Kc-( ԙÍ w6$za+MP|97ݤ/OVuN΂OƔFAD/b"~J o kw^ a>!aX3R~YK&4H:Y 2 = M&i~bua;2+36VDaŮH öoEm=NX?=4=8,i9{1pf=3Ng'cXMLZv[d6T, a;6ZttX6u G06#x *f#"c_Du,X@Jjg*Oc 1X.2Ԣ|(yjK=e$fgL~>a`0+"\*+1dy-Bh ! @_q cUBcb wIbB=Cb uS tIb0+0yƪ"[?ü1f yb_x蜲G>ZkEqNe?,B@/C&X:a;BΩ߇v^jɿgL@[lvO&h D_g#PL[$1W.dEDL@̚ [~RaW&80 `s&f]FO"arF߻nZfXc~5VaŠ;|okEϴZ,ôo|~sm=)k=L8qiX՜,Sob&HI~/m6!ď>\ (~cHĪAe‡ >>;xeaY<\4裏z{C1x,X B]ppRka9b&FL6eH, $vH2 2KL|g&PlI|"ΟC0sz[Xm3 ʌ=-OaveqUVV=ϋEByJ!!Yc@f u<0oXnz֤iȶdQ>?賸Ų:ÑUGc[Ҵ~b?3Vgq6via۷"bOf~?k6VsODU$ +|C8![&lx r!}آd!)3fH,$ak}/+Ē=[>,K3 (KVk;ˑ7tS0XwBnbllu\C+8&ql8`Xr-! Rt<`b[`7:<"xBL9S1 pl&LD9?yU~ʞo0Hê> B;FCP~2I+ޅe(\ۯa碲ƒd&{6pCou1Y[+aZ`dZa06, -]ihñjeiC"EqQ?{2BN>~Ԑa]#IJ΄,B VN(UmPgg(\7=(k)Z(g )v)凲?H?&("EmZٮfX_|7`0ԯ"cVo]s-g0c˘"/CH."}ߧ؍6gLXY8*Մ6GGc,jb&sp$xʷc: :>{Rǩ.{',ōK,K?P `?@W2ov&JꝣkcOveZ`T'HX`b;V@ .ae-KeV*쪰܎<@(A`b=l5vƲ ( bfl3nl5>p`o Iu֗4 Sw,`fY,b' `n,/T|Re9 2Num.~2U"S Z QGm 8PMHPhl«0.(Gy>!qc}m BW$~~c7.̊|c"RacyI1^S3^c*2L8S'?Yf}[~BdzYXjHqrBld=g<< q>P&Ɔsxp ֭ ,iY{oQ!I(`jˎi%*ָ5:Tߪa|>p'FBRV(s8R&`aK!0f)ɺ}/{4 9rXЂKLP_ 0sϻ $ (aKhyLm³(O,gR >,Si`lRN:aqB>NPiiO+n9_(wpqv R?'ˆZɉ2cF8&m )W8G(_(Qg-G;DI9!㢝)A+ERRa|mQ`u46Qd!>l;YԦL+ ۥkZ KZcJAwc*C>Ni %8_di6ղկ9+X)lfc|{ݭO7,Rڷ}ƕQ;.̊|b"x>vfj1-' M:j.e F:d86[oǦ-ņ&KU3& RK^hu34BEB|>6aޝ>6\dKN S?, B jYǀ[m "c= !$iM0.,G-`YEr;VXN믿geׄVuy ϔm,o,"STba.Kj^XN@B,U?eE.q<<64O0߬*#uaYu0gG_ 7}+gG\t5M~qJ03;-=JEq/ v7ƸdUAA3Ȃ_9u(e`uEq&|wq.|WVZ?O:%XTYfY!,G)|"w0hD\ V38'i\Ù8~/5/Q&"XɆ\뢤`粲E|ҜZ?N0Ȫ" }򷜛=ZgY?>;>?ui:c, J&]YcBxw]ffH[oUϮ|XaFݭou`A~bڷ}ڎ80#ee{~ qjoYqeF[y@[t4Ce[[i"A0o%Qb&#|R %! B@! B@)#:)׳,)>2*)ԲSN9/e`6+f ! B@! B@Dq da,7cMRuf(B@! B@! @wв~;\! B@! B@ D~V[B@! B@! B@tvJB@! B@! GB@! B@! ."?r! B@! B@! *H}饗Nx{} ,@28B,>/,o! ڏ~.K.g~ώ:lwzGg~Kd?< 7xcFY[.[{*"ɫ*ϥ^:{_{7%| \L?)o=ai+L? B'ΟH˳>ٰqԽcS~ /xc;1z뭾"dO|+ $&zV^ymR?'I[ꪫ&[1ߧ7+ߢ.=cOzK7~ kF owg?ϳo f]2'PVCFGQaqKiH)oL?IOJNZ_8S=󂮐׆-+\sMƳeB?v+Ƕie*|+<)Ë|`o^`1d'N;nޤۍ~lJDܱ<z0)\|3x{}+utV:ЂE|?|O ^Wʿ Nz_*g>Ò828n{#?9ܞS~znoFm{ֳs`q=!>}~1W9w*x\E]|Ņsq Ox@x}C{sSx~ɇ#p niuNyzsۏ5Ϸ :ڦnNmsҖz7-7ѣ]^͉砃y5ab' >tË#@{g}vm~ROmd^o/|!"tZ?ߞDt=73Dr po~=G^ iOPD{/|>&&%z^xatc\=Q`^ LtW 4M㍎Hᕯ|er">1<`܄eCxc˜ ;ws]M|+_ZRڴ2Y} wiE 1`RIڞ3/#zo{ۢuoц0)+6IRx=7?PV(/pBq9Q gFt Ci6``Q rI: A.=Om6a<ȞxCZ7 3E~^ e{{ZyAiWj7[689mfZ=q/e{(nvxzs&΂կ~u; !E/猠pVj)>l V"͗N8\R^z|>> LY,>A6-;}ye;NIW$~~_e/|a9޷9k)OT;T{o\'u<;kK^O[|d]_s5{oy[|{h~PF ֞R?@b?:~׻袋zzE^LsVxYLDt}sp =Li2Y2B~6}>I;}="eɤiY=mnj$qmZJ4&+R RKE,1`1 [x>㤓N3abW |IBcy&T/Sbd)H<0ZA |ʨ'ri1XE{dPGu&w}6mYas}?޿?%n[$uUSO=uܮoK!?F b,G2'|9o|_-Zj)O ? ҋ[8pǝwխڪ7ɿgX :)wP 2 oy,&oX.KJ~}=eRN>L=iZ`u80QhbX^0C8UƎ~̌e~ɣ c/j6NctPkb3|\gJ|#=V_J&Odek!) WG)$?c۴2Yw>c53X|0`mΒĖO ~ַ?ApY&~Z5Jxx̯dyw ;8 jsLx{lIy ׹YK_R>OK_-[ ;'?9p~80s/sʖ]83m/*O7}VY8f 4x3‚ X3|[ [neߚ#xvJcgKY2fnn6o3+oTđIvRއ /Ÿqܲ΍DBkFG(xGqDIn_@3Ya06Ds,2g}7l4x.~͗%|Y⛇L&}0Q|M0bC@CZ__][&F37_O]IwfDf$?Ir^o(oAsΛ`>')^Hi-Y^[8pmes~_fUV>]6-LV}dŏA¶^,)cIb6]mu?|?)<鶼Huw8|u\g(0N<3I~2@g7`d!:`ygf|xH.Xg 8=ЁglʦA:q弅Nǝ0-Elֱ6n?36"~56-21LͦG9-@`z +X Mj @1҂mLj#eǦ*?J0Yqdbjft`vLRیhg7b7 I_rX{e紅:s>N·znIv[?|fη$~o~s%^"ISg}AX>Ht֧zMo̹XI3%FtNy~Za~e6YkeY2~R+/ٟ[U;ʈ&|iL cL:}Z4-+[Eک-+g$YɪLEY8Ƿ Ya/?eR1 D9WN`U6q7ݖ|m\HQϘu+< ucX9a~XG4"?$p~-.Sn`?O yb B9;A&|A!SN /vaD]EG[͗[d7Y|Adn ^5X?-o?qdvP c93&cf.W_| KSԳP_f@ˌ8o5eR#33Hn_홸9_*`Ȅnߝ|@IE:ZK;Y1u][~2A{.;S `Ȅ90 U U}= Ph&+r~Ҭ/8c2P$ҖӇ[*9gNveU&[VPv-[QR4~_C'"-hd>Ot5!/\Bع:󁈦#MrR[zw~+q` LGYV 0ӟطk0%Ii,_uzpɫe5; yճmE U11s f2 w+boV$|ulL%u<z t_~5}eJLOC7ae(c0V1YS+=O6S)s@Fmx,.a Ćyq>1LH>?G|zfBlF N?Uu4m6<"}?gM#{{lN&\pA>,$sNn;>N;_ .p@?(pUsI9q P]'Hl e[sqϑ=60|٘J w|!.5X9eюPgIR0Wc'G /p~7gX ]6 <8N|M7S'q+#uґ_ f+F`\>?k?-)a9 ˊF u>V@M?AdIN- eJ`^o=+j,PS4{ zRΆQ>䈵fzZ\ C{2_ۦ [& 6r.Vz k>?SpgeL0I0-KÏ9ɋ6cޥ߱+.(<R(#猚zbu 3DkƟh>3:KmǍ,z΃f~+_vV6 gU$$?wGQh*ؑ̀'tQY|99dʬl`Q!M@1)/4H|ӟj]wq)?#vd'vZ('|`W_=HL[ #2T(J~Xri†6n.bRދnQvtl(À@| <SvIs\' ?>;>wיȁP$q SSz^;wIJ9cl2S%~RF(SE XI<60ܸOۦiJ^6}>LK[hӜd5)+!+Fq$+MLZ5TϹK^w$)X'6&fy da'wlJMKMK ApGnw9W~n:0Pe] nq|_.a0#Nk}t' nyHc-&? yD<+0ϬeqĒdN6O;;#X(3m(F~Z/ ߈o(e1W˟ϙo?FȿTq`׮ YV兝X3ʇG9$ ?,Dcfܒc3;38WH&t Ƽ{#IYPnJ[68Fm4EXNq <j~~h'i/c5x& 7(Of6m$~ӟwlw$(dj%3EX? +{/ cy1I~?ߦᚒMҦskߝۯd SV4lwT&7M~!M٪2iq;= Lh$ 2R c d.2&%fe ?ƭծMzLc]9Vm6!X1 p_eb EwO8ᄲǛ^󕥿r 9qbyG## S$b@rFˆ? 7P kRi+Jo#27>7|6+"ա/BG~9wP q߄0p*4ewO]rQx6Çh~.׀N9\-XA -~36겳jkӝǤ[|vFmlWGUmu;Gև8ڑzix/<50NQ)xXy`c# ?zlLbşG~k)U2RK-Ah،aT<5iϷiHC/7A҆:+.BS6-L:RohVAF."?&C'X|Ø`Ԙ6Yy3ƮfYbOkxU?P 0gws׿ fu7A?I6<-AW_}#L_}wxi\3f i@Q̼qX$V@9y`':+@3vWadpk;2CJ Y[ou 3`6Eb0 vleK/~A]HOvcwVQ},//pccv&fEe 3/~BmfYW>)m~Nj/Jg=o شXYS56QBsܜ8(.d%u;>7=a<YoOMxf,pSy[n%>| fKˣYJѲq-|/<8-DYC~sh{,c9k=~a$)>n7F6Wì97gy Z<uHk7Zu> -6.p=ۢvy=7S}HJ!:Gy#XŽ)|poݬmx>iePoغ]>G<+ evf,RN爓]?ײ))O|v>3al}F׸;" _,E#f)yv{,¡;m9&E-e&,:Ip`ڀ ^ErvYTa/"n5Mq2'zLptgݞg @71e)m\Qoa3n<ߏ'd)"ktRV?Y8ec۴2YY]E,RT?C켋cqaVT֜!h: fIbW ]'8}\Ǹc[o>[mUzGCG'3F3Z18j6`_$nV 6dې~<(x& x>[  /\=;\{z~Gq-|/U'Z N^O~E>(gdaߑolNuO?hS;TՌ4>CMFc A "my ΊgNvu|s g!̪ԺpUq^ V,k߀# >z6fo4b?Ng?@Z1E[Z漻i׀)駟>6_H ²c-E~q\'DeئdAmiAiIY?@y&VkQJӳȳt IDAT!N~Wn:m,&otnJB@! B@! @s4mH8$B@! B@! B h{(B@! B@! @2"?!B@! B@! B@t]JJB@! B@! LL! B@! B@!D~v+)B@! B@! B@$# 7ܐ= "p7(z^2M=/&sOmݦPa>oYsv뭷$hL0 ! K/Y~FCB@! B@! B@t ]ZJB@! B@! JB@! B@! "?V! B@! B@!   ! B@! B@!%D~vk)B@! B@! B@D# 3*B@! B@! BKRZB@! B@! F@g4T (B@! B@! @٥ ! B@! B@!hP! B@! B@.! K_KiB@! B@! B P)B@! B@! ]B`.%Vi,wqGοtΞ7N/X`lUV7S! B@! B@"&N~.{͞ԧfK/tQ?|>47e_=aqe]6{C2'+=+bCol_|9τF06uQ?q$p+ɻ曳+"{OFp|%׽u*Xof!om",I [_W-ܒ=QV]ul%,=q] -4Xa.?kQ[W:p򓟜=)OOS}tnjv2+sO_ڗ3F/k{^vuЇ>4[m2]a1q\{&thBI7|?}ya6)fͲUW]|fi> Gzݢ.9~3VִOm|]ym卶 =AzP=-{mf8:%9SDO=+{Ua=8n){ғvώsm>6U5Ew8w7k} +=1) kp2ppq4yYp]'%`'ƶg?v}w?>6G>zeplw  }?&2+dwξog=gPqI'y!_o]cJ(XwQI'o2xyv<@nwfghX !Yg7[po|#=Dr |Rg_z% =3{w~0'?9"SWz;p/ä;pxF'^zi:9GqD馛u f}s10˲E]_Jh FPJJmo{[eO /FRm#f5KQ_[o]x'h .㢋.V[eGyd%:ˏ Cc&O>>5܏X5Eνbb?'B~~ _{o?x0*<裏 ,k^~asNhgOT5P#`D:*UGqÀ&* ;O 3u]3!Xb.{2 xaI3Ƞ+Ož20e+<5nV 2zֳ^GGCA$93~y30@Ku cP89cD}-?r,!:N+Œ_jmw}˹[: i+;VH{& -hO98nN;1d5v ' +,okH/:Bxg}{}SUo^0E2c"kǟ'ieWi\ΠT#X`NA=#I0̡RtBo}d(_|·ش~2e򆶭n0@gFMo;njӘ.~J]i.T7i6dolAͪ;$Mg?Y?A<跌0#0·3;%̚_ay@G4]"9u~^/GZG?Q]J~VnzJl2k';-@2e&ys?~)4J^8CWU=oGMJ^x7f斏>JEGq@olC Ly XP. >)C?ȼ@" 2k믿>wkړ 9"(3X-6hh#ѿ&Q*PKNTAH7׿[WS~ӟXf-ɿ ԿoI(_fcyZtF|Ҿ0I~įUI'&`jB;o'L N+vǦc] uB &h?gEMo3lӨdVߨ ]'?Qg\iks [OԸ^c<twx/?A2Ac\Bl8&|3G fiE+}3# ~#6 fWOx4&0~pr~?a>n=2QsXg`9ECL jάa`g>OO~OM"zm>iFM[[C,iؤ~W|" URo3Ӿ3Ҟ2*k1EeXtAvhcuXYjRpg*D^WurY%uzp}oI`FLlC"a Yf0_e [HTCZvRҊuKIsHjb d'2@@4 oo,F`b 1_#6$bV8!42di¿/J3 -dIwWD*`2BLj*+rմYg4BJ!41ݎveL\s5vQ`agD0v3V}vZ'ep`ݏ1 SwfgvElÖvVbF=',}p)?G( kd(Á%y_[s x&hݰ_4.lE?~rbM+$1}'|_Va2_Uqi`̆YWzHaM(uΪ>U1e_]rUW?!y){LZxaRVn&qT,b~1Ƅ|[27On2dlʊ2t.3ZVUzq'*19 32 lb.: ~,gc|hl]&ioBN_ yh3{KEhLמ: 2[oK–% cÆVl1JOŸo4l|gužzi> t\P(Kl(եe墌ԀOSA1:dBV/~.(01[LCA|ACHz*|a 72O)k7pq5JU?}u$i03/_?N qc벒} pp=IPVtAOmӪ wA/ڸ4&`bj _ G?:<8JO?`Kt4\A!][PU'}'}$q ,gHZ`FRQ! i7t:xx*&DK(O"V1{ےP W):kctT=q'd΢1X@ep2:6> +HC|5d,;kںb4BRY(H2U0+;vu]o@r|TΌ0Wze)X!LX.e;(6еY.- s4'EgfYp#1%lda:,?u)F_v,+?bࢂX&\ _l[3E˛)cn&vCx\aPeﶁr-V||,oe Y JÀ 5ArdD)Ex0)`DqWuQ4NP\Xc% 3t~뭷^kZqQ(S[Y|-iid DR?c){y0,D;^cXV$t5cꎸ@P _6PlnCi~Ʀ3xl5sujXyŠ&Mb)d-NA7s'ݖ/:VE@ &a yS̆Guz?nx$#8U::`zN:\-VHV&f@C%_,ˠBaiEXTA XAuAdRbl6ivZG6 iy7ߡn*[\m?ҶЇBtV7a oqF`ҮaQ`%f keEX4IKS-/?&!TY$40 A: NvHO| p=\Egq8~MXdJx0lϛb2wTCعGcbj=-tC%FL6N 휍-aCfBa}`ΚOr|v0XRt ! :uB]gcU: ro4?_~ȸ%-Yg8hd?V!$f Ǹ P ,ǟ)oX2ʌ v)&C r*Fwrؒ60:vl3jXŲ yzk9JCQ,lee(6$3H]Ǫm)Up|3'Z҆ mu|魳:~ҝ2J[OW f6\!`J9|-ED;3="Ko|wܱi7Yzd8v/:lF޺IZb;ҟ12c \?@&(Sl Xо[?g[<|Rw+Ҵ~JM2AdD]t &æI;c6}|nm{'"aU_(,]V31b|?&D@ѯB06L~TǦ cF>_E &+XIJwt[F5XD>:` X4:k _<a|C8|90C}"Xx;HFFe=X.HT*i ev$x "￿7 vCydH6 XWa;L^{#C ֍z70pNX@=һKb6%tuO[X C9(| l ؀ƄN}F@!!%!q{ &BM赶s O4= {u͵B2>6&ٰ~e !j;m;` }yf(&W?>V,Ba4A~`+pF)6"ܠVjK? 솮/]m^)ayc_Ei(8̷>Ŭ0nڧ>5\,jp`_^0@WLv3YbD6J,8.f1bt.IAmBIYEhFokGvV0k~E^L#&$XɊ9 wx#'Z'76a4VhA|R9M׊xX5EwNV )@K{ 9 ժ؂)b1e gYj"%^Fp+ 4Q1(lOH/dm.Ui7L`eY~/XM)Xs0yȮ 4ceti cC =gU>)T/#w7!_,YUm8f3D٣,֞aڮ0l9ϳl˩], ߅kM1c̩ӅFm.:XV?)1ee~69OЍC73X藵Iru%DpUQ$J lZ?I:Kϔi= }/46mnc|ӨUFLʱIqHY7ƪjEcqo\q[?J*Vі{bfGf}Tu>h={uLv0V;%ߥE,:k<|1N5ah"ZF8/"^6@@߫DEaC) O=SFǑ -{gxWv%U`z $XPW'<|2 ʼ9 RX! emXӞw)f(-y Y§(/:k̲ qWEޅ+ tW]uٕӎ p=^r%ٝwّT+]C+It)B@"k&Ŷ@K{`H]B@! B@! \|j@ݹW}.&"B@! B@!  ʂB@! B@! ',Vd.b#W8!0BR^v#WQ ! @wX%ANR!0/@OC_9}"4/c ;BܟdϔV! B@! B@!0-sZB@! B@! B@cW ! B@! B@!0-D~N yW! B@! B@" s*r! B@! B@! i! ! B@! B@!0VD~^E.B@! B@! 9-^! B@! B@! Ɗϱ«ȅB@! B@! "?+B@! B@! X ˢ+5>IENDB`freebayes-1.3.6/paper/100samples10x_0_25_both.png000066400000000000000000002574061417247743000213110ustar00rootroot00000000000000PNG  IHDRW3 pHYs.#.#x?v IDATxyoU_s0 30AT\@q5$ s~ab6 YQkΝ;L"ϯQ\ƔN׿}v#O9rI:6yd㞣۷Gw nJ"R'O޽{wӧwZEQO~c( W$kfÇGw nR&QJiv8tPtGE4dȐÇww)RL8wﺧ̙3]C*++gΜagӏ~Rn_JMMMF㢑JAAA"ZIF#\"ޯ!>󲲲n rG?]$:IF#++랙F9k(> JDnD$E3iii]CJJJ?***:TTT4gΜ.\VUUU-wjVSSrnZb. nS !jkk`o#֠iiKrrrNZbK`0hledd_XXJ=y[oe?~|zzz.na"33ӈT<OB\$kBFFƸq"l2YXXe76ڟ' f[O8@ 0`مĜiCb1z^o~~]Klzn-|>Ñ qy]˿3ΖUL$B,~D|fL/P&Q 2Θ5!I%%%F]2#G@$ 3ٵkW=aJP&QL6h֭[@$o߾B۷w>B?qH_B9\UUϟo:E2=o޼.~ n8'Bts8B+V*XbB0kA(@/^l-[vܹv֭zeˌK,iֽ_5+V裏˅֭[n]>f2oA@pLboY nذfn RWxt;gdd >իwy !ĠAN?>kF(&N8qDkKp U>gl>_')0if;Z[(=hi9Kv-1zp5EEb1o] e)C׵cG/ ]BhzCoM*B! </9iCeWB`P;hæ_hmmPV0(YJ Mj;g% BԖZ:++vˮ% Yj_WVW_] Ve$"AcZ;?$h:bdL7ܬiZVVVL"^9N4-0(XR ܱ5q}W*BΣ(J_+급JUm"8;  )Pu/W?;{pv_/.ԡDXaٶ ܎oPӤ#X"yD(ĘUF:zN:xkп6mB # (R1W)(Lk?HbJV26no?e@Q#b(oL;>]D >_p]G(61lD JSDUѤ756?Tk>uH]Ӵ3ծlwz^ Y  {`P?[%#Vr8lj  hw{οuɰ ňRI.}xneĴ}E.#N}7+w!A lXpL\ʫUK3V_v5E(뵞/ ,VtcR{tͦjWH2HB~_`zЁȗP )+h}ƬhUd1E(i铁mk{>cZF )J (H 9MMzϞ鰃Zz p?oB|ڬ,ZYUEbP+icp{HVZ@4WO-M=\%B_\2-t:iUUr.:D(DܶEv"8LAЃF4H(xZZVP J!w>iKC}oVom.ѧDt0KQEp- yo]DDZRT9E6(RdZHh2Hc$ToK]]} FFcXWP}k_aԩ`tI:Ɍ S+j5M/RL"}X{B3[Ҡ[eB$ ;͵uPkz '`._\x(񰻱U=+ $`$B {LAڎu:M?V9*M6Uex4-׿h.([B8teK+Pku#=}5 Q XvUD&OmX"g ͝v s}lQk蔠C;5>BƼunɮ%洐KRdfMӲds+KU@N|t& M [ZZe;jep}`'}Gɐ O5΢iv/~SiVUU' yp*{ܹ@ 0`ХiZ0d#z?ou=0nyUWWgeenٵĜ7ۖgʮ;2H8z[[thZѣǶ7t8˩*e,I}Ų2@!ABSrrb7g gKHѾf MK{vаA3EVP=   UD6_K'w-B,?7_Yo Gv<$B :qFn1r]a5 + WC(D+g!Ę̌ /1C4[JR v 18M@\{*iQ7@L};}Fj:E(m_<ƻGe9WqDE(VpL?e s-aL- >}MWĭ"@`_h|ߑi[87@ǸR|}Őb!Daq9BĻ*@"A n? l .|#mWU[?:G&-O]G0v7G6vr)uvYӴTPaoזR̡,˩R ǟ't]O"a6Eyu~}"3L/L+U$>EG't];T;"5v eRagClUv@ R;{X"csb}GPܵTro c AQ/e}mmu} KzHL$щЫSaM)y|$sSagW.[{2!nƿTUug8lFCՕG m [\3qwgۻ{dT 0?+bt 3~sSw fY~gu]Kf3[YUU\!TUUlX6ĀyoI)TVPl?4#5LQpJɂۗ(gEP̑] QfsW.} @B e$ P@B e$ P@B e$ P@B e$ P@B RũO.$ t]zv=:Cv-1iF[QU~ԤiZ7[v!1뺦iK&hkkkkk˨˰- પ(z  655\.% f̞w$-&kڿn;k_&] VeX4UT!@!bO_㳧eWH\2@<;+lӞeS'4MSc4&]u] )km3[f Ȯ;2@շp93-=UEiUUUiiiyyyk@ `j*{ܹ@ 0`مĜiÅ:I^z V@™n|TnZbm˿3WVVzUUbPKy҆eH2@qFݦ*V]UDY:%;@B <pQ2@̹s]2@l? URge=~ (hPdWHP2@]sŤK 2@U{_ 0/s5% sh?iϊ%C(DYIP@zk @O| 51}=K@Ol] q =6x_;s1] P^W?kN3_'DɈۗn͙sa*ϤH^\)\đm xش9ln`N!nR y]S+?p֐4c}{!Z\} .eǾeA@p Ё/Zf=YKK}+*n%,Pu9,1힓{V@(\ Ξ;~SR?px[OsaWT{?R'e X]~l>Nju8NyqVVB(\Woc-̰Fc//hz zW~˦q-`]\)tm )gLfF=T BcY6ۣ 08o-<[]yѣGn=zv: [… #\pʔ))8Ź\/$j8ݒj$׻x>tLSὲtS.DxX@Bnhnn馛mY5kTVVnڴ)#"DKnnnBi&l=M]e2nxD[n)//x<߿曍۶m[tiVGK.1ZreJZ[[?nVzvf!7<4+m':B(ÇZh/_|ӦM---ݰaòeˌV:rH*yGvCgUVVP`Ĉ WiCvB(~: !fΜO(ʲef̘!?ObTo+!jժ2{@Doذh/_3 6Q__C CEE1bDEA(۷{<!ȑ#'MYɓ'!jjjo2,Yr !}gbʼR{Hp2ٽ{ј>}zW(2}Ee˖--8p>aBLD`ZkXUnY$I{ `Dhdeeu33|M/[85馛LEOvu !/ggg3iҤ77pb߾}[l1cFT쐑8K.$!9QvvvNwmַ__mԕ{gî)[|fWК={rd'_ɪj555@ChYinllllls:t]72vk_L!|'33gH HL2IOO7"כ7(u)}ZZZ{С_~h/Y΋/^xE9k֬3g{B7x#PfȐ!"ĉ8Ͳ=\66`U9]aOUU-|tdQU54I]6Ȟ l˥/a̖eM+RϮ@#Hffx|xחtwm2;vp>}~Ж-[BYɘo}] Y(2|iv}(ꫯ/ߓL4huϪ*1r^n3f4hP/0qG׹[ #ڵf^2޾}^`AoV՞AEh61P-@<DdڴiFBѿqfoј8qbzzEb:y7F/T*pBOvK 7eee^,zYYў7olzsO޿ў:uj$:tذaF{͚5Gݻ׮]+Ș7>C")P&R=BX",u}Ŋ7oB8pYe0eʔ+\tѨ;wnmmm>;wn0Bz;w8qB1hРS>Ǐb.+gn3<[:zhUU,,,6mڝwyx Zezbĉ'N]EWhѢn_q2H@(  2H@(  2H@(  1o6]e .*e [Ow17͞JG(һU:G(tF6NYP蘢@v"P@B e$ .@&]pM!3.(@J AJ{}P3eC4R/!˗eHQ2HifG<+B g~2 @3a迚/@ q  2H@(  2H@(  2H@(  2H@(  2H@(  2H@(  2H`]Lux =^2 6i\꺮iz:XOjT0)˩[\ߖE(bwf BC0ق=]'R.|u= 2g폆lJ]6NRaOä.7v6f]} @B e$`LĐ1(#B6֝e{fꅘ}6ul=d\jl  l77i5.Nv;z 0_vkS;s]˿3|\+#@b"P@B e$ P@B e$ P@B e$ P@B e$ P@B e$ P@B e$ P@B e$ P@B e gϞ]cv`0[o{ wx֬YgϞcǎ\QF͝;TQY@j",nѢEl}w)eKKˇ~Ξ=fűRHuܾXO{lcʯ@;Cۿ .())YtiAA!C/_>vX!i7ne8pѸ{$?sUU͛g?㸔 PÆ uԩJ=eʔYF2ǎm}2u477A2=|𼼼Y}5 1.p `iiiFCӴYߌUW]6bnw,| `%0gΜ '̗_~i4_C(X9:̮]B'OB(r5ׄ-vZQXX1ydvږscϞ=3l޼xyƫR `!3fB8qG=t]~~;÷-|p75^͘1#5@ʲ.@ddd,^߅wC^z7|2 '|rŭTWr7~W%l.++s:am6۴i^yo| Wֳ`Oƌ?t4!_+ <833SVe 3f̘1czq2H@( 2~/e˖(WH@( /{;^]]}ĉ/rݺuTUZ`-@jQo߾cǎ/?V&:H!2@Reʔ)/wO.(H2=?#Gvn{?v5/\P̔)Sd )..{> ne>Ǐz^{+WN8ohh?/o~h]Vn%:om۶ua͚56m&zġHXπFEEJ upL7|[ ejkk/_>k֬aÆ\Θ1ECC"-^dkwt~@*r8 cƌ]n_w\t]áC'N7>áɓ'O!Dsss[[Zb.7R7ޙe!B466/Bn(c(#(--]vSN:3g  .ܳgO觐83`Ь-N]7tg1e}FY@ڝJkkPUml]1I't"pp-2|FP&"F#++랙F_kl뮻Nѯ__~9;;}I&7۲eˌ3Ydw۷oKi!ISfffVwҿ!f !dt۝۷m YڪZ+YMjjjNgNNZb. SBA: 4-vrrr,h]׍+G 6S!~]]]FFWRϮ] 4*Ӎ:֭M,^x6k֬3g{B7x#4i{#lӧOkk(#B/l,]uj7Eۄ[llt(n\Un$(Jh(c]@3]Sjzޞ l;vאַ)n|(cS;s(˿3w}ݱxhCNNΖ-[Z@e"iĨev" ze˖۷ww)lvۭ ,}~EMMM= e&Md4N &LFwfWUMfIq R&"ǎ!טt0p`l>d:*2 Ro^}.>կvaaٳGYXXXXX(8uԩS>M6:uJ1xgyfȐ!/pLDJJJm&8}t=ȑ#cT9]` U$dY~8Gyoyv5j>_|=ܳf͚aÆIR/E /vuOCa$Tܹs>BQb,dvw?U7 BL6haiO[-_|{vȑ#Fcر,s^{,2y[oUq1 W_ݷo_!DEEE***7n\/-- ~套^oi4"X g.RfM6E&@'e"vYYYס^VVf͛?!f :Լ}w͚5Gݻw]V1o޼ f/8tȗ2;z|Ŋa+Vؼyt?lBtRQ__?w}<8w`0(x衇^$L>8" Rf?bP&Rŋ/6˖-wP[[u[ouٲe%KQ ,0a޻wٳ?\xq?.())YbELMž_m-MR55~iKq#aŊ}Qyybݺu֭kg֬YAb~ !<ϢE:Y\\q:NnMqСCϝ;'xׯzcUouXp x`wرh"ӰlΜ9;w,))UdsXjY_;R~@؜1/f̘a4loGƍ}=sXUh+e'##^xW^s'N! 4ux`],cMngy׭[[o=ztN6;cZy[Or넆&i߭Z/̿\׾@"={K/t)!IJeN:u֬YzjeQQ 7Z ĉ'NO_ׯ馛F5p"^___QQ׿߮1t:eeeiiC(t17'89|z"rW?K.mhhB={_zO;6.cL(E(鎯=\O`n}_UQ1a„_}Μ9] Vhp:s]~qSĕ2HQ{7V?/Cڅ!q /_#l޼y߾}zv=;;`ԨQW\qӳd )PYy-?_Hd@˻;م:@(T3W@0 R9/q:_ e %J؄2o# gϞ]cܾT7.;k)9Z?~oBBP$JJ"M $*Q.+X("U DJ`I " IDATdct2l _u_̜}f795RTX 6_>**j:tH}611qGhذa~:t PHՅwpq")))""رc w?nݺM<`0cX8I&Ndd|}}[jW_)M6}W"$eq}Amٲ/PFGG]VnoͫV֭|dyke <6o,7BCCǎ~[n$IQ~~;((N:>*l3,28y6lh_Ar׮]rcРAz߿ ÇK!HjYl<`w*>>ruS 6111e@ \M<%nsFZN)c׭[rSUT)) [bÅ$cݲݩʶ+JlvOѤISJ.ϯ` \Y=dgd*J2&!!ԑ#GF˗F͚52:]H\>vRE!BV~:́/^'t͚5jʕr#$$c \$1 /UfwNw22QlRn\Ν;5kȍG}400P9~3fl-ZW2pUFC 4NIDsΕ*UBƾO6?O=H޽en5:w\1ˢ/\^ 8o{BC :T}gjU&iڴi*2S޽ѣufM<`h߾?ШQ 3e3|M.[ȑ#)))5jhܸѣd=?p}K15nܸq (xKK/.N RH$6"6۝c?>pߎ GR͝OϺ%wc=_^dFQѮ<.2pf^U22TުL [bÙJ+S7PvHEZpi$e*ct:DR"TZGHh Hh Hh HuY2rzv\Iwui%2_i 'DP \W*)]Mݴ zHE%]jlN׷v\Ii^̜v\IFI&u׷V\IF9I70+")`61MPHYҽ.k古 \Qd_e +z(9gN/L54H2ՄMX. \^4FR.NbPTh \Nj` @#$er2n&YYX \ʯ\Ilcto%VZg&I]w(yު٤STnoB| 䟬rGv'{FWxdK}ʳ쬜$eP$IX,ŻfIŽ6l6zN/<=^oZhJ\jpGV+WGo4N^R_NW"}j*E] ]) Wxd `08Ja0/l'Rߙ]]u2l"(:~t=n{We7Q?bN#“=+<MqG;r8;n=S),22I+o]}붛rdT  Ewf^UY )p]@y(W9bI 35 2p~6^PJNROv_k 8)')R0$> 2p ҼL=y -2p Ue KS'e$@B@AR.q_N'*XI8?w)4[4 I8*i^êU$(HUK}Dit2 _UUROp4 I89 N}X鞨d0$e3{X*)]2 \@Z u8I@@RN. IfuG`PW͔9U,4$ěV?;)~]T$e*?S}SPPq3O}BitIf* 2pfTU~c|I8/I6Wz]T($e2n wK=ᗢa0!)e{2 Vvrv` Vj̩JfI](BRɚ%r]T4$ed钔T4$e̪2#)XH9 jj y )g$5S)JPI8’M0.FRN(]f*2pB+9l$ @H 2^$],䍤 5K'to.ER&-NHniv/2p62>r[_CpțQR.(sGA˲v7f٨2ddI8D=m7@u<=5&BRNE=MFq/njVqs+5eTU~ )]"tuFgjzkwc z I*2p,~-[[P2piBtM5 {!)qW_01SPPW FOB^Hy^iji@RN"NTl$e$k3eI8 %](I8 LS !tڅ@!3e.kI8x!YsTT|$e ̪2BL )g*((^څ@ᐔ)Ç3&,,/,,W_=p@i?++kӦM/ң>Zzu77{,""ԩS_;rH]nݺ֜z dul6}SN:W_ >?+Ko/ҙ3goݺu֭??gΜWI^e&촜.IC`L.#`^z%.]ڦM$I_O?LUP*ARzݻw>}ر#11111_}gw~w{+-Z,[˩={vHH|j׮]z;ddd\rED*oV8+uA. La9sfΜ9r駟ڷoСCkN4I>;gΜs$=:;;[?~Ϟ= U?>rӧO0@7/syIvzH!NP(42駟ZV!D.]&NN4iRΝO>)%wG 1~~~ϯ[f}vK&)8%fزEڵ.kLdgg]VnvN[*$mRP@Hʍ7F```# eɡC[=j(+իWwWv,&&fE VԫWͭWz )p($e %--Mn3)dwI)޽{VVsv%d!!!ǏѣG5ܹs%K̝;W^kҤI˖- III+W,j jРjMOO/U:ٙ_{5lp·ױ1"U^w$IBuP6M~^!N띿fB‡+Il )3fffk9%3˕河]?^g:@")S(r3eJ7)cXf͚;5k.XnRPFѡC+W*xyyiӦM6=zHLLZ#GCV0g$'')_NgʘfVR%)sv) 9ddddddL&Q($ל)Q*?Tp.5S987lÆ 'O]tx#""jdINNV(Iӳ$(;~qnݪС_v܃x7xڵk.]~!?\Ȥo17AXsss3sTBͿ<7)FW= Paْ:(Ţ$ez+ޞf\õl_ʴVaZ322<<<<<32W^;vlLP*ŕnZ12-$U|,(4HH→ >|ĉy^cظqcxx HBD(r|)ӧ?Jnݺ?~|Μ9ŻanիW|,rN;fn>r3QI%KYF,Xʕ+ϟ2eJ4k̙3/:5?Xԯ__n\z׮] 4( M47ߔk,ZhÆ >XS<%Qyv"˜UcǨlS-Ι$e,˄ nժU~υ<՛7oʕ+եd&Lގ ˁ  (FRfժUJ),,رcC )„ǩ*(L*8Hl۶ҥKJwE9ү_K*-[5ˍ;vJ;w]RHGۍ5ڽ{w@͟?;wNn`ĉj/$}۶mB曹^ue8|ܶl~a!RWy_z%!Drrr~v`7ԩSZB_~q*B/e2JB*[nk~7>#!ĤI;7njFEE}2u?K.)i}۷2ÇJQQQu֝0aB֭kZO>rٳggdd!ׯ)ȊC/19@R/11Qngffzzz&̎O"߿c!իW^{L׮]ELWj3 7nСDžy]vddd͙UU~=>9@M}yްHF_|9rڵw."00~0Mc޽/WԄz%߻ XtMNwGͶUr27>q޶m[&Mqŋ+"m{޼yΝw^}zرAO]P#@h ˗Nڭ[ڵkL&wwjժ5o|̘1$ICRR{Qn]oooT^!C[br۷۷oW\}vRR5kּyvulTd2]-%%eܸqͳlrʃΚ5y $-Z(""֭[K,iР_ݾ}{ 22oo^zK@P~RDVrN2@ܸq]vO.x؁M6u$Iƍ ٳ:u={/lݺ޽{TƼxb:u#-_K+(CRJ3##ݻw\\>f++W,NI8 %](pF֭۵kWǛ{O}ӓ&M*^~Tv IDAT{#)_];)7߿醇)"tlx RtR#aaa6lyl>})Sv]reff}|_511ի|MPP۷~12%/]a$(EtYRYfMM&SÆ 'N8k,|1~zٶm޽CժU}jgɓeMIe'*I;w(혘A1_6վT@KHH;ԧOݼyS>?m4c `ԩ摒$''ܹTp?)#IRbbiӔ#ƃ1_L*Uiڴ[ou eKPPеuM>o>knڴiW8pݑ3t9t./ʀ#G9z>00O?UnRn]-%nڅ'fw$))O>iܸq:uFaÆ.?xۼyՅ*Y{/bԻKhp6O>E^hѢ~y{{0x?˫دX)6]JjB;.(S] BaM5\&52d7o\n]xxx~ߝ7o`V%e<* wr .UVvG>裗^ziϞ=׮]̌[xq>}솵o^n ..J2)(C߾}_{4sΝ; رcL>?3gʔ)v%֭kW&"""""Bq:uI8W)#IR7Np7إ>a%#eI9LJ( b{ׯ_6m?;ؠAAJRF]<**JHP$ve|)2ꫯ/M4?{dd?\˟E;lذDR&!!7P'N0:)7 JF}'k֬9rĈwTݩիڵ_m+88x…-}gϞb%Nϑj|7nrR" (ŨPU~}BΠ](p:O><̞={"##Ξ=ֲe^x!444+VؼysLL=<k](p%z]vڵ+Mׯ?a„ &nݺu֭$#)o߾gggV!!!qr~MT/Iq$IZ 32FK.mڴ=z_iņ2e/a=pCnHHիo޼i.\лwo{JJ{kX;q *vP )fgϞ~t~GaeW˖-,Y2ydȿ۷o(L.$e9 b;_Ϟ=֭[ts='X, JLL,xQ:SE.U~N2gΜQrzN&MrTtYfyzz !n޼e&J}AZBW{,&P* )kΣkXX8{$I6Ln.]*0QeFS]\}=.?}bn,8J2iiiJZjԫWOn$&&޼y3ϛt]nHbŊҎO.FqZM7ޠs+(%233s ~*RrrlkFqP&[PPlqqqv<<Y֘< 8:PROٯ@e>3oVcMϞ=۳goȐ!7nPN=]v-@Q̱9mQh իW2##Z Z oB} hbԨQ$00pٲe:]IP xWzGuepP^×,Yrsڍ/=<|ݪU+Nrb'#1z}q7̧%IBܶv@rLݯ_.o߾m<(;iuw{+)kŻ#|P(|l6+7nh Z5g 67R_~[V HI_6ΝQr2U2l|{mp1H[i߿_HPӳgϴn$;& }5gGtzVmt'Lʈx7Ν{5!W_}5rH///Bȕzlg#wtm.sζx`ޤ:"Z $IIssGv'{FWxdK}ʳ쬜۲eKǎoݺu…aÆ-YWBk$Y,SiivG `:)cZm6ιYAl6uNI~@Va?2 \Wpk<lZ]aլV!9|\\$e?ڿkʕ)))_|E F׽wZl+Oye͔Xʀ_x^bc$e?nٲ%,,gܹO>ŤkdA,_Tpk ."4ʄ$eΜ9Zk֬YfM1n (;]癒x\`!jTPH  #6^B:QʕtӕsSCz'm*ԧPFl6tzHʟ+|$KQ#+?݇ ߙ\;] (22(CʯZ8->lderU9ǣBLo W]C<:yd+<]qPWx-;Lȟ+|u/]pq$eP!cs~MkV8Q98W3y8@RaÆTqnЧkp<"CWݚ%)p$e4}{ϭp$e4]}=++CP>yf͚7lP눊Lj(퓬]WjjjӦMϞ=INN0uƬ:LQE鞨a0 p@ydPPvNIށ/{ڵ vwwVZ˖- hѢ<> ~6a|#q^e7^ڡ @u>wSO=u%kW5jԺuO8qĉO0aӧOJ~!Ě5k^z%uv6mڷ~۫WMOO3f̂ Vϟ?{ 6h`ٲe>r6 sΛ6mBOSNr{РAX,1cIHHHHHطoߒ%Ke˖5k,PH@VIB4NIʜ3{JfܟuY]ktBW/CZ׮]Ɩ-[:toK:vx…ddd̙3֭ =wB]g$)ϳ׮]ӧҥKlvvvǎߟ_gvرckV_Nʜ9s>`׮[Ν;r{СvgKH /,[ϟ?SO" ˗JZwqI^O;3ӭRGAx4mG#ꃊ>>>>88xԩG矕YYY{ nnno͛ccc_u։'*3;:Ԯ];%1Qw$Itʁf͛7~l6[xxxJFG7oӧfs/_ީS'lrr)S`0~)؄JҤ^z͛7/w`۴ibŊ_u򩤤z+PΘ)4Jթ>vByl0u|َ^<_( m(}e۶mkٖ֬-[rOM4YtzH.]t/>|ΝB)SL6t s玻?L1L;wܹ F!IRFFFDDڵk5kСæM<Uwȑ#rc„ JFFM<;;ܹsfe}lȚ5kr_,/jݺuhhT߁L5kܸqcddddd4DRta25x;%/Bݻt500Pnر2dјt{///e]Aիϝ;wܹfͲ[Xߩ*Uo^n.+#o$_x%ׯ/7&O;a$֭[Ϟ={YJ_僅!ІgŐӯrݒLT iEa[QZ7n)%"ɏ^ͪ?^wP4iҤ;taƌBKᥥܹ3b1BիիWWNPB'E߁֭[Bofcƌ޽{ժlR9jRʕ+w޽{*YY{̙VZyyy|+h;鮚R˯t8U0@nʁ'ZjERrN Tv˂rSK7o,`XLLLTTϟ?_Ӷo߾G$IkתR)kzowa߁w}tѣÇB4nܸu֭[رcKlذaɇ*xXttt.]<<< d3M&=;}-Dُ9۷ofSNW)kg}lٲgyhTVZm˔~'%)}A=t>t;3o<%ytǏϙ3G׷m1b{1^ ejʤ2gϞ(233ϟ#L8QDTIidtwj{D R@Zgyg0+9r^z'OVgdFc{1vإK^~_nر#11Qn/_\nYTށ.**w}衇ԧl6Ν;G>|0I].YZ?o߾T-,wOzFz'JoxTmZr @1)dfД݂J e[(zꩄ۳g?LOO?{gΜ9x<7W۷ܰZBIK sJ)7?~…y慇'Nr$I`HH'N%>>>voܸ1<<+QRczf̉J澏|3W<1]hQzVwP\x'O]βf͚\=jժQQQ׿4iVjԨѪU+zj!O:%s(w@/.XN3f{jݺu3#ׯܸq:th~yJt:NףG8p8=2۶m-^,[tҍ޲eKiƇDjlNϮ ӿOOO!升򔑑0A8|yʕ+K}h{Kk׮w;w^*jժOI&)+ %%|I+`.Q )n:ݵk.]kٲ%);7UUp?I 6Ln/ϥ1w۷R^ );KQv_jҖӧOϳ˗~})G LFكIȩM6l]wMNݾ}s7|Snk.HP ).PFDӍ3F F9S]̔´iӪW.HLLlݺ/gϞ[n8qb֬Y 6ܼyyfd7onذa~wիÇ}ܳ``gFFpss矟z Zx1èu痘(333GENd(:qFNDb ĽiuC=[nժUvZvv>غuC*u[J8tr~ʕ111IIIժU{<`֫Wȑ#mΜ9syTfΝ;?sn֣F]xlnԨ,În=.BmڴiK.=p@llljjOժU{ݻd22Hʄ(I/6iҤ79}.5NշR@}۷wB7nܸqEkȑ#G,`hO>䓂oi&%~1]t)9Є,_R'mV,^XiiGm9mN:K_Nf-\Pn4]xP19@RFZonl2^ׇr*(s'=h,8;w¯]qLnݔ/^8qb.0`@ffܭ\r=J9DNՖ|%g҉JLKѰa •9@R>S  L!Iƍ{챿K98}tibn9&elDR39}tRRҭ[LvZ[ol qBBGFF._\N:uկjNjժpȑٳg:uJ}O>68Ѥ$e(o߾gϞUiР?U<#)~Ųj*ș3g^}# ӷo˗D54W9}~]F@nZ܀,_-_|̙^^^Eg̙+V޵R%eNg9`֎K}aTP*tRJ{ѣk:(Th1SFf0Ǝۻw/b…IIIZ~vޤ xk(6DŨ!jbƨCKDbb *j4vĂX$(җ*²_&ʲ}vu_̞9 >{Ι&qpp={… r1p4c6mM̨Xb>O?1ȃKE˶m֯_ҥ[nݹs˗%%%FFF֝;wׯ_=<<0TLGt/%Rjz\ǽ ϏD@.WKORbv4>f~̚2i* yvWaG>A0hU~ lrH'zk+=2`72s̙;w!C| "o6Qk S`7jԩSpppVV*_;MhWV&:EZFFƚ5kڷoso߲ȫ?ie⊢e1q(C(ŋӧOoݺܹCQTӇG$(Pe,:ne,--ݹs]]]7mڔ@TEy<[;bGb~ByyyΝ<}tYK˗/_rѣ̙gdw:LOZ{Je OzR"=޽{,&![Q1118}tdd!M>}ܹ={d+aV[O,!ircA_7SS[~wh:o+jSqcbԩ'Oۻw#A6EEE۷oիW^o^XXJ' Ӽ򍠖`4`KGTdE4N8VaX[[ϝ;999;v:t(ǫÇ-rrr4iҙ3gb1+H'`!)hwYܘ$ ,X/ݠǏwtt5k֜9suVˣ(:Dfff,&FyyyUUQk|~8۴idɒ%Kxȑ# rssCBBBBB֤̕VUك ,##-[zªz%\\\&%%]K.lgrk5ePiVV2:e666x޽EZYYYYY.\δ)O$$WHo&YVP|Xccc___OQYY9vׯ7`߾}Ν333cZHR~fU:.9JRLZ|S8nO_(*11q͚5ݻw_zu@0jԨ?~\ӭX)vL0ʕ+BP(^|yܸqׯ,B IϬʔ)ebTħĭ ]pv]ɢ EQw;uԳgत[2dǎ999Ν={*sv={J֭;q℧WttڵkWCCCSRRX9T$F 4 ~ݧ{>5RQF"-Y]v߸qczzz-y欬ׯ/X@-knڴzj'*[v !b8$$Sh!ISϗ%+k>YFQ˟}Y6mݷmumݺu))) K.}wԕ@MMMtt4[N񂂂8::Z,oSh!IUSZ;FQfذa;vmvڭXÇO>]fMNԞ@llP($te54hPΝ !EEEZ>T$Sk}(4?y/~77džEBBx{{8 sN$f`JLkj{Ekk?3;;{j1 f!~n4x왖O$fDBi\`v2337nԩSGill3-Z>TXm-f/kD\ÍLDD9[ ЁL<-BI~zr6';fDQ3C3f?y*2D<O EQԛ7o LLLEB*++%ۉhEQ >>{G%D"@ `;Շ[[[[CCCv}zDz3##Ȉdm@ӸQ `77oA-[9Dkh7n1k;ߒBԻLhoz.++@GjQQQABQ()|IӍ7Fʰ̱)[Z32<!(CbbB0c(ёD`hhv \LMMEii)3A̼_EPMR ٘Ѯk[Q@W2uVh{E{UE:ܜwBPSh4=z0G갦\EQQL%2*B I>HJJ ?~kggg```mm2jԨ5kܼyS/_6f<,^XCf9geeuЁ9jȐ!J\U@Px3fnаE۷=z5k=zh!(ٙ-4h۶O$yu떏+N:. kkkKKK333ϟ?P,;vL}W~^z9dȐsYZZUc޼yܮ]ӧ?z(77W,_GppСCQ(ȥst#enn.tE˧B\֮\ŋM6NNN2eoYY':tP=v5^^^СCϞ=Uؒշo5k0mLlll>}´4FW֔]aUehZ0ŋ?XF:hZH%>쳝;w2{dkkk׮OmΝ;yE[[[9OѣǏŌ?0aBc=ɧ6ڵ3Ci_JKK7=<<Μ9@ddd :4;;ݻ̙3ڶmknn^XXɓ+W۷"͛gff6m4VoݻwߕH$5H$.2>>^˧Bv:juZSSܮ\Xړ'O2 !&L˗3Λ79{OkP:ISm)o߾/---ӗһwo{{{BHZZZlllcn޼IPSh!Ih~Ν;ĉo߾Xc>?nܸ۷oۗ%ω$ÇC!!!FFF&_Gy{{Л^^^111:;F|BŅ [d˖-| Y^^7h/Q7e8((jh:EQAAAtuϤhjIX,^lFEE4yMttt- 64k׮zg͚emm=fzѣGO|!KΘ1|LtfLAAaÒMooӧOl"2nܸsX$ǍRggKڵk'OWVVV\\|Ukү._\GM~ -$ O?Dk׮C߬Yg6UUU1vwwر#!dرLDԮpذa̘Ç~EfǎtD$鵓\@>\  rB I4cOEOnn=F(zׯO>_=JWdȿW!8pRTTt___&SGIIɈ# !$++K,k3UdffA=XM/ѦMUV@%~]jժՈuG,>tȑ ;_xxb ] B:~ pe|~Ν͛hmmv:c2sQJ 33ƍt>CBBx޽ZKCEEEtТE v3%VQo߾TC 6hRmmwڅ!#4w/u. 'MDǕN\2uܾ}v޽lٲ={0/͛7/77Wk(|ny2Mr3NW+JeggG/+SPP`ii!(fkϞ=lsjO6M4ㅅOOvE),, iF4 GL)--mժBPhKf1Eׯ_wAFƊEd:~<9.\PXXزe&[ٳGS[lxbFF!ٳ;w?2QS)**BQs0 @O͛7롤DvfbqTTr(j߾}unaao1ţKh'nݚ=z豙-++KݩAӸQa % :^\CT[[DZ{ٳ4hЊ+踲rƌ${SlΝ;ySFQԎ)\tyBbccezefܥK.^H$gggq\\\ffKPP߽{c1<<< &&F)BsM(޽{k׎"vءD'Nܥ]x<LبѡC^q(1p@333BHjjk?Çtжm[2(_|A۷oB矍ZYYɔl:tЧO&;2e ka 鸶vƌ,SS@: v!fZ|C@P_քӧb9,+A| IDAT+YO:uS=LO>}hȒ%KAiiiK.e7,Y^ڵkT^^m6fqL!R[كp?S,^pboo/)((?k׮=z3LD5}۷og6Y̧1[nuuu%ɓ' ,++2eʁMCC͛7c[Pwaaat#F 0`nή O< 6l{rr2!sηn۷ojkkXιK4L/_qㆪצٳgO0͛b7 233gԬ]K.|ͭ[rrr_|dɒ:;v90,,W^%x:TGŋ۷oU%RRRںcǎ.J\X,/LM3fVXBV߿}6'''wU.]uV:믿nϼa{ݻwrK*z`RRҘ1c/y411矙E2R+2_UK vq&ԭ[gϞ9sΎennnnn4HKKc*2nnn Udȿg0=zT$)t&޽\xqzz:4{ _|񅡡cƌGEu2R@0R>=ztرk׮eggGG֭[{zz?wXDǽzɓ.\HNN.,,,++֭quv@2P% P`W2=GsM6gϞfff޴iSAAh 2E9sf֬Y...&&&.Hnj7o._k׮ P +??ʔ)׮]fk%P8uԊ?X3 (#eeWdRSSO?}ZSP72_|Ejj67o~-ر#777%%~Ei6W9p(lYʕ+m۶ev'N0۶m[`CNVXqaK.h'sp(s!AK7nXn? \v,3eʔu}'LÁ/%%%1ilsu&5jTXk9r2c u #eJJJ}&&&1|tlkk;t;~C:666NHHxM|}}ϝ;GoΞ={{puu77lؠ83f5S˗100p޽xg1bŋaaaj@<\uM-}]p`̄ ZjEC=tPNNNzzz`` S!L8;v,S=Z(jUSSM֭_O!x :@߈D"S8gNӗ6n8w\zGPwWzŋo߾}]D l۶iXYYӧ{)Ubccguwe54hPΝSRRbcc~\5p2ٳg_r5@ uc˖-0hР:;soooxΝ;7n-,,4j_~[_%<{L=۳1k8H_#p ͛7Ϟ=;,,… ^D_~[c:99̛7oLXQLIAvKArrz{gFFF-[d;  LQtg2=zԟԘ֭[[YYqЁL< ׯo.gcQ= @p(]޼yCMT=sz!??ƍr6f|eԜ2RQQAsSRQLNN9uyV:'gZWgufIn.!^P&͕H$offFxkjjJJJND|>}lg\Llr)bsss:Tojwtʕ+@ס(+LMMIiiJJJD= llll066&|:D"x<}pRQEQ>|خps7fnjkkE"i``??^@Z|rBBݻw322JKKKJJmlllllڶm;` 6Lg]9]R K*B9D=УG(]t)66]vgVXnab@-N"暘ڲƉbf<ׇ[bul'q444d1(/////kr4RH$*,,b;gfNOOߘMwwwKKKiRAA۷3WIMM\|bee5k֬/SNZT1㓊dd/ʨh >ϯY~}=o`EG!!!:>ٙ4h۶z{LQzܸqVV+VL8Qzܹ3nK]tQo5(H$)S;̦Nk׮슊ٳg馦O>=s:PL}$>>^vKA=pcM:u466^|esгgϏ>lÆ [la9rd„ K]ntp[W9D]=p`Lee_l~M//,X ::Z helllXzJaa!+]٩Be733۳g۷?nݺYZZZZZvݻwwabb"DƁKt|}'''%:^GQ=iҀ nbbb>}Z\\\ZZjaaaccӥK5xuv1U|;wTtEm۶d#,OO/^ЛgϞT4 Eϫʁ.)T~^yu떏+N:. kkkKKK333ϟ?9iҤgϾr~ΝI&1>>>(Ϥ <6;;;###99y׮]O>ۜ;wŋrѣG?3666++ٹ>s=ɧ6ڵ3Ci_JKK7=<<Μ9cnnDWZjāyHHȜ9s͒OO˗/_\M6mܸbffфe̛y77m۶yzzJ7رcǎ}||.\lٲBȃO8!$҃b͛{n:XbEcG6QAN999^^^gLLVdo"/BfΜ9~xfS$}w3fػw󫫫>|o߾3g:::~ &̘1+QΝxĉo߮f^7n۷KDtܡC###zٯ#򼽽!K+2Z^(#G0ch၁{vpp011111qppիG}tС7oH=ztdd$* Xl2:211i(-ZЛ6lgk׮zg͚emm=fzѣGO4~ݻi޾s^^^˗/?zhii)ۙ(fH$Y4x CCI&qeeS4Loߦݻw/[lϞ=KZ&JM ޚ2=cǎ1OSVXXXXXzUBɤI-ZԷo_m' \|glg!fJeggGHRPP`ii!(fkϞ=lsN:6m&i 裏!|ɮ]!111M݀(5f[n"h2V H$rRUUuС6l@N.&&89f1_~ݡC-,P˚d:~ƴ .lٲɖx{;w.g˖-/^ ={vΝB&JM=''gȐ!EQ!Crrr4͛7롤DvfbqTTr(j߾}Bo).]dÍ2eeeCMKKillKEC \zuJ++پ}{EQg&&&B޽w߭[Nn|>=C"?cH|MD(L_zݻ͖-[^vmƍ+2uhb׮]~0Xhhhjjr$3C;ԻwvBD"r^8qBƫsdwg0Bb.FFF2227;wޭ=B*((s4MD(eÙGGG8PK-!,* h@ /x^R𸸸?W+++w:tӧON2ٝ{_kkkg̘QQQbm۶'Oݻw.M74E3ܹshC5kVb0=H?db> N:T1|4!tǏ˙,YÃҖ.]b#FnBO 4wA8tE1gΜ1=G#I2ҨR-O31SS mA^+B۷o,,,d,U<Թ|>_w&MLLLMMEjx1y$Y@3עEЩSB_pA333GM<9))IFK~<3nJo?@ S^^Nٵkرc?޷oߔ)SF!?}476Ls74E"&޽r2qaa9H#:ZXK]J%~sSB$vv|ccs,$R }QDՅ|++SѸZ/|~Q-8s ]C9~xJJʖ-[/ϸy%''BBtVPPq׮]{!g2SLa26l`ھ}۷3 |qVmڴi&?~7oEE"QHHȚ5kYfC`M6Ll&&&LޒY!?Uaaat#F 0`nή O< 6l;fsηn۷o7r]I`z7T6͞={„ t?o %% D$QUg(UZB1m&FZOM$i}~./////Sz:0WP% =XSF$ZXXX2JwzzolzzzZZZO +Wd;= ںcǎ.\EQ=:vصkײsrrc֭===Ǐ߻wf{U;*++k׮|6m 8kرFFхdddtQ//7o9sFLjj/]!lڴ :IfF͡D"Gye3z[㹹Hgff6}t!ꂛDy>L?+55_~[n}TUU֭[nj+>}… 5.I[}~s\@;Q!L8#.]qܹHLL,((.((xΝtR%K}_~ꪝPSS'<e\*TTT̟??<<\C{+W^HsA}Ea;mU*#MW"ի;KH$7oO\Lb>_/bS8ч^}ƙFPEQ[[wp>Qzu@;1R9sܼySzȑ#۶m\sss>/ٳg̙41|x\GN&ޱcGMM=$&&FDD0&MROf*D@8P=z4/V^_̉JWd6yyyΝsssH$:%Gz $B9yA={CcTAPSǏ!CDEEUVVfgg_|yK%%%+V?|:vss۳gOrrrIIIyyyJJJddaWKKK[<}tʔ)ڵ1bĭ[z@nӪUQFǿ{tǏKavVVV7˗ѣG;CqUVV\dP2%|JR"NBnf*|Ν;`̙gᛚ:99yyy-Zh턐ӧOי@GD:wN:uiʔ)ߵk!D8RSXXٿahh4am֭[B?W (((%%>IL8_WIMMo 7t2/$I%驤FtTa`oipae˖kjjRRRDL:駟\-[.dժU ׈i UcK4zZj…x B~իWTA (ʨqq>ss u\QK|<,tKuu54Lx۶mϞ=K/,Riii`` !̬{YcXƪ(N$2ncmy=pĉ2BH֭W^-UrrrJKKOdS'`M G#Gnܹ35V4=zرcǎkoo/uaaaaaa۷o9 6V֑"O9sd?x̙t| 5 *78#eTU]xQ3,3w"ƳL[)s!;ws΢EƌӪR}͛WZJ&&&jix:ngHH!ݻjA6 (ʀ13ة` w}ېV}NBVZuԩùsBz(gWiiiEi0{сkg<檱x@7q(#OX,...ʺyfDDĭ[[@3NvsppHHHXr={]?~qhh(:t)S졼|֭=@,kT, lccdc[[[:(..Vc~@5E1 ߼yʕ+...׏=Z( iٲݻWZ I$W~}w^c߿ߩS 銌AΝ}}}/^||_V0hUn>nQݻwy|Tl3!Q"Zp+nm>(Z[-`Wr*AJbXM&d8x:7$df,Ç|&3p˖-3gܲebѻ.#C:tc=_رcݻv:q_|quvMԩS]w]UUy7r-F2dH|ҥzQuuu=w~ǟ:?8Av2337mڤ^G=zWaO>?O׭[WRRRXXpBbUVL׮]>;g?>|x$2"Ev>z\#t'!C0`Tz 7ߨ &xٽSUV+gSSӺuĉ8uꔎ@8X,ƍ~Յz!zJ[ɓ'oᆏ?X{1Psj{j7͟DQ{W7E'O"B2_>}@;wxg +\VVw}ܵk'<|_ xv{SSd7߿(2n᭷:sLss3g6nx.X@ov]ZZZMMĈm۶޽O>sѷ?O~GYf$;Zd2i?u>{lBBBFF޵'Fzitp:n6#hvݞw-(fq>??.'ǏjK.ӷ@CϋY~ɒ%Çk2*%%e>Ψ~_?cj[{ʹ}rssj=M0^z~{S;sv?Sfu,„by:/}^{𧦦4hP[;tM|B%xϟAݻd?jҙ`ֻSeʕ~Ș1ctGVV￿m۶_uuu]vꪫO~s^l}nZTTTRRһwSy7￿^_~СC|u}x5knݺuͳCNN͛cONOOի׵^{w;{K9Aʜ={`՛7o|nҫ$7FqڴiӦMcļ>}z뭁 ?11d2[.ra.B7|@8ۗ:#%%O>7x Xw e|m DF(Df[uzW?]u*h]Kй\.-6FcY]WrztnvkfsL?|9-..NZKQ˥mL.GJR;YZtjgл@EP l>'^P@{}MrEPr{''V]@\mWWWwEz:/Bݮ+**eMmZ{]Ex~Puuһى~Ҙ7 9d&*VwbU%>?W з YHOwvg2d]K9NPd2[OXNGztn{bѱаvge]Kp)l6G}(lqTB\p8vԿ37T@Ԋ_,r-ZO>ѱ@P桇޽^z6/@䊀Pj~"rĉ9sx^ " aÆm߾]MfÆ 7tӗ_~wQPFD vС{WD>!C̜9^N:U__ "`xr[oXMM@ +e e6G D(B+++`0]EFu)[a(A,0_uND.ɓ''?3fcN^^ދ/ˎ\s͞={{Q :X?^B%%%%!!A*.Bb/^K/y>XXXXXXzyZjU|W::q@,"oq׮]muXn]II￟[iӦ=-5 K.:u8k IDAT+Wv6{_Dk׮k֬iQvRJJJn݂TX e7|ǦM[])`0,[LmoڴtQwW/RVVVjcѽ.CEQl6?=AvmDdƍksssEj~͒%KJKKEdܹ,6+ew 0^L~~5ZV;xa4333|ImQژ2e+P Ô)SZ(۶mӟ$"{^jU}eʄ:KѣG{u(**xQ__\m?iiiv e/_~/>>wSN}Ν;zjzѽPsǎx3|"2tٳgڧ^IDy x/N:uԶm~߮^n `yb%1wҥWTT UZu(++諴~Ǎ֯o*))7nlko}5lٲڎ@PfԨQ\6˚5k%"ryn(y?n\s5ӧOogϞK,1cF^=׿_V^`Ǐc |͝wgϞ| ZP&lթ ߯ T(s^m?^&ɓ'oذA+&11qĉ'N;w3l6+((jtཊ/Қ cyn5$$UL'566~f<(VUUw :C ` D[E;%%{dQ__^tiSSx&Ld2]s5"ҵkW^y%55>ƍ{o9rȶmFb x=+\&sba4[NTjq^Ps0t:ElnrX8X;8NޙO@]'jR[[ݠԪ;+%Kxxŋ;_?m4u~;!bdggU|X߷S]&yD?+gedd'}ٸ k :ө}o;NS!&f&bv{ZZZ||޵PhC577WVV&%%YVk :Q̺"#iuPJNNVC=l.5k֨޿t=ܣ2{q/s"a9r{ "#]rrSj:444j{ܹ߸qƩS|%..o߾}!uop6o]C޽;?ԛ O~NGjAB(m]3gxyY1pNK/6Nz%tr4OmN BP'Zr= evޭ͛י.-}~<2>4iرcYEٹsg]~zp뭷ڵ>|{Ǐ#FtH7B\uU,۷o_qqtmȑy{Om;611'Ov}O tڲyfP'Fq֬Yj{ٲe^,(ʲe]we4-Μ9矫'Ra>}맶׭[wĉzoذAD._G(|bȎ;VX"QeŊ[nz{Z8 &X#<6jkkgΜY]]}q™3g\.?~FF"UNNŋҥK㎽{;wzΝ?.]>dɒN xW׼yƌ>ܿ?uuu_xȑ#;]bEgaֻHbŊO>dǎ"qƍ7^nb([lQW^yjqG{Mlj},Xqw}ĉgϞٳIfϞ@cرcǎջ o.Eu/P@2:  etwoUVt J+ IP gmssahl1p8 ޅɕotp:XN]H(7:\.m>] k'WQi4M&޵]L3gUӻ@ h[ig;%!_N7jg;D:7ؤwN.17@%-5Hd?2kn%ܾl2MHo_wq?aK1Ҁ /7|[G6=ΜV簥(JccdӻSEɍMMM$$$]Hy\1Npz3655fŢw-A(v] e1-7 l_k;uFm躀1d˳_vQmsQӓpgϞMHHлSgU12fEEѣޅv\f,|v=333>>^ZKV4]D+++SRRV޵ݨg.I0w _!BP@2:  et@(BP@2:  et@(BP@2:  et@(BP@2:  zDb B!P2(A'?-SLoL*vQI;X8ܾBpBh33 mq<Ѩ9`h3ZuD<҉]L&mSl#X8R9f,D*9TP&9?T@]@2:  et@(BP@2:  et@(BP@2:  et@(BwiԨQ=??_mTUU]? } *(33[ R@2:  etK@T5jm۶-Jۗc('Oܸqcaah?yF~k {.[ Cvv#nW^yeժUYYYk֬b  Ä ^|G}TQXA(ĺ9s8w9+SCiwT(s׾"aÆc]Bj76vnկh֣GQ\\o%;} aM!cDJQ^^o%;e3cz_1"ݑ#GFVV@%DCFf7/7]=!@D^m_ve1Ph{xEDEQʎ9jw-3Fߪ vQeԨQ~sw)@Dj._<..NB Vp ,K'Nx=dgg]B ]'ܾB9eG:tѣvpX֌/|Ĉ^{mRRe@"Pssڵkxsεxfl~'D]XK@og͚/_ȴP__ꫯΚ5ĉ J >}P7f̘qWvEDjjj?"rԩkK CQ{LKdOZV>ݻw޽~z+VY`0P7$n_ǁ8˗HdSR B޽fǍVHUUݻ;*ڕ2ݻ"f+Ddʕ?|sss[WZ?A|衇X BP'jcʔ)^a1 SLi:ʄHK/tڵ={tM?*++۷jժn^SkV $O ѣ=z/("EEE}Pgݷo_qqqiiivvAn9sXV@5jfUUׯ_}wtyp2>v:;vC/Q___ZZy h ȩSN:m۶WB\dssVv{Gw FBmdffzu(++Kh7խo_z" Gcgٳk@ 2>9h7jT={\dɌ3zpѿ/ >~Q*C :t_~-.7;Զz~=#b1X8lpr%no}}}SS޵]L3@ I]]"ڄ2"2y 6hC%&&N8qĉsΝ1cfs\yyyBBPEQ${Pxn[:sfE1 ܨ\ԓ;s@t#IccHII399Ymw%L&5\#"]v}WRSS/3nܸ_n#Gl۶mԩ,qqqݻwo8q9sk׮ .jphL&15sgϞлs:Z8h4M&@EE[hV[D%n322%EQRϡ+++Z x؍w B$&&EmmvOjjjFBBB^bŋ/n_?mڴ-[o~/!O>qDG $99Y;l6fi{GG"SSS= m۶P@Gv}۶mG9vf;wdZW\qȑ#'N @x"Irr:eUUZ2ƍSN|<v /op466=z2227j3_JNNЮ1i֡wA*GVE@Gwy ]f=?OΞ=B檍3gx08p`f.l1pX 8q◿z L0gy7wڥٵk믿~)?~}UVVS1*BhŁ:/n1qLX ]˗;wNDVUV]s5999IIIZ{7PWZZOV7$BL4ImرC[bܹ.Xv{jcĈ,o׮]GѸjժ{{LPfΝ E!UW]-"Żwn۾}E[n#G}ɓ'~z7oެ6ZD*.o۶mj[n6l/wj? Veh4Κ5Km/[PEYlھ뮻ƖEZ<էO~uyYF:??Æ "t]wHD?\mL>F6<m;|A"";vXbECQ+VlݺUDz衋GgyQ[[;sΜ9r322^$"ZUU۷{_mhBPW999/VK.;{ܹ;w?^t%KXjz޼ycƌQۇ߿ǂ/^xȑ}X"E i+uYf $+VOv!"7nܸq}z1Lɓ+Nm6ۢEZ홓;$''HT&"gΜnogϞ=U"\)fy?Oꐗi&{Yh:}f̘w^uB]@8Ƨ~^ڢK2J2?y?zϟ?O?}WVO?SLVAマ>hvԙ"ц6^{&_v9s̫YBۗ1vرcoK/tѢEmݾ` 0hڵ"rهz詧ܹs˖-kllo9DR&}k}瞝;wz޷oٳeofZ q U|um쒒|p֭]t3gΜӧOWWWk |rf[o4h̙3'Ol0*b Ujjj-Ztȑ;wӧ͆߿G?ѲeL&S+XK@PGkƳիD￿zP =8Yf}kP?F>}~_y>*""SZcZ;s6J1BjKDqEϋcdddLYYY>S2'OT{R?e6V$/8tYLg 4TD80`ԩS"b0Fb 6={R py:"U_H](-o kǏߺulذa̙o1bDffֿW_Uw:@L#.p5K͗R[Os$12ugyXpa޽l]pui۷`mW^SN D :Ks_3ʜ % I'⇸W;KRRŋ"=x>۷oߛoYtuGVJJ?ߩA(KȒ"C%sΛ>}zYY /(Vuٲeqqq-L'.X '''eeb;&R{"`3%}d^!iQ͛7jԨo}ٹsz5t_ɈW\K/MNN֫TemRY _3"J}aIa9DR.10cСCOzzzzzzh\Pa7T33}=J.XR$-)oe1*VhhhgfmeΟ":* "-bJd1@(T"ino\d\1#"@8ѲcTN8d !D*BZiZi>'͵R[" eI.].w1-T @ T#vi7ڤ.q;;0TBd A΄ k_\`2,Svi>'M.SGPT5:#@w٥^]ht%fKy$v B\5~`$/ &K4Iɑ!ҋ{QP ՗Iu؎"A7Ȕ qVJ\ĥI\V$b @,r;XJW8ȑMҖ %E.@P RS,ǤKq?1NĒ*qVE%M,b0b @k>'RԕiSuTJ\$d\Œ*$1\11P r(R_&Uߙ_Nc=ѝ`q\tPs؎Iwg1=$}$uKħ%"wFI͗R{{"~l\2PsŜԹ*@)yRjD́'i$ctP (b?)_JP2%rI()0/#ПYjK_Z z5#!SCگNOEK@^r ^aْSRRZeKj@+B(Srl*]J I+FK} ͊鲤( nlm&2=.d1)=E -  n\Mg/]@5PA('nr[v?Νوy6ccH5sn;S7(F2.2$eTRL3{C翽#A(yEnw(;L}R+qZ( )WQ Z(c0)b@1]@,"/! ,q`0hx^8VEzQ,N&F66/xÙߥj;FJ}}tBQ-".N{#|g?Ef=ƚL&M٬p8ǍFנ }Hh8Nӿ`h *_b䶘6Y}w2LQ8Nmd27[ϟy_UߙFcԟ\nt3G6ty}/:|! 2?-.P RuX3ztE(1^[˹EimtE(Ȑh~WzW?RqH*J>]$ .l*;ҿ}]?t} -][AK)Lj~i*t)CDjB`蛘߾Nj8zgؾgc}H15LBX'2l(md0I`:J: De:GR/Ev+ۅ۔,)! 1B?9␔&m1I06Z{2 e:ŭU9=|@e|h|(>$:RKbV" @;<,ezW WAbt}*U_ŭ8k+P%gi(o[N"["Z8(G>8dqk82 v).|=!-d ,n PĢ [G]},ɒ}dVb !f<t YY4@L+,n  fz)?,YB93cqŭK1D̉! @De@ifǹ6/zaqke@4hqPD2)?(U502 " wpCz` aq> ֟>q]a%U1TPDgo[-1DTs,n  k[jKa.B (l'@ aFHai>fSdeqke@xhq$t%EY9؎>JBX@ʇŭ3.+aqkenjK@y[:>]PT|&>Fd])%5GXD%B"ֶcC5@#AT-e9QKpP!UGŭZgx>-n"#U &q5I>-nuX 4EjOHyT)nG2(PŭF(:LqP* =hɼBL,n pB>-n$]GJpI" h[7H}!6ħIUu$d2G(Zl(𺸵I25emq"q;.n=\,,n /B "⨓CR4T'YähI 1M]ܺ<_}-n,n p2ĨFKe4C(@lq;s8$X@O| V4mv9}"]&qi! &<NnuZ_C(]2D)N&]GJP6}ŭ?Fc2D _6Ҙ9TL!,! ⩋[W]6[.> -><@2D*C*K٧rt۝<>d= BPs}*U_ŭ8k+όz8dqkKk̭޺cfٶo~7ڵGo{Ν;WۼxNDjϞ= 6%U_ȱri)f"O&W-DB_YFm/_7ߜ4iRzzzzzɓ7mڴtR5k?~+_pK,ٽ{Y.#G;v;P;˔( ahgOW#%"J+},s\@ϕbbykD('|rȴi}Q`XtԩSEt\'VӧO'L&S>Vuڵ۽~{RRRuzq7Ky|F (w>wɈ%:Iy(B8M6˗HdTaٲej{ӦMNg31fZ{ѢEd $I;@!I~~ژ2e+P Ô)S e e.첋o\ԫW/q82|\ܺtQP'ڔGs/u% .}Wz")Pgݷo_qqqiiivvAn9sX輦); ;? HAp( XVV𬠢ڢ[PSVj/@S @N#@ܛ1vnI}z}-Tsυ^ؿ;vk/ߞsgrUUUu6֖Q۪"ר~ǚ$vl_JQq:授1mpED}UE}1HvjwEVE7A.:Gr,lv:"RWWhD򜼁\+Sosss8Lްzg]?2h)آLkkO 0ॗ^n(#"SN}뭷dbcc'OU'a_[kD+aT}FGKD ?p:j ! .MMMj#!!d||O>䮻ڱccJJʧ~:`01i$ӧ?^z駟믟"RTTbŊӧ*Dnux/_G[~pjs%,ueeeѽ{6;r)l6BCEEӧى8.Mlm-B{c{$RҲ"xMuuuQQQ$`EQsT#OYYYgg7ߙ{kuP%66V-h(K;g8&&n۶ϴL:_j` t3fwy:2<Ŀ%ZR~O]^áp|QFnUWpx3t)+n#,nO2NS$"ƦM>px%{]E&^צS(e*++e*++Mcss??A_PBBŋomkԢ̚5ktnҧO v'[;X[JKGaqkCQFxu Z@w26m3gvx@]!8 ;pkqk$$}K7~QN|x:ZhC=?e%Q rHEl>clvI%i{B<2h7p ~"7n赉~oV=z'|m[5@vZɒ1Ar$6.SLQ+WTש+|^TWWw-QFZ*%%E/kyl?{QJB^ʶHVuZH,S@p(رc۷z>ݰu۷OD222ƍש."b^|NUdDdԩZ"/V $)ng.Dq XrW^y~U7Eyٳ.\C3c%'Qŋoذaʕ"6fƌELH?ñlٲSn۶MD*++ϟndVV|N (bŭb^<>uvBDDć~x 7oҥKGgYf>m^xڵk /{ߔ͏ʁ|Vd%CgK*20gtN\\_ IDAT/ڵk9""VҲ%&}(IkHYŭ2ŭ`ue@R/U3*&Ee`n@PXNʶJi,cS%cg=eV.n]/ߊ.nz8b L2ki|)/>cE%R^(e[a@X#-d-Iکd`f@O(0GN:If`r@ϣ(0ŭ28I#  -5RYʷI[e=Mֽ$=WRLj#Puqq5E@[lw_ RI*ŭ%*(),eX3ŭ/e]{q뾧Kh507(:F6Ky4UqDI*[Q襸rKgXIˑ,n CQб),Y3&2^JzĦ(|rHyQ[{尸59||A)+mj,X"2jmq>cX2ŭ}EY 2֚dIKzEGIIg${ဢ =[;b,n (2\-RcqQ9&z@c} Ge uvq벲V_W42Ztm21HI-9,n -{P]gX|?8MRN .Z1hI%PֹŭG7~l ;gLdf`ft(AFi{&@724jKYTұuD203GQY/e[:^:-[sW[ Xu.Q\>XRerdS[GJZ簸5(URC X |Z:AsXaqk $PӸbŭbFQ H)͗o"}KzD5(Z$@bqk2Rr]r\)>9 TTwqLɘ ŭ0@QfRjk#G#JUhèѵu'9 (JerVaN>dhϥ[Z[[?|W)>>zD|-9>|TE3pǤdTn&1I>VҲ%&X E [u""ꕝfKKh``?Pz*E @Z@ .n퐔,n {e`-=s-s{f6;'@mqnڢ(3DFe2`M|tuRUʶHc{*$> 20Wm@@mIfgtui~+g[E<=5; qlu6ty;NsbPZ|/(pzKk79N픊"{EŭVy :?[G[ܺd&iJ$2IݾaCaHGv(?ߞ>P}RQh+/_:yg$V&"zG"$׋ܧyʡ:y=\fV2wf?B){! rM h] 폆*#H~k+bcul%-ם< "URO8cQzdLL36(zK*wIiVRIˑ P"b8|DKXIϕt3P|,nmK.nm`rT@*gLtdL`qkVGQ@`qk cqk +jR^$-5>cX@P(Bt-nmxI.HC(X@(Lбu(I˖C009IefH.(0^ʶHVi,cђBEFPRG ;X:d&)HD(Y/n](->cђ:ŭ2zD!vލr|TF1/n=Vb пu8Xlv(:uD20302vtGNj[eKzbqk2:GqK7 ɍ*.a,n QWslRĶ+i92:vJ)/`qk$<I +}J [@gP,:^:gF5t EH)͗n"%4.%2)% P z)"e[gu[9~%i`j(KqKN)/}oqLɘ ŭ p(ŭ Ϙ83Ns$@ؠ(+IF.M>c$}eKL@(F)/[;$e/,n F("݋[/9"BQ1:)Qv[BQ֥R(na,n AQnMR|(AB)*'5%AF]ܺb,n[2NS%*AQZ:$: `mː>$uD&(R#|45"2(.ֽ$=WRLj#CQ uqq52-R^$%.JZ[@@;{h|yJ&}[gKTzEXZ͍W-Ds{` @K}ư5<2C9,D}DI-0EXZEހ3)v`_sm"i㈒TpBQWL o2/mq"ϰ!#)#Y E&>Zֺzϣ]ÑMZ;!:N>{d޹=~܆),Y3&2^JzĦt:+($'El[#vHOqHv{;[:ėB nv >U٫v]>c%c[GQA_R)xXTbqk@(ʠDb# [ߤ OS26tE8{QYFsl"i㈖1,n EcI`%m;e-"ںXE[S1i-2]yW^yeN:k=ӬӅI0WTI&u(I˖C20;@((9'NX`?˝;wܹ駟3gSO=ح߅IRV Us[ IB(tBCCE]j*_/?㸸80 ɐ䬗-RU|#%e簸5 i',\P+v\r%+W/~_jսkb$JT햽o%r3~r29y$ "2z޽gU>;3eʔS.]tѢE>={L€$CFsL>!߼&N#Z1dgD% tQw\"ryw~pf[hE3  vK*ˮertԶd!2tWNX3N(t:.]|Abf=j{ҥzѓ]dPk8.ޓ͏7fNLddNeuzعPeՕ"2|O?Wؙg9l0Xz]d0rHil{V|iml'fSdu2Ħ% P%??_mL63PT6mڴi^օI/O<&ޓĤH֏%.:[ 0 Auٹsژ0aH-`wa@AY/GWKeR^ vbgAr~#%YEwdddvep$ie[*wJyT3,d&)det)++S#$sUW $ɹ)u{꧸Y/w.'-"[v,8N!+1DFFm\.O6WQVp+rꝹ'n޼CVH@W;Ҽ61Ma:52zH}{-R/ҹ1'N (RWW6٢L0 *{py򔔔chG0RqqoӦM۹;UhjjZfcvvvzz ֯_0`ĈڻwvllITYYeO=3MXetijjR #? wa@omnnw}:km#inR!|ڵk߇u.ᠤG~#GĴ4sAUTTԨ툈,sA566;vLq&,2&%P0EP0EP0EP0EP0A t"rW 0gʄ͛7qGNLLLLL=z޺qFKua@!ʃ;o<>guV%F΋˗_s5\s %V\&o7ප|7xcnnn~"##Ǝ;;wZ$Peeu)W7xƜ9sjjjL€$CsI&u3ck՝[9`evz#Ff͝;$C EQ&Lן}*}&va@!)(7++>z1~^;v,!!Aݳe A1Lޮ1`p_{5=r9455dH eeQ SzK.Yreeeeee_|L{n3  IFͦƬZi'EmmWdȰ2yw͚5~87xСCuuu]կ~eJ$bp}]фv_  6 :T$bp]Ӄ~zm'N|jwmp*( VFQ&촴׭[+l͚5jLjj4  IA1<꣹=3/>v,d U]b>8._O?5,;;$CRP kcI찳zJ>|駟+36lTTT^. H2$޽{СC;{3f^$&&kjI\av{!?e?v8xI\aQ ;jcڴiNb6m4M €$CRP 鰫gyf~VK2 K \{Aj$CRP 0s(ʄ;w &vmp$bp凟|3f 2$::zӧO_R[[۩AP̋H҂1y=zYf͚5{l{QF&bp av0"##k.0 ɐp~WX?ӳfTz-(EP$iAAqܘ]cjw /6FxZPP .3,3eNYYHMM܅Ik<_+))˞yNڂb^EǍ5{Nm|͞Y'bgp`qeN}}DZZ&ua@!)(w߾}?fff>S{mhhXjM7ݤ]6[SAqcvE'?IKKL>뮴I2X\f.XESWW6W ߅I\v:ujQQwq'ƦL䓧vzZǀ^z%%L?nz GQ&455j. H2$:I&9H@IDATM4i̙^dO?_]mXSIAqcv',X@="%%O?0` ^A1\82a'66VmV111wa@!)(wk֬Yf;ӫW/_Ϙ1S~ UA1/"I w۶m3f̸ vءfԩ[n5ju vA1\82aG_MeeH-@İ. H2$w5ר5ktm!&(EP$iA!vܘcǎ$$$\|yVVE A11seŽi]€$CRP ~ڭ "(;nL^OMƍxVq8sݷoo~秾{&(W?f.L:mO. H2$ׯ_?}Aqcz2rp,Yrk\p۶m{g322d( Տ (v 6;?jcwa@!)(W??""(;nL^O En-"ɯG}4rHK%bbpc)(ʄƍGj. H2$ꧭ♖ֵ=Aqcz2fp~zHm=ꫯlJ2SP ;SLQ+WTW(_~&ua@!/FGaa٣6rss;d yIZ ܺ[nEm5jժUF@k2s (3.+==]Wv ep$?|~+T#yN%Ld0y2wɒ%6믿f!(n6ԩSnw=}t5ooCu='!CԇlڴpH\\\EEN v$Óe==ǏW4iI'.3,L8:x`dd v|AѨÇ݃x.d}gggWVVbǎTcfS0yF"gqbdx2s(ʄ{W =k֬5kTVV\/\Gnv='nkkiŤ<[n=qDuuϟ>:lذ`ʘ$Ö=7w. xa(NԩSE1cFkkk.d-//3fE$++o A !I2lYp]slٲG]O2lYp`eeW}}_y}m“fprz/I2Yp]C׿> x˲)C8ذa /v#G'O| 7h7B$?裏8p񨨨)S??d yIZˬ?$IZ3, f'( ( ( ( ( ( ();wĉrss{G  :@[6EQ_<r߱yG 1\^'h ?qD{22Ǐߝ]! "N駟 S|?._"vqqqff1rYJA|y  , v k`q, 0(`n L)f͚+V|W.//KHHHNN1bDnn̙3ǏnN{oذرc111ɣG>3wj~om۶GVWW{РA&L9si{ݻwk#F7|}8cƌ_Cl [PPpԾ}^|w^\\)+NN8㏿{ILL裏ƍOL/.Z]~{sss;v„ ׯן+O_6헿eUU'vv١m +s8qBnedd+zQxۧCoЊ+Dm_򗾎^'EEE^czv ps1UM9\ Qĺr{z6TEFF̡uunСꪫtp֬Y::aÆ;v=777_z:%\go<^OCU]]?7|sKQw}s_~eNRSSk[ Գuse.|{&!!ӓCw}w6m÷^veYg?<7輒(;;nN^ةgtag|ѹ+R{_~.0((g69餓nbI]]]W-pb: 92سy7xPu޽{/_~M7%$$x͟?W~)RTTcTTu]߿ëW;wnTT~-[櫻z3rРA=ؖ-[8ꫯN> 5\ӝN0Am/\p˖-+W3gA[Wfz>t+{ ng_{~v{y>furC=6"nIK`ɒ%Wo*++`sse?_z5/+r߾}1bD;G{]TTN6nE^{}n_'|鞹}GN'{Vbpz{|III~i_|Erro߾a=z^T:455[{;ӗlzXure٤'&fd|Ř{@( Dy_5yyyZp|||VW^yOwo 4ݘ7Zo[o߾wvRRҞ={|[l_WzZLTTڵk$aJw6&\ϋJg믿^{4++}d/b-xm,:Z3UOL̶1p0GQ@kZ'|eeeyѣGtrJ-2::ÝNEޡC:/O0'R !2… ?:\<~}^&""b~z}nϘ1C1gΜz]tc~~W }\zwuא!C lmmTTTtysg:/^8477oRgp'<]vy]\\fQF-Zh֬Y~n,EOk׮Oy#Gx>=zΝ;O:N}ϴ@Ͻ~n:vX=t={x>:bĈoFrǏÆ GQٻwaôoOMM=zS<,:3#zhb4p0Kş'=|5k\q511 .ӟtg}666V{W_ :tN01KAA-[h ps:RuꀛbСƍ~So_~.Ds'f.b(7nK,p]vܹs,YFf„ Z۳0ߦMsC/b =~xG=Wt^rή=#'Ns+/zY~km2^.R=̝Aw@Q $tΖtõkyk.;?z=k5vwý{-gn3MJJjll_SSy*ʛo{iǟ8qjjjⴭ.]h`E?LE9tgC< F9997DO|MLɘ~@Ls&f|j^zy=z9hݹs'|yѓ&Mpjjjy1>vRCLL̏cs=W{#444^z{e'O~|w<]XuS.b(^O(=o333M:8wC z422k~;o/UW]yI=C{ x Yf+&>>ꫯ~|G &ڥȫV{tȰt p:|g+CVRR2{ǏBF~_c=6K6m~w<k۷okuAWNKKl6ƍݻ=LII/ڍOȨomX`x/aٕ;Κ5m+Nl1p0GQ@5 "xoܸСCM7y}:t-'j*πعs.[|֭?HII)--mY<䓞__|q۷>묳U|}8q3g7D䦛nŋ{s~z9_z^1lޮK.$::7^{g"=ztb :\ Ԙ]ζ &zKl7xcyy\SS㹠g(R[[_뢞NZTTɺ\>99N:_]:y=SSOy> Jones et al. (1990) % \citet*{key} ==>> Jones, Baker, and Smith (1990) % \citep{key} ==>> (Jones et al., 1990) % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) % \citeauthor{key} ==>> Jones et al. % \citeauthor*{key} ==>> Jones, Baker, and Smith % \citeyear{key} ==>> 1990 %--------------------------------------------------------------------- ENTRY { address author booktitle chapter edition editor eid howpublished institution journal key month note number organization pages publisher school series title type volume year } {} { label extra.label sort.label short.list } INTEGERS { output.state before.all mid.sentence after.sentence after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t} FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {add.blank} { " " * before.all 'output.state := } FUNCTION {date.block} { new.block } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } STRINGS {z} FUNCTION {remove.dots} { 'z := "" { z empty$ not } { z #1 #1 substring$ z #2 global.max$ substring$ 'z := duplicate$ "." = 'pop$ { * } if$ } while$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "\emph{" swap$ * "}" * } if$ } FUNCTION {bolden} { duplicate$ empty$ { pop$ "" } { "\textbf{" swap$ * "}" * } if$ } FUNCTION {tie.or.space.prefix} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ } FUNCTION {capitalize} { "u" change.case$ "t" change.case$ } FUNCTION {space.word} { " " swap$ * " " * } % Here are the language-specific definitions for explicit words. % Each function has a name bbl.xxx where xxx is the English word. % The language selected here is ENGLISH FUNCTION {bbl.and} { "and"} FUNCTION {bbl.etal} { "et~al." } FUNCTION {bbl.editors} { "eds." } FUNCTION {bbl.editor} { "ed." } FUNCTION {bbl.edby} { "edited by" } FUNCTION {bbl.edition} { "edition" } FUNCTION {bbl.volume} { "volume" } FUNCTION {bbl.of} { "of" } FUNCTION {bbl.number} { "number" } FUNCTION {bbl.nr} { "no." } FUNCTION {bbl.in} { "in" } FUNCTION {bbl.pages} { "pp." } FUNCTION {bbl.page} { "p." } FUNCTION {bbl.chapter} { "chapter" } FUNCTION {bbl.techrep} { "Technical Report" } FUNCTION {bbl.mthesis} { "Master's thesis" } FUNCTION {bbl.phdthesis} { "Ph.D. thesis" } FUNCTION {bbl.first} { "1st" } FUNCTION {bbl.second} { "2nd" } FUNCTION {bbl.third} { "3rd" } FUNCTION {bbl.fourth} { "4th" } FUNCTION {bbl.fifth} { "5th" } FUNCTION {bbl.st} { "st" } FUNCTION {bbl.nd} { "nd" } FUNCTION {bbl.rd} { "rd" } FUNCTION {bbl.th} { "th" } MACRO {jan} {"January"} MACRO {feb} {"February"} MACRO {mar} {"March"} MACRO {apr} {"April"} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"August"} MACRO {sep} {"September"} MACRO {oct} {"October"} MACRO {nov} {"November"} MACRO {dec} {"December"} FUNCTION {eng.ord} { duplicate$ "1" swap$ * #-2 #1 substring$ "1" = { bbl.th * } { duplicate$ #-1 #1 substring$ duplicate$ "1" = { pop$ bbl.st * } { duplicate$ "2" = { pop$ bbl.nd * } { "3" = { bbl.rd * } { bbl.th * } if$ } if$ } if$ } if$ } MACRO {acmcs} {"ACM Comput. Surv."} MACRO {acta} {"Acta Inf."} MACRO {cacm} {"Commun. ACM"} MACRO {ibmjrd} {"IBM J. Res. Dev."} MACRO {ibmsj} {"IBM Syst.~J."} MACRO {ieeese} {"IEEE Trans. Software Eng."} MACRO {ieeetc} {"IEEE Trans. Comput."} MACRO {ieeetcad} {"IEEE Trans. Comput. Aid. Des."} MACRO {ipl} {"Inf. Process. Lett."} MACRO {jacm} {"J.~ACM"} MACRO {jcss} {"J.~Comput. Syst. Sci."} MACRO {scp} {"Sci. Comput. Program."} MACRO {sicomp} {"SIAM J. Comput."} MACRO {tocs} {"ACM Trans. Comput. Syst."} MACRO {tods} {"ACM Trans. Database Syst."} MACRO {tog} {"ACM Trans. Graphic."} MACRO {toms} {"ACM Trans. Math. Software"} MACRO {toois} {"ACM Trans. Office Inf. Syst."} MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} MACRO {tcs} {"Theor. Comput. Sci."} FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ { pop$ pop$ "" } { duplicate$ empty$ { swap$ pop$ } { swap$ pop$ } if$ } if$ } FUNCTION {bibinfo.warn} { swap$ duplicate$ missing$ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } { duplicate$ empty$ { swap$ "empty " swap$ * " in " * cite$ * warning$ } { swap$ pop$ } if$ } if$ } INTEGERS { nameptr namesleft numnames } STRINGS { bibinfo} FUNCTION {format.names} { 'bibinfo := duplicate$ empty$ 'skip$ { 's := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}{ jj}{ f{}}" format.name$ remove.dots bibinfo bibinfo.check 't := nameptr #1 > { nameptr #0 #10 + #1 + = numnames #0 #10 + > and { "others" 't := #1 'namesleft := } 'skip$ if$ namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ numnames #2 > { "," * } 'skip$ if$ t "others" = { " " * bbl.etal * } { bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } if$ } FUNCTION {format.names.ed} { 'bibinfo := duplicate$ empty$ 'skip$ { 's := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{f{}~}{vv~}{ll}{ jj}" format.name$ remove.dots bibinfo bibinfo.check 't := nameptr #1 > { namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ numnames #2 > { "," * } 'skip$ if$ t "others" = { " " * bbl.etal * } { bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } if$ } FUNCTION {format.key} { empty$ { key field.or.null } { "" } if$ } FUNCTION {format.authors} { author "author" format.names * "." %added to give period at end of author list } FUNCTION {get.bbl.editor} { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ { "," * " " * get.bbl.editor * } if$ } FUNCTION {format.note} { note empty$ { "" } { note #1 #1 substring$ duplicate$ "{" = 'skip$ { output.state mid.sentence = { "l" } { "u" } if$ change.case$ } if$ note #2 global.max$ substring$ * "note" bibinfo.check } if$ } FUNCTION {format.title} { title duplicate$ empty$ 'skip$ { "t" change.case$ } if$ "title" bibinfo.check } FUNCTION {format.full.names} {'s := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}" format.name$ 't := nameptr #1 > { nameptr #0 #10 + #1 + = numnames #0 #10 + > and { "others" 't := #1 'namesleft := } 'skip$ if$ namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = { " " * bbl.etal * } { numnames #2 > { "," * } 'skip$ if$ bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {author.editor.key.full} { author empty$ { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.full.names } if$ } { author format.full.names } if$ } FUNCTION {author.key.full} { author empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { author format.full.names } if$ } FUNCTION {editor.key.full} { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.full.names } if$ } FUNCTION {make.full.names} { type$ "book" = type$ "inbook" = or 'author.editor.key.full { type$ "proceedings" = 'editor.key.full 'author.key.full if$ } if$ } FUNCTION {output.bibitem} { newline$ "\bibitem[{" write$ label write$ ")" make.full.names duplicate$ short.list = { pop$ } { * } if$ "}]{" * write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {word.in} { bbl.in capitalize " " * } FUNCTION {format.date} { year "year" bibinfo.check duplicate$ empty$ { "empty year in " cite$ * "; set to ????" * warning$ pop$ "????" } 'skip$ if$ extra.label * before.all 'output.state := " " swap$ * } FUNCTION {format.btitle} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { emphasize } if$ } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { bbl.volume volume tie.or.space.prefix "volume" bibinfo.check * * series "series" bibinfo.check duplicate$ empty$ 'pop$ { swap$ bbl.of space.word * swap$ emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { series empty$ { number "number" bibinfo.check } { output.state mid.sentence = { bbl.number } { bbl.number capitalize } if$ number tie.or.space.prefix "number" bibinfo.check * * bbl.in space.word * series "series" bibinfo.check * } if$ } if$ } { "" } if$ } FUNCTION {is.num} { chr.to.int$ duplicate$ "0" chr.to.int$ < not swap$ "9" chr.to.int$ > not and } FUNCTION {extract.num} { duplicate$ 't := "" 's := { t empty$ not } { t #1 #1 substring$ t #2 global.max$ substring$ 't := duplicate$ is.num { s swap$ * 's := } { pop$ "" 't := } if$ } while$ s empty$ 'skip$ { pop$ s } if$ } FUNCTION {convert.edition} { extract.num "l" change.case$ 's := s "first" = s "1" = or { bbl.first 't := } { s "second" = s "2" = or { bbl.second 't := } { s "third" = s "3" = or { bbl.third 't := } { s "fourth" = s "4" = or { bbl.fourth 't := } { s "fifth" = s "5" = or { bbl.fifth 't := } { s #1 #1 substring$ is.num { s eng.ord 't := } { edition 't := } if$ } if$ } if$ } if$ } if$ } if$ t } FUNCTION {format.edition} { edition duplicate$ empty$ 'skip$ { convert.edition output.state mid.sentence = { "l" } { "t" } if$ change.case$ "edition" bibinfo.check " " * bbl.edition * } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages duplicate$ empty$ 'skip$ { duplicate$ multi.page.check { bbl.pages swap$ n.dashify } { bbl.page swap$ } if$ tie.or.space.prefix "pages" bibinfo.check * * } if$ } FUNCTION {format.journal.pages} { pages duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ { pop$ pop$ format.pages } { ": " * swap$ n.dashify "pages" bibinfo.check * } if$ } if$ } FUNCTION {format.journal.eid} { eid "eid" bibinfo.check duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ 'skip$ { ": " * } if$ swap$ * } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null duplicate$ empty$ 'skip$ { "volume" bibinfo.check } if$ bolden eid empty$ { format.journal.pages } { format.journal.eid } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { bbl.chapter } { type "l" change.case$ "type" bibinfo.check } if$ chapter tie.or.space.prefix "chapter" bibinfo.check * * pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.booktitle} { booktitle "booktitle" bibinfo.check emphasize } FUNCTION {format.in.ed.booktitle} { format.booktitle duplicate$ empty$ 'skip$ { editor "editor" format.names.ed duplicate$ empty$ 'pop$ { get.bbl.editor " " * swap$ * "(" swap$ * ")" * swap$ " " * swap$ * } if$ word.in swap$ * } if$ } FUNCTION {format.thesis.type} { type duplicate$ empty$ 'pop$ { swap$ pop$ "t" change.case$ "type" bibinfo.check } if$ } FUNCTION {format.tr.number} { number "number" bibinfo.check type duplicate$ empty$ { pop$ bbl.techrep } 'skip$ if$ "type" bibinfo.check swap$ duplicate$ empty$ { pop$ "t" change.case$ } { tie.or.space.prefix * * } if$ } FUNCTION {format.article.crossref} { word.in " \cite{" * crossref * "}" * } FUNCTION {format.book.crossref} { volume duplicate$ empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ pop$ word.in } { bbl.volume capitalize swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { word.in " \cite{" * crossref * "}" * } FUNCTION {format.org.or.pub} { 't := "" address empty$ t empty$ and 'skip$ { t empty$ { address "address" bibinfo.check * } { t * address empty$ 'skip$ { ", " * address "address" bibinfo.check * } if$ } if$ } if$ } FUNCTION {format.publisher.address} { publisher "publisher" bibinfo.warn format.org.or.pub } FUNCTION {format.organization.address} { organization "organization" bibinfo.check format.org.or.pub } FUNCTION {article} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.title "title" output.check new.block crossref missing$ { journal "journal" bibinfo.check emphasize "journal" output.check add.blank format.vol.num.pages output } { format.article.crossref output.nonnull format.pages output } if$ new.block format.note output fin.entry } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ format.date "year" output.check date.block format.btitle "title" output.check crossref missing$ { format.bvolume output new.block format.number.series output new.sentence format.publisher.address output } { new.block format.book.crossref output.nonnull } if$ format.edition output new.block format.note output fin.entry } FUNCTION {booklet} { output.bibitem format.authors output author format.key output format.date "year" output.check date.block format.title "title" output.check new.block howpublished "howpublished" bibinfo.check output address "address" bibinfo.check output new.block format.note output fin.entry } FUNCTION {inbook} { output.bibitem author empty$ { format.editors "author and editor" output.check editor format.key output } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ format.date "year" output.check date.block format.btitle "title" output.check crossref missing$ { format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence format.publisher.address output } { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } if$ format.edition output new.block format.note output fin.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.chapter.pages output new.sentence format.publisher.address output format.edition output } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ new.block format.note output fin.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.title "title" output.check new.block crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.pages output new.sentence publisher empty$ { format.organization.address output } { organization "organization" bibinfo.check output format.publisher.address output } if$ } { format.incoll.inproc.crossref output.nonnull format.pages output } if$ new.block format.note output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem format.authors output author format.key output format.date "year" output.check date.block format.btitle "title" output.check organization address new.block.checkb organization "organization" bibinfo.check output address "address" bibinfo.check output format.edition output new.block format.note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.btitle "title" output.check new.block bbl.mthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output new.block format.note output fin.entry } FUNCTION {misc} { output.bibitem format.authors output author format.key output format.date "year" output.check date.block format.title output new.block howpublished "howpublished" bibinfo.check output new.block format.note output fin.entry } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.btitle "title" output.check new.block bbl.phdthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output new.block format.note output fin.entry } FUNCTION {proceedings} { output.bibitem format.editors output editor format.key output format.date "year" output.check date.block format.btitle "title" output.check format.bvolume output format.number.series output new.sentence publisher empty$ { format.organization.address output } { organization "organization" bibinfo.check output format.publisher.address output } if$ new.block format.note output fin.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.title "title" output.check new.block format.tr.number output.nonnull institution "institution" bibinfo.warn output address "address" bibinfo.check output new.block format.note output fin.entry } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check author format.key output format.date "year" output.check date.block format.title "title" output.check new.block format.note "note" output.check fin.entry } FUNCTION {default.type} { misc } READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {format.lab.names} { 's := "" 't := s #1 "{vv~}{ll}" format.name$ s num.names$ duplicate$ #2 > { pop$ " " * bbl.etal * } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " " * bbl.etal * } { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {author.key.label} { author empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { author format.lab.names } if$ } FUNCTION {author.editor.key.label} { author empty$ { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.lab.names } if$ } { author format.lab.names } if$ } FUNCTION {editor.key.label} { editor empty$ { key empty$ { cite$ #1 #3 substring$ } 'key if$ } { editor format.lab.names } if$ } FUNCTION {calc.short.authors} { type$ "book" = type$ "inbook" = or 'author.editor.key.label { type$ "proceedings" = 'editor.key.label 'author.key.label if$ } if$ 'short.list := } FUNCTION {calc.label} { calc.short.authors short.list "(" * year duplicate$ empty$ short.list key field.or.null = or { pop$ "" } 'skip$ if$ * 'label := } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := nameptr #1 > { nameptr #0 #10 + #1 + = numnames #0 #10 + > and { "others" 't := #1 'namesleft := } 'skip$ if$ " " * namesleft #1 = t "others" = and { "zzzzz" * } { t sortify * } if$ } { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {editor.sort} { editor empty$ { key empty$ { "to sort, need editor or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { calc.label label sortify " " * type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.sort 'author.sort if$ } if$ #1 entry.max$ substring$ 'sort.label := sort.label * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { last.label next.extra } INTEGERS { last.extra.num number.label } FUNCTION {initialize.extra.label.stuff} { #0 int.to.chr$ 'last.label := "" 'next.extra := #0 'last.extra.num := #0 'number.label := } FUNCTION {forward.pass} { last.label label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := label 'last.label := } if$ number.label #1 + 'number.label := } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ extra.label 'next.extra := extra.label duplicate$ empty$ 'skip$ { "{\natexlab{" swap$ * "}}" * } if$ 'extra.label := label extra.label * 'label := } EXECUTE {initialize.extra.label.stuff} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {bib.sort.order} { sort.label " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {bib.sort.order} SORT FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$ "\providecommand{\natexlab}[1]{#1}" write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} %% End of customized bst file %% %% End of file `genome_research.bst'.freebayes-1.3.6/paper/haplotype_calling.png000066400000000000000000005265141417247743000210270ustar00rootroot00000000000000PNG  IHDR(iCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYsgR IDATx |eݤME P墀TM/MA=rhJE=r{/)z܊lHI `ZnmSRzmg?IfwfI6ɶM6gyfpf1F1!     @v4C+      x@@@@@, x"&M!     @@@@@@(@=4     w@@@@@Ȣ,b     @@@@@@ ޳IS     xo@@@@@, x"&M!     @@@@@@(@=4     w@@@@@Ȣ,b     @@@@@@ ޳IS     xo@@@@@, x"&M!     @@@@@@(@=4     w@@@@@Ȣ,b     @@@@@@ ,ES ThNjaJW V1N@@@8)?G%0k;6(u2:O)m}=VQz69|ռ(sVkZ֖rҪl0(.yHd{GʵE    #R 0P?Ec/d-Írn]@e{:~1D!@񟧭F١@@@@@` %~M܍:]U)UKrRZ&_6Pia"e2)fuUGPgY_5K_4    ʙ e֏6isYjYO43. /WTLm ѵJ+'x֪YmgmTm G S@@@Ȇl(KJ~rӑO2EFҏk9yymEaϐQ_Di !?_9ra8Xu{'DYRh>U8c}Wk*^r?L    }`{Ut3*t3ifz o @@@@` 0`Is8$Sr&NKf-xޜ(pI5O43T$!kঙɰTC@@[9ѫ2)m^)([X}wݑ  RdD#F9%K͑;dNNe$/ 굚36:Y̭<"l[kurZm![V-"MgruhKCxn~E\YVgN3sNȑ;&-" `;6A.NSFI`=*JφDej^/":}vkK_nqiU6?XmWTj{G=Xq@Oӷ 77hnݛ"'ShGGIsfc%-Ʊ\x**l%-ν*~&-ݯJ)>#78J`ݧ:VQv[)omߔ896g^.*%婑јi%$oytӤyO-_1F]!o{-q,.*=DnnRF⫓[Mw"+.k3V3y_m  @S-ٛJk wnQ/69 L7&4@[;g8ɨ3  0/"0XjYۘs<#y# э^Yw+>I43V'if"O isRoQ& ǨHZ/jܠ. :S:#clێGglj]5a;#,lBS 9&c>A٧}R.DJhSe`%lt -ʿ6mdj8qya)@@) O,=143Z%x||`[-+tγYY2zZ_5)ް PJ.z [Um9dzo{o懬 џ镉J^+ \% ~!AnNn-ٴ ⵖQ[qQ%  Q7}O}zj"#G۵A~g5җ$P  ʑvՖ1P  @. "!aJߔ\W|=+r㚂Lrt{}\<'/[G yVbQnZG(M󇡼nDt~ű&7/EU--,}=Yud%QK::ծD7!kwN/UTc_@`HB@ 476d"zS$C쥝2 -K]@(9se-Ȟm%>dH RM풲ߥul퇪Z]6#hV d0uYG@2_|Ӂ0"Zt&T߉ ?lrSWZ8eWg{[./9Vr2JfKKgˬ,_NXT505BV@@ BGͷ}Gww0\4yuNivjǘbfq,HgUcA$ue?2fr)>#ϕOKl^ۼi7=mґϾ]T^uKS#1JH٦B3Msx YܾO$;B:[l;fqyV!_,dk}GHSu'IDfW޶!/:POv8 MT3!@>jPGk ;glHL o˲DZQKѿtRT 3! p##HȂCe-7XI tz1#Oi,Aݳ$>ިa=CDyxnYݝ](k_iSo*Oٺ;bMJlG]Wriyf[J_ЎC@*?\?`u.Ȉi7LFweژ2k˛ ZNެ<l Ǖb)ryY.m&G5)ް@ڛ妉W~K~?e ?Z?/{ux"SO*qĄ cs ; н@*Kͣڎrܛ@ *K.˔43o6Rr}ŝ2V>:X^:]\9&|珜WXŭsnƁ}%>dH vI*}>z笵?S兯[q!9rVFרf{ @CrAhI77E5/mlVړ{`zEF+-Q?_7}EFN'{/wC  _j[Gxw2T&e2*MV?Q[4MzM/݂>2;?RLд{¡주vѺ%:ߵR4;RLɏ.# Е@"']W؆@bO[2X{떔ݐ)Y!P? __eTQ6|u1nk/o G%ˈ&;Yh0-0f6Ή}΁oP-z+E@':R]F}o*'V-}zM_}:> ]:c]UI1d)>@bO)4~Oj  v/#0:`72Mͭ7CԛDŽs9O*#1Eـ^_V Q   @Q%p'/ lQ鞨Tk}M~HCmN<Ŭy~Fo!}~+nH  Av `9R^PSt'*_?^uw뛶؎Fis\Zq!= LrA;pW;( pH5sT  K  '&3d}UYHߖUeM wy F^+\k/ o2ie,# @ZX8ʹ,Uǽ擱3^co˶َ\3Nsvray01' 3F̋ ck<[1P8D4 c.*_yeU2 mƗRe(Frn\_}EI4RˣY笹}q^  p` 2#i'DR=:voIbMoKdU7cz#ћZN7XE9?-K$ Ũs:`c@K 0 ܗZIp<xte C Q_Dl d|j<'7D׶e Ƨݥt֡bKJZ?zTȚ;뻫v@mXŌK5뵛fFifBZ=mO7Vr\3ܦ_+8XE݃`c8;@-@@ >{oI'Cޡ<ؒj~"[I&Ǭzg{/o2~.od߸c{@uXpЪYƪ':.ϨVa}tǭn6V]4)E@$ ?R[>c\^6A_JxhϚ&,4RgX{ļ%; IDAT<8@7A  CMkcl uIn7+n _%yʛ)N9A"խc mX6fRߧ!XT_-jo}ڡu2 G+g sg CDYEb{r*ϵ<@[ؚij/w+V-KKS 9* #_W /BEme2%%^;nrt?6//O}o|(d@aQ=[rm?r@`pjfp|@@@ H`5P jdԳ?^NX&etyߔt-+A+jl}Lt%gŞ@883GA@@aP(,)d$$ӻQ%VeAޫ{޿.775ܕZ死/pW+݅^Yz/!6R0Lp~  L,i @@@` ]\Ϣoe1P8D1NeSI[M2b*^Q^uS(ƙJ97xyQj~;ȋ ^A#e{Qfz0yԛ,"#sK    ^@kvkNߒYAuAҪ9X\7fGʣ;?rFmY_}Z\_^~<-;,7_#?4['뱌 s{   X TPBڠwif..*yN׺t,17* &6k:/{)v5B\uw\]# <;@@@@ͷ$`S?PMAlIR?Nrz ߯GqV)WeEo1[.ޜ=f1y[wB|Ć 3UX)?q[գkM%vJ@@@@~ 0Vn O7Wl ٧8q{V)a)if-x9G){HZPAV=xQ-v㩶R+z#ƚť{z<#z; @'P4'zMP&u^)([X}w\G8a@@@@@4{/>]9 ɟiPy4ɃA{9BQ~tՓ1 {G=@Y@@@@`@ xP_'x}Ӷ _U{T\nV.LRV lS'ޮ˕mvQgJ    W<(#]Qc=G ȟ87Ld^)mg')fZ:iXF     08^#@z-RHj7V$1O_]eIs,]+.?Yk,#   YT3ۧZsܿd?kU/yrND?Lk%_&iV?Z3"nǗ~훋ek+JX=j&?,)b_{g'nA<"ӓc; B+Q]ۇv<inO#08>ϖKO﮷P蚟v@` x0 ˻*7<(Ym<:|c+?n_ze>({Y~rX@HZn;aY@= П_}JJ;櫥>h>)@~~R{wPlGA/9)@(5e     JFʯN#@_0o72Cvу*ϻo  VhNja񕂂wL I{68k;R^wʲOg/bεT'X(~ClY}>mfCÔvm=}/xQ#6敖9,yEqtm̰̚:Swv:G|=P! 6eweÅ# G^JoQZoV9Bu%/thpWOV+?U=(soS{fD9F,{˹#ݽlXY1v OZŕ-)]zhL^z6"Wj M_pƦzO0w<9r^gkkqG/][Ϻ&үg_*ˆj1ī0ixW8W[c;fY|=V1us@@ 뛶Htۼ2-e{Qgʔ/뎭Qϲ7'* rv+\$ݧ @ /tiKAȜ˛g&-t7ֺ,amcΓʣыvGd<28Q^b;7?WuJ&RI1E1H_@{腀 ]eUz)7)0;qG%<2]ehlisWWğPӃ]V,XclU+㺬 UKٔѪ<̮1RqNrclێGeD>  #-R;2oHB]P~O;e9I?86V\0}IKF@PP_'A@rKn>$#v+,45l,7b;GBz=-Ɩ+2\FA[9^Q ^]rWWnhɭޯ/!Ξ}ʘkW%ɂ_sC[4+ٹ;cSm|NQoQFsR0;ugų]:cW\yVB2Ѹ*?.}/,q[֫;ks@@3OFz5:0|\]$5\5ѫO,ak5^KK͒X! 绦 IUY W)R˂kNԠƌ7'%'<6:ʹ_ښQc|{z}To֖nqjL{0ɕc?fѡ&ʲo ڒs Y,.]+v+٠iuo|w.XV Q2=tWzkcʶzmsyGmI#KT^R[QW@@Zٷ}rݖ%̺3eaB@ \ 4M"/T%?UC(*,Ab˱=,7)Aw!y7|1%Z?nq?߬-LF'nZS4Ǖu?VTL}Oq>M`Gc*?؃őe3bfnMMp(O~ >n+s}j]@@o}CL2 @@`@ 0}@~m4ٕk!i=3jf vEgxdPQp;谥fo$JEY m3J +.'R۾Mq-ȰggM^eD2 7ye-K/Zt^WsҺild~$a^4k9  *7|})zیу*ϻo \VV`RpG_۷Ak-imJ(ArKK;+LݑrJ{&+*>*!&|$[tsv(h${^<\)/5Q]שּׂt2\uR7}FSRVKyB Yu=O[RvCuڶZ!<˱ %?'ALC@njHy2h"qm'y8?"#'-/g=Չ;:9J7{E'gB$=ђ4+&uvm= w?`.x.wUH$:y 3u9Q[js{':Eg @pƖʟX[1od1:YF.}[YZCR$v;/2-G'*ɂi$XlujIoSn\S }oG .Te~ 7P[6u(./[p[H?Y!tmM)f@裀~G.QwYΛ2V24kV)qS\xWvM F%>+?U=(soS}_<y-jtw9Y1v}i*u]lI2"&@lۦB-(i⭵{ݧCgy=a~z,נыF}'K_HΕ'V]j1;Id["ǹB6=ޑ6~*=뱊ۼ}# .r"@~HԺ9]UyՉi{n{jY|qr#0,Pb`X'ǽ\ Uw6=>&7%zrC7u2S˺[_d䧄zژ>,o֓Bn @ȶ@`@\m4Suyv,|$NƜ'SѮaW)[(K`lKҬH>8'Kyq8U-{lZpʮ*@F}޿MRwX%xOv?f#ʻk}_". ϨZЎU  kN\'<XXdi͒br{=-Ɩ+2\m[9^Q ^]r EV"Ik3z &{gߩ29UcȐp^sj4qo˲ٹ;*n|nR|[$o!e[\)|\(d]F;?+d]+3>IcC}J_C%5ǥQ+Cu:]vgB,7M?@˘f-xuIv"zzdvҙ_awεmlt7M!ێj~;iœ'gQ#_%wnhFdeet0u>>z2"L^HW92  @T% ~htُe GPj{cFlTnt؄(~ٯ-Qc`5w?+q-.]||v?rqی>:TPpDY\r=($;.Y\6Yںz.hF6*r  X<*0G:d-*oW^>Q[RzrM|z/aԻ'L/@LdyqRϞ5'aorwc]J?'˲n0m< _v$VLFRo7p~Br>W6+\ ̛f/䈫@2|h~#K 8pZ5,}]WA` [gi*RJ(}H^b Tw:{*1&T<кeT|ݒq d~ݰo,kZoTnҏyS.Jgh>^bIO#? D=c>Uje.hm-.*,!%?8iɒR~H>`+s4d @xρ/. --cr#Or9U%tg!/*"7M5w:7|`W ryCz ?6,u9Us|Ϳ2  O&y>Srs|z&9ム봟렻לK;0T|OOZx4P1 ) %P6Inx~3$K܌sGz(u>U+YWUKH&]ܦX`Y5+ocJ @`0}|t#>:)M G13UWԣl-( w9_?榆}^}y(`O#=99Y~Tj7/ﻷ_6&d(;آc;7hƓ<{A^E2  7hlS;  %ZF.?DEĊo4[t.!vX7d60#K{ m PoGѸe-k/2l5Pv> %@=OzCX?g/%W!ŹFxeo_GfW;,|Ӎݠo tKv߶[eiY]ʹ+(r/U7FŽ  X6-Wwy!WaߐNKBzܲqdvp= ǀr+ucWb x].L۽%?y^fMLrۗ`ya @V4G# 0dȮvK5"pkq'?#y%=Z_mcro&v2A]ڗ[R8Xڼ+\R()jn߳ۑD\ UIc$*4}di͔d_dA)~:lXxj(%5@@~-[Z cYΚ8*R4E[2)WY֭rSmmKH%۟;/*J5$5r~&x\{vzmUŖ^o-ڒoj(ec~r865: dKْXFmėe,Lp3]9qwdNt٫+p_>FwLW֯\·ϑHR+wG%.y@n`[FmڐsU.g̛?ĺgWNwFk-eߕzߝ|SMc;c׏r$[F5*4x :}9?Q^6V׏!BlϴC@0$ma"pZ7mԞG*ST^CcیB_%׳d',ј,/oj(A:y[h4zpԓ)Oxӣ}OG]@-@}pA-Ԟ[%icdKd_k'/,{:VW YևeCu˅5w?xTrNw؀ Q`Lޘ_o_*H6eS8OK-mҰxuz54_]v8H;/,$Mho-'.M<[4sM@Ț@kζFC D@FȻ$7%'6vqၠ[@hQ MɾHڿvl/-rLLo_-{bC_~&ЄqDfG-Ss]@пȤbKϤʫ?sܜK  4'`l,)dNJ6!kGm >7ٍ/ͩz2ffuī{;vq[sY>G#V$g^vqw\oz錿GU]ZԓT?+O7cr3JƜnTYZGs\Εz唎Nԗo @H5mQCe-C-ϣ ų / MޜWr̭<32ǎoyzhu  F([Z T2ȵ竎1?qG~OSwZZ̋qVJk t\;sGˋipۻ[Bc?͔4k&} }ב)K_c;ibq|AwgI6XC@ 1m@@wde$#rSukݍE2g {"-IR4,뒚n肵XC@Ȇ@Ᏼ{\%^p/iWH۷k_Rά,e,zWu\ j묞VW7x^s 0*Ì$%9ǝlnuD[Y^WQ+3LSGr.S2mC.zmƌ/&OufF=@x"HM+ST^5RnqzrS2T|/+wd=Y\1m @@Fmq U` h-1wN]"#oFO'.zWW1]Y*21I#s9_vU۟s]gY#D`/PU:ؒK<<:6j\k&ReWk %cҵZ֞ %CM,m|$Nb]iFp'Jgsޣkz;wN  @xϑ/n OfYa猣(7aQGrsk+Je  b3\vS/6vc’7;$얋签I5p3bto{iǖͫ٤󌲏q*_:mP|'⊥ShuӬy  %>+n <]2^73~uϮ+? a떖}W䛪oR#r ܤ-]^֨И/[x{>/qI8V׏!Blyo@` x?8)9w܏p?Q;ty2hvL܌d4[elPu]ȢC<  0w>>MN% Oicxǔvw|Z. %_z$4Zz&eO*2:GևeQNG&vUGg<ӛm}=?7.ڛc  >Czt*[4slt?L  t) #?!)\^r476.?<tw넜MiR @N /H@@@@;䥩uK}R7悙=`@(@} ~k3   Yп7龴42;z Ss_Ū:,# _s @@@,cՖDX:Glh[mV~*Ww }!Q@AeU@@@:Y\pukݍEʘJ+[}ۏtjb)dY=m# 0H53e   @e+e}IbSeJR~ϕc2JTS5glLmu@MO@@@2X_QiK_'^p|uH?!k+J @ j&gZ:   @9q[yv2'K1J뽒f6jkh޺ҷdaB@W;    Щ@ḽ0! @j     d"@=%           @&3Q      xj     d"@=%           @&3Q      xj     d"@=%           @&3Q      xj     d"@=%           @&3Q      xj     d"@=%           @&3Q      3סڄFO+CZ(fJ      0zx0;fedr0XLwn8?m>@@@@@ ;=!Pep=8AIniLF3!     {$6ja';.I*toE@@@@@rJWwФxAr%@@@@@@F@va'/!=G@@@@@ )Ы6dݨ&Wۙ@@@@@zj/َcZ-8G@@@@ixN(VQvʚ?_{W@@@@@]3]=C@@@@H {/T5"2k@@w&`vUU?20L4 -6CZ_h;!$`7>i6ILb;[PDD[QPDfXU֩{N3ܩ^\]{<u=0c0c0c < ymS l] V~A%دZNwyהhbec>~97:OO3kq3/|LJoEun޼ 47|? q>Ɓ'g(A*q[3^{8Yy1vmD胆w'\ iDYO\/X[OiЪ-6 kǢ>"-m4㺶@'N :JP=jY 84U<ݠSm|w.b@Î\n5tavr^FR^$&]fٵyNSHc#YĖ14xה(Fsb rhǸjr`J?5w}pp|^O02x81pV'Mp؈_]t='{5$8s&>s=9deiڼR{Fo7^]Dq춽j[O-8!K+4^h\wMisH\U%|+pĻz|]VzbG-[[ mit[`. v2T8/ZQ^|yl4@78"{Smp'@:USm;WuXSи?f-chkbYvm^ST|Qc5.Ml&k4VeeCxɾwU 6WO0D3ϾqAorwAjonmvb{I3fпƣ|ݣ}:a>.F~osTmR'|u^kyuTɟ ?N,_Qlz9iҤ{n:o{l?RM|t'pw#ϵ}}}??~C:8'R]-}xW_/F!1̬'%ʫgxq sH[փph#[Hܛ ?a_%ֵa\g x-gćӉG3@]=5:˸EQ gLHc׵rflkB[-hb3vʨSx)Zh/4< d"Y '--dж#5dvTˮ*-F$& ]fٵy NIhEJȶ٥-k-NKjF&vIuj OOFa⨸+;t[}2”'_G!xZCwdH8A3kJ 5Maϻq:9+Y7dvG ]/_`znNXeeu%a \#Oglf ;a0\Vg_k patG@|4#9rҲ贬k=r*@$/'(Gy;snh?Fz܊^:ᚯ@@{Kvn^k /ȧ9f0uZKfY ryX#=Ev@[[½$v4 :bv$B&mĚbsI-ikbYvm^јދr&ྒྷ4ͳK[8][vM`[1@*:{{+1)uqTŅQuܶSk^q1_?m;}_8qR+NˇmCy}F:s8-MW"s*4[Fvd'ڿʐ{q Q^[*[w,ls( c[ZO)*bb=QNxܟ-Pm4a  Pnۆ&aÔ]>l-G(ق&6C&CtKYzJg_y,5Mlmj  hQ:iv$&&Wk%31MlH_̲kX@%(hE.><4EvM޵e[@Q N!1yL⽅;>cʳϻ$/Hd>D028Ǣrihyݾ}\nT'my<1 +62#1`͟y̘1cwѴ%^=CY "yP^ٿ4eʔiݐEy/lDf͸OML4@\ڂ [bO؆pmX?c ݲ-ٗ/ߍ|42ʢ2 Tdyyx> xoPV)h5DvTN=۩"Q&ky&]fٵyI1].`/y\ͳK;P]UXdt[Pg@3X;TG?t_S %W.?k̙c[KXCz8yd/6z7K5*ҌS >9WyA?ooKyv'x'E<}3^[:~b-3}Գ+0Y"Gzʗg NR[`vyylA13,:-Zϐ^@E/[[kYYz[]w 4Ml֌N XBێ өO;U#=5:Twg{ϙ&]fٵyI^ދkg&ɻ:-c @ =}= hq3oH?oUZY9y&\We˖ߟ9|Gy ^IP*|^zqVT6oNBo-PN@9X;p #׆t;C熶@؂lYtZڵ>fBuhUy,yj؈SF_ư0@vTN}۩i]e::9zB[.ڼ$y()}k]ڼk/mgz lc@?G~覧AuO ќ/ _`y;Ϲm/~Zs`B"ǧ">$h)O^Z␋y;{b%C/R2*E~`v-YӧOz]ng|'- $־gY+n0!m u3}m&}'`#VEL:"rdB;  :\5 !EQ!:5;Wt4e4O41M|M2ˮ =">bVo8JgO}؋BQͳK[wה=^zJ:-c ITqyeB8Cr3G2K. zlYa!#OnRׯ};?xx?l6./O<_Ts8_;k vkٛlqڸqf_Ҍ`F'N50}l҆lf3WIlA;z+hO/F<`X\:ռ?L*Z;^3if {N33*BD[h.ʼ 7&tPbwW{/59Mlm޵eԩpc(T=\;q.:[36$NwSxн/][lb#dL6QYA?Nɻ;l)+MNqՑ-g v<36[-hb4[:3 _g΂ש5Ud{vfUl:̨ MlaJ_̲kRQ{/3{e=lt?g(@!ۮ: |;jp֦`ۯ<}M'[^>_7zq7_u7v|Qgߴ_G|qO[ڝVZ{zlLGFWf˗/'u ?go&F"Ùߋ-o*y=MŌNpe=9DudJ؂]l}F74CtNjX k1/_g e΃h NTNvaҪQA:5;M.nirFŗ:^Sz”&&vee3lr: \4ͳKƉ.SPiK(U3dpzj-hb2T+AY,a; -@' 0QZ^?;vq{,-umGk4&ˮ쌊Ѽ?45,6/E[8_xaxW=˴"_%i-N^v1!9Eq'}hMwt(Tji7_uUQQ^|vIBVyc… _ Iu3~^a6%5sעN< n8V$Hd)5Bf=!?ț}^N)3^OIu_][GO-P.m`?a_a[4KSx(YV,; ֩6~vFC5W}P ?Yz[;Q[&)i4"ˮ Ѽ?45,6/pܝ$TA{/5.MlY kˮR  9r_VxҸˑ͓? *~ _ԥKEO ӿ'#+γo D;12p{[K^% )O&F\ޯh8t$ʼn4{{{eΓxnxKpt+sàͻ;R7[W3뉺?#OHDXOٕ^ mLj [|8x [.M%E26LvҺ6:ϵҜP_!裆eiWp1G,΃"y[[·jOW}֭߼GYM5E_Zv"ԷEDo4cRMlK_̲k2Zvs\_~5_wMًЩo( H5VbK. z={+J@۞.T j㞠w o<:)Q|^ ۶>o:,Xʙo'4iґ]S5_ եS5qO)I~Rv%ũă)+m@FzM|>0RFǑgdEɔ_Ovd7 xzr%|f9XzsR^9%|zU\E9mHǶ5Eum_gq]h e|(b p޵ZֵxH3- l0KSP^ʫ5k5k\륚g<(,5-lmj Q`-*q0i& ߷S Wz\T˦if8̆| D-}dPG9LjK<|֭L佤r~Gc,>KO>~uۣ<γˢjO>_q46H C\/c! D*k]nz^n~!_h%NLeyb-о1z301a򙠌O k 'lĆ@bwN˼]< d>σ"]<֩6p>h~*I׹,|ٵbKO}Q>uZjڑ_&歙" ?9oG}gylgK?Jv܋igWZs2O5e/ZXbm簒 uWĺ~'^wU.X>wǕ'W_7/)vܸq,$<]<~Gz)1Fkgv⺘or[sm#7#&/(QKXGT:"<7ɻ+s%h4ƀ&c9B,X_ =OkWF׽}{pi|”zqn#eyUf>sl@\E)8_Ok>x>+x<Ӛ>? \n<- IDATBmќ'5F.~w`(ɻ?R#ZbDcx= @eD74:fl3Ķl $ 2!@h Mm>׉&ƶ@> VTHb>[ \P< d&^΃"Z<%(Th<9>{QYRʿ^ag+ݼ&ߋ5ǚ)NH]BLmܟkٴgyl'a&/ד"e/*rwYqvxn^q}>Z:uayc@Q{ǻɜ|}v8|X܈@-'I?v-.!k׮qƣiaރw>OJJ8%\ZI|c&>KB[ ݃(_cmImAJi~{R5΃m')su>N{"[TKAouٺDc0c0c0c0c01;oK%S .aGs.g?^9G}'_7Ss<ڳlz튷n0c0c0c0c0ck tx?߈}xb`7ۯ:[q]-S!pZ[Lq!Oܲc0c0c0c0c01бF1xpWmƀ1` ƀ1` ƀ1` ƀ1` ƀ1` b vXc0c0c0c0c0N3N&aƀ1` ƀ1` ƀ1` ƀ1` ƀ1` csMƀ1` ƀ1` ƀ1` ƀ1` ƀ1` ]@Y;C7VGɻ鵕JuWz=hkƀ1` ƀ1` ƀ1` ƀ1` ƀ1` y tj Z1` ƀ1` ƀ1` ƀ1` ƀ1` ƀ1P$;+`wb6k0c0c0c0c0c0 bc;rU TL0c0c0c0c0c(~!YO2TXyT'duƀ1` ƀ1` ƀ1` ƀ1` ƀ1` @ tx_O~%ZR]Ǐᷳg{Z+W800'>9o޼W|nx3+v媝凕%+\^ǵqIxf e׌4uv _5u*2j[p#itZ,61` 3P^?ZͳK[wMhP}*8_Gk9Hֈ?cƌ3gOqGCmkq\Ow@\JJ]O`@ [,Ooe[c}? k3f"0T, D̵N m^^h6iG2RHf)V~fS_f5yq&Ȟ:O(ͩojةi97}4W>[ܿʤ+VlqF3qG_[栉_VlWZ9s|쓛O)9V' aOx~sn(I6Im^{qmÒ%Kp3r)8B^ēqȁ,BNm۶C0h3F"hTν ˨O]Ļz}Rbf=Q'DzS-d-'xa#kJ%&S4Ć@{(׵ lpKS ̡kݕy4ZgICZm4r@~ss'umf'*%)tmr@uh"y-;AULŲ€9TNH?⼬:T'J_[&_VX%hE*gWmMls]Etf22`O{ⓧw^qz{>~qȓ}̙x:8] ZI/$w[^Yuy>&ҥK++OF7䥊=[n1"«fiӦ}H]֮]{ƍ?<Ϗ$ n9{Q%=W0^b=QIW[^OΥmo[U[mkab&/I0lX_־|H?_ [yʹ͘a(N#˶#G%U< d>@<4E((T^ţzҘU;Q4uNHR4^]QI-/+vB,E4Śg&6P]Svmulec@s{b(k^~7sSB& _'3=ebWڞ?8w@chJ;kݓ _;rq1~4HjhѢp?]~ uk3OqE@Hއ7J9j67ިw,l4VD'O3Vw}-s/+v#]6(=ayvibk>uaZj 9=}:]']\' 8W2 ; W='E[b=1ז'>N&Mlc0F#VÇ- A˶@_AבO؂&6鴬k=wJV/g(^^:{4k|0Eؑ>0<8N #= u+2}rĖh;Wc(5}/yvibk){ĽzթkYc@s{׬Lr^p-g9_t:xNPO%'fX sCBfaKٌuFm88_2e<%lq&&>?EQT?V:N'ZOb;{!YO煄-p]-paC[ݵ0lX?a ȱV_lAc^%_xW< D_gȮyhbkT_d@ێ֩/;մ#р&~4bާ12Mbދғ ٥-k-:uq-o 9=sT;qk9"K1o }h!k"a R!F)wEyM[}A_![ VOc ؙKҮ T$}ְTU ê~2&Ò~d]v"*H5 Y!o# 8EFsRhsuy]O9򾗺Hsm-U(#D0uZ.mA;OeѩKzugȍmm j|yhakT?T+ hQ:mZv-=-niU^}r8Ėh;GcJ{/rg{<4M޵eԩmycc1ፁSkH[L =W_}ݴA{#7}&+VL|94z߽S5`{pM|*;:ÊxeN'lWec}3qp>u|ux ݴ@*?g T6l p7lh ?o-hb3T&E3kXtִN=e.NgpCxN8"Sӡ%M:LT`ͽA٠k8JB&~鰹tFQx"WX4.MlDwm5ub[Pg`ҥsVCNzz:jjV=[lُk9J5p{Sx]{mzSىy)|3`y 4~yy]O.O_ [c[r!1c nwSX[~sߠhh 2ClA[cIc5ϰ|>kX;v Z[3\ĀSHY7+ occ=5+}45+M2b#byͺ韻i;E >-h-N#lK0{QL{|JkG9Y6cp*S9mýNq#&~zE)Xl~j8!:u~_/t2yw-aa)E|<|K@?X? [pʘM85@-Pߒ-EzS1ujkQVY cuY0imjrvTNN#EtxFEuhSF8,{M|MlE؍֑jxO4E9纶3=b23OtyΫ2\W?==W'uOG;2H5'Lpĺe&̜9򣵇p:cvB@wzbn^Sz%h!F͌-PW搰&k 觟}bhJ߈/Ml eөHsgHPy`gAR:OJ€SZ&gTt/UJGM }45E˚eņy(ۈ׷"Hk<4M޵eԩ`[0dlظq;ASPafDqqfL5ib >d458߃3/M=k-N @Q (;gժUqB ^^6 EQ>J,X0Gew$Ŕe˖?z7m$|7pSME}os;jޑ`cbÈ'FG'A\5D{oD~+m/#|ʋ-hb eթE,I4; uSm/_#uMK{#< :Ml:5;:Φ{j}45EÚeig&M5ei7ؔ͡< 4ug*-+2,{zzZz""bw#3z#Q[q#Lz[;ͩ\s8?}vqShדVNNFܸqg1fY&oCKׯ_爐!DLSͻ3Te/cBDHz~w#?X'Si[@-9Ķ$k1K m~Mm>e֩uGA,; kX[̶nCsR7-5EZvSӈlZVfgU5>آdMbwڋ.Q&k){:-E0P"p;(OOLʻ֊Q/O~ٳ<-|U>C]<.DXbt פ'I#\(23(EG9?Ʉ|/~ܠ]ˑ)~Aw?Cm#MK<ŋ/E.cZ/r%#xwKa'3뉺x=^t'MqČ-Px3ui[L<8( m|h \+Oǁ5 I0ux)8 .7hƶ@>?'{%%&l9Ķ@[|c:e^뱂s2X~ Cц=5k\ްSQ,!|E"ySm|]yl.miR-CiGyiveGOZeiE;)-_ޭa'ҨnCއɿuP _^IJTÜ9s'7dɻgK܋FaW<ӜK'i|\l h0`w Vdc{C<ǵ8γD 鞧z8us]ץN]ӚqF*IR6du 4٤d/h&G9WDJxU>ik=_^ab=%7v m=.a \w> m .a \'Ηlǀar&>#=9Ķ'6X]SRڵֱ[p Y ΃ς7j.8=Q9JM|38WQ]&ߗ ypWVˢzkQ}>pD`OjAF|/εe]( Ҥx!}EE"KA[{Zn)}4t73|2`fI۞jXA sʐzӽ}ڞ$1LqߙnϦt{T]wtk5y mݎ;(8)Ixxtk!&-[o 6\OTNbNosmVNw}<͞k X[b[6L SW/:m/czKg)y7RJY :kgpl@ [[Bh.k÷:futMl |_v$_:;UOjeiz:{M;ЃxYe楋T|E3|/}>:͛>}V1׆N$?|@پj7"</yyqA=0sNPx= z" C |Vbl È'j-hb#[iCu'ӊ< d,;Ҍ뗵uϚ=87뮏*z޶M&mG:m[QtN)"xOSY<4M޵eC20ǻ6Æo QF>F0cE9 oƀ1` @K %1Дp7:ƀ1PbU3%Vn ƀ1` ƀ1` ƀ1` ƀ1` ƀ100ӉId ƀ1` ƀ1` ƀ1` ƀ1` ƀ1Pb^bƀ1` ƀ1` ƀ1` ƀ1` ƀ1` cs=Dƀ1` ƀ1` ƀ1` ƀ1` ƀ1` %f%Vn ƀ1` ƀ1` ƀ1` ƀ1` ƀ100ӉId ƀ1` ƀ1` ƀ1` ƀ1` ƀ1Pb^bƀ1` ƀ1` ƀ1` ƀ1` ƀ1` cs=Dƀ1` ƀ1` ƀ1` ƀ1` ƀ1` %f%Vn ƀ1` ƀ1` ƀ1` ƀ1` ƀ100ӉId ƀ1` ƀ1` ƀ1` ƀ1` ƀ1Pb^bƀ1` ƀ1` ƀ1` ƀ1` ƀ1` cs=Dƀ1` ƀ1` ƀ1` ƀ1` ƀ1` %f%Vn ƀ1` ƀ1` ƀ1` ƀ1` ƀ100ӉId ƀ1` ƀ1` ƀ1` ƀ1` ƀ1Pb^bƀ1` ƀ1` ƀ1` ƀ1` ƀ1` cs=Dƀ1` ƀ1` ƀ1` ƀ1` ƀ1` %f%Vn ƀ1` ƀ1` ƀ1` ƀ1` ƀ100ӉId ƀ1` ƀ1` ƀ1` ƀ1` ƀ1PbJ,^ W_}Ǐ߉ٳgo=ʕ+' 1888aĉOΛ7߲1P*D܃8dZk ]v ;~ x#q/sTAOqtAi:͛rY by::!L;2Lm@>EE#<4yהݏ g#@l\6C o\pݶv_җvz饗96g],w-KS'Lk4p/@dypu'ޝwyܹs_L_s5G0Đx62.ƌgΜƥ)r H|5իWY2`yU */rZ m;  E-6k3f"0T, D̵N m^N][}(Tvi0<TgA |h^x$%8(P`[N+A%;\^ALsXu2Y:u5yq&Ȟ:O(ͩojةi97}4W>[絹u2iŊ[ܺkĖ9hխV~Μ9_f'Omٲe6ר^ד_sĖȷEԝ >T7$$C4͌H{@\p׾L*,YK=ݝ:8^ēqȁ,BNm۶CH 9O49!K^؍ʓν ˨-%+p7fu]C5Ns"O=F;CG#r@\G< jܠ;8F8EhOW9矷yr|Mm>3ڂW0nZvm| Qit:?O̵BPg2y :^9q|沜o)\P z@9#ԄRw(NfU,1r/[;+;O u C[N{PsuNAF!2@,y5Ml :em|g*aWEvmGei$7J>1U2MbNJ-yFk/sV9jhbk*5[1P&/^|8_G'9p;ѵn+:˹9ǤBVYt{{%})(vAg֭0[dt`˧M1G? uQXvy7n -s8)0p]]&>SRy!k527ڸwrx-/ӣ#&!iEKyUꆠrf^Ae7y(W2Ἐl pC mo3[e NB'IN;!-6 1G5['x?$#S{͟B"i(Pl29{urT?Ap$..&~ ~3nx @ EJN߇NykPA[[$vyE>|"mj hQ:iv/kУ-/+vF%ދ K٥-s][v_Km(F10QX[ېY"|tqZ4pg}=|U y/d zNӧO?'QRhq͆ۙ{)>3ȑpR!uAՇ@mnH)Vl[u.e_ttsy'm'!A1a 4em!|zj6pҵ=͟u;}ͷ7#hG8W eˠSd>⽓p^Yl=^x @Nye'{9#$`?tZ7:uU; dE>[< :-?f;^3Ó!NHtPpxgIlm=iΠ0Sޠ=;{D=t(N%y!v{'}^wS=mC[Py'أ%{AC_R\N,Y}8 Dn@[d֩6Bm;*Z>TێMu%>HĖ9i\^?<4E~M޵eR:0-5`E3F 4%`t܃>MX>gɵ3UTh#e^-|>Dc2gϟ%*7KN>8:{YZ}NtuNDb  7Tg![O0n=} IuSVxyE]<֩6po!ɀS_viGMnirv]׽O=b45e>eŮ1Y'k\ͳK[d][v >uZ(s8jGǏ_% / Ꮼnx_ܧ~7o+8뫌p4&GVI&=59ӦM{)GFއp҆"Ѽ`ǹvh^AK#a 9YuQёN^ѓihǶG[m_=7Gէ_Gtsd ʱ}1|ۼBe u=iu[PV,Y Uy,5Mlmj 2 Q:ev$P*fVlwUwɽjkb$4ˊ-)Ei"|yvib8Qj0{$bʕ9Kpqpc&6ُƛ`L8m;vN^ p{8׵o "7 [FO 8f I7ۗWd'8Ἐ{l 5yYGV黁vyrMHv:ym8dJLȮj$Mf9'lo$#H)^w'&*Twi êxeL%D= IDAT*_o=(ETjA,;>CF>yqp?hѢj4fO?w8D?^=FBuA? 5{uh @}X1Śzؑ\;⏈٩W16\lu{D.ʢӘzGc|[Vi"(|QTY kZ:-$ж"uN(Ҁ~74KS>9ikbT4ˊ]k]‰&ڲkŶ1Pc5l_Cnڏ=r>w܊+{vkNީNq&>naS2zwֲ0\[`]߃=R<[e[eC[)x mTm8+;ˢӘ̧=iT&=4)DoLC5|)51_B<(sw8UIW֩62=׶"ujv:IbTI~]MyWqrΛNg55vMas)8h=rgYO֣;hE^=ݧi]‰&ڲkŶ1΀9);ҥK9yuPՌ{lٲxsisq/I>p n ϧ#>R8 f ^@7i|+Gc3P’Ի 3@#oh 2g'~y!cE1ˤR jTvTiPyz5h~4#"5SR/g k΂USmX.b@ێҩi,W Uv݅gF?> zkW!hhkb WeFfcuf݃]mUH_sN4yז]S@Q (=x%εr,18éx?3^'[I^??"{N~jzqX5tL!7_߼aum30߹b l~#~`1pj2\[%[x[bNpq2Xש|{`tTuttdBEy>_L5΂USmX.b@ێҩiQ(Ϩ\mJgq-h:Z pZi&(G\ז=Z\vGLXZfBY^6y5y_fҟ*騞~GFy& FX̄3gW~P7NoNSy=@ȗSh[}# Bt+7[!a L$oyy_⡩ڦwuGu/ e)$N&~\8?WAu]o0#=ԍNY v&D6PcD,YqY\/:OJ€SZ&gTt/qpoҾ-kZ#o#GՂ^$kg&pɻ:l @ 97n|'{ 7 ײٝ ߎZS)5qK ~^]s94/A N{jɒ%r*9\zU{%-8}Fn=_E*s}1*oZtXool ?u [h[1rxĶXR^E}}:SH-T=#.%eԩK~xR}Nz oA 窠tFAuCFN+yUJ YSy`gAvhTFh-ƞG wwQ^& ~vS&gTpI>ܮ 䑏ӶW@>’&~)9CYA1N\KEE٥ͻ4uqy1Д{)Ecé4lrk|']'%Ǐ([X$T턕+W<ԑ FD^~忋S=ɷd yn -0lM2eOv=24;ÈN=ux:/xiBͳ@&RyQTҾ\<Sm<:p\yq x"sҋ[~3&V4EvTNNS tQEb]L$^[:WڼFSvMl_bp(S^14.Mlm޵eԩpc(stZj7 N+Q~5Q_ޑ(G pAn$rlٲ=GoMFnhѢ/#mxAcrGYM;bl 3PfZȟc -WgwW&]T.iGpc2i@@0)w(Na8Nf.B=F^Kouӗ"i%~AgE< hT?=˗HgR#,kkN[iG"NNl(NTg55EÚeig&M5ei7ؔ͡< 4ug*-+2,{zzZz""bws'z=#Q[q#Lz[;ͩ\s8?}vqShדVNNFܸqg1fY&oCKׯ_爐!D LSͻ3e[g`]C[ m蟰lZcLmk1K m~Mm/2Qh -v&w*;>X`~>puz/N/c^/Eo\^ߝ1ȏ{';{,7t6#]5)4y`gASm|wf[nc!ƹuR喋"O|-;ҩip6-N3{M|MlQ&~YbkEEZg(V[xה"F#dg33qĆ9ȼU~wiP'3/n86-pt"N kb[ ʓq:yLP'/L7m|l N&JKLsmP|@+jGg˟ _E1|"W:eARI}f.;ɿ@|/ǼPN1N/JޠnT *Nu:M-Nc-d[5Ydm~I,}E"ySm|]yl.miR-CiGyiveGOZeiE;)-RwkIa'F{D Q~ʽxeWuTÜ9s'7dɻgK܋FaW<ӜK'i|\l h0`w V=bA>a9tSO=Uq.Q'n.GTi8p݁\w#l)s._7@MH2qfrۙypqET? ?﯍o%cC# 8'=y?93/t$7v m=1a \w> m .a \'Η6e'#;8mAc-d`[{{K [{rvN|/|d8܏aOmo=Ay=Mu7`N.Кg:> jܨG{.VUkI/IS31}x|-t^ @DL"R%!`)yCMM+r{53s9\3kc1|3ϸZ9yRp?Ϝ9頬TSb[yT2f '{eyTFi1S>`D=8{q\ۨr +(_twxД-m[m^&e$`_5c,lw៽ħ2q}^Pg8 +I-? Csp>?uGq#kN.jSh>| %iBxqtk&WB G?cN•pԯTBB|=q <)8P.NϢ5tǩ&ZMs8זwzo>6xid֧ĝMcSpoXvyD*߼9u|՞u'ڿ76u.jͽ@t>ޚlmj:`]K𭎉}qMm#-)زi<*pR(6M/MT})AA^QuDÿ+֢: [bc{|[æIa $b`۔GYMF_WPqSDЧlj׮+򄨼5ct߈taȑQOFelzcCxp. /Fl,  #éɻs٬+-O-B}^#_C0N(ﯝHS`w.No<^k7î v=vΦq'ލ&^ p??ֶ|a8{_j.[4eZ瑶Mmٯ4Mf?KsH89(ޞcͽKS0䮭MR h]0nJ0Tv#i9w.S  $@{*x-AP) DbHHHHHHHHHHH@q@$@$@$@$@$@$@$@$@$@$@ n&E $@$@$@$@$@$@$@$@$@$@$`aR N=;˻ =w9k7]]ԍHHHHHHHHHHI o]Q˷d2?}}ܵCwv\8޿w 79vgF~}9          Hfy>'Os"?\'O}oۮ܎8k8ϲHHHHHHHHHHD@ՙ^V_gzp:yΑ9'wgJuyHHHHHHHHHH"xKb'Uk?R='?'ru:\]뺙o; b>8AO?1S          7ww;ҽNf3ΝA>):u4NmP;ç=RbEAM$@$@$@$@$@$@$@$@$@$@$>ɭѴ:ĔϺfvqf|p.-px.{) ԓs r=pS>ھ`z?t0C$@$@$@$@$@$@$@$@$@$@u$x:{w>o8{t"%8N|}Lv?u|&IHHHHHHHHHF@ޒi`l6q?sw<뺯C߱"8_5M+(ǵ LIHHHHHHHHHHT?t0A: w Swi#wFzF;]xwuLIHHHHHHHHHHT1O @Rq?0+N:sT{52q1Lm1~N޻ 6sr= td6`}XPep]XHHHHHHHHHHH uq1aM7ݴW~DxyҤIv;K7ϷԩS֝j'D텫D|ɒ 8qb\@yɹP'*Ԧ3o]?j{Ik? D_@SnUmFWZȠbSy=զJOhʖ4knt}*殤vDZG>Pٻ hUtOɦ ff %Ы'G~́^k]Uz'u IDAT]3nSn?,jv'W'됎.Tޭ:@5uq|s*^ hѢ+O!dRE]vAv׌\=lذK>.) Š+.ڲeϋ2Iy?8_/}\Ύ@QRQ9C?Ir -\" Ssd<_"V= CT\@IĢjBh\bMPyymN&8X&ea\@ޟ H/\@݋P5\q\Д6Ѐ6 To]Tq/QXs?Д-A٦*LCHZѴy=6 Gf2 'aO4eK#5e72T6EESqk]*wMݵm1I@@͎Qs>埂;|YCds{q۫ *{@7$ʏTpOY{I6>Bhk/R\+κ+pWJ>Yf58W?ຒwM8H?(J@H>Wq<_נ)mr|3^ hmhgP 6p Ꝣ@hr]ײf 4<]? X[t %(,HߓΔ|!8-Vq}%,8ៅ28K9JWՠoRN@OI~eG.WJmptVj><י:Ȁp?,y<-NI}QKgΜȪ&-Riѫ9\K>gHצM_zXx m|_ w01ʶ# tNH:Dz] #|Y %2tb1y/8 GA7 t?lqFW_}P44WݬզA^-uF,ӛFeSQn:EZi}3lwh6=:(7 ú &:{=)= 8K\8Qnơ<}4>moH_! (ˏUkf"H>Д]bٴazt "l5q ~)4 <3aolSy4MC)c$MҖ|Mٍ{6Ud*\ B5.MUu MM̓:uWVwcnkIn"|%s}&;v|L&+c"?,YGVVy Sm dCr2lrv,ˬYXJ>q+Wy&ЇOx |C8TU+Ǹt6A{s?=y. YM (nP\˲s_`.hFSEQlʱ^d!/qja?(԰Զo]ӞGiڔ{5M2)F1ĵ 5e79wW\9PeؑuoGFjs%/^̆C64.MD65e3OT']x{ ?*|ډǽ,:_:GxW{G'7}Xh@+tJ8K]9!+jw\cQ)!"ss{m8$>HJ7FU=msoxB'/\@Ẏs rXaoeuG@MTf#ٔc=\ Rc'{Am-'QZ6< ,kcZ6Q}r'|M ^}ޏռy %mK9tV]4uNS0䮭MLI -up#qo\LxuˋsmxxZqډq,1p*r(2׿2 ה__u=xJ7T?ZՅqBu6B.^hdls7D7[6CVS 4xUԓY='2 Y85сĹB^04eYO3 vwrƪ =ֶ0ОGiٔ4ژM{zT4e'EmMPw@ҙB%9 Yǣ!^V{ 4X59MD6 d3%T˔彡qoX=!y5oOtgxN--,v"nrg௡oA9 6RMmmm X, #G̡fD5Hߵ{|^ fcDfu<`GY¹mfh.Cd.#s| zl,F E݀l4ͦK5 {A6Ֆ \lٲۧN-2ӻ5UzB2eʔ73nd͸y: )Ad =Of5gnz-,r˃|N_nGV#(%2dk K.I⢠)?~>h[ogpl1UnQMT8X~&8j.`|uùj3p.S#ڜ 4M9Uj| A8F/^/[}M@jʟ5k֝}OYM}Rl7P/O 6xB}yIx\@{ _4PְVV悦lި6Xmh~ 6Ֆm6eW?sՔiʖmלGM9Opqhd&MBISF]sjs]dkEޥ)[6O&0rnc.{p_)?z&Ndp| hSMt_~} EMRͽ\ ~?2pc$q<|KQG?eIi2siMs#s4r:!_s]>G,;P\@MٍlSu j^ :h J[Xۦ͞ڵh5bcUj%lךG,-rFiqOR/Ѽ?є-4knt56wM}ZkQ%`4e|-aSџ  vΘDͯ< 9!}1ywd./r[㇜9kX#7<:;u"r?i zٌu &U$I ܖOХws|3/8#aɒ%OT&݆zA8=`cpgA!?(:q4Oy >)%Mp6 ҁpʏE)Gz]qgYrcWv.~.2p(/;p\ N/5@NU6єٽ EC8p 6eCV}iر1p@.Mh"~^P`?Ab <)8RgΜtPVk)[t-<* Z3<*QM~شԘ)WnyP/y,2uO6\zW](Z^Ew[{ȊMҖ-qؖiRXF6 jڮYxfm9^8]+p+.]lʐrq{pnbWo? Csp>?uGq _X\sJ5NwVS>Bk?95~ kC `?r } -}mQS>v}^ppHHHHHHHHHHH` QV{mVk&{ze믟pf-)y/QE &U)s.q/ǽI;]O{#א U{Gn=cOs?fO{i-Ys$@$@$@$@$@$@$@$@$@$@$O@`vuly798;~A>)UPy;v8 @= :3NMs'kysC;y._͓%,w<3$@$@$@$@$@$@$@$@$@$@$PG-mg\o]^O n+MOIO%y 헏|FONu Jܼ743!pM7կ_=^4iRV/]WW׾|NͶG@V"ʫ6B悦F`[NG ez{`ӿM7k6-'sZ{@rekTZՖ_go3i#4ݱE˛ $Hc-JnNޥ)[v,G)$O#@QsVr^v?Y\~'5G{׷u8}EIu^}Dι' 8n ש߇a=2f_Q߯u7x9ywܱ֭[ADzq9/o({(ͮ@sECf |\MzapπNYH_A~s/"LJ 2cʔ)ohipO@}f{桻#F6r\I3rk`-[JrNO,/OfxX r=FU@T\>ۤHelEtז6#)9p!lRA'"k'ډ!?G=N>8Ua9#Ѧ +)mYgJEB+b=Dk˗/:V\Ps/m{詹hAۦygjۦT{iˏ36۶i\~1t\9 XdNy{?5eK47lm."W9C^xT:g{-XKAsӔ-dd[4mjyI@k'>UJw }=x} V<0}zB7 ;fb>dXI(qwJW I*۰a p'T_ .dzүhoT\̱XD뜦l & ۺiS̓mDmw2.'\FL ٌ ΍ܶ!<5yݎݓp>f^W¤\^3qg IS.8Qp5d⍸h1G9ܜH!'  1NGj 6Fb;H_hT8@Фr)MDV#I矵~ap% WjT 3ڹ`&h7|4"cٟ H|َ-9 K΅mSmDNMS=^ 4Ws?Д-AզhG[f<2Tcj#mFi3J>!*MU6p(g"?UhGS{J6M03H.<ٖ%\V:;"npl{~l߱{߲߯ 7qxɲ5ןsop_GNd:$xW!hɣ$nr SWE}m,E]yJ5xA(?k׮5h:`xӹzذa}]R+V\e˖e~q׹o$܁'sf~ӵݻA x\/_u;]{_B?&,'/ (v.;"QyyH&8X&e ' s {ʿ 8X4e5MկA&vx*Y;rK[;yZ67d<ǽ:~0qϸ(6o8N\RHwT{(h݃lSyI!y$h<՞G Vmh# 3 >J5eK'47lm.s^4.M*wMݵm1I@k?$^7s?[/7^-:_:GU(< lрv\-ms=DQ =~p #pww^1XMcpRkYw Rǃ7k֬p<\W)iSu")辪[߂#83%zM`e:7@[ۍgP Xi= 7A~i.xﭢ~9[ﬓyF #-/? `2?Q\u5QHwȉu",$ Џ\'MG̭|x}53u ="NT._8ù6?SCwd˫u<`utvaQPt:>l5xrz&ANZ[[[iMlKS>Yޢtل_WoCY<ށs}-ےc'lpG{tZ+{h^z'[ܯ7Uw\@?Fl8> } ݻ9E\@ ;џ H悦l43qŹ]ډ.c~S2ξUsoӬӚdӂ%{"^ zkEwmj˗>0D hϣmjcj#mfm#>hה-}ҔߨK5^ X{l_ i@&SH@*w>o^`’k'^sp0iOM3ti=jLq$g0%8@Pvx w01Sdr2L'4N |7T/eRy?'2P^i.X=x& "s}1z.<}}8G悦lȦ^;"k'=6z7=_MoCY-N@{3bD)Oͽ@KM Ml|i@HsI2OSGjk@44ne,$є)[:)QeksID}(Lc-gedj]k7R652KRs'kf㗷/xE~e >'9nucH=A9''X `&A䏄#[I)W_=WݬզA^-uF,n6U-~Ş'1 {/uW2Fn/;pdKC}Ͱݡlo TS48r.:Y=i9:n#Wdq../= hcqYGVQw3G#+q6H#FtW hW@ ASvQ dچX];]\ܗjzLݢ ^1ͽ@,hʆ6MAg00LTydиMyGSl鋦F%i ,(T_wiʖj'ut#;>E7 'WD~Xԏ뭇CVsH5A;t}Ɇd.YYf\Ν}WT7ގ8[};^+ǻR>~si\@yd.`b1>+"Q%_s.hN2E Z];{(y-64C^8Te{/5-6Ֆ/Q6=OQ`-dӀUV}iה-]єߨ$ iEvͽKS0䮭MM̓@ǦX6&\|7;j~xɹ~bä>na?Y]P u[,Y2ܲ]S[HE=Y 8\#Êʜ?ˍc @hH ׏?ʏ&7lz.Aeٹ/[04e(6 6\M{ݭ9LY(xjES(y)5!/E{?(԰^ mjWQ6<dӺL;+؇C&s~+v7}Ք)[koT\Dvtwi&ܵu״)yP'P)sٵktu8 _&F^A{L}T\n~outʏӬ-:+J8Ku]9!+;wk948]D?~c^bn.{キ ħI)9fgCmq</\@Y)A\@sB |O0ch. w g24eKSa@dډNX];][7 rqxOzNWY`{h} X`줲p/$6Ֆ(-rrյ1-(圻;藺}y'f~M{MF%i(oյ(Qc\4eƊwm5mfJiH>jAޖ5v:8D:Ȅw3^k|d۶Ny"uQW$q" }suiFĹvq\2n ʇy1ʟ :ŷ5_]t/z?ZՅrqXuLA.ݚ_ܓ`YW Bz#a_d.1qjsUͅB`.hʎf6xյ3D6=6݈G a.ie4CZmSm==a. =Ҳ)i`Q1-(7əf4q)_S`єߨ|A{ X59MD6 d3%t˜9shJy}{tA?韄.罥j6[9bZ[X~]E$qΎ3 QoTjokk8ĺeQ9rduGH5#*~ƨ|מ{9ywS>]' V) (k H\,F<6#s熢nKS6fSյ?.wr6u\#kFlM1:{ &6 j҉4mSmHhϣ4ly`h>Z~7{p>LO {MʚU6٥Zޥ)[hr]Ӧ"$ВFcj\hkx_8mKKJ}v!s^_6[l9z',v́O+*MԻ& % ij~*nj:oQn)*-[Snor|m^L2%EZ܃@8p-}ŹqEB4 .B?^B¹.(/ (+ ; 炦lM6Mډx5xY;m逗q/snw647lnqWB zQkMJk{]S;P郃fE)5eK}<Ҷ)it5M=JH>vG8pw^GSl)Qeks)1L^Zk]k.NӦ}Ք@HKZ.# e2W3G>W&(iAmNEny/ }P'%" vI!'KtR@5Y IDATMlA}z?c wE6A竚 @p. /jtjDsASv`FivZ;>vbI {s6mpO- )ɪZwكS3BC6Ֆ/ Ñ~帿xX~3&j4e6kϣlyM`XR>Z>U,tg5kflm."_-hEPMsҔ-䮭M  E@ς7C_Yp….̓ N!^?*rXDSG6ov߾7 8>Weog|Θ1؜cx W/-۾}&\s L5Ϛ5Nhgqܧ&>)6^ , VV悦laި6?CpDcNq׿$Yo/CGP>sX)L=h{ApѶxn(*^.ǘxg$LSoK<=5my*C#۴7S{YMšU64fZk]Ů5u׶icm@@s ؇tym| WI_7+g_=_G&MٶmdOo ,xw8wޣGVHy.{  oK;;;YĹ /R׬5巶vvH[e Z>-AI)>_t.(ô&Q۟ Hk  Es&Mv\j|IJs*є6:DNĵ ^:ډ(K\;l Z8;6þt^ ='6Ֆol׮]=DY;PS(aS< `iٔ4 \6M{T%>5e57lm.L.(_kEwMӰ@ipZ;x}vpV/0)Wu<$9ÜK'ec>SpfJܖ'(O:,H_Af_wq&F’%K0y?|M >4ppBDL?5('0C1\[O!C ySLx2?OTsAS> :0C'#! zS4?'8N 6$Dys$*C꿣(>|I&uלy`/W_O;ezI=U<|O0G~Dc5rmqx 8h.l3/h.8w>mڀp. \+Okd mH"LGCN(/ Z!ן h0 ȇs? !812Їp.\lˆ)q %(/Z;Qȿ 0/vv`S6 "NY' vvwbݚv$m xX}e+$؋/_~uzr^s/6@kѶ|.BQyW"LBMҴm6Q6M{jͣFirV6e+)ԾDԺ_~ _^uod. 1o"M<eƷ_-[)͵뿚澘q\MӶi/<& ek;&v\G})gtnEynFkMpsa oAijqӧ1 ;w<  ~e +bRQvr9لa|r,rp'(toB߆Q ~H5BLOܥItMbz?ꫯ>2q!Fi_m/΅.>s}._Q'q. |"sBP'PtҘ3ILwGȵDE>"szs!҃\0(n #`~X(+v✼F3 r< 2߉9oηbwU(א[P^Ts/> D@KM w yAI%=1ԖӔ-ؖos%iӴ< 8io$,4վi/7oq_UF?aRYkQͽ+NVSei4W͸oSi7}x! OhY$7waI|*Cǝsg,'a$`A~#8 g΋wGt;לR\)O<%ė6ˤoB#^ט掶WBNS Q4+,_-Nk~݅%΅Bz-t?CGt\@8=V"֤;|phGk51X\ q-n|#(IJk'k'R)eoG{rh7̻7aSwl^֦Ai{~lֶ`h 8~8şZEmͣRlٴTmXo3MR})A@^Quod.IO5[kQq`K4eQmqO tM2I@U3.^>/O a̞1~kplj WK>zw'\s̜-Бu?$z>g)_> O Qp5ct߈taȑQOU3ʦ\@^>X0'z54eC ⯝耿v"NOuNtTmC5x7î v=vʦ&tW͘^ mp?HjT[>0C g/x[-zEG-HۦLrɦf?Ks~L5(M[e{l&wmmُrH Dc]Бl=a݂ ʹ&՟{w񫞟~pۃc$@ ^k۝@Z;gHHox?^Mz8ރ @3P}L% +؋Yԫ|uo^:ٿ̓ @:.)N>cSȀ̮6') ԓ׹' ={WYךΛdvu\͚s ԏe;:4uU76t{9}jq\qHHHHHHHHHHHEן A[y9oq٫oa_g \79ٵ#sqd2$kf۾`O2IHHHHHHHHHH98ǿO;7s`WGX,|>η=1˘'          zPL.#}J]gGɜu?Zb          L 5om‰'g)xỊtC ^G$@$@$@$@$@$@$@$@$@$@ZRsx kG pq':+f= k)~ 'No9I:r߅HHHHHHHHHHH;Oܪ;y玀[0ZG^|OS~a\~9jTFϽ]ِ3`vVy          ksgD+w=죻; <}({JƷoY}?~vu^c.{TSlmN۫ E}ܻ 'ʊ{Gu彟}u =?Uh ]׹לL{1 ԁ@g{יt^ rr?5ǭiOwvn8[|u՘7*y          H@[^lt\ Կ!x́x?ktl+qsΜq>u]udNC$HHHHHHHHHHH`7!g;>5xe=Xd>>jΪwxykN;?/ѳ2tt?s-k\˔HHHHHHHHHHvG}r8~P1g?]?'aY!ό}/=/\qmKxO$F̸3[\7OF9$@$@$@$@$@$@$@$@$@$@$[q&Dz繫f5{t8GKyq/{N~p rȰ{馛ׯߞ/O4öVZ.]ڿk|>ֿMSNf[wʫ^eS5` q[ 2YPk/-f [5m*:j˷šY1htG m.oF$L (e;{lm۱>Η^2jUr9 v>aٲeEլS)>d81O C+q(ذVMo2"6іC DY# s!2y@3 ׍wY[\+b=Re/_J5i~l=m-?۟Gqm1O瑶8skc\m'>'?t,+,Y,܇5eK4kndݵT}=?y@ 8pŋZ^"뜦lm&#ۺiS̓M}z.}zs\:Aw'c,:KsK̍787 qjطug#rwuttATK-2|zB7 πټ|mp:y qmQ5 8;*dÆ /^{w>bxBY8'W5PJ5@ M@eGKTdC8y&m>k*3Si\?4g}Cu.quH4@4eiSiH[~3\Z# ˥'Ol4@,.) Š+.ڲeϋ2Iy?8??^ޑ*[tttـou.g/ w()Y:$yB92/y*KOk;6Gl&ks"68R6і/c_> \@z)G^!F炦l!# 'ʪgmHP \_Ž@z Da@SeʫxTO~0 #iEӦ<Җ_jC4uhÚ|Mٍ6:M[ͪEx5.M*wMݵm1I@@ThcW.5NGC: "/q]qy}5kJ8_W+xהAAQ:lE)J"uM/w|%ʏT:N{18u0ڏ;d ջ3zG#peϠƱz`P'8wOH}C e+qk( %Sp4bUd Dl:m-_\s"tv.hyyyt e3u\>As/ Dg8h%hT[~w/$=Ұy=mG^s֔-4kndݵchS{-mf5.MMںZ6 $qFckjrγ\@tqp7 +8ENRS8ៅ28K9JWՠoX^Y)B~zɏN + 3%_. }b:s]9vLyzip?ivYv[r=ni(- =]ކop_~ '~n!Ӯڎz5˷O ͛>ܛ*8]UiDyqwd9ge*{znSqc_3g$EXO&M$(& IDATMk,cz.Rf.XV{Am2ϴu3V3ϔt܌dXϐˈ9+rzZL .x]̦ywm6cY6$Je2OsGfidN$,aKَ|KEݚK'X\T[&Pe)ۚ!6S䒄9qNftmPjWv۱2>b1J{naH5LҥKg[n(wc)gEEcXYY~v?N{6.\wjWW|P.; ury/ҩ{Qs'徕N5I 5ԟ$c|g8&Hc ~kZl'w?XnbyZoK\PI\-UüXn !~_#*6󟒌]^Ը׫zN>z^lzaj1\z\2ίZ#[׌S ˵1\,eKuS '0Lԛ,<2=M#v(a[v,[.\:4 lH,Uklwky}l{dP% lOxvkز?:y-Q!~\ @t7~[KZH"ݥYLڵkV?Iu?6Ȫ/\7IrOq?'Ou~8s`md:>4\MfsAn\Fh$qIԏ;T^gں=rW%Է~,֚4 8F7ڦ(g=)tdDM;=G1%E>Yʷ]dM2{ j@"7V:rxXr=fmӸl0'0.EAkbTj}$ugu#3G|]x-n|LWKn{W)DK部PCE]dW׸ZChհ^mkƓxpԫHOX~^>ܱK#^sc먹}S\p=S=$Kٮ(My.3jݡڏWcWkl4Mo <˦ТܘM73)uRe)Rvu"uvlIwsQoyXrҦlȋy)I;vt2G'xh'-ןy{n>Z>霐MuX_O(^$S~äd$gr] ;Ct*F `Ʃ)=Sͅjp.XʮG6/1UTLGVwּs0#?Jw3kk% ?Z=!GyٔyZܘM7cy^-e;-[.V\wJQ`JX-sKֺ[4yMD@'a:'8t0k֬!u!7U#l[by/KRĊ _/Wߚ~f:F%N]mn+..a\nsARNŚT7 HМS*gJ,E ut7γ|zIBqZc=`-5M=GzaSiX(=Kَ|KEݘ{(f\@:~b@"7fklĒ6u ȓ@Vw{'{vJ_PN'h+?+g.]zq^qu*h[Ts̋N|OC۹yHwq;&L[TB잮<˥ K,qi`)a}_~ CYZ\Ͷr߮wUYmvH/EIxS^̋ct h.(o{,炥 E쳾N\,e;;[rҦ y.ngPE-ѓ~q%lk֬Ycneķ.\xt1ǥAq%/%]U!wU4jCa]onah<)s-ǓlTǸW$'ʮ b\"=k<\X/*gӤ`,ւ$zMK/sݾkzIei,eo96e:£Cm:7XÖ%K5|GYklgEK[4D4&PJz>@z.t9)cyQ /FO U[?KXZ뚓.Sog\?¨WԌ*e^zMpYR)S.zgs 8}d5,g5I5FǓQVVƓ*/q#gz9je]6C7U-چ_JqTHE]%Y߲{n+_3f8#P-o{sǞ!{ՁyڛW_.=S^xRDxp68YM_a/ߠhrSmumל\g Ν-9)Sl_?۪^}y%Y~g{6  ݂jeꄼkJtqzѻlhu|g+mG}p>zn/=fǷeez;`ti:.ga%I垒{Dǽ2HSv;WGƓץ|D5LǝLq5LǙT3ys\ փׂ*r|so'p7涗4Z~Vl*9=uͦbFcY~Ǝw듵&})l>:(Z][{L_&]iչ(=ɪ][Yqg{'l %^5%%}{>\<ԨK*wO^:iN|=bڴi5V|ܵ"(K`Uh[0._qeӽUJq8m? m eWl0!QݪFݒ/W(6O*'mݯޡQpjŶlL.m/Ńul\P^MX58Ϫ+^ӽuO'38ϔobSXϛ,ד5oɶ|h}jdo_?_u1l Yͣ8x:+v`ͣ*3Ei|t(mߪ>Y^A -[NÂdu.ԟպh8d=I~Vw¦I!Y,i,lhouk?vn>݅OeK>zEy[^J?cfoz|O׳-*ImeW gERJշe)1n{6D x&|t)N8޻jA xo< TpD%$ {K@xL @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }pwM @ @ L{ @ @ }O%4F\p&L\OGy䆬udɒIۖ剓&MZuqǭZwO-u ԾF]rIĶ70'2b.ٞd{BˌY z{A{ȪM+rG4тMMk@2P;u9<9܀yBy]/Rjĉ  Finu<[JwTҗj{[lcynnck~)@\Sj ߤ*+VضXV={ǥfJ c=Cl([v~ҥKe!!>>Oh<)]Oަx/RJٰx̊MTo3h}LZHmMmߣo!o՟X3^}ϯWͼyޣC^R6[4S kHl;JW悶wһ#{C!ƺ*菕|zS:vW|Ur˵z`8=-KN`mSka?yT4kZSyd-yzY۴^~Ҿ㿫Òy_|eJ[\mZvmXʷ]dݭ xeO@%X+_RmΝ-m%L%\lRYڼEF}"{m 2,{8YƓtx~$B3ҍ˯mZD.DQll)C3_PzU2^ua}T_V_wCbC*ʮC l-MՇBugnVkz`8u-KN`iSאΰc2fmSyj=G-΍j"k{$샥l׆|KEݚo@eݞnuAk-\dtObym=(ki!5nއ#t;\[TAqǟ4NrVU6f?c+9ݯW+KK_(L[گ *sOX'z-"U+T3%wEԲs6 ZD2kHi(S76*)ּNxR6\HNe&&[).R_IUd'߭+5ձ\="o\PLw+.M 8ej=X 끥l{,TXˏu#`5btMlj1O瑵yQmߩI;]-eYwk.5?Y@AR1cb}g:Y]v,e[&d3l xϖggbñN,1cB_tEKT=퍃뗫`_>}>FW]uթO?z|B|>}'Qo)lֻEԶ~^FTs9*+ }\ʏPB%a=I{wsPxqҹf<_9{U\z]oG-S~QUjƫ'QA\,e-uiهT (S?;k9Or!u?ymG]Y5 .ZA:-)} }C:n>T;fЇr.}^bTگwVlT/(JvXؾi}.¬a_KxҶ2]cS^4n8bF6MT>WbmRNjMT&?&Scթ_#9aHI;G5rk?X8^#^'O wEt)Q 1Q#9\2s7qGNX/yYNgsO끥l 6? Gy4yj=;Mc錯Oj`)5d)Rvu/E˞?ry{K3l'/Xf]FAw'S'm9Dh[c٨MT&ކxU%oT ڠ'Oqqk4Teb*ٚTŊlm&ClZԱ:r-pd8-KNwkZw} Gy4yj=MkGlG>ilצ|KEݔː7=PWt0muhz6 *O|mÊM $#x;KQxǓbe.jLfeNuѴW݃Uwj+ b^餭t!N܋qy|ҩf<ƓobJOO 56q6сMm81D2]X4^KJo// $ך +\q^Hͮiz#fkS: nXʶ|ǞPKzmӬ+ɵ\,e;-[,mKy.nC'lVv=Vˁ}wq ۔,kf 3/=a„amңնxy<=yUgwO,mzJF)Gm8z;I~4n{lז|KEݚo{r_* y*FKUa=Px\*r^ghy}l{dP% lOp#V^J ZB.]Bf2֮]{ڬ<-V'իz٨GV,x…I6R~916LSG+bmmv r*YaqD?1YH:R$I(M 7֓[YNoͷ=5h^ pJM yMV(zV{ɦ!n3>뇥lה|KEݔK}i@}^_t:UsQ|>e}\,e;&ܭui\6iA zpFWx&J'.lFwK/kc,=*w͔õ毲4\u}~l~5^ˏq .CoRfի 쭮 tG6Q{6QwI;T^CI4^utz^xS/55-3Ul?.nyVSBQlXe/-&`=ƨxDkZo:`7ByM#li))x5lR"nʥx/yǣt)t)j_gE0D3N\,e;ܭuY4.4 x7G h1yuvƙ9J-ˁxWk>1U_/.na_e'5>]|{1׻袋^-{}p0Qj' yokƓt<;#;qMOG6Qsxw#mmzGWuxMǫ~2/'0UulOT]MU~dXvMEAmɦrK5^k4vrYX 6ڦ7THzeSihZnzn˦{ԙlGR"nzy}鰷j9'v[vŕ~T(Vf:'dSgtsXBbΩy@laR23g9MuP ?xμTSDGVw sI٫u<Uk>DZ~FI]HP8^k@v-炎l/Qyn)c=fVI˵zZ6'B(/2OCڟu,5/r'ږ-eYwS.C`$_wKU ϟ=3poyxXrMG$/#Pʯ)ZFz?sP7g,'NXl¬YT}txTŏ*_oUzO\,?K+rt?44t|^WkƓx ~)E6Qg)bh[mjkJ^bϛS׷oo`Mا_l=(u1kRHYʷ]dݭxQ}mHz=P#89{Z\V˵R5wk-md '_΃<ۣ.$W\q^.K'RR.$^t:uw4hYSO׻q؜:R]rUK=^Q:oop;WSJxǞ 6,ߴtjWƓ$~'׶8TM=W[DǼYu#(:-HFdo&Uzx?y[OCfe}ښ*ݢzRUc#::.7jCl*{vv4~ GmӮ/*eXSkAoѹ'`佐xdS+Evh"ڔZ/r-pDcTT^_ mj-?i&owmߢ麾}3&阴yYȷG9ؔyZ7 {u=}7Sj9չkNK|KEݘp$_M5 (Ȫw>?,.KƖܭucC@^pEY`8})TQ_F?CV7zK׬YJʈo-)+>.}+yo- [U/ a׷?P{d)ORNO*M$?wkԓ&xCLƫ8\>EXul*MzZര\X lmSkK)|ڇzhARYz J:~WmR,a)``jjkNLQQr rW^1 z깒7eU WĊZ&x@_qj˃zJxrm?:KOsUVmDkl"ۤ>NWϛ"rW9[W/ JOQQ}@Yʷ]dM sRҒRTK+Y}::jrf[V;zxKf93zDaH)Bq7C>ZO hwK7ʻIWzWQ;g;G!Nq}vG()s3rn~{a'[ Ϳ??*6ޑiJбeum_ti+;sƌgymo*"=S:q<)xR^Lw"^P41פwwe.hgl'c$s:TWFG]yl }Y=o6\^ 끕lkZw]_<2KZdZvMg-?y&K=OQJ~lhg;ލOW7Lg=>”ː7Y%4VwѶro?i3Љ=P{ ݗzK5V~U45@VxW{幨3Ib:͒{\Kg{6  ݂jeꄼת I*F;#zlⶭ/WNGS :Xn7|wwKzXIm}Rm{Dǽ2*-!?`xwJixR}Gx,6Qv:&:47?jl-A&z}޵ %tj)Xd>"lv׏ɷ\ փׂ*r|s΁o'p7涗4Z~Vl*9=uͦbFcY~Ǝwkε&})l׳:(Z]/{L yT>o`;/xO9M4>,kkaV碼N.'>XvmeŽ^oiRȃ@xL4{@sP.={wq;YڊiӦf>kExQҫѨn׷uIǻ|ŕNjlpcu`B~U7 %_ݯ$Ql:T^Oں_#C|QLI5t)P=ɑh延mlm]m.x?'[W]T_s͜ri6m՗l`[3W236"c8Zd׼z`&ڦxF~vxֲ-g5,lځyj6|Ŧqҡɭ,4ZߒlwrHCcR{ ={ wi\ԁ?#u$?+;aӤ, {4{P~6^oNi;Y7~݀'g|z{ؽ>9ctLv}{g͚54>d㩾BS){Km^._#V 7{`Řƫ?~Tdk[ ں?FHn%+]'[6XzްkkMkL5.r?[>W%:.BRJ @ @ !@ @ @x> @ @ !@ @ @x> @ @ !@ @ @x> @ @ !@ @ @x> @ @ !@ٳ IDAT @ @x> @ @ !@ @ @x> @ @ @uGu@ T[^v/(W*=sl7An@ @w[H @0$p^?߅ ސ}ҲޢϝsgX։-:v:mB @xLg: @ ^lWyxW,Zx~it̓6mA @{{\~ޜ "p̦Hɒ@ :fiqdA>e>^}U4}$>9m'_7wzci@\Cq"pl=%y(xAǼGA`|p_!٘)R$PqYZY@^3D4>uC0 ]~Vu1+ȁCll])Y(xA,, OBCY-lz, aܠcG ' ׷Wq MeX)R PYX Kϛ?F~k.A =E91"hQd c :۱u!"\#0h8fS@}8gV#\⦱ 0])@;}k}c㭋%ش71)11">ϛ1U8fSdI8 ޯlmO PȂp]D"plWaE\C{>so7g)R$PqYZY@'^iIS7:%MdAw p]m1"% E/蘅YflX{Z*~ZŁ?M"tTGg{{9•'?[%4|;sܙnu1KȂ@SL^͜9sr] "p̦vRt4si7_kE>0^1@+$o)&~xhC0QvU/[%E_6T1v%K< >ӕʡD~p_/إtwҭ_=1/Ҵ)Od}gU@ @ @@cۍK3*9; on&ܸպux^~7q{nw>Ҡl@ @ @@GjSS)J٬\tCk;~3YA @ @&`xX@P:Y'z_C{7$sXx/Zե @ @ sǻ^d{ݿƯFsO^c5德}=߻U>w?p- @ @ @L?:H ;W Iۡu4|{Y.'/{x[obG7צzAN6w8om܏QN @ @ @@ :<ɍ} 597䔂h?1}!^/x! @ @ @#`x/M7޳]a^wxx }/ 7sЋzpc_B @ @:I}<)`9:1Lۃ?-sdmܛ( B @ @:I:'v0f/Dw)kh˔#݇K `ͫeJ@ @ @țJ}]W _˃w51ohM^p9x{<+(~' @ @ @s:we] 2*?1Y+=cHA @ @%`xw6u9sCG._|ȋyϾx|ٴ> @ @  xY>r1=^/yWl6[;~:zB @ @:M>:cmJxCTpǭ 6\^?e9W?A @ @㽑2C @ @N WC @ @ @ @ @)xO* @ @ >صVqA @ @@G>Snj^9=9J>u9ן}s[yQ!@ @ @ }+O?19O  aqB @ @:MZ}~9ag-vAn7^z{&C[G9 @ @ @]D+_;x^W֛] JU @ @ Aѓ37}[.a}P' @ @ @SZohg=GDq$J}q5.4 @ @ @`L~)&kz kAu|4 @ @ @SLz̔xǦ ǚ}~z;V! @ @ @#`x/?{`ӁWؒ=' @ @ @[{O 7~h5n:}veP @ @ `A~zS\_Y{0c7nw !l!@ @ @$`xW;xO=spgxA0}ϗ/>ō @ @ @#`x&<ߏr/<`ѵs 3|oO/sNk+g @ @ AzkK`쓯;:(i_kbΗooovuJҩo-xs4X#HC @ @:I ǻ'-{wfSCJ&r @ @ @%`PIOo ǵ% @ @ `@ 'C買1yl|,v. @ @ @ ;]8+xv(ݼܴxSοkڿBB @ @ t^?{ ;x}w K򫃒3L\~pٗv!@ @ @]I]  H?+bnUJ@BKs IJGwRV|E)BIRL]5 yPMnt7it@Kkus_@wZt {W@WWף% #ӷ]g%S>@]B`xw[NnAE%z)[QGo@w{ƴiW@pw 4'0y1 0cC!ScSSy<3;} v,ec#^Aߣ~RN @ @ t5X9慣;17TW.T^d?7 C-Vϝsg"@o/h@#ޣVܑi@X]{vG-xm#=E Oǻ?kOG\ߺPA쓮ιkю BlИvw $of<* @5m t=:O@+}wOCm9k;:W}W[ @ @ @rq (Uw!ҶE}c+C @ @$`xuuGN9红^?an~s&\|6N6mz_~Gx4r؇ @ @ t;}?8XS6{9ˬIQU|Yv~J" @ @ =DoF =֤!'vu|S 6k͜5;7wӦyCvݴ>{u^+'Ho86}釭}9/=vkJoVr@ @ O@myG7hhչQAYu~][-TVWɸUˤ6aO=qݲYCv#7Ə+;IC @ @E@NiоG=TxBk+ާUtߪLtORO$ﻊ3*i0uJ8RsT~ͱeoz>; @ @@WՊ7I%=]T˥77P$N~G2U Jx[eY}oMT @2]oo~N9sAm  @ȅKUJD8Û>4F9 wDz=맔C᱾z-g @z.ڷP>w= ?K+>&9(Ri @M@זϒ+vӽt*8Go| W+=Y8U\XrzkĥW:ޝ&yiP=_Q9JC,cKϔP>:=}Ǖ@z\8I|L\ŝuiO)6sڏ) @ut*b's"=ѓ[4|_%G?+\=^ J)ޯ\}RgU;oo]}m,g (IrǬX @J@=2Wt>S3{( +38@ &kH̋M*?Eb9A¿ܢȡQެD).oVOeVCq0w;N.sy2`\8.9ꪦ?W]wW. 35H7Hv @W =Rm}|cʈ @=D@׎3]6 ]ֲ/pOW46 gKGPJ[AǸͼ_&nM)![gm1_P./xexx}(,Nsw$^7s`ytyb8ݝztOT^_9+[w@r{]̟OeF4T @ܤ/૊m=O[9=߻Q! @x&F½JtŽ2tbď=k[Qշ6&e'_jr&e<4+m~i=h I`N7)oZ)jܓ@ 4#u晊С7(emgWÔ{3"`4GW("( @@iMTq74E{TӠl@ #t!?K}~{Z9StO+vިQt/*QWjnmyXnokԏVblrxb{{W۸R/Y.#`x @( j[,EY7[QEOR6)<@ soW CxV__ξݵ{ <${K{±ݚnƎV^/P8޻udW@MD@ MvMzg9͟hRNѯTޤ"@ ;}O7^9iR\UJrcQKB+m"0J}T/Tgf @ 6a"a*!oY6906i"@ xV鏇 &eMu0IHʙ^ u=o5_uMU2z}^=.@ L 4{5էvhp&BZ<ɡA +IelRXTu֟X8y^"w7 oV8 ^(2wC^ًO{} @tSⓊ(ZbŭQJ~*բ5)Le6)o}Qވ  @ R34OtFm'8g{{RxA רa\-B3݀Ej^yKn=ً+6۬ן}3 Ijxwf)6wu]?04]MP@ `J@,5rF&*ݫcZ]NkR4엗MfOU}<{jR0|>X ެ}˫uҲ:`uy܉@ M5ҵ{󀳢:ݥZPņ];E, lQlX"Db"*{1XX-X1X)6s>Ω9?3wμsLil#SZEڋ(QX \o0Cͤ 4{iךO13ӄn1-%&FDw~t-r?|ʤv`%@`ԮUUV즼nζG#C sS2$]I" " " " E 1RTs,kJ -M<8; uP" iedbY%}!W J`ߴ@X. f嬈aNSSXS/>ȉ@pO1JC4x3 D+l~BHN *(Y;˺ρ܀8uu[ !jH!A>p+g4yVC_:c۟`PgE뾍o8+cUb7 Y;dw7yOoCH{4Fˉsn΂-|W7Yc;}qʴʼn@1-Qh-A5ynw7='ĨR[к+ C>jf% Ŧ-E; `[-&s꬈cmon0}|9| UHw;3)zY9wM 3Z쯆M;#lȟ!쯟s'"PpixFSPZs&"Ʀ#w1h |PۜL7@x >yD '88i_O-p̽≋=|R Tdygb: qHzNI#݊Ph%%|CݷZʗ'Uknb9b9]:vZ²|0D. =G뿙)mWq" %JBӵg\y :-㦥8C܆08S&#먌TVtTx r25=k1r'?..18g+FxjHqG:gI?V67'ob]|ո2aρr" " p9.H5cͬ\Lc<ߺQ3xAWT?şC9JӰ 2SBTS'9NezXW[zA fmׯg]1W ]M_a.X9a9S>#W@&@?*s:4M CBLxA9p6 QA\v[ {W}̀-1י8u`d/y@N\9 qkӰi q~+};s+X7.'w7B#ʋs%U_Ay\,@Fr"aL BvD4>w\~ aAxm0"kon+UI{Xi+Bc@Nr@7AU$?}dHU*/eheqsppM1Eu#βӣ/.ࢾt O|E.`ΠqnPkRh {>ց` /Ùi(2=U }pn6 [ 4M4oB 7i!g;}Z <*XJJl!+ qN|1*/hANoVmOI" " .|kE9nmꙇk-H<{ mA|(R*ǟ( !~KyjfdQ!3#C啔Iw2b^PyLƲv2W0p Jc`? 7?|׌Ӳ~Q^`pߕ{p:E2g?eؽC:#tRt0tc^M{h!OYg^ޏR#71^zxVXH=Ҫ5:6'IJ'Ʊ\:י%c1O,Yj};i@p!ltEcvj.k>R@0&N#ι!yIfoYw=ޜO2oC6̋`<9 N*=}+MEwr@{b͜mc[a8?nEc>Inx \w |޷w||ζnl3+@!bZ7o"u'mE >>eͣ\%)ݴӌw?*UW61;cf ,X$=o!7ߟ}V]y5̱= a:DzMP@T7䝌 rg CxS@zP' LU恛d;B*ix7 hQF8p⬅r5[(n>EOccnRu f }v>ǪC[O{S:|=ٗ:v(/|S3DGh[8g@6FLndt+ʸ3řzB]4#Qgֽ.5m;O2ǭ[mT4N\ާu/sxI$3zEHI?Vcאhg"A7 *Q9'iq&69XǺX,\<Cs,[Ḃ=fz,Q* 90+?m!QSB=(@!Q,33YP})~`N%@x]=2gS_tWHZIa;-/ @˗@ pN986̌$,v&wە? YN ׌>nO=Aʚ2@ ֘9$Y83!y8?™.@΄:䟇"frٵ /ԍ:/PWزnrƭ-QӘ{'+8 cIK~x\@Zhz(0d J^@(Y,ȟ a!'Q`Qi" " UI`kOx=z7"gj]I7oHNm@N8t0ѝ 8a*Ȟ 3qH6|TQ:vuN.S iT0bڞGL}fBii߶2pvS?q@.!ݫTFw/E rpݘg,ܼis.ޏ y](岞$8nK<'q71EOcd6\*X7˟9cU< 3f H?Yl4r 4>a7ll_Wӥ4"`a.OO"eـO||̷D `ܶ=:x|eT9eA &R0I!u*bt[9O#܅N5qgB*QD T耋Je|?" 3W@C*{!mx"38kFdJڧ:=>\%8.75>IMF~_Q\:1g۷qGAC0Ceo9gˉ|H]ORzڻ©ўxE*`bءPv&zqα)Eq{v<$*)~Om+ aYV9HG4432#7c`@6q`F05}D/pX&XJFz]c4/TRD [PsF(g.Sٖ& yiH@ԬH|hșjq^x?tFZ_O9*C\3nV%S랣ǡ\n>VsʴɊzi>M/WfRtum;yFڤ(BD@DZ|*p.Rܱ]O-uB!"M&Gi"PǢ9NT8fo`}ܦxjNW;oEPѩxBgcE,"P.Y)_p[4f5װQ&!is---?gF_TzGYg] ] j=?VzTЈ A$>DH~+'BѴeϙr" " K&{#*ko)x7ryh ╯Gƙ|f(όD+#й'Z:vXt=d0#!iJw;e4u]GN_o+v=}jOo ;d"Ppa-5/Bs>$y<@nA!z{;&zś'$|YUtfѡSj.Jާ: :*0a ])ow w6o&o2Eے%+ue\ x\ft4ghuX+w'LV@LtAfgy]W1w _w, ïOP87* .*Fu0"Zd&wfϟUmhlxk)P D@"0ײF#uzU!g#C!MZq٥|-ΝYr+8]PN.+ ht;b;} vΒťl ΃shC4OAn_$+cU3oeC1DM$ @ ʧx%`5]/kxobخqr6җ|#g ?/9RӉ8|үDk>n}-ҿ5GHzVI`>2~媜@&LwG Lr3h6.9Kw~;΀ㆿB'HZìBt6Q++ZD@Dz;8Lq} .$&|n*%;^8*ٖcF'Z%+ "P\5n 0v1,4 ?eFw}BC(ƻX8{5//ބ艏M78ԣu @a9/bؘTnb0PM;o8\1>V6>cP3ƯRː4%TgЍFW6g?D3yo˔ga(2-*&u'(d M3t|Ե}Hz$]#\6odג!{MKBhV#JA9vj <" '~#ZqM* w!CouH; =s*ΌKũᬅ0⳴GY(CGQ)m@uڶ!pboX.5Ӱy̌7ͻ2Ȉ5~y9; |Ї(j|%û" "Pm8'rC7#OQx-qF8o/pgIykUAȞNeKN܌}g#S?:&!ț˄4?]ww$l;雀ř`RXgg#a\XU3 ~jN5wCMf" eD"5Qʲ)`:Fŭ?FA"@ !!U}H,lcU8> HFg -T`Hi|r "x.ס;4F +j5jusɎkplQ8vNNJA B*5IU(Ȗ:9.m\@o4Ëٸ2:2a!`uySYksO !vF} ۩O!V󴬇m~?P;rKWh@s^4S/ K!r*"CMvs {p{xUx;26l{hLqpU4l$QZ>i%/8I:Mwȵ{$y汱;g|[Na06?!0ʌ1cUWg\n =:4.F?z4T$2 @# ٜfu2hWX5/D{B{p?}!TVr%s`43G^Ym;.p9?Dit7i} 08 q u}9JBdd⓭; Z{h+V" " " UC㉝Йa!*Ǫ2MTr([4LM@;!<7B yC خ}oȟ 42Ad-9E$z̙A8uH9\=ޢ̣rBNςR*="% l H%dR`.γC[ p+$صL럅C M! Arq| +Bր{r)IƁkO5\=cXN\8y!@8ޛ^;&dp*tnTSjX!>Qл 2< Y/BwƙAu>h4a]QFߣQVED@ʈ~G@sWicBM)?ˢc qYVa@^q0N"scXB=cnC Y+-+c pˇ!|Hr"BOD@D@D@D] 7A:tGėcUrvEE2U,@7/-׮}KѶ"ڻΙ|SLNN7gempTEC2 gNȉ@^xC&'" " " @| s1f=z~:gB4euD@D@D gmVَm;zz.R( `_KrX{^EvMu?rJ"kaEHkWUD@D 'ޥc:wY~s#hT@!hxUșp|\zׇ+r" " " " " " (߇mڭ1}*mF>V\ tsz΄G6(|ZÖkrN ׭zVND@D@D@D@D@D E1n *}892!P2#$Ѱ-N[vms{mv͇mwD{7g^eL@E7c%꿝rX8M֚lm^P=+bMMXvOCُN(AD@D@D@D@D@D@D@D@D@D@JL yO}JZ7èi˲<5ޱλԯ fhL6~=V_D@D@D@D@D@D@D@D@D@D@DTb_k765MI|L.f]N~hXlpMsgzn" " " " " " " " " " "Pjx⛩a};jO[gjW >~C,슿+AD@ʂh%xVYF2&!ߡ!qS4$'URV"ޡçM\i#ǂ]ұ`x5y" *FD@D@D@Dxm_SD@D@D@ʁ@ouns-7)g;Og[7(Yo3,@TlAse45%6tr>jfwZ:k˴|ն7Q^@e`[n`|p?ƍϴ&K~odfX~(%^S;MÒG+ly>tdͽ{+=Vn_j-lJnc%c~ކ ?'+," " " " " " " " " " >bxguç^X>mh_b|+”ޱ%c#_.6#AQ" " " " " " " " " " "P/5ҧLJVg}<}_ Y%zN D@D@D@D@D@D@D@D@D@D@JJh3^9ucZ훹qom.)soDُ\׻ٗSN(٭1cs0}]'Tm_kY?agί" " " " " " " " " " "P%1]GijydZr&-k˶`NAdfL,'#$" " " " " " " " " " (Umʉ@" " " " " " 92j9Uv z8'+VD@,KK(*%{tmH'@tA՚0/N4Tx5,֔u#8  qPMU+E@DD dt/nPD@Jzתo@dxT@7G])MD@D kKz ge]BE@Dďs 76~ƪA*@Ά1c mc9:$Orh nCp-" yLߟ}zUDD@;A @.9QvvL g>wINfƺ1WAyH_(Dƿ'" "!-KJ@!p5\nz@pcr" "DVLmKŀ61*%o lhŊD@@@  <3oF;:צUM` zVUP 5W+" " " " " " "= Xߎc5)oNmǶ{|{Iojpy9, ÐurٕMD@D@D@D@D@D@JJ gˇŇUKJNxѡ(I IDAT4u(@dxT :D@D@D@D@D@D@D@D@D@D@D B9\5ºJD@D@D@D@D@D@D@D@D ض=^M_pCՋ@%52꡵ >이-HZ]i²?ǵV'N'3&ZҦ(*E=k.a0#@ ucfwpX'8m#.&KFnj1Zk,r" " " " " " " " " %!@{^hv'ʥAj@1xFN9ϒ3~Z! ֫uç<8`(," " " "`]wM C;@VSy˭=ytAE@ u#MphLb?DFV#1=*)" " " OB^EBCކM =_s!"NND@D@D@D@%uc*ZD#&R+y(Fs'yR&Ѳyf\vFm/ 7zK ٖutmǎ۵֊w=qv]n5}m/xcN|nýi @5ih] yc@= bzTLD@D@D@D}xVEMQmgdN{Fme~?ݙHS^\5$n1׆UYz%zÐu"d':r$}>BR%" " " J9?r]LJP϶u7MUt{"]OBMWv#r=kX=Óӧ-SPD@D@D@nj3A4|8sAԳ)ͯ2?nA} AFw6r#qa,+ݽȻlFm0-Y,wtڊ@5HgO|yd*!>}F&r<8 ^ND@D@D@D@ʅ! iCҕ$%#^c[׏ho.4%Ͱ" " " "P `QotП>2f1C C r:HׇeP!݀O!JH8 ͞%q3?WIg" " " "P&}2t3|h` ጟ6@.Ff;dhq(npnnZVHD@D@D@D@#p"TwP9in$>nCgBm-jU2a}*T8  hPҐ|-I`D%3?Z" " " " "PӎxlHm1 $]I"PRޝn'Wn/ht~mĻfX~'e,|us #p/'" " " " "p*^!CҔ$%';ן xʌn0>cwMZqnY|h)7T:A'3$=4 {ΐ?B(QD@D@D@D@b"0m#CԿ1t%@ jxg:v.}hlhk_Z)#'[^-mG[|ZND@D@D@H8mn4 ,ʿCtpw~UND@D@D@D8rI| 1俐k!=hly>d.sȻ!GQG:'A r!vCIqvzAȩG;Nax!:\ ڊT B:oKB2/4}d5D@D@D@D FA7b\97de!@&A r3 Cֆ Y .d/֐RQ![+Iʂ@wr7'l:ǘaulipUe1+\ÏGj:.mE@D@D@8GwqnX!> =a6zFD@D@D@D 7w"{8m?妲M YMls'{k41!\t%@Y]Qz >n++tɣ=5u՝μ>iұ_!,73!v;Ȍdά" " " "PRv6r%q>csm̠UNôo1N;n v%l?MB]pobs䟠wQHzI'(oDU!J!n[0w2{x&ӌnkaeʼn| +@5׋ a+#7,A^q|l r3GC070oC@obu|7̽Gc(dx}E;y#'" " " "PDMXpTYP-9 r^@o4tvFվ͑BcKBքԤ݀JC>HS 0 ;ofK%n(6kM*{}w]3gPVԆw>hr)[Π2qPdVC1wL^9s? r_B↣0{eEj cdIhVְQD@D@@9fxož"a}Zn& %@5A7$W}%o 1HdžTVI8g6@"[NG_*Nm[5qŊ "|PEr;m[VSJ*uU@ `-㚙akfvrfyC,lY#-E" "PYp=+Z)\Zr @&@.ȥo9jb[{ì *,eD"K8 JsI蠕)Eڵ ƺ1K %llSh#U^D@D@D@&dܠ㚙|7zX<8=hjyS 'kO&¹Z Bq=nȐ/,o}v+Pȉ@qhl:>蚁TαoD8 址X6N0R {Bҕ$eG3ˮjt P.n6fEwj{ΖeM^e>84uIHsffߐtBO+7UEUT\q ҭw>˶-D^Gm 3e KG]\R@$?>9>,D x1vaP:kN{P:/FϾhC+A]j%@<bOUD]wh]aK$dj9 k,w0PChp>8S Sp1Ãлv=NݨC}4Mfq)! VǴ"}SmxP'_ 1ҾD)ggp< Ba`dozRYjv>>9xYc-sjW^`EO*kd*tL0QE! IS@v1HKpi,o=+*ia{fi0lMp z'WUr"PNCp܈s'Q/ 4:zTŸ(9(6NƊj+D<lx0w-c9Fԗkgy.f_Y^)S*ؿǩoq(MmsP8Cg]VFqnys%}ht<_X^k5B'J>CTH8N4|0 2{#RyNy;uCW=ݰg,;BO :{4S C# HS@}xq^SPRpϵi§y;|99ou± B?y;g{ng ;Ag6SD 8C}=Egd.v mh7]I7^χb%qhn Q{_" L`ծi\Kم{qJuTFw6l{YWa 'C:"-kDW 9c@iQ$ W{=57YΔ~ :q~ݺ7Zߦ)S#+O>EwV"tR|$cƄce8qL~8dkY|_aA ɚuҢˆ)ID@DY㣍.ݟNQy/JNw}P𘴿 Ǻc]mE}B -AOpn)|Y2{E s9Oi"PVL@Y5L$9?kͼĖVo:2q lHYŹ0#>hbZݶ\JčwFSuƩ;UQ问5r2I[;M+ױUĭz30*߸22 |a><2.'O1:>XqL΢˰=8'pz2*&}$7酴oqDfK!mE!$-)fB(ID@aF1z7 ޜO2u45ɋ(@q G[R9op^N? ۍG)iEF;yʞ9jHDl MND@ $b(-g,0 ͺ.ɤ5V]-RMǶfq  gs=G:z0Ձx#/Ù\Kۑqʴi;t-]iv-l{ gt'lCM3-~6r9-lxv}K݋2!kxOZڧ0cV,ݧswS-iݥ7:vjdo{*by' {{g().;l5D@D o@9W'YP_/#r)U )=A_N! UVʕp_Q܊; Sz)T{onfr~nԴuF{넕\ ։0Wx٥v|Z?qEcGq{D=HVFR.#q8F:_#K+uWgbmL{rfYg]urs(n:#ڧ&#Yԗ*vC00LCQ)x]g%Ŭebɘ$F5:G6ZcO">hnIf5fe}tH+"9_":B^@[vŴ<( Nisc݈WD@Dະ6䎯ٽpčB.(;V3ۯAaFaxwᐳj$p1: ht̬pJN6# Ȑz?BZ^cJ(ڍfv1 љc9M'8 ݰݹZ7ՋFL5 6'T4x7Js Ӟ|^Y-h{AMeh]_LKE2qV>9̇;ۤOi6󆲃@t,}?OXdO-獥x= w}Zcuڧ*q+DA{)GxZ3Xez"q*p$膪Uy ܀/ !y*:_D@D@EPCHs17VxG!sn|T c!}_ݷ@i?#8od Gΰ+D? }XnJh&P'OX:'L![͒uפX_NFbß7b,P# GP̧t@/46~8Pn=6`]:frCާqȚ-~ڧ17|Q5W9Ľ!|&اN>ŲMާVbM>mUp/֚s25'@>y{X׷  90}olk&T.=M)gIzcLs/[?%wKI@uq4z9Kxn.΋<.3 AJ P ûx%u5DhrƖ@2C4KK\+.NfzB,Nr! Xi\3sml WКhp̓M!@Ah\dF gw\]֣" " %`:dqiKjT9}˰J*!p:U}y y?_($Cҕ$eO?17 00o֧xSNw{KLX=p7N$F_o.D@JN]J6Tlfg'5ottoanΒq.#|A5϶[sgmSFuf}"ƭ̡FD!4Nl" $_.DžLiϨJ \䒯 mnxo K0~*-" B`=|G ~ߺO so:LJ;@V 𚗯)z";G'Sg1;C,ƝeTHlĐt%@EtS[gdgO9fOrNS_-bB*>\:`fM qr" %%4.l,gA~{Y5k;/" 'B` *mWQn1t [-mS7/Pn m[>9ۼQKÛ=9=[XZfC.EN̸Ŵ%Uw,> o+ʚh#hoр!>~79,?(! ^" " UBיe>P[16i<4݋tfu#obxE/@!t|Y>Zj“{rlk& IWTḒUevADi3bigdT@sinlD@JMYQFw΂L3:Fl#e yW!ڎp\7pƶ#C[YW4Flɥu3;RFDZO i^,4:~}|Lh Qr=!C7'>@r" "PVPPCH#/X]x %0dtg:C.l;vYۧE HJv?y檰wq۞e{}d3yӁP(ך=\KeD@*Vr͸.t,n^ w[r< {[[O +[TxPO-K&+Ok,Κ_`S@kf8.75>eaW.@C#> u=]k8ET𚓗uK8oQq|r!gcd 9[)VP9N8>2`,xwe"H IDATˊ9A 6 JTTX K c0;w(^8NeC݈(nmmLjO1qpr" ULhIw#7Fe1pj1ܺi)ov8!!A]ST>Qt'͋୮^u}juj9O9^~CݧfϒΉ[3mBDCk\ÖӻMmV\fxͤ@t>p6˸Y5מS܄-g;"trh79x #hۗʉ@ C |h eK)l\ rѮ_V ʥxa8h5cZ?Huxl"߱S)K~n~sqҝ1O6E@PK+FT7*~/Qy ^0g =/+FZ3Oŭ߭gw?o!oor<Wa:#ok4imSA!0X.'j~NFijiɩ's_jTHD@D @ tYaj= #Ȱ F{!V6.Wn~I -owi9(g|086 iAr)WGNq8-ߢ @{TpV4ږxK{n߲fmׅ8Yi`[}ZT% cs4$I\lWVūb1ZzFa+ݑŤ[O7o_PչBVO-Zvm\R2}kfO mb{.?_& |rU*K\u@qI@E@D@~9{< ︦ͫX+9 {Ż's^A?@ !Ch- шC/ҼB=+Z0 W_ Nx nݔzb 6h1caM=ywIOD@;󆯬nI@Tt0EyaH`'˦oA)±O]྾,ʹSDz `rd9 _6i k%Z3¨mv h-" "P}hhv;vnFƎYv7kpul^tÎĸxSxȽ!Kܼڊ@8k!m=8Vg O#Lֈ͋zx?~bH|ʐt%@XL%/K{.7%/?:Ch~֖'>ʫx!pѓh<2|e}e9TO5 ?(q}O +l :Wpqv sh>ԧ`"5쫰iK!iJ.N-_ѦȻ/L\7qChs\uR[į 7Aw#~n_D`\WV(~'y2hܩ`5S%Sp5g7C2^Sggs}yБ8}hwlzS8#?%y_Bu Ad/" GVLxnfJhq"{0M!B'u[Ia[g'q!bwk@E@I u~۞ p~fDrrO۰|?.oa@CҔ$I ^%lSfm {<5 kmذpSu'O1_;GV1OL%nKXj$PWV˙)oܙA]៉AXHmF7EaY_t}` p7o[2lD́ w=ĵI)#2O,LZv]>>}2yςܾH rX33-H)ZD@Dp\[ZFTK0Iq%&|/'KĘc| #zs˱gˉ@9 iY~0O/5p>ό |'. ΣP<, Q$(=Л(WSS{c4WWSCp}mxh2) x:1*؎uˌ+!MND\4`vLȜ6(FĔk'ZvgŗkuZK/64pmi^pp+qwЈ qQViك[-m|`8yZڎ!cUš~Et3!{"l_#d+!M ]Ѧ8 ;72vEؾ d5!M =i`9L[a0߀SF=qS̼_&![3@8>,?{Oq+w$d34F,8)N̐dH6NvaE8;:3CFL9 Mjt/_Jeܱw%? ʣx(%4zg~ytA)YMv>):[ [l Dªj ʝ Bq<(1rl5Zݫuס; 1kw ?!,7~)>9yA?S 0|c{}s)}$E4rLЮɞcoq';P7T2+Жx~ u_!v75H{ A~5P9#ޥڌQ,1R3뚙 BAFpU &O.oKckߠ<^ f䟝/3i߾R5F5 3H!ECF"*n&{ %T2x' 8%9SE6l],as6i2"AY^F6 <;ҥFlrqϫQeP\6A3x3*/߅6g/ijJӤA;X?u3<>m˩{߰ۢxG=|@.gm}f"_(38m<64;m/Aq" EfW.+ykqdtc5ᅒ7,hy:I7kW~=GA@Znf1xG; 8./Ʉzx~‡K~vgsC}=Q-Ŧ.E3m/iJ$׵2NyͶ:Ҏ{ι{Sʈ@,p=R*"4v;l9PqS0˛r5dͼiF ̛nT4`πFgM(s8ex/}Tq'kBӅ._ќt=PCz9_àg{`:t۔o \%1^pK7kYM㑿Ճ%7:9G=\lą-t9[NaܑSMۨT>pk`m̈&?ް53g識qנ ;"IՉDKPdo~kVӚa5}dpK-ۼ(l?=I-ao M% >081C3+Y*ZEwB G^:~B|ѼۦKZBK0%q.uWho!4vson. ӊη\ x)w;!m7'<ru?g{my)(Q"P dx>M7\3 rcpS(gwAJ kY9 Y32AMج#-;g ʉs, |x s~uJ!mDym=6|\;w}n"'w]PϏQ\$\e]!]"Pdx]K74|ZHЇ8-W`q3yφ91 u;k(" "Pp]XJ9vZ 9BD z!f B^WD8+_HEP»/9;B>CAj!WD@D@D@D\t_s_me ndh>OY9S~d=H6nn.&@m Pc3ݏ@\6+q|芠lq,z!/@!AI%/׹ U \ Fcc|L襁9HЛ\3nlͼ:x!-޴|-$'" "  p\c["lDX8\YѧB?dn..xO=su5Edp @v," " "P(@(~$hٗ̄~>6⚙QEb 'F7\r" " " \ݖQ@l5P!^\¥a>Dzۂ>uĖS8dBPٻ8'3 ^ZUGZ *rT E-rJ+ zx (xjk(ֻ{lLds'd_y3SmW`}mk2xC;MtE#>   @x-{Z|֯p F@PйlT]͠T ̤fp5tA=sZ~Ie|9@@@((nYNʣ%|q3Ue-:=Չ @@@U jm^A}x- !3     %((:Q%@@@@@V{>uT@@@@@B@@@@@V{>uT@@@@@B@@@@@V]֜#  #pm?gGAڰm9uC{h  9x  $@W3>R,     @{|9SNh*pt@N(Sa@46F5 PȧB8ދH)"2ߙE@@ OϚNsvCH.8&D* `Yy   *PHw[~Gw/VirZ @K [|@EmOAUެi:5FJ^`mא "% vUcz T*  mFUS͉8:49@ VQsW%!   P<ZϒH*Gm4cWR%@ VO֜"3   -$`hz\YrzwwWNwJEqH)@@@@@ Z*]==',a"qR      @am˩)E;l_(@@@@@ [IAG/ζөE!     (Pۺ$l[Xvwosa7     (hpTR@@@@@@@@@@bx/"e       K@@@@@" x/"&E!     @@@%x]۷l@ TUU5CKD(wqr?   s=q{`,@ ۶_Yd' i#O4  (~5Aw^ @q[*Ji P   @e  ;_"mD>i jU/a~jݧ#@ {p* jhs@h j@ {[ϟ]Oh=*@4 4D&N@ /WW]^{ 6:s lȇ@+Ah&4k@x=Ȍa) mn:d!mY |a\Ё~ iH   VmCSN6j@@@@](X@e4iy #%AՊ9N@@@Wɕ'qBJRC%Y9*   @]$     @! c_@@@@@'     @!y:rbk[:bG9     "sDŽŇ8cDky޷dV"    @L> l>@GTi֗3fy P9![Sݍc9 ŷ  V IDAT  TirgAT5;c>cƌeF8n+@IZ/Ԭ*{    wE n M x@-7FحxS3>{w/~k'C#    J`̙_nhhC:&s;wK{pC 1 c[9E+zL۱mJˮZЙNغ ۶t[qw2K@@@@hi ׭[wZ9n*>VZM֝ilv!+,2^quu^rNopSuYA6@@0XUy9Q@@$t=zOʝPR,W=:Md&{FJ0F~#PS/_ 7 Lwm G F!^ Uh=jCl`Ó| o0zٿɱkT>e  P  VU " 3v B+7BAw;ݙ(sھ@Om-ϸlɡ CruCl=风oિ8qX   @0Uk+_ &ND@()u-QL+y\rI/(2 ktP\RXö>c儜 K`@p'C@D@] TUISzrK.7 0.M>6!PQ#jsNJ cwjYa9@(*" mE e\NeFz`pa&Hfn%98g[Ncʉ= TJvnUw~<@@( f(ƌ$jH%h_xƝKc%l;g8ƭ Tjԩ3tJ+29M#+9@@е:O>(ۤ&BJa ^9aɾh\`_&W`U>  @ 0XU?C@hOJO  :t{W LD׶)P>ѕ֘GC?^w8s}꛶?AU[[ߞ3@@@3j *;B74uPPZs\w@SN 2\r+ÓTDTyWk#Gfl쪖i4@iͺ7Oӛ w?y8 hr}tn6e.Pװm}S ϟyBQ X72G@*PT/D V t@@t7tOAq5wq-uΚMg>s̽3)J455|jG6Zqhׄ9W7֭[va[-'|Z{B=2X'{Y$  #G3jԨX~sʜ   жjjj+6穵zT۳IollK"|<6@ LƲl{Su.m_bJ_e\  @y b*ϧZ# 9 >|vq~gȓtOWkǶTIG-x7X1Wutm~LU`Zv`)&fv@@DN@U@w7>ڊT)p~жmۮM=U ֫ tSm'wo5^i5%o^X FCImM}aJe *`U@@54u /&r NYr4XH JP ncmmdHCZ4Vms̭*HW1|n&{;`5XaC*ASɻtȨn@@*o:vDhq}wM޽KqĈj rIW'طF׶ֶSlKV#\Jť+fСC?qי#@xOLifK6@@b & Gde+=2Xn]l{6i Vy@E@x{w|k.MQ5uy4GP_u߹_杔~P0 WRvb;#}2kd%:%0``08ZU1zwMWG/?eSٍf)F@ /y U3H@ZB@tZ5zr9*:Cn͔acC FTY==g3*ڶϦMnH}Μ9{jsYj; ZH@{<,X mp-T:}ޘhLbVϲY(bk1`U:R~j`URE ,rJ= M=S[Î;$[_1ʹٔ}.ջim[У}M>؂ dgJH@%^ISrɶoٲ6vo齓2h<@ @InŻljWCj*Qy桺:ǚzkڵ(%^@sKtMu#Ѕ)Zk粬׻ui9g1&/!U~whkԩȘwehn6 /M5/vzzXE￳݋Ze=˹ 0XUf vV^=LזݢgFL?٫hwl7KEE٠ ;Z@itJ3y= FsH=͠ҔyUQtkü8Mɚn-M{ *n+ P@ϜV9ڶ-:Xo~f;-zSv|vAPN=44>3wƠRA:-&0#xP_ @\@DixuqҾlhA~ݬꓲnA.?A.u}t3M(S5Rbst:~5izwD6+A E U/G ?v՝Lg_x!tFM+4ݡiZMܴroPzft/k,/`U۱' @ u;OBƽ_1˺vâB7[h?ձucs.(aKIB]g͚՜]#S:Hd(PZ6~NSh5-qg{Z܊]UQg\&K@ߥK<~F 6y̢El-{67i2ZǺхȟu1bǖu֎1)_ne1Q`>:ly@]ŭJlneӕ\8H ֽN= 4޽vwsŻ_f޵kWJ7QF!vgى2T#f4,gz/tU,t`[Nw&S٠&~Rp"2XUtg U!@$y=[eEfFCVWse3WQwY<2ȪY r-y[!Pj@֨h}v;]1q @8t~G+bZxVmt).[>]'y\%ֹY2m~Γ縳-u-IgJX@]I'FH?϶Hx“ʳl!(W7͖iٻ_ueR4:;t+w[Z'h\t~du+V~ZLf-yC<^HUe^3vr%#T>=N:ɻϲk5]7 o9 "nq#xͳn-#a9riZ>~Rbegq67Qۛy. we>+egl_w@+u@,tqpsroQ؇ti+rLKjqum. o=lS7^p:]4W%:B[gxSߩ/],;Yݲ3[dEt;b$jL <nHUUo*0XU*@JZ@oYo7=>*dkWuGeH#Y9=,#P N9M81AbŠIw:X=ڱdl@SqgT+% Vy[lY_mmI۳Yҥ֮]knu},;zؠ8H{=v~ݬz&&S;g7gN],Ok1^2 kw;%]BxЩzg];7>{S6ls/%OObKSkTju3g"=͌g~xb鳻oD^ld 8UǒR@K`͚5{$Ը `)MOM35441Z^͛oV 3wz?φ!P9_~Vf]fxglpwf-_x @m4Uws+#F|2l]\tЂ[y+glG} /藻߯ŖI<kSFX*UFv@]_[o ,t-:8w+g_M2B^ͱXu*Û\]aJ7Z$s9K_ws؇ @S-۝cOR~}چ ֺ  P.f͚յr@HR-<ut.Zk'fRD,;YߩۋYmĉuv_daE*N$D" @ {s0@>euxֿ`99Cw^ݞlY2G26HVISݿݦFY.>7~Ath1Uzz&ߣ254k\ |zo GZ-8xjm[~ۚ%  PR[!nn-jwo岬 UTW}L0l[ti/ӝ4Yꦋ~C+F-Z,7+<Jxtz1XU&$#>6;fo$h^@݆&>/r]gëV;Zn({Ͻ+ՊHu%Y>mLw4tI4|[W5A"]g]ޢ\(J>{mٱ~~`ת -̟*Wmwooj`r7e(-UUDz%;T۱֬{se9&Ә4 7m.;̔ޛv.`Z"({z_MMkj;Z XzCA ohԮ: /l[\-Z,G\-+9.U}hރgW P Migw}֭H;s׵܍7ު:tSwro碯xbob~0P%%v X3n=}Ӷͺsʕ+fc&C&wݪv7zGj7S-T50Ϻk'<}Pccz3/YAЅ?;w7ki%{V 'vkݠI[N[ؚ}c>;d,!]^kLy ݝBmosOAJ?Qk4`\w;7c?qXw3vdY}\S>Pɢg rgs fرcW(#z\"1 x @|juٽ}\ܜAn IDATmaaǺdvqn9nQ?~Hv pUsܒOS-jlq(C+&}&- P]]}ce0?5,={i}c~鯘n{2rg˖-?q Yvn:~V-Ljt?Nk,mZ (8Xn%|jT @>{ٛA;gZ3u-;B" Jw>JA&ȞXX~H(~Ĉ'5q̙_v3G x7UUp|~gU[}}FlYT𞶝nׇ 69?aߨM`.0}wT5>ybAU _$2_E~m>>ϗՉgZ=*el?ֹY{ϲKμ]~-MިcU%=S?sJD@J][n5Ǟz{R/)=YiaÒCM8e(m_ZVTX#\wot]~xΞ,"Тzm #J$X5t5v2_xk&EhW2*}U3!]&۪ 8|v#+m :$溺h &B$]L@"u~+&Qˇ2KtJQ2ܪ/@Hl-*UvkߙdsHX690VTV}/i{G8q3X) @ kNu?*3SI}&l 2d]6VÕL9=~9">nR?gz.ssMXu]3?- ksu]1q{׮]F%m3k:)beUuuz,}p9Sgt_½}_./0tp?_h{#joXan}75T&i:O1qLx+S~czίlsw'=<~-M Ae[Uy5XFX]gGףu%E]?V.,uMY.]1c]vYzwy;G 7Lyᇟ # yhР#i, 8eʉkefZ;PY{WV'ô7]|.qNϲԷZ,gVeN/tR, ROe?c\Z=z'+ӯ4LTEԁXTIGxGٙ.Cb]KX xC}$15T\rc,]3׹yM3ٽcSaH.}erEF/KQ`}sB^9#w('j ?T{xbyԐl ;%N9^ӯk~ozիr ̩kO9'jy!@Ue5.|^ѪW ؂%p(mIz`U%KtZK 7C!sЋa'}ܢIg\Bc_@@`UUiXM)o#T"3X'@ 9/ձ]}}Rt_Rݾ` 01nVF~ SfD?JSqh# 8L=EzXVS8u}l=}D>'휮pmM9sHWh-;CЇu!wq Z9.  _ܤ\_LJu+`ǂ;XUB2 #]SԪtK]vT۷o|nD㻦ub}ҴgoyXGHZK2|^ezOcZ&q?(NLo[X |jF514p5D uwutsTuޮ{ڋO6]/eC弮r #U-)QX~${O];[wr wHzZOq[.|=`ꪇ_'@QJ_RBYmfukpV-`U*/1=QmOzK3[yGh&O Cnɚu3@ELkth]}v׵`{M&Vאjr`+G6L&P {?U_f[fQ^:NOIvlh ;-c9y=ѪoA]Ѽy:T-Xrٟ{ "J;,7UNQ!w^)%+{Y98P   @ȑ#C*Q;Dނ@r-g-nغbr+wl;˶kٖ %C[5}O4(oN܁^N$@@ @K VVIkSU@-"UMWm(=vtծԅ$@@@,JԢ[n^1+[ա^v 0TlLX ; ;'׬}OI $`$(*[@@@f%x[NۨU_}զ_j,.N|:s@@ gdي:X_JvhZd4#`U*gg*:&UǮ   vZ &aF&~ǏtDrh8]Ӵ@U2@@@[ѓO$i8V\N~Q> USG@@@({KfaU?5,~lA@@@@@%xqG[N ~Hӵpr/yɀ     @ z˖Mvl?j9;̶:Va۪zt@@@@@@ +V 345ZNX[_˪_vVL>!     -+b3/ۧiZO4mޠ|OV`)}~M)<     ({eϴU|[a@sQ^]<PW2һ>>lG@@O ?g^ @ngI#@Nt@ҷUv~gm+oZ@@@_`ps@ڒwt+U]}j9G%x@@@@@2|+n{f-CQ>jA~?+B@@JO@]{~F{^Zg @1|+e]oNowrD+\̓,L`oyWՙ"* ёZT@UUխ}sTI^*%%{ེ}q WN*32@KV:ϲbf&^X      T]W0-4 Xz˱,G]n_kŎ+c{     =cܢ[u۲*]/tnlB֞bb      +Px V(&kL?noI=w>@@@@@(}[ۭLk- yWYF@@@@@b-}m'Um[>|EP t ?'jǮB+ @ U; RW!  Qxo61/P{@ P! ~u\    PdZ {PAsi,#.պo%Q    ^|SJD &ЩS'ӝﳘ  @|)^i   @ϒ@@@@@\dPo)ԸDV@2 |O-ʔ ,Ye˖-u]9snr Pamx|lC'P2~W-eSC81A3$cSའ2@~=6owYU^ @tz+@Z%~e7ՏѶelbY}ܢ;ulog k_ܳzKC3SzoJt@@@xtSYC(T@q-]޽{Z#@eh=&҅?o{ o,r#n@rom/oq6o^ͩߨi   /vOa @m(2@2Z,~%';6#txS:m|-9]g     @k HW3kP1lBO8`n~i*sR?   4o9# /"(RmQl}?pqy8-X_7;|fޓX  d!7  |dA ̟?j-x/1}ӛ.ЏjMuj}٘1cfke-{]V}bJUg;u5.nLsޕ-@ ^     i5 2<6&}ƌFqV(35 X-޴V8t`+*r.@@@@@Eヒt\`д@Y xWKnyb*]1jY-e_xI    %!0s/744LWeN/ Q Z@{:x 3'qN`VXQ(xXa,     @ ,[rpNu(@ @| g/i_ٹRCmwq̿4D@*O*9@@rb|B9՛"P,_f&] {]22@@BN@(kٳgZ_5XPT~a l-vzˎ}w߀m󮳌 E3X༮iPgt:lC@W@ףQ_Fet*B7@]ξf‘VP\V]݇m?q# mM3" %0cƌBmPNW;yN( rwڶXP\ Nz3/G}_얡2ju  @[0Uk+_9VΛD@(u-QFf<]r%d Q) IDAT4t΀ wUٱlk[urNX)zI@}zwٹg޴s%@@`Uk֬c8CFqTs  "e.OZеkncǎM|lB|jHU;@u Yѧ[noLT|Iqjl ]zؿ[g@`'SC@STVi/t٨QNt*U{ţpE ;%hުWm|4mg\Mu+t0su3Њ} TJvs@@N@!hl̘10s@ x7 ?Eg-gXqvWE^o%2}g6N-ť{WL;Mc@DgsB@*C@ujLomСDExVTMͨŅ?l.`.^rٟ^%  +`UP3@@' Gj@ZŻ^v[5uz}1<j7s y-@(',K.7 0΍" $B8MԮܴ \ܩSk N=ԕI*o?L*t?M۵kwȑ#We:yOyNʔ5 l$]dqkI綵v?ctݿ4?  @TRᐎ T)xr_inݺs39sM{xʏCLKAf-x758 OҢkq𗝀vw,+.wwُ   >2 m LB穵zou4lR9{y<6@ V 'Y1J3ʄm" mZ@M8y@hÇ_uӜ4Q>}t UٺQN:dhU3W  I* I  @ 5C Hu m۶kSmO`}{u#35vst#@v= @(U b@@|c%̿t?O;f`!6(AAm# r{n^F@  VuNg?KH V5 Vui鋚9jeB  -` ߔ,ktm46*視Dϊ٦k>$y tS/_K_LOvWu~`jj)]T*    0! V`Iw=ûn5XE=YݨnmFi[c$ۏ4H-{ O;YO֝cYg[ZSz7Mbi @H)`U)i؀  PbGRUKٴi ϙ3gOm#voS6Rm'r𽫙@4V9Ujq1K8l=4z_>Lَ/_U/_edo˪Z'[UH{8x࢕mwrhrxz~d @@]}t)>V]Rw1Oܾe˖۔%1=3 ڧ؇d {] Y{{s=~ɴwTj{wUL_r>R_ꃋ,q%!`nsۼyPWk*Ukڵ(%.@stMu! OoS:Q_?PQFݖiY&(J9J|"̏wgޭ[wJa!atw]5AO ?h[֪q۴#o07\)Ze566ZSN-'?*AWn/Œe|?>R.u0Uux 2vgpRy ?`U^@@0%u5&IiMtG|KסR]{ #k}G [`z]N6ǻAu]-mu_>_=/[]xT,:T>Y2<@$v+BJG@jn."􆆆Ӵ,>w܎Imդޫbf5vױ g{'PU^}ޗ%޷CZwNG^,'gW[:St4 2 lu}tӏ#3lя}zN[ k=Zcf V(:  @ y _}sOTcj>lw9pf}nl[ h wM{ We a4+|rXl{qrlyͧq}u ]LU-fW6!}Kj~_kzSS"wfˊvbH1i2-ɳz(At7ԱnCmz6ږQ?{+`uö%Fx (;tFM+4ݡiZO&Cpty>++&}lgV wǺMiu ze.cOu3P+{"`=}1vؓT^ "OtҾ5t3iŞ;QN]Y#wRPacҵͣzzMS {R@]<76߾-h<D6"dFeM1wckuߣe6M \n~4F|jl9mӨQno*3X^'ˣ;Xոd* i  ~Yuz6S]ؾ}j7I?k!Wn񵩶 xWP~m b@Ÿ@B=U C? o`LX  *k ^jpn^deG'|\kZ;~)&nL33Yؠ`: wTiA:v\<3zkt]lY7t1&EqWb֕nkM7Wkqo`O[6˻<]Ynkxv\LtX;œwhFǎR=X]vUVl7+|or1Sߟ.z7̝9z?LheGcAMӴ?T9U% PQw޻tKc.L&辧YֹءC6Y+MeЬlScxxN~>M}f9~F.Ĝy 3 V0GHgt\NRctԾOj6y'_;Ԉ\;a2kd;(_}fuQc?vA| z(hg>?ypqT#}*:GmY<j'yp o вs9#Gg=.{?ү毤ͼcc@3͙;YVݖ{+OAV'ǻ3P@}t40n|SRЪ>8r6AUl۾qСY-_\~;ǝ EyN}}>u1򵾓L VI mI@AtGyu)N2xJWm4]cuӔݻOrC~0դjqkb49}y)kj){#[0!Pw_8 _ͩ}M߶zsvzy@u@e5wUr6s~7v@?Z}̩*wh4܎OૣTsl]l)CT15\XU+Φ[ζfׯ_ʈȹl웕mwGSeZz^@]μ/7ʥm`UiY9`UiHE(+WygL;5^{䌏cǞ{W̤rn7ռ}f4T[T@9 ; Pj&?y@0+hB5QOBT|֩Jٷcwh]}ڹ&ksi @lSC|j:]6s]? H] ˵o*_S4٬w?*#]} 7;򮻭eIlS=ˏ#(si*\ί8pV2 mszѴXvҾ V%@2Xz0}uV{T̘L b&h9@˦U g~r6lذ5s;A5):l@ԐiF}tff(wSvtv<3h]o3-, Қ㪕I΁l;{ݕɯ ?}u!sqUsarQ im=>Z sPLvյ%EIG9u3bdr|K73)K||F\u9˙L+ D@5Z{]NoXAT)ѝ1Jx/Lkrs,]yn؈@ l޼E1i>cTlG"Hz[9ٶmW,[u`y;;fIssת~U_y @+ z_6৻^y]] s`ձ$+_frdU﩯&++۴#F|?{pc.ZM/\U^Q6|ASOSr{Y,;Uef" @ ݵ{zAz\\_;"?B[s&+ך:1_0j~?鱲l]T/3i֏ [9GO#2+׺kz\%}u{gs`U@@Ν;t k7'R|G?rޔ,U/ZEri)(@ @t5lB P)qPC8-zSLyUT6?#li-k[ %n4O0(_hIy7lؐl 6j e.[7RvKoaZ񼵵 V֞q@@cQݳ"e/D̘b)L\{{M`+@ླྀ@0-Bu⟸' rjTme1EFk~ˈb%rYx %qVVYA=O-g[jjjVkew=fʍvu'R9csk^5"^1^r5&*G"D%c}1h8-GWZ=uغ:v@ @xp~ç-2mک߬C-qgky X;sy9qR,C=+r1zrm:3S=*ȾByܜ'ua(Ul8Q?l[cmڴ)}]vQ))fUTΑR@t>`*E-L:ۦ^օ?kO7*:Tw޹C2yR.UjT]3̙0eF|f)5ՍR0sJoh+?59Z~l{/f퇛Ϳw >aS D-*OVO˵g!?PWy5*XfΝOic_ yY5M[|nӴƧm5v'25ʰθɪ۪g;*D+ ~is( 'i!!0>۹DWO!wS+9xvEo:D\ͪrɐ Pnǻ='s֡0GZwշ{nDu^ گw :`O4hg;@v>%ԗȐ+tyҜ FQ\v .FF(I:xD;K&NF~w=X05ʣXғ BeFjdIH5PwXO~_ P/Un^ʷE;i7Y}@m|\fl/6Z&h9Uz?SJ\9a„mݖ>W;UKf]to4Ϝd&B_4a{ŌB$NW=mSWF~BZvNZ1=~_ZA/׃:1lOm9o~WQiYOt׺~r yoV׳rӶ`mznVuqp te79bՃ>ʼn6|tUu4jd~edѾ`z T.BCж7빩6_ , Q}0"l^H]$5:> n\̨[иlo/@cA|9>sNm5jdkiM&+F1nMtN_=CNX) *sb0DoۚO׼<3ޜIm[)GOgfyH2YIMUn˲heC7jsˑ-V;j[lTxٷ[ATwsZӻTkS7a@ C#ϣAgʪ޻S={ sso@>K#B*p慚N EUFfJ+zO_:gmYg{̼Xy{d  P@{B;j&"ާrغe׏W9.z䟚5U]ޮ>8U!O8֯3!@C+hI-I'~X'?u=U'¯zN ~.jҗߩ@IvAuNAeXW<Ц+sx4Ot%bzĿUe2 1[5&NDzO֭^B1=i@kd4h+Elt,nVvJ2L,nV52" ]Y@Οzx;w?|/ E{ϯ@_.r;_y v$ _T=~Fi5] K:5Op,#)x^zݦZ K~wc`=︦?P}dˤtl뺘i٪# /P  Ԉ CҔ. 5{T6mΓ[t#j/ks5%2:UR=VL:!nJWv1I'IdݑV\Y/G;N^\}(/ڃY~F\ɛUq_$# Х>RKǧpRPoD߾}a?N)xA}'3SOj9>CA5 Ά/KFXz?5kz}~NUz-l~L J:q]ūmϕ:mg|A_o:W]>](σɕo2z/W, 6No6 {]6 Ȭj|W1.~\*  @2YUrbͪ|YF}75W# Е]@{z͞=zE1[AU%,_)}zNLutK[vo]9-,ҴF1_~tU&T r~5>܇ݫ< 7ZMhMv~/vِ#A}bc_䝕w%!(1;؆@g 5p&}3kx`ơ`ݣ:kJOp#  @/ mrIA7RhS5!u@[lz[V9́wu?lR lݺ,m\yќRQ{g{l< ,]I]Pߖ-ڑmlIC XCCgF {=)X Nzg&[03P8يDvpRQ5٭},FK m*Y$@Uͪ3A!*p!<ہqI{Xf5/cMgќux SYʵI^P7FߟT@ &]8'(iXA "J:5}_ O˕ثWKs:sΓO˺1#Qy2:z͎>}ư6V/W! :k KϾ>x/z@z7Y7G P/zժUw(} }>(3XWH 碦;w*w =)SkLRt\w+yWUU/}wp}vv~xD *|^?nMlϻ^!b.Q9d&G^ϗVxOOf݇fɟ)X~tI({,A "ͪ>Sܬ*/@)+|.`|ͣ JUͪO 8oV1m R1sS*dm2F@>ϠtgTPw]08YmM~32NmyzYߴ[lbLD*{O|@]4 {ԊN4si~^>S c-(&YLT@Yw^z_mnzVmO}Ќx`i*Yظ'A^K+U  7QfU TUMɡYՈӒ0}*8V8Z@*M@=/Qpw|s_RwP!ꭻ6*c*(Y@G()@w9%OH672*A=ZF^ږ,Ck__JC՟{OyR  \nVUs_ŢZCf@7@Up99λߩ._a;/qG>盋? ~{ _;OJ}Eo>{cOdP@ tީqfKi&Z[WzSi}&=!懳I 訛U%yoVwf*onVU^_jG/g)wq?u͛Pnذk:^˸'NcmMLs  ,PP33gؓߺaT6{ {gz 3X%~: '<~e;  fUAfU  ~ڵkm۶mKEm>|t ROn^.~ж=fN Eޟ\pL%kȗГݔpZ2^[g?IuDТb[B~@4nVUiEl?F~1vuQ[wv{r^at5}~V ?iojz+mE*G@EޝI3_>{,vܛu  YU~#r  "|ҒRIE jڢ|b Z]~P7u˴̄ @xwˍpU~5&@@@@ ]U{ KlWGh~D=k'Ma$;@n'Ptw{Knk;4n֬3s;$j^|dmET@@e4V"]F``i A@@@ @L1_7.`)%tomZrQ)&c6m SڸC]0 XBrtͯUr@@@@hO кEOWb{;.`[B#\7߫{!Ϛ1(τ     @l3Mv \AL=ek篨hPF6mj7L Q +CEJ}   Dx_&gU̚s1 KE!+&0at@n*Xnzx   @ D2к4@,m+ٷc1n;8t/S;s5k?Tq{9>V35vi>~fuV't>}GbWW9>ځt~ǯW;z@@@B˙GF13Yc{(mTp[!SnC+׌MQf֯o`ͅG@@@ ̛7b\tM^52 @߹wƃI'T,#@7]uҖtAskǿYs73Anᗍkzvo4@@@P |*4y@)#kTY$ nNH'TYskǕtOϘex A&w `:    {1!A@ l\Jxil2 2/ӣX^z'܎ [l]g @@@ @UUS!x*'/9rc&@ (j'ꦪ-9k/{|آso >8沖Ύ-,   dЍ&ke ˚D@4cs .DF%\uT⾛[wWOޱ}}SnE{7568쭯n&,~„     @ ֟01n a@@@@@Jb`c}*^֙ʹ?F@@@@@P*xwUN LÚi      I%;68̗kg.ǡG9i     t@Ɂe3lu6pNfSRz1uƙTW,#     Y%ޓ vQ ~a`"XngTjɵHc@@@@@Nx̂V;c-UoZzD+u l0Xnhpe@@@@@:S T} c_Y3/;r>_^i!W[psM\UY{ZYB@@@@@sB}㱪K[ùZphZz +uh]}]qO)ȾWu-qi,#     ЙV㲇i 'kUd}YwKu>s dIç-ٺ)θfK/?lMcVF     $Iݷ}ȴWDa7[]cns51)fqv]i8v @@@@@,[^[-ב(@LƤ-_R/     EDx㺫 WD; j 6Zv +@.@@@@@:V o~}*]~}o]6cHc@@@@@%lк_xc4gR ~l [3 7C|!     xYt~WӤ9v0 16&bJ`9@@@@@ W D@@@@@T„     Q xJz@@@@@w^     D(@=BLB@@@@@;@@@@@" !&U!   1W] IDAT  @      TEXU!=V`Okڼcկ>z݈] 6vg    @wι|| PV`ƹܑ5vyU{q+3u:mHm   CW P@m]g-ƙvYcg-5nn U60  d4Oi%8FsԂ PR(=Z76gx!cUG͗71JMB@*[_AFUc4GJ- ar [1@,h~\Hh@>]%A;Z! ]S $~mxDbilp/ ?6vf@#w2@n%pgzɾ/0g  @W<͑R  @Tޣ1\wk;o6<  =d4c%8FsԂ $z5/y/,ic@@# y+1#@(GI] cX(;~kuQ桍QjR  Py 29RjAR{ԅ=F`1OlBǮQ桍QjR  P 2'9RjAH{DT=O`c/h-+Eқݒm{GƎPf  @W<7͑R  @T!L  \^_᠄6w7lu_;3 V6D.@@; ljDG-fw:m@W3F{@@@(RMSzgg2_jx|F֑봱# @[@@@ 2'9RjA#@=e@@@@@ "     F{="     !@=U@@@@@xGY@@@@@2g     @a(     @ V@@@@@#@=e@@@@@ *     aѣ,     3@XE@@@@@ 0zE@@@@@ C{      F     dxa@@@@@0Q@@@@@  "     F{="     !@=U@@@@@xGY@@@@@2g     @a(     @ V@@@@@#@=e@@@@@ *     aѣ,     3@XE@@@@@ 0zE@@@@@ C{      F     dxa@@@@@0Q@@@@@  "     F{="     !?> GIENDB`freebayes-1.3.6/paper/indel_error.png000066400000000000000000001261011417247743000176210ustar00rootroot00000000000000PNG  IHDR`T pHYs.#.#x?v IDATxy|U?eS U Ȣ . u)!Ju*(C[E:Eű}*$J)h "[vKoK rϿyy9'-QR!8@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@Fȩ @dggϜ93ջÇz ljQ r<8ӯT Z6l0uT F)ի]DS#Vz r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r*zjϐKkTQϖ(Ⱦ}^{ zV1cF޽{}.Xh֬YFFFFFFf8MpbD^}ýd 0aB%K,Yd̘1=ztFFF)$=r֭{뭷뒼zΜ9E5+W>}zjH-۷kǎuՐ!Cyb=rsssssg͚u׆syGHX,=O.]oزeK|8_e˚7o~ F1tдF1bĈ *Ux&M +;;{̙5ӧO" Vz5kL81ҽ6'FkM4QF˖-G?-z*v횐'A٥K O ro}N#FHCiiid}ԩ/X - 6mڦMڶm{]&@0Z\m۶_oܹs-Ciii;wN&@0zt1,bXQmXl p,%_|qݺu XbEvvvQm[bEzj-8F *|a=|B[bÇM7T¿S>&@hu <N ++kȑ b,9r3 HOO衇H9ӠAAufffϞ=Νm۶͛7Ϟ= ?}8:R.-+t8(׸+2+++IOn?WXO(E3glԨQ>}w`ϐKkTQϖ(Yfĉ:pGUJoL:5IX>&@jUJoGp޶Zj&M'N8w5kAP~:y-[H!hjnݺu&@J(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r*zО!֨ʣ-Q@@F#"G0 D`(9Q r@F#"G0 D`JpHKKKXb)IXpqb(9Q r@xP\^mNeo9*UԮ]e˖~?X/˰aڷo߰ajժըQQF:t6lؼy = {tU %JW^_Oׯ>Kjw_nݺ =:/^ܣG{h޽LOO뮻 ~^||p֭UVZW^5j>lȐ!qΝ;O>dȑ۷5jT۶m7oH 'F<+V>ӄ'ܪUl;,4{6mڔy;#*wzW^)Ə߾}hO>.K8y~@ F<_y睗%!۱c-[?yb gvZR7_a׮]&LHX|g|0}ĉ߿!; 8pǍ_9fUPN$o/wޝǃ/׫W^~}OK>wٰa?*$3ge{CݱcGE 8pw .x~@ FH_,P py ,k֭۠A{엿eBŋ8lذ={$sѢEyyy-۷oq~СC i۶ӷlٲe˖>C {̌xl~@ F*W%}O6UPNTV.˿?n_~:ݻ|WڵKXiذaʾ};s֭[w 76N:I~￟RzcVX1bŊ{ի_bӦM c[JN0 G=ڟ~i, ~XzuXB/޳v>/X (̂1'Μ9 +{o*UTKg.8,vsOm*PrQ(?Bk c͛4irWO/^_RJo_OKKKҟG;Yzhҥ +]v-G{z ~@ Fh޼yz}. Zj_ ?Mx_^j2m6mڔRi3L2'sKCguVQ?͍[ @V_sFx\rI|% Ganݺ5aN+3!Lm۶?ڼys.*P`ʕ?J6m=9Bƍ;x`ݻ'ERٹ V >'$Ӵiӄ3fh׮ݴizQa $N(x'x͛7 /bŊۺw^+#F\|ך5kVjf͚ř3rŹsvN:餓whѢ*U9[FJx f(0 Z_-СC~Vz ^x!7o޼ЏoH r.0CUVׯ?,yOcƌ)gA'p /ЧOoO0 Pƍ7nX0pP׮]#S-x/|*Tx'ol{̙Ӿ}+7o^ W)Ċ+swqşJPN8ӧ+Zjk߾/T;ڶm;gΜO?tڴifZfͦM [n :w|WҤe)!]~!C R9iiim۶m۶m (JD`(9Q r@F#"G0 D`(9Q r@TJٵk֭[8ꍔ *ԨQOLFrH0 DZ;w._H:3ԩ][8yA-pAɩI˧)(9Q r@F#"G0 D`(9Q r@F#"G0 D`(9Q r@Fȩ RZZZXb8ʉUV 6cǎ~z*UWްa믿~ĉvJcqoϞ=>??Æ {嗻t钪'F۾}~ӟ;6!~֭ӏƀc`8efffeeu5?/ܲeˆ ̙3p *Ap^zm۶-nc6m=ztXׯ_?++qO֭ۡCo/?p@nn'F؛o /?k׮C=c`8͞=;,N?Ν;֣GXtQp%iG*a΀yaoi<@f2222225k6p*(o&,?Y:"777 6<ڵW^zz駟ޱcg}v˖-E]R?K]t_~ʕ4hЭ[I&%=q_۷o4hЄ /.Ydɒ%cƌׯѣ322t׮];F%in/ ou]999k׮]?~Ǐ5*Ez_WV^z?}zjh -;;;, }ihԩ7pC,+uOM7TԄKkn~rʮ]N>//Ξ2V$Vl999vZx՘1cٽ{իzΜ9|'dȐ!LGYYYfͺky䑢OiÆ >hX([obiiiso߾iӦ><طoUV5G۷oOضm[„]vp O"=WZn]7x7ߜ+Wgs9/[lܸqa=bĈzcǎ5k֬YfNN~:nܸ˗(k۲e5lذs=7 .ݻwQWڵ+==}ƍkժU5j׮ݥK)S @v5aӦM 'x &M {rrrZ1pǖiӦAr)ƍKxR>5jzG0:p@]v:th.]A'|,&@Y Oq;w9rd¥VZիWOrO?ݭ[^B't޽0yn=lݺa=a„O^bEXs9_XH:ujX1 iiiÇ1cFSN}+UTPۢWViРA:kE}裏?~|7_{l6l{o1^fM}?3#>;;;Ț6mڦMڶmۤI rrr⏦. mڴݻ޽{իW=UVիWXg%0o޼b(3c̙3Ǐg1zB{J~aѹs$N:wpIiM`ǎܴi/_p+һw;&۩SXpM_~(kq>&u]aOtII,v IDATF7oΛ7oŊk֬[ӧOFFF/Y$,Zj|?Zz XlYNȤծ]v-[/~1v_A رcK5j|O~شiS şv@Ysbo '?-RhO^^^x}^Æ Zj޽̙3&ML2 X/n7,]t'WBG?a„B6l|Nڵb˖-e48j3jԨ~+T(?+W)Sl۶жxcǎ-ƍ"O֯__ꫯ_8aQԍTbŰ\r 'ٳ&E0z?֭[ h׮~⯤իWo|M^^^NNΜ9s_);w CƚuI&@)ڸqSԓC7oEw%85kpBZweM0b?{~'( :u8쳫VZV:<|I 0 v?k|^{z43//І1wI,^8,8N[nN FS,333<<Wo>IgŊ۵k׮]뮻w)4lӦ͟6s޽;,jԨ|WիW((EsN^hQ3N9Bf͚\rɑM /8y'Pּ>.]:y~ᇓ74hРA٭[]~GA]tTj0ܺukVBş]J%Dzxb6UV-''p|hڴiϯ$_+aϩK{w&ٳ'>K/MU(Ҹq»>EK޽`O>ɿ^z0MkƟx?YZ8S R섃DGÆ /I~jժڹ{g}6ӟڳrq 8OAԪUk9 OO>EM4hPx( /&$o4hЇ~Xp}#F[o5y#(̛oovmGa?jРA&] P-ZoѪU'Ο?7n~駛4io=?'\診uݻ{w߂ vܹy3f\wuwqGxgF}$)8a֬Y7xc߾} 5k5jTi~q+}L0!,tR~R87idΜ9A'Xn]XVKLUr^{]vׯ`ѢEwuWQͿկ_ԧoW\cǎ;`CZ}ݢ`ÇbEMRoQ۟ɉXlYvvvXׯt7ap,?QΟ??xCBY P7n~ԩ/wg]veӦM+*袋>͛'-ƍK8רQ>+H28jK/E*Uzq^xYpa˗E]cǎa/T,={v%5);,\GmӦ͙gYr5j4ln?~w}׷oB vx⧞zK.9S4hpWϒ{gٲe٪Uup ջ+?J[ScڴiaѺuUSN^zgIEB(y׭[wƍ+V.[bEzj)-5HZZpN:u(/b^XbiӦu) ?77,A^ tȑ}YVVVSL2eJnݺo/ ZNm-Z~}X>Pڵ?|R"jܹM4)RJ^TÀNZbŲv΢bʔ)WZnݺzu[n)MUVmҤIw}ĉΝf͚ ׯߡC;Se˖Ga`tg>EJ_L[nݺuj'@9ТETo8lQ/Ry(9Q r@F#"G0 D`(9R?EPHrK0 DZ}7ONSr+=ݛ-΍eQ8U~-S2rn/*Tp (}DZʕ+z e."(pLKKKKrH0 D`(9Q r@F#"G0 D`(9Q r@F#"G0 D`J@۷okA^wE,+'Frhƌ{ݻ^`xYf͚58pb@ 91 i֨X,QPF^}ýd 0aB%K,Yd̘1=ztFFFH%(Pެ[:K9s/\rժU+s+=Pl߾W^;v8 OE{葕;k֬k6\3g#yvOp+=iK, VZ%7,[ІSp S֭[ףG^{-ɯXtiv\k׮q}(nus5JkFO=Kp뭷b~{={׿7 }mժYgU=zl߾=>?޽{Oصk 7_׮]^ (i7n CFڰk׮ӧ7UV5jԨ]v.]L /޽,W,_<==}ڴiO<1>aҤIaONNСCFH۹sgX2")~IAO?tn ׿uX{WN2{oɓ'o߾=n@REguրG o?xoy{SN9%~;n@޽;,j8㪫Wyyy6իR"_Rj^zg}V K[ 9(iUV [&ܲeKXTRІ /0N:… lBΝ/L $'"-~4777yg!~IF%$,6mT k׮M $'"-r$76l0SJOK}PLQ 4h?1zgXbXT\sd`&M?sݺuaѴiBj͚5K8VZ;@S'7~',^8,:sZ uM $'"cǎaŊjbgN$W_}w͚5+,.#_|qN 9(i_|qxrŊE͛7oŊAz-Z({ɓ'u`ž={.ҢڀVBo9^X,6|馛*T( _m4eʔ)S֭[BW\qǎ;v؂ jzwUVԄÇ5J*o)rȿHΉQRJ^TÀNZb$C.iӦZ^tEq͓L7n܉'X觍5$brb( }RrժU4iw=qĹsY&w;lٲeq~W׮]/^K/}ݖ-[N;?[nٳ 'pms=^{I{pBݺu=ܟzJr8,Q_֭[n] uu-Z_-Xo/ɝw޹p°qlzر2͈맥yJ~UXX֓&M*CRRRFFFXgee@ F87߄EJJJ^֭[X|%/Z(777۟{~k.EE[N2G-ZHNNnٲe^}ѝ;wVtJ ??}mݺuڵ۴iӿiӦyFQ EѓO>M%l2,J\|yXӧ A$%%ӧ)e͙3cǎ&LXd͛ 7mڴ`nCs- `ժU;w1b;Sq}mذa޼yF:3/^qSN^z饗^zWD_yiR3".]FYvrdee]zaY֖-[a„AШQ?O:tPs۵k7or˖-aѾ}r|W;DFbƍG_ D'۬Y~߇uN>Ç'%%UHʹlٲ+# * F"Z+sZM6N0 ı={|aݱcDž {-+..~wKRG}ϟݺuZܹs@tQ =S[n ))iUs?|ѢE-[dAͻtR^xau(((xºgϞUwH;e@eF8K/߽{*tQƕW^n-..+F/"33ǘ6nxUpoڴ)bm IDATCV Z VX{+y~ǏOfggO<9--#J'OoA}x7tSҏ7]voVs=7iҤ6lX&Mr@TQ ^}ב ?VRh6mƍwA~gqW\#;#3L6mm۶x#GOo߾+V<YYYᚶmN81l0`1c">éSΞ=;\ШQxW TD0 īV'O^tijٳgGRȒ\fͺ N:uԲ 7nkիWuS/ܬY^g0jzGYт1cdeeլY3J .7ި(<,XpG鐞٠Arm۶? /0J#M'|jH.7\\%vW޴igԨQ:thРA :vx 7SNSN'lۯ_O>䡇֭[f͒۴is K.nƵkڵkӦM;-Z\xO=^p_ H[SSS#_I{U{}D&MƏ?~*whѢEZZZZZڡD;F? ޱcxǎ{B1._k׮Q3f̘1+z!vZJ_R߾}c=K l@,%J0ZFvڍ=zʕ'pBbz=cs)...{<))),233oƣ;եKX z hNJ!N|J_GƎQ F#`H8n߾=##K.'pB!u1oavA{7hРXojw@GYq^{RQ(+kO$GNQQQGAq9s_~k|́X]vGc=p jɏiii5jA GZZl<o`yBH?Y-[;w,ڵkz#.Fq0~w;@BIJJ1(Bƽ{FO?=dž8F[lph6m"u^^^ ' qۿ[Ob8 pl`tёW01 ѦMN81MnݺĻ8F { Aaa~[z" G04}n!kמs9+..\@\`4ڵk?YYYM4ٰaCv/[l۶mb=]CeXbŊUhh)$1 pF#N(y믿̙s=<}$//oܸqO?tɃW^zO<1bĈGyaÆGΎQ ^tESN-y-ϿK%͘1c:.P=F׿?;wnݺu…rK5 8pw]n;s…a=x4(c .Yf6YvmfffXO4W^իWF5jԻwשּׁu+F+p֭˗/G;HEEE0 ǒYfE^4}SN9=zL0!]C߿?~zIRRRzzz|Ң|^V^Z6mڥK7K,n۶mwE]w -[ӧe5k֔0+++'MT+222:++萆c--W^~ǎ x뭷 RXX> 3<3|hp -Zl߾[Q?]vA,Z(H[n2eJ=Zhܲe^z=;w&~gۺuڵkiӦӦM'8`4Ԭ ,X0~XO6EEE=n #/_})wh()))#5rJYsر ,YyM6-XnСܹs=+_ XjUΝG;lܸq߾}6l7oިQ<ŋGL`4N;׿uX?7n<r۷o߾',dzCHW^]v[k׮-wAVV֥^emٲe3gΌk֬ѣǧ~Z_|E~,X}N2" K/ L6-G֭['NW_}uo#hͣ,(аaÊne˖m߾=|_]w+E:޽T~!J T^:uoV3fLR?jŊv[N6lذaN:r-˖-0ա ;wo:"~v5הZm۶HMM6+w?offfvڵ~}={ Ǝ[O[.997;4h !+'''--jzaÆoBq=%^zO<Ĉ#y䑒[=;ӨQ]Κ5+%%ʃ瓖m1eʔ=>bĈ/rA̝;wÆ [À9r_~yAs= 4>0E/#Mb5ơ_|qD3f 80[C87nciӦW{ (O~2f̘N8qbx3f͚Uo5kA~~9sO D('|֭ 6l .,+ɝw޹p° J c?-..~ȑnݺd}?{C߿?~lHJJJOO۷oEEE>`GARRRjj9s5|=Xx J͍3JCm۶3۷b>* r0e˖ 8qb<yXvi(,, I&!)))###[8jԨq-DG_3'''zȂѓO>9zSJ#O{#MN:颋.zKj۶crU~ѢE?Losϭh߮] rrr-ZT:@\~aQ6*cUVUf͚aQvCwުuB.5k֜1cq_?`taѧO(N"OR}:am۶Rɡe~aQ&psO7oa˖-aѾ}r|W;DFbƍG_ D@h ^y_d0cǎI&SN]vVc޽W^]vCk׮n09sfٰaCő,;#)eˢw,(/wO¢=дi+`~gqĉ׭[7hРXqư;w'1o޼۷o}wnv͞=P/n,XfMuQɛ2WZ}qo͚5+yW^aeiqq[R>3̟??,*z5A;dggEΝ*堛᫿/"RW}Aw]veO p ?n%K߇AC&M:tb޽Js'uYa=mڴRȗTPP裏E]T5j\yaQ⌌+j(?Q/233+ cڸqV> 599yС-*C0zD0A޽?nSO[nƍ{O{დ?f̘Rٳ',*[T(Y:5rȰظqu]Wsrr 駟Ap '\{?>|WsvvɓKxov&L2ϸqz뭲ǧO~M7ƍ7o^=ܤIzذa=I@F5kѣG\rɫZnxa;%-((G(eա^_}_~k׮<̲evرm۶EM2]vs  'PI6mƍC]xݻw^r%wqGEM iӦ0`7߼bŊ~ǎo%\_:[۶m;q(WT/뮻.ШQx*ǀqE e^۷o䫺u!]Ν;âN:%WQ^\ѦM{njڵkϜ9G[.VZ5z~7pC_MO!==ywqG/h۶>[례%^т/__~]vܹwF5jԨUVݻw޽^xЛs=7,ےSRR—DYP6֌y85kꫯZ꥗^޼y-[;&MtҥÆ ;_Qի7mڴ믿gYxƍ hݺuϞ=Gu9TtbgO>yg_~対jΝ'xgyUW :4|it7xAM6wܰCӦM;tp>{?ر۶m۶mۺuϟAÆ ?[o=ӎUtI'EdeM6_}UeEzIuGHRRҙgygbpաthҤǏ_-ZHKKKKK;1Kwg裏{3xEd <ޮ]ؼys[l WPM0wA}{¹wy!C-=}YXzg$a\lYBF8p/y^zW]ue˖}{)((زeˇ~8mڴnݺ%ϝ;k)ԏfeʕ[.,>{Qw-uJA|?kXv-[⋣Gڵk-RRRj׮ݼy:kȑlr]w|̙3gΜyݻyg/~âTعsMA/Zӗ,YAмy.]TPA0]wE>6nxѢEK= K?~|AAm۶=Szƌׯh_~ իwWFW^yeXgdda8###5VPAhヒ||WvZK~o}8竜Hk׮!CիW2dAp 7.`ɓ'%'O^]rr Du1諯_?/G>Ι3Lc1[narSO=裏ٳk׮7n\.]6lAv&O\I6mƍC]xݻw^r%wqGVg.A ԊFkjMڬX?R͚5x޽{Z*ܱcǖM6sMII)ɓ'/]4;;;ٳgϞ=Gnf/_ ђџuYUkR\lr3UIjj{7vZ*̣}ڵhAZ^#GV`̘1YYY5k֬ `hNNNNMMZ]ee 6[ou֯_e˖-Z몫 ڤ^zӦMyŋoܸ1֭[sԨQsN\t`QF۶m 뜜-ZT#u3v؊nݻw=;@L'xbAKX! ~5ӟR%\_~wyvxwf͚8x3 ߿f"/?}ҥ]vY'د_9o MIIy#w٫W'ٳ'==Ν;#|zYxok3gΫ~ܷo߽?K.ӧgݲe?>]vmڴ??9s}<|\PG0ZF3g^r%of`~~ / /TE]K/%%% ~sXp-xH`4ڵkSL4i޽{Թswqq & c;ɑSTTcP[* g߾}ۿGAqc4N{|wygҥ˖-ovaN8ڴiӭ[nݺ]x)))Z_[hIoG|ZF<Ez 8pbvyyyȊr5/R(pu/zqqMvڕvӦM55o߾w\ɃW\qԔ@`[oݳgOcf͞x/(wI'[on޼yΝ;o#>.PA0l IDAT駟feeE>?馛 \}՟|ɀ"y($8F_~HݨQ3gzPӟ4i9+xh7&}%#JjҤIZZZcvv Oqnܸ1RѣjMwC kqn޼9R?Z'n۶PgYuԉUkRXXXnC A0ڲeHgUɺum$8F;u_z饪5_۷o3,/''gѢEQnݺuʔ)=zhѢErrr˖-{裏ܹSK1??g۷o֭k׮ݦMO6ͫ0ǎ^ A_zâO>n %%%ӧ)e͙3cǎ&LXd͛ 7mڴ`nCs- `ժU;w1b;Sq}mذa޼yF:3/^|+*C0 #V\w:S*sիâk׮WF]YYY^zioe˖Ϝ93OYG~i~[`A9ǂ+ܷo_#Gꪫ*yb$m޼yk֬)waÊne˖m߾2dH]w+E:޽T~!J T`8zF?裕?q۶ma}edw}W~!997ڵkSSS;{ӧ;Xn]rrovhРAôi5999iii@\Q KӧOv3gLII}X4)rJYSL߿#F~sݰaC ({|ȑ=\^^^i@|[~ 7GgϞъџ'cƌ'78p`֬YUYfAϙ3'@tQ ^uUwWM7c;ElD/wkժUu>|xX/];,Y$@tQ -[,VZEԭ[7,v}Ν;âN:.8묳wݻwX\j|A@tQ ^[<@5jx7n\&}WFT ӶmFpgæMjԨQa޳gϪ5999WFT|;DR|z;$U$LOOO@dqɃ˗/oӦMXT~hV6p͚5âvڇa޽U@Bk׮]Xl޼9-[E]W_EV5jt B0 $H)Ȃ/2zO>$,*sZM6N0 ī={LdqɃsNx^";;R}RGExaѭ[uΝ;G_ D'ZΝݗE*Zdɒ?<͛wҥ5/+PPPsυuEa޽w^Eˀ FW^yeXgddi8###5OT̊~ cڸqV߿iӦ Z22@?~qAvvɓKeœ'O~ HNN0aBVƍ{뭷>}7tSҏ7n޼ye?s&M aÆ5i WD%]6mƍC]xݻw^r%wqGEM iӦ0`7߼bŊ~ǎo%\_:[۶m;q(Ô0. ;4j8lVɓ'/]4|ٳgϞ]vM#7ԗk֬Y^xaQQԩSNZvAƍ_{zU!###uy嗛5kv+c U믿>rȊ3&++f͚Q\poFEg`O?=J m۶m\xQ:d(p,+eJW޴iӮgyf7n u={5j9Sׯ'|Ͼ_}Ν;O<3<󪫮:th$nAM6mܹaMv/>|xݦ"w޽{CФIǏ?Zhv(cѹH8Q F#`H8Q ԊK.` Ɩ/_ ḕH8Q F#`H8Q F#`H8Q F#8DFKIIٶm[ߎ4ֳ))))8 F ܹ8ֳ)))-[1H0 e˖C3F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`H8Q F#`4o=>餓;&MtyرW~1c*?yV+V:u԰aÆ v[nYlY/;@LԊ =zڵkKynSNg>C^^޸q~W^z'xbĈy_1bĀ 衇ʣ`4E>xСEĘÇG^WWXknؽ{ɓ{222xɭ`4EV\dee7c=6:;btϘ1#777:kzݾ} 6n8cƌV@0"`UV{D_Xͣ,c0:wq8߿EU*ht?/3c7,tYX`tӦMw}۴iSV-Z 0'駟W9v7=z!6aٲeɭAt7?p3c\ܹsm۶z72dH t͚5k֬'|߻r,,M K.Mnܹs?E]w]ᗾxҤIaÆ{',?4l0~ 6lHn8k&1ݺu]vI O?]vA0`"w7ݒ>YfzgѼy۷/^s=WPP!Ctһw‹lݺ5:(6lԨQEU!yԩ Niڴi6mJ!B~~c=vFlѢŸq̉]`4~-Xol۶РA?駟9sf (((k#H yyyA{5^*h;]t6lXX -Z(2Zj}ӧϹk3ի |_ݱcGt`۶mɭSi…7|{{_~/B˖-`Kp@4ܲeKT}ڼystPeGݺu w͛tΝ;????Lvvȑ# Yx  FgΜYh?͍- qi&v̘1ȁP,ҧ9su6rh*ZZkfŊʞAkӚ5k ?(7nBlh+@E MGyW^/><.\8f̘&M$-> vfT "-6ȥN^*hJ1[nٳgO_ov1;=nݺo߾}tnݺ֯_t!"ĉs ,K322F_}UtP2>_!6HY PFS$//믏;u4}c>vk'/_<:8c ?߷o '''oH$2mڴ"$Tyg 222Ǝ۠A-ޯ_ /ğ|xዜF"#GN:55kr-{T vTbW~'|I F>ћ͟?m۶wqG~ڶm[PPt &+}jժv;ï暏>hʔ)Ş^NO?+;vXnݺuvꫯ3gSO=UviTJC:tNOPϞ={ BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `n(w;oRRiQ t@F#B]dHJ#F#BG0 `(:Q t@F#Bz(ߐRU (Qxm{RKJ2p*=:Q tJGƴ;W+#F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@FS= P9!/YNV)((@1ΤdUZBP8(:Q t@F#BG0 Nt7N;oRR@y$g$VI+STz7%T*@Q t@8"* IDAT.Y1 #F(iw&W q(:Q t@(g$ԥGU J@8bTyې::9e!(@RP F ȘvgJEޓRoKVYɪPEF 2^۞RU:Q t@F#BG0 Nt7@m|Fj5R*BG0 `(:Q t@F#BG0 `(:Q t@FЩ*iw&T=*` 2^۞:_:NQJi y*ttvJAe@F#BG0 `(:Q t@F#BG0 `(:Q t*XC^Jdd(T2LVH{Ubj6osիW^Νo>,}@11JiÆ {g ?dɒ%K<䓿ozꥫ=O0Jm۶3Ϝ>}&7믿~ԩyېdp*4RSbv[,=srrrrsssss?ó>;oF)e˖3&:۷~ׯɓG}u̘1˗/O__QJ.((O>|xFFFW322F1` zt q F)ݻwO<9:QwuWt7Θ1#u@bܹspѨY*(%dɒGg&,[|{R`I&g&,]|{L~aÆg&lذ!V{KR˖-KF)[F5*H6n?-]zmڴ)RS) #FF e2"H{̌`vUF83wUV"/9昒=bu֗]vYI,V^sEwuWZ{)1Spmۂ زeKd}ڼystPvתU+iKu-" hnnn`4777H;v_3f|%] sQJ rnܸ1؄ăQH(%вe v@&hѢ|{R۷֭[룃:oOPrQJ r~gg&F@߾}H$iHdڴiEC0J tڵqAXbƌX"&Mt-u@b@ffE]u]짟~>Ν;0833' v1sCԘ3gΖ-[c;wΘ1#裏nܸq «Mq' V\|8##㤓NJo?aPdrQGtAi'$ΝyI&GydzRnz"֮]C}ٽ{Nc?!//[,:>S'Ǐ?5kHo?a~|035j4jԨk׮C]dIN:hРAH԰N *mrbߓʈD" $2O>3g,~W_=ckڹsСC~={se)nʛ9sUW]lٲ}qW]v ./K`BWީg[M^~{\Q =Е+W&2?Njʕ]tٴiS5|޽{999effN2NKMWa0~K.i'x[V6ׯo׮]^^^`BUWީg[M^{\NjǎVO˿L'??K.m\#Fidggy6oO>n `Ϟ=^zO?fYf7=//\2//oܹO=Tf͢/}G7tSz~K/4AWia[M^{tjGqDtnݺM1b=Skd[l,!ӦM"sf͚u'A|ihjD"so?ժU+<租~+'LAff… ;uꔆ^m۶-]t„ <͛c[PyUwZV8l+$#Fꫯ&M裏twQeM81vcA>}n7L]sUٳcէ~>NME[U]YYY}3cʫW^n݊<矧H N *ig<5{tQ^G~׃ [/XftwT7l0֭[Ǚ;QFhZjj0 k޼yt_mUu{;wn'AWbia[%l}ON0 U6m4jԨ?xŊWnܸ_.W^zϟ;Og(ص1cFt;wSNG}t˗/ڷo_mwZVI/)cߓsWzLmۖO?&M<~jnڽ{e˖Ap?cGXçqEƌs5פ\G=k֬؟6w>}ڵ+O>W^ VN;kSƾ'@n լY[o3h޼/^+((`Ȑ!]tݻwR^zXZ^~eW~[yG'NH~دSöJ &O%ޮ AЯ_ xm۶=4hp?3glРA^{eZv|W_?^ËhРO<Ѳet7 =ر?AТEqƥ)a^U6y<F2VZ>}skѻaѫWG ,RcU{_WrHő۫WAE;]t6lXnРۢEt@bq)A 裱K/xk_p7{Şׯ /SVN1ktR~lWd=I#F4hPt0svR-F*edd4lذ{ 7oO<}W^裏[ճs;Sk׮?SN_ PaY{mrbI@.f͚vR]y#?6Ca7pCl#gMo?U̜9su6r Uv5׬Xw]f ڻBD+8$Ω@խ[7ի޽;TV{]4s޽{)SuYAtyѢEnxGn={Dvi>hǎU8ǯ:+&*IaI⪧ ,G A' *~aƍq_#֮][È#~FK\ N%*P}O'R䫯5jND^~G}] կ_?:ضm[w'NWwwqb;l@=I 7v+vY|ytp1ǔkUV^^^8ɅtNk.6^paK,:r)SNӧO_ PY{mԳMz=)'QW^xL۷$СCl蜜ub,YrꩧZ*nKu!NIO 2$: ׿֪UȜ7^uUjx~{*dǎuԉ_~ .xwg_!eBW]NŶJd=t=)QL zgE6h;ׯ_۶m .]:a„zjǎAo~޼yYYYimt;wӧ}xG2䨣j׮]~~efϞ}F'3kI_U~XϾ}TVmo߾wߝ8q… ׮]ykknܸq})ݧL2dȐ87С?-%#+rM7[nsZn=rȋ/8~xkkI۽{W]uʕ+j׮]'Lpa}v?ٻԦMI&o-Z;O.0/% FwyWo_FSL9S7aϞ=7pØ1c>|x"b~~e]6~bAp7nݺq޺wLPʵd"|0~O<N(`tŧ~٘ &wyžP F^{O?H ,_aÆ{Dq%O<1x\tE'NLqogggRvA >{MܹsǍ_`tڵz*6[W_}դID&U/Pz4YQW__~֭ ,?~|.] O=z>;H*ڲe{g޼y7n[lSO=յk؄!Cѣ Zz衇͛iӦ۷7_ Px3g^wu |T({뭷gyI۷^޺K fnn1$|aguV4-.\8nܸ#8yԨQq:"H?| 5 CK.{f~~wYx~nzz6dȐ}|yPޓ:u&r-v'z7n\ڛoY/'qŖ*;Ccs_}̙34Yטȴ ,%%RRv?xlBj>8M~bDE":6E@H(RkA; 80N7x_;vr!?ca~NY̵.袗_~3En߾Yf7oC-^zcǎ+bW\y!kH$rG.^8pذa *A0xbS ~|ӧO/v7o^,]wQlC*vZ$?rzwP_|qoѢEW?Oܹs"۪UO>9΄O>$6>餓Y`)3gsNs'++s)vZ$򉲳JJ0 @iwqΉUN:N꧟~}FpěI_ٳc ̒*'Bs`o[.cUVƽzJ|=z$Xt ϥX*YRv-vRG}twr(% =8nڴ=A`4'o׼yJ|fI!$4jԨQ [ AP~?pIo0/~R," GZJ`jZfҕIo0Z)߹sgl;Ww!/O.'.)]v$Kp[lIpg`(L|իW'XvÆ %+*Efv'(ѡCO>I|ٳgy]vqeL*Eo_$ԗ_~Y>`ٳglo$;=zK9sGJ/8'''O^>FF$IwTϭb'h3fp -ܹsWZժU={ԩSO>SN-*@+VСC{)*Nqy7<8++kݺuu֍_m|pˌi#nr(ѻw-[>q{W\nݺm۶-^x„ 'pyK iyjժ[l8py7yիWܹsÆ o~>}DSN;-6S<3<7oޱcڵksQ%GF`M6 _te/ɓ''X65k竩SO=jժ%$Q?//W_0aŋ׬YS^-[kرct·~xI'EǧrʻMᄅSXvڭZjժĉ!R_w׏=:!W= L^^ޢE:uuQ,5}ظ]v@1 >VZ?cvvvE;~!/<˷K| (&M4m4:޹sb>|x,m׮](P2coƱcso<̠AJw-$r*=Pb~mΝo{]v>cZjոqM6}رcW^ֺuEթS']?Q4F=x-RFwy@J 7p'>?++뭷ޒ`(o}_ZjW\qŋ TzL"ȧ~:yٳgXbӦMwnԨQF:w|'8yn#Bǩ@F#BG0 `(:Q t@F#BG0 `(:Q t@F#BG0 `(:Q t@Fێ`G;bv(#F1 髕lIENDB`freebayes-1.3.6/paper/low_frequency_sensitivity.png000066400000000000000000004172421417247743000226620ustar00rootroot00000000000000PNG  IHDR4F pHYs.#.#x?v IDATxt_u}?{'IER&iv8 89w0qn2SOAcϜ;S N7e*NvC~L+4ii)iMM&GO۴M~?^&_qeMM>{h71 Bm?Ss/hilllhhȺWr/- afq/́]v yeȔp/tI e^}}}8SrytwqG]L|~ 'nҥYw1$ ðnY2%B ̘1cΜ9Y28.G`mmmLŋHA #0 SuuugnjjʺWr/j90ri .̺)Q=Yf͚5+^&_$ S^{_hQ.3 d$Lt&J8p(M*o}[A\yY'?UW]uUWz׻WbS=#{֬Y3{ٳgY=yC=t TON;OMڛox? _xgP‰۱cwzɇ]vٽ{n֎jhh\u+r߾}l۶md{Mu$Ї/ᄏzސ?Z8K8qby믿~wy #I /~#۟'^p͛7oޅ^xp #_O T4z衇V^Դvڿۿݻw!]өi xk_}, ⯆ax 7\tEA }3h‰ޞ>06mhkk+Dx ~#۟'x0 ?l~CCC;N8qfϞ}aN [38vغuV^ݻJ'8^֭x:I۽կ0 _W$Og 'ʧ8سg'>/uƌ˖-袋h/G69(=׿u@ɺjOl?x{[Cl߾}wy>/| ozӛ?C1i<;N8Q&ws??wK=;w ػw~<8} 'C8Q&6m*..]~K/=~_}W2<<{ޗ%֭+~I1?_`AKtqlٲԕW^z`„e /O??ꫯKw=#7q|3L@СC<̔Q}uU'.8)ӓ{i3ߋ^ZK+]______]pR}٬[`"vޝu L8Q&B/y-׾6k֬Ï9o^?΋.(F6Ƒ8äI(1cƔQ&$9tPuuuY2%$).܈xppP(d䫆`CCCuuu*&t‰r[j^cO>9qYg F6$I$I瞒 T:D9\x/8QK_҅ AiӦh/M6Ax>;g 'ʡud[o<ڑ7nۂ hhhx[R(hd;H[(t>-믿~d+سg@ENs=wd[jM7裏۷k>m۶Azo,_kپ7?{{7p #_?lٲ3c pdxoܽ{^_bÖ/_hG^{3\|wqGP&ѽ{]w\ꫯ*$I,Xu/Sbpp0. \l```Ϟ=sill̺b#Fʟ={ ,^ xd; Úl"<{iE;p@wwٳeKkjjҟQĽ4jjjFFOKg͚5k֬{|I e^{_hQ.3vttlذ!Y0 rӴ5K/}LAPSSOOvo} Tevϝ̞={|;wqGgg;.]zo}+_y̓444|_};|x駃 8???[vm %+֯_~9^e@űPV @Y 'Ne%J8p(+PV @Y 'ɺ`*:XTgݎg߫ùn@8'' 4l(;Y8,00 WUўa/@>'c3vbOw;fNN'I8C䴠>-Np80V''$m؉ݻ{2lt ؊É Yup8pVvNp8QhN+p2q3vb׳IoOM84v0p\e3f N'-iwg Pф*;/f%WXNIX pe˃4vp 1c''0fij;&@8ұ;T DjNlp„(+ `3vbGWH8ұ[Np81AMmZZ 8Q DWUٞa/@%N',liKg *p8aرfc' NX|ePSN'D8 'VvJ6T0Qs؉8̮'V6BZZ 8~ `BjeJ8?0AcNl8a3@N؜]/@%Nl1v0Qu3ӖUٞa/@N[3l `⌝&@8L\%Fo#fc'cN'api pl o{*8t(f Nʘ-TpR1c'p893%Uٞa/@EN't`ӟp8YcN ۶d P Ɋ[0L˸ `< 7KUb&60.0 t;޺%2v8%I21<R9{i.ԑy"?gS~u+0 ҷx2\rj0Ii”?%z^9kՍ_Ñ]57ѽ,L`ѩZ;09t;T04a3t&&Gq8 Joˮ`Z3sjͶ0heCEc' [V7L B0p P(h@\^c#2kjj BֽLt0 kjrEy{ȭJ555s^-$I4KwE9 D.ZM6Lg `D-mv3(-Np4Q˪С H [Y -0iY24v80Wv7wqa3$&رc''Vv'&S8kv`aZ ' 'I6fc'R `c' $]۳$Z#&Y8gnxN%ZG;7;N/l;vbGWvӎp|QL ;۳ ;%- ')QDyS$6L+ `J+;;ZڊK+;)0%SseY8-+;@Nִ;3Ȑp(1c'vJɰ + |JN$N@UN.]̜P@EQ%P@Y;٤'fL' ۊKc' '̘Vv*$+c'3Ȅp(1c'{6חa3@ 'r ‰ I+;@N-[եPm@ ъN@NN< * akh$zM8d :}EP[4vb', ieThĎd I8d#, '$I;B8d#Z2MK+;@NH+T╝@e#2;o̮|@fAMMZZ pNmmlyZpRږn']ۃ C8d)j.;SN@ ',E+B!-j 2U[7fppX2S}[p@e 2؜]/@9'E+["V7#:mYZ%s ȹ0jyGo8^*lnKmOf 0jn2۞H_ԟAGɺ#ZV qo(ӎ) ȯ(~/OFlG%FoGN@ ' 0:kVZ%O}ue3åEc'k ȵMq/V!jYn۞ e 0g0-NS[2kb ȵBxF'ONQsP%sԎI}2*lϰ`J ' W$ ӓ63N f 0usI ч'ueCC-L%gI4])jn ¢N@N ' jBZ&exSW 0|ISZ%?}WvjmK㧶CN@dPY<_ 'cus2ȢU|14o5fk׮-ٳqL:TpMcPH?WD˪ $)@8LGy$QuPgJWӠbzih/I+c' P-D0$?cUvԖ`x&L8"Ơ~|‰`Pz&֭[?O]r%˗/ojj;S=}Rػw-r饗Z+?44TK&P5jw{G8&ұ-ٶ뮻_jYkzΝ;w|?ϟ{r˚5kx$I6lذ~ݻwߴiӦMoq_җ. `L%3{JeQMio6v*s=wy|%DzϾR$]wdo~׼5_w0 Ï_e˖`'gVNEc'l6v*Z$o~x9}?q_m6F2N@5 iJ~[!+cN:oߖ]/=O< 7pgkzzzxP]F$\id N+;@7Yg͚5wqǮ]xO~vmL믿~pp;﮻򗿼`ٳ&:$4feNႅi '=%{?~SSӋ^}c>3?,+_{ /7oީw>S>7ߟ$I$7`ʕ'}N@ ]\٩-ݎ7w;w쉢ҏ%/cڵkKַJh-޳rʏ|#{zzzI :S؉䙧8) .,ٳv}C/,XcK.dK?O_|k.oy[J0}'g63NmeўU'IZfMɞ{~393W\w;?~s=a .?~zh-SN8է. _ܘV/ݢIN@n_h_ںu.l^z??ٳ8nZãؽ{w]]]{!$N@5Ι=ZϮ*^)iT/8p??/rٲeׯ?t}L$TcWv؛a3G80tmϮx?Oʙ3gdM7׿~pp0މj!L8U. ,Z鸲S2v섕wy6lڰaW\0wy׿ '~(Tҕ~1Vv Oc%;wW^|g׮])֩~#Ǘ>tm(`N@ de 9'Ad 07z;vw{gAPXlYm۶K`d(3}8–U/g¥epb?{6l6555o|wwɒ%Ňl[v-y$I_5}U˗/^7NoIaxLTh‰PrxL;* {n喿)9di=!k^pb7t?okxM74~8`Mߒ)|ISP7pep)S2lT%{>O}ݷcǎn߾__..g.҇>mwqǎ;zzz~ӟ(I&̙sUW9|7;444&H8UlFo$ MOĝ7dWWK,9seˮꪭ[F fz_կ]vْ%KΝnݺ[nO~%WZUr̙OOҀ!-Z`r_vYXSO`:7o8W\qG>>_7Jvq'0uPզNQK[qwX *{뮻K^R$D]]~??ްaᓮTN@ukF+;KKc'a|{^KK1|;qΙ3KK,O~r5DQ?\x׾ 6̘1^veׯ@Tɺ c9jNWó}EEͫv22v}0 /7 w~{7MOOϾ}Νf͚uɟIssN2w/}Kׯ[lygg̘x◽e^z#~]tѭOvtt /Zhݺug!TN@ _ԆL{ ,[Vi8_pl[& WUzիN$WG?я~tb/K.䒓iuWA4NPل@5Z_Ϯ#, N@NAx֬ftC/f(l}x@NAP?veGC╝}}ɮg3l8I JVvN^+;E-meўU'NAYM+;%O…N@N' ѕMt;N@%N KVvz?^`؉^c'r 'E/-Y٩7f5*.K8VCZoz.Z6>!%FkgɯNahpWv˰Í;ѳ7ٽ+f NE ዊVvY_0O"p0u@YA4`R/fJ. ґ]/9!y|Ho싮\\Wd) Õ-ӣ-.\ucΝȺ pYi8N~3P<"[Q˪p"̝iGx,Xu[8²Npo͔ZVɖά:&F8ɬB>/3fpiAhofc''# ϙ=Z%OgXQlMD8F8YtvS"ؗ]/ƬԽ+ٛ]/ NG1&lo>+;2v*p8YEP>]Vv . fLK+;J?~W @@ P!b]@QDY. ?w-eQlX.(ˊR@ZKHH@z23Dž;L&$dΜsdy<h]HN!&Vv2 ={iJrhMHN[;w)5Tvʿ w Cr-RUeBrTvջZF 9!Y–SCxyi!m'VڹKQ>Z$' ʼnR3N< !9Rl%dVΔ;,Tk;qRRnuzbkTvj)%䄢*; .EZUv:R*;BÄʩTvZ' Jj˨&k u 9~j=ssh; $'ء˪RIDDZƊ:(Er]ؖXISxvheHNah@NZF%77GɩN< FWHHرc,YRZZڈ- V^=mڴnݺyxxk.<<|ܸq/ѣGE͈DLUVZ!EXWv*n)­Nd+eFcvv͛|D[ZZ`={G1EEE? HQ"9$ӧO'&%%=  0`?o>Vh pj LJZb%"2Vlzݻ활K/؞bŊ8#ܝ}mڵ }JqqܹsZĉ'NzhŁP p<)6@|]PIN=BH=z*lRC9a =fӦM,;;;##>BLx 99-qqqj8dȐӧ|͡~~~/^<~mV\y!l5kԩSuxq@㑜h7)eeewuWBBB]V\i&___VB!{+g\PɝQ8#L0AOlТ;ƣ믿o !Ο?rG}fyԩjf"00pѢE?$Y> ;v쫯 /,ZH#<2z=z4Kexڴiޜ>8qm n:a ?<+^b]IhR[HeHmdg2'~>>>oƤI~1y{Boٲe̙֙ kٳհ_lփMEraʒ? zS-[_}׏3C:t替_~Y}tٲeOfVICJ(w+V=i; @iMm>\ל UV >e/^u[ڵkBO@ Ar^ӧllo}冮VUU !njJ/vmB;B]+ROKCeւ‰RNu4h:ϯkβeˌFb„ w}=ǫc6N&-[瞨(/ZGCWAAArr4XwߩW_}V$+3ͬp p2Z@e'f" кZ'L>@7@ĉm{@!?8u޽{vС3gܸq,>}Ϟ=sjhm?LJJ鉉B}1i#GӧӧofVN(Y*R8MDH?\8Dv:r: u¡CDu׸9sB_|ɓСC??ssssss<{}K.kWIfw޹}Z%''?~ڵkfy}$z_/xW׬Y3tz~ܸ9a#GO&r-uBHt-x +5 N!uªWvj NȲ|5Qm޼Y? ]KQWՕ?Q35߿?..nݵ>wȑ525|#Gڸޑrw9C)G#9 'NP 5@ZiUe -3Bi!@k}%K!<<<5ܹS\[EW&LBxzz>sG)))ظq7ިN+)){ʬ[VV6a„sΩ-_gffVTTdff[oW:w܄ j<^{{?~~|}}###|cǎqƍkfs]/[^^|kת7{]4u0pf? oӧ[n*JcܸqsYl"//oٲes՞+B3gv#$$dҤI{~c !_{ u˗GEEy.\~4}:>}'|b0\OHH7O,..pr•Orm& IV iii>5]w;I<0o„XɹGzۉsRxy9DTa2 .dSfTQQtRulٲk{]HhѢ_~%99Y~z%h^xv}I} !>cƍ#G>>EEEu}hn׮Na5)ҿ?B+|A3뺐p_ogjj| :Q3۷u#Pݽ_k/RIN*97BW,fyh,++y+Uj&UYYh toJ䒯Qqe]K[6m6^꪿&V`0j^s:h#U|М=SKҵ+X_d2,]tÆ =Pnn͙;wno>umcZ޽{-Իј1cY:5j裏O?a䄃jjeS|PnɚP!`P.FMNao/^ rM>nR?QȾUW"뼯t𑚝$Ieee.,'`!qKUU$?-._SkK].X%?P4Lj%ུSźĨF3.^b݆߱t)Z;cŊgB̛7oĉ}%'A=\|׫tژ, /? !>C !8jԨQFr-[ީ[,???Ckmj~azEFFs&!!a֭ }@%'P;>9QWTՎ_UUrzuN=@$I5k/W_ɲp•+WZO֭DžGׯ_OKK;u:߿o7"9=CN R6*@6.mܥKo׿]a9vرcǖ-[f03gzo:.mI]]SmµZݒP;n!zƉh59]{6t{oUGFQ4tnZ_Fl.;v?yȑ^xAey=XLLLRRRo HN8.Eb+EZJ+9F%҉Boo)BrZktM`Æ 6XJk Q֢ܹsgxndǎKMM׿5cƌ^zi?~;JQ1HN8M^ gVXF]9V@ $Vg(vI4^QX>.LF'~EEWR\gkĈjן;vؿf~~Çq.]=`*ڳAtN8Q~Mtԩ5TDD?rʔ'N<vAA /FrAOح&PI!^RueUUrFӎ{Q׶9s:~Ws/**?S5xTIѹsS3f9rEQ͛w15ӟm8{luk-_OE?[o#< Lj#.]zfsJJJyuucU3۶m[`A?,X_~Bxzzj$XHXɬT܃Z Y>洣6o\ݦLDžaÆi-W_o^a2^~}⋿kvvveesz^z[N{+ ; >o޼Gegg}ufݟz)kQQQBEQcǎoFcvv7|s뭷/Q'Wr31c:Xd 7駟&%%^tѣ-4hZ^`0<~@rqΝ_~ɓ'ڵҥK۷o{^~eg}644Z-u !rY'Q#N >>~۶m6׮]={T7xcȑ!!!aaaqqq/W'x{{Xlܑ:wn:HoVtt_HHwܱuVug\??Q|o˖-{oHHWHH}ݧٳ?`7Οwɓ3f̈m߾}PPPttܹsNoְaÚA;]Sl6q;߸qZ Z%$$lݺ5<<\ˣEQ===;vFU/j&^nF躝dUM+f\ =f1CyyKڵkW/x rUUת\ϥK˵J.Jeu,Isϣ,:K]葉 00P-zbj7~{ vwwW[й^м7ZEQk}{˗:w3.^ !<==͛W?o^y'1 :t 3f̟'/7\xq˖-3,g=~ 8egϞ~ɓ>zׯY믯ь{lƍu-~=,]4$$Gƴ/oٲvq6և\L- jmhzG; hb+ZVe'9=Mi;JCUUŋ>x]ر%KRSS.]:a„޽{wͭCwu… O8qƦg&#F8|g}?!,,/22rڴiׯ?rH] !DXX؆ vSOEGGwI AΝgϞוVOhcZǎ7mڴe˖3f?00`0DFFN~<yZ }]7'Z;nNK]7'Z;nNnNjܜh9\ujԭÇ M_-K]P $'b[H|URψV\ ~SH1V2*\Vvt",=avB'Ы6 z!yK=P䄥'0; jHN.NJJޏ=Rb*{/JFNR(aNIIvaX#9rsWɯ.wO~Z-/uZt9.pQ-uB緝Tvr\1d-<}ܲT7bVцjm'r9 $f{ǚцm'R$'Wַ`0-LBTI :vB2\$0Tja\PV(ZJe'9-EȲ@ErpqC&Y <14:TyyZۉJ% wZ++U({K[Le>!ߧ/Ufߪ~b+;|Uv`N- xArBGŎ$'"d^0DZ8K HNGo½9+tQ#[Le'Jv@@1{6.7Q$aN^C*;Np]]q|va"1CuG)6@l)(B>Xl=HkCrh+tQ 3{G)6(B>Xu1X''Su'r>Њsh+$uoKjKsRoG)Gtpj(wo;['$uR.]!=6jSN@n׷SNN"кS:uۉ)6G ud!Z.Eί)r #9E>1ƒyuQh dUv' 9Qq-ӯtN+-]źnW1:ui;8 y|g&d_i-rTUc^c$; @Grh$u-ؕWvV䄐|9'i;q)2@b%1kIN^C9ڮA7v„UW2QNR.vIBG-,9u萾;ZWvRSIH-RHNGrhO3m-VN9fڴP~၃01sYj YUv:U&JP:9!8 ni}2nWS"*uХ秅YI ;v%KJKKEAAիMݭ[7vڅ7^:zh(ںQ!S RBΕ ?NtݮCTk;!$; m3ٛ7o~'###nii z_=z4''l6 ,?Ea47m4k֬;2駟>qD^"` BLx 99jqqqj8dȐӧ|͡~~~/^<~mV\y!l5kԩSZsu=*P?{3go:ocǎzi =0]Zx0oS1_$iUeJPI^Z$v8o1i$5lL^`޽{[l9s$I~gϞ/E3gdRg}611qʔ)=z󋉉yGO<9yduG}D 4"^b5k]3 Ur Uۉ|%ǟ@1}tup-\PZj.x⨨+]V-dm޽GQǏ_p[9,˟|I 9@!w Y:Wvg]IvFe'BpA:Y,[h4 !&Lpw۳Lh4~5&lݺU?u?:޲e=["9@! #ާ-ؕWvV$)zerYj#u.|,6h;$AAAN0L|:@S]&NmVь u7f 6Lۿ;`Ա"Ykv؀݅W*FoN`0G'7'hBCCkpС}+$! [jx٢C]+rTǡjP&K۾}%KZgvܩbbbqw}ΙZ4Ж`}B$f~crBCl`0+ʑiD~]K ޢB 3,SLv)5`w4999˗/_v,B7|w޵OKKSl˗/WǏ=DrEAiEpg֚i׽mll i`Ng/'S`0,\pܹuM(((Pv29rdFQqm1rh-_\xm\P[v7sh-Rj \S mLЃOQQV~~:h~fyѢEÆ p"44tʕ.jFL*b,YQݵm'R|_gϞZkf:0?Ifz*5tS ]Tlo;i"{[EQR8B59r:ػwoC}]UWn1boƍ;vزe˺t;P!,q3OI"Xu0驅2 %%C7t:ذa&ڷoߵ[X{嗟yY:t7nد_4 y|g:QV]MnnZ$%9JWN771Wc?|:ҥKhhh ֭{=:m4Iq~AHNsDIZx`g^YnVi~{ժZۉԱ!٣j<3sLu+ybժU&IO4F֡dΜ9 f/P-Zf?vG]IeINEQ<p[ovSO=6ޱcYxZ8eʔ>裼C7pC-Zs~l6O<_|缼YTT4su֩{WSEEERR:e_vl 9Nqݧk !DB%'AOI*V#HQ+JKN(9YJYg)7n tҺꫯn˗/L_~?6mڝw~?JrEY'ߴ _ Eͼ bЗG|6EOULCǎ,Y3|[l9yŋ7jԨ &"s̙3g~l#9 A7ߪfK=|t04jrBTibK䄒)˅^BCCI0zXWv*7%mo/iS+;Uo;!8rw 9vUĬ/t ]EW*;9!,B[v q|ؘvX:N[~{a "NHNKe'lܓ~{IUeEUVܑm y|g&fY "p09u Y:lk 9~]'iɂļ4sbe'Cx/榅Tv@r]FwTvR+k~{IUeUu l /htgp-qs7^P0;a$?'*+5Fڄ˧$ChiEG V[٩fۉTm $'g,>u~}Wc)tuk[li*;"h;9}߳Y;ǕBdQ(rS Y_JUSY_7ueUvBB-[ uIlT҂Wn]Pu YWv*RN8Som,Fö+ }C2xjaFU&}?:$ YJZ0Ze'őNTUvh^$'WOZh,:) y_ʛ-nR?_-:!0Xi;4/k)7ZycYNSTn.:x᧦fh ʪeU7m'\]9ZXe*9,8dO7-ԷӐ۫VsD ِ\_PGô0GO6z5!kaRbc~gtUeC%QjHs̾@[Нd y5yCjm]=~O7,欿-lV36Rlrj*T4O"" dY 3>נ(^|9))ɉщkPܜڄν g)b: YVv N۫oke_NFWHtV6HCߴAڞ sx{d~B^yZSNgϪb!;&L& V#pam5!9zmv-,ۓ]W ƊPvemlb,AIrLUk;a6/.GНbڐvPd=vdh̿u .L8=79k0ȟj&Ŏj;%$I\-& tG__N:90(77B[F ş 9™UjX^x:ԊmRF<]jxDzў74YI*'Ŗ ӻX7ЋԵue3no رO< ж{_25n1ZzŮY*;rF0/HNm_hkw'眴n>ѭcށy?)tA[ xZ(z>b,U"UNR@I INMArh+n ~HX7 ==(Uiob_,?w 0VTF6n;q6@ڐǻRF󉎽&td/.el?*䏒dyWѷS/NŎTD"9-SĜW#)|Bi{*ROAqZ'gIlamY C*;xyy;vɒ%) QPPziӦEGGwã]vƍ{饗=sFFF*Jþ(JTT"x!hHNm5'>9IΕ]G=TB Zߺ-vM;o CUv:{e']{)(X IN0ٛ7o~'###nii z_=z4''l6 ,3EJMMݷo_^ŁRRR@Erhsn ~7Z$VzDw$EyrUn?dO7K%+;yHV8|6E4ͽ[wm䌌ؗ^zĘ+VիW?Yf͚4Or 0狼j67>?7v}y8rⴜ |Ε} 4noz5"77w۶mvĬ,@ڨkOK^sR-䆹͕2cC:i}UBNRG'^I$uB,m'@&MR~ ݻWe˖3gՀߟ={⋶Orm+;]sڮߏ'%8RrQg<}j?:$e= ^#ާ' .דo4%2hR*tHc}yBN=C tӧOWkN^^… U^ﲋ/QڵkBOu>_M&_?;Ц=r}|>ZX!Wbsq?t|rUEFK/k]IQYuF(kNeeJn;7h u_לe˖F!Ą n{񉏿)homL8q觟~w?i&Nhyk$'>c/>M>i?KA;|Sgp-LҫvaN"+;l;Je'TWC:d2}M֬IPTvZʷQv$@Erh<{k?9){}2O5%! _ Ӌfk֤ V.t}+;I\ tGQN8tP^^xճ>k{Viƍ6fVTTh0!9@ ^TĜGJ.\>5G[C^)Ҳm'@m޼Y? ڄ`JQW ]I;sY0{SϫN$I+C+&%B c#WoP>{ƭKW} {9;lyyyNNNFF׮]+˲7ݻwk\N !nݚݭ[kꘚNhzsBQR*lڴiԩ ҥˍ7^pZZO+DaoI2{2U,o2 `)$u$ZٻɤH B. RDE]u-(. .(+Xi"{/1ΤBf&a&_9ss2y>ϓ}5p><ގo>P: ̣+[Z7~̍ZGmS{Wv+;vXͭD@4o{B؎N9sq|Nׯ7nV^5Mr"''g]wg}RSSw}>jfZj ؽ h|g3:goml«UYmY[rCa|xTsp8נUh#m'JK<mW^^K/EDD|^P[[kȲ;{l 66611ѫZnj:spM%&&.^ux1c 0MEyci5Ix7/Ԙs&v,&:Sl6}@+qۉhPINuv8>#:胎>Ekzpf Ԥ+W~^hQ+233-DLLLttSׯg_/ &4 Xpa˙ !+++c777|o.))ٴi3')7 q&ʠzly)}e}e |Wn(wRz\[Rqswr_VKG)ɧtv8Wѧ$SZB,^x}1RKN:9!IҬY^|E!ĺu,Y"IV...>쯿MnڴI y? W^-2/?>Kcǎ5w._sZׯ߰a2_|(gϞ111{$'~7m<foٲEtMM'~^s徭Eo/4{]M.o£;*XHRp%EӤ)nސ!CF/]~~Bf:T₴6l0B_85ky' 9jcG;wj㫯GGjwW?Fgwu&UvRU =FiX)݆$@l;2%%_t^=z"11qǎ_3???!!80/߲oݘ~HOOߵk"%%e޽WArHGFF6СCƱ,5Ӗ6<<\XN\t ”Oj]ˋUvFyj-+;5l;$vXDտ/3ϯҥK[Ě5k q|-q'NZ+߿cɉjw^gq^^^M42ZcAP'Tuir1(#'- I`S:=PZ8,Uvuۉfm'Ԃ|nXqq%K)S4G5V߱cLJ~ؚ5KKKy-9sEI{rrrrN|66mZh?9B.]X?e_T(ƙ=wCoB#] ރýiLX7˒d%6jltK [W@ᡖu9F{;uT\\r/89o<zݻw=zn?h"f~QRR27C^|mawWBg}89z=z\:@ 91jԨ?ڵk WN8ajuٲe64hmN 8+',86}R{WBMXg-&Ys)82XZB q]&ԸRqc7rn3IS=r)M\s5xԨQ+W<߫q㊊ s=z;kIIIٴig}}[jժaÆg6&'†AYSjk9rD UU]e믿Q#ɟ~;6'ܽA4k>Q# ol>Qg(=Jo88q5k233ϟkW|MuUUUCNww4 @k}k?߯,nB7~pO& !̓B5QC'˲ߐ!C~5kִ0߿\\… z}WN6mo =<'VCZ?Lo o<q`p}H.R[*Ue')(XrP+εH>%F^jŻubŊ'xb?ñcJJJ}}}7~n_~sڵk^MBu]-?y${ァ'WXo>ĠA|M[xk [O !({ݪM=veKe$IRd)-=;`E>͛O$^f,|0iҤvi#wBl=:W!ԔOF}Ӵ0.rC-N(xR[b$G(W m#9!t˗/OHHXpa߾}==={|o 뮻v޽yf<35%Y R !sAڗǓ\ g-Tcmv"0"3{˻i6:jZSc䞽Ct6 16p70װLL?FMEVo$y\L-L)IH+=b5d'PꪅJ2kroYt7ؿOOO^߽{޽{O<'/)z]n>n麞=b^I;c-&EJR٩Q @.|%+VظqcIIIWo.puu[~ᘘ>(ЙwGqYǍArZ47<֥_#{ J+L_;Kdt/8VS䯷.B9*Z9gF9jIc`OON?CÆ [zu֬Y3jԨ￿': O-]?!d6ΫL;^-NոӁV}te#Bt6$'233'L{)rUU_ׄ 233mq6\ 鹄_=($kwOmbKJ$ -HNL8?0tqq[===*+++>>~ժUfr5O+8rȤIJKmVtxdŽ*nn=j[JnzxBMRs EȲC$'?~7}O>dffƍ=:88% `ذa_n]VVO?lj{Eu,^MM& 㮣N'ojb„ܭ84Kfoޝ Qtfv8{6뮻ڶw߭%'Ҭp,8?M/;Hێw fSNûOw؝6t.I*8oe>m"ĹV$,CmQ۟cߣcߝcc',}!ǾGǾ;#GG~ v 9߶E ,=Vpȼ}+0]s|Wo42^v?}{hᎂt_+EO㹚QZ=8Jɢ %m'''< :eLnȲ.層7]L]L}whmfd?n3x+7/+IRK%{~z_ [/>ZY PϵVO',_xS$9_Q8= E|ڭNc=tR㟝g];r7o^``c=V\\l\GOj$p鋼+__G1?(2N #IOkmq i)Pr&DR3ΊJ[/;HN?~\$Iw}СC]]]]]] vwZZ6j٤INK_wYm2?us uҞ JՏ!E.rvjMröJJ-v$'8ϻ_G&۷)2'՗ rZ*;%V"Wv#zXTv!98{hMnO$16t^vmVɔUe'^p^$'O:N)7m|"P:m>.斱˽*;IfԌ}U;{⑜O}gU Nj_&BpN'mSɼ턢()V_vHխK?gBF=p636bVvrD鴐N9ڕ$;Eļ(5.j|bQزof_uqe'ggDo-ڛ_[ !hĶA3UU~O yiN3[v9zh|Lu~a̮tUv6PˬEꑜGENB4|"-<]r0 qަjlշ{vh #b2I֋O|Q뭿,ᦶ QRg-]P$'s)9t#FtE@G!p^ŻjU}51ܕV ŘBA6줜M55VGvغuk޽>+ι9dh/ X׹ƾ' ~k~ H}=VvmrB)`#9{nC=V?VkOPWt0wfؠ-,af[SȦY4!"9a0.`}sv2C $!p1_BܠT[}wWvruBHMJ}W_}l>sUWmٲ%--MQuԍhJ6bN.7[dk*}%2CAB6.s^flP٩g/mINؼyytҭ[^aaat@@]hS uJk\!]鶨$5tBZSi)]\ qqq WXQ^^~Qka͚5k֬i}bɉkÇ/YDZIt#_BRr&'gm&iI[*j{N`' N$v!DMMMffmy䑞={ڵOsΝ;w-,a6xy'L7+7_p,/+o-s&'9Ξ2eʞ={ &`N} 6u8p`Dzף 3  ^όP>{89n+oaʮg2?+Dyе"GEe5a0ފKt"333--O?B o=11Z[geemڴZeɉӧOQQQ{6}T?7VRzv/5TJ]>x*5ĺ[K1\rBԩ2yחvojk3 QvWҥK_zW^yEqُ>ʾwqGYYUVJ$kRkW\pɈLֹhag63}Le?~b?*ƖXw}G0kTEe'qss{oce 8pSO=?[|@V 91uTm|< rZXSW_inwq7IPO-dER`45NHHh"ݻgLLkVTTd6aɉ ?aKtΦJ nz)EH3.Pe}^NUy'% :8o"ZPmAr{O?qɓ{w:I-):{vUҴ̚;dJ<+;)V '0k2a0(g-t<=:yooMX退ArBΞ=[a0nƜ>[ Gf}/\ۭo:IbVhu+;IQHJ:t8 m"cǎkJ>$^111?(Ivr T U&-nu׎Zg~3Yܨ!kVv<<$@-TNvl۶86mZǞh7B_믻uv̙/#G|ߟk0:ƿ]07i = ;ZUu+6x7GgNm'RN:vk+VBz36:v~5?pڰ \8IEzϭ7҄hV IDAT}|UQ(gVsj" |K]'I)HT~UjirDk-٘t۟[;m S]TYYnذAQ!+ҫW/\ Jװk\ř;b\Ȣvt*gBZf!km*ǘUvUVvnv"Nt Rsݣ&Mn:EQdY~{챎>,~HNDE^\H(ZS矞K]bFJl^Rw$'9nnn%%%}pҽ,-T Os'a6_*sObN4ӴR²Q3dN^z)""?zNۗ.@RJ]1I=!7 5i[UCehoW=xTtAM~V؋^?=OZݻZB 4 III+Wo͛h" 7.}vixE x(0ӵJEݨݟzK[ ^?spqD;J<=0ĕ꬗Ct 9|zz4OqISN]j}'XxѧlN.iCqr5u/H2]敝ʬXIv4&I҂ f̘!Peٲe}"HN9t -7hzja:C^,\=MO()BfO `׌ON!;$@; 9R4\<V :+׌ Y~K4S>RKVkD6TUf 28HJJؓKs y8]i=- urf~.<˾\дS*;eR hJJJNױ'ځ&'TUmͽٳ0nܸ7x#77 ZxvamX)5/7o>lʾ_,z"AeU=dN] IN޽{= )9w}ww555̟?ڴiׯ?tPeeeNNΞ={|ɾ}nذC $97Cf4!vfP mNU1 .QI9D (..^dqKIIizͻG5YfZ`+>8cwȫJK,ڻ,1ށdVMŜc?, "p5+;5h;Qf[ke` gΜl 瞎=:RXX8~ILL\xq<cƌ0`UOD^zBBUV=B<\߻˘u}91Pe3 i^rw]&jpd^ zb $҅Yeep ںu^*..NII9y_~Y\\l7ot@… [L!/_^YY_7߼KJJ6m3 ! ?O?lw9'?A5"ù~<>Sn8򝖴x^Sa/ip&RZ_r)݄VY\_'`u1/NB~f B\Hm^mm>,K*;fem'RDO2gΜ_ݽ;HNYF=;ݻw?&Mrr2=cǎ<8<<{5_aƌcƌ/`!OѻJ~;sqZرf'k*fm'G%jHy Ye 5+Z+;"˲ߐ!C~5k֐@aɉ~Mϟ??& [l7t,7O߿g~B>w檈jd\Ζb!^7U{עWa#ip1}(Z ={J)k .j+%$$;Æ km8؄$'Om<{fٹs6ꫛ^`Cѣ;%t3BIR8s-ϥE,K+;\+uBl 9QTT###^P\\|!Xq5&<<\XWP\{V 6Mi|4t*BO|AejE=Rֶ7yۉDNSDut_ ٣=4|p//xzzj㒒k@d爘u2MQKAU.ӨĜo>! Φg0X٩qۉ,k \ 9㣍//fe !^/z0Ƽ*{2?fOr'\di)&XiAr"88X'''7oӦMkvK.;"E\V-ךG=zȑ#;MΟ??44 }{_5a.m|[|B)֯$u}Lv$'wuםw,{:].+Vطo(̠A|M[@Gл]<^67ⱰaZunO4tTZm'9GrBիW?ćeY&M"7pî]<==mrDCjZ_~t^1Q٭n>!xJTvRKKԼ\, \#9!t˗/OHHXpa߾}==={|o 뮻v޽yf]~cOJY%oM/s Ol/Ju'ɬSu*;={Tv@'8 ZbE+/>vXPP$I=jۛvl; (qDZ3j.\IiV٩N$I2t km'HNp#npә:sO LI7i>bj6pIܵH9X&j[Le !D 8>^vtؼ6{q}4/bj܏gZBm *cܚ`JOlt$'8 !s*qWXnk|#3hM yxNq%YIz4#9 k6>X +|]C ҍq71/lOILcc}쇟OIR w]=RP乪ym ƱZ\K~ @R͚;8pc#XhONp$ ] E8BmuA7m>(OH#M%Dyz  #\uu eB𸛨.L?76釗R~8 yЙWv*B!I5i;tl3#`;$'8(a^P겴߈'†i"Թ-4I}MǗ G8%I4o;Ar`z}G朝;G3>x0DJ;\?:[^qٞ]ưRz\ꢬN=V! hzEc@-,Z&Gwwݻwa(;;86GfbN,QE DPI4xBa;Ij؁y(/D^byYWjD/PI>15D8;;w֭OaZr%(twut$.n]MOz*;Be')(X֤ hB-v,R\֢[x5‡kDzu3'/SPVĒ$0o;h%4.v'ԓ[ eBUZx &kDm1^B6=cƕZ~f9*ڴ`AZTh/Z*j$!(?7:I~Sݴϧ6@'1]YyrB iBAIR PZ[ⱾTdz0 ]&6euJ ,7Sƒp`$'8Q7;hV٩,5ʖ;k袰'Ԩ<T+IJ,GD6%9ErcˮkaՏ|*巿y]B0i o')DK,ZAۉ\K kB* qmMC^$wU)8ciJR)(UOVXxFm'TNAMu 8*Ijk]e|մ[͚O1^ +;Zx`)$Lj!HNpX$ BԤx+\%ZNNR/NVve9iD˖.Q$'8fI8Ժ\tm|bYkS֬%"9E'uE5e\Aھ O*x.e*;Z\)y@)95e!#8s{/B~S͛O,Ko>$EUv+j..\\L vwy\I )=dKٿHU..!O7h>1؏UNQۉ$'HNpp"zw ~i]QGn⧭YQWv ‚ڪǶTEejl{e.\jHNp|mKjr:SԸ%JYBZ {KM':InڤrNYOlRi.=$'8q3dg-[S`<=Ȋ֬쾶a䟖bMZZIΦӊdKV.A$'8>OnSp=͜MxPӚ&w Yl|Bb_2I *;ŕZt\N4$'pHN+;UUmH3MxK-m|̟DYe +;flҲ&I|WXִv@r@0*pJ_4pg6?JNffO/*tEalQ:Ae TU~ƒ%&33s۶m-#+⍓yɟ|+`LkV%RcKGxկ[*m~IT3m]tdEEEfffZZڧ~%0 ~{bbkZnݜ9sZ@U_ǎ۶mK7,Ǔ:~S|]CpgZ!#_5DM} >9* 2V`PO[Xv)?WTVX(W7o~_{ŋ<{G}~[ nj~Ɨv裏ZpOYH<6h*ڟQ~K.Sɒ̝iߴrAYH5WvSOSrBbj/r-p˖-m[GU|`0'|r׮]3g 1bرnx|@ t,:! lܝ^yB2}{RUj[`s'xTk/JvBJ=mܹABBBVطoߡCiӦ-[L5{BEQ>6:(pgU&+眼'('u Gxqed6 K9p-"9:tq߶~m]d~h^Uй*NBD|EvrS魾leeeVVVZZڇ~aEQJ^.^K}<`ӽN˹Y_UՖ !$9*g?5~, ki_*ٛ_M~XuSqܣ-}|E-.8Ka.Zxk⭳ _RHBgכ|5߿vA ̘1C(ʲe,Y-66vĈ/13:uG!3KtRXm^\:ON!ۼG}Qcx5~@@X ׄ9u=8h#ZhI㭋Z\eޚ/(m5j][+Btu3u{w KĐ!Cs=!vg}w!9_ wQDREz7w 2/lRjt[jR9O'mMJ7~L[dMJJ-tmɱq^x80`ÇɬpI!9S3UT:WذgLzo[|BtMaXUk\hΝ<`m$'tjCfK B~s饅WUmHoTB3{f kVgھ&8K,1Lrorrr$^N-нgpw:V %Yj]j3դ@g)Ti^Z6sLkjWr۾&3gLN/p=\ 6l0Ǝ{eYpm8uM sw㸤&pޏú_-권#cKÂOnR^m:O*#Ɩ<[=Ƿ议{fjaqB-/3~_Woc֭{8%%wQTkn @ BP$ RT@ADxkyA+UJ'B IHHeSv3;3!l$Ӝ'gKAIQlp}Eh_Z WgԹSJ[5kV*]D(*d7U,x(^eܸqO'44k%111111!uGRt^IOK#܅-\G0qqqqWӧk֊/^ؐ=4/ (N32u8L(<\ɫ5ǧG\_fȸ1WSf┧AU9-Q;7Y [fPfD49ȝjF!wv활&-\²_ U'vv"/[7*bT?}B951rf%*Hij ('*u %-]Pmn0*k@Zs(8.RCJw0H@<'(++܅"RVnTWpeCq@/9829ƒs&+݆ÒYG]1\T>}t$!|0_473j[2@ 89"8k[lBHA!ii&҇';j!n -|G>kz>c3j?КPs~8<x9ԱSⰲ( e{S$yx'k'OE(})=GWh6'3L-vYM~Ba-~A6M)sʥNAJ|⥛Z!_6 i:Eo̓}Oc(8MgPJ˽})]-HwIN'ʴ5S捰Eh҈v$w5ZQ*CGs{ڊ:gz?F?j^\Z <Adr>VJyP͌:E*9Yx[&yN}'^vgK '^_Ӣkΐan!'*g}/Tԑ8Pig'NoKlK qR+S)gIg u<Ajs`J\(x( V>w!PTi,#Bqa( ] |58Op[-Dq[l P eՃռրA_GdIF:-_Q(Nԁ<Ûg+o7 ;Q4Pi7!dG~m>q8}?U\Ō;˧"xUgGWhh UM@غ;;,X;&LIU%aqSL qO2$ͣA7ZBWGk(FAq^a3)II :m !f6~n=^5Y9׾o2ق8Jn8Ad>QijUX 8=,vKWG\.o|CNPu 19P/7.],=BW Uӻχ7j 2>wܱRI+-WWn h uhcJ@CtVC!AYÜkߩSIuiZg'{Ma'j5 {d4p!(+kEd"+Ԃ@C `qx6wZ[|18;Zg&W!) 8gtrٍ?A Fy5\elt}ک8,HVQ[Lc@=s[-DZ2 FN6qhhIBڹoA{ ϪsT/3}b5l/R'{OwQ{ Phc:Y]k;1vfPe9'K21"t?դ [GL# ̻qlufԉ0X1NNNh:(N4Nىgso_JM;TQʼn&uv{s萩AV5)>JФuĄc F.pY!"aTr vח4iTWKb'Դ!May4xr4<Ԙ.UlT:(X?vF֍. @h>M,ɩY>eN쇼$}%nU5x!J7iKoI 6ihDZ'd5M' 4Lىr:{{(<{*k~p5N!NfvW_L:f,x\.{eUQ? %_y(N.ê8<ɐB%3wq+ڛiSV)9 B#d-OPVSv ?0 xSy+,Sd ;!Ǫ2>="t_kq$ܨ"eMcF3;z/ Vpkʵ|3$Pv9 >ɼ\v4{Mx8`a(Bh&|\E^_S]V{ jR?I)zknqW8Rn N:·g>މKvv*oI EzK'KGGk^U>m>6rgGM&&j1Crڹ8,Lݩ;s N\KYe2U~x}e'I#ܹܱC^M(NEQ:thK]x_ٳRT*={|Wϟ?ox2cV6cCaTA~% i֞F? bK- ]y4r`XܞLMF1gFJ#C g JFoijUX\dO?Gwpi=~eʼn֣V322tQQQBN:U"nTTxǏ/.....>vؓO>).ti1l6:\"*NҡKⰺF ;;]6YݶF%Qq\aR^['0et@ݻW^ӧ\.W*~~~Fccc:A6DIIIAwܵkffG}{#Fۏ9222rٲeY͛ueXNqORމc*В4gȠL##cs|BA Law^I&Y&...??_ժTcǎ}' 2d˗]Jܰ05'Zյ+|B""">Z!-[Nj; mNى19; 9ѼNńnݺ 4iC  EGGw q.oT=#yOrlE!ݒX#'9-Ĉ_? y R޾fZ OB5x_O8Ǐ߽{wKKKooÇϙ3g޽gΜ&ph" nTA~DZcǶ*FDiaqBo ZtډaN ?׭" [} /񧪒{T2G۶XEU-J.!NQ!SgMlނt`l4igx_^RBk.wwf4ȑ#۷oرyW<}ٳmvΝ~C'Oͻ 8zʼn>h̘1]t133 [^^^b?4|!qBiX &~.E}"@Zh=[ڟ oa+0Ʊՙ[ Œ+psO(Kցt˖- OxuoAXx1˲;=c ooo++~-Z(11gMXv-D+۷oJMM:zkk׮:Won-NHLCccqVERjEuqXJмee p?{Vm\LBرhVTTu dnnnK.5J;ܝ;wtVVV#Fh`fh*=M IDATh ==ٗh9'Z!dȑ;wߝ ={OpwpO XZ{Hv~d1&̮e}Xӽ drEU?Vڥj/fĔ놔Fرl ;6Z)@^ :p/}^hڎZxt^h4m4Y.]tʼn%KXZZ6<(??f_N,N=ISw[:-'Z 0=!_ypΠAn:vXBHBBѣGů?=X[[?x}t; FD\.wss3ڄ yyy !{L ô91'MMY͝nVҽnB>MY[85򿦅rs6Eh*C+䛺˛^-~FP} tE= (#x:*--U t8N!EQ2Y"77҇F)))HjKe2Y(C˓d~J!Kma$z/-++vrr/5#` cǎ=q!$!!!88ヒ0={ ϼy Dݩۭ7|7ltژ1c""">Lٻw8aaa>TVV&Na"%~OݹANm$ 6לo>e3iii}g}0f̘cǎ=yJk^= 4Hw%58@X ul.?+x~KaA$+᫚L">otZ,TCQ뺍}O,Y65-ݥD!QvoĈgΜ7o۶_twwׯƍV'>>~555p}H6D;3 qW[1cNqj #V߹1!+ijU]. ^PG$-`%O6n4=ŝ<,Ν?ԥK>ݻ?>::Dihگ:44a] @(N;\67iQnn[novhL39;k|K0kT51ߥ͹j~+;F.W ۓir !hbϵ0CE~֮]_9R.<#G{._oꞙppp`hssݹu֖ {ϟ7o^+?)ivSk&O72ƷiM)I᩺ p8f/b--6Ul71[ސw*ūxrwgGzObѴde|cAN)9n$tt['a0[G-EQTppppp;SQQqM8n,.^(Wr[ou!12r_~EnІPh ׯ7jxbpppo޼;ӧ4>bA$=ܥA8qDS: CɆO;_fIL^Ue&-7E6{RC(*ֽn^/{Ua]% =H8qĉC}gΜ}ߟ1cc"O?6-+Vxht]?0rH_~֛}uvv&$''7~̙3ɄWW~uڧ0Ig'[W/e웮^-~O!&B m.[#>QqMZ0|K>p֒&ЁdGEE\R)++[ b ]ea &''De[l :uҥxÆ ͌ݹs'!r/4=c %AX|x5c@qظ t4UV\(LA otpAŭ U\niA-hvlȘܦ-dn.?r!TV$T*@{tOo=aw}wٺٳg}鯾jРA׮] Ǎwʕ5kָ6{MS۾dҥS<8SN8`-Sz-V9Ǐ_bE[ +V8r!DP^c> xV<ΪHJ-،E||F45Ӆm-)$Uq!Eln{Maj5 {d4iJi+XZCE¦RhsC mĭ&we˖<B7mڴ`R(N9s愆WZWQQQVVv7|_~+V<ϛo;^l3>>ZvǏo`1c߿aEEE;vO|n#!''GP89ɭe 0 M\z^wlovTM50.?WSFs"]Dz6W<^V-qcbDA1ßqo:|Uv҂O #TRRR]] q(LTvv65Z]\\T*y^譎L&됿^d2tϣs/i\OqXq便UUU...>)))6m"({1͛7U]|Ğ;_ׄ OO}ONNڵ+!{NN[QQѥK|BH=Юt-GGSN-YoO<ӧLBd2ٟ9w&,Z(22: 0ɶ%+EǚٳVST8;2s #MIsd'fv ewFM<>@&?#'K6;/ FFq%@yuO9-Y7qnnʕ+u3fho߮;2dz:@hϸ=|}},Ydɒ,2pe: R)r_/`X6|փhwK~Y7xMGm'P=|U^Bvskn25"ᏫOH9U,`:LxLx^hMAFu}޼y֭#lڴIo޾7nx駋 !C=zt.V/^;yO>1>I0"')sX֪b=1JnXME_̣MT*潮P|Xw͚5kMzz ELLLLL'8mmis~?fvvhoPW{}}dR*辭DKLEnq~˲$-QVgiio߾ÇeeeV0aR2d?/V&JzTc*P0&3j$qx9/U^7E89uWnՔ'k^`D!S$M4Mb'3;{oipMji%Ws>RUPZbLZRcРA:u=zxm۶yzz6pOŋf1hF)UFg5!>(fA*5a;Г9ⸯ3;hfG1ӜS n0e (Ānh[E(o6&&&55&??ڵk[l?* FP!ፒ3yURa>hk% ͸5Ube"Ve4T)zkzH]٧X<_& #F[XP00Ig'd5|8:Rf e\yH?QQo%g(j] Of,b.Bw OI(}%wc& m j7*@FemnO<'"V_kENB:.Vg;T7EȪ.C/#A p1\1e m xUZvkYyM8wwoA2.}tmxMU.B9ə|KJ;5oX`irE= W`FF0 F.7ZЦP0a(.[e>򾝲rN )8xwl0oyS9m5I[cLw%IU%aqS \A6q*+D?m$ m pbnt*kRyLYuHy]YBQ|ztPr 7Iym IHSv_,6|xE8vLcg S&Ds[wл2b$a! {jTiBzB*9 |L-rI}"jT|d\EA)w}Da(V SycCatq:;(鷼 Kwi|\d;uC:ܞYIVfO9Gl3on!]P2zjP0[Kopqx6w3~?%[!OyOLy]k!T_b#yB ~kQm|hHV3:a CNlms BQO56S@q$4U=4x5E%a]ԪTBقyߏrSHO䏔pg(y (7#;?nr:.e"ӿ:!#ݲsCqM1YCwv<^Da)VSBș| %2for$xhWQ!ӝg&tM7'  1V\j YB{GD/9 f7k!4M3yk^f?_or:ݣlw>;rY8`ZNn͝z}_ܤ.O& yՋ~^U!>MM!ݩb';b̠piD{ m,P0`vf0*tDG뽟Q.*[EX(dfMd_}1V9L"Y UU)R㒵uvuk~!S.&ZP] ѝ}})ů *"yՓX2u-iV|O13o[&7ݨ́r :ee-aPsq 'JKK/^4h5@S 0yJttV+l}F#~exM{Wrיw}/ IUgwHkhf[;K; '_=Pk>rtY@fbDf7LVSS)Fib(N7+.vm~.]_|Ҿ4X]90׼v/ 'B7]

>HiϜCh3>c3W7ְ(FAqy.Vg_+:&iX=鬳LiԷcti~9Bʴ;BBIb(GaoxK'KGGF=dfJ4I{$ Oz)N!='ZPg7& w;Eeo4M2a#7yN= EwU_67KN܆\{@sfϻ^(B2T(>J /#{m$>Hq1ELH% oQ6a*$i %߷L'4gTs! IDATQY[0Zfy7]Gld=PwvzA!c.˸U'*LcGp&VZYi4-Y8vz!;d@s8z.6G)CAMEzBМ[ Ki\^}NJ&MiK=ƚьɭWQir>V~Jj@BqUI;;q{66LF6Z-^~[25O҄ ISiwq~{|zd|܆N[Lً]TU.Uh'ZU;3Cg'͘wM24^g3 ov⎐dw;{ TpIFgQv9 ~q!?ݰԘ0W0dݟIŧna>rT iPSuruh ߧTqr3XdGэJxudajgQn N:›v 0MI ©mmL̬}&pz})B7_|;b&Ohn]6G@XS/4<7; 8U>mW;L( `7ݪ8܆ԇf:&p4.|Z@? LOO+S̬+%ZYtp_٤ߦ @xYV׆4wRSqJǤ2YTBZ9ѥL6aӤnvB[؊N8:3a̰ǥ܅ @tخŮ;h VGT9UIZ}ykMMt^VFʩ/4pl$_$QA{;8ܬS[yk|F2~{[n*kOnO҅%㦰<29U\v~ijLPgϳ[V'F~[bum!@ȗYdIbe;s5l=moy;;Uk/ن4Ȑqv^cHĞ/b$[rf4ǘ]I; '_=P׽/7,=(42_ ZP.VRԄ H;x)UwG 2kq0tv-\z;]:Zгj44H }1UBFzɭ4x8}ܕ}*W>s-D@8m+fjEr4]O =[Smƌ2Q^.81a$Qn1s-YtpI}yLUc(j]oxK'KGG:OM.q=4O'Odqu ]kGeuΗ=[?vF>207ؔ$(NIb۶m`Px zamu_eR$VpKoTz/vYuE' nUFemjdZQvijVB%$ydfc >jT|d\EarQ? %u3ړ~M8~ͤ Gm~1avpkK /D/ 8YV՝j\v:+ }Z!'.szpm0w;[(?p9RN9^FeV~Ը[ub_ ޝFU ̾d&IH H(ԂJUpb{[b[ֺV-jQPV%*HB@}%Ϝs $s+9Cǜ)|mi.wb^xJK!GԺ۱B^y of-޷ӏzػEd 7;+VuVu}>ߖ-[~82. @56WݲqnYi&EGxޕdu}L57&w1s,.q+޴G)Iuǿ;dwmC͞f!4+4> X*UQUuhNԪTyͳ5ozW'|Af'"ՁOwKjee›Kʪ,3xYz7 27EKfj7>x}bx=ip 8.\.[{ew%KT*9o༊:Ovxַ˭#p?Q]8٪4ŵHwzF=.cceuڄy&T @Xy3G?/FF?8mo`yp?[< 4{=u/->/:_ "9d_n;qx*S1bŊ_!cǎlO>19,:JUU=װ&S9b}dKgk-nHqVWvp0-.{e;-QwM4*+E1/޴ȐꟜ#C8 880W݆q` !A{n7B(::zѢEWt| @xi赹օӴg!Q>iN(lwIse>wv}2؏wV? =O4&3x]w'N JL}7!g4\o6g[iӦM~,{F@gO3TGx *-?bKD_q[4fN\iWi sP"}sKi-!L9וS)qsϩ%՟!kxLBZ}o`XBL/1`T鵹?䨿67?aDGxB#{WbYL9#ͼ;>oFOߵD`H[yo~3)L]{'_2z#ZYƣ|C-=$TZ:⧾P[6{]-\ ąIy̘1cĉNBmڴ' pJJJ;w @"h4mjkv7BI|+j#)pu:1{:7EB@4?kBw<ſ֎--aQ t |ke`NK`q4l&3Ks[ l F}T m8D(c|Bo[t;p&{뭷Rq\ IrjM53䲑{>]2ce}G-)t[66W9g^BҲ_N{+A0ySz.dmںKsog͡>x K~ΰ (jkk97߄8qpPFi;FלmD[]mOaZ]mm]AsVzȴuF2&7|isne}v\xz'qʏĚ!};V=x#UplVƐ 4yiӦ?--[A@eee͘1clY@W**K͉ZPt~oqoe~狠ɚI[Y k&-¦;4d{K7;|]mkR} O8%[Oa6jJB|%4!J™^:8X.\FشioM8q0̺|MB| 'j;Lˏ"QK#Uk3bRk_]aN=}Ȏx7N.eܶ[(]*}{s=h!X&G y[m׮]šN`8{:JU잭?6װ&S͎P=Yt:[3.%X$Na:龮p0c8Qw'eD+!K<뼶 {A*7 >"u_y?ԩSLrQq0Lksm iKGltO:6-:`It&E< uos/a2MJ㿰=`b8}﷬%naލJj(>ׂʏw` xu]`ƍ?Xhžb`zzqnا 8w^ >S_;ϰ&S/ᝊ'w{3kWr7%8$qW7o!L1w'"C?xO7?XG[,纪[Gef^".Bzx?Bo~P~3 2=\ee%?W /K3#ͤ?5z&]wK+H1+G,|S]ּ'z[]:?)lNʞ}y of޷ӏz[pr*38B?{mD$:+,, ܤo~vz+W6mžbtt 7'0{ &Aƨ4>^&)3f<|ASS/K&辆#"gwy'pLYY%? @'+[G|xL֑ôO|BAkdyiٿS1ݮuGW?MdcBԝ((K1\ԤgO*>{0ZLMђO7|~'& yۯ0HT;cr7xSK?s B'w܃LWqh  "Fi3Uc|ˏR6=Z㨶f"^w礵/?]9z^j3To{ު*hX^,aJLM7B{5YRg|DZ28,IrjMnaL]r%=L.&Wn󌽖-n/91{^xqEih̄=iٿM+D!蟧P󣂷)]YSvLqYWkV{ ay) ~Rq}aG}>7BRxSȣZKytuebq(JٍS 5K~Vnu=yiup?wyibi ֽnDa޷M[roǘ J2='/vr[QyjX7+y_ #\V̫7uVB >I.qѢX*UQQuhNԪTfVoqkye-) gQP8t =O7{K}3Eg(#9r\׭*? kI'**z!;RBFPyHz28!Tgk1U[͎xL{#yi[YEju;zM]#&_-:e90&mxE*R#zBS͏#]ڪOkR} 4Yi)zeE [V;eN -{bϬni1ި“UӑqHmJj7bac'y-Z'o\&mnji`0OWbDAp?yBO>0zmua4mi4;bO:'j_}N=>}Ζ(꿿[To=<&=8Y&)7,=ƭٺ_kA rjpJymGG]*}UQsBų{  =@ NY),A}vwUi3鹩?FyҴOgO3#c2пJmzwTm~{ ]nb)z‡y7*[w\7um >d{}1*lwހ{Q@ Ne駲U/K3#ͤhs Իvn[R>>}8!"sg/o 9E?oS:TrLB acǿ\yLgy u1üUA}{l۳zK *#]0cTfvş20@ EcTnm^`\Tb!$T[~ĖZ)H5WW}sFJDױo=qrL~ Mn &M9Rl]{/7{b- l u՟p֎Lv#QiOO/[\D9&SY7ϰk~UBI0# Cvţ;'?{xynLfQ7P$oͫsk_|t5O!rY:O*+ [V~YٹC>SB/[w9' N%0*15 5Zfʭj{j~ M2|wջE3Ŋc10Jc)("X`NMi})O>WUڸnIkBmi[XQw7v CrAeşm}X-301q.WW**J͉ZЌ4ʑ-{,3Z^ht-)&KO'mo=+Vv9dxaԓNny(1XVV]B |O7|W''ʮ>'}!? "95a<wz9cC#/KPg5V7r+Wn垨u.JS\͎tw45tjLiUo;'~uz(x?QxoAOe?iT$ /NӿJo![dGyځ:Z?]R_iӟDs~RIf!KzgC:[M՟f):힄LЫPٹN y}GϘEވuK\|G_`+gkd*cd#Ӻӳuʷg]=˺hSL'gmO :sfOEǰq*x5oh%?[u^ֿ4OwҢK ue]}Vn159_/ٟIRP, [  8e^n]`fO)}3>˟(zx:dxa_Y!՛kE//զ7N*,9Q4;;;/U''{86>I9n}$ 0_%10z,n4R 𰫽qY'U/N:y+ xjnfδ nBdW|!N.J/Ml;j副MZ=]L͟ύBW P*"Hsp$6ִԦ=앷;w\vsh(BɔKc2u |/Vbm,x-q|"}\*>t#ckZKfsUUBsp.MfyG1(JIIo\8Lر###?X%!2,&&f2*|:4->v|vyEF 4Œx9vf^? w~7펓* -Zf  e3K"wP [Og40}59 )S%]3f?4mϷV86dqH-C%D8Z})drz\RtE<8KTndt5TQy/eF^*^0LllXdTD{Vjc=#pTtI}F不O~뭷B2׿XB\.qI("&wj(Jhã> *-T+%w?R10SW'.pY_nghzf=fj*5`#ï@gnyzbݟ5\ASa֎e! sO-zbCGKv\O7|CIF1gJcj4YApb^Mw=g.3)OT*ʱ`e@eDM3 .1+3Nvom>>F4,=QMS1N]~jb7d.'xO5o i,u":r&6\V?Cg_8gϩr^STr)y"3%Ȑ^m8%u =.ѱCIc=or44jR$?}u;XI`Y' euXIĸ  N(rm+3Ut[F )yb))Ma:CWx}M*D\L;Z6xyg~:K|;B\CdѢ4eȖ? xp{w/Ky jj-5JSQL3t'w~뜮gbEQI \C48Q!&B'~'@bqB N @ℨIAAb=:MqTߑ-~n]{'pf<(V6qq^ޟ(^CLOg+0N f)2;l%-Ɲ>ap %*>OxQ4;?*<%T:BE%wW;uyEXmHz.H{+<)ϓz>Q)M? 8!v'$@;qB Nt'DMz *IΑz՞PKx&wKHVPc=tƌr7oUee2tPq!d5[O؆xL](pr^STg[.hf~TCzFvr/ [}&VǜJQTJ*=gH{ xSPǬLV\'ރ}&RxTϭoqc0VޒŸ(O@/kID5 q!DcXa;9Owu#Q1"-#Owk蛖[;vrMXFBMIQǝ>_h8l9dQF%ɇ&KB) ߐ塐-<.>0RU'~'@bqB N @ℨEÈq"@t\#I?&)=e)if2Z=4>9?…& OulQ24mLXKS3u։,v/۬Oi l&qVoHGq&|s $=TQr͙1TF&3g.V( Mn8pB'~'@bqB N @ℨEù(SE/KߛQeD PK}&(v ~YӪØj?“!W>^*(jxPWH&WsKŤX۶K<5~CQSHΟ;tx!Ի_)NP&(t[jhF71Dq beTR2:Y? 8!v'$@;qB Nt'D-.$Nh\b`93n61s/6w|J稙+K 9S(mB0O\](Lԡ~4-d6m\CMù{-dsF #/1XwuD5MT[*#=IJmXp ǫΝ($qB NH 8!v'$ℨAH  NZ$?\T LXHQP-n{։Zܽ^a6^rZ]})L& {_ǖ]d1.Q` 5HEcA #Iq%]֓.sYjXeBF߂UEݗ8ԐotBh-Ʋ\UVYs+##'ϢI 8!'$Aq ='@8!jpp q"@Qq2q Γ=fo>) (UAdDBY=]:T|'ir.RXT9Pǐ'@?eƕޭeZZ$U.KM7j_\J}#ӏa$aR!:鲄m7u}hdSF2*+yDr ǫG\A%$' ɟA;qB N 8!j'qD: '8CiL=Z¶nKWW\0nl$hܭ7U~ōDSxM>"v#9mewH}=_qh6c&R)+rRGJ^疞֫i@ퟛegƤ CZr8cUBuB'~'@bqB N @ℨECX℟z4"Er {ٽNje9"䂚Vn^uDQ[ʈWMQ]" r hIsr&e9(Bx7 [ϡѺROKb2M~ki -WGSLΥgE ,]8V%TW"JLI 8!'$Aq ='@8!jp8Hprnw Fa[&wKHQP3"M!55#~5wyWcACJegƪ޲xUf*c4Fufq'-!ؘ̌[)MsFDBԜҶ#7(tFi"EL,v,vBTQo;'](fAuDUjE!ɓ@?bqB NH 8!'D @z NHqB"a4℟zfubY\v5,RxTϭkHaH1bSN\[dž'oZq¼'Y3ɨH.֑f7J;U5I'|Bڛ}Їi>SݣMdQDŽCL4&,;; MfγiXS!,Sٹt,$=4Qj5I 8!'$Aqh IDAT ='@8!jp0zq" NFPog&R<讲s 'tY Kg'i./kyyOvQ!]:Stʓ&F/qYRuqW%Ly#]^uhRqϩdʥ1w' ?ZQQ Q(Tx&"t EA+X.[2 N 8!'@58" Q+'4dmIr k%GPͳc$5/k~8᧗I\6;~oȉy TmAx9\B ˆ:7Ki: LdL_\7ha""n[}_Ö8wB a/X? Rɐo~nj~GX$ Xűqa؂8!v'$@;qB Nt'D-XHc>0D^/)i`"ńKm'bVRlPvA>v#/hCCZrRwk$( N 8!'@58" Q+')V$U4sa)3)6uxtC 'v3#/ 2$8w:ā8wBމj|_bb*}C=/:kb54K! C;C, j1ZAqB NH Q8 AH8'q"@t\#I?cm)i{'biS~25j yV{͗Mv:uS5r`Mynan#,vXPi7_DD ̏J~(@z]{Վc]^TubBHyS&]gO1pAqB NH Q8 AH8oqc%KUʨz`N ջ-Z=^!SEӃ eڂN29jM#lU_4j0߰W:ZKcZ BpgY(4SXq^'@bqB N @ℨEZGL8ߒΓ=fonDlmv_*4IƒVq=x?Q|j5S?]..xNagꩅ'CYGIHI!d!Ha%7)j)5BFѳu $ɔU>D#{֩h!5Zz4:8GJ>>TO%`>,m'@bqB N @ℨE8~+3Utu"Kͮz0AIɩ xU梴U%-cfOG.7ݚ5Ch6䂚 j~JtzѰBY8Ri4VV8F0BS)1"EF&R MRGxD:M:k\|1UDQxD4S?Q@;qB N 8!j'qD: JӔd~jO-~f/B(W3WWeOX4s^(k]X*Ef1K]]JJƪqB NH 8!v'$ℨAH  NZ$?H)Nɨ٣ʩZ7 zFw7Ȩ am3tg$N>;GPn\5_HD+S8[^/O!D&3q\P\)U|xϵ~dq,TL8y։/e"ň'JSJ -{?!-[]eXVBbL#'4VAqB NH Q8 AH8p@gbX|y8U6-Jf&RHY&pO0/1hejۃzygUoYYL}1}I"hl57 h!Y{̤΅2DcDх"EGK[\.8 LShWR{|.K[AqB NH Q8 AH88cpyD:?Op64Q3K M2ܐ՟(۾m}KFΛ(5%UT1I yBC b.~"E"%ɔKc2q |OzkN"ib±qنܷ| QۅfGZ 8!'$Aq ='@8!jpqHqo"VFջ)6{B6^D O2,J[% >Yʻ}VN$1fqրdMεN 9hCn˱RHu+j9b"B).$*GgKpd7y>75]1* $YߣRHW'M@Z}݆RF#Q@;qB N 8!j'qD: 'Bh\b`93┓>1~f"Ŷ/Bhf/2Z=4>9?…$ {۾-JF(qdztXC,dIS(3z71N HueQNf ph`7trCgNۺ;gþW(\dI-۴ǒ7igrdMΤ3idf6[84N7IcɎˋlQ-S%"ERľ/@QD8}^y usZc !{Na# w]\RPd:{U~4$w  pB0tN `80X şl׵ٙo_N9{-;VZ':?Ѱ.Ǒ'}f:~AkfbSPh$pq+\P#Fx7ZI7{sMf"6Hƿ}[ U+yƾ+u,a.$$&AkkdTa8c≯B.D2 Mݙua8Q0Pp,{TAÉJ `8Q0@a8QѪÉt,pMw%hJe'*0 `Bw;.L(0tN:VDpB0hN  T0hpD1'u-zv.,Y0HٙRa굷a ۾JlPYQYKnέxAmefbbiPL^_^A)1HBglvG _3ǩPVYQGr~ѩ+DG ]AHD2>IDDpBQ '**DEp!>NjDE '6Eː^ m xJu ٗsI:-k?%3񏔵^xWF5bbWNjDE ' vwADOɼt,8f_f@g<N-FD_%Lť}e/l61ǍMǙ7wf-sJ0K"K\b28:LrQ0jbA OGFV Rt9Hf6u$K(@/B[:vF46o(Der\lÉJ `8NT: 'TÉBH}0@ÉV N=+^gdZI2HA2Kef`Nrچns|Yh\K%Dc9d{?=>?}{áS,شu M#NZtPK댅( "=WލBBO7HM R1:aW> u". ]{lk^(@\"&`n~1tN*DpB0hN  T0hp=~u f<u5{:,Xnʯ(\PsۚZpT?ۭl:棢p9K]<ߟ[>meyCHv ]0Qf`$ɀGgכm>) ^(ΟB pB0tN `80gzsuoԺ4DZR|6=k/c j:dzmkO,Ç ]a>sgY9i lwm}FcaQq%'t6]=.=Hc'}Û @/RL[+)2}-zPS4|JxFַv9<϶~oHq ŏ|A [RgDrp9od Sgi[V`!P!pxoH౴a8N pa8RL*;_yR'rWHdaYV}> D"Ţ3yEQdr@<)*ɗS~8{a6;^o"?ޮmnn$d2n{SBXd`,|z8v03[cm:k;akֲ,B8s z:JgsEI! Y՗c/D(j۟s{6<形1_^ܺ=lۚr9^lf=}8]rTñ4͆al4y7K9S;V8;rWTϱd2L/w4/z,Ftr8c+W^|E// DE?nɉđ>0VnY ߻=$ )n} a,Km6~qЧsɑ^{ #w }VM^/Դ ١c=F(ӛXT uݮ_oYN_dB^=Hzٍ)iM_t{mMKRr&zwgs's5cr2ͭ@Q<(keazcY uc)NNT:Pt8989Qpr!>89ė/wtqqQqXM è'd2h4j6Uy&(㦈D_Z}ZRh9#]&>3h4ɸ\;Dss3cd*mа^o XC$%J?Jҳqz)JV 䰙hho8H|Aſ=Jhf4ySQG3r][]Y-7v&&OUñ4F"ɤɉReUyAKoqq8NVϱh4urbZX,NTRʕ+?я''B*vNz뭷/}(`y-@\.ǍFNw?QqZr?h>)D33c5fwڎ{aLߋ*ǐN'~iLݵv/wv]SԺ?]z_4@^w5Gލù$dog@2V&r,1Ham:Z7NGGԥ {%0p} Smm[* `8Q0P '*!pU; 'D( Rˢ,>HgA i'nAsw P F fXz0Tlw%J.8PӃ&8hʒ2)v:w~fy +yN@ҡ_{ǹ# D#o 3S~pVU`8N pa8R 'PpmqNTDn^I` p8gӽ83|g. ,h(` gnq55,WXj2NNz,Ftr8c+W^|Ep!"NjDE@ 'T ,$C`D@l4K:)'䟩wD{?  LҵxNM;O!Iy?Nߎ`>j:rG]gݚm{OO]  MSym;}-}|ݦ@'3L垎 QMP |.g/|7V`xg:?lWRL(ذry _"q2Limp,pB0P '**DEp!>NjDE@ 'TWAdPz-(&6)UG=)!] *c7ӧmi=:>B/$3r{8Zs/{ C߸v>ϕ5-Y:Ѻ]꒍(f!ebݓ;7vtvyp,pB0P '**DEp!>NjDE@ 'T` jD/NjDE@ 'T`SԦx" KS51c tNN] OGόEN2ym9uMhJ9&@,X8AS\ ϥ)C ]1ܼ? ӱ_ґ wi5s ߐ$efJRF.Hxt0L Yp,pB0P '**DEp!>NjDE@ 'T.E$z2$ JDun ?>L0X9 i~6yrXd`(VB vvӲr.ADĽH2%[>^R?>zN>NeC'BW߉.E6ϴ^vab26LMvamLG7Cn+YO5K1P 'TÉJ `8Q0@a8QѪ$  6ӡeHw q ]W$П  \ ߠUS@o}'ҁ2Xk}Fe_ޯwrk(\m{min 'VdдOLonA阣S&v(*W.+C0mQG5K1P 'TÉJ `8Q0@a8QѪ$ ڒt" *(7ӡοrNi/P H>>і0XJ9P]r!s}dq黡Se<0H!?gmzU[i/$'C3gb2b$Rokգ_A>etXWLLs+avKc)* `8Q0P '*!pU; '*Z5b8wZV#A~q,Z@36s[8e>pmn[=WNG!^< kȴ_ ]iA7\, faa^"4rhzm?fm8h>h[ݡ(7/ )Cta6 L[;x;Zp,pB0P '**DEp!>NjDE@ 'T]PK͐t"  ethKx)oCN*TO:*Coťky}FS'"eeIqJwķ-)n:K##z[/ɸcɄ2> + [knôzp,pB0P '**DEp!>NjDE@ 'T_P+th I♈91K0nn'IJh\rZ5 C;mX/Ua=e|, 3M>s ~OĴp.^}1GmfV EQ(C8xzôynb2\ R 'T pa8NT4 'BvNTj8 pB%Qt" :(.,0߃hnq2z0T>m-gl>T ;,/nt‚Ql}Y`1Y5>btfw;կiݠ21L+c# nAo\n"c)* `8Q0P '*!pU; '*Z5b8[Z{QD@<GwhY?Eq}ڧ%j,ᶛʴw90)t04XXn9ߘ7bS20o=l},gI2|Dhבkwh$)3S2rFH[vO'vNc)*Ew/`8Q0P '*!pU; '*Z5b8[TZ.,zP)4\Qp4MqOe*]_<9>=HIMp[ G\[cy=MҢgSzj.1SS Sail7aCxhf$qPC0N1rIV&A(bҴf۽̗S)0P-x,TAÉJ `8Q0@a8QѪ$ 2}#$.sٍKr cvKx%Xy[$pO{,|z8|*)wi*Z,=:VN` CZv9mFo#domxoT6~22{<4l֦Ö5TDQrYRƆi,Li0NЬߜQY0P|,ȱnpa8NT4 'BvNTj8 pB*pR.,t6*m8Mxs ؽSs.G CQZb,ͺЧf|XT1_r}Ak1@H~9|vBPa׮9nth}m)regZZ6ӵԸz![*P)ۣ jNT: 'TÉBH}0@ÉV 'N@]P [ax@<ƟL{-C Cd*mа^|UA,&[s5?_NΕThMi kYNOgf6}tN^V&Ǖ!ظ;PigN@K7E 0tN `8N1Pʽ&S8Nē!i0zrG]ojwhG110 ;9= Ӎ_TZ5;v:t"C}CI%H@9VsaSm)y%)vtxhtM;\NjDE@ 'T@Ԧ3Ax@<ewh;#vے2_\(Ӿ|#)m\=%|a.݉GY+̈PƔ 6ߔHZ"Re }ovۺz6xGaɤab\V.A6ᦈfs.34_i"y-04Yv}ZT*@.ЬZ]jRDR^y9=GmRz)8:fﱆc;r%)K4ҡ}ܩ;@)etHD#E֏'Hvd]l.6|B!BU@''*Z5NN@U/aĒx>C%QYfn^XX(KمTlJlJ\4vXnzJlyM䝡b}%;be=#o2~2dL4qJS& C%elXyett3;=ޏS TձT}[''T''*NN GmGjBG,^ krjFUP<^ "9EF'CɐV= IDAT{F8[z—`$+pӶi =س'pgx+@hMDle2̿Ӟ)2"%''&C܇^2|"4s2:;X*S |z{xAc8Er2: XDQ)ef ~ fgڽLtFSC!B!VN Bخco>ߤ]E w5SC{*-jW3v<s.V"%EfW}amk| työܷ+rhgp6-ؐc=Ču:y3H/)D\ATpcjqo%^\;+֡V'B3'B3Щs4u42@@nߧ+ʕ PYHX~xi0]"B!R 'B!twXtx" K:}i1b*Cۼ>eJ&*2\j18|~P> xBˤCcO|rJξМމ[ޗȺ  ;l)aC۫şrbO7ߘ=_X:R&:]L+#C4_CyIW&/cC{TB!B[B!V=fכuaObn?_ݡ0O9c.SNT9*صYEj_B9y򍖟=jtyB=Pώ.N)B6Ш,䍑|LNtOJ>Inb߳O OqDKwh4$KC5zٽٽ>P߼<2х9(vFáq ^`[oӽXm%^)B!BB!;O>W\o)\(C۟S^Ͻ82;ϸzqeuV'?^*R ]I6 ֽ9 zCrI=YNs `t^a)ĦJ>LQ~ڱ7~c󾷈DtXL@7ٛ;44q M34PGad3$.Sq2Lim5v #B!P5p!BC; *-I'⯂bHNU;|F#6^qYE64M O>uYY \&oz+ٌޜo@ ͚3 zJdp/a1zqiEs>jQPChb{AQk321NgmeI6a:\5"B!N Bhp 4_ldz:?RmKs\1P;rYLPEῒQl0ζ_5UX5˚OG(vb;܋ >56 'L)(MQ*g#C| lw;rRHuma[Vxh8L+Of@:\\?'qb{ X !B!Э0@!Жe;F;I\28dz" _#;.ᰍK,L]MGdS|HQmpOmy^Oh_~s^&,=2I?N¬أD/2eۡG^gju+N^9G;@)er\HoR:?+o$#ٱv@+B!Bm5N BhK[N͐T!th+;1q 51S0WHv1dJV1ӫ/3imm??F96,TVG$5WIƶ.O ]dWK&&M]E~۾Xy}YxO+g['Wwh)}G@+!elƢ異,S%ٙv/a<)B!B BU?k-/A1VC;Oa " D; >=*CbpvazY{ 1 :{uXnzޖhW҃t]'$#)GS b|>N?sYc %.(Lhg^ա}RwԱ;5FA`:n~2:L+W&HgZZ6ӹe!B!) 'B!Tjwh)Nq$YClvCA:ޮ}b2AL\nt\XiQYW{z#J-lZb9Iq`N3W'w͓{W}{N}ؕ!ºL+ٓ?<}s6qױ:H?Ŕe|X\L+qRWm]fIB!Bw !R@-wh}z=()V:s G]!+ϨDVq%a4|6^k5a[ z=^d*}BY]f.<R<4]HƏ)@z.6\l 𗴭]L{6Kuh[,@)]S&ƕ!4~֔҅y0oNϸkj8!B!'B!ԦU>goҦeFH:_Y/#Iy$TF`.7܂;K)$MOOϧF)pqceCD' v,ԤKo_jnĤƱ|x>asq"= =oZ;c>^: ! MlC{&26\leLݸE'v%:bww-qaB!j0@!jwhpR.,t6*%Qyi1b%?|E埗l:[ͳ=5˲96r}b>9y<9g|'`ϺZ"]P'Գ#Sg)c՟~E}_^>muН`nj'mMBg{$*W&ae|FnjLΧLRj͎qB!BY*?F!*2]FݟeWW7CRZ^?wh.=b-ƫvby}^{_t>v-~iuVu@5: ?EK-ߺS84 &㥛:ݗ5MW:u wRwԱ7; ڼxopHW&ǕS*V5;o2ںŠRWOB!B!T!.tWiM+S8Nē!i0/vKxƓN#kz-\4+euVǯ/*Rc+?+ x=Po}Ro #Pl8RXI0_^]ӡm0u7Cx88FÆtRE钟i*&4 !6;qtrnB!Bp!BUޡ I8E}DW&*N3s=fn1:}k+Y0ζ_5UX5+B2ve'ig .`s39+thc7vǭG6NJ[3-4EQO/"HRo4 ߸Q#'q8vv+B!B 'B!}ϭL~l_N-./ley eT>YL"Rb*6xQpbo8` lSMf9Px4Bp|Nc0vv}k˓ӠЪFQ{Ӧ7Ų]Gu7nQP}4Hdx;:?Kg@^y눻؝]7B!BU 'B!nб;4:OŷCbHj#Iy$)8@FVԾ M&Sף_J +YIO~zW%me'42SszoEdJK!{ݥw-K01 ;;=7n̤"/.' yѡۖ+:b2AB!R 'B!ַҡ=1p9/L|!I2N隬BÐ]&3s=nթ=` 6/$WONN$c[d' xBY[b .C˽mIa«.iSWbr0—at.So5 yGLs+4޸%  +AQ.@`fB]-z[]K:u76Ms;S\2jNKb>T.tT{mw][o C# MOKi,J€_K~M54O7naY! j7MB!0@!*.߲ScX~0?se/'W YE4rӨ ɱlbػ?|CHpoit(y+r9=Hi|:uƕ!-+8/b-VNCg{M5]z{QwbPAutFACԷ@2YE_q ж]`jA[j!B!2 'B!>z S—+YHRNGr9U,iIqyuXuk3-d>2fSSgw40ۼmxBZ]Rj+w_P^r,ve V%.KWx?`ԩw]{i?N-7WpHY\nۦ~+ebbƍ:=:]%'X7(G!B- B;즬"*ѡ\`,?2HG%:"RKGv.# ^%|yoyMW%] ^ "ϩkPoROMv0x˷Ԣqif.X召ܨ%6v3L6jʍ6Ny=5&Hpӓ=t|q"EK 233S+{:dw,w-qג70]A!BU& 'B!.+Ol|mu"O?N,g#IR"/ T"& 4+fNvm][k44-hO` ;"xN#͙ӦȤ%>˖T/k" |1-uۺ N}i(Wpqw /*yٓe <òb].WԸA6MB! 0@!LܚBp9%TV3ƃ<_G}UV'h ԟ cf*Z}FRΦxo57I>=kNfUi>nW\]z{/Tph"P9k,/5:r1Imr}Ajɼm"B!'B!_bWe2ڬk\"@j;j;}vl|e 7h[Ufa}Gx͍KĘ5vŔhFl)cfƘp7!M; KBuZ- (KPʪa/8Mo v^n&:bQyąB!0@!BYLjFNʅh>X"P7—-\FYxu~ؕG/14$Їےov5YS͢ K|,YrԸ9=cʤTtZL-wWpi27vƖW(""  (E$net>-#'q-W8] \*rB!*!B[KU϶ٕz템2Wa,ͬv^ F!o46l4WnLtїsq%['6egץ)SvĒ.g"0fbWc-V[v[u:`YpՂB ./QM&6y_EX`b-V؝]5Fm"B!uN BUz SVg#Iy8cd@r/ -k[8ed{LV+a`UV/jlk]}FSWec`8AwFQ "#_1emiSvԒ-'Be^ND5<ͬҡ5t]Oa+vznܘI+ŕmHh92(WNϸk m]GNbwAB!Pp!Bkz X^l'sXJVʸ3hfs`nkLl}i!֨uxw8;n$Sg}U~.I>`Чڬ1cG̸F.7bMM2S̨55lM]5f"KBIL(D:rzHfFBin5lsVh^d34_ۨLZUϢ#vr}Aܵ WC!Bm!BaH-g<8GpR0ϕV$t " D*x; JeEӱՒUnƍ).I|2s-[l\2}h2X5`c)sfؚ\lI' X$ ?D!~* 6&%v:.렫ŹUZih" M7Y(V,ysxa ]S_YUj:r/lb!B!p!BHLk 唼RYq>ϔ Da$)$shUt3g)(0rZagN{;?sb͍d-$K]mKj40`;3~ =f Vdf2Xz67"#3#$d(bEV?Sb;Ҵ_Wy#Lw=ޏɏ'^DշU /o/9Q>i֣?]a){ 7~mn\n+7+XLx<{"Dc?WRi'kay~~se{Dn2v17Wz*TË`M ͦZF_Llݫz^{U}u1 dVQK8K8= :jگܾץ~ڽB^#ZZo{ ɟR{VW0yNV#.;羈(fOb .KqovgWVm d+.P_`!͵  D1yUr9'ay:Sw,33@==x$1n4tovUͮCUuwu.KakݡNU ?.p@zR_< H9Mj++~1@)GNͷSSgӮ%n?>z:1 8)ڮ`:.zӱK?oq#78^,^ʽLZYNuB  N̲ fTvi罊J_)_ULgߴ-M̒%}/+hTu.J*bWg&!IMrTڟ'QMynPDMqKWO[t^HZ*ֶO~] ]qF=ݨmGk`>~,Pb(1:J I '~ ԏ6d [D2ƥSZ[݋z5?%q1M˖rYnNm`+'_1UGoW*{Pٟ/;\- QWOw1!jlMbrTMEW[(Ho309{en/TQ:*"&vj?*_k{ڍWDtIvzHTL'('w(6YRd+:q/4E]HӥNwr z#7Mp^nAT@N?-XVVݭ/5ׇp>*51v~wm_ea_榁E.[[x6ig,F cEm^_x=\Z3nTڎݨڎݸ܎ܕz'*#tl(e7]dc1)cJlӽm/i++f?l%y^Mt̛2Z[,yrÃgnaű[`)75'c&ŷVl#ZKSyEnX,g.Gf x"/8.X̶MX5WuEۥW_}u\O? މ˝;qZ"㕤iF=LAHЎ{Sd)QJec/'ɗ3oFO//:̈́r93_wEp'!oZVOK,*,8.mjn~T?WROjC?yg~=}ZSF/lEtHظvc} gcgU 7QQ:r7ބQ;JaF%CAUQyPPIT; mSNO~J<[0xIy ڍGnʹ4 #34PӍy-SZNډݸat4 w'aRQb#vtшhD~Ic,'}kO/?_?#cx7< n8pÁ (nYn%-QEqZm$XP8(D5e^ea Qߤfo5!j;=['D6[zBfmC?+QQ4 ԸnQSv /.E w F G4|[FX}a4vHQFo)#G,NO$ruɧ_>$?}c>[tr64(8fQ\0eQDQuEK;4@8Vo+Ζ- Q m=-j QgoO yE\YjV㜭NphH#7̒}*7(/L9oIBubIBIZ._~!xך Qgn/.ܾ̋m~OZJucl/Ajȟ"F-Nj3TfIJ /;/^t(yex*G0ڙhoZvyP.ܘpA<^_o˵5v TuocY/t)Eݽ;p=v:,oS3w[xYtxO#GD-sب}vRZmPg}ݣ<G i8{pr|Ɍ]:WkJP%;v:7kXtsѱa0sDKtpzzuI% -֚2%-(xxN|[}XW)s~WP=-fD@2NO<̄{y]}3=&.nȨʆevۡ̄c ~S[rя[r5`^ {ю[<&1۲q b |[:+?ɽ~abt0AK.K)KT¨atݡd"))i !}񼯓|1FDu ;[kL.wOuWՌ"=e$sS;"U!VO7ԓI9UdL%惤8 j6I E|VXohen_ea)mB Q>OBY}yG,=Ekw'<WǷvr7pGV|h ʃ^ofr+6W}zX2^>6/S1NTrfE29Y]HyZaƯIVFJZVzaޔCZF_|>HVg.t1H > '"mioZNm07ƭ>7Ϯ6{}}x~r_3$H c"OO;|][i9qc^ȭ4X/,xGE/ zfW_pO`4~` ýh@{gxJJiЬQOM%!8\SaEOŬ9wTNN 5^X]4f-ܾ̋̍ݗ !Z{.qtz}1.$<|}S: t~_LPNrr}1yUNq~offlr3 e36q!FáJ5r$8H(~TGћpE([M5#Y!F=uJ:!sODm w&nd % JZ,IfqBq’ >;{!;z'D}ۗys0eea^Ţº -؆%[ު֤7Z߲!ℾ"Iz*{^2*{QmwX86 itrrV6^[-;ݲ"cR_l`ZT2yJۥKޑcG>H÷0%WGD'vz/\`qL1U,eN;q9C~:D6.9 %+<,8U9}U/?:#@C=rʁ.RKWw/JK8[YЯ^鿥%J$ ~ uSY~1 `CG|䎖;rrTH1*<<***5ܓF'oZGʽͷW*dAe+~eo2W)atېZݺ56ooJk>xE/QvlG|Dn`W?r.eeN ˬٵʃ~)拻{Q0z+}61Sp;Q9z(-#'V8n6yd3Ufek*FG*7xLtх*r>H##CGZ.DG E1 #B4.<<7!kg+ܰ<4E/i]v =uuaGw87ꤱvcm%G>u9}XbEؒU>dB] Ԅ[9q 2' ֛-XSB=D&^ 0މa5 _A +9ܴm6klmm,,)<*d#Q9{j(SQ^Qu#A#41MdddHv Qj|VA ae1(SeR]4&?0R$ }MTQMqi*iuem6Œ=3%2ң#H 3G܇S3'!X4W cn-L0q⺷rۂp>~gg[]a\\xU[+a@2Du c%㫾W'K‰0Ksb<.P.j6bdEdoe*|\nr6Ejn\0r;)KK&klX%nlkf\Q5[1eTbPU)jc% kK/,y/c'IȠD2Q7 %|/6|8G5KcC&GKE}E=y+ڕ!=Zت__;Wn^̸HUj7֦H]E`VJpAi#v0Jq*k?^&iAdLֲy^m6u~ 7 t2مQZMãQņ𳔧dW61 % c$oE~W$J ;2$rQn(Zҋ"q!x(.-a躄QúuQսW@كʽc+ZX`:k𝒌~~aM5zvDceNJ)*һ5pu7.mTܦŽ|zK 3z0JV eL}Wm=i,J:ն٪3rF^aά_\^xbbj:3eBvaqO@LϣGZBoZ}!m{Np `8E Ua|wX༄q!-T3kwo}z*vnϾ^9Rs!HU2C!\}r,֥܋G ϓ*maSJY8^1PbjŐӄ!юtƒEl|񩄣5?GTyTVhԫ5R *F#呦g>" Y"u2b X(o< N%Ģ[5Z~_V< xv(K6߭pmW/aԫ/~?̈W2hW' oym,4*-XS[~h{5:|#_rHr"b*7K2l0\j̣Y,갤sFv,4׆\,W1s#v<ڍـXȈ S # ,7Mj [[JӨj\j')MU~Y=#_-}#_H~#$g_pN0v[_O.xHn\a)nܼQXW73 rKʾ~F-5.5n ‹1۫zƆ>T&%gJKRn0JKҺP騲TXSX,/cQ 0oK,/44/O2eSZW>|jxx$ j,n Q$[:-ParUIY*εͭ+ V$* ׺<<"_!ԙ4 _~dYBT#C<㣄^2 G\Z}Fm|@4uWp!(,׈4v#mǺٓ1nHQeƳ[Fڍ Mf{5&c;Ba]a^q3>`] ,\`D/kQssYYY[`1g1>TcpJ"_TaVL'EYLURѥf°1%w*/޶I%ҤR)|KU RTZdOȬ:oб7ć Vʏe{cը] 4f BXi("呺w<6_~RC9w-ºYEzϩrtܡZL2<"smg'PE 9B5\h]V|ʲԪT2qSeg*͔ rs唔$.4j6s˫?6<vW@<FRA1n,oUK3ɤӁ V1m~m Z[eԋ8:n/^5 rKƑv1W4yc'jzf76N!ꋠ_ڗLVrZM(*jRTJzy8zPhzF_ԑRfHD*r{ P]Ԙ]ܸl< 96Fa]atʋy/KU{һtפGc=EPn_=uAiʛe/{ }J8$#)X)/4rCuv ` =p=׉o~uT2RR}bT̞j()3֮p,gnu:FOSOx1!X!XwxSl#(XF~n‰t9'>$zõ5,بE׽S4gsuڍm_moKގ?N<8uocv&΋7NG֝(_[omoԖdg&S7:qC8vxc]#3[7..nZ|]n㹥ܸvqb;P7LpqYĩ {FDDަpu' (pۍmFNeʤ 5 +]T|WoΥƥTǷ<:PU\ DEĶ2mjzeƍKˌ7.745nmn(3;񦷡]nXv n <8}鶋N-8k|7*7qqq{njX̸̸ru!rI< wKz$%pxÂp)N!w S'B8 xN;p)N4gIU$rDDZDDћ#>'j.WEsAUQd =&"rT9{y,',KDd4}ל1:B8oIiN?y- "c<"2ͅ3'>T^uɄiBzY9`#&r";@>|$ϡә9o7W{ìaG-{olWs< @8㯽/N±TUH#u.j/:W.+c8CW'$y}""##41FD$|#_^~Ǜe^? 1|^wjoϿ;?޳Dk7z7qApN-x?.>Mf0 >߯o߉O.=^{Ebw ""-ʿ$8$NO$3 _1fcL:OS9D]""Utwx>ө6Zs>惃wG찠LW9xGw^c39WNHsշT9cHcgܟ ?73,N|>8:lh| @pvL̛/6q"V9KP80.<r;z$dbaTU5MǝnF '_>ΑK8QM|'[=&a"}7?~vk.qAw 1S[vE'67Š#pޖ$rw5':>MT TesN :Yw^}>~~i9@a倳[~KGqN9<|':8*",+zP.#%M7~O癏:qA D`^ۥ+O {. G[X\dM3 y9yO/νw !)@8pCu$PGߨOp{z Z73?%`"2zRcL1 >~^YT vnr ukY̟ḐՃ>~@JU$c]'n98.xN{SܿVB?u`PN5Npٿ=*4Gz'6|N% +5%lAsVS턺T Xjn:Wԫ+@DC'>lMffP3kQU.0L;>2M! r( hGR) rqǡt @Bb@ Mv Kf;|z6wg&yjP#e$i",rzuMhuB+55:JpWxh`0K !t:FQ(N8Կof!S%V*Nv\0?0Qɍȡ PӯGGG'%% !5j5z: 'f?B ䷅`YY>b]Ͻ JJ$P( u]vJ#́Fn`^jeʠ8udgg_.\8vתUKx,rD*UMV& ,Q32rkVvU80 &&oŋ[nV21Lz,@ܛnG9 \Ѩ^j4"}cYeƻuGPFɉ <BahQ:w]dzfA`d]P M&W&k=#Bcǎ͟?ƍB~{j& NtQ'y>Ox  ,Έ`^ǁwssjKp'g.ZHjϞ=whvDEEumٳgB,ZW^ S-W((BQT$ 3⏎~grs=r2~qiBA !P 4<[8 :ӕz"A~@s!]0ڢ8}GB={V&$f̙EEE~ŋU(1jp_ JLk&/mE R/KK/MZGB&RRS}tʿG$P^_~Ԟ={vʄD̚5+::Z~/BD\oBFH&"웙XsClvU ӹ D/wތ !Dxxc=V^XǎΟ?wި(si¦IJfnҰB֔ + 4ݎ{FC9X(ȑ#R{e>6!h4ݻw? 8Eza(4L: IDAT{C }uo!<Bܩ~4y L0?8r Z= /P\l8W8EKۛl߾_|!8{ӂv ׳)uL;Q4w_K_CDNp@"L {֨ucn:qoFhzJ.Xb+&)*eK, ý"?OWw?T.n߾}m@p-uuzkV; TJZZ)jvFqϿ;H#:4%F#jݐ*Fc[ M!u}ʹ]hF[uFFG[hnrKoEcZjܷ Ԙ.v`0zNW%Rv#EEEU VXPPjc r-z`Z 4PTt-ussfOAGPUϢNFR֭[Meʒ^^^MI !t:Ň9\h,,LlޮR?fvssVA233}||]URM"Fׯ_Sq-x{+*q-tU;Fp-4ZZfMs?XTT$ҬڵkWL$PeT+5T0_Ȑr[ޑ#Gbcc+f'(7n+J/NW4*98*)YƍG䀐P (*,,Lj$''LII ,P\i8tH9T1'nݺIݻwŒF={J,(N@Q>hPP"!!a޽%$$!ի\~ǣ8Eiڧ~ZjϚ5̇'FY#ZRR|Mwww!ݻ̙S>a4̙-x뭷0'ƍR{̙Æ }vff={ 2sLSN Q/SCNќ9s<{n!ڵk׮][:wN''NyqƕK/_Mɬ oy/^{U!DFt2~vک Q(N@MjgP:EQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NENp _}Y8^h4:]c7r[Ѩ b777jA,..6 :JA#(AZ긖V\KNjZ777sqpS; *((~Y@@qRSSO<)b>'ҤDDr;<]  }ucǎ/;uTF  ۹j֬n>={>شiSuAEedd=zTv)Sԭ[WR(Nk֬YU!::/_۵kV1`Ϟ=RM6ӦMS7`r]v=zP1_~Yh7 R1 ..NjjRGZr.\(4iRppɑ-ZZr>駟J혘{WGq]HHHHHY8DRRH:\N``ܹɠ5kAt9/;tаaCmLY&V&Mp]NVVv5kLd`zm___ ]d!<婝Yռa8-@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(Jc4Cܹs'--M~l#6tS1 '''55U~ٸqcNb>AZZڝ;wgÆ 6|N:kV7TTnnnJJQF*ܸq#;;[js-uQW\1 Rk+KNN_r-PPbX'(@Q'(NEQ8Eq(P (@Q:Xz~ʕB#G (_T+<9TqѣF5jډb n:a„m6h=00G2eJ||K.{ݺukذO&M|ŋ婝l׿Uh4/:;wV;YjժAyyyko[RRک\Vv(o6eʔ wwɓ'=zT`5k֌9244ϯUVcǎ6jgl 믿kZUVZZj+:tIhڞ{^ ٷo߄ Ξ=[o5ĉ{yy)QPP0eʔ/`0РAG '[nݓO>):=zܹӚN:۷6ѣK}ܹSLG |P:'_~WS2+T'Lp2ۧOo&88X` _ᳳx㍯ߎ;vjղ[`?',%%%44Ν;/{cٲe>Ű?۷oT %XO{ôZ͛LV6mdffJ/:x(N8zĉ}ݿ+VȰ{2YRRRΝ-^KCBB5jLVիW9LLf8XV0Æ𹹹}1ӵk׭[z{{'Ku#GJk*bccnj#˗'&&޹sȑ#|[/2yduDfΜ)W&|}}y督Gfeeļ+ZVa0FymUE=reN.??_'&&h }^zIyGĜ ȷiϙ3|w TaTzzz.\n0U\\#哄m{=>ASNG*99YtPa7 KI:uR%Iѣ8tPv:4dʕeƬZJYt<жm[脅;vtLtt\ܴiIBRgΜ\̞=ą`0̜9SN;wc؎@qW;;X~xׯ=[o)$Xh|wQ^|RnݔL6۳g UWn:0>3vUחsI gزet֭{ }#Lb&_XnO?$wIom߾] СARƍ{Yg u@e1Puddd\p.k׮]r 矕 ٳghذa #Ae?~\/xDff ^ԼyA=sjR7ORͤrss'L ????uAZh!'V^m8fa (Ν;Rd5jԐr ">>^jP L<{8⣏>2モpiiiӧO>~P1nܸ/jgkJc!6m4iҤ۷o˿vڵkv/\𩧞R)MK iii˖-۰aCBBBZZ߃>8`q5h@La?/_Bnݚ=z/"裏:t0t1k׮4oG@@@jj̙3]t1y.G.NԫW|w b9r4aa^ʺvݻ{-ZHt?#|wf&M, _`.^(׮]kZ0:t?\`-Z7߄O>>VXd!ʕ+9R%!!eppԩS߰aüӧO[xqqqbҤImڴرJɢ rg}{k%%%Y!ܹsoݺ%ԩS~Nrss[z!Cbbb[lٲeKݻw_jҠ>}HϾ̝;瞫[na?v鏬pr!X(p666y^,]]QQт O.U&BBBv^׷w:uOj.]Զm[v>_6-UN6MjGEE^7?##C;v'h%./ˆ#Zl啘e˖?PsŊ#FP)YTLbbbXXXAAb޽;wV;#Xp6mژN:ǎkԨYM6B{ҥAAA%bNtbРA֭+gE}֭Bԭ[o͚5 ۾}{>};z\0K_7駟JOt~>|XѰaË/zzz*(*nرҼY شik׎?>++|X@@%KLV?c 8cƌ:l֭[O޶m… %V )YXXn&PR՚tP ՝ǏK?>|+_۩`!!!Ǐn13E*ի׎;*38OOOAOOÇnݺ̰~XaYtȑ#w̙VZIϘ3Bu}ܞ7j())ܹs7o^dvѭ[7 O?zjasΝ>}"(((--M`6}||rss7nܐn*SZZ4'6%(ΆI{>\Meµh4vڍ5ѣ~UVIcIرCLhe˖L'߷o?~|y !D˖-_xm6%2C,ZHh{衇ݺukR!22_~ýW_>}CBzJC._w)˗R W!ϋ&TiTj pF3gNQQ_LHHx׵Z..Lվ+r_n>05~x1sLn{1q5u3)wL\tlNKJ1cԠ2335ھ}{xxxa۶mkذ"##C>pnnn?Ο??cƌvtzu?>wO?-W;BJCzzH9gC8y=c }=yEPe >\jC<_fΜ)l#G2*ARP5XK*9..|||o&5Zl'**?<7o|Qw*ݺuQ4ayK+lO?IHΌ[J͛;0'TPFFٳgϞ=i$3e˖IsnՋ?O裏JEՋP.? p+V;vT7TT&Mڴi#35/X@j[335m~۷CCC'z###9N}||1cF֭{…Zj)+3,_\QNC{Ivvaöo.֭ݻTfbbC=g~wM',4s̙9sŋ P8\Źsl{#< :u믿J/[n=iҤ~844ٳ;wnFFhѢ_|Q|a .ίcǎďuԙ1cFTTC=T\\|̙իWBG20a„ŋ !4رcǎkڳg.[l…Bcǎ5lP|QQFBVI絫XzåN{_paÆ }<^ЪUx$$$jJZΘ1͚5KOO߱cǿ/i%??ÇNuU?SOM}K UfQQQ^?һw-[!?+`f`t|ĉO<񄙘oO>28H@@}Lʋ߿ll, UF;w/)/2N<)9X.W_ݹsG{[hk.*Nkر?CyhT&\Nۼy*K/~z*ON`gFɓ+Vؽ{wrrrJJ{```DDD޽yƐ￯]v˖-.]JII֭_],3_dI\\իW;v8lذS`0nݺiӦ[n5hРSNOhƍϟU֖-["""[C^^׬Ysׯgeeծ]I&۷2dH:]$;AS"??۶m+W<}իW󃃃5jԳgϡCY*hܷoΝ;嗤7o޹s߿ym۶2dHvF}(\WIpFP]H`0fϞU'}YrtR^`0Jqĉop޽e.k0VXѠA3{iӦ?af9bNKþĺu1>xत$[ƍ۶mkfӒ߿Jz(Qru"X<@U'??ȑ;ݷon~O>5]KB竒gev׉'Jl~y^3X7z۷o[L<ۺ2Ӱ)Q\\|xs*gev|+t&M͛wseddJe 6i?Qeb3ʡU+ߎEL*i՗iwO``/v̙ґEEE%Ŏ(sϟHg׮]v iQСCsrr,reәiznd޺ukPPʷlbe2JnIv#Nua͚5;uT鰴(^Zl9s昮LnBB4 ͛7//t84Plֳ몕B}6d g;/q򂋋M/]vaQ%kii̐)_]f>ԩSPkdܺGwܹVb[ G6vZ9ǧ0Gmzv<}]U4vVې-Jt$m۶|ƍf̘!שS'//O&$$|!Cj֬iq5kQ@RNr38txtrm۶V.e:ŋ%OkzČO7U^=kHJJ۾$VBvv K)u' v9%Μ9#[n]U{+,,| N>}ر͛7߹sA2>Q@Rv@Fq!|i>Q@rjbbbW8Cr{V.eiӾ}{mQhÇsUݺag"Gn}ŋ埫:$͛gy[Se{ xF)p]=v]#E^z%9fֶw^ӛ_~e |7Eׯu3?]cǎd2غGǏ֭Xުn޼Y~}9m۶%w-2~0i0f͚%W^*](G\W}}}嘁y$==Yf֜*֜K-bfC0p 'ёtY9N:v*3r۶mjՒ#=<<Ν;X6a|",, Ï?hߴZS*#$;ĩSt:Ӽyϗyf߾}M׶h"޲.-((#FRRRRʌ,rx v=q]mݺF?a ӟJ*eb͋[r89T_H3gNn#Fl޼ڵkW^ݸqO>Y">P8ϊm|邞ƍ۵ksrrN:jժΝ;쒌ݷ$;AĻk5yߺu , 2 -,,T-[iʕ+U֌3:qƉ'֨QC1@6lXbbb;-=kv*ZBb3շ~DpddUN>k׮_~Y.L>ضC-SN˻v횕[s8@堎޽{0`^W8ϊmz~{.((K2vߺҰf(>z2oJEEE?[t~m%%fH6U۵}F+Ďgݯׯ_7ɼ=zuZ y2r+pNL }O<Ç_vUN[r6lMpqݭ;[yzznڴY֭[׶m2[vss[fM@@Ȁ~i̘1]tF>Qܳej .]fqU]v]b5ӵkWGQ:TcG)..^dIݺu| gqvSiʬ믿775kl2+zP2vܺz?O͚5ٷo߄%r\x}mQL0͛R[4hP"ONHT9 :QJv*VꫯL(sm.rƍZ8'Ov}?~<%%%### ~m۶2dHϞ=MǾ򲳳7mڴv3g\~=77N: 6رc>}{ݺaQVVֆ ~s%''6i$**ꩧ*2F֭[W^RPPРAƍ0`M41 rʴiⲲZj#|֏cU(^W M6:t(555??A!!!=zx7n\~tttBBW&M4if(NE1P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q'(NEQ8Eq(P (@Q7[_91IENDB`freebayes-1.3.6/paper/main.tex000066400000000000000000001610651417247743000162650ustar00rootroot00000000000000\documentclass{article} \usepackage{fullpage} \usepackage{amsmath} \usepackage{url} \usepackage{verbatim} \usepackage{graphicx} \DeclareGraphicsExtensions{.pdf,.png,.jpg} \usepackage[square, comma, sort&compress]{natbib} \usepackage{wrapfig} \usepackage{float} \usepackage{color} \usepackage[section]{placeins} \DeclareMathOperator*{\E}{\mbox{\large E}} \newcommand{\approptoinn}[2]{\mathrel{\vcenter{ \offinterlineskip\halign{\hfil$##$\cr #1\propto\cr\noalign{\kern2pt}#1\sim\cr\noalign{\kern-2pt}}}}} \newcommand{\appropto}{\mathpalette\approptoinn\relax} \def\app#1#2{% \mathrel{% \setbox0=\hbox{$#1\sim$}% \setbox2=\hbox{% \rlap{\hbox{$#1\propto$}}% \lower1.1\ht0\box0% }% \raise0.25\ht2\box2% }% } \def\approxprop{\mathpalette\app\relax} \begin{document} \large \title{Haplotype-based variant detection from short-read sequencing} %\title{Characterization of complex variants by haplotype-based variant detection} \author{Erik Garrison and Gabor Marth} \maketitle \begin{abstract} With genomic variant detection methods, we can determine point-wise differences against a reference genome. Widely-used methods fail to reliably characterize the relative phase of proximal alleles. This information is essential for the functional interpretation of genomic material, and can be determined directly from the primary sequence reads. Here we propose such a method, and demonstrate that the use of haplotypes does not only improve our ability to interpret genomic information, and affords a large improvement in detection performance over existing methods. We implement our approach in the \emph{freebayes} Bayesian variant detector. To do so, we extend the now-ubiquitous Bayesian variant detection model to allow for arbitrary genome architecture, ploidy, population structure, numbers of samples, and numbers of alleles. To further improve performance, we extend the model to incorporate an estimate of our confidence that the locus and alleles under analysis can be characterized accurately using our experimental data. These advances allow \emph{freebayes} to outperform all existing variant detection methods at the detection of SNPs, indels, and small complex variants. \end{abstract} \section{Motivation} \begin{comment} write introduction / motivation statement to lead into results \emph{ GTM: Biological motivations: (1) Haplotype phasing: [Result: resolution of compound hets. e.g. BLM allele-like situations such as the frame-restoring indels, and the 6 SNPs in a row. This improves functional impact prediction] [Display items: example of phase-restoring INDELs] (2) Complex variant detection: [Result: Alleles are reported in a consistent fashion, allowing e.g. improved genotyping chip design] [Display items: OMNI results] (3) Accuracy of SNP and INDEL detection improves because haplotype-level detection improves signal to noise ratio [Result: comparison to other SNP calls and INDEL calls; 1bp INDEL detection accuracy as a function of clump size] [Display items: SNP AUC table; INDEL size as a function of clump size; INDEL caller ROC comparison] (4) Enables integration of multiple independent callsets. [Results: comparison to other integration strategies; Quoting number of inconsistent allele locations in Phase 1.] [Display items: cartoon of inconsistent calls; table comparing performance of variant consolidation methods] (5) Ploidy framework allows accurate genotype determination in haploid regions. [Result: Chromosome X calling]. [Display items: in-text chromosome X results] (6) Physical haplotype method gives better sensitivity than assembly based methods (local or global), but comparable to mapping methods, while achieving better specificity. [Results: SNP AFS comparison across mapping, assembly methods] [Display items: AFS comparison; call comparison table] } \emph{ Gabor's logical ordering: 1, 2, 4, 3, 6, 5 } \emph{ Literature/competing method review: How other methods deal with the same issues? Other approaches for variant calling (per-site mapping based, assembly, local assembly) How our approach promises to solve the problems. } \end{comment} While \emph{statistical phasing} approaches are necessary for the determination of large-scale haplotype structure \citep{browning2007, mach2010, delaneau2012, howie2011}, sequencing traces provide short-range phasing information that may be employed directly in primary variant detection to establish phase between proximal alleles. Present read lengths and error rates limit this \emph{physical phasing} approach to variants clustered within tens to hundreds of bases, but as the cost of obtaining long sequencing traces decreases \citep{branton2008, clarke2009}, physical phasing methods will enable the determination of larger haplotype structure directly using only sequence information from a single sample. Haplotype-based variant detection methods, in which short haplotypes are read directly from sequencing traces, offer a number of benefits over methods which operate on a single position at a time. Haplotype-based methods ensure semantic consistency among described variants by simultaneously evaluating all classes of alleles in the same context. Locally phased genotypes can be used to improve genotyping accuracy in the context of rare variations that can be difficult to impute due to sparse linkage information. Similarly, they can assist in the design of genotyping assays, which can fail in the context of undescribed variation at the assayed locus. These methods can provide the direct detection of complex variants of clinical significance, such as the BLM\textsuperscript{Ash} allele, a complex block substitution in a helicase gene related to cancer risk \citep{blmash} or recurrent multi-nucleotide polymorphisms often found in particular cancer types \citep{recurrentTERT2013}. Directly detecting such alleles from sequencing data decreases the cost of secondary, manual analysis of detected variants, a significant diagnostic cost now generally accepted as necessary for the accurate reporting of non-SNP variation in clinical diagnostic contexts. The use of longer haplotypes in variant detection can improve detection by increasing the signal to noise ratio of the genotype likelihood space that is used in analysis, provided some degree of independence between sequencing errors. This follows from the fact that the space of possible erroneous haplotypes expands dramatically with haplotype length, while the space of true variation remains constant, with the number of true alleles less than or equal to the ploidy of the sample at a given locus. The direct detection of haplotypes from alignment data presents several challenges to existing variant detection methods. As the length of a haplotype increases, so does the number of possible alleles within the haplotype, and thus methods designed to detect genetic variation over haplotypes in a unified context must be able to model multiallelism. However, most variant detection methods establish estimates of the likelihood of polymorphism at a given loci using statistical models which assume biallelism \citep{li2011stats,marth99} and uniform, typically diploid, copy number \citep{gatk2011}. Moreover, improper modeling of copy number impedes the accurate detection of small variants on sex chromosomes, in polyploid organisms, or in locations with known copy-number variations, where called alleles, genotypes, and likelihoods should reflect local copy number and global ploidy. To enable the application of population-level inference methods to the detection of haplotypes, we generalize the Bayesian statistical method described by \citet{marth99} to allow multiallelic loci and non-uniform copy number across the samples under consideration. We have implemented this model in FreeBayes \citep{freebayesgit}. In addition to extensions enabling haplotype-based detection, we have incorporated a model of the capacity for the alignments to characterize the locus and alleles in question into our prior probability. \section{Results} \subsection{Small variant detection in simulated data} \label{sec:simulation} %\emph{GTM: This section presents results for Biological problem 3. The table for SNPs, and the figure for INDELs.} To assess the performance of our method, we used the population genome simulator mutatrix \citep{mutatrixgit} to simulate variation in 100 samples over 100 kilobases of human chromosome 20, and the mason read simulator \citep{holtgrewe2010} to generate a simulated Illumina-like 70bp-reads at 10x depth per sample. %several sets of simulated data: 10 samples at 100x coverage, 1000 samples at 10x coverage, and a single sample at 20x, 50x, 100x, and 200x coverage, over 100 kilobases of human chromosome 20. %This simulator employs a $1/i$ allele frequency model to simulate SNPs and indels across a number of samples. The data were aligned with Mosaik \citep{mosaik}, and variants were called using several popular detection methods capable of simultaneously detecting SNPs and short indels: GATK HaplotypeCaller and UnifiedGenotyper (version 2.7.4) \citep{gatk2011}, samtools (version 0.1.19-44428cd) \citep{samtools}, and FreeBayes (version 0.9.9.2-21-g78714b8). %In order to improve statistical power, each simulation was run 100 times and the results were merged. To assess each caller's detection performance we generated receiver-operator characteristics (ROCs) using vcfroc \citep{vcflibgit}. We provide results in terms of area under the curve (AUC) for all tested variant callers in table \ref{tab:simROCs}.% (See supplement for ROC plots for each simulation.) These results indicate that FreeBayes provides superior performance to the GATK and samtools at all assayed depths and numbers of samples. %For both SNPs and indels, the relative performance difference between FreeBayes and these other methods is largest at low sequencing depth and numbers of samples, and diminishes as sequencing depth or number of samples increases. We observe that the difference in the AUC metric is dominated by both minimum distance from perfect discrimination (perfect sensitivity and perfect specificity), in which FreeBayes consistently outperforms the other methods, and by apparent hard limitation on sensitivity imposed by the other methods. We hypothesize that the difference in performance for indels, which is larger than that for SNPs, reflects our method's detection of alleles on haplotypes, which improves the signal to noise ratio of the and effectively removes low-frequency alignment artifacts without the need for out-of-band indel and base-quality recalibration methods (we further explore this in \ref{sec:indelerror}). \begin{figure}[h!] \centering \includegraphics[width=0.7\textwidth]{100samples10x_0_25_both} \caption{Receiver-operator characteristics (ROCs) for FreeBayes, GATK HaplotypeCaller and UnifiedGenotyper, and samtools on 100 samples at 10x simulated sequencing depth. FreeBayes achieves the highest area under the curve (AUC) \ref{tab:simROCs}, with the HaplotypeCaller and samtools each performing next-best for indels and SNPs, respectively.} \label{fig:10xROC} \end{figure} \begin{table} \centering \begin{tabular}{|l||l|l|l|l|} \hline         variant detector & depth & samples & AUC SNPs & AUC indels \\ \hline         FreeBayes        & 10 & 100 & 0.9594              & 0.9400                 \\ \hline         GATK HaplotypeCaller  & 10 & 100 & 0.8155        & 0.7765                 \\ \hline         GATK UnifiedGenotyper & 10 & 100 & 0.8907        & 0.7073                 \\ \hline         samtools         & 10 & 100 & 0.9056              & 0.4698             \\ \hline \end{tabular} \caption{Performance of FreeBayes, GATK HaplotypeCaller and UnifiedGenotyper, and samtools against simulated data. %FreeBayes provides the best area under the curve (AUC) at all sequencing depths and numbers of samples for both SNPs and indels.} } \label{tab:simROCs} \end{table} \subsection{Using simulation to assess the direct detection of haplotypes} \label{sec:complexsimulation} In order to facilitate our assessment of the method at determining phase between clusters of alleles, we set a mutation rate sufficient to generate many clusters of variants in these simulated samples. We then simulated reads at 20x coverage from the resulting simulated chromosomes using wgsim \citep{samtools}, aligned the results using Mosaik \citep{mosaik} and ran freebayes on the resulting alignments specifying a haplotype detection length of 10bp. The results were compared to the truth set produced by mutatrix using the utility vcfgeno2haplo in vcflib \citep{vcflibgit} which can construct haplotype observations of a given length from phased genotype information like that produced by mutatrix. %For the evaluation of complex alleles detection, we ignored haplotypes which could not be detected by the algorithm given the maximum haplotype length constraint of the detection method. Our results agree with those obtained for other classes of small variants in section \ref{sec:simulation}, showing high performance against SNPs (AUC of 0.979) and indels (AUC of 0.948). For complex variants composed between multiple small variants, direct detection provides an AUC of 0.919. % TODO rerun using newest freebayes version % humu.bc.edu:haplotypecomparisons/1mb_10x_10samples %> abs(trapz(c(1, roc$snpsfpr), c(1, roc$snpstpr))) %[1] 0.9795195 %> abs(trapz(c(1, roc$complexfpr), c(1, roc$complextpr))) %[1] 0.9033818 %> abs(trapz(c(1, roc$indelsfpr), c(1, roc$indelstpr))) %[1] 0.7524788 %> abs(trapz(c(1, roc$mnpsfpr), c(1, roc$mnpstpr))) %[1] 0.9480347 %\section{Comparison of haplotype-based calls to statistically phased genotypes} \begin{figure}[h!] \centering \includegraphics[width=0.8\textwidth]{indel_error} \caption{A known error mode of Illumina sequencing methods generates a 1bp insertion artifact that is detected by standard mapping-based variant calling methods. The artifact results in a relative over-abundance of 1bp insertions. Here, we characterize the ability of our method to remove this artifact by detecting variants in a larger detection window. As the calling window size is increased beyond 10bp, the artifact is effectively removed, and the balance between insertions and deletions at a given length normalizes.} \label{fig:indelerror} \end{figure} \subsection{Using haplotype-based variant detection to improve the signal to noise ratio of candidate variants} \label{sec:indelerror} The fluorescence-based imaging utilized by Illumina sequencing machines is susceptible to errors generated by air bubbles introduced into the flowcell in which the sequencing reaction takes place. Bubble errors tend to manifest themselves as high-quality 1bp insertions in sequencing traces derived from spots in the affected regions of the sequencing flowcell. These errors are randomly distributed with respect to reference position, but their high frequency in some sequencing runs means that they will spuriously be detected by single-position mapping-based variant detectors when they overlap positionally. We can observe the presence of this error because it causes a preponderance of 1bp insertions over deletions. Typically, 1bp insertions are discoverable in human genomes at a slightly lower frequency than deletions, and thus this error process can be observed by inspection of the indel length-frequency distribution. To assess the ability of our haplotype-based method to overcome this characteristic error, we detected variants in the previously described AFR191 sample set using a number of different haplotype lengths. The indel detection results (figure \ref{fig:indelerror}) indicate that this error mode can be effectively removed from small variant calls by increasing the detection window size to 10bp or greater. As we increase the length of detected haplotypes, we increase the number of possible erroneous haplotypes without increasing the number of true haplotypes. This effect results in an improved signal to noise ratio for detected variants at larger haplotype sizes. As such, increasing window size in our algorithm allows us to exclude likely insertion artifacts from consideration, as the recurrance of an erroneous haplotype diminishes rapidly with haplotype length. We hypothesize that this effect dominates the improvement in specificity yielded by assembly methods. However, if window sizes are fixed, as is the case in the existing implementations of such methods, sensitivity to rare variation will suffer (discussed in section \ref{sec:lowfreq}). %\begin{wrapfigure}{r}{0.3\textwidth} %\includegraphics[width=0.3\textwidth]{omni_errors} %\caption{Omni errors.} %\label{fig:omnierrors} %\end{wrapfigure} \begin{figure}[h!] \centering \includegraphics[width=0.3\textwidth]{omni_errors} \caption{The Omni 2.5 genotyping array includes a number of alleles which consistently report as non-polymorphic (monomorphic) in the 1000 Genomes cohort in which they were originally detected. By detecting variants using our method at a 10bp variant calling window, we demonstrate that more than 90\% of the apparently monomorphic loci are not biallelic SNPs, and thus the array design does not match the local variant structure in these samples. By using a haplotype-based approach, groups designing genotyping arrays can avoid this common error mode.} \label{fig:omnierrors} \end{figure} \subsection{Using haplotype-based variant detection to understand genotyping array design failure} \label{sec:arrayfailure} Variant calls generated during the pilot phase of the 1000 Genomes Project \citep{1000Gphase1} were used to design a genotyping array, (the Illumina OMNI2.5). Subsequently, many of the alleles on this array (approximately 10\%) were found to be putatively monomorphic in the same set of samples, suggesting they resulted from variant detection error. We investigated these loci using whole-genome calls in the low-coverage cohort in Phase I of the 1000 Genomes Project. We ran freebayes using a haplotype window of 10 base pairs. On comparison with the monomorphic array loci, we found that approximately 90\% of the array-monomorphic loci overlap non-SNP or non-biallelic variation in these samples within 10bp of the target SNP, whereas the opposite is true of polymorphic loci--- greater than 90\% of loci assayed as polymorphic overlap biallelic SNPs. We observe that many of the apparent failures in variant detection are actually caused by an inability of methods to assess local clusters of variation. The accurate design of genotyping arrays and their use in cross-validation of sequencing-based genotyping performance thus requires information about local haplotypes structure. \subsection{The importance of accurately modeling copy number variations on sex chromosomes} Our method is currently the only variant detector in common use which provides the ability to call males and females jointly on chromosome X with correct copy number. To evaluate the benefits of this approach, we detected variants in chromosome X for 191 low-coverage 1000 Genomes samples of African ancestry using FreeBayes both with and without copy-number awareness. Comparison of our results to the genotyping array calls (excluding cases of likely array failure due to non-SNP, non-biallelic variation as described in section \ref{sec:arrayfailure}) indicates that when calling without copy-number awareness, our genotyping error rate was 7.28\%, whereas when calling with awareness of copy-number, the genotyping error rate is only 3.55\%. The relatively high error rate is typical in the case of low-coverage data. The difference in overall error rate suggests that there is substantial benefit to directly modeling copy number within the variant detection process. \subsection{Comparing to other methods in low-coverage sequencing data} \label{sec:1000Gcomparisons} In the testing phase of the 1000 Genomes Project, participating groups submitted callsets based on 191 samples of African ancestry (AFR191). Results are characterized in figure \ref{table:1000Gcomparisons}. Unlike other haplotype-based and assembly metods, the approach described in this paper (BC2) provides sensitivity to known variants equivalent to mapping-based methods (BCM, BC1, SI1, UM). Furthermore, the method's ability to characterize haplotypes in loci which appeared to be monomorphic on the Omni genotyping array allows for discrimination against known artifacts as good as the best mapping-based detection pipelines. Thus we achive a result which is nearly equivalent in sensitivity to the most-sensitive mapping-based method (BCM) and of a similar specificity to that achieved by assembly methods (OX2, SI2 BI2). \begin{table} \resizebox{\textwidth}{!}{% \centering \begin{tabular}{|l|lllll|lll|ll|lllll|} \hline call set & BC & BCM & BI1 & SI1 & UM & BC2 & BI2 & OX1 & SI2 & OX2 & Union & 2/9 & 3/9 & 4/9 & BC cons \\ \hline SNPs [K] & 459 & 512 & 481 & 480 & 491 & 495 & 362 & 452 & 252 & 101 & 621 & 548 & 518 & 487 & 543 \\ Omni poly [\%] & 91.6 & 98.9 & 96.5 & 95.2 & 97.6 & 97.4 & 88.4 & 87 & 83.1 & 44.6 & 99.3 & 98.9 & 98.6 & 97.6 & 98.7 \\ Hapmap [\%] & 94.5 & 99.4 & 98 & 95.6 & 98.9 & 98.3 & 93.6 & 90.3 & 91.1 & 53.7 & 99.4 & 99.4 & 99.3 & 99 & 98.6 \\ Omni mono [\%] & 1.39 & 1.63 & 0.29 & 0.62 & 0.77 & 0.56 & 0.14 & 1.1 & 0.72 & 0.1 & 3.73 & 0.97 & 0.67 & 0.48 & 0.65 \\ \hline \hline \end{tabular}} \caption{Performance of various variant detection pipelines tested as part of the 1000 Genomes Project. Sets are Boston College; non-haplotype-based method (BC), haplotype-based method described in this paper (BC2), Baylor College of Medicine (BCM), Broad Institute GATK UnifiedGenotyper (BI1), Sanger Institute Samtools (SI1), University of Michigan GlfMultiples (UM), Broad Institute GATK HaplotypeCaller (BI2), Oxford Platypus (OX1), Sanger SGA (SI2), Oxford Cortex (OX2). Union: combination of all variants detected in component methods. 2/9, 3/9, 4/9: voting-based consensus results. BC cons: haplotype-based ensemble method.} \label{table:1000Gcomparisons} \end{table} %\begin{figure}[h!] %\centering %\includegraphics[width=1.0\textwidth]{1000G_performance_comparison} %\end{figure} \subsection{Indel detection performance} \label{sec:1000Gindels} \begin{table} \centering \begin{tabular}{|l||l|l|l|l|l|} \hline center & specificity & sensitivity & caller & optimality & AUC \\ \hline Oxford Cortex & 98 & 27 & OX2 & 73.02739 & 0.2646 \\ Pindel & 90 & 52 & Pindel & 49.03060 & 0.4680 \\ BC & 83 & 66 & BC & 38.01316 & 0.5478 \\ Broad assembly & 80 & 67 & BI2 & 38.58756 & 0.5360 \\ Sanger & 76 & 69 & SI1 & 39.20459 & 0.5244 \\ Broad mapping & 65 & 74 & BI1 & 43.60046 & 0.4810 \\ Oxford Platypus & 60 & 55 & OX1 & 60.20797 & 0.3300 \\ \hline \end{tabular} \end{table} \begin{figure}[h!] \centering \includegraphics[width=0.6\textwidth]{miseq} \caption{Performance of indel detection methods in 1000 Genomes project on the AFR191 sample set as assesed via high-depth resequencing validation. Sets are Boston College FreeBayes (BC), Broad Institute GATK UnifiedGenotyper (BI1), Sanger Institute Samtools (SI1), Broad Institute GATK HaplotypeCaller (BI2), Oxford Platypus (OX1), Oxford Cortex (OX2).} \label{fig:1000Gindels} \end{figure} \subsection{Sensitivity to low-frequency variation} \label{sec:lowfreq} Current methods for haplotype-based variant detection rely on assembly methods, which can be applied globally \citep{cortex} or locally \citep{dindel}. These methods remove reference bias from the analysis of short-read sequencing data, but the generation of assemblies of large genomes requires pruning of low-frequency kmer observations. While low-frequency kmers are often generated by sequencing error, in many cases they represent true variation, and thus this pruning reduces the sensitivity of existing assembly methods to true low-frequency variants. In many contexts it is important to accurately and sensitively assess low-frequency variation, such as in experiments involving large numbers of samples, in the detection of sub-clonal mutations in cancer, and in pooled sequencing projects such as viral and metaganomic studies. Our method does provide direct description of haplotypes, but because these haplotypes are generated only where multiple variations segregate an observed haplotype from the reference, it maintains sensitivity to low-frequency variants. Results from the experiments described in \ref{sec:1000Gcomparisons} demonstrate that our method, while acting as a form of local assembly, does not incur the same sensitivity penalties seen in both local and global assembly methods. We assess this using the count of minor alternate alleles as reported by each caller (figure \ref{fig:lowfreqsens}). These results indicate that both global and local assembly methods suffer significant decrease in sensitivity to low-frequency variants, although the effect is less severe for local assembly. In this test our method performs as well or better than the GATK UnifiedGenotyper, which is purely mapping-based, the GATK HaplotypeCaller, which uses local assembly, and the string graph assembler (SGA) which is a global, reference-free assembly approach. \begin{figure}[h!] \centering \includegraphics[width=0.8\textwidth]{low_frequency_sensitivity} \caption{Sensitivity to low-frequency variants of various detection methods, as assessed in 191 samples of African ancestry in the 1000 Genomes low-coverage cohort. BC2 is FreeBayes, BI1 is the GATK UnifiedGenotyper, BI2 is the GATK HaplotypeCaller, and SI2 is the global assembler SGA.} \label{fig:lowfreqsens} \end{figure} \subsection{Haplotype-based consolidation of small variant calls} \label{sec:ensemble} Ensemble methods have been shown to provide superior performance to component inference methods in many contexts \citep{opmac99}. We hypothesize that ensemble approaches to variant detection from short-read sequencing may provide improved performance in the context of variant detection. While ensemble approaches have already been successfully applied to SNPs in large-scale resequencing projects \citep{1000GPhaseI}, their application to other variant classes is problematic because detectors can output the same allele in slightly different ways. In the 1000 Genomes Phase I integrated callset, we find 181,567 cases in which incorrect description of small variants results in an ``impossible'' haplotype, such as where a small variant is phased inside of of a deletion, or multiple deletions overlap within 50 base pairs. We can avoid such errors by using an approach that establishes the local haplotype structure around variants prior to using statistical phasing approaches to estimate large-scale haplotypes. %\section{Generalizing variant detection to multiallelic loci and non-uniform copy number} \section{Methods} \label{sec:model} \subsection{Definitions} At a given genetic locus we have $n$ samples drawn from a population, each of which has a copy number or multiplicity of $m$ within the locus. We denote the number of copies of the locus present within our set of samples as $M = \sum_{i=1}^n m_i$. Among these $M$ copies we have $K$ distinct alleles, $b_1,\ldots,b_K$ with allele counts $c_1,\ldots,c_K$ and frequencies $f_1,\ldots,f_K$. Each individual has an unphased genotype $G_i$ comprised of $k_i$ distinct alleles $b_{i_1},\ldots,b_{k_i}$ with corresponding genotype allele counts $c_{i_1},\ldots,c_{i_{k_i}}$ and genotype allele frequencies $f_{i_1},\ldots,f_{i_{k_i}} : f_i = c_i / k_i$. $G_i$ may be equivalently expressed as a multiset of alleles $B_i : | B_i | = m_i$. For the purposes of our analysis, we assume that we cannot accurately discern phasing information outside of the haplotype detection window, so our $G_i$ are unordered and all $G_i$ containing equivalent alleles and frequencies are regarded as equivalent. Assume a set of $s_i$ sequencing observations $r_{i_1},\ldots,r_{i_{s_i}} = R_i$ for each sample in our set of $n$ samples such that there are $ \sum_{i=1}^n |R_i|$ reads at the genetic locus under analysis. We use $q_i$ to denote the mapping quality, or probability that the read $r_i$ is mis-mapped against the reference. \subsection{A Bayesian approach} \label{sec:modeloverview} To genotype the samples at a specific locus, we could simply apply a Bayesian statistic relating $P(G_i|R_i)$ to the likelihood of sequencing errors in our reads and the prior likelihood of specific genotypes. However, this maximum-likelihood approach limits our ability to incorporate information from other individuals in the population under analysis, which can improve detection power. Given a set of genotypes $G_1,\ldots,G_n$ and a set of observations observations $R_1,\ldots,R_n$ for all individuals at the current genetic locus, we can use Bayes' theorem to related the probability of a specific combination of genotypes to both the quality of sequencing observations and \emph{a priori} expectations about the distribution of alleles within a set of individuals sampled from the same population: \begin{equation} P(G_1,\ldots,G_n|R_1,\ldots,R_n) = { P(G_1,\ldots,G_n) P(R_1,\ldots,R_n|G_1,\ldots,G_n) \over P(R_1,\ldots,R_n)} \\ \end{equation} \begin{equation} \label{eq:bayesian} P(G_1,\ldots,G_n|R_1,\ldots,R_n) = { P(G_1,\ldots,G_n) \prod_{i=1}^n P(R_i|G_i) \over \sum_{\forall{G_1,\ldots,G_n}} P(G_1,\ldots,G_n) \prod_{i=1}^n P(R_i|G_i) } \end{equation} In this formulation, $P(R_1,\ldots,R_n|G_1,\ldots,G_n) = \prod_{i=1}^n P(R_i|G_i)$ represents the likelihood that our observations match a given genotype combination (our data likelihood), and $P(G_1,\ldots,G_n)$ represents the prior likelihood of observing a specific genotype combination. We estimate the data likelihood as the joint probability that the observations for a specific individual support a given genotype. We use a neutral model of allele diffusion conditioned on an estimated population mutation rate to estimate the prior probability of sampling a given collection of genotypes. Except for situations with small numbers of samples and potential alleles, we avoid the explicit evaluation of the posterior distribution as implied by (\ref{eq:bayesian}), instead using a number of optimizations to make the algorithm tractable to apply to very large datasets (see section \ref{sec:genotyping}). \subsection{Estimating the probability of sequencing observations given an underlying genotype, $P(R_i|G)$} Given a set of reads $R_i = r_{i_1},\ldots,r_{i_{s_i}}$ from a sample at a given locus, we can extract a set of $k_i$ observed alleles $B'_i = b'_1,\ldots,b'_{k_i}$ corresponding to underlying alleles $b_1,\ldots,b_i$ which encapsulate the potential set of represented variants at the locus in the given sample, including erroneous observations. Each of these observed alleles $b'_i$ has a count $o_f$ within the observations of the individual sample $: \sum_{j=1}^{k_i} o_j = s_i$ and corresponds to a true allele $b_i$. The probability of obtaining a single observation $b_i'$ provided a genotype in a single sample is: \begin{equation} P(b'_i|G) = \sum_{\forall(b_i \in G)} { f_i P(b'_i|b_i) } \end{equation} Here $f_i$ is the genotype allele frequency of $b_i$ in $G$. We observe that the process generating reads from a given locus in a given sample is a multinomial process in which the sampling probabilities for each allele are governed by both the counts of alleles in the genotype and the error process that generates $b'_i$ from underlying $b_i$. However, for the case that the base observation agrees with the underlying genotype, sampling probability dominates the probability that the observations are derived from a given genotype, and in the case when the observation does not agree with the genotype, the dominant process is the observation error. Following this observation we introduce the approximation that: \begin{equation} P(b'|b) = \left\{ \begin{array}{ll} 1 & \mbox{if } b' = b \\ P(error) & \mbox{if } b' \neq b \end{array} \right. \end{equation} Here $P(error)$ is the probability that the base is erroneous as determined by the sequencing process used to generate the reads from the sample. Provided this approximation, we can estimate the probability of a given set of reads conditioned on an underlying genotype by using the multinomial sampling probability to estimate the probability of obtaining the observations that support the genotype scaled by the probability that the observations that disagree with the genotype are erroneous: \begin{equation} P(R_i|G) \approx {s_i \choose o_1,\ldots,o_{k_i} } \prod_{j=1}^{k_i} { f_{i_j}^{o_j} } \prod_{l=1}^{s_i} { P(b'_l | b_l) } \end{equation} %which define $G_i$, $f_{i_1},\ldots,f_{i_{k_i}}$. %If we had perfect observations of a locus, $P(R_i|G_i)$ for any individual would approximate the probability of sampling observations $R_i$ out of $G_i$ with replacement. This probability is given by the multinomial distribution in $s_i$ over the probability $P(b_l)$ of obtaining each allele from the given genotype, which is ${f_{i_j} \over m_i}$ for each allele frequency in the frequencies which define $G_i$, $f_{i_1},\ldots,f_{i_{k_i}}$. % TODO f_k_i % Furthermore, we must sum $P(R_i|G_i)$ for all possible $R_i$ combinations $\forall(R_i \in G_i : | R_i | = k_i)$ drawn from our genotype to obtain the joint probability of $R_i$ given $G_i$, as each $\prod_{l=1}^{s_i} { P(b'_l | b_l) }$ only accounts for the marginal probability of the a specific $R_i$ given $B'_i$. \begin{comment} \begin{equation} P(R_i | G_i) \approx P(B'_i | G_i) = { s_i! \over { \prod_{j=1}^{k_i} o'_j ! } } \prod_{j=1}^{k_i} { \left({f_{i_j} \over m_i}\right)^{o'_j} } \prod_{l=1}^{s_i} { P(b'_l | b_l) } \end{equation} This extends $P(R_i|G_i)$ as follows: \begin{equation} P(R_i | G_i) = \sum_{\forall(R_i \in G_i)} \left( { s_i! \over { \prod_{j=1}^{k_i} o'_j ! } } \prod_{j=1}^{k_i} { \left({f_{i_j} \over m_i}\right)^{o'_j} } \prod_{l=1}^{s_i} { P(b'_l | b_l) } \right) \end{equation} \end{comment} \subsection{Genotype combination priors, $P(G_1,\ldots,G_n)$} \subsubsection{Decomposition of prior probability of genotype combination} Let $G_1,\ldots,G_n$ denote the set of genotypes at the locus and $f_1,\ldots,f_k$ denote the set of allele frequencies which corresponds to these genotypes. We estimate the prior likelihood of observing a specific combination of genotypes within a given locus by decomposition into resolvable terms: \begin{equation} P(G_1,\ldots,G_n) = P(G_1,\ldots,G_n \cap f_1,\ldots,f_k) \end{equation} The probability of a given genotype combination is equivalent to the intersection of that probability and the probability of the corresponding set of allele frequencies. This identity follows from the fact that the allele frequencies are derived from the set of genotypes and we always will have the same $f_1,\ldots,f_k$ for any equivalent $G_1,\ldots,G_n$. Following Bayes' Rule, this identity further decomposes to: \begin{equation} P(G_1,\ldots,G_n \cap f_1,\ldots,f_k) = P(G_1,\ldots,G_n | f_1,\ldots,f_k) P(f_1,\ldots,f_k) \end{equation} We now can estimate the prior probability of $G_1,\ldots,G_n$ in terms of the genotype combination sampling probability, $P(G_1,\ldots,G_n | f_1,\ldots,f_k)$, and the probability of observing a given allele frequency in our population, $P(f_1,\ldots,f_k)$. \subsubsection{Genotype combination sampling probability $P(G_1,\ldots,G_n | f_1,\ldots,f_k)$} The multinomial coefficient ${M \choose c_1,\ldots,c_k }$ gives the number of ways which a set of alleles with frequencies $f_1,\ldots,f_k : f_i = c_i/M$ may be distributed among $M$ copies of a locus. For phased genotypes $\hat{G_i}$ the probability of sampling a specific $\hat{G_1},\ldots,\hat{G_n}$ given allele frequencies $f_1,\ldots,f_k$ is thus provided by the inverse of this term: \begin{equation} \label{eq:phasedsampling} P(\hat{G_1},\ldots,\hat{G_n} | f_1,\ldots,f_k) = {M \choose c_1,\ldots,c_k }^{-1} \end{equation} However, our model is limited to unphased genotypes because our primary data only allows phasing within a limited context. Consequently, we must adjust (\ref{eq:phasedsampling}) to reflect the number of phased genotypes which correspond to the unphased genotyping $G_1,\ldots,G_n$. Each unphased genotype corresponds to as many phased genotypes as there are permutations of the alleles in $G_i$. Thus, for a given unphased genotyping $G_1,\ldots,G_n$, there are $\prod_{i=1}^n { m_i \choose c_{i_1}, \ldots, c_{i_{k_i}}}$ phased genotypings. In conjunction, these two terms provide the probability of sampling a particular unphased genotype combination given a set of allele frequencies: \begin{equation} \label{eq:unphasedsampling} P(G_1,\ldots,G_n | f_1,\ldots,f_k) = { M \choose c_1,\ldots,c_k }^{-1} \prod_{i=1}^n { m_i \choose c_{i_1}, \ldots, c_{i_{k_i}}} \end{equation} %\begin{equation} % = %\frac{1}{M!} %\prod_{l=1}^k f_l! %\prod_{i=1}^n \frac{m_i!}{\prod_{j=1}^{k_i} f_{i_j}!} %\end{equation} In the case of a fully diploid population, the product of all possible multiset permutations of all genotypes reduces to $2^h$, where $h$ is the number of heterozygous genotypes, simplifying (\ref{eq:unphasedsampling}) to: \begin{equation} P(G_1,\ldots,G_n | f_1,\ldots,f_k) = 2^h { M \choose c_1,\ldots,c_k }^{-1} \end{equation} \subsubsection{Derivation of $P(f_1,\ldots,f_k)$ by Ewens' sampling formula} Provided our sample size $n$ is small relative to the population which it samples, and the population is in equilibrium under mutation and genetic drift, the probability of observing a given set of allele frequencies at a locus is given by Ewens' sampling formula \citep{ewens72}. Ewens' sampling formula is based on an infinite alleles coalescent model, and relates the probability of observing a given set of allele frequencies to the number of sampled chromosomes at the locus ($M$) and the population mutation rate $\theta$. The application of Ewens' formula to our context is straightforward. Let $a_f$ be the number of alleles among $b_1,\ldots,b_k$ whose allele count within our set of samples is $c$. We can thus transform our set of frequencies $f_1,\ldots,f_k$ (equivalently, allele counts, $c_1,\ldots,c_k$) into a set of non-negative frequency counts $a_1,\ldots,a_M : \sum_{c=1}^M{ca_c} = M$. As many $c_1,\ldots,c_k$ can map to the same $a_1,\ldots,a_M$, this transformation is not invertible, but it is unique from $a_1,\ldots,a_M$ to $c_1,\ldots,c_k$. Having transformed a set of frequencies over alleles to a set of frequency counts over frequencies, we can now use Ewens' sampling formula to approximate $P(f_1,\ldots,f_k)$ given $\theta$: \begin{comment} \begin{equation} P(f_1,\ldots,f_k) = P(a_1,\ldots,a_M) = {M! \over \theta(\theta+1)\cdots(\theta+M-1)}\prod_{j=1}^M{\theta^{a_j} \over j^{a_j} a_j!} \end{equation} \end{comment} \begin{equation} P(f_1,\ldots,f_k) = P(a_1,\ldots,a_M) = {M! \over \theta \prod_{z=1}^{M-1}(\theta+z)} \prod_{j=1}^M{\theta^{a_j} \over j^{a_j} a_j!} \end{equation} In the bi-allelic case in which our set of samples has two alleles with frequencies $f_1$ and $f_2$ such that $f_1 + f_2 = M$: \begin{equation} P(a_{f_1} = 1, a_{f_2} = 1) = {M! \over \prod_{z=1}^{M-1}(\theta+z)} {\theta \over f_1 f_2} \end{equation} While in the monomorphic case, where only a single allele is represented at this locus in our population, this term reduces to: \begin{equation} P(a_M = 1) = {(M-1)! \over \prod_{z=1}^{M-1}(\theta+z)} \end{equation} In this case, $P(f_1,\ldots,f_k) = 1 - \theta$ when $M = 2$. This is sensible as $\theta$ represents the population mutation rate, which can be estimated from the pairwise heterozygosity rate of any two chromosomes in the population \citep{watterson1975, tajima1983}. \subsection{Expanding the model to incorporate the observability of the locus and alleles} \label{sec:modelsequencability} The bayesian model described in section \ref{sec:modeloverview} can generate posterior estimates based on sequencing quality information and genotype distribution in a panel of samples. However, this estimate can incorporate only information captured in base quality information and read counts. This may fail to assess the ability of the sequencing and alignment methods to accurately characterize the locus and alleles that we genotype, which is an important consideration for downstream use of sequencing-derived genotype data. Previous authors have addressed this limitation by adding post-processing steps to recalibrate the estimated quality of variants using training sets of known variants and known artifacts. Once variant calls have been made we can annotate them with a variety of features and apply standard machine learning methods to ``recalibrate'' the quality estimates produced from genotype distribution, allele frequency, observation counts, and base quality. For instance, \cite{gatk2011} apply a guassian mixture model (VQSR) to features extracted from putatively polymorphic loci to remove variants which are outliers in multiple feature dimensions. % also used in 1000G project e.g. SVM Problematically, such an approach requires a training set, which may not be applicable in contexts with limited validation data, such as is commonly the case in non-model organisms. Furthermore, the training set may bias our results towards established patterns, decreasing sensitivity to novel variation that might have been previously uncharacterized due to technological limitations. In contrast, we address the issue of loci sequencability in a general, \emph{a priori} fashion by extending the traditional Bayesian variant detection model to incorporate an indicator, $S$, which describes the ability of our sequencing and alignment methods to characterize the locus we are considering. We define $S = true$ when we can sequence the locus and alleles and $S = false$ otherwise, and redefine our model (\ref{eq:bayesian}) to estimate the posterior probability of a particular set of genotypes in our samples ($G_1,\ldots,G_n$) and that the locus is sequenceable ($S$) given our aggregate read evidence ($R_1,\ldots,R_n$): \begin{equation} \label{eq:bayesianandmodel} P(G_1,\ldots,G_n, S | R_1,\ldots,R_n) = { P(G_1,\ldots,G_n) P(S) \prod_{i=1}^n P(R_i|G_i) \over \sum_{\forall{G_1,\ldots,G_n}} ( P(G_1,\ldots,G_n) P(S) \prod_{i=1}^n P(R_i|G_i) ) } \end{equation} We will describe the development of $P(S)$ using aggregate statistics built from the read evidence overlapping the locus in section \ref{sec:sequencable}. \subsection{Estimation of the probability that the locus is sequencable $P(S)$} \label{sec:sequencable} For accurate variant detection via resequencing, we require that the locus in question is sequencable. That is, we require that the reference is accurate, that we have an accurate model of copy number at the locus, that we have genomic coverage, and that reads can be aligned to the alleles of interest in the region. In a case where these conditions are met, we assume $S = true$. Where it is not, $S = false$. % TODO cleanup, remove duplication with previous section The sequenceability of a locus and its alleles is assumed under previous Bayesian variant detection models \citep{marth99, samtools, li2011stats}. Uncertainty about the genomic model characterization has been incorporated into data likelihoods or detection thresholds using read mapping quality \citep{snptools, maq}. In practice, the incorporation of confidence in the characterizability of the locus and alleles requires the reclassification of variant calls on the basis of aggregate metrics describing the calls, such as the ratio of observations for an alternate allele to those for a reference allele among apparent heterozygotes, or the average observation quality (base quality) of alleles. In practice, variant detectors have been modified to supply annotations to downstream classifiers that ``recalibrate'' the quality estimates, but no existing method has incorporated estimates of sequenceability into the Bayesian inference model. A quality score recalibrator utilizes training data, particularly as sets of known variants or validated errors, to describe the distribution of true events and errors across the space of possible annotations in the data set to be recalibrated. The variant calling error function as described by these aggregate metrics can then be approximated using a variety of machine learning methods, such as support vector machines \citep{snpsvm} or a gaussian mixture model as implemented in the GATK's Variant Quality Score Recalibrator (VQSR). % Feature-based recalibration and detection methods have wide utility in variant detection, and we can expect them to become more comon in practice, but they can also be problematic in that they require adequate training sets, which may not be available in a specific experimental context. We observe that $S$ is proportional to a number of variables which can be estimated directly from the observations covering a genomic locus. For instance, if the locus and alleles are observable without bias, we expect the count of observations of a sample supporting a particular alternate allele $R_i \equiv b$ to approximate its frequency in the correct genotype $G_i$ for the sample, $|R_i \equiv b|/|R_i| \approx |b \in G_i|/m_i$. Deviation from this expectation which is observed across many samples may indicate problems mapping reads containing the alternate against the reference, or hidden copy-number variations or paralogs that might frustrate our observation of the locus. Similarly, if we use whole-genome shotgun techniques, we have a number of other expectations about behavior of the reads in aggregate with respect to a particular allele and locus. We will express these in terms of a bias terms $B_*$ that equal $0$ when there is no bias for a particular metric. In an unbiased context, we expect half of our reads to place to either side of the locus (placement bias $B_p$): \begin{equation} P(B_p = 0) \propto \binom{|R_{left}|}{|R|} 0.5^{|R_{left}|} \end{equation} We expect half to contain the allele in the first half of their length (cycle bias $B_c$): \begin{equation} P(B_c = 0) \propto \binom{|R_{start}|}{|R|} 0.5^{|R_{start}|} \end{equation} Half should be derived from each strand of DNA (strand bias $B_s$): \begin{equation} P(B_s = 0) \propto \binom{|R_{forward}|}{|R|} 0.5^{|R_{forward}|} \end{equation} And, the aggregate fraction of reads supporting a particular allele in samples with a particular genotype should approximate the frequency of the allele in that particular genotype (allele balance, $B_a$). Recall that the distinct alleles in a particular set of genotypes are $b_1,\ldots,b_K$, the corresponding allele frequencies in the set are $f_1,\ldots,f_k$, and the observation counts are represented by $o_1,\ldots,o_K$: %\begin{equation} %o_i = |\{r \in R : r \equiv b_i\}| %\end{equation} \begin{equation} P(B_a = 0) \propto \prod_{\forall g \in \{G\}} \binom{ |R| }{ o_1,\ldots,o_K } \prod_{j=1}^{K} f_j^{o_j} \end{equation} We use these relationships to determine relationships in $P(S)$ under various configurations of alleles and genotypes in the samples: \begin{equation} P(S) \propto P(B_p = 0) P(B_c = 0) P(B_s = 0) P(B_a = 0) \end{equation} \begin{comment} \begin{eqnarray} P(S) \propto & & multinom([ |\{R \equiv b\}| \forall b \in K] ; \sum_{i=1}^{n} |R_i|, f_i,\ldots,f_K) \\ & \times \prod_{\forall b \in K} & binom(|forwardStrand(\{R \equiv b\})|; |\{R \equiv b\}|, 1/2) \\ & & \times binom(|placedLeft(\{R \equiv b\})|; |\{R \equiv b\}|, 1/2) \\ & & \times binom(|placedRight(\{R \equiv b\})|; |\{R \equiv b\}|, 1/2) \end{eqnarray} Here $binom(k; n, p)$ is the binomial probability mass function of $k$ successes in $n$ trials with probability $p$. Similarly, $multinom(k_1,\ldots,k_n; n, p_1,\ldots,p_i)$ provides the multinomial PMF for results $k_1,\ldots,k_n$ in $n$ trials with probabilities $p_1,\ldots,p_i$. As defined before, we have a set of reads $\{R\}$ at the locus and a set of alleles $K = b_1,\ldots,b_K$ in a given genotyping across all the samples. \end{comment} %% TODO \section{Direct detection of phase from short-read sequencing} By modeling multiallelic loci, this Bayesian statistical framework provides the foundation for the direct detection of longer, multi-base alleles from sequence alignments. In this section we describe our implementation of a haplotype-based variant detection method based on this model. Our method assembles haplotype observations over minimal, dynamically-determined, reference-relative windows which contain multiple segregating alleles. To be used in the analysis, haplotype observations must be derived from aligned reads which are anchored by reference-matching sequence at both ends of the detection window. These haplotype observations have derived quality estimations which allow their incorporation into the general statistical model described in section \ref{sec:model}. We then employ a gradient ascent method to determine the maximum \emph{a posteriori} estimate of a mutual genotyping over all samples under analysis and establish an estimate of the probability that the loci is polymorphic. \subsection{Parsing haplotype observations from sequencing data} \label{sec:parsing} In order to establish a range of sequence in which multiple polymorphisms segregate in the population under analysis, it is necessary to first determine potentially polymorphic windows in order to bound the analysis. This determination is complicated by the fact that a strict windowing can inappropriately break clusters of alleles into multiple variant calls. We employ a dynamic windowing approach that is driven by the observation of multiple proximal reference-relative variations (SNPs and indels) in input alignments. Where reference-relative variations are separated by less than a configurable number of non-polymorphic bases in an aligned sequence trace, our method combines them into a single haplotype allele observation, $H_i$. The observational quality of these haplotype alleles is given as $\min ( q_l \, \forall \, b'_i \in H_i , \, Q_i)$, or the minimum of the supporting read's mapping quality and the minimum base quality of the haplotype's component variant allele observations. \begin{figure}[h!] \centering \includegraphics[width=0.8\textwidth]{haplotype_calling} \caption{The direct detection of phase from short-read sequencing traces and counting of haplotypes across dynamically-determined windows.} \label{fig:haplotypecalling} \end{figure} \subsection{Determining a window over which to assemble haplotype observations} At each position in the reference, we collect allele observations derived from alignments as described in \ref{sec:parsing}. To improve performance, we apply a set of input filters to exclude alleles from the analysis which are highly unlikely to be true. These filters require a minimum number of alternate observations and a minimum sum of base qualities in a single sample in order to incorporate a putative allele and its observations into the analysis. We then determine a haplotype length over which to genotype samples by a bounded iterative process. We first determine the allele passing the input filters which is longest relative to the reference. For instance, a longer allele could be a multi-base indel or a composite haplotype observation flanked by SNPs. Then, we parse haplotype observations from all the alignments which fully overlap this window, finding the rightmost end of the longest haplotype allele which begins within the window. This rightmost position is used to update the haplotype window length, and a new set of haplotype observations are assembled from the reads fully overlapping the new window. This process repeats until the rightmost end of the window is not partially overlapped by any haplotype observations which pass the input filters. This method will converge given reads have finite length and the only reads which fully overlap the detection window are used in the analysis. \subsection{Detection and genotyping of local haplotypes} \label{sec:genotyping} Once a window for analysis has been determined, we parse all fully-overlapping reads into haplotype observations which are anchored at the boundaries of the window. Given these sets of sequencing observations $r_{i_1},\ldots,r_{i_{s_i}} = R_i$ and data likelihoods $P(R_i|G_i)$ for each sample and possible genotype derived from the putative alleles, we then determine the probability of polymorphism at the locus given the Bayesian model described in section \ref{sec:model}. To establish a maximum \emph{a posteriori} estimate of the genotype for each sample, we employ a convergent gradient ascent approach to the posterior probability distribution over the mutual genotyping across all samples under our Bayesian model. This process begins at the genotyping across all samples $G_1,\ldots,G_n$ where each sample's genotype is the maximum-likelihood genotype given the data likelihood $P(R_i|G_i)$: \begin{equation} G_1,\ldots,G_n = \underset{G_i}{\operatorname{argmax}} \; P(R_i|G_i) %:= \{ G_i | \forall G : P(R_i|G_i) >= P(R_i|G) \} \end{equation} The posterior search then attempts to find a genotyping $G_1,\ldots,G_n$ in the local space of genotypings which has higher posterior probability under the model than this initial genotyping. In practice, this step is done by searching through all genotypings in which a single sample has up to the $N$th best genotype when ranked by $P(R_i|G_i)$, and $N$ is a small number (e.g. 2). This search starts with some set of genotypes $G_1,\ldots,G_n = \{G\}$ and attempts to find a genotyping $\{G\}'$ such that: \begin{equation} P(\{G\}'|R_1,\ldots,R_n) > P(\{G\}|R_1,\ldots,R_n) \end{equation} $\{G\}'$ is then used as a basis for the next update step. This search iterates until convergence, but in practice must be bounded at a fixed number of steps in order to ensure optimal performance. As the quality of input data increases in coverage and confidence, this search will converge more quickly because the maximum-likelihood estimate will lie closer to the maximum \emph{a posteriori} estimate under the model. This method incorporates a basic form of genotype imputation into the detection method, which in practice improves the quality of raw genotypes produced in primary allele detection and genotyping relative to methods which only utilize a maximum-likelihood method to determine genotypes. Furthermore, this method allows for the determination of marginal genotype likelihoods via the marginalization of assigned genotypes for each sample over the posterior probability distribution. \subsection{Probability of polymorphism} Provided a maximum \emph{a posteriori} estimate of the genotyping of all the individuals in our sample, we might like establish an estimate of the quality of the genotyping. For this, we can use the probability that the locus is polymorphic, which means that the number of distinct alleles at the locus, $K$, is greater than 1. While in practice the space of possible genotypings is too great to integrate over, it is possible to derive the probability that the loci is polymorphic in our samples by summing across the monomorphic cases: \begin{equation} \label{eq:probpoly} P(K > 1 | R_1,\ldots,R_n) = 1 - P(K = 1 | R_1,\ldots,R_n) %= %1 - \sum_{\forall(G_i,\ldots,G_n : K = 1)} P(G_i,\ldots,G_n|R_i,\ldots,R_n) \end{equation} Equation (\ref{eq:probpoly}) thus provides the probability of polymorphism at the site, which is provided as a quality estimate for each evaluated locus in the output of FreeBayes. \subsection{Marginal likelihoods of individual genotypes} Similarly, we can establish a quality estimate for a single genotype by summing over the marginal probability of that specific genotype and sample combination under the model. The marginal probability of a given genotype is thus: \begin{equation} \label{eq:marginals} P(G_j|R_i,\ldots,R_n) = \sum_{\forall(\{G\} : G_j \in \{G\})} P(\{G\}|R_i,\ldots,R_n) \end{equation} In implementation, the estimation of this term requires us to must sample enough genotypings from the posterior in order to obtain well-normalized marginal likelihoods. In practice, we marginalize from the local space of genotypings in which each individual genotype is no more than a small number of steps in one sample from the maximum \emph{a posteriori} estimate of $G_i,\ldots,G_n$. This space is similar to that used during the posterior search described in section \ref{sec:genotyping}. We apply (\ref{eq:marginals}) to it to estimate marginal genotype likelihoods for the most likely individual genotypes, which are provided for each sample at each site in the output of our implementation. %\subsection{Extensions to the method} % %\subsection{Using prior empirical information to improve detection} \bibliography{references}{} %\bibliographystyle{plainnat} \bibliographystyle{genome_research} \end{document} freebayes-1.3.6/paper/miseq.png000066400000000000000000002356341417247743000164470ustar00rootroot00000000000000PNG  IHDRSn pHYs.#.#x?v IDATxy\U7{tg_ ! a DnsPF+29978 AR.$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i2.y衇rW555_]($5n{n(VcccGGĉS)h(QEQdhJ֖cVWWJ)|>LaJ.;kF/w-X.J<\%֭[ƍWB('0 tya֯_w +zڴi客XSNaoRQU5&/= .T̉QuGG2x~q„ 宅R0dӖG}H/PR1rۛ}{:l_`mYvcasJ;aJ;'@*W߱cu7L}q_`旮_v ft\T=GQ#mjo\ٴ-ont\:KT@őEYpN;3NV |E 針~画b_`u>YB*Z;/O\QܵT /0 /ʶo+w%>@QNX\̰8:v7xm0۶PG^G{_*]3deꦌ>޿jmܼg^**Ln?Kk^*JaoLg;\۶U"J VU)s>ZچU @Cn -۟-W%B Q.lf۷ !\fBa36 !\>TԌ/W%B ] UuSU @Cn_6+W%B |e?*7rP!$Zȧۺa?ed]eq׿s\k)VW͹\.m _'q/o~¾ߗVl%A_EQ|]H|>_({Eod5 38H~7<&᯦dI`$#nT*5jf1W\ <S]/d]PѺ?w`$@|i>ϗ @H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~F 4_$ i$I#H/@H~&S3VG;UlܜZ pT:O3jCu ,w@ \]MAK>hc>nAl |-pFMxcţG_*lfn;O H.޽=#ݣx]G|Ӧ[.=dCЮm]3:\e /;sוֹu |և'I_z`)_`xOM<6QIjꏦ|R_`XY Gjwu\Am9il}mTSt h񮠯MD CxE[Lu\qasL86L Oz-v g}AA[f0] |-ڣgt:bz|n_aUzVq= uKܓ(ߴ)ؕ(VGl'j1E:L}xjpLi_l ֶgjX_`?`X3ͅԛg0H-As4g|A3X=?l T /Pxu{ɣ8QC:uv[%Wۂ͝Π=*մ#!7ޟ}z k^vd5b_bI~bŽލV=pJu{ (Z[[;)N5&*a'/Pt`Ǜpt%)jwukWVu_X̚xF̫ fזդ1@(VxT}vg~wc1=@yH~bN|xŸo ZZИy 7=EK;%Md۶oή Շ%__RomxcqlWԤy`xI~ԇ㫢_m {޷#kk hHG ՇGԇ@ SΛo?n Uc7ԉpzMo巴ϴKZmAnplFng86_ . 56k:-}.׶q}x_M R,@P#wOڢxYk%~5^߱⧚:ҟLPJ~U0D㾗<=S7tӽ޻nݺ f̘qg~>^%'Rq q ArK-sAc~?KYA}JF;ܚ>^K.]tÏ|#ƌSf“Ƅ'IAbKv)\#skST"@I~Є zwy-)7x+gԨQC\ 0է;nWؙz`'H!.֭[8z- /}/|pǎ;vxwu?Cԧ? Y8&ř)c{h2U@R͛ ?~E}g~t}W_O?~8_W]uU믿~ɒ%\<M6 G3j ⥭?ҭzA0gΜ|;vs9_Wz5. ë5^e`gLs'v;;'&-͛7_veAax 7moo;>_v ꫯ|wmPڞ MO鹩})d>Oر#.SNujmm `Μ9 .$rAKKC=4@?z<3į'z>cQF[s-3>GpYgKguV{l*sOg?e=W Ǥ?']$%O|??=z1=\ׇ,5/]0(fHc3Ŋ_J/|`0$%o~W^ NjժrgzУ?ă1wļ=2.`[n7ͮwæM>̜9svؼys5lذ+rpI&*Vxpm86^3m9v`Fx S K3 w/Ag{s矖5!3C⊱e˖k>zqg[.qAfS)%(]C(w{awn,~-n_0.ȄAq{LDspžxA}vT+׼Z*T 麹](pH#Q">9a[$F%^x?y/{eM{Qz2Dέ[s~e.]v`U5/R757]qD&H;M7ƣh{$q&~Zף)=ūSU}3l֏8yHwPuE]t1edVWW}ΪC]˲twּuuuE)cpeGɓflMMM:.w- JUHm2%5mQC*WUXKua (;5JoˇeUnK;S{>1j,l NpQWUUu?& CWښNkj<3i<9'S`H~nҥ~{+bttted{PntzE5&7n\-;vczI(w/$Osss6/'qApw^7)(x[N:mlނa7`SBW JݨHEtUt%~%O>/!j_${^ןΟ?…{\__ߕ644eX>M=Cw_MJondǧ>c_˟Ў;nϗ]v>~\}}}ׇWIS`RJL ' |~x`uf>x`'?ikk >Ϝ9s͚5A]v{vڮtP cR7<jTՐ:mlx\C`H~"n_?|ѢEA\3իWw}3g` !|=3lƍ3 qP FúT0!Ϊ  0*3en[K8~K;K,y>}+K2u FcSakaԨQoۋ9{^>q:_$q]wu}8kkk9㏟}K` dvww>쳋?|UUU<5\+k{ +JT/Pq$vw}hhh7o^'Μ9s\竮=yŋw^tEW]uU/| tPi*G0|~ѢE]?t:ݯӯ+;;Ǽmo`%KڵdK/Ӏۿ/@53>_V믿c_xW_}53fvi7DK['tI'T*d@H~F 4_$ i2.g憹\ H$/{|Vr{aOI?zc\8z {ǹqg؏=-Sot[;;׿Ҹu7$}]ï[=ejX[7cS{)]=ql9O>jYN>&]?l@%T|o^732o›Zq?X+^{ס|>ֲm]O޳'g1uCZTox,`zٱktǢDsv7OkwwM}ٗkX 0RMqurM]E>yNQz-u֦_\ '籓ZH~Vނ 5unG d_KW~J[UG~Gf>U@$'L9)˾-ٝ݇x+KsL /ӥ[BtXu o'=%ĺ]:\o{Lo[5z!ck%sCMzTM+ʿ*@_ rgtIa3[S\ .Y8לhr}ԙ3>6PNJkQ{ J#,M@as{ۺRܙo{b]=SGzٱ7êxȘ<=M۟@  $ xW[mf>ZR:-=>u1Ŝ{Կ7ž'7W  $,U Tuf^L pyEam(VzT@~w;6L-^(lΛt)#&}ci$#EbXC/_-l}dNP3Ym(I~>S] =ꍅ!>5gw6'鹸Y5b ss}iOydoN[=/.uѓnNٯ7J T /?\Gzÿ>FMT,OmaN\9P$Q6h7mnYl#߼oq3.)Su_ {r .;0 uӋWݬpXt_2vexs]^^ ~/}Eu\@]jG{V']HAoY~szg\%@2H~*S[?x g2eՏuNJ/ˌ Y)WU v{Dq߳+v=w4Woc߳8[_0wTw3,g;7XYk \۵r_muht+jSH6=$\:[=eSsV|{ s/V|}ʈͿ̢nxSǾsƟ7=#RTtgr”s ;[Mۇ_c\[:T#ɿX{АE PY0uٱ7֤{:mom.בoe_cv_C0փgYo: 〈-=-W\Xz[ {/Q<怡4T8k+* Sλgk-%~G7lѫބ7?G|q'@7/@%9fcNm/_}R7#G~AXT |s '+[=a73?^hU+5Ơ3nTP7*lhH͜Κ_ZH/@%j56J8.ZswLQ,%}NUu8.U:hf8ԑDŽ>-E<q9him ֬/}9ҧ)uA 9/@%Z߲9zJIز_xaϴÿro'\J3ڕ߸!x;'>aښO<q'E˖F˖fμ/É~u*-.l=$Dz/w__:v ceG޵ zeuw~žfUwyr`W@ P:-]žc&=i4> {>='Ne75f躸qPvfoYAM@@ŹO7unn5o›? El>A> ᄉE^.Z<|风K>7:-;6ۃ֖xeWv-VА}XWn_ ϗ}uv:fv ~x=g ,aqkKvMODǁܯˏ5oeӂ>'OI=2xy=Ts(w-՟"4vn]޻V}{ծf:z47,ֶg|ʹM-+37 ~GՇsL=2:Mq}(Zt|mEn)nm)K|H惗ﻀiӫ>Weo9x}[s&@œT?8a8ْۜJzջzHwOw;ף RC>7n٢M+?8ZTsU}~-MulUm].\8o j늟$#Նey!5ϔdAjO<Rnё݅UviHo׻HZMAR./|☟AXzm0ҥ=n硪ꃗU{>co2g5c0X_3{W-Cs-U-jkW߸io(Žg&U zySs' 2GWOP3ȉg7msǟ%^צ^G˖ƍ^oե| Hul49Z"}`NrH~FÛJM\ GoK䠺fd2A.zIV_&u=-ǡQF ׂ(*wo/fꈣ42޴!nynqKRCXPyL=D=|w3l>=~o’7̚_8?hq~P]3ֿZL4sjP8xx7Hro<9}I{`f8e $ :|tf}p_JH cf{hssfײ_7-޵+=lga30>D/йli7eyA\G3q~cҲ1OԝC]Ú_mmeGD㪏}2\]uⶶnEY AN S>W^:f~hͪ9o[œ@OU$5¾[!;75mmP/& 3ˠl6Zt#M(lů+Y qlr>Ї!ƅŋ{/kXi37uKT@o\]ؓ>͙w]\H8k~oG6 wΘc5AW{_k┒ @%.;ܽsKh qKcRA>=&Z"uaz9pP!>c߮=JnTvgGjjR^ؑlqIxg5aj=$I1nEqG7sXc M/ jj9-C @TNoܣ0acO_o{~5K|WOj" *)-^lia32qO,?xŁ_-^}NT/}+"&z؛:lΞƦ<'xyrwؕs;hmqYS6I }םqKT*5gޞƧO='޵+F<ǂ3<T8/ǹ_ߕ¾ԱLJ9'XܑG_*goWwCm @e=*C/_[t~]t̷䪪|䲯O: 'Lۥ7o} S}AXkPR__Ը|>nk Z̼]c7u1՟25w.9+ľ 5[2⚚!36Gf{ ._ED˖QT9a9Sޜ{W0H_ 87H/@H~>. Lf|aA&o^p}MRT*&LDž;ӥ$Fg߼T7h*pH#Q">9aN[&Cs@]z#f uM<8yF7sM?H/@H~F 4_$g㫪0^@QGZ.Я]"V{[ZWV)(. ,M/7!܄|9|z^9 l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_ l$a#/@H~F 6_6 y晳:gϞYYYG}~+W&œ9s暃:iӦM6=蠃~Ϛ5^i ]gɗ\rɊ+*z̙3gΜ;o#Φoݺ7n\|y͛C]ve{oӦMaߚx 'ǾJJJ~x;g$ľƏgAJ[QhGyĉW\}y=m۶ ['O\ W_};k}oƍ7n8iҤ:+?eʔk_ Zd9,#F̘1㢋.رcNNN޽駽z ]ys>1c{A<^馛bgǍG}#/ !oƍaX裏 qQ bwԔ7) .5b[1[{vwyG+YYY_+'''aJ=}PVVVk-*`RXX%Q\\67Շ}PAAAC7)?ܹ+rWիW^^z駟>k֬ nᆳ>;33bL]_+===ֈ"Wb?NOOoٲe^mݺ877OC&n+IK)l 4i˯]>ySSS62[lή4UaÆ]!{]F"Ԇ|W%##_}+lӧO^^ޗ_~}Ȑ!gcqQQQvvv5ת'nw_zȑIйs璒z733S2Q?؏/8$#ƇGiii£>y'T\>I*++O~3I$%'''^~rΆuaȑwygZ|ۨQX[XXd۸q$ԩ$W2eʛoYYR ]\ IDATVvg3gΌoԨQQ񨷝P1F$IiժUQ>k[.sαƊ+_b@ǎkZ'@ MR=b]>ޤiӦF#{k|gկlٲXW^5 &"M*nqvboR;XcڴiՏ={vѵkoV4h4o'LoRGN818餓<]}ٔ)Sv6}ڴi/M6GuU $I>s x^z饝 >}X΋?r7|sFћo9>SR;@m_22d[oUy~x疗Ap9tA ~򓟤A0iҤc&htر OZH~u1"[|Æ {wm6{믿o߾k֬ `{*йsn!־馛;ISmڴ>snٟg;v^6i ];wٳǏ_yL͟:Tرcg͚e?cN9唊=j=5o^x;пSwq;/>|gF /n>L[3M68qԩSާO&Mt}С?M֧OW7n܌3Fѻw&M4iҤO>#G5k?ͼ PcHd ؝Eׯ_* `Dzh@( l$a#/@H~F A6mO9vڥ7nܸGC yKKKk`4>hРƍu^0T# `WXX /+ʕ+oߞթS~{gqFjjj5W^3ϼ[z#H&M:vx衇|{nfh4裏ܲeKEgii%K,Y2q^z=裃rz$`IIyꩧڛn뮫QF=cՌYpI'C]qI.{WWľͳTVV6bĈK/4!M0o޼A= 7o8p߿˽nᆫjw+رc}cbd֜4iң>ۥAI~뮻OS2#KJJ 2wÇ_zjV|rKGQ}3f̘( $?G?Q4N>瞫Ey䑚Nѣ{N=ԙ3g^CVtM\vu['ԔF/:o>h>`FL>}O<0=;vҥf:TLK.׿s)}n۶ȑ#{カmƏ0a͛wxnn $!/56gΜ5O?tѢE_n]s%%%_|E|ĉ+/Q+WV?k׮ .,**7nܟٳgE]5qZe*UšNH~ƍt ~{[p׸zn嗟 zq_j,==$FMN9˗'iӦGqQG5pf͚AUIKf>-[?,+W;トط{=SRRb=Ż_&Wo[Wo֭[B;}*߿Ja֭ ^x#9իWYŕdggk.V7L @s1ӦMӟte%oFoyUzꩱŋ<zYU9ꨣ^~)SWq駟޶m[aΝkm8}M:uc=9a„7 An޼oZwN?&Lp^'EH @x]vM5j_pիW}#GLsmڴI8uEۅ7o~饗=إKS1~vvv|~K/t̙۷o/((={Q.1͚5:thnXjjꭷzwF{{٬ /Ɵ]p 'KlCZhٲ^pgO<OT3[niٲe=ƅ^0[;*);/_Ewiчzh;K z"6"_3<3-Z׿աCSN9q?6m?zh4Z+#_|O>;3I~^xn֬Y5N>>ਣ;GSL9c hG/ɓUtq̙C fL6mL0!##/ G @\wu+W|p)))-[<îӧܹsYYYƍ1ce]fgg? zm JKRVod'O]ygl++Y]?#ou =G?cf]Uhη;j]VK :Zt)Žn-Z8N;#F4jԨظqk?^nsrr7o޻w}?8Ck[>= J^2 .]e[[o[1'x/wE)s·$He%/.Ӛ|"vV\\f͚_k޽)S}cv/8qG}f͚Ҽ+Vcǎ=Î?>^ :ϯ_zଉ|QQyY-GYI&>Ւ$D^'6Kˈ\Z7( _,hGvwPn­?[w]N6mZ2WXqGx۶m~{QG7.j$@ʃ诗݊w%{}F5wt;6uWA0^AfU_>H'7JM:1_Le-&ꫯV,))[`>`X矿x⬬jV[t#:t 'бcFmذO>y뭷ƏW_APZZzggg_|/U(F/_4iUhڮ]fNF-ӳ /.2#oVN[Sy=_|/L;M/}aҊh [[ݾ//(qѝۤM%v˕eKʗ-nonAff$3+ҢeuH.rrSO7z^BN:qݢF79-^鎵y$_e3>+sLֿrtl)- Bqq{y+ySgMӧ9$;ߍi[ne>l/b5رcgΜAƍx~ldVV]wݕs뭷AuѣG/W^>$y~qBg&m;NVv@vGz 5M՟avuzzymNf5~a|OvJڄ|Y4zb.Pw-}UǾa=M\ϥDZܹ;lݺub &TV{޸~:$%[Yݤuꝓh']㭸;s~݆߲hr˅a ߌyGrv[Wh빟ŵ T/TVhvTw;Xcƍ;#Apg},^qqqqs=ەB_+o񝗷ާdbHc=OQ; ˮXvtgsvtǷh3hW~P1g-vQCfAy]\yڅ՞&aYs$E׮)ytCw՗;^333c-ZT9$w݊I:>{c㊷6s|3v&0pI76|sonZyrwMSOcW>UUs֯1MSy 7߼|֒- 7m-+IbP{?KKޛvYuTQ[dIѱc*|֭ O>G]uwߍFA4jhyfi䢢 n=/m!E A w84VOuۙHղ=/o&9fx]_̭),/pҤN "AD/[fi<~֟{|]&׿iۏpggvaֆ`$9CJJ~ 7l _r˖-2@K+vj;]:%mO~o^ZC5n寖-,RΖUGΕmGy^r=}gu+SS 8,zzUVuСof;' ~jԢMFN_Cf3sV/+%NJxϗN[^u~?/wNn%"ҾCş.^{=zxU=4HIQ|HA0{AӅ5Ke^+g[YE-|8ZVљIySԗΕmܸqÆ ꫯ+/R͛+!%`I-=IE5vMl"olZp&Ƥ8_~nЭ:}oŶPW$A$lVzP+t 'fDvo5mNGԦ8d ]B Fk? g۵kk|5]?Xb7$|$A|U\2=.1QZ,rPگSRӟ8䴈l{0O4t/5Lpj̙3k裏vHG@FA~yIa˴J~epݲu?Ywu?lFG%O?Qp~CR_kY&ԠAb_~GU;l7 $$A6M˨ eKڭS-TRT}IAihϖLݲe׃uB~ ŋ'O[lMM6;vJ /A;ytm;䛞Rˏ_/1/c?m_nMTeI4j[\R} x睯_fΝNegg><־馛˓\g)):fDRB% `^wzw} 7IM"狹U*9G0+e\tWoi8R8&HM :VTT4f̘XN<{衇y{+[n+/0q/An1C oMYV5ek^)9-(]h&MӯIcohlڴܹ_6lذcvZ^~h4zW/[,vx'wquW2_ d5YTpyo5m[h[a-vW(NGmq+Ňg:yZ ԫ%SO=3"nP^{***Z~{Oo]/C=w}駟wyG/~Y syyyÇgcwy {ʊ)[V]кG}\hʖ=hx&oE|ϡZkw<_͏Y=SS[zP;Ӓܷo|pggsrryc=vͥ7| ~woѢźu-[O0aÆ ǍwG @QMZN޲./ljg#+[[ݗF"<)#zjS+^d ԣN~jGu5kȐ!&MɩfL>}NڥK0}YYY;w4hн[fee7K~_b7aoOo\[_WY_RѶ=o MZ_6tTEv|wf/k<~nX⏿ IDAT ԗH*ɉU_J=TTRRRZlya]s5 }c3{쫯:==~Y^GNv{ O3yRz^ٺe5?Isǯ i_anZ#=cF.4i6 |5 =e3}T>㒿=W:Q|C78FGI޳l,>%Ҧmjc<,qCٛ͞Yuk"mK cǎW^yW^Ѕw_l}rוe:\څwA6=X^me;s}5mSy_zV|?7|5j^/PR9|hgJѯAYYt/f[?b+yfbA׎hܪ_63V|Ss;wIzCj(ӥ{۩ONd);>qgv[[V0ow^wմU%Kה͏,|i~fOڙ/^PwzE\Y]A>|TW {#_7u9&pKi ]-eKҢ_uNj᏷ol{ N-o㬖]{\Ͳ܅s~i\/tڿ^j_2y[V_hdQ'eu|-|כGˆ.Oq,sX5kWͬH~sumSvfF>e S:7g<Ļ큧S-2Ezi$K3~vcigmddHi1KFdrLz)_ 33HI4ic7 ='v}>ھ/?u]ڦׯ:u`Nn+sZ?wYöK轿n+c=?ھg۷YDZL|rk4+#R=J*wJǯ?a k{~]kھ}fNF-37)޾(ʖUϯ_`siO>0/Sf-ے3mœ;3[l;NKRȸ^'݊+]w+6AqeC;$6_eVǞ'4MXK%oo',χG_85^>T-%[tZ\yZO~db%9mM{DspT\UVӶ $^>$}Fy{[-*ؼp붲̔&2i~tփu8I]Pɐ6;FR#iG|׉roH "G4nuDV ]P= l$ac_F+ڛ7o3gNSO_# @zWTT%@. }d7t .##K:`_4)''UV XLZvmaaaaoqƊna#/@H~F 6_Ik )`qAtЕ U $v|+2=GYI~s%  =T\/ē'heee ]KL~+ j)X!+//כn70n)//OpJpP$dL{Bx+çGMpOE h4* +-o"P6_}~]H$%QtЕtBHRƒᓚ77dhiiiaZZZ/B#kJJO)))h#$oMeeeF"4y;=]5$Z^m䭙RmEIц hyjz&YM4ӸuHlzj5go1cƌ;6/bFn߾}Ȑ!۶m1/{7? LJ[Y}e峥EK6m[eդ`CHj.|؜>|IJMM[ϟA/f[ZZ駟?ʕU__&ҶfUIF6|܆/tOvӏX;wZ/2k֬.>+**?/ f-zgӯ_SuՍ;,ظqcٸqy"!_Fy& MynӳêPfffѢE7&nڴQG9gΜڗžA @X>ByYѺw*n-Y$رc0`ٳ:#Hb1Y4+7xyٸ_H=yꩧbO?a+a$䭞R'o[Y'Թɓ's=A:ac@OduN(--ݺu=åAvm=z;b_@Iچ.a$nJJ~ 7|@/ iwUs;'YYYW^jU9d6ٿQ+4t9"??{ѣ<F-_ΕmܸqÆ ꫯd-_K)))|׿:oӧ7laS$4c/f\pȑ#c|aa"!EˋZ2qk5t!/5LҰOIkQOQYiAFf4j!د}кcZ+^WTԉKY6_6t!O>ƚ5k)_]++ JeAY=r8Ut鴫WZ <:( [ /@mn>,;%Գ |ʱozVY& 4zQuܚEK*3rz&7\EbӦMC;wnpذa [/O;cx# +egg4mY֖Uov9chWkTQQ{ァ~z˖-.C/@r2݂݂C |gwW3G|3M ,?tzsKu9qi%?o߾>XgHi;7tA'0h%`*7Af4K~u9kȐ!&MiBطAu6z7t-;Z8~eؑE@@p}75w454ӫ-e˭LfKZz=R\WAe񽿯 s,τ\f a;cdazzfwO "}233suumѢŌ3͛7E3̯",,?Oƍ۵klٲCGRu[~`H)svCW*>+zfg/ʿdggƆ,]U*/,Ax+0qWϟ3gN߾}Ǎ7d;;;C2#ByZPx*\a"H vN[T+zչPFxJ QV:5x?ςǷ6계."Nx_W}>|ر={4777t\*|E{ W:zZ\?+r$B\?#\=E>ţ؛'Ŋqx"Ҟ !pv^EJkD\-ų*Z9jWxoS%W+94wOO p謴13Sfe$dE>9p< LQg'εu9 B3?]]m۶۷߹s'K)))7nܸqט1cƍ׼ys QK/d<+`Źc/x?&YnVD$qQѮ󍷄"62xjHMwcI'ѨPLF#]Ogy?-SEzCRm!wV6%<1rT_bDPS1\[Ĉ 䑔.(pޯɀCz0FQq .uٳgg͚U"##,YҢE͛/^8""PX^B)+Q N/C H!ѝBӞy$ŊLPiW|N<9grܹs}}}{aÆ@e$^?d|)X״D,U!-t|&Pt8PIqQm"8OVeK;Qvո~\7蝹G !)G(C{f͚{țF9rĉ=<<8R(yG RBO=|B)Ngo^z-Yg׵m{ux</^B6>ZYdɵŕJwk:~ӸJ[ڝvE>_.18FT]|),,iMW~fifޭky@dܙ_ѣGucǎsGWc81W؂'k4lP44P<6W4j''⢋v kFCEaekA)Ei8$zAdan"`k[| Z|PUUkZ{d;I9t }֭O?vݺu[fM|||9PpY$w.\0Pl]}Jbc/|4ѵ9Dĝ\#Zh^\>UL:E]hգUB#^&E7Q@SZ='62m\!DvFRW%<iϻ5 +]B88 "d~(9ٳ'00ȑ#YYYMsss6l؈#ziaa!x/]~-[=5!Cjժ<`֢cQ]˹R[FzQ!'+[YKD+bړ\7+;Qf~>|믿k +2bĈݻK ߜZhtE}T*BѬXbݺue?s QhQlRqrnѹyG\oӄbdƔuV`````sL|WFٵkWssffff4rE (Bi#lumWR EzY.:TNI \Y#Y;qd~͛xU-s>rΝ;V 9RFEE+ۼyn۶ RJUj\T:9ʟFۉ.\0`0e${qd~ի'mժ2OOϱc}[ ֹ2UZ6z(iA>ZfoW<\qd~o޼Y _$yS}B$5Y#Hz*bB] JT8~KJ)W7.x㣋c;xG0ŭnJq3?ԩSKC\\\ժUK/o-8\7wc&qxsz[ϻ 1©j1`,,,glmm Ĥ,N^jHxFdaڌg"^Ӫz>)j59>!Gw)ip(ʙRox9 PzϫR0(ՄEguKB.2ǣ#:'D}u_$WJZ j4E#*ʀ@ rܾ(u"v]F}P2uZ%.5++ˇT(+{yEA ӦM+pfff/71ěC,WW'~ɅB'~Y:_2W78PgJ PP-7tPܫ FҞ?OIG8Uhk$8Y[هخ\OB8 Z8W><: 0v} &#;Dfc!lJ IDAT*C$'\}zȢh[<iGCDf#!lx&",4bЯoT̯{~,XmXf]ĥwDm ֢`ۚBy>ш"NA&\4hQ2m۶KSN-ߠt4(2狱\t&:߫8 5"/*_e Y랢YgퟃJkռT1\9cZt$v.A0/4"|s'M'%9Z 1 zVYfZ(EIGacW@\Ƽ_AO,M`yF(6'7gHopT86̸q6p]ݾq=m<[:Xѿ-~_p"""bӦM+AN0aԩӌ3:w}ȑ%K !?>k֬UV RW &?~\V:_Fv>ZS}aɗYUgaW [o ]|#F{)>VTRwܹF񱲲QoqqIV^M_H#q=zԫWo…>4t8Л;g=Vݵuduف:RzwFHHHv8s̥K+ssYf>}n3CGR9]Ѩ]J_Zh!5KCPP E,--?#}ᒝc|u~5TRe'Nl߾}aRٺX_/yd tr}YX:;lAkv[sq)aa+WH vi /H >1qutt?z;6idQQQT[i_"Afv>խRg W|Сg޺uKjTVdgGkkaÆ 6,%%e޽۷o?tP ovv}kM8e˖ ʍYݭb M>q:=?~BXZZ7d8sÆ RSN%; &8nݺ}a\\[jժU˗$T(ź_Jӫz'U}"+++!!᯿1cF޽322_~eze[k֬Ǐ/ӳ`,,+srr8qbPPPTTԪUw!o!!!3f1b *K̈1t(K.]/_eff_ϙ3L#tweezf~ennnӦM;~xxxLPTvs]vk٦M??W_}ǧWPAEҭM]{, Ar MN8!5|}}6%%ߖ͛7?rH*ULqd~]vjߨQѣGիWb1˅_Jt_n/9tǚ+,ݼ_3Phz1|/w5k?~,P([l! GWwE5oͩo~&[NVվrݦ"* ƍ oFqwؾ}x5k`#[ W_}ϯcǎ$|@J)`*+qGrv_kHZСC{ܹ۷'%%I'Nl޼yHNN>wNOO/t\' $:99 >|={4777t8Px-RT QЁ@Rov m@̀tܾ}/._,O֌zN(*dT/*wZlu(!D71 y-@C`u]=4M\ H5/cE_LV[|q:kq"RB2l(֪N#;y,cG05d~ԐSc_KC\\ɐ!CT(Ƒ-='''}UFed~vLL#faʜFIHHꫯJexU۵ke´iӦMVS|||JTdCN7tP*]?6tP*V2ޯ_ x{{:hvbb  LU2m۶-[KPH~aԩ'33! CASՆUʀ/teiiiʜR4tTj,,glmm ĤK0^RZЏx9 =! /2`j*JWۃZJzPN*J/d~ԐScaGєU@NSCL b6mB7]vվՅ f̘ѤIGGGGG&M;gϞ-7U:Fۥӧg^vmׯ_~}ʕ'N\tcPi-g~|ĉ&_Ν;-Y*-ch4Mx嗫Ufiiѹsŋ?y'K'Nh:ydL>]N:رcG2d4~W^޼ysXXXfff9ׯ__x??}>SBUB1o޼޽{ e߄];vL˜W.YD>oիWKÝ;wFz$muk.=wP(޹sgzzzBPGwE>]mjZjmذ!))ɓ'+VRJ\BWd҄ 4رca:w\~}!Djjjppp"@ xWZjUZ5RպuÇ[.&&\bee6lȫue˖-[xd~޽O?*U,Z^|Yތkv]iiiR_~e˖;wι$!!AjTREY%Xh333uO1?n+`R FJ&&&5=|6뛖&Ղ2PTFW}_# ]~1>>;;{ڴi!!!9 ߅u?ͳY21Q\|M5+ky+ &/Kl"J>v`df5{cWte[~&L={ܳgR,r޽{w1!Ą ޽[`HP4mTTaС99rd͚5R{ʕ{ى'޽{M8 [J89Ǐ/BSڙKW7nX;vܺuk/_>rHKeU!D_`ii)5r. R<ժU+Ӄ(>>>==]50"jZ. `2RRRFʒ<21vvvg`2rUܜ\HKK˪U:YvvKBTε 7&p:詹fƝ`nQfӦMQQQB''M6(ʍ76k,99922r֭oF3VZ%_6mZXJJʤI6lpvv.TQ^^^r]v3!((Hn穨" Z 3gΜ9s9_~}߅[`lll҄\K #uԑ-X A\O{ ҾRBV%z?իk~ !'NXѣG޽{ǎBٳgoذAz> 3g,,&qttlӦM .+l)#oʕ+R_͓zU*ݻw/p~Mn7mڴl"BqIIؓ'O2:f~uqd~K, >}zÆ J-Rz׃SJݹsew!5m[n-}O޽{788tãM6%(Դvhi_UepʏHK+ֳZ0aBjj|l!Ŀ/<{=G:G]paFYp!P*ThB ZI~PW^㏥ݻ囂o"PirWOޮ];}ԩ-ZLJJ̙ӦMp!D.\__9sHy9ԩS ǎ6lؼyWΝ[zryg慷 Bjժ%5Ξ=[MΝ;'5ׯeZFFرc333+^~YfIݘSjy@W'VVVl֬ 6mZڵ:u.ݻw],\W^R{׮]]vRKϞ=#O`25?=5^CR4NǏ/&N:i6o޼K.I!C !,XPn]ip׮]7o.q0yd~uzٳg[XX6gРAN }M4 ӦM۽{yi0??S污hX&g~ۗX_wޅM oӏ?(U4 aaa%bpttoܹիf͚֎ 6:uWdkofF7n((HT033sBիVt֭UTYzuڵk#u?裾}6mڴo &8=~>tPv~Çk.((HN>}Сi4ɓ'Jݾ}N8Q˶/ڗ.]7o^qLd~{yW?V5g7g9]k6:3MYfIо}vyɒ%ϟ̌p’%K:uԯ_7nHǎ_{ +,jAoԩSzxo0FPwϞ=9~-%Z:+gNr%??p߿F~azzӧOֲDT.Zh̙ffż{̙3%K|}} cРAǏߴiBV7ҥKޞi3;gϞ}#ba{Y /<2$f̘q1chkff6jԨ .̞=ovvz/bj}wRܘiӦiF@meDLn"Ww?R>*[17P~߻wݻWJU6mڴgϞQC[9 ssjpqq.VFxN:0E/!)rw+m]z5-,}{?=yAع 7 |zZ|3;2SWooi<ڃvqq1`$Ћnurv5Buxuѡ7RU*YHJW^;P̖i_< 7IIWgS10;חK&$$6Rgj\|<u*)ȵKv=~ >L'INj;\|5{IrڵkC-mb{3[tp(aI&YXn?l`7쩴q~s;׿[VO1ƽ0#ca:u̙3Gjܺu˰@/:^O{SinsmF6Ǹյ2fr0VFPWp˗/j[ݑnu($Aƍ7lޯ_v9s*@Eaw~oܸѨQ.\pB 6h4 *. _05d~A߆ Rtǝ_05d~ԐSCL< Fۉ.\0`0e${Qf~5Mhh.]t֭'OeffffffggKs"""BCCtbkkkhLFffC(s߿??iw۷՘1c̙ӤI jCP*{De`Lu~SRRƎ;x"Ӿ׷hO? ?(S)JCMNN0`_U_|?k.kkkPIXX<&ں0=IOO9#`F0aBW~|||,XEVV}loo/~'T`ڌ {ȑ-[4jHzڱcܽsNPP2wӧOqw8p!C._2ΝǏ/&&Ly&29K=tҥdtAnGDD2$Ȍ 󛔔$=<)ȑ#G]\\ "1̯o>䓬,][}f L_T*;1{^db6AqVA<l;S6=ʈWq|˖-ڍ5{m۶VVV۷;w}С JWXm:u[>yɓ'OV?ԩS9wi>LOOA@@@F?>k,>f~5M5́^~jժYZZzxxtyŅ}R5Þ9t7S=μ4Q:]Tx&hjeX뗟OlCE{ŋK;wwZ}{aLҿ8~~~~~~h4~[RIݹs5ʪFoŋǍ'MXz55M1e~5Ǐ_fMkk배<&M4hР~-&&&++ǧO;wnÆ on٤f\O O/ Bdge[~-ڞ={ٳGϠ޽{{!u'LPX]]B,uwر{ӛ10oBBB׮];eիW,Y}zի %u=%{쥧f+V:qՋ?2?<<$ (nb**V\ZX.nUkkV+V.E  Yg~vd{3yn& 9#?p³:+y睗U38&{ィѾ}w޹~ӟFy2h&G{k7Fl׮}ݷlٲ[ni۶mtlэ[+sއ+WWJzۄ{}G!vUZ׿ !?={v5=#j=\aҤInjf&铕U] BXjU^A3H~?Ӈ~8}XPPpWN>U{c=C]v=Sǎ~_r3ϳ}]RW8;c.] >W_yhժC=ԦMjf4hСz衇|W!tL 4J/}o׮ݔ)S?w1'''gĉWwW7<~~G*d†Il(n^y啨~G+̙3':Kwq_cǎ;v^X}/ji)SѣGovk0aB}衇|裏Nx㍆UT ,-["$.dРAQMC]wfm/^5 ߾;QjZ2$~}!T٧OHvʛX?iE%M6o6jt޽ޓs٪Ѿ}?H?.3f >40dȐۯA .tto߾kwXlٌ3vVV֐!Cۅ ]#usіmN$/}㔥toF.]=Izlzݻm۶+Wu֭[z?{Zyy7?!};uTiߒt]_{Fl߾}*o bŊٴM9?.j*jZdWU: !̝;sYƏ?`>;};vo9-?( -((H/_vaݻkWJ0Tk׮Q65Kzl~~~oI&qo7n\w}o x뭷*J<4F M{޻I}tSN W-EzE{*^U5k\;wOfe7;kYDڲe8 љ7r-4B3H~+*'XYfSܟ'UNSOo}CzI5%l6of'y뭷F>}VRR2rh7-2bĈ3<3:\ho58qvmwM7%BvvoO>sM>A4wذaO>$}Jƌ>oڶm sy҇[T @& J{M>hcQyѺJu]6f̘3fD:# !\z?>XgkkGÇnݻ%,4NZjСO>dQQѢEF+c]{~xAG#Gl?*‘3V4ӵ,>3K. ˖-{駣- !L<ꫯ;vH$Bm۶N;?g3f̹ҥc=3l6($W]uU/8CڷoߣG[n%}~m=蠃*jԨN7tSϞ=ӏ'?9S=_E8Tiر^ziif̘_" fF5jԨj:$[o5;;kW^߯_뮻.dխq[n։=Կ}CRuvYYYg}vԾ+: /?EN;m] ggEÇs1kt+7d=iҤoyN9唨;KmQ Yko"{> +ʺs'9蠃&O85P[Utͺ_> [G!2UmeFp CK.5jTl5*--5jTaaaW^'pBݞ|{'j~kwuWìY֞;Xxq!H}I'nǥ: IDAT;y CpǼw=Zg[qZ!˻IFrGtA'No営mۮmѢEc믿~]ۖ鞥#G\;~G^{կ_$fr2]@鍊neٳgٳC.Ay۲ʇWmiuu^CE>j}9?Ə;tMϺ GO?^[*:餓pذaw\5e\s5ƍ?~aƌcƌ+ӏ._ފŗ_~y-_݅^X˞5NzL@>^UQpxڏ]XR;5+n!̞={ذa=c6ҥKaa'N㏿#G뫜~駣v3F{ApW_} 2$:9sf端ꫯI~c#/?Lp υ% ]Neee]l_\\B:uԩS{WqUO?=3҇^{m޽k,c5j<BH&š3ڷoBf/ѹRWv;/hUѣ?ã:ŹYYY~i:*cߊQF knݻGsuYQ;-54..շl_㨧bZVBvnԻw~Ǎ7gΜ ~]v~s8`M6f)SԯΝ;/\pgygY9/MmhV./Oms~;o]~U>~Qyw~'x`ڡݿwKT'ǯ/VVHoW|[rLW3XZ^\s-0dvj߮SZ%eS8mڽMٸ;}yKCvs#k~Ȁ۶oAnݲ6ىGiA-gH~Ȁd?=[6ڡ}޳u [gen\H~Ȍ伻{#{luڭۖm/٪mS͖dYUm[X:lvQUTmT3[Z+p}eWWf1 [gE ۼmy9o6uuXևB7_č n$q#/@H~F 7_t4T*^ti2XL#*--t $%@P[d2%4i $VV2]Bt @m|&m۶[n,-Z8jW~|:>rssv*Faaa:x@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F uN:m6_|T*Uٚ&.[ /4K~wyaÆW_e"Z/4I& 4hř.%'@sUy~ ,[yرcݻtiW\qEaaaTIH~Ȍe߆מ Ɋ+aŒ+q3jT&g퇺OaٲeÇ?ƍx⊊K^xvm7uj HRǏ?۾}jĈ{[hB*z_'///77gϞ{W\exPQ^3$+§5P5fQuup?|.\x,\G?ӡC~{G}TTTrO>䩧cX ^{qIIIYY… _z /p-<.]ZWGcV6< 4$_z袋^}.l٫W^x#<ҷoߨCaa5\Yf 2dҤI:j}Μ9 0aº:$ɻ{s/FK" 0Z04T*u7Fokv6zw.­://[n~o6D}}5FtA-=|gW^`?>t7zUVx!t颋.6mˋfΜyw-9wܽkɒ- XMSZ04;_=͓L&}-r:tˢڷ3fLz޳>>6d={?0au]WS_}~afͺKؾ}v|PvguV^# .'1T*|6iBQYY~hgkZJ&! 7** E4Lz[2Q3>C U24⯾jɷro0`M2ʇsϨQR|==kf%:kW\-Xܹ3m4&=ݞYYYͮfoD?N$.nTzR7o"oҼxƏO"6wM_Gv:dQ5vׯ_?󨑟_&$-W:t-՜ƘI&okЌ&=L*Z#L͹y}ZxpK޼TQQ\x~~M'%KD& XWhߺZbE=F$dR"0}?uKnnnyyy-;'IZ\{eeeE1> _2]GtqժU!of7~[hoiiiVH) 3~)Tcߣ~8ˆn5f̘QcYfUyW^Q#w͈ 55|4}͓ۆ-v_~/w9j?/Rw~9sf3Ro=V, ^ޙmÎ? nmmFꊏ'v[;v츮W|h=?Bx{j_w}wqI'տt54Of7k~62l￱/oĈQڻ|ѣGRu/^\CrHNNN:uf(--=vNNc6M˛ IhWP۱0N6mN>s9kIRrW_Iw~dž<}ZsPRR2jԨwy':5jTza2K @S[myƮ^ٰօ^V[E믿~v{?󒒒ŋ?S駟Bl5W\/^LnM2eaoׯЬ%;dF^50uܚCTH$UsOT}7|„ /?W_}*--ѣG:C9UV5Nҿwy_ף>[o-\0Htim2d1%õ48/M{dwM]VٿhYZ3G}:vk $H 6lذa3INN/_ UM @S'|μbymж}auQfAjnir4+;$+;|>c-nu(,|5{'_؝> |wpQxBY Y'4_@Ok[!9aȁNkƩ bD @= mնnaߑaCamnI~Ȍ=~9m.hc[Nߐ&(11ymÐBüâ/oCIq( 9! t6ɢyM8/u]OH$F*峗?#!#GֹtZ=@\p#FX#]ԩS t6xSL9c9ؐ@zW^yeڵy7iҤŋ.]t>-++;{!Z հŋ/}w};wN?ZPPPPP[9_/_$SN9e٭[n.\C5TĘTGRePTR! yYnNleg{gŊ!G?xVs&L0`իΝA6gXrȑ#*M @$%²*-++Rߖ>X^!+$vluHĆ Nƍ5ƌSMӧѣ?}I~ءCviӦM[9i $dFCicB(O&/K[UT}F;a„6mT?Hl;E$ +"f4 0I >?{vӧ_ye]&N Htm蝗r,++kذaw}}ݫj= D:t_l/ML H$˅O=)ҫW}.뮻.S2I~axzy^z饡C8gΜ FK# r:%4D"1t &|љn-UѢH~ȨT7|:jrD"qi~ /ИdZ[+*YgZ0`@III]vu'G+ΝۈY @&BEͯk}! F2M6$jTTT4|M_2 7ɗy}vO:fz*ܳuf۷oxk?/{n`@SK-.M>N:l];D!gpTVw}!ow]۶mk3'n&- nV}ѦYD֨QDa޼yzj2q… ?G#8qJ$4U~-ѵUm6O{dZVT2gΜ}٧06)ZTZ0_~/u];Dzh6;묳}?|Ŋ˗/={>z1lֳf !on CӰ/M wayb \L]o^1bkBXl 7p 7T3CSN9駟~Og-_^xuc̢~^\q!ڸȀQ=BUYtJl8EA|H~ȀDVgl j+鉍[gq.Bֵ#0Mr.,1 'mqKlup/19aRo-O}*4UdJtMl.??d g%#7š4g'6\?@_2,ѭUbx0KF>{T4wv{/@H~F 7_č n$q#/@dKN6-UU n$VNN%FZ/յkD"*QVVV.]2]4?:t6۬\2Ӆ4LW @ @, IDATiӦM6F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$ ON$DM6zۮC:tnN=7|QZLOsEq;D"1f̘{u%o裏N&!s9ŏ?xԾKֈ}#D/cǎ-..nrD[T㏟?~aw+j2yUV;xuumBXrɓdǭSOڷo#77!z:th ~#DbСQ7hbG[g3fHopo{Eja֬Yh$ur#84py䑵8gΜfU3aܹ-hr2]@3s!}|͵p¨ѻw{;,Z/XNDvZ!@ Gy{ !nGm׮].Y$jT߳CQ/^}1#GnTc3%Jʲ,Wd2L&3]"}á6RTtqӇeOsT^^BH&޼]H2*G}j'D"f7d%9s7]w]4$jU߳m۶k i$KKKF}f>-[XjժU2]Pgeee>@>$G[+eeeGyC#F8:ClժUI,u-Ng?|%%%mڴ,fRT OYYYYYY֭3] }oI&ŭZJ>!6*yWjժ֭[gO} 4o\tEofW^sO=>i&Z,SRRҦMjzGWeggwԩ%Etرc3盘I&a\?EEEeeeڵw6T*UsrrG1SZZZ\\ܺunTFE>\O6REEErr[@D^|hݬ;w$ڵZ&_~8m/R]G?|~_O<1j3?q&I.}uIw$5KŘ1c\o>߻w1o޼.ݡW^ 2CD5>{Ν;7j۷qkbJD1oQ}t/P?V7|HRUvc=/JuT*5iҤ5ԉ5Mdݺu !|駓'O^W^{?!t}vj6#8"j_|U. NR_|q>ó\>dMsiժUaĉ]vo*&LB*Otz}gG1cvaSLY|%K&Mt!3&zsիW*7wxkR]vٛo/|>ozzI<3'pº:w{'* fmUޱJmڴ뮻N:餻kʔ)_~ea7}O<ĝw޹1Zof 4hРA'=č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~F 7_č n$q#/@H~&'yT*%M*jv5S5.?5oK_S7|1W6\p#mALyyyk,}MRKd2ōL@7o%51Ӽ>S.q<4@H~F 7mDNN2H$! 6Ij)zfee1J*L}&6o޼TyoЬ,by}ԧ*rN$ٙ"瀖+fD"jzk\P7~kٻ0;ozhY\$"(HP!8h2F'qMLdy6c%55n$FE\AQAޗztU7,|S}t_uwLG{@杍ˋk]tȑ#++++++GyΙ3g& r=IccĉoD"e˖-[򗿼뮻<.R]]=qĩS>;;8or{7[&L'?Tokwq׿-.ЍI~5iҤ{.lWTT\vekkk|K/$D"q'oܸ݋?|q7}k׮];c3f̸袋 "KիWxa{oW^ٳl}ꪫ^| ֮]{mțoy)S/9{իWq=#&M N:u޼y+"H|0{]wݵn?O|ѣ7u1c 6,3fl٨nJ򛕖޽{{tKm֧OS/r8#:ȎcGgϞ#\`0wl am!z+lt7[n `]%@nEVKw݌K, C :K.ݪ k~7_"hnn^~ҥK~o1,>r)?Ӱ1hР/r,G`]zA0~~uYwUVVf<|֭ ={a6qؘZS 6ׯ%U%j%=J&d20/ϯ#DMsssuuuMMM [Y"HMA455mGw dbn")9zTUUuW1lt|l#B<٦_hkۅ\MMM>xP}}}DwkZ~O8;#cojUEQQQ),, m'pw mEMMMzv$pYYѣGپdL|#eÆ OWB&o$Y8dH$Rb[|`ld2駟Ι3o駃 x|7Хop466vpԚNWs ܜW\\JڷX1Dux?*,,܎ᐍd2:<*((EL盼n*??U$m_d)N~?$H,+--2dȐ!Coz\pAӦM{G;T0mhh2r[:3f<3]}&rJ{i}6U!ۦ:& ߭s jmߖ-[R Gt }gdΣF +Wl}|ذaac_aҥac3\ۓvVCj[8Ξ=+:H~#\PC .6qƳ>d29}tso\sMUUUE 8lO4N9sƍ׭[7}?~ҤIٟg \^AG=W^[ougl_|y{+3gγ>C=C3~T`oF1gΜ|+ӧwqbv; `cǎ=<Q&X,6f̘1clu>>x jQ#/@H~F 5_)H$y-6eQm|YC%YHzV`ςw(ܻGA^,4/>nLa=7~Po{&'?iL7A04ﻻ\0d@I~e {&ޅ=nʆOP9of_ $[ל d>q_/;k@ɿ^֧(A%l|zusgϯ7<sVW$ϙ_q{J}ߪny慵O-XXC ]xTMϯYՔؼ7%5m_G'J㫚|nΆS-dm}rY} -OQ]K/\ң@ |tY"\^7_߸ٱoĉoVO\Pnߎ8_Zvj?,kh}$?ܳOWmNc_6mkuS҅\Vu%& Ι_sG Q܎cz\Kq^xrUSbQm-_nD{wlJ#ҿᕍlJI[Uquoe |zv|ܘ7{âvw6<_Wl~=b.]Ǿ/da b= w+Zߢɻ_ni-{UtƂֽ*^\~uƯxaeY-K pYpЎ^O~uNcP]ۂj@qyMfƾ,xeL{W}ZȊc{\" .k)q~EyY?Խ1 5A}#Qaodƾٯraj{_rկ(oV$.m$MN' IDAT@ޯ_6v*~at:,֞/\u/}.Eܱ]'34w6$gUWˇw[]myf*=`;ܿooXGy~Y~walʂ )7ןFUWX\%h` I~$53O⬫VܶW 3cM툊]-gMYT^zņ) :Ue[;0jpiJ^,8c@ɋ{VW_`/I~}uӳk[9W#+ٓmSbA=/) c;ÿ-k[! -ZVWaOzt"ɿjj}d?:DVܙ>5{u[B de򢴵= bwcKbP~,{3[ɺݔ}O_5ܜ ΜWooYmS"8㭚S7_IBzʂ^7w*>|h`[{cc6OvM:~EyW+o}dƺf_*K+;gCKn׽U*K; c_WbAp/ꆬ_sw|aSwf%s;>v'؝{Wd|aݢb[Zx@IM#2E+#>Wav}ǡ~Ҙ“6D2]^8dvu۔<ޕ*8$ kR[5'3մysUV >jHjGTvelCR l{_ jslfXD^m|I] rXو@ͷ,ÿ^RzzņZiKq;9-3޵koSz\Ց:#:GVX#%y][kﻵ''_W+= bKR lG id( нeHv.w(lkZ5RYpneSb57$Z-Y.ӣ+ og}2*WT%91x?mwam=.Z_Ei3lS[-Oۭ}>t[_E~Z6{]yyCwB+wӣhӁ!U?R= >~A}Ƃߟ)R #:^!-3='7:Z^픤nejrx2º-HYnCJ>ݜ@'i l6[4vsdr]s;W7m"^m5/mn}GA+,>+7lf ۩+63$la;57yQ[ߊ5'n2b߲#UQ98(f]Pw*N_|vO$V7$Irݔ~a^9+.#zS`^wMZ)U]O~7$OWީ_^]ׇ֑dw߶WEFUoju k5 A% l? ػ(/Zߢ>>q;5Wr,,v*~^7رXo@@'FWը}&qo)1:m s|ϿT_dYSz+^ٴyCuyA6,,p/R=uN%:1"Pzۖ7lfQc_*ߵ4[㎨^Gf|8w~MW#dLZTwDZ]Kݿr=*s>O_ FGn!ur[kL$A}#'\/zXQ=*cQ5W7%Ι_ӥ߭Z!oZul"}//й3eq+^/.Y%dpܚxZ~;qvvDy0UM(|itߢgyeR_E tnʂ,[a֩>~OሊJ=\Aui +ܷ(w#3ڥ{ZTAnXy+cwň>O_ +ũZߝ[ݲ%ZwVoNХfxiq,nUQ'\|lGjf,n[u_=V/(ߞ|oѸַ\|3$ ޮy1}C i)skҗ`p^=77UQU X|}z s[$cb ;XܶWEIip7ox_8uyZݲM#*);iQG_=»ݰgf͇־~N/j|lv4@I~l^6ur^tldlڮ׷:{ã+24< 35_4sQvZ}j>4%4a'OӒ3dUrm.6圁%[n0mZŗVGy';Sjq}EZO:&#=PYo_9c]Z[&-v){M:0,6YQ!+^ѸGyq;ݡp⼝v([Ӝ1qcbW6-m?3=yߌf?^P$=xXmێ *]KWJol\|Ь]Zm%'+tL tM^,WŎE_ήh}I}ީ|poȦT5ݶ<3t㨊ʂ,΋( ,V@ςq;׳Ey]\%`!Ut;_L_`ȋV[)m=F 5_D j$Q#/@H~F 5_D j$Q#\`ĞZ>H8c}S6/&ݓ.e nH l')/@H~F lgn$'$Q#/} DݍHr:&Kهbb۫l"]/=z/ vcO)I lT{/@H~F 5_D j$Q#/@H~F 5_D j$Q#/@H~F 5_D j$Q#/@H~F 5_D j$Q#/@H~F 5_D j$Q#/@H~F 5_D j$Q#\I&xǒpxjF7zRɯ77ڒɤ7LG7vT{/@H~F+/,,X0/χvw,FL2liiI=,((Qa׼<7zS|7W}ꓥx<*  ~MwxQ#/@H~F 5v>n-ףVKKK2Cq$LJbXG¶H$#䍶d2Ғ뱰 /jZO\,]ccQ[C"xgSsp<@̙qư;92hѢ?0l~_x,}gsM=}TVVp<@VX+**YZf͆ vAAAr; K+WL=4hPAAA jT{/@H~F 5_D j$Q#/@H~FK544{aJJJzu\z˗/ E]4rʑ#G^xs٦Æn(6uAr7ޘ8q߷o¾}_|믿E_|O:thyyyee#N?~:LfyX-}ڵk׮}=3.mj[Hf>Kl_<?SwoVjjjZj~ᩏ>f<o:/|^{SN9%}{qe555ׯ9s^XXX%KoojQ Q!njjf͚Ç/okh7Hyx`@7$%7nknnnO*f .8{):ꨌP"8#>vV {>|xMMMYrb„ /~A.,6a„g_=ѣҥK7^+((ࠃj{I_rcԨQ`tЦ?Ӄ :uYg:лwﺺ f͚u!3g;6իWlcʕ#FXvm,{nj ;Aۦ-\0w?n}8n .+2˖-8p` ݖ:%Kw ?hA0cƌuGnj3lذ jkkg̘uFtG?ڵk &/Njtmac_ȉ<ַq|;a˸ ݓ6mZ8c6 /r8#bئb#8"lϞ={'| `W_}u&/J^Ɗ+:Z;d2!'>䓰wsԨQacܹmI~ɁT8`[o-dtWN]]}uѣmre= w}wRgcS/Dmmmnak}nKKnF_([j 70nܸoW^yejC[K, C k:,]t+ شk? `ر/nrSO \sSO=niӦVJ1!'z6-[q> l?SL^$@Vo߾~'NGMMM}ٳ_o݄0ܣ&AuRV\^i^{mؾ6ˤ&/i|%ƣ>SO?f͚5k8S'LGyg\H-qGy$lԴ>n@%%R77tg~v^tE?ڞZn]ٳg_2l[Nȥ^Z__ 'A!r%???Çw}QGէO>}uQ:GqߟqrbaoLU~hO>3m]P TEEEs9O9rdIIɲe˞xk6;[_ AP___RRjhhK똀5jTeܹ{z[W^yeСmO+W2dH{eYl13o޼a,K$&/t[_r ///oРAO<^{g͚5G}9s ߿ŋ^!wE</(([щ'xAp/頧 9t}ya~ԁ;Smnr媫СCuQoll|w~թeeeYmI~Ɂ⦦ ^}QFmŊ#Fظqcw}':U^^^WWA]]]jvVTTAPZZ>غy睽+i2k֬C9&/C=t 'SGg}^{sÆ Go0<_o|_ȕD"qI'=wk. jժq-u~Ɂos9} ߿MTyyyhhhk:wVw7YҾ;z;}YgNѣG/X7n\qnᆰDDO(iB{w]vYaaas3AmI~ɁhF޶9昰1{S +6%!`+Zv=b7|  4hдinL6mA_[ni}Ͽ+.\xp{.,,i;뮻;餓_ `wl\-/9зo߰Ѷo#FֿAƲe:BCX`Ú'tRM^ȉ:Y!.\62_-/9XV7R˄Cь*m:n޼y۝o P3~+{⵵χ8q-/90vذ1k֬{acȐ!7.l<~5J&ӧOx eee_ײy 9 |W\iO?4lׯqrb֬Y'OA~:g@%%ƍWZZwqT|/Gŋg̘Ϛ5kѢEA׿5l~%%%<䅜s=ƓO>i秞z*lk׮2eʔ)S.rZfM_W;-/9PZZzA0mڴTrK/aNh}*///ɓ۽ N&'O'xb^5-Z GuT2y!'oj\nݕW^ 91vآ ,X0mڴv_>5.⌳&/t_Iȅz+أGgym7|sv m;|ᇅa)S$gĔ)S³EEE˗/Vn!d޼y?߆ R>>n˖-;n۰aCFr__Ùտ> ƍǏv7n\W0y{O} ~X_ojj?޽{WUU577ϛ7׿瞻aÆ ׿2 ={{ >}_UUUWW7{/[n {^r%w!p񊊊뮻.A&/|wux +VL:uڵeee=z(((Xnٳߜ}|A;c˸ 9>zx{)--yKKK?zN3gN={|z &/tOkE6U__apkWUUc=.CKK}0~'x"?? {?9Rg䅜~(Ht-//o~Yr;83;PRRw ݐMLii3<嵶F=sMžA70!G8{ݳ{+A-YK%ɗ^zOK/|x<;3??bl.2{SΜ9> `cǎ=S /&>D⩧zfΜ'lذgϞ;c9f„ Yo1jժ?O<ĢE 4r38裏.(("&/t_Q j$Q#/@H~F 5_D j$Q#޽FEU" H p/&&z A+%DJ[dβ\ryJU&ݼD1JpXI!ؒ)c"*%0^=nWo~8svf Z/M/a7~g=<<<==|ån#܁fYp㤓Svk׮;wnkkC%KC[Mt޹sg[R"22R<(o>\U~t(&*%im}%y/Ğ_;td/n n/=__}UAAC ŋ===}}}CCCG,_ɓ"4h%hhhOsrr;v倀I&͜93$$zlllߺuǫ}}};a„xsZSSS~~~vv'Ξ=Իw\oAǸMNl6oܸq^rJ___iMNWXX^9s,_k׮ ~饗Ο?^NpppFFƌ3oT]]]^´i{@lU҃Zzfy%K,]w8۷o̘1vn;l{3Lf͒Zu֍1… +o޼9::Z5kxIpڵD䪪+Wحi2̙+3?t.,,[1m^ 999Jq߾}G};_ ~ O:5}t%ґ#GRRRZ[[*++erZ[[CCy۶ml6☔ahʎ?>tPd9v矟6mZhhh]jhWܹ3&&m5颀ѣ:K.iiiO=TN8~u։t{&WZ/c~Ν;q`OOO?[׷W3++k̙1gΜӧxyy9s`Ŋ۷oyyyΝ~ڭYF/?Cϙ3GI)ll6Ӗ|ͅ l#Fr 3͛'~VVVL;~LIINO<6讻iǎYKd+---63{)7|c3_s=eeem._l5^f̟l^8aۯH)e6_z%<|pdTߊx!!!6,X EEEJܹsmz衇:ud9ZfƋ-zwmfN4iϞ=5ۚGYF4k׮жiݺu۲eK~'_|[;-]{lqLJJꠖgٳ"~Gd2E\]]msjeɒ%퍒u:ݿ/-[466Z466ă ZtCCCWX!%%%V9&?69` vexС&:sWeVTT$^I:}pL~ZZZD ^ }||Ν+pBK|ݻw[%޽ҥK8--}y^zΝ;{SL’G}Tp?J2i$-sR":u&}||kkk-hNvBBxz555e---[njpL~ƎaKzsedd <+7NIĉ䷴ۃ8((Hz|޺8mۑAAA f977755*wuԩh Pϟ$۶m ___Õ~%i">uշ7uU̲eU.\)/RӶbwtC\\#:lС~*ҷz+&&oذaoէO%isŃ7L;YSsĪs涥_jf\qLJJr\gJ4W&tՏ>Y~ejxk[[n7YabڵlȐ!-jmmUvsߛmN~wqwwmʼn骇3f:3@%z٬vOCCþ}v޽o߾R6gٙV;"t:={ڽ]MMM@@%ѣZ>}TWW[▖[2ѣXQ[[w3դO;%i9N۶njc===.]tѣG r3NK.'O^bEIII]]Ν;_~`i'|/_GLl;wNݻwW׻h=һ矷8y>wmvesrr7<ӦM"{_l٩SСC+VǸ8,ݟ~iqLNN6 2wܻwt%Ō3rk,X￷Wh4.^X#""^v0m6H>l޼СCS:4/P^8q%6LO<ӧKϗn[~ʔ)6)SE'ͳY?xƍkfvz|,qMMMTT h9sfEE$55fAP:9cƌѣ%z|ڴi7p` Tsωĉaaa/®]O>iӦ{,&&h4Z2y%O:5lذE=zիEEEf;vtSpjjj%AAAXYY9bĈٳgٳ`0 ;vN<ʕ+"3===,,ftqۛ| hC=yyyuIVVtEvZ%vՃpڵ4Ӯ;vtԩ昘={(,GDDX}.e~)IS/\sK;}={|ڴi/^իׄ ͛v_ ZÞ_&5L~@k0a Z/h _&5L~@k0a Z/h _&5L~@k0a Z/h _&5L~@k0a Z/h _КauKIENDB`freebayes-1.3.6/paper/omni_errors.png000066400000000000000000002707671417247743000176750ustar00rootroot00000000000000PNG  IHDR@"iCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx pHYsgR IDATxUչ+*vQ {QcXx&7i4Mb41 *vaC "VDAň+Y3{Μ:3g8?){s׿& H@$ Z!*2V*d=$  H@41 'jKl$  H@X H@$  #@c  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MP2$  H@ T?$  H@5E@ZSH@$  (P H@$  jM+# H@$@3  H@$PS5u:$  H@π$  H@@MXjce$ '+̚5+ aǭf% $o/Xc7\ wJmK/ ӦM Æ ,HGR$PX`XȋF͢=_|EXiŽ;@u:ܹsÊ+V_}uj( Anb%X",a7>G}hǜ9s QE kk,!B -V]uհ.%\afC$ @g ?p@ԑԣGлw5^$_~9̞=;gئBuV"@I.hb""I@%)Sȕ'-{u{S@i#*8¡I@$P5X'+P+eQ H@$ PVG$  H@X$  H@>j{ H@$ (P+eQ H@$ PVG$  H@X$  H@>j{ H@$ (P+eQ H@$ p3{?<|q-]c㏥[l KUb_~e5kV裏Yse(ZjW/Rn-\֭[bfΜ[b%Kdg}Z,G=+9sD|I ,LXO?R?֫_veyԟ%  H@]6b_?|x[oEeZ[Ga6  kvXh֐φѣGW_}5 D/|uY'q)߻yOƺz a +U7SG_mfmro=SUD*}QZTSvM<9uܹꫯ6|XGcW^y%7.~1N{roW.ǝe$  H@]O;wG19eʔ0cƌ(بkr!a%ÇI&{/ 6 aO>8lvEC\]wuᮻ;9rd0`@8[o]T"֨ӕW^>^zE1~GVL!x KDD;]wݰ7ֻ?;6\~G➨qf-ݻw2dHlnXU|X?Y~7w KRWM$ TDB7M5jT.DՈD3 G_{(|;awn%RW/R袋7"et##ڈV$#P]^x! Æ ofT[lE'J{D}_~SN-_$&LmMV\qE8~4"4~ߍb5nNbcgx8~QEDBG2%1y9D0]uUcyQmM6$(j|>q-D!~Ɯ\Dr;(9?Y@(O$ p=묳b?"pAN5@8?[|ns~45|R:e^< -@XGaE" H jA4C,I%I7Ͱk6 (K2DEuĈ12E*TDGL"jwG>:9\SwtKgs@'xb QD4K!twq(%g裏F}QGwqGl'Ie ԍ/~(Hp@rccy%2? |?Ǥ g?7PG"Y#Lqn_oС1ϖ D0BD;1rFgsJI=wǔ =F7&0"جF~9sͣ^ z?,4۶yߏEY8l׷5/ ߔj"QGutCdyF=, PBХNd!=veS> Jgm DY$ND(R"8Qt5n}׿^{m,D1Gaw=z-D^1BI>D\s*"nH'|@&g}bh5}:(1BAMl# h0!+PG44N8]rOD ']ž_aƬa> tfۢY* H@E (dT{E=_'NlQ-2]|WDG(gx`ٲxC  CdTV<" HeGR7QO!>1+-dc)rYi֐ ,D>e-6z×\[F1,`RG|+istLGibOaD.EsB7 h3rӠI@$L i 0D!ꘚ QYB2#%]1Shg:bA@vG%Bҕ_YtK.&G@& DQ)Gghgڇr vKHS_Br|$_<լLnjGb}N4PaF={nʕXܤ d124 H@ ̢*}DO;(B'zVO(d"ȝ$o|᳘Q#ADc2%`#ANDd̛+Y0¼PwwڇrDYyD8f v"<$ tX46AѮqRެX_ H@- N8D$wuײhA0(*A>)jD ]1T OR ,?~q0Pc2Ct#J=EQw%yngZ|vҎr*Èlf>*g)ꗺiW?Tk/|Tp+_Gou[6^M$P- jm_zLܠ`B!(K$AA/C@M5D!Ơ qXQAr<3~*[T9^K(qa_?[ʒ?:#-sڑ[|;=ǜJ4Թ)tl\ƣо/ H@(E@ZP'lG|1`AG*1g)yIH 샕#&D&_6F7u98Aad~uitg-ALYK+GR}\xϳ[_!EiUrᆇbM$P  jP'izV!b $lsb$9d#1}]?ykbʭ_vcf/fKҶB+[縤!0ٺWⓛr5 H@@5(PA DAՎX/2|;5EV"f˵MݿRc&r뗍Jv'KRm&Js!_:fTTT>cjov|:= b=7u,\rI&_K@:C0<:Tr.PĊPw1FP ~g<"߳C!,\IP/Y/^r,G[6m~Rg1AkKLש鸹7\zL\j="RIh9b`$  H@ @>dPdLr LarC K2mT.`D %x`|/;-HTM>=椦iC2UG7>㦨j*},(O9գ/}\hgZxe?R4rMmI|=T9W$  HZ"3iҤ.qq5#we8eyb I`"X ADԳ1tg㟕!D;sb6ɓMԏ R]JDK POꋈ]˔+)ՏvS4ud?xBr/feG}"x vb-漏D\D[W^y|S$U ORv䥗^[W^qgעG]J6," D*3ʱ“c0I|21B)R{g #,V^ʱJRʷLer)jOqwN>.{%F`!(0"vV"cǎDY4".i2^|ۧrG3& 2"=#*D{ꩧb@"( hR$J hq%˔&KrGRuZ5wz%~q>`-M$ f fUyoDop1rPne0Ъ(J"%@s*X2En$_>^z)L81 6,N"7;M7vH׾"nwyg0:CZ#ry衇Y<7Fgƅ?qR7m!h9e/nH+GsI@$В%E^+F!ZcD<&>$‡BX ~8ByE $wAG>&ܬM,Oi%}`mQ_$?5#hc]t_QoQ…%]t}-SG:jG2/2=`AIWEѣGXCxQ&JTM4'9Տ(,|QM3"GD"⏼N3QBF)) D;|0bĈ&\^ŢDD:(sS@D6KH82$ L@Z峏ce(Ej'ta3qE<h#j&".yR!<Ž(C,b%3D2+♅ f78 :4#K"tϘ1#tÓgK8~1㜜r)qRpn[! :S~c*)"Dω"`g͍-VWI@j6|]Ѕ ";)r&"Nd&c[J1?CrV*68J}߿H"AJ4 h*e@D%JΓ@%jJH13B;.lvq 3rH⿔L!կ~5X^*F& H@@~ \:]Lm1!qGxd_[DF=#!]$  H@]Ox{Z>G:]yG$  H 8j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ sGQ IDAT#@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H(P H@$P}$  H@h8 Ԇ;6H$  7j}?k/ H@N $  H@M@ZK@$ #@mSj$  H@@}P$  H,p-͞=;<aVni*K@X 6x yzdÿ_6=v-:o aܹ/8 矇;#\wu?.k\0?yXr% _>}> .hXuU.z:߸q½^|ŀ _lB޽;_| رc=&Oўu]->0zp})SaqC~",R'G}4<~㥗^:z&lA$  H> >g͚^}/w}7^>[na%+r+^>[yVvG3gNǏ-ok(-]֗_~yN%,2DN_>aJ曣ؤte=suH$mD [%I$?C@DDf)C5v:pw.}hkȰGš4M7S~Gl#؉0r O+\ϧvZћzZ:?~{vo>F I&?{5{Fr.;@QW^y% ( 㑻BQBF"0y䆒ϊX&z1nh$:nFKH#b SwX܏8∘Cd믿~WlrH<>k{g &pDtDfm?) Y-cƌǂ|!yo߾a 6g}vo tPoWus H@M]w)=naW\㸮IMr3\縖pF^S~{]w1Hmy, @GjtSIR!ˀ1 FF3b._-2\2(E[YDo( KDQR1GѕqLJ^c|1kx`D]vYftNd =#X;Cc _yy]qxGaL*> :ꨣ`F$z5״(<"w#ww\8p`tI$ $-"DDxdž!C=\K8%sc>[þ"\V&@mͤ* 8`"j-J A#AI5] m5ϹC/QFD/;Dj_6"<.;NF#w|Yᔌҝ?D9I'5XB;Z.O?^ᜤ&!́l2 ̨} Qo;oH瞻j!l5 H@^s` r= B (m鏲)>_7QUSk&@mfQgD`3cg+|I@&h'FjN0/PywtDd!*E%rCҵ]8ZfY~OkQPlX'PsozV o[R8H„n]FRNQDzq >Z9.qF%/}Vټls6e޴IK?4rʦGnf2Av-Q˭k_i:Br KFqu5~`t 1t|Ơ KYhVl(B!`RLd6 5nG]9[.=g;_|S{ҶGGR'~x#hG)˖]qre#W.N3xu` QM@#wAҲoh{ '\39V.͛GG-Gw1,@n!U0Yy wTXH N# HV sɽ6Bc{l1m_j14t3(.>"Fۉt :4&bӝ PI/ݟ+佬P$)S:E5+B(ҏIږ}]?IQ\^llg(lg0qnYRCP3.tWK@\{^$mxƴ&.|s ݞzھ Z;#eԇn^zQEZt2(_$N=Do9B#wPUV.el(W`)K+r~A}T:b;":gcq} } H@D LR$왧1|^(,hCo(@#$Y Bd Qv:M 5!hjv+`ɕ-E|Q RY0mn1 ҂Q.ug$'[.m_alJZu$P~߸F0ʞJzИPʼ)od_'Yab:7u~N:>"(ughXDJمF9F2Nk‹rufe).~/@帔/flgձ=dRG9,u#\igvT&ri3& H@C%׼JK=X'm='\S\W㷭N[eZ@Hf{/4}wtl|7A 8qb ٪B7_|ٹDqTT"(N;Jy,GJ'/w+i X?NiNG H@ppmd'"e1#<䲎5*ZcDZ3 7@I:묰~>8 6d-LO _* !1R0!|EPh2#eFK 䏼V[_h7E@eEiG1ߘ1cb XF5X?Qʈ(WaydSѣӦC7~(P'Mj6(N5o9,( >B"%jK5 Aڦ|B'w= ٟ/{@<]"-!vF/ؠAl2DbDPEhrV! Q%)$O2 C1M!"j$P[&rMb׿믿>\r%񷜈(X'\sm}{pn!^C lva:jWfR#F?'b;f!Co0bAaP/wLDj$P{]'^KO;|~E>h N ` L0!^>pm׾z q 5jͤA[qʇcOwIstק/Ǻ “Ht!xgo]P?>F4"#㹛$0f0r ~x& =bĈ%|h+-&IcuQGjy睱:39q8sWL׿VԛvA{C>Da02i>VN}C;U\w:蠃b@1Jo#\wHJפS\+I5 #DN NӘ`5xRU AĒDƎ~FI%="~/bcD~'+|-{ _u]hKF47:|Y5!lE%˼;.&(f&_t(ZQ{q"tG?D;8∼0D^p|p]-L/"4>%[?7M[򄹃f6 ˏb>ϥk H@Ed,c?6|uxRлG "k[UpMuT"\vص%%,DX?rC"k&@(52?Q(DP} &%Op\KQT'"sErׇ?D%b3ux≭n?,}衇?rŗ1>K>I mD<DҥN[`e$3~4;(r('"?>8 r!y4SN9% |R.ȁ+]wG{Di$  $R\G\׸&qk%bkJly]TW)Ndjq>UߊD k$nwc4E!b.S{v"/I'Gvm'_O?"`|bOt~ߌ'9BmQlC Dpw2BJ$9[s=Q_1]!QD?DhY B?"8um{'QȯK@@mH7]:DjeGEu>v-pu5Qr?&T2)]D' Իw((xFFz9IG E>N#J(K*6l~kI")Sǂ}R&ȳME K  b4?Pt-Rܹ]j@TvMKJ(XJnC]RZ"D+$bXJwn_xBh7RO|yw<@7/i_['\__)!;Br'\tԏ?c⏜_?|$$  H hZ@}P-NZCkQ+'Y1H$  H> pLn"kK Ԗ<|% H@@'0ec$  H@hTRܘmAmIYڒ$  H@@8ۂ1΁qIf4h~T6$  H@La0.R1x (j3m#!>sq.of Pf H@(%0Gx> e$JYyydCr[;5L2Lk`b#ͤ,|& H@JQ#28K{3?9Kh36}^9;e.pudmL@g$  H$(O",aAU,;΢/Rwʢ<, ݽ> etr\1z%_I@$ (%i(/FKԣG(J"r)-d(PgeI H@%@=SDRD&R"t7l1H)b5 JD YYR$ .BQ?|\INND)N1~6].l`4 q  H@@@d#|bDF zz[lXiǟ|j3գ$  H@uN 7Q<2#gP/KIUv̉Wv GH@$ DGn&q`SH\)APkVӧOߔUc%4Atz3J@$PDEA1)%KgΜ#O?tXnb?f[%ըjg[Z93$  H 'XAQ)SiX:cƌ0} bdL{͛*Y%?4 YYR$ .D E>YAR,KJW> RDV2DUYފ?x,OTuM7 뭷^C 5BHnlT$  H+@HGTeJ3%Jt7bQʴTtĥO$Q*/SS%]k6+Pq$  H@䑨*UrPPŤY}gKN6- 0iҤ0nܸCV̧ W^2A@$  HLǜM/R b`ҥV[ɓ'cdž'ƁU@tUOe=# 2i&] |. H@@kN4!&-Fu%bѺ[VY}7'|S%JTm9f#@mi[$  H@ vcw|G8DΞ=;|MS!Fsք$  H@]LF$YmKBǩ' z:[U$ N!h}x㍫~UVY% ::YVU$ ;Q/U? bͨ,|& H@"F/q j#A"f f>$  H@MM(:ӑ{@ H@:oIZڒ$  H@@ܹsN%O5P6$  H@yPGUu";S}㲩FR[Z$  HеOފ+?U$0mIYڒ$  H@@iVkvi xOÌ3v ~m$  H@`~þ~o1]7|3.O9si;eUW]5r9V#@mi[$  H@_>Em1ã>y0iҤDwӭ* 4('0PJk&@mf3 H@$DHj[B]h_|^|pѣGSf@|;bгgOWj"Dg$  H"NgΜx(Rg͚r-vqǰFTR+P[3 H@$P{p}1cƄwy'FM^xCnW^9N)1+Ps] H@$P#J (+GI+y;CݻwXj~iq |* H@ZH”R?ѝc\S"5%t-Z9-pB$  'dEȑ#/>8rOlM2dHGu%TGjߐ$  H@ L5{8#}ݘkKO2BG|kOS!K@$ Le]DMOQӕVZ)lKu ݺusT;>5 vsW H@QS&g^x!5͎_|úA1 τ  H@@HQ_=FLY%KSԔQDM Zk-5πaJ$ @\qƅ#F &{/NTQ2jM7 .lS:+P;^$  H@hO>$.S:|55]믿~Sw>QE],*$  H@@$0gΜ0y8)W|Ԕ^d<8]Ei*Pr H@BQ"q1cF9sf'Z<^\?_$ VgeYն~U-yJ$ .Nnݻ>8UrٽCYė$  tmԅ^80>˖V8-)+P[$  H@;G$  H@@k L|G$  H`>PGZ$  H5sP[3 H@8Be)mij+PlYW H@NqG#F'|n!Cj*CZS H@$@+565XÕr +PsR$  еK&ѯq%jK$  H`ӥZ*tA˩.N֟)P30S~`-Xw~J@Z(q5jי1PJk&@mf1_4iR C޽ߦz̝;7K|Ib-a5׌:OË/N̙o 6+Bٳcy睘ד[wu/_Yf_~9L6-v= @t묳N:thl/R+"W_}5 TAJ[oN;C9? _~y5jTxbd<݉#x{gg}g! H@@W$@g>7tSFJ ƾ3<h"CT>a„ Q? ={,x]yo[x)7_+K.$F"{ر1{g_`x≅\WUb{OFė!|GM>J@$!@%]Zk/ Fpw z!"yt5_s51޽{﮻ {nP&Z;UVY%vя3&FmJ+"Pߣx*F<_wu .D:r/ &rJW:d4dR&GqDAD)[o[l.RF!?⾤ 80FsofOoĉᩧipc=M H@@W&@Ot<}bqʔ)W_}uM%.6۬UDbd{N9唘#@͈iׯ(xChg f"NϹt"#bK"cUWͺ$H}>pGc{li;HMbvIaȉE~DZk9QTxoE\$U(P;L#Pȝ$>B*5]\"c4q'B("Qʛo9 ʈ|nV-e"7t@n)Xڗ5&ַY7J=rqG'tR9!?%bM y\$U (P;# %o&D{DHVb3gΌy%JoVyMF9 D>' jKD]DᏑt=%I}Lymٗ|P9%KDyes*#nx&^c?.O޴ V8jO{ ~[yI@$L@̢%rF!ANbA`y;I>SIDBl"*yD J"J'HA?FFNFN?rX&/fkB E}''Hc[jSr/QR%%Cdz@3w*dpQYɨ'zJĕB}`h'2<$  H@, 1ClMD"+1D ]͈@A;#?ɀ`<"x$P46"x ^rn)G[n/ft!PIHH!c1KGsT/NGg$~ƥ *(& H@@3j3 T!N"RtQ!F&>G7z2^ŏJDZ4%%KCr\4­q\"<"S;'(qCf^S䥌v^ ԛvrƄvPOFT6pn4 H@@5R# J<3;D4k"H\KY1C2rC,'uX=Ō,vPᏩxK?l,Տr,ēGx.Y~ԓ9iR:A.߾' H@(J5TqLA>3n2!xD˟LH9厺~_9bG3k5JE/QdO->fǶ\vȾ_yLɖs X*xwnX@$  TT(ˆ}YC$%CȖc T'l/_"*k㸤3$mou#/dOǫ#7)LuQG,Wr<"ҙL$  TTV2+IMe_W"PxIc{7:f_g˥>fEr>>d˾N>fx喩kXq,@{*5XڥI@hdޥk]5u3lKGVvN+NQW^g ʱl7~fZO״#")/ڛ=. Y[?_j?_v{>#7[|e9":6?ؤ(tƏv:$ jෙmsW͜\Om7ej>mUD!fu%23h , T׈rQBIfSRR?ڕ^EK??Uz͛ Q̛Zrۑ[bMOz1ҒKZGfftM1ͯ_ C$2"A:ItkzFle բiIlge(Ţ7?ꇿTlT5;="Cye'~ԗ)8n6G! ?S2~1Kǥ 算z9qJc[̗$  H:ΰ0Lk8:2׷|u9fɦ|+USٙOF4!֨/j*r/tʼ%EKuS\k%q\Y1^+OS?2'KN>>bdcy9.9Bf7%  HS p=~w޹'xrtb9C'1{w/^ËnTىMQÊK,ayN*;<ؗ,S!?_ 7ܰgO, 2K*5<رcDeq$CL9.9n!cqf",{.[>⏩`E;Ҥ~0a„X iR]: zf$]k{&s,=DYy'<uWviЦyqcƌկ~p-?Z'#M! -ami*ɀB6u7< Q$P߿S mv1ʍ>}z'sĞeT5 H@=\m//]7y䷾> PfS[;۷oRҽO{7v=H QKD╻khyqQ"]b?+[?¿QFR?âD >< 6,?"]vYAy䑭@/zG4d\~chQ&G8fn[gs="$?V]28pD"̹[n%vmqC=|- H@j 'u5u^v1bܬzM6.}g" DK}衇\ٟsm5Au]c.3<3{cI@IWy6 MmD[I&Ms8ʟH(B TB$2$ 4(iz[~mD_x$jڃEz'L{H75)uzȑ#Ï(>i/.)gN$W$  H%jKUCI+T1f :D"% 򖧞zj|}?(F{?)F&J:ԗ=~z5()E䣏>s= nKMgciKO<E!j ?<|~ДJ鞧;qGJoF0ց S^~ ;bNW?ߓ$  te |2j"'Oc^#m>"7|{ߋSe  WUo~LɻdQ_D"r7-ଳ /HK J"&j->(/]Dɬ?XdB?wc=uK?oС~{..r L~_7 "ڛQI@@czNY+XDj۸u^ӔICy$Hzr|2jqꪫF}- Jg?Yt3ڜb~C\31K'^f /GW305["W+ H@$PD*ib eƨQ-˝f!".~}a3L\Պ*Ѐ xRm$  H@G'sXykE>ۉsJ:S@2$  H@"Rf!ڷo,$C䔨i%`R+P q$  H@DEJ)ؖKؚ5ߑ$  H@"@v ԶsO H@( E<+HSԔ)_f+Pی%  H@j䚒Wr3gΌ$~gq(xgQُ}xj*mRb$  HHO?2}P,h}1ASgU)DE2BGHZ[%  H@g>3aܸqرcR6jk&# H@@'@7=baym'Ƽ7< :4S*4l[s5Æn6l8qȑ#s=SɾcP9-?p Ԗ<|% H@`{ D@}7l{ա}D"<)@=zUVY% 6, *>YQTk- (P[$  H@]1iB?U)$  t4وfy{$H;o{UK+PklX H@;DcÔPb :TS^dE':@5p$  H@CUOW< b*f͊>Ν:wlMg H@QLrC{F|W|i94SN SM/ETդVZiR㻑U6ٴ-$  kfcsN4) T/W^ z-㬵ZQ @@'ӦH@$~tAer[.L>=9ҥ^:V+Vi鏔4#KH@$ &a$KUVY%D'4_z/K}O@J@$ j!@WJ@$P|ҥ&ٯfS>*͔,|& H@b<5mڴYuU*#ͨ,|& H@">1"U'{?t(h+P$  r9sfx7^uc~K Ԗ<|% H@Z`fm6pêaߴ Uw .|m$  H@ $,QsVHXYjRV%  H@kt:ԒK.;;ϫϠ$  H$z: g$  H@* @E%  H@O@Z}A$  H `YT$  Hg$  H@* @E%  H@O@Z}A$  H `YT$  Hg$  H@cN'O=$  H@5N` ݺu ,LXz",R5nicO[# H@@; 1޽{8蠃;Zhˇ^×9EeTY]PH@$^FhϞ=+uLtԩa+B=$'A$  !(/;O?4?>\}G s΍B#>6Y $  <R>lxO?x㍰^{|; &$  H@R"N?0zp}E/Z΢m$  H& N'#FDo9sDaK(Qi5 J)P+fq H@$PD'QG}492L4)̜93FMWgLச?BIILQJi"]dr+E̳yD(QQ(rDA~i3};gvw}o?Yj9w+UP ( ;--gR8јaSɤ02I#5oڴi?֭[gP2jʄ;lV3nSS*Yπ yjժ,D;,[V\>sڐ+T`6;쐲P]b?~ӧOwW6{>Ǎgf͚e$$Sګ^zJK,qcƌq7oTTkεh~d9HP@W^LQ ׽~2Aq2|X%~K~-[ܥo_>}L⥤}[l `qxMƵwk1)"p2lN8G:B++ϱm=↦Lbqwڵkl17qGa!axbw75jĴ7E@D@6-'חTBL(H':~kPs0zuR%> lrPrK1 ^Xwm&|G#D^c9N. 3 O9s渱cǚ|Gl}R4&bawǺΝ;(C[?Ndxoc{ɝvwq捬V wy}YFm~2GCBwekC]/Nxz'<֏}[ ?:ᄏ֭#hن5g1{챇馛nsذa?tGydМy[N",=wWx9zMcvу-1Z)CW]uرyd{i[nf]"*þ4g! l.c!g "ۙ^ HV(A\=P.먄i2?Ry+XINL '/l 1=zx)D,x }c瞳;O>lgSo{A '{/$b{SN1a齣<6(:kygfotA,>cv~9k#Rh'N?t0'o.{x?a>H +ڵ1cTD@D@rKŋ-- #L u*5=^9Q/:C~V qSm,'+[:餓Ns~NTG!G)iDVgxW$P" "{H=YAxrAuUFq]eg&:%jb>9# _|~3":xDRf3`^@<DzYCNB_H=NTD?RHXC"`;PާdzxF={؇ӚP{Wtj@%KdxdaA"" "{/.p嚆Ha\\'6 Ն u ۩#vjI& 1Hl9wd ^e!K.H@"ؖdw?<7/H=FEP"tR/Q^!o% <>#Lz{`;~|EP_~ _ѯ`o~Oal\'O*^2TnӦ0T,+u*fX8u0K]p%'x9qFL DB˟XA眀<nU}>'\ ='/޾ǝip/RYbp =^cS`{&[N #H-_&ۦ/|$4\] 9#"CdaLmݺ}śF%PA m 0rU;I^뮻=\0cdy]"')N5^@/PRm/Y._wxTK=:U{ Ϸo,%{H)F)䤳[I-*" "  p Js-huǧr/]B"V##3 3rHwiEzM_U^G]Pyax%:z! } ׿m퉮J&Dg570"rJ6?etڧ" " f;˵ c%FFay j+xʅ>l6Hn*//q{LA+< Fܤ/(w1h#sD?^P=%h|L,K}P~{o?:{l?/~"R}>~%}X3n>t ǔTD@D@7µJHtLb4+ڑba|*Ǚ/dJgXd'H;X@$".1V8тҿNmAAqQ/U{zAK5l/#<ș˪V~Ho0d1FL^Xb!ŗp gx'NыV_/gX}Py{JEأ`/5~ID?R xKx;q%HYI{0^̃tIM9\㺌'<*זDݜH4()e("@D*TxGӍGN2N._lx{ ]IDN#veE azOT4H žG PG=lϏ #=Y7)֒mE@D@Ak3¹ƻFB5}f| W~3MoG%'/ Rtp{{7Qɓ ۱/״{D`*}_ܩأOd5q, Hf[M-˹BG5__d[nqGuM|zTشil*)2z$&ZY 3}N S(\: jma 3wt\nv^{wdjY3#Eouu-ڐ(eA 94s frk#cLMt~>,j9͉2+!1ΐ7/ԠHl9r e-f#9 0fS/h3{ې7'{H(NE6x e g+{oE\'8U{F.&eG Y}>61Bx[@`GOKf[@!@ q~ĕ/@ӽSDG3h^tU 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj 8  Լ9Tj- M<ٍ1M6ͭ_UV瞮cǎnv*hO" " "$PɹKtwu f޽KOv~vB-ML@u><-Z."{﹥K~Z!Z[?뮻.򙞈l @֬YV\Vڷouzk7k,+ &9s'|{Ԇ" " "Va=WS:qDG֬Yvr^cxM6z{μO=;ꨣLYc#şIMm֭s< W\ubLVXUP.w_1c{rsjlv.+VpFrQ lX?xR|^|ydﻵkFWk(h}@?-[̆wuWK'[lZjea7|$ Z]Jӭ5omq͗+Wμ쳏G~q(Dx@N:ՒkڬYG{M._͜936 " " D@u9]pcq 6L-կ_/Vy/j@P;&jQ@2LOa;쐴 3B*ʲfa!is6mT_D@D0 HqWDd>Y c{Ud[-@&l;3Ei(( }}.loέQ7MuE|}_&ߝz^`:-ġ}*#S5rddʄ02[n]9[7Wn3)t>G}VxI/L{{m)WFUaZ>e)REM (JmĢ&+ܧOf/M4qv[궾ZyVʏҝv(RʹfE7EvSnN Z0Z- xO!6sժU]L/9W.gw$[I@d_&dLmCA ^@J*U~)vŋ[I7T(r!]cs&XA¤Tf'5 " " ""!:J`9MliӒ6:k,Znݤۨ B:k 0UV61ܢGNTǍgznK*@!@-fxPk7 !<{>B$ ZG]}*T*+,=q^v,qZjUעE$(0v ~Ϟ=˗/w/ڽn̙.s~;餓l>^|E7tP!jNݻwwT$P+Ȉk_6;ҤInv>MZ~c UvzaԌvD@D@D 4⃫&<.s:uroE]`MZh X8TRv ԞD@D@D ȃGKMm ^g:f7d=ڤI5m&Hvo:t$P7{9H_V-Gm׮#)?K>M|!칺$" " # =$/1[ED@rO #-`>~ QQD O(Γf@!@̑ɩ^.YM2%o#s˖-)T5GV2 tR7~PJBD6a TrUPJV%}kj<2z_D !~Ɵ:[0G0 0UIJO5ktwBdZD@JLaJj]ʕCIzkWN3ER߹H\mqP!芺 "P Fa*~W'M'j<_F(@SPU]|& GOm@ AUD@D@D@D &s_~ڵk+ըQDfԨQؼ]ݺuKdS$&JXoիzYb:o޼*UN8A5I@ FBb͚5$[Ix6׮]'J(ey'PSY18Kn,ә3gsleKzzؘ@^ Tgu4iF=Yn]N:GK -Z٬RJn!W/~曄45kV:|6i㎩l:" " " " % W~ x}ONmGկ_?#$yb G8:B KAHqʕ] ҵH?J{3ԩSc q=zpm۶u[lW"YOD 'fvNG?dKD`:vMզ3r衇FBsچR\!qE@f͚۵jr^zt_ojժ%iX@~jC\vŊIcf@X~}d.*|8Mx\|y(s^ Tn@O碉PU>~S;l!UD@D WĜ'+W8~-\o-̕fݎUVsD0@w$)p},`=ÑBED@rXɓ'GŨLoֲe… C9H= @eO?mfm˝>. @.X^|/tĉ)0hKા@៽ @BUD@D@D@ faWD@D@D@D ƃL42ӍpΎV%:J>7xýK&R({;aJ6D@D@D@D@@9sꪫ܈#,Y6SM @@%M7 d˙eOWm'" " " "P@(*qW^)&NYu֮I&%֢EJD@D@D@DTB]NYܗ]w]|ŮCf͚ɣRXeBMۈ@B#P'L=bW^r+V,8R' d1N:K.yn3z"" " " F w/D]Z\#DD@D@D@D Bnfż oE(MRKE@D@D@D KBʗ/j׮f̘aX4Q%%2#" "M]3w}/EdJᘰkzB]/pOC!Pi&"P,Y~'WF>Y݌.uʹ1$E5uu/j=mT- FtIuٲewԩS>]D@D/cJ{o|tئCophUtuЌl]}Ֆҥ_~nʔ)y}pxrLʠȻBOL 4RJsu{vժUs|=>|x&" " " #ʑvmݕW^z!N;>]zv/;wM QTD@D@D@D DBkfY_M:͞=ۍ5UZ5㕥ڷoC@n@]h?~|2)<.JOS¾@@%Goi7@jB#PfWnzA-쫈>T7Ԉ1KED@D@D@D FnVN:OL{(UJ3Ud\D@D@D@DLH fDD@D@D@D UR=2! Z&T f̙3)jӮw뭷vڥ6H@hUg}^Өx4j@B#PY%4W{JJUB#P+U5jq]~[f[b[vm[:WRŖP^zKXD@D@D@D B#P6lF%K/ >}GnΜ9n-p;vt^zCnvF" " " " @EPfԎ;ve׹sg7i$׷o_^{r+VLjdD@imfRn=N!!C-\0#HD@D@D@D =Qʗ/իz֭k1tnTM( 1+W^McbT|MhѢ@6 HơYZ5~٧0a" " " " " $qo}S#DD@D@D@DtH_~|JT#5򦞈dj$8qbO+TP^dj}9rdӪU*j@Ml!ZjOݭZlRkԨȎ@4`8LmbLY攜SLqĝr衇Zjz(%̲JQׯwH! IDATWv[ց9Wr{z"" " " "P:B#P$vq׸qcG%ML[lśiuݵmm܅l!ڨQ#{fzo#Fj+f͚N" " " "P[okݺuIXDe(?VҰ~@@Vv"" " " "Pzʲ@$P3MD@D@D@D@J@aZb?-[fN׭[gՙ UR%_vm2"jo-Z-]/&PIOa V~{G6N:.]8M-P*0_n̘1n̙o)Y ŋی}f7ζ{?Os5{lK5m4,ۺ6۸뻮]=3aW7l0kOX^{k6aϝ;nXBvʕ6uީ.Rr\ǪU&c=pGqDҾF {_}>|ߚ5kY!ۑGvuMZD@D@D NΘ1]}w5!\4GcSD j.r'pBM7{Ǎ5a@[o6Evnm6#P?o8m*| ,02-w/c9Znz>"ejy ܌`K/:(B7[|;;ϟo! /Xd0d@*!AhմiS׬Y3mv08qիM8~x[t]vq_g "/t]w;vM`#L~On֬YnΜ9&X `ouT "a &c`xG?o<{T!<?F.\Dc޽{8B7>o+)/" " "E ?┼Zƍjժ0%qEA`"iȐ!&plԩr7|ndT#G:}EH=oxFt g{o]D!)[n ۳k J*18'tI}müVZnic@|WMp3衇O<1~h"qB=b-b|x۷oolWl^b"eSg)kڹsgksݺu5e˖6tvi'c5>hД=xWӦH<'<awQcmdoO>ibzLb=qÂpE" *" " " K 1bĈH|#eN=T%޽m"UElꂘ}51z'LXbJx`'|a$o,˴0|P;I?B b&m9ȼ@F{>B(;.X7äPs8e~°>1l,#Ŕmx@=\JA J38u1hƞcXRL.@$/#/-]o/s P@~/˜]%VO L|/73-2}~Pd>3! Lz)7)<"u >2u0H#YA[{>x-ǐ|_h]9މ /dx{|?!ddsB"Qc+$-QI#b U L5FaG,&1| #/65Y 4&O? 4ȄɓM7d`)#xD1 *Z}G>/lpx{LZJV=_zE0mw:8>A! gM6XC|$Yg -xDcOGy睖Qǐ%Eԃg o&ܢrc#,)nF"g^M9Ya|,\}a/8+?=! K}zA{VaE(ȴl L j;$ 7ɡɐ.B_ٳgϴ< 1曶; ɕK+I!q&6=sG9=O9唍mKeHz^{c)^#|APR/!XafհmS zADmJV + fypW|=W7p,9~+TD@D@D Bz}ܧ$RG0Rg!xEC"o`" jA8 >|lTV0(6O\Kd!Ȃ^R^{{z7mϋo2\ߠd");" " @ 4!d/܆x2iر=cdɪELU)^^{=hiQ+FsαNLTʦY@%8XxpϣcǷ[녺/9Q=}m@B#PAKJ,5\cKz2T DV#bw/m˪l>! 3K/m-β>DUB"fedx$bgOmЛ=^H$G0Ƥ5kF=O=&8G'iTD@D@D@J@*ě22ʐ?37VGHyѰ(ۙ%3bMUHԧOE>Rzgה Oѱn'Q5cMHAB#ޕU T>!ZcJ{`-#}%k2kp[=H@*5_&hб:3L~B![DTY: 1gw N@ΖpM}&" " "'P TpqDh (^ bU!x˅v3OW?<\pAi;gl8*’DX{l7eʔbT.z[;}tk L{M48]?AIr+g!nзգ@R?M9f h.N`BP}*WSv=mqlڴy/(<< ؊Ql'e˖,[b^5}m2!$'N('XBC=d8lGk+,;xi@!ǔ|?Ob50ϛ{G,*b)Vm5 I G?䓈w8Y|,`;xIu]gzꪫ_mk :, A=pc}MիF{-TZbn)}-.J q*cp 'tÆ 32%A-~:B2yM۷oo>^4RucԓO>ub"}\xxPO<<4 !o0}L(❥ze1`tQ`|X, gVzw0>+YS{G w\̡{CX'do'ų3i[3&L>GbK.x/%:QRSpQGB짞@>@E`^}9EZ\* "qCaaxhRG>2 r gRmf.X$b$LsJ8Dpx"ovM|A$Zk]zG1M7dRP֛gwyw׻#FXjBA.g[@h*RBx|A$;CD#D%_Y&þs[6@AT!h>l w;cL}&TS_.]le-AE܋@"ţ{̆?#]Vl=M!h=Xས Ncː| лˍ7B-q;"" " "P6B#P*T/ܘC38D#B,]z65j"70!XԅvW*,yif>5W:O&Cӄ `Ox9V,n:=D7a7Ղ=nb8k#{^2!TOD@D@D 5֣f2[qB0|_ǎͣW6İ/YR E9j!VAuVA<#DPNfOdN yP tX28FHas=b-O&M1;\ED@D@D@Dt B2,;o޼)b%Yh:tl,z"" " " "U~ֽ'P}Sd88s8֔QD@D@D@D sfg-0I<ގE@D@D@D@@ jg+V$yOYR{z>PT4iRh uȑd@.PT<]vbw1駟[E@D@D@D@J@(*N:JG`"yK银'ᄈXWZɢ-2%d/ ,UR'JVjbrvp7pc/+M1S|B\knE]իWl_G" " " EQFjg͚dɅ@CTRխ[6zK~vB%TSJm֝ze ޲/_g4:kzgذ~:uLƫE@D@D@O?5j0a=_r_LcN0av뭷vh1'wZ= @w.rkܸ;ܧ~Əo{"q×;G5j~&Jy^vmWb-sRD@D@D D1͝;W>CC-═CFqMFm˨#Tn>)Rܱpc=ֆqs|NAKxTZeWD@D@D [h68Ø]Vds`Nj'Ov ,0+fMC+PbbⅩ?ꩈ@vS{;#ܾkC8Ũ^Gk]m׮yQUl;ܹQFpzP XGYb4'" " "$ʰ>⒡zd)#tk!m:BM>ر=2@(o莞@ :X=sL7vXg>ڝp 0P:xX4h`ف:([lZVkk pOFD@D@D 矻ӧܔ͛'/jpDCh@f)n?@ UD@D@D@&p;JID%yM3G-6Ey3vd <9Pj@B2_~}'.{C3i bcv!lyi? j(lĄ.^r2kLcQD^ ыe˖KHO'GP*Duڵk-zճ6Ӟ|f%Y8 Qu =f"I.uV1BG8 l_t/LswvCE.ZȽ{n{v&Tb T5}t7uTdgyC9l6(ZB+Muc&zGD@D@D@L8;DN;mvnt?0a4*1i9,:uH&I&D@D@D@D/'3Yh[lYno֫W!bf;YvXRLp=8͉K 2*[t呣c閕+Wڝ0?6,?=.?.*" " MAiӦnwԯچ1 R(oJ*!\H=@MSbO>qÇw}ŹpP8Aj֬iC Gqdcubf d G bm۶2[,`﫯Y̙3Rtp6jpdmc_7ߴaXhCЦMwG۬dmsxǍg#o~vۥK~bNuD@D@BNV[me"\w|!kH}RO(G Y\M}/{衇L!{ [#MzN?U vmY6A{#XGz:,{[m"Ծ}dNڍ/u=rRDzɶC q~͈GcѾ.wqDޣo;M{{H߮SN#=0[_&6&N /Z6E[nvec)SܤI_o! 񇰻C 3sasKoц3."K{k 2?Cm#Wf7Ҷ>}8{m^kf-%?3!,2}%UW]eZDo8}gx"8.\D:4b&]veN ;Ƕ,#&NhSCK.;`H<{ G!zb oאn'>7p@ l8$<`:t.r!y1ǸG}Ԇp?1=@qL,b{| :uGy#]?K>: 7i㍆1$4s3 _E@D@r\R g+iop'y ɰ8"˾}:L9| B ( /4#1 k_y啑MdTEytA6ciw_2?j(w}-[6܎gۯ_?V<Ǐ7O?_me<D)$5έ #իm}xyba2sxJ!R[xgI=rrd䰴 9\#%R-Zߺ,rkL9_nݺ% &l2WD=>i2ǰxfLd @*x Kes>#{ 0)(=!NfDz!=޿ LSa-P쇐fU"I;xb@(" $@Z1o<+^2CGe%"/F-Q}xII 3,jCH<'VزeK'E /9s 5jy8ǝc"-к/Y SHlp|+ Yɶx+uxxY"D;x@7pAJDSZ]E8U8xE'xN C'+"pRE2vOT͛7Jb5@$S&)dt hmb@ue L:RZha '*|=$1i(>VI_M凤Zj_b[y~A/e\KH'\wns]ygϞmm6@ͳ͗VZ%Dd70QD ^K)Sld䎒o{zxX{/yqO~Gꅶ>xpkn/qo@ .^&&)pĵ #\ØP:KV>p6?*@ͳo_`V뮻$6d뮷Ie ,B\AxU˕ E$I4o#cd{ipH^*C#C8=/|Nb=&v l sڋFJ㆝h^M~3|Ƕ5HE~ &3L~)#%ǒA$r`[f5'Xf=!jN:$wg08Yb?))JgO"@s2$+c1(ycl>7F/ٶ< dCD@D 1~wq`|W/* nPdE205ζdN@5sv|Kzο;lhXK&_l G7mOCXy#ᜰlLkb㮓z^dzG9{ Z~6؎_>$OT( 7vLD@D  pEߦMw衇Z&zL2w[.&a8ay;Ԉa8; So udjv8NV3zD$:CwmIQ%)'A߬t0tN6 Y ?@L'jO_Q=颾⋤?#܁j!2 BzCxn6" " yLu\>tAFj~>#>rZ9 m-9I YrYkҤIBb#(Iω2^A!h!_{~"x(YJ5G#eBʝ*C)$BfcRzx>Aa-ZDмys o5.~J?RY5C=;0ҥ;3n8 ځÄ6o'NC22ϳPg5@fYߏK.H&ۈ{7$lEԜ#gq FIBy< ;X%1oFKvx)ɾvm&l={h?;'xbu *$/1z*;v N o1]*n unxa{{&}lnL! _~eO&4w]תU+׺ukw3s{ 0̂'C6 ~.E+D5!*_񣃨gڨ"" "PXk(PD&D17~"tkb v::2rcRjq9 aSX'PN0\]{ɅǤW_}Ն9y~V>+R1o_y{y-g}1O?8yΉzuEbvۇhkl5چM^2B<,KR77V[{ 7E@㝥=6(xl/7*" " K xE`r}" ʜ /V\S u#n*b9xWh(v =@ͣo_\*Bїl}9LPwx5"RUxd.Wrz6'h߾}A˔=V`xH:0$O=LY2 ! bsz7ڏO<{z_D@DxA#UBIµsOaHE^507!#0G1v%PcswIJ0˴q3h1TV2gxM?xw1ǘe;Qa&~a7tPkY\l"YauӮD%O>`H.x{mxdBA`bBC=LqgmVED@Dp0(_HUۤBQEIZNTuЋtam×a#͢޽ڵk$t!_b H{9w'=v}؆;S駟n;Cp{{jG\w{F؋%ۦ" "  5O'*kD\#%O@ãKF񗍂=/De_6 ?D"" " @4?V'2eG@XkO" " " y@&Lf qx*} Ҡ*" " " yK(IIXڅlwi~FJU~1Zj P݀Zu =#$&L ~nn„ nҥ&N{zZL$PxT'ԣϟo^#Fٳg>Y֭ڴi:tիUb) PK+xI?C{﹙3ge˖Yjժf͚9f7mUXvN}T_5*" " ""4LƏoYogᄏk߾;]ڵ=:"qpJwE@D@D@D % ۯYƍ5 4ȼĞ2jmqZr;v4ZreJ&OE@D@D@D &ė;ol}InfZF ŚƤM \$rJ7vX7x`7c ĚziF\JL47c@Eo@qSݜ9sܐ!Cܘ1cܒ%KlT kڹsgwAY.UOvŭU"3("'A?6q2k׮϶v[׺ukץKנAG\i_ iK@d"NYoTĚ*aÆ#p~^zȉM$Pˆ"" " "g<^ѣG[YkJ *be˖!ƍ[TA@GYkJ%N@KYUܰa[o,X`yN+%>K2_~}5%W!^ p@@x딂\x ՠJʋUm۶udHjIU^D@D@D tS/N ˖"PIEfKLN:tH5hDD@D@D $U|E *" " " yJiժUg=R~qy'H?{&E᫨ " *A("&9]#k(J$ H AL{CMO<=ԽoUM}uF^S<=$P70tl"ek" " " " QHFE@D@D@D@  -]{B@1Qg%L3.:I8I L@@/wuF8vJ5f$" " "  ܹsݷ~q"LRa%PÀW][h4hg}Oe Norʹ>j6;a~l$[hg=l6.Y{?(R?4t" "}JK*LiK<-<ƍݛo|AסC.Ay~q6obaÆM6WPtN\ǎ]ڵӥKO?͜9J*rjJ [p2dC]=!믿vw;vÃ7tPwᇻ5i$=-(;1;F8b Lr1c$D?lC.=.X ^S\{x#z7bq IDAT[jUl=˖-sxWKrJSO9e=^ƍ6m䰷(K/_^a>"0 &뮻΄-^j^YlPG<{խ[7=(" "P6 ĺgG$P87+C2V{y+Gyĵm6ҪE~I6PbN:suz^uǼSL1O& ;C}єo< 4pڵ Kd}׬$ڵk=&Mdƍ=BxZF͙3^_}|" G{ݺu9~x-X^d ]lh n8`#I^{z;0GW_}k߾ꪫOo."&n~vÆ ͛I;s#pW^yy[ guV1{O 3o33Z/vx}צMEbzdjff:bb H"" " "qxFg%[wĵ%f#S1؈Cqx(*  I X;Wg=Lccx=r) &Ol]tA\̬Gj+-=*," " "FiYڦ_QI{G7Q,c q fi#x<ƲO]P7T3zX̢&̀}VɊW~Yv!UD@D@D@2G@5slebGO b3LH@!裏>jH`Lb"ҽk~؞}wHH[>y0߽}!z,V@()!m." " "Pjq&yl^x]\rc*R*IOXJ(D$)XR b=ꟌE zq_ko,~=~!y(7aB7TD@D@D HQpE[1cǎ {Gcd=x.AU|Yzlq>~;/XYx%|)P}݂Lozoz o~?:&W+)(1Mw2"e !f{U# IN`L≌LQw֣~$UPD~Ųe" " M{BȁrQGΝ;CF"%P3}֕Q<.`JP|[Mw>u‘ gϞmf0bTUCoʕ SD_쑪 {g`Y(Sr${N [d(^fy B cIq.&.`T TħN4nu}%ӏz${ZG8.G;r DbM)+^ۅVXED@Dl> #%-~ˋ{ x)sq{ \ݦK5\Sdȯ͙3Ǻoܸ_l7]dR{?O>nߝ_NU [q4v]v-\'2ŋ-6)Q(Gr '6Broc03/r/=zu]Ia˖--`ͭ@"/?5e Lz Γc9[EdGGyĄ% .(}ꫯ fIo6  FOgQFŋ4RW 8 /[(%tMn7/+?Ixq#yZ̪/ZX HOAR^zY'Ra<3R͜9-]+sxBFs> :woq'-wu.RajVl曭._? [?tx㍅9Y#o" " e$&4X~[̘1z N#M"'P-o^Jdt'R'L:bREb s`  n}=zn.=6t2'QE)ny1S~:vax:NwꩧT3:,˽kO\BSĈyqA~FBzɗ.HC!LIȽRO@5>Y O_>}Ld1(BGidn.r?֍&N>ŊǓF1E2}"$?Ih߾}`' Wv;Cç4e Qa0lh/FOٷO" " e8+ȅ_Z( z)‹{( I g:4,0M<@MYVoAvnݬd ^ErIe!⏋'?l#k\7lK =.'R O,륗^j$">t͓}DO}Yf**U?&2h$8%e!^E߸qO qCԅ@M]nJpQrqqq²T z鰇Db3"aһ@n~%D& :zq#Hn>;j-!j+_鲙N(}MzxFf*"X%H3sl$P3UVE@D@D@r@ 8$" " "P 6K>c3$NlAd~WӒ%㧭E@D@D@*hIoHn)ꫯNX}̘169 ”xUI1E.nI%L@aɟ 3" " " y@aIFR!n&!6^Թs纥KڌQd!eSRM!XI=E D*؉#'%" " "g`.bN:k׮6 3IU%O* 駟9NiMɧM~*}fxWJbU]řIJ?2!ӠN0+]xV?0s!KnysyP5O)" " "~J^xCWepT--oqSL٨,X`jmI&I˶E -_{RO5]if͚TTՉ'QFYfLU6mrV<\yQw2HfEjl "ԛo RJx/+bS/ŋQ^!e`)" " " !hܰau˧Ǣ$C@5ZZWD@D@D@2RyI3]WnO.ٗ@ͥduwt 3?O5(f Ԣ+_u$G|d " @{ϔG}]vLqZ" " " yH)1JCOS1=iǭ"VׯY~'7bױcGw1Ǹjժ]}џB(AD@D@D@6@Z`۷O]xGVZ؅ߨQ#WV-WJu؆)SXuٳ]>}ܲeܩv}wۙDf'wtn&N+U<@׹sg׬Y3g֥ 6weW^=׶m[qF7a7x`7qDA"N2akOEp8իWaÆkڵnvswvygᬼP+VtmڴqxY dBuҥNJK.6QD@D@D@D@9s3fŐ֨QÝxdS2ޫz' _|=z4@SN5$" " "VZ7c }6Qx;OjNOn"O7ͭ@BD@D@D@D(yH|g{faKhvuW>.\Mj.%QD@D@DTNmg}Itc[u5Ϸ}D Rމj)D@D@D@NUBx>!"A *LȟT'XI(cto"?waFECmlJBHォѶ˷%P툫" " " 1 TMEET$P7<'@(Rr-0R)J@(}BxחxX6lpk֬18%ܪ ~v2tɗ`[6V%@e3BD@D@D@^LD$O}R$yQKZR|j)bOϞ{[et4T-NZ^=װaC?ǻK:Ʒ~k"R쳏c=>jq; l<*%q-}2eJ -isOt7mnܸ}nnݺu)y;ܟ?3BARw͛7.թ?D%['ܽڶm^~kC`~7)oʕg:tʼnM001~׮]]vzrdqޤI,p8x≮M6I{#Gt6mI&SNq-[LʞVmt3qƮUVnٲenɒ%c)K+tƇ~l^Tr!cREIJx:ׯ7o[hQad>pEŅ(O킺~>#ˈ?>]nݺmڷxq]wAYU5ʽ;裏}֪U+9;(|*oL{PD@DQZ5׾}{4l0C}7̙ѥK2l,W!Lqp ]>LMp|,Zqx%}=s9q'J^P9'bmk:vh=}xgG$5@=:ꫯaxRic=ww<"nݺֻ/BƸG<ބ(u}5߽75T Ԕm xL-D%Oqj< 2 /kH=A?U-1:4=,.n~^R%w% dF#, 1qt S+WvW^yyC`:!~gB'x* oVO܇O1ȗ9WϬ QVjVԸmѭ8~ts_[3q'D^{ZhQB dtuDې!C WBd#$h{<мĆ#J=BG+~6 J IDAT͚5x4 "Zz1ZaW_X>*" " M{/F|O&xRywQIj̲b Ӈi#c,_}+ o_׿c{U 5h/RPEH D@D@r BdpO=T*QyɞܬO:A g4VBC"t wq{{#{|GZNO>h]U }/޶Z." "{O"|J[rqY&B璽gn[ʾ"EEtQxZ$;^_ `ARze>xqMa9 Q/X_쑟5^ 7~Mrx0H\) .R?"" "tqEe3 ,^E_&R"(x7%h/^a/wKv>^U i/mog}1dHxn'?C6" "wpУo\F"`?La\!kt& O^, >h\PmOO)_$m*m%PKr#(z _AqDm1\~nϺ<&RaA^l[u?/&'>$k;YdE@D 4 9=0ڵeIam2U L\@^`"l\`l|4;Ǐ~T{>lwѲ|Ga'b^0~%^)hWpmʔ)֝.dc}q]tqGq_q/?QL@u3ē#Q䂚A738( ̙3![NU8kԨaΚ5Q+.//|~43*Ojd.y+nq *O#rb Aӧ'$P'Md+%a^.|cY z8 2H*==ꉐرcaVoO" " Cang}qqH7W^iSo?:kjX%ga]Ϟ=?\ē{ οoŞ Ӽ l"o!'w4tнW{]r%n},dСC$=<?H(xk8p{ԏwfwyώdJQo%=܉'hK$PK0,$QٲeˤWn_z%yB􅜢 X")]x5cңGxr Ƣrad x<yz WǞו'xR!v.\h1~=?x34i<{~;>)]Ě2%^S3/]%}$Pr[bb;OxDjJ'".oPH7•Kx?OD5\c1#|xS]ә3g+V%KŋMa RO2 \@svZ7d7p@7iAW~{W|y[2D' 68%>̙ `}Q+OjM8"" " "9E`-?h VTqK.nݺ&JYB7ePee-Z>B })L j>}]D@D@D "O?duԩ;䓭;?(H1ũ7#V6nUV&N:QF~3?%ש " " " KHǎMfqsJ(b~dڵk ICƍ,ڋ2P D5AD@D@D }.[͚5FMߴiSKUxbMI9-b #fH_rϒj3XD@D@D gPIg`MK"Pٖ~la8U1w\;a@UD@D@D  (|RA쳏UVZD$ &ԒJ#sEy@믿:.I*wܱDSآ+SrNu3 }f2‘L+Vt!TT&?Bf$" " " Ļ ለLO>?T\U@-CD@D@D@DD!P£.xl`kfqGE|InfO" " " "`Ӑ'4t3ҞS$/it+WW:oIMۗt6Fu甑5j԰8Tf}b}:D$6,U]wrկf$" " " ^{:\x<ϟf̘6l`RE%\`f};jq; l<*#٣5jd^5kָQFI&Yh*bm`ĉnnڵ=mذJwv%P3U&E@D@D@rԬY3B ~psǏLxC)O?jرn̙͛7}YLnmMD@D@D@4{tb]x=Ǎ,XZj=XנAcH&i'R))裏 Uoݺܹźi)6N5EpLD@D@D@p-O>4}6?t}{I&&Tk֬iَ{(q'O6)H-h=蠃&۳yOGř0'0'EE?w\_LS2e]>?x1#Umڴq]v5q+q$@FKD@D@D@M +{O>SKtWRx#t 8}bI棥" " " yNwtv2h-,M#NjoeVbX RJfѪn'jl>Z*" " " Fa'D(쳏ŒҥOx%Ew/jT4Z " " "  2T2C@yP3UVE@D@D@D@R$ "8m&" " " " לkCuiKݣG15̙3 kvb ONժUoaq|& sӦMs}}Z6^jl?䗻馛Ldz}|`1믿unᆘ"<~\D@D@D q*kE\pGj"JJhs{WlF <~#,]+u޼y'$Ʊr-&N/_ncٲe8y'mܸ]}wWu:R?>?#," " "!kfzTiBx0Fňs/ctmJ![NܡM,` &N~{wZ(cۮ];K/ă<3\ӦM{g6{[D_:=29;83ϸ~D,[qcӧOwSl`K/0!;wze]dmcFdFgmXFdax/<okfX~={Zjw`f@{;]{7v"dYζ[vwys^N"|J_ËEbbVË=r!&*" " " %P\]dvsB7l`tq#R-?ܼLF8"y[}כW_|aM fv,a7Ra7*Vh툅 F >SF -֏T7XN(*" " " # 99c.t7<әJxVnfHQF ϶ptݓOWe˖?am޼[ Kǻ+W=; zawݼxq'Mja)<T<@b6f-7*Q?#7mڴ"#)E,p6)|wweu'N4)Zh׻=x_'LP;*F֣ͱ :VYvj,XZ&" " i ARi&xIC$>֭>k,(H}}юBx> QBP>bkҤp$ /ԍRԉH{r1{l u̙Mz￿_&GۨO?u]-(9 Ԓ3y @D%8?7RB=8vmNSX,P NAā> T!񠲽/>ݠA(;BׯGn" " " )@M]ِOb I&H5ժU+D&LWX6֬YBlr ]p7b9xg{KrG QFYJap {w*k(U;vGm$g:C523 QK~9Ǜ `[ݗD GQ7}?Y/zL]cƌLxK*ʤ +zFD@D H6,v0!JvPDtݓ:<{#Gtmڴamuۊ?%(p qL^"X/`)~'J2Xpx$jm8f~Wi=R$P,/ (zw-իW*,tt3-(sO̪!lPsb3ZW6(6h/G_= /h3S 'p=!U;ND@D@2M;{$`K$WnF:S7/ /b_jCxz4G`3=74PG\/hRq)*=m'" "kb'̵֨B-E!ވM &be =VAH.IPOŎ6 H\yz5V{LD@D@ ԲvDK=4bUweL_HEp2@=RXo޼y>7%\.nD!foNhVvvuWcxQ? 6h/޶Z." " "< iA1cnyl<J MG?uTػӦM3Ix@PP"Pޔc3f/$ IDATܹs#K](y~%4m4ƚu`oB{ " " "~gSTb12~РAE殏 0f"&SN)iPK 6 1إN>7Y|" 'xgm+R/~O=_T{O?v/]H?j^֪U͟?~QGvm'?w}zE;l0׻w"e>}ժUs\sMwWדmn_/]yw鎿꫋=~G"ʙ +|6,6!ϫ^~(wwcA%ψ|XGs&*D4… ݍ7F6l`.E!R8q? %LFu֭Kŋ[8vǎku"{ʔ)G5Ezs9eأԁzr|A^xyYυ0 TFxaDdx r/]*'J&YgrwUo*7oP_ӅP.}~ eJq_br 6YV͒V%/)2=2#I[7}tww@EQ\nyZY߫W/'03}ydz'Kl'&ↁP<,E:tݗ_~itx K/֏au۶m[XH{ڳgOS.ԏz{a=ꨣs4K&" " &tQ{x"yw]w ST$O 9}mUJjtOWi{gA磯@@ƒ*@>@磯@P jUI*57,^ʅUo[εOw1WZH&K+X񳔕dW6 P+n[,$"M$Ph."BSņ2mW~O:B#N>$" " D}"RJh7SYT!UED [ (,[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J@5[%" " " yJ@5O-" " " J`l%I_~qs+Wtvm;j׮*UTUѾD@D@D H)O7rH7`矛Hoԩ:(wI'>8A" " "P$PKv]o{ݬYaSjn:b 7yd7l0׽{wץKjj#" " ej=jVl{ܽ-[j+wmۺի ÇiӦqƹn믮[n k@ H h"O%Kʕ+SO=]{QFn뭷v6mr}{GΝqױcGWJ\k+" " 9E@5*xO_{5`W\9עE w}Zj8e˗w[6oٳԩS̙3]~_jȆ@J3~.=},δjժ}nSrkW_m/_nrdjfj +=p:uHUn\Ν]͚5tO>=ҪMD@D@D M$PRfr#[~z'} 1͚53zj7a„Xk@ H6-xPͿ6۸͛m^TTnܸq " " " @MATG1J.zmuֵH5(̱,$t͚5٢4^A2 ]vךla6lP{7mmwmHgWUW3[" WnMc2K&K>n6l vqǸb`_~%6ZY& yRԅ\W\qUT;SSbݯnkNi({6l tڻ=obs[&O߽uȩ!-|S@ՙw}EMJd4CxA waT]BwF%3Qar}:ʰd5&`%)lή:3tTz^K͡VC=GH~T#K7 C83J,PmD4EN!$N \9UwUVD iIo D  0OɠD i|T=ymnd_D@D@Fg͡PEJ@ŊmWUV-1X\ED@D@D s$P3V]5j԰Qbfx}(Q𞲽@Hf,g!j:u j"IfͲ Pk,l$" " ej9jI7NxQDupKb@-GUm klvs~bJFntˍ9f-Cy\p,\-Z͛7u5h@O3eM.E,UI2L.Fex/e<1̴ HETbS4׫WOO`?TD]D !ebBOa%x|/y?_8wtGMWn<:j \8J <:j \8J <:j \8J <:j \8J <:j \8J <:j \8J@`tK=*__L -E^+[mPRTR^]-9rʹʕ+wmv%7( "=gyeU=U]d9rkܸr-wX~4i[zk۶ү(Fj֎D@D zku`|Hi!"lMrjm=uASE@rnõWշ$lTD _>_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B@5G)" " " B@5_)" " " 9B`)"P 7_~m֮jժnm-Qfi&YzuV[fWZ5W\M2B>_խ]m6nw,4z|, ر8N=_KMڇJ@Ti;Xn4hZn&LPbK.uwl׮[zum2l2w'?pp"_=UVn̘1Eˆ ?oܹ=zt] \_z%[~G?r})]SLq3}G(}ҮaoСQ:=iHEƵL<#XF>=V:˝wy8.HZ"H@>}-ZĢύ/t>s"v#~G7}t܃7G}ԼTJE DO?mTap>#&ziN4 ևxr;CL nwxXb*RX W^yŽ &r|]Xڽw_ '?Ã\?=!8'i3/ x7xC'fvxa80؅5/Rlu!.QD*ϟ~{݌3l\ƍsC q{v+"v&Nh_ԪUO_|Id+t[$PF D@2Mx~͛8R<=ܤܜSNo+KT7L~hv b_AOшn^LDa &W$K,GX@el&/+="x!W*LuAP(!TywFgڃ$ tW\ 8n^w4':t(xUжm[;xyx6mj975 o5x?|wAÆ D.رceMgGv޽p∊+:^K'Svm y*"PR'+!nQD! 2֭"U<F^LA,p= ą^>`"u?lrHDQLEx-LFnd^쳏"tUG ٍ$4w]g5a#<&ކlK5#]*8DRZ < |w[Rq1i5kf’u8}];.'t\py%ǏoI֏8KAjdO:E&Mq 5$ .yp ,pf"+bA?`"P8R8 %\LۥKU.{8;}DzS-G $ j`+>|xAf])ZBuC]!SA]r)r<͛77{غЍc- *PY!X!S߂qbAo} Bběw}PfAHY!ϝ+$Z Bb $@Q ZfC"6Bl9,,/y )yOHtz!]9[Rv,G B񚅶rLBゐ0+y BjAHi7#S(̤ `mܸ;"67$ {o;wB" ,^Hv<8C؂gzD/;C^_! $z 8f\_!OqI'dMp5jXX':f*>@3!AU(Nn뮻BGb.™x5H?d%mz@>@XǓNv A%Ae? tBR4_Q uht}f Q8*q$UVXe#2xEEy1 #^+ϵ( O:,ъW2n%-ocr+±ū-U.@M(nC!R'B'y<+:o/JzR38R‹(5V9LxȺٶFpN=*%-p^&IW}"-?8"/M&AA,"DĄ_wn ,"1c\l=#uM87l"6h']O>'uM(A]^Tm?pK1()oL[_ c޽X-i]$K@5YbZ_D 2":^IsDňm)X=rwq/JZQs6B0 A-$AO BQGڋlx%[\Yv>9职W{yCSm3AN_^tKv]! %#"PR'i8sݱx@O܌ha[ aA !3&1jK)JG[ NrЇh)X ,m Ѡ-$j+p'aN(wKF!T}h@Kc 6q}p>$4}@Li@V@3cUX?F# gD "Jeٮ]#f3Qx! '@P0X+f@3K13 EDt2/}:<Jlox-~1- QG,i(mf+'- QKdzCr Y$8/,+A\2A@5TeSDD𜒋2B 7ɜ&Qev,o0J:<7` Й+K.pthot {ΈD*X؝(0x-ms0U)GӝFLԞ qHJh?~%K洍e=zعwM\k-L@YH ܿ7HPUSĨOcȈ%DX>b5&N޽˅e@1ShG7rᇛG.l#jKG={k Û91 XǑeO>y[U8pd;<)w-D#4eeB:)/EP? TD`K%Z} xi&r$U7W"2st3#T2QKW,B (";4ov]ܰzʓUbXhct3r)֮{߫W/uʾ2hhw]Le t4k]tEeS2q\݃>h^G7'󰐎?=#~0xm,fl믽ZCT^ ꫯ"]˹#^F1,u]nժMm ɘ$A@UE@J"K.&@3"'7VIK(xEׯ E D`ntItO{4xv ex^^mK#^L3tzu<묳̻A ]xֽ8/j׳gOkc /1`]B2>\~6婷|.L8~ x:Lw6]OL0_w}=q C"/2n(LVn ;jd%nx');<װaC\qc,k>%+,*̱ k@Ű`BW((.(*J0 AE5&"e,v;wݝsyު3w۳#gӍ0eYL}jU < =Ѹ{4rJOnk׮-L^=a#D E\8" کĆG(ghoS@lֲX;ꨣJ:!`.rի' Yϭϗh\;|@$VI{;v7į}+NaچMCxݺu#}X7z!_=Dž@DDGLݴ|M9餓ʬ~CDa߾D9QFp0h©ڜs9eM81GNȤ/D#{nGHs~'\jH֪ee0/jlZ: RX^ [׫K&˃V͆MYjgqF `]viva]?|doذ/ 1tPLqT23_G6i:;/K^[jkFZq2q駗DL efmP=OGi~WډQ,6lN!4\ݼ *aDINKq%buD\$8Sc_vD[.Ey9R>")(aZ]W% ZK}Yoԕ`Zk;a蜬vasՓP2.ʔcXY@@@@!:L> pUC B B B @&@@@@̆@l!!!!cDC B B B fC u6s1"Pǀ!!!!!0l)O!&P9x9Ssl9n@_RM @lg _h^EȞ}>tcs|+)ܹ .`׿5w)sF7{{3j;-{\ןs_W'eEL :>s֭+>>wyʹ]?<۟ [;Hu;XETDx 75VK]n5w];̓f@xZb}?A!&@'_@t &MԘD\ݔ/5g}v\5߱9昲(a*<{Ym>|= 64x3jn~7wKN(طkFx*r9&]ve~cHéZƛ0G>&}9޵/«[3XRtZ{k^SO5 wܭLp;ꨣJ*ǃE=7r#fժUl|GPnvo~c@ַuV|3>pҦM׾VrwefLF8w]cO F'n{~ڪL F$X $OC` ̾7+,3Z~>sd!v5x`f[ UzՂZ FeTa#,GuG7K +VafVv{b!yHCDlĩ%ƈqVA21D­ \P>P:fOaԾӓO>L^3[HlD9G/hTFI`KqN"؛ƪ8}^ij:|ڵ!&}wqW{l$$zO:-U6iP[O}oYڿD?|rP"WD]J|:|;KK!ѡqPv ҆/*\}.{ޯ|+ǩahntB-Rohҍs\k&Aɥ#jDZ /iHEEׯ_YfO*3!DB6:ځa[&rLX+ 2O/kZ //. Te7$l@%̰'uH G%M9 9xWf;k>""RD USTtu2N6zԣΡ~&:ĭګyV >2i\DG?wф%.mD;W_+zk_D8E9EXjo- WQTbU6i%tc>4׽]YcT'}@ ȿ3D!1(jmP3Q7F7M5:"p+Ö"?n!goQbjȯ(1%)6Uȱ4^"P>#uC"Ĉ|@DIWh;?'¬褴;fR jژ<]y:='\DgǙIx_ݬJw\sQQPuU^k{94vnKіBՋϥi$BY{$M;mڨOC`Ep3YQ$P81C{_!V&j\(INO~}snބ25[U%2iڰӟ2C¨˦>ČgHB[}KJ$_ gGGUD6L%C~DC6xAB4F@k;4-tQ}omP $,s&ݢ--oj+&ж6۔53 ס~3 JXG4i`&%)HLrbE65U!R'!Dq&zh2_\"cTVE꺩Na._9('?H#uLV^/F"~:8"R$|gzt`l&Sxr#F+mSvȦ9>ڗSF3 7r }i&¬ 0~O!;D!waCچ k7mqw9D&ѩqD(BT^ϐ;%VOD&-UIhir'[y?2UoE%Y̨ƨA uy) A@~ !(FNzjдfb h71f6s. //yaYƏ,:!=&@pP zfѬ!jn7B "Hr0;~FX#TuON(!Bbw.veMR'g": N0_$pn˝ӊV8 ?fÆ eoҥȡ:%oиRYr*ȕ('.*+ׯo<̒a0o&#"6ٺ: P?O'~~~"D"G ^SXqg2[}mə5m7nQq_{3l=GVk~V_-Zq<Z K􊨱 `s,Pʓ$DD.*Ljcwq%/8k,ՇO܎3ORnJn_ʧ~{$IG dYpΚ4e;묳~rmXݞ&X{EԕKǶmItX6M2o3N(Q}aW S\}6|M%{ژ2ϔioqxz\^{E WNeC B B BVg@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t@j}@@@@Dݩl@@@t5Wkt)a@@@@@YW{IENDB`freebayes-1.3.6/paper/references.bib000066400000000000000000000225011417247743000174050ustar00rootroot00000000000000@Article{marth99, Author="Marth, G. T. and Korf, I. and Yandell, M. D. and Yeh, R. T. and Gu, Z. and Zakeri, H. and Stitziel, N. O. and Hillier, L. and Kwok, P. Y. and Gish, W. R. ", Title="{{A} general approach to single-nucleotide polymorphism discovery}", Journal="Nat. Genet.", Year="1999", Volume="23", Pages="452--456", Month="Dec" } @misc{freebayeshome, Author="Garrison, E.", Howpublished={\url{http://bioinformatics.bc.edu/marthlab/FreeBayes}}, Title="{FreeBayes}", Year=2011 } @misc{freebayesgit, Author="Garrison, E.", Howpublished={\url{https://github.com/ekg/freebayes}}, Title="{FreeBayes source repository}", Year=2012 } @misc{mutatrixgit, Author="Garrison, E.", Howpublished={\url{https://github.com/ekg/mutatrix}}, Title="{mutatrix population genome simulator}", Year=2012 } @misc{ogapgit, Author="Garrison, E.", Howpublished={\url{https://github.com/ekg/ogap}}, Title="{ogap: a local indel realigner}", Year=2012 } @misc{vcflibgit, Author="Garrison, E.", Howpublished={\url{https://github.com/ekg/vcflib}}, Title="{vcflib: variant call file processing and manipulation utilities}", Year=2012 } @misc{bamleftaligngit, Author="Garrison, E.", Howpublished={\url{https://github.com/ekg/freebayes/blob/master/src/bamleftalign.cpp}}, Title="{bamleftalign: BAM indel left-realigner}", Year=2012 } @misc{mosaik, Author="Lee, W. P. and M. Str{\"{o}}mberg", Howpublished={\url{https://github.com/wanpinglee/MOSAIK}}, Title="{MOSAIK reference-guided aligner for next-generation sequencing technologies}", Year=2012 } @Article{ewens72, Author="Ewens, W. J. ", Title="{{T}he sampling theory of selectively neutral alleles}", Journal="Theor Popul Biol", Year="1972", Volume="3", Pages="87--112", Month="Mar" } @Article{li2011stats, Author="Li, H. ", Title="{{A} statistical framework for {S}{N}{P} calling, mutation discovery, association mapping and population genetical parameter estimation from sequencing data}", Journal="Bioinformatics", Year="2011", Volume="27", Number="21", Pages="2987--2993", Month="Nov" } @Article{samtools, Author="Li, H. and Handsaker, B. and Wysoker, A. and Fennell, T. and Ruan, J. and Homer, N. and Marth, G. and Abecasis, G. and Durbin, R. ", Title="{{T}he {S}equence {A}lignment/{M}ap format and {S}{A}{M}tools}", Journal="Bioinformatics", Year="2009", Volume="25", Number="16", Pages="2078--2079", Month="Aug" } @Article{libaq, Author="Li, H. ", Title="{{I}mproving {S}{N}{P} discovery by base alignment quality}", Journal="Bioinformatics", Year="2011", Volume="27", Number="8", Pages="1157--1158", Month="Apr" } @Article{gatk2011, Author="DePristo, M. A. and Banks, E. and Poplin, R. and Garimella, K. V. and Maguire, J. R. and Hartl, C. and Philippakis, A. A. and del Angel, G. and Rivas, M. A. and Hanna, M. and McKenna, A. and Fennell, T. J. and Kernytsky, A. M. and Sivachenko, A. Y. and Cibulskis, K. and Gabriel, S. B. and Altshuler, D. and Daly, M. J. ", Title="{{A} framework for variation discovery and genotyping using next-generation {D}{N}{A} sequencing data}", Journal="Nat. Genet.", Year="2011", Volume="43", Number="5", Pages="491--498", Month="May" } @Article{browning2007, Author="Browning, S. R. and Browning, B. L. ", Title="{{R}apid and accurate haplotype phasing and missing-data inference for whole-genome association studies by use of localized haplotype clustering}", Journal="Am. J. Hum. Genet.", Year="2007", Volume="81", Number="5", Pages="1084--1097", Month="Nov" } @Article{mach2010, Author="Li, Y. and Willer, C. J. and Ding, J. and Scheet, P. and Abecasis, G. R. ", Title="{{M}a{C}{H}: using sequence and genotype data to estimate haplotypes and unobserved genotypes}", Journal="Genet. Epidemiol.", Year="2010", Volume="34", Number="8", Pages="816--834", Month="Dec" } @Article{delaneau2012, Author="Delaneau, O. and Marchini, J. and Zagury, J. F. ", Title="{{A} linear complexity phasing method for thousands of genomes}", Journal="Nat. Methods", Year="2012", Volume="9", Number="2", Pages="179--181", Month="Feb" } @Article{howie2009, Author="Howie, B. N. and Donnelly, P. and Marchini, J. ", Title="{{A} flexible and accurate genotype imputation method for the next generation of genome-wide association studies}", Journal="PLoS Genet.", Year="2009", Volume="5", Number="6", Pages="e1000529", Month="Jun" } @Article{howie2011, Author="Howie, B. and Marchini, J. and Stephens, M. ", Title="{{G}enotype imputation with thousands of genomes}", Journal="G3 (Bethesda)", Year="2011", Volume="1", Number="6", Pages="457--470", Month="Nov" } @Article{clarke2009, Author="Clarke, J. and Wu, H. C. and Jayasinghe, L. and Patel, A. and Reid, S. and Bayley, H. ", Title="{{C}ontinuous base identification for single-molecule nanopore {D}{N}{A} sequencing}", Journal="Nat Nanotechnol", Year="2009", Volume="4", Number="4", Pages="265--270", Month="Apr" } @Article{branton2008, Author="Branton, D. and Deamer, D. W. and Marziali, A. and Bayley, H. and Benner, S. A. and Butler, T. and Di Ventra, M. and Garaj, S. and Hibbs, A. and Huang, X. and Jovanovich, S. B. and Krstic, P. S. and Lindsay, S. and Ling, X. S. and Mastrangelo, C. H. and Meller, A. and Oliver, J. S. and Pershin, Y. V. and Ramsey, J. M. and Riehn, R. and Soni, G. V. and Tabard-Cossa, V. and Wanunu, M. and Wiggin, M. and Schloss, J. A. ", Title="{{T}he potential and challenges of nanopore sequencing}", Journal="Nat. Biotechnol.", Year="2008", Volume="26", Number="10", Pages="1146--1153", Month="Oct" } @Article{tajima1983, Author="Tajima, F. ", Title="{{E}volutionary relationship of {D}{N}{A} sequences in finite populations}", Journal="Genetics", Year="1983", Volume="105", Number="2", Pages="437--460", Month="Oct" } @Article{watterson1975, Author="Watterson, G. A. ", Title="{{O}n the number of segregating sites in genetical models without recombination}", Journal="Theor Popul Biol", Year="1975", Volume="7", Number="2", Pages="256--276", Month="Apr" } @Techreport{holtgrewe2010, Author="Holtgrewe, M.", Year="2010", Title="Mason – a read simulator for second generation sequencing data", Journal="Technical Report", Number="TR-B-10-06", Institution="Institut für Mathematik und Informatik, Freie Universität Berlin" } % 23128226 @Article{1000Gphase1, Title="{{A}n integrated map of genetic variation from 1,092 human genomes}", Journal="Nature", Year="2012", Volume="491", Number="7422", Pages="56--65", Month="Nov", Author="1000 Genomes Project Participants, The" } @Article{cortex, Author="Iqbal, Z. and Caccamo, M. and Turner, I. and Flicek, P. and McVean, G. ", Title="{{D}e novo assembly and genotyping of variants using colored de {B}ruijn graphs}", Journal="Nat. Genet.", Year="2012", Volume="44", Number="2", Pages="226--232", Month="Feb" } @Article{dindel, Author="Albers, C. A. and Lunter, G. and MacArthur, D. G. and McVean, G. and Ouwehand, W. H. and Durbin, R. ", Title="{{D}indel: accurate indel calls from short-read data}", Journal="Genome Res.", Year="2011", Volume="21", Number="6", Pages="961--973", Month="Jun" } @article{opmac99, author = {David W. Opitz and Richard Maclin}, title = {Popular Ensemble Methods: An Empirical Study}, journal = {J. Artif. Intell. Res. (JAIR)}, volume = {11}, year = {1999}, pages = {169-198}, } @Article{blmash, Author="Cleary, S. P. and Zhang, W. and Di Nicola, N. and Aronson, M. and Aube, J. and Steinman, A. and Haddad, R. and Redston, M. and Gallinger, S. and Narod, S. A. and Gryfe, R. ", Title="{{H}eterozygosity for the {B}{L}{M}({A}sh) mutation and cancer risk}", Journal="Cancer Res.", Year="2003", Volume="63", Number="8", Pages="1769--1771", Month="Apr" } @Article{recurrentTERT2013, Author="Huang, F. W. and Hodis, E. and Xu, M. J. and Kryukov, G. V. and Chin, L. and Garraway, L. A. ", Title="{{H}ighly recurrent {T}{E}{R}{T} promoter mutations in human melanoma}", Journal="Science", Year="2013", Volume="339", Number="6122", Pages="957--959", Month="Feb" } @Article{snpsvm, Author="O'Fallon, B. D. and Wooderchak-Donahue, W. and Crockett, D. K. ", Title="{{A} support vector machine for identification of single-nucleotide polymorphisms from next-generation sequencing data}", Journal="Bioinformatics", Year="2013", Volume="29", Number="11", Pages="1361--1366", Month="Jun" } @Article{snptools, Author="Wang, Y. and Lu, J. and Yu, J. and Gibbs, R. A. and Yu, F. ", Title="{{A}n integrative variant analysis pipeline for accurate genotype/haplotype inference in population {N}{G}{S} data}", Journal="Genome Res.", Year="2013", Volume="23", Number="5", Pages="833--842", Month="May" } @Article{maq, Author="Li, H. and Ruan, J. and Durbin, R. ", Title="{{M}apping short {D}{N}{A} sequencing reads and calling variants using mapping quality scores}", Journal="Genome Res.", Year="2008", Volume="18", Number="11", Pages="1851--1858", Month="Nov" }freebayes-1.3.6/python/000077500000000000000000000000001417247743000150205ustar00rootroot00000000000000freebayes-1.3.6/python/.gitignore000066400000000000000000000000051417247743000170030ustar00rootroot00000000000000*pyc freebayes-1.3.6/python/README000066400000000000000000000001151417247743000156750ustar00rootroot00000000000000This is a python implementation of the Bayes-Ewens variant caller algorithm. freebayes-1.3.6/python/allelebayes.py000066400000000000000000000425441417247743000176650ustar00rootroot00000000000000#!/usr/bin/env python3 # calculates data likelihoods for sets of alleles from __future__ import print_function, division import multiset import sys import cjson import phred import json import math import operator from logsumexp import logsumexp from dirichlet import dirichlet_maximum_likelihood_ratio, dirichlet, multinomial, multinomialln from factorialln import factorialln """ This module attempts to find the best method to approximate the integration of data likelihoods for the bayesian variant caller we're currently working on. stdin should be a stream of newline-delimited json records each encoding a list of alleles which have been parsed out of alignment records. alleles.cpp in this distribution provides such a stream. Erik Garrison 2010-07-15 """ #potential_alleles = [ # {'type':'reference'}, # {'type':'snp', 'alt':'A'}, # {'type':'snp', 'alt':'T'}, # {'type':'snp', 'alt':'G'}, # {'type':'snp', 'alt':'C'} # ] def list_genotypes_to_count_genotypes(genotypes): count_genotypes = [] for genotype in genotypes: counts = {} for allele in genotype: if counts.has_key(allele): counts[allele] += 1 else: counts[allele] = 1 count_genotypes.append(counts.items()) return count_genotypes """ ploidy = 2 potential_alleles = ['A','T','G','C'] # genotypes are expressed as sets of allele frequencies genotypes = list_genotypes_to_count_genotypes(list(multiset.multichoose(ploidy, potential_alleles))) """ # TODO # update this so that we aren't just using the 'alternate' field from the alleles # and are also incorporating the type of allele (ins, deletion, ref, snp) def group_alleles(alleles): groups = {} for allele in alleles: alt = allele['alt'] if groups.has_key(alt): groups[alt].append(allele) else: groups[alt] = [allele] return groups def alleles_quality_to_lnprob(alleles): for allele in alleles: allele['quality'] = phred.phred2ln(allele['quality']) return alleles def fold(func, iterable, initial=None, reverse=False): x=initial if reverse: iterable=reversed(iterable) for e in iterable: x=func(x,e) if x is not None else e return x def product(listy): return fold(operator.mul, listy) def observed_alleles_in_genotype(genotype, allele_groups): in_genotype = {} not_in_genotype = {} for key in allele_groups.keys(): found = False for allele, count in genotype: if allele == key: in_genotype[key] = allele_groups[key] found = True break if not found: not_in_genotype[key] = allele_groups[key] return in_genotype, not_in_genotype #def scaled_sampling_prob(genotype, alleles): # """The probability of drawing the observations in the allele_groups out of # the given genotype, scaled by the number of possible multiset permutations # of the genotype (we scale because we don't phase our genotypes under # evaluation).""" # allele_groups = group_alleles(alleles) # if len(allele_groups.items()) == 0: # return 0 # genotype_allele_frequencies = [x[1] for x in genotype] # multiplicity = sum(genotype_allele_frequencies) # genotype_allele_probabilities = [float(x)/multiplicity for x in genotype_allele_frequencies] # observed_allele_frequencies = [len(x) for x in allele_groups.items()] # observation_product = 1 # for allele, count in genotype: # if allele_groups.has_key(allele): # observation_product *= math.pow(float(count) / multiplicity, len(allele_groups[allele])) # return float(math.pow(math.factorial(multiplicity), 2)) \ # / (product([math.factorial(x) for x in genotype_allele_frequencies]) * # sum([math.factorial(x) for x in observed_allele_frequencies])) \ # * observation_product # # TODO XXX # Yes, this is the sampling probability. It is the multinomial sampling # probability, which is the specific probability of a specific set of # categorical outcomes. Unfortunately, this is not what we really want here. # What we want is the prior probability that a given set of draws come out of a # given multiset (genotype, in our case). I believe that this is given by the # Dirichlet distribution. Investigate. def sampling_prob(genotype, alleles): """The specific probability of drawing the observations in alleles out of the given genotype, follows the multinomial probability distribution.""" allele_groups = group_alleles(alleles) multiplicity = sum([x[1] for x in genotype]) print(genotype, multiplicity, alleles) for allele, count in genotype: if allele_groups.has_key(allele): print allele, count, math.pow(float(count) / multiplicity, len(allele_groups[allele])) print(product([math.factorial(len(obs)) for obs in allele_groups.values()])) print(allele_groups.values()) return float(math.factorial(len(alleles))) \ / product([math.factorial(len(obs)) for obs in allele_groups.values()]) \ * product([math.pow(float(count) / multiplicity, len(allele_groups[allele])) \ for allele, count in genotype if allele_groups.has_key(allele)]) def likelihood_given_true_alleles(observed_alleles, true_alleles): prob = 0 for o, t in zip(observed_alleles, true_alleles): if o['alt'] == t['alt']: prob += math.log(1 - math.exp(o['quality'])) else: prob += o['quality'] return prob def data_likelihood_exact(genotype, observed_alleles): """'Exact' data likelihood, sum of sampling probability * join Q score for the observed alleles over all possible underlying 'true allele' combinations.""" #print "probability that observations", [o['alt'] for o in observed_alleles], "arise from genotype", genotype observation_count = len(observed_alleles) ploidy = sum([count for allele, count in genotype]) allele_probs = [count / float(ploidy) for allele, count in genotype] probs = [] # for all true allele combinations X permutations for true_allele_combination in multiset.multichoose(observation_count, [x[0] for x in genotype]): for true_allele_permutation in multiset.permutations(true_allele_combination): # this mapping allows us to use sampling_prob the same way as we do when we use JSON allele observation records true_alleles = [{'alt':allele} for allele in true_allele_permutation] allele_groups = group_alleles(true_alleles) observations = [] for allele, count in genotype: if allele_groups.has_key(allele): observations.append(len(allele_groups[allele])) else: observations.append(0) #sprob = dirichlet_maximum_likelihood_ratio(allele_probs, observations) # distribution parameter here lnsampling_prob = multinomialln(allele_probs, observations) prob = lnsampling_prob + likelihood_given_true_alleles(observed_alleles, true_alleles) #print math.exp(prob), sprob, genotype, true_allele_permutation #print genotype, math.exp(prob), sprob, true_allele_permutation, [o['alt'] for o in observed_alleles] probs.append(prob) # sum the individual probability of all combinations p = logsumexp(probs) #print math.exp(p) return p def data_likelihood_estimate(genotype, alleles): """Estimates the data likelihood, which is a sum over all possible error profiles, or underlying 'true alleles', motivating the observations.""" # for up to error_depth errors pass def genotype_combination_sampling_probability(genotype_combination, observed_alleles): multiplicity = math.log(ploidy * len(genotype_combination)) result = 1 - multiplicity allele_groups = group_alleles(observed_alleles) for allele, observations in allele_groups.iteritems(): result += math.log(math.factorial(len(observations))) # scale by product of multiset permutations of all genotypes in combo for combo in genotype_combination: for genotype in combo: m_i = sum([a[1] for a in genotype]) result += math.log(math.factorial(m_i)) result -= sum([math.log(math.factorial(allele[1])) for allele in genotype]) return result def count_frequencies(genotype_combo): counts = {} alleles = {} for genotype in genotype_combo: for allele, count in genotype: if alleles.has_key(allele): alleles[allele] += count else: alleles[allele] = count for allele, count in alleles.iteritems(): if counts.has_key(count): counts[count] += 1 else: counts[count] = 1 return counts def allele_frequency_probability(allele_frequency_counts, theta=0.001): """Implements Ewens' Sampling Formula. allele_frequency_counts is a dictionary mapping count -> number of alleles with this count in the population.""" M = sum([frequency * count for frequency, count in allele_frequency_counts.iteritems()]) return math.factorial(M) \ / (theta * product([theta + h for h in range(1, M)])) \ * product([math.pow(theta, count) / math.pow(frequency, count) * math.factorial(count) \ for frequency, count in allele_frequency_counts.iteritems()]) def powln(n, m): """Power of number in log space""" return sum([n] * m) def allele_frequency_probabilityln(allele_frequency_counts, theta=0.001): """Log space version to avoid inevitable overflows with coverage >100. Implements Ewens' Sampling Formula. allele_frequency_counts is a dictionary mapping count -> number of alleles with this count in the population.""" thetaln = math.log(theta) M = sum([frequency * count for frequency, count in allele_frequency_counts.iteritems()]) return factorialln(M) \ - (thetaln + sum([math.log(theta + h) for h in range(1, M)])) \ + sum([powln(thetaln, count) - powln(math.log(frequency), count) + factorialln(count) \ for frequency, count in allele_frequency_counts.iteritems()]) def genotype_probabilities(genotypes, alleles): return [[str(genotype), data_likelihood_exact(genotype, alleles)] for genotype in genotypes] def genotype_probabilities_heuristic(genotypes, alleles): groups = group_alleles(alleles) # group genotypes relative to the groups of observed alleles # take the first member of each group and apply our data likelihood calculation # then apply it to the rest if len(groups.keys()) is 1: # we can cleanly do all-right, part-right, all-wrong pass if len(groups.keys()) is 2: # we can do all-right, two types of 'part-right', and all-wrong pass def multiset_banded_genotype_combinations(sample_genotypes, bandwidth): for index_combo in multiset.multichoose(len(samples), range(bandwidth)): for index_permutation in multiset.permutations(index_combo): yield [genotypes[index] for index, genotypes in zip(index_permutation, sample_genotypes)] # TODO you should implement gabor's banding solution; the above multiset method # is comically large and produces incorrect results despite the computational load def banded_genotype_combinations(sample_genotypes, bandwidth, band_depth): # always provide the 'best' case yield [(sample, genotypes[0]) for sample, genotypes in sample_genotypes] for i in range(1, bandwidth): for j in range(1, band_depth): # band_depth is the depth to which we explore the bandwith... TODO explain better indexes = j * [i] + (len(sample_genotypes) - j) * [0] for index_permutation in multiset.permutations(indexes): yield [(sample, genotypes[index]) for index, (sample, genotypes) in zip(index_permutation, sample_genotypes)] def genotype_str(genotype): return fold(operator.add, [allele * count for allele, count in genotype]) if __name__ == '__main__': ploidy = 2 # assume ploidy 2 for all individuals and all positions potential_alleles = ['A','T','G','C'] # genotypes are expressed as sets of allele frequencies genotypes = list_genotypes_to_count_genotypes(list(multiset.multichoose(ploidy, potential_alleles))) for line in sys.stdin: position = cjson.decode(line) #print position['position'] samples = position['samples'] position['coverage'] = sum([len(sample['alleles']) for samplename, sample in samples.iteritems()]) #potential_alleles = ['A','T','G','C'] potential_alleles = set() for samplename, sample in samples.items(): # only process snps and reference alleles alleles = [allele for allele in sample['alleles'] if allele['type'] in ['reference', 'snp']] alleles = alleles_quality_to_lnprob(alleles) sample['alleles'] = alleles potential_alleles = potential_alleles.union(set([allele['alt'] for allele in alleles])) position['filtered coverage'] = sum([len(sample['alleles']) for samplename, sample in samples.iteritems()]) # genotypes are expressed as sets of allele frequencies #genotypes = list_genotypes_to_count_genotypes(list(multiset.multichoose(ploidy, list(potential_alleles)))) for samplename, sample in samples.items(): alleles = sample['alleles'] groups = group_alleles(alleles) sample['genotypes'] = [[genotype, data_likelihood_exact(genotype, alleles)] for genotype in genotypes] #sample['genotypes_estimate'] = [[str(genotype), data_likelihood_estimate(genotype, alleles)] for genotype in genotypes] # estimate the posterior over all genotype combinations within some indexed bandwidth of optimal # TODO preserve sample names in the genotype comos sample_genotypes = [(name, sorted(sample['genotypes'], key=lambda genotype: genotype[1], reverse=True)) for name, sample in samples.iteritems()] genotype_combo_probs = [] #for combo in multiset_banded_genotype_combinations(sample_genotypes, 2): #for combo in banded_genotype_combinations(sample_genotypes, min(len(genotypes), 2), len(samples)): # now marginals time... marginals = {} for name, sample in samples.iteritems(): marginals[name] = {} combos_tested = 0 for combo in banded_genotype_combinations(sample_genotypes, min(len(genotypes), 2), 2): combos_tested += 1 probability_observations_given_genotypes = sum([prob for name, (genotype, prob) in combo]) frequency_counts = count_frequencies([genotype for name, (genotype, prob) in combo]) prior_probability_of_genotype = allele_frequency_probabilityln(frequency_counts) combo_prob = prior_probability_of_genotype + probability_observations_given_genotypes for name, (genotype, prob) in combo: gstr = genotype_str(genotype) if marginals[name].has_key(gstr): marginals[name][gstr].append(combo_prob) else: marginals[name][gstr] = [combo_prob] genotype_combo_probs.append([combo, combo_prob]) genotype_combo_probs = sorted(genotype_combo_probs, key=lambda c: c[1], reverse=True) #for line in [json.dumps({'prob':prior_probability_of_genotype, 'combo':combo}) for combo, prior_probability_of_genotype in genotype_combo_probs]: # print line # sum, use to normalize # apply bayes rule #print genotype_combo_probs #print [prob for combo, prob in genotype_combo_probs] #for combo, prob in genotype_combo_probs: # print prob posterior_normalizer = logsumexp([prob for combo, prob in genotype_combo_probs]) # handle marginals for sample, genotype_probs in marginals.iteritems(): for genotype, probs in genotype_probs.iteritems(): marginals[sample][genotype] = logsumexp(probs) - posterior_normalizer best_genotype_combo = genotype_combo_probs[0][0] best_genotype_combo_prob = genotype_combo_probs[0][1] #best_genotype_probability = math.exp(sum([prob for name, (genotype, prob) in best_genotype_combo]) \ # + allele_frequency_probabilityln(count_frequencies([genotype for name, (genotype, prob) in best_genotype_combo])) \ # - posterior_normalizer) best_genotype_probability = math.exp(best_genotype_combo_prob - posterior_normalizer) position['best_genotype_combo'] = [[name, genotype_str(genotype), math.exp(marginals[name][genotype_str(genotype)])] for name, (genotype, prob) in best_genotype_combo] position['best_genotype_combo_prob'] = best_genotype_probability position['posterior_normalizer'] = math.exp(posterior_normalizer) position['combos_tested'] = combos_tested #position['genotype_combo_probs'] = genotype_combo_probs # TODO estimate marginal probabilities of genotypings # here we cast everything into float-space for samplename, sample in samples.items(): sample['genotypes'] = sorted([[genotype_str(genotype), math.exp(prob)] for genotype, prob in sample['genotypes']], key=lambda c: c[1], reverse=True) print(cjson.encode(position)) #print position['position'] freebayes-1.3.6/python/dirichlet.py000066400000000000000000000056621417247743000173520ustar00rootroot00000000000000#!/usr/bin/env python3 from scipy.special import gamma, gammaln import operator import math from logsumexp import logsumexp from factorialln import factorialln def fold(func, iterable, initial=None, reverse=False): x=initial if reverse: iterable=reversed(iterable) for e in iterable: x=func(x,e) if x is not None else e return x def product(listy): return fold(operator.mul, listy) def beta(alphas): """Multivariate beta function""" return math.exp(sum(map(gammaln, alphas)) - gammaln(sum(alphas))) def dirichlet(probs, obs, s=1): """Dirichlet probability density for a given set probabilities and prior observation counts. s serves as a concentration parameter between 0 and 1, with smaller s yielding progressively more diffuse probability density distributions.""" alphas = [(a + 1) * float(s) for a in obs] return 1 / beta(alphas) * product([math.pow(x, a - 1) for x, a in zip(probs, alphas)]) def dirichlet_maximum_likelihood_ratio(probs, obs, s=1): """Ratio between the dirichlet for the specific probs and obs and the maximum likelihood value for the dirichlet over the given probs (this can be determined by partitioning the observations according to the probabilities)""" maximum_likelihood = dirichlet(probs, [float(sum(obs)) / len(obs) for o in obs], s) return dirichlet(probs, obs, s) / float(maximum_likelihood) def multinomial(probs, obs): return math.factorial(sum(obs)) / product(list(map(math.factorial, obs))) * product([math.pow(p, x) for p,x in zip(probs, obs)]) def multinomialln(probs, obs): return factorialln(sum(obs)) - sum(map(factorialln, obs)) + sum([math.log(math.pow(p, x)) for p,x in zip(probs, obs)]) def multinomial_coefficientln(n, counts): return factorialln(n) - sum(map(factorialln, counts)) def multinomial_coefficient(n, counts): return math.exp(multinomial_coefficientln(n, counts)) def multinomial_dirichlet(probs, obs): return multinomial(probs, obs) * dirichlet(probs, obs) # NOTE: # I started exploring the multinomial_maximum_likelihood_ratio to see if the # same maximim likelihood estimation approach could be applied to multinomials. # It *can't* for the obvious reason that you can't have non-integral # observation counts while the dirichlet distribution is defined across # non-integral alphas! I see no clean way to resolve this using the # multinomial distribution and now have a better understanding of the use and # abuse of the dirichlet distribution as a conjugate prior for multinomial # posteriors. def multinomial_maximum_likelihood_ratio(probs, obs): maximum_likelihood = multinomial(probs, [float(sum(obs)) / len(obs) for o in obs]) return multinomial(probs, obs) / float(maximum_likelihood) def binomial(successes, trials, prob): return math.factorial(trials) / (math.factorial(successes) * math.factorial(trials - successes)) * math.pow(prob, successes) * math.pow(1 - prob, trials - successes) freebayes-1.3.6/python/factorialln.py000066400000000000000000000003661417247743000176750ustar00rootroot00000000000000from scipy.special import gamma, gammaln def factorialln(n): if n == 1: return 0 elif n == 0: return 0 elif n < 0: raise Exception("factorial is not defined for n < 0") else: return gammaln(n + 1) freebayes-1.3.6/python/hwe.py000066400000000000000000000071051417247743000161600ustar00rootroot00000000000000#!/usr/bin/env python3 from dirichlet import multinomial, multinomialln, multinomial_coefficient, multinomial_coefficientln import math import operator def fold(func, iterable, initial=None, reverse=False): x=initial if reverse: iterable=reversed(iterable) for e in iterable: x=func(x,e) if x is not None else e return x def hwe_expectation(genotype, allele_counts): """@genotype is counts of A,B,C etc. alleles, e.g. (2,0) is AA and (1,1) is AB @allele_counts is the counts of the alleles in the population""" population_total_alleles = sum(allele_counts) ploidy = sum(genotype) genotype_coeff = multinomial_coefficient(ploidy, genotype) allele_frequencies = [count / float(population_total_alleles) for count in allele_counts] genotype_expected_frequency = genotype_coeff * fold(operator.mul, [math.pow(freq, p) for freq, p in zip(allele_frequencies, genotype)]) return genotype_expected_frequency def add_tuple(a, b): l = [] for i,j in zip(a,b): l.append(i + j) return tuple(l) # TODO handle NULL case, genotype has frequency 0 def hwe_sampling_probln(genotype, genotypes, ploidy): """@genotype: counts of A,B,C etc. alleles, e.g. (2,0) is AA and (1,1) is AB @genotypes: counts of the genotypes in the population, e.g. (((2,0),1), ((1,1),2), ((0,2),1)) would be 1xAA, 2xAB, 1xBB @return: the probability that there are exactly as many "genotype" in the population as suggested by the genotype counts, given HWE""" population_total_alleles = sum([sum(g[0]) * g[1] for g in genotypes]) #print "population_total_alleles", population_total_alleles allele_counts = fold(add_tuple, [[a * g[1] for a in g[0]] for g in genotypes]) #print "allele_counts", allele_counts genotype_counts = [g[1] for g in genotypes] #print "genotype_counts", genotype_counts population_total_genotypes = sum([gtc[1] for gtc in genotypes]) #print "total genotypes:", population_total_genotypes #print "ploidy", ploidy # number of arrangements of the alleles in the sample arrangements_of_alleles_in_sample = multinomial_coefficientln(population_total_alleles, allele_counts) #print "arrangements_of_alleles_in_sample", math.exp(arrangements_of_alleles_in_sample) # number of arrangements which contain exactly count genotypes #arrangements_with_exactly_count_genotype = multinomial_coefficientln(population_total_genotypes, genotype_counts) #print math.exp(multinomial_coefficientln(ploidy, genotype)) arrangements_with_exactly_count_genotype = \ multinomial_coefficientln(ploidy, genotype) \ + multinomial_coefficientln(population_total_genotypes, genotype_counts) #print "arrangements_with_exactly_count_genotype", math.exp(arrangements_with_exactly_count_genotype) return arrangements_with_exactly_count_genotype - arrangements_of_alleles_in_sample; def inbreeding_coefficient(genotype, genotypes): population_total_alleles = sum([sum(g[0]) * g[1] for g in genotypes]) allele_counts = fold(add_tuple, [[a * g[1] for a in g[0]] for g in genotypes]) genotype_counts = [g[1] for g in genotypes] population_total_genotypes = sum([gtc[1] for gtc in genotypes]) expected = hwe_expectation(genotype, allele_counts) * population_total_genotypes observed = 0 for g in genotypes: if g[0] == genotype: observed = g[1] break if observed == 0: print("error, no observations of genotype, cannot calculate inbreeding coefficient") return 0 return 1 - (observed / expected) freebayes-1.3.6/python/logsumexp.py000066400000000000000000000007471417247743000174250ustar00rootroot00000000000000import math def logsumexp(lnv): """Sum exp(item) for item in lnv (log-normal vector) without overflow.""" n = lnv[0] maxAbs = n minN = n maxN = n c = n for item in lnv[1:]: n = item if n > maxN: maxN = n if abs(n) > maxAbs: maxAbs = abs(n) if n < minN: minN = n if maxAbs > maxN: c = minN else: c = maxN return c + math.log(sum([math.exp(i - c) for i in lnv])) freebayes-1.3.6/python/multiset.py000066400000000000000000000102261417247743000172410ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ multiset.py -- non-recursive n multichoose k and non-recursive multiset permutations for python lists author: Erik Garrison last revised: 2010-07-15 Copyright (c) 2010 by Erik Garrison Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ def multichoose(k, objects): """n multichoose k multisets from the list of objects. n is the size of the objects.""" j,j_1,q = k,k,k # init here for scoping r = len(objects) - 1 a = [0 for i in range(k)] # initial multiset indexes while True: yield [objects[a[i]] for i in range(0,k)] # emit result j = k - 1 while j >= 0 and a[j] == r: j -= 1 if j < 0: break # check for end condition j_1 = j while j_1 <= k - 1: a[j_1] = a[j_1] + 1 # increment q = j_1 while q < k - 1: a[q+1] = a[q] # shift left q += 1 q += 1 j_1 = q """ Permutations of a multiset: Algorithm 1 Visits the permutations of multiset E. The permutations are stored in a singly-linked list pointed to by head pointer h. Each node in the linked list has a value field v and a next field n. The init(E) call creates a singly-linked list storing the elements of E in non-increasing order with h, i, and j pointing to its first, second-last, and last nodes, respectively. The null pointer is given by φ. Note: If E is empty, then init(E) should exit. Also, if E contains only one element, then init(E) does not need to provide a value for i. [h, i, j] ← init(E) visit(h) while j.n ≠ φ orj.v = j.next.value: s = j else: s = i t = s.__next__ s.next = t.__next__ t.next = h if t.value < h.value: i = t j = i.__next__ h = t yield __visit(h) freebayes-1.3.6/python/phred.py000066400000000000000000000004531417247743000164760ustar00rootroot00000000000000import math M_LN10 = math.log(10) M_LOG10E = math.log10(math.e) def phred2ln(qual): return M_LN10 * qual * -.1 def ln2phred(prob): return -10 * M_LOG10E * prob def phred2float(qual): return math.pow(10, qual * -.1) def float2phred(prob): return min(-10 * math.log10(prob), 99) freebayes-1.3.6/scripts/000077500000000000000000000000001417247743000151665ustar00rootroot00000000000000freebayes-1.3.6/scripts/GenerateFreebayesRegions.R000066400000000000000000000020121417247743000222130ustar00rootroot00000000000000## Generate freebayes params ## # make bed for parallelising freebayes #' This script reads a .fai index and a set of chroms and outputs a series of BED files #' which split the genome into separate regions. library(dplyr) library(data.table) library(glue) # read inputs chroms = snakemake@params[['chroms']] chunks = snakemake@params[['chunks']] fai = fread(snakemake@input[['index']]) # select chroms we want, and start, end columns fai = fai[fai$V1 %in% chroms, c(1,2)] # for each chromsome for (chrom in chroms){ #subset index to desired chrom f = fai[fai$V1 == chrom] #get sequence of n chunks from 0 to length of chrom bedseq = round(seq(0, f$V2, length.out = chunks)) #for each chunk for (i in 1:(chunks-1)){ #write bed file, one for each chunk/interval, which will be passed as input to freebayes row = c(chrom, bedseq[i], bedseq[i+1]) data.frame(row) %>% t() %>% fwrite(., glue("resources/regions/genome.{chrom}.region.{i}.bed"), sep="\t", col.names = FALSE) } } sessionInfo()freebayes-1.3.6/scripts/bgziptabix000077500000000000000000000003521417247743000172570ustar00rootroot00000000000000#!/usr/bin/env bash if [ $# -ne 1 ]; then echo usage: $0 '[file name]' echo runs bgzip on the input and tabix indexes the result echo "== bgzip >[file] && tabix -fp vcf [file]" exit fi file=$1 bgzip >$file && tabix -fp vcf $file freebayes-1.3.6/scripts/coverage_to_regions.py000077500000000000000000000027271417247743000215760ustar00rootroot00000000000000#!/usr/bin/env python3 import sys if len(sys.argv) < 3: print("usage: regions.bed".format(sys.argv[0])) print("Generates regions with even sequencing coverage, provided an input of coverage per-position as") print("generated by bamtools coverage. In other words, generates regions such that the integral of") print("coverage is approximately equal for each. These can be used when variant calling to reduce") print("variance in job runtime.") exit(1) lengths = {} fai = open(sys.argv[1]) for line in fai.readlines(): c, l = line.split("\t")[:2] lengths[c] = int(l) positions = [] total_coverage = 0 for line in sys.stdin: chrom, pos, depth = line.strip().split("\t") pos = int(pos) depth = int(depth) positions.append([chrom, pos, depth]) total_coverage += depth bp_per_region = total_coverage / int(sys.argv[2]) lchrom = None lpos = 0 bp_in_region = 0 for line in positions: chrom, pos, depth = line #line.strip().split("\t") if lchrom != chrom: if lchrom: print(lchrom+":"+str(lpos)+"-"+str(lengths[lchrom])) lpos = 0 lchrom = chrom bp_in_region = 0 else: lchrom = chrom bp_in_region += depth if bp_in_region > bp_per_region: print(chrom+":"+str(lpos)+"-"+str(pos)) #, pos - lpos lpos = pos bp_in_region = 0 print(lchrom+":"+str(lpos)+"-"+str(lengths[lchrom])) freebayes-1.3.6/scripts/fasta_generate_regions.py000077500000000000000000000050161417247743000222430ustar00rootroot00000000000000#!/usr/bin/env python3 import argparse from math import ceil def generate_regions(fasta_index_file, size, chunks=False, chromosomes=None, bed_files=None): if not fasta_index_file.endswith(".fai"): fasta_index_file = fasta_index_file + ".fai" with open(fasta_index_file, "r") as fasta_index: for line in fasta_index: fields = line.strip().split("\t") chrom_name = fields[0] chrom_length = int(fields[1]) if chromosomes is not None and chrom_name not in chromosomes: continue region_start = 0 if chunks is True: region_size = ceil(chrom_length / size) # have to make sure this works else: region_size = size while region_start < chrom_length: region_end = region_start + region_size if region_end > chrom_length: region_end = chrom_length start = str(region_start) end = str(region_end) if bed_files is not None: region = str(ceil(region_end / region_size)) file_path = f"{bed_files}.{chrom_name}.region.{region}.bed" with open(file_path, "w") as f: f.write("\t".join([chrom_name, start, end])) else: print(f"{chrom_name}:{start}-{end}") region_start = region_end if __name__ == "__main__": parser = argparse.ArgumentParser(description="Generates a list of freebayes/bamtools region specifiers. Intended " "for parallelization or creating cluster jobs.") parser.add_argument("--chunks", action="store_true", help="Split the fasta into N chunks rather than into N length pieces") parser.add_argument("--chromosomes", nargs="+", default=None, help="List of chromosomes to create chunks for") parser.add_argument("--bed", metavar="base name", type=str, help="Write chunks to individual bed files (for Snakemake) instead of stdout.") parser.add_argument("fai", metavar="", help="The fasta file to split. Must be indexed.") parser.add_argument("region_size", metavar="", type=int, help="Region size") args = parser.parse_args() generate_regions(args.fai, args.region_size, chunks=args.chunks, chromosomes=args.chromosomes, bed_files=args.bed) freebayes-1.3.6/scripts/freebayes-parallel000077500000000000000000000030261417247743000206540ustar00rootroot00000000000000#!/usr/bin/env bash if [ $# -lt 3 ]; then echo "usage: $0 [regions file] [ncpus] [freebayes arguments]" echo echo "Run freebayes in parallel over regions listed in regions file, using ncpus processors." echo "Will merge and sort output, producing a uniform VCF stream on stdout. Flags to freebayes" echo "which would write to e.g. a particular file will obviously cause problms, so caution is" echo "encouraged when using this script." echo echo "examples:" echo echo "Run freebayes in parallel on 100000bp chunks of the ref (fasta_generate_regions.py is also" echo "located in the scripts/ directory in the freebayes distribution). Use 36 threads." echo echo " freebayes-parallel <(fasta_generate_regions.py ref.fa.fai 100000) 36 -f ref.fa aln.bam >out.vcf" echo echo "Generate regions that are equal in terms of data content, and thus have lower variance" echo "in runtime. This will yield better resource utilization." echo echo " bamtools coverage -in aln.bam | coverage_to_regions.py ref.fa.fai 500 >ref.fa.500.regions" echo " freebayes-parallel ref.fa.500.regions 36 -f ref.fa aln.bam >out.vcf" echo exit fi regionsfile=$1 shift ncpus=$1 shift command=("freebayes" "$@") ( #$command | head -100 | grep "^#" # generate header # iterate over regions using gnu parallel to dispatch jobs cat "$regionsfile" | parallel -k -j "$ncpus" "${command[@]}" --region {} ) | vcffirstheader \ | vcfstreamsort -w 1000 | vcfuniq # remove duplicates at region edges freebayes-1.3.6/scripts/generate_freebayes_region_scripts.sh000077500000000000000000000013021417247743000244520ustar00rootroot00000000000000#!/bin/bash regionfile=$1 stub=$2 outputdir=$3 scriptdir=$4 if [ $# -ne 4 ] then echo "usage: $0 [region list] [stub script] [output directory] [script directory]" echo "Writes single-region scripts using the list of regions in [region list]." echo "The scripts will write their output to [output directory]." echo "The stub script has REGION in the place of the region and OUTPUT in the" echo "place of the output directory." exit fi mkdir -p $scriptdir mkdir -p $outputdir for region in $(cat $regionfile) do echo writing script for $region with output to $outputdir cat $stub | sed -e "s/REGION/$region/g" | sed -e "s%OUTPUT%$outputdir%g" >$scriptdir/$region.sh done freebayes-1.3.6/scripts/sam_add_rg.pl000066400000000000000000000013731417247743000176070ustar00rootroot00000000000000#!/usr/bin/env perl # $argc = @ARGV; if ($argc == 0) { print "usage: cat aln1.sam | sam_add_rg.pl \n"; print "changes all alignments to have RG tags matching the new sample name.\n"; print "prints SAM format out stdout\n"; exit(0); } $ID = $ARGV[0]; $SM = $ARGV[1]; $in_header = 1; while () { if ($_ =~ /^@/) { print $_; next; } else { # add the new RG group to the end of the header if ($in_header) { print "\@RG\tID:$ID\tSM:$SM\n"; $in_header = 0; } if ($_ =~ /\tRG:Z:(.+?)/) { $_ =~ s/\tRG:Z:.+?([\t\n])/\tRG:Z:$ID$1/; } else { $_ =~ s/\n/\tRG:Z:$ID\n/; } print $_; } } freebayes-1.3.6/scripts/samples.cnv000066400000000000000000000005631417247743000173460ustar00rootroot00000000000000chrX -1 -1 NA12878 2 # means NA12878 has copy number 2 in all of chrX chrX -1 -1 NA12879 1 # ... copy number 1 chrX -1 -1 NA13469 2 chrX -1 -1 NA21328 2 chrX -1 -1 NA12970 2 chrY -1 -1 NA12877 1 chrX -1 -1 NA12877 1 chr20 20000 30000 NA12877 1 # NA12877 has one copy of chr20:20000..30000 chr20 20000 30000 NA12879 3 # NA12879 has four copies of chr20:20000..30000 freebayes-1.3.6/scripts/split_ref_by_bai_datasize.py000066400000000000000000000144161417247743000227260ustar00rootroot00000000000000#!/usr/bin/env python3 """ Create a list of regions by splitting a reference based on the amount of data in bam files. Uses the `bai` index of the bam files. Useful for submitting jobs of equal size to a cluster. """ import sys import os import argparse import time import logging import struct import numpy as np from scipy import interpolate DEFAULT_LOGGING_LEVEL = logging.INFO MAX_LOGGING_LEVEL = logging.CRITICAL def setup_logger(verbose_level): fmt=('%(levelname)s %(asctime)s [%(module)s:%(lineno)s %(funcName)s] :: ' '%(message)s') logging.basicConfig(format=fmt, level=max((0, min((MAX_LOGGING_LEVEL, DEFAULT_LOGGING_LEVEL-(verbose_level*10)))))) def Main(argv): tic_total = time.time() # parse arguments parser = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('bamfiles', metavar='BAMFILE', nargs='*') parser.add_argument('-L', '--bam-list', nargs='*') parser.add_argument('-r', '--reference-fai', help="reference fasta index file", required=True) parser.add_argument('-s', '--target-data-size', default='100e6', help="target combined data size of bam files in each region (MB)") parser.add_argument('--bai-interval-size', default=16384, type=int, help="Size in baseparis of each interval in the bam index (bai).") parser.add_argument('-v', '--verbose', action='count', default=0, help="increase logging verbosity") parser.add_argument('-q', '--quiet', action='count', default=0, help="decrease logging verbosity") args = parser.parse_args(argv) # setup logger setup_logger(verbose_level=args.verbose-args.quiet) if argv is not None: logging.warning('Using passed arguments: '+str(argv)) logging.info('args: '+str(args)) # additional argument parsing and datatype handling if not args.bamfiles and not args.bam_list: logging.error("Must provide an BAMFILE and/or --bam-list argument") sys.exit(2) args.target_data_size = int(float(args.target_data_size))*1000000 logging.info('target-data-size: '+str(args.target_data_size)+' bytes') # read bam-lists if provided if args.bam_list: for bamlistfile in args.bam_list: with open(bamlistfile,'r') as fh: for x in fh: x = x.split('#')[0].strip() if x: args.bamfiles.append(x) #logging.info('bam files: '+", ".join(args.bamfiles)) # output complete list of bam files being used # read the reference fasta index fai_chrom = [] fai_len = [] with open(args.reference_fai,'r') as fh: for x in fh: x = x.strip().split(sep='\t') fai_chrom.append(str(x[0])) fai_len.append(int(x[1])) ## read bai indexes, skipping bin info # list by chrom of number of intervals n_intvs = np.array([int(np.ceil(x/args.bai_interval_size)) for x in fai_len]) # list by chrom of lists of interval offsets icumsz = [] # cumulative size of data by interval for i,n in enumerate(n_intvs): icumsz.append(np.zeros((n,), dtype=np.int64)) for bamfn in args.bamfiles: baifn = bamfn+'.bai' with open(baifn,'rb') as fh: logging.info("processing: "+baifn) # filetype magic check assert struct.unpack('4s', fh.read(4))[0] == b'BAI\x01' # number of reference sequences (chroms) n_ref = struct.unpack('i', fh.read(4))[0] assert n_ref == len(fai_len), "fasta index and bam index have must have same number of chroms" for ci in range(n_ref): # skip over the binning index n_bin = struct.unpack('i', fh.read(4))[0] for bini in range(n_bin): bin_id = struct.unpack('I', fh.read(4))[0] n_chunk = struct.unpack('i', fh.read(4))[0] fh.seek(n_chunk*16, os.SEEK_CUR) # read interval index n_intv = struct.unpack('i', fh.read(4))[0] if n_intv > 0: ioff = np.array(struct.unpack(str(n_intv)+'Q', fh.read(n_intv*8)), dtype=np.int64) while( len(ioff) < len(icumsz[ci]) ): ioff = np.append(ioff, ioff[-1]+1) icumsz[ci] += ioff-ioff[0] ## make the list of regions regions = [] for ci,chrom in enumerate(fai_chrom): # sanity check last point if there are more than one if len(icumsz[ci]) > 1: assert icumsz[ci][-1] >= icumsz[ci][-2] # tiny chroms just get 1 region if len(icumsz[ci]) < 2: regions.extend([ (fai_chrom[ci], 0, fai_len[ci]) ]) continue ds = icumsz[ci] pos = np.arange(0, ds.shape[0])*args.bai_interval_size # estimate total data size for the chrom f = interpolate.interp1d(pos, ds, fill_value='extrapolate', kind='linear') ds_total = f([fai_len[ci]])[0] num_regions = int(np.ceil(ds_total/args.target_data_size)) # approx equal LENGTH regions # tmp = np.linspace(0, fai_len[ci], num=num_regions+1, endpoint=True, dtype=int) # approx equal DATA SIZE regions f = interpolate.interp1d(ds, pos, fill_value='extrapolate', kind='linear') dsx = np.linspace(0, ds_total, num=num_regions+1, endpoint=True, dtype=int) tmp = f(dsx).astype(int) # ensure we exactly hit the endpoints tmp[0] = 0 tmp[-1] = fai_len[ci] regions.extend([ (fai_chrom[ci], tmp[i], tmp[i+1]) for i in range(len(tmp)-1) ]) ## Output regions file for r in regions: print(*r, sep='\t') logging.info("Number of chroms: {}".format(len(fai_len))) logging.info("Number of splits: {}".format(len(regions)-len(fai_len))) logging.info("Number of regions: {}".format(len(regions))) logging.info("Done: {:.2f} sec elapsed".format(time.time()-tic_total)) return 0 ######################################################################### # Main loop hook... if run as script run main, else this is just a module if __name__ == '__main__': if 'TESTING_ARGS' in globals(): sys.exit(Main(argv=TESTING_ARGS)) else: sys.exit(Main(argv=None)) freebayes-1.3.6/scripts/update_version.sh000077500000000000000000000015071417247743000205570ustar00rootroot00000000000000#!/bin/sh BASE_DIR=$1 RELEASED_VERSION_FILE=${BASE_DIR}/src/version_release.txt if [ -d "${BASE_DIR}/.git" ] && which git > /dev/null then DETECTED_VERSION=$(git describe --always --tags --dirty) else DETECTED_VERSION=$(grep -v "^#" $RELEASED_VERSION_FILE) fi VERSION_FILE=${BASE_DIR}/src/version_git.h CURRENT_VERSION="" [ -e "$VERSION_FILE" ] && CURRENT_VERSION=$(grep "define VERSION_GIT " "$VERSION_FILE" | cut -f3 -d" " | sed 's/"//g') echo "DETECTED_VERSION = $DETECTED_VERSION" echo "CURRENT_VERSION = $CURRENT_VERSION" if [ "${DETECTED_VERSION}" != "${CURRENT_VERSION}" ] then echo "Updating version file." echo "#ifndef VERSION_GIT_H" > $VERSION_FILE echo "#define VERSION_GIT_H" >> $VERSION_FILE echo "#define VERSION_GIT \"${DETECTED_VERSION}\"" >> $VERSION_FILE echo "#endif /* VERSION_GIT_H */" >> $VERSION_FILE fi freebayes-1.3.6/scripts/vcffirstheader000077500000000000000000000004731417247743000201170ustar00rootroot00000000000000#!/usr/bin/env python3 import sys header=True for line in sys.stdin: if line.startswith('##'): if header: print(line.strip()) continue elif line.startswith('#'): if header: print(line.strip()) header=False continue print(line.strip()) freebayes-1.3.6/src/000077500000000000000000000000001417247743000142665ustar00rootroot00000000000000freebayes-1.3.6/src/.gitignore000066400000000000000000000000251417247743000162530ustar00rootroot00000000000000*.o *.swp tags tests freebayes-1.3.6/src/Allele.cpp000066400000000000000000001347731417247743000162070ustar00rootroot00000000000000#include "Allele.h" #include "multichoose.h" #include "TryCatch.h" int Allele::referenceOffset(void) const { /*cout << readID << " offset checked " << referencePosition - position << " against position " << position << " allele length " << length << " str length " << referenceSequence.size() << " qstr size " << qualityString.size() << endl; */ return *currentReferencePosition - position; } void Allele::setQuality(void) { quality = currentQuality(); lnquality = phred2ln(quality); } int Allele::bpLeft(void) { return position - alignmentStart; } int Allele::bpRight(void) { return alignmentEnd - (position + referenceLength); } // called prior to using the allele in analysis // called again when haplotype alleles are built, in which case the "currentBase" is set to the alternate sequence of the allele void Allele::update(int haplotypeLength) { if (haplotypeLength == 1) { if (type == ALLELE_REFERENCE) { currentBase = string(1, *currentReferenceBase); } else { currentBase = base(); } } else { currentBase = base(); } // should be done after setting currentBase to haplotypeLength if (isReference()) setQuality(); basesLeft = bpLeft(); basesRight = bpRight(); } // quality of subsequence of allele const int Allele::subquality(int startpos, int len) const { int start = startpos - position; int sum = 0; for (int i = start; i < len; ++i) { sum += baseQualities.at(i); } return sum; } // quality of subsequence of allele const long double Allele::lnsubquality(int startpos, int len) const { return phred2ln(subquality(startpos, len)); } const int Allele::subquality(const Allele &a) const { int sum = 0; int rp = a.position - position; int l = a.length; int L = l; int spanstart = 0; int spanend = 1; //int l = min((int) a.length, (int) baseQualities.size() - start); if (a.type == ALLELE_INSERTION) { L = l + 2; if (L > baseQualities.size()) { L = baseQualities.size(); spanstart = 0; } else { // set lower bound to 0 if (rp < (L / 2)) { spanstart = 0; } else { spanstart = rp - (L / 2); } // set upper bound to the string length if (spanstart + L > baseQualities.size()) { spanstart = baseQualities.size() - L; } } //string qualstr = baseQualities.substr(spanstart, L); spanend = spanstart + L; } else if (a.type == ALLELE_DELETION) { L = l + 2; if (L > baseQualities.size()) { L = baseQualities.size(); spanstart = 0; } else { // set lower bound to 0 if (rp < 1) { spanstart = 0; } else { spanstart = rp - 1; } // set upper bound to the string length if (spanstart + L > baseQualities.size()) { spanstart = baseQualities.size() - L; } } spanend = spanstart + L; } else if (a.type == ALLELE_MNP) { L = l; if (L > baseQualities.size()) { L = baseQualities.size(); spanstart = 0; } else { if (rp < 1) { spanstart = 0; } else { spanstart = rp; } // impossible if (spanstart + L > baseQualities.size()) { spanstart = baseQualities.size() - L; } } spanend = spanstart + L; } // TODO ALLELE_COMPLEX for (int i = spanstart; i < spanend; ++i) { sum += baseQualities.at(i); } return sum * (l / L); } const long double Allele::lnsubquality(const Allele& a) const { return phred2ln(subquality(a)); } void updateAllelesCachedData(vector& alleles) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { (*a)->update(); } } /* const int Allele::basesLeft(void) const { if (type == ALLELE_REFERENCE) { return bpLeft + referenceOffset(); } else { return bpLeft; } } const int Allele::basesRight(void) const { if (type == ALLELE_REFERENCE) { return bpRight - referenceOffset(); } else { return bpRight; } } */ // quality at a given reference position const short Allele::currentQuality(void) const { //cerr << readID << " " << position << "-" << position + length << " " << alternateSequence.size() << " vs " << baseQualities.size() << endl; switch (this->type) { case ALLELE_REFERENCE: // should check a different way... this is wrong // it will catch it all the time, if (currentBase.size() > 1) { return averageQuality(baseQualities); } else { int off = referenceOffset(); if (off < 0 || off > baseQualities.size()) { return 0; } else { return baseQualities.at(off); } } break; case ALLELE_INSERTION: case ALLELE_DELETION: case ALLELE_SNP: case ALLELE_MNP: case ALLELE_COMPLEX: return quality; break; } return 0; } const long double Allele::lncurrentQuality(void) const { return phred2ln(currentQuality()); } string Allele::typeStr(void) const { string t; switch (this->type) { case ALLELE_GENOTYPE: t = "genotype"; break; case ALLELE_REFERENCE: t = "reference"; break; case ALLELE_MNP: t = "mnp"; break; case ALLELE_SNP: t = "snp"; break; case ALLELE_INSERTION: t = "insertion"; break; case ALLELE_DELETION: t = "deletion"; break; case ALLELE_COMPLEX: t = "complex"; break; case ALLELE_NULL: t = "null"; break; default: t = "unknown"; break; } return t; } bool Allele::isReference(void) const { return type == ALLELE_REFERENCE; } bool Allele::isSNP(void) const { return type == ALLELE_SNP; } bool Allele::isInsertion(void) const { return type == ALLELE_INSERTION; } bool Allele::isDeletion(void) const { return type == ALLELE_DELETION; } bool Allele::isMNP(void) const { return type == ALLELE_MNP; } bool Allele::isComplex(void) const { return type == ALLELE_COMPLEX; } bool Allele::isNull(void) const { return type == ALLELE_NULL; } const string Allele::base(void) const { // the base of this allele switch (this->type) { case ALLELE_REFERENCE: if (genotypeAllele) return alternateSequence; else return currentBase; break; case ALLELE_GENOTYPE: return alternateSequence; break; /* case ALLELE_GENOTYPE: return alternateSequence; // todo fix break; case ALLELE_REFERENCE: return "R:" + convert(position) + ":" + cigar + ":" + alternateSequence; break; */ case ALLELE_SNP: return "S:" + convert(position) + ":" + cigar + ":" + alternateSequence; break; case ALLELE_MNP: return "M:" + convert(position) + ":" + cigar + ":" + alternateSequence; break; case ALLELE_INSERTION: return "I:" + convert(position) + ":" + cigar + ":" + alternateSequence; break; case ALLELE_DELETION: return "D:" + convert(position) + ":" + cigar; break; case ALLELE_COMPLEX: return "C:" + convert(position) + ":" + cigar + ":" + alternateSequence; break; case ALLELE_NULL: return "N:" + convert(position) + ":" + alternateSequence; default: return ""; break; } } string stringForAllele(const Allele &allele) { stringstream out; if (!allele.genotypeAllele) { out.precision(1); out << allele.sampleID << ":" << allele.readID << ":" << allele.typeStr() << ":" << allele.cigar << ":" << scientific << fixed << allele.position << ":" << allele.length << ":" << (allele.strand == STRAND_FORWARD ? "+" : "-") << ":" << allele.referenceSequence << ":" << allele.alternateSequence << ":" << allele.quality << ":" << allele.basesLeft << ":" << allele.basesRight; } else { out << allele.typeStr() << ":" << allele.cigar << ":" << scientific << fixed << allele.position << ":" << allele.length << ":" << allele.alternateSequence; } return out.str(); } string stringForAlleles(vector &alleles) { stringstream out; for (vector::iterator allele = alleles.begin(); allele != alleles.end(); allele++) { out << stringForAllele(*allele) << endl; } return out.str(); } string tojson(vector &alleles) { stringstream out; vector::iterator a = alleles.begin(); out << "[" << (*a)->tojson(); ++a; for (; a != alleles.end(); ++a) out << "," << (*a)->tojson(); out << "]"; return out.str(); } string tojson(Allele*& allele) { return allele->tojson(); } string Allele::tojson(void) { stringstream out; if (!genotypeAllele) { out << "{\"id\":\"" << readID << "\"" << ",\"type\":\"" << typeStr() << "\"" << ",\"length\":" << ((type == ALLELE_REFERENCE) ? 1 : length) << ",\"position\":" << position << ",\"strand\":\"" << (strand == STRAND_FORWARD ? "+" : "-") << "\""; if (type == ALLELE_REFERENCE ) { out << ",\"base\":\"" << alternateSequence.at(referenceOffset()) << "\"" //<< ",\"reference\":\"" << allele.referenceSequence.at(referenceOffset) << "\"" << ",\"quality\":" << currentQuality(); } else { out << ",\"base\":\"" << alternateSequence << "\"" //<< ",\"reference\":\"" << allele.referenceSequence << "\"" << ",\"quality\":" << quality; } out << "}"; } else { out << "{\"type\":\"" << typeStr() << "\""; switch (type) { case ALLELE_REFERENCE: out << "}"; break; default: out << "\",\"length\":" << length << ",\"alt\":\"" << alternateSequence << "\"}"; break; } } return out.str(); } ostream &operator<<(ostream &out, vector &alleles) { vector::iterator a = alleles.begin(); out << **a++; while (a != alleles.end()) out << "|" << **a++; return out; } ostream &operator<<(ostream &out, vector &alleles) { int i = 0; for (auto& allele : alleles) { out << (i++ ? "|" : "") << allele; } return out; } ostream &operator<<(ostream &out, list &alleles) { int i = 0; for (auto& allele : alleles) { out << (i++ ? "|" : "") << allele; } return out; } ostream &operator<<(ostream &out, Allele* &allele) { out << *allele; return out; } ostream &operator<<(ostream &out, Allele &allele) { if (!allele.genotypeAllele) { int prec = out.precision(); // << &allele << ":" out.precision(1); out << allele.sampleID << ":" << allele.readID << ":" << allele.typeStr() << ":" << allele.length << ":" << allele.referenceLength << ":" << scientific << fixed << allele.position << ":" << (allele.strand == STRAND_FORWARD ? "+" : "-") << ":" << allele.alternateSequence //<< ":" << allele.referenceSequence << ":" << allele.repeatRightBoundary << ":" << allele.cigar << ":" << allele.lnmapQuality << ":" << allele.lnquality; out.precision(prec); } else { out << allele.typeStr() << ":" << allele.cigar << ":" << scientific << fixed << allele.position << ":" << allele.length << ":" << (string) allele.alternateSequence; } out.precision(5); return out; } bool operator<(const Allele &a, const Allele &b) { //cerr << "allele<" << endl; return a.currentBase < b.currentBase; } // TODO fixme?? // alleles are equal if they represent the same reference-relative variation or // sequence, which we encode as a string and compare here bool operator==(const Allele &a, const Allele &b) { //cerr << "allele==" << endl; return a.currentBase == b.currentBase; } bool operator!=(const Allele& a, const Allele& b) { return ! (a == b); } bool Allele::equivalent(Allele &b) { if (type != b.type) { return false; } else { switch (type) { case ALLELE_REFERENCE: // reference alleles are, by definition, always equivalent return true; break; case ALLELE_SNP: case ALLELE_MNP: if (alternateSequence == b.alternateSequence) return true; break; case ALLELE_DELETION: if (length == b.length) return true; break; case ALLELE_INSERTION: if (length == b.length && alternateSequence == b.alternateSequence) return true; break; case ALLELE_COMPLEX: if (length == b.length && alternateSequence == b.alternateSequence && cigar == b.cigar) return true; break; case ALLELE_NULL: return alternateSequence == b.alternateSequence; default: break; } } return false; } bool areHomozygous(vector& alleles) { Allele* prev = alleles.front(); for (vector::iterator allele = alleles.begin() + 1; allele != alleles.end(); ++allele) { if (**allele != *prev) { return false; } } return true; } // counts alleles which satisfy operator== map countAlleles(vector& alleles) { map counts; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = **a; map::iterator f = counts.find(allele); if (f == counts.end()) { counts[allele] = 1; } else { counts[allele] += 1; } } return counts; } // counts alleles which satisfy operator== map countAllelesString(vector& alleles) { map counts; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& thisAllele = **a; const string& allele = thisAllele.currentBase; map::iterator f = counts.find(allele); if (f == counts.end()) { counts[allele] = 1; } else { counts[allele] += 1; } } return counts; } map countAllelesString(vector& alleles) { map counts; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& thisAllele = *a; const string& allele = thisAllele.currentBase; map::iterator f = counts.find(allele); if (f == counts.end()) { counts[allele] = 1; } else { counts[allele] += 1; } } return counts; } map countAlleles(vector& alleles) { map counts; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = *a; map::iterator f = counts.find(allele); if (f == counts.end()) { counts[allele] = 1; } else { counts[allele] += 1; } } return counts; } map countAlleles(list& alleles) { map counts; for (list::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = **a; map::iterator f = counts.find(allele); if (f == counts.end()) { counts[allele] = 1; } else { counts[allele] += 1; } } return counts; } map > groupAllelesBySample(list& alleles) { map > groups; for (list::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele*& allele = *a; groups[allele->sampleID].push_back(allele); } return groups; } vector uniqueAlleles(list& alleles) { vector uniques; map counts = countAlleles(alleles); for (map::iterator c = counts.begin(); c != counts.end(); ++c) { uniques.push_back(c->first); } return uniques; } void groupAllelesBySample(list& alleles, map >& groups) { for (list::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele*& allele = *a; groups[allele->sampleID].push_back(allele); } } // in haplotype calling, if alleles have the same alternate sequence, the // should have the same cigar and position. this function picks the most // common allele observation per alternate sequence and homogenizes the rest to // the same if they are not reference alleles void homogenizeAlleles(map >& alleleGroups, string& refseq, Allele& refallele) { map > equivs; map homogenizeTo; // find equivalencies between alleles // base equivalency is self for (map >::iterator g = alleleGroups.begin(); g != alleleGroups.end(); ++g) { Allele& allele = *g->second.front(); if (allele.isReference()) { continue; } equivs[allele.alternateSequence][g->first]++; } // for (map >::iterator e = equivs.begin(); e != equivs.end(); ++e) { string altseq = e->first; map& group = e->second; map ordered; for (map::iterator f = group.begin(); f != group.end(); ++f) { // pick the best by count ordered[f->second] = f->first; } // choose the most common group string& altbase = ordered.rbegin()->second; if (altseq == refseq) { homogenizeTo[altseq] = &refallele; } else { homogenizeTo[altseq] = alleleGroups[altbase].front(); } } for (map >::iterator g = alleleGroups.begin(); g != alleleGroups.end(); ++g) { vector& alleles = g->second; if (alleles.front()->isReference()) { continue; } string& altseq = alleles.front()->alternateSequence; Allele* toallele = homogenizeTo[altseq]; string& cigar = toallele->cigar; AlleleType type = toallele->type; long int position = toallele->position; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { (*a)->cigar = cigar; (*a)->type = type; (*a)->position = position; (*a)->update(); } } } void resetProcessedFlag(map >& alleleGroups) { for (map >::iterator g = alleleGroups.begin(); g != alleleGroups.end(); ++g) { for (vector::iterator a = g->second.begin(); a != g->second.end(); ++a) { (*a)->processed = false; } } } void groupAlleles(map >& sampleGroups, map >& alleleGroups) { for (map >::iterator sample = sampleGroups.begin(); sample != sampleGroups.end(); ++sample) { for (vector::iterator allele = sample->second.begin(); allele != sample->second.end(); ++allele) { alleleGroups[(*allele)->currentBase].push_back(*allele); } } } vector > groupAlleles(map > &sampleGroups, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (map >::iterator sg = sampleGroups.begin(); sg != sampleGroups.end(); ++sg) { vector& alleles = sg->second; for (vector::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(**oa, *ag->front())) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } } return groups; } vector > groupAlleles(list &alleles, bool (*fncompare)(Allele* &a, Allele* &b)) { vector > groups; for (list::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(*oa, ag->front())) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles(list &alleles, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (list::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(*oa, *ag->front())) { ag->push_back(&*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(&*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (vector::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(**oa, *ag->front())) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (vector::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(*oa, *ag->front())) { ag->push_back(&*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(&*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles_copy(list &alleles, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (list::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(*oa, ag->front())) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles_copy(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)) { vector > groups; for (vector::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if ((*fncompare)(*oa, ag->front())) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } return groups; } vector > groupAlleles_copy(vector &alleles) { vector > groups; for (vector::iterator oa = alleles.begin(); oa != alleles.end(); ++oa) { bool unique = true; for (vector >::iterator ag = groups.begin(); ag != groups.end(); ++ag) { if (*oa == ag->front()) { ag->push_back(*oa); unique = false; break; } } if (unique) { vector trueAlleleGroup; trueAlleleGroup.push_back(*oa); groups.push_back(trueAlleleGroup); } } return groups; } bool Allele::sameSample(Allele &other) { return this->sampleID == other.sampleID; } bool allelesSameType(Allele* &a, Allele* &b) { return a->type == b->type; } bool allelesEquivalent(Allele* &a, Allele* &b) { return a->equivalent(*b); } bool allelesSameSample(Allele* &a, Allele* &b) { return a->sampleID == b->sampleID; } bool allelesSameType(Allele &a, Allele &b) { return a.type == b.type; } bool allelesEquivalent(Allele &a, Allele &b) { return a.equivalent(b); } bool allelesSameSample(Allele &a, Allele &b) { return a.sampleID == b.sampleID; } bool allelesEqual(Allele &a, Allele &b) { return a == b; } vector genotypeAllelesFromAlleleGroups(vector > &groups) { vector results; for (vector >::iterator g = groups.begin(); g != groups.end(); ++g) results.push_back(genotypeAllele(*g->front())); return results; } vector genotypeAllelesFromAlleles(vector &alleles) { vector results; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) results.push_back(genotypeAllele(**a)); return results; } vector genotypeAllelesFromAlleleGroups(vector > &groups) { vector results; for (vector >::iterator g = groups.begin(); g != groups.end(); ++g) results.push_back(genotypeAllele(g->front())); return results; } vector genotypeAllelesFromAlleles(vector &alleles) { vector results; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) results.push_back(genotypeAllele(*a)); return results; } Allele genotypeAllele(Allele &a) { return Allele(a.type, a.alternateSequence, a.length, a.referenceLength, a.cigar, a.position, a.repeatRightBoundary); } Allele genotypeAllele(AlleleType type, string alt, unsigned int len, string cigar, unsigned int reflen, long int pos, long int rrbound) { return Allele(type, alt, len, reflen, cigar, pos, rrbound); } int allowedAlleleTypes(vector& allowedEnumeratedTypes) { int allowedTypes = 0;// (numberOfPossibleAlleleTypes, false); for (vector::iterator t = allowedEnumeratedTypes.begin(); t != allowedEnumeratedTypes.end(); ++t) { allowedTypes |= *t; } return allowedTypes; } void filterAlleles(list& alleles, int allowedTypes) { for (list::iterator allele = alleles.begin(); allele != alleles.end(); ++allele) { bool allowed = false; if (!(allowedTypes & (*allele)->type)) *allele = NULL; } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } int countAlleles(map >& sampleGroups) { int count = 0; for (map >::iterator sg = sampleGroups.begin(); sg != sampleGroups.end(); ++sg) { count += sg->second.size(); } return count; } int countAllelesWithBase(vector& alleles, string base) { int count = 0; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { if ((*a)->currentBase == base) ++count; } return count; } int baseCount(vector& alleles, string base, AlleleStrand strand) { int count = 0; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { if ((*a)->currentBase == base && (*a)->strand == strand) ++count; } return count; } pair, pair > baseCount(vector& alleles, string refbase, string altbase) { int forwardRef = 0; int reverseRef = 0; int forwardAlt = 0; int reverseAlt = 0; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { string base = (*a)->currentBase; AlleleStrand strand = (*a)->strand; if (base == refbase) { if (strand == STRAND_FORWARD) ++forwardRef; else if (strand == STRAND_REVERSE) ++reverseRef; } else if (base == altbase) { if (strand == STRAND_FORWARD) ++forwardAlt; else if (strand == STRAND_REVERSE) ++reverseAlt; } } return make_pair(make_pair(forwardRef, forwardAlt), make_pair(reverseRef, reverseAlt)); } string Allele::readSeq(void) { string r; for (vector::iterator a = alignmentAlleles->begin(); a != alignmentAlleles->end(); ++a) { r.append(a->alternateSequence); } return r; } string Allele::read5p(void) { string r; vector::const_reverse_iterator a = alignmentAlleles->rbegin(); while (&*a != this) { ++a; } if ((a+1) != alignmentAlleles->rend()) ++a; while (a != alignmentAlleles->rend()) { r = a->alternateSequence + r; ++a; } r.append(alternateSequence); return r; } string Allele::read3p(void) { string r = alternateSequence; vector::const_iterator a = alignmentAlleles->begin(); while (&*a != this) { ++a; } if ((a+1) != alignmentAlleles->end()) ++a; while (a != alignmentAlleles->end()) { r.append(a->alternateSequence); ++a; } return r; } string Allele::read5pNonNull(void) { string r = alternateSequence; vector::const_reverse_iterator a = alignmentAlleles->rbegin(); while (&*a != this) { ++a; } while (a != alignmentAlleles->rend() && !a->isNull()) { if (&*a != this) { r = a->alternateSequence + r; } ++a; } return r; } string Allele::read3pNonNull(void) { string r = alternateSequence; vector::const_iterator a = alignmentAlleles->begin(); while (&*a != this) { ++a; } while (a != alignmentAlleles->end() && !a->isNull()) { if (&*a != this) { r.append(a->alternateSequence); } ++a; } return r; } int Allele::read5pNonNullBases(void) { int bp = 0; vector::const_reverse_iterator a = alignmentAlleles->rbegin(); while (&*a != this) { ++a; } while (a != alignmentAlleles->rend() && !a->isNull()) { if (&*a != this) { //cerr << "5p bp = " << bp << " adding " << stringForAllele(*a) << " to " << stringForAllele(*this) << endl; bp += a->alternateSequence.size(); } ++a; } return bp; } int Allele::read3pNonNullBases(void) { int bp = 0; vector::const_iterator a = alignmentAlleles->begin(); while (&*a != this) { ++a; } while (a != alignmentAlleles->end() && !a->isNull()) { if (&*a != this) { //cerr << "3p bp = " << bp << " adding " << stringForAllele(*a) << " to " << stringForAllele(*this) << endl; bp += a->alternateSequence.size(); } ++a; } return bp; } // adjusts the allele to have a new start // returns the ref/alt sequence obtained by subtracting length from the left end of the allele void Allele::subtract( int subtractFromRefStart, int subtractFromRefEnd, string& substart, string& subend, vector >& cigarStart, vector >& cigarEnd, vector& qsubstart, vector& qsubend ) { substart.clear(); subend.clear(); cigarStart.clear(); cigarEnd.clear(); qsubstart.clear(); qsubend.clear(); // prepare to adjust cigar list > cigarL = splitCigarList(cigar); // walk the cigar string to determine where to make the left cut in the alternate sequence int subtractFromAltStart = 0; if (subtractFromRefStart) { int refbpstart = subtractFromRefStart; pair c; while (!cigarL.empty()) { c = cigarL.front(); cigarL.pop_front(); char op = c.second[0]; switch (op) { case 'M': case 'X': case 'N': refbpstart -= c.first; subtractFromAltStart += c.first; break; case 'I': subtractFromAltStart += c.first; break; case 'D': refbpstart -= c.first; break; default: break; } cigarStart.push_back(c); if (refbpstart < 0) { // split/adjust the last cigar element cigarL.push_front(c); cigarL.front().first = -refbpstart; cigarStart.back().first += refbpstart; switch (op) { case 'M': case 'X': case 'N': case 'I': subtractFromAltStart += refbpstart; break; case 'D': default: break; } break; // we're done } } } int subtractFromAltEnd = 0; // walk the cigar string to determine where to make the right cut in the alternate sequence if (subtractFromRefEnd) { int refbpend = subtractFromRefEnd; pair c; while (!cigarL.empty() && refbpend > 0) { c = cigarL.back(); cigarL.pop_back(); char op = c.second[0]; switch (op) { case 'M': case 'X': case 'N': subtractFromAltEnd += c.first; refbpend -= c.first; break; case 'I': subtractFromAltEnd += c.first; break; case 'D': refbpend -= c.first; break; default: break; } cigarEnd.insert(cigarEnd.begin(), c); if (refbpend < 0) { // split/adjust the last cigar element cigarL.push_back(c); cigarL.back().first = -refbpend; cigarEnd.front().first += refbpend; switch (op) { case 'M': case 'X': case 'I': case 'N': subtractFromAltEnd += refbpend; break; case 'D': default: break; } break; // drop out of loop, we're done } } } // adjust the alternateSequence substart = alternateSequence.substr(0, subtractFromAltStart); subend = alternateSequence.substr(alternateSequence.size() - subtractFromAltEnd, subtractFromAltEnd); alternateSequence.erase(0, subtractFromAltStart); alternateSequence.erase(alternateSequence.size() - subtractFromAltEnd, subtractFromAltEnd); // adjust the quality string qsubstart.insert(qsubstart.begin(), baseQualities.begin(), baseQualities.begin() + subtractFromAltStart); qsubend.insert(qsubend.begin(), baseQualities.begin() + baseQualities.size() - subtractFromAltEnd, baseQualities.end()); baseQualities.erase(baseQualities.begin(), baseQualities.begin() + subtractFromAltStart); baseQualities.erase(baseQualities.begin() + baseQualities.size() - subtractFromAltEnd, baseQualities.end()); // reset the cigar cigarL.erase(remove_if(cigarL.begin(), cigarL.end(), isEmptyCigarElement), cigarL.end()); cigar = joinCigarList(cigarL); // reset the length length = alternateSequence.size(); // update the type specification updateTypeAndLengthFromCigar(); // adjust the position position += subtractFromRefStart; // assumes the first-base of the alleles is reference==, not ins //referenceLength -= subtractFromRefStart; //referenceLength -= subtractFromRefEnd; referenceLength = referenceLengthFromCigar(); } void Allele::subtractFromStart(int bp, string& seq, vector >& cig, vector& quals) { string emptystr; vector > emptycigar; vector emptyquals; subtract(bp, 0, seq, emptystr, cig, emptycigar, quals, emptyquals); } void Allele::subtractFromEnd(int bp, string& seq, vector >& cig, vector& quals) { string emptystr; vector > emptycigar; vector emptyquals; subtract(0, bp, emptystr, seq, emptycigar, cig, emptyquals, quals); } void Allele::addToStart(string& seq, vector >& cig, vector& quals) { string emptystr; vector > emptycigar; vector emptyquals; add(seq, emptystr, cig, emptycigar, quals, emptyquals); } void Allele::addToEnd(string& seq, vector >& cig, vector& quals) { string emptystr; vector > emptycigar; vector emptyquals; add(emptystr, seq, emptycigar, cig, emptyquals, quals); } void Allele::add( string& addToStart, string& addToEnd, vector >& cigarStart, vector >& cigarEnd, vector& qaddToStart, vector& qaddToEnd ) { // adjust the position for (vector >::iterator c = cigarStart.begin(); c != cigarStart.end(); ++c) { switch (c->second[0]) { case 'M': case 'X': case 'D': case 'N': position -= c->first; break; case 'I': default: break; } } // prepare to adjust cigar vector > cigarV = splitCigar(cigar); // adjust the cigar if (!cigarStart.empty()) { if (cigarStart.back().second == cigarV.front().second) { // merge cigarV.front().first += cigarStart.back().first; cigarStart.pop_back(); } } cigarV.insert(cigarV.begin(), cigarStart.begin(), cigarStart.end()); if (!cigarEnd.empty()) { if (cigarEnd.front().second == cigarV.back().second) { // merge cigarV.back().first += cigarEnd.front().first; cigarEnd.pop_back(); } else { cigarV.insert(cigarV.end(), cigarEnd.begin(), cigarEnd.end()); } } // adjust the alternateSequence alternateSequence.insert(0, addToStart); alternateSequence.append(addToEnd); // adjust the quality string baseQualities.insert(baseQualities.begin(), qaddToStart.begin(), qaddToStart.end()); baseQualities.insert(baseQualities.end(), qaddToEnd.begin(), qaddToEnd.end()); // reset the cigar cigarV.erase(remove_if(cigarV.begin(), cigarV.end(), isEmptyCigarElement), cigarV.end()); cigar = joinCigar(cigarV); updateTypeAndLengthFromCigar(); // reset referenceLength referenceLength = referenceLengthFromCigar(); } void Allele::updateTypeAndLengthFromCigar(void) { vector > cigarV = splitCigar(cigar); map cigarTypes; map cigarLengths; for (vector >::iterator c = cigarV.begin(); c != cigarV.end(); ++c) { ++cigarTypes[c->second[0]]; cigarLengths[c->second[0]] += c->first; } if (cigarTypes.size() == 1) { switch (cigarTypes.begin()->first) { case 'M': type = ALLELE_REFERENCE; break; case 'I': type = ALLELE_INSERTION; break; case 'D': type = ALLELE_DELETION; break; case 'X': if (cigarLengths['X'] > 1) { type = ALLELE_MNP; } else { type = ALLELE_SNP; } break; case 'N': type = ALLELE_NULL; break; default: break; } } else if (cigarTypes.size() == 2) { if (cigarTypes['M'] > 0) { if (cigarTypes['I'] == 1) { type = ALLELE_INSERTION; } else if (cigarTypes['D'] == 1) { type = ALLELE_DELETION; } else if (cigarTypes['X'] == 1) { if (cigarLengths['X'] > 1) { type = ALLELE_MNP; } else { type = ALLELE_SNP; } } else { type = ALLELE_COMPLEX; } } else { type = ALLELE_COMPLEX; } } else { type = ALLELE_COMPLEX; } // recalculate allele length and quality, based on type switch (type) { case ALLELE_REFERENCE: length = alternateSequence.size(); break; case ALLELE_SNP: case ALLELE_MNP: length = cigarLengths['X']; break; case ALLELE_INSERTION: length = cigarLengths['I']; break; case ALLELE_DELETION: length = cigarLengths['D']; break; case ALLELE_COMPLEX: length = alternateSequence.size(); break; case ALLELE_NULL: length = alternateSequence.size(); break; default: break; } } int referenceLengthFromCigar(string& cigar) { int r = 0; vector > cigarV = splitCigar(cigar); for (vector >::iterator c = cigarV.begin(); c != cigarV.end(); ++c) { switch (c->second[0]) { case 'M': case 'X': case 'D': r += c->first; break; case 'N': case 'I': default: break; } } return r; } int Allele::referenceLengthFromCigar(void) { int r = 0; vector > cigarV = splitCigar(cigar); for (vector >::iterator c = cigarV.begin(); c != cigarV.end(); ++c) { switch (c->second[0]) { case 'M': case 'X': case 'D': r += c->first; break; case 'N': case 'I': default: break; } } return r; } // combines the two alleles into a complex variant, updates important data void Allele::mergeAllele(const Allele& newAllele, AlleleType newType) { //cerr << stringForAllele(*this) << endl << stringForAllele(newAllele) << endl; type = newType; alternateSequence += newAllele.alternateSequence; length += newAllele.length; // hmmm basesRight = newAllele.basesRight; baseQualities.insert(baseQualities.end(), newAllele.baseQualities.begin(), newAllele.baseQualities.end()); currentBase = base(); quality = averageQuality(baseQualities); lnquality = phred2ln(quality); basesRight += newAllele.referenceLength; if (newAllele.type != ALLELE_REFERENCE) { repeatRightBoundary = newAllele.repeatRightBoundary; } cigar = mergeCigar(cigar, newAllele.cigar); referenceLength = referenceLengthFromCigar(); } void Allele::squash(void) { // will trigger destruction of this allele in the AlleleParser length = 0; position = 0; } unsigned int Allele::getLengthOnReference(void) { return referenceLengthFromCigar(); } vector alleleUnion(vector& a1, vector& a2) { map alleleSet; vector results; for (vector::iterator a = a1.begin(); a != a1.end(); ++a) { alleleSet.insert(make_pair(a->base(), *a)); } for (vector::iterator a = a2.begin(); a != a2.end(); ++a) { alleleSet.insert(make_pair(a->base(), *a)); } for (map::iterator a = alleleSet.begin(); a != alleleSet.end(); ++a) { results.push_back(a->second); } return results; } bool isEmptyAllele(const Allele& allele) { return allele.length == 0; } bool isDividedIndel(const Allele& allele) { vector > cigarV = splitCigar(allele.cigar); if (cigarV.front().second == "D" || cigarV.front().second == "I") { return true; } else { return false; } } // returns true if this indel is not properly flanked by reference-matching sequence bool isUnflankedIndel(const Allele& allele) { if (allele.isReference() || allele.isSNP() || allele.isMNP()) { return false; } else { vector > cigarV = splitCigar(allele.cigar); if (cigarV.back().second == "D" || cigarV.back().second == "I" || cigarV.front().second == "D" || cigarV.front().second == "I") { return true; } else { return false; } } } bool isEmptyAlleleOrIsDividedIndel(const Allele& allele) { return isEmptyAllele(allele) || isDividedIndel(allele); } freebayes-1.3.6/src/Allele.h000066400000000000000000000364201417247743000156420ustar00rootroot00000000000000#ifndef FREEBAYES_ALLELE_H #define FREEBAYES_ALLELE_H #include #include #include #include #include #include #include #include #include #include #include "Utility.h" #include "convert.h" //#ifdef HAVE_BAMTOOLS //#include "api/BamAlignment.h" //using namespace BamTools; //#endif using namespace std; class Allele; // Allele recycling allocator // without we spend 30% of our runtime deleting Allele instances class AlleleFreeList { public: AlleleFreeList() : _p(NULL) , _size(0) , _allocs(0) , _min_size(0) , _max_size(0) , _tick_allocs(1000000) // attempt realloc every million allocs { } ~AlleleFreeList(); void Purge(); void Resize(int new_size); void* NewAllele(); void Recycle(void* mem); private: Allele* _p; int _size; // number of alleles on list int _allocs; // allocation counter int _min_size; // min size within some previous number of calls to new int _max_size; int _tick_allocs; // GC cycle length }; // a structure describing an allele enum AlleleType { ALLELE_GENOTYPE = 1, ALLELE_REFERENCE = 2, ALLELE_MNP = 4, ALLELE_SNP = 8, ALLELE_INSERTION = 16, ALLELE_DELETION = 32, ALLELE_COMPLEX = 64, ALLELE_NULL = 128 }; // used in making allele type filter vectors //const int numberOfPossibleAlleleTypes = 7; enum AlleleStrand { STRAND_FORWARD, STRAND_REVERSE }; typedef long int Position; class Allele { friend class AlleleFreeList; friend string stringForAllele(const Allele &a); friend string stringForAlleles(vector &av); friend bool operator<(const Allele &a, const Allele &b); friend bool operator==(const Allele &a, const Allele &b); friend bool operator!=(const Allele &a, const Allele &b); friend ostream &operator<<(ostream &out, vector &a); friend ostream &operator<<(ostream &out, vector &a); friend ostream &operator<<(ostream &out, list &a); friend ostream &operator<<(ostream &out, Allele &a); friend ostream &operator<<(ostream &out, Allele* &a); friend string tojson(vector &alleles, long int &position); friend string tojson(vector &alleles); friend string tojson(Allele &allele, long int &position); friend string tojson(Allele* &allele); public: AlleleType type; // type of the allele, enumerated above string referenceName; // reference name, for sanity checking string referenceSequence; // reference sequence or "" (in case of insertions) string alternateSequence; // alternate sequence or "" (in case of deletions and reference alleles) string sequencingTechnology; // the technology used to generate this allele long int position; // position 0-based against reference long int* currentReferencePosition; // pointer to the current reference position (which may be updated during the life of this allele) char* currentReferenceBase; // pointer to current reference base unsigned int length; // and event length (deletion implies 0, snp implies 1, insertion >1) unsigned int referenceLength; // length of the event relative to the reference long int repeatRightBoundary; // if this allele is an indel, and if it is embedded in a tandem repeat // TODO cleanup int basesLeft; // these are the "updated" versions of the above int basesRight; AlleleStrand strand; // strand, true = +, false = - string sampleID; // representative sample ID string readGroupID; // read group membership string readID; // id of the read which the allele is drawn from vector baseQualities; long double quality; // base quality score associated with this allele, updated every position in the case of reference alleles long double lnquality; // log version of above string currentBase; // current base, meant to be updated every position short mapQuality; // map quality for the originating read long double lnmapQuality; // map quality for the originating read double readMismatchRate; // per-base mismatch rate for the read double readIndelRate; // only considering gaps double readSNPRate; // only considering snps/mnps bool isProperPair; // if the allele is supported by a properly paired read bool isPaired; // if the allele is supported by a read that is part of a pair bool isMateMapped; // if the mate in the pair is mapped bool genotypeAllele; // if this is an abstract 'genotype' allele bool processed; // flag to mark if we've presented this allele for analysis string cigar; // a cigar representation of the allele vector* alignmentAlleles; long int alignmentStart; long int alignmentEnd; // default constructor, for converting alignments into allele observations Allele(AlleleType t, string& refname, long int pos, long int* crefpos, char* crefbase, unsigned int len, long int rrbound, int bleft, int bright, string alt, string& sampleid, string& readid, string& readgroupid, string& sqtech, bool strnd, long double qual, string qstr, short mapqual, bool ispair, bool ismm, bool isproppair, string cigarstr, vector* ra, long int bas, long int bae) : type(t) , referenceName(refname) , position(pos) , currentReferencePosition(crefpos) , currentReferenceBase(crefbase) , length(len) , repeatRightBoundary(rrbound) , basesLeft(bleft) , basesRight(bright) , currentBase(alt) , alternateSequence(alt) , sampleID(sampleid) , readID(readid) , readGroupID(readgroupid) , sequencingTechnology(sqtech) , strand(strnd ? STRAND_FORWARD : STRAND_REVERSE) , quality((qual == -1) ? averageQuality(qstr) : qual) // passing -1 as quality triggers this calculation , lnquality(phred2ln((qual == -1) ? averageQuality(qstr) : qual)) , mapQuality(mapqual) , lnmapQuality(phred2ln(mapqual)) , isProperPair(isproppair) , isPaired(ispair) , isMateMapped(ismm) , genotypeAllele(false) , processed(false) , readMismatchRate(0) , readIndelRate(0) , readSNPRate(0) , cigar(cigarstr) , alignmentAlleles(ra) , alignmentStart(bas) , alignmentEnd(bae) { baseQualities.resize(qstr.size()); // cache qualities transform(qstr.begin(), qstr.end(), baseQualities.begin(), qualityChar2ShortInt); referenceLength = referenceLengthFromCigar(); } // for constructing genotype alleles Allele(AlleleType t, string alt, unsigned int len, unsigned int reflen, string cigarStr, long int pos=0, long int rrbound=0, bool gallele=true) : type(t) , alternateSequence(alt) , length(len) , referenceLength(reflen) , repeatRightBoundary(rrbound) , quality(0) , lnquality(1) , position(pos) , genotypeAllele(true) , readMismatchRate(0) , readIndelRate(0) , readSNPRate(0) , cigar(cigarStr) , alignmentAlleles(NULL) , processed(false) { currentBase = base(); baseQualities.assign(alternateSequence.size(), 0); referenceLength = referenceLengthFromCigar(); } bool equivalent(Allele &a); // heuristic 'equivalency' between two alleles, which depends on their type string typeStr(void) const; // return a string representation of the allele type, for output bool isReference(void) const; // true if type == ALLELE_REFERENCE bool isSNP(void) const; // true if type == ALLELE_SNP bool isInsertion(void) const; // true if type == ALLELE_INSERTION bool isDeletion(void) const; // true if type == ALLELE_DELETION bool isMNP(void) const; // true if type == ALLELE_MNP bool isComplex(void) const; // true if type == ALLELE_COMPLEX bool isNull(void) const; // true if type == ALLELE_NULL int referenceOffset(void) const; const short currentQuality(void) const; // for getting the quality of a given position in multi-bp alleles const long double lncurrentQuality(void) const; const int subquality(int startpos, int len) const; const long double lnsubquality(int startpos, int len) const; const int subquality(const Allele &a) const; const long double lnsubquality(const Allele &a) const; //const int basesLeft(void) const; // returns the bases left within the read of the current position within the allele //const int basesRight(void) const; // returns the bases right within the read of the current position within the allele bool sameSample(Allele &other); // if the other allele has the same sample as this one void update(int haplotypeLength = 1); // for reference alleles, updates currentBase and quality void setQuality(void); // sets 'current quality' for alleles // TODO update this to reflect different insertions (e.g. IATGC instead of I4) const string base(void) const; // the 'current' base of the allele or a string describing the allele, e.g. I10 or D2 // this is used to update cached data in the allele prior to presenting the allele for analysis // for the current base, just use allele.currentBase string tojson(void); unsigned int getLengthOnReference(void); int referenceLengthFromCigar(void); string readSeq(void); string read5p(void); string read3p(void); string read5pNonNull(void); string read3pNonNull(void); // the number of bases from the 5p edge of the allele until the end or the next null allele int read5pNonNullBases(void); // the number of bases from the 3p edge of the allele until the end or the next null allele int read3pNonNullBases(void); // wish list... //string readRefRelativeSubstr(long int start, long int end); //string readRefStartLenSubstr(long int start, int bp); vector extend(int pos, int haplotypeLength); void squash(void); void subtract(int subtractFromRefStart, int subtractFromRefEnd, string& substart, string& subend, vector >& cigarstart, vector >& cigarend, vector& qsubstart, vector& qsubend); void add(string& addToStart, string& addToEnd, vector >& cigarStart, vector >& cigarEnd, vector& qaddToStart, vector& qaddToEnd); void subtractFromStart(int bp, string& seq, vector >& cig, vector& quals); void subtractFromEnd(int bp, string& seq, vector >& cig, vector& quals); void addToStart(string& seq, vector >& cig, vector& quals); void addToEnd(string& seq, vector >& cig, vector& quals); void mergeAllele(const Allele& allele, AlleleType newType); void updateTypeAndLengthFromCigar(void); int bpLeft(void); // how many bases are in the read to the left of the allele int bpRight(void); // how many bases are in the read to the left of the allele }; // for sorting pairs of alleles and ints class AllelePairIntCompare { public: bool operator()(const pair& a, const pair& b) { return a.second > b.second; } }; class AllelePositionCompare { public: bool operator()(const Allele& a, const Allele& b) { return a.position < b.position; } }; void updateAllelesCachedData(vector& alleles); map > groupAllelesBySample(list& alleles); void groupAllelesBySample(list& alleles, map >& groups); int allowedAlleleTypes(vector& allowedEnumeratedTypes); void filterAlleles(list& alleles, int allowedTypes); int countAlleles(map >& sampleGroups); int baseCount(vector& alleles, string base, AlleleStrand strand); pair, pair > baseCount(vector& alleles, string refbase, string altbase); int countAllelesWithBase(vector& alleles, string base); bool areHomozygous(vector& alleles); map countAlleles(vector& alleles); map countAllelesString(vector& alleles); map countAllelesString(vector& alleles); map countAlleles(vector& alleles); map countAlleles(list& alleles); vector uniqueAlleles(list& alleles); bool allelesSameType(Allele* &a, Allele* &b); bool allelesEquivalent(Allele* &a, Allele* &b); bool allelesSameSample(Allele* &a, Allele* &b); bool allelesSameType(Allele &a, Allele &b); bool allelesEquivalent(Allele &a, Allele &b); bool allelesSameSample(Allele &a, Allele &b); bool allelesEqual(Allele &a, Allele &b); void groupAlleles(map >& sampleGroups, map >& alleleGroups); void homogenizeAlleles(map >& alleleGroups, string& refseq, Allele& refallele); void resetProcessedFlag(map >& alleleGroups); vector alleleUnion(vector& a1, vector& a2); // XXX cleanup // is there a way to template these? difficult as the syntax for pointer-based comparisons is different than non-pointer vector > groupAlleles(list &alleles, bool (*fncompare)(Allele* &a, Allele* &b)); vector > groupAlleles(list &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles(map > &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles_copy(vector &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles_copy(list &alleles, bool (*fncompare)(Allele &a, Allele &b)); vector > groupAlleles_copy(vector &alleles); vector genotypeAllelesFromAlleleGroups(vector > &groups); vector genotypeAllelesFromAlleleGroups(vector > &groups); vector genotypeAllelesFromAlleles(vector &alleles); vector genotypeAllelesFromAlleles(vector &alleles); Allele genotypeAllele(Allele& a); Allele genotypeAllele(AlleleType type, string alt = "", unsigned int length = 0, string cigar = "", unsigned int reflen = 0, long int position = 0, long int rrbound = 0); bool isEmptyAllele(const Allele& allele); bool isDividedIndel(const Allele& allele); bool isEmptyAlleleOrIsDividedIndel(const Allele& allele); bool isUnflankedIndel(const Allele& allele); int referenceLengthFromCigar(string& cigar); //AlleleFreeList Allele::_freeList; #endif freebayes-1.3.6/src/AlleleParser.cpp000066400000000000000000006000061417247743000173470ustar00rootroot00000000000000#include "AlleleParser.h" #include "multichoose.h" // includes generic functions, so it must be included here // otherwise we will get a linker error // see: http://stackoverflow.com/questions/36039/templates-spread-across-multiple-files // http://www.cplusplus.com/doc/tutorial/templates/ "Templates and Multi-file projects" #include "multipermute.h" #include "Logging.h" using namespace std; namespace { // anonymous namespace // Convert a std::string into an integer, ignoring any commas. int stringToInt(string str) { str.erase(remove(str.begin(), str.end(), ','), str.end()); return atoi(str.c_str()); } } // anonymous namespace // open BAM input file void AlleleParser::openBams(void) { // report differently if we have one or many bam files if (parameters.bams.size() == 1) { DEBUG("Opening BAM format alignment input file: " << parameters.bams.front() << " ..."); } else if (parameters.bams.size() > 1) { DEBUG("Opening " << parameters.bams.size() << " BAM format alignment input files"); for (vector::const_iterator b = parameters.bams.begin(); b != parameters.bams.end(); ++b) { DEBUG2(*b); } } #ifdef HAVE_BAMTOOLS if (parameters.useStdin) { if (!bamMultiReader.Open(parameters.bams)) { ERROR("Could not read BAM data from stdin"); cerr << bamMultiReader.GetErrorString() << endl; exit(1); } } else { if (!bamMultiReader.Open(parameters.bams)) { ERROR("Could not open input BAM files"); cerr << bamMultiReader.GetErrorString() << endl; exit(1); } else { if (!bamMultiReader.LocateIndexes()) { ERROR("Opened BAM reader without index file, jumping is disabled."); cerr << bamMultiReader.GetErrorString() << endl; if (!targets.empty()) { ERROR("Targets specified but no BAM index file provided."); ERROR("FreeBayes cannot jump through targets in BAM files without BAM index files, exiting."); ERROR("Please generate a BAM index file eithe, e.g.:"); ERROR(" \% bamtools index -in "); ERROR(" \% samtools index "); exit(1); } } } if (!bamMultiReader.SetExplicitMergeOrder(bamMultiReader.MergeByCoordinate)) { ERROR("could not set sort order to coordinate"); cerr << bamMultiReader.GetErrorString() << endl; exit(1); } } #else if (parameters.useStdin) { if (!bamMultiReader.Open("-")) { ERROR("Could not read BAM data from stdin"); exit(1); } } else { for (std::vector::const_iterator i = parameters.bams.begin(); i != parameters.bams.end(); ++i){ string b = *i; // set reference to supplied fasta if the alignment file ends with cram if(b.substr(b.size()-4).compare("cram") == 0){ DEBUG("Setting cram reference for bam reader") bamMultiReader.SetCramReference(parameters.fasta); }else{ // reset the reference if this alignment file is no cram DEBUG("Unsetting cram reference for bam reader") bamMultiReader.SetCramReference(""); } if (!bamMultiReader.Open(*i)) { ERROR("Could not open input BAM file: " + *i); exit(1); }else { /*if (!bamMultiReader.LocateIndexes()) { ERROR("Opened BAM reader without index file, jumping is disabled."); cerr << bamMultiReader.GetErrorString() << endl; if (!targets.empty()) { ERROR("Targets specified but no BAM index file provided."); ERROR("FreeBayes cannot jump through targets in BAM files without BAM index files, exiting."); ERROR("Please generate a BAM index file eithe, e.g.:"); ERROR(" \% bamtools index -in "); ERROR(" \% samtools index "); exit(1); } }*/ } } /*if (!bamMultiReader.SetExplicitMergeOrder(bamMultiReader.MergeByCoordinate)) { ERROR("could not set sort order to coordinate"); cerr << bamMultiReader.GetErrorString() << endl; exit(1); }*/ } #endif // from PR 319 below #ifdef HAVE_BAMTOOLS if (!parameters.useStdin) { BamReader reader; for (vector::const_iterator b = parameters.bams.begin(); b != parameters.bams.end(); ++b) { reader.Open(*b); string bamHeader = reader.GetHeaderText(); vector headerLines = split(bamHeader, '\n'); bamHeaderLines.insert(bamHeaderLines.end(), headerLines.begin(), headerLines.end()); reader.Close(); } } else { bamHeaderLines = split(bamMultiReader.GetHeaderText(), '\n'); } #else // retrieve header information string bamHeader = bamMultiReader.GETHEADERTEXT; bamHeaderLines = split(bamHeader, '\n'); #endif DEBUG(" done"); } void AlleleParser::openOutputFile(void) { if (parameters.outputFile != "") { outputFile.open(parameters.outputFile.c_str(), ios::out); DEBUG("Opening output file: " << parameters.outputFile << " ..."); if (!outputFile) { ERROR(" unable to open output file: " << parameters.outputFile); exit(1); } output = &outputFile; } else { output = &cout; } } void AlleleParser::getSequencingTechnologies(void) { map technologies; for (vector::const_iterator it = bamHeaderLines.begin(); it != bamHeaderLines.end(); ++it) { // get next line from header, skip if empty string headerLine = *it; if ( headerLine.empty() ) { continue; } // lines of the header look like: // "@RG ID:- SM:NA11832 CN:BCM PL:454" // ^^^^^^^\ is our sample name if ( headerLine.find("@RG") == 0 ) { vector readGroupParts = split(headerLine, "\t "); string tech; string readGroupID; for (vector::const_iterator r = readGroupParts.begin(); r != readGroupParts.end(); ++r) { size_t colpos = r->find(":"); if (colpos != string::npos) { string fieldname = r->substr(0, colpos); if (fieldname == "PL") { tech = r->substr(colpos+1); } else if (fieldname == "ID") { readGroupID = r->substr(colpos+1); } } } if (tech.empty()) { if (!sequencingTechnologies.empty()) { cerr << "no sequencing technology specified in @RG tag (no PL: in @RG tag) " << endl << headerLine << endl; } } else { map::iterator s = readGroupToTechnology.find(readGroupID); if (s != readGroupToTechnology.end()) { if (s->second != tech) { ERROR("multiple technologies (PL) map to the same read group (RG)" << endl << endl << "technologies " << tech << " and " << s->second << " map to " << readGroupID << endl << endl << "As freebayes operates on a virtually merged stream of its input files," << endl << "it will not be possible to determine what technology an alignment belongs to" << endl << "at runtime." << endl << endl << "To resolve the issue, ensure that RG ids are unique to one technology" << endl << "across all the input files to freebayes." << endl << endl << "See bamaddrg (https://github.com/ekg/bamaddrg) for a method which can" << endl << "add RG tags to alignments." << endl); exit(1); } // if it's the same technology and RG combo, no worries } readGroupToTechnology[readGroupID] = tech; technologies[tech] = true; } if (readGroupID.empty()) { cerr << "could not find ID: in @RG tag " << endl << headerLine << endl; continue; } //string name = nameParts.back(); //mergedHeader.append(1, '\n'); //cerr << "found read group id " << readGroupID << " containing sample " << name << endl; } } for (map::iterator st = technologies.begin(); st != technologies.end(); ++st) { sequencingTechnologies.push_back(st->first); } } void AlleleParser::getPopulations(void) { map allSamplePopulation; if (!parameters.populationsFile.empty()) { ifstream populationsFile(parameters.populationsFile.c_str(), ios::in); if (!populationsFile) { cerr << "unable to open population file: " << parameters.populationsFile << endl; exit(1); } string line; while (getline(populationsFile, line)) { DEBUG2("found sample-population mapping: " << line); vector popsample = split(line, "\t "); if (popsample.size() == 2) { string& sample = popsample.front(); string& population = popsample.back(); DEBUG2("sample: " << sample << " population: " << population); allSamplePopulation[sample] = population; } else { cerr << "malformed population/sample pair, " << line << endl; exit(1); } } } // XXX // TODO now, assign a default population to all the rest of the samples... // XXX for (vector::iterator s = sampleList.begin(); s != sampleList.end(); ++s) { if (!allSamplePopulation.count(*s)) { samplePopulation[*s] = "DEFAULT"; } else { samplePopulation[*s] = allSamplePopulation[*s]; } } // now, only keep the samples we are using for processing for (map::iterator s = samplePopulation.begin(); s != samplePopulation.end(); ++s) { populationSamples[s->second].push_back(s->first); } } // read sample list file or get sample names from bam file header void AlleleParser::getSampleNames(void) { // If a sample file is given, use it. But otherwise process the bam file // header to get the sample names. // if (!parameters.samples.empty()) { ifstream sampleFile(parameters.samples.c_str(), ios::in); if (! sampleFile) { cerr << "unable to open file: " << parameters.samples << endl; exit(1); } string line; while (getline(sampleFile, line)) { DEBUG2("found sample " << line); sampleList.push_back(line); } } for (vector::const_iterator it = bamHeaderLines.begin(); it != bamHeaderLines.end(); ++it) { // get next line from header, skip if empty string headerLine = *it; if ( headerLine.empty() ) { continue; } // lines of the header look like: // "@RG ID:- SM:NA11832 CN:BCM PL:454" // ^^^^^^^\ is our sample name if ( headerLine.find("@RG") == 0 ) { vector readGroupParts = split(headerLine, "\t "); string name = ""; string readGroupID = ""; for (vector::const_iterator r = readGroupParts.begin(); r != readGroupParts.end(); ++r) { size_t colpos = r->find(":"); if (colpos != string::npos) { string fieldname = r->substr(0, colpos); if (fieldname == "SM") { name = r->substr(colpos+1); } else if (fieldname == "ID") { readGroupID = r->substr(colpos+1); } } } if (name == "") { ERROR(" could not find SM: in @RG tag " << endl << headerLine); exit(1); } if (readGroupID == "") { ERROR(" could not find ID: in @RG tag " << endl << headerLine); exit(1); } //string name = nameParts.back(); //mergedHeader.append(1, '\n'); DEBUG2("found read group id " << readGroupID << " containing sample " << name); sampleListFromBam.push_back(name); map::iterator s = readGroupToSampleNames.find(readGroupID); if (s != readGroupToSampleNames.end()) { if (s->second != name) { ERROR("multiple samples (SM) map to the same read group (RG)" << endl << endl << "samples " << name << " and " << s->second << " map to " << readGroupID << endl << endl << "As freebayes operates on a virtually merged stream of its input files," << endl << "it will not be possible to determine what sample an alignment belongs to" << endl << "at runtime." << endl << endl << "To resolve the issue, ensure that RG ids are unique to one sample" << endl << "across all the input files to freebayes." << endl << endl << "See bamaddrg (https://github.com/ekg/bamaddrg) for a method which can" << endl << "add RG tags to alignments." << endl); exit(1); } // if it's the same sample name and RG combo, no worries } readGroupToSampleNames[readGroupID] = name; } } //cout << sampleListFromBam.size() << endl; // no samples file given, read from BAM file header for sample names if (sampleList.empty()) { DEBUG("no sample list file given, reading sample names from bam file"); for (vector::const_iterator s = sampleListFromBam.begin(); s != sampleListFromBam.end(); ++s) { DEBUG2("found sample " << *s); if (!stringInVector(*s, sampleList)) { sampleList.push_back(*s); } } DEBUG("found " << sampleList.size() << " samples in BAM file"); } else { // verify that the samples in the sample list are present in the bam, // and raise an error and exit if not for (vector::const_iterator s = sampleList.begin(); s != sampleList.end(); ++s) { bool inBam = false; bool inReadGroup = false; //cout << "checking sample from sample file " << *s << endl; for (vector::const_iterator b = sampleListFromBam.begin(); b != sampleListFromBam.end(); ++b) { //cout << *s << " against " << *b << endl; if (*s == *b) { inBam = true; break; } } for (map::const_iterator p = readGroupToSampleNames.begin(); p != readGroupToSampleNames.end(); ++p) { if (*s == p->second) { inReadGroup = true; break; } } if (!inBam) { ERROR("sample " << *s << " listed in sample file " << parameters.samples.c_str() << " is not listed in the header of BAM file(s) " << parameters.bam); exit(1); } if (!inReadGroup) { ERROR("sample " << *s << " listed in sample file " << parameters.samples.c_str() << " is not associated with any read group in the header of BAM file(s) " << parameters.bam); exit(1); } } } if (sampleList.empty()) { /* ERROR(string(80, '-') << endl //-------------------------------------------------------------------------------- << "Warning: No sample file given, and no @RG tags found in BAM header." << endl << "All alignments from all input files will be assumed to come from the same" << endl << "individual. To group alignments by sample, you must add read groups and sample" << endl << "names to your alignments. You can do this using ./scripts/sam_add_rg.pl in the" << endl << "freebayes source tree, or by specifying read groups and sample names when you" << endl << "prepare your sequencing data for alignment." << endl << string(80, '-')); */ sampleList.push_back("unknown"); readGroupToSampleNames["unknown"] = "unknown"; oneSampleAnalysis = true; } } string AlleleParser::vcfHeader() { stringstream headerss; headerss << "##fileformat=VCFv4.2" << endl << "##fileDate=" << dateStr() << endl << "##source=freeBayes " << VERSION_GIT << endl << "##reference=" << reference.filename << endl; for (REFVEC::const_iterator it = referenceSequences.begin(); it != referenceSequences.end(); ++it) headerss << "##contig=REFNAME << ",length=" << it->REFLEN << ">" << endl; headerss << "##phasing=none" << endl << "##commandline=\"" << parameters.commandline << "\"" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl // allele frequency metrics << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl // observation counts << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl // qualities << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl // binomial balance metrics << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl // error rates /* << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl */ // error rate ratios //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl // supplementary information about the site << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl //<< "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl << "##INFO=" << endl; // sequencing technology tags, which vary according to input data for (vector::iterator st = sequencingTechnologies.begin(); st != sequencingTechnologies.end(); ++st) { string& tech = *st; headerss << "##INFO=" << endl; } if (parameters.showReferenceRepeats) { headerss << "##INFO=" << endl; } string gqType = "Float"; if (parameters.strictVCF) gqType = "Integer"; string Qtype = "Integer"; if(parameters.gVCFout && !parameters.strictVCF) Qtype = "Float"; // format fields for genotypes headerss << "##FORMAT=" << endl << "##FORMAT=" << endl // this can be regenerated with RA, AA, QR, QA << "##FORMAT=" << endl //<< "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl << "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl //<< "##FORMAT=" << endl << "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\t" << join(sampleList, "\t") << endl; return headerss.str(); } void AlleleParser::setupVCFOutput(void) { string vcfheader = vcfHeader(); variantCallFile.openForOutput(vcfheader); } void AlleleParser::setupVCFInput(void) { // variant input for analysis and targeting if (!parameters.variantPriorsFile.empty()) { variantCallInputFile.open(parameters.variantPriorsFile); currentVariant = new vcflib::Variant(variantCallInputFile); usingVariantInputAlleles = true; // get sample names from VCF input file // // NB, adding this stanza will change the way that the VCF output // describes alternates, present observations, etc. so that the samples // in the VCF input are also included. the result is confusing output, // but it could be useful in some situations. // // TODO optionally include this (via command-line parameter) // //for (vector::iterator s = variantCallInputFile.sampleNames.begin(); s != variantCallInputFile.sampleNames.end(); ++s) { // sampleList.push_back(*s); //} } // haplotype alleles for constructing haplotype alleles if (!parameters.haplotypeVariantFile.empty()) { haplotypeVariantInputFile.open(parameters.haplotypeVariantFile); usingHaplotypeBasisAlleles = true; } } void AlleleParser::loadBamReferenceSequenceNames(void) { //-------------------------------------------------------------------------- // read reference sequences from input file //-------------------------------------------------------------------------- // store the names of all the reference sequences in the BAM file referenceSequences = bamMultiReader.GETREFDATA; int i = 0; for (REFVEC::iterator r = referenceSequences.begin(); r != referenceSequences.end(); ++r) { referenceIDToName[i] = r->REFNAME; ++i; } DEBUG("Number of ref seqs: " << bamMultiReader.GETREFNUM); } void AlleleParser::loadFastaReference(void) { DEBUG("loading fasta reference " << parameters.fasta); // This call loads the reference and reads any index file it can find. If // it can't find an index file for the reference, it will attempt to // generate one alongside it. Note that this only loads the reference. // Sequence data is obtained by progressive calls to // reference.getSubSequence(..), thus keeping our memory requirements low. reference.open(parameters.fasta); } bool AlleleParser::hasMoreInputVariants(void) { pair next = nextInputVariantPosition(); return next.first != -1; } bool AlleleParser::loadNextPositionWithAlignmentOrInputVariant(BAMALIGN& alignment) { pair next = nextInputVariantPosition(); if (next.first != -1) { int varRefID = next.first; if (!hasMoreAlignments || varRefID < alignment.REFID || (varRefID == alignment.REFID && next.second < alignment.POSITION)) { return loadNextPositionWithInputVariant(); } else { loadReferenceSequence(alignment); } } else { loadReferenceSequence(alignment); } return true; } bool AlleleParser::loadNextPositionWithInputVariant(void) { pair next = nextInputVariantPosition(); if (next.first != -1) { //cerr << "Next is " << next.first << ":" << next.second << endl; loadReferenceSequence(referenceIDToName[next.first]); currentPosition = next.second; rightmostHaplotypeBasisAllelePosition = currentPosition; return true; } else { return false; } } // alignment-based method for loading the first bit of our reference sequence void AlleleParser::loadReferenceSequence(BAMALIGN& alignment) { loadReferenceSequence(referenceIDToName[alignment.REFID]); currentPosition = alignment.POSITION; } void AlleleParser::loadReferenceSequence(string& seqname) { if (currentSequenceName != seqname) { currentSequenceName = seqname; currentSequenceStart = 0; currentRefID = bamMultiReader.GETREFID(currentSequenceName); currentSequence = uppercase(reference.getRawSequence(currentSequenceName)); // check the first few characters and verify they are not garbage string validBases = "ACGTURYKMSWBDHVN-"; size_t found = currentSequence.substr(0, 100).find_first_not_of(validBases); if (found != string::npos) { ERROR("Found non-DNA character " << currentSequence.at(found) << " at position " << found << " in " << seqname << endl << "Is your reference compressed or corrupted? " << "freebayes requires an uncompressed reference sequence."); exit(1); } currentSequence = reference.getSequence(currentSequenceName); } } void AlleleParser::loadTargets(void) { // if we have a targets file, use it... // if target file specified use targets from file if (!parameters.targets.empty()) { DEBUG("Making BedReader object for target file: " << parameters.targets << " ..."); bedReader.openFile(parameters.targets); if (!bedReader.is_open()) { ERROR("Unable to open target file: " << parameters.targets << "... terminating."); exit(1); } targets = bedReader.targets; if (targets.empty()) { ERROR("Could not load any targets from " << parameters.targets); exit(1); } bedReader.close(); DEBUG("done"); } // if we have a region specified, use it to generate a target for (vector::iterator r = parameters.regions.begin(); r != parameters.regions.end(); ++r) { // drawn from bamtools_utilities.cpp, modified to suit 1-based context, no end sequence string region = *r; string startSeq; int startPos; int stopPos; size_t foundLastColon = region.rfind(":"); // we only have a single string, use the whole sequence as the target if (foundLastColon == string::npos) { startSeq = region; startPos = 0; stopPos = -1; } else { startSeq = region.substr(0, foundLastColon); string sep = ".."; size_t foundRangeSep = region.find(sep, foundLastColon); if (foundRangeSep == string::npos) { sep = "-"; foundRangeSep = region.find(sep, foundLastColon); } if (foundRangeSep == string::npos) { startPos = stringToInt(region.substr(foundLastColon + 1)); // differ from bamtools in this regard, in that we process only // the specified position if a range isn't given stopPos = startPos + 1; } else { startPos = stringToInt(region.substr(foundLastColon + 1, foundRangeSep - foundLastColon).c_str()); // if we have range sep specified, but no second number, read to the end of sequence if (foundRangeSep + sep.size() != region.size()) { stopPos = stringToInt(region.substr(foundRangeSep + sep.size()).c_str()); // end-exclusive, bed-format } else { stopPos = -1; } } } //DEBUG("startPos == " << startPos); //DEBUG("stopPos == " << stopPos); // REAL BED format is 0 based, half open (end base not included) BedTarget bd(startSeq, (startPos == 0) ? 0 : startPos, ((stopPos == -1) ? reference.sequenceLength(startSeq) : stopPos) - 1); // internally, we use 0-base inclusive end DEBUG("will process reference sequence " << startSeq << ":" << bd.left << ".." << bd.right + 1); targets.push_back(bd); bedReader.targets.push_back(bd); } // check validity of targets wrt. reference for (vector::iterator e = targets.begin(); e != targets.end(); ++e) { BedTarget& bd = *e; // internally, we use 0-base inclusive end if (bd.left < 0 || bd.right + 1 > reference.sequenceLength(bd.seq)) { ERROR("Target region coordinates (" << bd.seq << " " << bd.left << " " << bd.right + 1 << ") outside of reference sequence bounds (" << bd.seq << " " << reference.sequenceLength(bd.seq) << ") terminating."); exit(1); } if (bd.right < bd.left) { ERROR("Invalid target region coordinates (" << bd.seq << " " << bd.left << " " << bd.right + 1 << ")" << " right bound is lower than left bound!"); exit(1); } } bedReader.buildIntervals(); // set up interval tree in the bedreader DEBUG("Number of target regions: " << targets.size()); } void AlleleParser::loadTargetsFromBams(void) { // otherwise, if we weren't given a region string or targets file, analyze // all reference sequences from BAM file DEBUG2("no targets specified, using all targets from BAM files"); REFVEC::iterator refIter = referenceSequences.begin(); REFVEC::iterator refEnd = referenceSequences.end(); for( ; refIter != refEnd; ++refIter) { REFDATA refData = *refIter; string refName = refData.REFNAME; BedTarget bd(refName, 0, refData.REFLEN); // 0-based inclusive internally DEBUG2("will process reference sequence " << refName << ":" << bd.left << ".." << bd.right + 1); targets.push_back(bd); } } void AlleleParser::loadSampleCNVMap(void) { // set default ploidy sampleCNV.setDefaultPloidy(parameters.ploidy); // load CNV map if provided if (!parameters.cnvFile.empty()) { if (!sampleCNV.load(parameters.cnvFile)) { ERROR("could not load sample map " << parameters.cnvFile << " ... exiting!"); exit(1); } } // to assert that the reference is haploid, we can iterate through the BAM // header to get the reference names and sizes, and then setPloidy on them // in the sampleCNV map. note that the reference "sample" is named after // the current reference sequence. if (!parameters.diploidReference) { for (REFVEC::iterator r = referenceSequences.begin(); r != referenceSequences.end(); ++r) { sampleCNV.setPloidy(referenceSampleName, r->REFNAME, 0, r->REFLEN, 1); } } } int AlleleParser::currentSamplePloidy(string const& sample) { return sampleCNV.ploidy(sample, currentSequenceName, currentPosition); } int AlleleParser::copiesOfLocus(Samples& samples) { int copies = 0; for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { string const& name = s->first; copies += currentSamplePloidy(name); } return copies; } vector AlleleParser::currentPloidies(Samples& samples) { map ploidiesMap; vector ploidies; for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { string const& name = s->first; int samplePloidy = currentSamplePloidy(name); ploidiesMap[samplePloidy] = true; } ploidiesMap[parameters.ploidy] = true; for (map::iterator p = ploidiesMap.begin(); p != ploidiesMap.end(); ++p) { ploidies.push_back(p->first); } return ploidies; } // meant to be used when we are reading from stdin, to check if we are within targets bool AlleleParser::inTarget(void) { if (targets.empty()) { return true; // everything is in target if we don't have targets } else { // expects 0-based, fully-closed, and we're only checking a single // base, so start == end. if (bedReader.targetsOverlap(currentSequenceName, currentPosition, currentPosition)) { return true; } else { return false; } } } // initialization function // sets up environment so we can start registering alleles AlleleParser::AlleleParser(int argc, char** argv) : parameters(Parameters(argc,argv)) { oneSampleAnalysis = false; currentRefID = 0; // will get set properly via toNextRefID currentPosition = 0; currentTarget = NULL; // to be initialized on first call to getNextAlleles currentReferenceAllele = NULL; // same, NULL is brazenly used as an initialization flag justSwitchedTargets = false; // flag to trigger cleanup of Allele*'s and objects after jumping targets hasMoreAlignments = true; // flag to track when we run out of alignments in the current target or BAM files currentSequenceStart = 0; lastHaplotypeLength = 0; usingHaplotypeBasisAlleles = false; usingVariantInputAlleles = false; rightmostHaplotypeBasisAllelePosition = 0; rightmostInputAllelePosition = 0; nullSample = new Sample(); referenceSampleName = "reference_sample"; // initialization openOutputFile(); loadFastaReference(); // when we open the bam files we can use the number of targets to decide if // we should load the indexes openBams(); loadBamReferenceSequenceNames(); // check how many targets we have specified loadTargets(); getSampleNames(); getPopulations(); getSequencingTechnologies(); // sample CNV loadSampleCNVMap(); // output setupVCFOutput(); // input // (now that the VCF file is set up with the samples which are in the input alignments // add the samples from the input VCF to the mix) setupVCFInput(); } AlleleParser::~AlleleParser(void) { delete nullSample; // close trace file? seems to get closed properly on object deletion... if (currentReferenceAllele) delete currentReferenceAllele; if (variantCallInputFile.is_open()) delete currentVariant; } // position of alignment relative to current sequence int AlleleParser::currentSequencePosition(const BAMALIGN& alignment) { return alignment.POSITION - currentSequenceStart; } // relative current position within the cached currentSequence int AlleleParser::currentSequencePosition() { return currentPosition - currentSequenceStart; } char AlleleParser::currentReferenceBaseChar(void) { return toupper(*currentReferenceBaseIterator()); } string AlleleParser::currentReferenceBaseString(void) { return currentSequence.substr(floor(currentPosition) - currentSequenceStart, 1); } string::iterator AlleleParser::currentReferenceBaseIterator(void) { return currentSequence.begin() + (floor(currentPosition) - currentSequenceStart); } string AlleleParser::currentReferenceHaplotype(void) { return currentSequence.substr(floor(currentPosition) - currentSequenceStart, lastHaplotypeLength); } string AlleleParser::referenceSubstr(long int pos, unsigned int len) { return uppercase(reference.getSubSequence(currentSequenceName, floor(pos), len)); } bool AlleleParser::isCpG(string& altbase) { // bounds check if (floor(currentPosition) - currentSequenceStart - 1 < 0 || floor(currentPosition) - currentSequenceStart + 1 >= currentSequence.size()) { return false; } string prevb = currentSequence.substr(floor(currentPosition) - currentSequenceStart - 1, 1); string currb = currentSequence.substr(floor(currentPosition) - currentSequenceStart, 1); string nextb = currentSequence.substr(floor(currentPosition) - currentSequenceStart + 1, 1); // 5'-3' CpG <-> TpG is represented as CpG <-> CpA in on the opposite strand if ((nextb == "G" && ((currb == "C" && altbase == "T") || (currb == "T" && altbase == "C"))) || (prevb == "C" && ((currb == "G" && altbase == "A") || (currb == "A" && altbase == "G")))) { return true; } else { return false; } } void capBaseQuality(BAMALIGN& alignment, int baseQualityCap) { string rQual = alignment.QUALITIES; char qualcap = qualityInt2Char(baseQualityCap); for (string::iterator c = rQual.begin(); c != rQual.end(); ++c) { if (qualityChar2ShortInt(*c) > baseQualityCap) { *c = qualcap; } } } void RegisteredAlignment::addAllele(Allele newAllele, bool mergeComplex, int maxComplexGap, bool boundIndels) { if (newAllele.alternateSequence.size() != newAllele.baseQualities.size()) { cerr << "new allele qualities not == in length to sequence: " << newAllele << endl; assert(false); } //cerr << "adding allele " << newAllele << " to " << alleles.size() << " alleles" << endl; alleleTypes |= newAllele.type; alleles.push_back(newAllele); } void RegisteredAlignment::clumpAlleles(bool mergeComplex, int maxComplexGap, bool boundIndels) { // remove any empty alleles, and skip if we go totally empty alleles.erase(remove_if(alleles.begin(), alleles.end(), isEmptyAllele), alleles.end()); if (!alleles.size()) return; vector toMerge(alleles.size()); if (maxComplexGap >= 0) { for (int i = 1; i < alleles.size()-1; ++i) { const Allele& lastAllele = alleles[i-1]; const Allele& currAllele = alleles[i]; const Allele& nextAllele = alleles[i+1]; if (lastAllele.isNull() || currAllele.isNull() || nextAllele.isNull()) continue; if (!lastAllele.isReference() && !nextAllele.isReference() && ((currAllele.isReference() && currAllele.referenceLength <= maxComplexGap) || !currAllele.isReference())) { toMerge[i-1] = true; toMerge[i] = true; toMerge[i+1] = true; } else if (!lastAllele.isReference() && !currAllele.isReference() && !nextAllele.isReference()) { toMerge[i-1] = true; toMerge[i] = true; toMerge[i+1] = true; } else if (!lastAllele.isReference() && !currAllele.isReference()) { toMerge[i-1] = true; toMerge[i] = true; } else if (!nextAllele.isReference() && !currAllele.isReference()) { toMerge[i] = true; toMerge[i+1] = true; } } } // find clumps by combining all reference alleles <= maxComplexGap bases with their neighbors vector newAlleles; for (int i = 0; i < toMerge.size(); ++i) { bool merge = toMerge[i]; if (merge) { Allele merged = alleles[i]; while (++i < toMerge.size() && toMerge[i]) { merged.mergeAllele(alleles[i], ALLELE_COMPLEX); } newAlleles.push_back(merged); if (i < toMerge.size() && !toMerge[i]) { // we broke on this allele newAlleles.push_back(alleles[i]); } } else { newAlleles.push_back(alleles[i]); } } alleles = newAlleles; newAlleles.clear(); alleles.erase(remove_if(alleles.begin(), alleles.end(), isEmptyAllele), alleles.end()); // maintain flanking bases for (int i = 1; i < alleles.size()-1; ++i) { Allele& lastAllele = alleles[i-1]; Allele& currAllele = alleles[i]; Allele& nextAllele = alleles[i+1]; if (!lastAllele.length || !currAllele.length || !nextAllele.length) continue; vector > lastCigar = splitCigar(lastAllele.cigar); vector > currCigar = splitCigar(currAllele.cigar); vector > nextCigar = splitCigar(nextAllele.cigar); string currFirstOp = currCigar.front().second; string currLastOp = currCigar.back().second; string lastLastOp = lastCigar.back().second; string nextFirstOp = nextCigar.front().second; if ((currFirstOp == "I" || currFirstOp == "D") && (lastLastOp == "M" || lastLastOp == "X")) { // split from the last onto curr string seq; vector > cig; vector quals; lastAllele.subtractFromEnd(1, seq, cig, quals); currAllele.addToStart(seq, cig, quals); } if ((currLastOp == "I" || currLastOp == "D") && (nextFirstOp == "M" || nextFirstOp == "X")) { string seq; vector > cig; vector quals; nextAllele.subtractFromStart(1, seq, cig, quals); currAllele.addToEnd(seq, cig, quals); // split from the next onto curr if (nextAllele.length == 0) i+=3;// skip past this allele if we've axed it } } // now we want to remove any null alleles, etc. // also indels at the start and end of reads alleles.erase(remove_if(alleles.begin(), alleles.end(), isEmptyAllele), alleles.end()); //cerr << "merged to alleles " << alleles << endl; } // TODO erase alleles which are beyond N bp before the current position on position step void AlleleParser::updateHaplotypeBasisAlleles(long int pos, int referenceLength) { if (pos + referenceLength > rightmostHaplotypeBasisAllelePosition) { stringstream r; //r << currentSequenceName << ":" << rightmostHaplotypeBasisAllelePosition << "-" << pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW; //cerr << "getting variants in " << r.str() << endl; // tabix expects 1-based, fully closed regions for ti_parse_region() // (which is what setRegion() calls eventually) if (haplotypeVariantInputFile.setRegion(currentSequenceName, rightmostHaplotypeBasisAllelePosition + 1, pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW + 1)) { //cerr << "the vcf line " << haplotypeVariantInputFile.line << endl; // get the variants in the target region vcflib::Variant var(haplotypeVariantInputFile); while (haplotypeVariantInputFile.getNextVariant(var)) { //cerr << "input variant: " << var << endl; // the following stanza is for parsed // alternates. instead use whole haplotype calls, as // alternates can be parsed prior to providing the // file as input. /* for (vector::iterator a = var.alt.begin(); a != var.alt.end(); ++a) { haplotypeBasisAlleles[var.position].insert(AllelicPrimitive(var.ref.size(), *a)); } */ map > variants = var.parsedAlternates(); for (map >::iterator a = variants.begin(); a != variants.end(); ++a) { for (vector::iterator v = a->second.begin(); v != a->second.end(); ++v) { //cerr << v->ref << "/" << v->alt << endl; if (v->ref != v->alt) { //cerr << "basis allele " << v->position << " " << v->ref << "/" << v->alt << endl; haplotypeBasisAlleles[v->position].push_back(AllelicPrimitive(v->ref, v->alt)); //cerr << "number of alleles at position " << haplotypeBasisAlleles[v->position].size() << endl; } } } } } else { // indicates empty region //ERROR("Could not set haplotype-basis VCF file to target region"); //exit(1); } // set the rightmost haplotype position to trigger the next update rightmostHaplotypeBasisAllelePosition = pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW; } } bool AlleleParser::allowedHaplotypeBasisAllele(long int pos, string& ref, string& alt) { // check the haplotypeBasisAllele map for membership of the allele in question in the current sequence //cerr << "is allowed: " << pos << " " << ref << "/" << alt << " ?" << endl; if (!usingHaplotypeBasisAlleles) { return true; // always true if we aren't using the haplotype basis allele system } else { map >::iterator p = haplotypeBasisAlleles.find(pos); if (p != haplotypeBasisAlleles.end()) { vector& alleles = p->second; for (vector::iterator z = alleles.begin(); z != alleles.end(); ++z) { //cerr << "overlapping allele " << z->ref << ":" << z->alt << endl; if (z->ref == ref && z->alt == alt) { //cerr << "yess" << endl; return true; } } } return false; } } Allele AlleleParser::makeAllele(RegisteredAlignment& ra, AlleleType type, long int pos, int length, int basesLeft, int basesRight, string& readSequence, string& sampleName, BAMALIGN& alignment, string& sequencingTech, long double qual, string& qualstr ) { string cigar; int reflen = length; if (type == ALLELE_REFERENCE) { cigar = convert(length) + "M"; } else if (type == ALLELE_SNP || type == ALLELE_MNP) { cigar = convert(length) + "X"; } else if (type == ALLELE_INSERTION) { reflen = 0; cigar = convert(length) + "I"; } else if (type == ALLELE_DELETION) { cigar = convert(length) + "D"; } else if (type == ALLELE_NULL) { cigar = convert(length) + "N"; } string refSequence; if (type != ALLELE_NULL) { // only used for non null allele, avoid soft clipping edge cases refSequence = currentSequence.substr(pos - currentSequenceStart, reflen); } long int repeatRightBoundary = pos; // check if it's allowed // if it isn't allowed // and referenceLength > 0, make a reference allele with reference quality // if referenceLength == 0 (insertion), make a reference allele with 0 length (it will be filtered out in another context) // if it is allowed, make a normal allele // if not, adjust the allele so that it's a reference allele with preset BQ and length // in effect, this means creating a reference allele of the reference length of the allele with 0 BQ // NB, if we are using haplotype basis alleles the algorithm forces // alleles that aren't in the haplotype basis set into the reference space if (type != ALLELE_REFERENCE && type != ALLELE_NULL && !allowedHaplotypeBasisAllele(pos + 1, refSequence, readSequence)) { type = ALLELE_REFERENCE; length = referenceLengthFromCigar(cigar); cigar = convert(length) + "M"; // by adjusting the cigar, we implicitly adjust // allele.referenceLength, which is calculated when the allele is made qualstr = string(length, qualityInt2Char(0)); readSequence = currentSequence.substr(pos - currentSequenceStart, length); } // cache information about repeat structure in the alleles, to // allow haplotype construction to be forced to extend across // tandem repeats and homopolymers when indels are present if (type == ALLELE_INSERTION || type == ALLELE_DELETION) { string alleleseq; if (type == ALLELE_INSERTION) { alleleseq = readSequence; } else if (type == ALLELE_DELETION) { alleleseq = refSequence; } map >::iterator rc = cachedRepeatCounts.find(pos); if (rc == cachedRepeatCounts.end()) { cachedRepeatCounts[pos] = repeatCounts(pos - currentSequenceStart, currentSequence, 12); rc = cachedRepeatCounts.find(pos); } map& matchedRepeatCounts = rc->second; for (map::iterator r = matchedRepeatCounts.begin(); r != matchedRepeatCounts.end(); ++r) { const string& repeatunit = r->first; int rptcount = r->second; string repeatstr = repeatunit * rptcount; // assumption of left-alignment may be problematic... so this should be updated if (repeatstr.size() >= parameters.minRepeatSize && isRepeatUnit(alleleseq, repeatunit)) { // determine the boundaries of the repeat long int p = pos - currentSequenceStart; // adjust to ensure we hit the first of the repeatstr size_t startpos = currentSequence.find(repeatstr, max((long int) 0, p - (long int) repeatstr.size() - 1)); long int leftbound = startpos + currentSequenceStart; if (startpos == string::npos) { cerr << "could not find repeat sequence?" << endl; cerr << "repeat sequence: " << repeatstr << endl; cerr << "currentsequence start: " << currentSequenceStart << endl; cerr << currentSequence << endl; cerr << "matched repeats:" << endl; for (map::iterator q = matchedRepeatCounts.begin(); q != matchedRepeatCounts.end(); ++q) { cerr << q->first << " : " << q->second << endl; cerr << "... at position " << pos << endl; } break; // ignore right-repeat boundary in this case } repeatRightBoundary = leftbound + repeatstr.size() + 1; // 1 past edge of repeat } } // a dangerous game int start = pos - currentSequenceStart; double minEntropy = parameters.minRepeatEntropy; while (minEntropy > 0 && // ignore if turned off // don't run off the end of the current sequence repeatRightBoundary - currentSequenceStart < currentSequence.size() && // there is no point in going past the alignment end // because we won't make a haplotype call unless we have a covering observation from a read repeatRightBoundary < alignment.ENDPOSITION && entropy(currentSequence.substr(start, repeatRightBoundary - pos)) < minEntropy) { ++repeatRightBoundary; } // edge case, the indel is an insertion and matches the reference to the right // this means there is a repeat structure in the read, but not the ref if (currentSequence.substr(pos - currentSequenceStart, length) == readSequence) { repeatRightBoundary = max(repeatRightBoundary, pos + length + 1); } } string qnamer = alignment.QNAME; return Allele(type, currentSequenceName, pos, ¤tPosition, ¤tReferenceBase, length, repeatRightBoundary, basesLeft, basesRight, readSequence, sampleName, qnamer, ra.readgroup, sequencingTech, !alignment.ISREVERSESTRAND, max(qual, (long double) 0), // ensure qual is at least 0 qualstr, alignment.MAPPINGQUALITY, alignment.ISPAIRED, alignment.ISMATEMAPPED, alignment.ISPROPERPAIR, cigar, &ra.alleles, alignment.POSITION, alignment.ENDPOSITION); } RegisteredAlignment& AlleleParser::registerAlignment(BAMALIGN& alignment, RegisteredAlignment& ra, string& sampleName, string& sequencingTech) { string rDna = alignment.QUERYBASES; string rQual = alignment.QUALITIES; if (qualityChar2LongDouble(rQual.at(0)) == -1) { // force rQual to be 0 char q0 = qualityInt2Char(0); for (size_t i = 0; i < rQual.size(); ++i) { rQual[i] = q0; } } int rp = 0; // read position, 0-based relative to read int csp = currentSequencePosition(alignment); // current sequence position, 0-based relative to currentSequence int sp = alignment.POSITION; // sequence position if (usingHaplotypeBasisAlleles) { updateHaplotypeBasisAlleles(sp, alignment.ALIGNEDBASES); } #ifdef VERBOSE_DEBUG if (parameters.debug2) { DEBUG2("registering alignment " << rp << " " << csp << " " << sp << endl << "alignment readName " << alignment.QNAME << endl << "alignment isPaired " << alignment.ISPAIRED << endl << "alignment isMateMapped " << alignment.ISMATEMAPPED << endl << "alignment isProperPair " << alignment.ISPROPERPAIR << endl << "alignment mapQual " << alignment.MAPPINGQUALITY << endl << "alignment sampleID " << sampleName << endl << "alignment position " << alignment.POSITION << endl << "alignment length " << alignment.ALIGNMENTLENGTH << endl << "alignment AlignedBases.size() " << alignment.ALIGNEDBASES << endl << "alignment GetEndPosition() " << alignment.ENDPOSITION << endl << "alignment end position " << alignment.POSITION + alignment.ALIGNEDBASES); stringstream cigarss; int alignedLength = 0; CIGAR cig = alignment.GETCIGAR; for (CIGAR::const_iterator c = cig.begin(); c != cig.end(); ++c) { cigarss << c->CIGTYPE << c->CIGLEN; if (c->CIGTYPE == 'D') alignedLength += c->CIGLEN; if (c->CIGTYPE == 'M') alignedLength += c->CIGLEN; } DEBUG2("alignment cigar " << cigarss.str()); DEBUG2("current sequence pointer: " << csp); DEBUG2("read: " << rDna); DEBUG2("aligned bases: " << alignment.QUERYBASES); DEBUG2("qualities: " << alignment.QUALITIES); DEBUG2("reference seq: " << currentSequence.substr(csp, alignment.ALIGNEDBASES)); } #endif /* * The cigar only records matches for sequences that have embedded * mismatches. * * Also, we don't store the entire underlying sequence; just the subsequence * that matches our current target region. * * As we step through a match sequence, we look for mismatches. When we * see one we set a positional flag indicating the location, and we emit a * 'Reference' allele that stretches from the the base after the last * mismatch to the base before the current one. * * An example follows: * * NNNNNNNNNNNMNNNNNNNNNNNNNNNN * reference ^\-snp reference * */ /* std::cerr << "********" << std::endl << alignment.QueryBases << std::endl << alignment.AlignedBases << std::endl; vector::const_iterator cigarIter2 = alignment.CigarData.begin(); vector::const_iterator cigarEnd2 = alignment.CigarData.end(); for (; cigarIter2 != cigarEnd2; ++cigarIter2) std::cerr << cigarIter2->Length << cigarIter2->Type; std::cerr << std::endl; */ CIGAR cigar = alignment.GETCIGAR; CIGAR::const_iterator cigarIter = cigar.begin(); CIGAR::const_iterator cigarEnd = cigar.end(); for ( ; cigarIter != cigarEnd; ++cigarIter ) { int l = cigarIter->CIGLEN; char t = cigarIter->CIGTYPE; DEBUG2("cigar item: " << t << l); if (t == 'M' || t == 'X' || t == '=') { // match or mismatch int firstMatch = csp; // track the first match after a mismatch, for recording 'reference' alleles int mismatchStart = -1; bool inMismatch = false; // for each base in the match region // increment the csp, sp, and rp // if there is a mismatch, record the last matching stretch as a reference allele // presently just record one snp per mismatched position, whether or not they are in a series for (int i=0; i= parameters.BQL2) { ++ra.mismatches; // increment our mismatch counter if we're over BQL2 ++ra.snpCount; // always increment snp counter } // always emit a snp, if we have too many mismatches over // BQL2 then we will discard the registered allele in the // calling context if (!inMismatch) { mismatchStart = csp; inMismatch = true; } firstMatch = csp + 1; } else if (inMismatch) { inMismatch = false; int length = csp - mismatchStart; string readSequence = rDna.substr(rp - length, length); string qualstr = rQual.substr(rp - length, length); for (int j = 0; j < length; ++j) { long double lqual = qualityChar2LongDouble(qualstr.at(j)); string qualp = qualstr.substr(j, 1); string rs = readSequence.substr(j, 1); if (allATGC(rs)) { ra.addAllele( makeAllele(ra, ALLELE_SNP, sp - length + j, 1, rp - length - j, // bases left alignment.SEQLEN - rp + j, // bases right rs, sampleName, alignment, sequencingTech, lqual, qualp), parameters.allowComplex, parameters.maxComplexGap); } else { ra.addAllele( makeAllele(ra, ALLELE_NULL, sp - length + j, 1, rp - length - j, // bases left alignment.SEQLEN - rp + j, // bases right rs, sampleName, alignment, sequencingTech, lqual, qualp), parameters.allowComplex, parameters.maxComplexGap); } } } // update positions ++sp; ++csp; ++rp; } // catch mismatches at the end of the match if (inMismatch) { inMismatch = false; int length = csp - mismatchStart; string readSequence = rDna.substr(rp - length, length); string qualstr = rQual.substr(rp - length, length); for (int j = 0; j < length; ++j) { long double lqual = qualityChar2LongDouble(qualstr.at(j)); string qualp = qualstr.substr(j, 1); string rs = readSequence.substr(j, 1); if (allATGC(rs)) { ra.addAllele( makeAllele(ra, ALLELE_SNP, sp - length + j, 1, rp - length - j, // bases left alignment.SEQLEN - rp + j, // bases right rs, sampleName, alignment, sequencingTech, lqual, qualp), parameters.allowComplex, parameters.maxComplexGap); } else { ra.addAllele( makeAllele(ra, ALLELE_NULL, sp - length + j, 1, rp - length - j, // bases left alignment.SEQLEN - rp + j, // bases right rs, sampleName, alignment, sequencingTech, lqual, qualp), parameters.allowComplex, parameters.maxComplexGap); } } // or, if we are not in a mismatch, construct the last reference allele of the match } else if (firstMatch < csp) { int length = csp - firstMatch; //string matchingSequence = currentSequence.substr(csp - length, length); string readSequence = rDna.substr(rp - length, length); string qualstr = rQual.substr(rp - length, length); if (allATGC(readSequence)) { ra.addAllele( makeAllele(ra, ALLELE_REFERENCE, sp - length, length, rp, // bases left (for first base in ref allele) alignment.SEQLEN - rp, // bases right (for first base in ref allele) readSequence, sampleName, alignment, sequencingTech, alignment.MAPPINGQUALITY, // ... hmm qualstr), parameters.allowComplex, parameters.maxComplexGap); } } } else if (t == 'D') { // deletion // because deletions have no quality information, // use the surrounding sequence quality as a proxy // to provide quality scores of equivalent magnitude to insertions, // take N bp, right-centered on the position of the deletion // this logic prevents overflow of the read int spanstart; // this is used to calculate the quality string adding 2bp grounds // the indel in the surrounding sequence, which it is dependent // upon int L = l + 2; if (L > rQual.size()) { L = rQual.size(); spanstart = 0; } else { // set lower bound to 0 if (rp < (L / 2)) { spanstart = 0; } else { spanstart = rp - (L / 2); } // set upper bound to the string length if (spanstart + L > rQual.size()) { spanstart = rQual.size() - L; } } string qualstr = rQual.substr(spanstart, L); long double qual; if (parameters.useMinIndelQuality) { qual = minQuality(qualstr); //qual = averageQuality(qualstr); } else { // quality, scaled inversely by the ratio between the quality // string length and the length of the event qual = sumQuality(qualstr); // quality adjustment: // scale the quality by the inverse harmonic sum of the length of // the quality string X a scaling constant derived from the ratio // between the length of the quality string and the length of the // allele //qual += ln2phred(log((long double) l / (long double) L)); qual += ln2phred(log((long double) L / (long double) l)); qual /= harmonicSum(l); } string refseq = currentSequence.substr(csp, l); // some aligners like to report deletions at the beginnings and ends of reads. // without any sequence in the read to support this, it is hard to believe // that these deletions are real, so we ignore them here. CIGAR cigar = alignment.GETCIGAR; if (cigarIter != cigar.begin() // guard against deletion at beginning && (cigarIter+1) != cigar.end() // and against deletion at end && allATGC(refseq)) { string nullstr; ra.addAllele( makeAllele(ra, ALLELE_DELETION, sp, l, rp, // bases left (for first base in ref allele) alignment.SEQLEN - rp, // bases right (for first base in ref allele) nullstr, // no read sequence for deletions sampleName, alignment, sequencingTech, qual, nullstr), // no qualstr for deletions parameters.allowComplex, parameters.maxComplexGap); } ++ra.indelCount; sp += l; // update sample position csp += l; } else if (t == 'I') { // insertion //string qualstr = rQual.substr(rp, l); int spanstart; // this is used to calculate the quality string adding 2bp grounds // the indel in the surrounding sequence, which it is dependent // upon int L = l + 2; if (L > rQual.size()) { L = rQual.size(); spanstart = 0; } else { // set lower bound to 0 if (rp < 1) { spanstart = 0; } else { spanstart = rp - 1; } // set upper bound to the string length if (spanstart + L > rQual.size()) { spanstart = rQual.size() - L; } } string qualstr = rQual.substr(spanstart, L); long double qual; if (parameters.useMinIndelQuality) { qual = minQuality(qualstr); //qual = averageQuality(qualstr); // does not work as well as the min } else { // quality, scaled inversely by the ratio between the quality // string length and the length of the event qual = sumQuality(qualstr); // quality adjustment: // scale the quality by the inverse harmonic sum of the length of // the quality string X a scaling constant derived from the ratio // between the length of the quality string and the length of the // allele //qual += ln2phred(log((long double) l / (long double) L)); qual += ln2phred(log((long double) L / (long double) l)); qual /= harmonicSum(l); } string readseq = rDna.substr(rp, l); if (allATGC(readseq)) { string qualstr = rQual.substr(rp, l); ra.addAllele( makeAllele(ra, ALLELE_INSERTION, sp, l, rp - l, // bases left (for first base in ref allele) alignment.SEQLEN - rp, // bases right (for first base in ref allele) readseq, sampleName, alignment, sequencingTech, qual, qualstr), parameters.allowComplex, parameters.maxComplexGap); } ++ra.indelCount; rp += l; // handle other cigar element types } else if (t == 'S') { // soft clip, clipped sequence present in the read not matching the reference if (sp - l < 0) { // nothing to do, soft clip is beyond the beginning of the reference } else { string qualstr = rQual.substr(rp, l); string readseq = alignment.QUERYBASES.substr(rp, l); // skip these bases in the read ra.addAllele( makeAllele(ra, ALLELE_NULL, sp, l, rp, // bases left (for first base in ref allele) alignment.SEQLEN - rp, // bases right readseq, sampleName, alignment, sequencingTech, alignment.MAPPINGQUALITY, qualstr), parameters.allowComplex, parameters.maxComplexGap); } rp += l;// sp += l; csp += l; } else if (t == 'H') { // hard clip on the read, clipped sequence is not present in the read // the alignment position is the first non-clipped base. // thus, hard clipping seems to just be an indicator that we clipped something // here we do nothing //sp += l; csp += l; } else if (t == 'N') { // skipped region in the reference not present in read, aka splice // skip these bases in the read // the following block could be enabled to process them, if they are desired /* string nullstr; ra.addAllele( makeAllele(ra, ALLELE_NULL, sp - l, l, rp - l, // bases left alignment.SEQLEN - rp, // bases right nullstr, sampleName, alignment, sequencingTech, alignment.MAPPINGQUALITY, nullstr), parameters.allowComplex, parameters.maxComplexGap); */ sp += l; csp += l; } // ignore padding //} else if (t == 'P') { // padding, silent deletion from the padded reference sequence // sp += l; csp += l; //} } // end cigar iter loop if (ra.alleles.empty()) { DEBUG2("generated no alleles from read"); return ra; } DEBUG2("registerAlignment: done registering alleles with addAllele"); if (parameters.trimComplexTail) { // Simplify complex final alleles by splitting off any trailing reference matches Allele& lastAllele = ra.alleles.back(); vector< pair > lastCigar = splitCigar(lastAllele.cigar); if (lastAllele.isComplex() && lastCigar.back().second == "M") { DEBUG2("registerAlignment: trimming reference matches from end of final complex allele"); // FIXME TODO: The allele may not actually be complex // anymore after splitting, in which case we should demote // its type to SNP/MNP/INDEL. // -trs, 23 Jan 2015 ra.alleles.push_back(lastAllele); Allele& pAllele = ra.alleles.at(ra.alleles.size() - 2); string seq; vector > cig; vector quals; pAllele.subtractFromEnd(lastCigar.back().first, seq, cig, quals); ra.alleles.back().subtractFromStart(pAllele.referenceLength, seq, cig, quals); } } // this deals with the case in which we have embedded Ns in the read // often this happens at the start or end of reads, thus affecting our RegisteredAlignment::start and ::end ra.start = ra.alleles.front().position; ra.end = ra.alleles.back().position + ra.alleles.back().referenceLength; double alignedBases = 0; double mismatchCount = 0; double matchCount = 0; double indelCount = 0; // tally mismatches in two categories, gaps and mismatched bases for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { Allele& allele = *a; switch (allele.type) { case ALLELE_REFERENCE: alignedBases += allele.length; matchCount += allele.length; break; case ALLELE_SNP: case ALLELE_MNP: alignedBases += allele.length; mismatchCount += allele.length; break; case ALLELE_INSERTION: case ALLELE_DELETION: case ALLELE_COMPLEX: ++indelCount; break; default: break; } } double mismatchRate = ( indelCount + mismatchCount ) / alignedBases; double snpRate = mismatchCount / alignedBases; double indelRate = indelCount / alignedBases; // store mismatch information about the alignment in the alleles // for each allele, normalize the mismatch rates by ignoring that allele, // this allows us to relate the mismatch rate without reference to called alleles for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { Allele& allele = *a; allele.readMismatchRate = mismatchRate; allele.readSNPRate = snpRate; allele.readIndelRate = indelRate; switch (allele.type) { case ALLELE_REFERENCE: allele.readMismatchRate = mismatchRate; allele.readSNPRate = snpRate; allele.readIndelRate = indelRate; break; case ALLELE_SNP: case ALLELE_MNP: allele.readSNPRate = ( mismatchCount - allele.length ) / alignedBases; allele.readIndelRate = indelRate; allele.readMismatchRate = indelRate + allele.readSNPRate; break; case ALLELE_INSERTION: case ALLELE_DELETION: case ALLELE_COMPLEX: allele.readSNPRate = snpRate; allele.readIndelRate = ( indelCount - 1 ) / alignedBases; allele.readMismatchRate = allele.readIndelRate + snpRate; break; default: break; } } // ignore insertions, deletions, and N's which occur at the end of the read with // no reference-matching bases before the end of the read /* if (parameters.boundIndels && (ra.alleles.back().isInsertion() || ra.alleles.back().isDeletion() || ra.alleles.back().isNull())) { ra.alleles.pop_back(); } */ ra.clumpAlleles(parameters.allowComplex, parameters.maxComplexGap, parameters.boundIndels); DEBUG2("alleles:" << endl << join(ra.alleles, "\n")); /* cerr << "ra.alleles.size() = " << ra.alleles.size() << endl; for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { cerr << *a << endl; } */ return ra; } void AlleleParser::updateAlignmentQueue(long int position, vector& newAlleles, bool gettingPartials) { DEBUG2("updating alignment queue"); DEBUG2("currentPosition = " << position << "; currentSequenceStart = " << currentSequenceStart << "; currentSequence end = " << currentSequence.size() + currentSequenceStart); // make sure we have sequence for the *first* alignment //extendReferenceSequence(currentAlignment); // push to the front until we get to an alignment that doesn't overlap our // current position or we reach the end of available alignments // filter input reads; only allow mapped reads with a certain quality DEBUG2("currentAlignment.Position == " << currentAlignment.POSITION << ", currentAlignment.AlignedBases.size() == " << currentAlignment.ALIGNEDBASES << ", currentPosition == " << position << ", currentSequenceStart == " << currentSequenceStart << " .. + currentSequence.size() == " << currentSequenceStart + currentSequence.size() ); if (hasMoreAlignments && currentAlignment.POSITION <= position && currentAlignment.REFID == currentRefID) { do { DEBUG2("top of alignment parsing loop"); DEBUG("alignment: " << currentAlignment.QNAME); // get read group, and map back to a sample name string readGroup; #ifdef HAVE_BAMTOOLS if (!currentAlignment.GetTag("RG", readGroup)) { #else currentAlignment.GetZTag("RG", readGroup); if (readGroup.empty()) { #endif if (!oneSampleAnalysis) { ERROR("Couldn't find read group id (@RG tag) for BAM Alignment " << currentAlignment.QNAME << " at " << currentSequenceName << ":" << position + 1 << " EXITING!"); exit(1); } else { readGroup = "unknown"; } } else { if (oneSampleAnalysis) { ERROR("No read groups specified in BAM header, but alignment " << currentAlignment.QNAME << " at " << currentSequenceName << ":" << position + 1 << " has a read group."); exit(1); } } // skip this alignment if we are not analyzing the sample it is drawn from if (readGroupToSampleNames.find(readGroup) == readGroupToSampleNames.end()) { ERROR("could not find sample matching read group id " << readGroup); continue; } // skip this alignment if we are not using duplicate reads (we remove them by default) if (currentAlignment.ISDUPLICATE && !parameters.useDuplicateReads) { DEBUG("skipping alignment " << currentAlignment.QNAME << " because it is a duplicate read"); continue; } // skip unmapped alignments, as they cannot be used in the algorithm if (!currentAlignment.ISMAPPED) { DEBUG("skipping alignment " << currentAlignment.QNAME << " because it is not mapped"); continue; } // skip alignments which have no aligned bases if (currentAlignment.ALIGNEDBASES == 0) { DEBUG("skipping alignment " << currentAlignment.QNAME << " because it has no aligned bases"); continue; } // skip alignments which are non-primary if (currentAlignment.SecondaryFlag()) { DEBUG("skipping alignment " << currentAlignment.QNAME << " because it is not marked primary"); continue; } if (!gettingPartials && currentAlignment.ENDPOSITION < position) { cerr << currentAlignment.QNAME << " at " << currentSequenceName << ":" << currentAlignment.POSITION << " is out of order!" << " expected after " << position << endl; continue; } // otherwise, get the sample name and register the alignment to generate a sequence of alleles // we have to register the alignment to acquire some information required by filters // such as mismatches // initially skip reads with low mapping quality (what happens if MapQuality is not in the file) if (currentAlignment.MAPPINGQUALITY >= parameters.MQL0) { // extend our cached reference sequence to allow processing of this alignment //extendReferenceSequence(currentAlignment); // left realign indels if (parameters.leftAlignIndels) { int length = currentAlignment.ENDPOSITION - currentAlignment.POSITION + 1; stablyLeftAlign(currentAlignment, currentSequence.substr(currentSequencePosition(currentAlignment), length)); } // get sample name string sampleName = readGroupToSampleNames[readGroup]; string sequencingTech; map::iterator t = readGroupToTechnology.find(readGroup); if (t != readGroupToTechnology.end()) { sequencingTech = t->second; } // limit base quality if cap set if (parameters.baseQualityCap != 0) { capBaseQuality(currentAlignment, parameters.baseQualityCap); } // do we exceed coverage anywhere? // do we touch anything where we had exceeded coverage? // if so skip this read, and mark and remove processed alignments and registered alleles overlapping the coverage capped position bool considerAlignment = true; if (parameters.skipCoverage > 0) { for (unsigned long int i = currentAlignment.POSITION; i < currentAlignment.ENDPOSITION; ++i) { unsigned long int x = ++coverage[i]; if (x > parameters.skipCoverage && !gettingPartials) { considerAlignment = false; // we're exceeding coverage at this position for the first time, so clean up if (!coverageSkippedPositions.count(i)) { // clean up reads overlapping this position removeCoverageSkippedAlleles(registeredAlleles, i); removeCoverageSkippedAlleles(newAlleles, i); // remove the alignments overlapping this position removeRegisteredAlignmentsOverlappingPosition(i); // record that the position is capped coverageSkippedPositions.insert(i); } } } } // decomposes alignment into a set of alleles // here we get the deque of alignments ending at this alignment's end position deque& rq = registeredAlignments[currentAlignment.ENDPOSITION]; //cerr << "parameters capcoverage " << parameters.capCoverage << " " << rq.size() << endl; if (considerAlignment) { // and insert the registered alignment into that deque rq.push_front(RegisteredAlignment(currentAlignment)); RegisteredAlignment& ra = rq.front(); registerAlignment(currentAlignment, ra, sampleName, sequencingTech); // backtracking if we have too many mismatches // or if there are no recorded alleles if (ra.alleles.empty() || ((float) ra.mismatches / (float) currentAlignment.SEQLEN) > parameters.readMaxMismatchFraction || ra.mismatches > parameters.RMU || ra.snpCount > parameters.readSnpLimit || ra.indelCount > parameters.readIndelLimit) { rq.pop_front(); // backtrack } else { // push the alleles into our new alleles vector for (vector::iterator allele = ra.alleles.begin(); allele != ra.alleles.end(); ++allele) { newAlleles.push_back(&*allele); } } } } } while ((hasMoreAlignments = GETNEXT(bamMultiReader, currentAlignment)) && currentAlignment.POSITION <= position && currentAlignment.REFID == currentRefID); } DEBUG2("... finished pushing new alignments"); } void AlleleParser::removeRegisteredAlignmentsOverlappingPosition(long unsigned int pos) { map >::iterator f = registeredAlignments.begin(); map::iterator> > alignmentsToErase; set allelesToErase; while (f != registeredAlignments.end()) { for (deque::iterator d = f->second.begin(); d != f->second.end(); ++d) { if (d->start <= pos && d->end > pos) { alignmentsToErase[f->first].insert(d); for (vector::iterator a = d->alleles.begin(); a != d->alleles.end(); ++a) { allelesToErase.insert(&*a); } } } ++f; } // clean up registered alleles--- maybe this should be done externally? for (vector::iterator a = registeredAlleles.begin(); a != registeredAlleles.end(); ++a) { if (allelesToErase.count(*a)) { *a = NULL; } } registeredAlleles.erase(remove(registeredAlleles.begin(), registeredAlleles.end(), (Allele*)NULL), registeredAlleles.end()); if (alignmentsToErase.size()) { for (map::iterator> >::iterator e = alignmentsToErase.begin(); e != alignmentsToErase.end(); ++e) { deque updated; map >::iterator f = registeredAlignments.find(e->first); assert(f != registeredAlignments.end()); for (deque::iterator d = f->second.begin(); d != f->second.end(); ++d) { if (!e->second.count(d)) { updated.push_back(*d); } } f->second = updated; } } } void AlleleParser::addToRegisteredAlleles(vector& alleles) { registeredAlleles.insert(registeredAlleles.end(), alleles.begin(), alleles.end()); } // updates registered alleles and erases the unused portion of our cached reference sequence void AlleleParser::updateRegisteredAlleles(void) { // remove reference alleles which are no longer overlapping the current position vector& alleles = registeredAlleles; for (vector::iterator allele = alleles.begin(); allele != alleles.end(); ++allele) { long unsigned int position = (*allele)->position; if (position + (*allele)->referenceLength < currentPosition) { *allele = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } pair AlleleParser::nextInputVariantPosition(void) { // are we past the last one in the sequence? if (usingVariantInputAlleles && ((inputVariantAlleles.find(currentRefID) != inputVariantAlleles.end() && inputVariantAlleles[currentRefID].upper_bound(currentPosition) != inputVariantAlleles[currentRefID].end()) || inputVariantAlleles.upper_bound(currentRefID) != inputVariantAlleles.end())) { map >& inChrom = inputVariantAlleles[currentRefID]; map >::iterator ic = inChrom.upper_bound(currentPosition); if (ic != inChrom.end()) { return make_pair(currentRefID, ic->first); } else { // find next chrom with input alleles map > >::iterator nc = inputVariantAlleles.upper_bound(currentRefID); if (nc != inputVariantAlleles.end()) { return make_pair(nc->first, nc->second.begin()->first); } else { return make_pair(-1, 0); } } } return make_pair(-1, 0); } void AlleleParser::getAllInputVariants(void) { string nullstr; getInputVariantsInRegion(nullstr); } void AlleleParser::getInputVariantsInRegion(string& seq, long start, long end) { if (!usingVariantInputAlleles) return; // get the variants in the target region vcflib::Variant var(variantCallInputFile); if (!seq.empty()) { variantCallInputFile.setRegion(seq, start, end); } bool ok; while ((ok = variantCallInputFile.getNextVariant(*currentVariant))) { long int pos = currentVariant->position - 1; // get alternate alleles bool includePreviousBaseForIndels = true; map > variantAlleles = currentVariant->parsedAlternates(); // TODO this would be a nice option: why does it not work? //map > variantAlleles = currentVariant->flatAlternates(); vector< vector > orderedVariantAlleles; for (vector::iterator a = currentVariant->alt.begin(); a != currentVariant->alt.end(); ++a) { orderedVariantAlleles.push_back(variantAlleles[*a]); } vector genotypeAlleles; set alternatePositions; for (vector< vector >::iterator g = orderedVariantAlleles.begin(); g != orderedVariantAlleles.end(); ++g) { vector& altAllele = *g; vector alleles; for (vector::iterator v = altAllele.begin(); v != altAllele.end(); ++v) { vcflib::VariantAllele& variant = *v; long int allelePos = variant.position - 1; AlleleType type; string alleleSequence = variant.alt; int len = 0; int reflen = 0; string cigar; // XXX // FAIL // you need to add in the reference bases between the non-reference ones! // to allow for complex events! if (variant.ref == variant.alt) { // XXX note that for reference alleles, we only use the first base internally // but this is technically incorrect, so this hack should be noted len = variant.ref.size(); reflen = len; //alleleSequence = alleleSequence.at(0); // take only the first base type = ALLELE_REFERENCE; cigar = convert(len) + "M"; } else if (variant.ref.size() == variant.alt.size()) { len = variant.ref.size(); reflen = len; if (variant.ref.size() == 1) { type = ALLELE_SNP; } else { type = ALLELE_MNP; } cigar = convert(len) + "X"; } else if (variant.ref.size() > variant.alt.size()) { type = ALLELE_DELETION; len = variant.ref.size() - variant.alt.size(); allelePos -= 1; reflen = len + 2; alleleSequence = reference.getSubSequence(currentVariant->sequenceName, allelePos, 1) + alleleSequence + reference.getSubSequence(currentVariant->sequenceName, allelePos+1+len, 1); cigar = "1M" + convert(len) + "D" + "1M"; } else { // we always include the flanking bases for these elsewhere, so here too in order to be consistent and trigger use type = ALLELE_INSERTION; // add previous base and post base to match format typically used for calling allelePos -= 1; alleleSequence = reference.getSubSequence(currentVariant->sequenceName, allelePos, 1) + alleleSequence + reference.getSubSequence(currentVariant->sequenceName, allelePos+1, 1); len = variant.alt.size() - var.ref.size(); cigar = "1M" + convert(len) + "I" + "1M"; reflen = 2; } // TODO deal woth complex subs Allele allele = genotypeAllele(type, alleleSequence, (unsigned int) len, cigar, (unsigned int) reflen, allelePos); DEBUG("input allele: " << allele.referenceName << " " << allele); //cerr << "input allele: " << allele.referenceName << " " << allele << endl; //alleles.push_back(allele); genotypeAlleles.push_back(allele); if (allele.type != ALLELE_REFERENCE) { inputVariantAlleles[bamMultiReader.GETREFID(currentVariant->sequenceName)][allele.position].push_back(allele); alternatePositions.insert(allele.position); } } } } } void AlleleParser::updateInputVariants(long int pos, int referenceLength) { //cerr << "updating input variants (?) " << pos << " + " << referenceLength << " >? " << rightmostInputAllelePosition << endl; if (!usingVariantInputAlleles) return; if (pos + referenceLength > rightmostInputAllelePosition) { long int start = rightmostInputAllelePosition; if (start == 0) { start = rightmostHaplotypeBasisAllelePosition; } /* stringstream r; r << currentSequenceName << ":" << start << "-" << pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW; cerr << "getting variants in " << r.str() << endl; */ // tabix expects 1-based, fully closed regions for ti_parse_region() // (which is what setRegion() calls eventually) bool gotRegion = false; if (referenceLength > 0) { gotRegion = variantCallInputFile.setRegion(currentSequenceName, start + 1, pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW + 1); } else { // whole chromosome gotRegion = variantCallInputFile.setRegion(currentSequenceName); } if (gotRegion) { // get the variants in the target region vcflib::Variant var(variantCallInputFile); bool ok; while ((ok = variantCallInputFile.getNextVariant(*currentVariant))) { DEBUG("getting input alleles from input VCF at position " << currentVariant->sequenceName << ":" << currentVariant->position); long int pos = currentVariant->position - 1; // get alternate alleles bool includePreviousBaseForIndels = true; map > variantAlleles = currentVariant->parsedAlternates(); // TODO this would be a nice option: why does it not work? //map > variantAlleles = currentVariant->flatAlternates(); vector< vector > orderedVariantAlleles; for (vector::iterator a = currentVariant->alt.begin(); a != currentVariant->alt.end(); ++a) { orderedVariantAlleles.push_back(variantAlleles[*a]); } vector genotypeAlleles; set alternatePositions; for (vector< vector >::iterator g = orderedVariantAlleles.begin(); g != orderedVariantAlleles.end(); ++g) { vector& altAllele = *g; vector alleles; for (vector::iterator v = altAllele.begin(); v != altAllele.end(); ++v) { vcflib::VariantAllele& variant = *v; long int allelePos = variant.position - 1; AlleleType type; string alleleSequence = variant.alt; int len = 0; int reflen = 0; string cigar; // XXX // FAIL // you need to add in the reference bases between the non-reference ones! // to allow for complex events! if (variant.ref == variant.alt) { // XXX note that for reference alleles, we only use the first base internally // but this is technically incorrect, so this hack should be noted len = variant.ref.size(); reflen = len; //alleleSequence = alleleSequence.at(0); // take only the first base type = ALLELE_REFERENCE; cigar = convert(len) + "M"; } else if (variant.ref.size() == variant.alt.size()) { len = variant.ref.size(); reflen = len; if (variant.ref.size() == 1) { type = ALLELE_SNP; } else { type = ALLELE_MNP; } cigar = convert(len) + "X"; } else if (variant.ref.size() > variant.alt.size()) { type = ALLELE_DELETION; len = variant.ref.size() - variant.alt.size(); allelePos -= 1; reflen = len + 2; alleleSequence = reference.getSubSequence(currentSequenceName, allelePos, 1) + alleleSequence + reference.getSubSequence(currentSequenceName, allelePos+1+len, 1); cigar = "1M" + convert(len) + "D" + "1M"; } else { // we always include the flanking bases for these elsewhere, so here too in order to be consistent and trigger use type = ALLELE_INSERTION; // add previous base and post base to match format typically used for calling allelePos -= 1; alleleSequence = reference.getSubSequence(currentSequenceName, allelePos, 1) + alleleSequence + reference.getSubSequence(currentSequenceName, allelePos+1, 1); len = variant.alt.size() - var.ref.size(); cigar = "1M" + convert(len) + "I" + "1M"; reflen = 2; } // TODO deal woth complex subs Allele allele = genotypeAllele(type, alleleSequence, (unsigned int) len, cigar, (unsigned int) reflen, allelePos); DEBUG("input allele: " << allele.referenceName << " " << allele); //alleles.push_back(allele); genotypeAlleles.push_back(allele); if (allele.type != ALLELE_REFERENCE) { inputVariantAlleles[bamMultiReader.GETREFID(allele.referenceName)][allele.position].push_back(allele); alternatePositions.insert(allele.position); } } } // store the allele counts, if they are provided // } if (!ok) hasMoreVariants = false; } /* for (map >::iterator v = inputVariantAlleles.begin(); v != inputVariantAlleles.end(); ++v) { vector& iv = v->second; cerr << "input variants pos = " << v->first << endl; for (vector::iterator a = iv.begin(); a != iv.end(); ++a) { cerr << *a << endl; } } */ //rightmostHaplotypeBasisAllelePosition = pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW; //rightmostInputAllelePosition = pos + referenceLength + CACHED_BASIS_HAPLOTYPE_WINDOW; } } /* void AlleleParser::addCurrentGenotypeLikelihoods(map >& genotypesByPloidy, vector >& sampleDataLikelihoods) { // check if there are any genotype likelihoods at the current position if (inputGenotypeLikelihoods.find(currentPosition) != inputGenotypeLikelihoods.end()) { map >& inputLikelihoodsBySample = inputGenotypeLikelihoods[currentPosition]; vector genotypePtrs; for (map >::iterator gp = genotypesByPloidy.begin(); gp != genotypesByPloidy.end(); ++gp) { vector& genotypes = gp->second; for (vector::iterator g = genotypes.begin(); g != genotypes.end(); ++g) { genotypePtrs.push_back(&*g); } } // if there are, add them to the sample data likelihoods for (map >::iterator gls = inputLikelihoodsBySample.begin(); gls != inputLikelihoodsBySample.end(); ++gls) { const string& sampleName = gls->first; map& likelihoods = gls->second; map likelihoodsPtr; for (map::iterator gl = likelihoods.begin(); gl != likelihoods.end(); ++gl) { const string& genotype = gl->first; long double l = gl->second; for (vector::iterator g = genotypePtrs.begin(); g != genotypePtrs.end(); ++g) { if (convert(**g) == genotype) { likelihoodsPtr[*g] = l; } } } Result sampleData; sampleData.name = sampleName; // TODO add null sample object to sampleData // do you need to???? for (map::iterator p = likelihoodsPtr.begin(); p != likelihoodsPtr.end(); ++p) { sampleData.push_back(SampleDataLikelihood(sampleName, nullSample, p->first, p->second, 0)); } sortSampleDataLikelihoods(sampleData); if (!sampleData.empty()) { sampleDataLikelihoods.push_back(sampleData); } } } } void AlleleParser::getInputAlleleCounts(vector& genotypeAlleles, map& inputACs) { // are there input ACs? // // if so, match them to the genotype alleles if (inputAlleleCounts.find(currentPosition) != inputAlleleCounts.end()) { map& inputCounts = inputAlleleCounts[currentPosition]; // XXX NB. We only use ACs for alleles in genotypeAlleles for (vector::iterator a = genotypeAlleles.begin(); a != genotypeAlleles.end(); ++a) { if (inputCounts.find(*a) != inputCounts.end()) { inputACs[a->currentBase] = inputCounts[*a]; } } } } */ void AlleleParser::removeAllelesWithoutReadSpan(vector& alleles, int probeLength, int haplotypeLength) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele* allele = *a; if (!(allele->position == currentPosition && allele->referenceLength == haplotypeLength)) continue; // require additionally int additionalRequiredBases = probeLength - allele->alternateSequence.size(); int requiredFlank = ceil((double) additionalRequiredBases / 2); DEBUG2(allele << " needs at least " << additionalRequiredBases << " bpleft " << allele->read5pNonNullBases() << " bpright " << allele->read3pNonNullBases()); if (additionalRequiredBases > 0 && (allele->read5pNonNullBases() < additionalRequiredBases || allele->read3pNonNullBases() < additionalRequiredBases)) { DEBUG("removing " << allele << " as it does not have the required probe length"); *a = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } void AlleleParser::removeNonOverlappingAlleles(vector& alleles, int haplotypeLength, bool getAllAllelesInHaplotype) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele* allele = *a; if (allele->type == ALLELE_REFERENCE) { // does the reference allele overlap the haplotype if (getAllAllelesInHaplotype && !(currentPosition <= allele->position && allele->position < currentPosition + haplotypeLength)) { //cerr << *a << " is not in haplotype" << endl; *a = NULL; } else if (!(allele->position <= currentPosition && allele->position + allele->referenceLength >= currentPosition + haplotypeLength)) { //cerr << *a << " is not fully overlapping haplotype from " << currentPosition << " to " << currentPosition + haplotypeLength << endl; *a = NULL; } else if (currentPosition < allele->position) { // not there yet //cerr << *a << " is not before current position" << endl; allele->processed = false; *a = NULL; } } else { // snps, insertions, deletions if (getAllAllelesInHaplotype && !(currentPosition <= allele->position && allele->position < currentPosition + haplotypeLength)) { *a = NULL; } else if (!(currentPosition == allele->position && allele->referenceLength == haplotypeLength)) { *a = NULL; } else if (currentPosition + haplotypeLength <= allele->position) { allele->processed = false; *a = NULL; } } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } // removes alleles which are filtered at the current position, and unsets their 'processed' flag so they are later evaluated void AlleleParser::removeFilteredAlleles(vector& alleles) { for (vector::iterator allele = alleles.begin(); allele != alleles.end(); ++allele) { if ((*allele)->quality < parameters.BQL0 || (*allele)->currentBase == "N") { (*allele)->processed = false; // force re-processing later *allele = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } void AlleleParser::removePreviousAlleles(vector& alleles, long int position) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele* allele = *a; if (*a != NULL && allele->position + allele->referenceLength < position) { allele->processed = true; *a = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } void AlleleParser::removeCoverageSkippedAlleles(vector& alleles, long int position) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele* allele = *a; if (*a != NULL && allele->alignmentStart <= position && allele->alignmentEnd > position) { allele->processed = true; *a = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } // steps our position/beddata/reference pointers through all positions in all // targets, returns false when we are finished // // pushes and pulls alignments out of our queue of overlapping alignments via // updateAlignmentQueue() as we progress // // returns true if we still have more targets to process // false otherwise bool AlleleParser::toNextTarget(void) { DEBUG("to next target"); clearRegisteredAlignments(); coverageSkippedPositions.clear(); cachedRepeatCounts.clear(); coverage.clear(); // reset haplotype length; there is no last call in this sequence; it isn't relevant lastHaplotypeLength = 0; if (targets.empty() && usingVariantInputAlleles) { // we are processing everything, so load the entire input variant allele set getAllInputVariants(); } // load first target if we have targets and have not loaded the first if (!parameters.useStdin && !targets.empty()) { bool ok = false; // try to load the first target if we need to if (!currentTarget) { ok = loadTarget(&targets.front()) && getFirstAlignment(); } // step through targets until we get to one with alignments while (!ok && currentTarget != &targets.back()) { if (!loadTarget(++currentTarget)) { continue; } if ((ok = getFirstAlignment())) { break; } } if (!ok) { return loadNextPositionWithInputVariant(); } // stdin, no targets cases } else if (!currentTarget && (parameters.useStdin || targets.empty())) { // if we have a target for limiting the analysis, use it // this happens when you specify stdin + a region string if (!targets.empty()) { currentTarget = &targets.front(); loadTarget(currentTarget); } if (!getFirstAlignment()) { ERROR("Could not get first alignment from target"); return false; } loadNextPositionWithAlignmentOrInputVariant(currentAlignment); //loadReferenceSequence(currentAlignment); // this seeds us with new reference sequence // however, if we have a target list of variants and we should also respect them // we've reached the end of file, or stdin } else if (parameters.useStdin || targets.empty()) { return false; } if (currentTarget && usingVariantInputAlleles) { getInputVariantsInRegion(currentTarget->seq, currentTarget->left, currentTarget->right); } loadReferenceSequence(currentSequenceName); justSwitchedTargets = true; return true; } // TODO refactor this to allow reading from stdin or reading the whole file // without loading each sequence as a target bool AlleleParser::loadTarget(BedTarget* target) { currentTarget = target; DEBUG("processing target " << currentTarget->desc << " " << currentTarget->seq << " " << currentTarget->left << " " << currentTarget->right + 1); DEBUG2("loading target reference subsequence"); loadReferenceSequence(currentTarget->seq); DEBUG2("setting new position " << currentTarget->left); currentPosition = currentTarget->left; rightmostHaplotypeBasisAllelePosition = currentTarget->left; #ifdef HAVE_BAMTOOLS if (!bamMultiReader.SetRegion(currentRefID, currentTarget->left, currentRefID, currentTarget->right + 1)) { // bamtools expects 0-based, half-open ERROR("Could not SetRegion to " << currentTarget->seq << ":" << currentTarget->left << ".." << currentTarget->right + 1); cerr << bamMultiReader.GetErrorString() << endl; return false; } #else if (!bamMultiReader.SetRegion(SeqLib::GenomicRegion(currentRefID, currentTarget->left, currentTarget->right + 1))) { // bamtools expects 0-based, half-open ERROR("Could not SetRegion to " << currentTarget->seq << ":" << currentTarget->left << ".." << currentTarget->right + 1); return false; } #endif if (variantCallInputFile.is_open()) { stringstream r; // tabix expects 1-based, fully closed regions for ti_parse_region() // (which is what setRegion() calls eventually) r << currentTarget->seq << ":" << currentTarget->left + 1 << "-" << currentTarget->right + 1; if (!variantCallInputFile.setRegion(r.str())) { WARNING("Could not set the region of the variants input file to " << currentTarget->seq << ":" << currentTarget->left << ".." << currentTarget->right + 1); //return false; } else { DEBUG("set region of variant input file to " << currentTarget->seq << ":" << currentTarget->left << ".." << currentTarget->right + 1); } } // now that we've jumped, reset the hasMoreAlignments counter hasMoreAlignments = true; DEBUG2("set region"); return true; } bool AlleleParser::getFirstAlignment(void) { bool hasAlignments = true; if (!GETNEXT(bamMultiReader, currentAlignment)) { hasAlignments = false; } else { while (!currentAlignment.ISMAPPED) { if (!GETNEXT(bamMultiReader, currentAlignment)) { hasAlignments = false; break; } } } if (hasAlignments) { DEBUG2("got first alignment in target region"); } else { if (currentTarget) { DEBUG("Could not find any mapped reads in target region " << currentSequenceName << ":" << currentTarget->left << ".." << currentTarget->right + 1); } else { DEBUG("Could not find any mapped reads in target region " << currentSequenceName); } return false; } return true; } bool AlleleParser::getFirstVariant(void) { hasMoreVariants = false; if (variantCallInputFile.is_open()) { if (!variantCallInputFile.getNextVariant(*currentVariant)) { hasMoreVariants = false; } else { hasMoreVariants = true; } if (hasMoreVariants) { DEBUG2("got first variant in target region"); } else { return false; } } return true; } void AlleleParser::clearRegisteredAlignments(void) { DEBUG2("clearing registered alignments and alleles"); registeredAlignments.clear(); registeredAlleles.clear(); } // TODO // this should be simplified // there are two modes of operation // that in which we have targets // and that without // // if we have targets, we need to keep track of which we're in // and if we're outside of it, try to get to the next one // and, if we have targets, we will try to jump around the bam file // // if we don't have targets we will just GetNextAlignment until we can't // anymore. all positionality of the parser will respond to input alignments. // // rewrite things so that we aren't strung out between 8 functions // // stepping // // if the next position is outside of target region // seek to next target which is in-bounds for its sequence // if none exist, return false // bool AlleleParser::toNextPosition(void) { // is this our first position? (indicated by empty currentSequenceName) // if so, load it up bool first_pos = false; if (currentSequenceName.empty()) { DEBUG("loading first target"); if (!toNextTarget()) { return false; } first_pos = true; } // here we assume we are processing an entire BAM or one contiguous region if (parameters.useStdin || targets.empty()) { // here we loop over unaligned reads at the beginning of a target // we need to get to a mapped read to figure out where we are while (hasMoreAlignments && !currentAlignment.ISMAPPED) { hasMoreAlignments = GETNEXT(bamMultiReader, currentAlignment); } // determine if we have more alignments or not if (!hasMoreAlignments) { if (hasMoreInputVariants()) { // continue as we have more variants DEBUG("continuing because we have more input variants"); loadNextPositionWithInputVariant(); } else if (registeredAlignments.empty()) { DEBUG("no more alignments in input"); return false; } else if (currentPosition >= currentSequence.size() + currentSequenceStart) { DEBUG("no more alignments in input"); DEBUG("at end of sequence"); return false; } else { ++currentPosition; } } else { // step the position if (!first_pos) { ++currentPosition; } // if the current position of this alignment is outside of the reference sequence length // we need to switch references if (currentPosition >= reference.sequenceLength(currentSequenceName) || (registeredAlignments.empty() && currentRefID != currentAlignment.REFID)) { DEBUG("at end of sequence"); clearRegisteredAlignments(); coverageSkippedPositions.clear(); cachedRepeatCounts.clear(); coverage.clear(); loadNextPositionWithAlignmentOrInputVariant(currentAlignment); justSwitchedTargets = true; } } } else { // or if it's not we should step to the next position if (!first_pos) { ++currentPosition; } // if we've run off the right edge of a target, jump if (currentPosition > currentTarget->right) { // time to move to a new target DEBUG("next position " << (long int) currentPosition << " outside of current target right bound " << currentTarget->right + 1); // try to get to the next one, and if this fails, bail out if (!toNextTarget()) { DEBUG("no more targets, finishing"); return false; } justSwitchedTargets = true; } } // so we have to make sure it's still there (this matters in low-coverage) currentReferenceBase = currentReferenceBaseChar(); // handle the case in which we don't have targets but in which we've switched reference sequence DEBUG("processing position " << (long unsigned int) currentPosition + 1 << " in sequence " << currentSequenceName); vector newAlleles; updateAlignmentQueue(currentPosition, newAlleles); addToRegisteredAlleles(newAlleles); DEBUG2("updating variants"); // done typically at each new read, but this handles the case where there is no data for a while //updateInputVariants(currentPosition, 1); // remove past registered alleles DEBUG2("marking previous alleles as processed and removing from registered alleles"); removePreviousAlleles(registeredAlleles, currentPosition); // if we have alignments which ended at the previous base, erase them and their alleles DEBUG2("erasing old registered alignments"); map >::iterator f = registeredAlignments.begin(); set positionsToErase; set allelesToErase; while (f != registeredAlignments.end() && f->first < currentPosition - lastHaplotypeLength) { for (deque::iterator d = f->second.begin(); d != f->second.end(); ++d) { for (vector::iterator a = d->alleles.begin(); a != d->alleles.end(); ++a) { allelesToErase.insert(&*a); } } positionsToErase.insert(f->first); ++f; } for (vector::iterator a = registeredAlleles.begin(); a != registeredAlleles.end(); ++a) { if (allelesToErase.count(*a)) { *a = NULL; } } registeredAlleles.erase(remove(registeredAlleles.begin(), registeredAlleles.end(), (Allele*)NULL), registeredAlleles.end()); for (set::iterator p = positionsToErase.begin(); p != positionsToErase.end(); ++p) { registeredAlignments.erase(*p); } // and do the same for the variants from the input VCF DEBUG2("erasing old input variant alleles"); int refid = bamMultiReader.GETREFID(currentSequenceName); if (inputVariantAlleles.find(refid) != inputVariantAlleles.end()) { map >::iterator v = inputVariantAlleles[refid].begin(); while (v != inputVariantAlleles[refid].end() && v->first < currentPosition) { inputVariantAlleles[refid].erase(v++); } for (map > >::iterator v = inputVariantAlleles.begin(); v != inputVariantAlleles.end(); ++v) { if (v->first != refid) inputVariantAlleles.erase(v); } } DEBUG2("erasing old input haplotype basis alleles"); map >::iterator z = haplotypeBasisAlleles.begin(); while (z != haplotypeBasisAlleles.end() && z->first < currentPosition) { haplotypeBasisAlleles.erase(z++); } DEBUG2("erasing old cached repeat counts"); map >::iterator rc = cachedRepeatCounts.begin(); while (rc != cachedRepeatCounts.end() && rc->first < currentPosition) { cachedRepeatCounts.erase(rc++); } DEBUG2("erasing old coverage cap"); while (coverageSkippedPositions.size() && *coverageSkippedPositions.begin() < currentPosition) { coverageSkippedPositions.erase(coverageSkippedPositions.begin()); } DEBUG2("erasing old coverage counts"); map::iterator cov = coverage.begin(); while (cov != coverage.end() && cov->first < currentPosition) { coverage.erase(cov++); } return true; } // XXX for testing only, steps targets but does nothing bool AlleleParser::dummyProcessNextTarget(void) { if (!toNextTarget()) { DEBUG("no more targets, finishing"); return false; } while (GETNEXT(bamMultiReader, currentAlignment)) { } return true; } void AlleleParser::removeDuplicateAlleles(Samples& samples, map >& alleleGroups, int allowedAlleleTypes, int haplotypeLength, Allele& refallele) { map seqCounts; bool multipleAllelesWithIdenticalAlts = false; string refseq = currentReferenceHaplotype(); ++seqCounts[refseq]; for (map >::iterator a = alleleGroups.begin(); a != alleleGroups.end(); ++a) { Allele& allele = *a->second.front(); if (seqCounts[allele.alternateSequence] > 0) { multipleAllelesWithIdenticalAlts = true; break; } else { ++seqCounts[allele.alternateSequence]; } } if (multipleAllelesWithIdenticalAlts) { homogenizeAlleles(alleleGroups, refseq, refallele); getAlleles(samples, allowedAlleleTypes, haplotypeLength, false, true); alleleGroups.clear(); groupAlleles(samples, alleleGroups); // groups by alternate sequence } } // adjusts the registered alignment and contained alleles so that one allele // covers the entire haplotype window // returns a vector of pointers to alleles generated in this process // alleles which are discarded are not explicitly removed, but 'squashed', // which triggers their collection later bool RegisteredAlignment::fitHaplotype(int haplotypeStart, int haplotypeLength, Allele*& aptr, bool allowPartials) { // if the read overlaps the haplotype window, // generate one Allele to describe the read in that region // and "squash" the unused ones vector newAllelesPtr; vector newAlleles; int haplotypeEnd = haplotypeStart + haplotypeLength; //if (containedAlleleTypes == ALLELE_REFERENCE) { // return false; //} /* cerr << "start: " << start << " end: " << end << endl; cerr << "haplotypestart: " << haplotypeStart << " haplotypeend: " << haplotypeEnd << endl; cerr << "registered alignment alleles," << endl << alleles << endl; */ // save and bail out if we can't construct a haplotype allele vector savedAlleles = alleles; if ((allowPartials && (start <= haplotypeEnd || end >= haplotypeStart)) || (start <= haplotypeStart && end >= haplotypeEnd)) { vector::iterator a = alleles.begin(); //cerr << "trying to find overlapping haplotype alleles for the range " << haplotypeStart << " to " << haplotypeEnd << endl; //cerr << alleles << endl; while (a+1 != alleles.end()) { if (a->position <= haplotypeStart && a->position + a->referenceLength > haplotypeStart) { break; } ++a; } if (!(a->position <= haplotypeStart && a->position + a->referenceLength > haplotypeStart)) { return false; } vector::iterator b = alleles.begin(); while (b + 1 != alleles.end()) { if (b->position < haplotypeEnd && b->position + b->referenceLength >= haplotypeEnd) { break; } ++b; } if (!(b->position < haplotypeEnd && b->position + b->referenceLength >= haplotypeEnd)) { return false; // nothing to do here } // do not attempt to build haplotype alleles where there are non-contiguous reads /* for (vector::iterator p = alleles.begin(); p != alleles.end(); ++p) { if (p != alleles.begin()) { if (p->position != (p - 1)->position + (p - 1)->referenceLength) { cerr << "non-contiguous reads, cannot construct haplotype allele" << endl; return true; } } } */ // conceptually it will be easier to work on the haplotype obs if the reference alleles match the haplotype specification //if (a == b && a->isReference()) { // break the reference observation //cerr << "we just have a reference allele" << endl; //return true; //} string seq; vector > cigar; vector quals; // now "a" should overlap the start of the haplotype block, and "b" the end //cerr << "block start overlaps: " << *a << endl; //cerr << "block end overlaps: " << *b << endl; //cerr << "haplotype start: " << haplotypeStart << endl; for (vector::iterator p = a; p != (b+1); ++p) { if (p->isNull()) return false; // can't assemble across NULL alleles } // adjust a to match the start of the haplotype block if (a->position == haplotypeStart) { // nothing to do! } else if (a->position < haplotypeStart) { // squeeze bases off the front of this allele onto the last allele // generating a new allele if there isn't one Allele newAllele = *a; newAllele.subtractFromEnd(a->position + a->referenceLength - haplotypeStart, seq, cigar, quals); a->subtractFromStart(haplotypeStart - a->position, seq, cigar, quals); newAlleles.push_back(newAllele); } if (b->position + b->referenceLength == haplotypeEnd) { // nothing to do!!!! } else if (b->position + b->referenceLength > haplotypeEnd) { Allele newAllele = *b; //cerr << "subtracting " << haplotypeEnd - b->position << " from start " << newAllele << endl; newAllele.subtractFromStart(haplotypeEnd - b->position, seq, cigar, quals); if (isUnflankedIndel(newAllele)) { if (b + 1 != alleles.end()) { ++b; } } else { b->subtractFromEnd(b->position + b->referenceLength - haplotypeEnd, seq, cigar, quals); newAlleles.push_back(newAllele); } } // now, for everything between a and b, merge them into one allele while (a != b) { vector > cigarV = splitCigar(a->cigar); vector::iterator p = a + 1; // update the quality of the merged allele in the same way as we do // for complex events if (!a->isReference() && !a->isNull()) { p->quality = min(a->quality, p->quality); // note that phred and log are inverted p->lnquality = max(a->lnquality, p->lnquality); } p->addToStart(a->alternateSequence, cigarV, a->baseQualities); a->squash(); ++a; } // remove any 0-length alleles, these are useless // this operation requires independent removal of references to these alleles (e.g. registeredAlleles.clear()) alleles.erase(remove_if(alleles.begin(), alleles.end(), isEmptyAllele), alleles.end()); for (vector::iterator p = newAlleles.begin(); p != newAlleles.end(); ++p) { alleles.push_back(*p); } AllelePositionCompare apcomp; sort(alleles.begin(), alleles.end(), apcomp); // now the pointers have changed, so find the allele we want... again!!!!!! //cerr << "registered alignment alleles, after haplotype construction," << endl << alleles << endl; bool hasHaplotypeAllele = false; bool dividedIndel = false; for (vector::iterator p = alleles.begin(); p != alleles.end(); ++p) { // fix the "base" if (!p->isReference()) { p->update(haplotypeLength); } //cerr << *p << endl; if (p->position == haplotypeStart && p->position + p->referenceLength == haplotypeEnd) { aptr = &*p; if (isUnflankedIndel(*p)) { hasHaplotypeAllele = false; dividedIndel = true; } else { hasHaplotypeAllele = true; } break; } } if (hasHaplotypeAllele) { //cerr << "registered alignment alleles after (pass)," << endl << alleles << endl; return true; } else { if (!allowPartials) { alleles = savedAlleles; // reset alleles } //cerr << "registered alignment alleles after (fail)," << endl << alleles << endl; return false; //assert(hasHaplotypeAllele); } } else { cerr << "registered alignment alleles after (pass)," << endl << alleles << endl; return true; } } void AlleleParser::buildHaplotypeAlleles( vector& alleles, Samples& samples, map >& alleleGroups, // provides observation group counts, counts of partial observations map >& partialObservationGroups, map >& partialObservationSupport, int allowedAlleleTypes) { int haplotypeLength = 1; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = *a; if (allele.isReference()) continue; // check if there are any complex alleles if (allele.referenceLength > haplotypeLength) { DEBUG("reference length of " << allele << " is " << allele.referenceLength << " so extending haplotype"); haplotypeLength = allele.referenceLength; } // check if we are embedded in a repeat structure if (allele.repeatRightBoundary > currentPosition + haplotypeLength) { DEBUG("right boundary " << allele.repeatRightBoundary << " for " << allele << " is past " << currentPosition + haplotypeLength); haplotypeLength = allele.repeatRightBoundary - currentPosition; } } // return here if we have no registered alignments if (registeredAlignments.empty()) return; // always attempt to determine haplotype length in this fashion { DEBUG("haplotype length is " << haplotypeLength); // NB: for indels in tandem repeats, if the indel sequence is // derived from the repeat structure, build the haplotype // across the entire repeat pattern. This ensures we actually // can discriminate between reference and indel/complex // alleles in the most common misalignment case. For indels // that match the repeat structure, we have cached the right // boundary of the repeat. We build the haplotype to the // maximal boundary indicated by the present alleles. int oldHaplotypeLength = haplotypeLength; do { oldHaplotypeLength = haplotypeLength; // rebuild samples samples.clear(); long int maxAlignmentEnd = registeredAlignments.rbegin()->first; for (long int i = currentPosition+1; i < maxAlignmentEnd; ++i) { deque& ras = registeredAlignments[i]; for (deque::iterator r = ras.begin(); r != ras.end(); ++r) { RegisteredAlignment& ra = *r; if ((ra.start > currentPosition && ra.start < currentPosition + haplotypeLength) || (ra.end > currentPosition && ra.end < currentPosition + haplotypeLength)) { Allele* aptr; bool allowPartials = true; ra.fitHaplotype(currentPosition, haplotypeLength, aptr, allowPartials); for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { registeredAlleles.push_back(&*a); } } } } getAlleles(samples, allowedAlleleTypes, haplotypeLength, true, true); alleleGroups.clear(); groupAlleles(samples, alleleGroups); alleles = genotypeAlleles(alleleGroups, samples, parameters.onlyUseInputAlleles); for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = *a; if (!allele.isReference()) { long int alleleend = (allele.position + allele.referenceLength); // this adjustment forces reference observations to overlap the ends of the indels //if (allele.isInsertion() || allele.isDeletion()) { // alleleend += 1; //} long int hapend = max((long int) alleleend, allele.repeatRightBoundary); /* cerr << currentPosition + haplotypeLength << " vs " << alleleend << " end " << hapend << " ? " << allele.position + allele.referenceLengthFromCigar() << " hapend for " << allele << endl; */ if (hapend > currentPosition + haplotypeLength) { DEBUG("adjusting haplotype length to " << hapend - currentPosition << " to overlap allele end " << alleleend << " or right repeat boundary " << allele.repeatRightBoundary << " " << allele); haplotypeLength = hapend - currentPosition; } } } } while (haplotypeLength != oldHaplotypeLength); // && haplotypeLength < parameters.maxHaplotypeLength); // TODO? //haplotypeLength = min(parameters.maxHaplotypeLength, haplotypeLength); // TODO adjust haplotypes over indels to include +1 bp on 3' end // this will force reference observations across the entire allele // for each non-reference allele within the haplotype length of this // position, adjust the length and reference sequences of the adjacent // alleles DEBUG("fitting haplotype block " << currentPosition << " to " << currentPosition + haplotypeLength << ", " << haplotypeLength << "bp"); lastHaplotypeLength = haplotypeLength; registeredAlleles.clear(); samples.clear(); vector haplotypeObservations; getCompleteObservationsOfHaplotype(samples, haplotypeLength, haplotypeObservations); addToRegisteredAlleles(haplotypeObservations); DEBUG("added to registered alleles"); // add partial observations // first get all the alleles up to the end of the haplotype window vector partialHaplotypeObservations; if (parameters.usePartialObservations && haplotypeLength > 1) { getPartialObservationsOfHaplotype(samples, haplotypeLength, partialHaplotypeObservations); } DEBUG("got partial observations of haplotype"); //addToRegisteredAlleles(partialHaplotypeObservations); // now align the sequences of these alleles to the haplotype alleles // and put them into the partials bin in each sample // correct quality and alternate sequence for reference for (vector::iterator h = haplotypeObservations.begin(); h != haplotypeObservations.end(); ++h) { if ((*h)->position == currentPosition && (*h)->referenceLength == haplotypeLength) { (*h)->currentBase = (*h)->alternateSequence; (*h)->setQuality(); (*h)->update(haplotypeLength); if ((*h)->isReference()) { // HACK.. undoes damage of update() call (*h)->currentBase = (*h)->alternateSequence; } } } for (vector::iterator p = partialHaplotypeObservations.begin(); p != partialHaplotypeObservations.end(); ++p) { (*p)->currentBase = (*p)->alternateSequence; (*p)->setQuality(); (*p)->update(haplotypeLength); } DEBUG("done updating"); if (parameters.debug) { cerr << "refr_seq\t" << currentPosition << "\t\t" << reference.getSubSequence(currentSequenceName, currentPosition, haplotypeLength) << endl; for (vector::iterator h = haplotypeObservations.begin(); h != haplotypeObservations.end(); ++h) { if ((*h)->position == currentPosition && (*h)->referenceLength == haplotypeLength) { cerr << "haplo_obs\t" << (*h)->position << "\t" << (*h)->lnquality << "\t" //<< (*h)->currentBase << "\t" << string(max((long int)0,(*h)->position-currentPosition), ' ') << (*h)->alternateSequence << "\t" << *h << endl; } } for (vector::iterator p = partialHaplotypeObservations.begin(); p != partialHaplotypeObservations.end(); ++p) { if ((*p)->position >= currentPosition && (*p)->position < currentPosition+haplotypeLength) { cerr << "part_obs\t" << (*p)->position << "\t" << (*p)->lnquality << "\t" //<< (*p)->currentBase << "\t" << string(max((long int)0,(*p)->position-currentPosition), ' ') << (*p)->alternateSequence << "\t" << *p << endl; } } } // now re-get the alleles getAlleles(samples, allowedAlleleTypes, haplotypeLength, false, true); // re-group the alleles using groupAlleles() alleleGroups.clear(); groupAlleles(samples, alleleGroups); /* if (parameters.debug) { DEBUG("after re-grouping alleles"); for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { cerr << s->first << endl; for (Sample::iterator t = s->second.begin(); t != s->second.end(); ++t) { cerr << t->first << " " << t->second << endl << endl; } } } */ Allele refAllele = genotypeAllele(ALLELE_REFERENCE, reference.getSubSequence(currentSequenceName, currentPosition, haplotypeLength), haplotypeLength, convert(haplotypeLength)+"M", haplotypeLength, currentPosition); // are there two alleles with the same alt sequence? // if so, homogenize them, and then re-sort the alleles // ensure uniqueness of registered alleles sort(registeredAlleles.begin(), registeredAlleles.end()); registeredAlleles.erase(unique(registeredAlleles.begin(), registeredAlleles.end()), registeredAlleles.end()); removeDuplicateAlleles(samples, alleleGroups, allowedAlleleTypes, haplotypeLength, refAllele); alleles = genotypeAlleles(alleleGroups, samples, parameters.onlyUseInputAlleles, haplotypeLength); // require all complete observations to effectively cover the same amount of sequence // basically, the "probe" length should be the same or we will incur bias when generating likelihoods // should these be put into the partial observations bin? int maxAlleleLength = haplotypeLength; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { // get max allele length if (a->alternateSequence.size() > maxAlleleLength) maxAlleleLength = a->alternateSequence.size(); } // bound this to 50bp so as to not drop out reference obs when we have long insertions directly encoded in the reads maxAlleleLength = min(50, maxAlleleLength); //cerr << "max allele length is " << maxAlleleLength << " but haplotype length = " << haplotypeLength << endl; // XXX make work for deletions as well if (maxAlleleLength > haplotypeLength) { //cerr << "max allele length = " << maxAlleleLength << endl; removeAllelesWithoutReadSpan(registeredAlleles, maxAlleleLength, haplotypeLength); samples.clear(); // require that reference obs are over an equivalent amount of sequence as the max allele length getAlleles(samples, allowedAlleleTypes, haplotypeLength, false, true); alleleGroups.clear(); groupAlleles(samples, alleleGroups); // groups by alternate sequence // establish alleles again, now that we've filtered observations which don't have the required probe length alleles = genotypeAlleles(alleleGroups, samples, parameters.onlyUseInputAlleles, haplotypeLength); } // force the ref allele into the analysis, if it somehow isn't supported // this can happen where we don't have sufficient read span, such as in long deletions // or where our samples are homozygous for an alternate if (!parameters.useRefAllele) { vector refAlleleVector; refAlleleVector.push_back(refAllele); alleles = alleleUnion(alleles, refAlleleVector); } // this is where we have established our genotype alleles /* for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { cerr << "genotype allele " << &*a << " " << *a << endl; } */ // pick up observations that are potentially partial (not unambiguous) // the way to do this is to test the full observations as if they are partial, and if they // end up partially supporting multiple observations, removing them from the "complete" observations if (parameters.usePartialObservations && haplotypeLength > 1) { // check this out // here we are going to pass a set of full haplotype observations // and we'll remove now-partial obs from the full set samples.assignPartialSupport(alleles, haplotypeObservations, partialObservationGroups, partialObservationSupport, currentPosition, haplotypeLength); vector pureHaplotypeObservations; for (vector::iterator h = haplotypeObservations.begin(); h != haplotypeObservations.end(); ++h) { //if (partialObservationSupport.find(*h) != partialObservationSupport.end()) //cerr << "partials for " << **h << " are " << partialObservationSupport[*h].size() << endl; if (partialObservationSupport.find(*h) != partialObservationSupport.end() && partialObservationSupport[*h].size() > 0) { DEBUG("full obs " << **h << " is actually partial and supports " << partialObservationSupport[*h].size() << " alleles"); partialObservationSupport.erase(*h); // and remove from partial observation groups? } else { //cerr << "saving " << *h << endl; pureHaplotypeObservations.push_back(*h); } } // now regenerate partial observation groups using updated partial support partialObservationGroups.clear(); for (map >::iterator p = partialObservationSupport.begin(); p != partialObservationSupport.end(); ++p) { set& supported = p->second; for (set::iterator s = supported.begin(); s != supported.end(); ++s) { partialObservationGroups[(*s)->currentBase].push_back(p->first); } } // and keep only the pure haplotype observations for further use haplotypeObservations = pureHaplotypeObservations; addToRegisteredAlleles(haplotypeObservations); // clean up potential duplicates sort(registeredAlleles.begin(), registeredAlleles.end()); registeredAlleles.erase(unique(registeredAlleles.begin(), registeredAlleles.end()), registeredAlleles.end()); samples.clearFullObservations(); getAlleles(samples, allowedAlleleTypes, haplotypeLength, false, true); alleleGroups.clear(); groupAlleles(samples, alleleGroups); // stash partials for later addToRegisteredAlleles(partialHaplotypeObservations); for (vector::iterator p = partialHaplotypeObservations.begin(); p != partialHaplotypeObservations.end(); ++p) { (*p)->currentBase = (*p)->alternateSequence; (*p)->setQuality(); (*p)->update(haplotypeLength); } // now add in partial observations collected from partially-overlapping reads if (!partialHaplotypeObservations.empty()) { samples.assignPartialSupport(alleles, partialHaplotypeObservations, partialObservationGroups, partialObservationSupport, currentPosition, haplotypeLength); } } registeredAlleles.clear(); // reset registered alleles for (map >::iterator ras = registeredAlignments.begin(); ras != registeredAlignments.end(); ++ras) { deque& rq = ras->second; for (deque::iterator rai = rq.begin(); rai != rq.end(); ++rai) { RegisteredAlignment& ra = *rai; for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { registeredAlleles.push_back(&*a); } } } if (!parameters.useRefAllele) { vector refAlleleVector; refAlleleVector.push_back(refAllele); alleles = alleleUnion(alleles, refAlleleVector); } //removeDuplicateAlleles(samples, alleleGroups, allowedAlleleTypes, haplotypeLength); //alleles = genotypeAlleles(alleleGroups, samples, parameters.onlyUseInputAlleles, haplotypeLength); } // hack......... TODO unhack this and set in Sample class samples.setSupportedAlleles(); // processed flag.. //unsetAllProcessedFlags(); // redundant? // remove alleles which should no longer be considered //removePreviousAlleles(registeredAlleles, currentPosition); lastHaplotypeLength = haplotypeLength; } void AlleleParser::getCompleteObservationsOfHaplotype(Samples& samples, int haplotypeLength, vector& haplotypeObservations) { for (map >::iterator ras = registeredAlignments.begin(); ras != registeredAlignments.end(); ++ras) { deque& rq = ras->second; for (deque::iterator rai = rq.begin(); rai != rq.end(); ++rai) { RegisteredAlignment& ra = *rai; Allele* aptr; // this guard prevents trashing allele pointers when getting partial observations //cerr << ra.start << " <= " << currentPosition << " && " << ra.end << " >= " << currentPosition + haplotypeLength << endl; if (ra.start <= currentPosition && ra.end >= currentPosition + haplotypeLength) { if (ra.fitHaplotype(currentPosition, haplotypeLength, aptr)) { for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { //cerr << a->position << " == " << currentPosition << " && " << a->referenceLength << " == " << haplotypeLength << endl; if (a->position == currentPosition && a->referenceLength == haplotypeLength) { haplotypeObservations.push_back(&*a); } } } /*else { DEBUG("could not fit observation " << ra.name << " with alleles " << ra.alleles); // the alleles have (possibly) been changed in fithaplotype, so add them to the registered alleles again for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { registeredAlleles.push_back(&*a); } }*/ } } } DEBUG("got complete observations of haplotype"); } void AlleleParser::unsetAllProcessedFlags(void) { for (map >::iterator ras = registeredAlignments.begin(); ras != registeredAlignments.end(); ++ras) { deque& rq = ras->second; for (deque::iterator rai = rq.begin(); rai != rq.end(); ++rai) { RegisteredAlignment& ra = *rai; Allele* aptr; for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { a->processed = false; // re-trigger use of all alleles } } } } // process the next length bp of alignments, so as to get allele observations partially overlapping our calling window void AlleleParser::getPartialObservationsOfHaplotype(Samples& samples, int haplotypeLength, vector& partials) { //cerr << "getting partial observations of haplotype from " << currentPosition << " to " << currentPosition + haplotypeLength << endl; vector newAlleles; bool gettingPartials = true; DEBUG("in AlleleParser::getPartialObservationsOfHaplotype, updating alignment queue"); updateAlignmentQueue(currentPosition + haplotypeLength, newAlleles, gettingPartials); DEBUG("in AlleleParser::getPartialObservationsOfHaplotype, done updating alignment queue"); vector otherObs; vector partialObs; // now get the partial obs // get the max alignment end position, iterate to there long int maxAlignmentEnd = registeredAlignments.rbegin()->first; for (long int i = currentPosition+1; i < maxAlignmentEnd; ++i) { DEBUG("getting partial observations of haplotype @" << i); deque& ras = registeredAlignments[i]; for (deque::iterator r = ras.begin(); r != ras.end(); ++r) { RegisteredAlignment& ra = *r; if ((ra.start > currentPosition && ra.start < currentPosition + haplotypeLength) || (ra.end > currentPosition && ra.end < currentPosition + haplotypeLength)) { Allele* aptr; bool allowPartials = true; ra.fitHaplotype(currentPosition, haplotypeLength, aptr, allowPartials); for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { if (a->position >= currentPosition && a->position < currentPosition+haplotypeLength && !a->isNull()) { //a->processed = false; // re-trigger use of all alleles partials.push_back(&*a); } else { //a->processed = false; otherObs.push_back(&*a); } } } else { for (vector::iterator a = ra.alleles.begin(); a != ra.alleles.end(); ++a) { //a->processed = false; otherObs.push_back(&*a); } } } } //addToRegisteredAlleles(partialObs); addToRegisteredAlleles(otherObs); } bool AlleleParser::getNextAlleles(Samples& samples, int allowedAlleleTypes) { long int nextPosition = currentPosition + lastHaplotypeLength; while (currentPosition < nextPosition) { if (!toNextPosition()) { return false; } else { // triggers cleanup if (justSwitchedTargets) { nextPosition = 0; justSwitchedTargets = false; } getAlleles(samples, allowedAlleleTypes); } } lastHaplotypeLength = 1; return true; } void AlleleParser::getAlleles(Samples& samples, int allowedAlleleTypes, int haplotypeLength, bool getAllAllelesInHaplotype, bool ignoreProcessedFlag) { Samples gvcf_held; // make some samples that by bass filtering for gvcf lines DEBUG2("getting alleles"); samples.clear(); // Commenting this out and replacinf with .clear() to relly empty it, it is more aloc, but no major change //for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) // s->second.clear(); // TODO ^^^ this should be optimized for better scanning performance // if we have targets and are outside of the current target, don't return anything // add the reference allele to the analysis if (parameters.useRefAllele) { if (currentReferenceAllele) delete currentReferenceAllele; // clean up after last position currentReferenceAllele = referenceAllele(parameters.MQR, parameters.BQR); samples[referenceSampleName].clear(); samples[referenceSampleName][currentReferenceAllele->currentBase].push_back(currentReferenceAllele); //alleles.push_back(currentReferenceAllele); } // get the variant alleles *at* the current position // and the reference alleles *overlapping* the current position for (vector::const_iterator a = registeredAlleles.begin(); a != registeredAlleles.end(); ++a) { Allele& allele = **a; //cerr << "getting alleles at position " << currentPosition << " with length " << haplotypeLength << " " << allele << endl; if (!ignoreProcessedFlag && allele.processed) continue; //cerr << "allele " << allele << endl; if (allowedAlleleTypes & allele.type && ((haplotypeLength > 1 && ((allele.type == ALLELE_REFERENCE && allele.position <= currentPosition && allele.position + allele.referenceLength >= currentPosition + haplotypeLength) || (allele.position == currentPosition && allele.referenceLength == haplotypeLength) || (getAllAllelesInHaplotype && allele.type != ALLELE_REFERENCE && allele.position >= currentPosition && allele.position < currentPosition + haplotypeLength))) || (haplotypeLength == 1 && ((allele.type == ALLELE_REFERENCE && allele.position <= currentPosition && allele.position + allele.referenceLength > currentPosition) || (allele.position == currentPosition))) ) ) { allele.update(haplotypeLength); if(parameters.gVCFout){ gvcf_held[allele.sampleID][allele.currentBase].push_back(*a); // store things incase } if (allele.quality >= parameters.BQL0 && allele.currentBase != "N" && (allele.isReference() || !allele.alternateSequence.empty())) { // filters haplotype construction chaff //cerr << "keeping allele " << allele << endl; samples[allele.sampleID][allele.currentBase].push_back(*a); // XXX testing if (!getAllAllelesInHaplotype) { allele.processed = true; if (haplotypeLength > 1) { if (!allele.isReference() && !(allele.position == currentPosition && allele.referenceLength == haplotypeLength)) { cerr << "non-reference allele should not be added to result alleles because it does not match the haplotype!:" << endl; cerr << "haplotype is from " << currentPosition << " to " << currentPosition + haplotypeLength << ", " << haplotypeLength << "bp" << endl; cerr << allele << endl; assert(false); } } } } } } if(samples.size() == 0 && parameters.gVCFout){ samples = gvcf_held; // if there are no non reference vals try to recover any allined values for gvcf if doing gvcf output!! } vector samplesToErase; // now remove empty alleles from our return so as to not confuse processing for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { const string& name = s->first; Sample& sample = s->second; // move updated reference alleles to the right bin // everything else will get axed //sample.sortReferenceAlleles(); bool empty = true; vector genotypesToErase; // and remove any empty groups which remain for (Sample::iterator g = sample.begin(); g != sample.end(); ++g) { if (g->second.empty()) { //cerr << "sample " << name << " has an empty " << g->first << endl; //sample.erase(g); genotypesToErase.push_back(g->first); } else { // accumulate bitmap of unique types empty = false; } } for (vector::iterator gt = genotypesToErase.begin(); gt != genotypesToErase.end(); ++gt) { sample.erase(*gt); } // and remove the entire sample if it has no alleles if (empty || currentSamplePloidy(name) == 0) { samplesToErase.push_back(name); } } for (vector::iterator name = samplesToErase.begin(); name != samplesToErase.end(); ++name) { samples.erase(*name); } DEBUG2("done getting alleles"); } Allele* AlleleParser::referenceAllele(int mapQ, int baseQ) { string base = currentReferenceBaseString(); //string name = reference.filename; string name = currentSequenceName; // this behavior matches old bambayes string sequencingTech = "reference"; string baseQstr = ""; //baseQstr += qualityInt2Char(baseQ); Allele* allele = new Allele(ALLELE_REFERENCE, currentSequenceName, currentPosition, ¤tPosition, ¤tReferenceBase, 1, currentPosition + 1, 0, 0, base, name, name, name, sequencingTech, true, baseQ, baseQstr, mapQ, false, false, false, "1M", NULL, currentPosition, currentPosition+1); // pair information allele->genotypeAllele = true; allele->baseQualities.push_back(baseQ); allele->update(); return allele; } vector AlleleParser::genotypeAlleles( map >& alleleGroups, // alleles grouped by equivalence Samples& samples, // alleles grouped by sample bool useOnlyInputAlleles, int haplotypeLength ) { vector > unfilteredAlleles; DEBUG("getting genotype alleles"); for (map >::iterator group = alleleGroups.begin(); group != alleleGroups.end(); ++group) { // for each allele that we're going to evaluate, we have to have at least one supporting read with // map quality >= MQL1 and the specific quality of the allele has to be >= BQL1 DEBUG("allele group " << group->first); vector& alleles = group->second; DEBUG(alleles); if (!allATGC(group->second.front()->alternateSequence)) { DEBUG("allele group contains partially-null observations, skipping"); continue; } if (alleles.size() < parameters.minAltTotal) { DEBUG("allele group lacks sufficient observations in the whole population (min-alternate-total)"); continue; } bool passesFilters = false; int qSum = 0; int mqSum = 0; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { DEBUG2("allele " << **a); Allele& allele = **a; qSum += allele.quality; mqSum += allele.mapQuality; } if (qSum >= parameters.minSupportingAlleleQualitySum && mqSum >= parameters.minSupportingMappingQualitySum) { Allele& allele = *(alleles.front()); int length = allele.length; int reflength = allele.referenceLength; string altseq = allele.alternateSequence; if (allele.type == ALLELE_REFERENCE) { length = haplotypeLength; reflength = haplotypeLength; if (haplotypeLength == 1) { altseq = currentReferenceBase; } else { altseq = reference.getSubSequence(currentSequenceName, currentPosition, haplotypeLength); } } unfilteredAlleles.push_back(make_pair(genotypeAllele(allele.type, altseq, length, allele.cigar, reflength, allele.position, allele.repeatRightBoundary), qSum)); } } DEBUG("found genotype alleles"); map filteredAlleles; DEBUG("filtering genotype alleles which are not supported by at least " << parameters.minAltCount << " observations comprising at least " << parameters.minAltFraction << " of the observations in a single individual"); for (vector >::iterator p = unfilteredAlleles.begin(); p != unfilteredAlleles.end(); ++p) { Allele& genotypeAllele = p->first; int qSum = p->second; DEBUG("genotype allele: " << genotypeAllele << " qsum " << qSum); for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { Sample& sample = s->second; int alleleCount = 0; int qsum = 0; Sample::iterator c = sample.find(genotypeAllele.currentBase); if (c != sample.end()) { vector& obs = c->second; alleleCount = obs.size(); for (vector::iterator a = obs.begin(); a != obs.end(); ++a) { Allele& allele = **a; qsum += allele.quality; } } int observationCount = sample.observationCount(); if (qsum >= parameters.minAltQSum && alleleCount >= parameters.minAltCount && ((float) alleleCount / (float) observationCount) >= parameters.minAltFraction) { DEBUG(genotypeAllele << " has support of " << alleleCount << " in individual " << s->first << " (" << observationCount << " obs)" << " and fraction " << (float) alleleCount / (float) observationCount); filteredAlleles[genotypeAllele] = qSum; break; //out << *genotypeAllele << endl; } } } DEBUG("filtered genotype alleles"); vector resultAlleles; vector resultIndelAndMNPAlleles; //string refBase = currentReferenceBaseString(); // XXX XXX XXX string refBase = currentReferenceHaplotype(); if (parameters.useBestNAlleles == 0) { // this means "use everything" bool hasRefAllele = false; for (map::iterator p = filteredAlleles.begin(); p != filteredAlleles.end(); ++p) { if (p->first.currentBase == refBase) hasRefAllele = true; DEBUG("adding allele to result alleles " << p->first.currentBase); resultAlleles.push_back(p->first); } // and add the reference allele if we need it if (parameters.forceRefAllele && !hasRefAllele) { DEBUG("including reference allele"); // XXX TODO change to get the haplotype of the reference sequence resultAlleles.insert(resultAlleles.begin(), genotypeAllele(ALLELE_REFERENCE, refBase, 1, "1M", 1, currentPosition)); } } else { // this means, use the N best vector > sortedAlleles; for (map::iterator p = filteredAlleles.begin(); p != filteredAlleles.end(); ++p) { sortedAlleles.push_back(make_pair(p->first, p->second)); } DEBUG2("sorting alleles to get best alleles"); AllelePairIntCompare alleleQualityCompare; sort(sortedAlleles.begin(), sortedAlleles.end(), alleleQualityCompare); DEBUG("getting " << parameters.useBestNAlleles << " best SNP alleles, and all other alleles"); bool hasRefAllele = false; for (vector >::iterator a = sortedAlleles.begin(); a != sortedAlleles.end(); ++a) { Allele& allele = a->first; if (allele.currentBase == refBase) { hasRefAllele = true; } /* if (allele.type & (ALLELE_DELETION | ALLELE_INSERTION | ALLELE_MNP | ALLELE_COMPLEX)) { DEBUG("adding allele to result alleles " << allele.currentBase); resultIndelAndMNPAlleles.push_back(allele); } else { DEBUG("adding allele to SNP alleles " << allele.currentBase); } */ DEBUG("adding allele to result alleles " << allele.currentBase); resultAlleles.push_back(allele); DEBUG("allele quality sum " << a->second); } DEBUG("found " << sortedAlleles.size() << " SNP/ref alleles of which we now have " << resultAlleles.size() << endl << "and " << resultIndelAndMNPAlleles.size() << " INDEL and MNP alleles"); // if we have reached the limit of allowable alleles, and still // haven't included the reference allele, include it if (parameters.forceRefAllele && !hasRefAllele) { DEBUG("including reference allele in analysis"); resultAlleles.insert(resultAlleles.begin(), genotypeAllele(ALLELE_REFERENCE, refBase, 1, "1M", 1, currentPosition)); } // if we now have too many alleles (most likely one too many), get rid of some while (resultAlleles.size() > parameters.useBestNAlleles) { resultAlleles.pop_back(); } // drop the SNPs back into the set of alleles for (vector::iterator a = resultIndelAndMNPAlleles.begin(); a != resultIndelAndMNPAlleles.end(); ++a) { resultAlleles.push_back(*a); } } // now add in the alleles from the input variant set if (useOnlyInputAlleles) resultAlleles.clear(); // this needs to be fixed in a big way // the alleles have to be put into the local haplotype structure if (inputVariantAlleles.find(currentRefID) != inputVariantAlleles.end()) { map >::iterator v = inputVariantAlleles[currentRefID].find(currentPosition); if (v != inputVariantAlleles[currentRefID].end()) { vector& inputalleles = v->second; for (vector::iterator a = inputalleles.begin(); a != inputalleles.end(); ++a) { DEBUG("evaluating input allele " << *a); Allele& allele = *a; // check if the allele is already present bool alreadyPresent = false; for (vector::iterator r = resultAlleles.begin(); r != resultAlleles.end(); ++r) { if (r->equivalent(allele)) { alreadyPresent = true; break; } } if (!alreadyPresent) { if (allele.position <= currentPosition && allele.referenceLength >= haplotypeLength) { resultAlleles.push_back(allele); } else { string altseq = ""; string cigar = ""; long int extend_left = allele.position - currentPosition; long int extend_right = currentPosition + haplotypeLength - allele.position - allele.referenceLength; if (extend_left > 0) { altseq += currentSequence.substr(currentPosition - currentSequenceStart, extend_left); cigar += convert(extend_left) + "M"; } altseq += allele.alternateSequence; cigar += allele.cigar; if (extend_right > 0) { altseq += currentSequence.substr( allele.position + allele.referenceLength - currentSequenceStart, extend_right); cigar += convert(extend_right) + "M"; } Allele new_allele = genotypeAllele(allele.type, altseq, allele.length + extend_left + extend_right, cigar, haplotypeLength, currentPosition, allele.repeatRightBoundary); DEBUG("Extending input allele " << allele << " -> " << new_allele); resultAlleles.push_back(new_allele); } } } } } // remove non-unique alleles after DEBUG2("found " << resultAlleles.size() << " result alleles"); return resultAlleles; } // homopolymer run length. number of consecutive nucleotides (prior to this // position) in the genome reference sequence matching the alternate allele, // after substituting the alternate in place of the reference sequence allele int AlleleParser::homopolymerRunLeft(string altbase) { int position = currentPosition - 1; int sequenceposition = position - currentSequenceStart; int runlength = 0; while (sequenceposition >= 0 && currentSequence.substr(sequenceposition, 1) == altbase) { ++runlength; --position; sequenceposition = position - currentSequenceStart; } return runlength; } int AlleleParser::homopolymerRunRight(string altbase) { int position = currentPosition + 1; int sequenceposition = position - currentSequenceStart; int runlength = 0; while (sequenceposition >= 0 && currentSequence.substr(sequenceposition, 1) == altbase) { ++runlength; ++position; sequenceposition = position - currentSequenceStart; } return runlength; } map AlleleParser::repeatCounts(long int position, const string& sequence, int maxsize) { map counts; for (int i = 1; i <= maxsize; ++i) { // subseq here i bases string seq = sequence.substr(position, i); // go left. int j = position - i; int leftsteps = 0; while (j >= 0 && seq == sequence.substr(j, i)) { j -= i; ++leftsteps; } // go right. j = position; int rightsteps = 0; while (j + i <= sequence.size() && seq == sequence.substr(j, i)) { j += i; ++rightsteps; } // if we went left and right a non-zero number of times, if (leftsteps + rightsteps > 1) { counts[seq] = leftsteps + rightsteps; } } // filter out redundant repeat information if (counts.size() > 1) { map filteredcounts; map::iterator c = counts.begin(); string prev = c->first; filteredcounts[prev] = c->second; // shortest sequence ++c; for (; c != counts.end(); ++c) { int i = 0; string seq = c->first; while (i + prev.length() <= seq.length() && seq.substr(i, prev.length()) == prev) { i += prev.length(); } if (i < seq.length()) { filteredcounts[seq] = c->second; prev = seq; } } return filteredcounts; } else { return counts; } } bool AlleleParser::isRepeatUnit(const string& seq, const string& unit) { if (seq.size() % unit.size() != 0) { return false; } else { int maxrepeats = seq.size() / unit.size(); for (int i = 0; i < maxrepeats; ++i) { if (seq.substr(i * unit.size(), unit.size()) != unit) { return false; } } return true; } } bool AlleleParser::hasInputVariantAllelesAtCurrentPosition(void) { if (inputVariantAlleles.find(currentRefID) != inputVariantAlleles.end()) { map >::iterator v = inputVariantAlleles[currentRefID].find(currentPosition); if (v != inputVariantAlleles[currentRefID].end()) { return true; } } return false; } bool operator<(const AllelicPrimitive& a, const AllelicPrimitive& b) { return a.ref < b.ref && a.alt < b.alt; } freebayes-1.3.6/src/AlleleParser.h000066400000000000000000000317551417247743000170250ustar00rootroot00000000000000#ifndef FREEBAYES_ALLELEPARSER_H #define FREEBAYES_ALLELEPARSER_H #include #include #include #include #include #include #include #include #include #include #include #include #include "split.h" #include // XXX workaround for a missing include in vcflib's join.h #include "join.h" #include "BedReader.h" #include "Parameters.h" #include "Utility.h" #include "Allele.h" #include "Sample.h" #include "FBFasta.h" #include "TryCatch.h" #include "Genotype.h" #include "CNV.h" #include "Result.h" #include "LeftAlign.h" #include "Variant.h" #include "version_git.h" // the size of the window of the reference which is always cached in memory #define CACHED_REFERENCE_WINDOW 300 // the window of haplotype basis alleles which we ensure we keep // increasing this reduces disk access when using haplotype basis alleles, but increases memory usage #define CACHED_BASIS_HAPLOTYPE_WINDOW 1000 using namespace std; // a structure holding information about our parameters // structure to encapsulate registered reads and alleles class RegisteredAlignment { friend ostream &operator<<(ostream &out, RegisteredAlignment &a); public: //BamAlignment alignment; long unsigned int start; long unsigned int end; int refid; string name; string readgroup; vector alleles; int mismatches; int snpCount; int indelCount; int alleleTypes; RegisteredAlignment(BAMALIGN& alignment) : start(alignment.POSITION) , end(alignment.ENDPOSITION) , refid(alignment.REFID) , name(alignment.QNAME) , mismatches(0) , snpCount(0) , indelCount(0) , alleleTypes(0) { FILLREADGROUP(readgroup, alignment); } void addAllele(Allele allele, bool mergeComplex = true, int maxComplexGap = 0, bool boundIndels = false); bool fitHaplotype(int pos, int haplotypeLength, Allele*& aptr, bool allowPartials = false); void clumpAlleles(bool mergeComplex = true, int maxComplexGap = 0, bool boundIndels = false); }; // functor to filter alleles outside of our analysis window class AlleleFilter { public: AlleleFilter(long unsigned int s, long unsigned int e) : start(s), end(e) {} // true of the allele is outside of our window bool operator()(Allele& a) { return !(start >= a.position && end < a.position + a.length); } bool operator()(Allele*& a) { return !(start >= a->position && end < a->position + a->length); } private: long unsigned int start, end; }; class AllelePtrCmp { public: bool operator()(Allele* &a, Allele* &b) { return a->type < b->type; } }; class AllelicPrimitive { public: string alt; string ref; AllelicPrimitive(string& r, string& a) : ref(r) , alt(a) { } }; bool operator<(const AllelicPrimitive& a, const AllelicPrimitive& b); void capBaseQuality(BAMALIGN& alignment, int baseQualityCap); class AlleleParser { public: Parameters parameters; // holds operational parameters passed at program invocation AlleleParser(int argc, char** argv); ~AlleleParser(void); vector sampleList; // list of sample names, indexed by sample id vector sampleListFromBam; // sample names drawn from BAM file vector sampleListFromVCF; // sample names drawn from input VCF map samplePopulation; // population subdivisions of samples map > populationSamples; // inversion of samplePopulation map readGroupToSampleNames; // maps read groups to samples map readGroupToTechnology; // maps read groups to technologies vector sequencingTechnologies; // a list of the present technologies CNVMap sampleCNV; // reference FB::FastaReference reference; vector referenceSequenceNames; map referenceIDToName; string referenceSampleName; // target regions vector targets; // returns true if we are within a target // useful for controlling output when we are reading from stdin bool inTarget(void); // bamreader BAMREADER bamMultiReader; // bed reader BedReader bedReader; // VCF vcflib::VariantCallFile variantCallFile; vcflib::VariantCallFile variantCallInputFile; // input variant alleles, to target analysis vcflib::VariantCallFile haplotypeVariantInputFile; // input alleles which will be used to construct haplotype alleles // input haplotype alleles // // as calling progresses, a window of haplotype basis alleles from the flanking sequence // map from starting position to length->alle map > haplotypeBasisAlleles; // this is in the current reference sequence bool usingHaplotypeBasisAlleles; bool usingVariantInputAlleles; long int rightmostHaplotypeBasisAllelePosition; long int rightmostInputAllelePosition; void updateHaplotypeBasisAlleles(long int pos, int referenceLength); bool allowedHaplotypeBasisAllele(long int pos, string& ref, string& alt); Allele makeAllele(RegisteredAlignment& ra, AlleleType type, long int pos, int length, int basesLeft, int basesRight, string& readSequence, string& sampleName, BAMALIGN& alignment, string& sequencingTech, long double qual, string& qualstr); vector registeredAlleles; map > registeredAlignments; set coverageSkippedPositions; map coverage; map > > inputVariantAlleles; // all variants present in the input VCF, as 'genotype' alleles pair nextInputVariantPosition(void); void getInputVariantsInRegion(string& seq, long start = 0, long end = 0); void getAllInputVariants(void); // position sample genotype likelihood map > > > inputGenotypeLikelihoods; // drawn from input VCF map > > inputAlleleCounts; // drawn from input VCF Sample* nullSample; bool loadNextPositionWithAlignmentOrInputVariant(BAMALIGN& currentAlignment); bool loadNextPositionWithInputVariant(void); bool hasMoreInputVariants(void); void addCurrentGenotypeLikelihoods(map >& genotypesByPloidy, vector >& sampleDataLikelihoods); void getInputAlleleCounts(vector& genotypeAlleles, map& inputAFs); // reference names indexed by id REFVEC referenceSequences; // ^^ vector of objects containing: //RefName; //!< Name of reference sequence //RefLength; //!< Length of reference sequence //RefHasAlignments; //!< True if BAM file contains alignments mapped to reference sequence vector bamHeaderLines; void openBams(void); void openOutputFile(void); void getSampleNames(void); void getPopulations(void); void getSequencingTechnologies(void); void loadSampleCNVMap(void); int currentSamplePloidy(string const& sample); int copiesOfLocus(Samples& samples); vector currentPloidies(Samples& samples); void loadBamReferenceSequenceNames(void); void loadFastaReference(void); void loadReferenceSequence(BAMALIGN& alignment); void loadReferenceSequence(string& seqname); string referenceSubstr(long int position, unsigned int length); void loadTargets(void); bool getFirstAlignment(void); bool getFirstVariant(void); void loadTargetsFromBams(void); void initializeOutputFiles(void); RegisteredAlignment& registerAlignment(BAMALIGN& alignment, RegisteredAlignment& ra, string& sampleName, string& sequencingTech); void clearRegisteredAlignments(void); void updateAlignmentQueue(long int position, vector& newAlleles, bool gettingPartials = false); void updateInputVariants(long int pos, int referenceLength); void updateHaplotypeBasisAlleles(void); void removeAllelesWithoutReadSpan(vector& alleles, int probeLength, int haplotypeLength); void removeNonOverlappingAlleles(vector& alleles, int haplotypeLength = 1, bool getAllAllelesInHaplotype = false); void removePreviousAlleles(vector& alleles, long int position); void removeCoverageSkippedAlleles(vector& alleles, long int position); void removeRegisteredAlignmentsOverlappingPosition(long unsigned int pos); void removeFilteredAlleles(vector& alleles); void removeDuplicateAlleles(Samples& samples, map >& alleleGroups, int allowedAlleleTypes, int haplotypeLength, Allele& refallele); void updateRegisteredAlleles(void); void addToRegisteredAlleles(vector& alleles); void updatePriorAlleles(void); vector* targetsInCurrentRefSeq(void); bool toNextRefID(void); bool loadTarget(BedTarget*); bool toFirstTargetPosition(void); bool toNextPosition(void); void getCompleteObservationsOfHaplotype(Samples& samples, int haplotypeLength, vector& haplotypeObservations); void getPartialObservationsOfHaplotype(Samples& samples, int haplotypeLength, vector& partials); bool dummyProcessNextTarget(void); bool toNextTarget(void); void setPosition(long unsigned int); int currentSequencePosition(const BAMALIGN& alignment); int currentSequencePosition(); void unsetAllProcessedFlags(void); bool getNextAlleles(Samples& allelesBySample, int allowedAlleleTypes); // builds up haplotype (longer, e.g. ref+snp+ref) alleles to match the longest allele in genotypeAlleles // updates vector& alleles with the new alleles void buildHaplotypeAlleles(vector& alleles, Samples& allelesBySample, map >& alleleGroups, // provides observation group counts, counts of partial observations map >& partialObservationGroups, map >& partialObservationSupport, int allowedAlleleTypes); void getAlleles(Samples& allelesBySample, int allowedAlleleTypes, int haplotypeLength = 1, bool getAllAllelesInHaplotype = false, bool ignoreProcessedAlleles = true); Allele* referenceAllele(int mapQ, int baseQ); Allele* alternateAllele(int mapQ, int baseQ); int homopolymerRunLeft(string altbase); int homopolymerRunRight(string altbase); map repeatCounts(long int position, const string& sequence, int maxsize); map > cachedRepeatCounts; // cached version of previous bool isRepeatUnit(const string& seq, const string& unit); void setupVCFOutput(void); void setupVCFInput(void); string vcfHeader(void); bool hasInputVariantAllelesAtCurrentPosition(void); // gets the genotype alleles we should evaluate among the allele groups and // sample groups at the current position, according to our filters vector genotypeAlleles(map >& alleleGroups, Samples& samples, bool useOnlyInputAlleles, int haplotypeLength = 1); // pointer to current position in targets int fastaReferenceSequenceCount; // number of reference sequences bool hasTarget; BedTarget* currentTarget; long int currentPosition; // 0-based current position int lastHaplotypeLength; char currentReferenceBase; string currentSequence; char currentReferenceBaseChar(); string currentReferenceBaseString(); string::iterator currentReferenceBaseIterator(); string currentReferenceHaplotype(); // output files ofstream logFile, outputFile; ostream* output; // utility bool isCpG(string& altbase); string currentSequenceName; private: bool justSwitchedTargets; // to trigger clearing of queues, maps and such holding Allele*'s on jump Allele* currentReferenceAllele; Allele* currentAlternateAllele; //BedTarget currentSequenceBounds; long int currentSequenceStart; bool hasMoreAlignments; bool hasMoreVariants;; bool oneSampleAnalysis; // if we are analyzing just one sample, and there are no specified read groups int basesBeforeCurrentTarget; // number of bases in sequence we're storing before the current target int basesAfterCurrentTarget; // ........................................ after ................... int currentRefID; BAMALIGN currentAlignment; vcflib::Variant* currentVariant; }; #endif freebayes-1.3.6/src/BedReader.cpp000066400000000000000000000045711417247743000166160ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include "split.h" #include "Utility.h" #include "BedReader.h" #include "../intervaltree/IntervalTree.h" using namespace std; vector BedReader::entries(void) { vector entries; if (!is_open()) { cerr << "bed targets file is not open" << endl; exit(1); } string line; while (std::getline(*this, line)) { // BED is base-numbered, 0-origin, half-open. This parse turns that // into base-numbered, 0-origin, fully-closed for internal use. All // coordinates used internally should be in the latter, and coordinates // from the user in the former should be converted immediately to the // internal format. vector fields = split(line, " \t"); BedTarget entry(strip(fields[0]), atoi(strip(fields[1]).c_str()), atoi(strip(fields[2]).c_str()) - 1, // use inclusive format internally (fields.size() >= 4) ? strip(fields[3]) : ""); entries.push_back(entry); } return entries; } bool BedReader::targetsContained(string& seq, long left, long right) { vector > results = intervals[seq].findContained(left, right); return !results.empty(); } bool BedReader::targetsOverlap(string& seq, long left, long right) { vector > results = intervals[seq].findOverlapping(left, right); return !results.empty(); } vector BedReader::targetsContaining(BedTarget& target) { vector > results = intervals[target.seq].findContained(target.left, target.right); vector contained; for (vector >::iterator r = results.begin(); r != results.end(); ++r) { contained.push_back(r->value); } return contained; } vector BedReader::targetsOverlapping(BedTarget& target) { vector > results = intervals[target.seq].findOverlapping(target.left, target.right); vector overlapping; for (vector >::iterator r = results.begin(); r != results.end(); ++r) { overlapping.push_back(r->value); } return overlapping; } freebayes-1.3.6/src/BedReader.h000066400000000000000000000037311417247743000162600ustar00rootroot00000000000000#ifndef FREEBAYES_BEDREADER_H #define FREEBAYES_BEDREADER_H #include #include #include #include #include #include #include #include #include "../intervaltree/IntervalTree.h" #include "split.h" using namespace std; // stores the posiitional information of a bed target entry class BedTarget { public: string seq; // sequence name int left; // left position int right; // right position, adjusted to 0-base inclusive string desc; // descriptive information, target name typically BedTarget(string s, int l, int r, string d = "") : seq(s) , left(l) , right(r) , desc(d) { } }; class BedReader : public ifstream { public: vector targets; map > intervals; // intervals by reference sequence vector entries(void); bool targetsContained(string& seq, long left, long right); bool targetsOverlap(string& seq, long left, long right); vector targetsContaining(BedTarget& target); vector targetsOverlapping(BedTarget& target); BedReader(void) { } BedReader(string& fname) { openFile(fname); buildIntervals(); } void openFile(string& fname) { open(fname.c_str()); targets = entries(); } void buildIntervals(void) { map::interval_vector> intervalsBySeq; for (vector::iterator t = targets.begin(); t != targets.end(); ++t) { intervalsBySeq[t->seq].push_back(Interval(t->left, t->right, &*t)); } for (map::interval_vector>::const_iterator s = intervalsBySeq.begin(); s != intervalsBySeq.end(); ++s) { intervals[s->first] = IntervalTree((IntervalTree::interval_vector&&)s->second); } } }; #endif freebayes-1.3.6/src/Bias.cpp000066400000000000000000000023361417247743000156540ustar00rootroot00000000000000#include "Bias.h" #include "convert.h" void Bias::open(string& file) { ifstream input; input.open(file.c_str()); if (!input.is_open()) { cerr << "allele reference bias description " << file << " is not open" << endl; exit(1); } string line; bool firstrecord = true; int last; while (std::getline(input, line)) { vector fields = split(line, " \t"); if (firstrecord) { convert(fields[0], minLength); last = minLength - 1; } convert(fields[0], maxLength); if (maxLength != last + 1) { cerr << "gap or out-of-order bias list in " << file << endl; cerr << line << endl; exit(1); } else { last = maxLength; } long double dbias; convert(fields[1], dbias); biases.push_back(dbias); } input.close(); } long double Bias::bias(int length) { if (biases.empty()) return 1; // no bias if (length < minLength) { return biases.front(); } else if (length > maxLength) { return biases.back(); } else { return biases.at(length - minLength); } } bool Bias::empty(void) { return biases.empty(); } freebayes-1.3.6/src/Bias.h000066400000000000000000000006761417247743000153260ustar00rootroot00000000000000#ifndef FREEBAYES_BIAS_H #define FREEBAYES_BIAS_H #include #include #include #include #include #include #include "split.h" using namespace std; class Bias { int minLength; int maxLength; vector biases; public: Bias(void) : minLength(0), maxLength(0) { } void open(string& file); long double bias(int length); bool empty(void); }; #endif freebayes-1.3.6/src/CNV.cpp000066400000000000000000000053051417247743000154230ustar00rootroot00000000000000#include "CNV.h" bool CNVMap::load(string const& filename) { string line; ifstream cnvFile(filename.c_str(), ios::in); if (cnvFile.is_open()) { while (getline (cnvFile, line)) { vector fields = split(line, " \t"); if (fields.size() == 2) { const string& sample = fields.at(0); int ploidy = atoi(fields.at(1).c_str()); setSamplePloidy(sample, ploidy); } else if (fields.size() == 5) { // note conversion between 1 and 0 based const string& sample = fields.at(3); const string& seq = fields.at(0); long int start = atol(fields.at(1).c_str()); long int end = atol(fields.at(2).c_str()); int ploidy = atoi(fields.at(4).c_str()); setPloidy(sample, seq, start, end, ploidy); } else { cerr << "error [freebayes::CNVMap] could not parse CNVmap line " << line << endl; exit(1); } } } else { return false; } return true; } void CNVMap::setDefaultPloidy(int defploidy) { defaultPloidy = defploidy; } void CNVMap::setSamplePloidy(const string& sample, int ploidy) { samplePloidy[sample] = ploidy; } void CNVMap::setPloidy(string const& sample, string const& seq, long int start, long int end, int ploidy) { sampleSeqCNV[sample][seq].push_back(make_tuple(start, end, ploidy)); } int CNVMap::ploidy(string const& sample, string const& seq, long int position) { int basePloidy = (samplePloidy.find(sample) != samplePloidy.end()) ? samplePloidy[sample] : defaultPloidy; if (sampleSeqCNV.empty()) { return basePloidy; } SampleSeqCNVMap::iterator scnv = sampleSeqCNV.find(sample); if (scnv == sampleSeqCNV.end()) { return basePloidy; } else { map > >::iterator c = scnv->second.find(seq); if (c == scnv->second.end()) { return basePloidy; } else { vector >& cnvs = c->second; vector >::iterator i = upper_bound(cnvs.begin(), cnvs.end(), position, [](long int position, tuple const& element) { return position < get<1>(element); }); if (i == cnvs.end()) { return basePloidy; } long int start = get<0>(*i); int copyNumber = get<2>(*i); if (start <= position) { return copyNumber; } else { return basePloidy; } } } } freebayes-1.3.6/src/CNV.h000066400000000000000000000016251417247743000150710ustar00rootroot00000000000000#ifndef FREEBAYES_CNV_H #define FREEBAYES_CNV_H #include #include #include #include #include #include #include #include #include #include "split.h" using namespace std; typedef map > > > SampleSeqCNVMap; class CNVMap { public: CNVMap(void) : defaultPloidy(2) { } void setDefaultPloidy(int defploidy); void setSamplePloidy(const string& sample, int ploidy); bool load(string const& filename); int ploidy(string const& sample, string const& seq, long int position); void setPloidy(string const& sample, string const& seq, long int start, long int end, int ploidy); private: // note: this map is stored as 0-based, end position exclusive SampleSeqCNVMap sampleSeqCNV; int defaultPloidy; map samplePloidy; }; #endif freebayes-1.3.6/src/Contamination.cpp000066400000000000000000000036201417247743000175760ustar00rootroot00000000000000#include "Contamination.h" #include "convert.h" void Contamination::open(string& file) { ifstream input; input.open(file.c_str()); if (!input.is_open()) { cerr << "contamination estimates file " << file << " is not open" << endl; exit(1); } string line; int last; while (std::getline(input, line)) { vector fields = split(line, " \t"); if (fields.size() != 3) { cerr << "could not parse contamination estimate:" << endl << line << endl << "should be of the form:" << endl << "sample p(read=R|genotype=AR) p(read=A|genotype=AA)" << endl; exit(1); } string sample = fields[0]; ContaminationEstimate c; convert(fields[1], c.probRefGivenHet); convert(fields[2], c.probRefGivenHomAlt); if (sample == "*") { // default defaultEstimate = c; } else { insert(make_pair(sample, c)); } } input.close(); } double Contamination::probRefGivenHet(string& sample) { Contamination::iterator s = find(sample); if (s != end()) { return s->second.probRefGivenHet; } else { return defaultEstimate.probRefGivenHet; } } double Contamination::probRefGivenHomAlt(string& sample) { Contamination::iterator s = find(sample); if (s != end()) { return s->second.probRefGivenHomAlt; } else { return defaultEstimate.probRefGivenHomAlt; } } double Contamination::refBias(string& sample) { Contamination::iterator s = find(sample); if (s != end()) { return s->second.refBias; } else { return defaultEstimate.refBias; } } ContaminationEstimate& Contamination::of(string& sample) { Contamination::iterator s = find(sample); if (s != end()) { return s->second; } else { return defaultEstimate; } } freebayes-1.3.6/src/Contamination.h000066400000000000000000000020761417247743000172470ustar00rootroot00000000000000#ifndef FREEBAYES_CONTAMINATION_H #define FREEBAYES_CONTAMINATION_H #include #include #include #include #include #include #include #include "split.h" using namespace std; class ContaminationEstimate { public: double probRefGivenHet; double probRefGivenHomAlt; double refBias; ContaminationEstimate(void) : probRefGivenHet(0.5), probRefGivenHomAlt(0), refBias(0) { } ContaminationEstimate(double ra, double aa) : probRefGivenHet(ra), probRefGivenHomAlt(aa) { refBias = probRefGivenHet * 2 - 1; } }; class Contamination : public map { public: ContaminationEstimate defaultEstimate; void open(string& file); double probRefGivenHet(string& sample); double probRefGivenHomAlt(string& sample); double refBias(string& sample); ContaminationEstimate& of(string& sample); Contamination(void) : defaultEstimate(ContaminationEstimate(0.5, 0)) { } Contamination(double ra, double aa) : defaultEstimate(ContaminationEstimate(ra, aa)) { } }; #endif freebayes-1.3.6/src/DataLikelihood.cpp000066400000000000000000000315121417247743000176510ustar00rootroot00000000000000#include "DataLikelihood.h" #include "multichoose.h" #include "multipermute.h" #include "Logging.h" long double probObservedAllelesGivenGenotype( Sample& sample, Genotype& genotype, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminations, map& freqs, Parameters& parameters ) { DEBUG2("P(" << genotype << " given" << endl << sample); int observationCount = sample.observationCount(); vector alleleProbs = genotype.alleleProbabilities(observationBias); vector observationCounts = genotype.alleleObservationCounts(sample); int countOut = 0; double countIn = 0; long double prodQout = 0; // the probability that the reads not in the genotype are all wrong long double prodSample = 0; if (parameters.standardGLs) { for (Sample::iterator s = sample.begin(); s != sample.end(); ++s) { const string& base = s->first; if (!genotype.containsAllele(base)) { vector& alleles = s->second; if (parameters.useMappingQuality) { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { // take the lesser of mapping quality and base quality (in log space) prodQout += max((*a)->lnquality, (*a)->lnmapQuality); } } else { for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { prodQout += (*a)->lnquality; } } countOut += alleles.size(); } } } else { vector emptyA; vector emptyB; for (set::iterator c = sample.supportedAlleles.begin(); c != sample.supportedAlleles.end(); ++c) { vector* alleles = &emptyA; Sample::iterator si = sample.find(*c); if (si != sample.end()) alleles = &si->second; vector* partials = &emptyB; map >::iterator pi = sample.partialSupport.find(*c); if (pi != sample.partialSupport.end()) partials = &pi->second; bool onPartials = false; vector::iterator a = alleles->begin(); bool hasPartials = !partials->empty(); for ( ; (!hasPartials && a != alleles->end()) || a != partials->end(); ++a) { if (a == alleles->end()) { if (hasPartials) { a = partials->begin(); onPartials = true; } else { break; } } Allele& obs = **a; DEBUG2("observation: " << obs); long double probi = 0; ContaminationEstimate& contamination = contaminations.of(obs.readGroupID); double scale = 1; // note that this will underflow if we have mapping quality = 0 // we guard against this externally, by ignoring such alignments (quality has to be > MQL0) long double qual = (1.0 - exp(obs.lnquality)) * (1.0 - exp(obs.lnmapQuality)); if (onPartials) { map >::iterator r = sample.reversePartials.find(*a); if (r != sample.reversePartials.end()) { if (sample.reversePartials[*a].empty()) { cerr << "partial " << *a << " has empty reverse" << endl; exit(1); } DEBUG2("partial " << *a << " supports potentially " << sample.reversePartials[*a].size() << " alleles : "); for (set::iterator m = sample.reversePartials[*a].begin(); m != sample.reversePartials[*a].end(); ++m) DEBUG2(**m << " "); scale = (double)1/(double)sample.reversePartials[*a].size(); qual *= scale; } } // TODO add partial obs, now that we have them recorded // how does this work? // each partial obs is recorded as supporting, but with observation probability scaled by the number of possible haplotypes it supports bool isInGenotype = false; long double asampl = genotype.alleleSamplingProb(obs); // for each of the unique genotype alleles for (vector::iterator b = genotypeAlleles.begin(); b != genotypeAlleles.end(); ++b) { Allele& allele = *b; const string& base = allele.currentBase; if (genotype.containsAllele(base) && (obs.currentBase == base || (onPartials && sample.observationSupports(*a, &*b)))) { isInGenotype = true; // use the matched allele to estimate the asampl asampl = max(asampl, (long double)genotype.alleleSamplingProb(allele)); } } if (asampl == 0) { // scale by frequency of (this) possibly contaminating allele asampl = contamination.probRefGivenHomAlt; } else if (asampl == 1) { // scale by frequency of (other) possibly contaminating alleles asampl = 1 - contamination.probRefGivenHomAlt; } else { //if (genotype.ploidy == 2) { // to deal with polyploids // note that this reduces to 1 for diploid heterozygotes // this term captures reference bias if (obs.isReference()) { asampl *= (contamination.probRefGivenHet / 0.5); } else { asampl *= ((1 - contamination.probRefGivenHet) / 0.5); } } // distribute observation support across haplotypes if (!isInGenotype) { prodQout += log(1-qual); countOut += scale; } else { prodSample += log(asampl*scale); } } } } // read dependence factor, asymptotically downgrade quality values of // successive reads to parameters.RDF * quality if (parameters.standardGLs) { if (countOut > 1) { prodQout *= (1 + (countOut - 1) * parameters.RDF) / countOut; } if (sum(observationCounts) == 0) { return prodQout; } else { //cerr << "P(obs|" << genotype << ") = " << prodQout + multinomialSamplingProbLn(alleleProbs, observationCounts) << endl << endl << string(80, '@') << endl << endl; return prodQout + multinomialSamplingProbLn(alleleProbs, observationCounts); //return prodQout + samplingProbLn(alleleProbs, observationCounts); } } else { if (countOut > 1) { prodQout *= (1 + (countOut - 1) * parameters.RDF) / countOut; } long double probObsGivenGt = prodQout + prodSample; return isinf(probObsGivenGt) ? 0 : probObsGivenGt; } } vector > probObservedAllelesGivenGenotypes( Sample& sample, vector& genotypes, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminations, map& freqs, Parameters& parameters ) { vector > results; for (vector::iterator g = genotypes.begin(); g != genotypes.end(); ++g) { Genotype& genotype = **g; results.push_back( make_pair(*g, probObservedAllelesGivenGenotype( sample, **g, observationBias, genotypeAlleles, contaminations, freqs, parameters))); } return results; } void calculateSampleDataLikelihoods( Samples& samples, Results& results, AlleleParser* parser, map >& genotypesByPloidy, Parameters& parameters, bool usingNull, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminationEstimates, map& estimatedAlleleFrequencies, map > >& sampleDataLikelihoodsByPopulation, map > >& variantSampleDataLikelihoodsByPopulation, map > >& invariantSampleDataLikelihoodsByPopulation) { for (vector::iterator n = parser->sampleList.begin(); n != parser->sampleList.end(); ++n) { //string sampleName = s->first; string& sampleName = *n; //DEBUG2("sample: " << sampleName); //Sample& sample = s->second; if (samples.find(sampleName) == samples.end() && !(parser->hasInputVariantAllelesAtCurrentPosition() || parameters.reportMonomorphic)) { continue; } Sample& sample = samples[sampleName]; vector& genotypes = genotypesByPloidy[parser->currentSamplePloidy(sampleName)]; vector genotypesWithObs; for (vector::iterator g = genotypes.begin(); g != genotypes.end(); ++g) { if (parameters.excludePartiallyObservedGenotypes) { if (g->sampleHasSupportingObservationsForAllAlleles(sample)) { genotypesWithObs.push_back(&*g); } } else if (parameters.excludeUnobservedGenotypes && usingNull) { if (g->sampleHasSupportingObservations(sample)) { //cerr << sampleName << " has suppporting obs for " << *g << endl; genotypesWithObs.push_back(&*g); } else if (g->hasNullAllele() && g->homozygous) { // this genotype will never be added if we are running in observed-only mode, but // we still need it for consistency genotypesWithObs.push_back(&*g); } } else { genotypesWithObs.push_back(&*g); } } // skip this sample if we have no observations supporting any of the genotypes we are going to evaluate if (genotypesWithObs.empty()) { continue; } vector > probs = probObservedAllelesGivenGenotypes(sample, genotypesWithObs, observationBias, genotypeAlleles, contaminationEstimates, estimatedAlleleFrequencies, parameters); for (vector >::iterator p = probs.begin(); p != probs.end(); ++p) { DEBUG2(parser->currentSequenceName << "," << (long unsigned int) parser->currentPosition + 1 << "," << sampleName << ",likelihood," << *(p->first) << "," << p->second); } Result& sampleData = results[sampleName]; sampleData.name = sampleName; sampleData.observations = &sample; for (vector >::iterator p = probs.begin(); p != probs.end(); ++p) { sampleData.push_back(SampleDataLikelihood(sampleName, &sample, p->first, p->second, 0)); } sortSampleDataLikelihoods(sampleData); string& population = parser->samplePopulation[sampleName]; vector >& sampleDataLikelihoods = sampleDataLikelihoodsByPopulation[population]; vector >& variantSampleDataLikelihoods = variantSampleDataLikelihoodsByPopulation[population]; vector >& invariantSampleDataLikelihoods = invariantSampleDataLikelihoodsByPopulation[population]; if (parameters.genotypeVariantThreshold != 0) { if (sampleData.size() > 1 && abs(sampleData.at(1).prob - sampleData.front().prob) < parameters.genotypeVariantThreshold) { variantSampleDataLikelihoods.push_back(sampleData); } else { invariantSampleDataLikelihoods.push_back(sampleData); } } else { variantSampleDataLikelihoods.push_back(sampleData); } sampleDataLikelihoods.push_back(sampleData); } } freebayes-1.3.6/src/DataLikelihood.h000066400000000000000000000033171417247743000173200ustar00rootroot00000000000000#ifndef FREEBAYES_DATALIKELIHOOD_H #define FREEBAYES_DATALIKELIHOOD_H #include #include #include // pair #include #include #include #include #include #include "Allele.h" #include "Sample.h" #include "Genotype.h" #include "Utility.h" #include "Multinomial.h" #include "Dirichlet.h" #include "Bias.h" #include "Contamination.h" #include "AlleleParser.h" #include "ResultData.h" using namespace std; long double probObservedAllelesGivenGenotype( Sample& sample, Genotype& genotype, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminations, map& freqs, Parameters& parameters); vector > probObservedAllelesGivenGenotypes( Sample& sample, vector& genotypes, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminations, map& freqs, Parameters& parameters); void calculateSampleDataLikelihoods( Samples& samples, Results& results, AlleleParser* parser, map >& genotypesByPloidy, Parameters& parameters, bool usingNull, Bias& observationBias, vector& genotypeAlleles, Contamination& contaminationEstimates, map& estimatedAlleleFrequencies, map > >& sampleDataLikelihoodsByPopulation, map > >& variantSampleDataLikelihoodsByPopulation, map > >& invariantSampleDataLikelihoodsByPopulation); #endif freebayes-1.3.6/src/Dirichlet.cpp000066400000000000000000000036341417247743000167070ustar00rootroot00000000000000#include "Dirichlet.h" #include "Sum.h" #include "Product.h" #include long double dirichlet(const vector& probs, const vector& obs, long double s) { vector alphas; for (vector::const_iterator o = obs.begin(); o != obs.end(); ++o) alphas.push_back(*o + 1 * s); vector obsProbs; vector::const_iterator a = alphas.begin(); vector::const_iterator p = probs.begin(); for (; p != probs.end() && a != alphas.end(); ++p, ++a) { obsProbs.push_back(pow(*p, *a - 1)); } return 1.0 / beta(alphas) * product(obsProbs); } long double dirichletMaximumLikelihoodRatio(const vector& probs, const vector& obs, long double s) { long double maximizingObs = obs.size() / sum(obs); vector m(obs.size(), maximizingObs); return dirichlet(probs, obs, s) / dirichlet(probs, m, s); } // XXX the logspace versions are broken long double dirichletln(const vector& probs, const vector& obs, long double s) { vector alphas; for (vector::const_iterator o = obs.begin(); o != obs.end(); ++o) alphas.push_back(*o + 1 * s); vector obsProbs; vector::const_iterator a = alphas.begin(); vector::const_iterator p = probs.begin(); for (; p != probs.end() && a != alphas.end(); ++p, ++a) { obsProbs.push_back(powln(log(*p), *a - 1)); } return log(1.0) - (betaln(alphas) + sum(obsProbs)); } long double dirichletMaximumLikelihoodRatioln(const vector& probs, const vector& obs, long double s) { long double maximizingObs = (long double) obs.size() / (long double) sum(obs); vector m(obs.size(), maximizingObs); return dirichletln(probs, obs, s) - dirichletln(probs, m, s); } freebayes-1.3.6/src/Dirichlet.h000066400000000000000000000011761417247743000163530ustar00rootroot00000000000000#ifndef FREEBAYES_DIRICHLET_H #define FREEBAYES_DIRICHLET_H #include #include "Utility.h" #include "Sum.h" long double dirichletMaximumLikelihoodRatio(const vector& probs, const vector& obs, long double s = (long double) 1.0); long double dirichlet(const vector& probs, const vector& obs, long double s = (long double) 1.0); long double dirichletMaximumLikelihoodRatioln(const vector& probs, const vector& obs, long double s = (long double) 1.0); long double dirichletln(const vector& probs, const vector& obs, long double s = (long double) 1.0); #endif freebayes-1.3.6/src/Ewens.cpp000066400000000000000000000033121417247743000160520ustar00rootroot00000000000000#include "Ewens.h" long double alleleFrequencyProbability(const map& alleleFrequencyCounts, long double theta) { int M = 0; long double p = 1; for (map::const_iterator f = alleleFrequencyCounts.begin(); f != alleleFrequencyCounts.end(); ++f) { int frequency = f->first; int count = f->second; M += frequency * count; p *= (double) pow((double) theta, (double) count) / ((double) pow((double) frequency, (double) count) * factorial(count)); } long double thetaH = 1; for (int h = 1; h < M; ++h) thetaH *= theta + h; return factorial(M) / (theta * thetaH) * p; } AlleleFrequencyProbabilityCache alleleFrequencyProbabilityCache; long double alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta) { return alleleFrequencyProbabilityCache.alleleFrequencyProbabilityln(alleleFrequencyCounts, theta); } // Implements Ewens' Sampling Formula, which provides probability of a given // partition of alleles in a sample from a population long double impl_alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta) { int M = 0; // multiplicity of site long double p = 0; long double thetaln = log(theta); for (map::const_iterator f = alleleFrequencyCounts.begin(); f != alleleFrequencyCounts.end(); ++f) { int frequency = f->first; int count = f->second; M += frequency * count; p += powln(thetaln, count) - (powln(log(frequency), count) + factorialln(count)); } long double thetaH = 0; for (int h = 1; h < M; ++h) thetaH += log(theta + h); return factorialln(M) - (thetaln + thetaH) + p; } freebayes-1.3.6/src/Ewens.h000066400000000000000000000017101417247743000155170ustar00rootroot00000000000000#ifndef FREEBAYES_EWENS_H #define FREEBAYES_EWENS_H #include #include #include "Utility.h" using namespace std; // genotype priors long double alleleFrequencyProbability(const map& alleleFrequencyCounts, long double theta); long double alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta); long double impl_alleleFrequencyProbabilityln(const map& alleleFrequencyCounts, long double theta); class AlleleFrequencyProbabilityCache : public map, long double> { public: long double alleleFrequencyProbabilityln(const map& counts, long double theta) { map, long double>::iterator p = find(counts); if (p == end()) { long double pln = impl_alleleFrequencyProbabilityln(counts, theta); insert(make_pair(counts, pln)); return pln; } else { return p->second; } } }; #endif freebayes-1.3.6/src/FBFasta.cpp000066400000000000000000000313311417247743000162410ustar00rootroot00000000000000// *************************************************************************** // FastaIndex.cpp (c) 2010 Erik Garrison // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- // Last modified: 9 February 2010 (EG) // --------------------------------------------------------------------------- #include "FBFasta.h" FB::FastaIndexEntry::FastaIndexEntry(string name, int length, long long offset, int line_blen, int line_len) : name(name) , length(length) , offset(offset) , line_blen(line_blen) , line_len(line_len) {} FB::FastaIndexEntry::FastaIndexEntry(void) // empty constructor { clear(); } FB::FastaIndexEntry::~FastaIndexEntry(void) {} void FB::FastaIndexEntry::clear(void) { name = ""; length = 0; offset = -1; // no real offset will ever be below 0, so this allows us to // check if we have already recorded a real offset line_blen = 0; line_len = 0; } ostream& FB::operator<<(ostream& output, const FastaIndexEntry& e) { // just write the first component of the name, for compliance with other tools output << split(e.name, ' ').at(0) << "\t" << e.length << "\t" << e.offset << "\t" << e.line_blen << "\t" << e.line_len; return output; // for multiple << operators. } FB::FastaIndex::FastaIndex(void) {} void FB::FastaIndex::readIndexFile(string fname) { string line; long long linenum = 0; indexFile.open(fname.c_str(), ifstream::in); if (indexFile.is_open()) { while (getline (indexFile, line)) { ++linenum; // the fai format defined in samtools is tab-delimited, every line being: // fai->name[i], (int)x.len, (long long)x.offset, (int)x.line_blen, (int)x.line_len vector fields = split(line, '\t'); if (fields.size() == 5) { // if we don't get enough fields then there is a problem with the file // note that fields[0] is the sequence name char* end; string name = split(fields[0], " \t").at(0); // key by first token of name sequenceNames.push_back(name); this->insert(make_pair(name, FastaIndexEntry(fields[0], atoi(fields[1].c_str()), strtoll(fields[2].c_str(), &end, 10), atoi(fields[3].c_str()), atoi(fields[4].c_str())))); } else { cerr << "Warning: malformed fasta index file " << fname << "does not have enough fields @ line " << linenum << endl; cerr << line << endl; exit(1); } } } else { cerr << "could not open index file " << fname << endl; exit(1); } } // for consistency this should be a class method bool fastaIndexEntryCompare ( FB::FastaIndexEntry a, FB::FastaIndexEntry b) { return (a.offset sortedIndex; for(vector::const_iterator it = fastaIndex.sequenceNames.begin(); it != fastaIndex.sequenceNames.end(); ++it) { sortedIndex.push_back(fastaIndex[*it]); } sort(sortedIndex.begin(), sortedIndex.end(), fastaIndexEntryCompare); for( vector::iterator fit = sortedIndex.begin(); fit != sortedIndex.end(); ++fit) { output << *fit << endl; } return output; } void FB::FastaIndex::indexReference(string refname) { // overview: // for line in the reference fasta file // track byte offset from the start of the file // if line is a fasta header, take the name and dump the last sequnece to the index // if line is a sequence, add it to the current sequence //cerr << "indexing fasta reference " << refname << endl; string line; FastaIndexEntry entry; // an entry buffer used in processing entry.clear(); int line_length = 0; long long offset = 0; // byte offset from start of file long long line_number = 0; // current line number bool mismatchedLineLengths = false; // flag to indicate if our line length changes mid-file // this will be used to raise an error // if we have a line length change at // any line other than the last line in // the sequence bool emptyLine = false; // flag to catch empty lines, which we allow for // index generation only on the last line of the sequence ifstream refFile; refFile.open(refname.c_str()); if (refFile.is_open()) { while (getline(refFile, line)) { ++line_number; line_length = line.length(); if (line[0] == ';') { // fasta comment, skip } else if (line[0] == '+') { // fastq quality header getline(refFile, line); line_length = line.length(); offset += line_length + 1; // get and don't handle the quality line getline(refFile, line); line_length = line.length(); } else if (line[0] == '>' || line[0] == '@') { // fasta /fastq header // if we aren't on the first entry, push the last sequence into the index if (entry.name != "") { mismatchedLineLengths = false; // reset line length error tracker for every new sequence emptyLine = false; flushEntryToIndex(entry); entry.clear(); } entry.name = line.substr(1, line_length - 1); } else { // we assume we have found a sequence line if (entry.offset == -1) // NB initially the offset is -1 entry.offset = offset; entry.length += line_length; if (entry.line_len) { //entry.line_len = entry.line_len ? entry.line_len : line_length + 1; if (mismatchedLineLengths || emptyLine) { if (line_length == 0) { emptyLine = true; // flag empty lines, raise error only if this is embedded in the sequence } else { if (emptyLine) { cerr << "ERROR: embedded newline"; } else { cerr << "ERROR: mismatched line lengths"; } cerr << " at line " << line_number << " within sequence " << entry.name << endl << "File not suitable for fasta index generation." << endl; exit(1); } } // this flag is set here and checked on the next line // because we may have reached the end of the sequence, in // which case a mismatched line length is OK if (entry.line_len != line_length + 1) { mismatchedLineLengths = true; if (line_length == 0) { emptyLine = true; // flag empty lines, raise error only if this is embedded in the sequence } } } else { entry.line_len = line_length + 1; // first line } entry.line_blen = entry.line_len - 1; } offset += line_length + 1; } // we've hit the end of the fasta file! // flush the last entry flushEntryToIndex(entry); } else { cerr << "could not open reference file " << refname << " for indexing!" << endl; exit(1); } } void FB::FastaIndex::flushEntryToIndex(FastaIndexEntry& entry) { string name = split(entry.name, " \t").at(0); // key by first token of name sequenceNames.push_back(name); this->insert(make_pair(name, FastaIndexEntry(entry.name, entry.length, entry.offset, entry.line_blen, entry.line_len))); } void FB::FastaIndex::writeIndexFile(string fname) { //cerr << "writing fasta index file " << fname << endl; ofstream file; file.open(fname.c_str()); if (file.is_open()) { file << *this; } else { cerr << "could not open index file " << fname << " for writing!" << endl; exit(1); } } FB::FastaIndex::~FastaIndex(void) { indexFile.close(); } FB::FastaIndexEntry FB::FastaIndex::entry(string name) { FastaIndex::iterator e = this->find(name); if (e == this->end()) { cerr << "unable to find FASTA index entry for '" << name << "'" << endl; exit(1); } else { return e->second; } } string FB::FastaIndex::indexFileExtension() { return ".fai"; } /* FastaReference::FastaReference(string reffilename) { } */ void FB::FastaReference::open(string reffilename) { filename = reffilename; if (!(file = fopen(filename.c_str(), "r"))) { cerr << "could not open " << filename << endl; exit(1); } index = new FastaIndex(); struct stat stFileInfo; string indexFileName = filename + index->indexFileExtension(); // if we can find an index file, use it if(stat(indexFileName.c_str(), &stFileInfo) == 0) { index->readIndexFile(indexFileName); } else { // otherwise, read the reference and generate the index file in the cwd cerr << "index file " << indexFileName << " not found, generating..." << endl; index->indexReference(filename); index->writeIndexFile(indexFileName); } } FB::FastaReference::~FastaReference(void) { fclose(file); delete index; } string removeIupacBases(string& str) { const string validBases = "ATGCN"; size_t found = str.find_first_not_of(validBases); while (found != string::npos) { str[found] = 'N'; found = str.find_first_not_of(validBases, found + 1); } return str; } string FB::FastaReference::getRawSequence(string seqname) { FastaIndexEntry entry = index->entry(seqname); int newlines_in_sequence = entry.length / entry.line_blen; int seqlen = newlines_in_sequence + entry.length; char* seq = (char*) calloc (seqlen + 1, sizeof(char)); fseek64(file, entry.offset, SEEK_SET); size_t x = fread(seq, sizeof(char), seqlen, file); seq[seqlen] = '\0'; char* pbegin = seq; char* pend = seq + (seqlen/sizeof(char)); pend = remove(pbegin, pend, '\n'); pend = remove(pbegin, pend, '\0'); string s = seq; free(seq); s.resize((pend - pbegin)/sizeof(char)); return s; } string FB::FastaReference::getSequence(string seqname) { string u = uppercase(getRawSequence(seqname)); return removeIupacBases(u); } // TODO cleanup; odd function. use a map string FB::FastaReference::sequenceNameStartingWith(string seqnameStart) { try { return (*index)[seqnameStart].name; } catch (const exception& e) { cerr << e.what() << ": unable to find index entry for " << seqnameStart << endl; exit(1); } } string FB::FastaReference::getRawSubSequence(string seqname, int start, int length) { FastaIndexEntry entry = index->entry(seqname); length = min(length, entry.length - start); if (start < 0 || length < 1) { return ""; } // we have to handle newlines // approach: count newlines before start // count newlines by end of read // subtracting newlines before start find count of embedded newlines int newlines_before = start > 0 ? (start - 1) / entry.line_blen : 0; int newlines_by_end = (start + length - 1) / entry.line_blen; int newlines_inside = newlines_by_end - newlines_before; int seqlen = length + newlines_inside; char* seq = (char*) calloc (seqlen + 1, sizeof(char)); fseek64(file, (off_t) (entry.offset + newlines_before + start), SEEK_SET); size_t x = fread(seq, sizeof(char), (off_t) seqlen, file); seq[seqlen] = '\0'; char* pbegin = seq; char* pend = seq + (seqlen/sizeof(char)); pend = remove(pbegin, pend, '\n'); pend = remove(pbegin, pend, '\0'); string s = seq; free(seq); s.resize((pend - pbegin)/sizeof(char)); return s; } string FB::FastaReference::getSubSequence(string seqname, int start, int length) { string u = uppercase(getRawSubSequence(seqname, start, length)); return removeIupacBases(u); } long unsigned int FB::FastaReference::sequenceLength(string seqname) { FastaIndexEntry entry = index->entry(seqname); return entry.length; } freebayes-1.3.6/src/FBFasta.h000066400000000000000000000053411417247743000157100ustar00rootroot00000000000000// *************************************************************************** // FastaIndex.h (c) 2010 Erik Garrison // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- // Last modified: 5 February 2010 (EG) // --------------------------------------------------------------------------- #ifndef FREEBAYES_FBFASTA_H #define FREEBAYES_FBFASTA_H #include #include #include #include #include #include #include #include "LargeFileSupport.h" #include "Utility.h" #include #include "split.h" #include #include #include using namespace std; namespace FB { class FastaIndexEntry { friend ostream& operator<<(ostream& output, const FastaIndexEntry& e); public: FastaIndexEntry(string name, int length, long long offset, int line_blen, int line_len); FastaIndexEntry(void); ~FastaIndexEntry(void); string name; // sequence name int length; // length of sequence long long offset; // bytes offset of sequence from start of file int line_blen; // line length in bytes, sequence characters int line_len; // line length including newline void clear(void); }; ostream& operator<<(ostream& output, const FastaIndexEntry& e); class FastaIndex : public map { friend ostream& operator<<(ostream& output, FastaIndex& i); public: FastaIndex(void); ~FastaIndex(void); vector sequenceNames; void indexReference(string refName); void readIndexFile(string fname); void writeIndexFile(string fname); ifstream indexFile; FastaIndexEntry entry(string key); void flushEntryToIndex(FastaIndexEntry& entry); string indexFileExtension(void); }; ostream& operator<<(ostream& output, FastaIndex& i); class FastaReference { public: void open(string reffilename); string filename; ~FastaReference(void); FILE* file; FastaIndex* index; vector findSequencesStartingWith(string seqnameStart); string getRawSequence(string seqname); string getSequence(string seqname); // potentially useful for performance, investigate // void getSequence(string seqname, string& sequence); string getRawSubSequence(string seqname, int start, int length); string getSubSequence(string seqname, int start, int length); string sequenceNameStartingWith(string seqnameStart); long unsigned int sequenceLength(string seqname); }; } // namespace FB #endif freebayes-1.3.6/src/Genotype.cpp000066400000000000000000002064021417247743000165700ustar00rootroot00000000000000#include "Genotype.h" #include "multichoose.h" #include "multipermute.h" vector Genotype::uniqueAlleles(void) { vector uniques; for (Genotype::iterator g = this->begin(); g != this->end(); ++g) { uniques.push_back(&g->allele); } return uniques; } int Genotype::getPloidy(void) { int result = 0; for (Genotype::const_iterator i = this->begin(); i != this->end(); ++i) { result += i->count; } return result; } vector Genotype::counts(void) { vector counts; for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { counts.push_back(i->count); } return counts; } vector Genotype::alternateAlleles(string& base) { vector alleles; for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; if (base != b.currentBase) alleles.push_back(b); } return alleles; } vector Genotype::alternateBases(string& base) { vector alleles; for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; if (base != b.currentBase) alleles.push_back(b.currentBase); } return alleles; } int Genotype::alleleCount(const string& base) { map::iterator ge = alleleCounts.find(base); if (ge == alleleCounts.end()) { return 0; } else { return ge->second; } } int Genotype::alleleCount(Allele& allele) { map::iterator ge = alleleCounts.find(allele.currentBase); if (ge == alleleCounts.end()) { return 0; } else { return ge->second; } } // returns true when the genotype is composed of a subset of the alleles bool Genotype::matchesAlleles(vector& alleles) { int p = 0; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { p += alleleCount(*a); } return ploidy == p; } double Genotype::alleleSamplingProb(const string& base) { map::iterator ge = alleleCounts.find(base); if (ge == alleleCounts.end()) { return 0; } else { return (double) ge->second / (double) ploidy; } } double Genotype::alleleSamplingProb(Allele& allele) { map::iterator ge = alleleCounts.find(allele.currentBase); if (ge == alleleCounts.end()) { return 0; } else { return (double) ge->second / (double) ploidy; } } string Genotype::relativeGenotype(string& refbase, vector& alts) { vector rg; for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; string& base = b.currentBase; if (base == refbase) { for (int j = 0; j < i->count; ++j) rg.push_back("0"); } else { int n = 1; bool matchingalt = false; for (vector::iterator a = alts.begin(); a != alts.end(); ++a, ++n) { if (base == a->currentBase) { matchingalt = true; for (int j = 0; j < i->count; ++j) rg.push_back(convert(n)); break; } } if (!matchingalt) { for (int j = 0; j < i->count; ++j) rg.push_back("."); } } } sort(rg.begin(), rg.end()); // enforces the same ordering for all genotypes //reverse(rg.begin(), rg.end()); // 1/0 ordering, or 1/1/0 etc. string result = join(rg, "/"); return result; // chop trailing '/' } void Genotype::relativeGenotype(vector& rg, string& refbase, vector& alts) { for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; string& base = b.currentBase; if (base == refbase) { for (int j = 0; j < i->count; ++j) rg.push_back(0); } else { int n = 1; bool matchingalt = false; for (vector::iterator a = alts.begin(); a != alts.end(); ++a, ++n) { if (base == a->currentBase) { matchingalt = true; for (int j = 0; j < i->count; ++j) rg.push_back(n); break; } } if (!matchingalt) { for (int j = 0; j < i->count; ++j) rg.push_back(-1); } } } sort(rg.begin(), rg.end()); // enforces the same ordering for all genotypes //reverse(rg.begin(), rg.end()); // 1/0 ordering, or 1/1/0 etc. } void Genotype::relativeGenotype(vector& rg, vector& alleles) { for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; string& base = b.currentBase; int n = 0; bool matchingalt = false; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a, ++n) { if (base == a->base()) { matchingalt = true; for (int j = 0; j < i->count; ++j) rg.push_back(n); break; } } if (!matchingalt) { for (int j = 0; j < i->count; ++j) rg.push_back(-1); } } sort(rg.begin(), rg.end()); // enforces the same ordering for all genotypes //reverse(rg.begin(), rg.end()); // 1/0 ordering, or 1/1/0 etc. } string Genotype::relativeGenotype(string& refbase, string& altbase) { vector rg; for (Genotype::iterator i = this->begin(); i != this->end(); ++i) { Allele& b = i->allele; if (b.currentBase == altbase && refbase != b.currentBase) { for (int j = 0; j < i->count; ++j) rg.push_back("1/"); } else if (b.currentBase != altbase && refbase != b.currentBase) { for (int j = 0; j < i->count; ++j) rg.push_back("./"); } else { for (int j = 0; j < i->count; ++j) rg.push_back("0/"); } } sort(rg.begin(), rg.end()); // enforces the same ordering for all genotypes //reverse(rg.begin(), rg.end()); // 1/0 ordering, or 1/1/0 etc. string result = accumulate(rg.begin(), rg.end(), string("")); return result.substr(0, result.size() - 1); // chop trailing '/' } bool Genotype::containsAllele(const string& base) { map::iterator ge = alleleCounts.find(base); if (ge == alleleCounts.end()) { return false; } else { return true; } } bool Genotype::containsAllele(Allele& allele) { map::iterator ge = alleleCounts.find(allele.currentBase); if (ge == alleleCounts.end()) { return false; } else { return true; } } bool Genotype::isHomozygous(void) { return size() == 1; } // if heterozgyous bool Genotype::isHeterozygous(void) { return size() > 1; } // if homozygous alternate bool Genotype::isHomozygousAlternate(void) { return isHomozygous() && !front().allele.isReference(); } // if homozygous reference bool Genotype::isHomozygousReference(void) { return isHomozygous() && front().allele.isReference(); } // the probability of drawing each allele out of the genotype, ordered by allele vector Genotype::alleleProbabilities(void) { vector probs; for (vector::const_iterator a = this->begin(); a != this->end(); ++a) { probs.push_back((long double) a->count / (long double) ploidy); } return probs; } // the probability of drawing each allele out of the genotype, ordered by allele, adjusted for reference bias vector Genotype::alleleProbabilities(Bias& observationBias) { vector probs; for (vector::const_iterator a = this->begin(); a != this->end(); ++a) { long double bias = 1; if (!a->allele.isReference()) { int alleleLengthDifference = a->allele.alternateSequence.size() - a->allele.referenceLength; bias = observationBias.bias(alleleLengthDifference); } probs.push_back(((long double) a->count / (long double) ploidy) * bias); } normalizeSumToOne(probs); return probs; } string Genotype::str(void) const { string s; for (Genotype::const_iterator ge = this->begin(); ge != this->end(); ++ge) { for (int i = 0; i < ge->count; ++i) s += ((ge == this->begin() && i == 0) ? "" : "/") + ge->allele.currentBase; } return s; } string IUPAC(Genotype& genotype) { const string g = genotype.str(); if (g == "AA") return "A"; if (g == "AC") return "M"; if (g == "AG") return "R"; if (g == "AT") return "W"; if (g == "CA") return "M"; if (g == "CC") return "C"; if (g == "CG") return "S"; if (g == "CT") return "Y"; if (g == "GA") return "R"; if (g == "GC") return "S"; if (g == "GG") return "G"; if (g == "GT") return "K"; if (g == "TA") return "W"; if (g == "TC") return "Y"; if (g == "TG") return "K"; if (g == "TT") return "T"; return g; } string IUPAC2GenotypeStr(string iupac, int ploidy) { if (iupac == "A") return "AA"; if (iupac == "M") return "AC"; if (iupac == "R") return "AG"; if (iupac == "W") return "AT"; if (iupac == "C") return "CC"; if (iupac == "S") return "CG"; if (iupac == "Y") return "CT"; if (iupac == "G") return "GG"; if (iupac == "K") return "GT"; if (iupac == "T") return "TT"; return iupac; } ostream& operator<<(ostream& out, const GenotypeElement& rhs) { for (int i = 0; i < rhs.count; ++i) out << rhs.allele.base() << "/"; //for (int i = 0; i < rhs.second; ++i) // out << rhs.first.currentBase; return out; } ostream& operator<<(ostream& out, const Genotype& g) { out << g.str(); return out; } ostream& operator<<(ostream& out, list& g) { for (list::iterator i = g.begin(); i != g.end(); ++i) { out << *i << endl; } return out; } ostream& operator<<(ostream& out, GenotypeCombo& g) { GenotypeCombo::iterator i = g.begin(); ++i; out << "combo posterior prob: " << g.posteriorProb << endl; out << "{\"" << g.front()->name << "\":[\"" << *(g.front()->genotype) << "\"," << exp(g.front()->prob) << "]"; for (;i != g.end(); ++i) { out << ", \"" << (*i)->name << "\":[\"" << *((*i)->genotype) << "\"," << exp((*i)->prob) << "]"; } out << "}"; return out; } bool operator<(Genotype& a, Genotype& b) { // genotypes of different ploidy are evaluated according to their relative ploidy if (a.ploidy != b.ploidy) return a.ploidy < b.ploidy; // because our constructor sorts each Genotype.alleles, we assume that we // have two equivalently sorted vectors to work with Genotype::iterator ai = a.begin(); Genotype::iterator bi = b.begin(); // step through each genotype, and if we find a difference between either // their allele or count return aallele != bi->allele) return ai->allele < bi->allele; else if (ai->count != bi->count) return ai->count < bi->count; } return false; // if the two are equal, then we return false per C++ convention } vector allPossibleGenotypes(int ploidy, vector& potentialAlleles) { vector genotypes; vector > alleleCombinations = multichoose(ploidy, potentialAlleles); for (vector >::iterator combo = alleleCombinations.begin(); combo != alleleCombinations.end(); ++combo) { genotypes.push_back(Genotype(*combo)); } return genotypes; } int GenotypeCombo::numberOfAlleles(void) { int count = 0; for (map::iterator f = alleleCounters.begin(); f != alleleCounters.end(); ++f) { const AlleleCounter& allele = f->second; count += allele.frequency; } return count; } // initializes cached counts associated with each GenotypeCombo void GenotypeCombo::init(bool useObsExpectations) { for (GenotypeCombo::iterator s = begin(); s != end(); ++s) { const SampleDataLikelihood& sdl = **s; const Sample& sample = *sdl.sample; ++genotypeCounts[sdl.genotype]; permutationsln += sdl.genotype->permutationsln; for (Genotype::iterator a = sdl.genotype->begin(); a != sdl.genotype->end(); ++a) { const string& alleleBase = a->allele.currentBase; // allele frequencies in selected genotypes in combo AlleleCounter& alleleCounter = alleleCounters[alleleBase]; alleleCounter.frequency += a->count; if (useObsExpectations) { // observational frequencies for binomial priors Sample::const_iterator as = sample.find(alleleBase); if (as != sample.end()) { vector alleles = as->second; alleleCounter.observations += alleles.size(); for (vector::iterator o = alleles.begin(); o != alleles.end(); ++o) { const Allele& allele = **o; if (allele.basesLeft >= allele.basesRight) { ++alleleCounter.placedLeft; if (allele.strand == STRAND_FORWARD) { ++alleleCounter.placedStart; } else { ++alleleCounter.placedEnd; } } else { ++alleleCounter.placedRight; if (allele.strand == STRAND_FORWARD) { ++alleleCounter.placedEnd; } else { ++alleleCounter.placedStart; } } if (allele.strand == STRAND_FORWARD) { ++alleleCounter.forwardStrand; } else { ++alleleCounter.reverseStrand; } } } } } } } void GenotypeCombo::addPriorAlleleCounts(map& priorACs) { for (map::iterator p = priorACs.begin(); p != priorACs.end(); ++p) { const string& alleleBase = p->first; int count = p->second; AlleleCounter& alleleCounter = alleleCounters[alleleBase]; //cerr <<"init "<< alleleCounter.frequency; alleleCounter.frequency += count; } } // frequency... should this just be "allele count"? int GenotypeCombo::alleleCount(Allele& allele) { map::iterator f = alleleCounters.find(allele.currentBase); if (f == alleleCounters.end()) { return 0; } else { return f->second.frequency; } } int GenotypeCombo::alleleCount(const string& allele) { map::iterator f = alleleCounters.find(allele); if (f == alleleCounters.end()) { return 0; } else { return f->second.frequency; } } long double GenotypeCombo::alleleFrequency(Allele& allele) { return alleleCount(allele) / (long double) numberOfAlleles(); } long double GenotypeCombo::alleleFrequency(const string& allele) { return alleleCount(allele) / (long double) numberOfAlleles(); } long double GenotypeCombo::genotypeFrequency(Genotype* genotype) { map::iterator g = genotypeCounts.find(genotype); if (g == genotypeCounts.end()) { return 0; } else { return g->second / size(); } } void GenotypeCombo::updateCachedCounts( Sample* sample, Genotype* oldGenotype, Genotype* newGenotype, bool useObsExpectations) { // update genotype counts --genotypeCounts[oldGenotype]; ++genotypeCounts[newGenotype]; // update permutations permutationsln -= oldGenotype->permutationsln; permutationsln += newGenotype->permutationsln; // remove allele frequencies which are now 0 or below map::iterator gc = genotypeCounts.begin(); while (gc != genotypeCounts.end()) { assert(gc->second >= 0); if (gc->second == 0) { genotypeCounts.erase(gc++); } else { ++gc; } } // TODO can we improve efficiency by only adjusting for bases which are actually changed // remove allele frequency information for old genotype for (Genotype::iterator g = oldGenotype->begin(); g != oldGenotype->end(); ++g) { GenotypeElement& ge = *g; const string& base = ge.allele.currentBase; AlleleCounter& alleleCounter = alleleCounters[base]; alleleCounter.frequency -= ge.count; if (useObsExpectations) { Sample::iterator s = sample->find(base); if (s != sample->end()) { const vector& alleles = s->second; alleleCounter.observations -= alleles.size(); int forward_strand = 0; int reverse_strand = 0; int placed_left = 0; int placed_right = 0; int placed_start = 0; int placed_end = 0; for (vector::const_iterator a = alleles.begin(); a != alleles.end(); ++a) { const Allele& allele = **a; if (allele.strand == STRAND_FORWARD) { ++forward_strand; } else { ++reverse_strand; } if (allele.basesLeft >= allele.basesRight) { ++placed_left; if (allele.strand == STRAND_FORWARD) { ++placed_start; } else { ++placed_end; } } else { ++placed_right; if (allele.strand == STRAND_FORWARD) { ++placed_end; } else { ++placed_start; } } } alleleCounter.forwardStrand -= forward_strand; alleleCounter.reverseStrand -= reverse_strand; alleleCounter.placedLeft -= placed_left; alleleCounter.placedRight -= placed_right; alleleCounter.placedStart -= placed_start; alleleCounter.placedEnd -= placed_end; } } } // add allele frequency information for new genotype for (Genotype::iterator g = newGenotype->begin(); g != newGenotype->end(); ++g) { GenotypeElement& ge = *g; const string& base = ge.allele.currentBase; AlleleCounter& alleleCounter = alleleCounters[base]; alleleCounter.frequency += ge.count; if (useObsExpectations) { Sample::iterator s = sample->find(base); if (s != sample->end()) { const vector& alleles = s->second; alleleCounter.observations += alleles.size(); int forward_strand = 0; int reverse_strand = 0; int placed_left = 0; int placed_right = 0; int placed_start = 0; int placed_end = 0; for (vector::const_iterator a = alleles.begin(); a != alleles.end(); ++a) { const Allele& allele = **a; if (allele.strand == STRAND_FORWARD) { ++forward_strand; } else { ++reverse_strand; } if (allele.basesLeft >= allele.basesRight) { ++placed_left; if (allele.strand == STRAND_FORWARD) { ++placed_start; } else { ++placed_end; } } else { ++placed_right; if (allele.strand == STRAND_FORWARD) { ++placed_end; } else { ++placed_start; } } } alleleCounter.forwardStrand += forward_strand; alleleCounter.reverseStrand += reverse_strand; alleleCounter.placedLeft += placed_left; alleleCounter.placedRight += placed_right; alleleCounter.placedStart += placed_start; alleleCounter.placedEnd += placed_end; } } } // remove allele frequencies which are now 0 or below map::iterator af = alleleCounters.begin(); while (af != alleleCounters.end()) { assert(af->second.frequency >= 0); if (af->second.frequency == 0) { assert(af->second.observations == 0); alleleCounters.erase(af++); } else { ++af; } } } map GenotypeCombo::countFrequencies(void) { map frequencyCounts; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; map::iterator c = frequencyCounts.find(allele.frequency); if (c != frequencyCounts.end()) { c->second += 1; } else { frequencyCounts[allele.frequency] = 1; } } return frequencyCounts; } vector GenotypeCombo::counts(void) { //map alleleCounters = countAlleles(); vector counts; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; counts.push_back(allele.frequency); } return counts; } int GenotypeCombo::hetCount(void) { int hc = 0; for (GenotypeCombo::iterator s = begin(); s != end(); ++s) { if (!(*s)->genotype->homozygous) { ++hc; } } return hc; } vector GenotypeCombo::observationCounts(void) { vector counts; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; counts.push_back(allele.observations); } return counts; } int GenotypeCombo::observationTotal(void) { int total = 0; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; total += allele.observations; } return total; } // how many copies of the locus are in the whole genotype combination? int GenotypeCombo::ploidy(void) { int copies = 0; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; copies += allele.frequency; } return copies; } vector GenotypeCombo::alleleProbs(void) { vector probs; long double copies = ploidy(); for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { const AlleleCounter& allele = a->second; probs.push_back(allele.frequency / copies); } return probs; } vector GenotypeCombo::alleles(void) { vector bases; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { bases.push_back(a->first); } return bases; } // returns true if the combination is 100% homozygous bool GenotypeCombo::isHomozygous(void) { return alleleCounters.size() == 1; } void sortSampleDataLikelihoods(vector& likelihoods) { SampleDataLikelihoodCompare datalikelihoodCompare; sort(likelihoods.begin(), likelihoods.end(), datalikelihoodCompare); int i = 0; for (vector::iterator sdl = likelihoods.begin(); sdl != likelihoods.end(); ++sdl) { sdl->rank = i++; } } bool sortSampleDataLikelihoodsByMarginals(vector& likelihoods) { SampleMarginalCompare marginalLikelihoodCompare; sort(likelihoods.begin(), likelihoods.end(), marginalLikelihoodCompare); bool reordered = false; int i = 0; for (vector::iterator sdl = likelihoods.begin(); sdl != likelihoods.end(); ++sdl) { int newrank = i++; if (sdl->rank != newrank) { reordered = true; sdl->rank = newrank; } } return reordered; } bool sortSampleDataLikelihoodsByMarginals(SampleDataLikelihoods& samplesLikelihoods) { bool reordered = false; for (SampleDataLikelihoods::iterator s = samplesLikelihoods.begin(); s != samplesLikelihoods.end(); ++s) { reordered |= sortSampleDataLikelihoodsByMarginals(*s); } return reordered; } bool sortSampleDataLikelihoodsByMarginalsAndObs(vector& likelihoods) { SampleMarginalAndObsCompare marginalLikelihoodAndObsCompare; sort(likelihoods.begin(), likelihoods.end(), marginalLikelihoodAndObsCompare); bool reordered = false; int i = 0; for (vector::iterator sdl = likelihoods.begin(); sdl != likelihoods.end(); ++sdl) { int newrank = i++; if (sdl->rank != newrank) { reordered = true; sdl->rank = newrank; } } return reordered; } bool sortSampleDataLikelihoodsByMarginalsAndObs(SampleDataLikelihoods& samplesLikelihoods) { bool reordered = false; for (SampleDataLikelihoods::iterator s = samplesLikelihoods.begin(); s != samplesLikelihoods.end(); ++s) { reordered |= sortSampleDataLikelihoodsByMarginalsAndObs(*s); } return reordered; } bool sortSampleDataLikelihoodsScaledByMarginals(vector& likelihoods) { SampleLikelihoodCompare likelihoodCompare; sort(likelihoods.begin(), likelihoods.end(), likelihoodCompare); bool reordered = false; int i = 0; for (vector::iterator sdl = likelihoods.begin(); sdl != likelihoods.end(); ++sdl) { int newrank = i++; if (sdl->rank != newrank) { reordered = true; sdl->rank = newrank; } } return reordered; } bool sortSampleDataLikelihoodsScaledByMarginals(SampleDataLikelihoods& samplesLikelihoods) { bool reordered = false; for (SampleDataLikelihoods::iterator s = samplesLikelihoods.begin(); s != samplesLikelihoods.end(); ++s) { reordered |= sortSampleDataLikelihoodsScaledByMarginals(*s); } return reordered; } // assumes that the data likelihoods are sorted void dataLikelihoodMaxGenotypeCombo( GenotypeCombo& combo, SampleDataLikelihoods& sampleDataLikelihoods, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { for (SampleDataLikelihoods::iterator s = sampleDataLikelihoods.begin(); s != sampleDataLikelihoods.end(); ++s) { SampleDataLikelihood* sdl = &s->at(0); combo.push_back(sdl); combo.probObsGivenGenotypes += sdl->prob; } combo.init(binomialObsPriors); combo.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } void makeComboByDatalLikelihoodRank( GenotypeCombo& combo, vector& initialPosition, // starting combo in terms of offsets from data likelihood maximum SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, map& priorACs, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { // generate the best genotype combination according to data // likelihoods vector::iterator offset = initialPosition.begin(); for (SampleDataLikelihoods::iterator s = variantSampleDataLikelihoods.begin(); s != variantSampleDataLikelihoods.end(); ++s) { // use the offsets to generate the starting combination SampleDataLikelihood* sdl = &s->at(*offset++); combo.push_back(sdl); combo.probObsGivenGenotypes += sdl->prob; } // these samples have well-differentiated data likelihoods, and // aren't changed during posterior integration for (SampleDataLikelihoods::iterator s = invariantSampleDataLikelihoods.begin(); s != invariantSampleDataLikelihoods.end(); ++s) { SampleDataLikelihood* sdl = &s->at(*offset++); combo.push_back(sdl); combo.probObsGivenGenotypes += sdl->prob; } combo.init(binomialObsPriors); // add the prior ACs into the comob allele counters combo.addPriorAlleleCounts(priorACs); combo.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } // 'local' genotype combinations which step only in one sample away from the // data likelihood maxiumum. deal with all genotypes. void allLocalGenotypeCombinations( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& sampleDataLikelihoods, Samples& samples, map& priorACs, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar, bool keepCombos) { // make the data likelihood maximum if needed if (comboKing.empty()) { vector initialPosition; initialPosition.assign(sampleDataLikelihoods.size(), 0); SampleDataLikelihoods nullDataLikelihoods; // dummy variable makeComboByDatalLikelihoodRank(comboKing, initialPosition, sampleDataLikelihoods, nullDataLikelihoods, priorACs, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } // ensure the comboKing is added if (combos.empty()) { combos.push_back(comboKing); } // for each sampledatalikelihood // add a combo for each genotype where the combo is one step from the comboKing size_t sampleOffset = 0; //GenotypeCombo::iterator sampleGenotypeItr = comboKing.begin(); for (SampleDataLikelihoods::iterator s = sampleDataLikelihoods.begin(); s != sampleDataLikelihoods.end(); ++s, ++sampleOffset) { SampleDataLikelihood& oldsdl = *comboKing.at(sampleOffset); vector& sdls = *s; for (vector::iterator dl = sdls.begin(); dl != sdls.end(); ++dl) { SampleDataLikelihood& newsdl = *dl; if (newsdl.genotype == oldsdl.genotype) { // don't duplicate the comboKing continue; } combos.push_back(comboKing); GenotypeCombo& combo = combos.back(); // get the old and new genotypes, which we compare // to change the cached counts and probability of // the combo combo.updateCachedCounts(oldsdl.sample, oldsdl.genotype, newsdl.genotype, binomialObsPriors); // replace genotype with new genotype combo.at(sampleOffset) = &*dl; // find data likelihood difference from ComboKing long double diff = oldsdl.prob - newsdl.prob; // adjust combination total data likelihood combo.probObsGivenGenotypes -= diff; combo.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); // TODO // memory-saving intervention, improve this // difficult if we want to calculate marginals... if (!keepCombos) { // we should only have two combos in the list now... if (combos.front().posteriorProb < combos.back().posteriorProb) { combos.pop_front(); } else { combos.pop_back(); } } } } GenotypeComboResultSorter gcrSorter; combos.sort(gcrSorter); combos.unique(); } bool bandedGenotypeCombinations( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, Samples& samples, map& priorACs, int bandwidth, int banddepth, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar, bool keepCombos) { // get the number of samples that vary int nsamples = variantSampleDataLikelihoods.size(); // cap bandwidth at the number of variant samples bandwidth = (bandwidth > nsamples) ? nsamples : bandwidth; // no variant samples if (nsamples == 0) { combos.push_back(comboKing); return true; } // overview: // // For each order of indexes in the bandwidth and banddepth, Obtain // all multiset permutations of a set of indexes. Then use these // indexes to get the nth-best genotype from each individual's set // of genotypes for which we have data likelihoods // (sampleDataLikelihoods), and turn this set into a genotype // combination. Update the combination probability inline here so // we don't incur O(N^2) penalty calculating the probability within // our genotypeCombinationPriors calculation loop, where we // estimate the posterior probability of each genotype combination // given its data likelihood and the prior probability of the // distribution of alleles it represents. // // example (bandwidth = 2, banddepth = 2) // indexes: 0 0 0 0 1, 0 0 0 1 1 // // permutations: 0 0 0 0 1 // 0 0 0 1 0 // 0 0 1 0 0 // 0 1 0 0 0 // 1 0 0 0 0 // 1 1 0 0 0 // 0 1 1 0 0 // 1 0 1 0 0 // 0 1 0 1 0 // 0 0 1 1 0 // 1 0 0 1 0 // 0 1 0 0 1 // 0 0 1 0 1 // 0 0 0 1 1 // 1 0 0 0 1 // // We then convert these permutation to genotype combinations by // using the index to pick the nth-best genotype according to // sorted individual genotype data likelihoods. // // In addition to this simple case, We can flexibly extend this to // larger search spaces by changing the depth and width of the // deviations from the data likelihood maximizer (aka 'king'). // vector depths; depths.reserve(banddepth); for (int i = 0; i < banddepth; ++i) { depths.push_back(i); } vector > deviations = multichoose(bandwidth, depths); // skip the first vector, which will always be the same as the // combo king, and has been pushed into our combinations already for (vector >::iterator d = deviations.begin(); d != deviations.end(); ++d) { vector& indexes = *d; indexes.reserve(nsamples); for (int h = 0; h < (nsamples - bandwidth); ++h) { indexes.push_back(0); } vector > indexPermutations = multipermute(indexes); for (vector >::const_iterator p = indexPermutations.begin(); p != indexPermutations.end(); ++p) { combos.push_back(comboKing); // copy the king, and then we'll modify it according to the indicies GenotypeCombo& combo = combos.back(); GenotypeCombo::iterator sampleGenotypeItr = combo.begin(); vector::const_iterator n = p->begin(); for (SampleDataLikelihoods::iterator s = variantSampleDataLikelihoods.begin(); s != variantSampleDataLikelihoods.end(); ++s, ++n, ++sampleGenotypeItr) { SampleDataLikelihood& oldsdl = **sampleGenotypeItr; SampleDataLikelihood*& oldsdl_ptr = *sampleGenotypeItr; vector& sdls = *s; int offset = *n + oldsdl.rank; if (offset > 0) { // shift-back if this combo is beyond the bounds of the individual's set of genotypes offset %= s->size(); SampleDataLikelihood* newsdl = &sdls.at(offset); // get the old and new genotypes, which we compare // to change the cached counts and probability of // the combo combo.updateCachedCounts(oldsdl.sample, oldsdl.genotype, newsdl->genotype, binomialObsPriors); // replace genotype with new genotype oldsdl_ptr = newsdl; // find data likelihood difference from ComboKing long double diff = oldsdl.prob - newsdl->prob; // adjust combination total data likelihood combo.probObsGivenGenotypes -= diff; } } combo.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); if (!keepCombos && combos.size() > 1) { // we should only have two combos in the list now... if (combos.front().posteriorProb < combos.back().posteriorProb) { combos.pop_front(); } else { combos.pop_back(); } } } } GenotypeComboResultSorter gcrSorter; combos.sort(gcrSorter); combos.unique(); return true; } void convergentGenotypeComboSearch( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& sampleDataLikelihoods, SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, Samples& samples, vector& genotypeAlleles, map& priorACs, int bandwidth, int banddepth, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar, int maxiterations, int& totaliterations, bool addHomozygousCombos) { if (comboKing.empty()) { // seed EM with the data likelihood maximum vector initialPosition; initialPosition.assign(sampleDataLikelihoods.size(), 0); makeComboByDatalLikelihoodRank(comboKing, initialPosition, variantSampleDataLikelihoods, invariantSampleDataLikelihoods, priorACs, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } // set best position, which is updated during the EM step GenotypeCombo bestCombo = comboKing; int i = 0; for (; i < maxiterations; ++i) { combos.clear(); if (bandwidth == 0 && banddepth == 0) { allLocalGenotypeCombinations( combos, bestCombo, sampleDataLikelihoods, samples, priorACs, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar, false); // throw away combos, so as to reduce memory usage } else { bandedGenotypeCombinations( combos, bestCombo, variantSampleDataLikelihoods, invariantSampleDataLikelihoods, samples, priorACs, bandwidth, banddepth, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar, false); // throw away combos, so as to reduce memory usage } //cerr << "combos size = " << combos.size() << endl; //cerr << "best combo: " << combos.front() << endl; // check for convergence // // either we've converged on the best homozygous combo, which suggests // weak support for variation, or we've got the same combo twice in a // row as our best if (combos.front().isHomozygous() || bestCombo == combos.front()) { // we've converged if (bandwidth == 0 && banddepth == 0) { // XXX temporary hack // get the rest of the combos in memory so we can do computation with them... allLocalGenotypeCombinations( combos, combos.front(), sampleDataLikelihoods, samples, priorACs, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar, true); // keep combos } else { bandedGenotypeCombinations( combos, bestCombo, variantSampleDataLikelihoods, invariantSampleDataLikelihoods, samples, priorACs, bandwidth, banddepth, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar, true); // keep combos } break; } else { bestCombo = combos.front(); } } //cout << i << " iterations" << "\t" << variantSampleDataLikelihoods.size() << " varying samples" // << " and " << invariantSampleDataLikelihoods.size() << " invariant samples" << endl; totaliterations = i; // add the homozygous cases if (addHomozygousCombos) { addAllHomozygousCombos(combos, sampleDataLikelihoods, variantSampleDataLikelihoods, invariantSampleDataLikelihoods, samples, genotypeAlleles, theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } } void addAllHomozygousCombos( list& combos, SampleDataLikelihoods& sampleDataLikelihoods, SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, Samples& samples, vector& genotypeAlleles, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { // determine which homozygous combos we already have map allelesWithHomozygousCombos; for (list::iterator c = combos.begin(); c != combos.end(); ++c) { bool allSameAndHomozygous = true; GenotypeCombo::iterator gc = c->begin(); Genotype* genotype; if ((*gc)->genotype->homozygous) { genotype = (*gc)->genotype; } else { continue; } for (; gc != c->end(); ++gc) { if (! ((*gc)->genotype == genotype) ) { allSameAndHomozygous = false; break; } } if (allSameAndHomozygous) { allelesWithHomozygousCombos[genotype->front().allele] = true; } } // accumulate the needed homozygous combos map homozygousCombos; for (vector::iterator a = genotypeAlleles.begin(); a != genotypeAlleles.end(); ++a) { Allele& allele = *a; map::iterator g = allelesWithHomozygousCombos.find(allele); if (g == allelesWithHomozygousCombos.end()) { // we need to make a new combo // iterate through the sample genotype vector GenotypeCombo& combo = homozygousCombos[allele]; // match the way we make combos in bandedCombos*() SampleDataLikelihoods::iterator s = variantSampleDataLikelihoods.begin(); while (s != invariantSampleDataLikelihoods.end()) { // for each sample genotype, if the genotype is the same as our currently needed genotype, push it back onto a new combo for (vector::iterator d = s->begin(); d != s->end(); ++d) { SampleDataLikelihood& sdl = *d; // this check is ploidy-independent if (sdl.genotype->homozygous && sdl.genotype->front().allele == allele) { combo.push_back(&sdl); break; } } ++s; if (s == variantSampleDataLikelihoods.end()) { s = invariantSampleDataLikelihoods.begin(); } } } } // accumulate homozygous combos and set their combo data probabilities for (map::iterator c = homozygousCombos.begin(); c != homozygousCombos.end(); ++c) { GenotypeCombo& gc = c->second; if (gc.empty()) { continue; } gc.probObsGivenGenotypes = 0; for (GenotypeCombo::iterator sdl = gc.begin(); sdl != gc.end(); ++sdl) { gc.probObsGivenGenotypes += (*sdl)->prob; // set up data likelihood for combo } gc.init(binomialObsPriors); // cache allele frequency information gc.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); combos.push_back(gc); } GenotypeComboResultSorter gcrSorter; combos.sort(gcrSorter); combos.unique(); /* for (list::iterator g = combos.begin(); g != combos.end(); ++g) { GenotypeCombo& gc = *g; cerr << gc << endl << "," << gc.probObsGivenGenotypes << "," << gc.posteriorProb << "," << gc.priorProbG_Af << "," << gc.priorProbAf << "," << gc.priorProbObservations << endl; map acs = gc.countFrequencies(); for (map::iterator a = acs.begin(); a != acs.end(); ++a) { cerr << a->first << " " << a->second << endl; } cerr << "***************************" << endl; } */ } // conditional probability of the genotype combination given the represented allele frequencies long double GenotypeCombo::probabilityGivenAlleleFrequencyln(bool permute) { //return -multinomialCoefficientLn(numberOfAlleles(), counts()); int n = numberOfAlleles(); long double lnhetscalar = 0; if (permute) { // scale by the product of permutations of heterozygotes lnhetscalar = permutationsln; // cached permutations of this combo } return lnhetscalar - multinomialCoefficientLn(n, counts()); } long double GenotypeCombo::hweComboProb(void) { long double comboHweProb = 0; for (map::iterator gc = genotypeCounts.begin(); gc != genotypeCounts.end(); ++gc) { Genotype* genotype = gc->first; comboHweProb += hweProbGenotypeFrequencyln(genotype); } return comboHweProb; } // probability of the combo under HWE long double GenotypeCombo::hweExpectedFrequencyln(Genotype* genotype) { int ploidy = genotype->ploidy; vector genotypeAlleleCounts; vector alleleFrequencies; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { genotypeAlleleCounts.push_back(genotype->alleleCount(a->first)); alleleFrequencies.push_back((long double) a->second.frequency / (long double) numberOfAlleles()); } long double HWECoefficientln = multinomialCoefficientLn(ploidy, genotypeAlleleCounts); vector::iterator c = genotypeAlleleCounts.begin(); vector::iterator f = alleleFrequencies.begin(); for (; c != genotypeAlleleCounts.end(); ++c, ++f) { HWECoefficientln += powln(log(*f), *c); } return HWECoefficientln; } // probability that the genotype count in the combo is what it is given the // counts of the other alleles long double GenotypeCombo::hweProbGenotypeFrequencyln(Genotype* genotype) { //cout << endl << *genotype << endl; int popTotalAlleles = numberOfAlleles(); //cout << "popTotalAlleles = " << popTotalAlleles << endl; vector popAlleleCounts; vector thisGenotypeAlleleCounts; for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { //cout << a->first << "\t" << a->second.frequency << "\t" << genotype->alleleCount(a->first) << endl; popAlleleCounts.push_back(a->second.frequency); thisGenotypeAlleleCounts.push_back(genotype->alleleCount(a->first)); } int popTotalGenotypes = 0; vector popGenotypeCounts; // for haploid, estimate as if we have all ploidy 1 if (genotype->ploidy == 1) { for (map::iterator a = alleleCounters.begin(); a != alleleCounters.end(); ++a) { popGenotypeCounts.push_back(a->second.frequency); popTotalGenotypes += a->second.frequency; } } else { for (map::iterator g = genotypeCounts.begin(); g != genotypeCounts.end(); ++g) { if (g->first->ploidy == genotype->ploidy) { //cout << *g->first << "\t" << g->second << endl; popGenotypeCounts.push_back(g->second); popTotalGenotypes += g->second; } } } long double arrangementsOfAllelesInSample = multinomialCoefficientLn(popTotalAlleles, popAlleleCounts); //cout << "arrangementsOfAllelesInSample = " << exp(arrangementsOfAllelesInSample) << endl; long double arrangementsWithExactlyCountGenotypesGivenAF = multinomialCoefficientLn(genotype->ploidy, thisGenotypeAlleleCounts) + multinomialCoefficientLn(popTotalGenotypes, popGenotypeCounts); /* cout << "multinomialCoefficientLn(genotype->ploidy, thisGenotypeAlleleCounts) = " << exp(multinomialCoefficientLn(genotype->ploidy, thisGenotypeAlleleCounts)) << endl; cout << "multinomialCoefficientLn(popTotalGenotypes, popGenotypeCounts) = " << exp(multinomialCoefficientLn(popTotalGenotypes, popGenotypeCounts)) << endl; cout << "arrangementsWithExactlyCountGenotypesGivenAF = " << exp(arrangementsWithExactlyCountGenotypesGivenAF) << endl; cout << "hwe prob = " << exp(arrangementsWithExactlyCountGenotypesGivenAF - arrangementsOfAllelesInSample) << endl; */ return arrangementsWithExactlyCountGenotypesGivenAF - arrangementsOfAllelesInSample; } // core calculation of genotype combination likelihoods // void GenotypeCombo::calculatePosteriorProbability( long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { posteriorProb = 0; priorProb = 0; priorProbG_Af = 0; priorProbAf = 0; priorProbObservations = 0; priorProbGenotypesGivenHWE = 0; // when we are operating on pooled samples, we will not be able to // ascertain the number of heterozygotes in the pool, // rendering P(Genotype combo | Allele frequency) meaningless if (!pooled) { priorProbG_Af = probabilityGivenAlleleFrequencyln(permute); } // XXX XXX hwe if (hwePriors) { for (map::iterator gc = genotypeCounts.begin(); gc != genotypeCounts.end(); ++gc) { Genotype* genotype = gc->first; priorProbGenotypesGivenHWE += hweProbGenotypeFrequencyln(genotype); } } if (binomialObsPriors) { // for each alternate and the reference allele // calculate the binomial probability that we see the given strand balance and read placement prob //cerr << *this << endl; for (map::iterator ac = alleleCounters.begin(); ac != alleleCounters.end(); ++ac) { //const string& allele = ac->first; const AlleleCounter& alleleCounter = ac->second; int obs = alleleCounter.observations; /* cerr << endl << "--------------------------------------------" << endl; cerr << " counts: " << alleleCounter.frequency << " observations " << alleleCounter.observations << " " << alleleCounter.forwardStrand << "," << alleleCounter.reverseStrand << " " << alleleCounter.placedLeft << "," << alleleCounter.placedRight << " " << alleleCounter.placedStart << "," << alleleCounter.placedEnd << endl; cerr << "priorProbObservations = " << priorProbObservations << endl; cerr << "binprobln strand = " << binomialProbln(alleleCounter.forwardStrand, obs, 0.5) << endl; cerr << "binprobln position = " << binomialProbln(alleleCounter.placedLeft, obs, 0.5) << endl; cerr << "binprobln start = " << binomialProbln(alleleCounter.placedStart, obs, 0.5) << endl; */ priorProbObservations += binomialProbln(alleleCounter.forwardStrand, obs, 0.5) + binomialProbln(alleleCounter.placedLeft, obs, 0.5) + binomialProbln(alleleCounter.placedStart, obs, 0.5); } } // ok... now do the same move for the observation counts // --- this should capture "Allele Balance" if (alleleBalancePriors) { priorProbObservations += multinomialSamplingProbLn(alleleProbs(), observationCounts()); } // with larger population samples, the effect of // P(Genotype combo | Allele frequency) may bias us against reporting // true variants which are under selection despite overwhelming evidence // for variation. this allows us to scale the effect of this prior if (diffusionPriorScalar != 1) { priorProbG_Af /= diffusionPriorScalar; } // Ewens' Sampling Formula if (ewensPriors) { priorProbAf = alleleFrequencyProbabilityln(countFrequencies(), theta); } // posterior probability /* cerr << "priorProbG_Af " << priorProbG_Af << endl << "priorProbAf " << priorProbAf << endl << "priorProbObservations " << priorProbObservations << endl << "priorProbGenotypesGivenHWE " << priorProbGenotypesGivenHWE << endl << "probObsGivenGenotypes " << probObsGivenGenotypes << endl; */ priorProb = priorProbG_Af + priorProbAf + priorProbObservations + priorProbGenotypesGivenHWE; posteriorProb = priorProb + probObsGivenGenotypes; /* cerr << "priorProb " << priorProb << endl; cerr << "posteriorProb " << posteriorProb << endl; cerr << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl << endl; */ } pair alternateAndReferenceCount(vector& observations, string& refbase, string altbase) { int altcount = 0; int refcount = 0; for (vector::iterator allele = observations.begin(); allele != observations.end(); ++allele) { if ((*allele)->currentBase == refbase) ++refcount; else if ((*allele)->currentBase == altbase) ++altcount; } return make_pair(altcount, refcount); } void genotypeCombo2Map(GenotypeCombo& gc, GenotypeComboMap& gcm) { for (GenotypeCombo::iterator g = gc.begin(); g != gc.end(); ++g) { gcm[(*g)->name] = *g;; } } void orderedGenotypeCombo( GenotypeCombo& combo, GenotypeCombo& orderedCombo, SampleDataLikelihoods& sampleDataLikelihoods, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { GenotypeComboMap bestComboMap; genotypeCombo2Map(combo, bestComboMap); for (SampleDataLikelihoods::iterator sdl = sampleDataLikelihoods.begin(); sdl != sampleDataLikelihoods.end(); ++sdl) { orderedCombo.push_back(bestComboMap[sdl->front().name]); } orderedCombo.init(binomialObsPriors); orderedCombo.calculatePosteriorProbability(theta, pooled, ewensPriors, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } // returns a list of the alternate alleles represented by the given genotype // combo sorted by frequency vector > alternateAlleles(GenotypeCombo& combo, string referenceBase) { map alternates; for (GenotypeCombo::iterator g = combo.begin(); g != combo.end(); ++g) { vector alts = (*g)->genotype->alternateAlleles(referenceBase); for (vector::iterator a = alts.begin(); a != alts.end(); ++a) { if (alternates.find(*a) == alternates.end()) { alternates[*a] = 1; } else { alternates[*a] += 1; } } } vector > sortedAlternates; for (map::iterator a = alternates.begin(); a != alternates.end(); ++a) { sortedAlternates.push_back(make_pair(a->first, a->second)); } AllelePairIntCompare alleleCountCompare; sort(sortedAlternates.begin(), sortedAlternates.end(), alleleCountCompare); return sortedAlternates; } int Genotype::containedAlleleTypes(void) { int t = 0; for (Genotype::iterator g = begin(); g != end(); ++g) { t |= g->allele.type; } return t; } vector Genotype::alleleObservationCounts(Sample& sample) { vector counts; for (Genotype::iterator i = begin(); i != end(); ++i) { Allele& b = i->allele; counts.push_back(sample.observationCount(b)); } return counts; } int Genotype::alleleObservationCount(Sample& sample) { int count = 0; for (Genotype::iterator i = begin(); i != end(); ++i) { Allele& b = i->allele; count += sample.observationCount(b); } return count; } bool Genotype::sampleHasSupportingObservations(Sample& sample) { for (Genotype::iterator i = begin(); i != end(); ++i) { Allele& b = i->allele; if (sample.observationCount(b) != 0) { return true; } } return false; } bool Genotype::sampleHasSupportingObservationsForAllAlleles(Sample& sample) { vector counts = alleleObservationCounts(sample); for (vector::iterator c = counts.begin(); c != counts.end(); ++c) { if (*c == 0) { return false; } } return true; } map > getGenotypesByPloidy(vector& ploidies, vector& genotypeAlleles) { map > genotypesByPloidy; for (vector::iterator p = ploidies.begin(); p != ploidies.end(); ++p) { int ploidy = *p; if (genotypesByPloidy.find(ploidy) == genotypesByPloidy.end()) { genotypesByPloidy[ploidy] = allPossibleGenotypes(ploidy, genotypeAlleles); } } return genotypesByPloidy; } vector Genotype::nullMatchingGenotypes(vector& gts) { vector results; // assert that this genotype has null alleles for (vector::iterator g = gts.begin(); g != gts.end(); ++g) { Genotype& genotype = *g; if (genotype.ploidy == ploidy) { bool match = true; // if the non-null alleles and counts are the same between genotypes, add the genotype to the results // null matching genotypes have the same number of alleles and alts as this genotype, for (Genotype::iterator gt = begin(); gt != end(); ++gt) { if (genotype.alleleCount(gt->allele) != gt->count) { match = false; } } if (match) { results.push_back(&*g); } } } return results; } bool Genotype::hasNullAllele(void) { return alleleCount("N") != 0; } void GenotypeCombo::appendIndependentCombo(GenotypeCombo& other) { for (map::iterator c = other.alleleCounters.begin(); c != other.alleleCounters.end(); ++c) { const string& allele = c->first; AlleleCounter& otherCounter = c->second; AlleleCounter& thisCounter = alleleCounters[allele]; thisCounter.frequency += otherCounter.frequency; thisCounter.observations += otherCounter.observations; thisCounter.forwardStrand += otherCounter.forwardStrand; thisCounter.reverseStrand += otherCounter.reverseStrand; thisCounter.placedLeft += otherCounter.placedLeft; thisCounter.placedRight += otherCounter.placedRight; thisCounter.placedStart += otherCounter.placedStart; thisCounter.placedEnd += otherCounter.placedEnd; } for (GenotypeCombo::iterator s = begin(); s != end(); ++s) { const SampleDataLikelihood& sdl = **s; const Sample& sample = *sdl.sample; ++genotypeCounts[sdl.genotype]; } // permutations permutationsln += other.permutationsln; // combine probabilities assuming conditional independence between these two combinations // data likelihood probObsGivenGenotypes += other.probObsGivenGenotypes; // posterior posteriorProb += other.posteriorProb; // priors priorProb += other.priorProb; priorProbG_Af += other.priorProbG_Af; priorProbAf += other.priorProbAf; priorProbObservations += other.priorProbObservations; priorProbGenotypesGivenHWE += other.priorProbGenotypesGivenHWE; // add the other sample data likelihoods to this combo reserve(size() + distance(other.begin(), other.end())); insert(end(), other.begin(), other.end()); } // all combos of each population are combined with the best combos of the other pops // combines all like homozygous combos void combinePopulationCombos(list& genotypeCombos, map >& genotypeCombosByPopulation) { if (genotypeCombosByPopulation.size() == 1) { // one pop, default case is to just pass forward the current set of combos genotypeCombos = genotypeCombosByPopulation.begin()->second; } else { // for each sub-pop for (map >::iterator p = genotypeCombosByPopulation.begin(); p != genotypeCombosByPopulation.end(); ++p) { const string& population = p->first; list& populationGenotypeCombos = p->second; GenotypeCombo otherPopulationsBestCombo; // run through all the other combos to generate a best combo for the // other populations, and accumulate homozygous combos, keyed by allele for (map >::iterator o = genotypeCombosByPopulation.begin(); o != genotypeCombosByPopulation.end(); ++o) { if (o->first != p->first) { // if the genotype list is for a different population GenotypeCombo& bestCombo = o->second.front(); // this is the "best" combo from the other population // add the best combo from this population to the best combos from the other populations if (otherPopulationsBestCombo.empty()) { otherPopulationsBestCombo = bestCombo; } else { otherPopulationsBestCombo.appendIndependentCombo(bestCombo); } } } // append the best "other population" combo to all the combos in this set for (list::iterator g = populationGenotypeCombos.begin(); g != populationGenotypeCombos.end(); ++g) { genotypeCombos.push_back(*g); genotypeCombos.back().appendIndependentCombo(otherPopulationsBestCombo); } } map otherPopulationsHomozygousCombos; // generate the homozygous combos for all the populations for (map >::iterator o = genotypeCombosByPopulation.begin(); o != genotypeCombosByPopulation.end(); ++o) { // accumulate all the homozygous combos into the otherPopulationsHomozygousCombos for (list::iterator c = o->second.begin(); c != o->second.end(); ++c) { GenotypeCombo& combo = *c; if (combo.isHomozygous()) { Allele& allele = combo.front()->genotype->alleles.front(); map::iterator g = otherPopulationsHomozygousCombos.find(allele); if (g == otherPopulationsHomozygousCombos.end()) { otherPopulationsHomozygousCombos[allele] = combo; } else { GenotypeCombo& homozygousCombo = g->second; homozygousCombo.appendIndependentCombo(combo); } } } } // and add them to the result set for (map::iterator h = otherPopulationsHomozygousCombos.begin(); h!= otherPopulationsHomozygousCombos.end(); ++h) { GenotypeCombo& combo = h->second; //assert(genotypeCombos.back().size() == combo.size()); genotypeCombos.push_back(combo); } // sort the combined combos GenotypeComboResultSorter gcrSorter; genotypeCombos.sort(gcrSorter); genotypeCombos.unique(); } } freebayes-1.3.6/src/Genotype.h000066400000000000000000000355301417247743000162370ustar00rootroot00000000000000#ifndef FREEBAYES_GENOTYPE_H #define FREEBAYES_GENOTYPE_H #include #include #include // pair #include #include #include #include #include #include #include #include #include "Allele.h" #include "Sample.h" #include "Utility.h" #include "Multinomial.h" #include "CNV.h" #include "Ewens.h" #include "Bias.h" #include "join.h" #include "convert.h" using namespace std; // each genotype is a vetor of GenotypeElements, each is a count of alleles class GenotypeElement { friend ostream& operator<<(ostream& out, GenotypeElement& rhs); public: Allele allele; int count; GenotypeElement(const Allele& a, int c) : allele(a), count(c) { } }; class Genotype : public vector { friend ostream& operator<<(ostream& out, const pair& rhs); friend ostream& operator<<(ostream& out, const Genotype& g); friend bool operator<(Genotype& a, Genotype& b); public: int ploidy; vector alleles; map alleleCounts; bool homozygous; long double permutationsln; // aka, multinomialCoefficientLn(ploidy, counts()) Genotype(vector& ungroupedAlleles) { alleles = ungroupedAlleles; sort(alleles.begin(), alleles.end()); vector > groups = groupAlleles_copy(alleles); for (vector >::const_iterator group = groups.begin(); group != groups.end(); ++group) { this->push_back(GenotypeElement(group->front(), group->size())); alleleCounts[group->front().currentBase] = group->size(); } ploidy = getPloidy(); homozygous = isHomozygous(); permutationsln = 0; if (!homozygous) { permutationsln = multinomialCoefficientLn(ploidy, counts()); } } vector uniqueAlleles(void); int getPloidy(void); int alleleCount(const string& base); int alleleCount(Allele& allele); bool containsAllele(Allele& allele); bool containsAllele(const string& base); // returns true when the genotype is composed of a subset of the alleles bool matchesAlleles(vector& alleles); vector alternateAlleles(string& refbase); vector alternateBases(string& refbase); vector counts(void); // the probability of drawing each allele out of the genotype, ordered by allele vector alleleProbabilities(void); vector alleleProbabilities(Bias& observationBias); double alleleSamplingProb(const string& base); double alleleSamplingProb(Allele& allele); string str(void) const; string relativeGenotype(string& refbase, vector& altbases); void relativeGenotype(vector& spec, string& refbase, vector& altbases); string relativeGenotype(string& refbase, string& altbase); void relativeGenotype(vector& rg, vector& alleles); bool isHeterozygous(void); bool isHomozygous(void); bool isHomozygousAlternate(void); bool isHomozygousReference(void); int containedAlleleTypes(void); vector alleleObservationCounts(Sample& sample); int alleleObservationCount(Sample& sample); bool sampleHasSupportingObservations(Sample& sample); bool sampleHasSupportingObservationsForAllAlleles(Sample& sample); bool hasNullAllele(void); vector nullMatchingGenotypes(vector& gts); }; string IUPAC(Genotype& g); string IUPAC2GenotypeStr(string iupac); vector allPossibleGenotypes(int ploidy, vector& potentialAlleles); class SampleDataLikelihood { public: string name; Genotype* genotype; long double prob; long double marginal; Sample* sample; bool hasObservations; int rank; // the rank of this data likelihood relative to others for the sample, 0 is best SampleDataLikelihood(string n, Sample* s, Genotype* g, long double p, int r) : name(n) , sample(s) , genotype(g) , prob(p) , rank(r) , marginal(0) , hasObservations(true) { } bool hasSupportingObservations(void) const { return genotype->sampleHasSupportingObservations(*sample); } int supportingObservationCount(void) const { return genotype->alleleObservationCount(*sample); } }; class AlleleCounter { public: int frequency; int observations; int forwardStrand; // supporting reads on the forward strand int reverseStrand; // supporting reads on the reverse strand int placedLeft; // supporting reads placed to the left of the allele int placedRight; // supporting reads placed to the right of the allele int placedStart; // supporting reads for which the allele occurs in the first half of the read (5'-3') int placedEnd; // supporting reads for which the allele occurs in the second half of the read (5'-3') AlleleCounter(void) : frequency(0) , observations(0) , forwardStrand(0) , reverseStrand(0) , placedLeft(0) , placedRight(0) , placedStart(0) , placedEnd(0) { } }; // a combination of genotypes for the population of samples in the analysis class GenotypeCombo : public vector { public: // GenotypeCombo::prob is equal to the sum of probs in the combo. We // factor it out so that we can construct the probabilities efficiently as // we generate the genotype combinations long double probObsGivenGenotypes; // aka data likelihood long double permutationsln; // the number of perutations of unphased genotypes in the combo // these *must* be generated at construction time // for efficiency they can be updated as each genotype combo is generated //map alleleCounts; // frequencies of each allele in the combo //map > alleleStrandCounts; // map from allele spec to (forword, reverse) counts //map > alleleReadPlacementCounts; // map from allele spec to (left, right) counts //map > alleleReadPositionCounts; // map from allele spec to (left, right) counts map alleleCounters; map genotypeCounts; GenotypeCombo(void) : probObsGivenGenotypes(0) , posteriorProb(0) , priorProb(0) , priorProbG_Af(0) , priorProbAf(0) , priorProbObservations(0) , permutationsln(0) { } void init(bool useObsExpectations); void addPriorAlleleCounts(map& priorACs); // appends the other combo to this one, // updates the counts, and multiplies the probabilites, // assuming independence between the two combos void appendIndependentCombo(GenotypeCombo& other); int numberOfAlleles(void); vector alleleProbs(void); // scales counts() by the total number of alleles int ploidy(void); // the number of copies of the locus in this combination int alleleCount(Allele& allele); int alleleCount(const string& allele); long double alleleFrequency(Allele& allele); long double alleleFrequency(const string& allele); long double genotypeFrequency(Genotype* genotype); void updateCachedCounts(Sample* sample, Genotype* oldGenotype, Genotype* newGenotype, bool useObsExpectations); map countAlleles(void); map countFrequencies(void); int hetCount(void); vector counts(void); // the counts of frequencies of the alleles in the genotype combo vector observationCounts(void); // the counts of observations of the alleles (in sorted order) int observationTotal(void); vector alleles(void); // the string representations of alleles in the genotype combo bool isHomozygous(void); // returns true if the combination is 100% homozygous across all individuals // e.g. if there is no variation // posterior long double posteriorProb; // p(genotype combo) * p(observations | genotype combo) // priors long double priorProb; // p(genotype combo) = p(genotype combo | allele frequency) * p(allele frequency) * p(observations) long double priorProbG_Af; // p(genotype combo | allele frequency) long double priorProbAf; // p(allele frequency) long double priorProbObservations; // p(observations) long double priorProbGenotypesGivenHWE; //GenotypeCombo* combo, void calculatePosteriorProbability( long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool obsBinomialPriors, bool alleleBalancePriors, long double diffusionPriorScalarln); long double probabilityGivenAlleleFrequencyln(bool permute); long double hweExpectedFrequencyln(Genotype* genotype); long double hweProbGenotypeFrequencyln(Genotype* genotype); long double hweComboProb(void); }; struct GenotypeComboResultSorter { bool operator()(const GenotypeCombo& gc1, const GenotypeCombo& gc2) { if (gc1.posteriorProb == gc2.posteriorProb) { return gc1 > gc2; } else { return gc1.posteriorProb > gc2.posteriorProb; } } }; // for comparing GenotypeCombos which are empty struct GenotypeComboResultEqual { bool operator()(const GenotypeCombo& gc1, const GenotypeCombo& gc2) { return gc1.posteriorProb == gc2.posteriorProb; } }; // for sorting data likelihoods struct SampleDataLikelihoodCompare { bool operator()(const SampleDataLikelihood& a, const SampleDataLikelihood& b) { return a.prob > b.prob; } }; struct SampleMarginalCompare { bool operator()(const SampleDataLikelihood& a, const SampleDataLikelihood& b) { return a.marginal > b.marginal; } }; struct SampleLikelihoodCompare { bool operator()(const SampleDataLikelihood& a, const SampleDataLikelihood& b) { return (a.marginal + a.prob) > (b.marginal + b.prob); } }; struct SampleMarginalAndObsCompare { bool operator()(const SampleDataLikelihood& a, const SampleDataLikelihood& b) { int aObsCount = a.supportingObservationCount(); int bObsCount = b.supportingObservationCount(); if (aObsCount != bObsCount) { if (aObsCount == 0) { return false; } else if (bObsCount == 0) { return true; } } return (a.marginal + a.prob) > (b.marginal + b.prob); } }; // a set of probabilities for a set of genotypes for a set of samples typedef vector > SampleDataLikelihoods; void sortSampleDataLikelihoods(vector& likelihoods); bool sortSampleDataLikelihoodsByMarginals(vector& likelihoods); bool sortSampleDataLikelihoodsByMarginals(SampleDataLikelihoods& samplesLikelihoods); bool sortSampleDataLikelihoodsByMarginalsAndObs(SampleDataLikelihoods& samplesLikelihoods); bool sortSampleDataLikelihoodsScaledByMarginals(vector& likelihoods); bool sortSampleDataLikelihoodsScaledByMarginals(SampleDataLikelihoods& samplesLikelihoods); typedef map GenotypeComboMap; void genotypeCombo2Map(GenotypeCombo& gc, GenotypeComboMap& gcm); void orderedGenotypeCombo( GenotypeCombo& combo, GenotypeCombo& orderedCombo, SampleDataLikelihoods& sampleDataLikelihoods, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); void makeComboByDatalLikelihoodRank( GenotypeCombo& combo, vector& initialPosition, SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, map& priorACs, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); void dataLikelihoodMaxGenotypeCombo( GenotypeCombo& combo, SampleDataLikelihoods& sampleDataLikelihoods, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); bool bandedGenotypeCombinations( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& variantDataLikelihoods, SampleDataLikelihoods& invariantDataLikelihoods, Samples& samples, map& priorACs, int bandwidth, int banddepth, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); void allLocalGenotypeCombinations( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& sampleDataLikelihoods, Samples& samples, map& priorACs, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar, bool keepCombos); void convergentGenotypeComboSearch( list& combos, GenotypeCombo& comboKing, SampleDataLikelihoods& sampleDataLikelihoods, SampleDataLikelihoods& variantDataLikelihoods, SampleDataLikelihoods& invariantDataLikelihoods, Samples& samples, vector& genotypeAlleles, map& priorACs, int bandwidth, int banddepth, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar, int maxiterations, int& totaliterations, bool addHomozygousCombos); void addAllHomozygousCombos( list& combos, SampleDataLikelihoods& sampleDataLikelihoods, SampleDataLikelihoods& variantSampleDataLikelihoods, SampleDataLikelihoods& invariantSampleDataLikelihoods, Samples& samples, vector& genotypeAlleles, long double theta, bool pooled, bool ewensPriors, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); vector > alternateAlleles(GenotypeCombo& combo, string referenceBase); pair alternateAndReferenceCount(vector& observations, string& refbase, string altbase); ostream& operator<<(ostream& out, list& combo); ostream& operator<<(ostream& out, GenotypeCombo& g); map > getGenotypesByPloidy(vector& ploidies, vector& genotypeAlleles); void combinePopulationCombos(list& genotypeCombos, map >& genotypeCombosByPopulation); #endif freebayes-1.3.6/src/IndelAllele.cpp000066400000000000000000000022751417247743000171520ustar00rootroot00000000000000#include "IndelAllele.h" using namespace std; bool FBIndelAllele::homopolymer(void) { string::iterator s = sequence.begin(); char c = *s++; while (s != sequence.end()) { if (c != *s++) return false; } return true; } bool FBhomopolymer(string sequence) { string::iterator s = sequence.begin(); char c = *s++; while (s != sequence.end()) { if (c != *s++) return false; } return true; } ostream& operator<<(ostream& out, const FBIndelAllele& indel) { string t = indel.insertion ? "i" : "d"; out << t << ":" << indel.position << ":" << indel.readPosition << ":" << indel.sequence << ":" << (indel.splice?"splice":""); return out; } bool operator==(const FBIndelAllele& a, const FBIndelAllele& b) { return (a.insertion == b.insertion && a.length == b.length && a.position == b.position && a.sequence == b.sequence && a.splice == b.splice); } bool operator!=(const FBIndelAllele& a, const FBIndelAllele& b) { return !(a==b); } bool operator<(const FBIndelAllele& a, const FBIndelAllele& b) { ostringstream as, bs; as << a; bs << b; return as.str() < bs.str(); } freebayes-1.3.6/src/IndelAllele.h000066400000000000000000000020471417247743000166140ustar00rootroot00000000000000#ifndef FREEBAYES_INDELALLELE_H #define FREEBAYES_INDELALLELE_H #include #include #include using namespace std; class FBIndelAllele { friend ostream& operator<<(ostream&, const FBIndelAllele&); friend bool operator==(const FBIndelAllele&, const FBIndelAllele&); friend bool operator!=(const FBIndelAllele&, const FBIndelAllele&); friend bool operator<(const FBIndelAllele&, const FBIndelAllele&); public: bool insertion; int length; int position; int readPosition; string sequence; bool splice; bool homopolymer(void); FBIndelAllele(bool i, int l, int p, int rp, string s, bool n) : insertion(i), length(l), position(p), readPosition(rp), sequence(s), splice(n) { } }; bool FBhomopolymer(string sequence); ostream& operator<<(ostream& out, const FBIndelAllele& indel); bool operator==(const FBIndelAllele& a, const FBIndelAllele& b); bool operator!=(const FBIndelAllele& a, const FBIndelAllele& b); bool operator<(const FBIndelAllele& a, const FBIndelAllele& b); #endif freebayes-1.3.6/src/LargeFileSupport.h000066400000000000000000000010461417247743000176670ustar00rootroot00000000000000#ifndef FREEBAYES_LARGEFILESUPPORT_H #define FREEBAYES_LARGEFILESUPPORT_H #ifdef WIN32 #define ftell64(a) _ftelli64(a) #define fseek64(a,b,c) _fseeki64(a,b,c) typedef __int64 off_type; #elif defined(__CYGWIN__) #define ftell64(a) ftell(a) #define fseek64(a,b,c) fseek(a,b,c) typedef __int64_t off_type; #elif defined(__APPLE__) #define ftell64(a) ftello(a) #define fseek64(a,b,c) fseeko(a,b,c) typedef off_t off_type; #else #define ftell64(a) ftello(a) #define fseek64(a,b,c) fseeko(a,b,c) typedef __off64_t off_type; #endif #endif freebayes-1.3.6/src/LeftAlign.cpp000066400000000000000000000415671417247743000166540ustar00rootroot00000000000000#include "LeftAlign.h" //bool debug; // Attempts to left-realign all the indels represented by the alignment cigar. // // This is done by shifting all indels as far left as they can go without // mismatch, then merging neighboring indels of the same class. leftAlign // updates the alignment cigar with changes, and returns true if realignment // changed the alignment cigar. // // To left-align, we move multi-base indels left by their own length as long as // the preceding bases match the inserted or deleted sequence. After this // step, we handle multi-base homopolymer indels by shifting them one base to // the left until they mismatch the reference. // // To merge neighboring indels, we iterate through the set of left-stabilized // indels. For each indel we add a new cigar element to the new cigar. If a // deletion follows a deletion, or an insertion occurs at the same place as // another insertion, we merge the events by extending the previous cigar // element. // // In practice, we must call this function until the alignment is stabilized. // bool leftAlign(BAMALIGN& alignment, string& referenceSequence, bool debug) { string alignmentAlignedBases = alignment.QUERYBASES; const string alignmentSequence = alignment.QUERYBASES; int arsOffset = 0; // pointer to insertion point in aligned reference sequence string alignedReferenceSequence = referenceSequence; int aabOffset = 0; // store information about the indels vector indels; int rp = 0; // read position, 0-based relative to read int sp = 0; // sequence position string softBegin; string softEnd; stringstream cigar_before, cigar_after; CIGAR cigar = alignment.GETCIGAR; for (CIGAR::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { unsigned int l = c->CIGLEN; char t = c->CIGTYPE; cigar_before << l << t; if (t == 'M' || t == 'X' || t == '=') { // match or mismatch sp += l; rp += l; } else if (t == 'D') { // deletion indels.push_back(FBIndelAllele(false, l, sp, rp, referenceSequence.substr(sp, l), false)); alignmentAlignedBases.insert(rp + aabOffset, string(l, '-')); aabOffset += l; sp += l; // update reference sequence position } else if (t == 'N') { indels.push_back(FBIndelAllele(false, l, sp, rp, referenceSequence.substr(sp, l), true)); alignmentAlignedBases.insert(rp + aabOffset, string(l, '-')); aabOffset += l; sp += l; // update reference sequence position } else if (t == 'I') { // insertion indels.push_back(FBIndelAllele(true, l, sp, rp, alignmentSequence.substr(rp, l), false)); alignedReferenceSequence.insert(sp + softBegin.size() + arsOffset, string(l, '-')); arsOffset += l; rp += l; } else if (t == 'S') { // soft clip, clipped sequence present in the read not matching the reference // remove these bases from the refseq and read seq, but don't modify the alignment sequence if (rp == 0) { alignedReferenceSequence = string(l, '*') + alignedReferenceSequence; softBegin = alignmentAlignedBases.substr(0, l); } else { alignedReferenceSequence = alignedReferenceSequence + string(l, '*'); softEnd = alignmentAlignedBases.substr(alignmentAlignedBases.size() - l, l); } rp += l; } else if (t == 'H') { // hard clip on the read, clipped sequence is not present in the read //} else if (t == 'N') { // skipped region in the reference not present in read, aka splice //sp += l; } } int alignedLength = sp; LEFTALIGN_DEBUG("| " << cigar_before.str() << endl << "| " << alignedReferenceSequence << endl << "| " << alignmentAlignedBases << endl); // if no indels, return the alignment if (indels.empty()) { return false; } // for each indel, from left to right // while the indel sequence repeated to the left and we're not matched up with the left-previous indel // move the indel left vector::iterator previous = indels.begin(); for (vector::iterator id = indels.begin(); id != indels.end(); ++id) { // left shift by repeats // // from 1 base to the length of the indel, attempt to shift left // if the move would cause no change in alignment optimality (no // introduction of mismatches, and by definition no change in gap // length), move to the new position. // in practice this moves the indel left when we reach the size of // the repeat unit. // int steppos, readsteppos; FBIndelAllele& indel = *id; int i = 1; while (i <= indel.length) { int steppos = indel.position - i; int readsteppos = indel.readPosition - i; #ifdef VERBOSE_DEBUG if (debug) { if (steppos >= 0 && readsteppos >= 0) { cerr << referenceSequence.substr(steppos, indel.length) << endl; cerr << alignmentSequence.substr(readsteppos, indel.length) << endl; cerr << indel.sequence << endl; } } #endif while (steppos >= 0 && readsteppos >= 0 && !indel.splice && indel.sequence == referenceSequence.substr(steppos, indel.length) && indel.sequence == alignmentSequence.substr(readsteppos, indel.length) //&& indel.sequence == alignment.QueryBases.substr(readsteppos, indel.length) && (id == indels.begin() || (previous->insertion && steppos >= previous->position) || (!previous->insertion && steppos >= previous->position + previous->length))) { LEFTALIGN_DEBUG((indel.insertion ? "insertion " : "deletion ") << indel << " shifting " << i << "bp left" << endl); indel.position -= i; indel.readPosition -= i; steppos = indel.position - i; readsteppos = indel.readPosition - i; } do { ++i; } while (i <= indel.length && indel.length % i != 0); } // left shift indels with exchangeable flanking sequence // // for example: // // GTTACGTT GTTACGTT // GT-----T ----> G-----TT // // GTGTGACGTGT GTGTGACGTGT // GTGTG-----T ----> GTG-----TGT // // GTGTG-----T GTG-----TGT // GTGTGACGTGT ----> GTGTGACGTGT // // steppos = indel.position - 1; readsteppos = indel.readPosition - 1; while (steppos >= 0 && readsteppos >= 0 //&& alignment.QueryBases.at(readsteppos) == referenceSequence.at(steppos) //&& alignment.QueryBases.at(readsteppos) == indel.sequence.at(indel.sequence.size() - 1) && alignmentSequence.at(readsteppos) == referenceSequence.at(steppos) && alignmentSequence.at(readsteppos) == indel.sequence.at(indel.sequence.size() - 1) && (id == indels.begin() || (previous->insertion && indel.position - 1 >= previous->position) || (!previous->insertion && indel.position - 1 >= previous->position + previous->length))) { LEFTALIGN_DEBUG((indel.insertion ? "insertion " : "deletion ") << indel << " exchanging bases " << 1 << "bp left" << endl); indel.sequence = indel.sequence.at(indel.sequence.size() - 1) + indel.sequence.substr(0, indel.sequence.size() - 1); indel.position -= 1; indel.readPosition -= 1; steppos = indel.position - 1; readsteppos = indel.readPosition - 1; } // tracks previous indel, so we don't run into it with the next shift previous = id; } // bring together floating indels // from left to right // check if we could merge with the next indel // if so, adjust so that we will merge in the next step if (indels.size() > 1) { previous = indels.begin(); for (vector::iterator id = (indels.begin() + 1); id != indels.end(); ++id) { FBIndelAllele& indel = *id; // parsimony: could we shift right and merge with the previous indel? // if so, do it int prev_end_ref = previous->insertion ? previous->position : previous->position + previous->length; int prev_end_read = !previous->insertion ? previous->readPosition : previous->readPosition + previous->length; if (!previous->splice && !indel.splice && previous->insertion == indel.insertion && ((previous->insertion && (previous->position < indel.position && previous->readPosition + previous->readPosition < indel.readPosition)) || (!previous->insertion && (previous->position + previous->length < indel.position) && (previous->readPosition < indel.readPosition) ))) { if (previous->homopolymer()) { string seq = referenceSequence.substr(prev_end_ref, indel.position - prev_end_ref); //string readseq = alignment.QueryBases.substr(prev_end_read, indel.position - prev_end_ref); string readseq = alignmentSequence.substr(prev_end_read, indel.position - prev_end_ref); LEFTALIGN_DEBUG("seq: " << seq << endl << "readseq: " << readseq << endl); if (previous->sequence.at(0) == seq.at(0) && FBhomopolymer(seq) && FBhomopolymer(readseq)) { LEFTALIGN_DEBUG("moving " << *previous << " right to " << (indel.insertion ? indel.position : indel.position - previous->length) << endl); previous->position = indel.insertion ? indel.position : indel.position - previous->length; } } else { int pos = previous->position; while (pos < (int) referenceSequence.length() && ((previous->insertion && pos + previous->length <= indel.position) || (!previous->insertion && pos + previous->length < indel.position)) && previous->sequence == referenceSequence.substr(pos + previous->length, previous->length)) { pos += previous->length; } if (pos < previous->position && ((previous->insertion && pos + previous->length == indel.position) || (!previous->insertion && pos == indel.position - previous->length)) ) { LEFTALIGN_DEBUG("right-merging tandem repeat: moving " << *previous << " right to " << pos << endl); previous->position = pos; } } } previous = id; } } // for each indel // if ( we're matched up to the previous insertion (or deletion) // and it's also an insertion or deletion ) // merge the indels // // and simultaneously reconstruct the cigar CIGAR newCigar; if (!softBegin.empty()) { newCigar.ADDCIGAR(CIGOP('S', softBegin.size())); } vector::iterator id = indels.begin(); FBIndelAllele last = *id++; if (last.position > 0) { newCigar.ADDCIGAR(CIGOP('M', last.position)); } if (last.insertion) { newCigar.ADDCIGAR(CIGOP('I', last.length)); } else if (last.splice) { newCigar.ADDCIGAR(CIGOP('N', last.length)); } else { newCigar.ADDCIGAR(CIGOP('D', last.length)); } int lastend = last.insertion ? last.position : (last.position + last.length); LEFTALIGN_DEBUG(last << ","); for (; id != indels.end(); ++id) { FBIndelAllele& indel = *id; LEFTALIGN_DEBUG(indel << ","); if (indel.position < lastend) { cerr << "impossibility?: indel realigned left of another indel" << endl << alignment.QNAME << " " << alignment.POSITION << endl << alignment.QUERYBASES << endl; exit(1); } else if (indel.position == lastend && indel.insertion == last.insertion) { CIGOP& op = newCigar.back(); #ifdef HAVE_BAMTOOLS op.Length += indel.length; #else op = SeqLib::CigarField(op.Type(), op.Length() + indel.length); #endif } else if (indel.position >= lastend) { // also catches differential indels, but with the same position newCigar.ADDCIGAR(CIGOP('M', indel.position - lastend)); if (indel.insertion) { newCigar.ADDCIGAR(CIGOP('I', indel.length)); } else if (indel.splice) { newCigar.ADDCIGAR(CIGOP('N', indel.length)); } else { // deletion newCigar.ADDCIGAR(CIGOP('D', indel.length)); } } last = *id; lastend = last.insertion ? last.position : (last.position + last.length); } if (lastend < alignedLength) { newCigar.ADDCIGAR(CIGOP('M', alignedLength - lastend)); } if (!softEnd.empty()) { newCigar.ADDCIGAR(CIGOP('S', softEnd.size())); } LEFTALIGN_DEBUG(endl); #ifdef VERBOSE_DEBUG if (debug) { CIGAR cigar = alignment.GETCIGAR; for (CIGAR::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { unsigned int l = c->CIGLEN; char t = c->CIGTYPE; cerr << l << t; } cerr << endl; } #endif #ifdef HAVE_BAMTOOLS alignment.CigarData = newCigar; #else alignment.SetCigar(newCigar); #endif cigar = alignment.GETCIGAR; for (CIGAR::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { unsigned int l = c->CIGLEN; char t = c->CIGTYPE; cigar_after << l << t; } LEFTALIGN_DEBUG(cigar_after.str() << endl); // check if we're realigned if (cigar_after.str() == cigar_before.str()) { return false; } else { return true; } } int countMismatches(BAMALIGN& alignment, string referenceSequence) { const string alignmentSequence = alignment.QUERYBASES; int mismatches = 0; int sp = 0; int rp = 0; CIGAR cigar = alignment.GETCIGAR; for (CIGAR::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { unsigned int l = c->CIGLEN; char t = c->CIGTYPE; if (t == 'M' || t == 'X' || t == '=') { // match or mismatch for (int i = 0; i < l; ++i) { //if (alignment.QueryBases.at(rp) != referenceSequence.at(sp)) if (alignmentSequence.at(rp) != referenceSequence.at(sp)) ++mismatches; ++sp; ++rp; } } else if (t == 'D') { // deletion sp += l; // update reference sequence position } else if (t == 'I') { // insertion rp += l; // update read position } else if (t == 'S') { // soft clip, clipped sequence present in the read not matching the reference rp += l; } else if (t == 'H') { // hard clip on the read, clipped sequence is not present in the read } else if (t == 'N') { // skipped region in the reference not present in read, aka splice sp += l; } } return mismatches; } // Iteratively left-aligns the indels in the alignment until we have a stable // realignment. Returns true on realignment success or non-realignment. // Returns false if we exceed the maximum number of realignment iterations. // bool stablyLeftAlign(BAMALIGN& alignment, string referenceSequence, int maxiterations, bool debug) { #ifdef VERBOSE_DEBUG int mismatchesBefore = countMismatches(alignment, referenceSequence); #endif if (!leftAlign(alignment, referenceSequence, debug)) { return true; } else { while (leftAlign(alignment, referenceSequence, debug) && --maxiterations > 0) { LEFTALIGN_DEBUG("realigning ..." << endl); } #ifdef VERBOSE_DEBUG int mismatchesAfter = countMismatches(alignment, referenceSequence); if (mismatchesBefore != mismatchesAfter) { cerr << alignment.QNAME << endl; cerr << "ERROR: found " << mismatchesBefore << " mismatches before, but " << mismatchesAfter << " after left realignment!" << endl; exit(1); } #endif if (maxiterations <= 0) { return false; } else { return true; } } } freebayes-1.3.6/src/LeftAlign.h000066400000000000000000000067411417247743000163140ustar00rootroot00000000000000#ifndef FREEBAYES_LEFTALIGN_H #define FREEBAYES_LEFTALIGN_H #include #include #include #include #include #include #include #include #include #include #include #ifdef HAVE_BAMTOOLS #include "api/BamAlignment.h" #include "api/BamReader.h" #include "api/BamMultiReader.h" #include "api/BamWriter.h" using namespace BamTools; #define GETNEXT(reader, alignment) reader.GetNextAlignment(alignment) #define GETERRORSTRING(reader) reader.GetErrorString() #define ALIGNMENTLENGTH Length #define ISMAPPED IsMapped() #define REFID RefID #define POSITION Position #define REFNAME RefName #define REFLEN RefLength #define REFVEC RefVector #define REFDATA RefData #define BAMALIGN BamAlignment #define QUALITIES Qualities #define QUERYBASES QueryBases #define ALIGNEDBASES AlignedBases.size() #define QNAME Name #define GETREFDATA GetReferenceData() #define GETREFNUM GetReferenceCount() #define GETREFID(name) GetReferenceID(name) #define ENDPOSITION GetEndPosition() #define SEQLEN QueryBases.size() #define MAPPINGQUALITY MapQuality #define CIGAR std::vector #define GETCIGAR CigarData #define ISDUPLICATE IsDuplicate() #define ISREVERSESTRAND IsReverseStrand() #define ISPAIRED IsPaired() #define ISMATEMAPPED IsMateMapped() #define ISPROPERPAIR IsProperPair() #define CIGLEN Length #define CIGTYPE Type #define BAMREADER BamMultiReader #define BAMSINGLEREADER BamReader #define FILLREADGROUP(rg, align) (align).GetTag("RG", (rg)) #define ADDCIGAR push_back #define CIGOP CigarOp #define GETHEADERTEXT GetHeaderText() #define STDIN "stdin" #define WRITEALIGNMENT(writer, alignment) writer.SaveAlignment(alignment) #else #define GETNEXT(reader, alignment) reader.GetNextRecord(alignment) #define MAPPINGQUALITY MapQuality() #define ALIGNMENTLENGTH Length() #define ISMAPPED MappedFlag() #define ISPAIRED PairedFlag() #define ISMATEMAPPED MateMappedFlag() #define ISPROPERPAIR ProperPair() #define ISREVERSESTRAND ReverseFlag() #define SEQLEN Length() #define BAMALIGN SeqLib::BamRecord #define REFID ChrID() #define POSITION Position() #define REFVEC std::vector #define REFDATA SeqLib::HeaderSequence #define REFNAME Name #define REFLEN Length #define QUALITIES Qualities() #define QUERYBASES Sequence() #define ALIGNEDBASES NumAlignedBases() #define QNAME Qname() #define GETREFDATA Header().GetHeaderSequenceVector() #define GETREFNUM Header().NumSequences() #define ENDPOSITION PositionEnd() #define CIGAR SeqLib::Cigar #define BAMREADER SeqLib::BamReader #define BAMSINGLEREADER SeqLib::BamReader #define GETCIGAR GetCigar() #define GETREFID(name) Header().Name2ID(name) #define ISDUPLICATE DuplicateFlag() #define CIGLEN Length() #define CIGTYPE Type() #define ADDCIGAR add #define CIGOP SeqLib::CigarField #define FILLREADGROUP(rg, align) (align).GetZTag("RG", rg) #define GETHEADERTEXT HeaderConcat() #include "SeqLib/BamReader.h" #include "SeqLib/BamWriter.h" #define STDIN "-" #define WRITEALIGNMENT(writer, alignment) writer.WriteRecord(alignment) #endif #include "IndelAllele.h" #ifdef VERBOSE_DEBUG #define LEFTALIGN_DEBUG(msg) \ if (debug) { cerr << msg; } #else #define LEFTALIGN_DEBUG(msg) #endif using namespace std; bool leftAlign(BAMALIGN& alignment, string& referenceSequence, bool debug = false); bool stablyLeftAlign(BAMALIGN& alignment, string referenceSequence, int maxiterations = 20, bool debug = false); int countMismatches(BAMALIGN& alignment, string referenceSequence); #endif freebayes-1.3.6/src/Logging.h000066400000000000000000000011011417247743000160160ustar00rootroot00000000000000#ifndef FREEBAYES_LOGGING_H #define FREEBAYES_LOGGING_H // helper debugging macros to improve code readability #define DEBUG(msg) \ if (parameters.debug) { cerr << msg << endl; } // lower-priority messages, enabled with "make debug" #ifdef VERBOSE_DEBUG #define DEBUG2(msg) \ if (parameters.debug2) { cerr << msg << endl; } #else #define DEBUG2(msg) #endif // must-see error messages #define ERROR(msg) \ cerr << "ERROR(freebayes): " << msg << endl; // must-see warning messages #define WARNING(msg) \ cerr << "WARNING(freebayes): " << msg << endl; #endif freebayes-1.3.6/src/Marginals.cpp000066400000000000000000000206351417247743000167150ustar00rootroot00000000000000#include "Marginals.h" /* // calculate marginals from the combos, store in results void marginalGenotypeLikelihoods(list& genotypeCombos, Results& results) { map > > rawMarginals; // push the marginal likelihoods into the rawMarginals vectors in the results for (list::iterator gc = genotypeCombos.begin(); gc != genotypeCombos.end(); ++gc) { for (GenotypeCombo::const_iterator i = gc->begin(); i != gc->end(); ++i) { const SampleDataLikelihood& sdl = **i; rawMarginals[sdl.name][sdl.genotype].push_back(gc->posteriorProb); } } // safely add the raw marginal vectors using logsumexp for (Results::iterator r = results.begin(); r != results.end(); ++r) { ResultData& sample = r->second; map >& rawmgs = rawMarginals[r->first]; vector probs; for (map >::iterator m = rawmgs.begin(); m != rawmgs.end(); ++m) { probs.push_back(logsumexp_probs(m->second)); } long double normalizer = logsumexp_probs(probs); vector::iterator p = probs.begin(); for (map >::iterator m = rawmgs.begin(); m != rawmgs.end(); ++m, ++p) { sample.marginals[m->first] = *p - normalizer; } } } */ // recompute data likelihoods using marginals from the combos // assumes that the genotype combos are in the same order as the likelihoods // assumes that the genotype combos are the same size as the number of samples in the likelihoods // returns the delta from the previous marginals, informative in the case of EM long double marginalGenotypeLikelihoods(list& genotypeCombos, SampleDataLikelihoods& likelihoods) { long double delta = 0; vector< map > rawMarginals; rawMarginals.resize(likelihoods.size()); vector< map >::iterator rawMarginalsItr; // push the marginal likelihoods into the rawMarginals maps for (list::iterator gc = genotypeCombos.begin(); gc != genotypeCombos.end(); ++gc) { rawMarginalsItr = rawMarginals.begin(); for (GenotypeCombo::const_iterator i = gc->begin(); i != gc->end(); ++i) { const SampleDataLikelihood& sdl = **i; map& rmgs = *rawMarginalsItr++; map::iterator rmgsItr = rmgs.find(sdl.genotype); if (rmgsItr == rmgs.end()) { rmgs[sdl.genotype] = gc->posteriorProb; } else { //vector x; //x.push_back(rmgsItr->second); x.push_back(gc->posteriorProb); //rmgs[sdl.genotype] = logsumexp_probs(x); rmgs[sdl.genotype] = log(safe_exp(rmgsItr->second) + safe_exp(gc->posteriorProb)); } } } // safely add the raw marginal vectors using logsumexp // and use to update the sample data likelihoods rawMarginalsItr = rawMarginals.begin(); long double minAllowedMarginal = -1e-16; for (SampleDataLikelihoods::iterator s = likelihoods.begin(); s != likelihoods.end(); ++s) { vector& sdls = *s; const map& rawmgs = *rawMarginalsItr++; map marginals; vector rawprobs; for (map::const_iterator m = rawmgs.begin(); m != rawmgs.end(); ++m) { long double p = m->second; marginals[m->first] = p; rawprobs.push_back(p); } long double normalizer = logsumexp_probs(rawprobs); for (vector::iterator sdl = sdls.begin(); sdl != sdls.end(); ++sdl) { long double newmarginal = marginals[sdl->genotype] - normalizer; delta += newmarginal - sdl->marginal; // ensure the marginal is non-0 to guard against underflow sdl->marginal = min(minAllowedMarginal, newmarginal); } } return delta; } /* void bestMarginalGenotypeCombo(GenotypeCombo& combo, Results& results, SampleDataLikelihoods& samples, long double theta, bool pooled, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar) { for (SampleDataLikelihoods::iterator s = samples.begin(); s != samples.end(); ++s) { vector& sdls = *s; const string& name = sdls.front().name; const map& marginals = results[name].marginals;; map::const_iterator m = marginals.begin(); long double bestMarginalProb = m->second; Genotype* bestMarginalGenotype = m->first; ++m; for (; m != marginals.end(); ++m) { if (abs(m->second) < abs(bestMarginalProb)) { bestMarginalProb = m->second; bestMarginalGenotype = m->first; } } for (vector::iterator d = sdls.begin(); d != sdls.end(); ++d) { if (bestMarginalGenotype == d->genotype) { combo.push_back(&*d); break; } } } combo.init(binomialObsPriors); combo.calculatePosteriorProbability(theta, pooled, permute, hwePriors, binomialObsPriors, alleleBalancePriors, diffusionPriorScalar); } */ long double balancedMarginalGenotypeLikelihoods(list& genotypeCombos, SampleDataLikelihoods& likelihoods) { long double delta = 0; //map > > rawMarginals; vector< map > > rawMarginals; rawMarginals.resize(likelihoods.size()); vector< map > >::iterator rawMarginalsItr; // push the marginal likelihoods into the rawMarginals maps for (list::iterator gc = genotypeCombos.begin(); gc != genotypeCombos.end(); ++gc) { if (gc->isHomozygous()) { rawMarginalsItr = rawMarginals.begin(); for (GenotypeCombo::const_iterator i = gc->begin(); i != gc->end(); ++i) { const SampleDataLikelihood& sdl = **i; map >& rmgs = *rawMarginalsItr++; rmgs[sdl.genotype].push_back(gc->posteriorProb); } } else { bool isComboKing = true; rawMarginalsItr = rawMarginals.begin(); for (GenotypeCombo::const_iterator i = gc->begin(); i != gc->end(); ++i) { const SampleDataLikelihood& sdl = **i; if (sdl.rank != 0) { isComboKing = false; map >& rmgs = *rawMarginalsItr; rmgs[sdl.genotype].push_back(gc->posteriorProb); } ++rawMarginalsItr; } if (isComboKing) { rawMarginalsItr = rawMarginals.begin(); for (GenotypeCombo::const_iterator i = gc->begin(); i != gc->end(); ++i) { const SampleDataLikelihood& sdl = **i; map >& rmgs = *rawMarginalsItr++; rmgs[sdl.genotype].push_back(gc->posteriorProb); } } } } // safely add the raw marginal vectors using logsumexp rawMarginalsItr = rawMarginals.begin(); for (SampleDataLikelihoods::iterator s = likelihoods.begin(); s != likelihoods.end(); ++s) { vector& sdls = *s; const map >& rawmgs = *rawMarginalsItr++; map marginals; vector rawprobs; for (map >::const_iterator m = rawmgs.begin(); m != rawmgs.end(); ++m) { long double p = logsumexp_probs(m->second); marginals[m->first] = p; rawprobs.push_back(p); } long double normalizer = logsumexp_probs(rawprobs); for (vector::iterator sdl = sdls.begin(); sdl != sdls.end(); ++sdl) { long double newmarginal = marginals[sdl->genotype] - normalizer; delta += newmarginal - sdl->marginal; sdl->marginal = newmarginal; } } return delta; } freebayes-1.3.6/src/Marginals.h000066400000000000000000000015121417247743000163530ustar00rootroot00000000000000#ifndef FREEBAYES_MARGINALS_H #define FREEBAYES_MARGINALS_H #include #include #include "Genotype.h" #include "ResultData.h" #include "Utility.h" using namespace std; //void marginalGenotypeLikelihoods(list& genotypeCombos, Results& results); long double marginalGenotypeLikelihoods(list& genotypeCombos, SampleDataLikelihoods& likelihoods); void bestMarginalGenotypeCombo(GenotypeCombo& combo, Results& results, SampleDataLikelihoods& samples, long double theta, bool pooled, bool permute, bool hwePriors, bool binomialObsPriors, bool alleleBalancePriors, long double diffusionPriorScalar); long double balancedMarginalGenotypeLikelihoods(list& genotypeCombos, SampleDataLikelihoods& likelihoods); #endif freebayes-1.3.6/src/Multinomial.cpp000066400000000000000000000036621417247743000172730ustar00rootroot00000000000000#include "Multinomial.h" #include "Sum.h" #include "Product.h" long double multinomialSamplingProb(const vector& probs, const vector& obs) { vector factorials; vector probsPowObs; factorials.resize(obs.size()); transform(obs.begin(), obs.end(), factorials.begin(), factorial); vector::const_iterator p = probs.begin(); vector::const_iterator o = obs.begin(); for (; p != probs.end() && o != obs.end(); ++p, ++o) { probsPowObs.push_back(pow(*p, *o)); } return factorial(sum(obs)) / product(factorials) * product(probsPowObs); } // TODO rename to reflect the fact that this is the multinomial sampling // probability for obs counts given probs probabilities long double multinomialSamplingProbLn(const vector& probs, const vector& obs) { vector factorials; vector probsPowObs; factorials.resize(obs.size()); transform(obs.begin(), obs.end(), factorials.begin(), factorialln); vector::const_iterator p = probs.begin(); vector::const_iterator o = obs.begin(); for (; p != probs.end() && o != obs.end(); ++p, ++o) { probsPowObs.push_back(powln(log(*p), *o)); } return factorialln(sum(obs)) - sum(factorials) + sum(probsPowObs); } long double multinomialCoefficientLn(int n, const vector& counts) { vector count_factorials; count_factorials.resize(counts.size()); transform(counts.begin(), counts.end(), count_factorials.begin(), factorialln); return factorialln(n) - sum(count_factorials); } long double samplingProbLn(const vector& probs, const vector& obs) { vector::const_iterator p = probs.begin(); vector::const_iterator o = obs.begin(); long double r = 0; for (; p != probs.end() && o != obs.end(); ++p, ++o) { r += powln(log(*p), *o); } return r; } freebayes-1.3.6/src/Multinomial.h000066400000000000000000000007201417247743000167300ustar00rootroot00000000000000#ifndef FREEBAYES_MULTINOMIAL_H #define FREEBAYES_MULTINOMIAL_H #include "Utility.h" #include long double multinomialSamplingProb(const vector& probs, const vector& obs); long double multinomialSamplingProbLn(const vector& probs, const vector& obs); long double multinomialCoefficientLn(int n, const vector& counts); long double samplingProbLn(const vector& probs, const vector& obs); #endif freebayes-1.3.6/src/NonCall.cpp000066400000000000000000000070531417247743000163250ustar00rootroot00000000000000#include "NonCall.h" NonCall NonCalls::aggregateAll(void) { NonCall aggregate; bool first = true; for (NonCalls::const_iterator nc = this->begin(); nc != this->end(); ++nc) { for (map >::const_iterator p = nc->second.begin(); p != nc->second.end(); ++p) { for (map::const_iterator s = p->second.begin(); s != p->second.end(); ++s) { const NonCall& nonCall = s->second; aggregate.refCount += nonCall.refCount; aggregate.altCount += nonCall.altCount; aggregate.reflnQ += nonCall.reflnQ; aggregate.altlnQ += nonCall.altlnQ; aggregate.nCount += 1; if (first) { aggregate.minDepth = nonCall.refCount + nonCall.altCount; first = false; } else { aggregate.minDepth = min(aggregate.minDepth, nonCall.refCount + nonCall.altCount); } } } } return aggregate; } void NonCalls::aggregatePerSample(map& perSample) { set seen; for (NonCalls::const_iterator nc = this->begin(); nc != this->end(); ++nc) { for (map >::const_iterator p = nc->second.begin(); p != nc->second.end(); ++p) { for (map::const_iterator s = p->second.begin(); s != p->second.end(); ++s) { const string& name = s->first; const NonCall& nonCall = s->second; NonCall& aggregate = perSample[name]; aggregate.refCount += nonCall.refCount; aggregate.altCount += nonCall.altCount; aggregate.reflnQ += nonCall.reflnQ; aggregate.altlnQ += nonCall.altlnQ; aggregate.nCount += 1; if (!seen.count(name)) { aggregate.minDepth = nonCall.refCount + nonCall.altCount; seen.insert(name); } else { aggregate.minDepth = min(aggregate.minDepth, nonCall.refCount + nonCall.altCount); } } } } } void NonCalls::record(const string& seqName, long pos, const Samples& samples) { map& site = (*this)[seqName][pos]; for (Samples::const_iterator s = samples.begin(); s != samples.end(); ++s) { // tally ref and non-ref alleles const string& name = s->first; const Sample& sample = s->second; NonCall& noncall = site[name]; for (Sample::const_iterator a = sample.begin(); a != sample.end(); ++a) { const vector& alleles = a->second; for (vector::const_iterator o = alleles.begin(); o != alleles.end(); ++o) { Allele& allele = **o; if (allele.isReference()) { ++noncall.refCount; noncall.reflnQ += allele.lnquality; } else { ++noncall.altCount; noncall.altlnQ += allele.lnquality; } } } } } pair NonCalls::firstPos(void) { const string& startChrom = begin()->first; long startPos = begin()->second.begin()->first; return make_pair(startChrom, startPos); } pair NonCalls::lastPos(void) { const string& endChrom = rbegin()->first; long endPos = rbegin()->second.rbegin()->first; return make_pair(endChrom, endPos); } freebayes-1.3.6/src/NonCall.h000066400000000000000000000020341417247743000157640ustar00rootroot00000000000000#ifndef FREEBAYES_NONCALL_H #define FREEBAYES_NONCALL_H #include #include #include #include #include #include "Utility.h" #include "Allele.h" #include "Sample.h" using namespace std; class NonCall { public: NonCall(void) : refCount(0) , reflnQ(0) , altCount(0) , altlnQ(0) , minDepth(0) , nCount(0) { } NonCall(int rc, long double rq, int ac, long double aq, int mdp) : refCount(rc) , reflnQ(rq) , altCount(ac) , altlnQ(aq) , minDepth(mdp) { } int refCount; int altCount; int minDepth; int nCount ; long double reflnQ; long double altlnQ; }; class NonCalls : public map > > { public: void record(const string& seqName, long pos, const Samples& samples); NonCall aggregateAll(void); void aggregatePerSample(map& perSite); pair firstPos(void); pair lastPos(void); }; #endif freebayes-1.3.6/src/Parameters.cpp000066400000000000000000001431751417247743000171100ustar00rootroot00000000000000#include "Parameters.h" #include "convert.h" using namespace std; void Parameters::simpleUsage(char ** argv) { cout << "usage: " << argv[0] << " -f [REFERENCE] [OPTIONS] [BAM FILES] >[OUTPUT]" << endl << endl << "Bayesian haplotype-based polymorphism discovery." << endl << endl << "parameters:" << endl << endl << " -h --help For a complete description of options." << endl << endl << "freebayes is maintained by Erik Garrison and Pjotr Prins." << endl << endl << "citation: Erik Garrison, Gabor Marth" << endl << " \"Haplotype-based variant detection from short-read sequencing\"" << endl << " arXiv:1207.3907 (http://arxiv.org/abs/1207.3907)" << endl << endl << "author: Erik Garrison " << endl << "version: " << VERSION_GIT << endl; } void Parameters::usage(char** argv) { simpleUsage(argv); cout << endl << "overview:" << endl << endl << " To call variants from aligned short-read sequencing data, supply BAM files and" << endl << " a reference. FreeBayes will provide VCF output on standard out describing SNPs," << endl << " indels, and complex variants in samples in the input alignments." << endl << endl << " By default, FreeBayes will consider variants supported by at least 2" << endl << " observations in a single sample (-C) and also by at least 20% of the reads from" << endl << " a single sample (-F). These settings are suitable to low to high depth" << endl << " sequencing in haploid and diploid samples, but users working with polyploid or" << endl << " pooled samples may wish to adjust them depending on the characteristics of" << endl << " their sequencing data." << endl << endl << " FreeBayes is capable of calling variant haplotypes shorter than a read length" << endl << " where multiple polymorphisms segregate on the same read. The maximum distance" << endl << " between polymorphisms phased in this way is determined by the" << endl << " --max-complex-gap, which defaults to 3bp. In practice, this can comfortably be" << endl << " set to half the read length." << endl << endl << " Ploidy may be set to any level (-p), but by default all samples are assumed to" << endl << " be diploid. FreeBayes can model per-sample and per-region variation in" << endl << " copy-number (-A) using a copy-number variation map." << endl << endl << " FreeBayes can act as a frequency-based pooled caller and describe variants" << endl << " and haplotypes in terms of observation frequency rather than called genotypes." << endl << " To do so, use --pooled-continuous and set input filters to a suitable level." << endl << " Allele observation counts will be described by AO and RO fields in the VCF output." << endl << endl << endl << "examples:" << endl << endl << " # call variants assuming a diploid sample" << endl << " freebayes -f ref.fa aln.bam >var.vcf" << endl << endl << " # call variants assuming a diploid sample, providing gVCF output" << endl << " freebayes -f ref.fa --gvcf aln.bam >var.gvcf" << endl << endl << " # require at least 5 supporting observations to consider a variant" << endl << " freebayes -f ref.fa -C 5 aln.bam >var.vcf" << endl << endl << " # discard alignments overlapping positions where total read depth is greater than 200" << endl << " freebayes -f ref.fa -g 200 aln.bam >var.vcf" << endl << endl << " # use a different ploidy" << endl << " freebayes -f ref.fa -p 4 aln.bam >var.vcf" << endl << endl << " # assume a pooled sample with a known number of genome copies" << endl << " freebayes -f ref.fa -p 20 --pooled-discrete aln.bam >var.vcf" << endl << endl << " # generate frequency-based calls for all variants passing input thresholds" << endl << " freebayes -f ref.fa -F 0.01 -C 1 --pooled-continuous aln.bam >var.vcf" << endl << endl << " # use an input VCF (bgzipped + tabix indexed) to force calls at particular alleles" << endl << " freebayes -f ref.fa -@ in.vcf.gz aln.bam >var.vcf" << endl << endl << " # generate long haplotype calls over known variants" << endl << " freebayes -f ref.fa --haplotype-basis-alleles in.vcf.gz \\ " << endl << " --haplotype-length 50 aln.bam" << endl << endl << " # naive variant calling: simply annotate observation counts of SNPs and indels" << endl << " freebayes -f ref.fa --haplotype-length 0 --min-alternate-count 1 \\ " << endl << " --min-alternate-fraction 0 --pooled-continuous --report-monomorphic aln.bam >var.vcf" << endl << endl << endl << "parameters:" << endl << endl << " -h --help Prints this help dialog." << endl << " --version Prints the release number and the git commit id." << endl << endl << "input:" << endl << endl << " -b --bam FILE Add FILE to the set of BAM files to be analyzed." << endl << " -L --bam-list FILE" << endl << " A file containing a list of BAM files to be analyzed." << endl << " -c --stdin Read BAM input on stdin." << endl << " -f --fasta-reference FILE" << endl << " Use FILE as the reference sequence for analysis." << endl << " An index file (FILE.fai) will be created if none exists." << endl << " If neither --targets nor --region are specified, FreeBayes" << endl << " will analyze every position in this reference." << endl << " -t --targets FILE" << endl << " Limit analysis to targets listed in the BED-format FILE." << endl << " -r --region :-" << endl << " Limit analysis to the specified region, 0-base coordinates," << endl << " end_position not included (same as BED format)." << endl << " Either '-' or '..' maybe used as a separator." << endl << " -s --samples FILE" << endl << " Limit analysis to samples listed (one per line) in the FILE." << endl << " By default FreeBayes will analyze all samples in its input" << endl << " BAM files." << endl << " --populations FILE" << endl << " Each line of FILE should list a sample and a population which" << endl << " it is part of. The population-based bayesian inference model" << endl << " will then be partitioned on the basis of the populations." << endl << " -A --cnv-map FILE" << endl << " Read a copy number map from the BED file FILE, which has" << endl << " either a sample-level ploidy:" << endl << " sample_name copy_number" << endl << " or a region-specific format:" << endl << " seq_name start end sample_name copy_number" << endl << " ... for each region in each sample which does not have the" << endl << " default copy number as set by --ploidy. These fields can be delimited" << endl << " by space or tab." << endl << endl << "output:" << endl << endl << " -v --vcf FILE Output VCF-format results to FILE. (default: stdout)" << endl << " --gvcf" << endl << " Write gVCF output, which indicates coverage in uncalled regions." << endl << " --gvcf-chunk NUM" << endl << " When writing gVCF output emit a record for every NUM bases." << endl << " -& --gvcf-dont-use-chunk BOOL " << endl << " When writing the gVCF output emit a record for all bases if" << endl << " set to \"true\" , will also route an int to --gvcf-chunk" << endl << " similar to --output-mode EMIT_ALL_SITES from GATK" << endl << " -@ --variant-input VCF" << endl << " Use variants reported in VCF file as input to the algorithm." << endl << " Variants in this file will included in the output even if" << endl << " there is not enough support in the data to pass input filters." << endl << " -l --only-use-input-alleles" << endl << " Only provide variant calls and genotype likelihoods for sites" << endl << " and alleles which are provided in the VCF input, and provide" << endl << " output in the VCF for all input alleles, not just those which" << endl << " have support in the data." << endl << " --haplotype-basis-alleles VCF" << endl << " When specified, only variant alleles provided in this input" << endl << " VCF will be used for the construction of complex or haplotype" << endl << " alleles." << endl << " --report-all-haplotype-alleles" << endl << " At sites where genotypes are made over haplotype alleles," << endl << " provide information about all alleles in output, not only" << endl << " those which are called." << endl << " --report-monomorphic" << endl << " Report even loci which appear to be monomorphic, and report all" << endl << " considered alleles, even those which are not in called genotypes." << endl << " Loci which do not have any potential alternates have '.' for ALT." << endl << " -P --pvar N Report sites if the probability that there is a polymorphism" << endl << " at the site is greater than N. default: 0.0. Note that post-" << endl << " filtering is generally recommended over the use of this parameter." << endl << " --strict-vcf" << endl << " Generate strict VCF format (FORMAT/GQ will be an int)" << endl << endl << "population model:" << endl << endl << " -T --theta N The expected mutation rate or pairwise nucleotide diversity" << endl << " among the population under analysis. This serves as the" << endl << " single parameter to the Ewens Sampling Formula prior model" << endl << " default: 0.001" << endl << " -p --ploidy N Sets the default ploidy for the analysis to N. default: 2" << endl << " -J --pooled-discrete" << endl << " Assume that samples result from pooled sequencing." << endl << " Model pooled samples using discrete genotypes across pools." << endl << " When using this flag, set --ploidy to the number of" << endl << " alleles in each sample or use the --cnv-map to define" << endl << " per-sample ploidy." << endl << " -K --pooled-continuous" << endl << " Output all alleles which pass input filters, regardles of" << endl << " genotyping outcome or model." << endl << endl << "reference allele:" << endl << endl << " -Z --use-reference-allele" << endl << " This flag includes the reference allele in the analysis as" << endl << " if it is another sample from the same population." << endl << " --reference-quality MQ,BQ" << endl << " Assign mapping quality of MQ to the reference allele at each" << endl << " site and base quality of BQ. default: 100,60" << endl << endl << "allele scope:" << endl << endl << " -n --use-best-n-alleles N" << endl << " Evaluate only the best N SNP alleles, ranked by sum of" << endl << " supporting quality scores. (Set to 0 to use all; default: all)" << endl << " -E --max-complex-gap N" << endl << " --haplotype-length N" << endl << " Allow haplotype calls with contiguous embedded matches of up" << endl << " to this length. Set N=-1 to disable clumping. (default: 3)" << endl << " --min-repeat-size N" << endl << " When assembling observations across repeats, require the total repeat" << endl << " length at least this many bp. (default: 5)" << endl << " --min-repeat-entropy N" << endl << " To detect interrupted repeats, build across sequence until it has" << endl << " entropy > N bits per bp. Set to 0 to turn off. (default: 1)" << endl << " --no-partial-observations" << endl << " Exclude observations which do not fully span the dynamically-determined" << endl << " detection window. (default, use all observations, dividing partial" << endl << " support across matching haplotypes when generating haplotypes.)" << endl << endl << " These flags are meant for testing." << endl << " They are not meant for filtering the output." << endl << " They actually filter the input to the algorithm by throwing away alignments." << endl << " This hurts performance by hiding information from the Bayesian model." << endl << " Do not use them unless you can validate that they improve results!" << endl << endl << " -I --throw-away-snp-obs Remove SNP observations from input." << endl << " -i --throw-away-indels-obs Remove indel observations from input." << endl << " -X --throw-away-mnp-obs Remove MNP observations from input." << endl << " -u --throw-away-complex-obs Remove complex allele observations from input." << endl << endl << " If you need to break apart haplotype calls to obtain one class of alleles," << endl << " run the call with default parameters, then normalize and subset the VCF:" << endl << " freebayes ... | vcfallelicprimitives -kg >calls.vcf" << endl << " For example, this would retain only biallelic SNPs." << endl << " biallelic_snp_calls.vcf" << endl << endl << "indel realignment:" << endl << endl << " -O --dont-left-align-indels" << endl << " Turn off left-alignment of indels, which is enabled by default." << endl << endl << "input filters:" << endl << endl << " -4 --use-duplicate-reads" << endl << " Include duplicate-marked alignments in the analysis." << endl << " default: exclude duplicates marked as such in alignments" << endl << " -m --min-mapping-quality Q" << endl << " Exclude alignments from analysis if they have a mapping" << endl << " quality less than Q. default: 1" << endl << " -q --min-base-quality Q" << endl << " Exclude alleles from analysis if their supporting base" << endl << " quality is less than Q. default: 0" << endl << " -R --min-supporting-allele-qsum Q" << endl << " Consider any allele in which the sum of qualities of supporting" << endl << " observations is at least Q. default: 0" << endl << " -Y --min-supporting-mapping-qsum Q" << endl << " Consider any allele in which and the sum of mapping qualities of" << endl << " supporting reads is at least Q. default: 0" << endl << " -Q --mismatch-base-quality-threshold Q" << endl << " Count mismatches toward --read-mismatch-limit if the base" << endl << " quality of the mismatch is >= Q. default: 10" << endl << " -U --read-mismatch-limit N" << endl << " Exclude reads with more than N mismatches where each mismatch" << endl << " has base quality >= mismatch-base-quality-threshold." << endl << " default: ~unbounded" << endl << " -z --read-max-mismatch-fraction N" << endl << " Exclude reads with more than N [0,1] fraction of mismatches where" << endl << " each mismatch has base quality >= mismatch-base-quality-threshold" << endl << " default: 1.0" << endl << " -$ --read-snp-limit N" << endl << " Exclude reads with more than N base mismatches, ignoring gaps" << endl << " with quality >= mismatch-base-quality-threshold." << endl << " default: ~unbounded" << endl << " -e --read-indel-limit N" << endl << " Exclude reads with more than N separate gaps." << endl << " default: ~unbounded" << endl << " -0 --standard-filters Use stringent input base and mapping quality filters" << endl << " Equivalent to -m 30 -q 20 -R 0 -S 0" << endl << " -F --min-alternate-fraction N" << endl << " Require at least this fraction of observations supporting" << endl << " an alternate allele within a single individual in the" << endl << " in order to evaluate the position. default: 0.05" << endl << " -C --min-alternate-count N" << endl << " Require at least this count of observations supporting" << endl << " an alternate allele within a single individual in order" << endl << " to evaluate the position. default: 2" << endl << " -3 --min-alternate-qsum N" << endl << " Require at least this sum of quality of observations supporting" << endl << " an alternate allele within a single individual in order" << endl << " to evaluate the position. default: 0" << endl << " -G --min-alternate-total N" << endl << " Require at least this count of observations supporting" << endl << " an alternate allele within the total population in order" << endl << " to use the allele in analysis. default: 1" << endl << " --min-coverage N" << endl << " Require at least this coverage to process a site. default: 0" << endl << " --limit-coverage N" << endl << " Downsample per-sample coverage to this level if greater than this coverage." << endl << " default: no limit" << endl << " -g --skip-coverage N" << endl << " Skip processing of alignments overlapping positions with coverage >N." << endl << " This filters sites above this coverage, but will also reduce data nearby." << endl << " default: no limit" << endl << " --trim-complex-tail" << endl << " Trim complex tails." << endl << endl << "population priors:" << endl << endl << " -k --no-population-priors" << endl << " Equivalent to --pooled-discrete --hwe-priors-off and removal of" << endl << " Ewens Sampling Formula component of priors." << endl << endl << "mappability priors:" << endl << endl << " -w --hwe-priors-off" << endl << " Disable estimation of the probability of the combination" << endl << " arising under HWE given the allele frequency as estimated" << endl << " by observation frequency." << endl << " -V --binomial-obs-priors-off" << endl << " Disable incorporation of prior expectations about observations." << endl << " Uses read placement probability, strand balance probability," << endl << " and read position (5'-3') probability." << endl << " -a --allele-balance-priors-off" << endl << " Disable use of aggregate probability of observation balance between alleles" << endl << " as a component of the priors." << endl << endl << "genotype likelihoods:" << endl << endl << " --observation-bias FILE" << endl << " Read length-dependent allele observation biases from FILE." << endl << " The format is [length] [alignment efficiency relative to reference]" << endl << " where the efficiency is 1 if there is no relative observation bias." << endl << " --base-quality-cap Q" << endl << " Limit estimated observation quality by capping base quality at Q." << endl << " --prob-contamination F" << endl << " An estimate of contamination to use for all samples. default: 10e-9" << endl << " --legacy-gls Use legacy (polybayes equivalent) genotype likelihood calculations" << endl << " --contamination-estimates FILE" << endl << " A file containing per-sample estimates of contamination, such as" << endl << " those generated by VerifyBamID. The format should be:" << endl << " sample p(read=R|genotype=AR) p(read=A|genotype=AA)" << endl << " Sample '*' can be used to set default contamination estimates." << endl << endl << "algorithmic features:" << endl << endl << " --report-genotype-likelihood-max" << endl << " Report genotypes using the maximum-likelihood estimate provided" << endl << " from genotype likelihoods." << endl << " -B --genotyping-max-iterations N" << endl << " Iterate no more than N times during genotyping step. default: 1000." << endl << " --genotyping-max-banddepth N" << endl << " Integrate no deeper than the Nth best genotype by likelihood when" << endl << " genotyping. default: 6." << endl << " -W --posterior-integration-limits N,M" << endl << " Integrate all genotype combinations in our posterior space" << endl << " which include no more than N samples with their Mth best" << endl << " data likelihood. default: 1,3." << endl << " -N --exclude-unobserved-genotypes" << endl << " Skip sample genotypings for which the sample has no supporting reads." << endl << " -S --genotype-variant-threshold N" << endl << " Limit posterior integration to samples where the second-best" << endl << " genotype likelihood is no more than log(N) from the highest" << endl << " genotype likelihood for the sample. default: ~unbounded" << endl << " -j --use-mapping-quality" << endl << " Use mapping quality of alleles when calculating data likelihoods." << endl << " -H --harmonic-indel-quality" << endl << " Use a weighted sum of base qualities around an indel, scaled by the" << endl << " distance from the indel. By default use a minimum BQ in flanking sequence." << endl << " -D --read-dependence-factor N" << endl << " Incorporate non-independence of reads by scaling successive" << endl << " observations by this factor during data likelihood" << endl << " calculations. default: 0.9" << endl << " -= --genotype-qualities" << endl << " Calculate the marginal probability of genotypes and report as GQ in" << endl << " each sample field in the VCF output." << endl << endl << "debugging:" << endl << endl << " -d --debug Print debugging output." << endl << " -dd Print more verbose debugging output (requires \"make DEBUG\")" << endl << endl << endl << "author: Erik Garrison " << endl << "version: " << VERSION_GIT << endl; } Parameters::Parameters(int argc, char** argv) { if (argc == 1) { simpleUsage(argv); exit(1); } // record command line parameters commandline = argv[0]; for (int i = 1; i < argc; ++i) { commandline += " "; commandline += argv[i]; } // set defaults // i/o parameters: useStdin = false; // -c --stdin fasta = ""; // -f --fasta-reference targets = ""; // -t --targets samples = ""; // -s --samples populationsFile = ""; cnvFile = ""; output = "vcf"; // -v --vcf outputFile = ""; gVCFout = false; gVCFchunk = 0; gVCFNoChunk = false; // --gvcf-no-chunk sets this to true alleleObservationBiasFile = ""; // operation parameters useDuplicateReads = false; // -E --use-duplicate-reads suppressOutput = false; // -N --suppress-output useBestNAlleles = 0; // -n --use-best-n-alleles forceRefAllele = false; // -Z --use-reference-allele useRefAllele = false; // ..... diploidReference = false; // -H --diploid-reference allowIndels = true; // -i --no-indels leftAlignIndels = true; // -O --dont-left-align-indels allowMNPs = true; // -X --no-mnps allowSNPs = true; // -I --no-snps allowComplex = true; strictVCF = false; maxComplexGap = 3; //maxHaplotypeLength = 100; minRepeatSize = 5; minRepeatEntropy = 1; usePartialObservations = true; pooledDiscrete = false; // -J --pooled pooledContinuous = false; ewensPriors = true; permute = true; // -K --permute useMappingQuality = false; useMinIndelQuality = true; obsBinomialPriors = true; hwePriors = true; alleleBalancePriors = true; excludeUnobservedGenotypes = false; excludePartiallyObservedGenotypes = false; genotypeVariantThreshold = 0; siteSelectionMaxIterations = 5; reportGenotypeLikelihoodMax = false; genotypingMaxIterations = 1000; genotypingMaxBandDepth = 7; minPairedAltCount = 0; minAltMeanMapQ = 0; limitGL = 0; reportAllHaplotypeAlleles = false; reportMonomorphic = false; boundIndels = true; // ignore indels at ends of reads onlyUseInputAlleles = false; standardGLs = false; // use experimental gls by default // XXX MQR = 100; // -M --reference-mapping-quality BQR = 60; // -B --reference-base-quality ploidy = 2; // -p --ploidy MQL0 = 1; // -m --min-mapping-quality BQL0 = 0; // -q --min-base-quality minSupportingAlleleQualitySum = 0; minSupportingMappingQualitySum = 0; BQL2 = 10; // -Q --mismatch-base-quality-threshold RMU = 10000000; // -U --read-mismatch-limit readMaxMismatchFraction = 1.0; // -z --read-max-mismatch-fraction readSnpLimit = 10000000; // -$ --read-snp-limit readIndelLimit = 10000000; // -e --read-indel-limit IDW = -1; // -x --indel-exclusion-window TH = 10e-3; // -T --theta PVL = 0.0; // -P --pvar RDF = 0.9; // -D --read-dependence-factor diffusionPriorScalar = 1.0; // -V --diffusion-prior-scalar WB = 1; // -W --posterior-integration-limits TB = 3; posteriorIntegrationDepth = 0; calculateMarginals = false; minAltFraction = 0.05; // require 5% of reads from sample to be supporting the same alternate to consider minAltCount = 2; // require 2 reads in same sample call minAltTotal = 1; minAltQSum = 0; baseQualityCap = 0; probContamination = 10e-9; //minAltQSumTotal = 0; minCoverage = 0; limitCoverage = 0; skipCoverage = 0; trimComplexTail = 0; debuglevel = 0; debug = false; debug2 = false; showReferenceRepeats = false; int c; // counter for getopt static const struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, '#'}, {"bam", required_argument, 0, 'b'}, {"bam-list", required_argument, 0, 'L'}, {"stdin", no_argument, 0, 'c'}, {"fasta-reference", required_argument, 0, 'f'}, {"targets", required_argument, 0, 't'}, {"region", required_argument, 0, 'r'}, {"samples", required_argument, 0, 's'}, {"populations", required_argument, 0, '2'}, {"cnv-map", required_argument, 0, 'A'}, {"vcf", required_argument, 0, 'v'}, {"gvcf", no_argument, 0, '8'}, {"gvcf-chunk", required_argument, 0, '&'}, {"gvcf-dont-use-chunk", required_argument, 0 , '&'}, {"use-duplicate-reads", no_argument, 0, '4'}, {"no-partial-observations", no_argument, 0, '['}, {"use-best-n-alleles", required_argument, 0, 'n'}, {"use-reference-allele", no_argument, 0, 'Z'}, {"harmonic-indel-quality", no_argument, 0, 'H'}, {"standard-filters", no_argument, 0, '0'}, {"reference-quality", required_argument, 0, '1'}, {"ploidy", required_argument, 0, 'p'}, {"pooled-discrete", no_argument, 0, 'J'}, {"pooled-continuous", no_argument, 0, 'K'}, {"no-population-priors", no_argument, 0, 'k'}, {"use-mapping-quality", no_argument, 0, 'j'}, {"min-mapping-quality", required_argument, 0, 'm'}, {"min-base-quality", required_argument, 0, 'q'}, {"min-supporting-allele-qsum", required_argument, 0, 'R'}, {"min-supporting-mapping-qsum", required_argument, 0, 'Y'}, {"mismatch-base-quality-threshold", required_argument, 0, 'Q'}, {"read-mismatch-limit", required_argument, 0, 'U'}, {"read-max-mismatch-fraction", required_argument, 0, 'z'}, {"read-snp-limit", required_argument, 0, '$'}, {"read-indel-limit", required_argument, 0, 'e'}, {"throw-away-indel-obs", no_argument, 0, 'i'}, {"dont-left-align-indels", no_argument, 0, 'O'}, {"throw-away-mnps-obs", no_argument, 0, 'X'}, {"throw-away-complex-obs", no_argument, 0, 'u'}, {"max-complex-gap", required_argument, 0, 'E'}, {"haplotype-length", required_argument, 0, 'E'}, {"min-repeat-size", required_argument, 0, 'E'}, {"min-repeat-entropy", required_argument, 0, 'E'}, {"throw-away-snp-obs", no_argument, 0, 'I'}, {"indel-exclusion-window", required_argument, 0, 'x'}, {"theta", required_argument, 0, 'T'}, {"pvar", required_argument, 0, 'P'}, {"strict-vcf", no_argument, 0, '/'}, {"read-dependence-factor", required_argument, 0, 'D'}, {"binomial-obs-priors-off", no_argument, 0, 'V'}, {"allele-balance-priors-off", no_argument, 0, 'a'}, {"hwe-priors-off", no_argument, 0, 'w'}, {"posterior-integration-limits", required_argument, 0, 'W'}, {"min-alternate-fraction", required_argument, 0, 'F'}, {"min-alternate-count", required_argument, 0, 'C'}, //{"min-paired-alternate-count", required_argument, 0, 'Y'}, {"observation-bias", required_argument, 0, '%'}, {"min-alternate-total", required_argument, 0, 'G'}, //{"min-alternate-mean-mapq", required_argument, 0, 'k'}, {"min-alternate-qsum", required_argument, 0, '3'}, {"min-coverage", required_argument, 0, '!'}, {"limit-coverage", required_argument, 0, '+'}, {"skip-coverage", required_argument, 0, 'g'}, {"trim-complex-tail", no_argument, 0, ']'}, {"genotype-qualities", no_argument, 0, '='}, {"variant-input", required_argument, 0, '@'}, {"only-use-input-alleles", no_argument, 0, 'l'}, //{"show-reference-repeats", no_argument, 0, '_'}, {"exclude-unobserved-genotypes", no_argument, 0, 'N'}, {"genotype-variant-threshold", required_argument, 0, 'S'}, {"site-selection-max-iterations", required_argument, 0, 'M'}, {"genotyping-max-iterations", required_argument, 0, 'B'}, {"genotyping-max-banddepth", required_argument, 0, '7'}, {"haplotype-basis-alleles", required_argument, 0, '9'}, {"report-genotype-likelihood-max", no_argument, 0, '5'}, {"report-all-haplotype-alleles", no_argument, 0, '6'}, {"base-quality-cap", required_argument, 0, '('}, {"legacy-gls", no_argument, 0, ')'}, {"prob-contamination", required_argument, 0, '_'}, {"contamination-estimates", required_argument, 0, ','}, {"report-monomorphic", no_argument, 0, '6'}, {"debug", no_argument, 0, 'd'}, {0, 0, 0, 0} }; while (true) { int option_index = 0; c = getopt_long(argc, argv, "hcO4ZKjH[0diN5a)Ik=wl6#uVXJY:b:G:M:x:@:A:f:t:r:s:v:n:B:p:m:q:R:Q:U:$:e:T:P:D:^:S:W:F:C:&:L:8z:1:3:E:7:2:9:%:_:,:(:!:+:g:", long_options, &option_index); if (c == -1) // end of options break; switch (c) { // i/o parameters: // -b --bam case 'b': bams.push_back(optarg); break; // -c --stdin case 'c': useStdin = true; bams.push_back("stdin"); break; // -f --fasta-reference case 'f': fasta = optarg; break; // -t --targets case 't': targets = optarg; break; // -r --region case 'r': regions.push_back(optarg); break; // -s --samples case 's': samples = optarg; break; // --populations case '2': populationsFile = optarg; break; // -A --cnv-file case 'A': cnvFile = optarg; break; // -j --use-mapping-quality case 'j': useMappingQuality = true; break; // -v --vcf case 'v': output = "vcf"; outputFile = optarg; break; // -O --dont-left-align-indels case 'O': leftAlignIndels = false; break; // --bam-list case 'L': addLinesFromFile(bams, string(optarg)); break; // -8 --gvcf case '8': gVCFout = true; break; // -& BOOL/INT --gvcf-no-chunk BOOL/INT --gvcf-chunk case '&': //cerr << "optarg:\t" << optarg << endl; if(optarg[0] == 't'){ gVCFNoChunk = true; } else if (optarg[0] == 'f'){ gVCFNoChunk = false; } else { gVCFchunk = atoi(optarg); } break; // -4 --use-duplicate-reads case '4': useDuplicateReads = true; break; // -3 --min-alternate-qsum case '3': if (!convert(optarg, minAltQSum)) { cerr << "could not parse min-alternate-qsum" << endl; exit(1); } break; // -G --min-alternate-total case 'G': if (!convert(optarg, minAltTotal)) { cerr << "could not parse min-alternate-total" << endl; exit(1); } break; // -! --min-coverage case '!': if (!convert(optarg, minCoverage)) { cerr << "could not parse min-coverage" << endl; exit(1); } break; // -+ --limit-coverage case '+': if (!convert(optarg, limitCoverage)) { cerr << "could not parse limit-coverage" << endl; exit(1); } break; // -g --skip-coverage case 'g': if (!convert(optarg, skipCoverage)) { cerr << "could not parse skip-coverage" << endl; exit(1); } break; // --trim-complex-tail case ']': trimComplexTail = true; break; // -n --use-best-n-alleles case 'n': if (!convert(optarg, useBestNAlleles)) { cerr << "could not parse use-best-n-alleles" << endl; exit(1); } break; // -Z --use-reference-allele case 'Z': forceRefAllele = true; useRefAllele = true; break; // -H --harmonic-indel-quality case 'H': useMinIndelQuality = false; break; // -0 --standard-filters case '0': MQL0 = 30; BQL0 = 20; break; // -M --expectation-maximization case 'M': if (!convert(optarg, siteSelectionMaxIterations)) { cerr << "could not parse site-selection-max-iterations" << endl; exit(1); } break; case '/': strictVCF = true; break; case 'u': allowComplex = false; break; case 'E': { string arg(argv[optind - 2]); if (arg == "--min-repeat-size") { if (!convert(optarg, minRepeatSize)) { cerr << "could not parse " << arg << endl; exit(1); } } else if (arg == "--min-repeat-entropy") { if (!convert(optarg, minRepeatEntropy)) { cerr << "could not parse " << arg << endl; exit(1); } } else { if (!convert(optarg, maxComplexGap)) { cerr << "could not parse maxComplexGap" << endl; exit(1); } } break; } // -B --genotyping-max-iterations case 'B': if (!convert(optarg, genotypingMaxIterations)) { cerr << "could not parse genotyping-max-iterations" << endl; exit(1); } break; // -7 --genotyping-max-banddepth case '7': if (!convert(optarg, genotypingMaxBandDepth)) { cerr << "could not parse genotyping-max-iterations" << endl; exit(1); } break; // -1 --reference-quality case '1': if (!convert(split(optarg, ",").front(), MQR)) { cerr << "could not parse reference mapping quality" << endl; exit(1); } if (!convert(split(optarg, ",").back(), BQR)) { cerr << "could not parse reference base quality" << endl; exit(1); } break; // -p --ploidy case 'p': if (!convert(optarg, ploidy)) { cerr << "could not parse ploidy" << endl; exit(1); } if (ploidy <= 0) { cerr << "cannot set ploidy to less than 1" << endl; exit(1); } break; case 'J': pooledDiscrete = true; hwePriors = false; // disable hwe sampling prob when using discrete pooling break; // -m --min-mapping-quality case 'm': if (!convert(optarg, MQL0)) { cerr << "could not parse min-mapping-quality" << endl; exit(1); } break; // -q --min-base-quality case 'q': if (!convert(optarg, BQL0)) { cerr << "could not parse min-base-quality" << endl; exit(1); } break; // -R --min-supporting-allele-qsum case 'R': if (!convert(optarg, minSupportingAlleleQualitySum)) { cerr << "could not parse min-supporting-allele-qsum" << endl; exit(1); } break; // -Y --min-supporting-mapping-quality case 'Y': if (!convert(optarg, minSupportingMappingQualitySum)) { cerr << "could not parse min-supporting-mapping-qsum" << endl; exit(1); } break; // -N --exclude-unobserved-genotypes case 'N': excludeUnobservedGenotypes = true; break; // -S --genotype-variant-threshold case 'S': if (!convert(optarg, genotypeVariantThreshold)) { cerr << "could not parse genotype-variant-threshold" << endl; exit(1); } break; case '5': reportGenotypeLikelihoodMax = true; break; // -Q --mismatch-base-quality-threshold case 'Q': if (!convert(optarg, BQL2)) { cerr << "could not parse mismatch-base-quality-threshold" << endl; exit(1); } break; // -U --read-mismatch-limit case 'U': if (!convert(optarg, RMU)) { cerr << "could not parse read-mismatch-limit" << endl; exit(1); } break; // -z --read-max-mismatch-fraction case 'z': if (!convert(optarg, readMaxMismatchFraction)) { cerr << "could not parse read-mismatch-limit" << endl; exit(1); } break; // -$ --read-snp-limit case '$': if (!convert(optarg, readSnpLimit)) { cerr << "could not parse read-snp-limit" << endl; exit(1); } break; // -e --read-indel-limit case 'e': if (!convert(optarg, readIndelLimit)) { cerr << "could not parse read-indel-limit" << endl; exit(1); } break; // -x --indel-exclusion-window case 'x': if (!convert(optarg, IDW)) { cerr << "could not parse indel-exclusion-window" << endl; exit(1); } break; // -i --indels case 'i': allowIndels = false; break; // -X --mnps case 'X': allowMNPs = false; break; // -I --no-snps case 'I': allowSNPs = false; break; // -T --theta case 'T': if (!convert(optarg, TH)) { cerr << "could not parse theta" << endl; exit(1); } break; // -P --pvar case 'P': if (!convert(optarg, PVL)) { cerr << "could not parse pvar" << endl; exit(1); } break; // -D --read-dependence-factor case 'D': if (!convert(optarg, RDF)) { cerr << "could not parse read-dependence-factor" << endl; exit(1); } break; // -% --observation-bias case '%': alleleObservationBiasFile = optarg; break; // observation priors case 'V': obsBinomialPriors = false; break; // allele balance case 'a': alleleBalancePriors = false; break; // hwe expectations case 'w': hwePriors = false; break; // -W --posterior-integration-limits case 'W': if (!convert(split(optarg, ",").front(), WB)) { cerr << "could not parse posterior-integration-limits (bandwidth)" << endl; exit(1); } if (!convert(split(optarg, ",").back(), TB)) { cerr << "could not parse posterior-integration-limits (banddepth)" << endl; exit(1); } break; // -F --min-alternate-fraction case 'F': if (!convert(optarg, minAltFraction)) { cerr << "could not parse min-alternate-fraction" << endl; exit(1); } break; // -C --min-alternate-count case 'C': if (!convert(optarg, minAltCount)) { cerr << "could not parse min-alternate-count" << endl; exit(1); } break; // -k --no-population-priors case 'k': pooledDiscrete = true; ewensPriors = false; hwePriors = false; break; case 'K': pooledContinuous = true; break; case '=': calculateMarginals = true; break; case '@': variantPriorsFile = optarg; break; case '9': haplotypeVariantFile = optarg; break; case 'l': onlyUseInputAlleles = true; break; case '6': { string arg(argv[optind - 1]); if (arg == "--report-monomorphic") { reportMonomorphic = true; } reportAllHaplotypeAlleles = true; } break; case '[': usePartialObservations = false; break; case '_': if (!convert(optarg, probContamination)) { cerr << "could not parse prob-contamination" << endl; exit(1); } break; case ',': contaminationEstimateFile = optarg; break; case ')': standardGLs = true; break; case '(': if (!convert(optarg, baseQualityCap)) { cerr << "could not parse base-quality-cap" << endl; exit(1); } break; // -d --debug case 'd': ++debuglevel; break; case '#': // --version cout << "version: " << VERSION_GIT << endl; exit(0); break; case 'h': usage(argv); exit(0); break; // either catch "long options" or case '?': // print a suggestion about the most-likely long option which the argument matches { string bad_arg(argv[optind - 1]); const option* opt = &long_options[0]; const option* closest_opt = opt; int shortest_distance = levenshteinDistance(opt->name, bad_arg); ++opt; while (opt->name != 0) { int distance = levenshteinDistance(opt->name, bad_arg); if (distance < shortest_distance) { shortest_distance = distance; closest_opt = opt; } ++opt; } cerr << "did you mean --" << closest_opt->name << " ?" << endl; exit(1); } break; default: abort (); } } // any remaining arguments are considered as bam files if (optind < argc) { if (useStdin) { cerr << "--stdin flag specified, but a list of BAM files given. Jumping disabled." << endl; } while (optind < argc) { bams.push_back(argv[optind++]); } } if (debuglevel >= 1) { debug = true; } if (debuglevel >= 2) { debug2 = true; } if (bams.size() == 0) { cerr << "Please specify a BAM file or files." << endl; exit(1); } if (fasta == "") { cerr << "Please specify a fasta reference file." << endl; exit(1); } // check that there aren't duplicates in the bams list for( int i=1; i #include #include #include #include #include #include #include #include "split.h" #include "version_git.h" #include "Utility.h" using namespace std; // Encapsulates tracking and parsing of command line program parameters class Parameters { friend ostream &operator<<(ostream &out, const Parameters &p); public: // i/o parameters: string bam; // -b --bam vector bams; bool useStdin; // -c --stdin string fasta; // -f --fasta-reference string targets; // -t --targets vector regions; // -r --region string samples; // -s --samples string populationsFile; string cnvFile; //string log; string output; // -v --vcf string outputFile; bool gVCFout; // -l --gvcf int gVCFchunk; bool gVCFNoChunk; string variantPriorsFile; string haplotypeVariantFile; bool reportAllHaplotypeAlleles; bool reportMonomorphic; bool boundIndels; bool onlyUseInputAlleles; string alleleObservationBiasFile; bool standardGLs; int baseQualityCap; double probContamination; string contaminationEstimateFile; // operation parameters bool useDuplicateReads; // -E --use-duplicate-reads bool suppressOutput; // -S --suppress-output int useBestNAlleles; // -n --use-best-n-alleles bool forceRefAllele; // -F --force-reference-allele bool useRefAllele; // -U --use-reference-allele bool diploidReference; // -H --haploid-reference bool allowIndels; // -I --allow-indels bool leftAlignIndels; // -O --left-align-indels bool allowMNPs; // -X --allow-mnps bool allowComplex; // -X --allow-complex bool strictVCF; int maxComplexGap; //int maxHaplotypeLength; int minRepeatSize; double minRepeatEntropy; bool usePartialObservations; bool allowSNPs; // -I --no-snps bool pooledDiscrete; bool pooledContinuous; bool ewensPriors; bool permute; // --permute bool useMappingQuality; // bool useMinIndelQuality; bool obsBinomialPriors; bool alleleBalancePriors; bool hwePriors; bool reportGenotypeLikelihoodMax; int genotypingMaxIterations; int genotypingMaxBandDepth; bool excludePartiallyObservedGenotypes; bool excludeUnobservedGenotypes; float genotypeVariantThreshold; int siteSelectionMaxIterations; bool allSites; // TODO double limitGL; // minimum GL that is output int minPairedAltCount; double minAltMeanMapQ; int minAltQSum; int MQR; // -M --reference-mapping-quality int BQR; // -B --reference-base-quality int ploidy; // -p --ploidy int MQL0; // -m --min-mapping-quality int BQL0; // -q --min-base-quality int minSupportingMappingQualitySum; // -R --min-supporting-mapping-quality int minSupportingAlleleQualitySum; // -S --min-supporting-base-quality int BQL2; // -Q --mismatch-base-quality-threshold int RMU; // -U --read-mismatch-limit float readMaxMismatchFraction; // -z --read-max-mismatch-fraction int readSnpLimit; // -$ --read-snp-limit int readIndelLimit; // -e --read-indel-limit int IDW; // -I --indel-exclusion-window long double TH; // -T --theta long double PVL; // -P --pvar // -K --posterior-integration-depth int posteriorIntegrationDepth; bool calculateMarginals; string algorithm; double RDF; // -D --read-dependence-factor long double diffusionPriorScalar; // -V --diffusion-prior-scalar int WB; // -W --posterior-integration-bandwidth // XXX adjusting this to anything other than 1 may have bad consequences // for large numbers of samples int TB; // -Y --posterior-integration-depth bool includeMonoB; int TR; int I; long double minAltFraction; // -F --min-alternate-fraction int minAltCount; // -C --min-alternate-count int minAltTotal; // -G --min-alternate-total int minCoverage; // -! --min-coverage int limitCoverage; // -+ --limit-coverage int skipCoverage; // -g --skip-coverage int trimComplexTail; // -. --trim-complex-tail int debuglevel; // -d --debug increments bool debug; // set if debuglevel >=1 bool debug2; // set if debuglevel >=2 bool showReferenceRepeats; // functions Parameters(int argc, char** argv); void usage(char **argv); void simpleUsage(char **argv); // reporting string commandline; }; #endif freebayes-1.3.6/src/Product.h000066400000000000000000000005651417247743000160650ustar00rootroot00000000000000#ifndef FREEBAYES_PRODUCT_H #define FREEBAYES_PRODUCT_H #include template T product(const std::vector& v) { if (v.size() > 0) { T result = 1; for (typename std::vector::const_iterator i = v.begin(); i != v.end(); ++i) { result *= *i; } return result; } else { return 0; } } #endif freebayes-1.3.6/src/Result.cpp000066400000000000000000000002501417247743000162450ustar00rootroot00000000000000#include "Result.h" void Result::sortDataLikelihoods(void) { SampleDataLikelihoodCompare datalikelihoodCompare; sort(begin(), end(), datalikelihoodCompare); } freebayes-1.3.6/src/Result.h000066400000000000000000000006131417247743000157150ustar00rootroot00000000000000#ifndef FREEBAYES_RESULT_H #define FREEBAYES_RESULT_H #include #include #include #include #include "Genotype.h" using namespace std; class Result : public vector { public: string name; Sample* observations; void sortDataLikelihoods(void); //pair bestMarginalGenotype(void); }; #endif freebayes-1.3.6/src/ResultData.cpp000066400000000000000000001014211417247743000170410ustar00rootroot00000000000000#include "ResultData.h" #include "TryCatch.h" using namespace std; vcflib::Variant& Results::vcf( vcflib::Variant& var, // variant to update BigFloat pHom, long double bestComboOddsRatio, //long double alleleSamplingProb, Samples& samples, string refbase, vector& altAllelesIncludingNulls, map repeats, int genotypingIterations, vector& sampleNames, int coverage, GenotypeCombo& genotypeCombo, map >& alleleGroups, map >& partialObservationGroups, map >& partialObservationSupport, map >& genotypesByPloidy, vector& sequencingTechnologies, AlleleParser* parser) { Parameters& parameters = parser->parameters; GenotypeComboMap comboMap; genotypeCombo2Map(genotypeCombo, comboMap); // set up the reported reference allele long int referencePosition = (long int) parser->currentPosition; // 0-based // remove NULL alt alleles vector altAlleles; for (vector::iterator aa = altAllelesIncludingNulls.begin(); aa != altAllelesIncludingNulls.end(); ++aa) { if (!aa->isNull()) { altAlleles.push_back(*aa); } } map adjustedCigar; vector& adjustedAltAlleles = altAlleles; // just an alias for (vector::iterator aa = altAlleles.begin(); aa != altAlleles.end(); ++aa) { adjustedCigar[aa->base()] = aa->cigar; var.alt.push_back(aa->alternateSequence); } var.ref = refbase; assert(!var.ref.empty()); // get the required size of the reference sequence // strip identical bases from start and/or end of alleles // if bases have been stripped from the beginning, // set up VCF record-wide variables var.sequenceName = parser->currentSequenceName; var.position = referencePosition + 1; var.id = "."; var.filter = "."; // note that we set QUAL to 0 at loci with no data var.quality = max((long double) 0, nan2zero(big2phred(pHom))); if (coverage == 0) { var.quality = 0; } // set up format string var.format.clear(); var.format.push_back("GT"); if (parameters.calculateMarginals) var.format.push_back("GQ"); // XXX var.format.push_back("DP"); var.format.push_back("AD"); var.format.push_back("RO"); var.format.push_back("QR"); var.format.push_back("AO"); var.format.push_back("QA"); // add GL/GLE later, when we know if we need to use one or the other unsigned int refBasesLeft = 0; unsigned int refBasesRight = 0; unsigned int refReadsLeft = 0; unsigned int refReadsRight = 0; unsigned int refEndLeft = 0; unsigned int refEndRight = 0; unsigned int refmqsum = 0; unsigned int refProperPairs = 0; long double refReadMismatchSum = 0; long double refReadSNPSum = 0; long double refReadIndelSum = 0; long double refReadSoftClipSum = 0; unsigned int refObsCount = 0; map refObsBySequencingTechnology; map >::iterator f = alleleGroups.find(refbase); if (f != alleleGroups.end()) { vector& referenceAlleles = alleleGroups.at(refbase); refObsCount = referenceAlleles.size(); for (vector::iterator app = referenceAlleles.begin(); app != referenceAlleles.end(); ++app) { Allele& allele = **app; refReadMismatchSum += allele.readMismatchRate; refReadSNPSum += allele.readSNPRate; refReadIndelSum += allele.readIndelRate; if (allele.isProperPair) { ++refProperPairs; } if (!allele.sequencingTechnology.empty()) { ++refObsBySequencingTechnology[allele.sequencingTechnology]; } refBasesLeft += allele.basesLeft; refBasesRight += allele.basesRight; if (allele.basesLeft >= allele.basesRight) { refReadsLeft += 1; if (allele.strand == STRAND_FORWARD) { refEndLeft += 1; } else { refEndRight += 1; } } else { refReadsRight += 1; if (allele.strand == STRAND_FORWARD) { refEndRight += 1; } else { refEndLeft += 1; } } refmqsum += allele.mapQuality; } } long double refReadMismatchRate = (refObsCount == 0 ? 0 : refReadMismatchSum / (long double) refObsCount); long double refReadSNPRate = (refObsCount == 0 ? 0 : refReadSNPSum / (long double) refObsCount); long double refReadIndelRate = (refObsCount == 0 ? 0 : refReadIndelSum / (long double) refObsCount); //var.info["XRM"].push_back(convert(refReadMismatchRate)); //var.info["XRS"].push_back(convert(refReadSNPRate)); //var.info["XRI"].push_back(convert(refReadIndelRate)); var.info["MQMR"].push_back(convert((refObsCount == 0) ? 0 : (double) refmqsum / (double) refObsCount)); var.info["RPPR"].push_back(convert((refObsCount == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(refReadsLeft, refReadsRight + refReadsLeft, 0.5))))); var.info["EPPR"].push_back(convert((refBasesLeft + refBasesRight == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(refEndLeft, refEndLeft + refEndRight, 0.5))))); var.info["PAIREDR"].push_back(convert((refObsCount == 0) ? 0 : (double) refProperPairs / (double) refObsCount)); //var.info["HWE"].push_back(convert(nan2zero(ln2phred(genotypeCombo.hweComboProb())))); var.info["GTI"].push_back(convert(genotypingIterations)); // loop over all alternate alleles for (vector::iterator aa = altAlleles.begin(); aa != altAlleles.end(); ++aa) { Allele& altAllele = *aa; string altbase = altAllele.base(); // count alternate alleles in the best genotyping unsigned int alternateCount = 0; unsigned int alleleCount = 0; double alternateQualitySum = 0; double partialObservationCount = 0; double partialObservationQualitySum; // reference / alternate base counts by strand //map altCountBySample; //map altQualBySample; // het counts unsigned int hetReferenceObsCount = 0; unsigned int hetOtherObsCount = 0; unsigned int hetAlternateObsCount = 0; unsigned int hetAltSamples = 0; unsigned int homAltSamples = 0; unsigned int homRefSamples = 0; unsigned int refSampleObsCount = 0; // depth in hom-ref samples unsigned int altSampleObsCount = 0; // depth in samples with called alternates // unique alternate alleles / all alternate alleles in alt-associated samples unsigned int uniqueAllelesInAltSamples = 0; //unsigned int hetAllObsCount = hetOtherObsCount + hetAlternateObsCount + hetReferenceObsCount; unsigned int hetAllObsCount = 0; StrandBaseCounts baseCountsTotal; map baseCountsBySample; for (vector::iterator sampleName = sampleNames.begin(); sampleName != sampleNames.end(); ++sampleName) { GenotypeComboMap::iterator gc = comboMap.find(*sampleName); //cerr << "alternate count for " << altbase << " and " << *genotype << " is " << genotype->alleleCount(altbase) << endl; if (gc != comboMap.end()) { Genotype* genotype = gc->second->genotype; Sample& sample = *gc->second->sample; // check that we actually have observations for this sample unsigned int observationCount = sample.observationCount(); if (observationCount == 0) { continue; } alternateCount += genotype->alleleCount(altbase); alleleCount += genotype->ploidy; unsigned int altCount = sample.observationCount(altbase); unsigned int refCount = sample.observationCount(refbase); if (!genotype->homozygous) { // het case if (altCount > 0) { ++hetAltSamples; hetAllObsCount += observationCount; hetReferenceObsCount += refCount; hetOtherObsCount += observationCount - altCount; hetAlternateObsCount += altCount; altSampleObsCount += observationCount; uniqueAllelesInAltSamples += sample.size(); if (refCount > 0) { --uniqueAllelesInAltSamples; // ignore reference allele } } } else { if (altCount > 0) { ++homAltSamples; altSampleObsCount += observationCount; uniqueAllelesInAltSamples += sample.size(); if (refCount > 0) { --uniqueAllelesInAltSamples; // ignore reference allele } } else { ++homRefSamples; refSampleObsCount += observationCount; } } //altCountBySample[*sampleName] = altCount; //altQualBySample[*sampleName] = sample.qualSum(altbase); StrandBaseCounts baseCounts = sample.strandBaseCount(refbase, altbase); baseCountsBySample[*sampleName] = baseCounts; baseCountsTotal.forwardRef += baseCounts.forwardRef; baseCountsTotal.forwardAlt += baseCounts.forwardAlt; baseCountsTotal.reverseRef += baseCounts.reverseRef; baseCountsTotal.reverseAlt += baseCounts.reverseAlt; } } unsigned int altBasesLeft = 0; unsigned int altBasesRight = 0; unsigned int altReadsLeft = 0; unsigned int altReadsRight = 0; unsigned int altEndLeft = 0; unsigned int altEndRight = 0; unsigned int altmqsum = 0; unsigned int altproperPairs = 0; long double altReadMismatchSum = 0; long double altReadSNPSum = 0; long double altReadIndelSum = 0; unsigned int altObsCount = 0; map altObsBySequencingTechnology; // TODO we need a partial obs structure to annotate partial obs map >::iterator f = alleleGroups.find(altbase); if (f != alleleGroups.end()) { vector& alternateAlleles = alleleGroups.at(altbase); // TODO XXX XXX adjust to use partial observations altObsCount = alternateAlleles.size(); for (vector::iterator app = alternateAlleles.begin(); app != alternateAlleles.end(); ++app) { Allele& allele = **app; altReadMismatchSum += allele.readMismatchRate; altReadSNPSum += allele.readSNPRate; altReadIndelSum += allele.readIndelRate; // TODO: add altReadSoftClipRate (avg) if (allele.isProperPair) { ++altproperPairs; } if (!allele.sequencingTechnology.empty()) { ++altObsBySequencingTechnology[allele.sequencingTechnology]; } altBasesLeft += allele.basesLeft; altBasesRight += allele.basesRight; if (allele.basesLeft >= allele.basesRight) { altReadsLeft += 1; if (allele.strand == STRAND_FORWARD) { altEndLeft += 1; } else { altEndRight += 1; } } else { altReadsRight += 1; if (allele.strand == STRAND_FORWARD) { altEndRight += 1; } else { altEndLeft += 1; } } altmqsum += allele.mapQuality; } } long double altReadMismatchRate = (altObsCount == 0 ? 0 : altReadMismatchSum / altObsCount); long double altReadSNPRate = (altObsCount == 0 ? 0 : altReadSNPSum / altObsCount); long double altReadIndelRate = (altObsCount == 0 ? 0 : altReadIndelSum / altObsCount); //var.info["XAM"].push_back(convert(altReadMismatchRate)); //var.info["XAS"].push_back(convert(altReadSNPRate)); //var.info["XAI"].push_back(convert(altReadIndelRate)); // alt/ref ratios //var.info["ARM"].push_back(convert(refReadMismatchRate == 0 ? 0 : altReadMismatchRate / refReadMismatchRate)); //var.info["ARS"].push_back(convert(refReadSNPRate == 0 ? 0 : altReadSNPRate / refReadSNPRate)); //var.info["ARI"].push_back(convert(refReadIndelRate == 0 ? 0 : altReadIndelRate / refReadIndelRate)); //string refbase = parser->currentReferenceBase(); // positional information // CHROM POS ID REF ALT QUAL FILTER INFO FORMAT //out.setf(ios::fixed,ios::floatfield); //out.precision(5); var.info["AC"].push_back(convert(alternateCount)); var.info["AN"].clear(); var.info["AN"].push_back(convert(alleleCount)); // XXX hack... var.info["AF"].push_back(convert((alleleCount == 0) ? 0 : (double) alternateCount / (double) alleleCount)); var.info["AO"].push_back(convert(altObsCount)); var.info["PAO"].push_back(convert(samples.partialObservationCount(altbase))); var.info["QA"].push_back(convert(samples.qualSum(altbase))); var.info["PQA"].push_back(convert(samples.partialQualSum(altbase))); if (homRefSamples > 0 && hetAltSamples + homAltSamples > 0) { double altSampleAverageDepth = (double) altSampleObsCount / ( (double) hetAltSamples + (double) homAltSamples ); double refSampleAverageDepth = (double) refSampleObsCount / (double) homRefSamples; var.info["DPRA"].push_back(convert(altSampleAverageDepth / refSampleAverageDepth)); } else { var.info["DPRA"].push_back(convert(0)); } var.info["SRP"].clear(); // XXX hack var.info["SRF"].clear(); var.info["SRR"].clear(); var.info["SRF"].push_back(convert(baseCountsTotal.forwardRef)); var.info["SRR"].push_back(convert(baseCountsTotal.reverseRef)); var.info["SRP"].push_back(convert((refObsCount == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(baseCountsTotal.forwardRef, refObsCount, 0.5))))); var.info["SAF"].push_back(convert(baseCountsTotal.forwardAlt)); var.info["SAR"].push_back(convert(baseCountsTotal.reverseAlt)); var.info["SAP"].push_back(convert((altObsCount == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(baseCountsTotal.forwardAlt, altObsCount, 0.5))))); var.info["AB"].push_back(convert((hetAllObsCount == 0) ? 0 : nan2zero((double) hetAlternateObsCount / (double) hetAllObsCount ))); var.info["ABP"].push_back(convert((hetAllObsCount == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(hetAlternateObsCount, hetAllObsCount, 0.5))))); var.info["RUN"].push_back(convert(parser->homopolymerRunLeft(altbase) + 1 + parser->homopolymerRunRight(altbase))); var.info["MQM"].push_back(convert((altObsCount == 0) ? 0 : nan2zero((double) altmqsum / (double) altObsCount))); var.info["RPP"].push_back(convert((altObsCount == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(altReadsLeft, altReadsRight + altReadsLeft, 0.5))))); var.info["RPR"].push_back(convert(altReadsRight)); var.info["RPL"].push_back(convert(altReadsLeft)); var.info["EPP"].push_back(convert((altBasesLeft + altBasesRight == 0) ? 0 : nan2zero(ln2phred(hoeffdingln(altEndLeft, altEndLeft + altEndRight, 0.5))))); var.info["PAIRED"].push_back(convert((altObsCount == 0) ? 0 : nan2zero((double) altproperPairs / (double) altObsCount))); var.info["CIGAR"].push_back(adjustedCigar[altAllele.base()]); var.info["MEANALT"].push_back(convert((hetAltSamples + homAltSamples == 0) ? 0 : nan2zero((double) uniqueAllelesInAltSamples / (double) (hetAltSamples + homAltSamples)))); for (vector::iterator st = sequencingTechnologies.begin(); st != sequencingTechnologies.end(); ++st) { string& tech = *st; var.info["technology." + tech].push_back(convert((altObsCount == 0) ? 0 : nan2zero((double) altObsBySequencingTechnology[tech] / (double) altObsCount ))); } // allele class if (altAllele.type == ALLELE_DELETION) { var.info["TYPE"].push_back("del"); // what is the class of deletion // microsatellite repeat? // "novel"? // how large is the repeat, if there is one? } else if (altAllele.type == ALLELE_INSERTION) { var.info["TYPE"].push_back("ins"); } else if (altAllele.type == ALLELE_COMPLEX) { var.info["TYPE"].push_back("complex"); } else if (altAllele.type == ALLELE_SNP) { var.info["TYPE"].push_back("snp"); /* // CpG if (parser->isCpG(altbase)) { var.infoFlags["CpG"] = true; } */ } else if (altAllele.type == ALLELE_MNP) { var.info["TYPE"].push_back("mnp"); } else { /* cerr << "What is this?" << "type: " << altAllele.type << " " << "allele: " << altAllele << endl; */ } var.info["LEN"].push_back(convert(altAllele.length)); } // set up site-wide INFO tags, non-multiple // info variables // site-wide coverage int samplesWithData = 0; int refAlleleObservations = 0; for (vector::iterator sampleName = sampleNames.begin(); sampleName != sampleNames.end(); ++sampleName) { GenotypeComboMap::iterator gc = comboMap.find(*sampleName); //cerr << "alternate count for " << altbase << " and " << *genotype << " is " << genotype->alleleCount(altbase) << endl; if (gc != comboMap.end()) { Genotype* genotype = gc->second->genotype; Sample& sample = *gc->second->sample; //refAlleleObservations += sample.observationCount(refbase); refAlleleObservations += sample.observationCount(refbase); ++samplesWithData; } } var.info["NS"].push_back(convert(samplesWithData)); var.info["DP"].push_back(convert(coverage)); var.info["RO"].push_back(convert(refAlleleObservations)); var.info["PRO"].push_back(convert(samples.partialObservationCount(refbase))); var.info["QR"].push_back(convert(samples.qualSum(refbase))); var.info["PQR"].push_back(convert(samples.partialQualSum(refbase))); // tally partial observations to get a mean coverage per bp of reference int haplotypeLength = refbase.size(); int basesInObservations = 0; for (map >::iterator g = alleleGroups.begin(); g != alleleGroups.end(); ++g) { for (vector::iterator a = g->second.begin(); a != g->second.end(); ++a) { basesInObservations += (*a)->alternateSequence.size(); } } for (map >::iterator p = partialObservationSupport.begin(); p != partialObservationSupport.end(); ++p) { basesInObservations += p->first->alternateSequence.size(); } double depthPerBase = (double) basesInObservations / (double) haplotypeLength; var.info["DPB"].push_back(convert(depthPerBase)); // number of alternate alleles var.info["NUMALT"].push_back(convert(altAlleles.size())); if (parameters.showReferenceRepeats && !repeats.empty()) { stringstream repeatsstr; for (map::iterator c = repeats.begin(); c != repeats.end(); ++c) { repeatsstr << c->first << ":" << c->second << "|"; } string repeatstr = repeatsstr.str(); TRY { repeatstr = repeatstr.substr(0, repeatstr.size() - 1); } CATCH; var.info["REPEAT"].clear(); var.info["REPEAT"].push_back(repeatstr); } var.info["ODDS"].push_back(convert(bestComboOddsRatio)); // samples bool outputExplicitGenotypeLikelihoods = false; bool outputAnyGenotypeLikelihoods = true; // for ordering GLs // ordering is F(j/k) = (k*(k+1)/2)+j. map > vcfGenotypeOrder; for (map >::iterator gtg = genotypesByPloidy.begin(); gtg != genotypesByPloidy.end(); ++gtg) { int groupPloidy = gtg->first; vector& genotypes = gtg->second; for (vector::iterator g = genotypes.begin(); g != genotypes.end(); ++g) { Genotype* genotypePtr = &*g; Genotype& genotype = *g; string genotypeStr = genotype.str(); // only provide output for genotypes for which we have data bool fullySpecified = true; vector gtspec; genotype.relativeGenotype(gtspec, refbase, altAlleles); // null allele case handled by the fact that we don't have any null alternate alleles for (vector::iterator n = gtspec.begin(); n != gtspec.end(); ++n) { if (*n < 0) { fullySpecified = false; break; } } if (fullySpecified) { if (groupPloidy == 2) { int j = gtspec.front(); int k = gtspec.back(); vcfGenotypeOrder[groupPloidy][genotypeStr] = (k * (k + 1) / 2) + j; } else if (groupPloidy == 1) { vcfGenotypeOrder[groupPloidy][genotypeStr] = gtspec.front(); } else { outputAnyGenotypeLikelihoods = false; // XXX prevents output of GLs for polyploid data outputExplicitGenotypeLikelihoods = true; } } } } // get the best genotypes from the combos, and set the output GTs and GQs using them for (vector::iterator sn = sampleNames.begin(); sn != sampleNames.end(); ++sn) { string& sampleName = *sn; GenotypeComboMap::iterator gc = comboMap.find(sampleName); Results::iterator s = find(sampleName); map >& sampleOutput = var.samples[sampleName]; if (gc != comboMap.end() && s != end()) { Sample& sample = *gc->second->sample; Result& sampleLikelihoods = s->second; Genotype* genotype = gc->second->genotype; if (sample.observationCount() == 0) { continue; } sampleOutput["GT"].push_back(genotype->relativeGenotype(refbase, altAlleles)); if (parameters.calculateMarginals) { double val = nan2zero(big2phred((BigFloat)1 - big_exp(sampleLikelihoods.front().marginal))); if (parameters.strictVCF) sampleOutput["GQ"].push_back(convert(int(round(val)))); else sampleOutput["GQ"].push_back(convert(val)); } sampleOutput["DP"].push_back(convert(sample.observationCount())); sampleOutput["AD"].push_back(convert(sample.observationCount(refbase))); sampleOutput["RO"].push_back(convert(sample.observationCount(refbase))); sampleOutput["QR"].push_back(convert(sample.qualSum(refbase))); for (vector::iterator aa = altAlleles.begin(); aa != altAlleles.end(); ++aa) { Allele& altAllele = *aa; string altbase = altAllele.base(); sampleOutput["AO"].push_back(convert(sample.observationCount(altbase))); sampleOutput["AD"].push_back(convert(sample.observationCount(altbase))); sampleOutput["QA"].push_back(convert(sample.qualSum(altbase))); } if (outputAnyGenotypeLikelihoods && !parameters.excludeUnobservedGenotypes && !parameters.excludePartiallyObservedGenotypes) { // get data likelihoods for present genotypes, none if we have excluded genotypes from data likelihood calculations if (outputExplicitGenotypeLikelihoods) { if (var.format.back() != "GLE") { var.format.push_back("GLE"); } map genotypeLikelihoodsExplicit; for (Result::iterator g = sampleLikelihoods.begin(); g != sampleLikelihoods.end(); ++g) { if (g->genotype->hasNullAllele()) { // if the genotype has null (unspecified) alleles, find // the fully specified genotypes it can match with. vector nullmatchgts = g->genotype->nullMatchingGenotypes(genotypesByPloidy[g->genotype->ploidy]); // the gls for these will be the same, so the gl for // this genotype can be used for all of them. these // are the genotypes which the sample does not have, // but for which one allele or no alleles match for (vector::iterator n = nullmatchgts.begin(); n != nullmatchgts.end(); ++n) { genotypeLikelihoodsExplicit[(*n)->relativeGenotype(refbase, altAlleles)] = convert(ln2log10(g->prob)); } } else { // otherwise, we are well-specified, and only one // genotype should match genotypeLikelihoodsExplicit[g->genotype->relativeGenotype(refbase, altAlleles)] = convert(ln2log10(g->prob)); } } vector datalikelihoods; for (map::iterator gle = genotypeLikelihoodsExplicit.begin(); gle != genotypeLikelihoodsExplicit.end(); ++gle) { datalikelihoods.push_back(gle->first + "^" + gle->second); } sampleOutput["GLE"].push_back(join(datalikelihoods, "|")); } else { if (var.format.back() != "GL") { var.format.push_back("GL"); } map genotypeLikelihoods; map genotypeLikelihoodsOutput; for (Result::iterator g = sampleLikelihoods.begin(); g != sampleLikelihoods.end(); ++g) { if (g->genotype->hasNullAllele()) { // if the genotype has null (unspecified) alleles, find // the fully specified genotypes it can match with. vector nullmatchgts = g->genotype->nullMatchingGenotypes(genotypesByPloidy[g->genotype->ploidy]); // the gls for these will be the same, so the gl for // this genotype can be used for all of them. these // are the genotypes which the sample does not have, // but for which one allele or no alleles match for (vector::iterator n = nullmatchgts.begin(); n != nullmatchgts.end(); ++n) { map::iterator o = vcfGenotypeOrder[(*n)->ploidy].find((*n)->str()); if (o != vcfGenotypeOrder[(*n)->ploidy].end()) { genotypeLikelihoods[o->second] = ln2log10(g->prob); } } } else { // otherwise, we are well-specified, and only one // genotype should match map::iterator o = vcfGenotypeOrder[g->genotype->ploidy].find(g->genotype->str()); if (o != vcfGenotypeOrder[g->genotype->ploidy].end()) { genotypeLikelihoods[o->second] = ln2log10(g->prob); } } } // normalize GLs to 0 max using division by max long double minGL = 0; for (map::iterator g = genotypeLikelihoods.begin(); g != genotypeLikelihoods.end(); ++g) { if (g->second < minGL) minGL = g->second; } long double maxGL = minGL; for (map::iterator g = genotypeLikelihoods.begin(); g != genotypeLikelihoods.end(); ++g) { if (g->second > maxGL) maxGL = g->second; } if (parameters.limitGL == 0) { for (map::iterator g = genotypeLikelihoods.begin(); g != genotypeLikelihoods.end(); ++g) { genotypeLikelihoodsOutput[g->first] = convert(g->second-maxGL); } } else { for (map::iterator g = genotypeLikelihoods.begin(); g != genotypeLikelihoods.end(); ++g) { genotypeLikelihoodsOutput[g->first] = convert( max((long double) + parameters.limitGL, (g->second-maxGL)) ); } } vector& datalikelihoods = sampleOutput["GL"]; // output is sorted by map for (map::iterator gl = genotypeLikelihoodsOutput.begin(); gl != genotypeLikelihoodsOutput.end(); ++gl) { datalikelihoods.push_back(gl->second); } } } } } return var; } vcflib::Variant& Results::gvcf( vcflib::Variant& var, NonCalls& nonCalls, AlleleParser* parser) { // what is the first position in the nonCalls? pair start = nonCalls.firstPos(); const string& startChrom = start.first; long startPos = start.second; // startPos and endPos are zero-based, half-open -- [startPos,endPos) // what is the current position? nb: can't be on a different chrom long endPos; if (startChrom != parser->currentSequenceName) { endPos = parser->reference.sequenceLength(startChrom); } else { endPos = parser->currentPosition; } long numSites = endPos - startPos; if(numSites <= 0){ std::cerr << "Hit end of chr, but still attempted to call location !!! \n Breaking\n"; exit(1); }; // set up site call var.ref = parser->referenceSubstr(startPos, 1); var.alt.push_back("<*>"); var.sequenceName = parser->currentSequenceName; var.position = startPos + 1; // output text field is one-based var.id = "."; var.filter = "."; // TODO change to actual quality var.quality = 0; // set up format string var.format.clear(); var.format.push_back("GQ"); var.format.push_back("DP"); var.format.push_back("MIN_DP"); var.format.push_back("QR"); var.format.push_back("RO"); var.format.push_back("QA"); var.format.push_back("AO"); NonCall total = nonCalls.aggregateAll(); /* This resets min depth to zero if nonCalls is less than numSites. */ int minDepth = (numSites != total.nCount) ? 0 : total.minDepth; var.info["DP"].push_back(convert((total.refCount+total.altCount) / numSites)); var.info["MIN_DP"].push_back(convert(minDepth)); // The text END field is one-based, inclusive. We proudly conflate this // with our zero-based, exclusive endPos. var.info["END"].push_back(convert(endPos)); // genotype quality is 1- p(polymorphic) map perSample; nonCalls.aggregatePerSample(perSample); // iterate through the samples and aggregate information about them for (vector::const_iterator s = parser->sampleList.begin(); s != parser->sampleList.end(); ++s) { const string& sampleName = *s; const NonCall& nc = perSample[sampleName]; map >& sampleOutput = var.samples[sampleName]; long double qual = nc.reflnQ - nc.altlnQ; sampleOutput["GQ"].push_back(convert(ln2phred(qual))); /* This resets min depth to zero if nonCalls is less than numSites. */ int minDepth = (numSites != nc.nCount) ? 0 : nc.minDepth; sampleOutput["DP"].push_back(convert((nc.refCount+nc.altCount) / numSites)); sampleOutput["MIN_DP"].push_back(convert(minDepth)); sampleOutput["QR"].push_back(convert(llrintl(ln2phred(nc.reflnQ)))); sampleOutput["RO"].push_back(convert((nc.refCount/numSites))); sampleOutput["QA"].push_back(convert(llrintl(ln2phred(nc.altlnQ)))); sampleOutput["AO"].push_back(convert((nc.altCount/numSites))); } return var; } freebayes-1.3.6/src/ResultData.h000066400000000000000000000041621417247743000165120ustar00rootroot00000000000000#ifndef FREEBAYES_RESULTDATA_H #define FREEBAYES_RESULTDATA_H #include #include #include #include "Genotype.h" #include "Allele.h" #include "Utility.h" #include "AlleleParser.h" #include "Variant.h" #include "version_git.h" #include "Result.h" #include "NonCall.h" using namespace std; // for sorting data likelihoods class DataLikelihoodCompare { public: bool operator()(const pair& a, const pair& b) { return a.second > b.second; } }; // maps sample names to results class Results : public map { public: void update(SampleDataLikelihoods& likelihoods) { for (SampleDataLikelihoods::iterator s = likelihoods.begin(); s != likelihoods.end(); ++s) { vector& sdls = *s; string& name = sdls.front().name; Result& result = (*this)[name]; result.clear(); for (vector::iterator s = sdls.begin(); s != sdls.end(); ++s) { result.push_back(*s); } } } vcflib::Variant& vcf( vcflib::Variant& var, // variant to update BigFloat pHom, long double bestComboOddsRatio, //long double alleleSamplingProb, Samples& samples, string refbase, vector& altAlleles, map repeats, int genotypingIterations, vector& sampleNames, int coverage, GenotypeCombo& genotypeCombo, map >& alleleGroups, map >& partialObservationGroups, map >& partialSupport, map >& genotypesByPloidy, vector& sequencingTechnologies, AlleleParser* parser); vcflib::Variant& gvcf( vcflib::Variant& var, NonCalls& noncalls, AlleleParser* parser); }; string dateStr(void); void vcfHeader(ostream& out, string referenceFileName, vector& samples, Parameters& parameters, vector& sequencingTechnologies); #endif freebayes-1.3.6/src/Sample.cpp000066400000000000000000000371621417247743000162240ustar00rootroot00000000000000#include "Sample.h" // sample tracking and allele sorting // the number of observations for this allele int Sample::observationCount(Allele& allele) { return observationCount(allele.currentBase); } int Sample::observationCountInclPartials(void) { return observationCount() + partialObservationCount(); } double Sample::observationCountInclPartials(Allele& allele) { return observationCountInclPartials(allele.currentBase); } double Sample::partialObservationCount(Allele& allele) { return partialObservationCount(allele.currentBase); } // the number of observations for this base int Sample::observationCount(const string& base) { Sample::iterator g = find(base); if (g != end()) return g->second.size(); else return 0; } int Sample::partialObservationCount(void) { return reversePartials.size(); } double Sample::partialObservationCount(const string& base) { double scaledPartialCount = 0; map >::iterator g = partialSupport.find(base); if (g != partialSupport.end()) { vector& supportingObs = g->second; for (vector::iterator a = supportingObs.begin(); a != supportingObs.end(); ++a) { scaledPartialCount += (double) 1 / (double) reversePartials[*a].size(); } } return scaledPartialCount; } double Sample::observationCountInclPartials(const string& base) { return observationCount(base) + partialObservationCount(base); } // the total number of observations int Sample::observationCount(void) { int count = 0; for (Sample::iterator g = begin(); g != end(); ++g) { count += g->second.size(); } return count; } int Sample::qualSum(Allele& allele) { return qualSum(allele.currentBase); } int Sample::qualSum(const string& base) { Sample::iterator g = find(base); int qsum = 0; if (g != end()) { vector& alleles = g->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { qsum += (*a)->quality; } } return qsum; } double Sample::partialQualSum(Allele& allele) { return partialQualSum(allele.currentBase); } double Sample::partialQualSum(const string& base) { Sample::iterator g = partialSupport.find(base); double qsum = 0; if (g != partialSupport.end()) { vector& alleles = g->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { qsum += (double) (*a)->quality / (double) reversePartials[*a].size(); } } return qsum; } // sample tracking and allele sorting // the number of observations for this allele int Samples::observationCount(Allele& allele) { return observationCount(allele.currentBase); } double Samples::observationCountInclPartials(Allele& allele) { return observationCountInclPartials(allele.currentBase); } double Samples::partialObservationCount(Allele& allele) { return partialObservationCount(allele.currentBase); } // the number of observations for this base int Samples::observationCount(const string& base) { int c = 0; for (Samples::iterator s = begin(); s != end(); ++s) { c += s->second.observationCount(base); } return c; } double Samples::partialObservationCount(const string& base) { double c = 0; for (Samples::iterator s = begin(); s != end(); ++s) { c += s->second.partialObservationCount(base); } return c; } double Samples::observationCountInclPartials(const string& base) { return observationCount(base) + partialObservationCount(base); } // the total number of observations int Samples::observationCount(void) { int c = 0; for (Samples::iterator s = begin(); s != end(); ++s) { c += s->second.observationCount(); } return c; } double Samples::observationCountInclPartials(void) { double c = 0; for (Samples::iterator s = begin(); s != end(); ++s) { c += s->second.observationCountInclPartials(); } return c; } int Samples::qualSum(Allele& allele) { return qualSum(allele.currentBase); } int Samples::qualSum(const string& base) { int q = 0; for (Samples::iterator s = begin(); s != end(); ++s) { q += s->second.qualSum(base); } return q; } double Samples::partialQualSum(Allele& allele) { return partialQualSum(allele.currentBase); } double Samples::partialQualSum(const string& base) { double q = 0; for (Samples::iterator s = begin(); s != end(); ++s) { q += s->second.partialQualSum(base); } return q; } map Samples::estimatedAlleleFrequencies(void) { map qualsums; for (Samples::iterator s = begin(); s != end(); ++s) { Sample& sample = s->second; for (Sample::iterator o = sample.begin(); o != sample.end(); ++o) { const string& base = o->first; qualsums[base] += sample.qualSum(base); } } long double total = 0; for (map::iterator q = qualsums.begin(); q != qualsums.end(); ++q) { total += q->second; } map freqs; for (map::iterator q = qualsums.begin(); q != qualsums.end(); ++q) { freqs[q->first] = q->second / total; //cerr << "estimated frequency " << q->first << " " << freqs[q->first] << endl; } return freqs; } // puts alleles into the right bins if they have changed their base (as // occurs in the case of reference alleles) void Sample::sortReferenceAlleles(void) { for (Sample::iterator g = begin(); g != end(); ++g) { const string& groupBase = g->first; vector& alleles = g->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { const string& base = (*a)->currentBase; if (base != groupBase) { Sample::iterator g = find(base); if (g != end()) { g->second.push_back(*a); } else { vector alleles; alleles.push_back(*a); insert(begin(), make_pair(base, alleles)); } *a = NULL; } } alleles.erase(remove(alleles.begin(), alleles.end(), (Allele*)NULL), alleles.end()); } } StrandBaseCounts Sample::strandBaseCount(string refbase, string altbase) { int forwardRef = 0; int reverseRef = 0; int forwardAlt = 0; int reverseAlt = 0; for (Sample::iterator s = begin(); s != end(); ++s) { vector& alleles = s->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { string base = (*a)->currentBase; AlleleStrand strand = (*a)->strand; if (base == refbase) { if (strand == STRAND_FORWARD) ++forwardRef; else if (strand == STRAND_REVERSE) ++reverseRef; } else if (base == altbase) { if (strand == STRAND_FORWARD) ++forwardAlt; else if (strand == STRAND_REVERSE) ++reverseAlt; } } } return StrandBaseCounts(forwardRef, forwardAlt, reverseRef, reverseAlt); } int Sample::baseCount(string base, AlleleStrand strand) { int count = 0; for (Sample::iterator g = begin(); g != end(); ++g) { vector& alleles = g->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { if ((*a)->currentBase == base && (*a)->strand == strand) ++count; } } return count; } string Sample::tojson(void) { stringstream out; out << "["; bool first = true; for (map >::iterator g = this->begin(); g != this->end(); ++g) { vector& alleles = g->second; for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { if (!first) { out << ","; } else { first = false; } out << (*a)->tojson(); } } out << "]"; return out.str(); } void groupAlleles(Samples& samples, map >& alleleGroups) { for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { Sample& sample = s->second; for (Sample::iterator g = sample.begin(); g != sample.end(); ++g) { const string& base = g->first; const vector& alleles = g->second; vector& group = alleleGroups[base]; group.reserve(group.size() + distance(alleles.begin(), alleles.end())); group.insert(group.end(), alleles.begin(), alleles.end()); } } } bool sufficientAlternateObservations(Samples& samples, int mincount, float minfraction) { int totalAlternateCount = 0; int totalReferenceCount = 0; for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { //cerr << s->first << endl; Sample& sample = s->second; int alternateCount = 0; int observationCount = 0; for (Sample::iterator group = sample.begin(); group != sample.end(); ++group) { const string& base = group->first; //cerr << base << endl; vector& alleles = group->second; //cerr << alleles.size() << endl; if (alleles.size() == 0) continue; if (alleles.front()->type != ALLELE_REFERENCE) { alternateCount += alleles.size(); } else { totalReferenceCount += alleles.size(); } observationCount += alleles.size(); } //cerr << "alternateCount " << alternateCount << " ratio " << ((float) alternateCount / (float) observationCount) << endl; if (alternateCount >= mincount && ((float) alternateCount / (float) observationCount) >= minfraction) return true; totalAlternateCount += alternateCount; } // always analyze if we have more alternate observations than reference observations // this is meant to catch the case in which the reference is the rare allele // it will probably also catch cases in which we have very low coverage if (totalReferenceCount < totalAlternateCount) { return true; } return false; } int countAlleles(Samples& samples) { int count = 0; for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { Sample& sample = s->second; for (Sample::iterator sg = sample.begin(); sg != sample.end(); ++sg) { count += sg->second.size(); } } return count; } ostream& operator<<(ostream& out, Sample& sample) { for (Sample::iterator s = sample.begin(); s != sample.end(); ++s) { out << s->first << " #" << s->second.size() << endl << s->second << endl; } return out; } void Samples::assignPartialSupport(vector& alleles, vector& partialObservations, map >& partialObservationGroups, map >& partialObservationSupport, unsigned long haplotypeStart, int haplotypeLength) { // clean up results of any previous calls to this function clearPartialObservations(); for (vector::iterator a = alleles.begin(); a != alleles.end(); ++a) { Allele& allele = *a; //string& base = allele.currentBase; // hacks here string& aseq = allele.alternateSequence; //cerr << "alternate, seeking partial support " << aseq << endl // << "allele: " << allele << endl; // construct pseudo-sequence for (vector::iterator p = partialObservations.begin(); p != partialObservations.end(); ++p) { Allele& partial = **p; string pseq = partial.alternateSequence; bool same = false; // if the partial could support the alternate if we consider "reference-matching" // sequence beyond the haplotype window, add it to the comparison if (partial.position == haplotypeStart && partial.referenceLength == haplotypeLength) { if (pseq.size() + partial.basesLeft <= aseq.size()) { pseq = partial.read5p(); } else if (pseq.size() + partial.basesRight <= aseq.size()) { pseq = partial.read3p(); } } // otherwise, we should be fine to go with the seqs // basically, this is the partial reference coordinate-matching case //cerr << partial << " bp l/r " << partial.basesLeft << "/" << partial.basesRight // << " szes , " << pseq.size() << " vs " << aseq.size() << endl; if (!pseq.empty() && aseq.size() >= pseq.size() && ((partial.alternateSequence.size() + partial.basesRight <= aseq.size() && (aseq.substr(0, pseq.size()) == pseq)) || (partial.alternateSequence.size() + partial.basesLeft <= aseq.size() && (aseq.substr(aseq.size()-pseq.size()) == pseq)))) { // dAY's du saem partialObservationGroups[allele.currentBase].push_back(*p); partialObservationSupport[*p].insert(&*a); //cerr << "partial support of " << *a << " by " << *p << endl; same = true; } } } for (vector::iterator p = partialObservations.begin(); p != partialObservations.end(); ++p) { // get the sample Allele& partial = **p; Samples::iterator siter = find(partial.sampleID); if (siter == end()) { continue; } Sample& sample = siter->second; map >::iterator sup = partialObservationSupport.find(*p); if (sup != partialObservationSupport.end()) { set& supported = sup->second; for (set::iterator s = supported.begin(); s != supported.end(); ++s) { sample.partialSupport[(*s)->currentBase].push_back(*p); sample.supportedAlleles.insert((*s)->currentBase); } if (!supported.empty()) { sample.reversePartials[*p] = supported; } } //sample.partialObservations.push_back(*p); } } bool Sample::observationSupports(Allele* obs, Allele* allele) { if (obs->currentBase == allele->currentBase) { return true; } else { map >::iterator p = reversePartials.find(obs); if (p != reversePartials.end()) { set& supports = p->second; if (supports.find(allele) != supports.end()) { return true; } } return false; } } void Samples::clearFullObservations(void) { for (Samples::iterator s = begin(); s != end(); ++s) { s->second.clear(); } } void Samples::clearPartialObservations(void) { for (Samples::iterator s = begin(); s != end(); ++s) { s->second.clearPartialObservations(); } } void Sample::clearPartialObservations(void) { supportedAlleles.clear(); for (Sample::iterator a = begin(); a != end(); ++a) supportedAlleles.insert(a->first); partialSupport.clear(); reversePartials.clear(); } void Sample::setSupportedAlleles(void) { for (Sample::iterator a = begin(); a != end(); ++a) supportedAlleles.insert(a->first); } void Samples::setSupportedAlleles(void) { for (Samples::iterator s = begin(); s != end(); ++s) s->second.setSupportedAlleles(); } freebayes-1.3.6/src/Sample.h000066400000000000000000000100411417247743000156540ustar00rootroot00000000000000#ifndef FREEBAYES_SAMPLE_H #define FREEBAYES_SAMPLE_H #include #include #include #include #include "Utility.h" #include "Allele.h" using namespace std; class StrandBaseCounts { public: int forwardRef; int forwardAlt; int reverseRef; int reverseAlt; StrandBaseCounts(void) : forwardRef(0), forwardAlt(0), reverseRef(0), reverseAlt(0) { } StrandBaseCounts(int fr, int fa, int rr, int ra) : forwardRef(fr) , forwardAlt(fa) , reverseRef(rr) , reverseAlt(ra) { } }; // sample tracking and allele sorting class Sample : public map > { friend ostream& operator<<(ostream& out, Sample& sample); public: // includes both fully and partially-supported observations after adding partial obs set supportedAlleles; void setSupportedAlleles(void); // partial support for alleles, such as for observations that partially overlap the calling window map > partialSupport; // for fast scaling of qualities for partial supports map > reversePartials; // clear the above void clearPartialObservations(void); // set of partial observations (keys of the above map) cached for faster GL calculation //vector partialObservations; // if the observation (partial or otherwise) supports the allele bool observationSupports(Allele* obs, Allele* allele); // the number of observations for this allele int observationCount(Allele& allele); double observationCountInclPartials(Allele& allele); double partialObservationCount(Allele& allele); // the number of observations for this base int observationCount(const string& base); double observationCountInclPartials(const string& base); double partialObservationCount(const string& base); int partialObservationCount(void); // the total number of observations int observationCount(void); int observationCountInclPartials(void); // sum of quality for the given allele // (includes partial support) int qualSum(Allele& allele); int qualSum(const string& base); double partialQualSum(Allele& allele); double partialQualSum(const string& base); // puts alleles into the right bins if they have changed their base (as // occurs in the case of reference alleles) void sortReferenceAlleles(void); StrandBaseCounts strandBaseCount(string refbase, string altbase); int baseCount(string base, AlleleStrand strand); string tojson(void); }; class Samples : public map { public: map estimatedAlleleFrequencies(void); void assignPartialSupport(vector& alleles, vector& partialObservations, map >& partialObservationGroups, map >& partialObservationSupport, unsigned long haplotypeStart, int haplotypeLength); int observationCount(void); double observationCountInclPartials(void); int observationCount(Allele& allele); double observationCountInclPartials(Allele& allele); double partialObservationCount(Allele& allele); int observationCount(const string& base); double observationCountInclPartials(const string& base); double partialObservationCount(const string& base); int qualSum(Allele& allele); int qualSum(const string& base); double partialQualSum(Allele& allele); double partialQualSum(const string& base); void clearFullObservations(void); void clearPartialObservations(void); void setSupportedAlleles(void); }; int countAlleles(Samples& samples); // using this one... void groupAlleles(Samples& samples, map >& alleleGroups); // filters... maybe move to its own file? bool sufficientAlternateObservations(Samples& observations, int mincount, float minfraction); #endif freebayes-1.3.6/src/SegfaultHandler.cpp000066400000000000000000000006611417247743000200450ustar00rootroot00000000000000#include "SegfaultHandler.h" // from http://stackoverflow.com/a/77336/238609 // many thanks to tgamblin void segfaultHandler(int sig) { #ifndef __CYGWIN__ void *array[10]; size_t size; // get void*'s for all entries on the stack size = backtrace(array, 10); // print out all the frames to stderr fprintf(stderr, "Error: signal %d:\n", sig); backtrace_symbols_fd(array, size, 2); #endif exit(1); } freebayes-1.3.6/src/SegfaultHandler.h000066400000000000000000000003341417247743000175070ustar00rootroot00000000000000#ifndef FREEBAYES_SEGFAULTHANDLER_H #define FREEBAYES_SEGFAULTHANDLER_H #include #ifndef __CYGWIN__ #include #endif #include #include void segfaultHandler(int sig); #endif freebayes-1.3.6/src/Sum.h000066400000000000000000000004301417247743000152000ustar00rootroot00000000000000#ifndef FREEBAYES_SUM_H #define FREEBAYES_SUM_H #include template T sum(const std::vector& v) { T result = 0; for (typename std::vector::const_iterator i = v.begin(); i != v.end(); ++i) { result += *i; } return result; } #endif freebayes-1.3.6/src/TryCatch.h000066400000000000000000000007301417247743000161600ustar00rootroot00000000000000#ifndef FREEBAYES_TRYCATCH_H #define FREEBAYES_TRYCATCH_H #include // out_of_range exception #include // abort // macros which improve our error handling #ifndef TRY #define TRY try #endif #ifndef CATCH #define CATCH \ catch (const std::out_of_range& outOfRange) { \ cerr << "exception: " << outOfRange.what() \ << " at line " << __LINE__ \ << " in file " << __FILE__ << endl; \ abort(); \ } #endif #endif freebayes-1.3.6/src/Utility.cpp000066400000000000000000111424031417247743000164430ustar00rootroot00000000000000// utility functions // #include "Utility.h" #include "Sum.h" #include "Product.h" #define PHRED_MAX 50000.0 // max Phred seems to be about 43015 (?), could be an underflow bug... using namespace std; short qualityChar2ShortInt(char c) { return static_cast(c) - 33; } long double qualityChar2LongDouble(char c) { return static_cast(c) - 33; } long double lnqualityChar2ShortInt(char c) { return log(static_cast(c) - 33); } char qualityInt2Char(short i) { return static_cast(i + 33); } long double ln2log10(long double prob) { return M_LOG10E * prob; } long double log102ln(long double prob) { return M_LN10 * prob; } long double phred2ln(int qual) { return M_LN10 * qual * -.1; } long double ln2phred(long double prob) { return -10 * M_LOG10E * prob; } long double phred2float(int qual) { return pow(10, qual * -.1); } long double float2phred(long double prob) { if (prob == 1) return PHRED_MAX; // guards against "-0" long double p = -10 * (long double) log10(prob); if (p < 0 || p > PHRED_MAX) // int overflow guard return PHRED_MAX; else return p; } long double big2phred(const BigFloat& prob) { return -10 * (long double) (ttmath::Log(prob, (BigFloat)10)).ToDouble(); } long double nan2zero(long double x) { if (x != x) { return 0; } else { return x; } } long double powln(long double m, int n) { return m * n; } // the probability that we have a completely true vector of qualities long double jointQuality(const std::vector& quals) { std::vector probs; for (int i = 0; i qualities(const std::string& qualstr) { std::vector quals; for (int i=0; i& qualities) { short m = 0; for (vector::const_iterator q = qualities.begin(); q != qualities.end(); ++q) { if (*q < m) m = *q; } return m; } // crudely averages quality scores in phred space long double averageQuality(const std::string& qualstr) { long double qual = 0; //(long double) *max_element(quals.begin(), quals.end()); for (string::const_iterator q = qualstr.begin(); q != qualstr.end(); ++q) qual += qualityChar2LongDouble(*q); return qual / qualstr.size(); } long double averageQuality(const vector& qualities) { long double qual = 0; for (vector::const_iterator q = qualities.begin(); q != qualities.end(); ++q) { qual += *q; } return qual / qualities.size(); } bool stringInVector(string item, vector items) { for (vector::iterator i = items.begin(); i != items.end(); ++i) { if (item == *i) { return true; } } return false; } bool allATGC(string& s) { for (string::iterator c = s.begin(); c != s.end(); ++c) { char b = *c; if (b != 'A' && b != 'T' && b != 'G' && b != 'C') { return false; } } return true; } int upper(int c) { return toupper((unsigned char) c); } string uppercase(string s) { transform(s.begin(), s.end(), s.begin(), upper); return s; } string strip(string const& str, char const* separators) { string::size_type const first = str.find_first_not_of(separators); return (first == string::npos) ? string() : str.substr(first, str.find_last_not_of(separators) - first + 1); } int binomialCoefficient(int n, int k) { int i = 1; int result = n - k + i++; while (i <= k) { result *= (n - k + i) / i; ++i; } return result; } // k successes in n trials with prob of success p long double binomialProb(int k, int n, long double p) { return factorial(n) / (factorial(k) * factorial(n - k)) * pow(p, k) * pow(1 - p, n - k); } long double impl_binomialProbln(int k, int n, long double p) { return factorialln(n) - (factorialln(k) + factorialln(n - k)) + powln(log(p), k) + powln(log(1 - p), n - k); } long double binomialCoefficientLn(int k, int n) { return factorialln(n) - (factorialln(k) + factorialln(n - k)); } BinomialCache binomialCache; long double binomialProbln(int k, int n, long double p) { return binomialCache.binomialProbln(k, n, p); } /* long double probability(int k, int n, long double p) { int n = n - k; int m = k; long double q = 1 - p; long double temp = lgammal(m + n + 1.0); temp -= lgammal(n + 1.0) + lgammal(m + 1.0); temp += m*log(p) + n*log(q); return temp; } */ long double poissonpln(int observed, int expected) { return ((log(expected) * observed) - expected) - factorialln(observed); } long double poissonp(int observed, int expected) { return (double) pow((double) expected, (double) observed) * (double) pow(M_E, (double) -expected) / factorial(observed); } // given the expected number of events is the max of a and b // what is the probability that we might observe less than the observed? long double poissonPvalLn(int a, int b) { int expected, observed; if (a > b) { expected = a; observed = b; } else { expected = b; observed = a; } vector probs; for (int i = 0; i < observed; ++i) { probs.push_back(poissonpln(i, expected)); } return logsumexp_probs(probs); } long double gammaln( long double x ) { long double cofactors[] = { 76.18009173, -86.50532033, 24.01409822, -1.231739516, 0.120858003E-2, -0.536382E-5 }; long double x1 = x - 1.0; long double tmp = x1 + 5.5; tmp -= (x1 + 0.5) * log(tmp); long double ser = 1.0; for (int j=0; j<=5; j++) { x1 += 1.0; ser += cofactors[j]/x1; } long double y = (-1.0 * tmp + log(2.50662827465 * ser)); return y; } long double factorial( int n ) { if (n < 0) { return (long double)0.0; } else if (n == 0) { return (long double)1.0; } else { return exp(gammaln(n + 1.0)); } } FactorialCache factorialCache; /* long double factorialln(int n) { return factorialCache.factorialln(n); } */ long double impl_factorialln( int n ) { if (n < 0) { return (long double)-1.0; } else if (n == 0) { return (long double)0.0; } else { return gammaln(n + 1.0); } } long double cofactor( int n, int i ) { if ((n < 0) || (i < 0) || (n < i)) { return (long double)0.0; } else if (n == i) { return (long double)1.0; } else { return exp(gammaln(n + 1.0) - gammaln(i + 1.0) - gammaln(n-i + 1.0)); } } long double cofactorln( int n, int i ) { if ((n < 0) || (i < 0) || (n < i)) { return (long double)-1.0; } else if (n == i) { return (long double)0.0; } else { return gammaln(n + 1.0) - gammaln(i + 1.0) - gammaln(n-i + 1.0); } } // prevent underflows by returning exp(LDBL_MIN_EXP) if exponentiation will produce an underflow long double safe_exp(long double ln) { if (ln < LDBL_MIN_EXP) { // -16381 return LDBL_MIN; // 3.3621e-4932 } else { return exp(ln); } } BigFloat big_exp(long double ln) { BigFloat x, result; x.FromDouble(ln); result = ttmath::Exp(x); return result; } // 'safe' log summation for probabilities long double logsumexp_probs(const vector& lnv) { vector::const_iterator i = lnv.begin(); long double maxN = *i; ++i; for (; i != lnv.end(); ++i) { if (*i > maxN) maxN = *i; } BigFloat sum = 0; for (vector::const_iterator i = lnv.begin(); i != lnv.end(); ++i) { sum += big_exp(*i - maxN); } BigFloat maxNb; maxNb.FromDouble(maxN); BigFloat bigResult = maxNb + ttmath::Ln(sum); long double result; return bigResult.ToDouble(); } // unsafe, kept for potential future use long double logsumexp(const vector& lnv) { long double maxAbs, minN, maxN, c; vector::const_iterator i = lnv.begin(); long double n = *i; maxAbs = n; maxN = n; minN = n; ++i; for (; i != lnv.end(); ++i) { n = *i; if (n > maxN) maxN = n; if (fabs(n) > maxAbs) maxAbs = fabs(n); if (n < minN) minN = n; } if (maxAbs > maxN) { c = minN; } else { c = maxN; } long double sum = 0; for (vector::const_iterator i = lnv.begin(); i != lnv.end(); ++i) { sum += exp(*i - c); } return c + log(sum); } long double betaln(const vector& alphas) { vector gammalnAlphas; gammalnAlphas.resize(alphas.size()); transform(alphas.begin(), alphas.end(), gammalnAlphas.begin(), gammaln); return sum(gammalnAlphas) - gammaln(sum(alphas)); } long double beta(const vector& alphas) { return exp(betaln(alphas)); } long double hoeffding(double successes, double trials, double prob) { return 0.5 * exp(-2 * pow(trials * prob - successes, 2) / trials); } long double hoeffdingln(double successes, double trials, double prob) { return log(0.5) + (-2 * pow(trials * prob - successes, 2) / trials); } // the sum of the harmonic series 1, n long double harmonicSum(int n) { long double r = 0; long double i = 1; while (i <= n) { r += 1 / i; ++i; } return r; } bool isTransition(string& ref, string& alt) { if (((ref == "A" && alt == "G") || (ref == "G" && alt == "A")) || ((ref == "C" && alt == "T") || (ref == "T" && alt == "C"))) { return true; } else { return false; } } // Levenshtein Distance Algorithm: C++ Implementation // by Anders Sewerin Johansen // http://www.merriampark.com/ldcpp.htm int levenshteinDistance(const std::string source, const std::string target) { // Step 1 const int n = source.length(); const int m = target.length(); if (n == 0) { return m; } if (m == 0) { return n; } // Good form to declare a TYPEDEF typedef std::vector< std::vector > Tmatrix; Tmatrix matrix(n+1); // Size the vectors in the 2.nd dimension. Unfortunately C++ doesn't // allow for allocation on declaration of 2.nd dimension of vec of vec for (int i = 0; i <= n; i++) { matrix[i].resize(m+1); } // Step 2 for (int i = 0; i <= n; i++) { matrix[i][0]=i; } for (int j = 0; j <= m; j++) { matrix[0][j]=j; } // Step 3 for (int i = 1; i <= n; i++) { const char s_i = source[i-1]; // Step 4 for (int j = 1; j <= m; j++) { const char t_j = target[j-1]; // Step 5 int cost; if (s_i == t_j) { cost = 0; } else { cost = 1; } // Step 6 const int above = matrix[i-1][j]; const int left = matrix[i][j-1]; const int diag = matrix[i-1][j-1]; int cell = min( above + 1, min(left + 1, diag + cost)); // Step 6A: Cover transposition, in addition to deletion, // insertion and substitution. This step is taken from: // Berghel, Hal ; Roach, David : "An Extension of Ukkonen's // Enhanced Dynamic Programming ASM Algorithm" // (http://www.acm.org/~hlb/publications/asm/asm.html) if (i>2 && j>2) { int trans=matrix[i-2][j-2]+1; if (source[i-2]!=t_j) trans++; if (s_i!=target[j-2]) trans++; if (cell>trans) cell=trans; } matrix[i][j]=cell; } } // Step 7 return matrix[n][m]; } // current date string in YYYYMMDD format string dateStr(void) { time_t rawtime; struct tm* timeinfo; char buffer[80]; time(&rawtime); timeinfo = localtime(&rawtime); strftime(buffer, 80, "%Y%m%d", timeinfo); return string(buffer); } long double string2float(const string& s) { long double r; convert(s, r); return r; } long double log10string2ln(const string& s) { long double r; convert(s, r); return log102ln(r); } long double safedivide(long double a, long double b) { if (b == 0) { if (a == 0) { return 1; } else { return 0; } } else { return a / b; } } string mergeCigar(const string& c1, const string& c2) { vector > cigar1 = splitCigar(c1); vector > cigar2 = splitCigar(c2); // check if the middle elements are the same if (cigar1.back().second == cigar2.front().second) { cigar1.back().first += cigar2.front().first; cigar2.erase(cigar2.begin()); } for (vector >::iterator c = cigar2.begin(); c != cigar2.end(); ++c) { cigar1.push_back(*c); } return joinCigar(cigar1); } vector > splitCigar(const string& cigarStr) { vector > cigar; string number; string type; // strings go [Number][Type] ... for (string::const_iterator s = cigarStr.begin(); s != cigarStr.end(); ++s) { char c = *s; if (isdigit(c)) { if (type.empty()) { number += c; } else { // signal for next token, push back the last pair, clean up cigar.push_back(make_pair(atoi(number.c_str()), type)); number.clear(); type.clear(); number += c; } } else { type += c; } } if (!number.empty() && !type.empty()) { cigar.push_back(make_pair(atoi(number.c_str()), type)); } return cigar; } list > splitCigarList(const string& cigarStr) { list > cigar; string number; string type; // strings go [Number][Type] ... for (string::const_iterator s = cigarStr.begin(); s != cigarStr.end(); ++s) { char c = *s; if (isdigit(c)) { if (type.empty()) { number += c; } else { // signal for next token, push back the last pair, clean up cigar.push_back(make_pair(atoi(number.c_str()), type)); number.clear(); type.clear(); number += c; } } else { type += c; } } if (!number.empty() && !type.empty()) { cigar.push_back(make_pair(atoi(number.c_str()), type)); } return cigar; } string joinCigar(const vector >& cigar) { string cigarStr; for (vector >::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { if (c->first) { cigarStr += convert(c->first) + c->second; } } return cigarStr; } string joinCigarList(const list >& cigar) { string cigarStr; for (list >::const_iterator c = cigar.begin(); c != cigar.end(); ++c) { cigarStr += convert(c->first) + c->second; } return cigarStr; } bool isEmptyCigarElement(const pair& elem) { return elem.first == 0; } // string * overload // from http://stackoverflow.com/a/5145880 std::string operator*(std::string const &s, size_t n) { std::string r; // empty string r.reserve(n * s.size()); for (size_t i=0; i& v) { long double sum = 0; for (vector::iterator i = v.begin(); i != v.end(); ++i) { sum += *i; } for (vector::iterator i = v.begin(); i != v.end(); ++i) { *i /= sum; } } // splits the file on '\n', adds the resulting values to v void addLinesFromFile(vector& v, const string& f) { ifstream ifs; ifs.open(f.c_str(), ifstream::in); if (!ifs.is_open()) { cerr << "could not open " << f << endl; exit(1); } string line; while (std::getline(ifs, line)) { v.push_back(line); } } double lf[] = { 0.000000000000000, 0.000000000000000, 0.693147180559945, 1.791759469228055, 3.178053830347946, 4.787491742782046, 6.579251212010101, 8.525161361065415, 10.604602902745251, 12.801827480081469, 15.104412573075516, 17.502307845873887, 19.987214495661885, 22.552163853123421, 25.191221182738683, 27.899271383840894, 30.671860106080675, 33.505073450136891, 36.395445208033053, 39.339884187199495, 42.335616460753485, 45.380138898476908, 48.471181351835227, 51.606675567764377, 54.784729398112319, 58.003605222980518, 61.261701761002001, 64.557538627006323, 67.889743137181526, 71.257038967168000, 74.658236348830158, 78.092223553315307, 81.557959456115029, 85.054467017581516, 88.580827542197682, 92.136175603687079, 95.719694542143202, 99.330612454787428, 102.968198614513810, 106.631760260643446, 110.320639714757391, 114.034211781461693, 117.771881399745055, 121.533081515438639, 125.317271149356884, 129.123933639127245, 132.952575035616292, 136.802722637326355, 140.673923648234251, 144.565743946344895, 148.477766951773020, 152.409592584497346, 156.360836303078798, 160.331128216630930, 164.320112263195170, 168.327445448427653, 172.352797139162817, 176.395848406997374, 180.456291417543781, 184.533828861449507, 188.628173423671598, 192.739047287844897, 196.866181672889979, 201.009316399281573, 205.168199482641199, 209.342586752536818, 213.532241494563266, 217.736934113954248, 221.956441819130362, 226.190548323727569, 230.439043565776927, 234.701723442818263, 238.978389561834348, 243.268849002982734, 247.572914096186906, 251.890402209723192, 256.221135550009478, 260.564940971863223, 264.921649798552778, 269.291097651019811, 273.673124285693689, 278.067573440366118, 282.474292687630395, 286.893133295426992, 291.323950094270288, 295.766601350760595, 300.220948647014097, 304.686856765668722, 309.164193580146900, 313.652829949878992, 318.152639620209300, 322.663499126726208, 327.185287703775202, 331.717887196928473, 336.261181979198454, 340.815058870798964, 345.379407062266864, 349.954118040770254, 354.539085519440789, 359.134205369575341, 363.739375555563470, 368.354496072404686, 372.979468885689016, 377.614197873918670, 382.258588773060012, 386.912549123217559, 391.575988217329609, 396.248817051791491, 400.930948278915764, 405.622296161144902, 410.322776526937275, 415.032306728249580, 419.750805599544776, 424.478193418257092, 429.214391866651567, 433.959323995014870, 438.712914186121168, 443.475088120918940, 448.245772745384613, 453.024896238496126, 457.812387981278107, 462.608178526874894, 467.412199571608085, 472.224383926980522, 477.044665492585580, 481.872979229887903, 486.709261136839359, 491.553448223298005, 496.405478487217579, 501.265290891579241, 506.132825342034835, 511.008022665236069, 515.890824587822522, 520.781173716044236, 525.679013515995052, 530.584288294433577, 535.496943180169524, 540.416924105997737, 545.344177791154948, 550.278651724285623, 555.220294146894958, 560.169054037273099, 565.124881094874354, 570.087725725134192, 575.057539024710195, 580.034272767130801, 585.017879388839219, 590.008311975617858, 595.005524249382006, 600.009470555327425, 605.020105849423771, 610.037385686238736, 615.061266207084941, 620.091704128477431, 625.128656730891066, 630.172081847810205, 635.221937855059764, 640.278183660408104, 645.340778693435027, 650.409682895655237, 655.484856710889062, 660.566261075873513, 665.653857411105946, 670.747607611912713, 675.847474039736881, 680.953419513637527, 686.065407301994014, 691.183401114410799, 696.307365093814042, 701.437263808737157, 706.573062245787469, 711.714725802289990, 716.862220279103440, 722.015511873601326, 727.174567172815841, 732.339353146739313, 737.509837141777439, 742.685986874351215, 747.867770424643368, 753.055156230484158, 758.248113081374299, 763.446610112640201, 768.650616799717000, 773.860102952558464, 779.075038710167405, 784.295394535245691, 789.521141208958966, 794.752249825813465, 799.988691788643450, 805.230438803703123, 810.477462875863580, 815.729736303910158, 820.987231675937892, 826.249921864842804, 831.517780023906312, 836.790779582469895, 842.068894241700491, 847.352097970438422, 852.640365001133091, 857.933669825857464, 863.231987192405427, 868.535292100464630, 873.843559797865737, 879.156765776907605, 884.474885770751825, 889.797895749890245, 895.125771918679902, 900.458490711945274, 905.796028791646336, 911.138363043611207, 916.485470574328815, 921.837328707804886, 927.193914982476713, 932.555207148186241, 937.921183163208070, 943.291821191335657, 948.667099599019821, 954.046996952560448, 959.431492015349477, 964.820563745165941, 970.214191291518318, 975.612353993036209, 981.015031374908403, 986.422203146368588, 991.833849198223447, 997.249949600427840, 1002.670484599700330, 1008.095434617181695, 1013.524780246136174, 1018.958502249690241, 1024.396581558613434, 1029.838999269135456, 1035.285736640801588, 1040.736775094367431, 1046.192096209724923, 1051.651681723869160, 1057.115513528895008, 1062.583573670030091, 1068.055844343701438, 1073.532307895632812, 1079.012946818975024, 1084.497743752465567, 1089.986681478622359, 1095.479742921962725, 1100.976911147256033, 1106.478169357800880, 1111.983500893732980, 1117.492889230361016, 1123.006317976526134, 1128.523770872990781, 1134.045231790852995, 1139.570684729984805, 1145.100113817496094, 1150.633503306223702, 1156.170837573242352, 1161.712101118566125, 1167.257278563043883, 1172.806354647937269, 1178.359314232856832, 1183.916142294554675, 1189.476823925568624, 1195.041344332889139, 1200.609688836648729, 1206.181842868824560, 1211.757791971969255, 1217.337521797953741, 1222.921018106733982, 1228.508266765132475, 1234.099253745641590, 1239.693965125242130, 1245.292387084238726, 1250.894505905117057, 1256.500307971411530, 1262.109779766595011, 1267.722907872981750, 1273.339678970646673, 1278.960079836362411, 1284.584097342548375, 1290.211718456237577, 1295.842930238057534, 1301.477719841225507, 1307.116074510557837, 1312.757981581494732, 1318.403428479136664, 1324.052402717296673, 1329.704891897564039, 1335.360883708382744, 1341.020365924141288, 1346.683326404275704, 1352.349753092387118, 1358.019634015366364, 1363.692957282536781, 1369.369711084804067, 1375.049883693819766, 1380.733463461157498, 1386.420438817496006, 1392.110798271819021, 1397.804530410620600, 1403.501623897125000, 1409.202067470514521, 1414.905849945169621, 1420.612960209917674, 1426.323387227291505, 1432.037120032799976, 1437.754147734205389, 1443.474459510811812, 1449.198044612762942, 1454.924892360349304, 1460.654992143322261, 1466.388333420219169, 1472.124905717696947, 1477.864698629875647, 1483.607701817684074, 1489.353905008223364, 1495.103297994130799, 1500.855870632955657, 1506.611612846541448, 1512.370514620418362, 1518.132566003197553, 1523.897757105981555, 1529.666078101774701, 1535.437519224904008, 1541.212070770447326, 1546.989723093669227, 1552.770466609460982, 1558.554291791789865, 1564.341189173155954, 1570.131149344052574, 1575.924162952435836, 1581.720220703200539, 1587.519313357660394, 1593.321431733036661, 1599.126566701952470, 1604.934709191932598, 1610.745850184908250, 1616.559980716732753, 1622.377091876695204, 1628.197174807047077, 1634.020220702529286, 1639.846220809909255, 1645.675166427518889, 1651.507048904801650, 1657.341859641863721, 1663.179590089029034, 1669.020231746402033, 1674.863776163432703, 1680.710214938489798, 1686.559539718436099, 1692.411742198209822, 1698.266814120411709, 1704.124747274894844, 1709.985533498360155, 1715.849164673957603, 1721.715632730890093, 1727.584929644023759, 1733.457047433498474, 1739.331978164349721, 1745.209713946129114, 1751.090246932528999, 1756.973569321017294, 1762.859673352466871, 1768.748551310799485, 1774.640195522624481, 1780.534598356888637, 1786.431752224525098, 1792.331649578106862, 1798.234282911507989, 1804.139644759562316, 1810.047727697730807, 1815.958524341770499, 1821.872027347408448, 1827.788229410015674, 1833.707123264288384, 1839.628701683931922, 1845.552957481345629, 1851.479883507315890, 1857.409472650705084, 1863.341717838153045, 1869.276612033771926, 1875.214148238854250, 1881.154319491573915, 1887.097118866700384, 1893.042539475306512, 1898.990574464486826, 1904.941217017074223, 1910.894460351361658, 1916.850297720826120, 1922.808722413855321, 1928.769727753478264, 1934.733307097096713, 1940.699453836219618, 1946.668161396204823, 1952.639423235995082, 1958.613232847863628, 1964.589583757161563, 1970.568469522062060, 1976.549883733316392, 1982.533820014003140, 1988.520272019287404, 1994.509233436176601, 2000.500697983284454, 2006.494659410590884, 2012.491111499209183, 2018.490048061155903, 2024.491462939116445, 2030.495350006222907, 2036.501703165824438, 2042.510516351266688, 2048.521783525670799, 2054.535498681712852, 2060.551655841410593, 2066.570249055906970, 2072.591272405256404, 2078.614719998216970, 2084.640585972042118, 2090.668864492272405, 2096.699549752533585, 2102.732635974331515, 2108.768117406856618, 2114.805988326778333, 2120.846243038055036, 2126.888875871737582, 2132.933881185772861, 2138.981253364819167, 2145.030986820051567, 2151.083075988974997, 2157.137515335244188, 2163.194299348472668, 2169.253422544054501, 2175.314879462981935, 2181.378664671668957, 2187.444772761773038, 2193.513198350016410, 2199.583936078018723, 2205.656980612119241, 2211.732326643207671, 2217.809968886556362, 2223.889902081652053, 2229.972120992028067, 2236.056620405102876, 2242.143395132015030, 2248.232440007461719, 2254.323749889539613, 2260.417319659583882, 2266.513144222016308, 2272.611218504182489, 2278.711537456202223, 2284.814096050814896, 2290.918889283230328, 2297.025912170972333, 2303.135159753736843, 2309.246627093239113, 2315.360309273070925, 2321.476201398553712, 2327.594298596594854, 2333.714596015545794, 2339.837088825059709, 2345.961772215954170, 2352.088641400067900, 2358.217691610127986, 2364.348918099611183, 2370.482316142607488, 2376.617881033689173, 2382.755608087774817, 2388.895492640001066, 2395.037530045588028, 2401.181715679714216, 2407.328044937382856, 2413.476513233300011, 2419.627116001745890, 2425.779848696450244, 2431.934706790465953, 2438.091685776051690, 2444.250781164543696, 2450.411988486238442, 2456.575303290273041, 2462.740721144504732, 2468.908237635392652, 2475.077848367883689, 2481.249548965294707, 2487.423335069196128, 2493.599202339301883, 2499.777146453352088, 2505.957163107005272, 2512.139248013721044, 2518.323396904658694, 2524.509605528558950, 2530.697869651641213, 2536.888185057494411, 2543.080547546968774, 2549.274952938073511, 2555.471397065868132, 2561.669875782360123, 2567.870384956402631, 2574.072920473590329, 2580.277478236158913, 2586.484054162883695, 2592.692644188980012, 2598.903244266005004, 2605.115850361756202, 2611.330458460177852, 2617.547064561262687, 2623.765664680954615, 2629.986254851054127, 2636.208831119125534, 2642.433389548400555, 2648.659926217688280, 2654.888437221278764, 2661.118918668857532, 2667.351366685407356, 2673.585777411125946, 2679.822147001329540, 2686.060471626368781, 2692.300747471539580, 2698.542970736994903, 2704.787137637658361, 2711.033244403139634, 2717.281287277648062, 2723.531262519907614, 2729.783166403073210, 2736.036995214648414, 2742.292745256401759, 2748.550412844284892, 2754.809994308348905, 2761.071485992669750, 2767.334884255261841, 2773.600185467999381, 2779.867386016540422, 2786.136482300246371, 2792.407470732105139, 2798.680347738651108, 2804.955109759892821, 2811.231753249233861, 2817.510274673400090, 2823.790670512360066, 2830.072937259255923, 2836.357071420326974, 2842.643069514835588, 2848.930928074997610, 2855.220643645906421, 2861.512212785463817, 2867.805632064310885, 2874.100898065750243, 2880.398007385683741, 2886.696956632539695, 2892.997742427202866, 2899.300361402948056, 2905.604810205370086, 2911.911085492317852, 2918.219183933827026, 2924.529102212053658, 2930.840837021205971, 2937.154385067483418, 2943.469743069005290, 2949.786907755752964, 2956.105875869498959, 2962.426644163749643, 2968.749209403676559, 2975.073568366057771, 2981.399717839213281, 2987.727654622942282, 2994.057375528464490, 3000.388877378358757, 3006.722157006498492, 3013.057211257996187, 3019.394036989142478, 3025.732631067345210, 3032.072990371073047, 3038.415111789794082, 3044.758992223920814, 3051.104628584749207, 3057.452017794405037, 3063.801156785784769, 3070.152042502499171, 3076.504671898819197, 3082.859041939616418, 3089.215149600312088, 3095.572991866819848, 3101.932565735492517, 3108.293868213064798, 3114.656896316605525, 3121.021647073457643, 3127.388117521188633, 3133.756304707539130, 3140.126205690367442, 3146.497817537599076, 3152.871137327176257, 3159.246162147004270, 3165.622889094902803, 3172.001315278553648, 3178.381437815453864, 3184.763253832859846, 3191.146760467743661, 3197.531954866741671, 3203.918834186104050, 3210.307395591649765, 3216.697636258715193, 3223.089553372107275, 3229.483144126058050, 3235.878405724173717, 3242.275335379389162, 3248.673930313924757, 3255.074187759233610, 3261.476104955960182, 3267.879679153895268, 3274.284907611925519, 3280.691787597995244, 3287.100316389055024, 3293.510491271020783, 3299.922309538730588, 3306.335768495898265, 3312.750865455069288, 3319.167597737582128, 3325.585962673517770, 3332.005957601664704, 3338.427579869471174, 3344.850826833005158, 3351.275695856909806, 3357.702184314367969, 3364.130289587052630, 3370.560009065091890, 3376.991340147024857, 3383.424280239763903, 3389.858826758551913, 3396.294977126920458, 3402.732728776657041, 3409.172079147757358, 3415.613025688389826, 3422.055565854858287, 3428.499697111558817, 3434.945416930943793, 3441.392722793485518, 3447.841612187631654, 3454.292082609776116, 3460.744131564213149, 3467.197756563105941, 3473.652955126446159, 3480.109724782018475, 3486.568063065363276, 3493.027967519740287, 3499.489435696094461, 3505.952465153014600, 3512.417053456704707, 3518.883198180942145, 3525.350896907046263, 3531.820147223842014, 3538.290946727625396, 3544.763293022125708, 3551.237183718477809, 3557.712616435182099, 3564.189588798070872, 3570.668098440280573, 3577.148143002206325, 3583.629720131482827, 3590.112827482940247, 3596.597462718575116, 3603.083623507519405, 3609.571307526003693, 3616.060512457329423, 3622.551235991831618, 3629.043475826851591, 3635.537229666703752, 3642.032495222640136, 3648.529270212826304, 3655.027552362303140, 3661.527339402959115, 3668.028629073498905, 3674.531419119413840, 3681.035707292951884, 3687.541491353078982, 3694.048769065464967, 3700.557538202436263, 3707.067796542959059, 3713.579541872603841, 3720.092771983516741, 3726.607484674388616, 3733.123677750431398, 3739.641349023343537, 3746.160496311284078, 3752.681117438842193, 3759.203210237013081, 3765.726772543162951, 3772.251802201006285, 3778.778297060576733, 3785.306254978199377, 3791.835673816460712, 3798.366551444187280, 3804.898885736409738, 3811.432674574342855, 3817.967915845355947, 3824.504607442948327, 3831.042747266714741, 3837.582333222333091, 3844.123363221522595, 3850.665835182029241, 3857.209747027593949, 3863.755096687929381, 3870.301882098689475, 3876.850101201451707, 3883.399751943684805, 3889.950832278729195, 3896.503340165763348, 3903.057273569788777, 3909.612630461599110, 3916.169408817757812, 3922.727606620570441, 3929.287221858063276, 3935.848252523959218, 3942.410696617653684, 3948.974552144185964, 3955.539817114220114, 3962.106489544023589, 3968.674567455436318, 3975.244048875849785, 3981.814931838189750, 3988.387214380883506, 3994.960894547843509, 4001.535970388443275, 4008.112439957492370, 4014.690301315213674, 4021.269552527223823, 4027.850191664507292, 4034.432216803400934, 4041.015626025559868, 4047.600417417945209, 4054.186589072799507, 4060.774139087624008, 4067.363065565158195, 4073.953366613354774, 4080.545040345363304, 4087.138084879506096, 4093.732498339255471, 4100.328278853216943, 4106.925424555102836, 4113.523933583717735, 4120.123804082931201, 4126.725034201659582, 4133.327622093849641, 4139.931565918449451, 4146.536863839397483, 4153.143514025595323, 4159.751514650891295, 4166.360863894058639, 4172.971559938776409, 4179.583600973610373, 4186.196985191989370, 4192.811710792193480, 4199.427775977326746, 4206.045178955300798, 4212.663917938817576, 4219.283991145347500, 4225.905396797112189, 4232.528133121062638, 4239.152198348861930, 4245.777590716869781, 4252.404308466119801, 4259.032349842297663, 4265.661713095735649, 4272.292396481379001, 4278.924398258774090, 4285.557716692054782, 4292.192350049916058, 4298.828296605602191, 4305.465554636886736, 4312.104122426052527, 4318.743998259878936, 4325.385180429620050, 4332.027667230987390, 4338.671456964136269, 4345.316547933640322, 4351.962938448488785, 4358.610626822051927, 4365.259611372076506, 4371.909890420663942, 4378.561462294253943, 4385.214325323607227, 4391.868477843790060, 4398.523918194156977, 4405.180644718336225, 4411.838655764207033, 4418.497949683890511, 4425.158524833729643, 4431.820379574274739, 4438.483512270266147, 4445.147921290616978, 4451.813605008399463, 4458.480561800827672, 4465.148790049245690, 4471.818288139103061, 4478.489054459949330, 4485.161087405410399, 4491.834385373178520, 4498.508946764992288, 4505.184769986627543, 4511.861853447874637, 4518.540195562528424, 4525.219794748373715, 4531.900649427163444, 4538.582758024613213, 4545.266118970378557, 4551.950730698046755, 4558.636591645115914, 4565.323700252982235, 4572.012054966929099, 4578.701654236107061, 4585.392496513525657, 4592.084580256033405, 4598.777903924302336, 4605.472465982823451, 4612.168264899882161, 4618.865299147549194, 4625.563567201664227, 4632.263067541825876, 4638.963798651372599, 4645.665759017376331, 4652.368947130617016, 4659.073361485581700, 4665.779000580440879, 4672.485862917043960, 4679.193947000896515, 4685.903251341153918, 4692.613774450607707, 4699.325514845663747, 4706.038471046340419, 4712.752641576250426, 4719.468024962584423, 4726.184619736105560, 4732.902424431129475, 4739.621437585514286, 4746.341657740649680, 4753.063083441440540, 4759.785713236296942, 4766.509545677117785, 4773.234579319284421, 4779.960812721642469, 4786.688244446493627, 4793.416873059578393, 4800.146697130067878, 4806.877715230550166, 4813.609925937017579, 4820.343327828854854, 4827.077919488827320, 4833.813699503069984, 4840.550666461072069, 4847.288818955667011, 4854.028155583024272, 4860.768674942631151, 4867.510375637282777, 4874.253256273074840, 4880.997315459386300, 4887.742551808871212, 4894.488963937443259, 4901.236550464273023, 4907.985310011765250, 4914.735241205553393, 4921.486342674489606, 4928.238613050632011, 4934.992050969230149, 4941.746655068716791, 4948.502423990701573, 4955.259356379948258, 4962.017450884377467, 4968.776706155040301, 4975.537120846123798, 4982.298693614928197, 4989.061423121859661, 4995.825308030422093, 5002.590347007203491, 5009.356538721863217, 5016.123881847129269, 5022.892375058776452, 5029.662017035630015, 5036.432806459538369, 5043.204742015378542, 5049.977822391033442, 5056.752046277391855, 5063.527412368327532, 5070.303919360700093, 5077.081565954335019, 5083.860350852020019, 5090.640272759493200, 5097.421330385429428, 5104.203522441434870, 5110.986847642038811, 5117.771304704676368, 5124.556892349684858, 5131.343609300290154, 5138.131454282600316, 5144.920426025591951, 5151.710523261105664, 5158.501744723831507, 5165.294089151302614, 5172.087555283882466, 5178.882141864758523, 5185.677847639932224, 5192.474671358207161, 5199.272611771182710, 5206.071667633241304, 5212.871837701542972, 5219.673120736014425, 5226.475515499339053, 5233.279020756947830, 5240.083635277010217, 5246.889357830425979, 5253.696187190818819, 5260.504122134519093, 5267.313161440561998, 5274.123303890677562, 5280.934548269278821, 5287.746893363455456, 5294.560337962966514, 5301.374880860225858, 5308.190520850301255, 5315.007256730896188, 5321.825087302349857, 5328.644011367625353, 5335.464027732299655, 5342.285135204556354, 5349.107332595176558, 5355.930618717533434, 5362.754992387574930, 5369.580452423831048, 5376.406997647387470, 5383.234626881890108, 5390.063338953532366, 5396.893132691045139, 5403.724006925689537, 5410.555960491255973, 5417.388992224042340, 5424.223100962855824, 5431.058285549003813, 5437.894544826281162, 5444.731877640966559, 5451.570282841813423, 5458.409759280042636, 5465.250305809330712, 5472.091921285808894, 5478.934604568047689, 5485.778354517053231, 5492.623169996261822, 5499.469049871525385, 5506.315993011111459, 5513.163998285687740, 5520.013064568320260, 5526.863190734466116, 5533.714375661959821, 5540.566618231011489, 5547.419917324197741, 5554.274271826453514, 5561.129680625062974, 5567.986142609657691, 5574.843656672202997, 5581.702221706993441, 5588.561836610649152, 5595.422500282096735, 5602.284211622577459, 5609.146969535628159, 5616.010772927081234, 5622.875620705052825, 5629.741511779936445, 5636.608445064398438, 5643.476419473367969, 5650.345433924033387, 5657.215487335832222, 5664.086578630443000, 5670.958706731781604, 5677.831870565993995, 5684.706069061447124, 5691.581301148724378, 5698.457565760614671, 5705.334861832112438, 5712.213188300403090, 5719.092544104863919, 5725.972928187049547, 5732.854339490692837, 5739.736776961690339, 5746.620239548102290, 5753.504726200146251, 5760.390235870180732, 5767.276767512711558, 5774.164320084376413, 5781.052892543940288, 5787.942483852295481, 5794.833092972442500, 5801.724718869494609, 5808.617360510666913, 5815.511016865269994, 5822.405686904703543, 5829.301369602451814, 5836.198063934073616, 5843.095768877203227, 5849.994483411532201, 5856.894206518817555, 5863.794937182862668, 5870.696674389519103, 5877.599417126677508, 5884.503164384262163, 5891.407915154223701, 5898.313668430536381, 5905.220423209183537, 5912.128178488166668, 5919.036933267481800, 5925.946686549125843, 5932.857437337087504, 5939.769184637339094, 5946.681927457832899, 5953.595664808492984, 5960.510395701211564, 5967.426119149842634, 5974.342834170195601, 5981.260539780030740, 5988.179234999051914, 5995.098918848898393, 6002.019590353148487, 6008.941248537299543, 6015.863892428775216, 6022.787521056913647, 6029.712133452961098, 6036.637728650072859, 6043.564305683294151, 6050.491863589573768, 6057.420401407737700, 6064.349918178500957, 6071.280412944453019, 6078.211884750053287, 6085.144332641624715, 6092.077755667355632, 6099.012152877284279, 6105.947523323299720, 6112.883866059133652, 6119.821180140357683, 6126.759464624374232, 6133.698718570415622, 6140.638941039535894, 6147.580131094603530, 6154.522287800303275, 6161.465410223123399, 6168.409497431352065, 6175.354548495078234, 6182.300562486177114, 6189.247538478312890, 6196.195475546927810, 6203.144372769241272, 6210.094229224240735, 6217.045043992684441, 6223.996816157084140, 6230.949544801707816, 6237.903229012578777, 6244.857867877459285, 6251.813460485856012, 6258.770005929007311, 6265.727503299885029, 6272.685951693182687, 6279.645350205315481, 6286.605697934417549, 6293.566993980327425, 6300.529237444593491, 6307.492427430463977, 6314.456563042882408, 6321.421643388483062, 6328.387667575589148, 6335.354634714203712, 6342.322543916005088, 6349.291394294347811, 6356.261184964248969, 6363.231915042392757, 6370.203583647118649, 6377.176189898420489, 6384.149732917940128, 6391.124211828965599, 6398.099625756421119, 6405.075973826868903, 6412.053255168500073, 6419.031468911130105, 6426.010614186198836, 6432.990690126760455, 6439.971695867482595, 6446.953630544639054, 6453.936493296107074, 6460.920283261366421, 6467.904999581483935, 6474.890641399123524, 6481.877207858529800, 6488.864698105531716, 6495.853111287530737, 6502.842446553504487, 6509.832703053999467, 6516.823879941120140, 6523.815976368536212, 6530.808991491468987, 6537.802924466692275, 6544.797774452525118, 6551.793540608830881, 6558.790222097006335, 6565.787818079988938, 6572.786327722239548, 6579.785750189746977, 6586.786084650021621, 6593.787330272090912, 6600.789486226494773, 6607.792551685281069, 6614.796525822003787, 6621.801407811717581, 6628.807196830970497, 6635.813892057807607, 6642.821492671760097, 6649.829997853842542, 6656.839406786551081, 6663.849718653858872, 6670.860932641207910, 6677.873047935514478, 6684.886063725153690, 6691.899979199964946, 6698.914793551240109, 6705.930505971728053, 6712.947115655621928, 6719.964621798562803, 6726.983023597632382, 6734.002320251347555, 6741.022510959658575, 6748.043594923948149, 6755.065571347020523, 6762.088439433102394, 6769.112198387841090, 6776.136847418295474, 6783.162385732934126, 6790.188812541633524, 6797.216127055673496, 6804.244328487729945, 6811.273416051880304, 6818.303388963587167, 6825.334246439703747, 6832.365987698466597, 6839.398611959493792, 6846.432118443782201, 6853.466506373698394, 6860.501774972979547, 6867.537923466728898, 6874.574951081414838, 6881.612857044862722, 6888.651640586251233, 6895.691300936114203, 6902.731837326328787, 6909.773248990123648, 6916.815535162063497, 6923.858695078052733, 6930.902727975326343, 6937.947633092455362, 6944.993409669335051, 6952.040056947184894, 6959.087574168541323, 6966.135960577263177, 6973.185215418518965, 6980.235337938788689, 6987.286327385855657, 6994.338183008812848, 7001.390904058044725, 7008.444489785238147, 7015.498939443371455, 7022.554252286710835, 7029.610427570811225, 7036.667464552509955, 7043.725362489920371, 7050.784120642438211, 7057.843738270730682, 7064.904214636731012, 7071.965549003640263, 7079.027740635928239, 7086.090788799315305, 7093.154692760788748, 7100.219451788579136, 7107.285065152176685, 7114.351532122314893, 7121.418851970967808, 7128.487023971356393, 7135.556047397933980, 7142.625921526392631, 7149.696645633652224, 7156.768218997864096, 7163.840640898401034, 7170.913910615861823, 7177.988027432058516, 7185.062990630025524, 7192.138799494003251, 7199.215453309448094, 7206.292951363016982, 7213.371292942574655, 7220.450477337185475, 7227.530503837106153, 7234.611371733796659, 7241.693080319902947, 7248.775628889259679, 7255.859016736883859, 7262.943243158982114, 7270.028307452933404, 7277.114208917299038, 7284.200946851809931, 7291.288520557368429, 7298.376929336043759, 7305.466172491071120, 7312.556249326848047, 7319.647159148928040, 7326.738901264022388, 7333.831474979996528, 7340.924879605866408, 7348.019114451791211, 7355.114178829077900, 7362.210072050174858, 7369.306793428669152, 7376.404342279284720, 7383.502717917875088, 7390.601919661428838, 7397.701946828057771, 7404.802798737001467, 7411.904474708620910, 7419.006974064396672, 7426.110296126921639, 7433.214440219910102, 7440.319405668178661, 7447.425191797660773, 7454.531797935387658, 7461.639223409499209, 7468.747467549230350, 7475.856529684917405, 7482.966409147988998, 7490.077105270968786, 7497.188617387463637, 7504.300944832174537, 7511.414086940882044, 7518.528043050448105, 7525.642812498816056, 7532.758394624999710, 7539.874788769093357, 7546.991994272257216, 7554.110010476722891, 7561.228836725785186, 7568.348472363802102, 7575.468916736195752, 7582.590169189438711, 7589.712229071068577, 7596.835095729667955, 7603.958768514872645, 7611.083246777366185, 7618.208529868876212, 7625.334617142176285, 7632.461507951074054, 7639.589201650422183, 7646.717697596101061, 7653.846995145030633, 7660.977093655156750, 7668.107992485453906, 7675.239690995919773, 7682.372188547579754, 7689.505484502476065, 7696.639578223668650, 7703.774469075235174, 7710.910156422262844, 7718.046639630852951, 7725.183918068112689, 7732.321991102157881, 7739.460858102102975, 7746.600518438067411, 7753.740971481169254, 7760.882216603520646, 7768.024253178227809, 7775.167080579388312, 7782.310698182091073, 7789.455105362412723, 7796.600301497411238, 7803.746285965125935, 7810.893058144577481, 7818.040617415766974, 7825.188963159666855, 7832.338094758225452, 7839.488011594356976, 7846.638713051948798, 7853.790198515854172, 7860.942467371886778, 7868.095519006825270, 7875.249352808403273, 7882.403968165315746, 7889.559364467214436, 7896.715541104693330, 7903.872497469309565, 7911.030232953560699, 7918.188746950888344, 7925.348038855686355, 7932.508108063283544, 7939.668953969945505, 7946.830575972885526, 7953.992973470240941, 7961.156145861089499, 7968.320092545430271, 7975.484812924201833, 7982.650306399264082, 7989.816572373396411, 7996.983610250308629, 8004.151419434626405, 8011.319999331889449, 8018.489349348560609, 8025.659468892010409, 8032.830357370521597, 8040.002014193290051, 8047.174438770416600, 8054.347630512902469, 8061.521588832660200, 8068.696313142495455, 8075.871802856120667, 8083.048057388138659, 8090.225076154047201, 8097.402858570242643, 8104.581404054005361, 8111.760712023509768, 8118.940781897812485, 8126.121613096857800, 8133.303205041469482, 8140.485557153353511, 8147.668668855098986, 8154.852539570160843, 8162.037168722877141, 8169.222555738458141, 8176.408700042979035, 8183.595601063392678, 8190.783258227507758, 8197.971670964003351, 8205.160838702424371, 8212.350760873168838, 8219.541436907500611, 8226.732866237540293, 8233.925048296252498, 8241.117982517467681, 8248.311668335863942, 8255.506105186963396, 8262.701292507141261, 8269.897229733616768, 8277.093916304451341, 8284.291351658548592, 8291.489535235650692, 8298.688466476336544, 8305.888144822029062, 8313.088569714973346, 8320.289740598254866, 8327.491656915786734, 8334.694318112311521, 8341.897723633395799, 8349.101872925430143, 8356.306765435632769, 8363.512400612045894, 8370.718777903517548, 8377.925896759725219, 8385.133756631157667, 8392.342356969118555, 8399.551697225721000, 8406.761776853891206, 8413.972595307364827, 8421.184152040677873, 8428.396446509179441, 8435.609478169011709, 8442.823246477129942, 8450.037750891282485, 8457.252990870012582, 8464.468965872662011, 8471.685675359372908, 8478.903118791069573, 8486.121295629473025, 8493.340205337091902, 8500.559847377222468, 8507.780221213946788, 8515.001326312129095, 8522.223162137419422, 8529.445728156240875, 8536.669023835802363, 8543.893048644087685, 8551.117802049855527, 8558.343283522637648, 8565.569492532738877, 8572.796428551231656, 8580.024091049961498, 8587.252479501536072, 8594.481593379327023, 8601.711432157479067, 8608.941995310889979, 8616.173282315216056, 8623.405292646879388, 8630.638025783058765, 8637.871481201678762, 8645.105658381429748, 8652.340556801744242, 8659.576175942811460, 8666.812515285566406, 8674.049574311689867, 8681.287352503613874, 8688.525849344507151, 8695.765064318289660, 8703.004996909608963, 8710.245646603863861, 8717.487012887186211, 8724.729095246442739, 8731.971893169236864, 8739.215406143901419, 8746.459633659505926, 8753.704575205842048, 8760.950230273436318, 8768.196598353539230, 8775.443678938125231, 8782.691471519894549, 8789.939975592265910, 8797.189190649378361, 8804.439116186094907, 8811.689751697995234, 8818.941096681368435, 8826.193150633218465, 8833.445913051273237, 8840.699383433957337, 8847.953561280413851, 8855.208446090491634, 8862.464037364745309, 8869.720334604437085, 8876.977337311527663, 8884.235044988688969, 8891.493457139284146, 8898.752573267380285, 8906.012392877742968, 8913.272915475834452, 8920.534140567806389, 8927.796067660508925, 8935.058696261483419, 8942.322025878958812, 8949.586056021858894, 8956.850786199787763, 8964.116215923042546, 8971.382344702600676, 8978.649172050119887, 8985.916697477947309, 8993.184920499108557, 9000.453840627302270, 9007.723457376909209, 9014.993770262988619, 9022.264778801269131, 9029.536482508157860, 9036.808880900725853, 9044.081973496726278, 9051.355759814570774, 9058.630239373345830, 9065.905411692798225, 9073.181276293344126, 9080.457832696063633, 9087.735080422693500, 9095.013018995641687, 9102.291647937961898, 9109.570966773375403, 9116.850975026258311, 9124.131672221643385, 9131.413057885214585, 9138.695131543308889, 9145.977892722914476, 9153.261340951670718, 9160.545475757866370, 9167.830296670434109, 9175.115803218957808, 9182.401994933659807, 9189.688871345410007, 9196.976431985720410, 9204.264676386739666, 9211.553604081260346, 9218.843214602711669, 9226.133507485157679, 9233.424482263300888, 9240.716138472476814, 9248.008475648650347, 9255.301493328423021, 9262.595191049023924, 9269.889568348313333, 9277.184624764775435, 9284.480359837525612, 9291.776773106297696, 9299.073864111460352, 9306.371632393991604, 9313.670077495498845, 9320.969198958209745, 9328.268996324968612, 9335.569469139234570, 9342.870616945090660, 9350.172439287229281, 9357.474935710957652, 9364.778105762194173, 9372.081948987472060, 9379.386464933932075, 9386.691653149326157, 9393.997513182008333, 9401.304044580947448, 9408.611246895712611, 9415.919119676476839, 9423.227662474015233, 9430.536874839708616, 9437.846756325532624, 9445.157306484068613, 9452.468524868487293, 9459.780411032565098, 9467.092964530667814, 9474.406184917757855, 9481.720071749390627, 9489.034624581716344, 9496.349842971469116, 9503.665726475977863, 9510.982274653160857, 9518.299487061520267, 9525.617363260147613, 9532.935902808716492, 9540.255105267484396, 9547.574970197292714, 9554.895497159564911, 9562.216685716304710, 9569.538535430092452, 9576.861045864090556, 9584.184216582034423, 9591.508047148234255, 9598.832537127584146, 9606.157686085540263, 9613.483493588135389, 9620.809959201975289, 9628.137082494235074, 9635.464863032655558, 9642.793300385552357, 9650.122394121797697, 9657.452143810840425, 9664.782549022684179, 9672.113609327903760, 9679.445324297630577, 9686.777693503558112, 9694.110716517945548, 9701.444392913603224, 9708.778722263903546, 9716.113704142775532, 9723.449338124702990, 9730.785623784724521, 9738.122560698431698, 9745.460148441969068, 9752.798386592035968, 9760.137274725873795, 9767.476812421280556, 9774.816999256601775, 9782.157834810725035, 9789.499318663089070, 9796.841450393672858, 9804.184229583004708, 9811.527655812153171, 9818.871728662725218, 9826.216447716873517, 9833.561812557292797, 9840.907822767207108, 9848.254477930382563, 9855.601777631123696, 9862.949721454273458, 9870.298308985200492, 9877.647539809813679, 9884.997413514553045, 9892.347929686386124, 9899.699087912817049, 9907.050887781875645, 9914.403328882119240, 9921.756410802636310, 9929.110133133035561, 9936.464495463456842, 9943.819497384562055, 9951.175138487533331, 9958.531418364085766, 9965.888336606441953, 9973.245892807351993, 9980.604086560084397, 9987.962917458427910, 9995.322385096684229, 10002.682489069671647, 10010.043228972730503, 10017.404604401708639, 10024.766614952968666, 10032.129260223384335, 10039.492539810349626, 10046.856453311753285, 10054.221000326011563, 10061.586180452031840, 10068.951993289239908, 10076.318438437567238, 10083.685515497449160, 10091.053224069823045, 10098.421563756135583, 10105.790534158330047, 10113.160134878855388, 10120.530365520664418, 10127.901225687201077, 10135.272714982414982, 10142.644833010752336, 10150.017579377157745, 10157.390953687066940, 10164.764955546415877, 10172.139584561637093, 10179.514840339645161, 10186.890722487858511, 10194.267230614186701, 10201.644364327019503, 10209.022123235248728, 10216.400506948244583, 10223.779515075873860, 10231.159147228483562, 10238.539403016910001, 10245.920282052473340, 10253.301783946979413, 10260.683908312717904, 10268.066654762456892, 10275.450022909450126, 10282.834012367427931, 10290.218622750604482, 10297.603853673670528, 10304.989704751797035, 10312.376175600626084, 10319.763265836281789, 10327.150975075363021, 10334.539302934939769, 10341.928249032558597, 10349.317812986237186, 10356.707994414462519, 10364.098792936199970, 10371.490208170873302, 10378.882239738390126, 10386.274887259110983, 10393.668150353872988, 10401.062028643982558, 10408.456521751200853, 10415.851629297763793, 10423.247350906365682, 10430.643686200166485, 10438.040634802788190, 10445.438196338311172, 10452.836370431281466, 10460.235156706701673, 10467.634554790032780, 10475.034564307195978, 10482.435184884567207, 10489.836416148978969, 10497.238257727723976, 10504.640709248544226, 10512.043770339631010, 10519.447440629644916, 10526.851719747681273, 10534.256607323299249, 10541.662102986498212, 10549.068206367735911, 10556.474917097912112, 10563.882234808381327, 10571.290159130940083, 10578.698689697836016, 10586.107826141755140, 10593.517568095836396, 10600.927915193658919, 10608.338867069242042, 10615.750423357052568, 10623.162583691997497, 10630.575347709424022, 10637.988715045119534, 10645.402685335309798, 10652.817258216660775, 10660.232433326274986, 10667.648210301689687, 10675.064588780884151, 10682.481568402263292, 10689.899148804677679, 10697.317329627405343, 10704.736110510155413, 10712.155491093073579, 10719.575471016736628, 10726.996049922146995, 10734.417227450741848, 10741.839003244387641, 10749.261376945372831, 10756.684348196424253, 10764.107916640681651, 10771.532081921724966, 10778.956843683547049, 10786.382201570573670, 10793.808155227652605, 10801.234704300049998, 10808.661848433457635, 10816.089587273991128, 10823.517920468180819, 10830.946847662984510, 10838.376368505771097, 10845.806482644333300, 10853.237189726880388, 10860.668489402034538, 10868.100381318843574, 10875.532865126759134, 10882.965940475656680, 10890.399607015824586, 10897.833864397956859, 10905.268712273167694, 10912.704150292984195, 10920.140178109335466, 10927.576795374568974, 10935.014001741441461, 10942.451796863111667, 10949.890180393156697, 10957.329151985553835, 10964.768711294686000, 10972.208857975349019, 10979.649591682738901, 10987.090912072455467, 10994.532818800507812, 11001.975311523301571, 11009.418389897651650, 11016.862053580765860, 11024.306302230263100, 11031.751135504155172, 11039.196553060855877, 11046.642554559182827, 11054.089139658337444, 11061.536308017937699, 11068.984059297987187, 11076.432393158884224, 11083.881309261427305, 11091.330807266811462, 11098.780886836617356, 11106.231547632831280, 11113.682789317817878, 11121.134611554345611, 11128.587014005568562, 11136.039996335035539, 11143.493558206677335, 11150.947699284824921, 11158.402419234189438, 11165.857717719871289, 11173.313594407363780, 11180.770048962540386, 11188.227081051662026, 11195.684690341377063, 11203.142876498717669, 11210.601639191099821, 11218.060978086319665, 11225.520892852562611, 11232.981383158386961, 11240.442448672740284, 11247.904089064948494, 11255.366304004717676, 11262.829093162128629, 11270.292456207649593, 11277.756392812118065, 11285.220902646755349, 11292.685985383153820, 11300.151640693287845, 11307.617868249504681, 11315.084667724522660, 11322.552038791440282, 11330.019981123727121, 11337.488494395222006, 11344.957578280143935, 11352.427232453075703, 11359.897456588976638, 11367.368250363169864, 11374.839613451358673, 11382.311545529602881, 11389.784046274340653, 11397.257115362372133, 11404.730752470868538, 11412.204957277364883, 11419.679729459763621, 11427.155068696329181, 11434.630974665697067, 11442.107447046861125, 11449.584485519182635, 11457.062089762379401, 11464.540259456538479, 11472.018994282107087, 11479.498293919890784, 11486.978158051053470, 11494.458586357128297, 11501.939578519997667, 11509.421134221907778, 11516.903253145459530, 11524.385934973613985, 11531.869179389686906, 11539.352986077354217, 11546.837354720641088, 11554.322285003929210, 11561.807776611960435, 11569.293829229824041, 11576.780442542964010, 11584.267616237177208, 11591.755349998613383, 11599.243643513773350, 11606.732496469505350, 11614.221908553015965, 11621.711879451850109, 11629.202408853911038, 11636.693496447445796, 11644.185141921050672, 11651.677344963669384, 11659.170105264593076, 11666.663422513454861, 11674.157296400237101, 11681.651726615271400, 11689.146712849220421, 11696.642254793103348, 11704.138352138279515, 11711.635004576448409, 11719.132211799649667, 11726.629973500273991, 11734.128289371041319, 11741.627159105019018, 11749.126582395609148, 11756.626558936563015, 11764.127088421957524, 11771.628170546217007, 11779.129805004100490, 11786.631991490703513, 11794.134729701458127, 11801.638019332134718, 11809.141860078831087, 11816.646251637994283, 11824.151193706389677, 11831.656685981126429, 11839.162728159646576, 11846.669319939715933, 11854.176461019444105, 11861.684151097264476, 11869.192389871943305, 11876.701177042576091, 11884.210512308593024, 11891.720395369748076, 11899.230825926126272, 11906.741803678140059, 11914.253328326531118, 11921.765399572366732, 11929.278017117041600, 11936.791180662276020, 11944.304889910114071, 11951.819144562930887, 11959.333944323421747, 11966.849288894600249, 11974.365177979816508, 11981.881611282729864, 11989.398588507334352, 11996.916109357940513, 12004.434173539171752, 12011.952780755986169, 12019.471930713658367, 12026.991623117773997, 12034.511857674247949, 12042.032634089309795, 12049.553952069509251, 12057.075811321710717, 12064.598211553098736, 12072.121152471170717, 12079.644633783746031, 12087.168655198951456, 12094.693216425237551, 12102.218317171362287, 12109.743957146403773, 12117.270136059751167, 12124.796853621102855, 12132.324109540475547, 12139.851903528196999, 12147.380235294906015, 12154.909104551548808, 12162.438511009384456, 12169.968454379984905, 12177.498934375231329, 12185.029950707310491, 12192.561503088714744, 12200.093591232258404, 12207.626214851046825, 12215.159373658503682, 12222.693067368350967, 12230.227295694625354, 12237.762058351661835, 12245.297355054106447, 12252.833185516905360, 12260.369549455308515, 12267.906446584875084, 12275.443876621462550, 12282.981839281230350, 12290.520334280645329, 12298.059361336469010, 12305.598920165768504, 12313.139010485914696, 12320.679632014573144, 12328.220784469709542, 12335.762467569589717, 12343.304681032783265, 12350.847424578152641, 12358.390697924856795, 12365.934500792358449, 12373.478832900413181, 12381.023693969071246, 12388.569083718683032, 12396.115001869893604, 12403.661448143637244, 12411.208422261155647, 12418.755923943970629, 12426.303952913905960, 12433.852508893074628, 12441.401591603887937, 12448.951200769040952, 12456.501336111530691, 12464.051997354634295, 12471.603184221930860, 12479.154896437283242, 12486.707133724841697, 12494.259895809056616, 12501.813182414656694, 12509.366993266667123, 12516.921328090393217, 12524.476186611433150, 12532.031568555672493, 12539.587473649284220, 12547.143901618725067, 12554.700852190735532, 12562.258325092350788, 12569.816320050882496, 12577.374836793927898, 12584.933875049371636, 12592.493434545380296, 12600.053515010402407, 12607.614116173170260, 12615.175237762701727, 12622.736879508291167, 12630.299041139514884, 12637.861722386236579, 12645.424922978594623, 12652.988642647009328, 12660.552881122179315, 12668.117638135086963, 12675.682913416983865, 12683.248706699412651, 12690.815017714186979, 12698.381846193393358, 12705.949191869407514, 12713.517054474870747, 12721.085433742706300, 12728.654329406115721, 12736.223741198564312, 12743.793668853806594, 12751.364112105864479, 12758.935070689034546, 12766.506544337886226, 12774.078532787263612, 12781.651035772283649, 12789.224053028336130, 12796.797584291080057, 12804.371629296452738, 12811.946187780657056, 12819.521259480163280, 12827.096844131719990, 12834.672941472344974, 12842.249551239316133, 12849.826673170193317, 12857.404307002798305, 12864.982452475214814, 12872.561109325812140, 12880.140277293206964, 12887.719956116297908, 12895.300145534241892, 12902.880845286466865, 12910.462055112662711, 12918.043774752790341, 12925.626003947065328, 12933.208742435979730, 12940.791989960282081, 12948.375746260988308, 12955.960011079379910, 12963.544784156991227, 12971.130065235631264, 12978.715854057361867, 12986.302150364515910, 12993.888953899679109, 13001.476264405700931, 13009.064081625694598, 13016.652405303027990, 13024.241235181338197, 13031.830571004506055, 13039.420412516690703, 13047.010759462293208, 13054.601611585982027, 13062.192968632680277, 13069.784830347569368, 13077.377196476089011, 13084.970066763933573, 13092.563440957055718, 13100.157318801662768, 13107.751700044213067, 13115.346584431430529, 13122.941971710282814, 13130.537861627999519, 13138.134253932064894, 13145.731148370210576, 13153.328544690424678, 13160.926442640946334, 13168.524841970269335, 13176.123742427140314, 13183.723143760555104, 13191.323045719764195, 13198.923448054263645, 13206.524350513807804, 13214.125752848391130, 13221.727654808266379, 13229.330056143931870, 13236.932956606136941, 13244.536355945878313, 13252.140253914398272, 13259.744650263193762, 13267.349544744009108, 13274.954937108823287, 13282.560827109875390, 13290.167214499648253, 13297.774099030866637, 13305.381480456506324, 13312.989358529785022, 13320.597733004167821, 13328.206603633356281, 13335.815970171312074, 13343.425832372226068, 13351.036189990536514, 13358.647042780934498, 13366.258390498336666, 13373.870232897919777, 13381.482569735086145, 13389.095400765492741, 13396.708725745033007, 13404.322544429842310, 13411.936856576292485, 13419.551661941004568, 13427.166960280832427, 13434.782751352868218, 13442.399034914447839, 13450.015810723145478, 13457.633078536773610, 13465.250838113381178, 13472.869089211259052, 13480.487831588927293, 13488.107065005156983, 13495.726789218937483, 13503.347003989512814, 13510.967709076350729, 13518.588904239160911, 13526.210589237885870, 13533.832763832704586, 13541.455427784025233, 13549.078580852503364, 13556.702222799014635, 13564.326353384676622, 13571.950972370837917, 13579.576079519074483, 13587.201674591206029, 13594.827757349281455, 13602.454327555571581, 13610.081384972589149, 13617.708929363077914, 13625.336960490007186, 13632.965478116582744, 13640.594482006235921, 13648.223971922630881, 13655.853947629659160, 13663.484408891441490, 13671.115355472333249, 13678.746787136909916, 13686.378703649979798, 13694.011104776582215, 13701.643990281976585, 13709.277359931655155, 13716.911213491339367, 13724.545550726965303, 13732.180371404712787, 13739.815675290972649, 13747.451462152368549, 13755.087731755746063, 13762.724483868183597, 13770.361718256972381, 13777.999434689638292, 13785.637632933921850, 13793.276312757798223, 13800.915473929459040, 13808.555116217316026, 13816.195239390010101, 13823.835843216404101, 13831.476927465579138, 13839.118491906841882, 13846.760536309713643, 13854.403060443946742, 13862.046064079508142, 13869.689546986584901, 13877.333508935585996, 13884.977949697144140, 13892.622869042101229, 13900.268266741530169, 13907.914142566714872, 13915.560496289162984, 13923.207327680593153, 13930.854636512949583, 13938.502422558391117, 13946.150685589293062, 13953.799425378247179, 13961.448641698068968, 13969.098334321779475, 13976.748503022627119, 13984.399147574062226, 13992.050267749766135, 13999.701863323622092, 14007.353934069738898, 14015.006479762430899, 14022.659500176237998, 14030.312995085896546, 14037.966964266377545, 14045.621407492846629, 14053.276324540694986, 14060.931715185521170, 14068.587579203138375, 14076.243916369568979, 14083.900726461048180, 14091.558009254027638, 14099.215764525160921, 14106.873992051325331, 14114.532691609590984, 14122.191862977257188, 14129.851505931821521, 14137.511620250996202, 14145.172205712698997, 14152.833262095060491, 14160.494789176418635, 14168.156786735322385, 14175.819254550522601, 14183.482192400982967, 14191.145600065874532, 14198.809477324579348, 14206.473823956679553, 14214.138639741962834, 14221.803924460436974, 14229.469677892297113, 14237.135899817960308, 14244.802590018040064, 14252.469748273360892, 14260.137374364945572, 14267.805468074027885, 14275.474029182043523, 14283.143057470633721, 14290.812552721641623, 14298.482514717112281, 14306.152943239303568, 14313.823838070666170, 14321.495198993856320, 14329.167025791735796, 14336.839318247364645, 14344.512076144008461, 14352.185299265129288, 14359.858987394398355, 14367.533140315676064, 14375.207757813041098, 14382.882839670759495, 14390.558385673295561, 14398.234395605324607, 14405.910869251716576, 14413.587806397532404, 14421.265206828047667, 14428.943070328723479, 14436.621396685233776, 14444.300185683432574, 14451.979437109383070, 14459.659150749352193, 14467.339326389786947, 14475.019963817348980, 14482.701062818885475, 14490.382623181447343, 14498.064644692271031, 14505.747127138807627, 14513.430070308682843, 14521.113473989737031, 14528.797337969996079, 14536.481662037676870, 14544.166445981198194, 14551.851689589175294, 14559.537392650408947, 14567.223554953903658, 14574.910176288845832, 14582.597256444631057, 14590.284795210829543, 14597.972792377224323, 14605.661247733773052, 14613.350161070637114, 14621.039532178168884, 14628.729360846908094, 14636.419646867583651, 14644.110390031124552, 14651.801590128648968, 14659.493246951456968, 14667.185360291050529, 14674.877929939118985, 14682.570955687539026, 14690.264437328372878, 14697.958374653884675, 14705.652767456511356, 14713.347615528897222, 14721.042918663863020, 14728.738676654413212, 14736.434889293763263, 14744.131556375288710, 14751.828677692568817, 14759.526253039373842, 14767.224282209646844, 14774.922764997525519, 14782.621701197340371, 14790.321090603594712, 14798.020933010995577, 14805.721228214413713, 14813.421976008925412, 14821.123176189785227, 14828.824828552424151, 14836.526932892476907, 14844.229489005745563, 14851.932496688223182, 14859.635955736090182, 14867.339865945710699, 14875.044227113616216, 14882.749039036551039, 14890.454301511415906, 14898.160014335313463, 14905.866177305511883, 14913.572790219475792, 14921.279852874846256, 14928.987365069448060, 14936.695326601280613, 14944.403737268541590, 14952.112596869586923, 14959.821905202970811, 14967.531662067427533, 14975.241867261858715, 14982.952520585360617, 14990.663621837200481, 14998.375170816829268, 15006.087167323878020, 15013.799611158152402, 15021.512502119641795, 15029.225840008513842, 15036.939624625112629, 15044.653855769964139, 15052.368533243763522, 15060.083656847391467, 15067.799226381912376, 15075.515241648558003, 15083.231702448734723, 15090.948608584032627, 15098.665959856218251, 15106.383756067230934, 15114.101997019190094, 15121.820682514389773, 15129.539812355296817, 15137.259386344556333, 15144.979404284989869, 15152.699865979586320, 15160.420771231523759, 15168.142119844142144, 15175.863911620959698, 15183.586146365671084, 15191.308823882134675, 15199.031943974403475, 15206.755506446679647, 15214.479511103356344, 15222.203957748992252, 15229.928846188315219, 15237.654176226231357, 15245.379947667817760, 15253.106160318326147, 15260.832813983173764, 15268.559908467952482, 15276.287443578428793, 15284.015419120534716, 15291.743834900375077, 15299.472690724229324, 15307.201986398538793, 15314.931721729926721, 15322.661896525170960, 15330.392510591233076, 15338.123563735240168, 15345.855055764486679, 15353.586986486432579, 15361.319355708719741, 15369.052163239141009, 15376.785408885671131, 15384.519092456446742, 15392.253213759775463, 15399.987772604130441, 15407.722768798155812, 15415.458202150652141, 15423.194072470605533, 15430.930379567153068, 15438.667123249608267, 15446.404303327441085, 15454.141919610301557, 15461.879971907990694, 15469.618460030482311, 15477.357383787924846, 15485.096742990612256, 15492.836537449020398, 15500.576766973787016, 15508.317431375702654, 15516.058530465736112, 15523.800064055018083, 15531.542031954841150, 15539.284433976656146, 15547.027269932086710, 15554.770539632914733, 15562.514242891091271, 15570.258379518718357, 15578.002949328070827, 15585.747952131587226, 15593.493387741862534, 15601.239255971655439, 15608.985556633886517, 15616.732289541638238, 15624.479454508156778, 15632.227051346852022, 15639.975079871283015, 15647.723539895181602, 15655.472431232441522, 15663.221753697102031, 15670.971507103371550, 15678.721691265631307, 15686.472305998400770, 15694.223351116372214, 15701.974826434396164, 15709.726731767475940, 15717.479066930776753, 15725.231831739627523, 15732.985026009511785, 15740.738649556073142, 15748.492702195106176, 15756.247183742576453, 15764.002094014600516, 15771.757432827447701, 15779.513199997549236, 15787.269395341500058, 15795.026018676036983, 15802.783069818069634, 15810.540548584653152, 15818.298454793002747, 15826.056788260495523, 15833.815548804652281, 15841.574736243161169, 15849.334350393857676, 15857.094391074735540, 15864.854858103952211, 15872.615751299803378, 15880.377070480748444, 15888.138815465408697, 15895.900986072545493, 15903.663582121089348, 15911.426603430105388, 15919.190049818833359, 15926.953921106654889, 15934.718217113104402, 15942.482937657876391, 15950.248082560814510, 15958.013651641911565, 15965.779644721316799, 15973.546061619339525, 15981.312902156421842, 15989.080166153178652, 15996.847853430364921, 16004.615963808893866, 16012.384497109818767, 16020.153453154354793, 16027.922831763871727, 16035.692632759873959, 16043.462855964033224, 16051.233501198161321, 16059.004568284226480, 16066.776057044346089, 16074.547967300783057, 16082.320298875953085, 16090.093051592419215, 16097.866225272900920, 16105.639819740263192, 16113.413834817512907, 16121.188270327813370, 16128.963126094480685, 16136.738401940969197, 16144.514097690882409, 16152.290213167982074, 16160.066748196168191, 16167.843702599488097, 16175.621076202149197, 16183.398868828488048, 16191.177080302999457, 16198.955710450325569, 16206.734759095250411, 16214.514226062707166, 16222.294111177778177, 16230.074414265687665, 16237.855135151807190, 16245.636273661650193, 16253.417829620886550, 16261.199802855318922, 16268.982193190908220, 16276.765000453748144, 16284.548224470083369, 16292.331865066305909, 16300.115922068942382, 16307.900395304683116, 16315.685284600336672, 16323.470589782875322, 16331.256310679409580, 16339.042447117195479, 16346.828998923623658, 16354.615965926237550, 16362.403347952720651, 16370.191144830903795, 16377.979356388750602, 16385.767982454373850, 16393.557022856031836, 16401.346477422117459, 16409.136345981172781, 16416.926628361878102, 16424.717324393051967, 16432.508433903662080, 16440.299956722810748, 16448.091892679745797, 16455.884241603864211, 16463.677003324679390, 16471.470177671868441, 16479.263764475243079, 16487.057763564742345, 16494.852174770472629, 16502.646997922649462, 16510.442232851652079, 16518.237879387983412, 16526.033937362302822, 16533.830406605389726, 16541.627286948172696, 16549.424578221722186, 16557.222280257235980, 16565.020392886064656, 16572.818915939689759, 16580.617849249734718, 16588.417192647950287, 16596.216945966236381, 16604.017109036627517, 16611.817681691300095, 16619.618663762557844, 16627.420055082846375, 16635.221855484756816, 16643.024064801003988, 16650.826682864448230, 16658.629709508077212, 16666.433144565031398, 16674.236987868571305, 16682.041239252102969, 16689.845898549156118, 16697.650965593413275, 16705.456440218684293, 16713.262322258913628, 16721.068611548180343, 16728.875307920701744, 16736.682411210829741, 16744.489921253043576, 16752.297837881971645, 16760.106160932362400, 16767.914890239102533, 16775.724025637224258, 16783.533566961879842, 16791.343514048356155, 16799.153866732078313, 16806.964624848609674, 16814.775788233637286, 16822.587356722979166, 16830.399330152598850, 16838.211708358587202, 16846.024491177166055, 16853.837678444688208, 16861.651269997641066, 16869.465265672643000, 16877.279665306450624, 16885.094468735940609, 16892.909675798127864, 16900.725286330161907, 16908.541300169323222, 16916.357717153012345, 16924.174537118775334, 16931.991759904285573, 16939.809385347340140, 16947.627413285867078, 16955.445843557939952, 16963.264676001741464, 16971.083910455603473, 16978.903546757970616, 16986.723584747429413, 16994.544024262690073, 17002.364865142597409, 17010.186107226123568, 17018.007750352364383, 17025.829794360550295, 17033.652239090039075, 17041.475084380319458, 17049.298330071000237, 17057.121976001839357, 17064.946022012692993, 17072.770467943573749, 17080.595313634599734, 17088.420558926030935, 17096.246203658251034, 17104.072247671767400, 17111.898690807225648, 17119.725532905384171, 17127.552773807135964, 17135.380413353504991, 17143.208451385631633, 17151.036887744787236, 17158.865722272374114, 17166.694954809918272, 17174.524585199069406, 17182.354613281600905, 17190.185038899424399, 17198.015861894560658, 17205.847082109161420, 17213.678699385516666, 17221.510713566018239, 17229.343124493207142, 17237.175932009729877, 17245.009135958371189, 17252.842736182032240, 17260.676732523745159, 17268.511124826654850, 17276.345912934044463, 17284.181096689313563, 17292.016675935981766, 17299.852650517699658, 17307.689020278245152, 17315.525785061508941, 17323.362944711512682, 17331.200499072394450, 17339.038447988416010, 17346.876791303973732, 17354.715528863576765, 17362.554660511850670, 17370.394186093555618, 17378.234105453568191, 17386.074418436888664, 17393.915124888633727, 17401.756224654058315, 17409.597717578515585, 17417.439603507504216, 17425.281882286621112, 17433.124553761601419, 17440.967617778293061, 17448.811074182667653, 17456.654922820820502, 17464.499163538963330, 17472.343796183424274, 17480.188820600669715, 17488.034236637260619, 17495.880044139896199, 17503.726242955395719, 17511.572832930691220, 17519.419813912823884, 17527.267185748987686, 17535.114948286463914, 17542.963101372657547, 17550.811644855115446, 17558.660578581479058, 17566.509902399520797, 17574.359616157125856, 17582.209719702299481, 17590.060212883174245, 17597.911095547980949, 17605.762367545092275, 17613.614028722979128, 17621.466078930247022, 17629.318518015606969, 17637.171345827886398, 17645.024562216043705, 17652.878167029139149, 17660.732160116363957, 17668.586541327014857, 17676.441310510515905, 17684.296467516396660, 17692.152012194314011, 17700.007944394030346, 17707.864263965439022, 17715.720970758535259, 17723.578064623434329, 17731.435545410378836, 17739.293412969713245, 17747.151667151894799, 17755.010307807518984, 17762.869334787272237, 17770.728747941961046, 17778.588547122522868, 17786.448732179997023, 17794.309302965539246, 17802.170259330414410, 17810.031601126011083, 17817.893328203837882, 17825.755440415501653, 17833.617937612729293, 17841.480819647371391, 17849.344086371380399, 17857.207737636825186, 17865.071773295898311, 17872.936193200894195, 17880.800997204223677, 17888.666185158414009, 17896.531756916097947, 17904.397712330031936, 17912.264051253077923, 17920.130773538214271, 17927.997879038528481, 17935.865367607231747, 17943.733239097629848, 17951.601493363144982, 17959.470130257330311, 17967.339149633829948, 17975.208551346404420, 17983.078335248934309, 17990.948501195405697, 17998.819049039913807, 18006.689978636670276, 18014.561289839992241, 18022.432982504313259, 18030.305056484183297, 18038.177511634246912, 18046.050347809272353, 18053.923564864137006, 18061.797162653820124, 18069.671141033424647, 18077.545499858159019, 18085.420238983326271, 18093.295358264371316, 18101.170857556815463, 18109.046736716307350, 18116.922995598612033, 18124.799634059589152, 18132.676651955211128, 18140.554049141563155, 18148.431825474839570, 18156.309980811347486, 18164.188515007484966, 18172.067427919781039, 18179.946719404862961, 18187.826389319467125, 18195.706437520442705, 18203.586863864737097, 18211.467668209406838, 18219.348850411635794, 18227.230410328691505, 18235.112347817961563, 18242.994662736946339, 18250.877354943233513, 18258.760424294538097, 18266.643870648676966, 18274.527693863568857, 18282.411893797241646, 18290.296470307839627, 18298.181423253601679, 18306.066752492875821, 18313.952457884115574, 18321.838539285890874, 18329.724996556866245, 18337.611829555822624, 18345.499038141639176, 18353.386622173300566, 18361.274581509900599, 18369.162916010638583, 18377.051625534819323, 18384.940709941856767, 18392.830169091263087, 18400.720002842655958, 18408.610211055762193, 18416.500793590421381, 18424.391750306560425, 18432.283081064222642, 18440.174785723553214, 18448.066864144799183, 18455.959316188320372, 18463.852141714571189, 18471.745340584118821, 18479.638912657621404, 18487.532857795857126, 18495.427175859698764, 18503.321866710128234, 18511.216930208218400, 18519.112366215158545, 18527.008174592243449, 18534.904355200858845, 18542.800907902499603, 18550.697832558769733, 18558.595129031364195, 18566.492797182090726, 18574.390836872855289, 18582.289247965665709, 18590.188030322638951, 18598.087183805979294, 18605.986708278014703, 18613.886603601153183, 18621.786869637919153, 18629.687506250938895, 18637.588513302933279, 18645.489890656725038, 18653.391638175246044, 18661.293755721522757, 18669.196243158683501, 18677.099100349965738, 18685.002327158694243, 18692.905923448310205, 18700.809889082342124, 18708.714223924427642, 18716.618927838298987, 18724.524000687801163, 18732.429442336855573, 18740.335252649518225, 18748.241431489914248, 18756.147978722281550, 18764.054894210959901, 18771.962177820383658, 18779.869829415099957, 18787.777848859732330, 18795.686236019017088, 18803.594990757803316, 18811.504112941012863, 18819.413602433687629, 18827.323459100956825, 18835.233682808055164, 18843.144273420311947, 18851.055230803158338, 18858.966554822120088, 18866.878245342832088, 18874.790302231009264, 18882.702725352482958, 18890.615514573171822, 18898.528669759096374, 18906.442190776382631, 18914.356077491240285, 18922.270329769984528, 18930.184947479021503, 18938.099930484870129, 18946.015278654132999, 18953.930991853518208, 18961.847069949821162, 18969.763512809939130, 18977.680320300878520, 18985.597492289725778, 18993.515028643669211, 19001.432929229995352, 19009.351193916092598, 19017.269822569433018, 19025.188815057601460, 19033.108171248262806, 19041.027891009183804, 19048.947974208240339, 19056.868420713377418, 19064.789230392667378, 19072.710403114255314, 19080.631938746391825, 19088.553837157414819, 19096.476098215767706, 19104.398721789984847, 19112.321707748695189, 19120.245055960625905, 19128.168766294595116, 19136.092838619515533, 19144.017272804409004, 19151.942068718362862, 19159.867226230588130, 19167.792745210372232, 19175.718625527111726, 19183.644867050283210, 19191.571469649461505, 19199.498433194326935, 19207.425757554636220, 19215.353442600251583, 19223.281488201126194, 19231.209894227307814, 19239.138660548935150, 19247.067787036245136, 19254.997273559551104, 19262.927119989297353, 19270.857326195982751, 19278.787892050218943, 19286.718817422701250, 19294.650102184226853, 19302.581746205680247, 19310.513749358040513, 19318.446111512381322, 19326.378832539863652, 19334.311912311743072, 19342.245350699369737, 19350.179147574188391, 19358.113302807723812, 19366.047816271606280, 19373.982687837549747, 19381.917917377366393, 19389.853504762955708, 19397.789449866308132, 19405.725752559512330, 19413.662412714740640, 19421.599430204252712, 19429.536804900417337, 19437.474536675676063, 19445.412625402572303, 19453.351070953740418, 19461.289873201891169, 19469.229032019848091, 19477.168547280514758, 19485.108418856874778, 19493.048646622020897, 19500.989230449125898, 19508.930170211453515, 19516.871465782358428, 19524.813117035286268, 19532.755123843777255, 19540.697486081451643, 19548.640203622027911, 19556.583276339304575, 19564.526704107182013, 19572.470486799640639, 19580.414624290755455, 19588.359116454685136, 19596.303963165686582, 19604.249164298100368, 19612.194719726354379, 19620.140629324967449, 19628.086892968549364, 19636.033510531793581, 19643.980481889484508, 19651.927806916504778, 19659.875485487806145, 19667.823517478442227, 19675.771902763553953, 19683.720641218369565, 19691.669732718200976, 19699.619177138443774, 19707.568974354609963, 19715.519124242258840, 19723.469626677069755, 19731.420481534791179, 19739.371688691262534, 19747.323248022417829, 19755.275159404271108, 19763.227422712931002, 19771.180037824578903, 19779.133004615501704, 19787.086322962062695, 19795.039992740712478, 19802.994013827992603, 19810.948386100524658, 19818.903109435021179, 19826.858183708285651, 19834.813608797197958, 19842.769384578732570, 19850.725510929943994, 19858.681987727984961, 19866.638814850070048, 19874.595992173530249, 19882.553519575762039, 19890.511396934249206, 19898.469624126573763, 19906.428201030390483, 19914.387127523437812, 19922.346403483556060, 19930.306028788654658, 19938.266003316730348, 19946.226326945885376, 19954.186999554269278, 19962.148021020151646, 19970.109391221871192, 19978.071110037853941, 19986.033177346609591, 19993.995593026727875, 20001.958356956896750, 20009.921469015876937, 20017.884929082516464, 20025.848737035743397, 20033.812892754587665, 20041.777396118137403, 20049.742247005589888, 20057.707445296200603, 20065.672990869326895, 20073.638883604413422, 20081.605123380973964, 20089.571710078613251, 20097.538643577019684, 20105.505923755961703, 20113.473550495291420, 20121.441523674955533, 20129.409843174966227, 20137.378508875433909, 20145.347520656538109, 20153.316878398556582, 20161.286581981836207, 20169.256631286814809, 20177.227026194002974, 20185.197766584009514, 20193.168852337516000, 20201.140283335287677, 20209.112059458166186, 20217.084180587087758, 20225.056646603065019, 20233.029457387183356, 20241.002612820630020, 20248.976112784654106, 20256.949957160595659, 20264.924145829882036, 20272.898678674009716, 20280.873555574573402, 20288.848776413226005, 20296.824341071718663, 20304.800249431886186, 20312.776501375628868, 20320.753096784948866, 20328.730035541910183, 20336.707317528664134, 20344.684942627449345, 20352.662910720577202, 20360.641221690442762, 20368.619875419528398, 20376.598871790381963, 20384.578210685645900, 20392.557891988031770, 20400.537915580342087, 20408.518281345452124, 20416.498989166320825, 20424.480038925987174, 20432.461430507566547, 20440.443163794261636, 20448.425238669344253, 20456.407655016166245, 20464.390412718177686, 20472.373511658894131, 20480.356951721896621, 20488.340732790875336, 20496.324854749575024, 20504.309317481838661, 20512.294120871574705, 20520.279264802775288, 20528.264749159508938, 20536.250573825927859, 20544.236738686260651, 20552.223243624812312, 20560.210088525975152, 20568.197273274206964, 20576.184797754056490, 20584.172661850145232, 20592.160865447163815, 20600.149408429904724, 20608.138290683211380, 20616.127512092029065, 20624.117072541357629, 20632.106971916306065, 20640.097210102023382, 20648.087786983767728, 20656.078702446859097, 20664.069956376701157, 20672.061548658766696, 20680.053479178619455, 20688.045747821892292, 20696.038354474290827, 20704.031299021607992, 20712.024581349713117, 20720.018201344537374, 20728.012158892110165, 20736.006453878526372, 20744.001086189957277, 20751.996055712657835, 20759.991362332948484, 20767.987005937236972, 20775.982986412000173, 20783.979303643798630, 20791.975957519258372, 20799.972947925096378, 20807.970274748095107, 20815.967937875113421, 20823.965937193093851, 20831.964272589044413, 20839.962943950064073, 20847.961951163306367, 20855.961294116019417, 20863.960972695520468, 20871.960986789199524, 20879.961336284522986, 20887.962021069033653, 20895.963041030361637, 20903.964396056184341, 20911.966086034291948, 20919.968110852500104, 20927.970470398751786, 20935.973164561040903, 20943.976193227423209, 20951.979556286052684, 20959.983253625148791, 20967.987285133003752, 20975.991650697978912, 20983.996350208533840, 20992.001383553171763, 21000.006750620479579, 21008.012451299146051, 21016.018485477892682, 21024.024853045546479, 21032.031553890985379, 21040.038587903178268, 21048.045954971163155, 21056.053654984047171, 21064.061687831017480, 21072.070053401326732, 21080.078751584314887, 21088.087782269383752, 21096.097145346018806, 21104.106840703760099, 21112.116868232238630, 21120.127227821161796, 21128.137919360291562, 21136.148942739480844, 21144.160297848640766, 21152.171984577769763, 21160.184002816928114, 21168.196352456256136, 21176.209033385963266, 21184.222045496328064, 21192.235388677712763, 21200.249062820552354, 21208.263067815329123, 21216.277403552630858, 21224.292069923096278, 21232.307066817444138, 21240.322394126465952, 21248.338051741018717, 21256.354039552046743, 21264.370357450552547, 21272.387005327607767, 21280.403983074374992, 21288.421290582064103, 21296.438927741968655, 21304.456894445462240, 21312.475190583980293, 21320.493816049023735, 21328.512770732180797, 21336.532054525094281, 21344.551667319497938, 21352.571609007172810, 21360.591879479990894, 21368.612478629893303, 21376.633406348872086, 21384.654662529013876, 21392.676247062470793, 21400.698159841453162, 21408.720400758265896, 21416.742969705250289, 21424.765866574853135, 21432.789091259572160, 21440.812643651974213, 21448.836523644706176, 21456.860731130484055, 21464.885266002092976, 21472.910128152379912, 21480.935317474271869, 21488.960833860757702, 21496.986677204909938, 21505.012847399855673, 21513.039344338798401, 21521.066167915018013, 21529.093318021852610, 21537.120794552713051, 21545.148597401082952, 21553.176726460518694, 21561.205181624631223, 21569.233962787115161, 21577.263069841737888, 21585.292502682314080, 21593.322261202756636, 21601.352345297025749, 21609.382754859154375, 21617.413489783259138, 21625.444549963493046, 21633.475935294121882, 21641.507645669440535, 21649.539680983838480, 21657.572041131767037, 21665.604726007732097, 21673.637735506334138, 21681.671069522210018, 21689.704727950102097, 21697.738710684781836, 21705.773017621122563, 21713.807648654037621, 21721.842603678545856, 21729.877882589687943, 21737.913485282610054, 21745.949411652498384, 21753.985661594630074, 21762.022235004340473, 21770.059131777026778, 21778.096351808155305, 21786.133894993279682, 21794.171761227989919, 21802.209950407956057, 21810.248462428935454, 21818.287297186721844, 21826.326454577196273, 21834.365934496297996, 21842.405736840031750, 21850.445861504482309, 21858.486308385781740, 21866.527077380156697, 21874.568168383859302, 21882.609581293250812, 21890.651316004743421, 21898.693372414800251, 21906.735750419971737, 21914.778449916873797, 21922.821470802173280, 21930.864812972613436, 21938.908476325002994, 21946.952460756223445, 21954.996766163218126, 21963.041392442984943, 21971.086339492601837, 21979.131607209208596, 21987.177195490010490, 21995.223104232285550, 22003.269333333359100, 22011.315882690640137, 22019.362752201603143, 22027.409941763777169, 22035.457451274753112, 22043.505280632209178, 22051.553429733878147, 22059.601898477547365, 22067.650686761084216, 22075.699794482410653, 22083.749221539514110, 22091.798967830469337, 22099.849033253387461, 22107.899417706456006, 22115.950121087924344, 22124.001143296118244, 22132.052484229403490, 22140.104143786251370, 22148.156121865155001, 22156.208418364691170, 22164.261033183502150, 22172.313966220299335, 22180.367217373848689, 22188.420786542985297, 22196.474673626606091, 22204.528878523669846, 22212.583401133208099, 22220.638241354303318, 22228.693399086121644, 22236.748874227883789, 22244.804666678861395, 22252.860776338409778, 22260.917203105931549, 22268.973946880905714, 22277.031007562869490, 22285.088385051429213, 22293.146079246245790, 22301.204090047049249, 22309.262417353631463, 22317.321061065842514, 22325.380021083612519, 22333.439297306922526, 22341.498889635804517, 22349.558797970385058, 22357.619022210823459, 22365.679562257362704, 22373.740418010296708, 22381.801589369992143, 22389.863076236862980, 22397.924878511403222, 22405.986996094150527, 22414.049428885733505, 22422.112176786824421, 22430.175239698153746, 22438.238617520517437, 22446.302310154787847, 22454.366317501884623, 22462.430639462789259, 22470.495275938566920, 22478.560226830319152, 22486.625492039212986, 22494.691071466499125, 22502.756965013464651, 22510.823172581465769, 22518.889694071935082, 22526.956529386356124, 22535.023678426263359, 22543.091141093278566, 22551.158917289056262, 22559.227006915331003, 22567.295409873899189, 22575.364126066619065, 22583.433155395392532, 22591.502497762205167, 22599.572153069089836, 22607.642121218152170, 22615.712402111545089, 22623.782995651497913, 22631.853901740279980, 22639.925120280255214, 22647.996651173805731, 22656.068494323419145, 22664.140649631601264, 22672.213117000956117, 22680.285896334124118, 22688.358987533825712, 22696.432390502810449, 22704.506105143915192, 22712.580131360045925, 22720.654469054134097, 22728.729118129198469, 22736.804078488316009, 22744.879350034614617, 22752.954932671284041, 22761.030826301579509, 22769.107030828825373, 22777.183546156371449, 22785.260372187669418, 22793.337508826214616, 22801.414955975546036, 22809.492713539279066, 22817.570781421094580, 22825.649159524717106, 22833.727847753951210, 22841.806846012634196, 22849.886154204690683, 22857.965772234078031, 22866.045700004837272, 22874.125937421049457, 22882.206484386879310, 22890.287340806520660, 22898.368506584243733, 22906.449981624380598, 22914.531765831314260, 22922.613859109489567, 22930.696261363424128, 22938.778972497661016, 22946.861992416830617, 22954.945321025617886, 22963.028958228755073, 22971.112903931054461, 22979.197158037361078, 22987.281720452596346, 22995.366591081736260, 23003.451769829804107, 23011.537256601906847, 23019.623051303195098, 23027.709153838855855, 23035.795564114185254, 23043.882282034490345, 23051.969307505154575, 23060.056640431630512, 23068.144280719410744, 23076.232228274049703, 23084.320483001174580, 23092.409044806452584, 23100.497913595609134, 23108.587089274449681, 23116.676571748812421, 23124.766360924601031, 23132.856456707777397, 23140.946859004368889, 23149.037567720457446, 23157.128582762168662, 23165.219904035700893, 23173.311531447299785, 23181.403464903280110, 23189.495704310007568, 23197.588249573895155, 23205.681100601435901, 23213.774257299155579, 23221.867719573656359, 23229.961487331591343, 23238.055560479660926, 23246.149938924634625, 23254.244622573329252, 23262.339611332634377, 23270.434905109483225, 23278.530503810852679, 23286.626407343821484, 23294.722615615472023, 23302.819128532966715, 23310.915946003540739, 23319.013067934462015, 23327.110494233056670, 23335.208224806727230, 23343.306259562898049, 23351.404598409088067, 23359.503241252845328, 23367.602188001790637, 23375.701438563584816, 23383.800992845961446, 23391.900850756697764, 23400.001012203640130, 23408.101477094664006, 23416.202245337739441, 23424.303316840858315, 23432.404691512085265, 23440.506369259539497, 23448.608349991394789, 23456.710633615875850, 23464.813220041265595, 23472.916109175905149, 23481.019300928193843, 23489.122795206574665, 23497.226591919552448, 23505.330690975701145, 23513.435092283616541, 23521.539795751989004, 23529.644801289534371, 23537.750108805044874, 23545.855718207341852, 23553.961629405326676, 23562.067842307951651, 23570.174356824205461, 23578.281172863156826, 23586.388290333903569, 23594.495709145623550, 23602.603429207534646, 23610.711450428909302, 23618.819772719085449, 23626.928395987437398, 23635.037320143415855, 23643.146545096500631, 23651.256070756258850, 23659.365897032272187, 23667.476023834213265, 23675.586451071791089, 23683.697178654765594, 23691.808206492958561, 23699.919534496246342, 23708.031162574552582, 23716.143090637862770, 23724.255318596213328, 23732.367846359691612, 23740.480673838443181, 23748.593800942664529, 23756.707227582610358, 23764.820953668579023, 23772.934979110934364, 23781.049303820091154, 23789.163927706515096, 23797.278850680719188, 23805.394072653281910, 23813.509593534829037, 23821.625413236037275, 23829.741531667648815, 23837.857948740438587, 23845.974664365257922, 23854.091678452998167, 23862.208990914597962, 23870.326601661065069, 23878.444510603447270, 23886.562717652857827, 23894.681222720442747, 23902.800025717420795, 23910.919126555061666, 23919.038525144667801, 23927.158221397628949, 23935.278215225356689, 23943.398506539324444, 23951.519095251060207, 23959.639981272157456, 23967.761164514235134, 23975.882644888981304, 23984.004422308145877, 23992.126496683507867, 24000.248867926911771, 24008.371535950256657, 24016.494500665492524, 24024.617761984616664, 24032.741319819677301, 24040.865174082784506, 24048.989324686088366, 24057.113771541804454, 24065.238514562191995, 24073.363553659561148, 24081.488888746276643, 24089.614519734750502, 24097.740446537460230, 24105.866669066919712, 24113.993187235697405, 24122.120000956423610, 24130.247110141768644, 24138.374514704464673, 24146.502214557283878, 24154.630209613056650, 24162.758499784660671, 24170.887084985035472, 24179.015965127156960, 24187.145140124077443, 24195.274609888856503, 24203.404374334648310, 24211.534433374643413, 24219.664786922076019, 24227.795434890238539, 24235.926377192467044, 24244.057613742163085, 24252.189144452768232, 24260.320969237771351, 24268.453088010730426, 24276.585500685232546, 24284.718207174923009, 24292.851207393505319, 24300.984501254726638, 24309.118088672395970, 24317.251969560340513, 24325.386143832478410, 24333.520611402756913, 24341.655372185174201, 24349.790426093786664, 24357.925773042694345, 24366.061412946048222, 24374.197345718053839, 24382.333571272956760, 24390.470089525078947, 24398.606900388756912, 24406.744003778392653, 24414.881399608453648, 24423.019087793425570, 24431.157068247881398, 24439.295340886405029, 24447.433905623667670, 24455.572762374369631, 24463.711911053247604, 24471.851351575125591, 24479.991083854842145, 24488.131107807304943, 24496.271423347468954, 24504.412030390321888, 24512.552928850931494, 24520.694118644390983, 24528.835599685848138, 24536.977371890505310, 24545.119435173608508, 24553.261789450461947, 24561.404434636395308, 24569.547370646836498, 24577.690597397198871, 24585.834114802994009, 24593.977922779773508, 24602.122021243110794, 24610.266410108652053, 24618.411089292105316, 24626.556058709189529, 24634.701318275710946, 24642.846867907494016, 24650.992707520428667, 24659.138837030452123, 24667.285256353552541, 24675.431965405754454, 24683.578964103144244, 24691.726252361848310, 24699.873830098054896, 24708.021697227977711, 24716.169853667899588, 24724.318299334139738, 24732.467034143079218, 24740.616058011135465, 24748.765370854769571, 24756.914972590504476, 24765.064863134906773, 24773.215042404586711, 24781.365510316212749, 24789.516266786489723, 24797.667311732173403, 24805.818645070074126, 24813.970266717045888, 24822.122176589986339, 24830.274374605844059, 24838.426860681625840, 24846.579634734371211, 24854.732696681170637, 24862.886046439165511, 24871.039683925555437, 24879.193609057561844, 24887.347821752471646, 24895.502321927626326, 24903.657109500396473, 24911.812184388214519, 24919.967546508538362, 24928.123195778902300, 24936.279132116873370, 24944.435355440069543, 24952.591865666148806, 24960.748662712823716, 24968.905746497854125, 24977.063116939039901, 24985.220773954239121, 24993.378717461346241, 25001.536947378299374, 25009.695463623109390, 25017.854266113798076, 25026.013354768470890, 25034.172729505247844, 25042.332390242310794, 25050.492336897892528, 25058.652569390254939, 25066.813087637732679, 25074.973891558685864, 25083.134981071529182, 25091.296356094728253, 25099.458016546785075, 25107.619962346256216, 25115.782193411741900, 25123.944709661875095, 25132.107511015372438, 25140.270597390954208, 25148.433968707409804, 25156.597624883583194, 25164.761565838336537, 25172.925791490604752, 25181.090301759348222, 25189.255096563600091, 25197.420175822397141, 25205.585539454878017, 25213.751187380166812, 25221.917119517489482, 25230.083335786082898, 25238.249836105238501, 25246.416620394295023, 25254.583688572638493, 25262.751040559694957, 25270.918676274941390, 25279.086595637898427, 25287.254798568130354, 25295.423284985256032, 25303.592054808937974, 25311.761107958864159, 25319.930444354791689, 25328.100063916510408, 25336.269966563875641, 25344.440152216753631, 25352.610620795087016, 25360.781372218840261, 25368.952406408043316, 25377.123723282766150, 25385.295322763115109, 25393.467204769240197, 25401.639369221353263, 25409.811816039691621, 25417.984545144561707, 25426.157556456284510, 25434.330849895250140, 25442.504425381881447, 25450.678282836655853, 25458.852422180090798, 25467.026843332732824, 25475.201546215201233, 25483.376530748144432, 25491.551796852258121, 25499.727344448285294, 25507.903173456998047, 25516.079283799233963, 25524.255675395867001, 25532.432348167814780, 25540.609302036042209, 25548.786536921546940, 25556.964052745399385, 25565.141849428677233, 25573.319926892523654, 25581.498285058129113, 25589.676923846724094, 25597.855843179571821, 25606.035042977990088, 25614.214523163351259, 25622.394283657049527, 25630.574324380540929, 25638.754645255317882, 25646.935246202912822, 25655.116127144901839, 25663.297288002930145, 25671.478728698646592, 25679.660449153780064, 25687.842449290070363, 25696.024729029330047, 25704.207288293397141, 25712.390127004164242, 25720.573245083560323, 25728.756642453558015, 25736.940319036177243, 25745.124274753477948, 25753.308509527581919, 25761.493023280610942, 25769.677815934777755, 25777.862887412306009, 25786.048237635484838, 25794.233866526636120, 25802.419774008118111, 25810.605960002343636, 25818.792424431761901, 25826.979167218880320, 25835.166188286224497, 25843.353487556374603, 25851.541064951965382, 25859.728920395660680, 25867.917053810175275, 25876.105465118253051, 25884.294154242699733, 25892.483121106350154, 25900.672365632082801, 25908.861887742830731, 25917.051687361556105, 25925.241764411275653, 25933.432118815042486, 25941.622750495942455, 25949.813659377130534, 25958.004845381772611, 25966.196308433092781, 25974.388048454369709, 25982.580065368907526, 25990.772359100057656, 25998.964929571211542, 26007.157776705807919, 26015.350900427314627, 26023.544300659268629, 26031.737977325221436, 26039.931930348790047, 26048.126159653606010, 26056.320665163373633, 26064.515446801815415, 26072.710504492712062, 26080.905838159873383, 26089.101447727163759, 26097.297333118476672, 26105.493494257763814, 26113.689931068995065, 26121.886643476209429, 26130.083631403467734, 26138.280894774881745, 26146.478433514606877, 26154.676247546824015, 26162.874336795783165, 26171.072701185748883, 26179.271340641047573, 26187.470255086031102, 26195.669444445113186, 26203.868908642718452, 26212.068647603355203, 26220.268661251531739, 26228.468949511814571, 26236.669512308828416, 26244.870349567201629, 26253.071461211646238, 26261.272847166885185, 26269.474507357695984, 26277.676441708892526, 26285.878650145325082, 26294.081132591902133, 26302.283888973557623, 26310.486919215269154, 26318.690223242065258, 26326.893800979003572, 26335.097652351192664, 26343.301777283766569, 26351.506175701913889, 26359.710847530866886, 26367.915792695879645, 26376.121011122279015, 26384.326502735395479, 26392.532267460635921, 26400.738305223410862, 26408.944615949207218, 26417.151199563526461, 26425.358055991924630, 26433.565185159997782, 26441.772586993374716, 26449.980261417731526, 26458.188208358777047, 26466.396427742271044, 26474.604919494013302, 26482.813683539836347, 26491.022719805609086, 26499.232028217254992, 26507.441608700733923, 26515.651461182034836, 26523.861585587197624, 26532.071981842302193, 26540.282649873464834, 26548.493589606841851, 26556.704800968640484, 26564.916283885082521, 26573.128038282455236, 26581.340064087082283, 26589.552361225316417, 26597.764929623543139, 26605.977769208220707, 26614.190879905814654, 26622.404261642852362, 26630.617914345886675, 26638.831837941510457, 26647.046032356363867, 26655.260497517119802, 26663.475233350498456, 26671.690239783263678, 26679.905516742193868, 26688.121064154143824, 26696.336881945979258, 26704.552970044609538, 26712.769328376998601, 26720.985956870128575, 26729.202855451043433, 26737.420024046808976, 26745.637462584541936, 26753.855170991384512, 26762.073149194533471, 26770.291397121218324, 26778.509914698712237, 26786.728701854317478, 26794.947758515369060, 26803.167084609278390, 26811.386680063456879, 26819.606544805366866, 26827.826678762521624, 26836.047081862456253, 26844.267754032749508, 26852.488695201031078, 26860.709905294956116, 26868.931384242223430, 26877.153131970571849, 26885.375148407772940, 26893.597433481645567, 26901.819987120041333, 26910.042809250855498, 26918.265899802019703, 26926.489258701498329, 26934.712885877303052, 26942.936781257485563, 26951.160944770123024, 26959.385376343343523, 26967.610075905307895, 26975.835043384224264, 26984.060278708326223, 26992.285781805894658, 27000.511552605243196, 27008.737591034725483, 27016.963897022742458, 27025.190470497724164, 27033.417311388122471, 27041.644419622472924, 27049.871795129314705, 27058.099437837216101, 27066.327347674810881, 27074.555524570761918, 27082.783968453764828, 27091.012679252558883, 27099.241656895919732, 27107.470901312655769, 27115.700412431615405, 27123.930190181697981, 27132.160234491824667, 27140.390545290960290, 27148.621122508106055, 27156.851966072306823, 27165.083075912632921, 27173.314451958209247, 27181.546094138182525, 27189.778002381746774, 27198.010176618128753, 27206.242616776602517, 27214.475322786460310, 27222.708294577052584, 27230.941532077762531, 27239.175035217991535, 27247.408803927210101, 27255.642838134903286, 27263.877137770599802, 27272.111702763864741, 27280.346533044306852, 27288.581628541563987, 27296.816989185321290, 27305.052614905285736, 27313.288505631211592, 27321.524661292896781, 27329.761081820164691, 27337.997767142878729, 27346.234717190935044, 27354.471931894284353, 27362.709411182899203, 27370.947154986792157, 27379.185163236012158, 27387.423435860640893, 27395.661972790814616, 27403.900773956684134, 27412.139839288454823, 27420.379168716350250, 27428.618762170663103, 27436.858619581678795, 27445.098740879755496, 27453.339125995276845, 27461.579774858651945, 27469.820687400337192, 27478.061863550832641, 27486.303303240660171, 27494.545006400388957, 27502.786972960624553, 27511.029202851997979, 27519.271696005183912, 27527.514452350900683, 27535.757471819888451, 27544.000754342938308, 27552.244299850863172, 27560.488108274526894, 27568.732179544822429, 27576.976513592679112, 27585.221110349062656, 27593.465969744978793, 27601.711091711455083, 27609.956476179573656, 27618.202123080449383, 27626.448032345218962, 27634.694203905080940, 27642.940637691237498, 27651.187333634959941, 27659.434291667523212, 27667.681511720271374, 27675.928993724555767, 27684.176737611782301, 27692.424743313382351, 27700.673010760827310, 27708.921539885632228, 27717.170330619326705, 27725.419382893498550, 27733.668696639761038, 27741.918271789756545, 27750.168108275185659, 27758.418206027752603, 27766.668564979234361, 27774.919185061411554, 27783.170066206112097, 27791.421208345203922, 27799.672611410580430, 27807.924275334189588, 27816.176200047990278, 27824.428385483988677, 27832.680831574238255, 27840.933538250807032, 27849.186505445803050, 27857.439733091385278, 27865.693221119734517, 27873.946969463064306, 27882.200978053628205, 27890.455246823719790, 27898.709775705658103, 27906.964564631805843, 27915.219613534558448, 27923.474922346344101, 27931.730490999631002, 27939.986319426912814, 27948.242407560723223, 27956.498755333643203, 27964.755362678268284, 27973.012229527241288, 27981.269355813241418, 27989.526741468973341, 27997.784386427178106, 28006.042290620647691, 28014.300453982181352, 28022.558876444640191, 28030.817557940903498, 28039.076498403897858, 28047.335697766560770, 28055.595155961895216, 28063.854872922915092, 28072.114848582681589, 28080.375082874292275, 28088.635575730866549, 28096.896327085560188, 28105.157336871583539, 28113.418605022168776, 28121.680131470562628, 28129.941916150080942, 28138.203958994046843, 28146.466259935834387, 28154.728818908839457, 28162.991635846512509, 28171.254710682311270, 28179.518043349751679, 28187.781633782371500, 28196.045481913744879, 28204.309587677471427, 28212.573951007205324, 28220.838571836615301, 28229.103450099413749, 28237.368585729356710, 28245.633978660203866, 28253.899628825784021, 28262.165536159940530, 28270.431700596556766, 28278.698122069537931, 28286.964800512847432, 28295.231735860459594, 28303.498928046385117, 28311.766377004692913, 28320.034082669455529, 28328.302044974792807, 28336.570263854860968, 28344.838739243841701, 28353.107471075956710, 28361.376459285467718, 28369.645703806650999, 28377.915204573830124, 28386.184961521365040, 28394.454974583637522, 28402.725243695073004, 28410.995768790133297, 28419.266549803291127, 28427.537586669084703, 28435.808879322066787, 28444.080427696822881, 28452.352231727971230, 28460.624291350184649, 28468.896606498139590, 28477.169177106567076, 28485.442003110212681, 28493.715084443880187, 28501.988421042391565, 28510.262012840586976, 28518.535859773368429, 28526.809961775663396, 28535.084318782413902, 28543.358930728631094, 28551.633797549315204, 28559.908919179531949, 28568.184295554372511, 28576.459926608942624, 28584.735812278420781, 28593.011952497978200, 28601.288347202840669, 28609.564996328263078, 28617.841899809533061, 28626.119057581963716, 28634.396469580908160, 28642.674135741759528, 28650.952055999940058, 28659.230230290879263, 28667.508658550075779, 28675.787340713050071, 28684.066276715340791, 28692.345466492537525, 28700.624909980248049, 28708.904607114123792, 28717.184557829848927, 28725.464762063122180, 28733.745219749711396, 28742.025930825377145, 28750.306895225927292, 28758.588112887213356, 28766.869583745112323, 28775.151307735519367, 28783.433284794387873, 28791.715514857682138, 28799.997997861413751, 28808.280733741616132, 28816.563722434359079, 28824.846963875745132, 28833.130458001905936, 28841.414204749013152, 28849.698204053260270, 28857.982455850888073, 28866.266960078144621, 28874.551716671332542, 28882.836725566783571, 28891.121986700854904, 28899.407500009932846, 28907.693265430443716, 28915.979282898850215, 28924.265552351629594, 28932.552073725313676, 28940.838846956441557, 28949.125871981606906, 28957.413148737428855, 28965.700677160541090, 28973.988457187620952, 28982.276488755403989, 28990.564771800611197, 28998.853306260025420, 29007.142092070451326, 29015.431129168729967, 29023.720417491727858, 29032.009956976347894, 29040.299747559536627, 29048.589789178236970, 29056.880081769464596, 29065.170625270235178, 29073.461419617618958, 29081.752464748700731, 29090.043760600612586, 29098.335307110486610, 29106.627104215534928, 29114.919151852966024, 29123.211449960032041, 29131.503998474003311, 29139.796797332208371, 29148.089846471972123, 29156.383145830684953, 29164.676695345748158, 29172.970494954592141, 29181.264544594701874, 29189.558844203551416, 29197.853393718694861, 29206.148193077689939, 29214.443242218123487, 29222.738541077622358, 29231.034089593857061, 29239.329887704487192, 29247.625935347256018, 29255.922232459892257, 29264.218778980193747, 29272.515574845972878, 29280.812619995052955, 29289.109914365322766, 29297.407457894671097, 29305.705250521055859, 29314.003292182427685, 29322.301582816784503, 29330.600122362160619, 29338.898910756604892, 29347.197947938228026, 29355.497233845118899, 29363.796768415450060, 29372.096551587401336, 29380.396583299185295, 29388.696863489032694, 29396.997392095236137, 29405.298169056084589, 29413.599194309925224, 29421.900467795116128, 29430.201989450055407, 29438.503759213173907, 29446.805777022920665, 29455.108042817802925, 29463.410556536309741, 29471.713318117013841, 29480.016327498487954, 29488.319584619344823, 29496.623089418211748, 29504.926841833785147, 29513.230841804732336, 29521.535089269815217, 29529.839584167777502, 29538.144326437413838, 29546.449316017555248, 29554.754552847054583, 29563.060036864779249, 29571.365768009654857, 29579.671746220621571, 29587.977971436648659, 29596.284443596752681, 29604.591162639950198, 29612.898128505326895, 29621.205341131957539, 29629.512800458960555, 29637.820506425516214, 29646.128458970779320, 29654.436658033995627, 29662.745103554378147, 29671.053795471219928, 29679.362733723817655, 29687.671918251500756, 29695.981348993635038, 29704.291025889626326, 29712.600948878884083, 29720.911117900872341, 29729.221532895058772, 29737.532193800961977, 29745.843100558133301, 29754.154253106135002, 29762.465651384572993, 29770.777295333067741, 29779.089184891301556, 29787.401319998949475, 29795.713700595733826, 29804.026326621413318, 29812.339198015750299, 29820.652314718576235, 29828.965676669708046, 29837.279283809028129, 29845.593136076429801, 29853.907233411828201, 29862.221575755203958, 29870.536163046519505, 29878.850995225806400, 29887.166072233096202, 29895.481394008475036, 29903.796960492043581, 29912.112771623927983, 29920.428827344287129, 29928.745127593323559, 29937.061672311258008, 29945.378461438329396, 29953.695494914820301, 29962.012772681038768, 29970.330294677325583, 29978.648060844050633, 29986.966071121594723, 29995.284325450393226, 30003.602823770896066, 30011.921566023593186, 30020.240552148978168, 30028.559782087610074, 30036.879255780058884, 30045.198973166905489, 30053.518934188796266, 30061.839138786373951, 30070.159586900328577, 30078.480278471379279, 30086.801213440263382, 30095.122391747750953, 30103.443813334648439, 30111.765478141780477, 30120.087386110011721, 30128.409537180221378, 30136.731931293339585, 30145.054568390292843, 30153.377448412062222, 30161.700571299650619, 30170.023936994086398, 30178.347545436423388, 30186.671396567769989, 30194.995490329223685, 30203.319826661925617, 30211.644405507067859, 30219.969226805827930, 30228.294290499459748, 30236.619596529213595, 30244.945144836368854, 30253.270935362266755, 30261.596968048219424, 30269.923242835615383, 30278.249759665854071, 30286.576518480364030, 30294.903519220610178, 30303.230761828064715, 30311.558246244254406, 30319.885972410709655, 30328.213940269019076, 30336.542149760767643, 30344.870600827591261, 30353.199293411136750, 30361.528227453090949, 30369.857402895166160, 30378.186819679103792, 30386.516477746674354, 30394.846377039673825, 30403.176517499920010, 30411.506899069267092, 30419.837521689601999, 30428.168385302822571, 30436.499489850870305, 30444.830835275723075, 30453.162421519355121, 30461.494248523791612, 30469.826316231079545, 30478.158624583298661, 30486.491173522554163, 30494.823962990962173, 30503.156992930704291, 30511.490263283973036, 30519.823773992950009, 30528.157524999896850, 30536.491516247100662, 30544.825747676837636, 30553.160219231434894, 30561.494930853255937, 30569.829882484671543, 30578.165074068107060, 30586.500505545995111, 30594.836176860786509, 30603.172087954979361, 30611.508238771100878, 30619.844629251696460, 30628.181259339333337, 30636.518128976611479, 30644.855238106178149, 30653.192586670673336, 30661.530174612787960, 30669.868001875238406, 30678.206068400759250, 30686.544374132114172, 30694.882919012106868, 30703.221702983544674, 30711.560725989293132, 30719.899987972210511, 30728.239488875220559, 30736.579228641236114, 30744.919207213231857, 30753.259424534175196, 30761.599880547088105, 30769.940575195018027, 30778.281508421019680, 30786.622680168184161, 30794.964090379653499, 30803.305738998551533, 30811.647625968071225, 30819.989751231405535, 30828.332114731787442, 30836.674716412468115, 30845.017556216738740, 30853.360634087912331, 30861.703949969316454, 30870.047503804315056, 30878.391295536315738, 30886.735325108718826, 30895.079592464982852, 30903.424097548577265, 30911.768840302996978, 30920.113820671769645, 30928.459038598444749, 30936.804494026593602, 30945.150186899856635, 30953.496117161834263, 30961.842284756199660, 30970.188689626636915, 30978.535331716851942, 30986.882210970608867, 30995.229327331639070, 31003.576680743768520, 31011.924271150797722, 31020.272098496578110, 31028.620162724982947, 31036.968463779921876, 31045.317001605304540, 31053.665776145102427, 31062.014787343276112, 31070.364035143840738, 31078.713519490833278, 31087.063240328305255, 31095.413197600337298, 31103.763391251064604, 31112.113821224607818, 31120.464487465123966, 31128.815389916817367, 31137.166528523903253, 31145.517903230622323, 31153.869513981251657, 31162.221360720075609, 31170.573443391433102, 31178.925761939659424, 31187.278316309137153, 31195.631106444256147, 31203.984132289457193, 31212.337393789195630, 31220.690890887937712, 31229.044623530204262, 31237.398591660512466, 31245.752795223430439, 31254.107234163551766, 31262.461908425473666, 31270.816817953829741, 31279.171962693289970, 31287.527342588546162, 31295.882957584304677, 31304.238807625319168, 31312.594892656332377, 31320.951212622167077, 31329.307767467609665, 31337.664557137541124, 31346.021581576802419, 31354.378840730303637, 31362.736334542962140, 31371.094062959731673, 31379.452025925573253, 31387.810223385491554, 31396.168655284531269, 31404.527321567718900, 31412.886222180139157, 31421.245357066898578, 31429.604726173118252, 31437.964329443959286, 31446.324166824600979, 31454.684238260240818, 31463.044543696127221, 31471.405083077494055, 31479.765856349640671, 31488.126863457870058, 31496.488104347510671, 31504.849578963923705, 31513.211287252499460, 31521.573229158642789, 31529.935404627794924, 31538.297813605415286, 31546.660456036981486, 31555.023331868007517, 31563.386441044043750, 31571.749783510640555, 31580.113359213395597, 31588.477168097910180, 31596.841210109825624, 31605.205485194826906, 31613.569993298573536, 31621.934734366797784, 31630.299708345235558, 31638.664915179651871, 31647.030354815844476, 31655.396027199622040, 31663.761932276818698, 31672.128069993319514, 31680.494440294998640, 31688.861043127784797, 31697.227878437610343, 31705.594946170447656, 31713.962246272287302, 31722.329778689152590, 31730.697543367074104, 31739.065540252136998, 31747.433769290408236, 31755.802230428023904, 31764.170923611127364, 31772.539848785872891, 31780.909005898458418, 31789.278394895103702, 31797.648015722057607, 31806.017868325572636, 31814.387952651955857, 31822.758268647499790, 31831.128816258573352, 31839.499595431538182, 31847.870606112777750, 31856.241848248711904, 31864.613321785771404, 31872.985026670441584, 31881.356962849204137, 31889.729130268566223, 31898.101528875078657, 31906.474158615314082, 31914.847019435830589, 31923.220111283269944, 31931.593434104273911, 31939.966987845487893, 31948.340772453604586, 31956.714787875342154, 31965.089034057447861, 31973.463510946661700, 31981.838218489785504, 31990.213156633617473, 31998.588325325003098, 32006.963724510806060, 32015.339354137893679, 32023.715214153195120, 32032.091304503632273, 32040.467625136163406, 32048.844175997783168, 32057.220957035482570, 32065.597968196296279, 32073.975209427288064, 32082.352680675532611, 32090.730381888122793, 32099.108313012202416, 32107.486473994922562, 32115.864864783463418, 32124.243485325016081, 32132.622335566811671, 32141.001415456092218, 32149.380724940147047, 32157.760263966269122, 32166.140032481769595, 32174.520030434010550, 32182.900257770354074, 32191.280714438191353, 32199.661400384957233, 32208.042315558079281, 32216.423459905032360, 32224.804833373309521, 32233.186435910422006, 32241.568267463899247, 32249.950327981332521, 32258.332617410273087, 32266.715135698366794, 32275.097882793230383, 32283.480858642524254, 32291.864063193941547, 32300.247496395179041, 32308.631158193966257, 32317.015048538072733, 32325.399167375264369, 32333.783514653347083, 32342.168090320148622, 32350.552894323511282, 32358.937926611335570, 32367.323187131485611, 32375.708675831905566, 32384.094392660532321, 32392.480337565339141, 32400.866510494317481, 32409.252911395484261, 32417.639540216878231, 32426.026396906567243, 32434.413481412630063, 32442.800793683196389, 32451.188333666385006, 32459.576101310365630, 32467.964096563311614, 32476.352319373425416, 32484.740769688956789, 32493.129447458126378, 32501.518352629242145, 32509.907485150601133, 32518.296844970496750, 32526.686432037316990, 32535.076246299398917, 32543.466287705159630, 32551.856556202994398, 32560.247051741371251, 32568.637774268729117, 32577.028723733572406, 32585.419900084405526, 32593.811303269761993, 32602.202933238204423, 32610.594789938302711, 32618.986873318681319, 32627.379183327953797, 32635.771719914766436, 32644.164483027809183, 32652.557472615761071, 32660.950688627355703, 32669.344131011333957, 32677.737799716469453, 32686.131694691535813, 32694.525815885364864, 32702.920163246788434, 32711.314736724656541, 32719.709536267855583, 32728.104561825297424, 32736.499813345912116, 32744.895290778636991, 32753.290994072463945, 32761.686923176388518, 32770.083078039438988, 32778.479458610629081, 32786.876064839059836, 32795.272896673806827, 32803.669954063989280, 32812.067236958726426, 32820.464745307195699, 32828.862479058574536, 32837.260438162069477, 32845.658622566901613, 32854.057032222328417, 32862.455667077614635, 32870.854527082075947, 32879.253612185006205, 32887.652922335764742, 32896.052457483718172, 32904.452217578233103, 32912.852202568748908, 32921.252412404683128, 32929.652847035489685, 32938.053506410651607, 32946.454390479666472, 32954.855499192060961, 32963.256832497390860, 32971.658390345204680, 32980.060172685109137, 32988.462179466710950, 32996.864410639653215, 33005.266866153600859, 33013.669545958226081, 33022.072450003244739, 33030.475578238372691, 33038.878930613362172, 33047.282507077994524, 33055.686307582058362, 33064.090332075364131, 33072.494580507765932, 33080.899052829117863, 33089.303748989317683, 33097.708668938241317, 33106.113812625852006, 33114.519180002083885, 33122.924771016922023, 33131.330585620358761, 33139.736623762408271, 33148.142885393113829, 33156.549370462540537, 33164.956078920782602, 33173.363010717941506, 33181.770165804147837, 33190.177544129561284, 33198.585145644348813, 33206.992970298706496, 33215.401018042859505, 33223.809288827054843, 33232.217782601546787, 33240.626499316633272, 33249.035438922604953, 33257.444601369803422, 33265.853986608584819, 33274.263594589319837, 33282.673425262415549, 33291.083478578271752, 33299.493754487339174, 33307.904252940090373, 33316.314973886990629, 33324.725917278570705, 33333.137083065332263, 33341.548471197856998, 33349.960081626697502, 33358.371914302450023, 33366.783969175739912, 33375.196246197214350, 33383.608745317513240, 33392.021466487341968, 33400.434409657376818, 33408.847574778366834, 33417.260961801061057, 33425.674570676223084, 33434.088401354638336, 33442.502453787135892, 33450.916727924552106, 33459.331223717723333, 33467.745941117551411, 33476.160880074930901, 33484.576040540778195, 33492.991422466046060, 33501.407025801709096, 33509.822850498734624, 33518.238896508140897, 33526.655163780975272, 33535.071652268256003, 33543.488361921103206, 33551.905292690578790, 33560.322444527810148, 33568.739817383953778, 33577.157411210144346, 33585.575225957582006, 33593.993261577459634, 33602.411518021013762, 33610.829995239495474, 33619.248693184170406, 33627.667611806311470, 33636.086751057249785, 33644.506110888316471, 33652.925691250864475, 33661.345492096275848, 33669.765513375939918, 33678.185755041275115, 33686.606217043736251, 33695.026899334770860, 33703.447801865870133, 33711.868924588539812, 33720.290267454292916, 33728.711830414693395, 33737.133613421305199, 33745.555616425714106, 33753.977839379549550, 33762.400282234411861, 33770.822944941988681, 33779.245827453931270, 33787.668929721941822, 33796.092251697751635, 33804.515793333092006, 33812.939554579708783, 33821.363535389406024, 33829.787735713973234, 33838.212155505236296, 33846.636794715050200, 33855.061653295262659, 33863.486731197757763, 33871.912028374477813, 33880.337544777314179, 33888.763280358238262, 33897.189235069228744, 33905.615408862257027, 33914.041801689352724, 33922.468413502530893, 33930.895244253872079, 33939.322293895434996, 33947.749562379314739, 33956.177049657650059, 33964.604755682572431, 33973.032680406220607, 33981.460823780813371, 33989.889185758518579, 33998.317766291576845, 34006.746565332228784, 34015.175582832744112, 34023.604818745407101, 34032.034273022509296, 34040.463945616393175, 34048.893836479415768, 34057.323945563919551, 34065.754272822319763, 34074.184818207002536, 34082.615581670419488, 34091.046563165014959, 34099.477762643262395, 34107.909180057664344, 34116.340815360716078, 34124.772668504963804, 34133.204739442968275, 34141.637028127290250, 34150.069534510534140, 34158.502258545326185, 34166.935200184299902, 34175.368359380103357, 34183.801736085435550, 34192.235330252966378, 34200.669141835445771, 34209.103170785601833, 34217.537417056191771, 34225.971880600009172, 34234.406561369854899, 34242.841459318544366, 34251.276574398922094, 34259.711906563854427, 34268.147455766236817, 34276.583221958957438, 34285.019205094948120, 34293.455405127155245, 34301.891822008539748, 34310.328455692098942, 34318.765306130830140, 34327.202373277774313, 34335.639657085957879, 34344.077157508465461, 34352.514874498381687, 34360.952808008813008, 34369.390957992887706, 34377.829324403755891, 34386.267907194589498, 34394.706706318582292, 34403.145721728935314, 34411.584953378878708, 34420.024401221671724, 34428.464065210573608, 34436.903945298894541, 34445.344041439915600, 34453.784353586997895, 34462.224881693480711, 34470.665625712732435, 34479.106585598150559, 34487.547761303147126, 34495.989152781141456, 34504.430759985611076, 34512.872582869997132, 34521.314621387806255, 34529.756875492566905, 34538.199345137785713, 34546.642030277027516, 34555.084930863864429, 34563.528046851875843, 34571.971378194692079, 34580.414924845936184, 34588.858686759274860, 34597.302663888367533, 34605.746856186888181, 34614.191263608590816, 34622.635886107163969, 34631.080723636383482, 34639.525776150025195, 34647.971043601872225, 34656.416525945729518, 34664.862223135445674, 34673.308135124854743, 34681.754261867834430, 34690.200603318284266, 34698.647159430096508, 34707.093930157221621, 34715.540915453595517, 34723.988115273183212, 34732.435529569986102, 34740.883158298020135, 34749.331001411308534, 34757.779058863889077, 34766.227330609835917, 34774.675816603252315, 34783.124516798212426, 34791.573431148877717, 34800.022559609380551, 34808.471902133889671, 34816.921458676588372, 34825.371229191681778, 34833.821213633404113, 34842.271411956004158, 34850.721824113723414, 34859.172450060876145, 34867.623289751740231, 34876.074343140651763, 34884.525610181946831, 34892.977090829997906, 34901.428785039184731, 34909.880692763908883, 34918.332813958579209, 34926.785148577640939, 34935.237696575568407, 34943.690457906821393, 34952.143432525910612, 34960.596620387354051, 34969.050021445684251, 34977.503635655455582, 34985.957462971251516, 34994.411503347655525, 35002.865756739309290, 35011.320223100803560, 35019.774902386838221, 35028.229794552047679, 35036.684899551153649, 35045.140217338863295, 35053.595747869883780, 35062.051491098980478, 35070.507446980926034, 35078.963615470507648, 35087.419996522527072, 35095.876590091815160, 35104.333396133217320, 35112.790414601586235, 35121.247645451832796, 35129.705088638846064, 35138.162744117544207, 35146.620611842874496, 35155.078691769798752, 35163.536983853293350, 35171.995488048363768, 35180.454204310022760, 35188.913132593312184, 35197.372272853266622, 35205.831625045000692, 35214.291189123578079, 35222.750965044120676, 35231.210952761779481, 35239.671152231669112, 35248.131563408984221, 35256.592186248919461, 35265.053020706662210, 35273.514066737450776, 35281.975324296538020, 35290.436793339184078, 35298.898473820663639, 35307.360365696302324, 35315.822468921396649, 35324.284783451301337, 35332.747309241378389, 35341.210046246997081, 35349.672994423563068, 35358.136153726489283, 35366.599524111203209, 35375.063105533175985, 35383.526897947864200, 35391.990901310768095, 35400.455115577387915, 35408.919540703267558, 35417.384176643950923, 35425.849023354989185, 35434.314080791991728, 35442.779348910531553, 35451.244827666261699, 35459.710517014813377, 35468.176416911839624, 35476.642527313029859, 35485.108848174073501, 35493.575379450689070, 35502.042121098602365, 35510.509073073590116, 35518.976235331399948, 35527.443607827830419, 35535.911190518694639, 35544.378983359812992, 35552.846986307042243, 35561.315199316239159, 35569.783622343282332, 35578.252255344079458, 35586.721098274552787, 35595.190151090646395, 35603.659413748304360, 35612.128886203507136, 35620.598568412249733, 35629.068460330556263, 35637.538561914443562, 35646.008873119950294, 35654.479393903173332, 35662.950124220173166, 35671.421064027075772, 35679.892213279985299, 35688.363571935056825, 35696.835139948452706, 35705.306917276335298, 35713.778903874917887, 35722.251099700391933, 35730.723504709021654, 35739.196118857049441, 35747.668942100724962, 35756.141974396348814, 35764.615215700243425, 35773.088665968709392, 35781.562325158105523, 35790.036193224783347, 35798.510270125123498, 35806.984555815521162, 35815.459050252400630, 35823.933753392208018, 35832.408665191360342, 35840.883785606361926, 35849.359114593680715, 35857.834652109821036, 35866.310398111330869, 35874.786352554729092, 35883.262515396585513, 35891.738886593484494, 35900.215466102010396, 35908.692253878798510, 35917.169249880455027, 35925.646454063651618, 35934.123866385059955, 35942.601486801358988, 35951.079315269256767, 35959.557351745468623, 35968.035596186746261, 35976.514048549841391, 35984.992708791549376, 35993.471576868636475, 36001.950652737941709, 36010.429936356289545, 36018.909427680519002, 36027.389126667505479, 36035.869033274138928, 36044.349147457309300, 36052.829469173942925, 36061.309998380987963, 36069.790735035399848, 36078.271679094141291, 36086.752830514211382, 36095.234189252623764, 36103.715755266392080, 36112.197528512573626, 36120.679508948240255, 36129.161696530456538, 36137.644091216330708, 36146.126692962970992, 36154.609501727529278, 36163.092517467150174, 36171.575740138985566, 36180.059169700245548, 36188.542806108140212, 36197.026649319879652, 36205.510699292695790, 36213.994955983871478, 36222.479419350660464, 36230.964089350374707, 36239.448965940311609, 36247.934049077804957, 36256.419338720210362, 36264.904834824883437, 36273.390537349208898, 36281.876446250593290, 36290.362561486428604, 36298.848883014186868, 36307.335410791289178, 36315.822144775214838, 36324.309084923464980, 36332.796231193518906, 36341.283583542935958, 36349.771141929217265, 36358.258906309936719, 36366.746876642682764, 36375.235052885022014, 36383.723434994593845, 36392.212022929001250, 36400.700816645890882, 36409.189816102945770, 36417.679021257812565, 36426.168432068217953, 36434.658048491859518, 36443.147870486478496, 36451.637898009830678, 36460.128131019657303, 36468.618569473765092, 36477.109213329946215, 36485.600062546021945, 36494.091117079835385, 36502.582376889222360, 36511.073841932069627, 36519.565512166256667, 36528.057387549684790, 36536.549468040284410, 36545.041753596000490, 36553.534244174777996, 36562.026939734590997, 36570.519840233435389, 36579.012945629321621, 36587.506255880274693, 36595.999770944326883, 36604.493490779561398, 36612.987415344046894, 36621.481544595859305, 36629.975878493132768, 36638.470416993979597, 36646.965160056555760, 36655.460107639031776, 36663.955259699570888, 36672.450616196372721, 36680.946177087673277, 36689.441942331664904, 36697.937911886634538, 36706.434085710825457, 36714.930463762531872, 36723.427046000040718, 36731.923832381682587, 36740.420822865773516, 36748.918017410695029, 36757.415415974770440, 36765.913018516424927, 36774.410824994040013, 36782.908835366048152, 36791.407049590859970, 36799.905467626944301, 36808.404089432784531, 36816.902914966842218, 36825.401944187629852, 36833.901177053667197, 36842.400613523488573, 36850.900253555664676, 36859.400097108751652, 36867.900144141327473, 36876.400394612013770, 36884.900848479417618, 36893.401505702197028, 36901.902366238995455, 36910.403430048478185, 36918.904697089354158, 36927.406167320295935, 36935.907840700048837, 36944.409717187358183, 36952.911796740969294, 36961.414079319649318, 36969.916564882194507, 36978.419253387401113, 36986.922144794116321, 36995.425239061150933, 37003.928536147373961, 37012.432036011661694, 37020.935738612883142, 37029.439643909972801, 37037.943751861843339, 37046.448062427436525, 37054.952575565686857, 37063.457291235587036, 37071.962209396137041, 37080.467330006322300, 37088.972653025164618, 37097.478178411707631, 37105.983906125016802, 37114.489836124157591, 37122.995968368210015, 37131.502302816290467, 37140.008839427515341, 37148.515578161037411, 37157.022518975980347, 37165.529661831547855, 37174.037006686907262, 37182.544553501276823, 37191.052302233860246, 37199.560252843904891, 37208.068405290672672, 37216.576759533425502, 37225.085315531447122, 37233.594073244035826, 37242.103032630533562, 37250.612193650245899, 37259.121556262543891, 37267.631120426791313, 37276.140886102388322, 37284.650853248713247, 37293.161021825188072, 37301.671391791263886, 37310.181963106369949, 37318.692735729986452, 37327.203709621586313, 37335.714884740671550, 37344.226261046773288, 37352.737838499400823, 37361.249617058114382, 37369.761596682474192, 37378.273777332062309, 37386.786158966489893, 37395.298741545346275, 37403.811525028278993, 37412.324509374913760, 37420.837694544941769, 37429.351080498003284, 37437.864667193833156, 37446.378454592115304, 37454.892442652577301, 37463.406631334975827, 37471.921020599060284, 37480.435610404609179, 37488.950400711408292, 37497.465391479272512, 37505.980582668009447, 37514.495974237477640, 37523.011566147535632, 37531.527358358027413, 37540.043350828869734, 37548.559543519950239, 37557.075936391200230, 37565.592529402551008, 37574.109322513933876, 37582.626315685352893, 37591.143508876768465, 37599.660902048184653, 37608.178495159627346, 37616.696288171115157, 37625.214281042703078, 37633.732473734446103, 37642.250866206442879, 37650.769458418762952, 37659.288250331548625, 37667.807241904905823, 37676.326433098984126, 37684.845823873947666, 37693.365414189967851, 37701.885204007223365, 37710.405193285943824, 37718.925381986344291, 37727.445770068647107, 37735.966357493132818, 37744.487144220067421, 37753.008130209724186, 37761.529315422405489, 37770.050699818442808, 37778.572283358153072, 37787.094066001911415, 37795.616047710056591, 37804.138228442985564, 37812.660608161088021, 37821.183186824782752, 37829.705964394488547, 37838.228940830660576, 37846.752116093754012, 37855.275490144245850, 37863.799062942620367, 37872.322834449405491, 37880.846804625092773, 37889.370973430246522, 37897.895340825409221, 37906.419906771159731, 37914.944671228069637, 37923.469634156754182, 37931.994795517821331, 37940.520155271908152, 37949.045713379651716, 37957.571469801725470, 37966.097424498810142, 37974.623577431601007, 37983.149928560800618, 37991.676477847140632, 38000.203225251359981, 38008.730170734219428, 38017.257314256494283, 38025.784655778952583, 38034.312195262427849, 38042.839932667724497, 38051.367867955668771, 38059.896001087123295, 38068.424332022950693, 38076.952860724028142, 38085.481587151261920, 38094.010511265543755, 38102.539633027830860, 38111.068952399044065, 38119.598469340147858, 38128.128183812121279, 38136.658095775943366, 38145.188205192629539, 38153.718512023187941, 38162.249016228663095, 38170.779717770114075, 38179.310616608578130, 38187.841712705157988, 38196.373006020956382, 38204.904496517083317, 38213.436184154648799, 38221.968068894799217, 38230.500150698710058, 38239.032429527549539, 38247.564905342500424, 38256.097578104760032, 38264.630447775554785, 38273.163514316125656, 38281.696777687728172, 38290.230237851603306, 38298.763894769050239, 38307.297748401360877, 38315.831798709848954, 38324.366045655828202, 38332.900489200648735, 38341.435129305675218, 38349.969965932265040, 38358.504999041811971, 38367.040228595709777, 38375.575654555381334, 38384.111276882271341, 38392.647095537802670, 38401.183110483463679, 38409.719321680713620, 38418.255729091055400, 38426.792332675991929, 38435.329132397055218, 38443.866128215762728, 38452.403320093682851, 38460.940707992383977, 38469.478291873449052, 38478.016071698475571, 38486.554047429075581, 38495.092219026875682, 38503.630586453517026, 38512.169149670669867, 38520.707908640004462, 38529.246863323205616, 38537.786013681972690, 38546.325359678026871, 38554.864901273111172, 38563.404638428961334, 38571.944571107342199, 38580.484699270047713, 38589.025022878849995, 38597.565541895572096, 38606.106256282022514, 38614.647166000053403, 38623.188271011524193, 38631.729571278279764, 38640.271066762223199, 38648.812757425243035, 38657.354643229249632, 38665.896724136167904, 38674.439000107944594, 38682.981471106555546, 38691.524137093940226, 38700.066998032103584, 38708.610053883050568, 38717.153304608778853, 38725.696750171344320, 38734.240390532773745, 38742.784225655137561, 38751.328255500506202, 38759.872480030971928, 38768.416899208648829, 38776.961512995636440, 38785.506321354092506, 38794.051324246138392, 38802.596521633960947, 38811.141913479739742, 38819.687499745654350, 38828.233280393927998, 38836.779255386776640, 38845.325424686423503, 38853.871788255135471, 38862.418346055186703, 38870.965098048844084, 38879.512044198410877, 38888.059184466197621, 38896.606518814514857, 38905.154047205731331, 38913.701769602186687, 38922.249685966242396, 38930.797796260296309, 38939.346100446739001, 38947.894598487975600, 38956.443290346454887, 38964.992175984603819, 38973.541255364885728, 38982.090528449756675, 38990.639995201730926, 38999.189655583279091, 39007.739509556929988, 39016.289557085219712, 39024.839798130684358, 39033.390232655881846, 39041.940860623384651, 39050.491681995779800, 39059.042696735668869, 39067.593904805675265, 39076.145306168429670, 39084.696900786555489, 39093.248688622741611, 39101.800669639633270, 39110.352843799948459, 39118.905211066376069, 39127.457771401626815, 39136.010524768440519, 39144.563471129571553, 39153.116610447752464, 39161.669942685781280, 39170.223467806448753, 39178.777185772552912, 39187.331096546899062, 39195.885200092336163, 39204.439496371705900, 39212.993985347864509, 39221.548666983690055, 39230.103541242075153, 39238.658608085919695, 39247.213867478138127, 39255.769319381673995, 39264.324963759470847, 39272.880800574479508, 39281.436829789672629, 39289.993051368059241, 39298.549465272633824, 39307.106071466412686, 39315.662869912404858, 39324.219860573699407, 39332.777043413334468, 39341.334418394377280, 39349.891985479931463, 39358.449744633107912, 39367.007695816995692, 39375.565838994734804, 39384.124174129479798, 39392.682701184392499, 39401.241420122634736, 39409.800330907404714, 39418.359433501900639, 39426.918727869327995, 39435.478213972935919, 39444.037891775951721, 39452.597761241660919, 39461.157822333298100, 39469.718075014170608, 39478.278519247585791, 39486.839154996843718, 39495.399982225280837, 39503.961000896240876, 39512.522210973067558, 39521.083612419155543, 39529.645205197863106, 39538.206989272606734, 39546.768964606802911, 39555.331131163860846, 39563.893488907226129, 39572.456037800366175, 39581.018777806741127, 39589.581708889832953, 39598.144831013130897, 39606.708144140160584, 39615.271648234447639, 39623.835343259510410, 39632.399229178910900, 39640.963305956232944, 39649.527573555038543, 39658.092031938918808, 39666.656681071486673, 39675.221520916369627, 39683.786551437209710, 39692.351772597627132, 39700.917184361314867, 39709.482786691936781, 39718.048579553193122, 39726.614562908776861, 39735.180736722424626, 39743.747100957843941, 39752.313655578800535, 39760.880400549045589, 39769.447335832352110, 39778.014461392522207, 39786.581777193336166, 39795.149283198617923, 39803.716979372213245, 39812.284865677938797, 39820.852942079683999, 39829.421208541280066, 39837.989665026630973, 39846.558311499633419, 39855.127147924198653, 39863.696174264252477, 39872.265390483742522, 39880.834796546609141, 39889.404392416807241, 39897.974178058342659, 39906.544153435206681, 39915.114318511390593, 39923.684673250922060, 39932.255217617828748, 39940.825951576174702, 39949.396875090016692, 39957.967988123418763, 39966.539290640481340, 39975.110782605297572, 39983.682463982011541, 39992.254334734709118, 40000.826394827570766, 40009.398644224726013, 40017.971082890377147, 40026.543710788682802, 40035.116527883845265, 40043.689534140088654, 40052.262729521607980, 40060.836113992678293, 40069.409687517530983, 40077.983450060441101, 40086.557401585669140, 40095.131542057533807, 40103.705871440310148, 40112.280389698353247, 40120.855096795967256, 40129.429992697507259, 40138.005077367342892, 40146.580350769836514, 40155.155812869372312, 40163.731463630363578, 40172.307303017209051, 40180.883330994351127, 40189.459547526217648, 40198.035952577258286, 40206.612546111951815, 40215.189328094791563, 40223.766298490234476, 40232.343457262824813, 40240.920804377055902, 40249.498339797486551, 40258.076063488639193, 40266.653975415094465, 40275.232075541418453, 40283.810363832184521, 40292.388840252031514, 40300.967504765525518, 40309.546357337327208, 40318.125397932068154, 40326.704626514401753, 40335.284043049003230, 40343.863647500540537, 40352.443439833710727, 40361.023420013225405, 40369.603588003810728, 40378.183943770185579, 40386.764487277097942, 40395.345218489317631, 40403.926137371614459, 40412.507243888772791, 40421.088538005598821, 40429.670019686891465, 40438.251688897493295, 40446.833545602232334, 40455.415589765972982, 40463.997821353565087, 40472.580240329902153, 40481.162846659863135, 40489.745640308370639, 40498.328621240318171, 40506.911789420664718, 40515.495144814325613, 40524.078687386288948, 40532.662417101499159, 40541.246333924958890, 40549.830437821663509, 40558.414728756608383, 40566.999206694832537, 40575.583871601374994, 40584.168723441260227, 40592.753762179570913, 40601.338987781375181, 40609.924400211762986, 40618.509999435846112, 40627.095785418729065, 40635.681758125538181, 40644.267917521421623, 40652.854263571527554, 40661.440796241025964, 40670.027515495086845, 40678.614421298923844, 40687.201513617706951, 40695.788792416693468, 40704.376257661089767, 40712.963909316153149, 40721.551747347148194, 40730.139771719317650, 40738.727982397977030, 40747.316379348398186, 40755.904962535896630, 40764.493731925802422, 40773.082687483445625, 40781.671829174178129, 40790.261156963351823, 40798.850670816347701, 40807.440370698546758, 40816.030256575366366, 40824.620328412194795, 40833.210586174463970, 40841.801029827620368, 40850.391659337110468, 40858.982474668395298, 40867.573475786957715, 40876.164662658280577, 40884.756035247875843, 40893.347593521240924, 40901.939337443924160, 40910.531266981459339, 40919.123382099387527, 40927.715682763286168, 40936.308168938739982, 40944.900840591326414, 40953.493697686666565, 40962.086740190366982, 40970.679968068056041, 40979.273381285391224, 40987.866979808008182, 40996.460763601586223, 41005.054732631811930, 41013.648886864364613, 41022.243226264945406, 41030.837750799299101, 41039.432460433148663, 41048.027355132224329, 41056.622434862292721, 41065.217699589135009, 41073.813149278517812, 41082.408783896244131, 41091.004603408109688, 41099.600607779953862, 41108.196796977601480, 41116.793170966891921, 41125.389729713679117, 41133.986473183853377, 41142.583401343290461, 41151.180514157880680, 41159.777811593543447, 41168.375293616183626, 41176.972960191749735, 41185.570811286190292, 41194.168846865453816, 41202.767066895503376, 41211.365471342352976, 41219.964060171958408, 41228.562833350377332, 41237.161790843594645, 41245.760932617660728, 41254.360258638618689, 41262.959768872518907, 41271.559463285448146, 41280.159341843485890, 41288.759404512718902, 41297.359651259270322, 41305.960082049256016, 41314.560696848806401, 41323.161495624088275, 41331.762478341224778, 41340.363644966419088, 41348.964995465845277, 41357.566529805691971, 41366.168247952176898, 41374.770149871525064, 41383.372235529954196, 41391.974504893732956, 41400.576957929100899, 41409.179594602326688, 41417.782414879722637, 41426.385418727542856, 41434.988606112128764, 41443.591976999792678, 41452.195531356846914, 41460.799269149661995, 41469.403190344586619, 41478.007294907998585, 41486.611582806261140, 41495.216054005781189, 41503.820708472980186, 41512.425546174243209, 41521.030567076020816, 41529.635771144756291, 41538.241158346914744, 41546.846728648946737, 41555.452482017339207, 41564.058418418600922, 41572.664537819204270, 41581.270840185687121, 41589.877325484587345, 41598.483993682428263, 41607.090844745776849, 41615.697878641200077, 41624.305095335264923, 41632.912494794560189, 41641.520076985696505, 41650.127841875299055, 41658.735789429993019, 41667.343919616403582, 41675.952232401177753, 41684.560727751006198, 41693.169405632543203, 41701.778266012486711, 41710.387308857527387, 41718.996534134392277, 41727.605941809801152, 41736.215531850481057, 41744.825304223195417, 41753.435258894685830, 41762.045395831752103, 41770.655715001150384, 41779.266216369695030, 41787.876899904207676, 41796.487765571480850, 41805.098813338365289, 41813.710043171719008, 41822.321455038370914, 41830.933048905215401, 41839.544824739110481, 41848.156782506972377, 41856.768922175688203, 41865.381243712203286, 41873.993747083426570, 41882.606432256296102, 41891.219299197779037, 41899.832347874842526, 41908.445578254453721, 41917.058990303608880, 41925.672583989311534, 41934.286359278587042, 41942.900316138424387, 41951.514454535899858, 41960.128774438053370, 41968.743275811932108, 41977.357958624626917, 41985.972822843214090, 41994.587868434806296, 42003.203095366479829, 42011.818503605398291, 42020.434093118674355, 42029.049863873442519, 42037.665815836888214, 42046.281948976160493, 42054.898263258444786, 42063.514758650933800, 42072.131435120834794, 42080.748292635369580, 42089.365331161752692, 42097.982550667235046, 42106.599951119067555, 42115.217532484508411, 42123.835294730852183, 42132.453237825364340, 42141.071361735368555, 42149.689666428137571, 42158.308151871038717, 42166.926818031388393, 42175.545664876539377, 42184.164692373837170, 42192.783900490656379, 42201.403289194386161, 42210.022858452422952, 42218.642608232163184, 42227.262538501032395, 42235.882649226448848, 42244.502940375867183, 42253.123411916742043, 42261.744063816520793, 42270.364896042701730, 42278.985908562754048, 42287.607101344197872, 42296.228474354509672, 42304.850027561260504, 42313.471760931948666, 42322.093674434130662, 42330.715768035377550, 42339.338041703238559, 42347.960495405313850, 42356.583129109189031, 42365.205942782478814, 42373.828936392776086, 42382.452109907717386, 42391.075463294968358, 42399.698996522165544, 42408.322709556952759, 42416.946602367024752, 42425.570674920068996, 42434.194927183780237, 42442.819359125860501, 42451.443970714055467, 42460.068761916059884, 42468.693732699648535, 42477.318883032574377, 42485.944212882597640, 42494.569722217500384, 42503.195411005064670, 42511.821279213108937, 42520.447326809437072, 42529.073553761874791, 42537.699960038262361, 42546.326545606454602, 42554.953310434291780, 42563.580254489665094, 42572.207377740458469, 42580.834680154555826, 42589.462161699870194, 42598.089822344314598, 42606.717662055809342, 42615.345680802318384, 42623.973878551783855, 42632.602255272162438, 42641.230810931425367, 42649.859545497572981, 42658.488458938598342, 42667.117551222516340, 42675.746822317334590, 42684.376272191097087, 42693.005900811840547, 42701.635708147630794, 42710.265694166519097, 42718.895858836593106, 42727.526202125955024, 42736.156724002663395, 42744.787424434871355, 42753.418303390695655, 42762.049360838267603, 42770.680596745718503, 42779.312011081230594, 42787.943603812949732, 42796.575374909079983, 42805.207324337789032, 42813.839452067295497, 42822.471758065817994, 42831.104242301560589, 42839.736904742792831, 42848.369745357733336, 42857.002764114651654, 42865.635960981824610, 42874.269335927536304, 42882.902888920063560, 42891.536619927726861, 42900.170528918839409, 42908.804615861728962, 42917.438880724723276, 42926.073323476201040, 42934.707944084490009, 42943.342742517976149, 42951.977718745052698, 42960.612872734098346, 42969.248204453535436, 42977.883713871764485, 42986.519400957229664, 42995.155265678360593, 43003.791308003615995, 43012.427527901454596, 43021.063925340349670, 43029.700500288781768, 43038.337252715267823, 43046.974182588281110, 43055.611289876367664, 43064.248574548037141, 43072.886036571842851, 43081.523675916338107, 43090.161492550083494, 43098.799486441639601, 43107.437657559603394, 43116.076005872579117, 43124.714531349156459, 43133.353233957976045, 43141.992113667649392, 43150.631170446824399, 43159.270404264148965, 43167.909815088285541, 43176.549402887918404, 43185.189167631717282, 43193.829109288395557, 43202.469227826659335, 43211.109523215200170, 43219.749995422782376, 43228.390644418126612, 43237.031470169975364, 43245.672472647122049, 43254.313651818316430, 43262.955007652366476, 43271.596540118029225, 43280.238249184141750, 43288.880134819519299, 43297.522196992977115, 43306.164435673366825, 43314.806850829540053, 43323.449442430348427, 43332.092210444679949, 43340.735154841393523, 43349.378275589413533, 43358.021572657620709, 43366.665046014946711, 43375.308695630315924, 43383.952521472667286, 43392.596523510947009, 43401.240701714123134, 43409.885056051149149, 43418.529586491036753, 43427.174293002746708, 43435.819175555305264, 43444.464234117716842, 43453.109468659014965, 43461.754879148225882, 43470.400465554412222, 43479.046227846622060, 43487.692165993932576, 43496.338279965420952, 43504.984569730171643, 43513.631035257283656, 43522.277676515885105, 43530.924493475104100, 43539.571486104054202, 43548.218654371892626, 43556.865998247769312, 43565.513517700863304, 43574.161212700346368, 43582.809083215404826, 43591.457129215232271, 43600.105350669058680, 43608.753747546099476, 43617.402319815555529, 43626.051067446715024, 43634.699990408807935, 43643.349088671115169, 43651.998362202881253, 43660.647810973416199, 43669.297434952022741, 43677.947234107981785, 43686.597208410632447, 43695.247357829292014, 43703.897682333314151, 43712.548181892037974, 43721.198856474831700, 43729.849706051056273, 43738.500730590109015, 43747.151930061372695, 43755.803304434251913, 43764.454853678165819, 43773.106577762540837, 43781.758476656817948, 43790.410550330416299, 43799.062798752842355, 43807.715221893507987, 43816.367819721934211, 43825.020592207583832, 43833.673539319985139, 43842.326661028622766, 43850.979957303032279, 43859.633428112741967, 43868.287073427294672, 43876.940893216240511, 43885.594887449151429, 43894.249056095592096, 43902.903399125149008, 43911.557916507430491, 43920.212608212044870, 43928.867474208578642, 43937.522514466691064, 43946.177728955997736, 43954.833117646165192, 43963.488680506852688, 43972.144417507712205, 43980.800328618432104, 43989.456413808729849, 43998.112673048264696, 44006.769106306768663, 44015.425713553966489, 44024.082494759590190, 44032.739449893386336, 44041.396578925094218, 44050.053881824496784, 44058.711358561362431, 44067.369009105474106, 44076.026833426629310, 44084.684831494640093, 44093.343003279303957, 44102.001348750483885, 44110.659867877991928, 44119.318560631683795, 44127.977426981415192, 44136.636466897063656, 44145.295680348492169, 44153.955067305614648, 44162.614627738315903, 44171.274361616517126, 44179.934268910132232, 44188.594349589096964, 44197.254603623354342, 44205.915030982861936, 44214.575631637570041, 44223.236405557458056, 44231.897352712527208, 44240.558473072742345, 44249.219766608133796, 44257.881233288702788, 44266.542873084486928, 44275.204685965516546, 44283.866671901821974, 44292.528830863499024, 44301.191162820578029, 44309.853667743162077, 44318.516345601310604, 44327.179196365155804, 44335.842220004778937, 44344.505416490319476, 44353.168785791887785, 44361.832327879645163, 44370.496042723723804, 44379.159930294285004, 44387.823990561511891, 44396.488223495580314, 44405.152629066673398, 44413.817207245003374, 44422.481958000767918, 44431.146881304222916, 44439.811977125558769, 44448.477245435038640, 44457.142686202918412, 44465.808299399446696, 44474.474084994915756, 44483.140042959596030, 44491.806173263787059, 44500.472475877795659, 44509.138950771921373, 44517.805597916507395, 44526.472417281882372, 44535.139408838389500, 44543.806572556379251, 44552.473908406231203, 44561.141416358303104, 44569.809096382989082, 44578.476948450690543, 44587.144972531816165, 44595.813168596760079, 44604.481536615981895, 44613.150076559890294, 44621.818788398944889, 44630.487672103605291, 44639.156727644331113, 44647.825954991603794, 44656.495354115904775, 44665.164924987737322, 44673.834667577626533, 44682.504581856046570, 44691.174667793580738, 44699.844925360710477, 44708.515354528026364, 44717.185955266075325, 44725.856727545411559, 44734.527671336647472, 44743.198786610329989, 44751.870073337078793, 44760.541531487506290, 44769.213161032232165, 44777.884961941876099, 44786.556934187072329, 44795.229077738491469, 44803.901392566767754, 44812.573878642600903, 44821.246535936639702, 44829.919364419583871, 44838.592364062133129, 44847.265534835016297, 44855.938876708918542, 44864.612389654583239, 44873.286073642761039, 44881.959928644195315, 44890.633954629636719, 44899.308151569857728, 44907.982519435652648, 44916.657058197779406, 44925.331767827083240, 44934.006648294336628, 44942.681699570370256, 44951.356921626007534, 44960.032314432093699, 44968.707877959473990, 44977.383612179030024, 44986.059517061592487, 44994.735592578072101, 45003.411838699350483, 45012.088255396316526, 45020.764842639880953, 45029.441600400969037, 45038.118528650498774, 45046.795627359424543, 45055.472896498686168, 45064.150336039245303, 45072.827945952070877, 45081.505726208139095, 45090.183676778433437, 45098.861797633951937, 45107.540088745714456, 45116.218550084726303, 45124.897181622021890, 45133.575983328635630, 45142.254955175609211, 45150.934097134006151, 45159.613409174904518, 45168.292891269367828, 45176.972543388474151, 45185.652365503345209, 45194.332357585059071, 45203.012519604752015, 45211.692851533545763, 45220.373353342576593, 45229.054025002988055, 45237.734866485930979, 45246.415877762585296, 45255.097058804101835, 45263.778409581682354, 45272.459930066521338, 45281.141620229820546, 45289.823480042781739, 45298.505509476657608, 45307.187708502649912, 45315.870077092033171, 45324.552615216038248, 45333.235322845925111, 45341.918199952990108, 45350.601246508493205, 45359.284462483730749, 45367.967847850006365, 45376.651402578645502, 45385.335126640944509, 45394.019020008257939, 45402.703082651903969, 45411.387314543251705, 45420.071715653648425, 45428.756285954477789, 45437.441025417094352, 45446.125934012925427, 45454.811011713340122, 45463.496258489743923, 45472.181674313578696, 45480.867259156257205, 45489.553012989221315, 45498.238935783905617, 45506.925027511781082, 45515.611288144318678, 45524.297717652982101, 45532.984316009264148, 45541.671083184643066, 45550.358019150648033, 45559.045123878779123, 45567.732397340572788, 45576.419839507543657, 45585.107450351250009, 45593.795229843250127, 45602.483177955080464, 45611.171294658342958, 45619.859579924610443, 45628.548033725448477, 45637.236656032488099, 45645.925446817345801, 45654.614406051608967, 45663.303533706937742, 45671.992829754948616, 45680.682294167301734, 45689.371926915664517, 45698.061727971689834, 45706.751697307052382, 45715.441834893455962, 45724.132140702575271, 45732.822614706135937, 45741.513256875841762, 45750.204067183418374, 45758.895045600605954, 45767.586192099151958, 45776.277506650803844, 45784.968989227309066, 45793.660639800466015, 45802.352458342036698, 45811.044444823826780, 45819.736599217620096, 45828.428921495265968, 45837.121411628533679, 45845.814069589279825, 45854.506895349331899, 45863.199888880561048, 45871.893050154794764, 45880.586379143926024, 45889.279875819804147, 45897.973540154329385, 45906.667372119409265, 45915.361371686929488, 45924.055538828819408, 45932.749873516986554, 45941.444375723360281, 45950.139045419913600, 45958.833882578575867, 45967.528887171312817, 45976.224059170082910, 45984.919398546880984, 45993.614905273694603, 46002.310579322518606, 46011.006420665362384, 46019.702429274249880, 46028.398605121183209, 46037.094948178229970, 46045.791458417421381, 46054.488135810810491, 46063.184980330472172, 46071.881991948459472, 46080.579170636876370, 46089.276516367805016, 46097.974029113342112, 46106.671708845598914, 46115.369555536715779, 46124.067569158789411, 46132.765749683996546, 46141.464097084455716, 46150.162611332321831, 46158.861292399786180, 46167.560140259018226, 46176.259154882172879, 46184.958336241492361, 46193.657684309138858, 46202.357199057354592, 46211.056880458338128, 46219.756728484338964, 46228.456743107599323, 46237.156924300346873, 46245.857272034852940, 46254.557786283403402, 46263.258467018262309, 46271.959314211700985, 46280.660327836027136, 46289.361507863563020, 46298.062854266601789, 46306.764367017472978, 46315.466046088513394, 46324.167891452067124, 46332.869903080470976, 46341.572080946098140, 46350.274425021321804, 46358.976935278507881, 46367.679611690065940, 46376.382454228369170, 46385.085462865827139, 46393.788637574863969, 46402.491978327903780, 46411.195485097392520, 46419.899157855747035, 46428.602996575442376, 46437.307001228924491, 46446.011171788675711, 46454.715508227156533, 46463.420010516885668, 46472.124678630338167, 46480.829512540025462, 46489.534512218458985, 46498.239677638179273, 46506.945008771712310, 46515.650505591598630, 46524.356168070400599, 46533.061996180666029, 46541.767989894971834, 46550.474149185902206, 46559.180474026034062, 46567.886964387980697, 46576.593620244340855, 46585.300441567727830, 46594.007428330791299, 46602.714580506122729, 46611.421898066408176, 46620.129380984253658, 46628.837029232374334, 46637.544842783390777, 46646.252821610010869, 46654.960965684920666, 46663.669274980820774, 46672.377749470397248, 46681.086389126379800, 46689.795193921498139, 46698.504163828481978, 46707.213298820068303, 46715.922598869015928, 46724.632063948083669, 46733.341694030030339, 46742.051489087636583, 46750.761449093712145, 46759.471574021044944, 46768.181863842415623, 46776.892318530663033, 46785.602938058611471, 46794.313722399077960, 46803.024671524915902, 46811.735785408964148, 46820.447064024090650, 46829.158507343170641, 46837.870115339057520, 46846.581887984670175, 46855.293825252883835, 46864.005927116602834, 46872.718193548731506, 46881.430624522203289, 46890.143220009958895, 46898.855979984924488, 46907.568904420040781, 46916.281993288277590, 46924.995246562597458, 46933.708664215984754, 46942.422246221387468, 46951.135992551848176, 46959.849903180351248, 46968.563978079895605, 46977.278217223494721, 46985.992620584205724, 46994.707188135034812, 47003.421919849053666, 47012.136815699297586, 47020.851875658852805, 47029.567099700761901, 47038.282487798132934, 47046.998039924037585, 47055.713756051583914, 47064.429636153879983, 47073.145680204048404, 47081.861888175197237, 47090.578260040470923, 47099.294795773021178, 47108.011495345985168, 47116.728358732529159, 47125.445385905819421, 47134.162576839036774, 47142.879931505383865, 47151.597449878026964, 47160.315131930205098, 47169.032977635099087, 47177.750986965933407, 47186.469159895976190, 47195.187496398422809, 47203.905996446541394, 47212.624660013592802, 47221.343487072830612, 47230.062477597537509, 47238.781631560996175, 47247.500948936518398, 47256.220429697357758, 47264.940073816876975, 47273.659881268344179, 47282.379852025122091, 47291.099986060529773, 47299.820283347929944, 47308.540743860648945, 47317.261367572071322, 47325.982154455567070, 47334.703104484498908, 47343.424217632251384, 47352.145493872245424, 47360.866933177872852, 47369.588535522547318, 47378.310300879689748, 47387.032229222742899, 47395.754320525127696, 47404.476574760301446, 47413.198991901743284, 47421.921571922874136, 47430.644314797202242, 47439.367220498214010, 47448.090288999374025, 47456.813520274205075, 47465.536914296193572, 47474.260471038884134, 47482.984190475792275, 47491.708072580448061, 47500.432117326410662, 47509.156324687210144, 47517.880694636412954, 47526.605227147607366, 47535.329922194345272, 47544.054779750229500, 47552.779799788833770, 47561.504982283804566, 47570.230327208708331, 47578.955834537191549, 47587.681504242878873, 47596.407336299409508, 47605.133330680429935, 47613.859487359579362, 47622.585806310555199, 47631.312287506974826, 47640.038930922586587, 47648.765736531036964, 47657.492704306030646, 47666.219834221272322, 47674.947126250481233, 47683.674580367376620, 47692.402196545685001, 47701.129974759176548, 47709.857914981570502, 47718.586017186637037, 47727.314281348131772, 47736.042707439824881, 47744.771295435530192, 47753.500045309010602, 47762.228957034072664, 47770.958030584515654, 47779.687265934175230, 47788.416663056872494, 47797.146221926428552, 47805.875942516700889, 47814.605824801532435, 47823.335868754773401, 47832.066074350303097, 47840.796441561986285, 47849.526970363738656, 47858.257660729410418, 47866.988512632931815, 47875.719526048203988, 47884.450700949142629, 47893.182037309670704, 47901.913535103733011, 47910.645194305274345, 47919.377014888239501, 47928.108996826587827, 47936.841140094285947, 47945.573444665322313, 47954.305910513670824, 47963.038537613327208, 47971.771325938309019, 47980.504275462597434, 47989.237386160231836, 47997.970658005237055, 48006.704090971659753, 48015.437685033517482, 48024.171440164878732, 48032.905356339811988, 48041.639433532378462, 48050.373671716646641, 48059.108070866706839, 48067.842630956656649, 48076.577351960600936, 48085.312233852644567, 48094.047276606921514, 48102.782480197536643, 48111.517844598645752, 48120.253369784375536, 48128.989055728889070, 48137.724902406349429, 48146.460909790926962, 48155.197077856777469, 48163.933406578107679, 48172.669895929102495, 48181.406545883983199, 48190.143356416934694, 48198.880327502185537, 48207.617459113964287, 48216.354751226506778, 48225.092203814063396, 48233.829816850877251, 48242.567590311198728, 48251.305524169314594, 48260.043618399489787, 48268.781872976025625, 48277.520287873187044, 48286.258863065304467, 48294.997598526664660, 48303.736494231590768, 48312.475550154427765, 48321.214766269491520, 48329.954142551119730, 48338.693678973686474, 48347.433375511522172, 48356.173232139015454, 48364.913248830547673, 48373.653425560463802, 48382.393762303203403, 48391.134259033133276, 48399.874915724671155, 48408.615732352234772, 48417.356708890256414, 48426.097845313153812, 48434.839141595388355, 48443.580597711385053, 48452.322213635605294, 48461.063989342539571, 48469.805924806634721, 48478.548020002381236, 48487.290274904262333, 48496.032689486797608, 48504.775263724455726, 48513.517997591785388, 48522.260891063298914, 48531.003944113523175, 48539.747156716999598, 48548.490528848276881, 48557.234060481896449, 48565.977751592443383, 48574.721602154480934, 48583.465612142572354, 48592.209781531324552, 48600.954110295329883, 48609.698598409180704, 48618.443245847483922, 48627.188052584890102, 48635.933018595998874, 48644.678143855468079, 48653.423428337933728, 48662.168872018017282, 48670.914474870427512, 48679.660236869793152, 48688.406157990830252, 48697.152238208182098, 48705.898477496564738, 48714.644875830672390, 48723.391433185221103, 48732.138149534912372, 48740.885024854484072, 48749.632059118666803, 48758.379252302191162, 48767.126604379816854, 48775.874115326296305, 48784.621785116389219, 48793.369613724877127, 48802.117601126541558, 48810.865747296164045, 48819.614052208540670, 48828.362515838482068, 48837.111138160798873, 48845.859919150308997, 48854.608858781852177, 48863.357957030253601, 48872.107213870353007, 48880.856629277019238, 48889.606203225106583, 48898.355935689469334, 48907.105826645012712, 48915.855876066591009, 48924.606083929116721, 48933.356450207487796, 48942.106974876602180, 48950.857657911386923, 48959.608499286761798, 48968.359498977661133, 48977.110656959026528, 48985.861973205799586, 48994.613447692936461, 49003.365080395415134, 49012.116871288191760, 49020.868820346244320, 49029.620927544579899, 49038.373192858169205, 49047.125616262041149, 49055.878197731180990, 49064.630937240624917, 49073.383834765409119, 49082.136890280540683, 49090.890103761092178, 49099.643475182092516, 49108.397004518599715, 49117.150691745708173, 49125.904536838454078, 49134.658539771960932, 49143.412700521279476, 49152.167019061533210, 49160.921495367816533, 49169.676129415245668, 49178.430921178944118, 49187.185870634035382, 49195.940977755679341, 49204.696242518992221, 49213.451664899133903, 49222.207244871278817, 49230.962982410586847, 49239.718877492239699, 49248.474930091404531, 49257.231140183292155, 49265.987507743098831, 49274.744032746013545, 49283.500715167290764, 49292.257554982112197, 49301.014552165739588, 49309.771706693398301, 49318.529018540335528, 49327.286487681805738, 49336.044114093070675, 49344.801897749406635, 49353.559838626082637, 49362.317936698396807, 49371.076191941625439, 49379.834604331081209, 49388.593173842076794, 49397.351900449917594, 49406.110784129938111, 49414.869824857458298, 49423.629022607827210, 49432.388377356393903, 49441.147889078507433, 49449.907557749545958, 49458.667383344851260, 49467.427365839837876, 49476.187505209862138, 49484.947801430331310, 49493.708254476645379, 49502.468864324218885, 49511.229630948459089, 49519.990554324795085, 49528.751634428670513, 49537.512871235507191, 49546.274264720763313, 49555.035814859889797, 49563.797521628352115, 49572.559385001630289, 49581.321404955189792, 49590.083581464525196, 49598.845914505131077, 49607.608404052509286, 49616.371050082147121, 49625.133852569590090, 49633.896811490361870, 49642.659926819978864, 49651.423198534001131, 49660.186626607952348, 49668.950211017407128, 49677.713951737910975, 49686.477848745045776, 49695.241902014400694, 49704.006111521543062, 49712.770477242069319, 49721.534999151597731, 49730.299677225710184, 49739.064511440039496, 49747.829501770211209, 49756.594648191850865, 49765.359950680591282, 49774.125409212101658, 49782.891023762007535, 49791.656794305999938, 49800.422720819733513, 49809.188803278877458, 49817.955041659122799, 49826.721435936182388, 49835.487986085725424, 49844.254692083486589, 49853.021553905149631, 49861.788571526456508, 49870.555744923149177, 49879.323074070940493, 49888.090558945579687, 49896.858199522845098, 49905.625995778464130, 49914.393947688229673, 49923.162055227912788, 49931.930318373277260, 49940.698737100137805, 49949.467311384280038, 49958.236041201504122, 49967.004926527646603, 49975.773967338514922, 49984.543163609916519, 49993.312515317709767, 50002.082022437753039, 50010.851684945861052, 50019.621502817906730, 50028.391476029770274, 50037.161604557302780, 50045.931888376399002, 50054.702327462953690, 50063.472921792839770, 50072.243671341981099, 50081.014576086279703, 50089.785636001652165, 50098.556851064022339, 50107.328221249343187, 50116.099746533516736, 50124.871426892532327, 50133.643262302328367, 50142.415252738857816, 50151.187398178110016, 50159.959698596037924, 50168.732153968652710, 50177.504764271936438, 50186.277529481885722, 50195.050449574504455, 50203.823524525832909, 50212.596754311860423, 50221.370138908641820, 50230.143678292195546, 50238.917372438569146, 50247.691221323839272, 50256.465224924031645, 50265.239383215244743, 50274.013696173533390, 50282.788163774974237, 50291.562785995680315, 50300.337562811721000, 50309.112494199209323, 50317.887580134272866, 50326.662820593010110, 50335.438215551548637, 50344.213764986037859, 50352.989468872612633, 50361.765327187407820, 50370.541339906594658, 50379.317507006329834, 50388.093828462777310, 50396.870304252122878, 50405.646934350545052, 50414.423718734244176, 50423.200657379420591, 50431.977750262281916, 50440.754997359028494, 50449.532398645897047, 50458.309954099109746, 50467.087663694910589, 50475.865527409529022, 50484.643545219223597, 50493.421717100252863, 50502.200043028889922, 50510.978522981393326, 50519.757156934065279, 50528.535944863164332, 50537.314886744999967, 50546.093982555888942, 50554.873232272118912, 50563.652635870006634, 50572.432193325897970, 50581.211904616109678, 50589.991769716965791, 50598.771788604834001, 50607.551961256052891, 50616.332287647011981, 50625.112767754035303, 50633.893401553541480, 50642.674189021869097, 50651.455130135444051, 50660.236224870648584, 50669.017473203886766, 50677.798875111569942, 50686.580430570116732, 50695.362139555945760, 50704.144002045512025, 50712.926018015234149, 50721.708187441567134, 50730.490510300958704, 50739.272986569892964, 50748.055616224803089, 50756.838399242195010, 50765.621335598552832, 50774.404425270353386, 50783.187668234088051, 50791.971064466277312, 50800.754613943427103, 50809.538316642057907, 50818.322172538704763, 50827.106181609895430, 50835.890343832164945, 50844.674659182070172, 50853.459127636160702, 50862.243749171000673, 50871.028523763168778, 50879.813451389221882, 50888.598532025760505, 50897.383765649377892, 50906.169152236660011, 50914.954691764221934, 50923.740384208671458, 50932.526229546623654, 50941.312227754737251, 50950.098378809598216, 50958.884682687887107, 50967.671139366226271, 50976.457748821281712, 50985.244511029719433, 50994.031425968219992, 51002.818493613434839, 51011.605713942066359, 51020.393086930802383, 51029.180612556338019, 51037.968290795368375, 51046.756121624624939, 51055.544105020824645, 51064.332240960684430, 51073.120529420957610, 51081.908970378361118, 51090.697563809662824, 51099.486309691601491, 51108.275208000937710, 51117.064258714468451, 51125.853461808932479, 51134.642817261141317, 51143.432325047870108, 51152.221985145937651, 51161.011797532126366, 51169.801762183262326, 51178.591879076149780, 51187.382148187629355, 51196.172569494534400, 51204.963142973690992, 51213.753868601954309, 51222.544746356179530, 51231.335776213229110, 51240.126958149958227, 51248.918292143258441, 51257.709778169999481, 51266.501416207094735, 51275.293206231406657, 51284.085148219863186, 51292.877242149377707, 51301.669487996841781, 51310.461885739197896, 51319.254435353373992, 51328.047136816312559, 51336.839990104948811, 51345.632995196239790, 51354.426152067164367, 51363.219460694657755, 51372.012921055713377, 51380.806533127310104, 51389.600296886412252, 51398.394212310049625, 51407.188279375193815, 51415.982498058874626, 51424.776868338100030, 51433.571390189892554, 51442.366063591274724, 51451.160888519283617, 51459.955864950978139, 51468.750992863388092, 51477.546272233579657, 51486.341703038626292, 51495.137285255579627, 51503.933018861527671, 51512.728903833558434, 51521.524940148759924, 51530.321127784234704, 51539.117466717078059, 51547.913956924414379, 51556.710598383353499, 51565.507391071019811, 51574.304334964566806, 51583.101430041118874, 51591.898676277814957, 51600.696073651837651, 51609.493622140318621, 51618.291321720433189, 51627.089172369363951, 51635.887174064286228, 51644.685326782397169, 51653.483630500879372, 51662.282085196951812, 51671.080690847804362, 51679.879447430656001, 51688.678354922747531, 51697.477413301290653, 51706.276622543533449, 51715.075982626716723, 51723.875493528081279, 51732.675155224897026, 51741.474967694426596, 51750.274930913932621, 51759.075044860706839, 51767.875309512004605, 51776.675724845154036, 51785.476290837439592, 51794.277007466153009, 51803.077874708629679, 51811.878892542168614, 51820.680060944105207, 51829.481379891767574, 51838.282849362505658, 51847.084469333640300, 51855.886239782565099, 51864.688160686608171, 51873.490232023148565, 51882.292453769550775, 51891.094825903201126, 51899.897348401478666, 51908.700021241791546, 51917.502844401533366, 51926.305817858112277, 51935.108941588943708, 51943.912215571435809, 51952.715639783033112, 51961.519214201172872, 51970.322938803285069, 51979.126813566814235, 51987.930838469234004, 51996.735013487988908, 52005.539338600545307, 52014.343813784398662, 52023.148439017015335, 52031.953214275876235, 52040.758139538491378, 52049.563214782363502, 52058.368439984995348, 52067.173815123911481, 52075.979340176621918, 52084.785015120658500, 52093.590839933560346, 52102.396814592866576, 52111.202939076138136, 52120.009213360914146, 52128.815637424777378, 52137.622211245288781, 52146.428934800016577, 52155.235808066536265, 52164.042831022474275, 52172.850003645384277, 52181.657325912892702, 52190.464797802604153, 52199.272419292137783, 52208.080190359127300, 52216.888110981184582, 52225.696181135943334, 52234.504400801066367, 52243.312769954180112, 52252.121288572969206, 52260.929956635074632, 52269.738774118181027, 52278.547740999943926, 52287.356857258069795, 52296.166122870243271, 52304.975537814148993, 52313.785102067507978, 52322.594815608012141, 52331.404678413397050, 52340.214690461369173, 52349.024851729664078, 52357.835162196017336, 52366.645621838186344, 52375.456230633892119, 52384.266988560921163, 52393.077895597023598, 52401.888951719964098, 52410.700156907529163, 52419.511511137498019, 52428.323014387664443, 52437.134666635793110, 52445.946467859736003, 52454.758418037272349, 52463.570517146232305, 52472.382765164424200, 52481.195162069700018, 52490.007707839882642, 52498.820402452787675, 52507.633245886318036, 52516.446238118282054, 52525.259379126568092, 52534.072668889035413, 52542.886107383557828, 52551.699694588038255, 52560.513430480335956, 52569.327315038361121, 52578.141348240023945, 52586.955530063205515, 52595.769860485845129, 52604.584339485852979, 52613.398967041161086, 52622.213743129701470, 52631.028667729420704, 52639.843740818272636, 52648.658962374196562, 52657.474332375153608, 52666.289850799119449, 52675.105517624062486, 52683.921332827972947, 52692.737296388826508, 52701.553408284620673, 52710.369668493352947, 52719.186076993035385, 52728.002633761672769, 52736.819338777306257, 52745.636192017926078, 52754.453193461595220, 52763.270343086333014, 52772.087640870195173, 52780.905086791244685, 52789.722680827522709, 52798.540422957092233, 52807.358313158038072, 52816.176351408430492, 52824.994537686354306, 52833.812871969923435, 52842.631354237186315, 52851.449984466293245, 52860.268762635321764, 52869.087688722414896, 52877.906762705686560, 52886.725984563257953, 52895.545354273279372, 52904.364871813879290, 52913.184537163229834, 52922.004350299452199, 52930.824311200740340, 52939.644419845259108, 52948.464676211158803, 52957.285080276640656, 52966.105632019898621, 52974.926331419112103, 52983.747178452489607, 52992.568173098246916, 53001.389315334563435, 53010.210605139713152, 53019.032042491868197, 53027.853627369309834, 53036.675359750232019, 53045.497239612916019, 53054.319266935606720, 53063.141441696549009, 53071.963763874024153, 53080.786233446298866, 53089.608850391632586, 53098.431614688335685, 53107.254526314696705, 53116.077585248989635, 53124.900791469553951, 53133.724144954663643, 53142.547645682665461, 53151.371293631847948, 53160.195088780572405, 53169.019031107156479, 53177.843120589946921, 53186.667357207283203, 53195.491740937555733, 53204.316271759074880, 53213.140949650231050, 53221.965774589414650, 53230.790746554979705, 53239.615865525323898, 53248.441131478837633, 53257.266544393925869, 53266.092104248986288, 53274.917811022438400, 53283.743664692687162, 53292.569665238173911, 53301.395812637318159, 53310.222106868553965, 53319.048547910337220, 53327.875135741101985, 53336.701870339340530, 53345.528751683465089, 53354.355779751967930, 53363.182954523334047, 53372.010275976041157, 53380.837744088559703, 53389.665358839389228, 53398.493120207043830, 53407.321028170023055, 53416.149082706833724, 53424.977283796004485, 53433.805631416056713, 53442.634125545533607, 53451.462766162956541, 53460.291553246861440, 53469.120486775827885, 53477.949566728391801, 53486.778793083118217, 53495.608165818593989, 53504.437684913362318, 53513.267350346053718, 53522.097162095211388, 53530.927120139436738, 53539.757224457360280, 53548.587475027554319, 53557.417871828649368, 53566.248414839268662, 53575.079104038028163, 53583.909939403565659, 53592.740920914526214, 53601.572048549533065, 53610.403322287260380, 53619.234742106345948, 53628.066307985456660, 53636.898019903295790, 53645.729877838486573, 53654.561881769739557, 53663.394031675750739, 53672.226327535187011, 53681.058769326766196, 53689.891357029213395, 53698.724090621195501, 53707.556970081481268, 53716.389995388766692, 53725.223166521784151, 53734.056483459287847, 53742.889946180010156, 53751.723554662705283, 53760.557308886127430, 53769.391208829016250, 53778.225254470191430, 53787.059445788392622, 53795.893782762424962, 53804.728265371042653, 53813.562893593058106, 53822.397667407261906, 53831.232586792481015, 53840.067651727520570, 53848.902862191178428, 53857.738218162296107, 53866.573719619715121, 53875.409366542247881, 53884.245158908743178, 53893.081096698064357, 53901.917179889060208, 53910.753408460579521, 53919.589782391514746, 53928.426301660714671, 53937.262966247071745, 53946.099776129471138, 53954.936731286798022, 53963.773831697966671, 53972.611077341854980, 53981.448468197413604, 53990.286004243520438, 53999.123685459104308, 54007.961511823123146, 54016.799483314469398, 54025.637599912115547, 54034.475861594997696, 54043.314268342081050, 54052.152820132323541, 54060.991516944653995, 54069.830358758088551, 54078.669345551585138, 54087.508477304130793, 54096.347753994719824, 54105.187175602339266, 54114.026742105983431, 54122.866453484697558, 54131.706309717461409, 54140.546310783312947, 54149.386456661253760, 54158.226747330336366, 54167.067182769606006, 54175.907762958100648, 54184.748487874865532, 54193.589357498953177, 54202.430371809423377, 54211.271530785379582, 54220.112834405859758, 54228.954282649960078, 54237.795875496762164, 54246.637612925369467, 54255.479494914870884, 54264.321521444362588, 54273.163692492969858, 54282.006008039817971, 54290.848468064003100, 54299.691072544686904, 54308.533821460972831, 54317.376714792037092, 54326.219752517004963, 54335.062934615023551, 54343.906261065269064, 54352.749731846895884, 54361.593346939072944, 54370.437106320991006, 54379.281009971826279, 54388.125057870769524, 54396.969249997026054, 54405.813586329764803, 54414.658066848227463, 54423.502691531604796, 54432.347460359131219, 54441.192373310048424, 54450.037430363547173, 54458.882631498883711, 54467.727976695307007, 54476.573465932051477, 54485.419099188402470, 54494.264876443579851, 54503.110797676890797, 54511.956862867584277, 54520.803071994938364, 54529.649425038260233, 54538.495921976813406, 54547.342562789912336, 54556.189347456864198, 54565.036275956961617, 54573.883348269519047, 54582.730564373894595, 54591.577924249359057, 54600.425427875277819, 54609.273075231001712, 54618.120866295837914, 54626.968801049173635, 54635.816879470345157, 54644.665101538710587, 54653.513467233642587, 54662.361976534535643, 54671.210629420762416, 54680.059425871673739, 54688.908365866715030, 54697.757449385244399, 54706.606676406678162, 54715.456046910432633, 54724.305560875924130, 54733.155218282554415, 54742.005019109783461, 54750.854963337013032, 54759.705050943710376, 54768.555281909299083, 54777.405656213239126, 54786.256173834983201, 54795.106834753991279, 54803.957638949759712, 54812.808586401726643, 54821.659677089388424, 54830.510910992241406, 54839.362288089752838, 54848.213808361448173, 54857.065471786809212, 54865.917278345375962, 54874.769228016622947, 54883.621320780097449, 54892.473556615324924, 54901.325935501838103, 54910.178457419169717, 54919.031122346881602, 54927.883930264499213, 54936.736881151606212, 54945.589974987749883, 54954.443211752492061, 54963.296591425409133, 54972.150113986099313, 54981.003779414138990, 54989.857587689111824, 54998.711538790630584, 55007.565632698286208, 55016.419869391698739, 55025.274248850459117, 55034.128771054216486, 55042.983435982590890, 55051.838243615209649, 55060.693193931707356, 55069.548286911733157, 55078.403522534943477, 55087.258900780987460, 55096.114421629528806, 55104.970085060223937, 55113.825891052758379, 55122.681839586810383, 55131.537930642050924, 55140.394164198209182, 55149.250540234948858, 55158.107058731955476, 55166.963719668972772, 55175.820523025708098, 55184.677468781861535, 55193.534556917169539, 55202.391787411375844, 55211.249160244202358, 55220.106675395392813, 55228.964332844705496, 55237.822132571884140, 55246.680074556687032, 55255.538158778872457, 55264.396385218249634, 55273.254753854547744, 55282.113264667583280, 55290.971917637143633, 55299.830712742994365, 55308.689649964959244, 55317.548729282840213, 55326.407950676453765, 55335.267314125594567, 55344.126819610122766, 55352.986467109840305, 55361.846256604585506, 55370.706188074196689, 55379.566261498526728, 55388.426476857435773, 55397.286834130762145, 55406.147333298380545, 55415.007974340151122, 55423.868757235963130, 55432.729681965676718, 55441.590748509195691, 55450.451956846409303, 55459.313306957206805, 55468.174798821477452, 55477.036432419168705, 55485.898207730169815, 55494.760124734413694, 55503.622183411796868, 55512.484383742288628, 55521.346725705807330, 55530.209209282293159, 55539.071834451700852, 55547.934601193985145, 55556.797509489100776, 55565.660559317024308, 55574.523750657717756, 55583.387083491150406, 55592.250557797327929, 55601.114173556219612, 55609.977930747816572, 55618.841829352139030, 55627.705869349170825, 55636.570050718939456, 55645.434373441457865, 55654.298837496731721, 55663.163442864810349, 55672.028189525721245, 55680.893077459484630, 55689.758106646178931, 55698.623277065824368, 55707.488588698499370, 55716.354041524260538, 55725.219635523157194, 55734.085370675275044, 55742.951246960699791, 55751.817264359517139, 55760.683422851798241, 55769.549722417650628, 55778.416163037174556, 55787.282744690484833, 55796.149467357681715, 55805.016331018880010, 55813.883335654216353, 55822.750481243812828, 55831.617767767798796, 55840.485195206325443, 55849.352763539529406, 55858.220472747561871, 55867.088322810595855, 55875.956313708775269, 55884.824445422287681, 55893.692717931277002, 55902.561131215952628, 55911.429685256480298, 55920.298380033062131, 55929.167215525900247, 55938.036191715167661, 55946.905308581102872, 55955.774566103900725, 55964.643964263777889, 55973.513503040972864, 55982.383182415709598, 55991.253002368212037, 56000.122962878733233, 56008.993063927518961, 56017.863305494814995, 56026.733687560888939, 56035.604210105993843, 56044.474873110397311, 56053.345676554388774, 56062.216620418214006, 56071.087704682206095, 56079.958929326610814, 56088.830294331746700, 56097.701799677917734, 56106.573445345413347, 56115.445231314559351, 56124.317157565681555, 56133.189224079091218, 56142.061430835121428, 56150.933777814097994, 56159.806264996375830, 56168.678892362295301, 56177.551659892211319, 56186.424567566464248, 56195.297615365445381, 56204.170803269487806, 56213.044131258990092, 56221.917599314321706, 56230.791207415881217, 56239.664955544030818, 56248.538843679190904, 56257.412871801745496, 56266.287039892100438, 56275.161347930690681, 56284.035795897914795, 56292.910383774200454, 56301.785111539960781, 56310.659979175645276, 56319.534986661696166, 56328.410133978548402, 56337.285421106658760, 56346.160848026469466, 56355.036414718473679, 56363.912121163099073, 56372.787967340831528, 56381.663953232156928, 56390.540078817546600, 56399.416344077508256, 56408.292748992520501, 56417.169293543069216, 56426.045977709691215, 56434.922801472865103, 56443.799764813134971, 56452.676867710993974, 56461.554110146986204, 56470.431492101633921, 56479.309013555503043, 56488.186674489094003, 56497.064474882965442, 56505.942414717697829, 56514.820493973827979, 56523.698712631914532, 56532.577070672537957, 56541.455568076278723, 56550.334204823710024, 56559.212980895419605, 56568.091896272002487, 56576.970950934039138, 56585.850144862146408, 56594.729478036933870, 56603.608950439003820, 56612.488562048994936, 56621.368312847502239, 56630.248202815178956, 56639.128231932649214, 56648.008400180558965, 56656.888707539539610, 56665.769153990258928, 56674.649739513348322, 56683.530464089504676, 56692.411327699366666, 56701.292330323623901, 56710.173471942944161, 56719.054752538017055, 56727.936172089532192, 56736.817730578171904, 56745.699427984633076, 56754.581264289648971, 56763.463239473894646, 56772.345353518096090, 56781.227606402986567, 56790.109998109292064, 56798.992528617716744, 56807.875197909022972, 56816.758005963944015, 56825.640952763234964, 56834.524038287636358, 56843.407262517917843, 56852.290625434834510, 56861.174127019163279, 56870.057767251673795, 56878.941546113128425, 56887.825463584333193, 56896.709519646079571, 56905.593714279159030, 56914.478047464348492, 56923.362519182497635, 56932.247129414376104, 56941.131878140826302, 56950.016765342661529, 56958.901791000716912, 56967.786955095813028, 56976.672257608792279, 56985.557698520511622, 56994.443277811777079, 57003.328995463489264, 57012.214851456497854, 57021.100845771645254, 57029.986978389832075, 57038.873249291900720, 57047.759658458737249, 57056.646205871256825, 57065.532891510330955, 57074.419715356845700, 57083.306677391701669, 57092.193777595828578, 57101.081015950127039, 57109.968392435504938, 57118.855907032884716, 57127.743559723217913, 57136.631350487419695, 57145.519279306412500, 57154.407346161162423, 57163.295551032628282, 57172.183893901739793, 57181.072374749455776, 57189.960993556756875, 57198.849750304609188, 57207.738644973978808, 57216.627677545860934, 57225.516848001214385, 57234.406156321056187, 57243.295602486381540, 57252.185186478171090, 57261.074908277449140, 57269.964767865225440, 57278.854765222517017, 57287.744900330326345, 57296.635173169706832, 57305.525583721675503, 57314.416131967285764, 57323.306817887561920, 57332.197641463564651, 57341.088602676354640, 57349.979701506970741, 57358.870937936495466, 57367.762311945967667, 57376.653823516498960, 57385.545472629150026, 57394.437259264996101, 57403.329183405170625, 57412.221245030705177, 57421.113444122747751, 57430.005780662388133, 57438.898254630737938, 57447.790866008908779, 57456.683614778019546, 57465.576500919218233, 57474.469524413609179, 57483.362685242347652, 57492.255983386567095, 57501.149418827415502, 57510.042991546040867, 57518.936701523613010, 57527.830548741279927, 57536.724533180225990, 57545.618654821599193, 57554.512913646605739, 57563.407309636408172, 57572.301842772212694, 57581.196513035181852, 57590.091320406558225, 57598.986264867518912, 57607.881346399277390, 57616.776564983032586, 57625.671920600041631, 57634.567413231488899, 57643.463042858616973, 57652.358809462668432, 57661.254713024893135, 57670.150753526519111, 57679.046930948788940, 57687.943245272967033, 57696.839696480332350, 57705.736284552112920, 57714.633009469616809, 57723.529871214101149, 57732.426869766837626, 57741.324005109141581, 57750.221277222262870, 57759.118686087545939, 57768.016231686247920, 57776.913913999713259, 57785.811733009220916, 57794.709688696108060, 57803.607781041675480, 57812.506010027274897, 57821.404375634228927, 57830.302877843882015, 57839.201516637556779, 57848.100291996626765, 57856.999203902414592, 57865.898252336308360, 57874.797437279637961, 57883.696758713798772, 57892.596216620149789, 57901.495810980079114, 57910.395541774960293, 57919.295408986181428, 57928.195412595145172, 57937.095552583232347, 57945.995828931874712, 57954.896241622453090, 57963.796790636391961, 57972.697475955101254, 57981.598297560005449, 57990.499255432565405, 57999.400349554161949, 58008.301579906277766, 58017.202946470322786, 58026.104449227779696, 58035.006088160094805, 58043.907863248685317, 58052.809774475070299, 58061.711821820688783, 58070.614005267023458, 58079.516324795557011, 58088.418780387757579, 58097.321372025129676, 58106.224099689170544, 58115.126963361370144, 58124.029963023225719, 58132.933098656270886, 58141.836370241988334, 58150.739777761926234, 58159.643321197581827, 58168.547000530517835, 58177.450815742246050, 58186.354766814300092, 58195.258853728235408, 58204.163076465592894, 58213.067435007949825, 58221.971929336861649, 58230.876559433861985, 58239.781325280542660, 58248.686226858480950, 58257.591264149239578, 58266.496437134424923, 58275.401745795621537, 58284.307190114406694, 58293.212770072394051, 58302.118485651197261, 58311.024336832393601, 58319.930323597640381, 58328.836445928522153, 58337.742703806681675, 58346.649097213718051, 58355.555626131324971, 58364.462290541101538, 58373.369090424683236, 58382.276025763749203, 58391.183096539934922, 58400.090302734904981, 58408.997644330309413, 58417.905121307827358, 58426.812733649152506, 58435.720481335949444, 58444.628364349890035, 58453.536382672667969, 58462.444536285984213, 58471.352825171554286, 58480.261249311042775, 58489.169808686187025, 58498.078503278702556, 58506.987333070275781, 58515.896298042673152, 58524.805398177610186, 58533.714633456795127, 58542.624003861994424, 58551.533509374930873, 58560.443149977385474, 58569.352925651066471, 58578.262836377783970, 58587.172882139260764, 58596.083062917270581, 58604.993378693594423, 58613.903829450006015, 58622.814415168308187, 58631.725135830238287, 58640.635991417650075, 58649.546981912310002, 58658.458107296028174, 58667.369367550592870, 58676.280762657843297, 58685.192292599567736, 58694.103957357634499, 58703.015756913817313, 58711.927691249984491, 58720.839760347931588, 58729.751964189570572, 58738.664302756689722, 58747.576776031157351, 58756.489383994819946, 58765.402126629560371, 58774.315003917239665, 58783.228015839711588, 58792.141162378844456, 58801.054443516564788, 58809.967859234726347, 58818.881409515219275, 58827.795094339933712, 58836.708913690796180, 58845.622867549682269, 58854.536955898533051, 58863.451178719231393, 58872.365535993732919, 58881.280027703920496, 58890.194653831735195, 58899.109414359132643, 58908.024309268039360, 58916.939338540403696, 58925.854502158166724, 58934.769800103291345, 58943.685232357711357, 58952.600798903426039, 58961.516499722391018, 58970.432334796547366, 58979.348304107923468, 58988.264407638482226, 58997.180645370208367, 59006.097017285093898, 59015.013523365123547, 59023.930163592318422, 59032.846937948692357, 59041.763846416230081, 59050.680888976981805, 59059.598065612946812, 59068.515376306131657, 59077.432821038608381, 59086.350399792383541, 59095.268112549514626, 59104.185959292037296, 59113.103940002016316, 59122.022054661494622, 59130.940303252529702, 59139.858685757186322, 59148.777202157543798, 59157.695852435674169, 59166.614636573656753, 59175.533554553563590, 59184.452606357495824, 59193.371791967525496, 59202.291111365782854, 59211.210564534369041, 59220.130151455370651, 59229.049872110888828, 59237.969726483104751, 59246.889714554061356, 59255.809836305925273, 59264.730091720848577, 59273.650480780917860, 59282.571003468321578, 59291.491659765175427, 59300.412449653638760, 59309.333373115878203, 59318.254430134024005, 59327.175620690271899, 59336.096944766781235, 59345.018402345718641, 59353.939993409287126, 59362.861717939660593, 59371.783575919012947, 59380.705567329547193, 59389.627692153473618, 59398.549950372966123, 59407.472341970264097, 59416.394866927570547, 59425.317525227095757, 59434.240316851057287, 59443.163241781701799, 59452.086300001246855, 59461.009491491939116, 59469.932816236003418, 59478.856274215700978, 59487.779865413271182, 59496.703589810975245, 59505.627447391081660, 59514.551438135837088, 59523.475562027531851, 59532.399819048398058, 59541.324209180784237, 59550.248732406907948, 59559.173388709110441, 59568.098178069638379, 59577.023100470803911, 59585.948155894933734, 59594.873344324318168, 59603.798665741247532, 59612.724120128084905, 59621.649707467120606, 59630.575427740674058, 59639.501280931093788, 59648.427267020706495, 59657.353385991875257, 59666.279637826904946, 59675.206022508151364, 59684.132540018006694, 59693.059190338797634, 59701.985973452909093, 59710.912889342689596, 59719.839937990509497, 59728.767119378760981, 59737.694433489821677, 59746.621880306076491, 59755.549459809917607, 59764.477171983751759, 59773.405016809956578, 59782.332994270967902, 59791.261104349163361, 59800.189347026993346, 59809.117722286842763, 59818.046230111162004, 59826.974870482365077, 59835.903643382873270, 59844.832548795158800, 59853.761586701642955, 59862.690757084790675, 59871.620059927023249, 59880.549495210834721, 59889.479062918668205, 59898.408763032988645, 59907.338595536253706, 59916.268560410964710, 59925.198657639586600, 59934.128887204598868, 59943.059249088510114, 59951.989743273799832, 59960.920369742976618, 59969.851128478534520, 59978.782019462989410, 59987.713042678842612, 59996.644198108617275, 60005.575485734843824, 60014.506905540045409, 60023.438457506730629, 60032.370141617466288, 60041.301957854775537, 60050.233906201217906, 60059.165986639301991, 60068.098199151645531, 60077.030543720757123, 60085.963020329210849, 60094.895628959588066, 60103.828369594455580, 60112.761242216380197, 60121.694246807972377, 60130.627383351769822, 60139.560651830412098, 60148.494052226458734, 60157.427584522549296, 60166.361248701243312, 60175.295044745180348, 60184.228972636949038, 60193.163032359203498, 60202.097223894554190, 60211.031547225611575, 60219.966002335022495, 60228.900589205397409, 60237.835307819412265, 60246.770158159706625, 60255.705140208912781, 60264.640253949713951, 60273.575499364749703, 60282.510876436674153, 60291.446385148185072, 60300.382025481922028, 60309.317797420597344, 60318.253700946872414, 60327.189736043445009, 60336.125902692976524, 60345.062200878208387, 60353.998630581816542, 60362.935191786498763, 60371.871884474996477, 60380.808708629992907, 60389.745664234222204, 60398.682751270396693, 60407.619969721250527, 60416.557319569525134, 60425.494800797940115, 60434.432413389251451, 60443.370157326186018, 60452.308032591514348, 60461.246039167992421, 60470.184177038347116, 60479.122446185392619, 60488.060846591877635, 60496.999378240550868, 60505.938041114211956, 60514.876835195638705, 60523.815760467645305, 60532.754816912973183, 60541.694004514451080, 60550.633323254864081, 60559.572773117040924, 60568.512354083759419, 60577.452066137833754, 60586.391909262114496, 60595.331883439401281, 60604.271988652544678, 60613.212224884329771, 60622.152592117643508, 60631.093090335300076, 60640.033719520142768, 60648.974479655036703, 60657.915370722817897, 60666.856392706358747, 60675.797545588524372, 60684.738829352158064, 60693.680243980175874, 60702.621789455406542, 60711.563465760780673, 60720.505272879141557, 60729.447210793405247, 60738.389279486444138, 60747.331478941159730, 60756.273809140482626, 60765.216270067307050, 60774.158861704534502, 60783.101584035102860, 60792.044437041906349, 60800.987420707904676, 60809.930535015999340, 60818.873779949128220, 60827.817155490229197, 60836.760661622276530, 60845.704298328178993, 60854.648065590925398, 60863.591963393446349, 60872.535991718679725, 60881.480150549657992, 60890.424439869326307, 60899.368859660615271, 60908.313409906564630, 60917.258090590119537, 60926.202901694283355, 60935.147843202044896, 60944.092915096429351, 60953.038117360367323, 60961.983449976949487, 60970.928912929106446, 60979.874506199928874, 60988.820229772376479, 60997.766083629510831, 61006.712067754342570, 61015.658182129896886, 61024.604426739220798, 61033.550801565368602, 61042.497306591358210, 61051.443941800265748, 61060.390707175138232, 61069.337602699022682, 61078.284628354995220, 61087.231784126117418, 61096.179069995479949, 61105.126485946122557, 61114.074031961165019, 61123.021708023647079, 61131.969514116710343, 61140.917450223416381, 61149.865516326884972, 61158.813712410192238, 61167.762038456457958, 61176.710494448801910, 61185.659080370343872, 61194.607796204196347, 61203.556641933479114, 61212.505617541304673, 61221.454723010851012, 61230.403958325216081, 61239.353323467563314, 61248.302818421041593, 61257.252443168799800, 61266.202197694008646, 61275.152081979773357, 61284.102096009308298, 61293.052239765762351, 61302.002513232320780, 61310.952916392161569, 61319.903449228448153, 61328.854111724387622, 61337.804903863143409, 61346.755825627937156, 61355.706877001975954, 61364.658057968430512, 61373.609368510529748, 61382.560808611466200, 61391.512378254497889, 61400.464077422802802, 61409.415906099631684, 61418.367864268191624, 61427.319951911747921, 61436.272169013507664, 61445.224515556736151, 61454.176991524669575, 61463.129596900565957, 61472.082331667676044, 61481.035195809243305, 61489.988189308569417, 61498.941312148890574, 61507.894564313515730, 61516.847945785681077, 61525.801456548681017, 61534.755096585809952, 61543.708865880362282, 61552.662764415639685, 61561.616792174892907, 61570.570949141467281, 61579.525235298686312, 61588.479650629822572, 61597.434195118214120, 61606.388868747155357, 61615.343671500013443, 61624.298603360082780, 61633.253664310737804, 61642.208854335243814, 61651.164173417018901, 61660.119621539364744, 61669.075198685648502, 61678.030904839215509, 61686.986739983425650, 61695.942704101660638, 61704.898797177273082, 61713.855019193637418, 61722.811370134128083, 61731.767849982126791, 61740.724458721022529, 61749.681196334211563, 61758.638062805053778, 61767.595058116974542, 61776.552182253391948, 61785.509435197673156, 61794.466816933258087, 61803.424327443550283, 61812.381966711975110, 61821.339734721936111, 61830.297631456887757, 61839.255656900248141, 61848.213811035457184, 61857.172093845947529, 61866.130505315180926, 61875.089045426597295, 61884.047714163651108, 61893.006511509782285, 61901.965437448488956, 61910.924491963203764, 61919.883675037410285, 61928.842986654584820, 61937.802426798196393, 61946.761995451750408, 61955.721692598701338, 61964.681518222561863, 61973.641472306844662, 61982.601554835004208, 61991.561765790582285, 62000.522105157084297, 62009.482572917993821, 62018.443169056859915, 62027.403893557195261, 62036.364746402505261, 62045.325727576360805, 62054.286837062245468, 62063.248074843744689, 62072.209440904371149, 62081.170935227681184, 62090.132557797216577, 62099.094308596555493, 62108.056187609239714, 62117.018194818818301, 62125.980330208891246, 62134.942593763007608, 62143.904985464738274, 62152.867505297697790, 62161.830153245442489, 62170.792929291557812, 62179.755833419651026, 62188.718865613322123, 62197.682025856149266, 62206.645314131761552, 62215.608730423751695, 62224.572274715748790, 62233.535946991367382, 62242.499747234222014, 62251.463675427941780, 62260.427731556155777, 62269.391915602522204, 62278.356227550641051, 62287.320667384185072, 62296.285235086790635, 62305.249930642101390, 62314.214754033790086, 62323.179705245514924, 62332.144784260904999, 62341.109991063691268, 62350.075325637488277, 62359.040787965997879, 62368.006378032907378, 62376.972095821889525, 62385.937941316646175, 62394.903914500857354, 62403.870015358210367, 62412.836243872450723, 62421.802600027236622, 62430.769083806291746, 62439.735695193339780, 62448.702434172118956, 62457.669300726294750, 62466.636294839656330, 62475.603416495869169, 62484.570665678715159, 62493.538042371939810, 62502.505546559252252, 62511.473178224412550, 62520.440937351195316, 62529.408823923331511, 62538.376837924566644, 62547.344979338689882, 62556.313248149475839, 62565.281644340677303, 62574.250167896054336, 62583.218818799447035, 62592.187597034579085, 62601.156502585268754, 62610.125535435297934, 62619.094695568477619, 62628.063982968596974, 62637.033397619459720, 62646.002939504891401, 62654.972608608673909, 62663.942404914654617, 62672.912328406659071, 62681.882379068490991, 62690.852556883983198, 62699.822861836961238, 62708.793293911287037, 62717.763853090800694, 62726.734539359335031, 62735.705352700744697, 62744.676293098891620, 62753.647360537630448, 62762.618555000794004, 62771.589876472316973, 62780.561324936010351, 62789.532900375765166, 62798.504602775472449, 62807.476432118994126, 62816.448388390250329, 62825.420471573088435, 62834.392681651457679, 62843.365018609190884, 62852.337482430266391, 62861.310073098538851, 62870.282790597942949, 62879.255634912369715, 62888.228606025768386, 62897.201703922051820, 62906.174928585140151, 62915.148279998997168, 62924.121758147499349, 62933.095363014646864, 62942.069094584359846, 62951.042952840587532, 62960.016937767279160, 62968.991049348391243, 62977.965287567887572, 62986.939652409731934, 62995.914143857888121, 63004.888761896356300, 63013.863506509078434, 63022.838377680054691, 63031.813375393241586, 63040.788499632675666, 63049.763750382327999, 63058.739127626176924, 63067.714631348237162, 63076.690261532530712, 63085.666018163057743, 63094.641901223811146, 63103.617910698842024, 63112.594046572128718, 63121.570308827751433, 63130.546697449688509, 63139.523212422012875, 63148.499853728731978, 63157.476621353904193, 63166.453515281573345, 63175.430535495790537, 63184.407681980585039, 63193.384954720058886, 63202.362353698234074, 63211.339878899205360, 63220.317530307016568, 63229.295307905769732, 63238.273211679515953, 63247.251241612357262, 63256.229397688352037, 63265.207679891638691, 63274.186088206261047, 63283.164622616342967, 63292.143283105979208, 63301.122069659293629, 63310.100982260366436, 63319.080020893321489, 63328.059185542289924, 63337.038476191381051, 63346.017892824711453, 63354.997435426448646, 63363.977103980694665, 63372.956898471587920, 63381.936818883281376, 63390.916865199913445, 63399.897037405637093, 63408.877335484605283, 63417.857759420985531, 63426.838309198916249, 63435.818984802594059, 63444.799786216164648, 63453.780713423810084, 63462.761766409712436, 63471.742945158046496, 63480.724249652994331, 63489.705679878774390, 63498.687235819539637, 63507.668917459523072, 63516.650724782892212, 63525.632657773894607, 63534.614716416683223, 63543.596900695527438, 63552.579210594616598, 63561.561646098176425, 63570.544207190425368, 63579.526893855625531, 63588.509706077958981, 63597.492643841709651, 63606.475707131088711, 63615.458895930350991, 63624.442210223744041, 63633.425649995529966, 63642.409215229963593, 63651.392905911292473, 63660.376722023800539, 63669.360663551728067, 63678.344730479388090, 63687.328922791035438, 63696.313240470939490, 63705.297683503413282, 63714.282251872726192, 63723.266945563147601, 63732.251764559034200, 63741.236708844648092, 63750.221778404287761, 63759.206973222273518, 63768.192293282940227, 63777.177738570542715, 63786.163309069459501, 63795.149004764010897, 63804.134825638488110, 63813.120771677255107, 63822.106842864624923, 63831.093039184961526, 63840.079360622570675, 63849.065807161838165, 63858.052378787113412, 63867.039075482738554, 63876.025897233070282, 63885.012844022479840, 63893.999915835323918, 63902.987112655988312, 63911.974434468844265, 63920.961881258248468, 63929.949453008615819, 63938.937149704324838, 63947.924971329761320, 63956.912917869303783, 63965.900989307388954, 63974.889185628388077, 63983.877506816694222, 63992.865952856773220, 64001.854523732967209, 64010.843219429763849, 64019.832039931556210, 64028.820985222737363, 64037.810055287780415, 64046.799250111107540, 64055.788569677148189, 64064.778013970360917, 64073.767582975160622, 64082.757276676034962, 64091.747095057384286, 64100.737038103710802, 64109.727105799473065, 64118.717298129115079, 64127.707615077109949, 64136.698056627930782, 64145.688622766065237, 64154.679313475993695, 64163.670128742160159, 64172.661068549110496, 64181.652132881303260, 64190.643321723218833, 64199.634635059395805, 64208.626072874329111, 64217.617635152484581, 64226.609321878422634, 64235.601133036638203, 64244.593068611640774, 64253.585128587976214, 64262.577312950154010, 64271.569621682690922, 64280.562054770161922, 64289.554612197054666, 64298.547293947958678, 64307.540100007376168, 64316.533030359896657, 64325.526084990036907, 64334.519263882371888, 64343.512567021476571, 64352.505994391889544, 64361.499545978185779, 64370.493221764932969, 64379.487021736742463, 64388.480945878145576, 64397.474994173760933, 64406.469166608148953, 64415.463463165928260, 64424.457883831695653, 64433.452428590004274, 64442.447097425516404, 64451.441890322799736, 64460.436807266472897, 64469.431848241147236, 64478.427013231470482, 64487.422302222024882, 64496.417715197458165, 64505.413252142403508, 64514.408913041464984, 64523.404697879319428, 64532.400606640578189, 64541.396639309903549, 64550.392795871935959, 64559.389076311337703, 64568.385480612749234, 64577.382008760847384, 64586.378660740272608, 64595.375436535709014, 64604.372336131833436, 64613.369359513322706, 64622.366506664846384, 64631.363777571074024, 64640.361172216711566, 64649.358690586443117, 64658.356332664967340, 64667.354098436975619, 64676.351987887181167, 64685.350001000275370, 64694.348137760978716, 64703.346398153997143, 64712.344782164051139, 64721.343289775861194, 64730.341920974147797, 64739.340675743631436, 64748.339554069061705, 64757.338555935195473, 64766.337681326709571, 64775.336930228389974, 64784.336302624978998, 64793.335798501240788, 64802.335417841903109, 64811.335160631722829, 64820.335026855500473, 64829.335016497949255, 64838.335129543876974, 64847.335365978047776, 64856.335725785240356, 64865.336208950226137, 64874.336815457798366, 64883.337545292728464, 64892.338398439853336, 64901.339374883929850, 64910.340474609736702, 64919.341697602139902, 64928.343043845903594, 64937.344513325864682, 64946.346106026809139, 64955.347821933573869, 64964.349661030959396, 64973.351623303831730, 64982.353708736991393, 64991.355917315275292, 65000.358249023513054, 65009.360703846577962, 65018.363281769263267, 65027.365982776464080, 65036.368806853002752, 65045.371753983774397, 65054.374824153579539, 65063.378017347335117, 65072.381333549878036, 65081.384772746081580, 65090.388334920826310, 65099.392020059007336, 65108.395828145454288, 65117.399759165105934, 65126.403813102835556, 65135.407989943538269, 65144.412289672101906, 65153.416712273436133, 65162.421257732414233, 65171.425926034004078, 65180.430717163071677, 65189.435631104533968, 65198.440667843315168, 65207.445827364346769, 65216.451109652560262, 65225.456514692865312, 65234.462042470229790, 65243.467692969534255, 65252.473466175775684, 65261.479362073863740, 65270.485380648780847, 65279.491521885429393, 65288.497785768820904, 65297.504172283857770, 65306.510681415551517, 65315.517313148862740, 65324.524067468730209, 65333.530944360165449, 65342.537943808121781, 65351.545065797596180, 65360.552310313556518, 65369.559677341014321, 65378.567166864944738, 65387.574778870359296, 65396.582513342233142, 65405.590370265592355, 65414.598349625441188, 65423.606451406776614, 65432.614675594624714, 65441.623022174011567, 65450.631491129948699, 65459.640082447462191, 65468.648796111592674, 65477.657632107351674, 65486.666590419794375, 65495.675671033968683, 65504.684873934886127, 65513.694199107623717, 65522.703646537222085, 65531.713216208729136, 65540.722908107214607, 65549.732722217740957, 65558.742658525385195, 65567.752717015173403, 65576.762897672233521, 65585.773200481606182, 65594.783625428390224, 65603.794172497655381, 65612.804841674500494, 65621.815632944024401, 65630.826546291296836, 65639.837581701445743, 65648.848739159555407, 65657.860018650724669, 65666.871420160096022, 65675.882943672739202, 65684.894589173811255, 65693.906356648396468, 65702.918246081666439, 65711.930257458676351, 65720.942390764641459, 65729.954645984646049, 65738.967023103832616, 65747.979522107358207, 65756.992142980365315, 65766.004885707996436, 65775.017750275394064, 65784.030736667758902, 65793.043844870204339, 65802.057074867901974, 65811.070426646037959, 65820.083900189783890, 65829.097495484296815, 65838.111212514777435, 65847.125051266382798, 65856.139011724313605, 65865.153093873741454, 65874.167297699896153, 65883.181623187963851, 65892.196070323116146, 65901.210639090568293, 65910.225329475535545, 65919.240141463218606, 65928.255075038847281, 65937.270130187651375, 65946.285306894817040, 65955.300605145603186, 65964.316024925195961, 65973.331566218868829, 65982.347229011851596, 65991.363013289344963, 66000.378919036651496, 66009.394946238986449, 66018.411094881594181, 66027.427364949748153, 66036.443756428692723, 66045.460269303686800, 66054.476903560003848, 66063.493659182888223, 66072.510536157657043, 66081.527534469569218, 66090.544654103869107, 66099.561895045888377, 66108.579257280871389, 66117.596740794149810, 66126.614345570967998, 66135.632071596672176, 66144.649918856535805, 66153.667887335861451, 66162.685977019980783, 66171.704187894167262, 66180.722519943767111, 66189.740973154082894, 66198.759547510417178, 66207.778242998159840, 66216.797059602569789, 66225.815997309022350, 66234.835056102834642, 66243.854235969338333, 66252.873536893894197, 66261.892958861863008, 66270.912501858547330, 66279.932165869351593, 66288.951950879622018, 66297.971856874690275, 66306.991883839931688, 66316.012031760736136, 66325.032300622449839, 66334.052690410477226, 66343.073201110164518, 66352.093832706901594, 66361.114585186107433, 66370.135458533128258, 66379.156452733368496, 66388.177567772247130, 66397.198803635110380, 66406.220160307449987, 66415.241637774568517, 66424.263236021943158, 66433.284955034978339, 66442.306794799093041, 66451.328755299677141, 66460.350836522207828, 66469.373038452060428, 66478.395361074697576, 66487.417804375552805, 66496.440368340045097, 66505.463052953651641, 66514.485858201776864, 66523.508784069883404, 66532.531830543448450, 66541.554997607905534, 66550.578285248688189, 66559.601693451317260, 66568.625222201240831, 66577.648871483892435, 66586.672641284792917, 66595.696531589404913, 66604.720542383161956, 66613.744673651628545, 66622.768925380238215, 66631.793297554497258, 66640.817790159911965, 66649.842403181944974, 66658.867136606131680, 66667.891990417978377, 66676.916964602976805, 66685.942059146633255, 66694.967274034497677, 66703.992609252047259, 66713.018064784831950, 66722.043640618358040, 66731.069336738175480, 66740.095153129805112, 66749.121089778782334, 66758.147146670642542, 66767.173323790950235, 66776.199621125226258, 66785.226038659049664, 66794.252576377941296, 66803.279234267494758, 66812.306012313245446, 66821.332910500757862, 66830.359928815596504, 66839.387067243340425, 66848.414325769597781, 66857.441704379874864, 66866.469203059823485, 66875.496821794979041, 66884.524560570964240, 66893.552419373329030, 66902.580398187725223, 66911.608496999702766, 66920.636715794884367, 66929.665054558892734, 66938.693513277277816, 66947.722091935735079, 66956.750790519814473, 66965.779609015167807, 66974.808547407417791, 66983.837605682172580, 66992.866783825069433, 67001.896081821760163, 67010.925499657852924, 67019.955037318999530, 67028.984694790851790, 67038.014472059046966, 67047.044369109236868, 67056.074385927087860, 67065.104522498237202, 67074.134778808365809, 67083.165154843110940, 67092.195650588182616, 67101.226266029203543, 67110.257001151883742, 67119.287855941889575, 67128.318830384887406, 67137.349924466587254, 67146.381138172670035, 67155.412471488816664, 67164.443924400737160, 67173.475496894112439, 67182.507188954652520, 67191.539000568081974, 67200.570931720096269, 67209.602982396376319, 67218.635152582675801, 67227.667442264719284, 67236.699851428216789, 67245.732380058863782, 67254.765028142428491, 67263.797795664635487, 67272.830682611209340, 67281.863688967903727, 67290.896814720457769, 67299.930059854610590, 67308.963424356115866, 67317.996908210727270, 67327.030511404213030, 67336.064233922312269, 67345.098075750778662, 67354.132036875438644, 67363.166117281987681, 67372.200316956237657, 67381.234635883985902, 67390.269074050956988, 67399.303631442991900, 67408.338308045829763, 67417.373103845297010, 67426.408018827161868, 67435.443052977236221, 67444.478206281317398, 67453.513478725217283, 67462.548870294733206, 67471.584380975662498, 67480.620010753846145, 67489.655759615096031, 67498.691627545224037, 67507.727614530056599, 67516.763720555420150, 67525.799945607141126, 67534.836289671075065, 67543.872752733033849, 67552.909334778887569, 67561.946035794433556, 67570.982855765571003, 67580.019794678126345, 67589.056852517969673, 67598.094029270941974, 67607.131324922898784, 67616.168739459724748, 67625.206272867275402, 67634.243925131420838, 67643.281696238045697, 67652.319586173020070, 67661.357594922243152, 67670.395722471570480, 67679.433968806901248, 67688.472333914149203, 67697.510817779184435, 67706.549420387891587, 67715.588141726213507, 67724.626981780020287, 67733.665940535254776, 67742.705017977801617, 67751.744214093560004, 67760.783528868487338, 67769.822962288482813, 67778.862514339474728, 67787.902185007405933, 67796.941974278175621, 67805.981882137755747, 67815.021908572045504, 67824.062053567045950, 67833.102317108641728, 67842.142699182804790, 67851.183199775477988, 67860.223818872647826, 67869.264556460228050, 67878.305412524219719, 67887.346387050565681, 67896.387480025223340, 67905.428691434208304, 67914.470021263434319, 67923.511469498931547, 67932.553036126657389, 67941.594721132612904, 67950.636524502755492, 67959.678446223129868, 67968.720486279664328, 67977.762644658389036, 67986.804921345319599, 67995.847316326457076, 68004.889829587773420, 68013.932461115327897, 68022.975210895121563, 68032.018078913140926, 68041.061065155459801, 68050.104169608050142, 68059.147392256971216, 68068.190733088253182, 68077.234192087926203, 68086.277769242020440, 68095.321464536595158, 68104.365277957665967, 68113.409209491321235, 68122.453259123562020, 68131.497426840491244, 68140.541712628139067, 68149.586116472564754, 68158.630638359856675, 68167.675278276044992, 68176.720036207232624, 68185.764912139493390, 68194.809906058857450, 68203.855017951485934, 68212.900247803394450, 68221.945595600700472, 68230.991061329492368, 68240.036644975843956, 68249.082346525887260, 68258.128165965696098, 68267.174103281373391, 68276.220158459036611, 68285.266331484788680, 68294.312622344776173, 68303.359031025058357, 68312.405557511810912, 68321.452201791093103, 68330.498963849109714, 68339.545843671934563, 68348.592841245714226, 68357.639956556580728, 68366.687189590695198, 68375.734540334175108, 68384.782008773167036, 68393.829594893861213, 68402.877298682346009, 68411.925120124826208, 68420.973059207448387, 68430.021115916359122, 68439.069290237748646, 68448.117582157763536, 68457.165991662608576, 68466.214518738415791, 68475.263163371389965, 68484.311925547721330, 68493.360805253571016, 68502.409802475129254, 68511.458917198615381, 68520.508149410190526, 68529.557499096074025, 68538.606966242470662, 68547.656550835570670, 68556.706252861578832, 68565.756072306714486, 68574.806009157196968, 68583.856063399231061, 68592.906235019065207, 68601.956524002889637, 68611.006930336938240, 68620.057454007459455, 68629.108095000687172, 68638.158853302840726, 68647.209728900154005, 68656.260721778890002, 68665.311831925326260, 68674.363059325638460, 68683.414403966104146, 68692.465865833029966, 68701.517444912620704, 68710.569141191153903, 68719.620954654907109, 68728.672885290128761, 68737.724933083110955, 68746.777098020131234, 68755.829380087438039, 68764.881779271352571, 68773.934295558123267, 68782.986928934085881, 68792.039679385474301, 68801.092546898624278, 68810.145531459827907, 68819.198633055377286, 68828.251851671579061, 68837.305187294754433, 68846.358639911195496, 68855.412209507208900, 68864.465896069144947, 68873.519699583310285, 68882.573620036011562, 68891.627657413584529, 68900.681811702364939, 68909.736082888703095, 68918.790470958905644, 68927.844975899322890, 68936.899597696290584, 68945.954336336173583, 68955.009191805307637, 68964.064164090057602, 68973.119253176773782, 68982.174459051791928, 68991.229781701491447, 69000.285221112237195, 69009.340777270423132, 69018.396450162385008, 69027.452239774502232, 69036.508146093183313, 69045.564169104778557, 69054.620308795667370, 69063.676565152287367, 69072.732938160959748, 69081.789427808122127, 69090.846034080139361, 69099.902756963449065, 69108.959596444445197, 69118.016552509507164, 69127.073625145101687, 69136.130814337579068, 69145.188120073376922, 69154.245542338932864, 69163.303081120669958, 69172.360736404967611, 69181.418508178292541, 69190.476396427067812, 69199.534401137760142, 69208.592522296763491, 69217.650759890530026, 69226.709113905497361, 69235.767584328132216, 69244.826171144886757, 69253.884874342198600, 69262.943693906534463, 69272.002629824346513, 69281.061682082116022, 69290.120850666280603, 69299.180135563336080, 69308.239536759749171, 69317.299054241986596, 69326.358687996544177, 69335.418438009888632, 69344.478304268501233, 69353.538286758892355, 69362.598385467543267, 69371.658600380949792, 69380.718931485593203, 69389.779378767998423, 69398.839942214646726, 69407.900621812077588, 69416.961417546772282, 69426.022329405255732, 69435.083357374038314, 69444.144501439644955, 69453.205761588629684, 69462.267137807459221, 69471.328630082702148, 69480.390238400868839, 69489.451962748513324, 69498.513803112175083, 69507.575759478379041, 69516.637831833679229, 69525.700020164644229, 69534.762324457798968, 69543.824744699682924, 69552.887280876893783, 69561.949932975985575, 69571.012700983497780, 69580.075584885998978, 69589.138584670072305, 69598.201700322300894, 69607.264931829224224, 69616.328279177469085, 69625.391742353589507, 69634.455321344168624, 69643.519016135804122, 69652.582826715079136, 69661.646753068591352, 69670.710795182967559, 69679.774953044761787, 69688.839226640586276, 69697.903615957096918, 69706.968120980847743, 69716.032741698465543, 69725.097478096591658, 69734.162330161809223, 69743.227297880759579, 69752.292381240098621, 69761.357580226394930, 69770.422894826333504, 69779.488325026497478, 69788.553870813586400, 69797.619532174168853, 69806.685309094973491, 69815.751201562583447, 69824.817209563669167, 69833.883333084886544, 69842.949572112876922, 69852.015926634325297, 69861.082396635902114, 69870.148982104219613, 69879.215683025991893, 69888.282499387889402, 69897.349431176568032, 69906.416478378712782, 69915.483640981023200, 69924.550918970155180, 69933.618312332793721, 69942.685821055682027, 69951.753445125446888, 69960.821184528831509, 69969.889039252520888, 69978.957009283200023, 69988.025094607568462, 69997.093295212398516, 70006.161611084346077, 70015.230042210139800, 70024.298588576493785, 70033.367250170151237, 70042.436026977797155, 70051.504918986189296, 70060.573926182041760, 70069.643048552097753, 70078.712286083100480, 70087.781638761778595, 70096.851106574875303, 70105.920689509133808, 70114.990387551311869, 70124.060200688152690, 70133.130128906414029, 70142.200172192839091, 70151.270330534229288, 70160.340603917313274, 70169.410992328848806, 70178.481495755637297, 70187.552114184451057, 70196.622847602033289, 70205.693695995185408, 70214.764659350708826, 70223.835737655346747, 70232.906930895900587, 70241.978239059200860, 70251.049662131976220, 70260.121200101057184, 70269.192852953274269, 70278.264620675385231, 70287.336503254206036, 70296.408500676567201, 70305.480612929255585, 70314.552839999101707, 70323.625181872921530, 70332.697638537531020, 70341.770209979760693, 70350.842896186441067, 70359.915697144402657, 70368.988612840475980, 70378.061643261477002, 70387.134788394279894, 70396.208048225700622, 70405.281422742613358, 70414.354911931834067, 70423.428515780236921, 70432.502234274666989, 70441.576067401983892, 70450.650015149061801, 70459.724077502745786, 70468.798254449910019, 70477.872545977428672, 70486.946952072161366, 70496.021472720982274, 70505.096107910809224, 70514.170857628458180, 70523.245721860890626, 70532.320700594922528, 70541.395793817500817, 70550.471001515485113, 70559.546323675778694, 70568.621760285284836, 70577.697311330906814, 70586.772976799562457, 70595.848756678140489, 70604.924650953573291, 70614.000659612749587, 70623.076782642601756, 70632.153020030062180, 70641.229371762034134, 70650.305837825449998, 70659.382418207256706, 70668.459112894357531, 70677.535921873713960, 70686.612845132243820, 70695.689882656908594, 70704.767034434640664, 70713.844300452386960, 70722.921680697123520, 70731.999175155753619, 70741.076783815267845, 70750.154506662642234, 70759.232343684809166, 70768.310294868730125, 70777.388360201395699, 70786.466539669767371, 70795.544833260821179, 70804.623240961533156, 70813.701762758908444, 70822.780398639879422, 70831.859148591465782, 70840.938012600643560, 70850.016990654432448, 70859.096082739793928, 70868.175288843747694, 70877.254608953269781, 70886.334043055408983, 70895.413591137141339, 70904.493253185471985, 70913.573029187435168, 70922.652919130021473, 70931.732923000265146, 70940.813040785200428, 70949.893272471832461, 70958.973618047180935, 70968.054077498309198, 70977.134650812222390, 70986.215337975983857, 70995.296138976598741, 71004.377053801115835, 71013.458082436627592, 71022.539224870139151, 71031.620481088699307, 71040.701851079385960, 71049.783334829233354, 71058.864932325304835, 71067.946643554692855, 71077.028468504431657, 71086.110407161599142, 71095.192459513287758, 71104.274625546531752, 71113.356905248452676, 71122.439298606099328, 71131.521805606564158, 71140.604426236925065, 71149.687160484303604, 71158.770008335763123, 71167.852969778410625, 71176.936044799338561, 71186.019233385639382, 71195.102535524449195, 71204.185951202860451, 71213.269480407965602, 71222.353123126900755, 71231.436879346758360, 71240.520749054689077, 71249.604732237785356, 71258.688828883183305, 71267.773038978033583, 71276.857362509414088, 71285.941799464490032, 71295.026349830412073, 71304.111013594301767, 71313.195790743309772, 71322.280681264572195, 71331.365685145225143, 71340.450802372448379, 71349.536032933378010, 71358.621376815193798, 71367.706834005017299, 71376.792404490042827, 71385.878088257406489, 71394.963885294331703, 71404.049795587910921, 71413.135819125382113, 71422.221955893895938, 71431.308205880646710, 71440.394569072799641, 71449.481045457549044, 71458.567635022089235, 71467.654337753614527, 71476.741153639304684, 71485.828082666368573, 71494.915124821985955, 71504.002280093394802, 71513.089548467774875, 71522.176929932364146, 71531.264424474342377, 71540.352032080947538, 71549.439752739359392, 71558.527586436830461, 71567.615533160613268, 71576.703592897873023, 71585.791765635876800, 71594.880051361848018, 71603.968450063024648, 71613.056961726630107, 71622.145586339916917, 71631.234323890137603, 71640.323174364530132, 71649.412137750332477, 71658.501214034826262, 71667.590403205234907, 71676.679705248825485, 71685.769120152879623, 71694.858647904635291, 71703.948288491374115, 71713.038041900363169, 71722.127908118869527, 71731.217887134160264, 71740.307978933546110, 71749.398183504294138, 71758.488500833671424, 71767.578930908959592, 71776.669473717483925, 71785.760129246526049, 71794.850897483367589, 71803.941778415290173, 71813.032772029648186, 71822.123878313694149, 71831.215097254753346, 71840.306428840165609, 71849.397873057183460, 71858.489429893175839, 71867.581099335424369, 71876.672881371268886, 71885.764775988049223, 71894.856783173061558, 71903.948902913660277, 71913.041135197141557, 71922.133480010888889, 71931.225937342198449, 71940.318507178453729, 71949.411189506965457, 71958.503984315088019, 71967.596891590161249, 71976.689911319554085, 71985.783043490635464, 71994.876288090730668, 72003.969645107237739, 72013.063114527452854, 72022.156696338832262, 72031.250390528701246, 72040.344197084414191, 72049.438115993369138, 72058.532147242949577, 72067.626290820524446, 72076.720546713477233, 72085.814914909191430, 72094.909395395079628, 72104.003988158525317, 72113.098693186897435, 72122.193510467623128, 72131.288439988085884, 72140.383481735683745, 72149.478635697843856, 72158.573901861978811, 72167.669280215486651, 72176.764770745779970, 72185.860373440285912, 72194.956088286431623, 72204.051915271615144, 72213.147854383278172, 72222.243905608862406, 72231.340068935765885, 72240.436344351459411, 72249.532731843355577, 72258.629231398910633, 72267.725843005566276, 72276.822566650749650, 72285.919402321931557, 72295.016350006553694, 72304.113409692057758, 72313.210581365929102, 72322.307865015623975, 72331.405260628584074, 72340.502768192280200, 72349.600387694183155, 72358.698119121807395, 72367.795962462536409, 72376.893917703928309, 72385.991984833410243, 72395.090163838496665, 72404.188454706672928, 72413.286857425409835, 72422.385371982192737, 72431.483998364536092, 72440.582736559939804, 72449.681586555874674, 72458.780548339884263, 72467.879621899424819, 72476.978807222039904, 72486.078104295214871, 72495.177513106493279, 72504.277033643345931, 72513.376665893360041, 72522.476409843977308, 72531.576265482784947, 72540.676232797268312, 72549.776311774985516, 72558.876502403480117, 72567.976804670222919, 72577.077218562830240, 72586.177744068816537, 72595.278381175681716, 72604.379129871042096, 72613.479990142397583, 72622.580961977320840, 72631.682045363340876, 72640.783240288074012, 72649.884546739020152, 72658.985964703781065, 72668.087494169900310, 72677.189135124936001, 72686.290887556504458, 72695.392751452149241, 72704.494726799428463, 72713.596813585987547, 72722.699011799340951, 72731.801321427104995, 72740.903742456852342, 72750.006274876199313, 72759.108918672733125, 72768.211673834011890, 72777.314540347681032, 72786.417518201327766, 72795.520607382568414, 72804.623807878975640, 72813.727119678194867, 72822.830542767827865, 72831.934077135490952, 72841.037722768785898, 72850.141479655372677, 72859.245347782823956, 72868.349327138814260, 72877.453417710945359, 72886.557619486862677, 72895.661932454197085, 72904.766356600564905, 72913.870891913669766, 72922.975538381069782, 72932.080295990468585, 72941.185164729497046, 72950.290144585829694, 72959.395235547082848, 72968.500437600916484, 72977.605750735048787, 72986.711174937066971, 72995.816710194689222, 73004.922356495531858, 73014.028113827327616, 73023.133982177707367, 73032.239961534360191, 73041.346051884975168, 73050.452253217197722, 73059.558565518746036, 73068.664988777294639, 73077.771522980561713, 73086.878168116192683, 73095.984924171920284, 73105.091791135404492, 73114.198768994392594, 73123.305857736573671, 73132.413057349607698, 73141.520367821271066, 73150.627789139252855, 73159.735321291242144, 73168.842964264971670, 73177.950718048174167, 73187.058582628553268, 73196.166557993856259, 73205.274644131801324, 73214.382841030106647, 73223.491148676504963, 73232.599567058772664, 73241.708096164584276, 73250.816735981745296, 73259.925486497973907, 73269.034347700988292, 73278.143319578564842, 73287.252402118479949, 73296.361595308451797, 73305.470899136242224, 73314.580313589642174, 73323.689838656369830, 73332.799474324230687, 73341.909220580957481, 73351.019077414355706, 73360.129044812201755, 73369.239122762228362, 73378.349311252255575, 73387.459610270045232, 73396.570019803402829, 73405.680539840090205, 73414.791170367912855, 73423.901911374676274, 73433.012762848142302, 73442.123724776145536, 73451.234797146476922, 73460.345979946898296, 73469.457273165273364, 73478.568676789393066, 73487.680190807062900, 73496.791815206102910, 73505.903549974318594, 73515.015395099544548, 73524.127350569615373, 73533.239416372322012, 73542.351592495513614, 73551.463878927010228, 73560.576275654661004, 73569.688782666271436, 73578.801399949734332, 73587.914127492840635, 73597.026965283454047, 73606.139913309423719, 73615.252971558584250, 73624.366140018813894, 73633.479418677947251, 73642.592807523848023, 73651.706306544365361, 73660.819915727377520, 73669.933635060762754, 73679.047464532355662, 73688.161404130034498, 73697.275453841706621, 73706.389613655206631, 73715.503883558427333, 73724.618263539261534, 73733.732753585587488, 73742.847353685268899, 73751.962063826242229, 73761.076883996356628, 73770.191814183519455, 73779.306854375652620, 73788.422004560619825, 73797.537264726328431, 73806.652634860729449, 73815.768114951686584, 73824.883704987121746, 73833.999404954942293, 73843.115214843055583, 73852.231134639427182, 73861.347164331920794, 73870.463303908501985, 73879.579553357078112, 73888.695912665585638, 73897.812381821961026, 73906.928960814126185, 73916.045649630017579, 73925.162448257557116, 73934.279356684754021, 73943.396374899486545, 73952.513502889749361, 73961.630740643464378, 73970.748088148597162, 73979.865545393113280, 73988.983112364920089, 73998.100789052041364, 74007.218575442399015, 74016.336471523987711, 74025.454477284743916, 74034.572592712691403, 74043.690817795752082, 74052.809152521949727, 74061.927596879220800, 74071.046150855559972, 74080.164814438947360, 74089.283587617392186, 74098.402470378903672, 74107.521462711418280, 74116.640564602959785, 74125.759776041508303, 74134.879097015116713, 74143.998527511721477, 74153.118067519375472, 74162.237717026073369, 74171.357476019824389, 74180.477344488637755, 74189.597322420522687, 74198.717409803517512, 74207.837606625646004, 74216.957912874917383, 74226.078328539369977, 74235.198853607013007, 74244.319488065913902, 74253.440231904081884, 74262.561085109555279, 74271.682047670372413, 74280.803119574586162, 74289.924300810249406, 74299.045591365385917, 74308.166991228077677, 74317.288500386348460, 74326.410118828265695, 74335.531846541867708, 74344.653683515265584, 74353.775629736483097, 74362.897685193573125, 74372.019849874646752, 74381.142123767756857, 74390.264506860970869, 74399.386999142385321, 74408.509600600053091, 74417.632311222070712, 74426.755130996520165, 74435.878059911468881, 74445.001097955057048, 74454.124245115322992, 74463.247501380392350, 74472.370866738361656, 74481.494341177312890, 74490.617924685342587, 74499.741617250605486, 74508.865418861169019, 74517.989329505144269, 74527.113349170642323, 74536.237477845803369, 74545.361715518738492, 74554.486062177544227, 74563.610517810360761, 74572.735082405313733, 74581.859755950543331, 74590.984538434146089, 74600.109429844305851, 74609.234430169104598, 74618.359539396711625, 74627.484757515296224, 74636.610084512940375, 74645.735520377827925, 74654.861065098084509, 74663.986718661893974, 74673.112481057396508, 74682.238352272761404, 74691.364332296114299, 74700.490421115639037, 74709.616618719490361, 74718.742925095866667, 74727.869340232908144, 74736.995864118784084, 74746.122496741692885, 74755.249238089789287, 74764.376088151271688, 74773.503046914294828, 74782.630114367086207, 74791.757290497800568, 74800.884575294650858, 74810.011968745791819, 74819.139470839450951, 74828.267081563826650, 74837.394800907117315, 74846.522628857521340, 74855.650565403251676, 74864.778610532506718, 74873.906764233470312, 74883.035026494428166, 74892.163397303520469, 74901.291876649047481, 74910.420464519120287, 74919.549160902068252, 74928.677965786075220, 74937.806879159339587, 74946.935901010147063, 74956.065031326681492, 74965.194270097243134, 74974.323617310001282, 74983.453072953227093, 74992.582637015177170, 75001.712309484093566, 75010.842090348218335, 75019.971979595793528, 75029.101977215090301, 75038.232083194350707, 75047.362297521845903, 75056.492620185832493, 75065.623051174567081, 75074.753590476364479, 75083.884238079423085, 75093.014993972057709, 75102.145858142539510, 75111.276830579125090, 75120.407911270114710, 75129.539100203764974, 75138.670397368419799, 75147.801802752306685, 75156.933316343725892, 75166.064938131006784, 75175.196668102391413, 75184.328506246209145, 75193.460452550760238, 75202.592507004344952, 75211.724669595248997, 75220.856940311816288, 75229.989319142303430, 75239.121806075097993, 75248.254401098442031, 75257.387104200694012, 75266.519915370154195, 75275.652834595151944, 75284.785861864031176, 75293.918997165106703, 75303.052240486693336, 75312.185591817134991, 75321.319051144790137, 75330.452618457944482, 75339.586293745014700, 75348.720076994242845, 75357.853968194060144, 75366.987967332766857, 75376.122074398765108, 75385.256289380340604, 75394.390612265895470, 75403.525043043773621, 75412.659581702333526, 75421.794228229919099, 75430.928982614947017, 75440.063844845761196, 75449.198814910705551, 75458.333892798196757, 75467.469078496578732, 75476.604371994209941, 75485.739773279536166, 75494.875282340886770, 75504.010899166678428, 75513.146623745255056, 75522.282456065062433, 75531.418396114444477, 75540.554443881846964, 75549.690599355642917, 75558.826862524219905, 75567.963233375980053, 75577.099711899369140, 75586.236298082760186, 75595.372991914555314, 75604.509793383200304, 75613.646702477111830, 75622.783719184648362, 75631.920843494299334, 75641.058075394466869, 75650.195414873553091, 75659.332861920003779, 75668.470416522250162, 75677.608078668738017, 75686.745848347884021, 75695.883725548119401, 75705.021710257889936, 75714.159802465655957, 75723.298002159863245, 75732.436309328943025, 75741.574723961355630, 75750.713246045532287, 75759.851875569962431, 75768.990612523077289, 75778.129456893322640, 75787.268408669231576, 75796.407467839206220, 75805.546634391721454, 75814.685908315266715, 75823.825289598302334, 75832.964778229303192, 75842.104374196758727, 75851.244077489129268, 75860.383888094933354, 75869.523806002602214, 75878.663831200668938, 75887.803963677593856, 75896.944203421895509, 75906.084550422048778, 75915.225004666557652, 75924.365566143911565, 75933.506234842658159, 75942.647010751257767, 75951.787893858199823, 75960.928884152046521, 75970.069981621272746, 75979.211186254426138, 75988.352498039996135, 75997.493916966501274, 76006.635443022474647, 76015.777076196449343, 76024.918816476929351, 76034.060663852447760, 76043.202618311566766, 76052.344679842790356, 76061.486848434666172, 76070.629124075727304, 76079.771506754506845, 76088.913996459596092, 76098.056593179469928, 76107.199296902748756, 76116.342107617922011, 76125.485025313580991, 76134.628049978258787, 76143.771181600546697, 76152.914420168977813, 76162.057765672143432, 76171.201218098562094, 76180.344777436868753, 76189.488443675552844, 76198.632216803263873, 76207.776096808534930, 76216.920083679971867, 76226.064177406122326, 76235.208377975592157, 76244.352685376972659, 76253.497099598840578, 76262.641620629758108, 76271.786248458374757, 76280.930983073252719, 76290.075824462983292, 76299.220772616201430, 76308.365827521483880, 76317.510989167436492, 76326.656257542665116, 76335.801632635790156, 76344.947114435417461, 76354.092702930167434, 76363.238398108645924, 76372.384199959502439, 76381.530108471313724, 76390.676123632714734, 76399.822245432384079, 76408.968473858883954, 76418.114808900878415, 76427.261250547016971, 76436.407798785890918, 76445.554453606193420, 76454.701214996530325, 76463.848082945536589, 76472.995057441905374, 76482.142138474242529, 76491.289326031212113, 76500.436620101463632, 76509.584020673675695, 76518.731527736483258, 76527.879141278535826, 76537.026861288526561, 76546.174687755119521, 76555.322620666978764, 76564.470660012753797, 76573.618805781123228, 76582.767057960794773, 76591.915416540403385, 76601.063881508671329, 76610.212452854262665, 76619.361130565841449, 76628.509914632115397, 76637.658805041763117, 76646.807801783506875, 76655.956904846010730, 76665.106114217982395, 76674.255429888115032, 76683.404851845145458, 76692.554380077708629, 76701.704014574555913, 76710.853755324409576, 76720.003602315962780, 76729.153555537923239, 76738.303614979027770, 76747.453780627954984, 76756.604052473470801, 76765.754430504268385, 76774.904914709099103, 76784.055505076656118, 76793.206201595705352, 76802.357004254969070, 76811.507913043169538, 76820.658927949072677, 76829.810048961386201, 76838.961276068861480, 76848.112609260264435, 76857.264048524331884, 76866.415593849786092, 76875.567245225422084, 76884.719002639962127, 76893.870866082172142, 76903.022835540832602, 76912.174911004665773, 76921.327092462466680, 76930.479379903001245, 76939.631773315006285, 76948.784272687305929, 76957.936878008636995, 76967.089589267779957, 76976.242406453500735, 76985.395329554623459, 76994.548358559870394, 77003.701493458080222, 77012.854734238018864, 77022.008080888466793, 77031.161533398233587, 77040.315091756114271, 77049.468755950903869, 77058.622525971382856, 77067.776401806389913, 77076.930383444705512, 77086.084470875110128, 77095.238664086456993, 77104.392963067555684, 77113.547367807201226, 77122.701878294217749, 77131.856494517414831, 77141.011216465645703, 77150.166044127676287, 77159.320977492374368, 77168.476016548564075, 77177.631161285069538, 77186.786411690729437, 77195.941767754397006, 77205.097229464852717, 77214.252796810993459, 77223.408469781614258, 77232.564248365597450, 77241.720132551781717, 77250.876122329005739, 77260.032217686137301, 77269.188418612000532, 77278.344725095477770, 77287.501137125436799, 77296.657654690716299, 77305.814277780184057, 77314.971006382722408, 77324.127840487170033, 77333.284780082423822, 77342.441825157351559, 77351.598975700791925, 77360.756231701685465, 77369.913593148870859, 77379.071060031244997, 77388.228632337675663, 77397.386310057074297, 77406.544093178308685, 77415.701981690290268, 77424.859975581872277, 77434.018074842009810, 77443.176279459570651, 77452.334589423451689, 77461.493004722549813, 77470.651525345805567, 77479.810151282101288, 77488.968882520333864, 77498.127719049443840, 77507.286660858328105, 77516.445707935941755, 77525.604860271138023, 77534.764117852886557, 77543.923480670098797, 77553.082948711686186, 77562.242521966618369, 77571.402200423792237, 77580.561984072148334, 77589.721872900641756, 77598.881866898183944, 77608.041966053715441, 77617.202170356191345, 77626.362479794566752, 77635.522894357767655, 77644.683414034763700, 77653.844038814495434, 77663.004768685932504, 77672.165603637971799, 77681.326543659670278, 77690.487588739924831, 77699.648738867705106, 77708.809994032009854, 77717.971354221750516, 77727.132819425940397, 77736.294389633534593, 77745.456064833546407, 77754.617845014887280, 77763.779730166614172, 77772.941720277638524, 77782.103815336988191, 77791.266015333647374, 77800.428320256585721, 77809.590730094801984, 77818.753244837309467, 77827.915864473063266, 77837.078588991091237, 77846.241418380392133, 77855.404352629964706, 77864.567391728822258, 77873.730535665978095, 77882.893784430416417, 77892.057138011165080, 77901.220596397251938, 77910.384159577646642, 77919.547827541449806, 77928.711600277616526, 77937.875477775174659, 77947.039460023166612, 77956.203547010620241, 77965.367738726577954, 77974.532035160053056, 77983.696436300087953, 77992.860942135710502, 78002.025552655992215, 78011.190267849946395, 78020.355087706615450, 78029.520012215056340, 78038.685041364326025, 78047.850175143452361, 78057.015413541521411, 78066.180756547575584, 78075.346204150657286, 78084.511756339838030, 78093.677413104189327, 78102.843174432768137, 78112.009040314645972, 78121.175010738894343, 78130.341085694555659, 78139.507265170759638, 78148.673549156519584, 78157.839937640979770, 78167.006430613182602, 78176.173028062214144, 78185.339729977145907, 78194.506536347107613, 78203.673447161156218, 78212.840462408392341, 78222.007582077902043, 78231.174806158815045, 78240.342134640217409, 78249.509567511166097, 78258.677104760805378, 78267.844746378250420, 78277.012492352587287, 78286.180342672960251, 78295.348297328426270, 78304.516356308158720, 78313.684519601229113, 78322.852787196781719, 78332.021159083946259, 78341.189635251808795, 78350.358215689542703, 78359.526900386263151, 78368.695689331056201, 78377.864582513124333, 78387.033579921582714, 78396.202681545531959, 78405.371887374159996, 78414.541197396567441, 78423.710611601927667, 78432.880129979384947, 78442.049752518098103, 78451.219479207182303, 78460.389310035825474, 78469.559244993157336, 78478.729284068365814, 78487.899427250580629, 78497.069674528989708, 78506.240025892751873, 78515.410481331025949, 78524.581040832999861, 78533.751704387817881, 78542.922471984682488, 78552.093343612752506, 78561.264319261186756, 78570.435398919216823, 78579.606582576001529, 78588.777870220714249, 78597.949261842528358, 78607.120757430689991, 78616.292356974357972, 78625.464060462705675, 78634.635867884964682, 78643.807779230337474, 78652.979794487982872, 78662.151913647147012, 78671.324136697003269, 78680.496463626768673, 78689.668894425689359, 78698.841429082924151, 78708.014067587719182, 78717.186809929276933, 78726.359656096828985, 78735.532606079592369, 78744.705659866769565, 78753.878817447621259, 78763.052078811364481, 78772.225443947201711, 78781.398912844422739, 78790.572485492186388, 78799.746161879797000, 78808.919941996457055, 78818.093825831412687, 78827.267813373939134, 78836.441904613238876, 78845.616099538587150, 78854.790398139200988, 78863.964800404370180, 78873.139306323355413, 78882.313915885359165, 78891.488629079700331, 78900.663445895595942, 78909.838366322350339, 78919.013390349209658, 78928.188517965420033, 78937.363749160285806, 78946.539083923067665, 78955.714522243026295, 78964.890064109451487, 78974.065709511647583, 78983.241458438846166, 78992.417310880351579, 79001.593266825482715, 79010.769326263471157, 79019.945489183635800, 79029.121755575295538, 79038.298125427711057, 79047.474598730172147, 79056.651175471997703, 79065.827855642462964, 79075.004639230915927, 79084.181526226646383, 79093.358516618929571, 79102.535610397113487, 79111.712807550502475, 79120.890108068400878, 79130.067511940127588, 79139.245019155016053, 79148.422629702356062, 79157.600343571495614, 79166.778160751782707, 79175.956081232492579, 79185.134105002987781, 79194.312232052601757, 79203.490462370667956, 79212.668795946505270, 79221.847232769476250, 79231.025772828899790, 79240.204416114138439, 79249.383162614511093, 79258.562012319409405, 79267.740965218137717, 79276.920021300073131, 79286.099180554563645, 79295.278442970971810, 79304.457808538631070, 79313.637277246962185, 79322.816849085240392, 79331.996524042915553, 79341.176302109335666, 79350.356183273805073, 79359.536167525773635, 79368.716254854574800, 79377.896445249600220, 79387.076738700212445, 79396.257135195832234, 79405.437634725807584, 79414.618237279501045, 79423.798942846347927, 79432.979751415725332, 79442.160662977010361, 79451.341677519594668, 79460.522795032899012, 79469.704015506300493, 79478.885338929219870, 79488.066765291005140, 79497.248294581149821, 79506.429926788987359, 79515.611661903953063, 79524.793499915453140, 79533.975440812908346, 79543.157484585739439, 79552.339631223323522, 79561.521880715139559, 79570.704233050593757, 79579.886688219063217, 79589.069246210041456, 79598.251907012905576, 79607.434670617105439, 79616.617537012061803, 79625.800506187268184, 79634.983578132072580, 79644.166752835983061, 79653.350030288405833, 79662.533410478805308, 79671.716893396616797, 79680.900479031275609, 79690.084167372260708, 79699.267958408992854, 79708.451852130951011, 79717.635848527614144, 79726.819947588359355, 79736.004149302738369, 79745.188453660171945, 79754.372860650109942, 79763.557370262060431, 79772.741982485458720, 79781.926697309798328, 79791.111514724543667, 79800.296434719173703, 79809.481457283167401, 79818.666582405989175, 79827.851810077147093, 79837.037140286134672, 79846.222573022401775, 79855.408108275456470, 79864.593746034792275, 79873.779486289902707, 79882.965329030266730, 79892.151274245421519, 79901.337321924831485, 79910.523472057990148, 79919.709724634449231, 79928.896079643673147, 79938.082537075184518, 79947.269096918491414, 79956.455759163131006, 79965.642523798567709, 79974.829390814353246, 79984.016360200010240, 79993.203431945046759, 80002.390606038999977, 80011.577882471377961, 80020.765261231703334, 80029.952742309527821, 80039.140325694403145, 80048.328011375793722, 80057.515799343309482, 80066.703689586443943, 80075.891682094748830, 80085.079776857775869, 80094.267973865091335, 80103.456273106188746, 80112.644674570634379, 80121.833178247994510, 80131.021784127820865, 80140.210492199665168, 80149.399302453122800, 80158.588214877672726, 80167.777229462924879, 80176.966346198460087, 80186.155565073815524, 80195.344886078557465, 80204.534309202266741, 80213.723834434553282, 80222.913461764925160, 80232.103191182977753, 80241.293022678350098, 80250.482956240535714, 80259.672991859173635, 80268.863129523830139, 80278.053369224100607, 80287.243710949565866, 80296.434154689835850, 80305.624700434462284, 80314.815348173113307, 80324.006097895311541, 80333.196949590710574, 80342.387903248891234, 80351.578958859448903, 80360.770116412008065, 80369.961375896178652, 80379.152737301556044, 80388.344200617764727, 80397.535765834400081, 80406.727432941115694, 80415.919201927506947, 80425.111072783212876, 80434.303045497828862, 80443.495120060993941, 80452.687296462332597, 80461.879574691498419, 80471.071954738101340, 80480.264436591780395, 80489.457020242145518, 80498.649705678893952, 80507.842492891635629, 80517.035381869980483, 80526.228372603625758, 80535.421465082181385, 80544.614659295344609, 80553.807955232696258, 80563.001352883948130, 80572.194852238739259, 80581.388453286708682, 80590.582156017524539, 80599.775960420854972, 80608.969866486368119, 80618.163874203717569, 80627.357983562600566, 80636.552194552641595, 80645.746507163537899, 80654.940921384972171, 80664.135437206597999, 80673.330054618098075, 80682.524773609169642, 80691.719594169495394, 80700.914516288743471, 80710.109539956611115, 80719.304665162766469, 80728.499891896950430, 80737.695220148787485, 80746.890649908047635, 80756.086181164369918, 80765.281813907451578, 80774.477548127048067, 80783.673383812827524, 80792.869320954487193, 80802.065359541753423, 80811.261499564323458, 80820.457741011938197, 80829.654083874265780, 80838.850528141061659, 80848.047073802008526, 80857.243720846847282, 80866.440469265304273, 80875.637319047091296, 80884.834270181963802, 80894.031322659604484, 80903.228476469768793, 80912.425731602197629, 80921.623088046602788, 80930.820545792768826, 80940.018104830378434, 80949.215765149201616, 80958.413526738950168, 80967.611389589423197, 80976.809353690332500, 80986.007419031433528, 80995.205585602496285, 81004.403853393232566, 81013.602222393412376, 81022.800692592834821, 81031.999263981197146, 81041.197936548313010, 81050.396710283908760, 81059.595585177768953, 81068.794561219678144, 81077.993638399377232, 81087.192816706650774, 81096.392096131268772, 81105.591476663001231, 81114.790958291632705, 81123.990541006976855, 81133.190224798760028, 81142.390009656795883, 81151.589895570854424, 81160.789882530763862, 81169.989970526279649, 81179.190159547186340, 81188.390449583312147, 81197.590840624427074, 81206.791332660373882, 81215.991925680878921, 81225.192619675799506, 81234.393414634934743, 81243.594310548069188, 81252.795307405060157, 81261.996405195663101, 81271.197603909720783, 81280.398903537046863, 81289.600304067440447, 81298.801805490773404, 81308.003407796801184, 81317.205110975381103, 81326.406915016326820, 81335.608819909481099, 81344.810825644672150, 81354.012932211728184, 81363.215139600477414, 81372.417447800748050, 81381.619856802397408, 81390.822366595268250, 81400.024977169174235, 81409.227688513987232, 81418.430500619535451, 81427.633413475676207, 81436.836427072266815, 81446.039541399164591, 81455.242756446197745, 81464.446072203238145, 81473.649488660128554, 81482.853005806755391, 81492.056623632975970, 81501.260342128647608, 81510.464161283642170, 81519.668081087802420, 81528.872101531043882, 81538.076222603194765, 81547.280444294170593, 81556.484766593828681, 81565.689189492026344, 81574.893712978679105, 81584.098337043673382, 81593.303061676851939, 81602.507886868130299, 81611.712812607423984, 81620.917838884575758, 81630.122965689501143, 81639.328193012086558, 81648.533520842247526, 81657.738949169841362, 81666.944477984841797, 81676.150107277077041, 81685.355837036506273, 81694.561667252986808, 81703.767597916477825, 81712.973629016880295, 81722.179760544066085, 81731.385992487994372, 81740.592324838566128, 81749.798757585740532, 81759.005290719360346, 81768.211924229399301, 81777.418658105787472, 81786.625492338440381, 81795.832426917273551, 81805.039461832246161, 81814.246597073273733, 81823.453832630286342, 81832.661168493257719, 81841.868604652074282, 81851.076141096738866, 81860.283777817123337, 81869.491514803230530, 81878.699352044990519, 81887.907289532347932, 81897.115327255261946, 81906.323465203677188, 81915.531703367567388, 81924.740041736862622, 81933.948480301551172, 81943.157019051577663, 81952.365657976915827, 81961.574397067539394, 81970.783236313392990, 81979.992175704450347, 81989.201215230685193, 81998.410354882085812, 82007.619594648625934, 82016.828934520264738, 82026.038374487005058, 82035.247914538791520, 82044.457554665656062, 82053.667294857572415, 82062.877135104499757, 82072.087075396455475, 82081.297115723427851, 82090.507256075405166, 82099.717496442375705, 82108.927836814356851, 82118.138277181336889, 82127.348817533304100, 82136.559457860290422, 82145.770198152269586, 82154.981038399302633, 82164.191978591348743, 82173.403018718454405, 82182.614158770578797, 82191.825398737797514, 82201.036738610113389, 82210.248178377529257, 82219.459718030091608, 82228.671357557803276, 82237.883096950696199, 82247.094936198787764, 82256.306875292124460, 82265.518914220738225, 82274.731052974646445, 82283.943291543910163, 82293.155629918546765, 82302.368068088602740, 82311.580606044124579, 82320.793243775158771, 82330.005981271737255, 82339.218818523891969, 82348.431755521727609, 82357.644792255247012, 82366.857928714540321, 82376.071164889610372, 82385.284500770590967, 82394.497936347455834, 82403.711471610338776, 82412.925106549257180, 82422.138841154301190, 82431.352675415531849, 82440.566609323010198, 82449.780642866826383, 82458.994776037055999, 82468.209008823745535, 82477.423341216985136, 82486.637773206850397, 82495.852304783460568, 82505.066935936862137, 82514.281666657145252, 82523.496496934385505, 82532.711426758673042, 82541.926456120156217, 82551.141585008866969, 82560.356813414909993, 82569.572141328404541, 82578.787568739411654, 82588.003095638094237, 82597.218722014498780, 82606.434447858744534, 82615.650273160950746, 82624.866197911222116, 82634.082222099663340, 82643.298345716379117, 82652.514568751532352, 82661.730891195169534, 82670.947313037482672, 82680.163834268518258, 82689.380454878468299, 82698.597174857393838, 82707.813994195472333, 82717.030912882808479, 82726.247930909550632, 82735.465048265803489, 82744.682264941715403, 82753.899580927420175, 82763.116996213066159, 82772.334510788787156, 82781.552124644731521, 82790.769837771047605, 82799.987650157854659, 82809.205561795344693, 82818.423572673607850, 82827.641682782850694, 82836.859892113207025, 82846.078200654825196, 82855.296608397897216, 82864.515115332513233, 82873.733721448938013, 82882.952426737232599, 82892.171231187603553, 82901.390134790257434, 82910.609137535313494, 82919.828239412963740, 82929.047440413371078, 82938.266740526712965, 82947.486139743181411, 82956.705638052939321, 82965.925235446178704, 82975.144931913062464, 82984.364727443826268, 82993.584622028603917, 83002.804615657601971, 83012.024708321026992, 83021.244900009041885, 83030.465190711882315, 83039.685580419711187, 83048.906069122749614, 83058.126656811160501, 83067.347343475194066, 83076.568129105042317, 83085.789013690882712, 83095.009997222965467, 83104.231079691482591, 83113.452261086640647, 83122.673541398660745, 83131.894920617734897, 83141.116398734127870, 83150.337975738031673, 83159.559651619667420, 83168.781426369270775, 83178.003299977048300, 83187.225272433264763, 83196.447343728097621, 83205.669513851840748, 83214.891782794686151, 83224.114150546854944, 83233.336617098641000, 83242.559182440236327, 83251.781846561905695, 83261.004609453884768, 83270.227471106423764, 83279.450431509758346, 83288.673490654124180, 83297.896648529815138, 83307.119905127037782, 83316.343260436115088, 83325.566714447239065, 83334.790267150674481, 83344.013918536715209, 83353.237668595611467, 83362.461517317598918, 83371.685464692985988, 83380.909510712008341, 83390.133655364974402, 83399.357898642105283, 83408.582240533709410, 83417.806681030080654, 83427.031220121454680, 83436.255857798125362, 83445.480594050386571, 83454.705428868517629, 83463.930362242812407, 83473.155394163521123, 83482.380524620952201, 83491.605753605443169, 83500.831081107215141, 83510.056507116634748, 83519.282031623923103, 83528.507654619432287, 83537.733376093427069, 83546.959196036244975, 83556.185114438208984, 83565.411131289569312, 83574.637246580648934, 83583.863460301785381, 83593.089772443272523, 83602.316182995433337, 83611.542691948561696, 83620.769299293009681, 83629.996005019071163, 83639.222809117083671, 83648.449711577355629, 83657.676712390210014, 83666.903811546013458, 83676.131009035059833, 83685.358304847686668, 83694.585698974231491, 83703.813191405002726, 83713.040782130396110, 83722.268471140720067, 83731.496258426283021, 83740.724143977480708, 83749.952127784636104, 83759.180209838072187, 83768.408390128184692, 83777.636668645296595, 83786.865045379759977, 83796.093520321941469, 83805.322093462164048, 83814.550764790823450, 83823.779534298271756, 83833.008401974875596, 83842.237367810957949, 83851.466431796943652, 83860.695593923141132, 83869.924854179975227, 83879.154212557798019, 83888.383669046961586, 83897.613223637861665, 83906.842876320864889, 83916.072627086381544, 83925.302475924734608, 83934.532422826348920, 83943.762467781591113, 83952.992610780871473, 83962.222851814556634, 83971.453190873027779, 83980.683627946724300, 83989.914163025983726, 83999.144796101216343, 84008.375527162846993, 84017.606356201242306, 84026.837283206841676, 84036.068308170011733, 84045.299431081148214, 84054.530651930719614, 84063.761970709078014, 84072.993387406648253, 84082.224902013840619, 84091.456514521094505, 84100.688224918805645, 84109.920033197427983, 84119.151939347313601, 84128.383943358901888, 84137.616045222675893, 84146.848244929002249, 84156.080542468334897, 84165.312937831098679, 84174.545431007703883, 84183.778021988619003, 84193.010710764239775, 84202.243497325063800, 84211.476381661472260, 84220.709363763919100, 84229.942443622858264, 84239.175621228758246, 84248.408896572000231, 84257.642269643096370, 84266.875740432471503, 84276.109308930565021, 84285.342975127830869, 84294.576739014766645, 84303.810600581782637, 84313.044559819361893, 84322.278616717943805, 84331.512771268011420, 84340.747023460047785, 84349.981373284477741, 84359.215820731798885, 84368.450365792479715, 84377.685008456974174, 84386.919748715779861, 84396.154586559350719, 84405.389521978184348, 84414.624554962749244, 84423.859685503543005, 84433.094913591005025, 84442.330239215691108, 84451.565662368040648, 84460.801183038522140, 84470.036801217691391, 84479.272516896002344, 84488.508330063938047, 84497.744240712025203, 84506.980248830746859, 84516.216354410629719, 84525.452557442127727, 84534.688857915782137, 84543.925255822061445, 84553.161751151506905, 84562.398343894645222, 84571.635034041944891, 84580.871821583932615, 84590.108706511120545, 84599.345688814064488, 84608.582768483218388, 84617.819945509152603, 84627.057219882364734, 84636.294591593410587, 84645.532060632744106, 84654.769626990979305, 84664.007290658613783, 84673.245051626174245, 84682.482909884187393, 84691.720865423179930, 84700.958918233736767, 84710.197068306340952, 84719.435315631577396, 84728.673660199972801, 84737.912102002039319, 84747.150641028361861, 84756.389277269510785, 84765.628010715983692, 84774.866841358350939, 84784.105769187197438, 84793.344794193020789, 84802.583916366435005, 84811.823135697966791, 84821.062452178171952, 84830.301865797635401, 84839.541376546912943, 84848.780984416560386, 84858.020689397177193, 84867.260491479304619, 84876.500390653513023, 84885.740386910401867, 84894.980480240526958, 84904.220670634473208, 84913.460958082796424, 84922.701342576139723, 84931.941824105015257, 84941.182402660051594, 84950.423078231833642, 84959.663850810946315, 84968.904720387945417, 84978.145686953474069, 84987.386750498088077, 84996.627911012386903, 85005.869168487013667, 85015.110522912509623, 85024.351974279517890, 85033.593522578608827, 85042.835167800411000, 85052.076909935523872, 85061.318748974576010, 85070.560684908137773, 85079.802717726837727, 85089.044847421304439, 85098.287073982151924, 85107.529397399979644, 85116.771817665401613, 85126.014334769090055, 85135.256948701615329, 85144.499659453620552, 85153.742467015734292, 85162.985371378585114, 85172.228372532787034, 85181.471470469012274, 85190.714665177860297, 85199.957956649959669, 85209.201344875997165, 85218.444829846557695, 85227.688411552328034, 85236.932089983907645, 85246.175865131968749, 85255.419736987154465, 85264.663705540107912, 85273.907770781501313, 85283.151932701948681, 85292.396191292122239, 85301.640546542679658, 85310.884998444293160, 85320.129546987591311, 85329.374192163260886, 85338.618933961945004, 85347.863772374344990, 85357.108707391074859, 85366.353739002850489, 85375.598867200314999, 85384.844091974126059, 85394.089413315014099, 85403.334831213607686, 85412.580345660579042, 85421.825956646629493, 85431.071664162445813, 85440.317468198700226, 85449.563368746079504, 85458.809365795270423, 85468.055459336959757, 85477.301649361834279, 85486.547935860580765, 85495.794318823885988, 85505.040798242480378, 85514.287374107036158, 85523.534046408269205, 85532.780815136851743, 85542.027680283499649, 85551.274641838957905, 85560.521699793855078, 85569.768854138936149, 85579.016104864946101, 85588.263451962557156, 85597.510895422485191, 85606.758435235446086, 85616.006071392170270, 85625.253803883373621, 85634.501632699742913, 85643.749557832052233, 85652.997579271002905, 85662.245697007310810, 85671.493911031706375, 85680.742221334934584, 85689.990627907725866, 85699.239130740796099, 85708.487729824875714, 85717.736425150738796, 85726.985216709101223, 85736.234104490693426, 85745.483088486245833, 85754.732168686547084, 85763.981345082313055, 85773.230617664274178, 85782.479986423219088, 85791.729451349892770, 85800.979012435011100, 85810.228669669362716, 85819.478423043692601, 85828.728272548760287, 85837.978218175325310, 85847.228259914161754, 85856.478397756014601, 85865.728631691672490, 85874.978961711851298, 85884.229387807354215, 85893.479909968955326, 85902.730528187428718, 85911.981242453548475, 85921.232052758088685, 85930.482959091823432, 85939.733961445512250, 85948.985059809943778, 85958.236254175935755, 85967.487544534247718, 85976.738930875653750, 85985.990413190957042, 85995.241991470946232, 86004.493665706439060, 86013.745435888165957, 86022.997302006959217, 86032.249264053636580, 86041.501322018972132, 86050.753475893754512, 86060.005725668816012, 86069.258071334930719, 86078.510512882916373, 86087.763050303605269, 86097.015683587771491, 86106.268412726232782, 86115.521237709821435, 86124.774158529311535, 86134.027175175593584, 86143.280287639412563, 86152.533495911600767, 86161.786799983019591, 86171.040199844457675, 86180.293695486732759, 86189.547286900720792, 86198.800974077195860, 86208.054757007019361, 86217.308635681009036, 86226.562610090011731, 86235.816680224830634, 86245.070846076356247, 86254.325107635391760, 86263.579464892769465, 86272.833917839365313, 86282.088466466011596, 86291.343110763540608, 86300.597850722828298, 86309.852686334692407, 86319.107617589994334, 86328.362644479580922, 86337.617766994342674, 86346.872985125082778, 86356.128298862691736, 86365.383708198060049, 86374.639213121961802, 86383.894813625360257, 86393.150509699073154, 86402.406301333932788, 86411.662188520858763, 86420.918171250712476, 86430.174249514384428, 86439.430423302692361, 86448.686692606555880, 86457.943057416850934, 86467.199517724438920, 86476.456073520210339, 86485.712724795055692, 86494.969471539836377, 86504.226313745471998, 86513.483251402823953, 86522.740284502797294, 86531.997413036253420, 86541.254636994141038, 86550.511956367306993, 86559.769371146670892, 86569.026881323123234, 86578.284486887569074, 86587.542187830913463, 86596.799984144046903, 86606.057875817874447, 86615.315862843315699, 86624.573945211275714, 86633.832122912674095, 86643.090395938415895, 86652.348764279377065, 86661.607227926549967, 86670.865786870781449, 86680.124441103049321, 86689.383190614229534, 86698.642035395270796, 86707.900975437078159, 86717.160010730585782, 86726.419141266742372, 86735.678367036438431, 86744.937688030651771, 86754.197104240258341, 86763.456615656235954, 86772.716222269533318, 86781.975924071040936, 86791.235721051722066, 86800.495613202539971, 86809.755600514399703, 86819.015682978279074, 86828.275860585097689, 86837.536133325804258, 86846.796501191391144, 86856.056964172777953, 86865.317522260913393, 86874.578175446746172, 86883.838923721268657, 86893.099767075429554, 86902.360705500177573, 86911.621738986461423, 86920.882867525258916, 86930.144091107562417, 86939.405409724306082, 86948.666823366453173, 86957.928332025025156, 86967.189935690927086, 86976.451634355165879, 86985.713428008733899, 86994.975316642594407, 87004.237300247710664, 87013.499378815104137, 87022.761552335708984, 87032.023820800546673, 87041.286184200609569, 87050.548642526831827, 87059.811195770278573, 87069.073843921854859, 87078.336586972625810, 87087.599424913554685, 87096.862357735662954, 87106.125385429913877, 87115.388507987328921, 87124.651725398915005, 87133.915037655635388, 87143.178444748555194, 87152.441946668652236, 87161.705543406933430, 87170.969234954391140, 87180.233021302075940, 87189.496902440980193, 87198.760878362125368, 87208.024949056532932, 87217.289114515195251, 87226.553374729177449, 87235.817729689442785, 87245.082179387056385, 87254.346723813068820, 87263.611362958443351, 87272.876096814245102, 87282.140925371510093, 87291.405848621259793, 87300.670866554530221, 87309.935979162342846, 87319.201186435762793, 87328.466488365811529, 87337.731884943554178, 87346.997376159968553, 87356.262962006163434, 87365.528642473189393, 87374.794417552067898, 87384.060287233820418, 87393.326251509541180, 87402.592310370280757, 87411.858463807075168, 87421.124711810989538, 87430.391054373074439, 87439.657491484409547, 87448.924023136030883, 87458.190649319018121, 87467.457370024436386, 87476.724185243321699, 87485.991094966797391, 87495.258099185899482, 87504.525197891693097, 87513.792391075257910, 87523.059678727688151, 87532.327060840034392, 87541.594537403376307, 87550.862108408808126, 87560.129773847394972, 87569.397533710245625, 87578.665387988396105, 87587.933336672998848, 87597.201379755104426, 87606.469517225807067, 87615.737749076215550, 87625.006075297380448, 87634.274495880439645, 87643.543010816443712, 87652.811620096545084, 87662.080323711837991, 87671.349121653387556, 87680.618013912317110, 87689.887000479720882, 87699.156081346722203, 87708.425256504415302, 87717.694525943923509, 87726.963889656341053, 87736.233347632805817, 87745.502899864412029, 87754.772546342283022, 87764.042287057542126, 87773.312122001298121, 87782.582051164688892, 87791.852074538837769, 87801.122192114838981, 87810.392403883859515, 87819.662709837008151, 87828.933109965393669, 87838.203604260197608, 87847.474192712528748, 87856.744875313510420, 87866.015652054280508, 87875.286522925991449, 87884.557487919795676, 87893.828547026816523, 87903.099700238177320, 87912.370947545059607, 87921.642288938586717, 87930.913724409940187, 87940.185253950199694, 87949.456877550604986, 87958.728595202250290, 87968.000406896317145, 87977.272312623957987, 87986.544312376325252, 87995.816406144571374, 88005.088593919863342, 88014.360875693382695, 88023.633251456296421, 88032.905721199727850, 88042.178284914887627, 88051.450942592913634, 88060.723694225031068, 88069.996539802363259, 88079.269479316091747, 88088.542512757398072, 88097.815640117478324, 88107.088861387499492, 88116.362176558643114, 88125.635585622061626, 88134.909088569009327, 88144.182685390624101, 88153.456376078087487, 88162.730160622624680, 88172.004039015402668, 88181.278011247617542, 88190.552077310479945, 88199.826237195171416, 88209.100490892888047, 88218.374838394840481, 88227.649279692224809, 88236.923814776251675, 88246.198443638102617, 88255.473166268988280, 88264.747982660162961, 88274.022892802793649, 88283.297896688090987, 88292.572994307280169, 88301.848185651571839, 88311.123470712191192, 88320.398849480334320, 88329.674321947255521, 88338.949888104165439, 88348.225547942274716, 88357.501301452779444, 88366.777148626948474, 88376.053089456036105, 88385.329123931209324, 88394.605252043707878, 88403.881473784800619, 88413.157789145698189, 88422.434198117654887, 88431.710700691866805, 88440.987296859631897, 88450.263986612131703, 88459.540769940664177, 88468.817646836439962, 88478.094617290713359, 88487.371681294738664, 88496.648838839741074, 88505.926089917003992, 88515.203434517767164, 88524.480872633270337, 88533.758404254796915, 88543.036029373586643, 88552.313747980879270, 88561.591560067958198, 88570.869465626092278, 88580.147464646564913, 88589.425557120586745, 88598.703743039455730, 88607.982022394440719, 88617.260395176796010, 88626.538861377834110, 88635.817420988780214, 88645.096074000946828, 88654.374820405588252, 88663.653660193987889, 88672.932593357443693, 88682.211619887195411, 88691.490739774570102, 88700.769953010822064, 88710.049259587263805, 88719.328659495178727, 88728.608152725835680, 88737.887739270561724, 88747.167419120611157, 88756.447192267296487, 88765.727058701930218, 88775.007018415781204, 88784.287071400147397, 88793.567217646399513, 88802.847457145733642, 88812.127789889549604, 88821.408215869072592, 88830.688735075687873, 88839.969347500649747, 88849.250053135270718, 88858.530851970892400, 88867.811743998841848, 88877.092729210387915, 88886.373807596857660, 88895.654979149578139, 88904.936243859905517, 88914.217601719108643, 88923.499052718543680, 88932.780596849537687, 88942.062234103403171, 88951.343964471452637, 88960.625787945071352, 88969.907704515513615, 88979.189714174193796, 88988.471816912395298, 88997.754012721459731, 89007.036301592757809, 89016.318683517602040, 89025.601158487334033, 89034.883726493309950, 89044.166387526856852, 89053.449141579345451, 89062.731988642117358, 89072.014928706499632, 89081.297961763862986, 89090.581087805578136, 89099.864306822957587, 89109.147618807401159, 89118.431023750221357, 89127.714521642817999, 89136.998112476532697, 89146.281796242736164, 89155.565572932784562, 89164.849442538048606, 89174.133405049899011, 89183.417460459677386, 89192.701608758827206, 89201.985849938631873, 89211.270183990505757, 89220.554610905834124, 89229.839130676002242, 89239.123743292351719, 89248.408448746267823, 89257.693247029164922, 89266.978138132413733, 89276.263122047399520, 89285.548198765492998, 89294.833368278079433, 89304.118630576573196, 89313.403985652345000, 89322.689433496809215, 89331.974974101336556, 89341.260607457370497, 89350.546333556252648, 89359.832152389382827, 89369.118063948204508, 89378.404068224117509, 89387.690165208492544, 89396.976354892729432, 89406.262637268286198, 89415.549012326562661, 89424.835480058914982, 89434.122040456815739, 89443.408693511650199, 89452.695439214803628, 89461.982277557748603, 89471.269208531884942, 89480.556232128627016, 89489.843348339418299, 89499.130557155658607, 89508.417858568762313, 89517.705252570201992, 89526.992739151333808, 89536.280318303659442, 89545.567990018564160, 89554.855754287491436, 89564.143611101899296, 89573.431560453216662, 89582.719602332843351, 89592.007736732266494, 89601.295963642900460, 89610.584283056188724, 89619.872694963589311, 89629.161199356531142, 89638.449796226486797, 89647.738485564856092, 89657.027267363155261, 89666.316141612798674, 89675.605108305229805, 89684.894167431906681, 89694.183318984301877, 89703.472562953873421, 89712.761899332079338, 89722.051328110377654, 89731.340849280211842, 89740.630462833083584, 89749.920168760450906, 89759.209967053757282, 89768.499857704504393, 89777.789840704121161, 89787.079916044109268, 89796.370083715941291, 89805.660343711118912, 89814.950696021041949, 89824.241140637270291, 89833.531677551232860, 89842.822306754445890, 89852.113028238367406, 89861.403841994499089, 89870.694748014298966, 89879.985746289312374, 89889.276836810968234, 89898.568019570782781, 89907.859294560257695, 89917.150661770880106, 89926.442121194137144, 89935.733672821530490, 89945.025316644576378, 89954.317052654747386, 89963.608880843574298, 89972.900801202558796, 89982.192813723173458, 89991.484918396949070, 90000.777115215387312, 90010.069404170004418, 90019.361785252331174, 90028.654258453840157, 90037.946823766076704, 90047.239481180542498, 90056.532230688753771, 90065.825072282241308, 90075.118005952521344, 90084.411031691124663, 90093.704149489552947, 90102.997359339366085, 90112.290661232036655, 90121.584055159168201, 90130.877541112204199, 90140.171119082777295, 90149.464789062316413, 90158.758551042454201, 90168.052405014634132, 90177.346350970474305, 90186.640388901476399, 90195.934518799171201, 90205.228740655147703, 90214.523054460893036, 90223.817460207981640, 90233.111957887958852, 90242.406547492399113, 90251.701229012804106, 90260.996002440748271, 90270.290867767806049, 90279.585824985493673, 90288.880874085385585, 90298.176015059070778, 90307.471247898050933, 90316.766572593929595, 90326.061989138266654, 90335.357497522621998, 90344.653097738526412, 90353.948789777627098, 90363.244573631425737, 90372.540449291496770, 90381.836416749429191, 90391.132475996797439, 90400.428627025205060, 90409.724869826182839, 90419.021204391319770, 90428.317630712204846, 90437.614148780427058, 90446.910758587560849, 90456.207460125180660, 90465.504253384890035, 90474.801138358263415, 90484.098115036889794, 90493.395183412387269, 90502.692343476315727, 90511.989595220278716, 90521.286938635879778, 90530.584373714707908, 90539.881900448366650, 90549.179518828444998, 90558.477228846546495, 90567.775030494303792, 90577.072923763291328, 90586.370908645112650, 90595.668985131400404, 90604.967153213729034, 90614.265412883760291, 90623.563764133054065, 90632.862206953243003, 90642.160741335959756, 90651.459367272793315, 90660.758084755390882, 90670.056893775356002, 90679.355794324321323, 90688.654786393875838, 90697.953869975695852, 90707.253045061384910, 90716.552311642546556, 90725.851669710827991, 90735.151119257890969, 90744.450660275324481, 90753.750292754790280, 90763.050016687891912, 90772.349832066291128, 90781.649738881620578, 90790.949737125527463, 90800.249826789644430, 90809.550007865633233, 90818.850280345111969, 90828.150644219742389, 90837.451099481142592, 90846.751646121003432, 90856.052284130957560, 90865.353013502681279, 90874.653834227778134, 90883.954746297938982, 90893.255749704796472, 90902.556844440056011, 90911.858030495321145, 90921.159307862297283, 90930.460676532602520, 90939.762136497971369, 90949.063687749992823, 90958.365330280386843, 90967.667064080771524, 90976.968889142895932, 90986.270805458349059, 90995.572813018850866, 91004.874911816077656, 91014.177101841662079, 91023.479383087324095, 91032.781755544754560, 91042.084219205615227, 91051.386774061582400, 91060.689420104346937, 91069.992157325570588, 91079.294985717002419, 91088.597905270260526, 91097.900915977093973, 91107.204017829149961, 91116.507210818133899, 91125.810494935751194, 91135.113870173692703, 91144.417336523663835, 91153.720893977340893, 91163.024542526458390, 91172.328282162678079, 91181.632112877763575, 91190.936034663347527, 91200.240047511208104, 91209.544151412963402, 91218.848346360420692, 91228.152632345241727, 91237.457009359146468, 91246.761477393854875, 91256.066036441057804, 91265.370686492504319, 91274.675427539899829, 91283.980259574964293, 91293.285182589446777, 91302.590196575023583, 91311.895301523443777, 91321.200497426427319, 91330.505784275708720, 91339.811162063022493, 91349.116630780088599, 91358.422190418641549, 91367.727840970430407, 91377.033582427175133, 91386.339414780595689, 91395.645338022470241, 91404.951352144518751, 91414.257457138475729, 91423.563652996090241, 91432.869939709125902, 91442.176317269302672, 91451.482785668369615, 91460.789344898090349, 91470.095994950199383, 91479.402735816460336, 91488.709567488622270, 91498.016489958448801, 91507.323503217688994, 91516.630607258091914, 91525.937802071435726, 91535.245087649469497, 91544.552463983942289, 91553.859931066661375, 91563.167488889361266, 91572.475137443805579, 91581.782876721772482, 91591.090706715011038, 91600.398627415328519, 91609.706638814473990, 91619.014740904240170, 91628.322933676376124, 91637.631217122689122, 91646.939591234928230, 91656.248056004900718, 91665.556611424384755, 91674.865257485129405, 91684.173994178971043, 91693.482821497644181, 91702.791739432999748, 91712.100747976772254, 91721.409847120768973, 91730.719036856797175, 91740.028317176620476, 91749.337688072046149, 91758.647149534896016, 91767.956701556948246, 91777.266344130010111, 91786.576077245859778, 91795.885900896319072, 91805.195815073180711, 91814.505819768266520, 91823.815914973383769, 91833.126100680354284, 91842.436376880927128, 91851.746743566967780, 91861.057200730268960, 91870.367748362667044, 91879.678386455969303, 91888.989115001953905, 91898.299933992515435, 91907.610843419417506, 91916.921843274496496, 91926.232933549559675, 91935.544114236457972, 91944.855385327013209, 91954.166746813061764, 91963.478198686396354, 91972.789740938867908, 91982.101373562327353, 91991.413096548611065, 92000.724909889497212, 92010.036813576894929, 92019.348807602596935, 92028.660891958468710, 92037.973066636302974, 92047.285331628023414, 92056.597686925408198, 92065.910132520308252, 92075.222668404603610, 92084.535294570130645, 92093.848011008711183, 92103.160817712239805, 92112.473714672538335, 92121.786701881472254, 92131.099779330892488, 92140.412947012679069, 92149.726204918653821, 92159.039553040711326, 92168.352991370687960, 92177.666519900449202, 92186.980138621904189, 92196.293847526845639, 92205.607646607197239, 92214.921535854795366, 92224.235515261520050, 92233.549584819265874, 92242.863744519883767, 92252.177994355239207, 92261.492334317241330, 92270.806764397726511, 92280.121284588618437, 92289.435894881768036, 92298.750595269084442, 92308.065385742418584, 92317.380266293679597, 92326.695236914703855, 92336.010297597473254, 92345.325448333795066, 92354.640689115592977, 92363.956019934761571, 92373.271440783180878, 92382.586951652774587, 92391.902552535393625, 92401.218243422990781, 92410.534024307416985, 92419.849895180610474, 92429.165856034436729, 92438.481906860848540, 92447.798047651696834, 92457.114278398948954, 92466.430599094455829, 92475.747009730155696, 92485.063510297957691, 92494.380100789770950, 92503.696781197519158, 92513.013551513126004, 92522.330411728471518, 92531.647361835508491, 92540.964401826131507, 92550.281531692307908, 92559.598751425903174, 92568.916061018870096, 92578.233460463146912, 92587.550949750642758, 92596.868528873295872, 92606.186197823015391, 92615.503956591754104, 92624.821805171450251, 92634.139743554012966, 92643.457771731424145, 92652.775889695563819, 92662.094097438413883, 92671.412394951898023, 92680.730782227954478, 92690.049259258521488, 92699.367826035580947, 92708.686482551041991, 92718.005228796871961, 92727.324064764994546, 92736.642990447391639, 92745.962005835986929, 92755.281110922747757, 92764.600305699626915, 92773.919590158606297, 92783.238964291595039, 92792.558428090604139, 92801.877981547528179, 92811.197624654407264, 92820.517357403165079, 92829.837179785754415, 92839.157091794157168, 92848.477093420340680, 92857.797184656272293, 92867.117365493919351, 92876.437635925278300, 92885.757995942287380, 92895.078445536943036, 92904.398984701227164, 92913.719613427107106, 92923.040331706550205, 92932.361139531552908, 92941.682036894082557, 92951.003023786150152, 92960.324100199723034, 92969.645266126783099, 92978.966521559341345, 92988.287866489350563, 92997.609300908850855, 93006.930824809780461, 93016.252438184164930, 93025.574141023986158, 93034.895933321255143, 93044.217815067953779, 93053.539786256122170, 93062.861846877698554, 93072.183996924737585, 93081.506236389192054, 93090.828565263131168, 93100.150983538507717, 93109.473491207347251, 93118.796088261675322, 93128.118774693488376, 93137.441550494797411, 93146.764415657613426, 93156.087370173947420, 93165.410414035854046, 93174.733547235300648, 93184.056769764327328, 93193.380081614974188, 93202.703482779223123, 93212.026973249128787, 93221.350553016716731, 93230.674222073997953, 93239.997980412998004, 93249.321828025771538, 93258.645764904329553, 93267.969791040712153, 93277.293906426959438, 93286.618111055082409, 93295.942404917135718, 93305.266788005144917, 93314.591260311179212, 93323.915821827235050, 93333.240472545381635, 93342.565212457688176, 93351.890041556136566, 93361.214959832825116, 93370.539967279779376, 93379.865063889039448, 93389.190249652689090, 93398.515524562753853, 93407.840888611302944, 93417.166341790376464, 93426.491884092043620, 93435.817515508373617, 93445.143236031362903, 93454.469045653153444, 93463.794944365756237, 93473.120932161269593, 93482.447009031733614, 93491.773174969202955, 93501.099429965790478, 93510.425774013507180, 93519.752207104480476, 93529.078729230735917, 93538.405340384386363, 93547.732040557471919, 93557.058829742090893, 93566.385707930312492, 93575.712675114235026, 93585.039731285898597, 93594.366876437416067, 93603.694110560871195, 93613.021433648318634, 93622.348845691900351, 93631.676346683641896, 93641.003936615656130, 93650.331615480070468, 93659.659383268910460, 93668.987239974318072, 93678.315185588362510, 93687.643220103156636, 93696.971343510798761, 93706.299555803372641, 93715.627856972976588, 93724.956247011708911, 93734.284725911726127, 93743.613293665068340, 93752.941950263862964, 93762.270695700193755, 93771.599529966217233, 93780.928453054031706, 93790.257464955720934, 93799.586565663412330, 93808.915755169247859, 93818.245033465267625, 93827.574400543671800, 93836.903856396544143, 93846.233401016012067, 93855.563034394159331, 93864.892756523157004, 93874.222567395117949, 93883.552467002140475, 93892.882455336410203, 93902.212532389981789, 93911.542698155026301, 93920.872952623642050, 93930.203295788029209, 93939.533727640271536, 93948.864248172481894, 93958.194857376845903, 93967.525555245490978, 93976.856341770544532, 93986.187216944163083, 93995.518180758459494, 94004.849233205604833, 94014.180374277711962, 94023.511603966966504, 94032.842922265495872, 94042.174329165456584, 94051.505824658990605, 94060.837408738254453, 94070.169081395390094, 94079.500842622568598, 94088.832692411961034, 94098.164630755680264, 94107.496657645897358, 94116.828773074812489, 94126.160977034538519, 94135.493269517275621, 94144.825650515165762, 94154.158120020365459, 94163.490678025074885, 94172.823324521421455, 94182.156059501605341, 94191.488882957797614, 94200.821794882169343, 94210.154795266877045, 94219.487884104120894, 94228.821061386042857, 94238.154327104857657, 94247.487681252750917, 94256.821123821835499, 94266.154654804369784, 94275.488274192510289, 94284.821981978442636, 94294.155778154337895, 94303.489662712410791, 94312.823635644846945, 94322.157696943788324, 94331.491846601493307, 94340.826084610118414, 94350.160410961892921, 94359.494825648958795, 94368.829328663559863, 94378.163919997867197, 94387.498599644110072, 94396.833367594445008, 94406.168223841144936, 94415.503168376322719, 94424.838201192280394, 94434.173322281130822, 94443.508531635161489, 94452.843829246543464, 94462.179215107491473, 94471.514689210234792, 94480.850251546944492, 94490.185902109893505, 94499.521640891267452, 94508.857467883281060, 94518.193383078178158, 94527.529386468144367, 94536.865478045423515, 94546.201657802230329, 94555.537925730823190, 94564.874281823358615, 94574.210726072153193, 94583.547258469348890, 94592.883879007247742, 94602.220587678020820, 94611.557384473970160, 94620.894269387252280, 94630.231242410169216, 94639.568303534921142, 94648.905452753766440, 94658.242690058948938, 94667.580015442668810, 94676.917428897213540, 94686.254930414797855, 94695.592519987680134, 94704.930197608118760, 94714.267963268357562, 94723.605816960640368, 94732.943758677196456, 94742.281788410313311, 94751.619906152249314, 94760.958111895219190, 94770.296405631495873, 94779.634787353352294, 94788.973257053032285, 94798.311814722808776, 94807.650460354954703, 94816.989193941684789, 94826.328015475315624, 94835.666924948091037, 94845.005922352269408, 94854.345007680123672, 94863.684180923955864, 94873.023442076009815, 94882.362791128558456, 94891.702228073845617, 94901.041752904216992, 94910.381365611901856, 94919.721066189173143, 94929.060854628347442, 94938.400730921654031, 94947.740695061424049, 94957.080747039930429, 94966.420886849431554, 94975.761114482258563, 94985.101429930655286, 94994.441833186923759, 95003.782324243366020, 95013.122903092269553, 95022.463569725921843, 95031.804324136610376, 95041.145166316651739, 95050.486096258333419, 95059.827113953957451, 95069.168219395825872, 95078.509412576182513, 95087.850693487431272, 95097.192062121815979, 95106.533518471653224, 95115.875062529245042, 95125.216694286893471, 95134.558413736929651, 95143.900220871655620, 95153.242115683373413, 95162.584098164399620, 95171.926168307050830, 95181.268326103658183, 95190.610571546509163, 95199.952904627949465, 95209.295325340266572, 95218.637833675820730, 95227.980429626928526, 95237.323113185891998, 95246.665884345042286, 95256.008743096725084, 95265.351689433256979, 95274.694723346954561, 95284.037844830163522, 95293.381053875215002, 95302.724350474440143, 95312.067734620155534, 95321.411206304750522, 95330.754765520498040, 95340.098412259787438, 95349.442146514935303, 95358.785968278287328, 95368.129877542189206, 95377.473874298972078, 95386.817958540996187, 95396.162130260621780, 95405.506389450165443, 95414.850736101987422, 95424.195170208433410, 95433.539691761863651, 95442.884300754652941, 95452.228997179146972, 95461.573781027647783, 95470.918652292588376, 95480.263610966285341, 95489.608657041113474, 95498.953790509447572, 95508.299011363604222, 95517.644319596001878, 95526.989715198971680, 95536.335198164873873, 95545.680768486112356, 95555.026426155047375, 95564.372171164039173, 95573.718003505433444, 95583.063923171663191, 95592.409930155059556, 95601.756024448011885, 95611.102206042909529, 95620.448474932083627, 95629.794831107981736, 95639.141274562949548, 95648.487805289390963, 95657.834423279651674, 95667.181128526135581, 95676.527921021275688, 95685.874800757388584, 95695.221767726878170, 95704.568821922192001, 95713.915963335646666, 95723.263191959689721, 95732.610507786681410, 95741.957910809054738, 95751.305401019184501, 95760.652978409460047, 95770.000642972285277, 95779.348394700107747, 95788.696233585244045, 95798.044159620199935, 95807.392172797277453, 95816.740273108982365, 95826.088460547631257, 95835.436735105715343, 95844.785096775580314, 95854.133545549673727, 95863.482081420399481, 95872.830704380176030, 95882.179414421421825, 95891.528211536540766, 95900.877095717965858, 95910.226066958101001, 95919.575125249393750, 95928.924270584248006, 95938.273502955096774, 95947.622822354358505, 95956.972228774451651, 95966.321722207809216, 95975.671302646878758, 95985.020970084064174, 95994.370724511842127, 96003.720565922601963, 96013.070494308791240, 96022.420509662813856, 96031.770611977175577, 96041.120801244280301, 96050.471077456531930, 96059.821440606436227, 96069.171890686397091, 96078.522427688876633, 96087.873051606293302, 96097.223762431123760, 96106.574560155786457, 96115.925444772772607, 96125.276416274457006, 96134.627474653374520, 96143.978619901943603, 96153.329852012640913, 96162.681170977870352, 96172.032576790108578, 96181.384069441846805, 96190.735648925518035, 96200.087315233598929, 96209.439068358522491, 96218.790908292779932, 96228.142835028804257, 96237.494848559101229, 96246.846948876103852, 96256.199135972303338, 96265.551409840190900, 96274.903770472170436, 96284.256217860776815, 96293.608751998457592, 96302.961372877689428, 96312.314080490934430, 96321.666874830712914, 96331.019755889486987, 96340.372723659704207, 96349.725778133870335, 96359.078919304491137, 96368.432147164014168, 96377.785461704930640, 96387.138862919746316, 96396.492350800952408, 96405.845925341025577, 96415.199586532442481, 96424.553334367694333, 96433.907168839330552, 96443.261089939769590, 96452.615097661560867, 96461.969191997181042, 96471.323372939121327, 96480.677640479916590, 96490.031994612043491, 96499.386435327978688, 96508.740962620271603, 96518.095576481413445, 96527.450276903895428, 96536.805063880223315, 96546.159937402946525, 96555.514897464512615, 96564.869944057500106, 96574.225077174371108, 96583.580296807675040, 96592.935602949888562, 96602.290995593575644, 96611.646474731212948, 96621.002040355335339, 96630.357692458463134, 96639.713431033160305, 96649.069256071874406, 96658.425167567154858, 96667.781165511551080, 96677.137249897583388, 96686.493420717772096, 96695.849677964652074, 96705.206021630743635, 96714.562451708596200, 96723.918968190744636, 96733.275571069680154, 96742.632260337995831, 96751.989035988197429, 96761.345898012834368, 96770.702846404456068, 96780.059881155568291, 96789.417002258764114, 96798.774209706534748, 96808.131503491473268, 96817.488883606099989, 96826.846350042978884, 96836.203902794630267, 96845.561541853618110, 96854.919267212506384, 96864.277078863844508, 96873.634976800181903, 96882.992961014067987, 96892.351031498066732, 96901.709188244756660, 96911.067431246643537, 96920.425760496334988, 96929.784175986365881, 96939.142677709329291, 96948.501265657760086, 96957.859939824236790, 96967.218700201337924, 96976.577546781612909, 96985.936479557640268, 96995.295498521983973, 97004.654603667237097, 97014.013794985934510, 97023.373072470698389, 97032.732436114049051, 97042.091885908637778, 97051.451421846970334, 97060.811043921668897, 97070.170752125282888, 97079.530546450434485, 97088.890426889658556, 97098.250393435606384, 97107.610446080798283, 97116.970584817870986, 97126.330809639388463, 97135.691120537929237, 97145.051517506130040, 97154.412000536525738, 97163.772569621753064, 97173.133224754390540, 97182.493965927031240, 97191.854793132282794, 97201.215706362723722, 97210.576705610990757, 97219.937790869662422, 97229.298962131346343, 97238.660219388635596, 97248.021562634166912, 97257.382991860489710, 97266.744507060269825, 97276.106108226085780, 97285.467795350545202, 97294.829568426284823, 97304.191427445912268, 97313.553372402006062, 97322.915403287232039, 97332.277520094183274, 97341.639722815452842, 97351.002011443706579, 97360.364385971523006, 97369.726846391582512, 97379.089392696434516, 97388.452024878744851, 97397.814742931135697, 97407.177546846258338, 97416.540436616691295, 97425.903412235100404, 97435.266473694064189, 97444.629620986306691, 97453.992854104377329, 97463.356173040956492, 97472.719577788651804, 97482.083068340143654, 97491.446644687996013, 97500.810306824932923, 97510.174054743518354, 97519.537888436461799, 97528.901807896370883, 97538.265813115882338, 97547.629904087676550, 97556.994080804375699, 97566.358343258601963, 97575.722691443050280, 97585.087125350386486, 97594.451644973189104, 97603.816250304182176, 97613.180941335987882, 97622.545718061272055, 97631.910580472700531, 97641.275528562895488, 97650.640562324551865, 97660.005681750306394, 97669.370886832839460, 97678.736177564831451, 97688.101553938904544, 97697.467015947739128, 97706.832563584015588, 97716.198196840399760, 97725.563915709557477, 97734.929720184154576, 97744.295610256871441, 97753.661585920373909, 97763.027647167356918, 97772.393793990457198, 97781.760026382384240, 97791.126344335847534, 97800.492747843454708, 97809.859236897915252, 97819.225811491924105, 97828.592471618147101, 97837.959217269279179, 97847.326048438015277, 97856.692965117035783, 97866.059967299021082, 97875.427054976680665, 97884.794228142680367, 97894.161486789729679, 97903.528830910508987, 97912.896260497727781, 97922.263775544081000, 97931.631376042263582, 97940.999061984970467, 97950.366833364867489, 97959.734690174722346, 97969.102632407229976, 97978.470660055027111, 97987.838773110866896, 97997.206971567473374, 98006.575255417483277, 98015.943624653707957, 98025.312079268769594, 98034.680619255421334, 98044.049244606372667, 98053.417955314333085, 98062.786751371982973, 98072.155632772090030, 98081.524599507363746, 98090.893651570469956, 98100.262788954190910, 98109.632011651236098, 98119.001319654315012, 98128.370712956122588, 98137.740191549470183, 98147.109755426994525, 98156.479404581434210, 98165.849139005556935, 98175.218958692086744, 98184.588863633747678, 98193.958853823234676, 98203.328929253329989, 98212.699089916757657, 98222.069335806241725, 98231.439666914535337, 98240.810083234362537, 98250.180584758447367, 98259.551171479586628, 98268.921843390446156, 98278.292600483837305, 98287.663442752455012, 98297.034370189081528, 98306.405382786455448, 98315.776480537300813, 98325.147663434414426, 98334.518931470491225, 98343.890284638298908, 98353.261722930634278, 98362.633246340192272, 98372.004854859769694, 98381.376548482105136, 98390.748327199951746, 98400.120191006091773, 98409.492139893263811, 98418.864173854235560, 98428.236292881774716, 98437.608496968648979, 98446.980786107596941, 98456.353160291429958, 98465.725619512886624, 98475.098163764734636, 98484.470793039756245, 98493.843507330719149, 98503.216306630391045, 98512.589190931539633, 98521.962160226976266, 98531.335214509454090, 98540.708353771711700, 98550.081578006589552, 98559.454887206855346, 98568.828281365262228, 98578.201760474606999, 98587.575324527686462, 98596.948973517268314, 98606.322707436178462, 98615.696526277126395, 98625.070430032981676, 98634.444418696482899, 98643.818492260441417, 98653.192650717654033, 98662.566894060888444, 98671.941222282956005, 98681.315635376697173, 98690.690133334835991, 98700.064716150198365, 98709.439383815595647, 98718.814136323824641, 98728.188973667682149, 98737.563895839979523, 98746.938902833499014, 98756.313994641066529, 98765.689171255507972, 98775.064432669591042, 98784.439778876156197, 98793.815209868000238, 98803.190725637934520, 98812.566326178770396, 98821.942011483333772, 98831.317781544436002, 98840.693636354888440, 98850.069575907516992, 98859.445600195147563, 98868.821709210576955, 98878.197902946631075, 98887.574181396135828, 98896.950544551946223, 98906.326992406859063, 98915.703524953700253, 98925.080142185281147, 98934.456844094485859, 98943.833630674111191, 98953.210501916968497, 98962.587457815912785, 98971.964498363784514, 98981.341623553395038, 98990.718833377613919, 99000.096127829267061, 99009.473506901165820, 99018.850970586165204, 99028.228518877134775, 99037.606151766871335, 99046.983869248258998, 99056.361671314123669, 99065.739557957320358, 99075.117529170674970, 99084.495584947057068, 99093.873725279307109, 99103.251950160280103, 99112.630259582831059, 99122.008653539785882, 99131.387132024057792, 99140.765695028458140, 99150.144342545827385, 99159.523074569064192, 99168.901891091009020, 99178.280792104531429, 99187.659777602486429, 99197.038847577729030, 99206.418002023128793, 99215.797240931584383, 99225.176564295907156, 99234.555972109010327, 99243.935464363734354, 99253.315041052934248, 99262.694702169552329, 99272.074447706385399, 99281.454277656346676, 99290.834192012276617, 99300.214190767102991, 99309.594273913666257, 99318.974441444850527, 99328.354693353554467, 99337.735029632618534, 99347.115450274970499, 99356.495955273465370, 99365.876544621016365, 99375.257218310463941, 99384.637976334735868, 99394.018818686701707, 99403.399745359245571, 99412.780756345280679, 99422.161851637691143, 99431.543031229331973, 99440.924295113160042, 99450.305643282015808, 99459.687075728841592, 99469.068592446521507, 99478.450193427925115, 99487.831878665980184, 99497.213648153570830, 99506.595501883624820, 99515.977439849040820, 99525.359462042702944, 99534.741568457538961, 99544.123759086447535, 99553.506033922327333, 99562.888392958106124, 99572.270836186682573, 99581.653363600955345, 99591.035975193866761, 99600.418670958344592, 99609.801450887258397, 99619.184314973550499, 99628.567263210119563, 99637.950295589922462, 99647.333412105843308, 99656.716612750838976, 99666.099897517779027, 99675.483266399649438, 99684.866719389334321, 99694.250256479775999, 99703.633877663887688, 99713.017582934626262, 99722.401372284875833, 99731.785245707622380, 99741.169203195750015, 99750.553244742230163, 99759.937370339990593, 99769.321579981944524, 99778.705873661034275, 99788.090251370231272, 99797.474713102419628, 99806.859258850585320, 99816.243888607670669, 99825.628602366588893, 99835.013400120296865, 99844.398281861751457, 99853.783247583894990, 99863.168297279669787, 99872.553430942003615, 99881.938648563897004, 99891.323950138248620, 99900.709335658044438, 99910.094805116241332, 99919.480358505781624, 99928.865995819593081, 99938.251717050705338, 99947.637522192002507, 99957.023411236485117, 99966.409384177095490, 99975.795441006819601, 99985.181581718599773, 99994.567806305407430, 100003.954114760199445, 100013.340507075976348, 100022.726983245636802, 100032.113543262224994, 100041.500187118668691, 100050.886914807953872, 100060.273726323037408, 100069.660621656905278, 100079.047600802543457, 100088.434663752937922, 100097.821810501016444, 100107.209041039764998, 100116.596355362227769, 100125.983753461317974, 100135.371235330050695, 100144.758800961397355, 100154.146450348343933, 100163.534183483861852, 100172.922000360966194, 100182.309900972628384, 100191.697885311863502, 100201.085953371642972, 100210.474105144923669, 100219.862340624749777, 100229.250659804063616, 100238.639062675923924, 100248.027549233273021, 100257.416119469140540, 100266.804773376512458, 100276.193510948389303, 100285.582332177786157, 100294.971237057674443, 100304.360225581083796, 100313.749297741000191, 100323.138453530438710, 100332.527692942414433, 100341.917015969913336, 100351.306422605965054, 100360.695912843584665, 100370.085486675729044, 100379.475144095486030, 100388.864885095827049, 100398.254709669781732, 100407.644617810350610, 100417.034609510563314, 100426.424684763434925, 100435.814843562009628, 100445.205085899229744, 100454.595411768226768, 100463.985821161943022, 100473.376314073422691, 100482.766890495709958, 100492.157550421790802, 100501.548293844723958, 100510.939120757553610, 100520.330031153294840, 100529.721025024962728, 100539.112102365601459, 100548.503263168269768, 100557.894507425924530, 100567.285835131697240, 100576.677246278559323, 100586.068740859569516, 100595.460318867786555, 100604.851980296210968, 100614.243725137930596, 100623.635553385960520, 100633.027465033315821, 100642.419460073113441, 100651.811538498324808, 100661.203700302081415, 100670.595945477340138, 100679.988274017203366, 100689.380685914715286, 100698.773181162934634, 100708.165759754905594, 100717.558421683672350, 100726.951166942322743, 100736.343995523857302, 100745.736907421392971, 100755.129902627944830, 100764.522981136586168, 100773.916142940404825, 100783.309388032430434, 100792.702716405750834, 100802.096128053410212, 100811.489622968496406, 100820.883201144039049, 100830.276862573155086, 100839.670607248859596, 100849.064435164298629, 100858.458346312443609, 100867.852340686440584, 100877.246418279377394, 100886.640579084254568, 100896.034823094203603, 100905.429150302297785, 100914.823560701595852, 100924.218054285200196, 100933.612631046184106, 100943.007290977591765, 100952.402034072598326, 100961.796860324189765, 100971.191769725497579, 100980.586762269595056, 100989.981837949613691, 100999.376996758568566, 101008.772238689591177, 101018.167563735798467, 101027.562971890220069, 101036.958463146016584, 101046.354037496217643, 101055.749694933983847, 101065.145435452344827, 101074.541259044461185, 101083.937165703391656, 101093.333155422267737, 101102.729228194148163, 101112.125384012178984, 101121.521622869433486, 101130.917944759043166, 101140.314349674081313, 101149.710837607679423, 101159.107408552939887, 101168.504062503008754, 101177.900799450915656, 101187.297619389850297, 101196.694522312871413, 101206.091508213110501, 101215.488577083713608, 101224.885728917754022, 101234.282963708363241, 101243.680281448687310, 101253.077682131799520, 101262.475165750831366, 101271.872732298943447, 101281.270381769223604, 101290.668114154817886, 101300.065929448814131, 101309.463827644387493, 101318.861808734640363, 101328.259872712689685, 101337.658019571696059, 101347.056249304776429, 101356.454561905047740, 101365.852957365656039, 101375.251435679761926, 101384.649996840453241, 101394.048640840905136, 101403.447367674249108, 101412.846177333572996, 101422.245069812110160, 101431.644045102933887, 101441.043103199219331, 101450.442244094068883, 101459.841467780686799, 101469.240774252175470, 101478.640163501695497, 101488.039635522378376, 101497.439190307413810, 101506.838827849933296, 101516.238548143068328, 101525.638351179994061, 101535.038236953827436, 101544.438205457787262, 101553.838256684990483, 101563.238390628612251, 101572.638607281798613, 101582.038906637681066, 101591.439288689463865, 101600.839753430293058, 101610.240300853358349, 101619.640930951776681, 101629.041643718723208, 101638.442439147402183, 101647.843317230945104, 101657.244277962527121, 101666.645321335308836, 101676.046447342494503, 101685.447655977230170, 101694.848947232705541, 101704.250321102081216, 101713.651777578532347, 101723.053316655219533, 101732.454938325376133, 101741.856642582148197, 101751.258429418696323, 101760.660298828210216, 101770.062250803894131, 101779.464285338894115, 101788.866402426443528, 101798.268602059688419, 101807.670884231847594, 101817.073248936067102, 101826.475696165565751, 101835.878225913547794, 101845.280838173159282, 101854.683532937648124, 101864.086310200145817, 101873.489169953900273, 101882.892112192057539, 101892.295136907865526, 101901.698244094499387, 101911.101433745148825, 101920.504705853032647, 101929.908060411355109, 101939.311497413291363, 101948.715016852060216, 101958.118618720851373, 101967.522303012912744, 101976.926069721434033, 101986.329918839590391, 101995.733850360615179, 102005.137864277712652, 102014.541960584130720, 102023.946139273015433, 102033.350400337614701, 102042.754743771176436, 102052.159169566861237, 102061.563677717917017, 102070.968268217548029, 102080.372941058973083, 102089.777696235440089, 102099.182533740138751, 102108.587453566316981, 102117.992455707149929, 102127.397540155914612, 102136.802706905829837, 102146.207955950114410, 102155.613287281987141, 102165.018700894681388, 102174.424196781430510, 102183.829774935467867, 102193.235435350012267, 102202.641178018340725, 102212.047002933613840, 102221.452910089166835, 102230.858899478131207, 102240.264971093813074, 102249.671124929445796, 102259.077360978233628, 102268.483679233439034, 102277.890079688324477, 102287.296562336123316, 102296.703127170039807, 102306.109774183394620, 102315.516503369377460, 102324.923314721236238, 102334.330208232262521, 102343.737183895675116, 102353.144241704721935, 102362.551381652694545, 102371.958603732768097, 102381.365907938292366, 102390.773294262457057, 102400.180762698539183, 102409.588313239786658, 102418.995945879505598, 102428.403660610900261, 102437.811457427247660, 102447.219336321824812, 102456.627297287894180, 102466.035340318689123, 102475.443465407501208, 102484.851672547636554, 102494.259961732270312, 102503.668332954752259, 102513.076786208315752, 102522.485321486266912, 102531.893938781809993, 102541.302638088280219, 102550.711419398925500, 102560.120282707051956, 102569.529228005878394, 102578.938255288740038, 102588.347364548870246, 102597.756555779604241, 102607.165828974189935, 102616.575184125889791, 102625.984621228024480, 102635.394140273856465, 102644.803741256691865, 102654.213424169778591, 102663.623189006466419, 102673.033035759988707, 102682.442964423651574, 102691.852974990761140, 102701.263067454594420, 102710.673241808457533, 102720.083498045612941, 102729.493836159395869, 102738.904256143097882, 102748.314757989981445, 102757.725341693396331, 102767.136007246590452, 102776.546754642913584, 102785.957583875642740, 102795.368494938084041, 102804.779487823543604, 102814.190562525327550, 102823.601719036727445, 102833.012957351063960, 102842.424277461657766, 102851.835679361800430, 102861.247163044812623, 102870.658728504000464, 102880.070375732684624, 102889.482104724171222, 102898.893915471766377, 102908.305807968834415, 102917.717782208637800, 102927.129838184497203, 102936.541975889776950, 102945.954195317768608, 102955.366496461792849, 102964.778879315155791, 102974.191343871236313, 102983.603890123311430, 102993.016518064730917, 103002.429227688800893, 103011.842018988842028, 103021.254891958247754, 103030.667846590280533, 103040.080882878304692, 103049.494000815640902, 103058.907200395624386, 103068.320481611590367, 103077.733844456888619, 103087.147288924839813, 103096.560815008808277, 103105.974422702085576, 103115.388111998036038, 103124.801882890009438, 103134.215735371355549, 103143.629669435409596, 103153.043685075506801, 103162.457782284982386, 103171.871961057229782, 103181.286221385569661, 103190.700563263308140, 103200.114986683867755, 103209.529491640554625, 103218.944078126747627, 103228.358746135796537, 103237.773495661007473, 103247.188326695802971, 103256.603239233503700, 103266.018233267473988, 103275.433308791092713, 103284.848465797695098, 103294.263704280616366, 103303.679024233293603, 103313.094425649047480, 103322.509908521213220, 103331.925472843198804, 103341.341118608354009, 103350.756845810057712, 103360.172654441659688, 103369.588544496567920, 103379.004515968117630, 103388.420568849687697, 103397.836703134642448, 103407.252918816360761, 103416.669215888221515, 103426.085594343603589, 103435.502054175900412, 103444.918595378447208, 103454.335217944666510, 103463.751921867908095, 103473.168707141579944, 103482.585573759046383, 103492.002521713700844, 103501.419550998922205, 103510.836661608089344, 103520.253853534595692, 103529.671126771834679, 103539.088481313199736, 103548.505917152069742, 103557.923434281852678, 103567.341032695898321, 103576.758712387643754, 103586.176473350467859, 103595.594315577764064, 103605.012239062940353, 103614.430243799404707, 103623.848329780506901, 103633.266496999684023, 103642.684745450314949, 103652.103075125865871, 103661.521486019642907, 103670.939978125112248, 103680.358551435652771, 103689.777205944716115, 103699.195941645652056, 103708.614758531897678, 103718.033656596846413, 103727.452635833949898, 103736.871696236572461, 103746.290837798136636, 103755.710060512079508, 103765.129364371809061, 103774.548749370704172, 103783.968215502231033, 103793.387762759797624, 103802.807391136768274, 103812.227100626638276, 103821.646891222801059, 103831.066762918679160, 103840.486715707680560, 103849.906749583271449, 103859.326864538787049, 103868.747060567751760, 103878.167337663588114, 103887.587695819645887, 103897.008135029420373, 103906.428655286319554, 103915.849256583780516, 103925.269938915240346, 103934.690702274107025, 103944.111546653846744, 103953.532472047896590, 103962.953478449664544, 103972.374565852631349, 103981.795734250175883, 103991.216983635807992, 104000.638314002921106, 104010.059725344981416, 104019.481217655426008, 104028.902790927706519, 104038.324445155216381, 104047.746180331479991, 104057.167996449905331, 104066.589893503944040, 104076.011871487062308, 104085.433930392682669, 104094.856070214271313, 104104.278290945279878, 104113.700592579160002, 104123.122975109392428, 104132.545438529385137, 104141.967982832647976, 104151.390608012588928, 104160.813314062703284, 104170.236100976442685, 104179.658968747287872, 104189.081917368661379, 104198.504946834029397, 104207.928057136916323, 104217.351248270701035, 104226.774520228922484, 104236.197873005017755, 104245.621306592438486, 104255.044820984694525, 104264.468416175237508, 104273.892092157533625, 104283.315848925092723, 104292.739686471308232, 104302.163604789733654, 104311.587603873806074, 104321.011683717035339, 104330.435844312873087, 104339.860085654785507, 104349.284407736282446, 104358.708810550844646, 104368.133294091923744, 104377.557858353044139, 104386.982503327672021, 104396.407229009288130, 104405.832035391373211, 104415.256922467451659, 104424.681890230960562, 104434.106938675438869, 104443.532067794338218, 104452.957277581183007, 104462.382568029439426, 104471.807939132617321, 104481.233390884211985, 104490.658923277733265, 104500.084536306632799, 104509.510229964449536, 104518.936004244664218, 104528.361859140801243, 104537.787794646326802, 104547.213810754779843, 104556.639907459612004, 104566.066084754391341, 104575.492342632598593, 104584.918681087714504, 104594.345100113307126, 104603.771599702798994, 104613.198179849787266, 104622.624840547723579, 104632.051581790146884, 104641.478403570567025, 104650.905305882493849, 104660.332288719437202, 104669.759352074936032, 104679.186495942471083, 104688.613720315581304, 104698.041025187791092, 104707.468410552624846, 104716.895876403606962, 104726.323422734218184, 104735.751049538026564, 104745.178756808527396, 104754.606544539288734, 104764.034412723776768, 104773.462361355574103, 104782.890390428190585, 104792.318499935136060, 104801.746689869978582, 104811.174960226213443, 104820.603310997394146, 104830.031742177030537, 104839.460253758705221, 104848.888845735913492, 104858.317518102194299, 104867.746270851115696, 104877.175103976202081, 104886.604017470977851, 104896.033011328996508, 104905.462085543797002, 104914.891240108918282, 104924.320475017913850, 104933.749790264351759, 104943.179185841727303, 104952.608661743608536, 104962.038217963578063, 104971.467854495131178, 104980.897571331835934, 104990.327368467289489, 104999.757245894987136, 105009.187203608482378, 105018.617241601372370, 105028.047359867196064, 105037.477558399492409, 105046.907837191844010, 105056.338196237775264, 105065.768635530883330, 105075.199155064692604, 105084.629754832829349, 105094.060434828774305, 105103.491195046153734, 105112.922035478492035, 105122.352956119371811, 105131.783956962361117, 105141.215038001042558, 105150.646199228969635, 105160.077440639710403, 105169.508762226832914, 105178.940163983905222, 105188.371645904539037, 105197.803207982258755, 105207.234850210690638, 105216.666572583344532, 105226.098375093861250, 105235.530257735779742, 105244.962220502697164, 105254.394263388196123, 105263.826386385830119, 105273.258589489239966, 105282.690872691950062, 105292.123235987572116, 105301.555679369688733, 105310.988202831882518, 105320.420806367736077, 105329.853489970861119, 105339.286253634825698, 105348.719097353226971, 105358.152021119662095, 105367.585024927713675, 105377.018108770964318, 105386.451272643069387, 105395.884516537553282, 105405.317840448027709, 105414.751244368133484, 105424.184728291409556, 105433.618292211525841, 105443.051936121992185, 105452.485660016493057, 105461.919463888596511, 105471.353347731914255, 105480.787311540028895, 105490.221355306581245, 105499.655479025168461, 105509.089682689373149, 105518.523966292836121, 105527.958329829139984, 105537.392773291954654, 105546.827296674804529, 105556.261899971374078, 105565.696583175231353, 105575.131346280017169, 105584.566189279328682, 105594.001112166850362, 105603.436114936092054, 105612.871197580738226, 105622.306360094415140, 105631.741602470719954, 105641.176924703293480, 105650.612326785718324, 105660.047808711678954, 105669.483370474757976, 105678.919012068596203, 105688.354733486834448, 105697.790534723084420, 105707.226415770972380, 105716.662376624139142, 105726.098417276210967, 105735.534537720828666, 105744.970737951618503, 105754.407017962192185, 105763.843377746248734, 105773.279817297356203, 105782.716336609199061, 105792.152935675389017, 105801.589614489552332, 105811.026373045388027, 105820.463211336478707, 105829.900129356508842, 105839.337127099104691, 105848.774204557892517, 105858.211361726571340, 105867.648598598723765, 105877.085915168034262, 105886.523311428158195, 105895.960787372692721, 105905.398342995351413, 105914.835978289789637, 105924.273693249604548, 105933.711487868466065, 105943.149362140073208, 105952.587316058023134, 105962.025349616014864, 105971.463462807703763, 105980.901655626701540, 105990.339928066721768, 105999.778280121419812, 106009.216711784436484, 106018.655223049441702, 106028.093813910105382, 106037.532484360068338, 106046.971234393029590, 106056.410064002659055, 106065.848973182597547, 106075.287961926514981, 106084.727030228081276, 106094.166178081010003, 106103.605405478941975, 106113.044712415518006, 106122.484098884451669, 106131.923564879427431, 106141.363110394100659, 106150.802735422155820, 106160.242439957262832, 106169.682223993077059, 106179.122087523355731, 106188.562030541710556, 106198.002053041840554, 106207.442155017430196, 106216.882336462149397, 106226.322597369726282, 106235.762937733816216, 106245.203357548103668, 106254.643856806287658, 106264.084435502067208, 106273.525093629083131, 106282.965831181107205, 106292.406648151751142, 106301.847544534743065, 106311.288520323811099, 106320.729575512581505, 106330.170710094811511, 106339.611924064171035, 106349.053217414359096, 106358.494590139060165, 106367.936042232002364, 106377.377573686870164, 106386.819184497377137, 106396.260874657207751, 106405.702644160090131, 106415.144492999708746, 106424.586421169791720, 106434.028428664008970, 106443.470515476103174, 106452.912681599787902, 106462.354927028733073, 106471.797251756695914, 106481.239655777346343, 106490.682139084441587, 106500.124701671666116, 106509.567343532748055, 106519.010064661400975, 106528.452865051338449, 106537.895744696259499, 106547.338703589906800, 106556.781741725993925, 106566.224859098263551, 106575.668055700400146, 106585.111331526160939, 106594.554686569244950, 106603.998120823380305, 106613.441634282309678, 106622.885226939746644, 106632.328898789419327, 106641.772649825070403, 106651.216480040398892, 106660.660389429205679, 106670.104377985131578, 106679.548445701962919, 106688.992592573427828, 106698.436818593239877, 106707.881123755156295, 106717.325508052919758, 106726.769971480243839, 106736.214514030914870, 106745.659135698602768, 106755.103836477093864, 106764.548616360130836, 106773.993475341441808, 106783.438413414769457, 106792.883430573885562, 106802.328526812503696, 106811.773702124381089, 106821.218956503260415, 106830.664289942913456, 106840.109702437082888, 106849.555193979482283, 106859.000764563897974, 106868.446414184101741, 106877.892142833821708, 106887.337950506800553, 106896.783837196795503, 106906.229802897578338, 106915.675847602935391, 106925.121971306565683, 106934.568174002240994, 106944.014455683762208, 106953.460816344901104, 106962.907255979342153, 106972.353774580886238, 106981.800372143348795, 106991.247048660399741, 107000.693804125883617, 107010.140638533557649, 107019.587551877164515, 107029.034544150475995, 107038.481615347263869, 107047.928765461329021, 107057.375994486399577, 107066.823302416290971, 107076.270689244745881, 107085.718154965565191, 107095.165699572491576, 107104.613323059340473, 107114.061025419840007, 107123.508806647849269, 107132.956666737096384, 107142.404605681338580, 107151.852623474420398, 107161.300720110069960, 107170.748895582102705, 107180.197149884304963, 107189.645483010433963, 107199.093894954319694, 107208.542385709719383, 107217.990955270419363, 107227.439603630220518, 107236.888330782952835, 107246.337136722315336, 107255.786021442196216, 107265.234984936323599, 107274.684027198542026, 107284.133148222608725, 107293.582348002339131, 107303.031626531519578, 107312.480983803980052, 107321.930419813477783, 107331.379934553828207, 107340.829528018875862, 107350.279200202363427, 107359.728951098091784, 107369.178780699934578, 107378.628689001634484, 107388.078675997036044, 107397.528741679896484, 107406.978886044074898, 107416.429109083386720, 107425.879410791603732, 107435.329791162555921, 107444.780250190044171, 107454.230787867913023, 107463.681404189919704, 107473.132099149952410, 107482.582872741782921, 107492.033724959226674, 107501.484655796113657, 107510.935665246273857, 107520.386753303522710, 107529.837919961661100, 107539.289165214533568, 107548.740489055955550, 107558.191891479742480, 107567.643372479724349, 107577.094932049745694, 107586.546570183621952, 107595.998286875183112, 107605.450082118230057, 107614.901955906650983, 107624.353908234203118, 107633.805939094789210, 107643.258048482210143, 107652.710236390295904, 107662.162502812876482, 107671.614847743825521, 107681.067271176900249, 107690.519773106032517, 107699.972353525023209, 107709.425012427702313, 107718.877749807914370, 107728.330565659503918, 107737.783459976300946, 107747.236432752208202, 107756.689483980968362, 107766.142613656498725, 107775.595821772643831, 107785.049108323233668, 107794.502473302112776, 107803.955916703140247, 107813.409438520175172, 107822.863038747047540, 107832.316717377630994, 107841.770474405755522, 107851.224309825280216, 107860.678223630093271, 107870.132215814024676, 107879.586286370918970, 107889.040435294649797, 107898.494662579076248, 107907.948968218071968, 107917.403352205452393, 107926.857814535134821, 107936.312355200949241, 107945.766974196769297, 107955.221671516468632, 107964.676447153877234, 107974.131301102897851, 107983.586233357404126, 107993.041243911240599, 108002.496332758295466, 108011.951499892413267, 108021.406745307482197, 108030.862068997390452, 108040.317470955968020, 108049.772951177132200, 108059.228509654727532, 108068.684146382671315, 108078.139861354808090, 108087.595654564996948, 108097.051526007184293, 108106.507475675185560, 108115.963503562903497, 108125.419609664240852, 108134.875793973042164, 108144.332056483224733, 108153.788397188647650, 108163.244816083228216, 108172.701313160840073, 108182.157888415342313, 108191.614541840666789, 108201.071273430672591, 108210.528083179277019, 108219.984971080339164, 108229.441937127776328, 108238.898981315476703, 108248.356103637313936, 108257.813304087234428, 108267.270582659111824, 108276.727939346805215, 108286.185374144246452, 108295.642887045338284, 108305.100478043968906, 108314.558147134041064, 108324.015894309457508, 108333.473719564150088, 108342.931622891977895, 108352.389604286872782, 108361.847663742722943, 108371.305801253460231, 108380.764016812972841, 108390.222310415163520, 108399.680682053978671, 108409.139131723262835, 108418.597659416991519, 108428.056265129052917, 108437.514948853364331, 108446.973710583857610, 108456.432550314406399, 108465.891468038942548, 108475.350463751412462, 108484.809537445689784, 108494.268689115735469, 108503.727918755437713, 108513.187226358742919, 108522.646611919553834, 108532.106075431802310, 108541.565616889420198, 108551.025236286324798, 108560.484933616418857, 108569.944708873663330, 108579.404562051960966, 108588.864493145301822, 108598.324502147515886, 108607.784589052593219, 108617.244753854465671, 108626.704996547050541, 108636.165317124308785, 108645.625715580143151, 108655.086191908485489, 108664.546746103311307, 108674.007378158523352, 108683.468088068038924, 108692.928875825877185, 108702.389741425911780, 108711.850684862089111, 108721.311706128370133, 108730.772805218701251, 108740.233982126999763, 108749.695236847241176, 108759.156569373342791, 108768.617979699280113, 108778.079467818984995, 108787.541033726403839, 108797.002677415483049, 108806.464398880183580, 108815.926198114437284, 108825.388075112234219, 108834.850029867506237, 108844.312062374214293, 108853.774172626304789, 108863.236360617709579, 108872.698626342404168, 108882.160969794407720, 108891.623390967579326, 108901.085889855952701, 108910.548466453416040, 108920.011120754017611, 108929.473852751674713, 108938.936662440348300, 108948.399549814013881, 108957.862514866603306, 108967.325557592150290, 108976.788677984557580, 108986.251876037844340, 108995.715151745927869, 109005.178505102827330, 109014.641936102489126, 109024.105444738888764, 109033.569031005987199, 109043.032694897789042, 109052.496436408226145, 109061.960255531332223, 109071.424152261010022, 109080.888126591322361, 109090.352178516157437, 109099.816308029563515, 109109.280515125501552, 109118.744799797947053, 109128.209162040875526, 109137.673601848277031, 109147.138119214156177, 109156.602714132459369, 109166.067386597234872, 109175.532136602385435, 109184.996964141959324, 109194.461869209902943, 109203.926851800279110, 109213.391911906990572, 109222.857049524100148, 109232.322264645539690, 109241.787557265342912, 109251.252927377499873, 109260.718374976015184, 109270.183900054820697, 109279.649502608008333, 109289.115182629509945, 109298.580940113359247, 109308.046775053531746, 109317.512687444017502, 109326.978677278879331, 109336.444744552063639, 109345.910889257589588, 109355.377111389476340, 109364.843410941728507, 109374.309787908292492, 109383.776242283260217, 109393.242774060607189, 109402.709383234323468, 109412.176069798428216, 109421.642833746955148, 109431.109675073908875, 109440.576593773279455, 109450.043589839100605, 109459.510663265391486, 109468.977814046171261, 109478.445042175386334, 109487.912347647172282, 109497.379730455475510, 109506.847190594315180, 109516.314728057725006, 109525.782342839738703, 109535.250034934360883, 109544.717804335610708, 109554.185651037521893, 109563.653575034128153, 109573.121576319463202, 109582.589654887502547, 109592.057810732338112, 109601.526043847930850, 109610.994354228372686, 109620.462741867682780, 109629.931206759865745, 109639.399748898984399, 109648.868368279028800, 109658.337064894076320, 109667.805838738146122, 109677.274689805271919, 109686.743618089501979, 109696.212623584855464, 109705.681706285395194, 109715.150866185125778, 109724.620103278124589, 109734.089417558425339, 109743.558809020032641, 109753.028277657052968, 109762.497823463476379, 109771.967446433394798, 109781.437146560827387, 109790.906923839793308, 109800.376778264413588, 109809.846709828663734, 109819.316718526650220, 109828.786804352377658, 109838.256967299908865, 109847.727207363335765, 109857.197524536677520, 109866.667918813996948, 109876.138390189327765, 109885.608938656761893, 109895.079564210333047, 109904.550266844089492, 109914.021046552137705, 109923.491903328496846, 109932.962837167215184, 109942.433848062399193, 109951.904936008097138, 109961.376100998357288, 109970.847343027242459, 109980.318662088830024, 109989.790058177197352, 109999.261531286392710, 110008.733081410493469, 110018.204708543562447, 110027.676412679647910, 110037.148193812899990, 110046.620051937308745, 110056.091987046966096, 110065.563999135963968, 110075.036088198365178, 110084.508254228247097, 110093.980497219672543, 110103.452817166762543, 110112.925214063550811, 110122.397687904129270, 110131.870238682589843, 110141.342866392980795, 110150.815571029437706, 110160.288352586008841, 110169.761211056771572, 110179.234146435803268, 110188.707158717239508, 110198.180247895128559, 110207.653413963547791, 110217.126656916618231, 110226.599976748402696, 110236.073373453007662, 110245.546847024510498, 110255.020397457017680, 110264.494024744592025, 110273.967728881383664, 110283.441509861440863, 110292.915367678870098, 110302.389302327763289, 110311.863313802226912, 110321.337402096367441, 110330.811567204262246, 110340.285809120017802, 110349.760127837740583, 110359.234523351537064, 110368.708995655528270, 110378.183544743747916, 110387.658170610375237, 110397.132873249487602, 110406.607652655191487, 110416.082508821578813, 110425.557441742770607, 110435.032451412916998, 110444.507537826051703, 110453.982700976339402, 110463.457940857857466, 110472.933257464756025, 110482.408650791127002, 110491.884120831076871, 110501.359667578741210, 110510.835291028226493, 110520.310991173653747, 110529.786768009129446, 110539.262621528789168, 110548.738551726724836, 110558.214558597115683, 110567.690642134024529, 110577.166802331586950, 110586.643039183953078, 110596.119352685200283, 110605.595742829507799, 110615.072209610982100, 110624.548753023729660, 110634.025373061871505, 110643.502069719615974, 110652.978842990982230, 110662.455692870207713, 110671.932619351311587, 110681.409622428516741, 110690.886702095929650, 110700.363858347671339, 110709.841091177906492, 110719.318400580727030, 110728.795786550326739, 110738.273249080782989, 110747.750788166245911, 110757.228403800923843, 110766.706095978865051, 110776.183864694263320, 110785.661709941254230, 110795.139631713973358, 110804.617630006585387, 110814.095704813182238, 110823.573856127972249, 110833.052083945090999, 110842.530388258630410, 110852.008769062813371, 110861.487226351746358, 110870.965760119579500, 110880.444370360506582, 110889.923057068619528, 110899.401820238112123, 110908.880659863119945, 110918.359575937807676, 110927.838568456325447, 110937.317637412823387, 110946.796782801495283, 110956.276004616462160, 110965.755302851903252, 110975.234677501954138, 110984.714128560779500, 110994.193656022587675, 111003.673259881470585, 111013.152940131651121, 111022.632696767279413, 111032.112529782505590, 111041.592439171508886, 111051.072424928439432, 111060.552487047505565, 111070.032625522842864, 111079.512840348616010, 111088.993131519018789, 111098.473499028186779, 111107.953942870357423, 111117.434463039637194, 111126.915059530248982, 111136.395732336328365, 111145.876481452112785, 111155.357306871694163, 111164.838208589309943, 111174.319186599153909, 111183.800240895332536, 111193.281371472083265, 111202.762578323585331, 111212.243861444017966, 111221.725220827545854, 111231.206656468377332, 111240.688168360691634, 111250.169756498624338, 111259.651420876456541, 111269.133161488309270, 111278.614978328390862, 111288.096871390880551, 111297.578840670001227, 111307.060886159903021, 111316.543007854779717, 111326.025205748868757, 111335.507479836320272, 111344.989830111371703, 111354.472256568173179, 111363.954759200933040, 111373.437338003874174, 111382.919992971161264, 111392.402724097031751, 111401.885531375635765, 111411.368414801225299, 111420.851374367979588, 111430.334410070106969, 111439.817521901815780, 111449.300709857256152, 111458.783973930709180, 111468.267314116354100, 111477.750730408413801, 111487.234222801038413, 111496.717791288509034, 111506.201435864975792, 111515.685156524690683, 111525.168953261862043, 111534.652826070698211, 111544.136774945378420, 111553.620799880169216, 111563.104900869249832, 111572.589077906872262, 111582.073330987186637, 111591.557660104503157, 111601.042065252957400, 111610.526546426815912, 111620.011103620301583, 111629.495736827608198, 111638.980446042973199, 111648.465231260619476, 111657.950092474784469, 111667.435029679647414, 111676.920042869489407, 111686.405132038504235, 111695.890297180929338, 111705.375538290987606, 111714.860855362916482, 111724.346248390953406, 111733.831717369306716, 111743.317262292228406, 111752.802883153941366, 111762.288579948668485, 111771.774352670661756, 111781.260201314173173, 111790.746125873396522, 111800.232126342598349, 111809.718202716001542, 111819.204354987872648, 111828.690583152390900, 111838.176887203866499, 111847.663267136507784, 111857.149722944566747, 111866.636254622295382, 111876.122862163916579, 111885.609545563682332, 111895.096304815815529, 111904.583139914626372, 111914.070050854279543, 111923.557037629085244, 111933.044100233280915, 111942.531238661103998, 111952.018452906821040, 111961.505742964654928, 111970.993108828901313, 111980.480550493783085, 111989.968067953552236, 111999.455661202518968, 112008.943330234862515, 112018.431075044878526, 112027.918895626818994, 112037.406791974950465, 112046.894764083510381, 112056.382811946794391, 112065.870935559054487, 112075.359134914528113, 112084.847410007510916, 112094.335760832225787, 112103.824187382982927, 112113.312689654019778, 112122.801267639617436, 112132.289921334056999, 112141.778650731561356, 112151.267455826455262, 112160.756336612947052, 112170.245293085361482, 112179.734325237979647, 112189.223433065009885, 112198.712616560776951, 112208.201875719518284, 112217.691210535573191, 112227.180621003135457, 112236.670107116544386, 112246.159668870051973, 112255.649306257939315, 112265.139019274502061, 112274.628807914006757, 112284.118672170719947, 112293.608612038951833, 112303.098627512983512, 112312.588718587096082, 112322.078885255541536, 112331.569127512673731, 112341.059445352701005, 112350.549838769962662, 112360.040307758725248, 112369.530852313313517, 112379.021472427979461, 112388.512168097004178, 112398.002939314741525, 112407.493786075399839, 112416.984708373332978, 112426.475706202851143, 112435.966779558162671, 112445.457928433650522, 112454.949152823581244, 112464.440452722250484, 112473.931828123939340, 112483.423279023016221, 112492.914805413674912, 112502.406407290327479, 112511.898084647182259, 112521.389837478593108, 112530.881665778870229, 112540.373569542265614, 112549.865548763162224, 112559.357603435797500, 112568.849733554525301, 112578.341939113655826, 112587.834220107426518, 112597.326576530249440, 112606.819008376347483, 112616.311515640089056, 112625.804098315769807, 112635.296756397699937, 112644.789489880189649, 112654.282298757563694, 112663.775183024132275, 112673.268142674234696, 112682.761177702137502, 112692.254288102209102, 112701.747473868745146, 112711.240734996055835, 112720.734071478524129, 112730.227483310372918, 112739.720970485999715, 112749.214532999714720, 112758.708170845828135, 112768.201884018664714, 112777.695672512563760, 112787.189536321835476, 112796.683475440833718, 112806.177489863854134, 112815.671579585265135, 112825.165744599362370, 112834.659984900499694, 112844.154300482972758, 112853.648691341179074, 112863.143157469414291, 112872.637698861988611, 112882.132315513284993, 112891.627007417628192, 112901.121774569342961, 112910.616616962739499, 112920.111534592229873, 112929.606527452095179, 112939.101595536689274, 112948.596738840380567, 112958.091957357464707, 112967.587251082339208, 112977.082620009299717, 112986.578064132700092, 112996.073583446923294, 113005.569177946264972, 113015.064847625108087, 113024.560592477791943, 113034.056412498655845, 113043.552307682068204, 113053.048278022382874, 113062.544323513924610, 113072.040444151047268, 113081.536639928148361, 113091.032910839523538, 113100.529256879584864, 113110.025678042642539, 113119.522174323064974, 113129.018745715235127, 113138.515392213477753, 113148.012113812175812, 113157.508910505668609, 113167.005782288353657, 113176.502729154555709, 113185.999751098643173, 113195.496848114984459, 113204.994020197977079, 113214.491267341945786, 113223.988589541244437, 113233.485986790285097, 113242.983459083392518, 113252.481006414978765, 113261.978628779397695, 113271.476326170988614, 113280.974098584163585, 113290.471946013291017, 113299.969868452710216, 113309.467865896818694, 113318.965938339999411, 113328.464085776606225, 113337.962308201065753, 113347.460605607659090, 113356.958977990856511, 113366.457425344997318, 113375.955947664479027, 113385.454544943670044, 113394.953217176924227, 113404.451964358653640, 113413.950786483255797, 113423.449683545099106, 113432.948655538566527, 113442.447702458041022, 113451.946824297920102, 113461.446021052557626, 113470.945292716380209, 113480.444639283770812, 113489.944060749126947, 113499.443557106802473, 113508.943128351224004, 113518.442774476774503, 113527.942495477851480, 113537.442291348823346, 113546.942162084102165, 113556.442107678085449, 113565.942128125170711, 113575.442223419755464, 113584.942393556251773, 113594.442638529013493, 113603.942958332510898, 113613.443352961083292, 113622.943822409157292, 113632.444366671130410, 113641.944985741400160, 113651.445679614378605, 113660.946448284492362, 113670.447291746095289, 113679.948209993643104, 113689.449203021518770, 113698.950270824119798, 113708.451413395887357, 113717.952630731204408, 113727.453922824497567, 113736.955289670193451, 113746.456731262675021, 113755.958247596354340, 113765.459838665643474, 113774.961504464998143, 113784.463244988801307, 113793.965060231465031, 113803.466950187401380, 113812.968914851066074, 113822.470954216842074, 113831.973068279185100, 113841.475257032492664, 113850.977520471147727, 113860.479858589649666, 113869.982271382395993, 113879.484758843784221, 113888.987320968226413, 113898.489957750236499, 113907.992669184139231, 113917.495455264419434, 113926.998315985489171, 113936.501251341760508, 113946.004261327703716, 113955.507345937730861, 113965.010505166268558, 113974.513739007728873, 113984.017047456611181, 113993.520430507283891, 114003.023888154188171, 114012.527420391779742, 114022.031027214514324, 114031.534708616774878, 114041.038464593060780, 114050.542295137784095, 114060.046200245356886, 114069.550179910263978, 114079.054234126931988, 114088.558362889787531, 114098.062566193286330, 114107.566844031869550, 114117.071196399992914, 114126.575623292112141, 114136.080124702610192, 114145.584700626015547, 114155.089351056754822, 114164.594075989225530, 114174.098875417927047, 114183.603749337300542, 114193.108697741830838, 114202.613720625900896, 114212.118817983995541, 114221.623989810555940, 114231.129236100081471, 114240.634556846998748, 114250.139952045748942, 114259.645421690802323, 114269.150965776643716, 114278.656584297685185, 114288.162277248411556, 114297.668044623307651, 114307.173886416785535, 114316.679802623315481, 114326.185793237382313, 114335.691858253485407, 114345.197997666007723, 114354.704211469448637, 114364.210499658307526, 114373.716862227011006, 114383.223299170029350, 114392.729810481876484, 114402.236396156935371, 114411.743056189763593, 114421.249790574802319, 114430.756599306521821, 114440.263482379363268, 114449.770439787869691, 114459.277471526438603, 114468.784577589598484, 114478.291757971834159, 114487.799012667543138, 114497.306341671312111, 114506.813744977538590, 114516.321222580736503, 114525.828774475390674, 114535.336400655956822, 114544.844101116934326, 114554.351875852808007, 114563.859724858048139, 114573.367648127168650, 114582.875645654596156, 114592.383717434902792, 114601.891863462486072, 114611.400083731889026, 114620.908378237581928, 114630.416746974049602, 114639.925189935835078, 114649.433707117350423, 114658.942298513124115, 114668.450964117640979, 114677.959703925414942, 114687.468517930916278, 114696.977406128658913, 114706.486368513127672, 114715.995405078821932, 114725.504515820226516, 114735.013700731869903, 114744.522959808222367, 114754.032293043797836, 114763.541700433081132, 114773.051181970600737, 114782.560737650841475, 114792.070367468317272, 114801.580071417512954, 114811.089849492957001, 114820.599701689134235, 114830.109628000573139, 114839.619628421743982, 114849.129702947204350, 114858.639851571453619, 114868.150074288932956, 114877.660371094258153, 114887.170741981841275, 114896.681186946283560, 114906.191705982026178, 114915.702299083626713, 114925.212966245599091, 114934.723707462442690, 114944.234522728671436, 114953.745412038799259, 114963.256375387354637, 114972.767412768866052, 114982.278524177818326, 114991.789709608798148, 115001.300969056261238, 115010.812302514736075, 115020.323709978765692, 115029.835191442878568, 115039.346746901603183, 115048.858376349424361, 115058.370079780899687, 115067.881857190572191, 115077.393708572955802, 115086.905633922535344, 115096.417633233882952, 115105.929706501541659, 115115.441853720025392, 115124.954074883862631, 115134.466369987567305, 115143.978739025711548, 115153.491181992780184, 115163.003698883359903, 115172.516289691979182, 115182.028954413122847, 115191.541693041392136, 115201.054505571300979, 115210.567391997377854, 115220.080352314165793, 115229.593386516207829, 115239.106494598061545, 115248.619676554255420, 115258.132932379303384, 115267.646262067806674, 115277.159665614279220, 115286.673143013264053, 115296.186694259304204, 115305.700319346957258, 115315.214018270766246, 115324.727791025303304, 115334.241637605082360, 115343.755558004646446, 115353.269552218582248, 115362.783620241432800, 115372.297762067755684, 115381.811977692079381, 115391.326267108946922, 115400.840630312959547, 115410.355067298660288, 115419.869578060606727, 115429.384162593327346, 115438.898820891408832, 115448.413552949394216, 115457.928358761841082, 115467.443238323336118, 115476.958191628436907, 115486.473218671686482, 115495.988319447642425, 115505.503493950891425, 115515.018742176005617, 115524.534064117484377, 115534.049459769972600, 115543.564929128013318, 115553.080472186164116, 115562.596088938968023, 115572.111779381055385, 115581.627543506969232, 115591.143381311267149, 115600.659292788521270, 115610.175277933332836, 115619.691336740244878, 115629.207469203844084, 115638.723675318717142, 115648.239955079392530, 115657.756308480500593, 115667.272735516628018, 115676.789236182288732, 115686.305810472113080, 115695.822458380673197, 115705.339179902541218, 115714.855975032289280, 115724.372843764518620, 115733.889786093801376, 115743.406802014724235, 115752.923891521859332, 115762.441054609822459, 115771.958291273171199, 115781.475601506506791, 115790.992985304386821, 115800.510442661470734, 115810.027973572287010, 115819.545578031451441, 115829.063256033521611, 115838.581007573127863, 115848.098832644856884, 115857.616731243280810, 115867.134703363015433, 115876.652748998661991, 115886.170868144778069, 115895.689060796023114, 115905.207326946911053, 115914.725666592101334, 115924.244079726180644, 115933.762566343750223, 115943.281126439396758, 115952.799760007721488, 115962.318467043340206, 115971.837247540854150, 115981.356101494850009, 115990.875028899958124, 116000.394029750779737, 116009.913104041901533, 116019.432251767939306, 116028.951472923523397, 116038.470767503225943, 116047.990135501662735, 116057.509576913464116, 116067.029091733216774, 116076.548679955565603, 116086.068341575111845, 116095.588076586427633, 116105.107884984186967, 116114.627766762976535, 116124.147721917397575, 116133.667750442080433, 116143.187852331670001, 116152.708027580723865, 116162.228276183901471, 116171.748598135833163, 116181.268993431134732, 116190.789462064392865, 116200.310004030223354, 116209.830619323314750, 116219.351307938239188, 116228.872069869656116, 116238.392905112137669, 116247.913813660343294, 116257.434795508903335, 116266.955850652448134, 116276.476979085593484, 116285.998180802969728, 116295.519455799192656, 116305.040804068936268, 116314.562225606787251, 116324.083720407390501, 116333.605288465390913, 116343.126929775433382, 116352.648644332119147, 116362.170432130107656, 116371.692293164000148, 116381.214227428485174, 116390.736234918163973, 116400.258315627666889, 116409.780469551697024, 116419.302696684797411, 116428.824997021700256, 116438.347370557006798, 116447.869817285318277, 116457.392337201352348, 116466.914930299724801, 116476.437596575065982, 116485.960336022006231, 116495.483148635263206, 116505.006034409423592, 116514.528993339117733, 116524.052025419048732, 116533.575130643861485, 116543.098309008157230, 116552.621560506624519, 116562.144885133937350, 116571.668282884696964, 116581.191753753577359, 116590.715297735223430, 116600.238914824323729, 116609.762605015479494, 116619.286368303422933, 116628.810204682740732, 116638.334114148092340, 116647.858096694224514, 116657.382152315680287, 116666.906281007191865, 116676.430482763404143, 116685.954757578991121, 116695.479105448583141, 116705.003526366839651, 116714.528020328507409, 116724.052587328144000, 116733.577227360481629, 116743.101940420136089, 116752.626726501854137, 116762.151585600237013, 116771.676517709958716, 116781.201522825722350, 116790.726600942172809, 116800.251752053998644, 116809.776976155844750, 116819.302273242399679, 116828.827643308381084, 116838.353086348361103, 116847.878602357101045, 116857.404191329245805, 116866.929853259469382, 116876.455588142460329, 116885.981395972892642, 116895.507276745454874, 116905.033230454821023, 116914.559257095650537, 116924.085356662661070, 116933.611529150512069, 116943.137774553877534, 116952.664092867460568, 116962.190484085920616, 116971.716948203989887, 116981.243485216313275, 116990.770095117593883, 117000.296777902534814, 117009.823533565766411, 117019.350362102049985, 117028.877263506015879, 117038.404237772410852, 117047.931284895879799, 117057.458404871111270, 117066.985597692852025, 117076.512863355732406, 117086.040201854499173, 117095.567613183826325, 117105.095097338387859, 117114.622654312945087, 117124.150284102128353, 117133.677986700655310, 117143.205762103229063, 117152.733610304552712, 117162.261531299314811, 117171.789525082247565, 117181.317591648024973, 117190.845730991350138, 117200.373943106940715, 117209.902227989499806, 117219.430585633715964, 117228.959016034306842, 117238.487519186004647, 117248.016095083454275, 117257.544743721446139, 117267.073465094639687, 117276.602259197708918, 117286.131126025429694, 117295.660065572505118, 117305.189077833623742, 117314.718162803488667, 117324.247320476861205, 117333.776550848415354, 117343.305853912868770, 117352.835229664968210, 117362.364678099358571, 117371.894199210873921, 117381.423792994130054, 117390.953459443902830, 117400.483198554866249, 117410.013010321796173, 117419.542894739395706, 117429.072851802324294, 117438.602881505372352, 117448.132983843286638, 117457.663158810741152, 117467.193406402468099, 117476.723726613156032, 117486.254119437624468, 117495.784584870532854, 117505.315122906671604, 117514.845733540685615, 117524.376416767350747, 117533.907172581399209, 117543.438000977548654, 117552.968901950531290, 117562.499875495108427, 117572.030921606012271, 117581.562040277916822, 117591.093231505597942, 117600.624495283787837, 117610.155831607262371, 117619.687240470695542, 117629.218721868877765, 117638.750275796541246, 117648.281902248359984, 117657.813601219138945, 117667.345372703610337, 117676.877216696491814, 117686.409133192573790, 117695.941122186588473, 117705.473183673238964, 117715.005317647286574, 117724.537524103521719, 117734.069803036618396, 117743.602154441367020, 117753.134578312528902, 117762.667074644807144, 117772.199643432948506, 117781.732284671801608, 117791.264998356025899, 117800.797784480382688, 117810.330643039633287, 117819.863574028568109, 117829.396577441890258, 117838.929653274361044, 117848.462801520770881, 117857.996022175851976, 117867.529315234365640, 117877.062680691044079, 117886.596118540706811, 117896.129628778056940, 117905.663211397913983, 117915.196866394951940, 117924.730593763990328, 117934.264393499790458, 117943.798265597113641, 117953.332210050721187, 117962.866226855374407, 117972.400316005863715, 117981.934477496863110, 117991.468711323250318, 118001.003017479786649, 118010.537395961175207, 118020.071846762206405, 118029.606369877685211, 118039.140965302343830, 118048.675633030958124, 118058.210373058318510, 118067.745185379186296, 118077.280069988381001, 118086.815026880576625, 118096.350056050650892, 118105.885157493306906, 118115.420331203364185, 118124.955577175584040, 118134.490895404756884, 118144.026285885658581, 118153.561748613050440, 118163.097283581766533, 118172.632890786480857, 118182.168570222100243, 118191.704321883356897, 118201.240145765012130, 118210.776041861827252, 118220.312010168694542, 118229.848050680317101, 118239.384163391470793, 118248.920348297004239, 118258.456605391678750, 118267.992934670226532, 118277.529336127568968, 118287.065809758350952, 118296.602355557464762, 118306.138973519642605, 118315.675663639703998, 118325.212425912439357, 118334.749260332653648, 118344.286166895166389, 118353.823145594695234, 118363.360196426059701, 118372.897319384108414, 118382.434514463646337, 118391.971781659376575, 118401.509120966162300, 118411.046532378852135, 118420.584015892163734, 118430.121571500916616, 118439.659199199944851, 118449.196898984009749, 118458.734670847974485, 118468.272514786571264, 118477.810430794663262, 118487.348418867011787, 118496.886478998509119, 118506.424611183858360, 118515.962815417922684, 118525.501091695492505, 118535.039440011401894, 118544.577860360441264, 118554.116352737386478, 118563.654917137158918, 118573.193553554461687, 118582.732261984157958, 118592.271042421081802, 118601.809894859994529, 118611.348819295730209, 118620.887815723122912, 118630.426884136963054, 118639.966024532142910, 118649.505236903380137, 118659.044521245552460, 118668.583877553464845, 118678.123305821980466, 118687.662806045860634, 118697.202378219939419, 118706.742022339050891, 118716.281738398014568, 118725.821526391664520, 118735.361386314863921, 118744.901318162344978, 118754.441321929043625, 118763.981397609692067, 118773.521545199153479, 118783.061764692291035, 118792.602056083895150, 118802.142419368799892, 118811.682854541897541, 118821.223361597920302, 118830.763940531775006, 118840.304591338222963, 118849.845314012200106, 118859.386108548467746, 118868.926974941889057, 118878.467913187298109, 118888.008923279514420, 118897.550005213415716, 118907.091158983792411, 118916.632384585522232, 118926.173682013453799, 118935.715051262377528, 118945.256492327171145, 118954.798005202654167, 118964.339589883704321, 118973.881246365170227, 118983.422974641842302, 118992.964774708612822, 119002.506646560315858, 119012.048590191800031, 119021.590605597943068, 119031.132692773506278, 119040.674851713454700, 119050.217082412535092, 119059.759384865668835, 119069.301759067646344, 119078.844205013374449, 119088.386722697701771, 119097.929312115447829, 119107.471973261490348, 119117.014706130677951, 119126.557510717888363, 119136.100387017941102, 119145.643335025713895, 119155.186354736084468, 119164.729446143872337, 119174.272609243998886, 119183.815844031239976, 119193.359150500502437, 119202.902528646634892, 119212.445978464544169, 119221.989499949035235, 119231.533093095000368, 119241.076757897317293, 119250.620494350805529, 119260.164302450401010, 119269.708182190908701, 119279.252133567220881, 119288.796156574244378, 119298.340251206740504, 119307.884417459703400, 119317.428655327938031, 119326.972964806278469, 119336.517345889689750, 119346.061798573005944, 119355.606322851090226, 119365.150918718791218, 119374.695586171059404, 119384.240325202699751, 119393.785135808648192, 119403.330017983709695, 119412.874971722805640, 119422.419997020871961, 119431.965093872655416, 119441.510262273164699, 119451.055502217190224, 119460.600813699653372, 119470.146196715446422, 119479.691651259447099, 119489.237177326518577, 119498.782774911567685, 119508.328444009457598, 119517.874184615066042, 119527.419996723343502, 119536.965880329124047, 119546.511835427314509, 119556.057862012778060, 119565.603960080450634, 119575.150129625166301, 119584.696370641860995, 119594.242683125426993, 119603.789067070742021, 119613.335522472698358, 119622.882049326173728, 119632.428647626089514, 119641.975317367352545, 119651.522058544840547, 119661.068871153416694, 119670.615755188046023, 119680.162710643591709, 119689.709737514931476, 119699.256835797015810, 119708.804005484693334, 119718.351246572914533, 119727.898559056557133, 119737.445942930527963, 119746.993398189733853, 119756.540924829037976, 119766.088522843405372, 119775.636192227757419, 119785.183932976913638, 119794.731745085839066, 119804.279628549440531, 119813.827583362610312, 119823.375609520284343, 119832.923707017325796, 119842.471875848699710, 119852.020116009283811, 119861.568427494014031, 119871.116810297797201, 119880.665264415496495, 119890.213789842106053, 119899.762386572489049, 119909.311054601581418, 119918.859793924289988, 119928.408604535550694, 119937.957486430299468, 119947.506439603414037, 119957.055464049772127, 119966.604559764426085, 119976.153726742166327, 119985.702964977943338, 119995.252274466751260, 120004.801655203453265, 120014.351107182985288, 120023.900630400283262, 120033.450224850224913, 120042.999890527833486, 120052.549627427957603, 120062.099435545504093, 120071.649314875496202, 120081.199265412782552, 120090.749287152328179, 120100.299380089039914, 120109.849544217882794, 120119.399779533763649, 120128.950086031589308, 120138.500463706353912, 120148.050912552964292, 120157.601432566356380, 120167.152023741466110, 120176.702686073200312, 120186.253419556553126, 120195.804224186402280, 120205.355099957741913, 120214.906046865478856, 120224.457064904578147, 120234.008154069917509, 120243.559314356520190, 120253.110545759263914, 120262.661848273142823, 120272.213221893063746, 120281.764666613991722, 120291.316182430833578, 120300.867769338612561, 120310.419427332206396, 120319.971156406580121, 120329.522956556713325, 120339.074827777483733, 120348.626770063900040, 120358.178783410898177, 120367.730867813443183, 120377.283023266441887, 120386.835249764859327, 120396.387547303689644, 120405.939915877868771, 120415.492355482332641, 120425.044866112031741, 120434.597447761960211, 120444.150100427039433, 120453.702824102234445, 120463.255618782510282, 120472.808484462831984, 120482.361421138135483, 120491.914428803385817, 120501.467507453562575, 120511.020657083630795, 120520.573877688511857, 120530.127169263199903, 120539.680531802659971, 120549.233965301857097, 120558.787469755741768, 120568.341045159308123, 120577.894691507477546, 120587.448408795244177, 120597.002197017573053, 120606.556056169458316, 120616.109986245821347, 120625.663987241627183, 120635.218059151913621, 120644.772201971616596, 120654.326415695686592, 120663.880700319146854, 120673.435055836889660, 120682.989482243996463, 120692.543979535315884, 120702.098547705943929, 120711.653186750787427, 120721.207896664825967, 120730.762677443082794, 120740.317529080508393, 120749.872451572067803, 120759.427444912740611, 120768.982509097550064, 120778.537644121446647, 120788.092849979395396, 120797.648126666375902, 120807.203474177440512, 120816.758892507510609, 120826.314381651609438, 120835.869941604658379, 120845.425572361724335, 120854.981273917714134, 120864.537046267694677, 120874.092889406616450, 120883.648803329473594, 120893.204788031216594, 120902.760843506897800, 120912.316969751467695, 120921.873166759949527, 120931.429434527322883, 120940.985773048596457, 120950.542182318706182, 120960.098662332704407, 120969.655213085556170, 120979.211834572299267, 120988.768526787913288, 120998.325289727363270, 121007.882123385657906, 121017.439027757834992, 121026.996002838830464, 121036.553048623711220, 121046.110165107456851, 121055.667352285061497, 121065.224610151519300, 121074.781938701853505, 121084.339337931014597, 121093.896807834098581, 121103.454348406041390, 121113.011959641895373, 121122.569641536625568, 121132.127394085240667, 121141.685217282807571, 121151.243111124262214, 121160.801075604686048, 121170.359110718985903, 121179.917216462301440, 121189.475392829539487, 121199.033639815737843, 121208.591957415963407, 121218.150345625181217, 121227.708804438414518, 121237.267333850686555, 121246.825933856991469, 121256.384604452381609, 121265.943345631851116, 121275.502157390394132, 121285.061039723092108, 121294.619992624910083, 121304.179016090900404, 121313.738110116057214, 121323.297274695432861, 121332.856509824021487, 121342.415815496875439, 121351.975191708988859, 121361.534638455414097, 121371.094155731145293, 121380.653743531234795, 121390.213401850676746, 121399.773130684552598, 121409.332930027827388, 121418.892799875611672, 121428.452740222841385, 121438.012751064627082, 121447.572832395904697, 121457.132984211813891, 121466.693206507334253, 121476.253499277445371, 121485.813862517316011, 121495.374296221853001, 121504.934800386166899, 121514.495375005222741, 121524.056020074160188, 121533.616735587929725, 121543.177521541569149, 121552.738377930159913, 121562.299304748725262, 121571.860301992317545, 121581.421369655974559, 121590.982507734734099, 121600.543716223590309, 121610.104995117653743, 121619.666344411976752, 121629.227764101538924, 121638.789254181378055, 121648.350814646633808, 121657.912445492256666, 121667.474146713342634, 121677.035918304944062, 121686.597760262084194, 121696.159672579815378, 121705.721655253204517, 121715.283708277289406, 121724.845831647122395, 121734.408025357770384, 121743.970289404242067, 121753.532623781647999, 121763.095028485025978, 121772.657503509384696, 121782.220048849834711, 121791.782664501413819, 121801.345350459145266, 121810.908106718125055, 121820.470933273434639, 121830.033830120082712, 121839.596797253136174, 121849.159834667705582, 121858.722942358799628, 121868.286120321470662, 121877.849368550814688, 121887.412687041884055, 121896.976075789745664, 121906.539534789437312, 121916.103064036069554, 121925.666663524680189, 121935.230333250350668, 121944.794073208118789, 121954.357883393095108, 121963.921763800317422, 121973.485714424867183, 121983.049735261825845, 121992.613826306202100, 122002.177987553135608, 122011.742218997693271, 122021.306520634898334, 122030.870892459846800, 122040.435334467649227, 122049.999846653343411, 122059.564429012039909, 122069.129081538761966, 122078.693804228591034, 122088.258597076652222, 122097.823460077997879, 122107.388393227724009, 122116.953396520882961, 122126.518469952556188, 122136.083613517839694, 122145.648827211785829, 122155.214111029548803, 122164.779464966122760, 122174.344889016676461, 122183.910383176204050, 122193.475947439845186, 122203.041581802666769, 122212.607286259779357, 122222.173060806278954, 122231.738905437188805, 122241.304820147677674, 122250.870804932797910, 122260.436859787601861, 122270.002984707229189, 122279.569179686746793, 122289.135444721265230, 122298.701779805909609, 122308.268184935674071, 122317.834660105727380, 122327.401205311180092, 122336.967820547084557, 122346.534505808522226, 122356.101261090632761, 122365.668086388497613, 122375.234981697227340, 122384.801947011874290, 122394.368982327578124, 122403.936087639463949, 122413.503262942555011, 122423.070508232034626, 122432.637823502955143, 122442.205208750427119, 122451.772663969590212, 122461.340189155496773, 122470.907784303257358, 122480.475449408040731, 122490.043184464870137, 122499.610989468885236, 122509.178864415225689, 122518.746809298972948, 122528.314824115208467, 122537.882908859101008, 122547.451063525673817, 122557.019288110153866, 122566.587582607564400, 122576.155947013045079, 122585.724381321706460, 122595.292885528688203, 122604.861459629071760, 122614.430103617967688, 122623.998817490515648, 122633.567601241826196, 122643.136454867009888, 122652.705378361206385, 122662.274371719511691, 122671.843434937036363, 122681.412568008905509, 122690.981770930287894, 122700.551043696235865, 122710.120386301889084, 122719.689798742445419, 122729.259281012899010, 122738.828833108476829, 122748.398455024260329, 122757.968146755360067, 122767.537908296944806, 122777.107739644096000, 122786.677640792026068, 122796.247611735758255, 122805.817652470475878, 122815.387762991289492, 122824.957943293367862, 122834.528193371763336, 122844.098513221702888, 122853.668902838238864, 122863.239362216554582, 122872.809891351789702, 122882.380490239011124, 122891.951158873445820, 122901.521897250146139, 122911.092705364309950, 122920.663583211047808, 122930.234530785484822, 122939.805548082789755, 122949.376635098058614, 122958.947791826460161, 122968.519018263163161, 122978.090314403278171, 122987.661680241930299, 122997.233115774259204, 123006.804620995448204, 123016.376195900607854, 123025.947840484906919, 123035.519554743499612, 123045.091338671496487, 123054.663192264022655, 123064.235115516305086, 123073.807108423425234, 123083.379170980566414, 123092.951303182868287, 123102.523505025485065, 123112.095776503527304, 123121.668117612207425, 123131.240528346635983, 123140.813008701967192, 123150.385558673398918, 123159.958178256027168, 123169.530867445020704, 123179.103626235562842, 123188.676454622793244, 123198.249352601895225, 123207.822320167950238, 123217.395357316199807, 123226.968464041725383, 123236.541640339768492, 123246.114886205439689, 123255.688201633893186, 123265.261586620341404, 123274.835041159865796, 123284.408565247707884, 123293.982158878992777, 123303.555822048860136, 123313.129554752493277, 123322.703356985133723, 123332.277228741833824, 123341.851170017805998, 123351.425180808262667, 123360.999261108285282, 123370.573410913086263, 123380.147630217878032, 123389.721919017742039, 123399.296277307890705, 123408.870705083536450, 123418.445202339789830, 123428.019769071863266, 123437.594405274940073, 123447.169110944101703, 123456.743886074647889, 123466.318730661674635, 123475.893644700379809, 123485.468628185961279, 123495.043681113558705, 123504.618803478355403, 123514.193995275563793, 123523.769256500294432, 123533.344587147832499, 123542.919987213288550, 123552.495456691845902, 123562.070995578687871, 123571.646603869041428, 123581.222281558046234, 123590.798028640871053, 123600.373845112728304, 123609.949730968830409, 123619.525686204317026, 123629.101710814386024, 123638.677804794235271, 123648.253968139033532, 123657.830200844007777, 123667.406502904297668, 123676.982874315130175, 123686.559315071703168, 123696.135825169185409, 123705.712404602760216, 123715.289053367640008, 123724.865771459022653, 123734.442558872106019, 123744.019415602029767, 123753.596341644079075, 123763.173336993335397, 123772.750401645142119, 123782.327535594551591, 123791.904738836878096, 123801.482011367232190, 123811.059353180869948, 123820.636764272931032, 123830.214244638729724, 123839.791794273347477, 123849.369413172040367, 123858.947101330049918, 123868.524858742472134, 123878.102685404621297, 123887.680581311607966, 123897.258546458717319, 123906.836580841089017, 123916.414684454008238, 123925.992857292614644, 123935.571099352135207, 123945.149410627811449, 123954.727791114797583, 123964.306240808349685, 123973.884759703636519, 123983.463347795885056, 123993.042005080351373, 124002.620731552204234, 124012.199527206656057, 124021.778392038919264, 124031.357326044220827, 124040.936329217787716, 124050.515401554817799, 124060.094543050523498, 124069.673753700117231, 124079.253033498884179, 124088.832382441978552, 124098.411800524583668, 124107.991287742013810, 124117.570844089408638, 124127.150469562024227, 124136.730164155102102, 124146.309927863825578, 124155.889760683450731, 124165.469662609219085, 124175.049633636284852, 124184.629673759933212, 124194.209782975347480, 124203.789961277769180, 124213.370208662454388, 124222.950525124615524, 124232.530910659465007, 124242.111365262258914, 124251.691888928180560, 124261.272481652529677, 124270.853143430475029, 124280.433874257287243, 124290.014674128164188, 124299.595543038376491, 124309.176480983122019, 124318.757487957671401, 124328.338563957207953, 124337.919708977045957, 124347.500923012339626, 124357.082206058403244, 124366.663558110420126, 124376.244979163646349, 124385.826469213323435, 124395.408028254678356, 124404.989656282952637, 124414.571353293402353, 124424.153119281269028, 124433.734954241779633, 124443.316858170175692, 124452.898831061742385, 124462.480872911663027, 124472.062983715222799, 124481.645163467663224, 124491.227412164211273, 124500.809729800137575, 124510.392116370669100, 124519.974571871061926, 124529.557096296586678, 124539.139689642470330, 124548.722351903983508, 124558.305083076324081, 124567.887883154806332, 124577.470752134642680, 124587.053690011089202, 124596.636696779416525, 124606.219772434880724, 124615.802916972708772, 124625.386130388214951, 124634.969412676582579, 124644.552763833125937, 124654.136183853057446, 124663.719672731662286, 124673.303230464225635, 124682.886857045916258, 124692.470552472062991, 124702.054316737951012, 124711.638149838792742, 124721.222051769873360, 124730.806022526419838, 124740.390062103746459, 124749.974170497109299, 124759.558347701735329, 124769.142593712909729, 124778.726908525874023, 124788.311292135942494, 124797.895744538414874, 124807.480265728430822, 124817.064855701362831, 124826.649514452466974, 124836.234241976999328, 124845.819038270186866, 124855.403903327372973, 124864.988837143784622, 124874.573839714706992, 124884.158911035425263, 124893.744051101210061, 124903.329259907288360, 124912.914537449018098, 124922.499883721597143, 124932.085298720368883, 124941.670782440589392, 124951.256334877485642, 124960.841956026371918, 124970.427645882591605, 124980.013404441313469, 124989.599231697880896, 124999.185127647549962, 125008.771092285605846, 125018.357125607362832, 125027.943227608076995, 125037.529398283033515, 125047.115637627517572, 125056.701945636814344, 125066.288322306209011, 125075.874767630986753, 125085.461281606461853, 125095.047864227861282, 125104.634515490499325, 125114.221235389661160, 125123.808023920690175, 125133.394881078842445, 125142.981806859374046, 125152.568801257570158, 125162.155864268803271, 125171.742995888300356, 125181.330196111375699, 125190.917464933314477, 125200.504802349445526, 125210.092208354995819, 125219.679682945323293, 125229.267226115684025, 125238.854837861392298, 125248.442518177762395, 125258.030267060050392, 125267.618084503599675, 125277.205970503666322, 125286.793925055593718, 125296.381948154667043, 125305.970039796200581, 125315.558199975450407, 125325.146428687803564, 125334.734725928457920, 125344.323091692771413, 125353.911525976058329, 125363.500028773632948, 125373.088600080722244, 125382.677239892756916, 125392.265948204963934, 125401.854725012672134, 125411.443570311166695, 125421.032484095776454, 125430.621466361815692, 125440.210517104569590, 125449.799636319410638, 125459.388824001594912, 125468.978080146451248, 125478.567404749293928, 125488.156797805422684, 125497.746259310151800, 125507.335789258824661, 125516.925387646770105, 125526.515054469215102, 125536.104789721575798, 125545.694593399108271, 125555.284465497155907, 125564.874406011062092, 125574.464414936097455, 125584.054492267605383, 125593.644638000914711, 125603.234852131339721, 125612.825134654180147, 125622.415485564808478, 125632.005904858495342, 125641.596392530584126, 125651.186948576418217, 125660.777572991326451, 125670.368265770594007, 125679.959026909549721, 125689.549856403566082, 125699.140754247971927, 125708.731720438023331, 125718.322754969107336, 125727.913857836538227, 125737.505029035673942, 125747.096268561828765, 125756.687576410302427, 125766.278952576438314, 125775.870397055652575, 125785.461909843172180, 125795.053490934325964, 125804.645140324559179, 125814.236858009098796, 125823.828643983331858, 125833.420498242616304, 125843.012420782237314, 125852.604411597552826, 125862.196470683906227, 125871.788598036626354, 125881.380793651085696, 125890.973057522583986, 125900.565389646479161, 125910.157790018114611, 125919.750258632819168, 125929.342795485979877, 125938.935400572881917, 125948.528073888912331, 125958.120815429399954, 125967.713625189688173, 125977.306503165134927, 125986.899449351069052, 125996.492463742863038, 126006.085546335831168, 126015.678697125345934, 126025.271916106765275, 126034.865203275418025, 126044.458558626676677, 126054.051982155840960, 126063.645473858356127, 126073.239033729507355, 126082.832661764638033, 126092.426357959120651, 126102.020122308342252, 126111.613954807602568, 126121.207855452303193, 126130.801824237787514, 126140.395861159369815, 126149.989966212480795, 126159.584139392463840, 126169.178380694618681, 126178.772690114361467, 126188.367067647035583, 126197.961513287984417, 126207.556027032609563, 126217.150608876225306, 126226.745258814233239, 126236.339976841991302, 126245.934762954857433, 126255.529617148175021, 126265.124539417345659, 126274.719529757712735, 126284.314588164677843, 126293.909714633526164, 126303.504909159717499, 126313.100171738566132, 126322.695502365473658, 126332.290901035783463, 126341.886367744868039, 126351.481902488128981, 126361.077505260909675, 126370.673176058524405, 126380.268914876491181, 126389.864721710036974, 126399.460596554650692, 126409.056539405646618, 126418.652550258397241, 126428.248629108304158, 126437.844775950739859, 126447.440990781018627, 126457.037273594629369, 126466.633624386886368, 126476.230043153191218, 126485.826529888872756, 126495.423084589376231, 126505.019707250015927, 126514.616397866251646, 126524.213156433426775, 126533.809982946884702, 126543.406877402085229, 126553.003839794371743, 126562.600870119116735, 126572.197968371765455, 126581.795134547617636, 126591.392368642103975, 126600.989670650626067, 126610.587040568556404, 126620.184478391282028, 126629.781984114189981, 126639.379557732681860, 126648.977199242159259, 126658.574908637965564, 126668.172685915546026, 126677.770531070229481, 126687.368444097504835, 126696.966424992628163, 126706.564473751146579, 126716.162590368388919, 126725.760774839684018, 126735.359027160520782, 126744.957347326286254, 126754.555735332309268, 126764.154191174078733, 126773.752714846923482, 126783.351306346259662, 126792.949965667517972, 126802.548692806085455, 126812.147487757290946, 126821.746350516681559, 126831.345281079557026, 126840.944279441304388, 126850.543345597383450, 126860.142479543181253, 126869.741681274084840, 126879.340950785524910, 126888.940288072917610, 126898.539693131620879, 126908.139165957094519, 126917.738706544725574, 126927.338314889886533, 126936.937990988051752, 126946.537734834564617, 126956.137546424928587, 126965.737425754443393, 126975.337372818597942, 126984.937387612779276, 126994.537470132388989, 127004.137620372872334, 127013.737838329630904, 127023.338123998051742, 127032.938477373565547, 127042.538898451617570, 127052.139387227580301, 127061.739943696898990, 127071.340567855004338, 127080.941259697254281, 127090.542019219137728, 127100.142846416041721, 127109.743741283396957, 127119.344703816634137, 127128.945734011111199, 127138.546831862317049, 127148.147997365667834, 127157.749230516565149, 127167.350531310439692, 127176.951899742736714, 127186.553335808857810, 127196.154839504248230, 127205.756410824280465, 127215.358049764472526, 127224.959756320153247, 127234.561530486811535, 127244.163372259892640, 127253.765281634798157, 127263.367258606929681, 127272.969303171776119, 127282.571415324724512, 127292.173595061205560, 127301.775842376693618, 127311.378157266619382, 127320.980539726384450, 127330.582989751390414, 127340.185507337155286, 127349.788092479066108, 127359.390745172582683, 127368.993465413092053, 127378.596253196112229, 127388.199108517044806, 127397.802031371291378, 127407.405021754311747, 127417.008079661565716, 127426.611205088513088, 127436.214398030540906, 127445.817658483108971, 127455.420986441662535, 127465.024381901690504, 127474.627844858594472, 127484.231375307776034, 127493.834973244782304, 127503.438638664956670, 127513.042371563817142, 127522.646171936765313, 127532.250039779290091, 127541.853975086793071, 127551.457977854748606, 127561.062048078616499, 127570.666185753842001, 127580.270390875855810, 127589.874663440146833, 127599.479003442116664, 127609.083410877254209, 127618.687885740961065, 127628.292428028784343, 127637.897037736125640, 127647.501714858415653, 127657.106459391114186, 127666.711271329739247, 127676.316150669692433, 127685.921097406462650, 127695.526111535451491, 127705.131193052176968, 127714.736341952069779, 127724.341558230589726, 127733.946841883196612, 127743.552192905379343, 127753.157611292597721, 127762.763097040282446, 127772.368650143893319, 127781.974270598919247, 127791.579958400820033, 127801.185713545026374, 127810.791536027085385, 127820.397425842369557, 127830.003382986396900, 127839.609407454627217, 127849.215499242520309, 127858.821658345565083, 127868.427884759206790, 127878.034178478905233, 127887.640539500163868, 127897.246967818442499, 127906.853463429200929, 127916.460026327898959, 127926.066656510054599, 127935.673353971127653, 127945.280118706548819, 127954.886950711836107, 127964.493849982449319, 127974.100816513848258, 127983.707850301565486, 127993.314951341002597, 128002.922119627692155, 128012.529355157123064, 128022.136657924696920, 128031.744027925960836, 128041.351465156374616, 128050.958969611427165, 128060.566541286578286, 128070.174180177331436, 128079.781886279175524, 128089.389659587526694, 128098.997500097961165, 128108.605407805938739, 128118.213382706890116, 128127.821424796362408, 128137.429534069829970, 128147.037710522723501, 128156.645954150633770, 128166.254264948933269, 128175.862642913169111, 128185.471088038859307, 128195.079600321478210, 128204.688179756456520, 128214.296826339326799, 128223.905540065607056, 128233.514320930757094, 128243.123168930280372, 128252.732084059665794, 128262.341066314387717, 128271.950115689964150, 128281.559232181883999, 128291.168415785679827, 128300.777666496811435, 128310.386984310753178, 128319.996369223023066, 128329.605821229139110, 128339.215340324575664, 128348.824926504850737, 128358.434579765438684, 128368.044300101886620, 128377.654087509639794, 128387.263941984216217, 128396.873863521148451, 128406.483852115925401, 128416.093907764021424, 128425.704030460983631, 128435.314220202257275, 128444.924476983418572, 128454.534800799941877, 128464.145191647345200, 128473.755649521073792, 128483.366174416703871, 128492.976766329738894, 128502.587425255667767, 128512.198151190023054, 128521.808944128279109, 128531.419804065983044, 128541.030730998609215, 128550.641724921690184, 128560.252785830743960, 128569.863913721274002, 128579.475108588798321, 128589.086370428849477, 128598.697699236916378, 128608.309095008502482, 128617.920557739140349, 128627.532087424347992, 128637.143684059687075, 128646.755347640602849, 128656.367078162642429, 128665.978875621338375, 128675.590740012194146, 128685.202671330698649, 128694.814669572457206, 128704.426734732929617, 128714.038866807648446, 128723.651065792117151, 128733.263331681941054, 128742.875664472507196, 128752.488064159464557, 128762.100530738272937, 128771.713064204494003, 128781.325664553631213, 128790.938331781202578, 128800.551065882784314, 128810.163866853836225, 128819.776734689949080, 128829.389669386597234, 128839.002670939356904, 128848.615739343746100, 128858.228874595253728, 128867.842076689470559, 128877.455345621929155, 128887.068681388089317, 128896.682083983556367, 128906.295553403848317, 128915.909089644483174, 128925.522692701008054, 128935.136362568970071, 128944.750099243887234, 128954.363902721263003, 128963.977772996746353, 128973.591710065767984, 128983.205713923933217, 128992.819784566672752, 129002.433921989708324, 129012.048126188383321, 129021.662397158419481, 129031.276734895189293, 129040.891139394385391, 129050.505610651438474, 129060.120148661982967, 129069.734753421478672, 129079.349424925501808, 129088.964163169628591, 129098.578968149377033, 129108.193839860323351, 129117.808778297956451, 129127.423783457881655, 129137.038855335616972, 129146.653993926709518, 129156.269199226706405, 129165.884471231183852, 129175.499809935688972, 129185.115215335739776, 129194.730687426912482, 129204.346226204783306, 129213.961831664870260, 129223.577503802720457, 129233.193242613910115, 129242.809048093986348, 129252.424920238554478, 129262.040859043059754, 129271.656864503151155, 129281.272936614375794, 129290.889075372222578, 129300.505280772325932, 129310.121552810203866, 129319.737891481461702, 129329.354296781632002, 129338.970768706276431, 129348.587307250913000, 129358.203912411176134, 129367.820584182583843, 129377.437322560712346, 129387.054127541137859, 129396.670999119392945, 129406.287937291097478, 129415.904942051740363, 129425.522013396941475, 129435.139151322262478, 129444.756355823279591, 129454.373626895510824, 129463.990964534590603, 129473.608368736022385, 129483.225839495396940, 129492.843376808348694, 129502.460980670381105, 129512.078651077084942, 129521.696388024007319, 129531.314191506753559, 129540.932061520899879, 129550.549998061978840, 129560.168001125610317, 129569.786070707341423, 129579.404206802762928, 129589.022409407436498, 129598.640678516967455, 129608.259014126917464, 129617.877416232862743, 129627.495884830364957, 129637.114419915000326, 129646.733021482388722, 129656.351689528091811, 129665.970424047685810, 129675.589225036761491, 129685.208092490851413, 129694.827026405619108, 129704.446026776597137, 129714.065093599390821, 129723.684226869561826, 129733.303426582715474, 129742.922692734413431, 129752.542025320275570, 129762.161424335878110, 129771.780889776811819, 129781.400421638623811, 129791.020019916933961, 129800.639684607376694, 129810.259415705455467, 129819.879213206804707, 129829.499077106986078, 129839.119007401692215, 129848.739004086368368, 129858.359067156736273, 129867.979196608270286, 129877.599392436663038, 129887.219654637476197, 129896.839983206285979, 129906.460378138697706, 129916.080839430302149, 129925.701367076733732, 129935.321961073554121, 129944.942621416368638, 129954.563348100738949, 129964.184141122357687, 129973.805000476757414, 129983.425926159543451, 129993.046918166321120, 130002.667976492666639, 130012.289101134228986, 130021.910292086584377, 130031.531549345352687, 130041.152872906110133, 130050.774262764491141, 130060.395718916101032, 130070.017241356501472, 130079.638830081326887, 130089.260485086197150, 130098.882206366717583, 130108.503993918493506, 130118.125847737130243, 130127.747767818160355, 130137.369754157334683, 130146.991806750185788, 130156.613925592348096, 130166.236110679397825, 130175.858362006940297, 130185.480679570668144, 130195.103063366099377, 130204.725513388912077, 130214.348029634653358, 130223.970612099030404, 130233.593260777619435, 130243.215975665996666, 130252.838756759825628, 130262.461604054682539, 130272.084517546230927, 130281.707497230076115, 130291.330543101823423, 130300.953655157063622, 130310.576833391489345, 130320.200077800662257, 130329.823388380245888, 130339.446765125816455, 130349.070208033037488, 130358.693717097514309, 130368.317292314823135, 130377.940933680714807, 130387.564641190678230, 130397.188414840406040, 130406.812254625532660, 130416.436160541634308, 130426.060132584403618, 130435.684170749416808, 130445.308275032308302, 130454.932445428741630, 130464.556681934293010, 130474.180984544625971, 130483.805353255374939, 130493.429788062145235, 130503.054288960600388, 130512.678855946374824, 130522.303489015044761, 130531.928188162302831, 130541.552953383754357, 130551.177784675033763, 130560.802682031804579, 130570.427645449672127, 130580.052674924270832, 130589.677770451293327, 130599.302932026286726, 130608.928159644943662, 130618.553453302898561, 130628.178812995785847, 130637.804238719269051, 130647.429730468953494, 130657.055288240473601, 130666.680912029463798, 130676.306601831645821, 130685.932357642566785, 130695.558179457919323, 130705.184067273337860, 130714.810021084485925, 130724.436040886968840, 130734.062126676479238, 130743.688278448622441, 130753.314496199061978, 130762.940779923417722, 130772.567129617382307, 130782.193545276575605, 130791.820026896661147, 130801.446574473273358, 130811.073188002075767, 130820.699867478702799, 130830.326612898817984, 130839.953424258084851, 130849.580301552166929, 130859.207244776611333, 130868.834253927241662, 130878.461328999575926, 130888.088469989321311, 130897.715676892141346, 130907.342949703641352, 130916.970288419543067, 130926.597693035480916, 130936.225163547089323, 130945.852699950075475, 130955.480302240015590, 130965.107970412675058, 130974.735704463600996, 130984.363504388544243, 130993.991370183110121, 131003.619301843005815, 131013.247299363836646, 131022.875362741338904, 131032.503491971088806, 131042.131687048808089, 131051.759947970189387, 131061.388274730823468, 131071.016667326402967, 131080.645125752605963, 131090.273650005110539, 131099.902240079536568, 131109.530895971605787, 131119.159617676952621, 131128.788405191269703, 131138.417258510220563, 131148.046177629439626, 131157.675162544648629, 131167.304213251452893, 131176.933329745603260, 131186.562512022763258, 131196.191760078509105, 131205.821073908620747, 131215.450453508703504, 131225.079898874508217, 131234.709410001698416, 131244.338986885821214, 131253.968629522714764, 131263.598337907984387, 131273.228112037264509, 131282.857951906335074, 131292.487857510772301, 131302.117828846327029, 131311.747865908662789, 131321.377968693443108, 131331.008137196389725, 131340.638371413137065, 131350.268671339319553, 131359.899036970775342, 131369.529468303051544, 131379.159965331869898, 131388.790528052923037, 131398.421156461903593, 131408.051850554475095, 131417.682610326359281, 131427.313435773190577, 131436.944326890690718, 131446.575283674552338, 131456.206306120409863, 131465.837394224043237, 131475.468547981086886, 131485.099767387204338, 131494.731052438146435, 131504.362403129576705, 131513.993819457158679, 131523.625301416643197, 131533.256849003664684, 131542.888462213944877, 131552.520141043205513, 131562.151885487110121, 131571.783695541293127, 131581.415571201563580, 131591.047512463585008, 131600.679519322962733, 131610.311591775534907, 131619.943729816906853, 131629.575933442800306, 131639.208202648907900, 131648.840537430951372, 131658.472937784623355, 131668.105403705587378, 131677.737935189594282, 131687.370532232307596, 131697.003194829478161, 131706.635922976740403, 131716.268716669874266, 131725.901575904485071, 131735.534500676381867, 131745.167490981257288, 131754.800546814745758, 131764.433668172569014, 131774.066855050477898, 131783.700107444194146, 131793.333425349352183, 131802.966808761702850, 131812.600257676967885, 131822.233772090810817, 131831.867351999011589, 131841.500997397233732, 131851.134708281198982, 131860.768484646570869, 131870.402326489158440, 131880.036233804625226, 131889.670206588663859, 131899.304244836996077, 131908.938348545343615, 131918.572517709457316, 131928.206752325000707, 131937.841052387724631, 131947.475417893350823, 131957.109848837571917, 131966.744345216051443, 131976.378907024627551, 131986.013534258963773, 131995.648226914781844, 132005.282984987745294, 132014.917808473692276, 132024.552697368228110, 132034.187651667161845, 132043.822671366186114, 132053.457756460993551, 132063.092906947334995, 132072.728122820932185, 132082.363404077535961, 132091.998750712838955, 132101.634162722533802, 132111.269640102429548, 132120.905182848218828, 132130.540790955565171, 132140.176464420277625, 132149.812203238077927, 132159.448007404687814, 132169.083876915799920, 132178.719811767165083, 132188.355811954534147, 132197.991877473628847, 132207.628008320200024, 132217.264204489911208, 132226.900465978571447, 132236.536792781873373, 132246.173184895596933, 132255.809642315376550, 132265.446165037050378, 132275.082753056311049, 132284.719406368938508, 132294.356124970596284, 132303.992908857064322, 132313.629758024064358, 132323.266672467347234, 132332.903652182692895, 132342.540697165764868, 132352.177807412313996, 132361.814982918149326, 132371.452223678934388, 132381.089529690478230, 132390.726900948502589, 132400.364337448700098, 132410.001839186850702, 132419.639406158734346, 132429.277038360014558, 132438.914735786558595, 132448.552498434000881, 132458.190326298092259, 132467.828219374612672, 132477.466177659342065, 132487.104201148031279, 132496.742289836343843, 132506.380443720117910, 132516.018662795017008, 132525.656947056850186, 132535.295296501368284, 132544.933711124322144, 132554.572190921433503, 132564.210735888511408, 132573.849346021219390, 132583.488021315395599, 132593.126761766761774, 132602.765567371097859, 132612.404438124125591, 132622.043374021566706, 132631.682375059259357, 132641.321441232925281, 132650.960572538315319, 132660.599768971180310, 132670.239030527300201, 132679.878357202454936, 132689.517748992337147, 132699.157205892755883, 132708.796727899432881, 132718.436315008206293, 132728.075967214768752, 132737.715684514871100, 132747.355466904351488, 132756.995314378931653, 132766.635226934362436, 132776.275204566365574, 132785.915247270837426, 132795.555355043441523, 132805.195527879957808, 132814.835765776224434, 132824.476068727875827, 132834.116436730808346, 132843.756869780714624, 132853.397367873403709, 132863.037931004597340, 132872.678559170104563, 132882.319252365705324, 132891.960010587150464, 132901.600833830190822, 132911.241722090664553, 132920.882675364264287, 132930.523693646857282, 132940.164776934107067, 132949.805925221880898, 132959.447138505842304, 132969.088416781916749, 132978.729760045796866, 132988.371168293262599, 132998.012641520093894, 133007.654179722070694, 133017.295782894972945, 133026.937451034609694, 133036.579184136702679, 133046.220982197060948, 133055.862845211464446, 133065.504773175664013, 133075.146766085526906, 133084.788823936745757, 133094.430946725158719, 133104.073134446487529, 133113.715387096628547, 133123.357704671245301, 133133.000087166146841, 133142.642534577200422, 133152.285046900127782, 133161.927624130708864, 133171.570266264752718, 133181.212973298010183, 133190.855745226348517, 133200.498582045489457, 133210.141483751212945, 133219.784450339328032, 133229.427481805672869, 133239.070578145998297, 133248.713739356084261, 133258.356965431768913, 133268.000256368773989, 133277.643612162966747, 133287.287032810098026, 133296.930518305947771, 133306.574068646325031, 133316.217683827067958, 133325.861363843898289, 133335.505108692683280, 133345.148918369173771, 133354.792792869207915, 133364.436732188507449, 133374.080736322968733, 133383.724805268313503, 133393.368939020379912, 133403.013137574977009, 133412.657400927884737, 133422.301729074883042, 133431.946122011839179, 133441.590579734474886, 133451.235102238686522, 133460.879689520195825, 133470.524341574811842, 133480.169058398401830, 133489.813839986716630, 133499.458686335594393, 133509.103597440815065, 133518.748573298187694, 133528.393613903550431, 133538.038719252683222, 133547.683889341395115, 133557.329124165524263, 133566.974423720821505, 133576.619788003154099, 133586.265217008301988, 133595.910710732074222, 133605.556269170308951, 133615.201892318815226, 133624.847580173372990, 133634.493332729820395, 133644.139149983995594, 133653.785031931620324, 133663.430978568649152, 133673.076989890774712, 133682.723065893864259, 133692.369206573755946, 133702.015411926229717, 133711.661681947123725, 133721.308016632217914, 133730.954415977408644, 133740.600879978446756, 133750.247408631170401, 133759.894001931417733, 133769.540659874968696, 133779.187382457690546, 133788.834169675392332, 133798.481021523883101, 133808.127937998971902, 133817.774919096525991, 133827.421964812354418, 133837.069075142266229, 133846.716250082070474, 133856.363489627663512, 133866.010793774796184, 133875.658162519364851, 133885.305595857120352, 133894.953093783929944, 133904.600656295631779, 133914.248283388034906, 133923.895975057006581, 133933.543731298326747, 133943.191552107833559, 133952.839437481365167, 133962.487387414759723, 133972.135401903884485, 133981.783480944519397, 133991.431624532502610, 134001.079832663701382, 134010.728105333924759, 134020.376442539039999, 134030.024844274797942, 134039.673310537153156, 134049.321841321856482, 134058.970436624746071, 134068.619096441689180, 134078.267820768523961, 134087.916609601117671, 134097.565462935221149, 134107.214380766759859, 134116.863363091542851, 134126.512409905379172, 134136.161521204223391, 134145.810696983768139, 134155.459937239938881, 134165.109241968544666, 134174.758611165452749, 134184.408044826530386, 134194.057542947586626, 134203.707105524459621, 134213.356732553016627, 134223.006424029124901, 134232.656179948564386, 134242.306000307231443, 134251.955885100964224, 134261.605834325629985, 134271.255847977037774, 134280.905926051054848, 134290.556068543548463, 134300.206275450356770, 134309.856546767347027, 134319.506882490299176, 134329.157282615167787, 134338.807747137732804, 134348.458276053861482, 134358.108869359421078, 134367.759527050278848, 134377.410249122272944, 134387.061035571270622, 134396.711886393110035, 134406.362801583600231, 134416.013781138695776, 134425.664825054205721, 134435.315933325997321, 134444.967105949908728, 134454.618342921836302, 134464.269644237618195, 134473.921009893092560, 134483.572439884126652, 134493.223934206616832, 134502.875492856401252, 134512.527115829347167, 134522.178803121380042, 134531.830554728221614, 134541.482370645797346, 134551.134250870032702, 134560.786195396736730, 134570.438204221776687, 134580.090277341078036, 134589.742414750391617, 134599.394616445672000, 134609.046882422728231, 134618.699212677485775, 134628.351607205811888, 134638.004066003573826, 134647.656589066580636, 134657.309176390757784, 134666.961827971943421, 134676.614543806033907, 134686.267323888954706, 134695.920168216456659, 134705.573076784494333, 134715.226049588905880, 134724.879086625587661, 134734.532187890436035, 134744.185353379289154, 134753.838583088014275, 134763.491877012507757, 134773.145235148636857, 134782.798657492268831, 134792.452144039329141, 134802.105694785685046, 134811.759309727145592, 134821.412988859665347, 134831.066732179082464, 134840.720539681322407, 134850.374411362194223, 134860.028347217652481, 134869.682347243506229, 134879.336411435710033, 134888.990539790131152, 134898.644732302636839, 134908.298988969094353, 134917.953309785370948, 134927.607694747450296, 134937.262143851112342, 134946.916657092311652, 134956.571234466886381, 134966.225875970732886, 134975.880581599805737, 134985.535351349913981, 134995.190185216924874, 135004.845083196822088, 135014.500045285472879, 135024.155071478715399, 135033.810161772446008, 135043.465316162590170, 135053.120534645044245, 135062.775817215675488, 135072.431163870380260, 135082.086574605054921, 135091.742049415595829, 135101.397588297899347, 135111.053191247832729, 135120.708858261350542, 135130.364589334320044, 135140.020384462637594, 135149.676243642170448, 135159.332166868844070, 135168.988154138554819, 135178.644205447228160, 135188.300320790702244, 135197.956500164902536, 135207.612743565783603, 135217.269050989183597, 135226.925422430998879, 135236.581857887154911, 135246.238357353606261, 135255.894920826161979, 135265.551548300747527, 135275.208239773288369, 135284.864995239739073, 135294.521814695879584, 135304.178698137722677, 135313.835645561135607, 135323.492656962072942, 135333.149732336314628, 135342.806871679873439, 135352.464074988674838, 135362.121342258556979, 135371.778673485474428, 135381.436068665352650, 135391.093527794000693, 135400.751050867460435, 135410.408637881540926, 135420.066288832225837, 135429.724003715411527, 135439.381782526965253, 135449.039625262841582, 135458.697531918907771, 135468.355502491147490, 135478.013536975486204, 135487.671635367732961, 135497.329797663900536, 135506.988023859914392, 135516.646313951554475, 135526.304667934920872, 135535.963085805793526, 135545.621567560156109, 135555.280113193904981, 135564.938722702994710, 135574.597396083321655, 135584.256133330782177, 135593.914934441301739, 135603.573799410864012, 135613.232728235307150, 135622.891720910643926, 135632.550777432741597, 135642.209897797496524, 135651.869082000863273, 135661.528330038825516, 135671.187641907192301, 135680.847017601976404, 135690.506457119103288, 135700.165960454440210, 135709.825527603941737, 135719.485158563591540, 135729.144853329227772, 135738.804611896834103, 135748.464434262335999, 135758.124320421658922, 135767.784270370728336, 135777.444284105498809, 135787.104361621837597, 135796.764502915757475, 135806.424707983154804, 135816.084976819925942, 135825.745309422054561, 135835.405705785466125, 135845.066165906086098, 135854.726689779898152, 135864.387277402740438, 135874.047928770567523, 135883.708643879450392, 135893.369422725139884, 135903.030265303736087, 135912.691171611048048, 135922.352141643059440, 135932.013175395783037, 135941.674272865056992, 135951.335434046835871, 135960.996658937132452, 135970.657947531813988, 135980.319299826864153, 135989.980715818179306, 135999.642195501772221, 136009.303738873539260, 136018.965345929434989, 136028.627016665355768, 136038.288751077343477, 136047.950549161265371, 136057.612410913134227, 136067.274336328817299, 136076.936325404298259, 136086.598378135589883, 136096.260494518501218, 136105.922674549103249, 136115.584918223292334, 136125.247225537023041, 136134.909596486279042, 136144.572031066927593, 136154.234529275039677, 136163.897091106424341, 136173.559716557152569, 136183.222405623178929, 136192.885158300341573, 136202.547974584711483, 136212.210854472185019, 136221.873797958745854, 136231.536805040290346, 136241.199875712831272, 136250.863009972323198, 136260.526207814720692, 136270.189469235949218, 136279.852794231992448, 136289.516182798863156, 136299.179634932399495, 136308.843150628614239, 136318.506729883520165, 136328.170372693013633, 136337.834079053078312, 136347.497848959668772, 136357.161682408768684, 136366.825579396303510, 136376.489539918315131, 136386.153563970641699, 136395.817651549325092, 136405.481802650348982, 136415.146017269667936, 136424.810295403207419, 136434.474637046921998, 136444.139042196853552, 136453.803510848927544, 136463.468042999127647, 136473.132638643379323, 136482.797297777637141, 136492.462020397972083, 136502.126806500251405, 136511.791656080546090, 136521.456569134723395, 136531.121545658825198, 136540.786585648776963, 136550.451689100591466, 136560.116856010223273, 136569.782086373626953, 136579.447380186786177, 136589.112737445742823, 136598.778158146335045, 136608.443642284662928, 136618.109189856622834, 136627.774800858285744, 136637.440475285489811, 136647.106213134335121, 136656.772014400718035, 136666.437879080680432, 136676.103807170176879, 136685.769798665161943, 136695.435853561648401, 136705.101971855619922, 136714.768153543031076, 136724.434398619865533, 136734.100707082136068, 136743.767078925768146, 136753.433514146832749, 136763.100012741226237, 136772.766574704990489, 136782.433200034050969, 136792.099888724449556, 136801.766640772140818, 136811.433456173137529, 136821.100334923394257, 136830.767277018952882, 136840.434282455738867, 136850.101351229735883, 136859.768483337014914, 136869.435678773472318, 136879.102937535149977, 136888.770259618002456, 136898.437645018071635, 136908.105093731282977, 136917.772605753707467, 136927.440181081270566, 136937.107819710014155, 136946.775521635863697, 136956.443286854890175, 136966.111115363019053, 136975.779007156321313, 136985.446962230693316, 136995.114980582264252, 137004.783062206901377, 137014.451207100675674, 137024.119415259570815, 137033.787686679512262, 137043.456021356658312, 137053.124419286847115, 137062.792880466149654, 137072.461404890578706, 137082.129992556088837, 137091.798643458721926, 137101.467357594461646, 137111.136134959291667, 137120.804975549282972, 137130.473879360361025, 137140.142846388538601, 137149.811876629857579, 137159.480970080301631, 137169.150126735912636, 137178.819346592616057, 137188.488629646511981, 137198.157975893496769, 137207.827385329641402, 137217.496857951016864, 137227.166393753490411, 137236.835992733191233, 137246.505654886044795, 137256.175380208151182, 137265.845168695435859, 137275.515020343911601, 137285.184935149678495, 137294.854913108632900, 137304.524954216845799, 137314.195058470329968, 137323.865225865127286, 137333.535456397192320, 137343.205750062566949, 137352.876106857234845, 137362.546526777237887, 137372.217009818647057, 137381.887555977416923, 137391.558165249502053, 137401.228837631031638, 137410.899573117960244, 137420.570371706358856, 137430.241233392182039, 137439.912158171471674, 137449.583146040298743, 137459.254196994588710, 137468.925311030441662, 137478.596488143841270, 137488.267728330800310, 137497.939031587389763, 137507.610397909535095, 137517.281827293394599, 137526.953319734922843, 137536.624875230074394, 137546.296493775007548, 137555.968175365647767, 137565.639919998036930, 137575.311727668246021, 137584.983598372258712, 137594.655532106116880, 137604.327528865862405, 137613.999588647478959, 137623.671711447066627, 137633.343897260579979, 137643.016146084089996, 137652.688457913609454, 137662.360832745180232, 137672.033270574815106, 137681.705771398585057, 137691.378335212473758, 137701.050962012552191, 137710.723651794891339, 137720.396404555358458, 137730.069220290170051, 137739.742098995309789, 137749.415040666761342, 137759.088045300595695, 137768.761112892854726, 137778.434243439522106, 137788.107436936727026, 137797.780693380453158, 137807.454012766742380, 137817.127395091636572, 137826.800840351148508, 137836.474348541378276, 137846.147919658309547, 137855.821553697984200, 137865.495250656502321, 137875.169010529847583, 137884.842833314061863, 137894.516719005245250, 137904.190667599381413, 137913.864679092512233, 137923.538753480737796, 137933.212890760041773, 137942.887090926524252, 137952.561353976139799, 137962.235679905075813, 137971.910068709228653, 137981.584520384756615, 137991.259034927643370, 138000.933612333989004, 138010.608252599777188, 138020.282955721108010, 138029.957721694023348, 138039.632550514565082, 138049.307442178775091, 138058.982396682724357, 138068.657414022396551, 138078.332494193949969, 138088.007637193397386, 138097.682843016780680, 138107.358111660112627, 138117.033443119522417, 138126.708837391022826, 138136.384294470655732, 138146.059814354521222, 138155.735397038661176, 138165.411042519059265, 138175.086750791902887, 138184.762521853146609, 138194.438355698919622, 138204.114252325176494, 138213.790211728075519, 138223.466233903658576, 138233.142318847996648, 138242.818466557044303, 138252.494677027018042, 138262.170950253872434, 138271.847286233649356, 138281.523684962536208, 138291.200146436516661, 138300.876670651603490, 138310.553257603954989, 138320.229907289583934, 138329.906619704590412, 138339.583394844987197, 138349.260232706874376, 138358.937133286322933, 138368.614096579374745, 138378.291122582129901, 138387.968211290630279, 138397.645362700946862, 138407.322576809179736, 138416.999853611341678, 138426.677193103532773, 138436.354595281824004, 138446.032060142315459, 138455.709587681019912, 138465.387177894037450, 138475.064830777468160, 138484.742546327324817, 138494.420324539736612, 138504.098165410716319, 138513.776068936393131, 138523.454035112838028, 138533.132063936121995, 138542.810155402286910, 138552.488309507432859, 138562.166526247659931, 138571.844805618980899, 138581.523147617524955, 138591.201552239363082, 138600.880019480595365, 138610.558549337234581, 138620.237141805409919, 138629.915796881192364, 138639.594514560682001, 138649.273294839920709, 138658.952137715037679, 138668.631043182045687, 138678.310011237073923, 138687.989041876222473, 138697.668135095562320, 138707.347290891164448, 138717.026509259070735, 138726.705790195439477, 138736.385133696341654, 138746.064539757848252, 138755.744008376001148, 138765.423539546958636, 138775.103133266791701, 138784.782789531600429, 138794.462508337426698, 138804.142289680370595, 138813.822133556532208, 138823.502039962040726, 138833.182008892938029, 138842.862040345324203, 138852.542134315328440, 138862.222290798934409, 138871.902509792358615, 138881.582791291613830, 138891.263135292829247, 138900.943541792134056, 138910.624010785511928, 138920.304542269150261, 138929.985136239149142, 138939.665792691550450, 138949.346511622483376, 138959.027293028018903, 138968.708136904257117, 138978.389043247356312, 138988.070012053358369, 138997.751043318363372, 139007.432137038471410, 139017.113293209811673, 139026.794511828396935, 139036.475792890472803, 139046.157136392022949, 139055.838542329205666, 139065.520010698091937, 139075.201541494781850, 139084.883134715375490, 139094.564790356031153, 139104.246508412790718, 139113.928288881812477, 139123.610131759167416, 139133.292037040955620, 139142.974004723277176, 139152.656034802290378, 139162.338127274037106, 139172.020282134675654, 139181.702499380277004, 139191.384779006970348, 139201.067121010855772, 139210.749525388004258, 139220.431992134632310, 139230.114521246752702, 139239.797112720523728, 139249.479766552045476, 139259.162482737418031, 139268.845261272741482, 139278.528102154174121, 139288.211005377786933, 139297.893970939709106, 139307.576998836040730, 139317.260089062940096, 139326.943241616478190, 139336.626456492813304, 139346.309733688016422, 139355.993073198216734, 139365.676475019514328, 139375.359939148096601, 139385.043465580005432, 139394.727054311370011, 139404.410705338348635, 139414.094418657070491, 139423.778194263577461, 139433.462032154056942, 139443.145932324638125, 139452.829894771333784, 139462.513919490389526, 139472.198006477905437, 139481.882155729952501, 139491.566367242718115, 139501.250641012273263, 139510.934977034776239, 139520.619375306327129, 139530.303835823084228, 139539.988358581089415, 139549.672943576588295, 139559.357590805593645, 139569.042300264321966, 139578.727071948902449, 139588.411905855376972, 139598.096801979962038, 139607.781760318728629, 139617.466780867835041, 139627.151863623410463, 139636.837008581584087, 139646.522215738455998, 139656.207485090213595, 139665.892816632927861, 139675.578210362786194, 139685.263666275888681, 139694.949184368364513, 139704.634764636401087, 139714.320407076098491, 139724.006111683527706, 139733.691878454934340, 139743.377707386389375, 139753.063598474051105, 139762.749551714048721, 139772.435567102482310, 139782.121644635568373, 139791.807784309406998, 139801.493986120098270, 139811.180250063829590, 139820.866576136730146, 139830.552964334929129, 139840.239414654555731, 139849.925927091826452, 139859.612501642783172, 139869.299138303642394, 139878.985837070504203, 139888.672597939526895, 139898.359420906810556, 139908.046305968600791, 139917.733253120968584, 139927.420262360043125, 139937.107333682011813, 139946.794467083003838, 139956.481662559177494, 139966.168920106691075, 139975.856239721644670, 139985.543621400196571, 139995.231065138563281, 140004.918570932786679, 140014.606138779112371, 140024.293768673640443, 140033.981460612500086, 140043.669214591907803, 140053.357030607963679, 140063.044908656855114, 140072.732848734711297, 140082.420850837661419, 140092.108914961892879, 140101.797041103563970, 140111.485229258832987, 140121.173479423800018, 140130.861791594652459, 140140.550165767577710, 140150.238601938675856, 140159.927100104163401, 140169.615660260169534, 140179.304282402852550, 140188.992966528341640, 140198.681712632824201, 140208.370520712458529, 140218.059390763373813, 140227.748322781815659, 140237.437316763825947, 140247.126372705650283, 140256.815490603417857, 140266.504670453316066, 140276.193912251474103, 140285.883215994079364, 140295.572581677261041, 140305.262009297235636, 140314.951498850103235, 140324.641050332080340, 140334.330663739296142, 140344.020339067938039, 140353.710076314193429, 140363.399875474191504, 140373.089736544090556, 140382.779659520107089, 140392.469644398341188, 140402.159691175038461, 140411.849799846298993, 140421.539970408339286, 140431.230202857346740, 140440.920497189392336, 140450.610853400750784, 140460.301271487522172, 140469.991751445952104, 140479.682293272140669, 140489.372896962304367, 140499.063562512601493, 140508.754289919190342, 140518.445079178258311, 140528.135930286021903, 140537.826843238610309, 140547.517818032181822, 140557.208854662952945, 140566.899953127081972, 140576.591113420727197, 140586.282335540076019, 140595.973619481344940, 140605.664965240663150, 140615.356372814247152, 140625.047842198255239, 140634.739373388874810, 140644.430966382264160, 140654.122621174639789, 140663.814337762159994, 140673.506116140983067, 140683.197956307383720, 140692.889858257403830, 140702.581821987376316, 140712.273847493343055, 140721.965934771578759, 140731.658083818270825, 140741.350294629548443, 140751.042567201628117, 140760.734901530697243, 140770.427297612943221, 140780.119755444553448, 140789.812275021715323, 140799.504856340587139, 140809.197499397414504, 140818.890204188326607, 140828.582970709539950, 140838.275798957271036, 140847.968688927649055, 140857.661640616919613, 140867.354654021211900, 140877.047729136800626, 140886.740865959844086, 140896.434064486471470, 140906.127324712957488, 140915.820646635489538, 140925.514030250225915, 140935.207475553354016, 140944.900982541119447, 140954.594551209651399, 140964.288181555195479, 140973.981873573909979, 140983.675627262069611, 140993.369442615774460, 141003.063319631328341, 141012.757258304802235, 141022.451258632470854, 141032.145320610521594, 141041.839444235141855, 141051.533629502548138, 141061.227876408927841, 141070.922184950497467, 141080.616555123473518, 141090.310986924014287, 141100.005480348336278, 141109.700035392626887, 141119.394652053160826, 141129.089330326067284, 141138.784070207562763, 141148.478871693863766, 141158.173734781215899, 141167.868659465748351, 141177.563645743677625, 141187.258693611278431, 141196.953803064679960, 141206.648974100156920, 141216.344206713896710, 141226.039500902057625, 141235.734856660914375, 141245.430273986625252, 141255.125752875406761, 141264.821293323533610, 141274.516895327134989, 141284.212558882456506, 141293.908283985743765, 141303.604070633155061, 141313.299918820906896, 141322.995828545215772, 141332.691799802327296, 141342.387832588399760, 141352.083926899766084, 141361.780082732497249, 141371.476300082838861, 141381.172578947094735, 141390.868919321394060, 141400.565321201982442, 141410.261784585105488, 141419.958309466921492, 141429.654895843676059, 141439.351543711614795, 141449.048253066895995, 141458.745023905823473, 141468.441856224555522, 141478.138750019337749, 141487.835705286328448, 141497.532722021860536, 141507.229800222063204, 141516.926939883211162, 141526.624141001520911, 141536.321403573150747, 141546.018727594433585, 141555.716113061498618, 141565.413559970620554, 141575.111068318015896, 141584.808638099901145, 141594.506269312521908, 141604.203961952036479, 141613.901716014777776, 141623.599531496962300, 141633.297408394719241, 141642.995346704294207, 141652.693346422020113, 141662.391407544055255, 141672.089530066645239, 141681.787713985977462, 141691.485959298326634, 141701.184265999938361, 141710.882634087000042, 141720.581063555757282, 141730.279554402455688, 141739.978106623340864, 141749.676720214600209, 141759.375395172537537, 141769.074131493311143, 141778.772929173166631, 141788.471788208378712, 141798.170708595222095, 141807.869690329825971, 141817.568733408465050, 141827.267837827384938, 141836.967003582860343, 141846.666230671078665, 141856.365519088314613, 141866.064868830755586, 141875.764279894676292, 141885.463752276351443, 141895.163285971968435, 141904.862880977772875, 141914.562537290010368, 141924.262254904984729, 141933.962033818854252, 141943.661874027864542, 141953.361775528290309, 141963.061738316377159, 141972.761762388370698, 141982.461847740516532, 141992.161994369031163, 142001.862202270189300, 142011.562471440207446, 142021.262801875360310, 142030.963193571893498, 142040.663646526023513, 142050.364160734054167, 142060.064736192172859, 142069.765372896654299, 142079.466070843773196, 142089.166830029746052, 142098.867650450818473, 142108.568532103236066, 142118.269474983302644, 142127.970479087205604, 142137.671544411248760, 142147.372670951619511, 142157.073858704679878, 142166.775107666588156, 142176.476417833619053, 142186.177789202018175, 142195.879221768060233, 142205.580715528019937, 142215.282270478113787, 142224.983886614616495, 142234.685563933773665, 142244.387302431860007, 142254.089102105121128, 142263.790962949773530, 142273.492884962150129, 142283.194868138467427, 142292.896912475029239, 142302.599017968022963, 142312.301184613752412, 142322.003412408492295, 142331.705701348430011, 142341.408051429927582, 142351.110462649172405, 142360.812935002497397, 142370.515468486089958, 142380.218063096224796, 142389.920718829234829, 142399.623435681278352, 142409.326213648717385, 142419.029052727797534, 142428.731952914706198, 142438.434914205805399, 142448.137936597340740, 142457.841020085499622, 142467.544164666644065, 142477.247370336990571, 142486.950637092872057, 142496.653964930446818, 142506.357353846105980, 142516.060803836036939, 142525.764314896543510, 142535.467887023871299, 142545.171520214353222, 142554.875214464176679, 142564.578969769645482, 142574.282786127063446, 142583.986663532676175, 142593.690601982729277, 142603.394601473555667, 142613.098662001400953, 142622.802783562539844, 142632.506966153247049, 142642.211209769768175, 142651.915514408436138, 142661.619880065525649, 142671.324306737224106, 142681.028794419922633, 142690.733343109837733, 142700.437952803273220, 142710.142623496474698, 142719.847355185775086, 142729.552147867390886, 142739.257001537655015, 142748.961916192813078, 142758.666891829139786, 142768.371928442997159, 142778.077026030514389, 142787.782184588111704, 142797.487404112034710, 142807.192684598558117, 142816.898026043927530, 142826.603428444504971, 142836.308891796506941, 142846.014416096266359, 142855.720001340028830, 142865.425647524127271, 142875.131354644807288, 142884.837122698372696, 142894.542951681098202, 142904.248841589316726, 142913.954792419244768, 142923.660804167186143, 142933.366876829502871, 142943.073010402411455, 142952.779204882244812, 142962.485460265219444, 142972.191776547697373, 142981.898153725982411, 142991.604591796320165, 143001.311090755014447, 143011.017650598369073, 143020.724271322658751, 143030.430952924216399, 143040.137695399287622, 143049.844498744205339, 143059.551362955244258, 143069.258288028679090, 143078.965273960842751, 143088.672320748009952, 143098.379428386513609, 143108.086596872628434, 143117.793826202600030, 143127.501116372819524, 143137.208467379532522, 143146.915879219042836, 143156.623351887654280, 143166.330885381670669, 143176.038479697395815, 143185.746134831104428, 143195.453850779100321, 143205.161627537745517, 143214.869465103256516, 143224.577363472024444, 143234.285322640236700, 143243.993342604313511, 143253.701423360529589, 143263.409564905130537, 143273.117767234478379, 143282.826030344876926, 143292.534354232629994, 143302.242738893983187, 143311.951184325327631, 143321.659690522908932, 143331.368257483089110, 143341.076885202113772, 143350.785573676344939, 143360.494322902115528, 143370.203132875612937, 143379.912003593257396, 143389.620935051352717, 143399.329927246144507, 143409.038980174023891, 143418.748093831207370, 143428.457268214115174, 143438.166503318992909, 143447.875799142144388, 143457.585155679931631, 143467.294572928629350, 143477.004050884599565, 143486.713589544087881, 143496.423188903485425, 143506.132848959037801, 143515.842569707107032, 143525.552351143967826, 143535.262193265982205, 143544.972096069424879, 143554.682059550657868, 143564.392083705984987, 143574.102168531710049, 143583.812314024195075, 143593.522520179656567, 143603.232786994572962, 143612.943114465102553, 143622.653502587694675, 143632.363951358594932, 143642.074460774136242, 143651.785030830651522, 143661.495661524502793, 143671.206352851935662, 143680.917104809341254, 143690.627917392994277, 143700.338790599285858, 143710.049724424432497, 143719.760718864854425, 143729.471773916826351, 143739.182889576739399, 143748.894065840839176, 143758.605302705487702, 143768.316600167047000, 143778.027958221791778, 143787.739376866113162, 143797.450856096227653, 143807.162395908613689, 143816.873996299429564, 143826.585657265211921, 143836.297378802119056, 143846.009160906542093, 143855.721003574813949, 143865.432906803296646, 143875.144870588235790, 143884.856894926080713, 143894.568979813077021, 143904.281125245615840, 143913.993331219971878, 143923.705597732565366, 143933.417924779612804, 143943.130312357563525, 143952.842760462663136, 143962.555269091331866, 143972.267838239844423, 143981.980467904562829, 143991.693158081820002, 144001.405908767948858, 144011.118719959340524, 144020.831591652211500, 144030.544523843040224, 144040.257516528101405, 144049.970569703757064, 144059.683683366281912, 144069.396857512096176, 144079.110092137503671, 144088.823387238866417, 144098.536742812517332, 144108.250158854818437, 144117.963635362044442, 144127.677172330673784, 144137.390769756864756, 144147.104427637124900, 144156.818145967758028, 144166.531924745038850, 144176.245763965416700, 144185.959663625137182, 144195.673623720678734, 144205.387644248228753, 144215.101725204265676, 144224.815866585035110, 144234.530068387015490, 144244.244330606394215, 144253.958653239678824, 144263.673036283144029, 144273.387479733093642, 144283.101983585976996, 144292.816547838068800, 144302.531172485789284, 144312.245857525413157, 144321.960602953360649, 144331.675408765935572, 144341.390274959558155, 144351.105201530532213, 144360.820188475161558, 144370.535235789895523, 144380.250343471037922, 144389.965511515008984, 144399.680739918054314, 144409.396028676652350, 144419.111377787077799, 144428.826787245692685, 144438.542257048917236, 144448.257787192997057, 144457.973377674439689, 144467.689028489461634, 144477.404739634541329, 144487.120511105982587, 144496.836342900118325, 144506.552235013368772, 144516.268187442037743, 144525.984200182545464, 144535.700273231195752, 144545.416406584437937, 144555.132600238575833, 144564.848854189942358, 144574.565168434957741, 144584.281542969954899, 144593.997977791295853, 144603.714472895400831, 144613.431028278602753, 144623.147643937234534, 144632.864319867716404, 144642.581056066381279, 144652.297852529620286, 144662.014709253737237, 144671.731626235210570, 144681.448603470285889, 144691.165640955470735, 144700.882738687068922, 144710.599896661384264, 144720.317114874866093, 144730.034393323876429, 144739.751732004806399, 144749.469130913988920, 144759.186590047786012, 144768.904109402617905, 144778.621688974817516, 144788.339328760775970, 144798.057028756884392, 144807.774788959475700, 144817.492609364970122, 144827.210489969758783, 144836.928430770087289, 144846.646431762521388, 144856.364492943306686, 144866.082614308863413, 144875.800795855553588, 144885.519037579768337, 144895.237339477898786, 144904.955701546336059, 144914.674123781383969, 144924.392606179491850, 144934.111148737050826, 144943.829751450364711, 144953.548414315911941, 144963.267137329996331, 144972.985920489038108, 144982.704763789399294, 144992.423667227500118, 145002.142630799702602, 145011.861654502368765, 145021.580738331889734, 145031.299882284685737, 145041.019086357118795, 145050.738350545550929, 145060.457674846431473, 145070.177059256093344, 145079.896503770927666, 145089.616008387325564, 145099.335573101736372, 145109.055197910434799, 145118.774882809899282, 145128.494627796491841, 145138.214432866574498, 145147.934298016596586, 145157.654223242920125, 145167.374208541907137, 145177.094253909977851, 145186.814359343552496, 145196.534524838905782, 145206.254750392574351, 145215.975036000920227, 145225.695381660247222, 145235.415787367062876, 145245.136253117700107, 145254.856778908520937, 145264.577364736003801, 145274.298010596510721, 145284.018716486432822, 145293.739482402161229, 145303.460308340087067, 145313.181194296601461, 145322.902140268153744, 145332.623146251105936, 145342.344212241849164, 145352.065338236774551, 145361.786524232331431, 145371.507770224881824, 145381.229076210787753, 145390.950442186527653, 145400.671868148492649, 145410.393354093044763, 145420.114900016604224, 145429.836505915591260, 145439.558171786367893, 145449.279897625354351, 145459.001683428999968, 145468.723529193637660, 145478.445434915716760, 145488.167400591628393, 145497.889426217792789, 145507.611511790571967, 145517.333657306415262, 145527.055862761742901, 145536.778128152946010, 145546.500453476386610, 145556.222838728543138, 145565.945283905777615, 145575.667789004568476, 145585.390354021190433, 145595.112978952151025, 145604.835663793899585, 145614.558408542710822, 145624.281213195150485, 145634.004077747522388, 145643.727002196275862, 145653.449986537802033, 145663.173030768579338, 145672.896134884969797, 145682.619298883393640, 145692.342522760212887, 145702.065806511935079, 145711.789150134922238, 145721.512553625594592, 145731.236016980401473, 145740.959540195704903, 145750.683123267954215, 145760.406766193569638, 145770.130468968971400, 145779.854231590579730, 145789.578054054756649, 145799.301936357980594, 145809.025878496700898, 145818.749880467250478, 145828.473942266107770, 145838.198063889634795, 145847.922245334368199, 145857.646486596640898, 145867.370787672873121, 145877.095148559485096, 145886.819569252955262, 145896.544049749703845, 145906.268590046063764, 145915.993190138513455, 145925.717850023531355, 145935.442569697479485, 145945.167349156807177, 145954.892188397905556, 145964.617087417223956, 145974.342046211211709, 145984.067064776289044, 145993.792143108847085, 146003.517281205306062, 146013.242479062173516, 146022.967736675811466, 146032.693054042698350, 146042.418431159196189, 146052.143868021783419, 146061.869364626909373, 146071.594920970936073, 146081.320537050371058, 146091.046212861576350, 146100.771948401030386, 146110.497743665153394, 146120.223598650394706, 146129.949513353174552, 146139.675487769884057, 146149.401521897030761, 146159.127615731005790, 146168.853769268287579, 146178.579982505238149, 146188.306255438306835, 146198.032588064001175, 146207.758980378741398, 146217.485432378918631, 146227.211944060982205, 146236.938515421381453, 146246.665146456565708, 146256.391837162926095, 146266.118587536970153, 146275.845397575118113, 146285.572267273731995, 146295.299196629377548, 146305.026185638445895, 146314.753234297328163, 146324.480342602531891, 146334.207510550477309, 146343.934738137584645, 146353.662025360332336, 146363.389372215140611, 146373.116778698487906, 146382.844244806794450, 146392.571770536480471, 146402.299355883995304, 146412.027000845846487, 146421.754705418425146, 146431.482469598238822, 146441.210293381620431, 146450.938176765106618, 146460.666119745117612, 146470.394122318102745, 146480.122184480569558, 146489.850306228880072, 146499.578487559512723, 146509.306728468916845, 146519.035028953541769, 146528.763389009895036, 146538.491808634338668, 146548.220287823380204, 146557.948826573468978, 146567.677424880996114, 146577.406082742498256, 146587.134800154395634, 146596.863577113137580, 146606.592413615202531, 146616.321309656981612, 146626.050265235040570, 146635.779280345683219, 146645.508354985504411, 146655.237489150895271, 146664.966682838305132, 146674.695936044270638, 146684.425248765124707, 146694.154620997433085, 146703.884052737586899, 146713.613543982064584, 146723.343094727344578, 146733.072704969847109, 146742.802374706108822, 146752.532103932520840, 146762.261892645532498, 146771.991740841651335, 146781.721648517326685, 146791.451615669036983, 146801.181642293202458, 146810.911728386330651, 146820.641873944841791, 146830.372078965243418, 146840.102343443984864, 146849.832667377486359, 146859.563050762255443, 146869.293493594799656, 146879.023995871510124, 146888.754557588894386, 146898.485178743430879, 146908.215859331539832, 146917.946599349728785, 146927.677398794417968, 146937.408257662114920, 146947.139175949327182, 146956.870153652445879, 146966.601190767978551, 146976.332287292403635, 146986.063443222170463, 146995.794658553786576, 147005.525933283672202, 147015.257267408334883, 147024.988660924194846, 147034.720113827788737, 147044.451626115594991, 147054.183197784062941, 147063.914828829671023, 147073.646519248868572, 147083.378269038134022, 147093.110078194004018, 147102.841946712869685, 147112.573874591238564, 147122.305861825618194, 147132.037908412457909, 147141.770014348236145, 147151.502179629460443, 147161.234404252521927, 147170.966688214015448, 147180.699031510361237, 147190.431434138008626, 147200.163896093494259, 147209.896417373296572, 147219.628997973835794, 147229.361637891677674, 147239.094337123242440, 147248.827095665008528, 147258.559913513454376, 147268.292790665145731, 147278.025727116473718, 147287.758722863974981, 147297.491777904127957, 147307.224892233352875, 147316.958065848244587, 147326.691298745194217, 147336.424590920738410, 147346.157942371355603, 147355.891353093495127, 147365.624823083693627, 147375.358352338458644, 147385.091940854181303, 147394.825588627427351, 147404.559295654675225, 147414.293061932403361, 147424.026887457061093, 147433.760772225214168, 147443.494716233282816, 147453.228719477832783, 147462.962781955313403, 147472.696903662232216, 147482.431084595038556, 147492.165324750298169, 147501.899624124402180, 147511.633982713945443, 147521.368400515377289, 147531.102877525147051, 147540.837413739820477, 147550.572009155905107, 147560.306663769821171, 147570.041377578105312, 147579.776150577265071, 147589.510982763778884, 147599.245874134125188, 147608.980824684840627, 147618.715834412403638, 147628.450903313292656, 147638.186031384073431, 147647.921218621195294, 147657.656465021136682, 147667.391770580434240, 147677.127135295566404, 147686.862559163040714, 147696.598042179393815, 147706.333584341075039, 147716.069185644621029, 147725.804846086510224, 147735.540565663250163, 147745.276344371348387, 147755.012182207312435, 147764.748079167678952, 147774.484035248897271, 147784.220050447474932, 147793.956124759948580, 147803.692258182796650, 147813.428450712584890, 147823.164702345704427, 147832.901013078779215, 147842.637382908287691, 147852.373811830679188, 147862.110299842519453, 147871.846846940316027, 147881.583453120547347, 147891.320118379750056, 147901.056842714373488, 147910.793626121041598, 147920.530468596174615, 147930.267370136280078, 147940.004330737952841, 147949.741350397613132, 147959.478429111797595, 147969.215566877071979, 147978.952763689885614, 147988.690019546775147, 147998.427334444248118, 148008.164708378841169, 148017.902141347032739, 148027.639633345388575, 148037.377184370387113, 148047.114794418535894, 148056.852463486371562, 148066.590191570430761, 148076.327978667162824, 148086.065824773162603, 148095.803729884908535, 148105.541693998937262, 148115.279717111756327, 148125.017799219873268, 148134.755940319795627, 148144.494140408089152, 148154.232399481261382, 148163.970717535819858, 148173.709094568301225, 148183.447530575213023, 148193.186025553062791, 148202.924579498416279, 148212.663192407751922, 148222.401864277635468, 148232.140595104516251, 148241.879384885076433, 148251.618233615648933, 148261.357141292886809, 148271.096107913239393, 148280.835133473272435, 148290.574217969522579, 148300.313361398497364, 148310.052563756704330, 148319.791825040738331, 148329.531145247077802, 148339.270524372201180, 148349.009962412732420, 148358.749459365149960, 148368.489015226019546, 148378.228629991819616, 148387.968303659115918, 148397.708036224445095, 148407.447827684343792, 148417.187678035261342, 148426.927587273821700, 148436.667555396532407, 148446.407582399901003, 148456.147668280493235, 148465.887813034816645, 148475.628016659466084, 148485.368279150861781, 148495.108600505656796, 148504.848980720329564, 148514.589419791416731, 148524.329917715454940, 148534.070474489009939, 148543.811090108589269, 148553.551764570700470, 148563.292497871938394, 148573.033290008810582, 148582.774140977853676, 148592.515050775662530, 148602.256019398657372, 148611.997046843520366, 148621.738133106671739, 148631.479278184764553, 148641.220482074248139, 148650.961744771688245, 148660.703066273621516, 148670.444446576613700, 148680.185885677201441, 148689.927383571921382, 148699.668940257310169, 148709.410555729904445, 148719.152229986269958, 148728.893963022943353, 148738.635754836519482, 148748.377605423447676, 148758.119514780322788, 148767.861482903710566, 148777.603509790118551, 148787.345595436083386, 148797.087739838199923, 148806.829942993033910, 148816.572204897092888, 148826.314525546884397, 148836.056904939032393, 148845.799343070044415, 148855.541839936486213, 148865.284395534894429, 148875.027009861863917, 148884.769682913873112, 148894.512414687545970, 148904.255205179360928, 148913.998054385941941, 148923.740962303796550, 148933.483928929519607, 148943.226954259589547, 148952.970038290630328, 148962.713181019178592, 148972.456382441800088, 148982.199642555002356, 148991.942961355409352, 149001.686338839499513, 149011.429775003896793, 149021.173269845108734, 149030.916823359701084, 149040.660435544326901, 149050.404106395377312, 149060.147835909534479, 149069.891624083305942, 149079.635470913257450, 149089.379376395983854, 149099.123340527992696, 149108.867363305907929, 149118.611444726207992, 149128.355584785516839, 149138.099783480342012, 149147.844040807336569, 149157.588356762978947, 149167.332731343863998, 149177.077164546557469, 149186.821656367596006, 149196.566206803545356, 149206.310815851000370, 149216.055483506526798, 149225.800209766719490, 149235.544994628056884, 149245.289838087133830, 149255.034740140574286, 149264.779700784856686, 149274.524720016604988, 149284.269797832414042, 149294.014934228820493, 149303.760129202331882, 149313.505382749630371, 149323.250694867165294, 149332.996065551618813, 149342.741494799498469, 149352.486982607399113, 149362.232528971857391, 149371.978133889468154, 149381.723797356797149, 149391.469519370468333, 149401.215299926989246, 149410.961139022896532, 149420.707036654872354, 149430.452992819395149, 149440.199007513147080, 149449.945080732577480, 149459.691212474339409, 149469.437402734969510, 149479.183651511091739, 149488.929958799242740, 149498.676324595988262, 149508.422748897952260, 149518.169231701671379, 149527.915773003769573, 149537.662372800783487, 149547.409031089278869, 149557.155747865850572, 149566.902523127093446, 149576.649356869573239, 149586.396249089913908, 149596.143199784593889, 149605.890208950324450, 149615.637276583584026, 149625.384402680996573, 149635.131587239127839, 149644.878830254601780, 149654.626131723925937, 149664.373491643724265, 149674.120910010649823, 149683.868386821181048, 149693.615922071912792, 149703.363515759498114, 149713.111167880473658, 149722.858878431492485, 149732.606647409003926, 149742.354474809690146, 149752.102360630116891, 149761.850304866908118, 149771.598307516600471, 149781.346368575788802, 149791.094488041097065, 149800.842665909091011, 149810.590902176365489, 149820.339196839515353, 149830.087549895077245, 149839.835961339704227, 149849.584431169991149, 149859.332959382474655, 149869.081545973778702, 149878.830190940498142, 149888.578894279286033, 149898.327655986591708, 149908.076476059126435, 149917.825354493426858, 149927.574291286146035, 149937.323286433762405, 149947.072339933016337, 149956.821451780386269, 149966.570621972583467, 149976.319850506057264, 149986.069137377518928, 149995.818482583505102, 150005.567886120668845, 150015.317347985575907, 150025.066868174821138, 150034.816446684999391, 150044.566083512705518, 150054.315778654592577, 150064.065532107139006, 150073.815343867056072, 150083.565213930967730, 150093.315142295352416, 150103.065128956921399, 150112.815173912211321, 150122.565277157875244, 150132.315438690420706, 150142.065658506558975, 150151.815936602855800, 150161.566272975876927, 150171.316667622304522, 150181.067120538646122, 150190.817631721612997, 150200.568201167712687, 150210.318828873598250, 150220.069514835893642, 150229.820259051164612, 150239.571061516035115, 150249.321922227070900, 150259.072841181012336, 150268.823818374308757, 150278.574853803642327, 150288.325947465637000, 150298.077099356887629, 150307.828309473959962, 150317.579577813536162, 150327.330904372152872, 150337.082289146463154, 150346.833732133090962, 150356.585233328631148, 150366.336792729707668, 150376.088410332915373, 150385.840086134849116, 150395.591820132161956, 150405.343612321448745, 150415.095462699333439, 150424.847371262410888, 150434.599338007305050, 150444.351362930610776, 150454.103446028981125, 150463.855587299040053, 150473.607786737353308, 150483.360044340573950, 150493.112360105325934, 150502.864734028175008, 150512.617166105774231, 150522.369656334776664, 150532.122204711748054, 150541.874811233341461, 150551.627475896122633, 150561.380198696744628, 150571.132979631889611, 150580.885818698065123, 150590.638715891982429, 150600.391671210236382, 150610.144684649392730, 150619.897756206133636, 150629.650885877112160, 150639.404073658864945, 150649.157319548074156, 150658.910623541334644, 150668.663985635299468, 150678.417405826563481, 150688.170884111779742, 150697.924420487543102, 150707.678014950506622, 150717.431667497323360, 150727.185378124500858, 150736.939146828779485, 150746.692973606783198, 150756.446858455106849, 150766.200801370316185, 150775.954802349180682, 150785.708861388207879, 150795.462978484109044, 150805.217153633479029, 150814.971386832883582, 150824.725678079063073, 150834.480027368583251, 150844.234434698126279, 150853.988900064257905, 150863.743423463660292, 150873.498004892928293, 150883.252644348773174, 150893.007341827702476, 150902.762097326398361, 150912.516910841572098, 150922.271782369789435, 150932.026711907674326, 150941.781699451908935, 150951.536744999088114, 150961.291848545835819, 150971.047010088863317, 150980.802229624707252, 150990.557507150107995, 151000.312842661602190, 151010.068236155901104, 151019.823687629599590, 151029.579197079379810, 151039.334764501807513, 151049.090389893623069, 151058.846073251363123, 151068.601814571768045, 151078.357613851374481, 151088.113471086951904, 151097.869386275007855, 151107.625359412253601, 151117.381390495342202, 151127.137479520839406, 151136.893626485485584, 151146.649831385875586, 151156.406094218633370, 151166.162414980470203, 151175.918793667980935, 151185.675230277789524, 151195.431724806578131, 151205.188277250999818, 151214.944887607678538, 151224.701555873267353, 151234.458282044390216, 151244.215066117758397, 151253.971908089937642, 151263.728807957639219, 151273.485765717487084, 151283.242781366105191, 151292.999854900204809, 151302.756986316351686, 151312.514175611257087, 151322.271422781603178, 151332.028727823955705, 151341.786090735025937, 151351.543511511408724, 151361.300990149815334, 151371.058526646840619, 151380.816120999195846, 151390.573773203534074, 151400.331483256450156, 151410.089251154655358, 151419.847076894744532, 151429.604960473428946, 151439.362901887332555, 151449.120901133108418, 151458.878958207438700, 151468.637073106947355, 151478.395245828316547, 151488.153476368199335, 151497.911764723248780, 151507.670110890117940, 151517.428514865459874, 151527.186976645956747, 151536.945496228232514, 151546.704073608998442, 151556.462708784820279, 151566.221401752467500, 151575.980152508564061, 151585.738961049704812, 151595.497827372630127, 151605.256751473963959, 151615.015733350417577, 151624.774772998556728, 151634.533870415150886, 151644.293025596794905, 151654.052238540200051, 151663.811509241961176, 151673.570837698760442, 151683.330223907338222, 151693.089667864289368, 151702.849169566325145, 151712.608729010011302, 151722.368346192146419, 151732.128021109325346, 151741.887753758230247, 151751.647544135485077, 151761.407392237830209, 151771.167298061889596, 151780.927261604316300, 151790.687282861850690, 151800.447361831087619, 151810.207498508709250, 151819.967692891426850, 151829.727944975893479, 151839.488254758733092, 151849.248622236686060, 151859.009047406376339, 151868.769530264515197, 151878.530070807697484, 151888.290669032692676, 151898.051324936124729, 151907.812038514704909, 151917.572809764998965, 151927.333638683805475, 151937.094525267748395, 151946.855469513480784, 151956.616471417743014, 151966.377530977100832, 151976.138648188381921, 151985.899823048152030, 151995.661055553093320, 152005.422345699917059, 152015.183693485305412, 152024.945098905911436, 152034.706561958417296, 152044.468082639505155, 152054.229660945857177, 152063.991296874155523, 152073.752990421082359, 152083.514741583290743, 152093.276550357491942, 152103.038416740368120, 152112.800340728572337, 152122.562322318815859, 152132.324361507780850, 152142.086458292120369, 152151.848612668545684, 152161.610824633709854, 152171.373094184324145, 152181.135421317070723, 152190.897806028631749, 152200.660248315689387, 152210.422748174925800, 152220.185305603023153, 152229.947920596692711, 152239.710593152558431, 152249.473323267389787, 152259.236110937810736, 152268.998956160561647, 152278.761858932295581, 152288.524819249694701, 152298.287837109441170, 152308.050912508275360, 152317.814045442850329, 152327.577235909819137, 152337.340483905951260, 152347.103789427870652, 152356.867152472346788, 152366.630573035974521, 152376.394051115523325, 152386.157586707617156, 152395.921179808996385, 152405.684830416314071, 152415.448538526368793, 152425.212304135697195, 152434.976127241097856, 152444.740007839252939, 152454.503945926873712, 152464.267941500584129, 152474.031994557095459, 152483.796105093177175, 152493.560273105482338, 152503.324498590693111, 152513.088781545491656, 152522.853121966618346, 152532.617519850726239, 152542.381975194584811, 152552.146487994818017, 152561.911058248166228, 152571.675685951340711, 152581.440371100994525, 152591.205113693868043, 152600.969913726585219, 152610.734771196002839, 152620.499686098628445, 152630.264658431347925, 152640.029688190697925, 152649.794775373506127, 152659.559919976425590, 152669.325121996167582, 152679.090381429443369, 152688.855698272876907, 152698.621072523324983, 152708.386504177353345, 152718.151993231702363, 152727.917539683112409, 152737.683143528323853, 152747.448804763931548, 152757.214523386734072, 152766.980299393384485, 152776.746132780623157, 152786.512023545132251, 152796.277971683652140, 152806.043977192894090, 152815.810040069511160, 152825.576160310214618, 152835.342337911832146, 152845.108572870929493, 152854.874865184276132, 152864.641214848641539, 152874.407621860591462, 152884.174086216953583, 152893.940607914410066, 152903.707186949672177, 152913.473823319451185, 152923.240517020516563, 152933.007268049463164, 152942.774076403089566, 152952.540942078077933, 152962.307865071139531, 152972.074845379043836, 152981.841882998443907, 152991.608977926051011, 153001.376130158663727, 153011.143339692876907, 153020.910606525518233, 153030.677930653240765, 153040.445312072784873, 153050.212750780832721, 153059.980246774153784, 153069.747800049459329, 153079.515410603460623, 153089.283078432839829, 153099.050803534366423, 153108.818585904722568, 153118.586425540706841, 153128.354322438914096, 153138.122276596142910, 153147.890288009133656, 153157.658356674568495, 153167.426482589158695, 153177.194665749673732, 153186.962906152766664, 153196.731203795265174, 153206.499558673822321, 153216.267970785149373, 153226.036440126015805, 153235.804966693132883, 153245.573550483182771, 153255.342191492934944, 153265.110889719129773, 153274.879645158449421, 153284.648457807692466, 153294.417327663482865, 153304.186254722648300, 153313.955238981841831, 153323.724280437803827, 153333.493379087303765, 153343.262534927023808, 153353.031747953762533, 153362.801018164202105, 153372.570345554995583, 153382.339730123028858, 153392.109171864954988, 153401.878670777485240, 153411.648226857359987, 153421.417840101348702, 153431.187510506133549, 153440.957238068542210, 153450.727022785169538, 153460.496864652843215, 153470.266763668274507, 153480.036719828145579, 153489.806733129313216, 153499.576803568401374, 153509.346931142150424, 153519.117115847417153, 153528.887357680796413, 153538.657656639086781, 153548.428012718999526, 153558.198425917333225, 153567.968896230740938, 153577.739423656021245, 153587.510008189914515, 153597.280649829073809, 153607.051348570385017, 153616.822104410472093, 153626.592917346075410, 153636.363787373993546, 153646.134714490995975, 153655.905698693677550, 153665.676739978924161, 153675.447838343417970, 153685.218993783899350, 153694.990206297108671, 153704.761475879844511, 153714.532802528759930, 153724.304186240653507, 153734.075627012294717, 153743.847124840336619, 153753.618679721635999, 153763.390291652845917, 153773.161960630764952, 153782.933686652133474, 153792.705469713691855, 153802.477309812151361, 153812.249206944281468, 153822.021161106851650, 153831.793172296631383, 153841.565240510273725, 153851.337365744635463, 153861.109547996398760, 153870.881787262303988, 153880.654083539149724, 153890.426436823676340, 153900.198847112566000, 153909.971314402675489, 153919.743838690686971, 153929.516419973399024, 153939.289058247493813, 153949.061753509769915, 153958.834505756996805, 153968.607314985885751, 153978.380181193206226, 153988.153104375727708, 153997.926084530190565, 154007.699121653335169, 154017.472215741930995, 154027.245366792747518, 154037.018574802525109, 154046.791839768004138, 154056.565161685983185, 154066.338540553144412, 154076.111976366344607, 154085.885469122265931, 154095.659018817677861, 154105.432625449349871, 154115.206289014051436, 154124.980009508552030, 154134.753786929533817, 154144.527621273853583, 154154.301512538251700, 154164.075460719410330, 154173.849465814157156, 154183.623527819232550, 154193.397646731435088, 154203.171822547505144, 154212.946055264183087, 154222.720344878267497, 154232.494691386469640, 154242.269094785617199, 154252.043555072392337, 154261.818072243622737, 154271.592646296077874, 154281.367277226469014, 154291.141965031623840, 154300.916709708282724, 154310.691511253186036, 154320.466369663132355, 154330.241284934832947, 154340.016257065144600, 154349.791286050807685, 154359.566371888504364, 154369.341514575091423, 154379.116714107338339, 154388.891970481985481, 154398.667283695802325, 154408.442653745529242, 154418.218080628023017, 154427.993564339994919, 154437.769104878185317, 154447.544702239392791, 154457.320356420445023, 154467.096067418053281, 154476.871835228957934, 154486.647659849986667, 154496.423541277938057, 154506.199479509552475, 154515.975474541541189, 154525.751526370790089, 154535.527634993981337, 154545.303800407971721, 154555.080022609472508, 154564.856301595224068, 154574.632637362112291, 154584.409029906848446, 154594.185479226231109, 154603.961985316971550, 154613.738548175926553, 154623.515167799894698, 154633.291844185558148, 154643.068577329715481, 154652.845367229223484, 154662.622213880793424, 154672.399117281223880, 154682.176077427284326, 154691.953094315744238, 154701.730167943431297, 154711.507298307114979, 154721.284485403535655, 154731.061729229491903, 154740.839029781753197, 154750.616387057147222, 154760.393801052472554, 154770.171271764411358, 154779.948799189791316, 154789.726383325440111, 154799.504024168127216, 154809.281721714593004, 154819.059475961665157, 154828.837286906113150, 154838.615154544735560, 154848.393078874301864, 154858.171059891610639, 154867.949097593402257, 154877.727191976533504, 154887.505343037773855, 154897.283550773863681, 154907.061815181659767, 154916.840136257902486, 154926.618513999390416, 154936.396948402922135, 154946.175439465296222, 154955.953987183253048, 154965.732591553649399, 154975.511252573254751, 154985.289970238809474, 154995.068744547199458, 155004.847575495106867, 155014.626463079417590, 155024.405407296901103, 155034.184408144268673, 155043.963465618464397, 155053.742579716170439, 155063.521750434185378, 155073.300977769336896, 155083.080261718423571, 155092.859602278185776, 155102.638999445480295, 155112.418453217134811, 155122.197963589831488, 155131.977530560456216, 155141.757154125749366, 155151.536834282567725, 155161.316571027680766, 155171.096364357857965, 155180.876214269956108, 155190.656120760715567, 155200.436083826934919, 155210.216103465500055, 155219.996179673122242, 155229.776312446629163, 155239.556501782819396, 155249.336747678491520, 155259.117050130473217, 155268.897409135504859, 155278.677824690472335, 155288.458296792086912, 155298.238825437234482, 155308.019410622684518, 155317.800052345206495, 155327.580750601657201, 155337.361505388806108, 155347.142316703480901, 155356.923184542480158, 155366.704108902602457, 155376.485089780617272, 155386.266127173410496, 155396.047221077693393, 155405.828371490380960, 155415.609578408213565, 155425.390841827989789, 155435.172161746566417, 155444.953538160712924, 155454.734971067256993, 155464.516460462938994, 155474.298006344673922, 155484.079608709231252, 155493.861267553409562, 155503.642982874036534, 155513.424754667881643, 155523.206582931772573, 155532.988467662566109, 155542.770408857002622, 155552.552406511968002, 155562.334460624202620, 155572.116571190592367, 155581.898738207877614, 155591.680961672915146, 155601.463241582532646, 155611.245577933528693, 155621.027970722643659, 155630.810419946821639, 155640.592925602803007, 155650.375487687386340, 155660.158106197457528, 155669.940781129756942, 155679.723512481170474, 155689.506300248496700, 155699.289144428505097, 155709.072045018023346, 155718.855002013937337, 155728.638015412987443, 155738.421085212059552, 155748.204211407923140, 155757.987393997405889, 155767.770632977364585, 155777.553928344568703, 155787.337280095875030, 155797.120688228053041, 155806.904152737988625, 155816.687673622480361, 155826.471250878355931, 155836.254884502413915, 155846.038574491481995, 155855.822320842416957, 155865.606123552017380, 155875.389982617110945, 155885.173898034496233, 155894.957869801030029, 155904.741897913481807, 155914.525982368795667, 155924.310123163711978, 155934.094320295058424, 155943.878573759691790, 155953.662883554381551, 155963.447249676013598, 155973.231672121386509, 155983.016150887327967, 155992.800685970723862, 156002.585277368314564, 156012.369925076927757, 156022.154629093449330, 156031.939389414736070, 156041.724206037557451, 156051.509078958741156, 156061.294008175173076, 156071.078993683622684, 156080.864035480975872, 156090.649133564002113, 156100.434287929587299, 156110.219498574530007, 156120.004765495657921, 156129.790088689856930, 156139.575468153954716, 156149.360903884691652, 156159.146395878953626, 156168.931944133626530, 156178.717548645508941, 156188.503209411428543, 156198.288926428242121, 156208.074699692748254, 156217.860529201832833, 156227.646414952294435, 156237.432356940989848, 156247.218355164717650, 156257.004409620334627, 156266.790520304726670, 156276.576687214692356, 156286.362910347059369, 156296.149189698713599, 156305.935525266453624, 156315.721917047078023, 156325.508365037530893, 156335.294869234552607, 156345.081429635087261, 156354.868046235875227, 156364.654719033802394, 156374.441448025754653, 156384.228233208501479, 156394.015074578928761, 156403.801972133835079, 156413.588925870135427, 156423.375935784599278, 156433.163001874112524, 156442.950124135531951, 156452.737302565656137, 156462.524537161370972, 156472.311827919533243, 156482.099174836912425, 156491.886577910452615, 156501.674037136894185, 156511.461552513210336, 156521.249124036112335, 156531.036751702573383, 156540.824435509362957, 156550.612175453337841, 156560.399971531413030, 156570.187823740328895, 156579.975732077029534, 156589.763696538284421, 156599.551717121037655, 156609.339793822058709, 156619.127926638233475, 156628.916115566389635, 156638.704360603442183, 156648.492661746131489, 156658.281018991430756, 156668.069432336109458, 156677.857901777082589, 156687.646427311148727, 156697.435008935193764, 156707.223646646016277, 156717.012340440560365, 156726.801090315653710, 156736.589896268094890, 156746.378758294798899, 156756.167676392593421, 156765.956650558335241, 156775.745680788881145, 156785.534767081117025, 156795.323909431870561, 156805.113107837998541, 156814.902362296386855, 156824.691672803834081, 156834.481039357255213, 156844.270461953536142, 156854.059940589446342, 156863.849475261929911, 156873.639065967756324, 156883.428712703869678, 156893.218415467097657, 156903.008174254326150, 156912.797989062353736, 156922.587859888095409, 156932.377786728407955, 156942.167769580148160, 156951.957808440201916, 156961.747903305367799, 156971.538054172560805, 156981.328261038637720, 156991.118523900455330, 157000.908842754899524, 157010.699217598797986, 157020.489648429036606, 157030.280135242472170, 157040.070678036019672, 157049.861276806477690, 157059.651931550732115, 157069.442642265668837, 157079.233408948115539, 157089.024231594987214, 157098.815110203169752, 157108.606044769461732, 157118.397035290778149, 157128.188081763946684, 157137.979184185882332, 157147.770342553441878, 157157.561556863511214, 157167.352827112918021, 157177.144153298548190, 157186.935535417316714, 157196.726973466080381, 157206.518467441666871, 157216.310017340932973, 157226.101623160822783, 157235.893284898163984, 157245.685002549871569, 157255.476776112773223, 157265.268605583754834, 157275.060490959702292, 157284.852432237501489, 157294.644429414009210, 157304.436482486111345, 157314.228591450635577, 157324.020756304555107, 157333.812977044639410, 157343.605253667861689, 157353.397586171020521, 157363.189974551030900, 157372.982418804778717, 157382.774918929149862, 157392.567474920972018, 157402.360086777160177, 157412.152754494571127, 157421.945478070119862, 157431.738257500663167, 157441.531092783116037, 157451.323983914306154, 157461.116930891148513, 157470.909933710499899, 157480.702992369275307, 157490.496106864302419, 157500.289277192554437, 157510.082503350829938, 157519.875785336043919, 157529.669123145082267, 157539.462516774830874, 157549.255966222175630, 157559.049471483944217, 157568.843032557109836, 157578.636649438500172, 157588.430322125030216, 157598.224050613585860, 157608.017834900994785, 157617.811674984230194, 157627.605570860148873, 157637.399522525665816, 157647.193529977579601, 157656.987593212805223, 157666.781712228286779, 157676.575887020881055, 157686.370117587473942, 157696.164403924951330, 157705.958746030228212, 157715.753143900190480, 157725.547597531694919, 157735.342106921656523, 157745.136672067019390, 157754.931292964523891, 157764.725969611230539, 157774.520702003908809, 157784.315490139531903, 157794.110334014927503, 157803.905233627068810, 157813.700188972754404, 157823.495200048957486, 157833.290266852563946, 157843.085389380430570, 157852.880567629443249, 157862.675801596546080, 157872.471091278566746, 157882.266436672507552, 157892.061837775167078, 157901.857294583489420, 157911.652807094389573, 157921.448375304695219, 157931.243999211350456, 157941.039678811270278, 157950.835414101311471, 157960.631205078359926, 157970.427051739388844, 157980.222954081255011, 157990.018912100844318, 157999.814925795071758, 158009.610995160852326, 158019.407120195071911, 158029.203300894587301, 158038.999537256400799, 158048.795829277310986, 158058.592176954291062, 158068.388580284197815, 158078.185039264033549, 158087.981553890538635, 158097.778124160715379, 158107.574750071478775, 158117.371431619685609, 158127.168168802279979, 158136.964961616147775, 158146.761810058203992, 158156.558714125334518, 158166.355673814454349, 158176.152689122507581, 158185.949760046321899, 158195.746886582841398, 158205.544068729010178, 158215.341306481743231, 158225.138599837839138, 158234.935948794329306, 158244.733353348070523, 158254.530813495919574, 158264.328329234907869, 158274.125900561833987, 158283.923527473671129, 158293.721209967334289, 158303.518948039680254, 158313.316741687653121, 158323.114590908167884, 158332.912495698139537, 158342.710456054453971, 158352.508471974026179, 158362.306543453829363, 158372.104670490691205, 158381.902853081584908, 158391.701091223396361, 158401.499384913069662, 158411.297734147490701, 158421.096138923545368, 158430.894599238206865, 158440.693115088390186, 158450.491686470981222, 158460.290313382894965, 158470.088995821075514, 158479.887733782408759, 158489.686527263838798, 158499.485376262251521, 158509.284280774591025, 158519.083240797801409, 158528.882256328739459, 158538.681327364349272, 158548.480453901545843, 158558.279635937244166, 158568.078873468417441, 158577.878166491951561, 158587.677515004761517, 158597.476919003762305, 158607.276378485868918, 158617.075893447996350, 158626.875463887117803, 158636.675089800119167, 158646.474771183915436, 158656.274508035479812, 158666.074300351639977, 158675.874148129485548, 158685.674051365727792, 158695.474010057427222, 158705.274024201498833, 158715.074093794828514, 158724.874218834418571, 158734.674399317038478, 158744.474635239777854, 158754.274926599493483, 158764.075273393100360, 158773.875675617571687, 158783.676133269793354, 158793.476646346680354, 158803.277214845205890, 158813.077838762284955, 158822.878518094861647, 158832.679252839821856, 158842.480042994080577, 158852.280888554640114, 158862.081789518415462, 158871.882745882321615, 158881.683757643273566, 158891.484824798186310, 158901.285947344062151, 158911.087125277786981, 158920.888358596275793, 158930.689647296472685, 158940.490991375321755, 158950.292390829796204, 158960.093845656781923, 158969.895355853193905, 158979.696921416005353, 158989.498542342102155, 158999.300218628515722, 159009.101950272102840, 159018.903737269836711, 159028.705579618574120, 159038.507477315375581, 159048.309430357097881, 159058.111438740685116, 159067.913502463052282, 159077.715621521201683, 159087.517795912048314, 159097.320025632507168, 159107.122310679551447, 159116.924651050067041, 159126.727046741027152, 159136.529497749404982, 159146.332004072086420, 159156.134565706015565, 159165.937182648136513, 159175.739854895480676, 159185.542582444875734, 159195.345365293265786, 159205.148203437653137, 159214.951096874981886, 159224.754045602108818, 159234.557049616065342, 159244.360108913766453, 159254.163223492185352, 159263.966393348178826, 159273.769618478778284, 159283.572898880898720, 159293.376234551513335, 159303.179625487478916, 159312.983071685855975, 159322.786573143472197, 159332.590129857417196, 159342.393741824518656, 159352.197409041778883, 159362.001131506141974, 159371.804909214493819, 159381.608742163865827, 159391.412630351202097, 159401.216573773417622, 159411.020572427456500, 159420.824626310262829, 159430.628735418780707, 159440.432899750070646, 159450.237119300931226, 159460.041394068393856, 159469.845724049402634, 159479.650109240901656, 159489.454549639835022, 159499.259045243146829, 159509.063596047839383, 159518.868202050827676, 159528.672863249026705, 159538.477579639467876, 159548.282351219066186, 159558.087177984794835, 159567.892059933539713, 159577.696997062361334, 159587.501989368145587, 159597.307036847865675, 159607.112139498465694, 159616.917297316977056, 159626.722510300227441, 159636.527778445277363, 159646.333101749012712, 159656.138480208435794, 159665.943913820490707, 159675.749402582121547, 159685.554946490359725, 159695.360545542062027, 159705.166199734259862, 159714.971909063897328, 159724.777673527860316, 159734.583493123238441, 159744.389367846917594, 159754.195297695870977, 159764.001282667013584, 159773.807322757376824, 159783.613417963933898, 159793.419568283570698, 159803.225773713289527, 159813.032034250063589, 159822.838349890866084, 159832.644720632612007, 159842.451146472332766, 159852.257627406914253, 159862.064163433358772, 159871.870754548639525, 159881.677400749758817, 159891.484102033602539, 159901.290858397172997, 159911.097669837443391, 159920.904536351357820, 159930.711457935918588, 159940.518434588069795, 159950.325466304813745, 159960.132553083036328, 159969.939694919827161, 159979.746891812013928, 159989.554143756657140, 159999.361450750759104, 160009.168812791176606, 160018.976229874970159, 160028.783701999083860, 160038.591229160432704, 160048.398811356077204, 160058.206448583019665, 160068.014140838058665, 160077.821888118312927, 160087.629690420726547, 160097.437547742243623, 160107.245460079837358, 160117.053427430539159, 160126.861449791234918, 160136.669527158985147, 160146.477659530704841, 160156.285846903367201, 160166.094089274003636, 160175.902386639529141, 160185.710738996946020, 160195.519146343227476, 160205.327608675375814, 160215.136125990335131, 160224.944698285049526, 160234.753325556579512, 160244.562007801840082, 160254.370745017804438, 160264.179537201533094, 160273.988384349882836, 160283.797286459914176, 160293.606243528629420, 160303.415255552943563, 160313.224322529829806, 160323.033444456377765, 160332.842621329444228, 160342.651853146031499, 160352.461139903170988, 160362.270481597806793, 160372.079878226941219, 160381.889329787547467, 160391.698836276598740, 160401.508397691126447, 160411.318014028045582, 160421.127685284387553, 160430.937411457125563, 160440.747192543203710, 160450.557028539653402, 160460.366919443476945, 160470.176865251560230, 160479.986865961021977, 160489.796921568777179, 160499.607032071799040, 160509.417197467148071, 160519.227417751651956, 160529.037692922458518, 160538.848022976540960, 160548.658407910814276, 160558.468847722309874, 160568.279342408000957, 160578.089891964860726, 160587.900496389920590, 160597.711155680153752, 160607.521869832533412, 160617.332638844061876, 160627.143462711741449, 160636.954341432545334, 160646.765275003475836, 160656.576263421477051, 160666.387306683667703, 160676.198404786875471, 160686.009557728248183, 160695.820765504642623, 160705.632028113119304, 160715.443345550709637, 160725.254717814299511, 160735.066144901036751, 160744.877626807749039, 160754.689163531525992, 160764.500755069369916, 160774.312401418224908, 160784.124102575180586, 160793.935858537093736, 160803.747669301053975, 160813.559534864034504, 160823.371455223037628, 160833.183430375065655, 160842.995460317120887, 160852.807545046176529, 160862.619684559263987, 160872.431878853356466, 160882.244127925456269, 160892.056431772565702, 160901.868790391687071, 160911.681203779822681, 160921.493671933974838, 160931.306194851174951, 160941.118772528308909, 160950.931404962524539, 160960.744092150736833, 160970.556834089948097, 160980.369630777218845, 160990.182482209493173, 160999.995388383802492, 161009.808349297120003, 161019.621364946477115, 161029.434435328905238, 161039.247560441348469, 161049.060740280896425, 161058.873974844434997, 161068.687264129082905, 161078.500608131726040, 161088.314006849483121, 161098.127460279298248, 161107.940968418231932, 161117.754531263257377, 161127.568148811347783, 161137.381821059563663, 161147.195548004878219, 161157.009329644322861, 161166.823165974899894, 161176.637056993640726, 161186.451002697518561, 161196.265003083535703, 161206.079058148752665, 161215.893167890142649, 161225.707332304737065, 161235.521551389480010, 161245.335825141461100, 161255.150153557711747, 161264.964536635146942, 161274.778974370856304, 161284.593466761813033, 161294.408013805048540, 161304.222615497594234, 161314.037271836423315, 161323.851982818567194, 161333.666748441028176, 161343.481568700866774, 161353.296443595056189, 161363.111373120598728, 161372.926357274554903, 161382.741396053897915, 161392.556489455659175, 161402.371637476899195, 161412.186840114562074, 161422.002097365708323, 161431.817409227340249, 161441.632775696460158, 161451.448196770128561, 161461.263672445318662, 161471.079202719120076, 161480.894787588476902, 161490.710427050478756, 161500.526121102040634, 161510.341869740252150, 161520.157672962144716, 161529.973530764720635, 161539.789443145011319, 161549.605410100019071, 161559.421431626746198, 161569.237507722282317, 161579.053638383600628, 161588.869823607761646, 161598.686063391738571, 161608.502357732562814, 161618.318706627265783, 161628.135110072878888, 161637.951568066462642, 161647.768080604990246, 161657.584647685493110, 161667.401269304973539, 161677.217945460550254, 161687.034676149138249, 161696.851461367856245, 161706.668301113648340, 161716.485195383633254, 161726.302144174755085, 161736.119147484045243, 161745.936205308564240, 161755.753317645372590, 161765.570484491443494, 161775.387705843837466, 161785.204981699527707, 161795.022312055632938, 161804.839696909097256, 161814.657136257039383, 161824.474630096374312, 161834.292178424249869, 161844.109781237639254, 161853.927438533544773, 161863.745150309056044, 161873.562916561204474, 161883.380737286963267, 161893.198612483451143, 161903.016542147612199, 161912.834526276565157, 161922.652564867225010, 161932.470657916768687, 161942.288805422140285, 161952.107007380400319, 161961.925263788551092, 161971.743574643682223, 161981.561939942796016, 161991.380359682982089, 162001.198833861155435, 162011.017362474492984, 162020.835945519909728, 162030.654582994553493, 162040.473274895339273, 162050.292021219443996, 162060.110821963840863, 162069.929677125532180, 162079.748586701607564, 162089.567550689040218, 162099.386569084948860, 162109.205641886335798, 162119.024769090261543, 162128.843950693757506, 162138.663186693825992, 162148.482477087556617, 162158.301821872009896, 162168.121221044129925, 162177.940674601093633, 162187.760182539786911, 162197.579744857415790, 162207.399361550895264, 162217.219032617344055, 162227.038758053793572, 162236.858537857246120, 162246.678372024820419, 162256.498260553460568, 162266.318203440285288, 162276.138200682325987, 162285.958252276614076, 162295.778358220180962, 162305.598518510145368, 162315.418733143480495, 162325.239002117275959, 162335.059325428534066, 162344.879703074373538, 162354.700135051767575, 162364.520621357805794, 162374.341161989519605, 162384.161756943969522, 162393.982406218186952, 162403.803109809232410, 162413.623867714166408, 162423.444679930020357, 162433.265546453883871, 162443.086467282788362, 162452.907442413736135, 162462.728471843845909, 162472.549555570090888, 162482.370693589647999, 162492.191885899432236, 162502.013132496591425, 162511.834433378127869, 162521.655788541131187, 162531.477197982632788, 162541.298661699664081, 162551.120179689372890, 162560.941751948674209, 162570.763378474744968, 162580.585059264558367, 162590.406794315233128, 162600.228583623800660, 162610.050427187292371, 162619.872325002797879, 162629.694277067348594, 162639.516283378034132, 162649.338343931827694, 162659.160458725935314, 162668.982627757271985, 162678.804851022985531, 162688.627128520078259, 162698.449460245668888, 162708.271846196759725, 162718.094286370498594, 162727.916780763771385, 162737.739329373813234, 162747.561932197597343, 162757.384589232213330, 162767.207300474721706, 162777.030065922212088, 162786.852885571657680, 162796.675759420206305, 162806.498687464889372, 162816.321669702738291, 162826.144706130929990, 162835.967796746350359, 162845.790941546205431, 162855.614140527555719, 162865.437393687345320, 162875.260701022751164, 162885.084062530833762, 162894.907478208595421, 162904.730948053154862, 162914.554472061514389, 162924.378050230850931, 162934.201682558137691, 162944.025369040464284, 162953.849109674920328, 162963.672904458508128, 162973.496753388404613, 162983.320656461612089, 162993.144613675161963, 163002.968625026231166, 163012.792690511763794, 163022.616810128936777, 163032.440983874752419, 163042.265211746300338, 163052.089493740670150, 163061.913829854864161, 163071.738220086030196, 163081.562664431257872, 163091.387162887520390, 163101.211715451994678, 163111.036322121683042, 163120.860982893645996, 163130.685697765031364, 163140.510466732841451, 163150.335289794224082, 163160.160166946152458, 163169.985098185774405, 163179.810083510179538, 163189.635122916399268, 163199.460216401465004, 163209.285363962553674, 163219.110565596696688, 163228.935821300983662, 163238.761131072475109, 163248.586494908202440, 163258.411912805313477, 163268.237384760868736, 163278.062910771928728, 163287.888490835583070, 163297.714124948950484, 163307.539813109004172, 163317.365555312950164, 163327.191351557732560, 163337.017201840557391, 163346.843106158456067, 163356.669064508459996, 163366.495076887717005, 163376.321143293287605, 163386.147263722232310, 163395.973438171669841, 163405.799666638689814, 163415.625949120265432, 163425.452285613631830, 163435.278676115820417, 163445.105120623804396, 163454.931619134848006, 163464.758171645866241, 163474.584778154094238, 163484.411438656534301, 163494.238153150246944, 163504.064921632379992, 163513.891744099993957, 163523.718620550149353, 163533.545550979935797, 163543.372535386501113, 163553.199573766876711, 163563.026666118152207, 163572.853812437446322, 163582.681012721790466, 163592.508266968332464, 163602.335575174132828, 163612.162937336252071, 163621.990353451867122, 163631.817823517980287, 163641.645347531710286, 163651.472925490146736, 163661.300557390379254, 163671.128243229497457, 163680.955983004590962, 163690.783776712749386, 163700.611624351062346, 163710.439525916677667, 163720.267481406597653, 163730.095490817941027, 163739.923554147826508, 163749.751671393372817, 163759.579842551553156, 163769.408067619602662, 163779.236346594552742, 163789.064679473463912, 163798.893066253513098, 163808.721506931731710, 163818.550001505238470, 163828.378549971093889, 163838.207152326445794, 163848.035808568354696, 163857.864518693939317, 163867.693282700260170, 163877.522100584494183, 163887.350972343614558, 163897.179897974827327, 163907.008877475222107, 163916.837910841801204, 163926.666998071770649, 163936.496139162161853, 163946.325334110122640, 163956.154582912713522, 163965.983885567053221, 163975.813242070260458, 163985.642652419395745, 163995.472116611577803, 164005.301634643954458, 164015.131206513498910, 164024.960832217446296, 164034.790511752857128, 164044.620245116762817, 164054.450032306398498, 164064.279873318766477, 164074.109768151014578, 164083.939716800203314, 164093.769719263451407, 164103.599775537906680, 164113.429885620658752, 164123.260049508797238, 164133.090267199382652, 164142.920538689591922, 164152.750863976485562, 164162.581243057211395, 164172.411675928829936, 164182.242162588459905, 164192.072703033249127, 164201.903297260287218, 164211.733945266663795, 164221.564647049439372, 164231.395402605819982, 164241.226211932866136, 164251.057075027667452, 164260.887991887371754, 164270.718962509097764, 164280.549986889905995, 164290.381065026886063, 164300.212196917214897, 164310.043382558011217, 164319.874621946364641, 164329.705915079306578, 164339.537261954101268, 164349.368662567721913, 164359.200116917374544, 164369.031625000119675, 164378.863186813076027, 164388.694802353391424, 164398.526471618097275, 164408.358194604428718, 164418.189971309417160, 164428.021801730210427, 164437.853685863839928, 164447.685623707540799, 164457.517615258402657, 164467.349660513456911, 164477.181759469909593, 164487.013912124850322, 164496.846118475397816, 164506.678378518641694, 164516.510692251700675, 164526.343059671751689, 164536.175480775855249, 164546.007955561159179, 164555.840484024694888, 164565.673066163755720, 164575.505701975314878, 164585.338391456578393, 164595.171134604519466, 164605.003931416460546, 164614.836781889403937, 164624.669686020497466, 164634.502643806830747, 164644.335655245551607, 164654.168720333807869, 164664.001839068660047, 164673.835011447285069, 164683.668237466801656, 164693.501517124299426, 164703.334850416897098, 164713.168237341742497, 164723.001677895983448, 164732.835172076709569, 164742.668719881039578, 164752.502321306121303, 164762.335976349015255, 164772.169685006956570, 164782.003447277005762, 164791.837263156310655, 164801.671132641931763, 164811.505055731104221, 164821.339032420888543, 164831.173062708374346, 164841.007146590767661, 164850.841284065187210, 164860.675475128722610, 164870.509719778521685, 164880.344018011703156, 164890.178369825385744, 164900.012775216717273, 164909.847234182874672, 164919.681746720918454, 164929.516312827996444, 164939.350932501198258, 164949.185605737759033, 164959.020332534710178, 164968.855112889257725, 164978.689946798462188, 164988.524834259500494, 164998.359775269520469, 165008.194769825582625, 165018.029817924922099, 165027.864919564570300, 165037.700074741733260, 165047.535283453529701, 165057.370545697078342, 165067.205861469527008, 165077.041230767936213, 165086.876653589570196, 165096.712129931489471, 165106.547659790841863, 165116.383243164804298, 165126.218880050408188, 165136.054570444859564, 165145.890314345306251, 165155.726111748896074, 165165.561962652718648, 165175.397867053921800, 165185.233824949653354, 165195.069836337090237, 165204.905901213292964, 165214.742019575467566, 165224.578191420674557, 165234.414416746178176, 165244.250695549038937, 165254.087027826375561, 165263.923413575394079, 165273.759852793155005, 165283.596345476864371, 165293.432891623670002, 165303.269491230661515, 165313.106144294986734, 165322.942850813851692, 165332.779610784316901, 165342.616424203559291, 165352.453291068784893, 165362.290211377054220, 165372.127185125515098, 165381.964212311373558, 165391.801292931690114, 165401.638426983670797, 165411.475614464463433, 165421.312855371186743, 165431.150149700988550, 165440.987497451045783, 165450.824898618418956, 165460.662353200343205, 165470.499861193966353, 165480.337422596378019, 165490.175037404784234, 165500.012705616303720, 165509.850427227996988, 165519.688202237186488, 165529.526030640932731, 165539.363912436354440, 165549.201847620657645, 165559.039836190961068, 165568.877878144412534, 165578.715973478188971, 165588.554122189409100, 165598.392324275249848, 165608.230579732859042, 165618.068888559384504, 165627.907250751915853, 165637.745666307717329, 165647.584135223878548, 165657.422657497576438, 165667.261233125958825, 165677.099862106144428, 165686.938544435310178, 165696.777280110603897, 165706.616069129173411, 165716.454911488224752, 165726.293807184876641, 165736.132756216306007, 165745.971758579602465, 165755.810814272001153, 165765.649923290562583, 165775.489085632550996, 165785.328301295056008, 165795.167570275283651, 165805.006892570352647, 165814.846268177410820, 165824.685697093664203, 165834.525179316173308, 165844.364714842231479, 165854.204303668928333, 165864.043945793411694, 165873.883641212887596, 165883.723389924445655, 165893.563191925321007, 165903.403047212574165, 165913.242955783469370, 165923.082917635125341, 165932.922932764719008, 165942.763001169369090, 165952.603122846281622, 165962.443297792633530, 165972.283526005543536, 165982.123807482130360, 165991.964142219658243, 166001.804530215275008, 166011.644971466099378, 166021.485465969279176, 166031.326013722049538, 166041.166614721558290, 166051.007268964895047, 166060.847976449353155, 166070.688737171934918, 166080.529551129933679, 166090.370418320497265, 166100.211338740773499, 166110.052312387910206, 166119.893339259113418, 166129.734419351501856, 166139.575552662310656, 166149.416739188658539, 166159.257978927693330, 166169.099271876650164, 166178.940618032618659, 166188.782017392863054, 166198.623469954502070, 166208.464975714683533, 166218.306534670584369, 166228.148146819410613, 166237.989812158310087, 166247.831530684459722, 166257.673302394978236, 166267.515127287129872, 166277.357005358033348, 166287.198936604865594, 166297.040921024832642, 166306.882958615053212, 166316.725049372704234, 166326.567193295020843, 166336.409390379092656, 166346.251640622183913, 166356.093944021355128, 166365.936300573899643, 166375.778710276907077, 166385.621173127612565, 166395.463689123163931, 166405.306258260738105, 166415.148880537512014, 166424.991555950633483, 166434.834284497337649, 166444.677066174772335, 166454.519900980056264, 166464.362788910482777, 166474.205729963112390, 166484.048724135238444, 166493.891771423979662, 166503.734871826483868, 166513.578025339986198, 166523.421231961634476, 166533.264491688605631, 166543.107804518105695, 166552.951170447340701, 166562.794589473429369, 166572.638061593548628, 166582.481586804904509, 166592.325165104673943, 166602.168796490062959, 166612.012480958219385, 166621.856218506320147, 166631.700009131600382, 166641.543852831237018, 166651.387749602348777, 166661.231699442170793, 166671.075702347879997, 166680.919758316653315, 166690.763867345638573, 166700.608029432129115, 166710.452244573185453, 166720.296512766071828, 166730.140834007936064, 166739.985208295984194, 166749.829635627393145, 166759.674115999368951, 166769.518649409001227, 166779.363235853612423, 166789.207875330379466, 166799.052567836362869, 166808.897313368914183, 166818.742111925093923, 166828.586963502166327, 166838.431868097250117, 166848.276825707609532, 166858.121836330363294, 166867.966899962775642, 166877.812016601965297, 166887.657186245196499, 166897.502408889587969, 166907.347684532374842, 166917.193013170734048, 166927.038394801900722, 166936.883829422964482, 166946.729317031218670, 166956.574857623811113, 166966.420451197889633, 166976.266097750747576, 166986.111797279532766, 166995.957549781363923, 167005.803355253563495, 167015.649213693279307, 167025.495125097688287, 167035.341089463967364, 167045.187106789351674, 167055.033177071018144, 167064.879300306143705, 167074.725476491992595, 167084.571705625683535, 167094.417987704451662, 167104.264322725473903, 167114.110710686014500, 167123.957151583163068, 167133.803645414154744, 167143.650192176253768, 167153.496791866578860, 167163.343444482365157, 167173.190150020789588, 167183.036908479087288, 167192.883719854435185, 167202.730584144039312, 167212.577501345076598, 167222.424471454753075, 167232.271494470332982, 167242.118570388905937, 167251.965699207823491, 167261.812880924146157, 167271.660115535109071, 167281.507403037947370, 167291.354743429896189, 167301.202136708045145, 167311.049582869716687, 167320.897081912058638, 167330.744633832247928, 167340.592238627548795, 167350.439896295109065, 167360.287606832163874, 167370.135370235948358, 167379.983186503610341, 167389.831055632355856, 167399.678977619449142, 167409.526952462038025, 167419.374980157386744, 167429.223060702672228, 167439.071194095071405, 167448.919380331819411, 167458.767619410122279, 167468.615911327186041, 167478.464256080216728, 167488.312653666449478, 167498.161104083032114, 167508.009607327228878, 167517.858163396274904, 167527.706772287288914, 167537.555433997535147, 167547.404148524219636, 167557.252915864577517, 167567.101736015756615, 167576.950608975021169, 167586.799534739548108, 167596.648513306601672, 167606.497544673329685, 167616.346628836996388, 167626.195765794778708, 167636.044955543911783, 167645.894198081572540, 167655.743493405054323, 167665.592841511475854, 167675.442242398101371, 167685.291696062136907, 167695.141202500817599, 167704.990761711320374, 167714.840373690909473, 167724.690038436732721, 167734.539755946054356, 167744.389526216109516, 167754.239349244016921, 167764.089225027128123, 167773.939153562561842, 167783.789134847611422, 167793.639168879395584, 167803.489255655236775, 167813.339395172224613, 167823.189587427739752, 167833.039832418871811, 167842.890130142885027, 167852.740480597014539, 167862.590883778466377, 167872.441339684446575, 167882.291848312190268, 167892.142409658903489, 167901.993023721821373, 167911.843690498179058, 167921.694409985153470, 167931.545182180067059, 167941.396007079980336, 167951.246884682273958, 167961.097814984066645, 167970.948797982622636, 167980.799833675147966, 167990.650922058877768, 168000.502063131018076, 168010.353256888862234, 168020.204503329558065, 168030.055802450369811, 168039.907154248474399, 168049.758558721136069, 168059.610015865589958, 168069.461525679012993, 168079.313088158669416, 168089.164703301794361, 168099.016371105622966, 168108.868091567332158, 168118.719864684186177, 168128.571690453361953, 168138.423568872181932, 168148.275499937793938, 168158.127483647462213, 168167.979519998392789, 168177.831608987908112, 168187.683750613068696, 168197.535944871196989, 168207.388191759586334, 168217.240491275326349, 168227.092843415739480, 168236.945248178060865, 168246.797705559467431, 168256.650215557223419, 168266.502778168593068, 168276.355393390753306, 168286.208061220939271, 168296.060781656444306, 168305.913554694445338, 168315.766380332177505, 168325.619258566875942, 168335.472189395804890, 168345.325172816170380, 168355.178208825207548, 168365.031297420180636, 168374.884438598237466, 168384.737632356729591, 168394.590878692833940, 168404.444177603785647, 168414.297529086819850, 168424.150933139200788, 168434.004389758163597, 168443.857898940856103, 168453.711460684629856, 168463.565074986661784, 168473.418741844216129, 168483.272461254528025, 168493.126233214803506, 168502.980057722335914, 168512.833934774302179, 168522.687864367995644, 168532.541846500622341, 168542.395881169446511, 168552.249968371703289, 168562.104108104598708, 168571.958300365426112, 168581.812545151362428, 168591.666842459730105, 168601.521192287676968, 168611.375594632525463, 168621.230049491481623, 168631.084556861809688, 168640.939116740744794, 168650.793729125463869, 168660.648394013289362, 168670.503111401456408, 168680.357881287200144, 168690.212703667755704, 168700.067578540387331, 168709.922505902271951, 168719.777485750761116, 168729.632518083060859, 168739.487602896348108, 168749.342740187945310, 168759.197929955058498, 168769.053172194981016, 168778.908466904918896, 168788.763814082136378, 168798.619213723839493, 168808.474665827350691, 168818.330170389876002, 168828.185727408650564, 168838.041336880938616, 168847.896998803975293, 168857.752713175024837, 168867.608479991380591, 168877.464299250190379, 168887.320170948805753, 168897.176095084403642, 168907.032071654306492, 168916.888100655662129, 168926.744182085793000, 168936.600315941934241, 168946.456502221350092, 168956.312740921275690, 168966.169032039004378, 168976.025375571742188, 168985.881771516724257, 168995.738219871243928, 169005.594720632594544, 169015.451273797894828, 169025.307879364554537, 169035.164537329750601, 169045.021247690718155, 169054.878010444721440, 169064.734825589082902, 169074.591693120979471, 169084.448613037675386, 169094.305585336493095, 169104.162610014638631, 169114.019687069347128, 169123.876816497911932, 169133.733998297539074, 169143.591232465551002, 169153.448518999211956, 169163.305857895698864, 169173.163249152392382, 169183.020692766411230, 169192.878188735077856, 169202.735737055685604, 169212.593337725440506, 169222.450990741635906, 169232.308696101536043, 169242.166453802376054, 169252.024263841391075, 169261.882126215903554, 169271.740040923148626, 169281.598007960361429, 169291.456027324864408, 169301.314099013863597, 169311.172223024652340, 169321.030399354465771, 169330.888628000626341, 169340.746908960281871, 169350.605242230813019, 169360.463627809454920, 169370.322065693442710, 169380.180555880040629, 169390.039098366542021, 169399.897693150182022, 169409.756340228224872, 169419.615039597993018, 169429.473791256692493, 169439.332595201587537, 169449.191451429971494, 169459.050359939108603, 169468.909320726292208, 169478.768333788699238, 169488.627399123710347, 169498.486516728502465, 169508.345686600368936, 169518.204908736603102, 169528.064183134498307, 169537.923509791231481, 169547.782888704125071, 169557.642319870443316, 169567.501803287479561, 169577.361338952498045, 169587.220926862763008, 169597.080567015538691, 169606.940259408060228, 169616.800004037650069, 169626.659800901543349, 169636.519649997062515, 169646.379551321442705, 169656.239504871948157, 169666.099510645843111, 169675.959568640450016, 169685.819678853033110, 169695.679841280856635, 169705.540055921155727, 169715.400322771223728, 169725.260641828353982, 169735.121013089839835, 169744.981436552916421, 169754.841912214818876, 169764.702440072898753, 169774.563020124449395, 169784.423652366705937, 169794.284336796903517, 169804.145073412364582, 169814.005862210353371, 169823.866703188163228, 169833.727596343116602, 169843.588541672361316, 169853.449539173248922, 169863.310588843101868, 169873.171690679126186, 169883.032844678673428, 169892.894050838949624, 169902.755309157277225, 169912.616619630891364, 169922.477982257114490, 169932.339397033269051, 169942.200863956531975, 169952.062383024254814, 169961.923954233672703, 169971.785577582137194, 169981.647253066825215, 169991.508980685117422, 170001.370760434248950, 170011.232592311542248, 170021.094476314232452, 170030.956412439583801, 170040.818400684947846, 170050.680441047559725, 170060.542533524741884, 170070.404678113729460, 170080.266874811874004, 170090.129123616352445, 170099.991424524574541, 170109.853777533746324, 170119.716182641219348, 170129.578639844170539, 170139.441149139980553, 170149.303710525942734, 170159.166323999234010, 170169.028989557264140, 170178.891707197239157, 170188.754476916510612, 170198.617298712342745, 170208.480172581970692, 170218.343098522746004, 170228.206076531932922, 170238.069106606853893, 170247.932188744744053, 170257.795322942925850, 170267.658509198692627, 170277.521747509337729, 170287.385037872096291, 170297.248380284319865, 170307.111774743272690, 170316.975221246306319, 170326.838719790626783, 170336.702270373556530, 170346.565872992388904, 170356.429527644417249, 170366.293234326964011, 170376.156993037235225, 170386.020803772640647, 170395.884666530415416, 170405.748581307823770, 170415.612548102188157, 170425.476566910801921, 170435.340637730987510, 170445.204760560009163, 170455.068935395131120, 170464.933162233704934, 170474.797441073053051, 170484.661771910381503, 170494.526154743041843, 170504.390589568298310, 170514.255076383473352, 170524.119615185889415, 170533.984205972781638, 170543.848848741530674, 170553.713543489342555, 170563.578290213539731, 170573.443088911473751, 170583.307939580408856, 170593.172842217609286, 170603.037796820426593, 170612.902803386125015, 170622.767861912085209, 170632.632972395484103, 170642.498134833673248, 170652.363349223975092, 170662.228615563712083, 170672.093933850148460, 170681.959304080548463, 170691.824726252292749, 170701.690200362616451, 170711.555726408871124, 170721.421304388321005, 170731.286934298346750, 170741.152616136096185, 170751.018349899037275, 170760.884135584405158, 170770.749973189493176, 170780.615862711594673, 170790.481804148061201, 170800.347797496157000, 170810.213842753233621, 170820.079939916555304, 170829.946088983473601, 170839.812289951194543, 170849.678542817098787, 170859.544847578508779, 170869.411204232717864, 170879.277612777019385, 170889.144073208706686, 170899.010585525160423, 170908.877149723557523, 170918.743765801307745, 170928.610433755704435, 170938.477153584040934, 170948.343925283639692, 170958.210748851823155, 170968.077624285855563, 170977.944551583088469, 170987.811530740786111, 170997.678561756329145, 171007.545644626952708, 171017.412779350037454, 171027.279965922818519, 171037.147204342705663, 171047.014494606934022, 171056.881836712796940, 171066.749230657733278, 171076.616676438919967, 171086.484174053679453, 171096.351723499450600, 171106.219324773410335, 171116.086977872939315, 171125.954682795330882, 171135.822439537936589, 171145.690248097991571, 171155.558108472876484, 171165.426020659913775, 171175.293984656367684, 171185.162000459589763, 171195.030068066931562, 171204.898187475599116, 171214.766358683031285, 171224.634581686463207, 171234.502856483246433, 171244.371183070674306, 171254.239561446127482, 171264.107991606841097, 171273.976473550166702, 171283.845007273455849, 171293.713592773943674, 171303.582230049069040, 171313.450919096067082, 171323.319659912260249, 171333.188452495000092, 171343.057296841609059, 171352.926192949351389, 171362.795140815607738, 171372.664140437729657, 171382.533191812894074, 171392.402294938568957, 171402.271449812047649, 171412.140656430594390, 171422.009914791560732, 171431.879224892327329, 171441.748586730129318, 171451.618000302318251, 171461.487465606274782, 171471.356982639204944, 171481.226551398547599, 171491.096171881566988, 171500.965844085614663, 171510.835568008013070, 171520.705343646084657, 171530.575170997122768, 171540.445050058420748, 171550.314980827475665, 171560.184963301435346, 171570.054997477680445, 171579.925083353620721, 171589.795220926462207, 171599.665410193585558, 171609.535651152371429, 171619.405943800025852, 171629.276288133987691, 171639.146684151521185, 171649.017131849977886, 171658.887631226680242, 171668.758182278979803, 171678.628785004140809, 171688.499439399631228, 171698.370145462627988, 171708.240903190511744, 171718.111712580692256, 171727.982573630375555, 171737.853486336971400, 171747.724450697831344, 171757.595466710219625, 171767.466534371487796, 171777.337653678987408, 171787.208824630040908, 171797.080047221999848, 171806.951321452186676, 171816.822647317894734, 171826.694024816533783, 171836.565453945368063, 171846.436934701749124, 171856.308467083057621, 171866.180051086557796, 171876.051686709659407, 171885.923373949655797, 171895.795112803869415, 171905.666903269680915, 171915.538745344383642, 171925.410639025300043, 171935.282584309839876, 171945.154581195296487, 171955.026629678992322, 171964.898729758278932, 171974.770881430478767, 171984.643084693030687, 171994.515339543111622, 172004.387645978160435, 172014.260003995499574, 172024.132413592480589, 172034.004874766396824, 172043.877387514658039, 172053.749951834499370, 172063.622567723417887, 172073.495235178590519, 172083.367954197427025, 172093.240724777308060, 172103.113546915526967, 172112.986420609464403, 172122.859345856413711, 172132.732322653755546, 172142.605350998812355, 172152.478430888906587, 172162.351562321448000, 172172.224745293700835, 172182.097979803045746, 172191.971265846863389, 172201.844603422447108, 172211.717992527177557, 172221.591433158348082, 172231.464925313339336, 172241.338468989531975, 172251.212064184161136, 172261.085710894723888, 172270.959409118455369, 172280.833158852678025, 172290.706960094859824, 172300.580812842265004, 172310.454717092274223, 172320.328672842180822, 172330.202680089394562, 172340.076738831266994, 172349.950849065091461, 172359.825010788248619, 172369.699223998060916, 172379.573488691909006, 172389.447804867173545, 172399.322172521147877, 172409.196591651183553, 172419.071062254661229, 172428.945584328874247, 172438.820157871261472, 172448.694782879087143, 172458.569459349790122, 172468.444187280634651, 172478.318966669059591, 172488.193797512329184, 172498.068679807853187, 172507.943613552983152, 172517.818598745041527, 172527.693635381408967, 172537.568723459437024, 172547.443862976477249, 172557.319053929822985, 172567.194296316913096, 172577.069590135099133, 172586.944935381674441, 172596.820332054048777, 172606.695780149515485, 172616.571279665542534, 172626.446830599394161, 172636.322432948421920, 172646.198086710064672, 172656.073791881557554, 172665.949548460368533, 172675.825356443790952, 172685.701215829234570, 172695.577126613963628, 172705.453088795416988, 172715.329102370975306, 172725.205167337931925, 172735.081283693696605, 172744.957451435562689, 172754.833670560939936, 172764.709941067179898, 172774.586262951663230, 172784.462636211683275, 172794.339060844678897, 172804.215536848001648, 172814.092064218915766, 172823.968642954918323, 172833.845273053273559, 172843.721954511391232, 172853.598687326593790, 172863.475471496320097, 172873.352307017834391, 172883.229193888575537, 172893.106132105895085, 172902.983121667115483, 172912.860162569646491, 172922.737254810810555, 172932.614398388046538, 172942.491593298589578, 172952.368839539936744, 172962.246137109381380, 172972.123486004304141, 172982.000886222085683, 172991.878337760048453, 173001.755840615631314, 173011.633394786127610, 173021.511000268947100, 173031.388657061470440, 173041.266365161020076, 173051.144124564947560, 173061.021935270720860, 173070.899797275604215, 173080.777710577065591, 173090.655675172340125, 173100.533691058924887, 173110.411758234084118, 173120.289876695256680, 173130.168046439823229, 173140.046267465106212, 173149.924539768515388, 173159.802863347344100, 173169.681238199118525, 173179.559664321044693, 173189.438141710561467, 173199.316670365078608, 173209.195250281918561, 173219.073881458432879, 173228.952563892060425, 173238.831297580094542, 173248.710082520032302, 173258.588918709108839, 173268.467806144763017, 173278.346744824404595, 173288.225734745326918, 173298.104775904939743, 173307.983868300681934, 173317.863011929817731, 173327.742206789785996, 173337.621452877967386, 173347.500750191684347, 173357.380098728346638, 173367.259498485334916, 173377.138949460088043, 173387.018451649841154, 173396.898005052120425, 173406.777609664160991, 173416.657265483430820, 173426.536972507310566, 173436.416730733151780, 173446.296540158306016, 173456.176400780241238, 173466.056312596221687, 173475.936275603744434, 173485.816289800073719, 173495.696355182677507, 173505.576471748878248, 173515.456639496114803, 173525.336858421709621, 173535.217128523072461, 173545.097449797554873, 173554.977822242624825, 173564.858245855546556, 173574.738720633788034, 173584.619246574671706, 173594.499823675607331, 173604.380451934004668, 173614.261131347215269, 173624.141861912619788, 173634.022643627657089, 173643.903476489591412, 173653.784360495919827, 173663.665295643993886, 173673.546281931194244, 173683.427319354901556, 173693.308407912496477, 173703.189547601359664, 173713.070738418871770, 173722.951980362471659, 173732.833273429481778, 173742.714617617370095, 173752.596012923429953, 173762.477459345100215, 173772.358956879703328, 173782.240505524765467, 173792.122105277492665, 173802.003756135440199, 173811.885458095872309, 173821.767211156315170, 173831.649015314003918, 173841.530870566406520, 173851.412776910903631, 173861.294734344934113, 173871.176742865762208, 173881.058802470884984, 173890.940913157653995, 173900.823074923478998, 173910.705287765740650, 173920.587551681790501, 173930.469866669125622, 173940.352232725039357, 173950.234649846970569, 173960.117118032270810, 173969.999637278378941, 173979.882207582646515, 173989.764828942512395, 173999.647501355299028, 174009.530224818532588, 174019.412999329448212, 174029.295824885542970, 174039.178701484168414, 174049.061629122734303, 174058.944607798650395, 174068.827637509268243, 174078.710718252026709, 174088.593850024306448, 174098.477032823517220, 174108.360266646981472, 174118.243551492254483, 174128.126887356542284, 174138.010274237371050, 174147.893712132121436, 174157.777201038144995, 174167.660740952880587, 174177.544331873679766, 174187.427973798039602, 174197.311666723195231, 174207.195410646701930, 174217.079205565882148, 174226.963051478203852, 174236.846948380960384, 174246.730896271619713, 174256.614895147591596, 174266.498945006227586, 174276.383045844966546, 174286.267197661189130, 174296.151400452305097, 174306.035654215724207, 174315.919958948856220, 174325.804314649081789, 174335.688721313781571, 174345.573178940452635, 174355.457687526330119, 174365.342247068998404, 174375.226857565779937, 174385.111519014084479, 174394.996231411263580, 174404.880994754814310, 174414.765809042088222, 174424.650674270465970, 174434.535590437444625, 174444.420557540317532, 174454.305575576581759, 174464.190644543617964, 174474.075764438806800, 174483.960935259558028, 174493.846157003281405, 174503.731429667386692, 174513.616753249254543, 174523.502127746382030, 174533.387553156149806, 174543.273029475851217, 174553.158556703012437, 174563.044134835014120, 174572.929763869236922, 174582.815443803119706, 174592.701174634072231, 174602.586956359475153, 174612.472788976767333, 174622.358672483358532, 174632.244606876629405, 174642.130592154077021, 174652.016628312994726, 174661.902715350821381, 174671.788853265054058, 174681.675042053015204, 174691.561281712114578, 174701.447572239791043, 174711.333913633541670, 174721.220305890659802, 174731.106749008555198, 174740.993242984724930, 174750.879787816520547, 174760.766383501410019, 174770.653030036744894, 174780.539727419964038, 174790.426475648506312, 174800.313274719723267, 174810.200124631141080, 174820.087025380082196, 174829.973976963956375, 174839.860979380231583, 174849.748032626288477, 174859.635136699595023, 174869.522291597502772, 174879.409497317450587, 174889.296753856906435, 174899.184061213192763, 174909.071419383806642, 174918.958828366128728, 174928.846288157597883, 174938.733798755594762, 174948.621360157616436, 174958.508972360985354, 174968.396635363169480, 174978.284349161578575, 174988.172113753651502, 174998.059929136798019, 175007.947795308427885, 175017.835712265979964, 175027.723680006834911, 175037.611698528489796, 175047.499767828296172, 175057.387887903692899, 175067.276058752118843, 175077.164280371012865, 175087.052552757697413, 175096.940875909727765, 175106.829249824455474, 175116.717674499319401, 175126.606149931729306, 175136.494676119094947, 175146.383253058913397, 175156.271880748594413, 175166.160559185431339, 175176.049288367008558, 175185.938068290677620, 175195.826898953848286, 175205.715780353988521, 175215.604712488508085, 175225.493695354874944, 175235.382728950440651, 175245.271813272644067, 175255.160948318953160, 175265.050134086777689, 175274.939370573556516, 175284.828657776699401, 175294.717995693587000, 175304.607384321774589, 175314.496823658613721, 175324.386313701455947, 175334.275854447885649, 175344.165445895254379, 175354.055088040942792, 175363.944780882447958, 175373.834524417179637, 175383.724318642576691, 175393.614163556107087, 175403.504059155122377, 175413.394005437090527, 175423.284002399450401, 175433.174050039582653, 175443.064148355042562, 175452.954297343152575, 175462.844497001322452, 175472.734747327107470, 175482.625048317830078, 175492.515399970958242, 175502.405802283959929, 175512.296255254244898, 175522.186758879193803, 175532.077313156303717, 175541.967918083042605, 175551.858573656732915, 175561.749279874929925, 175571.640036734956084, 175581.530844234337565, 175591.421702370513231, 175601.312611140805529, 175611.203570542769739, 175621.094580573815620, 175630.985641231294721, 175640.876752512791427, 175650.767914415628184, 175660.659126937302062, 175670.550390075222822, 175680.441703826829325, 175690.333068189560436, 175700.224483160825912, 175710.115948738151928, 175720.007464918919140, 175729.899031700566411, 175739.790649080503499, 175749.682317056256579, 175759.574035625206307, 175769.465804784791544, 175779.357624532422051, 175789.249494865653105, 175799.141415781807154, 175809.033387278352166, 175818.925409352785209, 175828.817482002516044, 175838.709605225012638, 175848.601779017626541, 175858.494003377883928, 175868.386278303194558, 175878.278603791026399, 175888.170979838818312, 175898.063406444009161, 175907.955883604008704, 175917.848411316314014, 175927.740989578334847, 175937.633618387510069, 175947.526297741336748, 175957.419027637253748, 175967.311808072612621, 175977.204639044968644, 175987.097520551731577, 175996.990452590311179, 176006.883435158204520, 176016.776468252850464, 176026.669551871687872, 176036.562686012097402, 176046.455870671663433, 176056.349105847737519, 176066.242391537787626, 176076.135727739281720, 176086.029114449629560, 176095.922551666299114, 176105.816039386758348, 176115.709577608446125, 176125.603166328772204, 176135.496805545291863, 176145.390495255356655, 176155.284235456434544, 176165.178026145964395, 176175.071867321472382, 176184.965758980310056, 176194.859701120003592, 176204.753693737991853, 176214.647736831713701, 176224.541830398578895, 176234.435974436113611, 176244.330168941756710, 176254.224413912917953, 176264.118709347065305, 176274.013055241695838, 176283.907451594219310, 176293.801898402103689, 176303.696395662816940, 176313.590943373797927, 176323.485541532456409, 176333.380190136347665, 176343.274889182852348, 176353.169638669438427, 176363.064438593573868, 176372.959288952726638, 176382.854189744306495, 176392.749140965810511, 176402.644142614706652, 176412.539194688404677, 176422.434297184430761, 176432.329450100165559, 176442.224653433106141, 176452.119907180749578, 176462.015211340447422, 176471.910565909754951, 176481.805970886111027, 176491.701426266954513, 176501.596932049753377, 176511.492488231917378, 176521.388094811030896, 176531.283751784474589, 176541.179459149658214, 176551.075216904137051, 176560.971025045320857, 176570.866883570706705, 176580.762792477733456, 176590.658751763839973, 176600.554761426523328, 176610.450821463222383, 176620.346931871405104, 176630.243092648597667, 176640.139303792122519, 176650.035565299593145, 176659.931877168331994, 176669.828239395952551, 176679.724651979835471, 176689.621114917448722, 176699.517628206231166, 176709.414191843679873, 176719.310805827291915, 176729.207470154506154, 176739.104184822703246, 176749.000949829496676, 176758.897765172267100, 176768.794630848482484, 176778.691546855639899, 176788.588513191178208, 176798.485529852623586, 176808.382596837327583, 176818.279714142845478, 176828.176881766645238, 176838.074099706194829, 176847.971367958874907, 176857.868686522269854, 176867.766055393818533, 176877.663474570959806, 176887.560944051161641, 176897.458463831921108, 176907.356033910677070, 176917.253654284926597, 176927.151324952166760, 176937.049045909807319, 176946.946817155345343, 176956.844638686277904, 176966.742510500014760, 176976.640432594052982, 176986.538404965889640, 176996.436427613021806, 177006.334500532888342, 177016.232623722869903, 177026.130797180609079, 177036.029020903486526, 177045.927294888941105, 177055.825619134528097, 177065.723993637686362, 177075.622418395883869, 177085.520893406588584, 177095.419418667268474, 177105.317994175449712, 177115.216619928571163, 177125.115295924100792, 177135.014022159564774, 177144.912798632343765, 177154.811625339993043, 177164.710502279980574, 177174.609429449803429, 177184.508406846842263, 177194.407434468623251, 177204.306512312701670, 177214.205640376458177, 177224.104818657418946, 177234.004047152993735, 177243.903325860766927, 177253.802654778148280, 177263.702033902634867, 177273.601463231723756, 177283.500942762882914, 177293.400472493522102, 177303.300052421254804, 177313.199682543490781, 177323.099362857639790, 177332.999093361315317, 177342.898874051927123, 177352.798704926943174, 177362.698585983918747, 177372.598517220205395, 177382.498498633445706, 177392.398530221020337, 177402.298611980426358, 177412.198743909131736, 177422.098926004633540, 177431.999158264457947, 177441.899440686043818, 177451.799773266917327, 177461.700156004488235, 177471.600588896253612, 177481.501071939797839, 177491.401605132501572, 177501.302188471890986, 177511.202821955463151, 177521.103505580627825, 177531.004239344969392, 177540.905023245955817, 177550.805857281055069, 177560.706741447676904, 177570.607675743434811, 177580.508660165767651, 177590.409694712143391, 177600.310779380059103, 177610.211914167040959, 177620.113099070469616, 177630.014334087958559, 177639.915619216917548, 177649.816954454901861, 177659.718339799350360, 177669.619775247760117, 177679.521260797628202, 177689.422796446451684, 177699.324382191698533, 177709.226018030865816, 177719.127703961479710, 177729.029439980920870, 177738.931226086831884, 177748.833062276622513, 177758.734948547789827, 177768.636884897860000, 177778.538871324242791, 177788.440907824493479, 177798.342994396138238, 177808.245131036615930, 177818.147317743423628, 177828.049554514058400, 177837.951841345988214, 177847.854178236768348, 177857.756565183895873, 177867.659002184780547, 177877.561489237006754, 177887.464026337984251, 177897.366613485268317, 177907.269250676356023, 177917.171937908715336, 177927.074675179872429, 177936.977462487266166, 177946.880299828480929, 177956.783187200926477, 177966.686124602187192, 177976.589112029672833, 177986.492149480909575, 177996.395236953452695, 178006.298374444711953, 178016.201561952242628, 178026.104799473512685, 178036.008087006048299, 178045.911424547346542, 178055.814812094875379, 178065.718249646160984, 178075.621737198700430, 178085.525274749961682, 178095.428862297529122, 178105.332499838812510, 178115.236187371338019, 178125.139924892631825, 178135.043712400190998, 178144.947549891483504, 178154.851437364035519, 178164.755374815344112, 178174.659362242935458, 178184.563399644277524, 178194.467487016896484, 178204.371624358260306, 178214.275811665895162, 178224.180048937356332, 178234.084336170053575, 178243.988673361542169, 178253.893060509319184, 178263.797497610881692, 178273.701984663726762, 178283.606521665409673, 178293.511108613427496, 178303.415745505189989, 178313.320432338339742, 178323.225169110257411, 178333.129955818556482, 178343.034792460588505, 178352.939679034054279, 178362.844615536363563, 178372.749601965042530, 178382.654638317559147, 178392.559724591468694, 178402.464860784268240, 178412.370046893396648, 178422.275282916467404, 178432.180568850948475, 178442.085904694336932, 178451.991290444188053, 178461.896726097940700, 178471.802211653121049, 178481.707747107284376, 178491.613332457869546, 178501.518967702490045, 178511.424652838555630, 178521.330387863650685, 178531.236172775243176, 178541.142007570859278, 178551.047892247966956, 178560.953826804179698, 178570.859811236878159, 178580.765845543675823, 178590.671929722069763, 178600.578063769527944, 178610.484247683634749, 178620.390481461829040, 178630.296765101695200, 178640.203098600672092, 178650.109481956285890, 178660.015915166120976, 178669.922398227645317, 178679.828931138385087, 178689.735513895808253, 178699.642146497499198, 178709.548828940925887, 178719.455561223614495, 178729.362343343149405, 178739.269175296882167, 178749.176057082484476, 178759.082988697424298, 178768.989970139227808, 178778.897001405392075, 178788.804082493443275, 178798.711213400878478, 178808.618394125282066, 178818.525624664092902, 178828.432905014895368, 178838.340235175099224, 178848.247615142347058, 178858.155044914106838, 178868.062524487933842, 178877.970053861296037, 178887.877633031748701, 178897.785261996759800, 178907.692940753942821, 178917.600669300736627, 178927.508447634667391, 178937.416275753319496, 178947.324153654131806, 178957.232081334717805, 178967.140058792516356, 178977.048086025111843, 178986.956163029943127, 178996.864289804652799, 179006.772466346679721, 179016.680692653579172, 179026.588968722819118, 179036.497294551954838, 179046.405670138570713, 179056.314095480163814, 179066.222570574202109, 179076.131095418269979, 179086.039670009835390, 179095.948294346482726, 179105.856968425738160, 179115.765692245040555, 179125.674465802032501, 179135.583289094181964, 179145.492162118956912, 179155.401084873970831, 179165.310057356749894, 179175.219079564791173, 179185.128151495620841, 179195.037273146765074, 179204.946444515779149, 179214.855665600160137, 179224.764936397434212, 179234.674256905156653, 179244.583627120882738, 179254.493047042080434, 179264.402516666305019, 179274.312035991024459, 179284.221605013881344, 179294.131223732343642, 179304.040892143966630, 179313.950610246247379, 179323.860378036741167, 179333.770195513003273, 179343.680062672472559, 179353.589979512791615, 179363.499946031428408, 179373.409962225909112, 179383.320028093789006, 179393.230143632652471, 179403.140308839938371, 179413.050523713231087, 179422.960788250027690, 179432.871102447941666, 179442.781466304382775, 179452.691879816964502, 179462.602342983242124, 179472.512855800712714, 179482.423418266931549, 179492.334030379395699, 179502.244692135718651, 179512.155403533310164, 179522.066164569841931, 179531.976975242752815, 179541.887835549627198, 179551.798745487991255, 179561.709705055371160, 179571.620714249293087, 179581.531773067312315, 179591.442881506984122, 179601.354039565805579, 179611.265247241390171, 179621.176504531147657, 179631.087811432749731, 179640.999167943664361, 179650.910574061446823, 179660.822029783623293, 179670.733535107749049, 179680.645090031379368, 179690.556694552011322, 179700.468348667229293, 179710.380052374501247, 179720.291805671498878, 179730.203608555602841, 179740.115461024484830, 179750.027363075612811, 179759.939314706600271, 179769.851315914886072, 179779.763366698083701, 179789.675467053719331, 179799.587616979348240, 179809.499816472467501, 179819.412065530661494, 179829.324364151485497, 179839.236712332465686, 179849.149110071128234, 179859.061557365028420, 179868.974054211750627, 179878.886600608704612, 179888.799196553649381, 179898.711842043965589, 179908.624537077208515, 179918.537281651049852, 179928.450075762899360, 179938.362919410370523, 179948.275812590960413, 179958.188755302253412, 179968.101747541804798, 179978.014789307169849, 179987.927880595845636, 179997.841021405416541, 180007.754211733408738, 180017.667451577377506, 180027.580740934878122, 180037.494079803494969, 180047.407468180696014, 180057.320906064094743, 180067.234393451217329, 180077.147930339560844, 180087.061516726796981, 180096.975152610364603, 180106.888837987906300, 180116.802572856890038, 180126.716357214900199, 180136.630191059492063, 180146.544074388220906, 180156.458007198612904, 180166.371989488252439, 180176.286021254665684, 180186.200102495407918, 180196.114233208034420, 180206.028413390100468, 180215.942643039190443, 180225.856922152772313, 180235.771250728517771, 180245.685628763894783, 180255.600056256458629, 180265.514533203764586, 180275.429059603455244, 180285.343635452969465, 180295.258260749891633, 180305.172935491835233, 180315.087659676297335, 180325.002433300862322, 180334.917256363056367, 180344.832128860434750, 180354.747050790640060, 180364.662022151111159, 180374.577042939461535, 180384.492113153217360, 180394.407232789963018, 180404.322401847282890, 180414.237620322703151, 180424.152888213749975, 180434.068205518065952, 180443.983572233119048, 180453.898988356522750, 180463.814453885832336, 180473.729968818573980, 180483.645533152332064, 180493.561146884690970, 180503.476810013147769, 180513.392522535315948, 180523.308284448692575, 180533.224095750920242, 180543.139956439554226, 180553.055866512062494, 180562.971825966087636, 180572.887834799184930, 180582.803893008909654, 180592.720000592758879, 180602.636157548404299, 180612.552363873342983, 180622.468619565159315, 180632.384924621408572, 180642.301279039675137, 180652.217682817456080, 180662.134135952393990, 180672.050638442015043, 180681.967190283874515, 180691.883791475556791, 180701.800442014617147, 180711.717141898610862, 180721.633891125151422, 180731.550689691765001, 180741.467537596006878, 180751.384434835461434, 180761.301381407654844, 180771.218377310229698, 180781.135422540683066, 180791.052517096657539, 180800.969660975621082, 180810.886854175216286, 180820.804096692969324, 180830.721388526464580, 180840.638729673315538, 180850.556120131019270, 180860.473559897160158, 180870.391048969351687, 180880.308587345090928, 180890.226175022020470, 180900.143811997637386, 180910.061498269584263, 180919.979233835387276, 180929.897018692601705, 180939.814852838841034, 180949.732736271660542, 180959.650668988615507, 180969.568650987319415, 180979.486682265327545, 180989.404762820166070, 180999.322892649419373, 181009.241071750730043, 181019.159300121595152, 181029.077577759569976, 181038.995904662297107, 181048.914280827331822, 181058.832706252229400, 181068.751180934603326, 181078.669704871921567, 181088.588278061884921, 181098.506900502019562, 181108.425572189880768, 181118.344293123052921, 181128.263063299120404, 181138.181882715638494, 181148.100751370220678, 181158.019669260393130, 181167.938636383798439, 181177.857652737962781, 181187.776718320499640, 181197.695833128906088, 181207.614997160824714, 181217.534210413810797, 181227.453472885448718, 181237.372784573322861, 181247.292145475017605, 181257.211555588088231, 181267.131014910148224, 181277.050523438752862, 181286.970081171457423, 181296.889688105875393, 181306.809344239562051, 181316.729049570159987, 181326.648804095166270, 181336.568607812165283, 181346.488460718799615, 181356.408362812595442, 181366.328314091137145, 181376.248314552067313, 181386.168364192883018, 181396.088463011255953, 181406.008611004683189, 181415.928808170749107, 181425.849054507096298, 181435.769350011280039, 181445.689694680913817, 181455.610088513523806, 181465.530531506723491, 181475.451023658068152, 181485.371564965142170, 181495.292155425588135, 181505.212795036932221, 181515.133483796787914, 181525.054221702710493, 181534.975008752342546, 181544.895844943210250, 181554.816730272927089, 181564.737664739106549, 181574.658648339245701, 181584.579681070987135, 181594.500762931915233, 181604.421893919643480, 181614.343074031698052, 181624.264303265692433, 181634.185581619240111, 181644.106909089925466, 181654.028285675274674, 181663.949711372930324, 181673.871186180535005, 181683.792710095527582, 181693.714283115608850, 181703.635905238334090, 181713.557576461316785, 181723.479296782083111, 181733.401066198333865, 181743.322884707537014, 181753.244752307364251, 181763.166668995341752, 181773.088634769170312, 181783.010649626317900, 181792.932713564398000, 181802.854826581082307, 181812.776988673867891, 181822.699199840397341, 181832.621460078255041, 181842.543769384996267, 181852.466127758292714, 181862.388535195699660, 181872.310991694801487, 181882.233497253182577, 181892.156051868427312, 181902.078655538149178, 181912.001308259932557, 181921.924010031390935, 181931.846760850137798, 181941.769560713670217, 181951.692409619688988, 181961.615307565749390, 181971.538254549435806, 181981.461250568390824, 181991.384295620111516, 182001.307389702298678, 182011.230532812478486, 182021.153724948293529, 182031.076966107299086, 182041.000256287166849, 182050.923595485422993, 182060.846983699651901, 182070.770420927496161, 182080.693907166540157, 182090.617442414339166, 182100.541026668564882, 182110.464659926830791, 182120.388342186663067, 182130.312073445675196, 182140.235853701480664, 182150.159682951663854, 182160.083561193867354, 182170.007488425646443, 182179.931464644556399, 182189.855489848327124, 182199.779564034513896, 182209.703687200642889, 182219.627859344356693, 182229.552080463268794, 182239.476350554963574, 182249.400669617083622, 182259.325037647213321, 182269.249454642907949, 182279.173920601868303, 182289.098435521620559, 182299.022999399749096, 182308.947612233896507, 182318.872274021647172, 182328.796984760614578, 182338.721744448412210, 182348.646553082682658, 182358.571410660952097, 182368.496317180863116, 182378.421272640029201, 182388.346277036034735, 182398.271330366464099, 182408.196432628988987, 182418.121583821164677, 182428.046783940575551, 182437.972032984922407, 182447.897330951702315, 182457.822677838616073, 182467.748073643189855, 182477.673518363066250, 182487.599011995887849, 182497.524554539180826, 182507.450145990645979, 182517.375786347780377, 182527.301475608313922, 182537.227213769801892, 182547.153000829857774, 182557.078836786036845, 182567.004721636010800, 182576.930655377393123, 182586.856638007739093, 182596.782669524691300, 182606.708749925892334, 182616.634879208926577, 182626.561057371378411, 182636.487284410890425, 182646.413560325017897, 182656.339885111461626, 182666.266258767805994, 182676.192681291606277, 182686.119152680534171, 182696.045672932174057, 182705.972242044197628, 182715.898860014072852, 182725.825526839558734, 182735.752242518239655, 182745.679007047699997, 182755.605820425524144, 182765.532682649383787, 182775.459593716863310, 182785.386553625576198, 182795.313562373165041, 182805.240619957214221, 182815.167726375337224, 182825.094881625176640, 182835.022085704287747, 182844.949338610400446, 182854.876640341040911, 182864.803990893851733, 182874.731390266417293, 182884.658838456409285, 182894.586335461382987, 182904.513881279068301, 182914.441475906933192, 182924.369119342649356, 182934.296811583888484, 182944.224552628234960, 182954.152342473273166, 182964.080181116703898, 182974.008068556053331, 182983.936004788964055, 182993.863989813107764, 183003.792023626068840, 183013.720106225460768, 183023.648237608926138, 183033.576417774049332, 183043.504646718472941, 183053.432924439810449, 183063.361250935704447, 183073.289626203739317, 183083.218050241557648, 183093.146523046802031, 183103.075044617056847, 183113.003614949935582, 183122.932234043139033, 183132.860901894222479, 183142.789618500770302, 183152.718383860483300, 183162.647197970974958, 183172.576060829858761, 183182.504972434719093, 183192.433932783227647, 183202.362941872968804, 183212.291999701614259, 183222.221106266806601, 183232.150261566101108, 183242.079465597111266, 183252.008718357537873, 183261.938019844965311, 183271.867370057036169, 183281.796768991363933, 183291.726216645562090, 183301.655713017273229, 183311.585258104110835, 183321.514851903746603, 183331.444494413794018, 183341.374185631779255, 183351.303925555490423, 183361.233714182424592, 183371.163551510282559, 183381.093437536706915, 183391.023372259223834, 183400.953355675563216, 183410.883387783367652, 183420.813468580134213, 183430.743598063621903, 183440.673776231415104, 183450.604003081156407, 183460.534278610459296, 183470.464602816937258, 183480.394975698261987, 183490.325397252017865, 183500.255867475876585, 183510.186386367480736, 183520.116953924443806, 183530.047570144321071, 183539.978235024871537, 183549.908948563708691, 183559.839710758329602, 183569.770521606522379, 183579.701381105842302, 183589.632289253961062, 183599.563246048521250, 183609.494251487049041, 183619.425305567332543, 183629.356408286868827, 183639.287559643416898, 183649.218759634532034, 183659.150008257856825, 183669.081305511004757, 183679.012651391647523, 183688.944045897456817, 183698.875489026017021, 183708.806980774941621, 183718.738521141931415, 183728.670110124570783, 183738.601747720531421, 183748.533433927426813, 183758.465168742870446, 183768.396952164621325, 183778.328784190147417, 183788.260664817178622, 183798.192594043328427, 183808.124571866297629, 183818.056598283612402, 183827.988673293002648, 183837.920796892081853, 183847.852969078492606, 183857.785189849848393, 183867.717459203791805, 183877.649777137994533, 183887.582143650099169, 183897.514558737719199, 183907.447022398468107, 183917.379534630046692, 183927.312095430039335, 183937.244704796205042, 183947.177362726011779, 183957.110069217218552, 183967.042824267409742, 183976.975627874315251, 183986.908480035461253, 183996.841380748577649, 184006.774330011219718, 184016.707327821204672, 184026.640374175942270, 184036.573469073220622, 184046.506612510653213, 184056.439804485940840, 184066.373044996609678, 184076.306334040389629, 184086.239671614865074, 184096.173057717795018, 184106.106492346676532, 184116.039975499210414, 184125.973507173155667, 184135.907087365980260, 184145.840716075414093, 184155.774393299099756, 184165.708119034738047, 184175.641893279855140, 184185.575716032180935, 184195.509587289358024, 184205.443507049028995, 184215.377475308807334, 184225.311492066364735, 184235.245557319372892, 184245.179671065474395, 184255.113833302253624, 184265.048044027440483, 184274.982303238648456, 184284.916610933520133, 184294.850967109727208, 184304.785371764883166, 184314.719824896659702, 184324.654326502757613, 184334.588876580732176, 184344.523475128313294, 184354.458122143085347, 184364.392817622720031, 184374.327561564889038, 184384.262353967293166, 184394.197194827487692, 184404.132084143144311, 184414.067021911963820, 184424.002008131559705, 184433.937042799603660, 184443.872125913709169, 184453.807257471577032, 184463.742437470878940, 184473.677665909170173, 184483.612942784209736, 184493.548268093611114, 184503.483641834987793, 184513.419064006040571, 184523.354534604441142, 184533.290053627832094, 184543.225621073826915, 184553.161236940068193, 184563.096901224314934, 184573.032613924151519, 184582.968375037278747, 184592.904184561251896, 184602.840042493829969, 184612.775948832626455, 184622.711903575283941, 184632.647906719503226, 184642.583958262897795, 184652.520058203168446, 184662.456206537957769, 184672.392403264879249, 184682.328648381662788, 184692.264941885892767, 184702.201283775357297, 184712.137674047553446, 184722.074112700211117, 184732.010599731031107, 184741.947135137597797, 184751.883718917611986, 184761.820351068745367, 184771.757031588640530, 184781.693760474940063, 184791.630537725344766, 184801.567363337526331, 184811.504237309069140, 184821.441159637673991, 184831.378130321070785, 184841.315149356785696, 184851.252216742577730, 184861.189332476118580, 184871.126496555021731, 184881.063708976929775, 184891.000969739572611, 184900.938278840592830, 184910.875636277633021, 184920.813042048364878, 184930.750496150489198, 184940.687998581590364, 184950.625549339398276, 184960.563148421584629, 184970.500795825733803, 184980.438491549604805, 184990.376235590869328, 185000.314027947082650, 185010.251868615945568, 185020.189757595246192, 185030.127694882481592, 185040.065680475439876, 185050.003714371734532, 185059.941796569008147, 185069.879927064990625, 185079.818105857295450, 185089.756332943681628, 185099.694608321704436, 185109.632931989064673, 185119.571303943463136, 185129.509724182513310, 185139.448192703945097, 185149.386709505430190, 185159.325274584582075, 185169.263887939072447, 185179.202549566631205, 185189.141259464871837, 185199.080017631466035, 185209.018824064143701, 185218.957678760518320, 185228.896581718261587, 185238.835532935074298, 185248.774532408599043, 185258.713580136536621, 185268.652676116558723, 185278.591820346307941, 185288.531012823455967, 185298.470253545703599, 185308.409542510722531, 185318.348879716126248, 185328.288265159644652, 185338.227698838978540, 185348.167180751741398, 185358.106710895604920, 185368.046289268299006, 185377.985915867437143, 185387.925590690749232, 185397.865313735877862, 185407.805085000465624, 185417.744904482271522, 185427.684772178879939, 185437.624688088020775, 185447.564652207394829, 185457.504664534615586, 185467.444725067383843, 185477.384833803371293, 185487.324990740278736, 185497.265195875748759, 185507.205449207453057, 185517.145750733092427, 185527.086100450396771, 185537.026498356921365, 185546.966944450454321, 185556.907438728638226, 185566.847981189086568, 185576.788571829587454, 185586.729210647783475, 185596.669897641288117, 185606.610632807831280, 185616.551416145142866, 185626.492247650807258, 185636.433127322583459, 185646.374055158084957, 185656.315031155012548, 185666.256055311096134, 185676.197127623949200, 185686.138248091272544, 185696.079416710825171, 185706.020633480162360, 185715.961898397014011, 185725.903211459110025, 185735.844572664063890, 185745.785982009576401, 185755.727439493406564, 185765.668945113080554, 185775.610498866444686, 185785.552100751083344, 185795.493750764726428, 185805.435448905045632, 185815.377195169683546, 185825.318989556340966, 185835.260832062776899, 185845.202722686575726, 185855.144661425496452, 185865.086648277210770, 185875.028683239332167, 185884.970766309648752, 185894.912897485744907, 185904.855076765379636, 185914.797304146282841, 185924.739579626009800, 185934.681903202348622, 185944.624274872883689, 185954.566694635432214, 185964.509162487636786, 185974.451678427139996, 185984.394242451642640, 185994.336854558903724, 186004.279514746478526, 186014.222223012184259, 186024.164979353634408, 186034.107783768529771, 186044.050636254600249, 186053.993536809488432, 186063.936485430924222, 186073.879482116550207, 186083.822526864038082, 186093.765619671205059, 186103.708760535606416, 186113.651949454972055, 186123.595186427060980, 186133.538471449457575, 186143.481804519920843, 186153.425185636122478, 186163.368614795763278, 186173.312091996514937, 186183.255617236078251, 186193.199190512154019, 186203.142811822413933, 186213.086481164587894, 186223.030198536347598, 186232.973963935364736, 186242.917777359398315, 186252.861638806061819, 186262.805548273085151, 186272.749505758169107, 186282.693511259014485, 186292.637564773322083, 186302.581666298734490, 186312.525815832981607, 186322.470013373764232, 186332.414258918783162, 186342.358552465710090, 186352.302894012245815, 186362.247283556120237, 186372.191721094975946, 186382.136206626542844, 186392.080740148521727, 186402.025321658584289, 186411.969951154431328, 186421.914628633821849, 186431.859354094340233, 186441.804127533832798, 186451.748948949825717, 186461.693818340136204, 186471.638735702465056, 186481.583701034425758, 186491.528714333835524, 186501.473775598220527, 186511.418884825485293, 186521.364042013185099, 186531.309247159078950, 186541.254500260838540, 186551.199801316193771, 186561.145150322845438, 186571.090547278436134, 186581.035992180724861, 186590.981485027412418, 186600.927025816170499, 186610.872614544758108, 186620.818251210759627, 186630.763935812021373, 186640.709668346127728, 186650.655448810866801, 186660.601277203910286, 186670.547153522929875, 186680.493077765655471, 186690.439049929816974, 186700.385070013027871, 186710.331138013105374, 186720.277253927692072, 186730.223417754546972, 186740.169629491283558, 186750.115889135689940, 186760.062196685379604, 186770.008552138111554, 186779.954955491644796, 186789.901406743592815, 186799.847905891772825, 186809.794452933740104, 186819.741047867311863, 186829.687690690159798, 186839.634381400013808, 186849.581119994545588, 186859.527906471455935, 186869.474740828532958, 186879.421623063361039, 186889.368553173757391, 186899.315531157335499, 186909.262557011883473, 186919.209630735102110, 186929.156752324663103, 186939.103921778296353, 186949.051139093673555, 186958.998404268582817, 186968.945717300637625, 186978.893078187626088, 186988.840486927219899, 186998.787943517148960, 187008.735447955084965, 187018.683000238757813, 187028.630600365926512, 187038.578248334233649, 187048.525944141467335, 187058.473687785241054, 187068.421479263342917, 187078.369318573415512, 187088.317205713305157, 187098.265140680567129, 187108.213123472960433, 187118.161154088273179, 187128.109232524118852, 187138.057358778285561, 187148.005532848415896, 187157.953754732297966, 187167.902024427603465, 187177.850341932091396, 187187.798707243404351, 187197.747120359301334, 187207.695581277454039, 187217.644089995621471, 187227.592646511533530, 187237.541250822891016, 187247.489902927365620, 187257.438602822687244, 187267.387350506673101, 187277.336145976907574, 187287.284989231149666, 187297.233880267158384, 187307.182819082605420, 187317.131805675191572, 187327.080840042704949, 187337.029922182788141, 187346.979052093229257, 187356.928229771641782, 187366.877455215842929, 187376.826728423562599, 187386.776049392443383, 187396.725418120244285, 187406.674834604636999, 187416.624298843409633, 187426.573810834262986, 187436.523370574926957, 187446.472978063044138, 187456.422633296460845, 187466.372336272790562, 187476.322086989792297, 187486.271885445195949, 187496.221731636702316, 187506.171625562012196, 187516.121567218971904, 187526.071556605136720, 187536.021593718323857, 187545.971678556263214, 187555.921811116597382, 187565.871991397114471, 187575.822219395544380, 187585.772495109587908, 187595.722818536945852, 187605.673189675406320, 187615.623608522582799, 187625.574075076350709, 187635.524589334294433, 187645.475151294231182, 187655.425760953832651, 187665.376418310857844, 187675.327123363007559, 187685.277876108011696, 187695.228676543571055, 187705.179524667473743, 187715.130420477391453, 187725.081363971112296, 187735.032355146307964, 187744.983394000708358, 187754.934480531985173, 187764.885614738042932, 187774.836796616407810, 187784.788026164955227, 187794.739303381298669, 187804.690628263284452, 187814.642000808496960, 187824.593421014840715, 187834.544888879870996, 187844.496404401434120, 187854.447967577143572, 187864.399578404903878, 187874.351236882270314, 187884.302943007118301, 187894.254696777032223, 187904.206498189887498, 187914.158347243268508, 187924.110243935021572, 187934.062188262818381, 187944.014180224417942, 187953.966219817521051, 187963.918307039915817, 187973.870441889244830, 187983.822624363354407, 187993.774854459828930, 188003.727132176543819, 188013.679457511199871, 188023.631830461439677, 188033.584251025080448, 188043.536719199852087, 188053.489234983455390, 188063.441798373649362, 188073.394409368105698, 188083.347067964670714, 188093.299774160986999, 188103.252527954871766, 188113.205329343938502, 188123.158178326004418, 188133.111074898770312, 188143.064019060053397, 188153.017010807496263, 188162.970050138857914, 188172.923137051868252, 188182.876271544315387, 188192.829453613871010, 188202.782683258294128, 188212.735960475343745, 188222.689285262720659, 188232.642657618212979, 188242.596077539463295, 188252.549545024317922, 188262.503060070448555, 188272.456622675614199, 188282.410232837573858, 188292.363890554028330, 188302.317595822707517, 188312.271348641399527, 188322.225149007805157, 188332.178996919654310, 188342.132892374735093, 188352.086835370777408, 188362.040825905452948, 188371.994863976637134, 188381.948949581885245, 188391.903082719130907, 188401.857263385929400, 188411.811491580214351, 188421.765767299599247, 188431.720090541813988, 188441.674461304675788, 188451.628879585885443, 188461.583345383172855, 188471.537858694326133, 188481.492419517016970, 188491.447027849062579, 188501.401683688192861, 188511.356387032079510, 188521.311137878597947, 188531.265936225332553, 188541.220782070158748, 188551.175675410777330, 188561.130616244889097, 188571.085604570311261, 188581.040640384686412, 188590.995723685889971, 188600.950854471535422, 188610.906032739498187, 188620.861258487449959, 188630.816531713120639, 188640.771852414298337, 188650.727220588712953, 188660.682636234123493, 188670.638099348230753, 188680.593609928851947, 188690.549167973658768, 188700.504773480468430, 188710.460426446981728, 188720.416126870986773, 188730.371874750184361, 188740.327670082304394, 188750.283512865193188, 188760.239403096522437, 188770.195340774080250, 188780.151325895538321, 188790.107358458772069, 188800.063438461394981, 188810.019565901282476, 188819.975740776077146, 188829.931963083596202, 188839.888232821598649, 188849.844549987756182, 188859.800914579915116, 188869.757326595747145, 188879.713786033040378, 188889.670292889553821, 188899.626847163046477, 188909.583448851190042, 188919.540097951859934, 188929.496794462756952, 188939.453538381581893, 188949.410329706151970, 188959.367168434167979, 188969.324054563418031, 188979.280988091632025, 188989.237969016627176, 188999.194997336133383, 189009.152073047822341, 189019.109196149540367, 189029.066366638959153, 189039.023584513954120, 189048.980849772138754, 189058.938162411359372, 189068.895522429404082, 189078.852929823886370, 189088.810384592739865, 189098.767886733548949, 189108.725436244189041, 189118.683033122360939, 189128.640677365852753, 189138.598368972423486, 189148.556107939773938, 189158.513894265721319, 189168.471727947995532, 189178.429608984384686, 189188.387537372560473, 189198.345513110369211, 189208.303536195569905, 189218.261606625892455, 189228.219724399095867, 189238.177889512880938, 189248.136101965123089, 189258.094361753523117, 189268.052668875810923, 189278.011023329774616, 189287.969425113173202, 189297.927874223794788, 189307.886370659340173, 189317.844914417655673, 189327.803505496442085, 189337.762143893400207, 189347.720829606405459, 189357.679562633187743, 189367.638342971447855, 189377.597170619032113, 189387.556045573670417, 189397.514967833092669, 189407.473937395057874, 189417.432954257412348, 189427.392018417827785, 189437.351129874092294, 189447.310288624023087, 189457.269494665291859, 189467.228747995744925, 189477.188048613112187, 189487.147396515123546, 189497.106791699625319, 189507.066234164260095, 189517.025723906961503, 189526.985260925343027, 189536.944845217221882, 189546.904476780386176, 189556.864155612536706, 189566.823881711548893, 189576.783655075094430, 189586.743475700961426, 189596.703343586967094, 189606.663258730754023, 189616.623221130226739, 189626.583230783086037, 189636.543287687120028, 189646.503391840087716, 189656.463543239719002, 189666.423741883860203, 189676.383987770212116, 189686.344280896562850, 189696.304621260671411, 189706.265008860355010, 189716.225443693343550, 189726.185925757425139, 189736.146455050300574, 189746.107031569845276, 189756.067655313730938, 189766.028326279803878, 189775.989044465764891, 189785.949809869460296, 189795.910622488619993, 189805.871482321002986, 189815.832389364426490, 189825.793343616620405, 189835.754345075314632, 189845.715393738384591, 189855.676489603560185, 189865.637632668571314, 189875.598822931235190, 189885.560060389339924, 189895.521345040586311, 189905.482676882791566, 189915.444055913772900, 189925.405482131231111, 189935.366955532983411, 189945.328476116730599, 189955.290043880348094, 189965.251658821594901, 189975.213320938142715, 189985.175030227866955, 189995.136786688555731, 190005.098590317880735, 190015.060441113746492, 190025.022339073795592, 190034.984284195932560, 190044.946276477829088, 190054.908315917331493, 190064.870402512169676, 190074.832536260131747, 190084.794717159005813, 190094.756945206579985, 190104.719220400584163, 190114.681542738835560, 190124.643912219122285, 190134.606328839174239, 190144.568792596837739, 190154.531303489813581, 190164.493861515918979, 190174.456466672912939, 190184.419118958641775, 190194.381818370806286, 190204.344564907194581, 190214.307358565623872, 190224.270199343882268, 190234.233087239699671, 190244.196022250864189, 190254.159004375193035, 190264.122033610445214, 190274.085109954408836, 190284.048233404813800, 190294.011403959564632, 190303.974621616274817, 190313.937886372819776, 190323.901198227016721, 190333.864557176566450, 190343.827963219344383, 190353.791416353051318, 190363.754916575504467, 190373.718463884462835, 190383.682058277714532, 190393.645699753047666, 190403.609388308337657, 190413.573123941168888, 190423.536906649504090, 190433.500736431073165, 190443.464613283576909, 190453.428537204948952, 190463.392508192860987, 190473.356526245130226, 190483.320591359544778, 190493.284703533921856, 190503.248862765962258, 190513.213069053570507, 190523.177322394418297, 190533.141622786322841, 190543.105970227130456, 190553.070364714571042, 190563.034806246432709, 190572.999294820503565, 190582.963830434629926, 190592.928413086541696, 190602.893042774026981, 190612.857719494873891, 190622.822443246841431, 190632.787214027805021, 190642.752031835494563, 190652.716896667698165, 190662.681808522233041, 190672.646767396887299, 190682.611773289361736, 190692.576826197589980, 190702.541926119243726, 190712.507073052169289, 190722.472266994125675, 190732.437507942959201, 190742.402795896370662, 190752.368130852264585, 190762.333512808312662, 190772.298941762390314, 190782.264417712256545, 190792.229940655728569, 190802.195510590565391, 190812.161127514555119, 190822.126791425514966, 190832.092502321233042, 190842.058260199497454, 190852.024065058125416, 190861.989916894846829, 190871.955815707508009, 190881.921761493867962, 190891.887754251743900, 190901.853793978923932, 190911.819880673254374, 190921.786014332436025, 190931.752194954315200, 190941.718422536680009, 190951.684697077289457, 190961.651018573989859, 190971.617387024598429, 190981.583802426845068, 190991.550264778488781, 191001.516774077463197, 191011.483330321469111, 191021.449933508323738, 191031.416583635786083, 191041.383280701760668, 191051.350024703948293, 191061.316815640137065, 191071.283653508144198, 191081.250538305816008, 191091.217470030911500, 191101.184448681247886, 191111.151474254555069, 191121.118546748708468, 191131.085666161496192, 191141.052832490706351, 191151.020045734156156, 191160.987305889575509, 191170.954612954810727, 191180.921966927679023, 191190.889367805968504, 191200.856815587438177, 191210.824310269963462, 191220.791851851274259, 191230.759440329216886, 191240.727075701579452, 191250.694757966208272, 191260.662487120775040, 191270.630263163184281, 191280.598086091253208, 191290.565955902682617, 191300.533872595377034, 191310.501836167095462, 191320.469846615684219, 191330.437903938844102, 191340.406008134450531, 191350.374159200349823, 191360.342357134213671, 191370.310601933975704, 191380.278893597394926, 191390.247232122259447, 191400.215617506328272, 191410.184049747535028, 191420.152528843580512, 191430.121054792281939, 191440.089627591456519, 191450.058247238979675, 191460.026913732523099, 191469.995627069991315, 191479.964387249114225, 191489.933194267796353, 191499.902048123767599, 191509.870948814845178, 191519.839896338846302, 191529.808890693588182, 191539.777931876829825, 191549.747019886475755, 191559.716154720255872, 191569.685336375958286, 191579.654564851487521, 191589.623840144544374, 191599.593162253033370, 191609.562531174655305, 191619.531946907314705, 191629.501409448770573, 191639.470918796869228, 191649.440474949369673, 191659.410077904118225, 191669.379727658873890, 191679.349424211512087, 191689.319167559850030, 191699.288957701646723, 191709.258794634719379, 191719.228678356856108, 191729.198608865961432, 191739.168586159794359, 191749.138610236113891, 191759.108681092766346, 191769.078798727627145, 191779.048963138426188, 191789.019174323038897, 191798.989432279166067, 191808.959737004770432, 191818.930088497523684, 191828.900486755330348, 191838.870931776007637, 191848.841423557314556, 191858.811962097126525, 191868.782547393173445, 191878.753179443330737, 191888.723858245444717, 191898.694583797245286, 191908.665356096549658, 191918.636175141262356, 191928.607040929142386, 191938.577953458006959, 191948.548912725615082, 191958.519918729900382, 191968.490971468621865, 191978.462070939538535, 191988.433217140525812, 191998.404410069459118, 192008.375649724039249, 192018.346936102141626, 192028.318269201583462, 192038.289649020152865, 192048.261075555667048, 192058.232548806030536, 192068.204068768915022, 192078.175635442283237, 192088.147248823894188, 192098.118908911535982, 192108.090615703025833, 192118.062369196210057, 192128.034169388964074, 192138.006016279017786, 192147.977909864217509, 192157.949850142380456, 192167.921837111323839, 192177.893870768893976, 192187.865951112878975, 192197.838078141183360, 192207.810251851507928, 192217.782472241728101, 192227.754739309602883, 192237.727053053095005, 192247.699413469905267, 192257.671820557938190, 192267.644274314923678, 192277.616774738737149, 192287.589321827224921, 192297.561915578175103, 192307.534555989375804, 192317.507243058702443, 192327.479976783972234, 192337.452757163031492, 192347.425584193668328, 192357.398457873641746, 192367.371378200885374, 192377.344345173216425, 192387.317358788393904, 192397.290419044293230, 192407.263525938702514, 192417.236679469468072, 192427.209879634436220, 192437.183126431365963, 192447.156419858132722, 192457.129759912553709, 192467.103146592504345, 192477.076579895714531, 192487.050059820059687, 192497.023586363386130, 192506.997159523481969, 192516.970779298222624, 192526.944445685396204, 192536.918158682790818, 192546.891918288310990, 192556.865724499773933, 192566.839577314967755, 192576.813476731738774, 192586.787422747904202, 192596.761415361339459, 192606.735454569861759, 192616.709540371230105, 192626.683672763290815, 192636.657851743977517, 192646.632077311020112, 192656.606349462264916, 192666.580668195587350, 192676.555033508717315, 192686.529445399617543, 192696.503903866017936, 192706.478408905823017, 192716.452960516762687, 192726.427558696741471, 192736.402203443576582, 192746.376894755143439, 192756.351632629201049, 192766.326417063595727, 192776.301248056231998, 192786.276125604868867, 192796.251049707323546, 192806.226020361500559, 192816.201037565158913, 192826.176101316174027, 192836.151211612392217, 192846.126368451630697, 192856.101571831706678, 192866.076821750437375, 192876.052118205727311, 192886.027461195393698, 192896.002850717224646, 192905.978286769066472, 192915.953769348765491, 192925.929298454168020, 192935.904874083091272, 192945.880496233381564, 192955.856164902885212, 192965.831880089390324, 192975.807641790801426, 192985.783450004935730, 192995.759304729581345, 193005.735205962642794, 193015.711153701937292, 193025.687147945223842, 193035.663188690465176, 193045.639275935420301, 193055.615409677935531, 193065.591589915886289, 193075.567816647031577, 193085.544089869305026, 193095.520409580465639, 193105.496775778417941, 193115.473188461008249, 193125.449647625966463, 193135.426153271255316, 193145.402705394633813, 193155.379303993977373, 193165.355949067161418, 193175.332640611974057, 193185.309378626203397, 193195.286163107812172, 193205.262994054588489, 193215.239871464349562, 193225.216795334970811, 193235.193765664240345, 193245.170782450062688, 193255.147845690255053, 193265.124955382663757, 193275.102111525164219, 193285.079314115486341, 193295.056563151563751, 193305.033858631271869, 193315.011200552398805, 193324.988588912761770, 193334.966023710236186, 193344.943504942639265, 193354.921032607904635, 193364.898606703820406, 193374.876227228174685, 193384.853894178901101, 193394.831607553816866, 193404.809367350680986, 193414.787173567456193, 193424.765026201959699, 193434.742925252008718, 193444.720870715478668, 193454.698862590186764, 193464.676900873950217, 193474.654985564731760, 193484.633116660232190, 193494.611294158414239, 193504.589518057066016, 193514.567788354062941, 193524.546105047193123, 193534.524468134390190, 193544.502877613442251, 193554.481333482224727, 193564.459835738554830, 193574.438384380337084, 193584.416979405301390, 193594.395620811468689, 193604.374308596568881, 193614.353042758477386, 193624.331823295069626, 193634.310650204162812, 193644.289523483603261, 193654.268443131237291, 193664.247409144911217, 193674.226421522558667, 193684.205480261967750, 193694.184585360955680, 193704.163736817397876, 193714.142934629169758, 193724.122178794088541, 193734.101469310029643, 193744.080806174897589, 193754.060189386393176, 193764.039618942537345, 193774.019094841059996, 193783.998617079865653, 193793.978185656829737, 193803.957800569740357, 193813.937461816472933, 193823.917169394931989, 193833.896923302934738, 193843.876723538327496, 193853.856570098927477, 193863.836462982668309, 193873.816402187396307, 193883.796387710899580, 193893.776419551082654, 193903.756497705791844, 193913.736622172873467, 193923.716792950144736, 193933.697010035539279, 193943.677273426874308, 193953.657583122025244, 193963.637939118838403, 193973.618341415160103, 193983.598790008807555, 193993.579284897656180, 194003.559826079668710, 194013.540413552575046, 194023.521047314308817, 194033.501727362658130, 194043.482453695527511, 194053.463226310792379, 194063.444045206269948, 194073.424910379806533, 194083.405821829306660, 194093.386779552616645, 194103.367783547611907, 194113.348833812080557, 194123.329930343956221, 194133.311073141056113, 194143.292262201226549, 194153.273497522372054, 194163.254779102368047, 194173.236106939031743, 194183.217481030209456, 194193.198901373834815, 194203.180367967695929, 194213.161880809639115, 194223.143439897598000, 194233.125045229389798, 194243.106696802919032, 194253.088394615973812, 194263.070138666487765, 194273.051928952278104, 194283.033765471220249, 194293.015648221189622, 194302.997577200032538, 194312.979552405595314, 194322.961573835782474, 194332.943641488469439, 194342.925755361444317, 194352.907915452669840, 194362.890121759875910, 194372.872374281054363, 194382.854673014022410, 194392.837017956626369, 194402.819409106741659, 194412.801846462272806, 194422.784330021037022, 194432.766859780909726, 194442.749435739766341, 194452.732057895453181, 194462.714726245903876, 194472.697440788877429, 194482.680201522307470, 194492.663008444040315, 194502.645861551951384, 194512.628760843916098, 194522.611706317780772, 194532.594697971420828, 194542.577735802740790, 194552.560819809528766, 194562.543949989747489, 194572.527126341185067, 194582.510348861687817, 194592.493617549247574, 194602.476932401652448, 194612.460293416748755, 194622.443700592499226, 194632.427153926633764, 194642.410653417173307, 194652.394199061876861, 194662.377790858678054, 194672.361428805394098, 194682.345112899900414, 194692.328843140101526, 194702.312619523872854, 194712.296442049060715, 194722.280310713540530, 194732.264225515187718, 194742.248186451877700, 194752.232193521485897, 194762.216246721887728, 194772.200346050900407, 194782.184491506428458, 194792.168683086376404, 194802.152920788590563, 194812.137204610975459, 194822.121534551348304, 194832.105910607613623, 194842.090332777675940, 194852.074801059323363, 194862.059315450489521, 194872.043875949078938, 194882.028482552879723, 194892.013135259854607, 194901.997834067791700, 194911.982578974624630, 194921.967369978228817, 194931.952207076479681, 194941.937090267194435, 194951.922019548306707, 194961.906994917721022, 194971.892016373225488, 194981.877083912753733, 194991.862197534210281, 195001.847357235354139, 195011.832563014206244, 195021.817814868496498, 195031.803112796245841, 195041.788456795271486, 195051.773846863419749, 195061.759282998595154, 195071.744765198702225, 195081.730293461558176, 195091.715867785096634, 195101.701488167163916, 195111.687154605693650, 195121.672867098473944, 195131.658625643409323, 195141.644430238462519, 195151.630280881392537, 195161.616177570162108, 195171.602120302646654, 195181.588109076692490, 195191.574143890204141, 195201.560224741027923, 195211.546351627097465, 195221.532524546259083, 195231.518743496417301, 195241.505008475389332, 195251.491319481137907, 195261.477676511480240, 195271.464079564349959, 195281.450528637593379, 195291.437023729144130, 195301.423564836761216, 195311.410151958494680, 195321.396785092103528, 195331.383464235521387, 195341.370189386652783, 195351.356960543314926, 195361.343777703441447, 195371.330640864878660, 195381.317550025589298, 195391.304505183332367, 195401.291506336099701, 195411.278553481766721, 195421.265646618150640, 195431.252785743185086, 195441.239970854716375, 195451.227201950707240, 195461.214479028974893, 195471.201802087423857, 195481.189171123929555, 195491.176586136396509, 195501.164047122700140, 195511.151554080774076, 195521.139107008406427, 195531.126705903530819, 195541.114350764080882, 195551.102041587902931, 195561.089778372901492, 195571.077561116922880, 195581.065389817929827, 195591.053264473710442, 195601.041185082227457, 195611.029151641356293, 195621.017164148943266, 195631.005222602951108, 195640.993327001167927, 195650.981477341614664, 195660.969673622050323, 195670.957915840466740, 195680.946203994681127, 195690.934538082627114, 195700.922918102180120, 195710.911344051215565, 195720.899815927667078, 195730.888333729380975, 195740.876897454261780, 195750.865507100243121, 195760.854162665142212, 195770.842864146892680, 195780.831611543399049, 195790.820404852478532, 195800.809244072122965, 195810.798129200178664, 195820.787060234550154, 195830.776037173112854, 195840.765060013713082, 195850.754128754371777, 195860.743243392877048, 195870.732403927133419, 195880.721610355074517, 195890.710862674575765, 195900.700160883541685, 195910.689504979818594, 195920.678894961340120, 195930.668330826039892, 195940.657812571764225, 195950.647340196388541, 195960.636913697817363, 195970.626533073984319, 195980.616198322764831, 195990.605909442063421, 196000.595666429697303, 196010.585469283716520, 196020.575318001880078, 196030.565212582150707, 196040.555153022432933, 196050.545139320573071, 196060.535171474533854, 196070.525249482132494, 196080.515373341302620, 196090.505543049977859, 196100.495758606062736, 196110.486020007374464, 196120.476327251846669, 196130.466680337412981, 196140.457079261948820, 196150.447524023329606, 196160.438014619488968, 196170.428551048302324, 196180.419133307703305, 196190.409761395567330, 196200.400435309769819, 196210.391155048244400, 196220.381920608924702, 196230.372731989598833, 196240.363589188258629, 196250.354492202808615, 196260.345441031124210, 196270.336435671080835, 196280.327476120641222, 196290.318562377680792, 196300.309694440045860, 196310.300872305699158, 196320.292095972545212, 196330.283365438488545, 196340.274680701346369, 196350.266041759139625, 196360.257448609714629, 196370.248901251005009, 196380.240399680857081, 196390.231943897204474, 196400.223533897951711, 196410.215169681032421, 196420.206851244292920, 196430.198578585666837, 196440.190351703087799, 196450.182170594402123, 196460.174035257572541, 196470.165945690445369, 196480.157901890983339, 196490.149903857032768, 196500.141951586556388, 196510.134045077429619, 196520.126184327556984, 196530.118369334843010, 196540.110600097250426, 196550.102876612567343, 196560.095198878814699, 196570.087566893867915, 196580.079980655573308, 196590.072440161922714, 196600.064945410762448, 196610.057496400026139, 196620.050093127647415, 196630.042735591501696, 196640.035423789493507, 196650.028157719527371, 196660.020937379566021, 196670.013762767455773, 196680.006633881101152, 196689.999550718464889, 196699.992513277451508, 196709.985521555907326, 196719.978575551795075, 196729.971675263019279, 196739.964820687513566, 196749.958011823095148, 196759.951248667784967, 196769.944531219458440, 196779.937859475961886, 196789.931233435316244, 196799.924653095338726, 196809.918118454021169, 196819.911629509180784, 196829.905186258838512, 196839.898788700782461, 196849.892436833004467, 196859.886130653496366, 196869.879870159988059, 196879.873655350500485, 196889.867486222938169, 196899.861362775205635, 196909.855285005236510, 196919.849252910906216, 196929.843266490119277, 196939.837325740838423, 196949.831430660968181, 196959.825581248383969, 196969.819777501048520, 196979.814019416837255, 196989.808306993712904, 196999.802640229550889, 197009.797019122255733, 197019.791443669819273, 197029.785913870058721, 197039.780429720936809, 197049.774991220358061, 197059.769598366256105, 197069.764251156564569, 197079.758949589158874, 197089.753693661943544, 197099.748483372881310, 197109.743318719905801, 197119.738199700834230, 197129.733126313716639, 197139.728098556370242, 197149.723116426757770, 197159.718179922783747, 197169.713289042381803, 197179.708443783427356, 197189.703644143883139, 197199.698890121653676, 197209.694181714643491, 197219.689518920815317, 197229.684901738073677, 197239.680330164293991, 197249.675804197438993, 197259.671323835442308, 197269.666889076150255, 197279.662499917583773, 197289.658156357589178, 197299.653858394100098, 197309.649606025079265, 197319.645399248402100, 197329.641238062002230, 197339.637122463813284, 197349.633052451710682, 197359.629028023686260, 197369.625049177615438, 197379.621115911460947, 197389.617228223098209, 197399.613386110519059, 197409.609589571540710, 197419.605838604154997, 197429.602133206266444, 197439.598473375808680, 197449.594859110715333, 197459.591290408861823, 197469.587767268269090, 197479.584289686754346, 197489.580857662309427, 197499.577471192867961, 197509.574130276276264, 197519.570834910526173, 197529.567585093493108, 197539.564380823168904, 197549.561222097458085, 197559.558108914294280, 197569.555041271494702, 197579.552019167109393, 197589.549042599071981, 197599.546111565228784, 197609.543226063542534, 197619.540386091917753, 197629.537591648346279, 197639.534842730674427, 197649.532139336864930, 197659.529481464909622, 197669.526869112625718, 197679.524302277975949, 197689.521780958952149, 197699.519305153400637, 197709.516874859342352, 197719.514490074565401, 197729.512150797148934, 197739.509857024939265, 197749.507608755840920, 197759.505405987845734, 197769.503248718858231, 197779.501136946812039, 197789.499070669640787, 197799.497049885248998, 197809.495074591628509, 197819.493144786654739, 197829.491260468261316, 197839.489421634410974, 197849.487628283037338, 197859.485880411986727, 197869.484178019309184, 197879.482521102851024, 197889.480909660604084, 197899.479343690414680, 197909.477823190303752, 197919.476348158175824, 197929.474918591935420, 197939.473534489574376, 197949.472195848997217, 197959.470902668079361, 197969.469654944870854, 197979.468452677218011, 197989.467295863054460, 197999.466184500372037, 198009.465118587075267, 198019.464098121039569, 198029.463123100285884, 198039.462193522718735, 198049.461309386242647, 198059.460470688878559, 198069.459677428443683, 198079.458929602958960, 198089.458227210387122, 198099.457570248545380, 198109.456958715454675, 198119.456392609048635, 198129.455871927231783, 198139.455396667966852, 198149.454966829158366, 198159.454582408798160, 198169.454243404790759, 198179.453949815069791, 198189.453701637597987, 198199.453498870250769, 198209.453341511049075, 198219.453229557868326, 198229.453163008642150, 198239.453141861391487, 198249.453166113962652, 198259.453235764347482, 198269.453350810450502, 198279.453511250234442, 198289.453717081691138, 198299.453968302637804, 198309.454264911124483, 198319.454606905026594, 198329.454994282306870, 198339.455427040869836, 198349.455905178736430, 198359.456428693782073, 198369.456997583940392, 198379.457611847232329, 198389.458271481533302, 198399.458976484776940, 198409.459726854925975, 198419.460522589943139, 198429.461363687732955, 198439.462250146258157, 198449.463181963452371, 198459.464159137249226, 198469.465181665611453, 198479.466249546530889, 198489.467362777853850, 198499.468521357543068, 198509.469725283590378, 198519.470974553871201, 198529.472269166435581, 198539.473609119129833, 198549.474994409945793, 198559.476425036787987, 198569.477900997706456, 198579.479422290518414, 198589.480988913186593, 198599.482600863702828, 198609.484258140000748, 198619.485960740072187, 198629.487708661763463, 198639.489501903095515, 198649.491340461943764, 198659.493224336387357, 198669.495153524185298, 198679.497128023474943, 198689.499147832044400, 198699.501212947972817, 198709.503323369077407, 198719.505479093408212, 198729.507680118898861, 198739.509926443482982, 198749.512218065065099, 198759.514554981607944, 198769.516937191132456, 198779.519364691514056, 198789.521837480744580, 198799.524355556728551, 198809.526918917457806, 198819.529527560895076, 198829.532181484915782, 198839.534880687511759, 198849.537625166645739, 198859.540414920280455, 198869.543249946291326, 198879.546130242699292, 198889.549055807496188, 198899.552026638499228, 198909.555042733700247, 198919.558104091178393, 198929.561210708721774, 198939.564362584380433, 198949.567559716058895, 198959.570802101719892, 198969.574089739326155, 198979.577422626840416, 198989.580800762225408, 198999.584224143356550, 199009.587692768254783, 199019.591206634853734, 199029.594765741087031, 199039.598370085004717, 199049.602019664424006, 199059.605714477365837, 199069.609454521792941, 199079.613239795609843, 199089.617070296895690, 199099.620946023438592, 199109.624866973317694, 199119.628833144408418, 199129.632844534702599, 199139.636901142162969, 199149.641002964752261, 199159.645150000374997, 199169.649342247023014, 199179.653579702659044, 199189.657862365245819, 199199.662190232687863, 199209.666563303006114, 199219.670981574105099, 199229.675445044005755, 199239.679953710612608, 199249.684507571888389, 199259.689106625766726, 199269.693750870268559, 199279.698440303298412, 199289.703174922848120, 199299.707954726880416, 199309.712779713328928, 199319.717649880156387, 199329.722565225325525, 199339.727525746769970, 199349.732531442481559, 199359.737582310452126, 199369.742678348586196, 199379.747819554846501, 199389.753005927195773, 199399.758237463625846, 199409.763514162041247, 199419.768836020492017, 199429.774203036795370, 199439.779615209117765, 199449.785072535218205, 199459.790575013146736, 199469.796122640895192, 199479.801715416338993, 199489.807353337528184, 199499.813036402396392, 199509.818764608877245, 199519.824537954933476, 199529.830356438586023, 199539.836220057739411, 199549.842128810356371, 199559.848082694457844, 199569.854081707948353, 199579.860125848790631, 199589.866215115005616, 199599.872349504497834, 199609.878529015230015, 199619.884753645252204, 199629.891023392410716, 199639.897338254755596, 199649.903698230220471, 199659.910103316738969, 199669.916553512361133, 199679.923048814962385, 199689.929589222563663, 199699.936174733069493, 199709.942805344529916, 199719.949481054849457, 199729.956201862049056, 199739.962967764062341, 199749.969778758822940, 199759.976634844322689, 199769.983536018553423, 199779.990482279419666, 199789.997473625029670, 199800.004510053171543, 199810.011591561924433, 199820.018718149192864, 199830.025889812997775, 199840.033106551360106, 199850.040368362097070, 199860.047675243258709, 199870.055027192778653, 199880.062424208736047, 199890.069866288977209, 199900.077353431552183, 199910.084885634394595, 199920.092462895408971, 199930.100085212674458, 199940.107752584153786, 199950.115465007751482, 199960.123222481459379, 199970.131025003240211, 199980.138872571114916, 199990.146765182988020, 200000.154702836938668, 200010.162685530784074, 200020.170713262574282, 200030.178786030301126, 200040.186903831898235, 200050.195066665386548, 200060.203274528728798, 200070.211527419800404, 200080.219825336680515, 200090.228168277331861, 200100.236556239688070, 200110.244989221740980, 200120.253467221511528, 200130.261990236846032, 200140.270558265823638, 200150.279171306407079, 200160.287829356588190, 200170.296532414242392, 200180.305280477419728, 200190.314073544082930, 200200.322911612252938, 200210.331794679834275, 200220.340722744847881, 200230.349695805227384, 200240.358713858964620, 200250.367776904051425, 200260.376884938450530, 200270.386037960124668, 200280.395235967094777, 200290.404478957294486, 200300.413766928715631, 200310.423099879320944, 200320.432477807131363, 200330.441900710080517, 200340.451368586131139, 200350.460881433333270, 200360.470439249620540, 200370.480042032897472, 200380.489689781272318, 200390.499382492649602, 200400.509120165050263, 200410.518902796378825, 200420.528730384714436, 200430.538602927932516, 200440.548520424083108, 200450.558482871158049, 200460.568490267061861, 200470.578542609786382, 200480.588639897410758, 200490.598782127839513, 200500.608969299035380, 200510.619201408961089, 200520.629478455695789, 200530.639800437144004, 200540.650167351326672, 200550.660579196177423, 200560.671035969717195, 200570.681537669879617, 200580.692084294714732, 200590.702675842185272, 200600.713312310224865, 200610.723993696854450, 200620.734720000065863, 200630.745491217850940, 200640.756307348114206, 200650.767168388905702, 200660.778074338217266, 200670.789025194011629, 200680.800020954280626, 200690.811061616957886, 200700.822147180093452, 200710.833277641620953, 200720.844452999590430, 200730.855673251935514, 200740.866938396618934, 200750.878248431690736, 200760.889603355113650, 200770.901003164850408, 200780.912447858863743, 200790.923937435232801, 200800.935471891862107, 200810.947051226743497, 200820.958675437868806, 200830.970344523229869, 200840.982058480876731, 200850.993817308684811, 200861.005621004704153, 200871.017469566897489, 200881.029362993256655, 200891.041301281860797, 200901.053284430527128, 200911.065312437334796, 200921.077385300246533, 200931.089503017370589, 200941.101665586524177, 200951.113873005757341, 200961.126125273091020, 200971.138422386517050, 200981.150764343939954, 200991.163151143409777, 201001.175582782947458, 201011.188059260515729, 201021.200580574077321, 201031.213146721624071, 201041.225757701147813, 201051.238413510727696, 201061.251114148210036, 201071.263859611673979, 201081.276649899111362, 201091.289485008484917, 201101.302364937815582, 201111.315289685036987, 201121.328259248199174, 201131.341273625264876, 201141.354332814225927, 201151.367436813074164, 201161.380585619801423, 201171.393779232428642, 201181.407017648947658, 201191.420300867292099, 201201.433628885482904, 201211.447001701570116, 201221.460419313516468, 201231.473881719226483, 201241.487388916779310, 201251.500940904195886, 201261.514537679409841, 201271.528179240442114, 201281.541865585284540, 201291.555596711928956, 201301.569372618367197, 201311.583193302561995, 201321.597058762592496, 201331.610968996363226, 201341.624924001924228, 201351.638923777238233, 201361.652968320326181, 201371.667057629209012, 201381.681191701849457, 201391.695370536210248, 201401.709594130370533, 201411.723862482234836, 201421.738175589853199, 201431.752533451217460, 201441.766936064348556, 201451.781383427180117, 201461.795875537762186, 201471.810412394086597, 201481.824993994116085, 201491.839620335900690, 201501.854291417374043, 201511.869007236586185, 201521.883767791528953, 201531.898573080223287, 201541.913423100573709, 201551.928317850717576, 201561.943257328530308, 201571.958241532091051, 201581.973270459362539, 201591.988344108336605, 201602.003462477063295, 201612.018625563476235, 201622.033833365596365, 201632.049085881502833, 201642.064383109071059, 201652.079725046380190, 201662.095111691422062, 201672.110543042188510, 201682.126019096671371, 201692.141539852862479, 201702.157105308840983, 201712.172715462482302, 201722.188370311894687, 201732.204069855069974, 201742.219814089941792, 201752.235603014560184, 201762.251436626916984, 201772.267314925033133, 201782.283237906900467, 201792.299205570539925, 201802.315217913856031, 201812.331274935073452, 201822.347376631951192, 201832.363523002626607, 201842.379714045091532, 201852.395949757308699, 201862.412230137299048, 201872.428555183083517, 201882.444924892712152, 201892.461339264089474, 201902.477798295294633, 201912.494301984290360, 201922.510850329097593, 201932.527443327737274, 201942.544080978230340, 201952.560763278510422, 201962.577490226656664, 201972.594261820631800, 201982.611078058514977, 201992.627938938210718, 202002.644844457769068, 202012.661794615210965, 202022.678789408557350, 202032.695828835741850, 202042.712912894872716, 202052.730041583912680, 202062.747214900824474, 202072.764432843687246, 202082.781695410521934, 202092.799002599262167, 202102.816354407928884, 202112.833750834572129, 202122.851191877212841, 202132.868677533784648, 202142.886207802337594, 202152.903782680921722, 202162.921402167499764, 202172.939066260092659, 202182.956774956750451, 202192.974528255406767, 202202.992326154111652, 202213.010168650915148, 202223.028055743721779, 202233.045987430668902, 202243.063963709690142, 202253.081984578835545, 202263.100050036038738, 202273.118160079437075, 202283.136314706935082, 202293.154513916611904, 202303.172757706430275, 202313.191046074440237, 202323.209379018662730, 202333.227756537060486, 202343.246178627712652, 202353.264645288552856, 202363.283156517660245, 202373.301712313026655, 202383.320312672643922, 202393.338957594562089, 202403.357647076802095, 202413.376381117355777, 202423.395159714214969, 202433.413982865429716, 202443.432850569050061, 202453.451762822951423, 202463.470719625271158, 202473.489720974059310, 202483.508766867220402, 202493.527857302804478, 202503.546992278919788, 202513.566171793412650, 202523.585395844449522, 202533.604664429993136, 202543.623977548006224, 202553.643335196597036, 202563.662737373728305, 202573.682184077420970, 202583.701675305725075, 202593.721211056632455, 202603.740791328164050, 202613.760416118311696, 202623.780085425125435, 202633.799799246626208, 202643.819557580834953, 202653.839360425772611, 202663.859207779431017, 202673.879099639802007, 202683.899036005022936, 202693.919016872969223, 202703.939042241749121, 202713.959112109383568, 202723.979226473835297, 202733.999385333183454, 202744.019588685448980, 202754.039836528536398, 202764.060128860641271, 202774.080465679668123, 202784.100846983696101, 202794.121272770687938, 202804.141743038693676, 202814.162257785763359, 202824.182817009859718, 202834.203420709120110, 202844.224068881390849, 202854.244761524809292, 202864.265498637454584, 202874.286280217173044, 202884.307106262102025, 202894.327976770320674, 202904.348891739733517, 202914.369851168390596, 202924.390855054371059, 202934.411903395608533, 202944.432996190211270, 202954.454133436229313, 202964.475315131567186, 202974.496541274304036, 202984.517811862548115, 202994.539126894174842, 203004.560486367292469, 203014.581890279951040, 203024.603338630113285, 203034.624831415829249, 203044.646368635148974, 203054.667950286035193, 203064.689576366625261, 203074.711246874823701, 203084.732961808709661, 203094.754721166333184, 203104.776524945715209, 203114.798373144818470, 203124.820265761722112, 203134.842202794447076, 203144.864184241043404, 203154.886210099502932, 203164.908280367875705, 203174.930395044153556, 203184.952554126444738, 203194.974757612653775, 203204.997005500888918, 203215.019297789200209, 203225.041634475579485, 203235.064015558076790, 203245.086441034683958, 203255.108910903421929, 203265.131425162369851, 203275.153983809577767, 203285.176586843008408, 203295.199234260711819, 203305.221926060708938, 203315.244662241078913, 203325.267442799813580, 203335.290267734904774, 203345.313137044489849, 203355.336050726502435, 203365.359008779021678, 203375.382011200039415, 203385.405057987634791, 203395.428149139799643, 203405.451284654642222, 203415.474464530096157, 203425.497688764211489, 203435.520957355096471, 203445.544270300684730, 203455.567627599055413, 203465.591029248287668, 203475.614475246315124, 203485.637965591216926, 203495.661500281101326, 203505.685079313901952, 203515.708702687697951, 203525.732370400452055, 203535.756082450272515, 203545.779838835209375, 203555.803639553254470, 203565.827484602457844, 203575.851373980869539, 203585.875307686452288, 203595.899285717343446, 203605.923308071505744, 203615.947374746960122, 203625.971485741843935, 203635.995641054149019, 203646.019840681809001, 203656.044084623019444, 203666.068372875655768, 203676.092705437913537, 203686.117082307726378, 203696.141503483144334, 203706.165968962246552, 203716.190478742995765, 203726.215032823529327, 203736.239631201809971, 203746.264273875887739, 203756.288960843841778, 203766.313692103693029, 203776.338467653404223, 203786.363287491141818, 203796.388151614810340, 203806.413060022576246, 203816.438012712373165, 203826.463009682309348, 203836.488050930434838, 203846.513136454683263, 203856.538266253221082, 203866.563440323981922, 203876.588658665074036, 203886.613921274576569, 203896.639228150423151, 203906.664579290722031, 203916.689974693494150, 203926.715414356760448, 203936.740898278629174, 203946.766426457063062, 203956.791998890141258, 203966.817615575913806, 203976.843276512430748, 203986.868981697683921, 203996.894731129723368, 204006.920524806628237, 204016.946362726506777, 204026.972244887205306, 204036.998171286948491, 204047.024141923699062, 204057.050156795536168, 204067.076215900451643, 204077.102319236524636, 204087.128466801776085, 204097.154658594314242, 204107.180894612072734, 204117.207174853247125, 204127.233499315712834, 204137.259867997636320, 204147.286280896980315, 204157.312738011882175, 204167.339239340333734, 204177.365784880355932, 204187.392374630027916, 204197.419008587341523, 204207.445686750463210, 204217.472409117326606, 204227.499175686039962, 204237.525986454624217, 204247.552841421071207, 204257.579740583518287, 204267.606683939986397, 204277.633671488525579, 204287.660703227156773, 204297.687779153930023, 204307.714899266895372, 204317.742063564161072, 204327.769272043660749, 204337.796524703531759, 204347.823821541795041, 204357.851162556500640, 204367.878547745698597, 204377.905977107409853, 204387.933450639771763, 204397.960968340688851, 204407.988530208327575, 204418.016136240679771, 204428.043786435853690, 204438.071480791841168, 204448.099219306721352, 204458.127001978515182, 204468.154828805301804, 204478.182699785189470, 204488.210614916053601, 204498.238574196089758, 204508.266577623347985, 204518.294625195820117, 204528.322716911585303, 204538.350852768664481, 204548.379032765165903, 204558.407256899110507, 204568.435525168519234, 204578.463837571529439, 204588.492194106074749, 204598.520594770350726, 204608.549039562291000, 204618.577528479945613, 204628.606061521481024, 204638.634638684859965, 204648.663259968161583, 204658.691925369406817, 204668.720634886733023, 204678.749388518073829, 204688.778186261566589, 204698.807028115261346, 204708.835914077208145, 204718.864844145427924, 204728.893818317999830, 204738.922836593003012, 204748.951898968429305, 204758.981005442386959, 204769.010156012926018, 204779.039350678038318, 204789.068589435948525, 204799.097872284473851, 204809.127199221897172, 204819.156570246093906, 204829.185985355230514, 204839.215444547327934, 204849.244947820465313, 204859.274495172634488, 204869.304086601972813, 204879.333722106501227, 204889.363401684269775, 204899.393125333357602, 204909.422893051814754, 204919.452704837662168, 204929.482560689008096, 204939.512460603902582, 204949.542404580424773, 204959.572392616566503, 204969.602424710436026, 204979.632500860054279, 204989.662621063529514, 204999.692785318882670, 205009.722993624192895, 205019.753245977510232, 205029.783542376913829, 205039.813882820453728, 205049.844267306150869, 205059.874695832171710, 205069.905168396449881, 205079.935684997122735, 205089.966245632211212, 205099.996850299823564, 205110.027498997980729, 205120.058191724732751, 205130.088928478216985, 205140.119709256367059, 205150.150534057378536, 205160.181402879214147, 205170.212315720040351, 205180.243272577819880, 205190.274273450631881, 205200.305318336613709, 205210.336407233728096, 205220.367540140083292, 205230.398717053787550, 205240.429937972803600, 205250.461202895297902, 205260.492511819291394, 205270.523864742805017, 205280.555261664005229, 205290.586702580796555, 205300.618187491432764, 205310.649716393818380, 205320.681289286119863, 205330.712906166387256, 205340.744567032612395, 205350.776271882961737, 205360.808020715427119, 205370.839813528145896, 205380.871650319080800, 205390.903531086427392, 205400.935455828119302, 205410.967424542322988, 205420.999437227030285, 205431.031493880378548, 205441.063594500388717, 205451.095739085081732, 205461.127927632653154, 205471.160160141094821, 205481.192436608456774, 205491.224757032847265, 205501.257121412316337, 205511.289529744914034, 205521.321982028719503, 205531.354478261782788, 205541.387018442299450, 205551.419602568115806, 205561.452230637514731, 205571.484902648400748, 205581.517618598969420, 205591.550378487183480, 205601.583182311209384, 205611.616030069068074, 205621.648921758780489, 205631.681857378513087, 205641.714836926286807, 205651.747860400180798, 205661.780927798215998, 205671.814039118558867, 205681.847194359230343, 205691.880393518280471, 205701.913636593817500, 205711.946923583891476, 205721.980254486552440, 205732.013629299966851, 205742.047048022097442, 205752.080510651023360, 205762.114017184881959, 205772.147567621723283, 205782.181161959568271, 205792.214800196612487, 205802.248482330789557, 205812.282208360295044, 205822.315978283062577, 205832.349792097287718, 205842.383649800962303, 205852.417551392194582, 205862.451496869092807, 205872.485486229677917, 205882.519519472087268, 205892.553596594341798, 205902.587717594520655, 205912.621882470673881, 205922.656091220938833, 205932.690343843365554, 205942.724640336004086, 205952.758980696962681, 205962.793364924291382, 205972.827793016098440, 205982.862264970433898, 205992.896780785376905, 206002.931340459006606, 206012.965943989373045, 206023.000591374642681, 206033.035282612778246, 206043.070017701946199, 206053.104796640109271, 206063.139619425492128, 206073.174486056115711, 206083.209396530000959, 206093.244350845285226, 206103.279349000018556, 206113.314390992280096, 206123.349476820207201, 206133.384606481762603, 206143.419779975141864, 206153.454997298365925, 206163.490258449513931, 206173.525563426665030, 206183.560912227927474, 206193.596304851293098, 206203.631741294986568, 206213.667221556970617, 206223.702745635411702, 206233.738313528272556, 206243.773925233748741, 206253.809580749832094, 206263.845280074689072, 206273.881023206340615, 206283.916810142924078, 206293.952640882402193, 206303.988515423028730, 206314.024433762708213, 206324.060395899694413, 206334.096401831891853, 206344.132451557496097, 206354.168545074586291, 206364.204682381241582, 206374.240863475453807, 206384.277088355476735, 206394.313357019214891, 206404.349669464863837, 206414.386025690473616, 206424.422425694152480, 206434.458869473921368, 206444.495357027917635, 206454.531888354191324, 206464.568463450879790, 206474.605082316062180, 206484.641744947730331, 206494.678451344050700, 206504.715201503073331, 206514.751995422964683, 206524.788833101658383, 206534.825714537379099, 206544.862639728118666, 206554.899608672043541, 206564.936621367174666, 206574.973677811649395, 206585.010778003488667, 206595.047921940858942, 206605.085109621752053, 206615.122341044363566, 206625.159616206685314, 206635.196935106854653, 206645.234297742979834, 206655.271704113081796, 206665.309154215268791, 206675.346648047649069, 206685.384185608301777, 206695.421766895306064, 206705.459391906799283, 206715.497060640773270, 206725.534773095423589, 206735.572529268742073, 206745.610329158895183, 206755.648172763932962, 206765.686060081992764, 206775.723991111037321, 206785.761965849262197, 206795.799984294746537, 206805.838046445627697, 206815.876152299868409, 206825.914301855664235, 206835.952495111036114, 206845.990732064121403, 206856.029012712970143, 206866.067337055748794, 206876.105705090507399, 206886.144116815296002, 206896.182572228251956, 206906.221071327396203, 206916.259614110953407, 206926.298200576915406, 206936.336830723419553, 206946.375504548457684, 206956.414222050283570, 206966.452983226830838, 206976.491788076353259, 206986.530636596813565, 206996.569528786349110, 207006.608464643097250, 207016.647444165049819, 207026.686467350373277, 207036.725534197146771, 207046.764644703478552, 207056.803798867418664, 207066.842996687133564, 207076.882238160644192, 207086.921523286087904, 207096.960852061485639, 207107.000224485091167, 207117.039640554809012, 207127.079100268863840, 207137.118603625363903, 207147.158150622271933, 207157.197741257812595, 207167.237375530006830, 207177.277053437021095, 207187.316774976876331, 207197.356540147709893, 207207.396348947571823, 207217.436201374628581, 207227.476097426959313, 207237.516037102643168, 207247.556020399788395, 207257.596047316445038, 207267.636117850779556, 207277.676232000812888, 207287.716389764740597, 207297.756591140583623, 207307.796836126508424, 207317.837124720535940, 207327.877456920774421, 207337.917832725390326, 207347.958252132404596, 207357.998715139954584, 207368.039221746148542, 207378.079771949065616, 207388.120365746814059, 207398.161003137531225, 207408.201684119267156, 207418.242408690071898, 207428.283176848170115, 207438.323988591553643, 207448.364843918359838, 207458.405742826696951, 207468.446685314731440, 207478.487671380455140, 207488.528701021976303, 207498.569774237490492, 207508.610891024989542, 207518.652051382698119, 207528.693255308549851, 207538.734502800827613, 207548.775793857494136, 207558.817128476744983, 207568.858506656601094, 207578.899928395199822, 207588.941393690736732, 207598.982902541145450, 207609.024454944650643, 207619.066050899302354, 207629.107690403208835, 207639.149373454507440, 207649.191100051248213, 207659.232870191568509, 207669.274683873605682, 207679.316541095409775, 207689.358441855089040, 207699.400386150780832, 207709.442373980564298, 207719.484405342518585, 207729.526480234868359, 207739.568598655518144, 207749.610760602750815, 207759.652966074587312, 207769.695215069194091, 207779.737507584592095, 207789.779843618947780, 207799.822223170340294, 207809.864646236936096, 207819.907112816727022, 207829.949622907908633, 207839.992176508560078, 207850.034773616818711, 207860.077414230734576, 207870.120098348474130, 207880.162825968087418, 207890.205597087711794, 207900.248411705484614, 207910.291269819455920, 207920.334171427792171, 207930.377116528543411, 207940.420105119876098, 207950.463137199840276, 207960.506212766573299, 207970.549331818241626, 207980.592494352837093, 207990.635700368526159, 208000.678949863417074, 208010.722242835676298, 208020.765579283324769, 208030.808959204528946, 208040.852382597338874, 208050.895849459921010, 208060.939359790383605, 208070.982913586834911, 208081.026510847324971, 208091.070151570049347, 208101.113835753058083, 208111.157563394546742, 208121.201334492507158, 208131.245149045163998, 208141.289007050567307, 208151.332908506796230, 208161.376853412017226, 208171.420841764338547, 208181.464873561868444, 208191.508948802744271, 208201.553067484986968, 208211.597229606792098, 208221.641435166267911, 208231.685684161522659, 208241.729976590664592, 208251.774312451743754, 208261.818691743013915, 208271.863114462466910, 208281.907580608240096, 208291.952090178529033, 208301.996643171296455, 208312.041239584825234, 208322.085879417078104, 208332.130562666308833, 208342.175289330567466, 208352.220059407904046, 208362.264872896543238, 208372.309729794535087, 208382.354630100016948, 208392.399573811155278, 208402.444560925912810, 208412.489591442601522, 208422.534665359155042, 208432.579782673856243, 208442.624943384696962, 208452.670147489843657, 208462.715394987433683, 208472.760685875546187, 208482.806020152260317, 208492.851397815829841, 208502.896818864217494, 208512.942283295706147, 208522.987791108258534, 208533.033342300041113, 208543.078936869191239, 208553.124574813846266, 208563.170256132056238, 208573.215980822045822, 208583.261748881835956, 208593.307560309593100, 208603.353415103396401, 208613.399313261412317, 208623.445254781749099, 208633.491239662515000, 208643.537267901818268, 208653.583339497854467, 208663.629454448586330, 208673.675612752296729, 208683.721814407035708, 208693.768059410940623, 208703.814347762119723, 208713.860679458681261, 208723.907054498733487, 208733.953472880501067, 208743.999934601975838, 208754.046439661353361, 208764.092988056712784, 208774.139579786191462, 208784.186214847984957, 208794.232893240114208, 208804.279614960745675, 208814.326380007987609, 208824.373188379919156, 208834.420040074823191, 208844.466935090604238, 208854.513873425545171, 208864.560855077754240, 208874.607880045281490, 208884.654948326293379, 208894.702059918927262, 208904.749214821262285, 208914.796413031464908, 208924.843654547643382, 208934.890939367935061, 208944.938267490419094, 208954.985638913261937, 208965.033053634630051, 208975.080511652602581, 208985.128012965258677, 208995.175557570793899, 209005.223145467316499, 209015.270776652905624, 209025.318451125785941, 209035.366168883949285, 209045.413929925678531, 209055.461734248965513, 209065.509581852005795, 209075.557472732936731, 209085.605406889837468, 209095.653384320816258, 209105.701405024126871, 209115.749468997790245, 209125.797576239914633, 209135.845726748666493, 209145.893920522183180, 209155.942157558660256, 209165.990437856089557, 209176.038761412637541, 209186.087128226499772, 209196.135538295755396, 209206.183991618541768, 209216.232488192996243, 209226.281028017227072, 209236.329611089371610, 209246.378237407596316, 209256.426906969980337, 209266.475619774631923, 209276.524375819775742, 209286.573175103490939, 209296.622017623856664, 209306.670903379097581, 209316.719832367292838, 209326.768804586550687, 209336.817820035095792, 209346.866878710919991, 209356.915980612247949, 209366.965125737217022, 209377.014314083906356, 209387.063545650511514, 209397.112820435140748, 209407.162138435844099, 209417.211499650904443, 209427.260904078342719, 209437.310351716296282, 209447.359842562960694, 209457.409376616444206, 209467.458953874855069, 209477.508574336330639, 209487.558237999008270, 209497.607944861054420, 209507.657694920548238, 209517.707488175656181, 209527.757324624573812, 209537.807204265322071, 209547.857127096096519, 209557.907093115005409, 209567.957102320215199, 209578.007154709775932, 209588.057250281999586, 209598.107389034877997, 209608.157570966519415, 209618.207796075177612, 209628.258064358960837, 209638.308375815890031, 209648.358730444248067, 209658.409128242084989, 209668.459569207567256, 209678.510053338861326, 209688.560580634046346, 209698.611151091259671, 209708.661764708725968, 209718.712421484495280, 209728.763121416675858, 209738.813864503492368, 209748.864650743053062, 209758.915480133466190, 209768.966352672927314, 209779.017268359544687, 209789.068227191426558, 209799.119229166768491, 209809.170274283649633, 209819.221362540236441, 209829.272493934724480, 209839.323668465134688, 209849.374886129691731, 209859.426146926532965, 209869.477450853766641, 209879.528797909530113, 209889.580188091989839, 209899.631621399283176, 209909.683097829518374, 209919.734617380861891, 209929.786180051509291, 209939.837785839481512, 209949.889434743003221, 209959.941126760153566, 209969.992861889157211, 209980.044640128093306, 209990.096461475186516, 210000.148325928428676, 210010.200233486073557, 210020.252184146258514, 210030.304177907120902, 210040.356214766710764, 210050.408294723310973, 210060.460417775000678, 210070.512583919888129, 210080.564793156168889, 210090.617045481980313, 210100.669340895459754, 210110.721679394715466, 210120.774060977943009, 210130.826485643221531, 210140.878953388804803, 210150.931464212742867, 210160.984018113173079, 210171.036615088291001, 210181.089255136263091, 210191.141938255139394, 210201.194664443144575, 210211.247433698386885, 210221.300246019061888, 210231.353101403248729, 210241.405999849084765, 210251.458941354823764, 210261.511925918486668, 210271.564953538269037, 210281.618024212366436, 210291.671137938858010, 210301.724294715910219, 210311.777494541689521, 210321.830737414333271, 210331.884023331920616, 210341.937352292705327, 210351.990724294795655, 210362.044139336270746, 210372.097597415413475, 210382.151098530273885, 210392.204642679018434, 210402.258229859784478, 210412.311860070767580, 210422.365533310075989, 210432.419249575847061, 210442.473008866247255, 210452.526811179443030, 210462.580656513571739, 210472.634544866770739, 210482.688476237235591, 210492.742450622987235, 210502.796468022337649, 210512.850528433365980, 210522.904631854209583, 210532.958778283005813, 210543.012967717979336, 210553.067200157209300, 210563.121475598862162, 210573.175794041104382, 210583.230155482102418, 210593.284559919935418, 210603.339007352828048, 210613.393497778859455, 210623.448031196312513, 210633.502607603179058, 210643.557226997741964, 210653.611889378080377, 210663.666594742360758, 210673.721343088749563, 210683.776134415384149, 210693.830968720401870, 210703.885846001969185, 210713.940766258252552, 210723.995729487447534, 210734.050735687575070, 210744.105784856947139, 210754.160876993613783, 210764.216012095770566, 210774.271190161525737, 210784.326411189103965, 210794.381675176613498, 210804.436982122191694, 210814.492332024034113, 210824.547724880278111, 210834.603160689119250, 210844.658639448636677, 210854.714161156996852, 210864.769725812424440, 210874.825333413056796, 210884.880983956973068, 210894.936677442397922, 210904.992413867468713, 210915.048193230322795, 210925.104015529184835, 210935.159880762133980, 210945.215788927365793, 210955.271740023017628, 210965.327734047285048, 210975.383770998305408, 210985.439850874157855, 210995.495973673154367, 211005.552139393286780, 211015.608348032867070, 211025.664599589916179, 211035.720894062716980, 211045.777231449377723, 211055.833611748006660, 211065.890034956799354, 211075.946501073951367, 211086.003010097541846, 211096.059562025824562, 211106.116156856878661, 211116.172794588928809, 211126.229475220083259, 211136.286198748508468, 211146.342965172370896, 211156.399774489895208, 211166.456626699131448, 211176.513521798275178, 211186.570459785521962, 211196.627440659038257, 211206.684464416932315, 211216.741531057399698, 211226.798640578577761, 211236.855792978662066, 211246.912988255760865, 211256.970226408127928, 211267.027507433842402, 211277.084831331099849, 211287.142198098037625, 211297.199607732851291, 211307.257060233678203, 211317.314555598713923, 211327.372093826037599, 211337.429674913932104, 211347.487298860476585, 211357.544965663866606, 211367.602675322239520, 211377.660427833790891, 211387.718223196658073, 211397.776061409065733, 211407.833942469034810, 211417.891866374906385, 211427.949833124730503, 211438.007842716702726, 211448.065895148989512, 211458.123990419728216, 211468.182128527143504, 211478.240309469372733, 211488.298533244553255, 211498.356799850880634, 211508.415109286521329, 211518.473461549583590, 211528.531856638292084, 211538.590294550871477, 211548.648775285371812, 211558.707298840017756, 211568.765865212917561, 211578.824474402324995, 211588.883126406377414, 211598.941821223212173, 211609.000558850995731, 211619.059339287952753, 211629.118162532220595, 211639.177028581936611, 211649.235937435267260, 211659.294889090408105, 211669.353883545583813, 211679.412920798844425, 211689.472000848414609, 211699.531123692519031, 211709.590289329207735, 211719.649497756763594, 211729.708748973265756, 211739.768042976938887, 211749.827379765920341, 211759.886759338463889, 211769.946181692561368, 211780.005646826582961, 211790.065154738607816, 211800.124705426773289, 211810.184298889274942, 211820.243935124250129, 211830.303614129981725, 211840.363335904577980, 211850.423100446147146, 211860.482907752942992, 211870.542757823102875, 211880.602650654822355, 211890.662586246209685, 211900.722564595489530, 211910.782585700857453, 211920.842649560479913, 211930.902756172406953, 211940.962905534979654, 211951.023097646248061, 211961.083332504495047, 211971.143610107770655, 211981.203930454328656, 211991.264293542306405, 212001.324699369957671, 212011.385147935361601, 212021.445639236684656, 212031.506173272122396, 212041.566750039957697, 212051.627369538182393, 212061.688031765079359, 212071.748736718844157, 212081.809484397585038, 212091.870274799497565, 212101.931107922748197, 212111.991983765532495, 212122.052902326016920, 212132.113863602338824, 212142.174867592781084, 212152.235914295422845, 212162.297003708459670, 212172.358135830087122, 212182.419310658471659, 212192.480528191750636, 212202.541788428148720, 212212.603091365832370, 212222.664437002997147, 212232.725825337809511, 212242.787256368377712, 212252.848730092955520, 212262.910246509738499, 212272.971805616834899, 212283.033407412469387, 212293.095051894779317, 212303.156739062018460, 212313.218468912265962, 212323.280241443775594, 212333.342056654713815, 212343.403914543188876, 212353.465815107483650, 212363.527758345735492, 212373.589744256081758, 212383.651772836747114, 212393.713844085898018, 212403.775958001730032, 212413.838114582380513, 212423.900313826074125, 212433.962555730977328, 212444.024840295227477, 212454.087167517078342, 212464.149537394696381, 212474.211949926218949, 212484.274405109841609, 212494.336902943759924, 212504.399443426140351, 212514.462026555178454, 212524.524652329098899, 212534.587320745922625, 212544.650031804048922, 212554.712785501527833, 212564.775581836525816, 212574.838420807296643, 212584.901302411948564, 212594.964226648735348, 212605.027193515852559, 212615.090203011408448, 212625.153255133627681, 212635.216349880647613, 212645.279487250692910, 212655.342667241988238, 212665.405889852670953, 212675.469155080907512, 212685.532462924864376, 212695.595813382766210, 212705.659206452837680, 212715.722642133187037, 212725.786120422038948, 212735.849641317530768, 212745.913204817916267, 212755.976810921361903, 212766.040459626034135, 212776.104150930099422, 212786.167884831753327, 212796.231661329249619, 212806.295480420696549, 212816.359342104289681, 212826.423246378224576, 212836.487193240667693, 212846.551182689872803, 212856.615214723948156, 212866.679289341176627, 212876.743406539608259, 212886.807566317525925, 212896.871768673125189, 212906.936013604543405, 212917.000301109976135, 212927.064631187648047, 212937.129003835667390, 212947.193419052317040, 212957.257876835734351, 212967.322377184143988, 212977.386920095654204, 212987.451505568547873, 212997.516133600933244, 213007.580804191093193, 213017.645517337135971, 213027.710273037228035, 213037.775071289681364, 213047.839912092546001, 213057.904795444104820, 213067.969721342524281, 213078.034689785999944, 213088.099700772698270, 213098.164754300843924, 213108.229850368545158, 213118.294988974055741, 213128.360170115600340, 213138.425393791345414, 213148.490659999428317, 213158.555968738073716, 213168.621320005506277, 213178.686713799892459, 213188.752150119427824, 213198.817628962278832, 213208.883150326699251, 213218.948714210739126, 213229.014320612768643, 213239.079969530896051, 213249.145660963316914, 213259.211394908226794, 213269.277171363792149, 213279.342990328237647, 213289.408851799758850, 213299.474755776551319, 213309.540702256781515, 213319.606691238674102, 213329.672722720395541, 213339.738796700112289, 213349.804913176107220, 213359.871072146517690, 213369.937273609539261, 213380.003517563396599, 213390.069804006256163, 213400.136132936255308, 213410.202504351676907, 213420.268918250716524, 213430.335374631569721, 213440.401873492344748, 213450.468414831324480, 213460.534998646646272, 213470.601624936534790, 213480.668293699243804, 213490.735004932881566, 213500.801758635672741, 213510.868554805812892, 213520.935393441497581, 213531.002274540980579, 213541.069198102370137, 213551.136164123890921, 213561.203172603738494, 213571.270223540166626, 213581.337316931283567, 213591.404452775343088, 213601.471631070540752, 213611.538851815072121, 213621.606115007132757, 213631.673420644889120, 213641.740768726536771, 213651.808159250358585, 213661.875592214491917, 213671.943067617132328, 213682.010585456475383, 213692.078145730774850, 213702.145748438138980, 213712.213393576821545, 213722.281081145076314, 213732.348811141011538, 213742.416583562851883, 213752.484398408792913, 213762.552255677088397, 213772.620155365846585, 213782.688097473350354, 213792.756081997766159, 213802.824108937318670, 213812.892178290174343, 213822.960290054528741, 213833.028444228664739, 213843.096640810632380, 213853.164879798772745, 213863.233161191223189, 213873.301484986208379, 213883.369851181952981, 213893.438259776594350, 213903.506710768357152, 213913.575204155495157, 213923.643739936145721, 213933.712318108533509, 213943.780938670912292, 213953.849601621419424, 213963.918306958279572, 213973.987054679659195, 213984.055844783812063, 213994.124677268904634, 214004.193552133219782, 214014.262469374894863, 214024.331428992125439, 214034.400430983165279, 214044.469475346122636, 214054.538562079309486, 214064.607691180863185, 214074.676862649066607, 214084.746076482057106, 214094.815332678030245, 214104.884631235239794, 214114.953972151881317, 214125.023355426121270, 214135.092781056184322, 214145.162249040295137, 214155.231759376678383, 214165.301312063471414, 214175.370907098957105, 214185.440544481301913, 214195.510224208672298, 214205.579946279351134, 214215.649710691504879, 214225.719517443358200, 214235.789366533135762, 214245.859257959004026, 214255.929191719158553, 214265.999167811882216, 214276.069186235254165, 214286.139246987615479, 214296.209350067161722, 214306.279495472001145, 214316.349683200416621, 214326.419913250632817, 214336.490185620816192, 214346.560500309162308, 214356.630857313924935, 214366.701256633328740, 214376.771698265540181, 214386.842182208783925, 214396.912708461255534, 214406.983277021179674, 214417.053887886722805, 214427.124541056138696, 214437.195236527652014, 214447.265974299458321, 214457.336754369782284, 214467.407576736819465, 214477.478441398765426, 214487.549348353844834, 214497.620297600253252, 214507.691289136215346, 214517.762322959984886, 214527.833399069699226, 214537.904517463641241, 214547.975678139948286, 214558.046881096932339, 214568.118126332701650, 214578.189413845509989, 214588.260743633582024, 214598.332115695084212, 214608.403530028270325, 214618.474986631394131, 214628.546485502622090, 214638.618026640120661, 214648.689610042201821, 214658.761235707032029, 214668.832903632806847, 214678.904613817750942, 214688.976366260088980, 214699.048160958016524, 214709.119997909787344, 214719.191877113567898, 214729.263798567611957, 214739.335762270144187, 214749.407768219331047, 214759.479816413426306, 214769.551906850625528, 214779.624039529095171, 214789.696214447176317, 214799.768431602977216, 214809.840690994751640, 214819.912992620724253, 214829.985336479090620, 214840.057722568104509, 214850.130150885932380, 214860.202621430828003, 214870.275134200957837, 214880.347689194633858, 214890.420286409993423, 214900.492925845261198, 214910.565607498720055, 214920.638331368507352, 214930.711097452847753, 214940.783905749995029, 214950.856756258173846, 214960.929648975579767, 214971.002583900408354, 214981.075561030913377, 214991.148580365348607, 215001.221641901822295, 215011.294745638646418, 215021.367891574045643, 215031.441079706215532, 215041.514310033322545, 215051.587582553620450, 215061.660897265392123, 215071.734254166774917, 215081.807653256022604, 215091.881094531359849, 215101.954577991011320, 215112.028103633143473, 215122.101671456068289, 215132.175281457952224, 215142.248933637019945, 215152.322627991467016, 215162.396364519576309, 215172.470143219543388, 215182.543964089534711, 215192.617827127862256, 215202.691732332663378, 215212.765679702220950, 215222.839669234759640, 215232.913700928475009, 215242.987774781591725, 215253.061890792334452, 215263.136048958927859, 215273.210249279596610, 215283.284491752536269, 215293.358776376000606, 215303.433103148243390, 215313.507472067401977, 215323.581883131788345, 215333.656336339568952, 215343.730831688997569, 215353.805369178298861, 215363.879948805697495, 215373.954570569389034, 215384.029234467598144, 215394.103940498578595, 215404.178688660555054, 215414.253478951723082, 215424.328311370365554, 215434.403185914648930, 215444.478102582797874, 215454.553061373066157, 215464.628062283678446, 215474.703105312859407, 215484.778190458833706, 215494.853317719826009, 215504.928487094060984, 215515.003698579734191, 215525.078952175128506, 215535.154247878439492, 215545.229585687862709, 215555.304965601739241, 215565.380387618177338, 215575.455851735430770, 215585.531357951782411, 215595.606906265427824, 215605.682496674533468, 215615.758129177411320, 215625.833803772256942, 215635.909520457324106, 215645.985279230808374, 215656.061080090934411, 215666.136923035985092, 215676.212808064068668, 215686.288735173526220, 215696.364704362582415, 215706.440715629432816, 215716.516768972331192, 215726.592864389473107, 215736.669001879112329, 215746.745181439473527, 215756.821403068781365, 215766.897666765260510, 215776.973972527164733, 215787.050320352689596, 215797.126710240147077, 215807.203142187645426, 215817.279616193496622, 215827.356132255896227, 215837.432690373098012, 215847.509290543355746, 215857.585932764835889, 215867.662617035850417, 215877.739343354594894, 215887.816111719293986, 215897.892922128143255, 215907.969774579425575, 215918.046669071365613, 215928.123605602188036, 215938.200584170117509, 215948.277604773407802, 215958.354667410341790, 215968.431772079027724, 215978.508918777777581, 215988.586107504786924, 215998.663338258338626, 216008.740611036657356, 216018.817925837967778, 216028.895282660436351, 216038.972681502433261, 216049.050122362095863, 216059.127605237677926, 216069.205130127404118, 216079.282697029586416, 216089.360305942333071, 216099.437956863956060, 216109.515649792680051, 216119.593384726729710, 216129.671161664387910, 216139.748980603821110, 216149.826841543312185, 216159.904744481085800, 216169.982689415337518, 216180.060676344321109, 216190.138705266348552, 216200.216776179586304, 216210.294889082288137, 216220.373043972707819, 216230.451240848982707, 216240.529479709482985, 216250.607760552404216, 216260.686083376000170, 216270.764448178408202, 216280.842854957998497, 216290.921303712937515, 216300.999794441420818, 216311.078327141818590, 216321.156901812239084, 216331.235518450965174, 216341.314177056308836, 216351.392877626378322, 216361.471620159514714, 216371.550404653913574, 216381.629231107799569, 216391.708099519455573, 216401.787009887106251, 216411.865962208918063, 216421.944956483261194, 216432.023992708331207, 216442.103070882323664, 216452.182191003492335, 216462.261353070090991, 216472.340557080373401, 216482.419803032564232, 216492.499090924917255, 216502.578420755628031, 216512.657792523008538, 216522.737206225254340, 216532.816661860590102, 216542.896159427327802, 216552.975698923633900, 216563.055280347820371, 216573.134903698053677, 216583.214568972616689, 216593.294276169763179, 216603.374025287717814, 216613.453816324705258, 216623.533649279008387, 216633.613524148880970, 216643.693440932489466, 216653.773399628145853, 216663.853400234074797, 216673.933442748500966, 216684.013527169678127, 216694.093653495860053, 216704.173821725300513, 216714.254031856224174, 216724.334283886913909, 216734.414577815536177, 216744.494913640402956, 216754.575291359738912, 216764.655710971768713, 216774.736172474804334, 216784.816675867012236, 216794.897221146646189, 216804.977808312018169, 216815.058437361294637, 216825.139108292787569, 216835.219821104663424, 216845.300575795263285, 216855.381372362724505, 216865.462210805417271, 216875.543091121508041, 216885.624013309279690, 216895.704977366956882, 216905.785983292764286, 216915.867031085013878, 216925.948120741872117, 216936.029252261650981, 216946.110425642575137, 216956.191640882898355, 216966.272897980845300, 216976.354196934727952, 216986.435537742712768, 216996.516920403082622, 217006.598344914091285, 217016.679811274021631, 217026.761319481040118, 217036.842869533458725, 217046.924461429502117, 217057.006095167394960, 217067.087770745449234, 217077.169488161889603, 217087.251247414911631, 217097.333048502885504, 217107.414891423919471, 217117.496776176354615, 217127.578702758415602, 217137.660671168385306, 217147.742681404459290, 217157.824733464891324, 217167.906827347993385, 217177.988963051961036, 217188.071140575048048, 217198.153359915508190, 217208.235621071624337, 217218.317924041650258, 217228.400268823781516, 217238.482655416300986, 217248.565083817462437, 217258.647554025548743, 217268.730066038755467, 217278.812619855365483, 217288.895215473603457, 217298.977852891810471, 217309.060532108094776, 217319.143253120855661, 217329.226015928230481, 217339.308820528560318, 217349.391666920011630, 217359.474555100954603, 217369.557485069497488, 217379.640456824039575, 217389.723470362689113, 217399.806525683845393, 217409.889622785674874, 217419.972761666431325, 217430.055942324397620, 217440.139164757885737, 217450.222428965003928, 217460.305734944122378, 217470.389082693465753, 217480.472472211258719, 217490.555903495784150, 217500.639376545324922, 217510.722891358134802, 217520.806447932380252, 217530.890046266431455, 217540.973686358454870, 217551.057368206791580, 217561.141091809608042, 217571.224857165245339, 217581.308664271899033, 217591.392513127851998, 217601.476403731358005, 217611.560336080641719, 217621.644310174044222, 217631.728326009761076, 217641.812383586046053, 217651.896482901182026, 217661.980623953422764, 217672.064806741022039, 217682.149031262204517, 217692.233297515282175, 217702.317605498450575, 217712.401955210050801, 217722.486346648307517, 217732.570779811445391, 217742.655254697776400, 217752.739771305525210, 217762.824329632945592, 217772.908929678349523, 217782.993571439903462, 217793.078254915948492, 217803.162980104709277, 217813.247747004439589, 217823.332555613451404, 217833.417405929969391, 217843.502297952218214, 217853.587231678509852, 217863.672207107098075, 217873.757224236236652, 217883.842283064179355, 217893.927383589150850, 217904.012525809521321, 217914.097709723457228, 217924.182935329270549, 217934.268202625127742, 217944.353511609428097, 217954.438862280367175, 217964.524254636198748, 217974.609688675176585, 217984.695164395641768, 217994.780681795731653, 218004.866240873845527, 218014.951841628149850, 218025.037484056927497, 218035.123168158432236, 218045.208893930976046, 218055.294661372725386, 218065.380470482079545, 218075.466321257204982, 218085.552213696413673, 218095.638147797901183, 218105.724123560008593, 218115.810140980989672, 218125.896200059069088, 218135.982300792558817, 218146.068443179683527, 218156.154627218696987, 218166.240852907911176, 218176.327120245550759, 218186.413429229956819, 218196.499779859266710, 218206.586172131850617, 218216.672606045962311, 218226.759081599855563, 218236.845598791755037, 218246.932157620001817, 218257.018758082791464, 218267.105400178406853, 218277.192083905130858, 218287.278809261275455, 218297.365576245007105, 218307.452384854725096, 218317.539235088566784, 218327.626126944815041, 218337.713060421810951, 218347.800035517779179, 218357.887052230973495, 218367.974110559705878, 218378.061210502230097, 218388.148352056799922, 218398.235535221698228, 218408.322759995120578, 218418.410026375495363, 218428.497334360930836, 218438.584683949797181, 218448.672075140319066, 218458.759507930721156, 218468.846982319373637, 218478.934498304501176, 218489.022055884357542, 218499.109655057254713, 218509.197295821388252, 218519.284978175099241, 218529.372702116612345, 218539.460467644297751, 218549.548274756292813, 218559.636123450909508, 218569.724013726459816, 218579.811945581168402, 218589.899919013289036, 218599.987934021191904, 218610.075990603072569, 218620.164088757184800, 218630.252228481840575, 218640.340409775322769, 218650.428632635856047, 218660.516897061810596, 218670.605203051294666, 218680.693550602736650, 218690.781939714332111, 218700.870370384363923, 218710.958842611085856, 218721.047356392868096, 218731.135911727877101, 218741.224508614395745, 218751.313147050765110, 218761.401827035180759, 218771.490548565954668, 218781.579311641340610, 218791.668116259650560, 218801.756962419167394, 218811.845850118057569, 218821.934779354749480, 218832.023750127409585, 218842.112762434349861, 218852.201816273853183, 218862.290911644144217, 218872.380048543564044, 218882.469226970395539, 218892.558446922863368, 218902.647708399250405, 218912.737011397810420, 218922.826355916884495, 218932.915741954697296, 218943.005169509560801, 218953.094638579728780, 218963.184149163484108, 218973.273701259051450, 218983.363294864800991, 218993.452929978986504, 219003.542606599803548, 219013.632324725651415, 219023.722084354725666, 219033.811885485338280, 219043.901728115713922, 219053.991612244222779, 219064.081537869089516, 219074.171504988567904, 219084.261513600940816, 219094.351563704520231, 219104.441655297589023, 219114.531788378400961, 219124.621962945238920, 219134.712178996385774, 219144.802436530095292, 219154.892735544737661, 219164.983076038479339, 219175.073458009632304, 219185.163881456508534, 219195.254346377390902, 219205.344852770562284, 219215.435400634189136, 219225.525989966728957, 219235.616620766319102, 219245.707293031300651, 219255.798006759956479, 219265.888761950598564, 219275.979558601422468, 219286.070396710769273, 219296.161276276921853, 219306.252197298133979, 219316.343159772688523, 219326.434163698926568, 219336.525209075072780, 219346.616295899380930, 219356.707424170162994, 219366.798593885760056, 219376.889805044367677, 219386.981057644326938, 219397.072351683891611, 219407.163687161315465, 219417.255064074968686, 219427.346482423017733, 219437.437942203890998, 219447.529443415784044, 219457.620986056950642, 219467.712570125702769, 219477.804195620381506, 219487.895862539153313, 219497.987570880446583, 219508.079320642456878, 219518.171111823408864, 219528.262944421760039, 219538.354818435647758, 219548.446733863413101, 219558.538690703338943, 219568.630688953679055, 219578.722728612774517, 219588.814809678849997, 219598.906932150217472, 219608.999096025218023, 219619.091301302047214, 219629.183547979017021, 219639.275836054439424, 219649.368165526597295, 219659.460536393773509, 219669.552948654250940, 219679.645402306283358, 219689.737897348211845, 219699.830433778290171, 219709.923011594801210, 219720.015630796056939, 219730.108291380311130, 219740.200993345933966, 219750.293736691121012, 219760.386521414155141, 219770.479347513435641, 219780.572214987158077, 219790.665123833576217, 219800.758074051031144, 219810.851065637863940, 219820.944098592270166, 219831.037172912590904, 219841.130288597109029, 219851.223445644078311, 219861.316644051839830, 219871.409883818676462, 219881.503164942841977, 219891.596487422677455, 219901.689851256378461, 219911.783256442315178, 219921.876702978799585, 219931.970190864056349, 219942.063720096397446, 219952.157290674105752, 219962.250902595493244, 219972.344555858871900, 219982.438250462495489, 219992.531986404646887, 220002.625763683608966, 220012.719582297722809, 220022.813442245213082, 220032.907343524420867, 220043.001286133687245, 220053.095270071207779, 220063.189295335323550, 220073.283361924317433, 220083.377469836414093, 220093.471619070012821, 220103.565809623396490, 220113.660041494789766, 220123.754314682533732, 220133.848629184882157, 220143.942985000205226, 220154.037382126727607, 220164.131820562761277, 220174.226300306618214, 220184.320821356523084, 220194.415383710846072, 220204.509987367840949, 220214.604632325819694, 220224.699318583065178, 220234.794046137918485, 220244.888814988633385, 220254.983625133492751, 220265.078476570837665, 220275.173369298892794, 220285.268303315970115, 220295.363278620410711, 220305.458295210526558, 220315.553353084513219, 220325.648452240799088, 220335.743592677550623, 220345.838774393138010, 220355.933997385785915, 220366.029261653893627, 220376.124567195714917, 220386.219914009503555, 220396.315302093629725, 220406.410731446376303, 220416.506202065967955, 220426.601713950745761, 220436.697267099021701, 220446.792861509049544, 220456.888497179199476, 220466.984174107725266, 220477.079892292938894, 220487.175651733123232, 220497.271452426590258, 220507.367294371622847, 220517.463177566532977, 220527.559102009603521, 220537.655067699117353, 220547.751074633444659, 220557.847122810810106, 220567.943212229554774, 220578.039342887961539, 220588.135514784313273, 220598.231727916951058, 220608.327982284157770, 220618.424277884187177, 220628.520614715409465, 220638.616992776078405, 220648.713412064535078, 220658.809872579033254, 220668.906374317884911, 220679.002917279460235, 220689.099501461925684, 220699.196126863680547, 220709.292793483036803, 220719.389501318248222, 220729.486250367626781, 220739.583040629426250, 220749.679872102045920, 220759.776744783710456, 220769.873658672760939, 220779.970613767538453, 220790.067610066267662, 220800.164647567289649, 220810.261726268858183, 220820.358846169314347, 220830.456007266999222, 220840.553209560137475, 220850.650453047099290, 220860.747737726167543, 220870.845063595625106, 220880.942430653813062, 220891.039838898985181, 220901.137288329424337, 220911.234778943529818, 220921.332310739555396, 220931.429883715842152, 220941.527497870585648, 220951.625153202214278, 220961.722849708981812, 220971.820587389171124, 220981.918366241123294, 220992.016186263121199, 221002.114047453476815, 221012.211949810473016, 221022.309893332479987, 221032.407878017751500, 221042.505903864541324, 221052.603970871306956, 221062.702079036214855, 221072.800228357635206, 221082.898418833821779, 221092.996650463173864, 221103.094923243887024, 221113.193237174389651, 221123.291592252877308, 221133.389988477720181, 221143.488425847201142, 221153.586904359632172, 221163.685424013296142, 221173.783984806563240, 221183.882586737687234, 221193.981229804980103, 221204.079914006841136, 221214.178639341407688, 221224.277405807108153, 221234.376213402225403, 221244.475062125042314, 221254.573951973929070, 221264.672882947139442, 221274.771855042985408, 221284.870868259808049, 221294.969922595890239, 221305.069018049543956, 221315.168154619052075, 221325.267332302813884, 221335.366551099083154, 221345.465811006113654, 221355.565112022275571, 221365.664454145909986, 221375.763837375270668, 221385.863261708669597, 221395.962727144447854, 221406.062233680888312, 221416.161781316332053, 221426.261370049091056, 221436.360999877419090, 221446.460670799686341, 221456.560382814233890, 221466.660135919228196, 221476.759930113155860, 221486.859765394212445, 221496.959641760709928, 221507.059559211076703, 221517.159517743508331, 221527.259517356345896, 221537.359558047930477, 221547.459639816544950, 221557.559762660501292, 221567.659926578140585, 221577.760131567803910, 221587.860377627686830, 221597.960664756159531, 221608.060992951621301, 221618.161362212267704, 221628.261772536468925, 221638.362223922566045, 221648.462716368783731, 221658.563249873492168, 221668.663824435061542, 221678.764440051687416, 221688.865096721769078, 221698.965794443589402, 221709.066533215489471, 221719.167313035752159, 221729.268133902689442, 221739.368995814613299, 221749.469898769952124, 221759.570842766872374, 221769.671827803715132, 221779.772853878821479, 221789.873920990561601, 221799.975029137160163, 221810.076178317016456, 221820.177368528384250, 221830.278599769575521, 221840.379872038960457, 221850.481185334821930, 221860.582539655530127, 221870.683934999338817, 221880.785371364501771, 221890.886848749476485, 221900.988367152487626, 221911.089926571905380, 221921.191527006070828, 221931.293168453208636, 221941.394850911688991, 221951.496574379823869, 221961.598338855925249, 221971.700144338392420, 221981.801990825420944, 221991.903878315381007, 222002.005806806555483, 222012.107776297343662, 222022.209786786028417, 222032.311838270892622, 222042.413930750306463, 222052.516064222552814, 222062.618238685972756, 222072.720454138849163, 222082.822710579610430, 222092.925008006423013, 222103.027346417686203, 222113.129725811741082, 222123.232146186870523, 222133.334607541444711, 222143.437109873717418, 222153.539653182029724, 222163.642237464722712, 222173.744862720079254, 222183.847528946498642, 222193.950236142205540, 222204.052984305628343, 222214.155773434962612, 222224.258603528607637, 222234.361474584933603, 222244.464386602165177, 222254.567339578643441, 222264.670333512709476, 222274.773368402733468, 222284.876444246998290, 222294.979561043757712, 222305.082718791411025, 222315.185917488270206, 222325.289157132676337, 222335.392437722941395, 222345.495759257348254, 222355.599121734237997, 222365.702525151951704, 222375.805969508830458, 222385.909454803186236, 222396.012981033301912, 222406.116548197547672, 222416.220156294235494, 222426.323805321706459, 222436.427495278272545, 222446.531226162245730, 222456.634997971937992, 222466.738810705719516, 222476.842664361844072, 222486.946558938740054, 222497.050494434661232, 222507.154470847919583, 222517.258488176914398, 222527.362546419899445, 222537.466645575244911, 222547.570785641291877, 222557.674966616294114, 222567.779188498621807, 222577.883451286616037, 222587.987754978588782, 222598.092099572881125, 222608.196485067746835, 222618.300911461614305, 222628.405378752766410, 222638.509886939544231, 222648.614436020230642, 222658.719025993224932, 222668.823656856780872, 222678.928328609297751, 222689.033041249029338, 222699.137794774374925, 222709.242589183588279, 222719.347424475068692, 222729.452300647128141, 222739.557217698078603, 222749.662175626232056, 222759.767174429929582, 222769.872214107570471, 222779.977294657379389, 222790.082416077755624, 222800.187578366982052, 222810.292781523428857, 222820.398025545408018, 222830.503310431231512, 222840.608636179269524, 222850.714002787775826, 222860.819410255178809, 222870.924858579790452, 222881.030347759864526, 222891.135877793829422, 222901.241448679909809, 222911.347060416592285, 222921.452713002043311, 222931.558406434662174, 222941.664140712789958, 222951.769915834767744, 222961.875731798907509, 222971.981588603521232, 222982.087486246979097, 222992.193424727622187, 223002.299404043733375, 223012.405424193711951, 223022.511485175811686, 223032.617586988402763, 223042.723729629797162, 223052.829913098394172, 223062.936137392476667, 223073.042402510385728, 223083.148708450404229, 223093.255055210960563, 223103.361442790337605, 223113.467871186847333, 223123.574340398889035, 223133.680850424774690, 223143.787401262758067, 223153.893992911296664, 223164.000625368615147, 223174.107298633112805, 223184.214012703159824, 223194.320767576980870, 223204.427563253004337, 223214.534399729513098, 223224.641277004877338, 223234.748195077467244, 223244.855153945478378, 223254.962153607397340, 223265.069194061477901, 223275.176275306061143, 223285.283397339546354, 223295.390560160187306, 223305.497763766412390, 223315.605008156417171, 223325.712293328659143, 223335.819619281450287, 223345.926986013131682, 223356.034393522044411, 223366.141841806442244, 223376.249330864811782, 223386.356860695319483, 223396.464431296481052, 223406.572042666433845, 223416.679694803693565, 223426.787387706513982, 223436.895121373294387, 223447.002895802288549, 223457.110710991866654, 223467.218566940398887, 223477.326463646226330, 223487.434401107602753, 223497.542379322956549, 223507.650398290570593, 223517.758458008873276, 223527.866558476089267, 223537.974699690617854, 223548.082881650771014, 223558.191104354977142, 223568.299367801490007, 223578.407671988621587, 223588.516016914800275, 223598.624402578279842, 223608.732828977459576, 223618.841296110738767, 223628.949803976283874, 223639.058352572639706, 223649.166941897972720, 223659.275571950682206, 223669.384242729138350, 223679.492954231711337, 223689.601706456684042, 223699.710499402397545, 223709.819333067192929, 223719.928207449469483, 223730.037122547510080, 223740.146078359655803, 223750.255074884305941, 223760.364112119801575, 223770.473190064396476, 223780.582308716460830, 223790.691468074423028, 223800.800668136536842, 223810.909908901201561, 223821.019190366700059, 223831.128512531431625, 223841.237875393708237, 223851.347278951900080, 223861.456723204319132, 223871.566208149335580, 223881.675733785290504, 223891.785300110495882, 223901.894907123351004, 223912.004554822167847, 223922.114243205287494, 223932.223972271051025, 223942.333742017828627, 223952.443552443990484, 223962.553403547761263, 223972.663295327598462, 223982.773227781814057, 223992.883200908807339, 224002.993214706832077, 224013.103269174287561, 224023.213364309456665, 224033.323500110796886, 224043.433676576561993, 224053.543893705151277, 224063.654151494876714, 224073.764449944108492, 224083.874789051187690, 224093.985168814455392, 224104.095589232281782, 224114.206050302920630, 224124.316552024858538, 224134.427094396378379, 224144.537677415821236, 224154.648301081499085, 224164.758965391840320, 224174.869670345127815, 224184.980415939760860, 224195.091202174051432, 224205.202029046311509, 224215.312896554998588, 224225.423804698395543, 224235.534753474814352, 224245.645742882683408, 224255.756772920343792, 224265.867843586078379, 224275.978954878257355, 224286.090106795250904, 224296.201299335400108, 224306.312532497075154, 224316.423806278617121, 224326.535120678367093, 224336.646475694666151, 224346.757871325855376, 224356.869307570304954, 224366.980784426414175, 224377.092301892436808, 224387.203859966801247, 224397.315458647819469, 224407.427097933861660, 224417.538777823239798, 224427.650498314353172, 224437.762259405542864, 224447.874061095149955, 224457.985903381515527, 224468.097786263009766, 224478.209709738002857, 224488.321673804806778, 224498.433678461791715, 224508.545723707356956, 224518.657809539727168, 224528.769935957359849, 224538.882102958596079, 224548.994310541835148, 224559.106558705301723, 224569.218847447424196, 224579.331176766543649, 224589.443546661059372, 224599.555957129254239, 224609.668408169498434, 224619.780899780249456, 224629.893431959731970, 224640.006004706316162, 224650.118618018430425, 224660.231271894299425, 224670.343966332409764, 224680.456701331044314, 224690.569476888660574, 224700.682293003454106, 224710.795149673882406, 224720.908046898286557, 224731.020984675007639, 224741.133963002386736, 224751.246981878794031, 224761.360041302657919, 224771.473141272203065, 224781.586281785857864, 224791.699462842021603, 224801.812684438977158, 224811.925946575036505, 224822.039249248686247, 224832.152592458209256, 224842.265976201975718, 224852.379400478326716, 224862.492865285690641, 224872.606370622321265, 224882.719916486559669, 224892.833502876950661, 224902.947129791660700, 224913.060797229089076, 224923.174505187664181, 224933.288253665697994, 224943.402042661531596, 224953.515872173535172, 224963.629742200108012, 224973.743652739503887, 224983.857603790238500, 224993.971595350507414, 225004.085627418768127, 225014.199699993419927, 225024.313813072687481, 225034.427966655057389, 225044.542160738754319, 225054.656395322264871, 225064.770670403930126, 225074.884985982062062, 225084.999342055001762, 225095.113738621206721, 225105.228175678959815, 225115.342653226602124, 225125.457171262620250, 225135.571729785209754, 225145.686328792828135, 225155.800968283816474, 225165.915648256603163, 225176.030368709383765, 225186.145129640703090, 225196.259931048756698, 225206.374772932031192, 225216.489655288838549, 225226.604578117578058, 225236.719541416590801, 225246.834545184188755, 225256.949589418800315, 225267.064674118737457, 225277.179799282399472, 225287.294964908156544, 225297.410170994320652, 225307.525417539261980, 225317.640704541438026, 225327.756031999160768, 225337.871399910683976, 225347.986808274523355, 225358.102257088990882, 225368.217746352398535, 225378.333276063174708, 225388.448846219689585, 225398.564456820226042, 225408.680107863241574, 225418.795799347077264, 225428.911531270074192, 225439.027303630544338, 225449.143116426974302, 225459.258969657676062, 225469.374863320932491, 225479.490797415259294, 225489.606771938910242, 225499.722786890284624, 225509.838842267781729, 225519.954938069713535, 225530.071074294508435, 225540.187250940391095, 225550.303468005935429, 225560.419725489336997, 225570.536023389082402, 225580.652361703454517, 225590.768740430794423, 225600.885159569559619, 225611.001619118091185, 225621.118119074759306, 225631.234659437905066, 225641.351240205927752, 225651.467861377110239, 225661.584522949939128, 225671.701224922697293, 225681.817967293813126, 225691.934750061569503, 225702.051573224482127, 225712.168436780746561, 225722.285340728820302, 225732.402285067131743, 225742.519269793876447, 225752.636294907599222, 225762.753360406582942, 225772.870466289226897, 225782.987612553843064, 225793.104799198888941, 225803.222026222647401, 225813.339293623546837, 225823.456601399957435, 225833.573949550220277, 225843.691338072676444, 225853.808766965783434, 225863.926236227824120, 225874.043745857226895, 225884.161295852361945, 225894.278886211512145, 225904.396516933193197, 225914.514188015687978, 225924.631899457366671, 225934.749651256570360, 225944.867443411785644, 225954.985275921266293, 225965.103148783440702, 225975.221061996679055, 225985.339015559293330, 225995.457009469741024, 226005.575043726421427, 226015.693118327588309, 226025.811233271640958, 226035.929388557007769, 226046.047584182058927, 226056.165820145106409, 226066.284096444578608, 226076.402413078845711, 226086.520770046219695, 226096.639167345158057, 226106.757604973972775, 226116.876082931034034, 226126.994601214828435, 226137.113159823551541, 226147.231758755689953, 226157.350398009642959, 226167.469077583693434, 226177.587797476240667, 226187.706557685771259, 226197.825358210480772, 226207.944199048855808, 226218.063080199266551, 226228.182001659995876, 226238.300963429588592, 226248.419965506269364, 226258.539007888466585, 226268.658090574579546, 226278.777213562920224, 226288.896376851917012, 226299.015580439969199, 226309.134824325359659, 226319.254108506545890, 226329.373432981898077, 226339.492797749728197, 226349.612202808493748, 226359.731648156535812, 226369.851133792224573, 226379.970659713901114, 226390.090225920052035, 226400.209832408960210, 226410.329479179083137, 226420.449166228645481, 226430.568893556192052, 226440.688661160063930, 226450.808469038514886, 226460.928317190089729, 226471.048205613071332, 226481.168134305888088, 226491.288103266822873, 226501.408112494391389, 226511.528161986876512, 226521.648251742677530, 226531.768381760193733, 226541.888552037766203, 226552.008762573823333, 226562.129013366706204, 226572.249304414814105, 226582.369635716517223, 226592.490007270185743, 226602.610419074218953, 226612.730871127016144, 226622.851363426860189, 226632.971895972266793, 226643.092468761547934, 226653.213081793073798, 226663.333735065214569, 226673.454428576427745, 226683.575162324996199, 226693.695936309377430, 226703.816750527912518, 226713.937604978942545, 226724.058499660954112, 226734.179434572288301, 226744.300409711257089, 226754.421425076317973, 226764.542480665841140, 226774.663576478225878, 226784.784712511755060, 226794.905888764944393, 226805.027105236105854, 226815.148361923580524, 226825.269658825825900, 226835.390995941270376, 226845.512373268138617, 226855.633790804946329, 226865.755248550034594, 226875.876746501773596, 226885.998284658533521, 226896.119863018742763, 226906.241481580771506, 226916.363140342989936, 226926.484839303826448, 226936.606578461563913, 226946.728357814718038, 226956.850177361542592, 226966.972037100524176, 226977.093937030003872, 226987.215877148351865, 226997.337857453996548, 227007.459877945308108, 227017.581938620627625, 227027.704039478383493, 227037.826180516945897, 227047.948361734772334, 227058.070583130087471, 227068.192844701436115, 227078.315146447159350, 227088.437488365540048, 227098.559870455123018, 227108.682292714191135, 227118.804755141172791, 227128.927257734467275, 227139.049800492386566, 227149.172383413388161, 227159.295006495842244, 227169.417669738089899, 227179.540373138675932, 227189.663116695766803, 227199.785900407878216, 227209.908724273409462, 227220.031588290672516, 227230.154492458095774, 227240.277436774136731, 227250.400421237049159, 227260.523445845290553, 227270.646510597289307, 227280.769615491299191, 227290.892760525894118, 227301.015945699327858, 227311.139171010087011, 227321.262436456425348, 227331.385742036858574, 227341.509087749756873, 227351.632473593403120, 227361.755899566342123, 227371.879365666827653, 227382.002871893346310, 227392.126418244210072, 227402.250004717876436, 227412.373631312686484, 227422.497298027097713, 227432.621004859392997, 227442.744751808088040, 227452.868538871523924, 227462.992366047983523, 227473.116233336040750, 227483.240140733949374, 227493.364088240225101, 227503.488075853092596, 227513.612103571067564, 227523.736171392520191, 227533.860279315791558, 227543.984427339397371, 227554.108615461562295, 227564.232843680802034, 227574.357111995457672, 227584.481420403957600, 227594.605768904672004, 227604.730157495941967, 227614.854586176224984, 227624.979054943949450, 227635.103563797398238, 227645.228112735057948, 227655.352701755240560, 227665.477330856432673, 227675.602000036975369, 227685.726709295267938, 227695.851458629709668, 227705.976248038670747, 227716.101077520579565, 227726.225947073835414, 227736.350856696750270, 227746.475806387839839, 227756.600796145416098, 227766.725825967849232, 227776.850895853684051, 227786.976005801116116, 227797.101155808719341, 227807.226345874776598, 227817.351575997687178, 227827.476846175937681, 227837.602156407781877, 227847.727506691735471, 227857.852897026168648, 227867.978327409393387, 227878.103797839954495, 227888.229308316163952, 227898.354858836391941, 227908.480449399037752, 227918.606080002587987, 227928.731750645296415, 227938.857461325707845, 227948.983212042163359, 227959.109002792974934, 227969.234833576658275, 227979.360704391583567, 227989.486615236091893, 227999.612566108640749, 228009.738557007600321, 228019.864587931399001, 228029.990658878377872, 228040.116769846965326, 228050.242920835589757, 228060.369111842592247, 228070.495342866459396, 228080.621613905474078, 228090.747924958151998, 228100.874276022776030, 228111.000667097774567, 228121.127098181634210, 228131.253569272666937, 228141.380080369359348, 228151.506631469994318, 228161.633222573029343, 228171.759853676921921, 228181.886524779954925, 228192.013235880614957, 228202.139986977272201, 228212.266778068325948, 228222.393609152146382, 228232.520480227191001, 228242.647391291888198, 228252.774342344520846, 228262.901333383604651, 228273.028364407451591, 228283.155435414577369, 228293.282546403235756, 228303.409697371942457, 228313.536888319038553, 228323.664119242952438, 228333.791390142112505, 228343.918701014888939, 228354.046051859651925, 228364.173442674829857, 228374.300873458822025, 228384.428344210115029, 228394.555854926962638, 228404.683405607880559, 228414.810996251238976, 228424.938626855408074, 228435.066297418845352, 228445.194007939920994, 228455.321758417063393, 228465.449548848613631, 228475.577379233029205, 228485.705249568738509, 228495.833159854053520, 228505.961110087460838, 228516.089100267359754, 228526.217130392120453, 228536.345200460142223, 228546.473310469940770, 228556.601460419711657, 228566.729650308057899, 228576.857880133233266, 228586.986149893753463, 228597.114459588017780, 228607.242809214338195, 228617.371198771201307, 228627.499628257006407, 228637.628097670152783, 228647.756607008981518, 228657.885156271979213, 228668.013745457516052, 228678.142374564049533, 228688.271043589949841, 228698.399752533587161, 228708.528501393418992, 228718.657290167815518, 228728.786118855176028, 228738.914987453987123, 228749.043895962560782, 228759.172844379383605, 228769.301832702796673, 228779.430860931286588, 228789.559929063165328, 228799.689037096890388, 228809.818185030831955, 228819.947372863476630, 228830.076600593165495, 228840.205868218356045, 228850.335175737418467, 228860.464523148752050, 228870.593910450814292, 228880.723337641917169, 228890.852804720605491, 228900.982311685191235, 228911.111858534131898, 228921.241445265826769, 228931.371071878646035, 228941.500738371047191, 228951.630444741429528, 228961.760190988192335, 228971.889977109705796, 228982.019803104485618, 228992.149668970785569, 229002.279574707179563, 229012.409520312008681, 229022.539505783643108, 229032.669531120569445, 229042.799596321186982, 229052.929701383836800, 229063.059846306976397, 229073.190031089063268, 229083.320255728409393, 229093.450520223472267, 229103.580824572680285, 229113.711168774432736, 229123.841552827158011, 229133.971976729284506, 229144.102440479153302, 229154.232944075192790, 229164.363487515889574, 229174.494070799555629, 229184.624693924677558, 229194.755356889625546, 229204.886059692886192, 229215.016802332742373, 229225.147584807738895, 229235.278407116216840, 229245.409269256575499, 229255.540171227301471, 229265.671113026706735, 229275.802094653306995, 229285.933116105443332, 229296.064177381573245, 229306.195278480096022, 229316.326419399469160, 229326.457600137975533, 229336.588820694130845, 229346.720081066421699, 229356.851381253101863, 229366.982721252687043, 229377.114101063518319, 229387.245520684140502, 229397.376980112807360, 229407.508479348092806, 229417.640018388279714, 229427.771597231854685, 229437.903215877246112, 229448.034874322795076, 229458.166572566988179, 229468.298310608195607, 229478.430088444874855, 229488.561906075396109, 229498.693763498216867, 229508.825660711736418, 229518.957597714383155, 229529.089574504556367, 229539.221591080713551, 229549.353647441166686, 229559.485743584460579, 229569.617879508936312, 229579.750055213051382, 229589.882270695175976, 229600.014525953796692, 229610.146820987283718, 229620.279155794036342, 229630.411530372541165, 229640.543944721139269, 229650.676398838259047, 229660.808892722387100, 229670.941426371922716, 229681.073999785177875, 229691.206612960726488, 229701.339265896880534, 229711.471958592126612, 229721.604691044834908, 229731.737463253462920, 229741.870275216351729, 229752.003126932046143, 229762.136018398858141, 229772.268949615245219, 229782.401920579635771, 229792.534931290458189, 229802.667981746082660, 229812.801071945053991, 229822.934201885625953, 229833.067371566343354, 229843.200580985518172, 229853.333830141637009, 229863.467119033186464, 229873.600447658449411, 229883.733816015970660, 229893.867224104091292, 229904.000671921297908, 229914.134159465931589, 229924.267686736508040, 229934.401253731339239, 229944.534860448940890, 229954.668506887624972, 229964.802193045994500, 229974.935918922274141, 229985.069684515066911, 229995.203489822655683, 230005.337334843527060, 230015.471219576051226, 230025.605144018772990, 230035.739108169975225, 230045.873112028173637, 230056.007155591709306, 230066.141238859097939, 230076.275361828709720, 230086.409524499002146, 230096.543726868316298, 230106.677968935196986, 230116.812250697956188, 230126.946572155109607, 230137.080933305027429, 230147.215334146138048, 230157.349774676869856, 230167.484254895651247, 230177.618774800939718, 230187.753334391076351, 230197.887933664605953, 230208.022572619840503, 230218.157251255295705, 230228.291969569283538, 230238.426727560348809, 230248.561525226890808, 230258.696362567308825, 230268.831239579973044, 230278.966156263428275, 230289.101112616015598, 230299.236108636221616, 230309.371144322387408, 230319.506219673057785, 230329.641334686515620, 230339.776489361334825, 230349.911683695827378, 230360.046917688508984, 230370.182191337720724, 230380.317504641949199, 230390.452857599622803, 230400.588250209140824, 230410.723682468931656, 230420.859154377481900, 230430.994665933132637, 230441.130217134341365, 230451.265807979536476, 230461.401438467233675, 230471.537108595686732, 230481.672818363469560, 230491.808567768981447, 230501.944356810621684, 230512.080185486818664, 230522.216053796029883, 230532.351961736654630, 230542.487909307150403, 230552.623896505945595, 230562.759923331439495, 230572.895989782031393, 230583.032095856266096, 230593.168241552455584, 230603.304426869144663, 230613.440651804645313, 230623.576916357473237, 230633.713220526027726, 230643.849564308737172, 230653.985947704000864, 230664.122370710334508, 230674.258833326050080, 230684.395335549750598, 230694.531877379718935, 230704.668458814383484, 230714.805079852259951, 230724.941740491747623, 230735.078440731303999, 230745.215180569270160, 230755.351960004220018, 230765.488779034436448, 230775.625637658435153, 230785.762535874673631, 230795.899473681522068, 230806.036451077408856, 230816.173468060791492, 230826.310524630098371, 230836.447620783845196, 230846.584756520285737, 230856.721931838052114, 230866.859146735427203, 230876.996401210926706, 230887.133695262920810, 230897.271028889954323, 230907.408402090310119, 230917.545814862533007, 230927.683267204993172, 230937.820759116206318, 230947.958290594484424, 230958.095861638372298, 230968.233472246269230, 230978.371122416632716, 230988.508812147803837, 230998.646541438356508, 231008.784310286602704, 231018.922118691029027, 231029.059966650092974, 231039.197854162193835, 231049.335781225789106, 231059.473747839307180, 231069.611754001205554, 231079.749799709854415, 231089.887884963769466, 231100.026009761291789, 231110.164174100966193, 231120.302377981191967, 231130.440621400368400, 231140.578904356952989, 231150.717226849403232, 231160.855588876089314, 231170.993990435585147, 231181.132431526144501, 231191.270912146370392, 231201.409432294633007, 231211.547991969360737, 231221.686591168981977, 231231.825229891954223, 231241.963908136676764, 231252.102625901694410, 231262.241383185319137, 231272.380179986066651, 231282.519016302394448, 231292.657892132643610, 231302.796807475329842, 231312.935762328852434, 231323.074756691727089, 231333.213790562236682, 231343.352863939042436, 231353.491976820369018, 231363.631129204761237, 231373.770321090618381, 231383.909552476514364, 231394.048823360644747, 231404.188133741670754, 231414.327483617962571, 231424.466872987890383, 231434.606301849998999, 231444.745770202600397, 231454.885278044268489, 231465.024825373431668, 231475.164412188431015, 231485.304038487753132, 231495.443704269855516, 231505.583409533195663, 231515.723154276231071, 231525.862938497273717, 231536.002762194926618, 231546.142625367530854, 231556.282528013602132, 231566.422470131510636, 231576.562451719713863, 231586.702472776727518, 231596.842533300834475, 231606.982633290695958, 231617.122772744565737, 231627.262951660959516, 231637.403170038305689, 231647.543427875061752, 231657.683725169656100, 231667.824061920604436, 231677.964438126218738, 231688.104853785072919, 231698.245308895508060, 231708.385803456010763, 231718.526337465038523, 231728.666910920990631, 231738.807523822353687, 231748.948176167585189, 231759.088867955084424, 231769.229599183279788, 231779.370369850716088, 231789.511179955763509, 231799.652029496821342, 231809.792918472405290, 231819.933846880943747, 231830.074814720894210, 231840.215821990685072, 231850.356868688802933, 231860.497954813617980, 231870.639080363587709, 231880.780245337227825, 231890.921449732966721, 231901.062693549145479, 231911.203976784338010, 231921.345299436972709, 231931.486661505361553, 231941.628062988165766, 231951.769503883639118, 231961.910984190355521, 231972.052503906656057, 231982.194063031143742, 231992.335661562101450, 232002.477299498044886, 232012.618976837460650, 232022.760693578718929, 232032.902449720306322, 232043.044245260680327, 232053.186080198269337, 232063.327954531501746, 232073.469868258893257, 232083.611821378872264, 232093.753813889808953, 232103.895845790248131, 232114.037917078589089, 232124.180027753289323, 232134.322177812777227, 232144.464367255568504, 232154.606596080033341, 232164.748864284658339, 232174.891171867930098, 232185.033518828189699, 232195.175905164011056, 232205.318330873706145, 232215.460795955907088, 232225.603300408867653, 232235.745844231219962, 232245.888427421246888, 232256.031049977522343, 232266.173711898474721, 232276.316413182474207, 232286.459153828065610, 232296.601933833677322, 232306.744753197708633, 232316.887611918617040, 232327.030509994947352, 232337.173447425098857, 232347.316424207470845, 232357.459440340579022, 232367.602495822822675, 232377.745590652746614, 232387.888724828662816, 232398.031898349116091, 232408.175111212622141, 232418.318363417434739, 232428.461654962215107, 232438.604985845246119, 232448.748356065130793, 232458.891765620210208, 232469.035214508970967, 232479.178702729957877, 232489.322230281395605, 232499.465797162003582, 232509.609403370035579, 232519.753048904036405, 232529.896733762434451, 232540.040457943745423, 232550.184221446339507, 232560.328024268674199, 232570.471866409294307, 232580.615747866511811, 232590.759668638929725, 232600.903628724860027, 232611.047628122905735, 232621.191666831407929, 232631.335744848824106, 232641.479862173699075, 232651.624018804432126, 232661.768214739451651, 232671.912449977215147, 232682.056724516267423, 232692.201038355007768, 232702.345391491806367, 232712.489783925237134, 232722.634215653728461, 232732.778686675708741, 232742.923196989635471, 232753.067746594024356, 232763.212335487216478, 232773.356963667756645, 232783.501631134102354, 232793.646337884652894, 232803.791083917953074, 232813.935869232431287, 232824.080693826428615, 232834.225557698548073, 232844.370460847188951, 232854.515403270808747, 232864.660384967835853, 232874.805405936815077, 232884.950466176145710, 232895.095565684285248, 232905.240704459691187, 232915.385882500821026, 232925.531099806161365, 232935.676356374169700, 232945.821652203216217, 232955.966987291874830, 232966.112361638486618, 232976.257775241654599, 232986.403228099748958, 232996.548720211227192, 233006.694251574634109, 233016.839822188252583, 233026.985432050714735, 233037.131081160390750, 233047.276769515767228, 233057.422497115330771, 233067.568263957451563, 233077.714070040761726, 233087.859915363456821, 233098.005799924285384, 233108.151723721501185, 233118.297686753649032, 233128.443689019186422, 233138.589730516512645, 233148.735811244201614, 233158.881931200652616, 233169.028090384323150, 233179.174288793670712, 233189.320526427123696, 233199.466803283226909, 233209.613119360408746, 233219.759474657097599, 233229.905869171809172, 233240.052302902942756, 233250.198775849014055, 233260.345288008480566, 233270.491839379741577, 233280.638429961341899, 233290.785059751680819, 233300.931728749244940, 233311.078436952579068, 233321.225184359995183, 233331.371970970038092, 233341.518796781136189, 233351.665661791834282, 233361.812566000589868, 233371.959509405714925, 233382.106492005812470, 233392.253513799281791, 233402.400574784667697, 233412.547674960369477, 233422.694814324844629, 233432.841992876579752, 233442.989210614003241, 233453.136467535689007, 233463.283763640007237, 233473.431098925386323, 233483.578473390371073, 233493.725887033389881, 233503.873339852929348, 233514.020831847505178, 233524.168363015400246, 233534.315933355275774, 233544.463542865501950, 233554.611191544594476, 233564.758879390981747, 233574.906606403092155, 233585.054372579499613, 233595.202177918574307, 233605.350022418802837, 233615.497906078730011, 233625.645828896696912, 233635.793790871248348, 233645.941792000841815, 233656.089832283905707, 233666.237911718955729, 233676.386030304449378, 233686.534188038844150, 233696.682384920655750, 233706.830620948196156, 233716.978896120155696, 233727.127210434788140, 233737.275563890754711, 233747.423956486367388, 233757.572388220200082, 233767.720859090622980, 233777.869369096209994, 233788.017918235360412, 233798.166506506560836, 233808.315133908239659, 233818.463800438970793, 233828.612506097182631, 233838.761250881245360, 233848.910034789761994, 233859.058857821102720, 233869.207719973783242, 233879.356621246319264, 233889.505561637051869, 233899.654541144584073, 233909.803559767286060, 233919.952617503731744, 233930.101714352262206, 233940.250850311480463, 233950.400025379756698, 233960.549239555606619, 233970.698492837516824, 233980.847785223915707, 233990.997116713260766, 234001.146487304067705, 234011.295896994823124, 234021.445345783926314, 234031.594833669922082, 234041.744360651267925, 234051.893926726421341, 234062.043531893810723, 234072.193176151951775, 234082.342859499360202, 234092.492581934435293, 234102.642343455634546, 234112.792144061560975, 234122.941983750555664, 234133.091862521105213, 234143.241780371725326, 234153.391737300873501, 234163.541733307065442, 234173.691768388671335, 234183.841842544235988, 234193.991955772246001, 234204.142108071158873, 234214.292299439373892, 234224.442529875494074, 234234.592799377889605, 234244.743107945105294, 234254.893455575569533, 234265.043842267768923, 234275.194268020190066, 234285.344732831348665, 234295.495236699585803, 234305.645779623475391, 234315.796361601474928, 234325.946982632041909, 234336.097642713721143, 234346.248341844882816, 234356.399080024071736, 234366.549857249774504, 234376.700673520361306, 234386.851528834464261, 234397.002423190453555, 234407.153356586815789, 234417.304329022066668, 234427.455340494663687, 234437.606391003035242, 234447.757480545726139, 234457.908609121135669, 234468.059776727866847, 234478.210983364289859, 234488.362229028891306, 234498.513513720186893, 234508.664837436634116, 234518.816200176690472, 234528.967601938900771, 234539.119042721664300, 234549.270522523438558, 234559.422041342826560, 234569.573599178198492, 234579.725196028040955, 234589.876831890898757, 234600.028506765142083, 234610.180220649373950, 234620.331973542051855, 234630.483765441516880, 234640.635596346430248, 234650.787466255133040, 234660.939375166140962, 234671.091323077969719, 234681.243309989135014, 234691.395335897948826, 234701.547400803072378, 234711.699504702875856, 234721.851647595904069, 234732.003829480614513, 234742.156050355464686, 234752.308310218941187, 234762.460609069530619, 234772.612946905719582, 234782.765323725994676, 234792.917739528813399, 234803.070194312662352, 234813.222688076057239, 234823.375220817426452, 234833.527792535256594, 234843.680403228092473, 234853.833052894362481, 234863.985741532495013, 234874.138469141093083, 234884.291235718555981, 234894.444041263370309, 234904.596885774051771, 234914.749769248999655, 234924.902691686846083, 234935.055653085932136, 234945.208653444773518, 234955.361692761915037, 234965.514771035814192, 234975.667888264899375, 234985.821044447657187, 234995.974239582661539, 235006.127473668282619, 235016.280746703094337, 235026.434058685495984, 235036.587409614061471, 235046.740799487219192, 235056.894228303455748, 235067.047696061257739, 235077.201202759140870, 235087.354748395533534, 235097.508332968893228, 235107.661956477822969, 235117.815618920751149, 235127.969320296106162, 235138.123060602403712, 235148.276839838217711, 235158.430658001918346, 235168.584515091992216, 235178.738411106984131, 235188.892346045351587, 235199.046319905639393, 235209.200332686188631, 235219.354384385631420, 235229.508475002367049, 235239.662604534969432, 235249.816772981779650, 235259.970980341400718, 235270.125226612319238, 235280.279511792905396, 235290.433835881791310, 235300.588198877376271, 235310.742600778146880, 235320.897041582647944, 235331.051521289336961, 235341.206039896642324, 235351.360597403137945, 235361.515193807281321, 235371.669829107529949, 235381.824503302428639, 235391.979216390405782, 235402.133968369947979, 235412.288759239629144, 235422.443588997848565, 235432.598457643063739, 235442.753365173877683, 235452.908311588718789, 235463.063296886015451, 235473.218321064399788, 235483.373384122271091, 235493.528486058086855, 235503.683626870362787, 235513.838806557643693, 235523.994025118328864, 235534.149282550963107, 235544.304578854062129, 235554.459914025996113, 235564.615288065397181, 235574.770700970693724, 235584.926152740314137, 235595.081643372861436, 235605.237172866793117, 235615.392741220479365, 235625.548348432581406, 235635.703994501527632, 235645.859679425746435, 235656.015403203811729, 235666.171165834151907, 235676.326967315311776, 235686.482807645748835, 235696.638686823949683, 235706.794604848430026, 235716.950561717618257, 235727.106557430175599, 235737.262591984384926, 235747.418665378820151, 235757.574777611967875, 235767.730928682372905, 235777.887118588434532, 235788.043347328755772, 235798.199614901735913, 235808.355921305890661, 235818.512266539735720, 235828.668650601728586, 235838.825073490384966, 235848.981535204162356, 235859.138035741634667, 235869.294575101201190, 235879.451153281435836, 235889.607770280766999, 235899.764426097710384, 235909.921120730781695, 235920.077854178467533, 235930.234626439254498, 235940.391437511600088, 235950.548287394049112, 235960.705176085029962, 235970.862103583087446, 235981.019069886766374, 235991.176074994495139, 236001.333118904731236, 236011.490201616019476, 236021.647323126875563, 236031.804483435727889, 236041.961682541179471, 236052.118920441629598, 236062.276197135564871, 236072.433512621559203, 236082.590866898099193, 236092.748259963584132, 236102.905691816529725, 236113.063162455568090, 236123.220671879069414, 236133.378220085549401, 236143.535807073523756, 236153.693432841479080, 236163.851097387872869, 236174.008800711308140, 236184.166542810213286, 236194.324323682987597, 236204.482143328321399, 236214.640001744613983, 236224.797898930351948, 236234.955834883992793, 236245.113809604139533, 236255.271823089220561, 236265.429875337722478, 236275.587966348190093, 236285.746096119110007, 236295.904264648939716, 236306.062471936253132, 236316.220717979478650, 236326.379002777102869, 236336.537326327699702, 236346.695688629755750, 236356.854089681641199, 236367.012529481988167, 236377.171008029283257, 236387.329525322042173, 236397.488081358664203, 236407.646676137694158, 236417.805309657647740, 236427.963981917069759, 236438.122692914359504, 236448.281442648119992, 236458.440231116808718, 236468.599058318824973, 236478.757924252829980, 236488.916828917223029, 236499.075772310548928, 236509.234754431265173, 236519.393775277974783, 236529.552834849018836, 236539.711933142971247, 236549.871070158376824, 236560.030245893751271, 236570.189460347493878, 236580.348713518091245, 236590.508005404233700, 236600.667336004233221, 236610.826705316663720, 236620.986113340070006, 236631.145560072851367, 236641.305045513523510, 236651.464569660689449, 236661.624132512806682, 236671.783734068303602, 236681.943374325754121, 236692.103053283703048, 236702.262770940549672, 236712.422527294751490, 236722.582322345027933, 236732.742156089720083, 236742.902028527314542, 236753.061939656385221, 236763.221889475418720, 236773.381877982930746, 236783.541905177378794, 236793.701971057365881, 236803.862075621291297, 236814.022218867641641, 236824.182400794990826, 236834.342621401825454, 236844.502880686719436, 236854.663178648013854, 236864.823515284311725, 236874.983890594186960, 236885.144304575951537, 236895.304757228295784, 236905.465248549648095, 236915.625778538465966, 236925.786347193323309, 236935.946954512764933, 236946.107600495190127, 236956.268285139201907, 236966.429008443199564, 236976.589770405786112, 236986.750571025419049, 236996.911410300555872, 237007.072288229799597, 237017.233204811607720, 237027.394160044525051, 237037.555153927009087, 237047.716186457546428, 237057.877257634710986, 237068.038367456989363, 237078.199515922897262, 237088.360703030863078, 237098.521928779518930, 237108.683193167205900, 237118.844496192585211, 237129.005837854114361, 237139.167218150279950, 237149.328637079597684, 237159.490094640612369, 237169.651590831839712, 237179.813125651708106, 237189.974699098733254, 237200.136311171459965, 237210.297961868403945, 237220.459651188080898, 237230.621379128977424, 237240.783145689609228, 237250.944950868462911, 237261.106794664054178, 237271.268677074927837, 237281.430598099541385, 237291.592557736439630, 237301.754555984138278, 237311.916592841123929, 237322.078668305912288, 237332.240782377019059, 237342.402935052930843, 237352.565126332163345, 237362.727356213261373, 237372.889624694682425, 237383.051931774971308, 237393.214277452643728, 237403.376661726244492, 237413.539084594172891, 237423.701546055031940, 237433.864046107337344, 237444.026584749517497, 237454.189161980088102, 237464.351777797710383, 237474.514432200725423, 237484.677125187678030, 237494.839856757142115, 237505.002626907662489, 237515.165435637580231, 237525.328282945585670, 237535.491168830107199, 237545.654093289660523, 237555.817056322732242, 237565.980057927896269, 237576.143098103639204, 237586.306176848476753, 237596.469294160895515, 237606.632450039411196, 237616.795644482568605, 237626.958877488883445, 237637.122149056842318, 237647.285459184902720, 237657.448807871667668, 237667.612195115652867, 237677.775620915403124, 237687.939085269259522, 237698.102588175883284, 237708.266129633731907, 237718.429709641350200, 237728.593328197253868, 237738.756985299987718, 237748.920680947951041, 237759.084415139805060, 237769.248187873890856, 237779.411999148869654, 237789.575848963198951, 237799.739737315423554, 237809.903664204000961, 237820.067629627534188, 237830.231633584422525, 237840.395676073268987, 237850.559757092531072, 237860.723876640811795, 237870.888034716568654, 237881.052231318288250, 237891.216466444544494, 237901.380740093823988, 237911.545052264642436, 237921.709402955544647, 237931.873792164988117, 237942.038219891517656, 237952.202686133648967, 237962.367190889926860, 237972.531734158867039, 237982.696315938956104, 237992.860936228709761, 238003.025595026672818, 238013.190292331302771, 238023.355028141202638, 238033.519802454829914, 238043.684615270671202, 238053.849466587358620, 238064.014356403320562, 238074.179284717130940, 238084.344251527218148, 238094.509256832156098, 238104.674300630547805, 238114.839382920792559, 238125.004503701435169, 238135.169662970933132, 238145.334860727947671, 238155.500096970936283, 238165.665371698385570, 238175.830684908753028, 238185.996036600758089, 238196.161426772741834, 238206.326855423307279, 238216.492322550999233, 238226.657828154216986, 238236.823372231563553, 238246.988954781554639, 238257.154575802676845, 238267.320235293504084, 238277.485933252522955, 238287.651669678249164, 238297.817444569227519, 238307.983257923915517, 238318.149109740916174, 238328.315000018745195, 238338.480928755889181, 238348.646895950805629, 238358.812901602097554, 238368.978945708338870, 238379.145028267957969, 238389.311149279470555, 238399.477308741479646, 238409.643506652442738, 238419.809743010904640, 238429.976017815351952, 238440.142331064300379, 238450.308682756352937, 238460.475072890025331, 238470.641501463745954, 238480.807968476030510, 238490.974473925540224, 238501.141017810732592, 238511.307600130094215, 238521.474220882140798, 238531.640880065417150, 238541.807577678497182, 238551.974313719867496, 238562.141088188014692, 238572.307901081454474, 238582.474752398848068, 238592.641642138536554, 238602.808570299181156, 238612.975536879181163, 238623.142541877139593, 238633.309585291630356, 238643.476667121081846, 238653.643787364097079, 238663.810946019075345, 238673.978143084677868, 238684.145378559420351, 238694.312652441731188, 238704.479964730184292, 238714.647315423266264, 238724.814704519609222, 238734.982132017641561, 238745.149597915966297, 238755.317102212982718, 238765.484644907352049, 238775.652225997531787, 238785.819845482066739, 238795.987503359472612, 238806.155199628236005, 238816.322934286989039, 238826.490707334160106, 238836.658518768352224, 238846.826368588022888, 238856.994256791716907, 238867.162183377949987, 238877.330148345325142, 238887.498151692241663, 238897.666193417360773, 238907.834273519139970, 238918.002391996065853, 238928.170548846799647, 238938.338744069682434, 238948.506977663375437, 238958.675249626394361, 238968.843559957284015, 238979.011908654414583, 238989.180295716534602, 238999.348721142072463, 239009.517184929485666, 239019.685687077435432, 239029.854227584321052, 239040.022806448803749, 239050.191423669341020, 239060.360079244419467, 239070.528773172642104, 239080.697505452466430, 239090.866276082553668, 239101.035085061303107, 239111.203932387317764, 239121.372818059084238, 239131.541742075060029, 239141.710704433964565, 239151.879705134197138, 239162.048744174244348, 239172.217821552825626, 239182.386937268223846, 239192.556091319158440, 239202.725283704086905, 239212.894514421554049, 239223.063783470075577, 239233.233090848254506, 239243.402436554490123, 239253.571820587443653, 239263.741242945543490, 239273.910703627305338, 239284.080202631390421, 239294.249739956256235, 239304.419315600447590, 239314.588929562451085, 239324.758581840840634, 239334.928272434219252, 239345.098001340928022, 239355.267768559686374, 239365.437574088922702, 239375.607417927152710, 239385.777300073037622, 239395.947220524976728, 239406.117179281573044, 239416.287176341313170, 239426.457211702771019, 239436.627285364433192, 239446.797397324931808, 239456.967547582695261, 239467.137736136268359, 239477.307962984225014, 239487.478228125110036, 239497.648531557380920, 239507.818873279698892, 239517.989253290492343, 239528.159671588276979, 239538.330128171655815, 239548.500623039144557, 239558.671156189346220, 239568.841727620689198, 239579.012337331630988, 239589.182985320949228, 239599.353671586985001, 239609.524396128341323, 239619.695158943563001, 239629.865960031165741, 239640.036799389636144, 239650.207677017664537, 239660.378592913562898, 239670.549547076050658, 239680.720539503614418, 239690.891570194769884, 239701.062639148003655, 239711.233746362006059, 239721.404891835205490, 239731.576075566030340, 239741.747297553229146, 239751.918557795230299, 239762.089856290607713, 239772.261193037789781, 239782.432568035495933, 239792.603981282067252, 239802.775432776223170, 239812.946922516362974, 239823.118450501147890, 239833.290016728948103, 239843.461621198453940, 239853.633263908152003, 239863.804944856557995, 239873.976664042158518, 239884.148421463673003, 239894.320217119471636, 239904.492051008128328, 239914.663923128246097, 239924.835833478282439, 239935.007782056840369, 239945.179768862406490, 239955.351793893554714, 239965.523857148771640, 239975.695958626689389, 239985.868098325794563, 239996.040276244573761, 240006.212492381630000, 240016.384746735478984, 240026.557039304723730, 240036.729370087821735, 240046.901739083376015, 240057.074146289873170, 240067.246591705828905, 240077.419075329904445, 240087.591597160499077, 240097.764157196215820, 240107.936755435599480, 240118.109391877253074, 240128.282066519575892, 240138.454779361229157, 240148.627530400728574, 240158.800319636502536, 240168.973147067270475, 240179.146012691431679, 240189.318916507647373, 240199.491858514316846, 240209.664838710101321, 240219.837857093545608, 240230.010913663078099, 240240.184008417330915, 240250.357141354848864, 240260.530312474147649, 240270.703521773772081, 240280.876769252208760, 240291.050054908118909, 240301.223378739960026, 240311.396740746276919, 240321.570140925701708, 240331.743579276662786, 240341.917055797704961, 240352.090570487489458, 240362.264123344415566, 240372.437714367144508, 240382.611343554133782, 240392.785010903986404, 240402.958716415247181, 240413.132460086402716, 240423.306241916026920, 240433.480061902664602, 240443.653920044889674, 240453.827816341188736, 240464.001750790223014, 240474.175723390362691, 240484.349734140239889, 240494.523783038399415, 240504.697870083415182, 240514.871995273831999, 240525.046158608136466, 240535.220360084873391, 240545.394599702616688, 240555.568877459969372, 240565.743193355330732, 240575.917547387420200, 240586.091939554666169, 240596.266369855671655, 240606.440838288952364, 240616.615344852994895, 240626.789889546489576, 240636.964472367864801, 240647.139093315723585, 240657.313752388552530, 240667.488449584925547, 240677.663184903503861, 240687.837958342686761, 240698.012769901077263, 240708.187619577220175, 240718.362507369602099, 240728.537433276855154, 240738.712397297465941, 240748.887399430066580, 240759.062439673143672, 240769.237518025242025, 240779.412634484848240, 240789.587789050652646, 240799.762981721083634, 240809.938212494831532, 240820.113481370266527, 240830.288788346049841, 240840.464133420668077, 240850.639516592782456, 240860.814937860792270, 240870.990397223300533, 240881.165894678881159, 240891.341430226137163, 240901.517003863496939, 240911.692615589563502, 240921.868265402852558, 240932.043953302025329, 240942.219679285481106, 240952.395443351881113, 240962.571245499770157, 240972.747085727634840, 240982.922964034078177, 240993.098880417557666, 241003.274834876734531, 241013.450827410124475, 241023.626858016272308, 241033.802926693722839, 241043.979033441020874, 241054.155178256740328, 241064.331361139426008, 241074.507582087651826, 241084.683841099846177, 241094.860138174728490, 241105.036473310785368, 241115.212846506503411, 241125.389257760514738, 241135.565707071364159, 241145.742194437567377, 241155.918719857669203, 241166.095283330272650, 241176.271884853922529, 241186.448524427105440, 241196.625202048453502, 241206.801917716453318, 241216.978671429737005, 241227.155463186791167, 241237.332292986160610, 241247.509160826448351, 241257.686066706140991, 241267.863010623870650, 241278.039992578123929, 241288.217012567532947, 241298.394070590584306, 241308.571166645822814, 241318.748300731851486, 241328.925472847215133, 241339.102682990429457, 241349.279931160039268, 241359.457217354676686, 241369.634541572828311, 241379.811903813097160, 241389.989304074028041, 241400.166742354107555, 241410.344218651967822, 241420.521732966153650, 241430.699285295122536, 241440.876875637593912, 241451.054503992054379, 241461.232170356990537, 241471.409874731063610, 241481.587617112701992, 241491.765397500537802, 241501.943215893174056, 241512.121072289126460, 241522.298966686881613, 241532.476899085100740, 241542.654869482270442, 241552.832877876993734, 241563.010924267786322, 241573.189008653193014, 241583.367131031845929, 241593.545291402289877, 241603.723489762953250, 241613.901726112555480, 241624.080000449524960, 241634.258312772522913, 241644.436663080006838, 241654.615051370696165, 241664.793477642990183, 241674.971941895433702, 241685.150444126746152, 241695.328984335355926, 241705.507562519807834, 241715.686178678675788, 241725.864832810621010, 241736.043524914042791, 241746.222254987660563, 241756.401023029960925, 241766.579829039488686, 241776.758673014730448, 241786.937554954405641, 241797.116474856913555, 241807.295432720973622, 241817.474428545043338, 241827.653462327667512, 241837.832534067449160, 241848.011643762991298, 241858.190791412722319, 241868.369977015361656, 241878.549200569250388, 241888.728462073166156, 241898.907761525566457, 241909.087098925112514, 241919.266474270232720, 241929.445887559471885, 241939.625338791549439, 241949.804827964835567, 241959.984355078078806, 241970.163920129649341, 241980.343523118295707, 241990.523164042446297, 242000.702842900762334, 242010.882559691672213, 242021.062314413895365, 242031.242107065860182, 242041.421937646169681, 242051.601806153397774, 242061.781712586089270, 242071.961656942818081, 242082.141639222187223, 242092.321659422683297, 242102.501717542909319, 242112.681813581468305, 242122.861947536846856, 242133.042119407560676, 242143.222329192329198, 242153.402576889609918, 242163.582862498005852, 242173.763186016061809, 242183.943547442322597, 242194.123946775391232, 242204.304384013812523, 242214.484859156131279, 242224.665372200921411, 242234.845923146785935, 242245.026511992240557, 242255.207138735830085, 242265.387803376157535, 242275.568505911767716, 242285.749246341263643, 242295.930024663248332, 242306.110840876150178, 242316.291694978601299, 242326.472586969146505, 242336.653516846417915, 242346.834484608902130, 242357.015490255260374, 242367.196533783921041, 242377.377615193545353, 242387.558734482678119, 242397.739891649864148, 242407.921086693735560, 242418.102319612778956, 242428.283590405568248, 242438.464899070764659, 242448.646245606738375, 242458.827630012267036, 242469.009052285779035, 242479.190512425935594, 242489.372010431281524, 242499.553546300216112, 242509.735120031575207, 242519.916731623758096, 242530.098381075309590, 242540.280068384949118, 242550.461793551105075, 242560.643556572380476, 242570.825357447378337, 242581.007196174643468, 242591.189072752662469, 242601.370987180125667, 242611.552939455577871, 242621.734929577592993, 242631.916957544599427, 242642.099023355374811, 242652.281127008347539, 242662.463268502120627, 242672.645447835297091, 242682.827665006363532, 242693.009920013981173, 242703.192212856607512, 242713.374543532961980, 242723.556912041502073, 242733.739318380772602, 242743.921762549492996, 242754.104244546091650, 242764.286764369171578, 242774.469322017335799, 242784.651917489070911, 242794.834550783038139, 242805.017221897753188, 242815.199930831819074, 242825.382677583809709, 242835.565462152211694, 242845.748284535802668, 242855.931144732894609, 242866.114042742206948, 242876.296978562284494, 242886.479952191672055, 242896.662963628972648, 242906.846012872672873, 242917.029099921463057, 242927.212224773829803, 242937.395387428463437, 242947.578587883792352, 242957.761826138477772, 242967.945102191064507, 242978.128416040039156, 242988.311767684121151, 242998.495157121738885, 243008.678584351669997, 243018.862049372226465, 243029.045552182156825, 243039.229092780005885, 243049.412671164231142, 243059.596287333610235, 243069.779941286513349, 243079.963633021659916, 243090.147362537536537, 243100.331129832804436, 243110.514934905892005, 243120.698777755518677, 243130.882658380171051, 243141.066576778452145, 243151.250532948935870, 243161.434526890108828, 243171.618558600719552, 243181.802628079196438, 243191.986735324200708, 243202.170880334218964, 243212.355063107912429, 243222.539283643884119, 243232.723541940562427, 243242.907837996608578, 243253.092171810567379, 243263.276543381100055, 243273.460952706605894, 243283.645399785804329, 243293.829884617327480, 243304.014407199603738, 243314.198967531177914, 243324.383565610827645, 243334.568201436981326, 243344.752875008241972, 243354.937586323096184, 243365.122335380321601, 243375.307122178346617, 243385.491946715774247, 243395.676808991178405, 243405.861709003162105, 243416.046646750241052, 243426.231622231076472, 243436.416635444213171, 243446.601686388195958, 243456.786775061569642, 243466.971901462995447, 243477.157065591076389, 243487.342267444299068, 243497.527507021208294, 243507.712784320523497, 243517.898099340731278, 243528.083452080434654, 243538.268842538091121, 243548.454270712420112, 243558.639736601995537, 243568.825240205362206, 243579.010781521123135, 243589.196360547823133, 243599.381977284007007, 243609.567631728277775, 243619.753323879296659, 243629.939053735550260, 243640.124821295583388, 243650.310626558057265, 243660.496469521574909, 243670.682350184622919, 243680.868268545775209, 243691.054224603693001, 243701.240218357008416, 243711.426249804149847, 243721.612318943720311, 243731.798425774381030, 243741.984570294676814, 243752.170752503152471, 243762.356972398411017, 243772.543229978997260, 243782.729525243572425, 243792.915858190681320, 243803.102228818868753, 243813.288637126795948, 243823.475083112891298, 243833.661566775903339, 243843.848088114318671, 243854.034647126769414, 243864.221243811742170, 243874.407878167956369, 243884.594550193898613, 243894.781259888171917, 243904.968007249379298, 243915.154792276007356, 243925.341614966775523, 243935.528475320170401, 243945.715373334795004, 243955.902309009252349, 243966.089282342145452, 243976.276293331960915, 243986.463341977359960, 243996.650428276858293, 244006.837552229175344, 244017.024713832768612, 244027.211913086241111, 244037.399149988195859, 244047.586424537235871, 244057.773736731905956, 244067.961086570809130, 244078.148474052490201, 244088.335899175610393, 244098.523361938598100, 244108.710862340230960, 244118.898400378995575, 244129.085976053436752, 244139.273589362273924, 244149.461240303935483, 244159.648928877082653, 244169.836655080260243, 244180.024418912100373, 244190.212220371206058, 244200.400059456093004, 244210.587936165422434, 244220.775850497680949, 244230.963802451529773, 244241.151792025455507, 244251.339819218177581, 244261.527884028240805, 244271.715986454189988, 244281.904126494569937, 244292.092304148100084, 244302.280519413267029, 244312.468772288673790, 244322.657062772923382, 244332.845390864560613, 244343.033756562246708, 244353.222159864468267, 244363.410600769886514, 244373.599079277017154, 244383.787595384521410, 244393.976149091031402, 244404.164740395033732, 244414.353369295073207, 244424.542035789811052, 244434.730739877850283, 244444.919481557793915, 244455.108260828186758, 244465.297077687573619, 244475.485932134615723, 244485.674824167799670, 244495.863753785903100, 244506.052720987354405, 244516.241725770756602, 244526.430768134712707, 244536.619848077825736, 244546.808965598698705, 244556.998120695934631, 244567.187313368020114, 244577.376543613558169, 244587.565811431326438, 244597.755116819607792, 244607.944459777296288, 244618.133840302791214, 244628.323258394753793, 244638.512714051728835, 244648.702207272377564, 244658.891738055186579, 244669.081306398758898, 244679.270912301755743, 244689.460555762780132, 244699.650236780318664, 244709.839955353090772, 244720.029711479583057, 244730.219505158340326, 244740.409336388082011, 244750.599205167352920, 244760.789111494697863, 244770.979055368778063, 244781.169036788138328, 244791.359055751381675, 244801.549112257052911, 244811.739206303813262, 244821.929337890207535, 244832.119507014896953, 244842.309713676368119, 244852.499957873282256, 244862.690239604242379, 244872.880558867764194, 244883.070915662450716, 244893.261309986992273, 244903.451741839875467, 244913.642211219761521, 244923.832718125195242, 244934.023262554779649, 244944.213844507175963, 244954.404463980812579, 244964.595120974408928, 244974.785815486568026, 244984.976547515834682, 244995.167317060811911, 245005.358124120044522, 245015.548968692251947, 245025.739850775862578, 245035.930770369654056, 245046.121727471996564, 245056.312722081667744, 245066.503754197212402, 245076.694823817233555, 245086.885930940276012, 245097.077075564942788, 245107.268257689836901, 245117.459477313561365, 245127.650734434777405, 245137.842029051971622, 245148.033361163688824, 245158.224730768706650, 245168.416137865511701, 245178.607582452706993, 245188.799064528837334, 245198.990584092563950, 245209.182141142548062, 245219.373735677218065, 245229.565367695293389, 245239.757037195289740, 245249.948744175926549, 245260.140488635603106, 245270.332270573097048, 245280.524089986953186, 245290.715946875716327, 245300.907841237989487, 245311.099773072433891, 245321.291742377594346, 245331.483749152073869, 245341.675793394475477, 245351.867875103402184, 245362.059994277457008, 245372.252150915184757, 245382.444345015188446, 245392.636576576129301, 245402.828845596552128, 245413.021152075118152, 245423.213496010255767, 245433.405877400800819, 245443.598296245181700, 245453.790752542059636, 245463.983246289979434, 245474.175777487660525, 245484.368346133531304, 245494.560952226311201, 245504.753595764545025, 245514.946276746835792, 245525.138995171844726, 245535.331751038058428, 245545.524544344196329, 245555.717375088745030, 245565.910243270365754, 245576.103148887661519, 245586.296091939177131, 245596.489072423573816, 245606.682090339454589, 245616.875145685364259, 245627.068238459905842, 245637.261368661682354, 245647.454536289296811, 245657.647741341410438, 245667.840983816626249, 245678.034263713372638, 245688.227581030427245, 245698.420935766334878, 245708.614327919640345, 245718.807757489063079, 245729.001224473089678, 245739.194728870381368, 245749.388270679482957, 245759.581849899113877, 245769.775466527702520, 245779.969120564026525, 245790.162812006572494, 245800.356540853943443, 245810.550307104742387, 245820.744110757630551, 245830.937951811210951, 245841.131830263970187, 245851.325746114685899, 245861.519699361786479, 245871.713690003933152, 245881.907718039787142, 245892.101783467835048, 245902.295886286854511, 245912.490026495273924, 245922.684204091812717, 245932.878419074899284, 245943.072671443369472, 245953.266961195709882, 245963.461288330523530, 245973.655652846413432, 245983.850054741982603, 245994.044494015834061, 246004.238970666570822, 246014.433484692795901, 246024.628036093112314, 246034.822624866181286, 246045.017251010547625, 246055.211914524756139, 246065.406615407468053, 246075.601353657344589, 246085.796129272930557, 246095.990942252828972, 246106.185792595701059, 246116.380680300033418, 246126.575605364545481, 246136.770567787782056, 246146.965567568346160, 246157.160604704840807, 246167.355679195869016, 246177.550791040092008, 246187.745940236112801, 246197.941126782476204, 246208.136350677727023, 246218.331611920642899, 246228.526910509768641, 246238.722246443590848, 246248.917619720887160, 246259.113030340085970, 246269.308478299906710, 246279.503963598952396, 246289.699486235826043, 246299.895046209130669, 246310.090643517469289, 246320.286278159444919, 246330.481950133602368, 246340.677659438602859, 246350.873406073107617, 246361.069190035603242, 246371.265011324867373, 246381.460869939328404, 246391.656765877647558, 246401.852699138486059, 246412.048669720446924, 246422.244677622016752, 246432.440722842031391, 246442.636805378802819, 246452.832925231166882, 246463.029082397726597, 246473.225276876910357, 246483.421508667495800, 246493.617777768085944, 246503.814084177109180, 246514.010427893459564, 246524.206808915449074, 246534.403227241855348, 246544.599682871281402, 246554.796175802330254, 246564.992706033546710, 246575.189273563591996, 246585.385878391069127, 246595.582520514581120, 246605.779199932730990, 246615.975916644121753, 246626.172670647472842, 246636.369461941212649, 246646.566290524002397, 246656.763156394561520, 246666.960059551376617, 246677.156999993167119, 246687.353977718419628, 246697.550992725795368, 246707.748045013955561, 246717.945134581445018, 246728.142261426924961, 246738.339425548940198, 246748.536626946210163, 246758.733865617250558, 246768.931141560606193, 246779.128454775083810, 246789.325805259111803, 246799.523193011467811, 246809.720618030580226, 246819.918080315168481, 246830.115579863893799, 246840.313116675242782, 246850.510690747934859, 246860.708302080514841, 246870.905950671527535, 246881.103636519750580, 246891.301359623728786, 246901.499119982065167, 246911.696917593304534, 246921.894752456166316, 246932.092624569195323, 246942.290533931052778, 246952.488480540341698, 246962.686464395606890, 246972.884485495567787, 246983.082543838769197, 246993.280639423814137, 247003.478772249363828, 247013.676942313963082, 247023.875149616331328, 247034.073394155013375, 247044.271675928612240, 247054.469994935730938, 247064.668351175030693, 247074.866744645056315, 247085.065175344527233, 247095.263643272046465, 247105.462148426100612, 247115.660690805409104, 247125.859270408604061, 247136.057887234288501, 247146.256541280919919, 247156.455232547275955, 247166.653961032017833, 247176.852726733573945, 247187.051529650721932, 247197.250369782064809, 247207.449247126089176, 247217.648161681572674, 247227.847113447001902, 247238.046102421038086, 247248.245128602284240, 247258.444191989401588, 247268.643292580934940, 247278.842430375603726, 247289.041605371894548, 247299.240817568526836, 247309.440066964103607, 247319.639353557169670, 247329.838677346444456, 247340.038038330414565, 247350.237436507857637, 247360.436871877260273, 247370.636344437283697, 247380.835854186530923, 247391.035401123663178, 247401.234985247254372, 247411.434606555907521, 247421.634265048312955, 247431.833960723015480, 247442.033693578676321, 247452.233463613840286, 247462.433270827226806, 247472.633115217438899, 247482.832996783021372, 247493.032915522635449, 247503.232871434942354, 247513.432864518486895, 247523.632894771872088, 247533.832962193759158, 247544.033066782809328, 247554.233208537625615, 247564.433387456752826, 247574.633603538852185, 247584.833856782584917, 247595.034147186554037, 247605.234474749304354, 247615.434839469497092, 247625.635241345851682, 247635.835680376825621, 247646.036156561196549, 247656.236669897421962, 247666.437220384163084, 247676.637808020197554, 247686.838432803953765, 247697.039094734092942, 247707.239793809334515, 247717.440530028165085, 247727.641303389304085, 247737.842113891296322, 247748.042961532803020, 247758.243846312485402, 247768.444768228946486, 247778.645727280731080, 247788.846723466558615, 247799.047756784973899, 247809.248827234638156, 247819.449934814154403, 247829.651079522125656, 247839.852261357300449, 247850.053480318165384, 247860.254736403294373, 247870.456029611523263, 247880.657359941222239, 247890.858727391168941, 247901.060131960024592, 247911.261573646275792, 247921.463052448583767, 247931.664568365609739, 247941.866121396014933, 247952.067711538285948, 247962.269338791200425, 247972.471003153244965, 247982.672704623197205, 247992.874443199543748, 248003.076218880945817, 248013.278031666035531, 248023.479881553415908, 248033.681768541777274, 248043.883692629606230, 248054.085653815738624, 248064.287652098544640, 248074.489687476860126, 248084.691759949171683, 248094.893869514256949, 248105.096016170544317, 248115.298199916811427, 248125.500420751603087, 248135.702678673580522, 248145.904973681346746, 248156.107305773562985, 248166.309674948774045, 248176.512081205699360, 248186.714524542912841, 248196.917004959075712, 248207.119522452703677, 248217.322077022574376, 248227.524668667232618, 248237.727297385339625, 248247.929963175440207, 248258.132666036253795, 248268.335405966325197, 248278.538182964373846, 248288.740997028944548, 248298.943848158756737, 248309.146736352297012, 248319.349661608284805, 248329.552623925323132, 248339.755623302102322, 248349.958659737167181, 248360.161733229149831, 248370.364843776711496, 248380.567991378455190, 248390.771176032983931, 248400.974397739017149, 248411.177656495099654, 248421.380952299892670, 248431.584285151941003, 248441.787655050080502, 248451.991061992681352, 248462.194505978521192, 248472.397987006261246, 248482.601505074475426, 248492.805060181708541, 248503.008652326709125, 248513.212281508080196, 248523.415947724366561, 248533.619650974287651, 248543.823391256446484, 248554.027168569446076, 248564.230982912005857, 248574.434834282612428, 248584.638722680043429, 248594.842648102785461, 248605.046610549557954, 248615.250610019022133, 248625.454646509751910, 248635.658720020350302, 248645.862830549449427, 248656.066978095710510, 248666.271162657736568, 248676.475384234247031, 248686.679642823786708, 248696.883938424958615, 248707.088271036540391, 248717.292640656960430, 248727.497047284938162, 248737.701490919193020, 248747.905971558211604, 248758.110489200742450, 248768.315043845330365, 248778.519635490665678, 248788.724264135351405, 248798.928929777990561, 248809.133632417244371, 248819.338372051774058, 248829.543148680182640, 248839.747962301073130, 248849.952812913106754, 248860.157700514886528, 248870.362625105131883, 248880.567586682416731, 248890.772585245344089, 248900.977620792604284, 248911.182693322742125, 248921.387802834477043, 248931.592949326353846, 248941.798132797091966, 248952.003353245294420, 248962.208610669622431, 248972.413905068620807, 248982.619236441067187, 248992.824604785389965, 249003.030010100512300, 249013.235452384746168, 249023.440931636898313, 249033.646447855571751, 249043.852001039485913, 249054.057591187127400, 249064.263218297157437, 249074.468882368295453, 249084.674583399144467, 249094.880321388307493, 249105.086096334445756, 249115.291908236191375, 249125.497757092147367, 249135.703642900945852, 249145.909565661248052, 249156.115525371715194, 249166.321522030950291, 249176.527555637614569, 249186.733626190252835, 249196.939733687642729, 249207.145878128270851, 249217.352059510914842, 249227.558277834090404, 249237.764533096516971, 249247.970825296768453, 249258.177154433506075, 249268.383520505391061, 249278.589923510968219, 249288.796363449015189, 249299.002840318018571, 249309.209354116814211, 249319.415904843830504, 249329.622492497786880, 249339.829117077373667, 249350.035778581077466, 249360.242477007705020, 249370.449212355801137, 249380.655984623968834, 249390.862793810985750, 249401.069639915338485, 249411.276522935746470, 249421.483442870812723, 249431.690399719198467, 249441.897393479535822, 249452.104424150486011, 249462.311491730622947, 249472.518596218607854, 249482.725737613101956, 249492.932915912708268, 249503.140131116146222, 249513.347383221960627, 249523.554672228812706, 249533.761998135421891, 249543.969360940303886, 249554.176760642178124, 249564.384197239560308, 249574.591670731286285, 249584.799181115842657, 249595.006728391948855, 249605.214312558207894, 249615.421933613222791, 249625.629591555771185, 249635.837286384339677, 249646.045018097618595, 249656.252786694269162, 249666.460592172865290, 249676.668434532126412, 249686.876313770713750, 249697.084229887172114, 249707.292182880220935, 249717.500172748405021, 249727.708199490443803, 249737.916263104969403, 249748.124363590643043, 249758.332500946038635, 249768.540675169875612, 249778.748886260698782, 249788.957134217227576, 249799.165419038065011, 249809.373740721872309, 249819.582099267252488, 249829.790494672954082, 249839.998926937521901, 249850.207396059529856, 249860.415902037755586, 249870.624444870802108, 249880.833024557330646, 249891.041641095886007, 249901.250294485245831, 249911.458984723896720, 249921.667711810703622, 249931.876475744036725, 249942.085276522760978, 249952.294114145362983, 249962.502988610620378, 249972.711899917077972, 249982.920848063396988, 249993.129833048296859, 250003.338854870264186, 250013.547913528105710, 250023.757009020366240, 250033.966141345794313, 250044.175310502876528, 250054.384516490332317, 250064.593759306822903, 250074.803038950951304, 250085.012355421436951, 250095.221708716882858, 250105.431098835921148, 250115.640525777154835, 250125.849989539274247, 250136.059490120998817, 250146.269027520815143, 250156.478601737442659, 250166.688212769600796, 250176.897860615834361, 250187.107545274833683, 250197.317266745201778, 250207.527025025628973, 250217.736820114776492, 250227.946652011189144, 250238.156520713586360, 250248.366426220629364, 250258.576368530979380, 250268.786347643152112, 250278.996363555983407, 250289.206416267988971, 250299.416505777771818, 250309.626632084167795, 250319.836795185605297, 250330.046995080861961, 250340.257231768599013, 250350.467505247390363, 250360.677815515897237, 250370.888162572809961, 250381.098546416673344, 250391.308967046265025, 250401.519424460188020, 250411.729918657045346, 250421.940449635498226, 250432.151017394236987, 250442.361621931806440, 250452.572263247013325, 250462.782941338402452, 250472.993656204635045, 250483.204407844314119, 250493.415196256159106, 250503.626021438831231, 250513.836883390962612, 250524.047782111098059, 250534.258717597986106, 250544.469689850287978, 250554.680698866606690, 250564.891744645545259, 250575.102827185881324, 250585.313946486159693, 250595.525102545128902, 250605.736295361333760, 250615.947524933406385, 250626.158791260124417, 250636.370094339974457, 250646.581434171792353, 250656.792810754122911, 250667.004224085598253, 250677.215674164879601, 250687.427160990599077, 250697.638684561476111, 250707.850244876113720, 250718.061841933114920, 250728.273475731257349, 250738.485146269085817, 250748.696853545348858, 250758.908597558591282, 250769.120378307445208, 250779.332195790630067, 250789.544050006807083, 250799.755940954637481, 250809.967868632666068, 250820.179833039699588, 250830.391834174224641, 250840.603872035047971, 250850.815946620714385, 250861.028057929885108, 250871.240205961279571, 250881.452390713500790, 250891.664612185180886, 250901.876870374981081, 250912.089165281591704, 250922.301496903615771, 250932.513865239772713, 250942.726270288607338, 250952.938712048839079, 250963.151190519216470, 250973.363705698226113, 250983.576257584558334, 250993.788846176932566, 251004.001471473951824, 251014.214133474277332, 251024.426832176570315, 251034.639567579462891, 251044.852339681616286, 251055.065148481779033, 251065.277993978437735, 251075.490876170311822, 251085.703795056062518, 251095.916750634351047, 251106.129742903867736, 251116.342771863215603, 251126.555837511026766, 251136.768939846078865, 251146.982078866858501, 251157.195254572085105, 251167.408466960419901, 251177.621716030553216, 251187.835001781088067, 251198.048324210772989, 251208.261683318094583, 251218.475079101830488, 251228.688511560641928, 251238.901980693131918, 251249.115486497990787, 251259.329028973821551, 251269.542608119314536, 251279.756223933130968, 251289.969876413932070, 251300.183565560320858, 251310.397291371016763, 251320.611053844710113, 251330.824852979945717, 251341.038688775413902, 251351.252561229775893, 251361.466470341751119, 251371.680416109942598, 251381.894398532982450, 251392.108417609590106, 251402.322473338339478, 251412.536565717949998, 251422.750694747082889, 251432.964860424341168, 251443.179062748444267, 251453.393301718024304, 251463.607577331742505, 251473.821889588230988, 251484.036238486150978, 251494.250624024221906, 251504.465046200988581, 251514.679505015199538, 251524.894000465516001, 251535.108532550511882, 251545.323101268964820, 251555.537706619419623, 251565.752348600537516, 251575.967027211125242, 251586.181742449727608, 251596.396494314918527, 251606.611282805533847, 251616.826107920060167, 251627.040969657333335, 251637.255868015898159, 251647.470802994444966, 251657.685774591634981, 251667.900782806100324, 251678.115827636502218, 251688.330909081501886, 251698.546027139818761, 251708.761181810143171, 251718.976373090903508, 251729.191600980964722, 251739.406865478988038, 251749.622166583576472, 251759.837504293333041, 251770.052878607064486, 251780.268289523257408, 251790.483737040718552, 251800.699221158050932, 251810.914741873857565, 251821.130299186916091, 251831.345893095858628, 251841.561523599229986, 251851.777190695836907, 251861.992894384282408, 251872.208634663169505, 251882.424411531275837, 251892.640224987175316, 251902.856075029587373, 251913.071961657085922, 251923.287884868390393, 251933.503844662220217, 251943.719841037120204, 251953.935873991838889, 251964.151943525037495, 251974.368049635289935, 251984.584192321315641, 251994.800371581775835, 252005.016587415389949, 252015.232839820790105, 252025.449128796579316, 252035.665454341389704, 252045.881816453998908, 252056.098215133068152, 252066.314650377142243, 252076.531122185086133, 252086.747630555328215, 252096.964175486558815, 252107.180756977671990, 252117.397375027037924, 252127.614029633637983, 252137.830720795842353, 252148.047448512457777, 252158.264212782029063, 252168.481013603392057, 252178.697850975149777, 252188.914724895934341, 252199.131635364406975, 252209.348582379258005, 252219.565565939148655, 252229.782586042740149, 252239.999642688635504, 252250.216735875641461, 252260.433865602244623, 252270.651031867309939, 252280.868234669324011, 252291.085474007064477, 252301.302749879134353, 252311.520062284223968, 252321.737411220994545, 252331.954796688136412, 252342.172218684252584, 252352.389677208062494, 252362.607172258198261, 252372.824703833379317, 252383.042271932237782, 252393.259876553376671, 252403.477517695573624, 252413.695195357489865, 252423.912909537699306, 252434.130660234921379, 252444.348447447788203, 252454.566271175019210, 252464.784131415275624, 252475.002028167131357, 252485.219961429422256, 252495.437931200664025, 252505.655937479634304, 252515.873980264936108, 252526.092059555172455, 252536.310175349150086, 252546.528327645472018, 252556.746516442828579, 252566.964741739822784, 252577.183003535174066, 252587.401301827572752, 252597.619636615621857, 252607.838007898069918, 252618.056415673461743, 252628.274859940574970, 252638.493340698099928, 252648.711857944581425, 252658.930411678767996, 252669.149001899379073, 252679.367628604959464, 252689.586291794228600, 252699.804991465935018, 252710.023727618623525, 252720.242500251042657, 252730.461309361853637, 252740.680154949659482, 252750.899037013208726, 252761.117955551162595, 252771.336910562153207, 252781.555902044841787, 252791.774929998005973, 252801.993994420161471, 252812.213095310085919, 252822.432232666411437, 252832.651406487799250, 252842.870616772910580, 252853.089863520493964, 252863.309146729152417, 252873.528466397576267, 252883.747822524368530, 252893.967215108365053, 252904.186644148081541, 252914.406109642179217, 252924.625611589464825, 252934.845149988483172, 252945.064724837953690, 252955.284336136537604, 252965.503983882983448, 252975.723668075894238, 252985.943388713902095, 252996.163145795726450, 253006.382939320028527, 253016.602769285556860, 253026.822635690856259, 253037.042538534675259, 253047.262477815675084, 253057.482453532458749, 253067.702465683891205, 253077.922514268400846, 253088.142599284794414, 253098.362720731733134, 253108.582878607878229, 253118.803072911920026, 253129.023303642461542, 253139.243570798251312, 253149.463874378008768, 253159.684214380278718, 253169.904590803867904, 253180.125003647262929, 253190.345452909328742, 253200.565938588610152, 253210.786460683884798, 253221.007019193784799, 253231.227614116971381, 253241.448245452134870, 253251.668913197878283, 253261.889617353008362, 253272.110357916069916, 253282.331134885811480, 253292.551948260836070, 253302.772798039979534, 253312.993684221757576, 253323.214606804889627, 253333.435565788066015, 253343.656561169947963, 253353.877592949196696, 253364.098661124560749, 253374.319765694643138, 253384.540906658075983, 253394.762084013695130, 253404.983297759987181, 253415.204547895817086, 253425.425834419671446, 253435.647157330357004, 253445.868516626476776, 253456.089912306808401, 253466.311344369925791, 253476.532812814490171, 253486.754317639308283, 253496.975858842924936, 253507.197436424088664, 253517.419050381460693, 253527.640700713731349, 253537.862387419503648, 253548.084110497555230, 253558.305869946460007, 253568.527665765053825, 253578.749497951794183, 253588.971366505516926, 253599.193271424883278, 253609.415212708525360, 253619.637190355220810, 253629.859204363485333, 253640.081254732038360, 253650.303341459657531, 253660.525464545033174, 253670.747623986651888, 253680.969819783378625, 253691.192051933816401, 253701.414320436713751, 253711.636625290615484, 253721.858966494270135, 253732.081344046338927, 253742.303757945599500, 253752.526208190683974, 253762.748694780137157, 253772.971217712765792, 253783.193776987231104, 253793.416372602281626, 253803.639004556403961, 253813.861672848463058, 253824.084377477061935, 253834.307118440861814, 253844.529895738611231, 253854.752709368913202, 253864.975559330516262, 253875.198445622081636, 253885.421368242241442, 253895.644327189715113, 253905.867322463192977, 253916.090354061336257, 253926.313421982806176, 253936.536526226351270, 253946.759666790574556, 253956.982843674224569, 253967.206056875846116, 253977.429306394304149, 253987.652592228201684, 253997.875914376229048, 254008.099272836989257, 254018.322667609259952, 254028.546098691789666, 254038.769566083006794, 254048.993069781834492, 254059.216609786817571, 254069.440186096820980, 254079.663798710273113, 254089.887447625980712, 254100.111132842663210, 254110.334854358923621, 254120.558612173510483, 254130.782406285085017, 254141.006236692279344, 254151.230103393871104, 254161.454006388492417, 254171.677945674804505, 254181.901921251497697, 254192.125933117291424, 254202.349981270876015, 254212.574065710854484, 254222.798186435975367, 254233.022343444958096, 254243.246536736347480, 254253.470766308950260, 254263.695032161427662, 254273.919334292470012, 254284.143672700738534, 254294.368047384923557, 254304.592458343686303, 254314.816905575717101, 254325.041389079735382, 254335.265908854431473, 254345.490464898408391, 254355.715057210414670, 254365.939685789169744, 254376.164350633276626, 254386.389051741483854, 254396.613789112452650, 254406.838562744815135, 254417.063372637348948, 254427.288218788744416, 254437.513101197546348, 254447.738019862619694, 254457.962974782451056, 254468.187965955963591, 254478.412993381643901, 254488.638057058298727, 254498.863156984531088, 254509.088293159089517, 254519.313465580635238, 254529.538674247916788, 254539.763919159420766, 254549.989200314041227, 254560.214517710410291, 254570.439871347130975, 254580.665261223068228, 254590.890687336708652, 254601.116149686858989, 254611.341648272180464, 254621.567183091305196, 254631.792754143069033, 254642.018361425987678, 254652.244004938780563, 254662.469684680312639, 254672.695400649012299, 254682.921152843744494, 254693.146941263112240, 254703.372765905864071, 254713.598626770603005, 254723.824523856193991, 254734.050457161065424, 254744.276426684082253, 254754.502432423905702, 254764.728474379226100, 254774.954552548704669, 254785.180666931031737, 254795.406817524926737, 254805.633004329021787, 254815.859227342094528, 254826.085486562718870, 254836.311781989730662, 254846.538113621645607, 254856.764481457299553, 254866.990885495324619, 254877.217325734382030, 254887.443802173220320, 254897.670314810442505, 254907.896863644797122, 254918.123448675061809, 254928.350069899752270, 254938.576727317704353, 254948.803420927491970, 254959.030150727834553, 254969.256916717538843, 254979.483718895149650, 254989.710557259415509, 254999.937431808997644, 255010.164342542644590, 255020.391289459075779, 255030.618272556806915, 255040.845291834673844, 255051.072347291425103, 255061.299438925547292, 255071.526566735847155, 255081.753730721102329, 255091.980930879886728, 255102.208167210861575, 255112.435439712833613, 255122.662748384405859, 255132.890093224385055, 255143.117474231316010, 255153.344891404005466, 255163.572344741056440, 255173.799834241217468, 255184.027359903207980, 255194.254921725601889, 255204.482519707176834, 255214.710153846681351, 255224.937824142660247, 255235.165530593978474, 255245.393273199180840, 255255.621051957074087, 255265.848866866261233, 255276.076717925432604, 255286.304605133365840, 255296.532528488693060, 255306.760487990133697, 255316.988483636319870, 255327.216515426029218, 255337.444583358010277, 255347.672687430749647, 255357.900827643112279, 255368.129003993730294, 255378.357216481323121, 255388.585465104522882, 255398.813749862107215, 255409.042070752766449, 255419.270427775103599, 255429.498820927867200, 255439.727250209718477, 255449.955715619522380, 255460.184217155765509, 255470.412754817196401, 255480.641328602592694, 255490.869938510528300, 255501.098584539780859, 255511.327266689040698, 255521.555984956969041, 255531.784739342314424, 255542.013529843679862, 255552.242356459872099, 255562.471219189465046, 255572.700118031294551, 255582.929052983934525, 255593.158024046162609, 255603.387031216610922, 255613.616074494057102, 255623.845153877075063, 255634.074269364500651, 255644.303420954965986, 255654.532608647132292, 255664.761832439748105, 255674.991092331416439, 255685.220388321002247, 255695.449720407108543, 255705.679088588367449, 255715.908492863585707, 255726.137933231482748, 255736.367409690574277, 255746.596922239696141, 255756.826470877596876, 255767.056055602879496, 255777.285676414234331, 255787.515333310380811, 255797.745026290067472, 255807.974755351897329, 255818.204520494618919, 255828.434321717038983, 255838.664159017644124, 255848.894032395241084, 255859.123941848549293, 255869.353887376259081, 255879.583868976973463, 255889.813886649557389, 255900.043940392555669, 255910.274030204775045, 255920.504156084876740, 255930.734318031609291, 255940.964516043546610, 255951.194750119466335, 255961.425020258117002, 255971.655326458043419, 255981.885668718168745, 255992.116047036979580, 256002.346461413282668, 256012.576911845739232, 256022.807398333156016, 256033.037920874077827, 256043.268479467311408, 256053.499074111547088, 256063.729704805387883, 256073.960371547582326, 256084.191074336908059, 256094.421813172055408, 256104.652588051627390, 256114.883398974372540, 256125.114245939039392, 256135.345128944230964, 256145.576047988753999, 256155.807003071211511, 256166.037994190410245, 256176.269021344953217, 256186.500084533647168, 256196.731183755066013, 256206.962319007987389, 256217.193490291101625, 256227.424697603128152, 256237.655940942757297, 256247.887220308708493, 256258.118535699555650, 256268.349887114221929, 256278.581274551252136, 256288.812698009336600, 256299.044157487311168, 256309.275652983749751, 256319.507184497429989, 256329.738752026984002, 256339.970355571276741, 256350.201995128794806, 256360.433670698344940, 256370.665382278646575, 256380.897129868390039, 256391.128913466294762, 256401.360733070992865, 256411.592588681232883, 256421.824480295734247, 256432.056407913187286, 256442.288371532311430, 256452.520371151855215, 256462.752406770363450, 256472.984478386642877, 256483.216585999442032, 256493.448729607422138, 256503.680909209215315, 256513.913124803599203, 256524.145376389380544, 256534.377663965104148, 256544.609987529518548, 256554.842347081314074, 256565.074742619210156, 256575.307174141955329, 256585.539641648152610, 256595.772145136666950, 256606.004684606101364, 256616.237260055146180, 256626.469871482549934, 256636.702518886973849, 256646.935202267166460, 256657.167921621818095, 256667.400676949648187, 256677.633468249288853, 256687.866295519517735, 256698.099158759083366, 256708.332057966588764, 256718.564993140840670, 256728.797964280412998, 256739.030971384199802, 256749.264014450716786, 256759.497093478741590, 256769.730208467080956, 256779.963359414279694, 256790.196546319202753, 256800.429769180365838, 256810.663027996663004, 256820.896322766668163, 256831.129653489246266, 256841.363020162942121, 256851.596422786504263, 256861.829861358652124, 256872.063335878134239, 256882.296846343611833, 256892.530392753775232, 256902.763975107372971, 256912.997593403182691, 256923.231247639778303, 256933.464937815908343, 256943.698663930350449, 256953.932425981678534, 256964.166223968728445, 256974.400057890132302, 256984.633927744667744, 256994.867833530966891, 257005.101775247836486, 257015.335752893821336, 257025.569766467844602, 257035.803815968480194, 257046.037901394389337, 257056.272022744436981, 257066.506180017255247, 257076.740373211505357, 257086.974602325935848, 257097.208867359266151, 257107.443168310244801, 257117.677505177533021, 257127.911877959762933, 257138.146286655799486, 257148.380731264303904, 257158.615211783908308, 257168.849728213419439, 257179.084280551498523, 257189.318868796835886, 257199.553492948238272, 257209.788153004250489, 257220.022848963737488, 257230.257580825360492, 257240.492348587751621, 257250.727152249804931, 257260.961991810094332, 257271.196867267368361, 257281.431778620230034, 257291.666725867602509, 257301.901709008001490, 257312.136728040321032, 257322.371782963076839, 257332.606873775133863, 257342.842000475153327, 257353.077163061825559, 257363.312361533869989, 257373.547595890035154, 257383.782866128982278, 257394.018172249401687, 257404.253514250216540, 257414.488892129797023, 257424.724305887124501, 257434.959755520831095, 257445.195241029578028, 257455.430762412113836, 257465.666319667187054, 257475.901912793458905, 257486.137541789677925, 257496.373206654592650, 257506.608907386864303, 257516.844643985125003, 257527.080416448239703, 257537.316224774869625, 257547.552068963646889, 257557.787949013407342, 257568.023864922841312, 257578.259816690610023, 257588.495804315403802, 257598.731827796029393, 257608.967887131148018, 257619.203982319450006, 257629.440113359742099, 257639.676280250685522, 257649.912482990970602, 257660.148721579345874, 257670.384996014472563, 257680.621306295099203, 257690.857652420032537, 257701.094034387817373, 257711.330452197260456, 257721.566905847110320, 257731.803395336028188, 257742.039920662704390, 257752.276481825945666, 257762.513078824413242, 257772.749711656797444, 257782.986380321905017, 257793.223084818280768, 257803.459825144789647, 257813.696601300180191, 257823.933413283055415, 257834.170261092163855, 257844.407144726254046, 257854.644064183987211, 257864.881019464111887, 257875.118010565289296, 257885.355037486384390, 257895.592100226000184, 257905.829198782885214, 257916.066333155729808, 257926.303503343311604, 257936.540709344262723, 257946.777951157389907, 257957.015228781296173, 257967.252542214788264, 257977.489891456614714, 257987.727276505378541, 257997.964697359886486, 258008.202154018828878, 258018.439646480866941, 258028.677174744865624, 258038.914738809398841, 258049.152338673244230, 258059.389974335150328, 258069.627645793807460, 258079.865353047935059, 258090.103096096165245, 258100.340874937362969, 258110.578689570189454, 258120.816539993335027, 258131.054426205548225, 258141.292348205548478, 258151.530305992026115, 258161.768299563729670, 258172.006328919378575, 258182.244394057663158, 258192.482494977390161, 258202.720631677104393, 258212.958804155670805, 258223.197012411837932, 258233.435256444150582, 258243.673536251531914, 258253.911851832555840, 258264.150203186058206, 258274.388590310612926, 258284.627013205084950, 258294.865471868135501, 258305.103966298454907, 258315.342496494791703, 258325.581062455923529, 258335.819664180424297, 258346.058301667217165, 258356.296974914788734, 258366.535683922062162, 258376.774428687669570, 258387.013209210330388, 258397.252025488793151, 258407.490877521806397, 258417.729765307973139, 258427.968688846100122, 258438.207648134935880, 258448.446643173141638, 258458.685673959495034, 258468.924740492715500, 258479.163842771435156, 258489.402980794460746, 258499.642154560453491, 258509.881364068220137, 258520.120609316509217, 258530.359890303807333, 258540.599207029154059, 258550.838559491065098, 258561.077947688318091, 258571.317371619661571, 258581.556831283785868, 258591.796326679352205, 258602.035857805225533, 258612.275424660096178, 258622.515027242567157, 258632.754665551503422, 258642.994339585537091, 258653.234049343445804, 258663.473794823919889, 258673.713576025707880, 258683.953392947529210, 258694.193245588074205, 258704.433133946149610, 258714.673058020358440, 258724.913017809507437, 258735.153013312345138, 258745.393044527474558, 258755.633111453789752, 258765.873214089893736, 258776.113352434535045, 258786.353526486462215, 258796.593736244336469, 258806.833981706964551, 258817.074262873094995, 258827.314579741330817, 258837.554932310478762, 258847.795320579229156, 258858.035744546359638, 258868.276204210560536, 258878.516699570580386, 258888.757230625138618, 258898.997797372867353, 258909.238399812631542, 258919.479037943092408, 258929.719711762940278, 258939.960421271040104, 258950.201166465936694, 258960.441947346524103, 258970.682763911347138, 258980.923616159328958, 258991.164504089043476, 259001.405427699268330, 259011.646386988752056, 259021.887381956243189, 259032.128412600402953, 259042.369478919979883, 259052.610580913722515, 259062.851718580350280, 259073.092891918553505, 259083.334100927138934, 259093.575345604767790, 259103.816625950159505, 259114.057941962033510, 259124.299293639254756, 259134.540680980397156, 259144.782103984238347, 259155.023562649526866, 259165.265056974953040, 259175.506586959294509, 259185.748152601241600, 259195.989753899542848, 259206.231390852917684, 259216.473063460056437, 259226.714771719765849, 259236.956515630707145, 259247.198295191657962, 259257.440110401279526, 259267.681961258378578, 259277.923847761645447, 259288.165769909857772, 259298.407727701647673, 259308.649721135821892, 259318.891750211158069, 259329.133814926230116, 259339.375915279902983, 259349.618051270837896, 259359.860222897754284, 259370.102430159487994, 259380.344673054671148, 259390.586951581994072, 259400.829265740350820, 259411.071615528315306, 259421.314000944694271, 259431.556421988207148, 259441.798878657544265, 259452.041370951454155, 259462.283898868714459, 259472.526462408044608, 259482.769061568164034, 259493.011696347763063, 259503.254366745648440, 259513.497072760423180, 259523.739814390952233, 259533.982591635925928, 259544.225404494063696, 259554.468252964143176, 259564.711137044825591, 259574.954056734859478, 259585.197012032993371, 259595.440002937946701, 259605.683029448468005, 259615.926091563305818, 259626.169189281121362, 259636.412322600779589, 259646.655491520854412, 259656.898696040123468, 259667.141936157480814, 259677.385211871413048, 259687.628523180785123, 259697.871870084403781, 259708.115252580813831, 259718.358670668822015, 259728.602124347293284, 259738.845613614772446, 259749.089138470095349, 259759.332698911981424, 259769.576294939120999, 259779.819926550320815, 259790.063593744242098, 259800.307296519691590, 259810.551034875359619, 259820.794808809965616, 259831.038618322287221, 259841.282463411043864, 259851.526344074925873, 259861.770260312739993, 259872.014212123147445, 259882.258199504954973, 259892.502222456852905, 259902.746280977560673, 259912.990375065855915, 259923.234504720458062, 259933.478669940057443, 259943.722870723519009, 259953.967107069445774, 259964.211378976586275, 259974.455686443805462, 259984.700029469648143, 259994.944408052950166, 260005.188822192430962, 260015.433271886839066, 260025.677757134981221, 260035.922277935402235, 260046.166834287054371, 260056.411426188598853, 260066.656053638667800, 260076.900716636067955, 260087.145415179576958, 260097.390149267885135, 260107.634918899741024, 260117.879724073922262, 260128.124564789090073, 260138.369441044022096, 260148.614352837466868, 260158.859300168114714, 260169.104283034743275, 260179.349301436130190, 260189.594355370878475, 260199.839444837911287, 260210.084569835802540, 260220.329730363329872, 260230.574926419300027, 260240.820158002403332, 260251.065425111359218, 260261.310727744887117, 260271.556065901822876, 260281.801439580798615, 260292.046848780621076, 260302.292293500067899, 260312.537773737742100, 260322.783289492479526, 260333.028840762970503, 260343.274427548021777, 260353.520049846236361, 260363.765707656479208, 260374.011400977557059, 260384.257129808014724, 260394.502894146688050, 260404.748693992354674, 260414.994529343646718, 260425.240400199429132, 260435.486306558363140, 260445.732248419226380, 260455.978225780680077, 260466.224238641530974, 260476.470287000527605, 260486.716370856389403, 260496.962490207894007, 260507.208645053702639, 260517.454835392622044, 260527.701061223342549, 260537.947322544641793, 260548.193619355297415, 260558.439951653912431, 260568.686319439351792, 260578.932722710422240, 260589.179161465610377, 260599.425635703926673, 260609.672145423857728, 260619.918690624443116, 260630.165271304140333, 260640.411887461901642, 260650.658539096359164, 260660.905226206261432, 260671.151948790327879, 260681.398706847452559, 260691.645500376180280, 260701.892329375317786, 260712.139193843671819, 260722.386093779903604, 260732.633029182790779, 260742.880000051052775, 260753.127006383496337, 260763.374048178811790, 260773.621125435718568, 260783.868238152994309, 260794.115386329416651, 260804.362569963617716, 260814.609789054520661, 260824.857043600670295, 260835.104333600960672, 260845.351659053994808, 260855.599019958637655, 260865.846416313579539, 260876.093848117539892, 260886.341315369354561, 260896.588818067684770, 260906.836356211279053, 260917.083929798944155, 260927.331538829341298, 260937.579183301306330, 260947.826863213442266, 260958.074578564584954, 260968.322329353570240, 260978.570115578913828, 260988.817937239538878, 260999.065794334164821, 261009.313686861511087, 261019.561614820355317, 261029.809578209329629, 261040.057577027298976, 261050.305611272982787, 261060.553680945158703, 261070.801786042429740, 261081.049926563660847, 261091.298102507600561, 261101.546313872910105, 261111.794560658483533, 261122.042842862923862, 261132.291160485037835, 261142.539513523573987, 261152.787901977251749, 261163.036325844848761, 261173.284785124968039, 261183.533279816649156, 261193.781809918349609, 261204.030375428963453, 261214.278976347268326, 261224.527612671867246, 261234.776284401654266, 261245.024991535290610, 261255.273734071524814, 261265.522512009105412, 261275.771325346810045, 261286.020174083416350, 261296.269058217585552, 261306.517977748124395, 261316.766932673723204, 261327.015922993217828, 261337.264948705327697, 261347.514009808655828, 261357.763106302183587, 261368.012238184484886, 261378.261405454395572, 261388.510608110693283, 261398.759846151981037, 261409.009119577152887, 261419.258428384811850, 261429.507772573881084, 261439.757152142992709, 261450.006567090866156, 261460.256017416395480, 261470.505503118183697, 261480.755024195095757, 261491.004580645763781, 261501.254172469023615, 261511.503799663594691, 261521.753462228196440, 261532.003160161664709, 261542.252893462602515, 261552.502662129874807, 261562.752466162288329, 261573.002305558387889, 261583.252180317125749, 261593.502090437163133, 261603.752035917132162, 261614.002016756072408, 261624.252032952470472, 261634.502084505220409, 261644.752171412983444, 261655.002293674595421, 261665.252451288659358, 261675.502644254098414, 261685.752872569602914, 261696.003136233892292, 261706.253435245802393, 261716.503769603936234, 261726.754139307187870, 261737.004544354160316, 261747.254984743718524, 261757.505460474611027, 261767.755971545557259, 261778.006517955334857, 261788.257099702663254, 261798.507716786320088, 261808.758369204966584, 261819.009056957467692, 261829.259780042571947, 261839.510538458940573, 261849.761332205467625, 261860.012161280697910, 261870.263025683554588, 261880.513925412786193, 261890.764860467053950, 261901.015830845193705, 261911.266836545866681, 261921.517877567850519, 261931.768953909981064, 261942.020065570948645, 261952.271212549501797, 261962.522394844359951, 261972.773612454358954, 261983.024865378218237, 261993.276153614715440, 262003.527477162453579, 262013.778836020414019, 262024.030230187228881, 262034.281659661559388, 262044.533124442357803, 262054.784624528227141, 262065.036159918061458, 262075.287730610463768, 262085.539336604269920, 262095.790977898141136, 262106.042654490942368, 262116.294366381480359, 262126.546113568299916, 262136.797896050353302, 262147.049713826272637, 262157.301566894922871, 262167.553455254936125, 262177.805378905148245, 262188.057337844278663, 262198.309332071105018, 262208.561361584288534, 262218.813426382781472, 262229.065526465128642, 262239.317661830224097, 262249.569832476729061, 262259.822038403479382, 262270.074279609310906, 262280.326556092710234, 262290.578867852629628, 262300.831214887788519, 262311.083597196964547, 262321.336014778877143, 262331.588467632303946, 262341.840955755964387, 262352.093479148577899, 262362.346037809096742, 262372.598631736065727, 262382.851260928320698, 262393.103925384581089, 262403.356625103740953, 262413.609360084345099, 262423.862130325287580, 262434.114935825287830, 262444.367776583123486, 262454.620652597630396, 262464.873563867353369, 262475.126510391186457, 262485.379492167907301, 262495.632509196177125, 262505.885561474889982, 262516.138649002707098, 262526.391771778406110, 262536.644929800706450, 262546.898123068443965, 262557.151351580338087, 262567.404615335050039, 262577.657914331473876, 262587.911248568329029, 262598.164618044509552, 262608.418022758502048, 262618.671462709200568, 262628.924937895324547, 262639.178448315768037, 262649.431993969134055, 262659.685574854258448, 262669.939190969860647, 262680.192842314718291, 262690.446528887609020, 262700.700250687252264, 262710.954007712367456, 262721.207799961848650, 262731.461627434415277, 262741.715490128728561, 262751.969388043624349, 262762.223321177822072, 262772.477289530215785, 262782.731293099350296, 262792.985331884061452, 262803.239405883185100, 262813.493515095440671, 262823.747659519664012, 262834.001839154399931, 262844.256053998600692, 262854.510304050985724, 262864.764589310332667, 262875.018909775302745, 262885.273265444731805, 262895.527656317339279, 262905.782082392019220, 262916.036543667374644, 262926.291040142241400, 262936.545571815338917, 262946.800138685386628, 262957.054740751395002, 262967.309378011792433, 262977.564050465472974, 262987.818758111272473, 262998.073500947910361, 263008.328278974106070, 263018.583092188637238, 263028.837940590281505, 263039.092824177816510, 263049.347742949961685, 263059.602696905494668, 263069.857686043193098, 263080.112710361776408, 263090.367769860196859, 263100.622864536882844, 263110.877994390844833, 263121.133159420744050, 263131.388359625358135, 263141.643595003522933, 263151.898865553957876, 263162.154171275324188, 263172.409512166515924, 263182.664888226252515, 263192.920299453311600, 263203.175745846412610, 263213.431227404333185, 263223.686744125967380, 263233.942296009860002, 263244.197883054905105, 263254.453505259822123, 263264.709162623388693, 263274.964855144440662, 263285.220582821639255, 263295.476345653703902, 263305.732143639586866, 263315.987976777891163, 263326.243845067452639, 263336.499748506990727, 263346.755687095283065, 263357.011660831223708, 263367.267669713357463, 263377.523713740520179, 263387.779792911547702, 263398.035907225159463, 263408.292056680191308, 263418.548241275246255, 263428.804461009276565, 263439.060715880885255, 263449.317005889024585, 263459.573331032239366, 263469.829691309423652, 263480.086086719296873, 263490.342517260694876, 263500.598982932337094, 263510.855483732942957, 263521.112019661406521, 263531.368590716330800, 263541.625196896609850, 263551.881838200963102, 263562.138514628168195, 263572.395226176944561, 263582.651972846186254, 263592.908754634438083, 263603.165571540652309, 263613.422423563548364, 263623.679310701903887, 263633.936232954496518, 263644.193190319987480, 263654.450182797212619, 263664.707210385065991, 263674.964273082092404, 263685.221370887185913, 263695.478503799124155, 263705.735671816568356, 263715.992874938470777, 263726.250113163434435, 263736.507386490295175, 263746.764694917714223, 263757.022038444702048, 263767.279417069745250, 263777.536830791854300, 263787.794279609574005, 263798.051763521856628, 263808.309282527421601, 263818.566836624930147, 263828.824425813276321, 263839.082050091295969, 263849.339709457475692, 263859.597403910825960, 263869.855133450066205, 263880.112898073915858, 263890.370697781268973, 263900.628532570728566, 263910.886402441130485, 263921.144307391194161, 263931.402247419871856, 263941.660222525766585, 263951.918232707655989, 263962.176277964317705, 263972.434358294645790, 263982.692473697243258, 263992.950624170945957, 264003.208809714531526, 264013.467030326777603, 264023.725286006461829, 264033.983576752303634, 264044.241902563080657, 264054.500263437628746, 264064.758659374609124, 264075.017090372915845, 264085.275556431268342, 264095.534057548444252, 264105.792593723163009, 264116.051164954202250, 264126.309771240397822, 264136.568412580527365, 264146.827088973310310, 264157.085800417466089, 264167.344546911888756, 264177.603328455297742, 264187.862145046470687, 264198.120996684185229, 264208.379883367102593, 264218.638805094175041, 264228.897761864063796, 264239.156753675488289, 264249.415780527400784, 264259.674842418404296, 264269.933939347392879, 264280.193071313085966, 264290.452238314202987, 264300.711440349521581, 264310.970677417994011, 264321.229949518165085, 264331.489256648870651, 264341.748598809004761, 264352.007975997228641, 264362.267388212319929, 264372.526835453056265, 264382.786317718157079, 264393.045835006632842, 264403.305387316911947, 264413.564974648004863, 264423.824596998631023, 264434.084254367568064, 264444.343946753535420, 264454.603674155368935, 264464.863436571846250, 264475.123234001686797, 264485.383066443726420, 264495.642933896626346, 264505.902836359338835, 264516.162773830466904, 264526.422746308904607, 264536.682753793371376, 264546.942796282644849, 264557.202873775502667, 264567.462986270722467, 264577.723133767081890, 264587.983316263358574, 264598.243533758271951, 264608.503786250774283, 264618.764073739410378, 264629.024396223074291, 264639.284753700485453, 264649.545146170596126, 264659.805573631951120, 264670.066036083444487, 264680.326533523795661, 264690.587065951840486, 264700.847633366298396, 264711.108235766005237, 264721.368873149738647, 264731.629545516218059, 264741.890252864221111, 264752.150995192583650, 264762.411772499966901, 264772.672584785323124, 264782.933432047313545, 264793.194314284657594, 264803.455231496307533, 264813.716183680924587, 264823.977170837228186, 264834.238192964112386, 264844.499250060296617, 264854.760342124674935, 264865.021469155792147, 264875.282631152600516, 264885.543828113819472, 264895.805060038284864, 264906.066326924657915, 264916.327628771774471, 264926.588965578470379, 264936.850337343523279, 264947.111744065652601, 264957.373185743635986, 264967.634662376192864, 264977.896173962275498, 264988.157720500545111, 264998.419301989721134, 265008.680918428755831, 265018.942569816310424, 265029.204256151162554, 265039.465977432089858, 265049.727733657811768, 265059.989524827338755, 265070.251350939215627, 265080.513211992336437, 265090.775107985420618, 265101.037038917362224, 265111.299004786764272, 265121.561005592520814, 265131.823041333351284, 265142.085112008091528, 265152.347217615519185, 265162.609358154353686, 265172.871533623430878, 265183.133744021528400, 265193.395989347423892, 265203.658269599836785, 265213.920584777602926, 265224.182934879616369, 265234.445319904421922, 265244.707739850913640, 265254.970194717869163, 265265.232684504182544, 265275.495209208398592, 265285.757768829469569, 265296.020363366114907, 265306.282992817170452, 265316.545657181413844, 265326.808356457506306, 265337.071090644400101, 265347.333859740698244, 265357.596663745294791, 265367.859502656967379, 265378.122376474493649, 265388.385285196651239, 265398.648228822159581, 265408.911207349854521, 265419.174220778630115, 265429.437269107089378, 265439.700352334068157, 265449.963470458344091, 265460.226623478811234, 265470.489811394014396, 265480.753034202964045, 265491.016291904321406, 265501.279584496980533, 265511.542911979544442, 265521.806274351023603, 265532.069671609962825, 265542.333103755372576, 265552.596570785855874, 265562.860072700190358, 265573.123609497328289, 265583.387181175930891, 265593.650787734834012, 265603.914429172698874, 265614.178105488477740, 265624.441816680948250, 265634.705562748771627, 265644.969343690667301, 265655.233159505703952, 265665.497010192426387, 265675.760895749670453, 265686.024816176271997, 265696.288771471066866, 265706.552761632658076, 265716.816786659939680, 265727.080846551689319, 265737.344941306684632, 265747.609070923761465, 265757.873235401522834, 265768.137434738979209, 265778.401668934908230, 265788.665937987912912, 265798.930241896829102, 265809.194580660550855, 265819.458954277855810, 265829.723362747405190, 265839.987806068034843, 265850.252284238580614, 265860.516797257820144, 265870.781345124472864, 265881.045927837316412, 265891.310545395244844, 265901.575197797035798, 265911.839885041408706, 265922.104607127083000, 265932.369364053069148, 265942.634155817911960, 265952.898982420447282, 265963.163843859569170, 265973.428740134113468, 265983.693671242624987, 265993.958637184055988, 266004.223637957125902, 266014.488673560786992, 266024.753743993584067, 266035.018849254411180, 266045.283989342104178, 266055.549164255440701, 266065.814373993081972, 266076.079618553980254, 266086.344897936796769, 266096.610212140483782, 266106.875561163644306, 266117.140945005114190, 266127.406363663787488, 266137.671817138267215, 266147.937305427505635, 266158.202828530222178, 266168.468386445252690, 266178.733979171316605, 266188.999606707133353, 266199.265269051713403, 266209.530966203717981, 266219.796698161924724, 266230.062464925053064, 266240.328266492055263, 266250.594102861708961, 266260.859974032558966, 266271.125880003673956, 266281.391820773773361, 266291.657796341576613, 266301.923806705861352, 266312.189851865463424, 266322.455931819276884, 266332.722046565846540, 266342.988196104182862, 266353.254380432947073, 266363.520599551091436, 266373.786853457160760, 266384.053142150107305, 266394.319465628650505, 266404.585823891742621, 266414.852216937928461, 266425.118644766160287, 266435.385107375215739, 266445.651604763814248, 266455.918136930733453, 266466.184703874925617, 266476.451305594993755, 266486.717942089831922, 266496.984613358217757, 266507.251319398987107, 266517.518060210801195, 266527.784835792554077, 266538.051646143023390, 266548.318491260928567, 266558.585371145163663, 266568.852285794448107, 266579.119235207617749, 266589.386219383450225, 266599.653238320723176, 266609.920292018214241, 266620.187380474701058, 266630.454503689135890, 266640.721661660121754, 266650.988854386552703, 266661.256081867089961, 266671.523344100685790, 266681.790641086117830, 266692.057972821989097, 266702.325339307368267, 266712.592740540858358, 266722.860176521295216, 266733.127647247456480, 266743.395152718236204, 266753.662692932295613, 266763.930267888412345, 266774.197877585538663, 266784.465522022452205, 266794.733201197697781, 266805.000915110344067, 266815.268663759110495, 266825.536447142658290, 266835.804265259997919, 266846.072118109732401, 266856.340005690755788, 266866.607928001845721, 266876.875885041779839, 266887.143876809335779, 266897.411903303407598, 266907.679964522656519, 266917.948060465918388, 266928.216191132087260, 266938.484356519882567, 266948.752556627965532, 266959.020791455346625, 266969.289061000745278, 266979.557365262880921, 266989.825704240589403, 267000.094077932764776, 267010.362486338126473, 267020.630929455393925, 267030.899407283461187, 267041.167919821164105, 267051.436467067163903, 267061.705049020354636, 267071.973665679397527, 267082.242317043361254, 267092.511003110732418, 267102.779723880463280, 267113.048479351331480, 267123.317269522172865, 267133.586094391765073, 267143.854953958827537, 267154.123848222254310, 267164.392777180764824, 267174.661740833136719, 267184.930739178264048, 267195.199772214982659, 267205.468839941895567, 267215.737942357896827, 267226.007079461938702, 267236.276251252565999, 267246.545457728672773, 267256.814698889036663, 267267.083974732609931, 267277.353285257937387, 267287.622630463913083, 267297.892010349431075, 267308.161424913327210, 267318.430874154146295, 267328.700358070840593, 267338.969876662362367, 267349.239429927140009, 267359.509017864300404, 267369.778640472446568, 267380.048297750530764, 267390.317989697156008, 267400.587716311274562, 267410.857477591722272, 267421.127273537160363, 267431.397104146424681, 267441.666969418351073, 267451.936869351775385, 267462.206803945417050, 267472.476773198053706, 267482.746777108579408, 267493.016815675713588, 267503.286888898292091, 267513.556996775092557, 267523.827139304950833, 267534.097316486644559, 267544.367528318951372, 267554.637774800707120, 267564.908055930747651, 267575.178371707792394, 267585.448722130618989, 267595.719107198179699, 267605.989526909077540, 267616.259981262206566, 267626.530470256402623, 267636.800993890443351, 267647.071552163106389, 267657.342145073169377, 267667.612772619526368, 267677.883434800896794, 267688.154131616000086, 267698.424863063846715, 267708.695629143156111, 267718.966429852589499, 267729.237265191157348, 267739.508135157520883, 267749.779039750515949, 267760.049978968978394, 267770.320952811627649, 267780.591961277415976, 267790.863004364946391, 267801.134082073171157, 267811.405194400867913, 267821.676341346756089, 267831.947522909729742, 267842.218739088508300, 267852.489989882044028, 267862.761275288881734, 267873.032595308031887, 267883.303949938330334, 267893.575339178380091, 267903.846763027133420, 267914.118221483367961, 267924.389714545861352, 267934.661242213391233, 267944.932804484793451, 267955.204401358962059, 267965.476032834500074, 267975.747698910359759, 267986.019399585260544, 267996.291134858154692, 268006.562904727645218, 268016.834709192626178, 268027.106548251991626, 268037.378421904344577, 268047.650330148695502, 268057.922272983647417, 268068.194250408210792, 268078.466262421046849, 268088.738309020933229, 268099.010390206880402, 268109.282505977433175, 268119.554656331543811, 268129.826841267989948, 268140.099060785607435, 268150.371314883115701, 268160.643603559408803, 268170.915926813206170, 268181.188284643343650, 268191.460677048715297, 268201.733104027982336, 268212.005565580097027, 268222.278061703720596, 268232.550592397688888, 268242.823157660954166, 268253.095757492119446, 268263.368391890078783, 268273.641060853551608, 268283.913764381606597, 268294.186502472788561, 268304.459275125933345, 268314.732082339993212, 268325.004924113571178, 268335.277800445619505, 268345.550711334974039, 268355.823656780296005, 268366.096636780479457, 268376.369651334302034, 268386.642700440657791, 268396.915784098149743, 268407.188902305788361, 268417.462055062351283, 268427.735242366557941, 268438.008464217244182, 268448.281720613129437, 268458.555011553282384, 268468.828337036306038, 268479.101697060978040, 268489.375091626308858, 268499.648520730843302, 268509.921984373533633, 268520.195482553157490, 268530.469015268608928, 268540.742582518549170, 268551.016184301930480, 268561.289820617472287, 268571.563491463952232, 268581.837196840206161, 268592.110936745128129, 268602.384711177437566, 268612.658520135912113, 268622.932363619445823, 268633.206241626874544, 268643.480154156801291, 268653.754101208236534, 268664.028082780016121, 268674.302098870743066, 268684.576149479369633, 268694.850234604615252, 268705.124354245490395, 268715.398508400539868, 268725.672697068774141, 268735.946920248970855, 268746.221177939791232, 268756.495470140129328, 268766.769796848879196, 268777.044158064760268, 268787.318553786550183, 268797.592984013142996, 268807.867448743374553, 268818.141947975906078, 268828.416481709748041, 268838.691049943561666, 268848.965652676124591, 268859.240289906330872, 268869.514961633016355, 268879.789667854900472, 268890.064408570935484, 268900.339183779724408, 268910.613993480277713, 268920.888837671256624, 268931.163716351555195, 268941.438629520067479, 268951.713577175338287, 268961.988559316436294, 268972.263575942022726, 268982.538627050991636, 268992.813712642120663, 269003.088832714187447, 269013.363987266202457, 269023.639176296652295, 269033.914399804489221, 269044.189657788665500, 269054.464950247784145, 269064.740277180797420, 269075.015638586424757, 269085.291034463560209, 269095.566464810981415, 269105.841929627407808, 269116.117428911849856, 269126.392962662910577, 269136.668530879542232, 269146.944133560522459, 269157.219770704628900, 269167.495442310639191, 269177.771148377505597, 269188.046888904005755, 269198.322663888800889, 269208.598473330843262, 269218.874317228968721, 269229.150195581838489, 269239.426108388404828, 269249.702055647445377, 269259.978037357795984, 269270.254053518176079, 269280.530104127479717, 269290.806189184484538, 269301.082308688026387, 269311.358462636882905, 269321.634651030006353, 269331.910873865999747, 269342.187131143815350, 269352.463422862230800, 269362.739749020023737, 269373.016109616088215, 269383.292504649085458, 269393.568934118084144, 269403.845398021687288, 269414.121896358788945, 269424.398429128224961, 269434.674996328656562, 269444.951597959094215, 269455.228234018315561, 269465.504904504981823, 269475.781609418045264, 269486.058348756341729, 269496.335122518648859, 269506.611930703744292, 269516.888773310463876, 269527.165650337643456, 269537.442561784060672, 269547.719507648551371, 269557.996487930009607, 269568.273502627096605, 269578.550551738706417, 269588.827635263733100, 269599.104753200837877, 269609.381905548856594, 269619.659092306741513, 269629.936313473270275, 269640.213569047220517, 269650.490859027311672, 269660.768183412554208, 269671.045542201551143, 269681.322935393254738, 269691.600362986559048, 269701.877824980067089, 269712.155321372731123, 269722.432852163386997, 269732.710417350812349, 269742.988016933784820, 269753.265650911198463, 269763.543319281830918, 269773.821022044401616, 269784.098759197921026, 269794.376530741050374, 269804.654336672741920, 269814.932176991656888, 269825.210051696747541, 269835.487960786791518, 269845.765904260508250, 269856.043882116850000, 269866.321894354594406, 269876.599940972577315, 269886.878021969518159, 269897.156137344369199, 269907.434287095849868, 269917.712471222796012, 269927.990689724101685, 269938.268942598486319, 269948.547229844785761, 269958.825551461894065, 269969.103907448588870, 269979.382297803647816, 269989.660722525906749, 269999.939181614259724, 270010.217675067367963, 270020.496202884183731, 270030.774765063601080, 270041.053361604164820, 270051.331992504885420, 270061.610657764656935, 270071.889357382082380, 270082.168091356172226, 270092.446859685645904, 270102.725662369339261, 270113.004499406088144, 270123.283370794728398, 270133.562276533979457, 270143.841216622793581, 270154.120191059831996, 270164.399199844163377, 270174.678242974390741, 270184.957320449408144, 270195.236432268051431, 270205.515578429098241, 270215.794758931384422, 270226.073973773804028, 270236.353222955076490, 270246.632506474037655, 270256.911824329581577, 270267.191176520427689, 270277.470563045470044, 270287.749983903544489, 270298.029439093428664, 270308.308928613900207, 270318.588452463794965, 270328.868010642065201, 270339.147603147372138, 270349.427229978668038, 270359.706891134672333, 270369.986586614279076, 270380.266316416207701, 270390.546080539410468, 270400.825878982606810, 270411.105711744632572, 270421.385578824440017, 270431.665480220632162, 270441.945415932219476, 270452.225385957979597, 270462.505390296690166, 270472.785428947128821, 270483.065501908189617, 270493.345609178824816, 270503.625750757579226, 270513.905926643405110, 270524.186136835254729, 270534.466381331731100, 270544.746660131786484, 270555.026973234198522, 270565.307320637861267, 270575.587702341494150, 270585.868118343991227, 270596.148568644188344, 270606.429053240804933, 270616.709572132851463, 270626.990125318930950, 270637.270712797995657, 270647.551334568939637, 270657.831990630424116, 270668.112680981343146, 270678.393405620474368, 270688.674164546770044, 270698.954957758949604, 270709.235785255907103, 270719.516647036361974, 270729.797543099208269, 270740.078473443281837, 270750.359438067418523, 270760.640436970337760, 270770.921470150991809, 270781.202537608158309, 270791.483639340673108, 270801.764775347255636, 270812.045945626974571, 270822.327150178374723, 270832.608389000408351, 270842.889662092027720, 270853.170969451777637, 270863.452311078726780, 270873.733686971652787, 270884.015097129275091, 270894.296541550487746, 270904.578020234126598, 270914.859533179027494, 270925.141080383968074, 270935.422661847784184, 270945.704277569369879, 270955.985927547502797, 270966.267611780960578, 270976.549330268695485, 270986.831083009368740, 270997.112870001932606, 271007.394691245222930, 271017.676546738017350, 271027.958436479093507, 271038.240360467345454, 271048.522318701609038, 271058.804311180603690, 271069.086337903339881, 271079.368398868478835, 271089.650494074972812, 271099.932623521657661, 271110.214787207136396, 271120.496985130477697, 271130.779217290459201, 271141.061483685800340, 271151.343784315453377, 271161.626119178137742, 271171.908488272863906, 271182.190891598234884, 271192.473329153202940, 271202.755800936662126, 271213.038306947273668, 271223.320847183989827, 271233.603421645588242, 271243.886030330846552, 271254.168673238658812, 271264.451350367977284, 271274.734061717346776, 271285.016807285835966, 271295.299587072222494, 271305.582401075225789, 271315.865249293798115, 271326.148131726717111, 271336.431048372818623, 271346.713999230880290, 271356.996984299854375, 271367.280003578460310, 271377.563057065592147, 271387.846144760085735, 271398.129266660660505, 271408.412422766268719, 271418.695613075688016, 271428.978837587754242, 271439.262096301303245, 271449.545389215229079, 271459.828716328192968, 271470.112077639147174, 271480.395473146927543, 271490.678902850369923, 271500.962366748193745, 271511.245864839409478, 271521.529397122678347, 271531.812963596952613, 271542.096564260951709, 271552.380199113627896, 271562.663868153700605, 271572.947571380122099, 271583.231308791670017, 271593.515080387121998, 271603.798886165313888, 271614.082726125139743, 271624.366600265435409, 271634.650508584920317, 271644.934451082604937, 271655.218427757150494, 271665.502438607451040, 271675.786483632458840, 271686.070562830835115, 271696.354676201415714, 271706.638823743152898, 271716.923005454824306, 271727.207221335207578, 271737.491471383196767, 271747.775755597627722, 271758.060073977278080, 271768.344426521100104, 271778.628813227813225, 271788.913234096253291, 271799.197689125314355, 271809.482178313774057, 271819.766701660526451, 271830.051259164290968, 271840.335850824078079, 271850.620476638490800, 271860.905136606656015, 271871.189830727118533, 271881.474558998830616, 271891.759321420686319, 271902.044117991463281, 271912.328948709997348, 271922.613813575124368, 271932.898712585621979, 271943.183645740442444, 271953.468613038363401, 271963.753614478162490, 271974.038650058733765, 271984.323719778913073, 271994.608823637536261, 272004.893961633439176, 272015.179133765399456, 272025.464340032311156, 272035.749580433010124, 272046.034854966332205, 272056.320163630996831, 272066.605506426014472, 272076.890883350162767, 272087.176294402161147, 272097.461739581020083, 272107.747218885517213, 272118.032732314430177, 272128.318279866594821, 272138.603861540963408, 272148.889477336197160, 272159.175127251248341, 272169.460811285011005, 272179.746529436146375, 272190.032281703664921, 272200.318068086227868, 272210.603888582845684, 272220.889743192179594, 272231.175631913298275, 272241.461554744804744, 272251.747511685651261, 272262.033502734673675, 272272.319527890707832, 272282.605587152473163, 272292.891680519038346, 272303.177807989006396, 272313.463969561329577, 272323.750165234901942, 272334.036395008442923, 272344.322658880788367, 272354.608956850890536, 272364.895288917468861, 272375.181655079417396, 272385.468055335630197, 272395.754489684826694, 272406.040958125900943, 272416.327460657746997, 272426.613997279084288, 272436.900567988806870, 272447.187172785808798, 272457.473811668867711, 272467.760484636761248, 272478.047191688558087, 272488.333932822803035, 272498.620708038506564, 272508.907517334504519, 272519.194360709516332, 272529.481238162494265, 272539.768149692274164, 272550.055095297691878, 272560.342074977466837, 272570.629088730667718, 272580.916136555839330, 272591.203218452108558, 272601.490334418136626, 272611.777484452817589, 272622.064668554987293, 272632.351886723481584, 272642.639138957136311, 272652.926425254787318, 272663.213745615386870, 272673.501100037537981, 272683.788488520251121, 272694.075911062362138, 272704.363367662648670, 272714.650858320004772, 272724.938383033266291, 272735.225941801210865, 272745.513534622674342, 272755.801161496667191, 272766.088822421850637, 272776.376517397118732, 272786.664246421249118, 272796.952009493194055, 272807.239806611847598, 272817.527637775812764, 272827.815502984100021, 272838.103402235603426, 272848.391335528984200, 272858.679302863252815, 272868.967304237186909, 272879.255339649505913, 272889.543409099278506, 272899.831512585165910, 272910.119650106120389, 272920.407821660861373, 272930.696027248399332, 272940.984266867453698, 272951.272540516860317, 272961.560848195571452, 272971.849189902306534, 272982.137565635901410, 272992.425975395366549, 273002.714419179363176, 273013.002896986785345, 273023.291408816585317, 273033.579954667424317, 273043.868534538254607, 273054.157148427970242, 273064.445796335232444, 273074.734478258993477, 273085.023194198205601, 273095.311944151471835, 273105.600728117860854, 273115.889546096033882, 273126.178398085001390, 273136.467284083482809, 273146.756204090372194, 273157.045158104505390, 273167.334146124776453, 273177.623168149904814, 273187.912224178842735, 273198.201314210426062, 273208.490438243374228, 273218.779596276697703, 273229.068788309232332, 273239.358014339639340, 273249.647274366929196, 273259.936568389937747, 273270.225896407384425, 273280.515258418279700, 273290.804654421401210, 273301.094084415526595, 273311.383548399608117, 273321.673046372423414, 273331.962578332866542, 273342.252144279656932, 273352.541744211805053, 273362.831378128030337, 273373.121046027285047, 273383.410747908346821, 273393.700483770051505, 273403.990253611234948, 273414.280057430849411, 273424.569895227614325, 273434.859767000481952, 273445.149672748229932, 273455.439612469635904, 273465.729586163710337, 273476.019593829172663, 273486.309635464916937, 273496.599711069837213, 273506.889820642652921, 273517.179964182316326, 273527.470141687663272, 273537.760353157471400, 273548.050598590634763, 273558.340877986047417, 273568.631191342428792, 273578.921538658731151, 273589.211919933848549, 273599.502335166442208, 273609.792784355580807, 273620.083267499925569, 273630.373784598428756, 273640.664335649809800, 273650.954920653137378, 273661.245539607072715, 273671.536192510626279, 273681.826879362401087, 273692.117600161465816, 273702.408354906598106, 273712.699143596633803, 273722.989966230350547, 273733.280822806758806, 273743.571713324578013, 273753.862637782702222, 273764.153596179967280, 273774.444588515267242, 273784.735614787321538, 273795.026674995140638, 273805.317769137443975, 273815.608897213183809, 273825.900059221195988, 273836.191255160258152, 273846.482485029264353, 273856.773748827050440, 273867.065046552394051, 273877.356378204363864, 273887.647743781562895, 273897.939143282885198, 273908.230576707341243, 273918.522044053650461, 273928.813545320648700, 273939.105080507288221, 273949.396649612288456, 273959.688252634601668, 273969.979889573121909, 273980.271560426452197, 273990.563265193661209, 274000.855003873584792, 274011.146776465058792, 274021.438582966919057, 274031.730423377885018, 274042.022297696967144, 274052.314205923059490, 274062.606148054823279, 274072.898124091268983, 274083.190134031232446, 274093.482177873433102, 274103.774255616823211, 274114.066367260355037, 274124.358512802631594, 274134.650692242663354, 274144.942905579344369, 274155.235152811394073, 274165.527433937764727, 274175.819748957292177, 274186.112097868754063, 274196.404480671102647, 274206.696897363057360, 274216.989347943570465, 274227.281832411536016, 274237.574350765731651, 274247.866903004935011, 274258.159489128214773, 274268.452109134232160, 274278.744763021881226, 274289.037450790114235, 274299.330172437650617, 274309.622927963326219, 274319.915717366151512, 274330.208540644904133, 274340.501397798419930, 274350.794288825476542, 274361.087213724968024, 274371.380172495963052, 274381.673165137006436, 274391.966191647050437, 274402.259252025047317, 274412.552346269774716, 274422.845474380010273, 274433.138636354822665, 274443.431832192814909, 274453.725061892939266, 274464.018325454206206, 274474.311622875218745, 274484.604954154929146, 274494.898319292231463, 274505.191718285961542, 274515.485151134955231, 274525.778617838106584, 274536.072118394135032, 274546.365652802109253, 274556.659221060690470, 274566.952823168772738, 274577.246459125366528, 274587.540128929133061, 274597.833832579024602, 274608.127570073876996, 274618.421341412467882, 274628.715146593865938, 274639.008985616615973, 274649.302858479786664, 274659.596765182272065, 274669.890705722791608, 274680.184680100239348, 274690.478688313567545, 274700.772730361437425, 274711.066806242801249, 274721.360915956669487, 274731.655059501586948, 274741.949236876680516, 274752.243448080669623, 274762.537693112390116, 274772.831971970910672, 274783.126284654776100, 274793.420631162996870, 274803.715011494467035, 274814.009425648022443, 274824.303873622382525, 274834.598355416674167, 274844.892871029500384, 274855.187420459871646, 274865.482003706507385, 274875.776620768418070, 274886.071271644323133, 274896.365956333174836, 274906.660674833750818, 274916.955427145061549, 274927.250213265768252, 274937.545033194823191, 274947.839886931062210, 274958.134774473437574, 274968.429695820668712, 274978.724650971649680, 274989.019639925274532, 274999.314662680379115, 275009.609719235857483, 275019.904809590487275, 275030.199933743220754, 275040.495091692835558, 275050.790283438167535, 275061.085508978227153, 275071.380768311733846, 275081.676061437639873, 275091.971388354664668, 275102.266749061760493, 275112.562143557879608, 275122.857571841683239, 275133.153033912065439, 275143.448529768094886, 275153.744059408374596, 275164.039622831915040, 275174.335220037552062, 275184.630851024005096, 275194.926515790401027, 275205.222214335342869, 275215.517946657782886, 275225.813712756673340, 275236.109512630733661, 275246.405346278857905, 275256.701213699998334, 275266.997114892816171, 275277.293049856438302, 275287.589018589467742, 275297.885021090914961, 275308.181057359674014, 275318.477127394464333, 275328.773231194296386, 275339.069368757889606, 275349.365540084138047, 275359.661745171935763, 275369.957984020176809, 275380.254256627697032, 275390.550562993332278, 275400.846903115860187, 275411.143276994291227, 275421.439684627461247, 275431.736126014206093, 275442.032601153245196, 275452.329110043705441, 275462.625652684306260, 275472.922229073883500, 275483.218839211331215, 275493.515483095485251, 275503.812160725297872, 275514.108872099488508, 275524.405617217009421, 275534.702396076754667, 275544.999208677443676, 275555.296055018086918, 275565.592935097520240, 275575.889848914579488, 275586.186796468100511, 275596.483777756977361, 275606.780792779987678, 275617.077841536200140, 275627.374924024275970, 275637.672040243051015, 275647.969190191652160, 275658.266373868682422, 275668.563591273152269, 275678.860842403781135, 275689.158127259521279, 275699.455445839324966, 275709.752798141853418, 275720.050184166117106, 275730.347603910951875, 275740.645057375251781, 275750.942544557794463, 275761.240065457415767, 275771.537620073126163, 275781.835208403761499, 275792.132830448041204, 275802.430486204859335, 275812.728175673284568, 275823.025898851978127, 275833.323655739834066, 275843.621446335804649, 275853.919270638609305, 275864.217128647316713, 275874.515020360588096, 275884.812945777317509, 275895.110904896515422, 275905.408897716901265, 275915.706924237485509, 275926.004984456929378, 275936.303078374243341, 275946.601205988263246, 275956.899367297766730, 275967.197562301764265, 275977.495790999091696, 275987.794053388526663, 275998.092349469021428, 276008.390679239353631, 276018.689042698359117, 276028.987439845106564, 276039.285870678315405, 276049.584335196763277, 276059.882833399577066, 276070.181365285359789, 276080.479930853121914, 276090.778530101699289, 276101.077163029927760, 276111.375829636701383, 276121.674529920856003, 276131.973263881285675, 276142.272031516942661, 276152.570832826546393, 276162.869667808990926, 276173.168536463170312, 276183.467438787920401, 276193.766374782193452, 276204.065344444767106, 276214.364347774593625, 276224.663384770450648, 276234.962455431232229, 276245.261559755890630, 276255.560697743087076, 276265.859869391832035, 276276.159074701077770, 276286.458313669485506, 276296.757586296123918, 276307.056892579712439, 276317.356232519145124, 276327.655606113432441, 276337.955013361119200, 276348.254454261390492, 276358.553928813082166, 276368.853437014855444, 276379.152978865720797, 276389.452554364572279, 276399.752163510245737, 276410.051806301577017, 276420.351482737401966, 276430.651192816672847, 276440.950936538225506, 276451.250713900953997, 276461.550524903635960, 276471.850369545281865, 276482.150247824669350, 276492.450159740634263, 276502.750105292128865, 276513.050084477930795, 276523.350097297050525, 276533.650143748207483, 276543.950223830412142, 276554.250337542383932, 276564.550484883016907, 276574.850665851321537, 276585.150880445959046, 276595.451128665939905, 276605.751410510216374, 276616.051725977391470, 276626.352075066650286, 276636.652457776595838, 276646.952874106180388, 276657.253324054356199, 276667.553807619900908, 276677.854324801766779, 276688.154875598731451, 276698.455460009630769, 276708.756078033533413, 276719.056729669158813, 276729.357414915342815, 276739.658133771095891, 276749.958886235137470, 276760.259672306478024, 276770.560491983836982, 276780.861345266224816, 276791.162232152535580, 276801.463152641430497, 276811.764106731920037, 276822.065094422956463, 276832.366115713259205, 276842.667170601838734, 276852.968259087414481, 276863.269381168880500, 276873.570536845305469, 276883.871726115292404, 276894.172948977909982, 276904.474205431877635, 276914.775495476205833, 276925.076819109730422, 276935.378176331170835, 276945.679567139595747, 276955.980991533841006, 276966.282449512684252, 276976.583941075194161, 276986.885466219973750, 276997.187024946033489, 277007.488617252267431, 277017.790243137511425, 277028.091902600717731, 277038.393595640605781, 277048.695322256186046, 277058.997082446236163, 277069.298876209650189, 277079.600703545322176, 277089.902564452204388, 277100.204458929016255, 277110.506386974710040, 277120.808348588238005, 277131.110343768203165, 277141.412372513848823, 277151.714434823777992, 277162.016530696942937, 277172.318660132237710, 277182.620823128556367, 277192.923019684734754, 277203.225249799550511, 277213.527513472072314, 277223.829810701019596, 277234.132141485344619, 277244.434505823941436, 277254.736903715645894, 277265.039335159235634, 277275.341800153779332, 277285.644298697996419, 277295.946830790897366, 277306.249396431201603, 277316.551995617861394, 277326.854628349770792, 277337.157294625707436, 277347.459994444740005, 277357.762727805529721, 277368.065494707087055, 277378.368295148306061, 277388.671129127906170, 277398.973996644897852, 277409.276897698116954, 277419.579832286457531, 277429.882800408755429, 277440.185802063904703, 277450.488837250741199, 277460.791905968217179, 277471.095008215226699, 277481.398143990605604, 277491.701313293131534, 277502.004516121698543, 277512.307752475433517, 277522.611022352881264, 277532.914325753168669, 277543.217662675073370, 277553.521033117373008, 277563.824437079078052, 277574.127874559024349, 277584.431345556164160, 277594.734850069216918, 277605.038388097134884, 277615.341959638870321, 277625.645564693142660, 277635.949203259020578, 277646.252875335165299, 277656.556580920587294, 277666.860320014238823, 277677.164092614781111, 277687.467898721282836, 277697.771738332521636, 277708.075611447449774, 277718.379518064903095, 277728.683458183717448, 277738.987431802786887, 277749.291438921063673, 277759.595479537325446, 277769.899553650582675, 277780.203661259554792, 277790.507802363135852, 277800.811976960336324, 277811.116185049933847, 277821.420426630938891, 277831.724701701954473, 277842.029010262107477, 277852.333352310233749, 277862.637727845110931, 277872.942136865749490, 277883.246579370927066, 277893.551055359479506, 277903.855564830475487, 277914.160107782576233, 277924.464684214850422, 277934.769294126017485, 277945.073937515087891, 277955.378614380897488, 277965.683324722223915, 277975.988068538135849, 277986.292845827410929, 277996.597656588826794, 278006.902500821452122, 278017.207378524064552, 278027.512289695558138, 278037.817234334826935, 278048.122212440648582, 278058.427224012091756, 278068.732269047934096, 278079.037347546953242, 278089.342459508276079, 278099.647604930505622, 278109.952783812826965, 278120.257996153784916, 278130.563241952506360, 278140.868521207827143, 278151.173833918466698, 278161.479180083551910, 278171.784559701802209, 278182.089972772169858, 278192.395419293548912, 278202.700899264658801, 278213.006412684568204, 278223.311959552054759, 278233.617539866012521, 278243.923153625451960, 278254.228800829034299, 278264.534481475886423, 278274.840195564611349, 278285.145943094335962, 278295.451724063837901, 278305.757538471953012, 278316.063386317691766, 278326.369267599773593, 278336.675182317208964, 278346.981130468833726, 278357.287112053541932, 278367.593127070169430, 278377.899175517668482, 278388.205257394874934, 278398.511372700741049, 278408.817521433986258, 278419.123703593737446, 278429.429919178655837, 278439.736168187693693, 278450.042450619803276, 278460.348766473762225, 278470.655115748581011, 278480.961498442979064, 278491.267914556025062, 278501.574364086438436, 278511.880847033113241, 278522.187363395118155, 278532.493913171172608, 278542.800496360112447, 278553.107112961006351, 278563.413762972573750, 278573.720446393825114, 278584.027163223479874, 278594.333913460548501, 278604.640697103925049, 278614.947514152445365, 278625.254364605003502, 278635.561248460493516, 278645.868165717693046, 278656.175116375728976, 278666.482100433204323, 278676.789117889304180, 278687.096168742631562, 278697.403252992255148, 278707.710370636952575, 278718.017521675617900, 278728.324706107261591, 278738.631923930544872, 278748.939175144536421, 278759.246459748072084, 278769.553777740045916, 278779.861129119351972, 278790.168513884767890, 278800.475932035362348, 278810.783383569912985, 278821.090868487197440, 278831.398386786400806, 278841.705938466067892, 278852.013523525383789, 278862.321141962951515, 278872.628793777839746, 278882.936478968942538, 278893.244197535095736, 278903.551949475135189, 278913.859734788071364, 278924.167553472623695, 278934.475405527802650, 278944.783290952502284, 278955.091209745616652, 278965.399161905865185, 278975.707147432316560, 278986.015166323806625, 278996.323218579229433, 279006.631304197479039, 279016.939423177333083, 279027.247575517802034, 279037.555761217779946, 279047.863980276044458, 279058.172232691606041, 279068.480518463184126, 279078.788837589905597, 279089.097190070489887, 279099.405575903831050, 279109.713995088881347, 279120.022447624418419, 279130.330933509510942, 279140.639452742936555, 279150.948005323531106, 279161.256591250305064, 279171.565210522036068, 279181.873863137676381, 279192.182549096061848, 279202.491268396144733, 279212.800021036819089, 279223.108807016862556, 279233.417626335285604, 279243.726478990982287, 279254.035364982672036, 279264.344284309481736, 279274.653236970072612, 279284.962222963513341, 279295.271242288639769, 279305.580294944229536, 279315.889380929351319, 279326.198500242724549, 279336.507652883417904, 279346.816838850150816, 279357.126058141991962, 279367.435310757544357, 279377.744596695993096, 279388.053915956115816, 279398.363268536748365, 279408.672654436901212, 279418.982073655351996, 279429.291526190994773, 279439.601012042898219, 279449.910531209665351, 279460.220083690423053, 279470.529669483890757, 279480.839288589020725, 279491.148941004881635, 279501.458626730018295, 279511.768345763674006, 279522.078098104451783, 279532.387883751420304, 279542.697702703357209, 279553.007554959214758, 279563.317440517945215, 279573.627359378326219, 279583.937311539310031, 279594.247296999790706, 279604.557315758604091, 279614.867367814702448, 279625.177453166863415, 279635.487571814272087, 279645.797723755415063, 279656.107908989477437, 279666.418127515236847, 279676.728379331587348, 279687.038664437481202, 279697.348982831754256, 279707.659334513358772, 279717.969719481072389, 279728.280137733847369, 279738.590589270635974, 279748.901074090274051, 279759.211592191655654, 279769.522143573674839, 279779.832728235167451, 279790.143346175143961, 279800.453997392382007, 279810.764681885950267, 279821.075399654509965, 279831.386150697071571, 279841.696935012587346, 279852.007752599776722, 279862.318603457766585, 279872.629487585218158, 279882.940404981200118, 279893.251355644490104, 279903.562339574040379, 279913.873356768744998, 279924.184407227498014, 279934.495490949135274, 279944.806607932550833, 279955.117758176813368, 279965.428941680584103, 279975.740158442873508, 279986.051408462575637, 279996.362691738526337, 280006.674008269736078, 280016.985358054982498, 280027.296741093159653, 280037.608157383278012, 280047.919606924115214, 280058.231089714623522, 280068.542605753638782, 280078.854155040171463, 280089.165737572999205, 280099.477353351016063, 280109.789002373290714, 280120.100684638426173, 280130.412400145607535, 280140.724148893554229, 280151.035930881160311, 280161.347746107436251, 280171.659594571159687, 280181.971476271341089, 280192.283391206816304, 280202.595339376421180, 280212.907320779107977, 280223.219335413770750, 280233.531383279361762, 280243.843464374658652, 280254.155578698613681, 280264.467726250179112, 280274.779907028190792, 280285.092121031542774, 280295.404368259129114, 280305.716648709843867, 280316.028962382581085, 280326.341309276351240, 280336.653689389873762, 280346.966102722100914, 280357.278549272043165, 280367.591029038478155, 280377.903542020299938, 280388.216088216460776, 280398.528667625854723, 280408.841280247317627, 280419.153926079801749, 280429.466605122201145, 280439.779317373351660, 280450.092062832263764, 280460.404841497715097, 280470.717653368657921, 280481.030498444044497, 280491.343376722710673, 280501.656288203550503, 280511.969232885458041, 280522.282210767385550, 280532.595221848110668, 280542.908266126643866, 280553.221343601879198, 280563.534454272710718, 280573.847598137974273, 280584.160775196563918, 280594.473985447490122, 280604.787228889530525, 280615.100505521637388, 280625.413815342762973, 280635.727158351684920, 280646.040534547413699, 280656.353943928726949, 280666.667386494635139, 280676.980862244032323, 280687.294371175754350, 280697.607913288753480, 280707.921488581865560, 280718.235097054101061, 280728.548738704179414, 280738.862413531111088, 280749.176121533906553, 280759.489862711227033, 280769.803637062199414, 280780.117444585543126, 280790.431285280326847, 280800.745159145211801, 280811.059066179324873, 280821.373006381501909, 280831.686979750578757, 280842.000986285565887, 280852.315025985240936, 280862.629098848614376, 280872.943204874463845, 280883.257344061741605, 280893.571516409516335, 280903.885721916391049, 280914.199960581492633, 280924.514232403598726, 280934.828537381719798, 280945.142875514633488, 280955.457246801233850, 280965.771651240589563, 280976.086088831420057, 280986.400559572852217, 280996.715063463489059, 281007.029600502457470, 281017.344170688535087, 281027.658774020615965, 281037.973410497768782, 281048.288080118771177, 281058.602782882517204, 281068.917518787900917, 281079.232287833874580, 281089.547090019274037, 281099.861925343051553, 281110.176793804159388, 281120.491695401375182, 281130.806630133767612, 281141.121597999997903, 281151.436598999251146, 281161.751633130188566, 281172.066700391762424, 281182.381800783041399, 281192.696934302744921, 281203.012100949883461, 281213.327300723234657, 281223.642533621867187, 281233.957799644558690, 281244.273098790261429, 281254.588431057927664, 281264.903796446335036, 281275.219194954435807, 281285.534626581124030, 281295.850091325468384, 281306.165589186130092, 281316.481120162119623, 281326.796684252331033, 281337.112281455716584, 281347.427911771112122, 281357.743575197469909, 281368.059271733625792, 281378.375001378532033, 281388.690764131082688, 281399.006559990288224, 281409.322388954809867, 281419.638251023774501, 281429.954146195959765, 281440.270074470376130, 281450.586035845801234, 281460.902030321245547, 281471.218057895603124, 281481.534118567651603, 281491.850212336517870, 281502.166339200863149, 281512.482499159756117, 281522.798692212090828, 281533.114918356644921, 281543.431177592487074, 281553.747469918453135, 281564.063795333437156, 281574.380153836333193, 281584.696545426093508, 281595.012970101495739, 281605.329427861666773, 281615.645918705326039, 281625.962442631484009, 281636.278999639034737, 281646.595589726755861, 281656.912212893774267, 281667.228869138751179, 281677.545558460813481, 281687.862280858680606, 281698.179036331363022, 281708.495824877812993, 281718.812646496808156, 281729.129501187417191, 281739.446388948301319, 281749.763309778645635, 281760.080263677111361, 281770.397250642825384, 281780.714270674565341, 281791.031323771225289, 281801.348409931757487, 281811.665529155055992, 281821.982681440073065, 281832.299866785644554, 281842.617085190664511, 281852.934336654201616, 281863.251621174917091, 281873.568938751937822, 281883.886289383983240, 281894.203673070122022, 281904.521089809190016, 281914.838539600081276, 281925.156022441689856, 281935.473538332968019, 281945.791087272926234, 281956.108669260167517, 281966.426284293935169, 281976.743932372948620, 281987.061613496160135, 281997.379327662463766, 282007.697074870811775, 282018.014855120040011, 282028.332668409100734, 282038.650514736946207, 282048.968394102412276, 282059.286306504451204, 282069.604251941898838, 282079.922230413765647, 282090.240241918887477, 282100.558286456158385, 282110.876364024647046, 282121.194474623014685, 282131.512618250388186, 282141.830794905603398, 282152.149004587496165, 282162.467247295076959, 282172.785523027123418, 282183.103831782704219, 282193.422173560597003, 282203.740548359928653, 282214.058956179302186, 282224.377397017786279, 282234.695870874333195, 282245.014377747778781, 282255.332917637017090, 282265.651490541058592, 282275.970096458797343, 282286.288735388952773, 282296.607407330709975, 282306.926112282730173, 282317.244850244140252, 282327.563621213776059, 282337.882425190415233, 282348.201262173184659, 282358.520132160745561, 282368.839035152283031, 282379.157971146516502, 282389.476940142514650, 282399.795942138938699, 282410.114977134973742, 282420.434045129339211, 282430.753146121045575, 282441.072280108986888, 282451.391447091998998, 282461.710647069092374, 282472.029880039161071, 282482.349146001099143, 282492.668444953742437, 282502.987776896217838, 282513.307141827186570, 282523.626539745659102, 282533.945970650587697, 282544.265434540808201, 282554.584931415389292, 282564.904461273050401, 282575.224024112860207, 282585.543619933538139, 282595.863248734269291, 282606.182910513656680, 282616.502605270827189, 282626.822333004674874, 282637.142093713977374, 282647.461887397861574, 282657.781714054988697, 282668.101573684543837, 282678.421466285188217, 282688.741391855990514, 282699.061350395844784, 282709.381341903528664, 282719.701366378227249, 282730.021423818543553, 282740.341514223662671, 282750.661637592245825, 282760.981793923419900, 282771.301983215962537, 282781.622205468942411, 282791.942460681020748, 282802.262748851324432, 282812.583069978689309, 282822.903424062067643, 282833.223811100353487, 282843.544231092440896, 282853.864684037282132, 282864.185169933713041, 282874.505688780744094, 282884.826240577269346, 282895.146825322066434, 282905.467443014262244, 282915.788093652634416, 282926.108777236193419, 282936.429493763775099, 282946.750243234273512, 282957.071025646640919, 282967.391840999887791, 282977.712689292791765, 282988.033570524246898, 282998.354484693321865, 283008.675431798794307, 283018.996411839674693, 283029.317424814798869, 283039.638470723177306, 283049.959549563529436, 283060.280661335040350, 283070.601806036429480, 283080.922983666707296, 283091.244194224767853, 283101.565437709446996, 283111.886714119813405, 283122.208023454644717, 283132.529365712951403, 283142.850740893569309, 283153.172148995567113, 283163.493590017606039, 283173.815063958754763, 283184.136570818023756, 283194.458110594132449, 283204.779683286207728, 283215.101288892910816, 283225.422927413426805, 283235.744598846416920, 283246.066303191008046, 283256.388040446036030, 283266.709810610394925, 283277.031613683036994, 283287.353449662739877, 283297.675318548688665, 283307.997220339602791, 283318.319155034550931, 283328.641122632194310, 283338.963123131718021, 283349.285156531899702, 283359.607222831691615, 283369.929322030046023, 283380.251454125740565, 283390.573619117902126, 283400.895817005250137, 283411.218047786853276, 283421.540311461547390, 283431.862608028342947, 283442.184937485959381, 283452.507299833581783, 283462.829695069871377, 283473.152123193955049, 283483.474584204610437, 283493.797078100789804, 283504.119604881445412, 283514.442164545471314, 283524.764757091877982, 283535.087382519443054, 283545.410040827176999, 283555.732732013915665, 283566.055456078611314, 283576.378213020216208, 283586.701002837740816, 283597.023825529846363, 283607.346681095601525, 283617.669569534074981, 283627.992490843927953, 283638.315445024170913, 283648.638432073756121, 283658.961451991694048, 283669.284504776645917, 283679.607590427855030, 283689.930708943924401, 283700.253860323980916, 283710.577044566860422, 283720.900261671456974, 283731.223511636839248, 283741.546794461784884, 283751.870110145304352, 283762.193458686233498, 283772.516840083524585, 283782.840254336071666, 283793.163701442885213, 283803.487181402801070, 283813.810694214829709, 283824.134239877748769, 283834.457818390568718, 283844.781429752241820, 283855.105073961603921, 283865.428751017665491, 283875.752460919262376, 283886.076203665405046, 283896.399979254871141, 283906.723787686845753, 283917.047628959931899, 283927.371503073314670, 283937.695410025655292, 283948.019349816138856, 283958.343322443543002, 283968.667327906819992, 283978.991366204863880, 283989.315437336626928, 283999.639541301061399, 284009.963678097061347, 284020.287847723520827, 284030.612050179333892, 284040.936285463511012, 284051.260553574946243, 284061.584854512533639, 284071.909188275225461, 284082.233554861857556, 284092.557954271556810, 284102.882386503042653, 284113.206851555325557, 284123.531349427299574, 284133.855880117858760, 284144.180443626071792, 284154.505039950716309, 284164.829669090744574, 284175.154331045050640, 284185.479025812644977, 284195.803753392363433, 284206.128513783274684, 284216.453306984098163, 284226.778132993960753, 284237.102991811581887, 284247.427883436088450, 284257.752807866199873, 284268.077765100984834, 284278.402755139279179, 284288.727777980151586, 284299.052833622321486, 284309.377922064857557, 284319.703043306712061, 284330.028197346662637, 284340.353384183777962, 284350.678603816835675, 284361.003856244962662, 284371.329141466878355, 284381.654459481593221, 284391.979810288059525, 284402.305193885171320, 284412.630610271822661, 284422.956059447082225, 284433.281541409611236, 284443.607056158536579, 284453.932603692752309, 284464.258184011152480, 284474.583797112747561, 284484.909442996315192, 284495.235121660865843, 284505.560833105293568, 284515.886577328608837, 284526.212354329647496, 284536.538164107361808, 284546.864006660704035, 284557.189881988510024, 284567.515790089790244, 284577.841730963496957, 284588.167704608466011, 284598.493711023649666, 284608.819750208058394, 284619.145822160469834, 284629.471926879952662, 284639.798064365342725, 284650.124234615650494, 284660.450437629653607, 284670.776673406420741, 284681.102941944787744, 284691.429243243823294, 284701.755577302305028, 284712.081944119127002, 284722.408343693416100, 284732.734776023949962, 284743.061241109680850, 284753.387738949561026, 284763.714269542484544, 284774.040832887345459, 284784.367428983154241, 284794.694057828804944, 284805.020719423249830, 284815.347413765382953, 284825.674140854156576, 284836.000900688406546, 284846.327693267201539, 284856.654518589377403, 284866.981376653828193, 284877.308267459680792, 284887.635191005596425, 284897.962147290701978, 284908.289136313833296, 284918.616158073942643, 284928.943212569924071, 284939.270299800846260, 284949.597419765370432, 284959.924572462681681, 284970.251757891557645, 284980.578976051067002, 284990.906226939987391, 285001.233510557329282, 285011.560826901928522, 285021.888175972853787, 285032.215557768999133, 285042.542972289200407, 285052.870419532526284, 285063.197899497754406, 285073.525412183953449, 285083.852957589901052, 285094.180535714724101, 285104.508146557200234, 285114.835790116223507, 285125.163466390862595, 285135.491175380069762, 285145.818917082564440, 285156.146691497473512, 285166.474498623632826, 285176.802338459936436, 285187.130211005453020, 285197.458116258960217, 285207.786054219584912, 285218.114024886046536, 285228.442028257413767, 285238.770064332464244, 285249.098133110324852, 285259.426234589831438, 285269.754368769878056, 285280.082535649475176, 285290.410735227458645, 285300.738967502838932, 285311.067232474568300, 285321.395530141424388, 285331.723860502475873, 285342.052223556675017, 285352.380619302799460, 285362.709047740034293, 285373.037508866982535, 285383.366002682887483, 285393.694529186410364, 285404.023088376794476, 285414.351680252642836, 285424.680304813082330, 285435.008962057007011, 285445.337651983369142, 285455.666374591004569, 285465.995129878981970, 285476.323917846078984, 285486.652738491422497, 285496.981591813731939, 285507.310477812017780, 285517.639396485406905, 285527.968347832502332, 285538.297331852430943, 285548.626348544145003, 285558.955397906538565, 285569.284479938389268, 285579.613594638940413, 285589.942742006853223, 285600.271922041138168, 285610.601134740805719, 285620.930380104749929, 285631.259658131806646, 285641.588968821044546, 285651.918312171299476, 285662.247688181698322, 285672.577096850844100, 285682.906538177980110, 285693.236012161767576, 285703.565518801391590, 285713.895058095629793, 285724.224630043492652, 285734.554234643874224, 285744.883871895668563, 285755.213541797886137, 285765.543244349479210, 285775.872979549283627, 285786.202747396309860, 285796.532547889510170, 285806.862381027720403, 285817.192246809951030, 285827.522145235096104, 285837.852076302166097, 285848.182040009996854, 285858.512036357540637, 285868.842065343807917, 285879.172126967692748, 285889.502221228030976, 285899.832348123833071, 285910.162507654225919, 285920.492699817812536, 285930.822924613778014, 285941.153182040841784, 285951.483472098188940, 285961.813794784597121, 285972.144150098960381, 285982.474538040347397, 285992.804958607594017, 286003.135411799652502, 286013.465897615533322, 286023.796416054072324, 286034.126967114338186, 286044.457550795050338, 286054.788167095393874, 286065.118816014088225, 286075.449497550202068, 286085.780211702571250, 286096.110958470322657, 286106.441737852175720, 286116.772549847082701, 286127.103394454228692, 286137.434271672274917, 286147.765181500290055, 286158.096123937109951, 286168.427098981803283, 286178.758106633205898, 286189.089146890386473, 286199.420219752064440, 286209.751325217424892, 286220.082463285129052, 286230.413633954362012, 286240.744837223959621, 286251.076073092815932, 286261.407341559941415, 286271.738642624230124, 286282.069976284692530, 286292.401342540222686, 286302.732741389656439, 286313.064172832062468, 286323.395636866276618, 286333.727133491425775, 286344.058662706229370, 286354.390224509697873, 286364.721818900841754, 286375.053445878496859, 286385.385105441673659, 286395.716797589324415, 286406.048522320343181, 286416.380279633624014, 286426.712069528119173, 286437.043892002897337, 286447.375747056736145, 286457.707634688646067, 286468.039554897637572, 286478.371507682488300, 286488.703493042266928, 286499.035510975809302, 286509.367561482184101, 286519.699644560168963, 286530.031760208832566, 286540.363908427127171, 286550.696089213888627, 286561.028302568069194, 286571.360548488737550, 286581.692826974613126, 286592.025138024881016, 286602.357481638318859, 286612.689857813937124, 286623.022266550571658, 286633.354707847232930, 286643.687181702931412, 286654.019688116561156, 286664.352227087016217, 286674.684798613190651, 286685.017402694269549, 286695.350039328855928, 286705.682708516134880, 286716.015410254942253, 286726.348144544288516, 286736.680911383009516, 286747.013710770115722, 286757.346542704501189, 286767.679407185292803, 286778.012304211093578, 286788.345233781205025, 286798.678195894230157, 286809.011190549412277, 286819.344217745470814, 286829.677277481474448, 286840.010369756317232, 286850.343494568951428, 286860.676651918271091, 286871.009841803286690, 286881.343064222892281, 286891.676319176098332, 286902.009606661740690, 286912.342926678829826, 286922.676279226259794, 286933.009664303099271, 286943.343081908125896, 286953.676532040350139, 286964.010014698724262, 286974.343529882200528, 286984.677077589731198, 286995.010657820152119, 287005.344270572531968, 287015.677915845764801, 287026.011593638861086, 287036.345303950540256, 287046.679046780045610, 287057.012822126096580, 287067.346629987761844, 287077.680470363935456, 287088.014343253569677, 287098.348248655500356, 287108.682186568912584, 287119.016156992467586, 287129.350159925292246, 287139.684195366338827, 287150.018263314443175, 287160.352363768615760, 287170.686496727808844, 287181.020662190916482, 287191.354860156949144, 287201.689090624742676, 287212.023353593365755, 287222.357649061654229, 287232.691977028676774, 287243.026337493211031, 287253.360730454383884, 287263.695155910972971, 287274.029613862046972, 287284.364104306441732, 287294.698627243225928, 287305.033182671177201, 287315.367770589480642, 287325.702390996855684, 287336.037043892371003, 287346.371729274920654, 287356.706447143398691, 287367.041197496873792, 287377.375980334181804, 287387.710795654391404, 287398.045643456280231, 287408.380523738975171, 287418.715436501312070, 287429.050381742243189, 287439.385359460662585, 287449.720369655638933, 287460.055412326008081, 287470.390487470896915, 287480.725595088966656, 287491.060735179344192, 287501.395907740981784, 287511.731112772831693, 287522.066350273671560, 287532.401620242628269, 287542.736922678595874, 287553.072257580526639, 287563.407624947314616, 287573.743024778028484, 287584.078457071387675, 287594.413921826635487, 287604.749419042491354, 287615.084948717965744, 287625.420510852010921, 287635.756105443637352, 287646.091732491680887, 287656.427391995210201, 287666.763083953002933, 287677.098808364185970, 287687.434565227536950, 287697.770354542124551, 287708.106176306901034, 287718.442030520760454, 287728.777917182596866, 287739.113836291537154, 287749.449787846300751, 287759.785771846014541, 287770.121788289514370, 287780.457837175868917, 287790.793918503914028, 287801.130032272601966, 287811.466178480884992, 287821.802357127831783, 287832.138568212219980, 287842.474811733118258, 287852.811087689420674, 287863.147396080079488, 287873.483736903988756, 287883.820110160275362, 287894.156515847658738, 287904.492953965265770, 287914.829424511932302, 287925.165927486668807, 287935.502462888369337, 287945.839030716102570, 287956.175630968587939, 287966.512263645068742, 287976.848928744264413, 287987.185626265243627, 287997.522356206842232, 288007.859118568187114, 288018.195913348055910, 288028.532740545400884, 288038.869600159290712, 288049.206492188677657, 288059.543416632397566, 288069.880373489402700, 288080.217362758761737, 288090.554384439310525, 288100.891438530117739, 288111.228525029961020, 288121.565643937967252, 288131.902795252914075, 288142.239978973928373, 288152.577195099845994, 288162.914443629677407, 288173.251724562258460, 288183.589037896716036, 288193.926383631827775, 288204.263761766662356, 288214.601172300113831, 288224.938615231192671, 288235.276090558734722, 288245.613598281808663, 288255.951138399308547, 288266.288710910244845, 288276.626315813395195, 288286.963953107944690, 288297.301622792670969, 288307.639324866642710, 288317.977059328637552, 288328.314826177840587, 288338.652625412971247, 288348.990457033214625, 288359.328321037290152, 288369.666217424382921, 288380.004146193270572, 288390.342107342963573, 288400.680100872355979, 288411.018126780516468, 288421.356185066280887, 288431.694275728659704, 288442.032398766605183, 288452.370554179069586, 288462.708741964946967, 288473.046962123306002, 288483.385214652982540, 288493.723499552987050, 288504.061816822271794, 288514.400166459789034, 288524.738548464432824, 288535.076962835271843, 288545.415409571083728, 288555.753888670995366, 288566.092400133900810, 288576.430943958752323, 288586.769520144443959, 288597.108128689986188, 288607.446769594331272, 288617.785442856431473, 288628.124148475239053, 288638.462886449648067, 288648.801656778668985, 288659.140459461370483, 288669.479294496471994, 288679.818161883042194, 288690.157061620033346, 288700.495993706455920, 288710.834958141145762, 288721.173954923113342, 288731.512984051369131, 288741.852045524807181, 288752.191139342321549, 288762.530265503039118, 288772.869424005679321, 288783.208614849427249, 288793.547838033060543, 288803.887093555647880, 288814.226381416083314, 288824.565701613319106, 288834.905054146365728, 288845.244439014175441, 288855.583856215584092, 288865.923305749660358, 288876.262787615356501, 288886.602301811566576, 288896.941848337301053, 288907.281427191512194, 288917.621038373094052, 288927.960681881057099, 288938.300357714295387, 288948.640065871935803, 288958.979806352697778, 288969.319579155708198, 288979.659384279861115, 288989.999221724050585, 289000.339091487403493, 289010.678993568639271, 289021.018927966884803, 289031.358894681034144, 289041.698893710097764, 289052.038925052969716, 289062.378988708660472, 289072.719084676064085, 289083.059212954191025, 289093.399373541935347, 289103.739566438365728, 289114.079791642259806, 289124.420049152744468, 289134.760338968713768, 289145.100661089119967, 289155.441015512857120, 289165.781402238993905, 289176.121821266424377, 289186.462272594217211, 289196.802756221033633, 289207.143272146175150, 289217.483820368361194, 289227.824400886718649, 289238.165013700083364, 289248.505658807465807, 289258.846336207818240, 289269.187045900092926, 289279.527787883183919, 289289.868562156218104, 289300.209368717914913, 289310.550207567459438, 289320.891078703629319, 289331.231982125493232, 289341.572917832003441, 289351.913885822112206, 289362.254886094713584, 289372.595918648818042, 289382.936983483319636, 289393.278080597403459, 289403.619209989672527, 289413.960371659370139, 289424.301565605332144, 289434.642791826510802, 289444.984050321858376, 289455.325341090443544, 289465.666664131102152, 289476.008019442902878, 289486.349407024623360, 289496.690826875448693, 289507.032278994214721, 289517.373763379815500, 289527.715280031319708, 289538.056828947679605, 289548.398410127789248, 289558.740023570717312, 289569.081669275299646, 289579.423347240604926, 289589.765057465468999, 289600.106799948960543, 289610.448574689915404, 289620.790381687460467, 289631.132220940373372, 289641.474092447839212, 289651.815996208635624, 289662.157932221773081, 289672.499900486203842, 289682.841901000880171, 289693.183933764754329, 289703.525998776836786, 289713.868096036138013, 289724.210225541435648, 289734.552387291856576, 289744.894581286236644, 289755.236807523702737, 289765.579066003032494, 289775.921356723294593, 289786.263679683383089, 289796.606034882366657, 289806.948422319081146, 289817.290841992537025, 289827.633293901744764, 289837.975778045598418, 289848.318294423050247, 289858.660843033110723, 289869.003423874790315, 289879.346036946924869, 289889.688682248466648, 289900.031359778600745, 289910.374069535988383, 289920.716811519814655, 289931.059585728857201, 289941.402392162359320, 289951.745230818924028, 289962.088101697852835, 289972.431004797806963, 289982.773940117971506, 289993.116907657182310, 290003.459907414449845, 290013.802939388726372, 290024.146003579022363, 290034.489099984231871, 290044.832228603423573, 290055.175389435375109, 290065.518582479096949, 290075.861807733774185, 290086.205065198068041, 290096.548354871163610, 290106.891676751838531, 290117.235030839219689, 290127.578417132142931, 290137.921835629676934, 290148.265286330773961, 290158.608769234328065, 290168.952284339233302, 290179.295831644674763, 290189.639411149488296, 290199.983022852626164, 290210.326666753040627, 290220.670342849742156, 290231.014051141683012, 290241.357791627815459, 290251.701564307091758, 290262.045369178522378, 290272.389206241001375, 290282.733075493539218, 290293.076976935088169, 290303.420910564658698, 290313.764876381086651, 290324.108874383557122, 290334.452904570789542, 290344.796966941852588, 290355.141061495698523, 290365.485188231454231, 290375.829347147780936, 290386.173538243863732, 290396.517761518596672, 290406.862016970932018, 290417.206304599880241, 290427.550624404335395, 290437.894976383366156, 290448.239360535808373, 290458.583776860730723, 290468.928225357085466, 290479.272706023824867, 290489.617218859784771, 290499.961763864150271, 290510.306341035757214, 290520.650950373616070, 290530.995591876679100, 290541.340265543898568, 290551.684971374226734, 290562.029709366674069, 290572.374479520192835, 290582.719281833735295, 290593.064116306253709, 290603.408982936758548, 290613.753881724202074, 290624.098812667478342, 290634.443775765656028, 290644.788771017629188, 290655.133798422466498, 290665.478857978945598, 290675.823949686251581, 290686.169073543162085, 290696.514229548803996, 290706.859417702013161, 290717.204638001858257, 290727.549890447233338, 290737.895175037090667, 290748.240491770440713, 290758.585840646352153, 290768.931221663602628, 290779.276634821202606, 290789.622080118162557, 290799.967557553551160, 290810.313067126146052, 290820.658608835074119, 290831.004182679113001, 290841.349788657447789, 290851.695426768856123, 290862.041097012464888, 290872.386799387109932, 290882.732533891859930, 290893.078300525608938, 290903.424099287425634, 290913.769930176204070, 290924.115793190780096, 290934.461688330397010, 290944.807615593832452, 290955.153574980038684, 290965.499566488084383, 290975.845590117038228, 290986.191645865619648, 290996.537733732955530, 291006.883853717881721, 291017.230005819525104, 291027.576190036721528, 291037.922406368597876, 291048.268654813989997, 291058.614935371908359, 291068.961248041247018, 291079.307592821191065, 291089.653969710401725, 291100.000378708122298, 291110.346819813188631, 291120.693293024611194, 291131.039798341284040, 291141.386335762275849, 291151.732905286480673, 291162.079506912850775, 291172.426140640513040, 291182.772806468245108, 291193.119504395173863, 291203.466234420135152, 291213.812996542197652, 291224.159790760255419, 291234.506617073318921, 291244.853475480340421, 291255.200365980388597, 291265.547288572241087, 291275.894243255024776, 291286.241230027633719, 291296.588248889078386, 291306.935299838311039, 291317.282382874342147, 291327.629497996123973, 291337.976645202492364, 291348.323824492690619, 291358.671035865379963, 291369.018279319803696, 291379.365554854739457, 291389.712862469314132, 291400.060202162305359, 291410.407573932898231, 291420.754977779870387, 291431.102413702406920, 291441.449881699227262, 291451.797381769458298, 291462.144913912110496, 291472.492478126019705, 291482.840074410254601, 291493.187702763767447, 291503.535363185510505, 291513.883055674494244, 291524.230780229670927, 291534.578536849934608, 291544.926325534353964, 291555.274146281881258, 291565.621999091526959, 291575.969883962126914, 291586.317800892808009, 291596.665749882464297, 291607.013730930048041, 291617.361744034569710, 291627.709789195039775, 291638.057866410352290, 291648.405975679575931, 291658.754117001546547, 291669.102290375332814, 291679.450495799945202, 291689.798733274219558, 291700.147002797282767, 291710.495304367970675, 291720.843637985351961, 291731.192003648320679, 291741.540401355945505, 291751.888831107120495, 291762.237292900914326, 291772.585786736104637, 291782.934312611934729, 291793.282870527124032, 291803.631460480857641, 291813.980082471854985, 291824.328736499417573, 291834.677422562264837, 291845.026140659465455, 291855.374890789971687, 291865.723672952794004, 291876.072487146942876, 291886.421333371137735, 291896.770211624738295, 291907.119121906405780, 291917.468064215267077, 291927.817038550274447, 291938.166044910380151, 291948.515083294536453, 291958.864153701812029, 291969.213256130984519, 291979.562390581355430, 291989.911557051585987, 292000.260755540803075, 292010.609986047900748, 292020.959248572005890, 292031.308543111954350, 292041.657869666698389, 292052.007228235306684, 292062.356618816731498, 292072.706041409983300, 292083.055496013839729, 292093.404982627602294, 292103.754501249932218, 292114.104051880072802, 292124.453634516743477, 292134.803249159129336, 292145.152895806124434, 292155.502574456681032, 292165.852285109751392, 292176.202027764462400, 292186.551802419649903, 292196.901609074207954, 292207.251447727379855, 292217.601318377885036, 292227.951221024908591, 292238.301155667228159, 292248.651122303970624, 292259.001120934030041, 292269.351151556475088, 292279.701214170141611, 292290.051308774156496, 292300.401435367355589, 292310.751593948807567, 292321.101784517406486, 292331.452007072337437, 292341.802261612319853, 292352.152548136422411, 292362.502866643713787, 292372.853217133029830, 292383.203599603439216, 292393.554014053894207, 292403.904460483405273, 292414.254938890866470, 292424.605449275346473, 292434.955991635739338, 292445.306565971055534, 292455.657172280247323, 292466.007810562383384, 292476.358480816474184, 292486.709183041297365, 292497.059917235921603, 292507.410683399415575, 292517.761481530615129, 292528.112311628588941, 292538.463173692347482, 292548.814067720726598, 292559.164993712911382, 292569.515951667679474, 292579.866941584157757, 292590.217963461123873, 292600.569017297821119, 292610.920103093027137, 292621.271220845927019, 292631.622370555240195, 292641.973552220093552, 292652.324765839497559, 292662.676011412288062, 292673.027288937591948, 292683.378598414303269, 292693.729939841432497, 292704.081313217931893, 292714.432718542811926, 292724.784155815083068, 292735.135625033697579, 292745.487126197549514, 292755.838659305707552, 292766.190224357182160, 292776.541821350925602, 292786.893450285831932, 292797.245111160911620, 292807.596803975291550, 292817.948528727749363, 292828.300285417411942, 292838.652074043173343, 292849.003894604044035, 292859.355747098976281, 292869.707631527038757, 292880.059547887125518, 292890.411496178247035, 292900.763476399355568, 292911.115488549403381, 292921.467532627517357, 292931.819608632533345, 292942.171716563461814, 292952.523856419371441, 292962.876028199156281, 292973.228231901710387, 292983.580467526277062, 292993.932735071517527, 293004.285034536733292, 293014.637365920701995, 293024.989729222375900, 293035.342124440940097, 293045.694551575114019, 293056.047010624082759, 293066.399501586682163, 293076.752024462039117, 293087.104579249047674, 293097.457165946776513, 293107.809784554061480, 293118.162435069971252, 293128.515117493516300, 293138.867831823532470, 293149.220578059204854, 293159.573356199369300, 293169.926166243094485, 293180.279008189274464, 293190.631882037036121, 293200.984787785157096, 293211.337725432822481, 293221.690694978809915, 293232.043696422304492, 293242.396729762200266, 293252.749794997507706, 293263.102892127120867, 293273.456021150050219, 293283.809182065422647, 293294.162374872015789, 293304.515599568956532, 293314.868856155138928, 293325.222144629631657, 293335.575464991328772, 293345.928817239240743, 293356.282201372436248, 293366.635617389751133, 293376.989065290312283, 293387.342545072955545, 293397.696056736807805, 293408.049600280763116, 293418.403175703890156, 293428.756783005082980, 293439.110422183352057, 293449.464093237649649, 293459.817796167102642, 293470.171530970488675, 293480.525297646934632, 293490.879096195392776, 293501.232926614757162, 293511.586788904212881, 293521.940683062479366, 293532.294609088799916, 293542.648566981952172, 293553.002556741121225, 293563.356578365084715, 293573.710631853027735, 293584.064717203727923, 293594.418834416370373, 293604.772983489790931, 293615.127164423058275, 293625.481377215124667, 293635.835621864942368, 293646.189898371580057, 293656.544206733873580, 293666.898546951008029, 293677.252919021819253, 293687.607322945434134, 293697.961758720630314, 293708.316226346534677, 293718.670725822215900, 293729.025257146451622, 293739.379820318310522, 293749.734415336861275, 293760.089042200997937, 293770.443700909730978, 293780.798391462070867, 293791.153113856911659, 293801.507868093380239, 293811.862654170428868, 293822.217472086835187, 293832.572321841900703, 293842.927203434403054, 293853.282116863469128, 293863.637062127934769, 293873.992039226926863, 293884.347048159281258, 293894.702088924124837, 293905.057161520351656, 293915.412265947030392, 293925.767402203113306, 293936.122570287552662, 293946.477770199417137, 293956.833001937484369, 293967.188265501055866, 293977.543560888851061, 293987.898888100055046, 293998.254247133503668, 294008.609637988265604, 294018.965060663293116, 294029.320515157538466, 294039.676001470186748, 294050.031519599899184, 294060.387069545977283, 294070.742651307140477, 294081.098264882632066, 294091.453910271287896, 294101.809587472118437, 294112.165296484017745, 294122.521037306170911, 294132.876809937530197, 294143.232614376931451, 294153.588450623443350, 294163.944318676134571, 294174.300218533899169, 294184.656150195631199, 294195.012113660632167, 294205.368108927563298, 294215.724135995609686, 294226.080194863723591, 294236.436285530799069, 294246.792407995963003, 294257.148562258051243, 294267.504748316190671, 294277.860966169217136, 294288.217215816373937, 294298.573497256380506, 294308.929810488421936, 294319.286155511392280, 294329.642532324243803, 294339.998940926045179, 294350.355381315748673, 294360.711853492422961, 294371.068357454845682, 294381.424893202260137, 294391.781460733502172, 294402.138060047640465, 294412.494691143569071, 294422.851354020356666, 294433.208048677013721, 294443.564775112492498, 294453.921533325745258, 294464.278323315782472, 294474.635145081672817, 294484.991998622193933, 294495.348883936647326, 294505.705801023752429, 294516.062749882752541, 294526.419730512425303, 294536.776742911781184, 294547.133787079947069, 294557.490863015700597, 294567.847970718285069, 294578.205110186478123, 294588.562281419348437, 294598.919484415906481, 294609.276719175279140, 294619.633985696185846, 294629.991283977753483, 294640.348614018934313, 294650.705975818797015, 294661.063369376293849, 294671.420794690318871, 294681.778251760115381, 294692.135740584344603, 294702.493261162249837, 294712.850813492783345, 294723.208397574780975, 294733.566013407427818, 294743.923660989617929, 294754.281340320419986, 294764.639051398611628, 294774.996794223436154, 294785.354568793787621, 294795.712375108676497, 294806.070213167055044, 294816.428082967933733, 294826.785984510323033, 294837.143917793116998, 294847.501882815500721, 294857.859879576310050, 294868.217908074613661, 294878.575968309422024, 294888.934060279570986, 294899.292183984245639, 294909.650339422281832, 294920.008526592864655, 294930.366745494771749, 294940.724996127188206, 294951.083278488891665, 294961.441592579067219, 294971.799938396725338, 294982.158315940643661, 294992.516725210065488, 295002.875166203768458, 295013.233638920879457, 295023.592143360292539, 295033.950679521192797, 295044.309247402299661, 295054.667847002914641, 295065.026478321815375, 295075.385141357954126, 295085.743836110574193, 295096.102562578336801, 295106.461320760543458, 295116.820110656030010, 295127.178932263806928, 295137.537785583001096, 295147.896670612331945, 295158.255587351042777, 295168.614535797969438, 295178.973515952238813, 295189.332527812744956, 295199.691571378556546, 295210.050646648567636, 295220.409753621905111, 295230.768892297463026, 295241.128062674193643, 295251.487264751340263, 295261.846498527564108, 295272.205764002108481, 295282.565061173867434, 295292.924390041793231, 295303.283750604954548, 295313.643142862420063, 295324.002566813025624, 295334.362022455839906, 295344.721509789873380, 295355.081028814020101, 295365.440579527523369, 295375.800161929044407, 295386.159776017826516, 295396.519421792821959, 295406.879099252982996, 295417.238808397261892, 295427.598549224727321, 295437.958321734389756, 295448.318125925143249, 295458.677961796114687, 295469.037829346198123, 295479.397728574462235, 295489.757659479975700, 295500.117622061457951, 295510.477616318152286, 295520.837642249010969, 295531.197699852986261, 295541.557789128972217, 295551.917910076270346, 295562.278062693658285, 295572.638246980030090, 295582.998462934687268, 295593.358710556291044, 295603.718989844142925, 295614.079300797078758, 295624.439643414109014, 295634.800017694302369, 295645.160423636494670, 295655.520861239812803, 295665.881330503209028, 295676.241831425752025, 295686.602364006335847, 295696.962928244087379, 295707.323524137842469, 295717.684151686728001, 295728.044810889754444, 295738.405501745757647, 295748.766224253922701, 295759.126978413085453, 295769.487764222372789, 295779.848581680736970, 295790.209430787188467, 295800.570311540679540, 295810.931223940278869, 295821.292167984938715, 295831.653143673611339, 295842.014151005365420, 295852.375189979211427, 295862.736260594159830, 295873.097362849104684, 295883.458496743114665, 295893.819662275258452, 295904.180859444371890, 295914.542088249581866, 295924.903348689782433, 295935.264640764158685, 295945.625964471488260, 295955.987319811014459, 295966.348706781514920, 295976.710125382058322, 295987.071575611655135, 295997.433057469257619, 296007.794570954050869, 296018.156116064754315, 296028.517692800553050, 296038.879301160457544, 296049.240941143361852, 296059.602612748334650, 296069.964315974386409, 296080.326050820469391, 296090.687817285594065, 296101.049615368770901, 296111.411445069068577, 296121.773306385322940, 296132.135199316719081, 296142.497123862092849, 296152.859080020571128, 296163.221067791047972, 296173.583087172650266, 296183.945138164330274, 296194.307220765040256, 296204.669334973790683, 296215.031480789592024, 296225.393658211454749, 296235.755867238389328, 296246.118107869464438, 296256.480380103515927, 296266.842683939670678, 296277.205019376880955, 296287.567386414157227, 296297.929785050509963, 296308.292215284891427, 296318.654677116428502, 296329.017170544015244, 296339.379695566603914, 296349.742252183379605, 296360.104840393119957, 296370.467460195068270, 296380.830111588002183, 296391.192794571106788, 296401.555509143276140, 296411.918255303520709, 296422.281033050850965, 296432.643842384219170, 296443.006683302810416, 296453.369555805402342, 296463.732459891180042, 296474.095395559037570, 296484.458362807927188, 296494.821361637092195, 296505.184392045193817, 296515.547454031475354, 296525.910547594889067, 296536.273672734445427, 296546.636829449154902, 296557.000017737911548, 296567.363237599842250, 296577.726489033841062, 296588.089772039034870, 296598.453086614375934, 296608.816432758874726, 296619.179810471483506, 296629.543219751270954, 296639.906660597189330, 296650.270133008249104, 296660.633636983518954, 296670.997172521892935, 296681.360739622497931, 296691.724338284286205, 296702.087968506210018, 296712.451630287338048, 296722.815323626622558, 296733.179048523132224, 296743.542804975761101, 296753.906592983636074, 296764.270412545825820, 296774.634263661049772, 296784.998146328551229, 296795.362060547282454, 296805.726006316195708, 296816.089983634359669, 296826.453992500726599, 296836.818032914423384, 296847.182104874227662, 296857.546208379382733, 296867.910343428724445, 296878.274510021379683, 296888.638708156242501, 296899.002937832381576, 296909.367199048807379, 296919.731491804413963, 296930.095816098386422, 296940.460171929618809, 296950.824559297121596, 296961.188978200021666, 296971.553428637096658, 296981.917910607589874, 296992.282424110278953, 297002.646969144348986, 297013.011545708694030, 297023.376153802440967, 297033.740793424542062, 297044.105464573949575, 297054.470167249673977, 297064.834901450783946, 297075.199667176289950, 297085.564464425086044, 297095.929293196240906, 297106.294153488881420, 297116.659045301843435, 297127.023968634253833, 297137.388923484948464, 297147.753909853170626, 297158.118927737756167, 297168.483977137715556, 297178.849058052117471, 297189.214170479972381, 297199.579314420290757, 297209.944489872024860, 297220.309696834185161, 297230.674935305898543, 297241.040205286000855, 297251.405506773618981, 297261.770839767646976, 297272.136204267269932, 297282.501600271265488, 297292.867027778876945, 297303.232486788998358, 297313.597977300581988, 297323.963499312696513, 297334.329052824352402, 297344.694637834560126, 297355.060254342330154, 297365.425902346672956, 297375.791581846540794, 297386.157292841002345, 297396.523035329068080, 297406.888809309690259, 297417.254614781937562, 297427.620451744820457, 297437.986320197174791, 297448.352220138302073, 297458.718151567038149, 297469.084114482393488, 297479.450108883378562, 297489.816134769062046, 297500.182192138454411, 297510.548280990449712, 297520.914401324174833, 297531.280553138523828, 297541.646736432623584, 297552.012951205484569, 297562.379197455942631, 297572.745475183241069, 297583.111784386215732, 297593.478125063993502, 297603.844497215468436, 297614.210900839825626, 297624.577335935842711, 297634.943802502646577, 297645.310300539364107, 297655.676830044772942, 297666.043391018058173, 297676.409983458172064, 297686.776607364066876, 297697.143262734869495, 297707.509949569473974, 297717.876667867007200, 297728.243417626305018, 297738.610198846610729, 297748.977011526760180, 297759.343855665763840, 297769.710731262748595, 297780.077638316666707, 297790.444576826528646, 297800.811546791344881, 297811.178548210067675, 297821.545581081765704, 297831.912645405507647, 297842.279741180187557, 297852.646868404874112, 297863.014027078635991, 297873.381217200367246, 297883.748438769078348, 297894.115691783896182, 297904.482976243773010, 297914.850292147719301, 297925.217639494803734, 297935.585018283862155, 297945.952428514079656, 297956.319870184350293, 297966.687343293859158, 297977.054847841442097, 297987.422383826167788, 297997.789951247104909, 298008.157550103147514, 298018.525180393480696, 298028.892842116823886, 298039.260535272536799, 298049.628259859455284, 298059.996015876531601, 298070.363803322950844, 298080.731622197548859, 298091.099472499452531, 298101.467354227614123, 298111.835267381044105, 298122.203211958869360, 298132.571187959983945, 298142.939195383398328, 298153.307234228122979, 298163.675304493284784, 298174.043406177777797, 298184.411539280670695, 298194.779703800915740, 298205.147899737581611, 298215.516127089736983, 298225.884385856275912, 298236.252676036267076, 298246.620997628720943, 298256.989350632589776, 298267.357735047058668, 298277.726150870963465, 298288.094598103372846, 298298.463076743355487, 298308.831586789863650, 298319.200128241907805, 298329.568701098498423, 298339.937305358762387, 298350.305941021535546, 298360.674608085944783, 298371.043306551000569, 298381.412036415655166, 298391.780797679035459, 298402.149590340035502, 298412.518414397665765, 298422.887269851111341, 298433.256156699149869, 298443.625074940966442, 298453.994024575513322, 298464.363005601800978, 298474.732018018898088, 298485.101061825698707, 298495.470137021446135, 298505.839243604859803, 298516.208381575124804, 298526.577550931309815, 298536.946751672250684, 298547.315983797132503, 298557.685247304907534, 298568.054542194528040, 298578.423868465179112, 298588.793226115638390, 298599.162615145090967, 298609.532035552489106, 298619.901487336901482, 298630.270970497280359, 298640.640485032636207, 298651.010030942037702, 298661.379608224553522, 298671.749216879019514, 298682.118856904562563, 298692.488528300309554, 298702.858231065096334, 298713.227965197991580, 298723.597730698063970, 298733.967527564207558, 298744.337355795607436, 298754.707215391157661, 298765.077106349868700, 298775.447028670867439, 298785.816982353047933, 298796.186967395478860, 298806.556983797287103, 298816.927031557250302, 298827.297110674553551, 298837.667221148149110, 298848.037362977105659, 298858.407536160433665, 298868.777740697085392, 298879.147976586187724, 298889.518243826576509, 298899.888542417553253, 298910.258872357779182, 298920.629233646555804, 298930.999626282893587, 298941.370050265570171, 298951.740505593828857, 298962.110992266563699, 298972.481510282901581, 298982.852059641736560, 298993.222640342137311, 299003.593252383230720, 299013.963895763794426, 299024.334570483129937, 299034.705276540073100, 299045.076013933634385, 299055.446782662940677, 299065.817582726827823, 299076.188414124597330, 299086.559276855026837, 299096.930170917185023, 299107.301096310140565, 299117.672053032903932, 299128.043041084427387, 299138.414060463837814, 299148.785111170087475, 299159.156193202186842, 299169.527306559146382, 299179.898451240092982, 299190.269627243920695, 299200.640834569639992, 299211.012073216435965, 299221.383343183086254, 299231.754644468834158, 299242.125977072573733, 299252.497340993315447, 299262.868736230186187, 299273.240162782021798, 299283.611620648065582, 299293.983109827095177, 299304.354630318412092, 299314.726182120793965, 299325.097765233367682, 299335.469379655143712, 299345.841025385132525, 299356.212702422344591, 299366.584410765848588, 299376.956150414538570, 299387.327921367599629, 299397.699723623867612, 299408.071557182585821, 299418.443422042648308, 299428.815318203065544, 299439.187245662906207, 299449.559204421064351, 299459.931194476725068, 299470.303215828840621, 299480.675268476421479, 299491.047352418536320, 299501.419467654079199, 299511.791614182235207, 299522.163792002014816, 299532.536001112253871, 299542.908241512137465, 299553.280513200617861, 299563.652816176763736, 299574.025150439643767, 299584.397515988093801, 299594.769912821298931, 299605.142340938211419, 299615.514800337899942, 299625.887291019374970, 299636.259812981588766, 299646.632366223610006, 299657.004950744507369, 299667.377566543291323, 299677.750213618914131, 299688.122891970444471, 299698.495601596892811, 299708.868342497211415, 299719.241114670585375, 299729.613918115966953, 299739.986752832308412, 299750.359618818678427, 299760.732516074145678, 299771.105444597662427, 299781.478404388297349, 299791.851395445002709, 299802.224417766905390, 299812.597471352957655, 299822.970556202228181, 299833.343672313669231, 299843.716819686349481, 299854.089998319279402, 299864.463208211469464, 299874.836449362046551, 299885.209721769904718, 299895.583025434054434, 299905.956360353680793, 299916.329726527619641, 299926.703123955056071, 299937.076552634884138, 299947.450012566114310, 299957.823503747931682, 299968.197026179172099, 299978.570579859078862, 299988.944164786487818, 299999.317780960409436, 300009.691428380028810, 300020.065107044123579, 300030.438816952053457, 300040.812558102596086, 300051.186330494820140, 300061.560134127794299, 300071.933969000470825, 300082.307835111976601, 300092.681732461322099, 300103.055661047401372, 300113.429620869341306, 300123.803611926152371, 300134.177634216845036, 300144.551687740546186, 300154.925772496091668, 300165.299888482666574, 300175.674035699223168, 300186.048214144713711, 300196.422423818381503, 300206.796664719004184, 300217.170936845766846, 300227.545240197738167, 300237.919574773695786, 300248.293940572883002, 300258.668337594252080, 300269.042765836871695, 300279.417225299752317, 300289.791715981846210, 300300.166237882280257, 300310.540790999948513, 300320.915375334094279, 300331.289990883495193, 300341.664637647336349, 300352.039315624628216, 300362.414024814264849, 300372.788765215489548, 300383.163536827196367, 300393.538339648337569, 300403.913173678098246, 300414.288038915430661, 300424.662935359403491, 300435.037863008968998, 300445.412821863137651, 300455.787811921094544, 300466.162833181675524, 300476.537885644065682, 300486.912969307159074, 300497.288084170024376, 300507.663230231788475, 300518.038407491345424, 300528.413615947763901, 300538.788855600112583, 300549.164126447285526, 300559.539428488526028, 300569.914761722728144, 300580.290126148844138, 300590.665521766059101, 300601.040948573208880, 300611.416406569594983, 300621.791895754053257, 300632.167416125594173, 300642.542967683402821, 300652.918550426315051, 300663.294164353515953, 300673.669809463899583, 300684.045485756534617, 300694.421193230547942, 300704.796931884833612, 300715.172701718576718, 300725.548502730671316, 300735.924334920127876, 300746.300198286073282, 300756.676092827459797, 300767.052018543356098, 300777.427975432772655, 300787.803963494719937, 300798.179982728324831, 300808.556033132539596, 300818.932114706316497, 300829.308227448840626, 300839.684371358947828, 300850.060546435881406, 300860.436752678593621, 300870.812990085978527, 300881.189258657279424, 300891.565558391332161, 300901.941889287321828, 300912.318251344258897, 300922.694644560979214, 300933.071068936784286, 300943.447524470509961, 300953.824011161341332, 300964.200529008114245, 300974.577078009955585, 300984.953658165992238, 300995.330269475060049, 301005.706911936344113, 301016.083585548854899, 301026.460290311544668, 301036.837026223482098, 301047.213793283735868, 301057.590591491258238, 301067.967420845117886, 301078.344281344325282, 301088.721172988007311, 301099.098095775116235, 301109.475049704604317, 301119.852034775714856, 301130.229050987225492, 301140.606098338379525, 301150.983176828071009, 301161.360286455368623, 301171.737427219282836, 301182.114599118882325, 301192.491802153235767, 301202.869036321353633, 301213.246301622071769, 301223.623598054749891, 301234.000925618223846, 301244.378284311562311, 301254.755674133717548, 301265.133095083816443, 301275.510547160927672, 301285.888030363945290, 301296.265544692054391, 301306.643090144149028, 301317.020666719297878, 301327.398274416627828, 301337.775913235032931, 301348.153583173640072, 301358.531284231459722, 301368.909016407560557, 301379.286779700778425, 301389.664574110414833, 301400.042399635305628, 301410.420256274635904, 301420.798144027299713, 301431.176062892423943, 301441.554012868960854, 301451.931993955979124, 301462.310006152605638, 301472.688049457734451, 301483.066123870434240, 301493.444229389773682, 301503.822366014821455, 301514.200533744471613, 301524.578732577792834, 301534.956962513970211, 301545.335223551839590, 301555.713515690586064, 301566.091838929103687, 301576.470193266577553, 301586.848578701901715, 301597.226995234261267, 301607.605442862550262, 301617.983921585837379, 301628.362431403133087, 301638.740972313622478, 301649.119544316141400, 301659.498147409816738, 301669.876781593600754, 301680.255446866736747, 301690.634143228002358, 301701.012870676582679, 301711.391629211429972, 301721.770418831671122, 301732.149239536316600, 301742.528091324318666, 301752.906974194745999, 301763.285888146783691, 301773.664833179209381, 301784.043809291208163, 301794.422816481790505, 301804.801854750025086, 301815.180924094864167, 301825.560024515492842, 301835.939156010688748, 301846.318318579753395, 301856.697512221464422, 301867.076736935123336, 301877.455992719682399, 301887.835279573977459, 301898.214597497368231, 301908.593946488574147, 301918.973326546838507, 301929.352737671113573, 301939.732179860468023, 301950.111653113970533, 301960.491157430573367, 301970.870692809286993, 301981.250259249296505, 301991.629856749554165, 302002.009485309012234, 302012.389144926797599, 302022.768835601920728, 302033.148557333450299, 302043.528310120454989, 302053.908093961828854, 302064.287908856756985, 302074.667754804133438, 302085.047631803143304, 302095.427539852738846, 302105.807478951872326, 302116.187449099787045, 302126.567450295377057, 302136.947482537711039, 302147.327545825799461, 302157.707640158711001, 302168.087765535514336, 302178.467921955161728, 302188.848109416721854, 302199.228327919263393, 302209.608577461796813, 302219.988858043332584, 302230.369169662939385, 302240.749512319627684, 302251.129886012582574, 302261.510290740639903, 302271.890726502868347, 302282.271193298452999, 302292.651691126171499, 302303.032219985325355, 302313.412779874808621, 302323.793370793689974, 302334.173992741096299, 302344.554645715863444, 302354.935329717176501, 302365.316044744104147, 302375.696790795482229, 302386.077567870612256, 302396.458375968388282, 302406.839215087820776, 302417.220085227978416, 302427.600986387988087, 302437.981918566685636, 302448.362881763314363, 302458.743875976768322, 302469.124901206232607, 302479.505957450659480, 302489.887044709059410, 302500.268162980501074, 302510.649312264053151, 302521.030492558667902, 302531.411703863472212, 302541.792946177476551, 302552.174219499691390, 302562.555523829185404, 302572.936859164969064, 302583.318225506169256, 302593.699622851680033, 302604.081051200628281, 302614.462510552082676, 302624.844000904995482, 302635.225522258493584, 302645.607074611587450, 302655.988657963229343, 302666.370272312546149, 302676.751917658664752, 302687.133594000362791, 302697.515301336941775, 302707.897039667295758, 302718.278808990493417, 302728.660609305661637, 302739.042440611694474, 302749.424302907777019, 302759.806196192803327, 302770.188120465842076, 302780.570075726078358, 302790.952061972406227, 302801.334079203894362, 302811.716127419611439, 302822.098206618626136, 302832.480316799832508, 302842.862457962473854, 302853.244630105386022, 302863.626833227812313, 302874.009067328588571, 302884.391332407016307, 302894.773628461873159, 302905.155955492286012, 302915.538313497323543, 302925.920702476112638, 302936.303122427489143, 302946.685573350638151, 302957.068055244570132, 302967.450568108353764, 302977.833111940941308, 302988.215686741459649, 302998.598292508919258, 303008.980929242388811, 303019.363596940820571, 303029.746295603341423, 303040.129025228961837, 303050.511785816808697, 303060.894577365776058, 303071.277399874932598, 303081.660253343463410, 303092.043137770320754, 303102.426053154398687, 303112.808999494940508, 303123.191976790956687, 303133.574985041399486, 303143.958024245453998, 303154.341094401956070, 303164.724195510149002, 303175.107327568985056, 303185.490490577474702, 303195.873684534744825, 303206.256909439747687, 303216.640165291610174, 303227.023452089284547, 303237.406769831839483, 303247.790118518401869, 303258.173498147982173, 303268.556908719532657, 303278.940350232180208, 303289.323822684935294, 303299.707326076808386, 303310.090860406926367, 303320.474425674241502, 303330.858021877880674, 303341.241649016912561, 303351.625307090231217, 303362.008996097021736, 303372.392716036178172, 303382.776466906885616, 303393.160248708212748, 303403.544061438995413, 303413.927905098535120, 303424.311779685725924, 303434.695685199578293, 303445.079621639219113, 303455.463589003658853, 303465.847587291966192, 303476.231616503151599, 303486.615676636341959, 303496.999767690373119, 303507.383889664546587, 303517.768042557756416, 303528.152226369013079, 303538.536441097559873, 303548.920686742174439, 303559.304963302158285, 303569.689270776405465, 303580.073609163868241, 303590.457978463848121, 303600.842378675180953, 303611.226809796993621, 303621.611271828354802, 303631.995764768216759, 303642.380288615706377, 303652.764843369892333, 303663.149429029726889, 303673.534045594278723, 303683.918693062674720, 303694.303371433750726, 303704.688080706866458, 303715.072820880741347, 303725.457591954735108, 303735.842393927683588, 303746.227226798539050, 303756.612090566719417, 303766.996985230944119, 303777.381910790281836, 303787.766867243975867, 303798.151854590803850, 303808.536872830067296, 303818.921921960776672, 303829.307001981709618, 303839.692112892284058, 303850.077254691277631, 303860.462427377759013, 303870.847630950971507, 303881.232865409809165, 303891.618130753224250, 303902.003426980460063, 303912.388754090527073, 303922.774112082377542, 303933.159500955138355, 303943.544920707703568, 303953.930371339374688, 303964.315852848987561, 303974.701365235669073, 303985.086908498546109, 303995.472482636454515, 304005.858087648579385, 304016.243723534047604, 304026.629390291753225, 304037.015087920823134, 304047.400816420267802, 304057.786575789097697, 304068.172366026497912, 304078.558187131420709, 304088.944039102818351, 304099.329921939992346, 304109.715835641778540, 304120.101780207245611, 304130.487755635578651, 304140.873761925555300, 304151.259799076593481, 304161.645867087470833, 304172.031965957256034, 304182.418095685075969, 304192.804256269941106, 304203.190447710920125, 304213.576670007139910, 304223.962923157494515, 304234.349207160994411, 304244.735522016882896, 304255.121867724054027, 304265.508244281692896, 304275.894651688751765, 304286.281089944299310, 304296.667559047346003, 304307.054058997076936, 304317.440589792269748, 304327.827151432284154, 304338.213743916014209, 304348.600367242470384, 304358.987021410779562, 304369.373706419952214, 304379.760422269057017, 304390.147168957162648, 304400.533946483279578, 304410.920754846418276, 304421.307594045763835, 304431.694464080152102, 304442.081364948884584, 304452.468296650913544, 304462.855259185133036, 304473.242252550844569, 304483.629276746883988, 304494.016331772378180, 304504.403417626454029, 304514.790534308005590, 304525.177681816276163, 304535.564860150218010, 304545.952069308725186, 304556.339309291157406, 304566.726580096350517, 304577.113881723373197, 304587.501214171352331, 304597.888577439356595, 304608.275971526280046, 304618.663396431307774, 304629.050852153392043, 304639.438338691659737, 304649.825856045237742, 304660.213404212961905, 304670.600983194075525, 304680.988592987589072, 304691.376233592454810, 304701.763905007799622, 304712.151607232750393, 304722.539340266084764, 304732.927104107220657, 304743.314898754993919, 304753.702724208356813, 304764.090580466669053, 304774.478467528650071, 304784.866385393601377, 304795.254334060533438, 304805.642313528340310, 304816.030323796265293, 304826.418364863260649, 304836.806436728336848, 304847.194539390620776, 304857.582672849122901, 304867.970837102911901, 304878.359032151056454, 304888.747257992625237, 304899.135514626570512, 304909.523802052077372, 304919.912120268039871, 304930.300469273759518, 304940.688849068013951, 304951.077259649988264, 304961.465701018751133, 304971.854173173254821, 304982.242676112684421, 304992.631209835992195, 305003.019774342305027, 305013.408369630575180, 305023.796995699929539, 305034.185652549436782, 305044.574340178049169, 305054.963058584951796, 305065.351807769096922, 305075.740587729611434, 305086.129398465505801, 305096.518239975848701, 305106.907112259708811, 305117.296015316096600, 305127.684949143964332, 305138.073913742613513, 305148.462909110938199, 305158.851935248007067, 305169.240992152888793, 305179.630079824652057, 305190.019198262307327, 305200.408347464981489, 305210.797527431568597, 305221.186738161311951, 305231.575979653222021, 305241.965251906251069, 305252.354554919584189, 305262.743888692231849, 305273.133253223088104, 305283.522648511454463, 305293.912074556283187, 305304.301531356526539, 305314.691018911427818, 305325.080537219939288, 305335.470086281013209, 305345.859666093951091, 305356.249276657646988, 305366.638917971053161, 305377.028590033471119, 305387.418292843794916, 305397.808026401151437, 305408.197790704551153, 305418.587585753004532, 305428.977411545696668, 305439.367268081521615, 305449.757155359606259, 305460.147073379135691, 305470.537022139003966, 305480.927001638221554, 305491.317011876031756, 305501.707052851445042, 305512.097124563239049, 305522.487227010889910, 305532.877360193175264, 305543.267524109280203, 305553.657718758156989, 305564.047944138874300, 305574.438200250617228, 305584.828487092338037, 305595.218804663047194, 305605.609152961871587, 305615.999531987938099, 305626.389941740140785, 305636.780382217606530, 305647.170853419462219, 305657.561355344660114, 305667.951887992268894, 305678.342451361473650, 305688.733045451110229, 305699.123670260363724, 305709.514325788419228, 305719.905012033996172, 305730.295728996454272, 305740.686476674687583, 305751.077255067881197, 305761.468064174987376, 305771.858903995133005, 305782.249774527270347, 305792.640675770642702, 305803.031607724027708, 305813.422570386726875, 305823.813563757750671, 305834.204587836051360, 305844.595642620814033, 305854.986728111049160, 305865.377844305650797, 305875.768991203920450, 305886.160168804926798, 305896.551377107389271, 305906.942616110784002, 305917.333885813946836, 305927.725186215888243, 305938.116517315793317, 305948.507879112672526, 305958.899271605594549, 305969.290694793628063, 305979.682148675783537, 305990.073633251129650, 306000.465148518793285, 306010.856694477668498, 306021.248271126998588, 306031.639878465794027, 306042.031516493007075, 306052.423185207881033, 306062.814884609309956, 306073.206614696420729, 306083.598375468223821, 306093.990166923904326, 306104.381989062298089, 306114.773841882706620, 306125.165725384082180, 306135.557639565377031, 306145.949584425834473, 306156.341559964406770, 306166.733566180220805, 306177.125603072228841, 306187.517670639557764, 306197.909768881334458, 306208.301897796511184, 306218.694057384156622, 306229.086247643397655, 306239.478468573244754, 306249.870720172650181, 306260.263002440915443, 306270.655315376992803, 306281.047658979834523, 306291.440033248625696, 306301.832438182376791, 306312.224873780098278, 306322.617340040975250, 306333.009836964018177, 306343.402364548237529, 306353.794922792760190, 306364.187511696596630, 306374.580131258757319, 306384.972781478485558, 306395.365462354675401, 306405.758173886395525, 306416.150916072772816, 306426.543688912875950, 306436.936492405657191, 306447.329326550301630, 306457.722191345761530, 306468.115086791163776, 306478.508012885635253, 306488.900969628070015, 306499.293957017653156, 306509.686975053453352, 306520.080023734364659, 306530.473103059746791, 306540.866213028435595, 306551.259353639383335, 306561.652524892007932, 306572.045726785087027, 306582.438959317747504, 306592.832222489116248, 306603.225516298203729, 306613.618840744078625, 306624.012195825751405, 306634.405581542407162, 306644.798997892998159, 306655.192444876593072, 306665.585922492376994, 306675.979430739127565, 306686.372969616262708, 306696.766539122676477, 306707.160139257321134, 306717.553770019439980, 306727.947431408043485, 306738.341123422142118, 306748.734846060804557, 306759.128599323157687, 306769.522383208211977, 306779.916197715036105, 306790.310042842640541, 306800.703918590268586, 306811.097824956814293, 306821.491761941288132, 306831.885729542933404, 306842.279727760760579, 306852.673756593721919, 306863.067816041002516, 306873.461906101671048, 306883.856026774621569, 306894.250178059155587, 306904.644359954108950, 306915.038572458666749, 306925.432815571955871, 306935.827089292986784, 306946.221393620653544, 306956.615728554257657, 306967.010094092809595, 306977.404490235203411, 306987.798916980740614, 306998.193374328315258, 307008.587862277054228, 307018.982380826026201, 307029.376929974299856, 307039.771509720885660, 307050.166120064910501, 307060.560761005501263, 307070.955432541493792, 307081.350134672131389, 307091.744867396482732, 307102.139630713500082, 307112.534424622368533, 307122.929249122098554, 307133.324104211700615, 307143.718989890359808, 307154.113906157028396, 307164.508853010833263, 307174.903830450901296, 307185.298838476126548, 307195.693877085635904, 307206.088946278614458, 307216.484046054014470, 307226.879176410846412, 307237.274337348295376, 307247.669528865430038, 307258.064750961202662, 307268.460003634740133, 307278.855286885111127, 307289.250600711442530, 307299.645945112744812, 307310.041320087970234, 307320.436725636420306, 307330.832161756930873, 307341.227628448628820, 307351.623125710699242, 307362.018653542152606, 307372.414211941882968, 307382.809800909191836, 307393.205420443089679, 307403.601070542528760, 307413.996751206694171, 307424.392462434596382, 307434.788204225304071, 307445.183976577944122, 307455.579779491468798, 307465.975612965004984, 307476.371476997621357, 307486.767371588444803, 307497.163296736369375, 307507.559252440696582, 307517.955238700320479, 307528.351255514309742, 307538.747302881791256, 307549.143380801891908, 307559.539489273447543, 307569.935628295817878, 307580.331797867896967, 307590.727997988695279, 307601.124228657514323, 307611.520489873189945, 307621.916781634907238, 307632.313103941676673, 307642.709456792625133, 307653.105840186763089, 307663.502254123159219, 307673.898698600940406, 307684.295173619058914, 307694.691679176758043, 307705.088215272990055, 307715.484781906765420, 307725.881379077269230, 307736.278006783511955, 307746.674665024504066, 307757.071353799547069, 307767.468073107418604, 307777.864822947303765, 307788.261603318329435, 307798.658414219564293, 307809.055255649902392, 307819.452127608587034, 307829.849030094628688, 307840.245963107096031, 307850.642926645115949, 307861.039920707640704, 307871.436945293797180, 307881.834000402654056, 307892.231086033280008, 307902.628202184743714, 307913.025348856113851, 307923.422526046459097, 307933.819733754906338, 307944.216971980407834, 307954.614240722090472, 307965.011539979022928, 307975.408869750273880, 307985.806230034970213, 307996.203620832005981, 308006.601042140624486, 308016.998493959894404, 308027.395976288767997, 308037.793489126430359, 308048.191032471891958, 308058.588606324105058, 308068.986210682371166, 308079.383845545642544, 308089.781510912987869, 308100.179206783475820, 308110.576933156116866, 308120.974690030096099, 308131.372477404423989, 308141.770295278285630, 308152.168143650458660, 308162.566022520361003, 308172.963931886828505, 308183.361871748988051, 308193.759842105966527, 308204.157842956774402, 308214.555874300480355, 308224.953936136269476, 308235.352028462977614, 308245.750151279906277, 308256.148304586007725, 308266.546488380408846, 308276.944702662061900, 308287.342947430210188, 308297.741222683805972, 308308.139528421976138, 308318.537864643789362, 308328.936231348256115, 308339.334628534386866, 308349.733056201483123, 308360.131514348555356, 308370.530002974439412, 308380.928522078495007, 308391.327071659616195, 308401.725651716929860, 308412.124262249504682, 308422.522903256409336, 308432.921574736712500, 308443.320276689482853, 308453.719009113789070, 308464.117772008758038, 308474.516565373400226, 308484.915389206842519, 308495.314243508037180, 308505.713128276227508, 308516.112043510307558, 308526.510989209462423, 308536.909965372818988, 308547.308971999329515, 308557.708009088004474, 308568.107076638087165, 308578.506174648588058, 308588.905303118575830, 308599.304462047060952, 308609.703651433286723, 308620.102871276147198, 308630.502121574711055, 308640.901402328221593, 308651.300713535631076, 308661.700055195949972, 308672.099427308421582, 308682.498829871998169, 308692.898262885748409, 308703.297726348799188, 308713.697220260277390, 308724.096744619018864, 308734.496299424325116, 308744.895884675264824, 308755.295500370790251, 308765.695146510086488, 308776.094823092164006, 308786.494530115975067, 308796.894267580879387, 308807.294035485771019, 308817.693833829660434, 308828.093662611790933, 308838.493521831114776, 308848.893411486758851, 308859.293331577791832, 308869.693282103224192, 308880.093263062182814, 308890.493274453794584, 308900.893316277128179, 308911.293388531077653, 308921.693491214886308, 308932.093624327622820, 308942.493787868297659, 308952.893981836095918, 308963.294206229969859, 308973.694461048929952, 308984.094746292335913, 308994.495061958965380, 309004.895408048061654, 309015.295784558576997, 309025.696191489754710, 309036.096628840488847, 309046.497096609964501, 309056.897594797250349, 309067.298123401298653, 309077.698682421410922, 309088.099271856539417, 309098.499891705694608, 309108.900541968003381, 309119.301222642592620, 309129.701933728531003, 309140.102675224770792, 309150.503447130497079, 309160.904249444836751, 309171.305082166683860, 309181.705945295281708, 309192.106838829640765, 309202.507762768771499, 309212.908717111859005, 309223.309701857971959, 309233.710717006062623, 309244.111762555432506, 309254.512838504975662, 309264.913944853702560, 309275.315081600914709, 309285.716248745622579, 309296.117446286662016, 309306.518674223450944, 309316.919932554941624, 309327.321221280086320, 309337.722540398070123, 309348.123889908019919, 309358.525269808829762, 309368.926680099859368, 309379.328120779944584, 309389.729591848154087, 309400.131093303789385, 309410.532625145686325, 309420.934187373088207, 309431.335779985005502, 309441.737402980506886, 309452.139056358602829, 309462.540740118536633, 309472.942454259260558, 309483.344198779901490, 309493.745973679469898, 309504.147778957150877, 309514.549614611954894, 309524.951480642892420, 309535.353377049206756, 309545.755303829850163, 309556.157260983949527, 309566.559248510573525, 309576.961266408790834, 309587.363314677670132, 309597.765393316280097, 309608.167502323805820, 309618.569641699083149, 309628.971811441471800, 309639.374011549924035, 309649.776242023450322, 309660.178502861235756, 309670.580794062349014, 309680.983115625742357, 309691.385467550659087, 309701.787849836167879, 309712.190262481220998, 309722.592705484887119, 309732.995178846351337, 309743.397682564740535, 309753.800216638948768, 309764.202781068277545, 309774.605375851620920, 309785.008000988105778, 309795.410656476859003, 309805.813342316949274, 309816.216058507387061, 309826.618805047299247, 309837.021581935812719, 309847.424389171879739, 309857.827226754743606, 309868.230094683356583, 309878.632992956787348, 309889.035921574279200, 309899.438880534784403, 309909.841869837255217, 309920.244889481051359, 309930.647939465125091, 309941.051019788486883, 309951.454130450263619, 309961.857271449523978, 309972.260442785453051, 309982.663644456944894, 309993.066876463301014, 310003.470138803415466, 310013.873431476415135, 310024.276754481426906, 310034.680107817461248, 310045.083491483645048, 310055.486905479163397, 310065.890349802852143, 310076.293824453896377, 310086.697329431539401, 310097.100864734675270, 310107.504430362372659, 310117.908026313874871, 310128.311652588192374, 310138.715309184277430, 310149.118996101315133, 310159.522713338432368, 310169.926460894639604, 310180.330238768947311, 310190.734046960656997, 310201.137885468662716, 310211.541754292091355, 310221.945653430011589, 310232.349582881608512, 310242.753542645776179, 310253.157532721816096, 310263.561553108622320, 310273.965603805321734, 310284.369684811099432, 310294.773796124907676, 310305.177937745873351, 310315.582109673123341, 310325.986311905668117, 310336.390544442634564, 310346.794807283033151, 310357.199100426107179, 310367.603423870808911, 310378.007777616148815, 310388.412161661428399, 310398.816576005541719, 310409.221020647615660, 310419.625495586777106, 310430.030000822094735, 310440.434536352637224, 310450.839102177473251, 310461.243698295787908, 310471.648324706417043, 310482.052981408662163, 310492.457668401650153, 310502.862385684216861, 310513.267133255722001, 310523.671911115001421, 310534.076719261356629, 310544.481557693623472, 310554.886426411103457, 310565.291325412807055, 310575.696254697744735, 310586.101214265159797, 310596.506204114004504, 310606.911224243347533, 310617.316274652432185, 310627.721355340210721, 310638.126466305635404, 310648.531607548065949, 310658.936779066512827, 310669.341980859870091, 310679.747212927439250, 310690.152475268288981, 310700.557767881371547, 310710.963090765755624, 310721.368443920742720, 310731.773827345285099, 310742.179241038335022, 310752.584684999193996, 310762.990159226814285, 310773.395663720322773, 310783.801198478788137, 310794.206763501395471, 310804.612358786980622, 310815.017984334961511, 310825.423640144173987, 310835.829326213744935, 310846.235042542801239, 310856.640789130527992, 310867.046565975819249, 310877.452373077743687, 310887.858210435602814, 310898.264078048290685, 310908.669975914992392, 310919.075904034776613, 310929.481862406712025, 310939.887851029809099, 310950.293869903311133, 310960.699919026170392, 310971.105998397571966, 310981.512108016526327, 310991.918247882160358, 311002.324417993542738, 311012.730618349683937, 311023.136848949827254, 311033.543109792983159, 311043.949400878103916, 311054.355722204491030, 311064.762073771154974, 311075.168455577106215, 311085.574867621529847, 311095.981309903436340, 311106.387782421894372, 311116.794285176147241, 311127.200818165147211, 311137.607381387962960, 311148.013974843779579, 311158.420598531607538, 311168.827252450515516, 311179.233936599630397, 311189.640650978079066, 311200.047395584930200, 311210.454170419136062, 311220.860975479998160, 311231.267810766410548, 311241.674676277558319, 311252.081572012510151, 311262.488497970451135, 311272.895454150275327, 311283.302440551167820, 311293.709457172255497, 311304.116504012548830, 311314.523581071174704, 311324.930688347260002, 311335.337825839873403, 311345.744993547967169, 311356.152191470784601, 311366.559419607336167, 311376.966677956748754, 311387.373966518149246, 311397.781285290548112, 311408.188634273072239, 311418.596013464732096, 311429.003422864770982, 311439.410862472082954, 311449.818332285853103, 311460.225832305266522, 311470.633362529275473, 311481.040922956948634, 311491.448513587529305, 311501.856134419969749, 311512.263785453396849, 311522.671466686879285, 311533.079178119602147, 311543.486919750517700, 311553.894691578752827, 311564.302493603434414, 311574.710325823689345, 311585.118188238469884, 311595.526080846961122, 311605.934003648231737, 311616.341956641350407, 311626.749939825444017, 311637.157953199639451, 311647.565996762947179, 311657.974070514435880, 311668.382174453290645, 311678.790308578521945, 311689.198472889198456, 311699.606667384505272, 311710.014892063452862, 311720.423146925168112, 311730.831431968719698, 311741.239747193234507, 311751.648092597723007, 311762.056468181428500, 311772.464873943245038, 311782.873309882415924, 311793.281775997893419, 311803.690272288862616, 311814.098798754392192, 311824.507355393550824, 311834.915942205523606, 311845.324559189321008, 311855.733206343953498, 311866.141883668606170, 311876.550591162464116, 311886.959328824421391, 311897.368096653604880, 311907.776894649257883, 311918.185722810332663, 311928.594581135897897, 311939.003469625196885, 311949.412388277240098, 311959.821337090979796, 311970.230316065659281, 311980.639325200463645, 311991.048364494170528, 312001.457433946197852, 312011.866533555439673, 312022.275663321081083, 312032.684823242074344, 312043.094013317662757, 312053.503233546973206, 312063.912483928899746, 312074.321764462685678, 312084.731075147399679, 312095.140415982052218, 312105.549786965828389, 312115.959188097738661, 312126.368619376968127, 312136.778080802469049, 312147.187572373542935, 312157.597094089142047, 312168.006645948276855, 312178.416227950248867, 312188.825840093952138, 312199.235482378571760, 312209.645154803292826, 312220.054857367009390, 312230.464590069022961, 312240.874352908111177, 312251.284145883750170, 312261.693968994775787, 312272.103822240314912, 312282.513705619552638, 312292.923619131557643, 312303.333562775282189, 312313.743536550027784, 312324.153540454688482, 312334.563574488565791, 312344.973638650553767, 312355.383732939895708, 312365.793857355543878, 312376.204011896625161, 312386.614196562382858, 312397.024411351827439, 312407.434656263911165, 312417.844931297819130, 312428.255236452794634, 312438.665571727731731, 312449.075937121757306, 312459.486332633998245, 312469.896758263581432, 312480.307214009575546, 312490.717699871049263, 312501.128215847129468, 312511.538761936826631, 312521.949338139325846, 312532.359944453695789, 312542.770580879063345, 312553.181247414380778, 312563.591944058949593, 312574.002670811722055, 312584.413427671766840, 312594.824214638327248, 312605.235031710413750, 312615.645878887036815, 312626.056756167439744, 312636.467663550574798, 312646.878601035685278, 312657.289568621723447, 312667.700566307816189, 312678.111594093148597, 312688.522651976731140, 312698.933739957632497, 312709.344858035037760, 312719.756006208073813, 312730.167184475634713, 312740.578392836963758, 312750.989631291187834, 312761.400899837259203, 312771.812198474421166, 312782.223527201684192, 312792.634886018116958, 312803.046274922904558, 312813.457693915115669, 312823.869142993877176, 312834.280622158083133, 312844.692131407035049, 312855.103670739801601, 312865.515240155451465, 312875.926839653053321, 312886.338469231734052, 312896.750128890504129, 312907.161818628665060, 312917.573538445110898, 312927.985288339026738, 312938.397068309423048, 312948.808878355543129, 312959.220718476339243, 312969.632588670996483, 312980.044488938583527, 312990.456419278169051, 313000.868379688938148, 313011.280370169784874, 313021.692390720068943, 313032.104441338800825, 313042.516522024874575, 313052.928632777591702, 313063.340773596137296, 313073.752944479230791, 313084.165145426406525, 313094.577376436558552, 313104.989637508697342, 313115.401928642007988, 313125.814249835675582, 313136.226601088710595, 313146.638982400065288, 313157.051393769099377, 313167.463835194765124, 313177.876306676189415, 313188.288808212440927, 313198.701339802704751, 313209.113901445991360, 313219.526493141311221, 313229.939114888024051, 313240.351766685023904, 313250.764448531379458, 313261.177160426275805, 313271.589902368898038, 313282.002674358198419, 313292.415476393245626, 313302.828308473282959, 313313.241170597320888, 313323.654062764428090, 313334.066984973789658, 313344.479937224532478, 313354.892919515608810, 313365.305931846087333, 313375.718974215327762, 313386.132046622165944, 313396.545149065786973, 313406.958281545375939, 313417.371444059943315, 313427.784636608557776, 313438.197859190346207, 313448.611111804493703, 313459.024394450010732, 313469.437707125965971, 313479.851049831486307, 313490.264422565756831, 313500.677825327729806, 313511.091258116590325, 313521.504720931465272, 313531.918213771365117, 313542.331736635416746, 313552.745289522805251, 313563.158872432541102, 313573.572485363692977, 313583.986128315445967, 313594.399801286868751, 313604.813504277030006, 313615.227237285056617, 313625.641000310075469, 313636.054793351155240, 313646.468616407306399, 313656.882469477830455, 313667.296352561679669, 313677.710265657980926, 313688.124208765744697, 313698.538181884214282, 313708.952185012516566, 313719.366218149603810, 313729.780281294661108, 313740.194374446757138, 313750.608497605018783, 313761.022650768456515, 313771.436833936313633, 313781.851047107658815, 313792.265290281502530, 313802.679563457029872, 313813.093866633309517, 313823.508199809410144, 313833.922562984342221, 313844.336956157465465, 313854.751379327790346, 313865.165832494210918, 313875.580315656145103, 313885.994828812428750, 313896.409371962305158, 313906.823945104784798, 313917.238548239052761, 313927.653181364177726, 313938.067844479228370, 313948.482537583331577, 313958.897260675614234, 313969.312013755145017, 313979.726796820992604, 313990.141609872400295, 314000.556452908262145, 314010.971325927821454, 314021.386228930146899, 314031.801161914365366, 314042.216124879429117, 314052.631117824639659, 314063.046140749065671, 314073.461193651717622, 314083.876276531722397, 314094.291389388148673, 314104.706532220239751, 314115.121705026947893, 314125.536907807399984, 314135.952140560781118, 314146.367403286159970, 314156.782695982488804, 314167.198018649127334, 314177.613371285027824, 314188.028753889200743, 314198.444166461005807, 314208.859608999337070, 314219.275081503437832, 314229.690583972202148, 314240.106116404873319, 314250.521678800578229, 314260.937271158327349, 314271.352893477363978, 314281.768545756698586, 314292.184227995458059, 314302.599940192594659, 314313.015682347468100, 314323.431454458972439, 314333.847256526292767, 314344.263088548614178, 314354.678950524888933, 314365.094842454302125, 314375.510764335922431, 314385.926716168876737, 314396.342697952350136, 314406.758709685236681, 314417.174751366779674, 314427.590822996164206, 314438.006924572342541, 314448.423056094383355, 314458.839217561588157, 314469.255408972909208, 314479.671630327531602, 314490.087881624407601, 314500.504162862780504, 314510.920474041777197, 314521.336815160408150, 314531.753186217800248, 314542.169587213080376, 314552.586018145375419, 314563.002479013695847, 314573.418969817284960, 314583.835490555153228, 314594.252041226369329, 314604.668621830118354, 314615.085232365468983, 314625.501872831548098, 314635.918543227366172, 314646.335243552224711, 314656.751973805017769, 314667.168733984930441, 314677.585524091147818, 314688.002344122622162, 314698.419194078654982, 314708.836073958140332, 314719.252983760263305, 314729.669923484150786, 314740.086893128871452, 314750.503892693610396, 314760.920922177494504, 314771.337981579417828, 314781.755070898623671, 314792.172190134297125, 314802.589339285448659, 314813.006518351146951, 314823.423727330518886, 314833.840966222749557, 314844.258235026907641, 314854.675533742003608, 314865.092862367280759, 314875.510220901807770, 314885.927609344595112, 314896.345027694827877, 314906.762475951691158, 314917.179954114137217, 314927.597462181292940, 314938.015000152343418, 314948.432568026357330, 314958.850165802519768, 314969.267793479782995, 314979.685451057332102, 314990.103138534235768, 315000.520855909679085, 315010.938603182730731, 315021.356380352459382, 315031.774187418050133, 315042.192024378513452, 315052.609891233034432, 315063.027787980623543, 315073.445714620465878, 315083.863671151688322, 315094.281657573417760, 315104.699673884606455, 315115.117720084439497, 315125.535796172160190, 315135.953902146720793, 315146.372038007248193, 315156.790203752811067, 315167.208399382710923, 315177.626624895841815, 315188.044880291272420, 315198.463165568362456, 315208.881480726064183, 315219.299825763504487, 315229.718200679693837, 315240.136605473933741, 315250.555040145234670, 315260.973504692548886, 315271.391999115294311, 315281.810523412365001, 315292.229077582946047, 315302.647661626106128, 315313.066275540972129, 315323.484919326612726, 315333.903592982213013, 315344.322296506783459, 315354.741029899509158, 315365.159793159575202, 315375.578586285817437, 315385.997409277595580, 315396.416262133978307, 315406.835144854034297, 315417.254057436774019, 315427.672999881498981, 315438.091972187161446, 315448.510974352888297, 315458.930006377922837, 315469.349068261275534, 315479.768160002073273, 315490.187281599268317, 315500.606433052220382, 315511.025614359939937, 315521.444825521553867, 315531.864066536014434, 315542.283337402681354, 315552.702638120506890, 315563.121968688617926, 315573.541329106141347, 315583.960719372145832, 315594.380139485816471, 315604.799589446221944, 315615.219069252547342, 315625.638578903686721, 315636.058118398999795, 315646.477687737438828, 315656.897286918130703, 315667.316915940318722, 315677.736574802838732, 315688.156263505166862, 315698.575982046080753, 315708.995730424881913, 315719.415508640580811, 315729.835316692420747, 315740.255154579412192, 315750.675022300565615, 315761.094919855124317, 315771.514847242273390, 315781.934804460965097, 315792.354791510268115, 315802.774808389542159, 315813.194855097739492, 315823.614931633928791, 315834.035037997236941, 315844.455174186849035, 315854.875340201833751, 315865.295536041259766, 315875.715761704312172, 315886.136017190117855, 315896.556302497687284, 315906.976617626147345, 315917.396962574683130, 315927.817337342363317, 315938.237741928372998, 315948.658176331606228, 315959.078640551422723, 315969.499134586832952, 315979.919658436847385, 315990.340212100767531, 316000.760795577545650, 316011.181408866483252, 316021.602051966416184, 316032.022724876645952, 316042.443427596357651, 316052.864160124387126, 316063.284922460094094, 316073.705714602489024, 316084.126536550698802, 316094.547388303850312, 316104.968269861012232, 316115.389181221427862, 316125.810122383991256, 316136.231093347945716, 316146.652094112359919, 316157.073124676418956, 316167.494185039249714, 316177.915275199746247, 316188.336395157268271, 316198.757544910826255, 316209.178724459547084, 316219.599933802557644, 316230.021172938926611, 316240.442441867780872, 316250.863740588247310, 316261.285069099452812, 316271.706427400466055, 316282.127815490530338, 316292.549233368481509, 316302.970681033679284, 316313.392158485192340, 316323.813665722147562, 316334.235202743439004, 316344.656769548484590, 316355.078366136236582, 316365.499992505763657, 316375.921648656367324, 316386.343334587058052, 316396.765050296846312, 316407.186795784975402, 316417.608571050514001, 316428.030376092588995, 316438.452210910269059, 316448.874075502681080, 316459.295969869010150, 316469.717894008324947, 316480.139847919694148, 316490.561831602302846, 316500.983845055277925, 316511.405888277688064, 316521.827961268485524, 316532.250064027088229, 316542.672196552506648, 316553.094358843751252, 316563.516550899948925, 316573.938772720342968, 316584.361024303943850, 316594.783305649936665, 316605.205616757331882, 316615.627957625256386, 316626.050328252953477, 316636.472728639433626, 316646.895158783881925, 316657.317618685308844, 316667.740108342899475, 316678.162627755722497, 316688.585176922963001, 316699.007755843689665, 316709.430364517087582, 316719.853002942050807, 316730.275671117997263, 316740.698369043821003, 316751.121096718707122, 316761.543854141782504, 316771.966641312115826, 316782.389458228950389, 316792.812304891238455, 316803.235181298223324, 316813.658087448973674, 316824.081023342558183, 316834.503988978045527, 316844.926984354795422, 316855.350009471760131, 316865.773064328008331, 316876.196148922608700, 316886.619263254862744, 316897.042407323839143, 316907.465581128606573, 316917.888784668175504, 316928.312017941847444, 316938.735280948749278, 316949.158573687775061, 316959.581896158226300, 316970.005248359171674, 316980.428630289796274, 316990.852041949052364, 317001.275483336183242, 317011.698954450315796, 317022.122455290460493, 317032.545985855802428, 317042.969546145410277, 317053.393136158527341, 317063.816755894222297, 317074.240405351389199, 317084.664084529445972, 317095.087793427461293, 317105.511532044329215, 317115.935300379467662, 317126.359098431770690, 317136.782926200481597, 317147.206783684552647, 317157.630670883285347, 317168.054587795748375, 317178.478534421068616, 317188.902510758198332, 317199.326516806497239, 317209.750552564975806, 317220.174618032760918, 317230.598713208863046, 317241.022838092525490, 317251.446992682875134, 317261.871176978980657, 317272.295390979910735, 317282.719634684966877, 317293.143908093043137, 317303.568211203324609, 317313.992544015054591, 317324.416906527185347, 317334.841298738960177, 317345.265720649331342, 317355.690172257658560, 317366.114653562952299, 317376.539164564223029, 317386.963705260597635, 317397.388275651377626, 317407.812875735573471, 317418.237505512253847, 317428.662164980545640, 317439.086854139750358, 317449.511572988762055, 317459.936321526824031, 317470.361099752888549, 317480.785907666373532, 317491.210745266056620, 317501.635612551239319, 317512.060509521164931, 317522.485436174727511, 317532.910392511170357, 317543.335378529445734, 317553.760394228913356, 317564.185439608525485, 317574.610514667525422, 317585.035619404865429, 317595.460753819788806, 317605.885917911422439, 317616.311111678835005, 317626.736335121095181, 317637.161588237446267, 317647.586871026956942, 317658.012183488754090, 317668.437525621848181, 317678.862897425540723, 317689.288298898842186, 317699.713730040879454, 317710.139190850779414, 317720.564681327610742, 317730.990201470674947, 317741.415751278924290, 317751.841330751427449, 317762.266939887485933, 317772.692578686110210, 317783.118247146427166, 317793.543945267680101, 317803.969673048763070, 317814.395430488977581, 317824.821217587334104, 317835.247034343017731, 317845.672880755097140, 317856.098756822815631, 317866.524662545125466, 317876.950597921211738, 317887.376562950259540, 317897.802557631395757, 317908.228581963572651, 317918.654635946149938, 317929.080719578021672, 317939.506832858489361, 317949.932975786505267, 317960.359148361312691, 317970.785350581980310, 317981.211582447751425, 317991.637843957461882, 318002.064135110529605, 318012.490455906023271, 318022.916806342953350, 318033.343186420388520, 318043.769596137630288, 318054.196035493805539, 318064.622504487808328, 318075.049003118998371, 318085.475531386444345, 318095.902089289156720, 318106.328676826262381, 318116.755293997004628, 318127.181940800510347, 318137.608617235848214, 318148.035323302028701, 318158.462058998295106, 318168.888824323832523, 318179.315619277651422, 318189.742443858820479, 318200.169298066641204, 318210.596181900124066, 318221.023095358395949, 318231.450038440583739, 318241.877011145872530, 318252.304013473330997, 318262.731045422027819, 318273.158106991089880, 318283.585198179760482, 318294.012318987108301, 318304.439469412202016, 318314.866649454168510, 318325.293859112251084, 318335.721098385460209, 318346.148367272922769, 318356.575665773707442, 318367.002993887115736, 318377.430351612158120, 318387.857738947961479, 318398.285155893652700, 318408.712602448358666, 318419.140078611148056, 318429.567584381264169, 318439.995119757659268, 318450.422684739693068, 318460.850279326317832, 318471.277903516660444, 318481.705557309905998, 318492.133240705181379, 318502.560953701497056, 318512.988696298096329, 318523.416468494106084, 318533.844270288594998, 318544.272101680689957, 318554.699962669517845, 318565.127853254263755, 318575.555773433938157, 318585.983723207784351, 318596.411702574812807, 318606.839711534266826, 318617.267750085215084, 318627.695818226784468, 318638.123915957985446, 318648.552043278119527, 318658.980200186255388, 318669.408386681519914, 318679.836602762923576, 318690.264848429767881, 318700.693123681121506, 318711.121428516111337, 318721.549762933689635, 318731.978126933216117, 318742.406520513759460, 318752.834943674388342, 318763.263396414171439, 318773.691878732468467, 318784.120390628173482, 318794.548932100471575, 318804.977503148489632, 318815.406103771412745, 318825.834733968367800, 318836.263393738365266, 318846.692083080532029, 318857.120801994169597, 318867.549550478288438, 318877.978328532015439, 318888.407136154419277, 318898.835973344743252, 318909.264840102114249, 318919.693736425484531, 318930.122662314155605, 318940.551617767196149, 318950.980602783733048, 318961.409617362893187, 318971.838661503745243, 318982.267735205590725, 318992.696838467381895, 319003.125971288303845, 319013.555133667367045, 319023.984325603931211, 319034.413547096948605, 319044.842798145662528, 319055.272078749083448, 319065.701388906338252, 319076.130728616728447, 319086.560097879148088, 319096.989496692840476, 319107.418925056932494, 319117.848382970609237, 319128.277870432881173, 319138.707387442875188, 319149.136933999834582, 319159.566510102828033, 319169.996115750982426, 319180.425750943308230, 319190.855415679106954, 319201.285109957505483, 319211.714833777514286, 319222.144587138260249, 319232.574370038986672, 319243.004182478704024, 319253.434024456713814, 319263.863895971851889, 319274.293797023477964, 319284.723727610718925, 319295.153687732643448, 319305.583677388262004, 319316.013696576876100, 319326.443745297554415, 319336.873823549482040, 319347.303931331669446, 319357.734068643359933, 319368.164235483563971, 319378.594431851524860, 319389.024657746194862, 319399.454913166933693, 319409.885198112751823, 319420.315512582834344, 319430.745856576191727, 319441.176230092009064, 319451.606633129471447, 319462.037065687705763, 319472.467527765722480, 319482.898019362706691, 319493.328540477901697, 319503.759091110259760, 319514.189671258965973, 319524.620280923321843, 319535.050920102221426, 319545.481588794908021, 319555.912287000392098, 319566.343014718033373, 319576.773771946667694, 319587.204558685712982, 319597.635374934121501, 319608.066220691020135, 319618.497095955652185, 319628.928000727086328, 319639.358935004333034, 319649.789898786693811, 319660.220892073295545, 319670.651914863148704, 319681.082967155438382, 319691.514048949291464, 319701.945160243951250, 319712.376301038311794, 319722.807471331674606, 319733.238671123166569, 319743.669900411856361, 319754.101159196870867, 319764.532447477395181, 319774.963765252439771, 319785.395112521364354, 319795.826489283062983, 319806.257895536778960, 319816.689331281639170, 319827.120796516770497, 319837.552291241299827, 319847.983815454354044, 319858.415369155001827, 319868.846952342428267, 319879.278565015818458, 319889.710207174299285, 319900.141878816823009, 319910.573579942749348, 319921.005310551146977, 319931.437070641026367, 319941.868860211572610, 319952.300679262029007, 319962.732527791406028, 319973.164405798946973, 319983.596313283604104, 319994.028250244678929, 320004.460216681240126, 320014.892212592356373, 320025.324237977270968, 320035.756292835052591, 320046.188377164886333, 320056.620490965782665, 320067.052634236984886, 320077.484806977561675, 320087.917009186698124, 320098.349240863579325, 320108.781502007099334, 320119.213792616617866, 320129.646112691261806, 320140.078462230041623, 320150.510841232084204, 320160.943249696691055, 320171.375687622872647, 320181.808155009755865, 320192.240651856467593, 320202.673178162192926, 320213.105733926058747, 320223.538319147133734, 320233.970933824661188, 320244.403577957593370, 320254.836251545231789, 320265.268954586645123, 320275.701687081018463, 320286.134449027304072, 320296.567240424861666, 320307.000061272759922, 320317.432911570067517, 320327.865791315911338, 320338.298700509534683, 320348.731639149948023, 320359.164607236394659, 320369.597604767826851, 320380.030631743546110, 320390.463688162737526, 320400.896774024353363, 320411.329889327578712, 320421.763034071656875, 320432.196208255598322, 320442.629411878588144, 320453.062644939695019, 320463.495907438162249, 320473.929199373058509, 320484.362520743568894, 320494.795871548762079, 320505.229251787764952, 320515.662661459704395, 320526.096100563823711, 320536.529569099249784, 320546.963067064876668, 320557.396594460122287, 320567.830151283997111, 320578.263737535686232, 320588.697353214200120, 320599.130998318782076, 320609.564672848617192, 320619.998376802715939, 320630.432110180205200, 320640.865872980328277, 320651.299665202212054, 320661.733486844925210, 320672.167337907536421, 320682.601218389288988, 320693.035128289368004, 320703.469067606842145, 320713.903036340780091, 320724.337034490425140, 320734.771062054787762, 320745.205119033169467, 320755.639205424638931, 320766.073321228148416, 320776.507466443057638, 320786.941641068493482, 320797.375845103466418, 320807.810078547219746, 320818.244341398822144, 320828.678633657458704, 320839.112955322256312, 320849.547306392225437, 320859.981686866725795, 320870.416096744709648, 320880.850536025420297, 320891.285004707868211, 320901.719502791354898, 320912.154030274890829, 320922.588587157719303, 320933.023173438792583, 320943.457789117470384, 320953.892434192704968, 320964.327108663797844, 320974.761812529759482, 320985.196545789716765, 320995.631308442912996, 321006.066100488416851, 321016.500921925297007, 321026.935772752854973, 321037.370652970043011, 321047.805562576220836, 321058.240501570282504, 321068.675469951471314, 321079.110467718972359, 321089.545494871912524, 321099.980551409360487, 321110.415637330384925, 321120.850752634345554, 321131.285897320311051, 321141.721071387233678, 321152.156274834473152, 321162.591507660923526, 321173.026769866060931, 321183.462061448721215, 321193.897382408205885, 321204.332732743525412, 321214.768112453981303, 321225.203521538584027, 321235.638959996460471, 321246.074427826795727, 321256.509925028833095, 321266.945451601524837, 321277.381007544056047, 321287.816592855670024, 321298.252207535377238, 321308.687851582420990, 321319.123524995811749, 321329.559227774792816, 321339.994959918491077, 321350.430721425975207, 321360.866512296488509, 321371.302332529041450, 321381.738182122877333, 321392.174061077123042, 321402.609969390847255, 321413.045907063235063, 321423.481874093355145, 321433.917870480567217, 321444.353896223765332, 321454.789951322251000, 321465.226035774918273, 321475.662149581243284, 321486.098292740120087, 321496.534465250791982, 321506.970667112327646, 321517.406898323912174, 321527.843158884730656, 321538.279448793793563, 321548.715768050402403, 321559.152116653509438, 321569.588494602416176, 321580.024901896249503, 321590.461338534019887, 321600.897804514970630, 321611.334299838170409, 321621.770824502862524, 321632.207378508115653, 321642.643961853056680, 321653.080574536870699, 321663.517216558626387, 321673.953887917567044, 321684.390588612761348, 321694.827318643277977, 321705.264078008418437, 321715.700866707251407, 321726.137684738903772, 321736.574532102444209, 321747.011408797232434, 321757.448314822162502, 321767.885250176535919, 321778.322214859363157, 321788.759208869887516, 321799.196232207235880, 321809.633284870476928, 321820.070366858853959, 321830.507478171435650, 321840.944618807407096, 321851.381788765836973, 321861.818988045968581, 321872.256216646754183, 321882.693474567553494, 321893.130761807435192, 321903.568078365526162, 321914.005424240953289, 321924.442799432785250, 321934.880203940381762, 321945.317637762636878, 321955.755100898852106, 321966.192593348037917, 321976.630115109554026, 321987.067666182352696, 321997.505246565560810, 322007.942856258363463, 322018.380495260003954, 322028.818163569492754, 322039.255861186073162, 322049.693588108755648, 322060.131344336783513, 322070.569129869225435, 322081.006944705324713, 322091.444788844150025, 322101.882662284828257, 322112.320565026602708, 322122.758497068542056, 322133.196458409773186, 322143.634449049306568, 322154.072468986618333, 322164.510518220660742, 322174.948596750502475, 322185.386704575328622, 322195.824841694324277, 322206.263008106674533, 322216.701203811448067, 322227.139428807829972, 322237.577683094830718, 322248.015966671810020, 322258.454279537778348, 322268.892621691862587, 322279.330993133189622, 322289.769393861060962, 322300.207823874487076, 322310.646283172594849, 322321.084771754627582, 322331.523289619595744, 322341.961836766742636, 322352.400413195195142, 322362.839018904080149, 322373.277653892466333, 322383.716318159713410, 322394.155011704715434, 322404.593734526773915, 322415.032486624957528, 322425.471267998393159, 322435.910078646324109, 322446.348918567760848, 322456.787787762004882, 322467.226686228008475, 322477.665613965073135, 322488.104570972267538, 322498.543557248834986, 322508.982572793727741, 322519.421617606305517, 322529.860691685520578, 322540.299795030674431, 322550.738927640777547, 322561.178089515015017, 322571.617280652571935, 322582.056501052575186, 322592.495750714209862, 322602.935029636486433, 322613.374337818706408, 322623.813675259880256, 322634.253041959309485, 322644.692437915946357, 322655.131863129092380, 322665.571317597758025, 322676.010801321244799, 322686.450314298563171, 322696.889856528840028, 322707.329428011376876, 322717.769028745184187, 322728.208658729505260, 322738.648317963408772, 322749.088006446021609, 322759.527724176587071, 322769.967471154115628, 322780.407247377908789, 322790.847052846918814, 322801.286887560447212, 322811.726751517620869, 322822.166644717508461, 322832.606567159353290, 322843.046518842107616, 322853.486499765189365, 322863.926509927609004, 322874.366549328493420, 322884.806617966969498, 322895.246715842222329, 322905.686842953437008, 322916.126999299740419, 322926.567184880143031, 322937.007399694004562, 322947.447643740335479, 322957.887917018320877, 322968.328219527087640, 322978.768551265762653, 322989.208912233531009, 322999.649302429519594, 323010.089721852971707, 323020.530170502839610, 323030.970648378424812, 323041.411155478795990, 323051.851691803138237, 323062.292257350636646, 323072.732852120301686, 323083.173476111434866, 323093.614129323046654, 323104.054811754322145, 323114.495523404446431, 323124.936264272604603, 323135.377034357865341, 323145.817833659471944, 323156.258662176434882, 323166.699519907881040, 323177.140406853170134, 323187.581323011254426, 323198.022268381377216, 323208.463242962607183, 323218.904246754187625, 323229.345279755187221, 323239.786341964791063, 323250.227433382184245, 323260.668554006319027, 323271.109703836555127, 323281.550882872019429, 323291.992091111838818, 323302.433328554965556, 323312.874595200875774, 323323.315891048521735, 323333.757216097088531, 323344.198570345703047, 323354.639953793492168, 323365.081366439699195, 323375.522808283392806, 323385.964279323699884, 323396.405779559863731, 323406.847308990953024, 323417.288867616152856, 323427.730455434590112, 323438.172072445449885, 323448.613718647800852, 323459.055394040828105, 323469.497098623774946, 323479.938832395593636, 323490.380595355643891, 323500.822387502936181, 323511.264208836597390, 323521.706059355929028, 323532.147939059999771, 323542.589847947820090, 323553.031786018749699, 323563.473753271857277, 323573.915749706269708, 323584.357775321113877, 323594.799830115574878, 323605.241914088896010, 323615.684027240029536, 323626.126169568276964, 323636.568341072590556, 323647.010541752446443, 323657.452771606738679, 323667.895030634710565, 323678.337318835488986, 323688.779636208142620, 323699.221982752031181, 323709.664358466048725, 323720.106763349554967, 323730.549197401560377, 323740.991660621250048, 323751.434153007809073, 323761.876674560364336, 323772.319225278100930, 323782.761805160087533, 323793.204414205567446, 323803.647052413667552, 323814.089719783456530, 323824.532416314177681, 323834.975142004841473, 323845.417896854807623, 323855.860680863028392, 323866.303494028863497, 323876.746336351265199, 323887.189207829476800, 323897.632108462625183, 323908.075038249895442, 323918.517997190414462, 323928.960985283192713, 323939.404002527648117, 323949.847048922849353, 323960.290124467806891, 323970.733229161764029, 323981.176363003847655, 323991.619525993242860, 324002.062718129134737, 324012.505939410591964, 324022.949189836741425, 324033.392469406884629, 324043.835778119973838, 324054.279115975310560, 324064.722482972079888, 324075.165879109175876, 324085.609304386016447, 324096.052758801728487, 324106.496242355322465, 324116.939755045983475, 324127.383296872954816, 324137.826867835363373, 324148.270467932277825, 324158.714097162941471, 324169.157755526364781, 324179.601443021907471, 324190.045159648638219, 324200.488905405625701, 324210.932680292055011, 324221.376484307111241, 324231.820317449979484, 324242.264179719728418, 324252.708071115543135, 324263.151991636550520, 324273.595941281993873, 324284.039920051000081, 324294.483927942637820, 324304.927964956092183, 324315.372031090490054, 324325.816126345132943, 324336.260250718973111, 324346.704404211312067, 324357.148586821218487, 324367.592798547877464, 324378.037039390415885, 324388.481309348018840, 324398.925608419813216, 324409.369936604867689, 324419.814293902600184, 324430.258680311904754, 324440.703095832024701, 324451.147540462086909, 324461.592014201276470, 324472.036517048720270, 324482.481049003603403, 324492.925610065110959, 324503.370200232311618, 324513.814819504332263, 324524.259467880474404, 324534.704145359690301, 324545.148851941397879, 324555.593587624432985, 324566.038352408213541, 324576.483146291750018, 324586.927969274343923, 324597.372821354889311, 324607.817702532745898, 324618.262612807040568, 324628.707552176900208, 324639.152520641451702, 324649.597518199880142, 324660.042544851312414, 324670.487600594933610, 324680.932685429928824, 324691.377799355424941, 324701.822942370548844, 324712.268114474369213, 324722.713315666187555, 324733.158545945188962, 324743.603805310325697, 324754.049093760957476, 324764.494411296094768, 324774.939757915039081, 324785.385133616800886, 324795.830538400565274, 324806.275972265459131, 324816.721435210783966, 324827.166927235550247, 324837.612448339001276, 324848.057998520263936, 324858.503577778348699, 324868.949186112615280, 324879.394823522190563, 324889.840490006201435, 324900.286185563716572, 324910.731910193921067, 324921.177663896116428, 324931.623446669313125, 324942.069258512638044, 324952.515099425276276, 324962.960969406529330, 324973.406868455407675, 324983.852796571038198, 324994.298753752722405, 325004.744739999412559, 325015.190755310468376, 325025.636799684958532, 325036.082873122009914, 325046.528975620807614, 325056.975107180478517, 325067.421267800207715, 325077.867457479180302, 325088.313676216523163, 325098.759924011363182, 325109.206200862827245, 325119.652506770158652, 325130.098841732542496, 325140.545205748989247, 325150.991598818742204, 325161.438020940928254, 325171.884472114790697, 325182.330952339398209, 325192.777461613935884, 325203.223999937472399, 325213.670567309309263, 325224.117163728573360, 325234.563789194333367, 325245.010443705832586, 325255.457127262139693, 325265.903839862439781, 325276.350581506034359, 325286.797352191875689, 325297.244151919207070, 325307.690980687155388, 325318.137838494963944, 325328.584725341701414, 325339.031641226552892, 325349.478586148645263, 325359.925560107163619, 325370.372563101293053, 325380.819595130160451, 325391.266656192950904, 325401.713746288791299, 325412.160865416750312, 325422.608013576129451, 325433.055190766113810, 325443.502396985713858, 325453.949632234114688, 325464.396896510559600, 325474.844189814117271, 325485.291512144147418, 325495.738863499485888, 325506.186243879434187, 325516.633653283235617, 325527.081091710017063, 325537.528559158847202, 325547.976055628969334, 325558.423581119393930, 325568.871135629480705, 325579.318719158356544, 325589.766331705031916, 325600.213973268808331, 325610.661643848754466, 325621.109343444055412, 325631.557072053896263, 325642.004829677403904, 325652.452616313763428, 325662.900431962159928, 325673.348276621662080, 325683.796150291454978, 325694.244052970781922, 325704.691984658711590, 325715.139945354370866, 325725.587935057061259, 325736.035953765851445, 325746.484001479926519, 325756.932078198296949, 325767.380183920322452, 325777.828318645129912, 325788.276482371788006, 325798.724675099540036, 325809.172896827512886, 325819.621147554833442, 325830.069427280686796, 325840.517736004316248, 325850.966073724732269, 325861.414440441178158, 325871.862836152664386, 325882.311260858608875, 325892.759714558080304, 325903.208197250089142, 325913.656708933995105, 325924.105249608808663, 325934.553819273831323, 325945.002417928131763, 325955.451045570836868, 325965.899702201131731, 325976.348387818259653, 325986.797102421231102, 325997.245846009405795, 326007.694618581735995, 326018.143420137406792, 326028.592250675777905, 326039.041110195859801, 326049.489998696837574, 326059.938916177779902, 326070.387862637930084, 326080.836838076531421, 326091.285842492652591, 326101.734875885420479, 326112.183938254078384, 326122.633029597694986, 326133.082149915513583, 326143.531299206661060, 326153.980477470264304, 326164.429684705624823, 326174.878920911636669, 326185.328186087659560, 326195.777480232878588, 326206.226803346420638, 326216.676155427412596, 326227.125536474864930, 326237.574946488253772, 326248.024385466473177, 326258.473853408882860, 326268.923350314551499, 326279.372876182547770, 326289.822431012231391, 326300.272014802612830, 326310.721627552935388, 326321.171269262267742, 326331.620939929794986, 326342.070639554818626, 326352.520368136349134, 326362.970125673571602, 326373.419912165729329, 326383.869727611832786, 326394.319572011125274, 326404.769445362850092, 326415.219347666075919, 326425.669278920046054, 326436.119239123712759, 326446.569228276493959, 326457.019246377458330, 326467.469293425674550, 326477.919369420444127, 326488.369474360835738, 326498.819608246034477, 326509.269771075225435, 326519.719962847593706, 326530.170183562207967, 326540.620433218311518, 326551.070711815031245, 326561.521019351552241, 326571.971355827059597, 326582.421721240680199, 326592.872115591540933, 326603.322538878826890, 326613.772991101723164, 326624.223472259473056, 326634.673982351087034, 326645.124521375750192, 326655.575089332705829, 326666.025686221080832, 326676.476312040060293, 326686.926966788771097, 326697.377650466340128, 326707.828363072010688, 326718.279104604967870, 326728.729875064280350, 326739.180674449191429, 326749.631502758769784, 326760.082359992258716, 326770.533246148785111, 326780.984161227534059, 326791.435105227690656, 326801.886078148265369, 326812.337079988676123, 326822.788110747875180, 326833.239170425164048, 326843.690259019669611, 326854.141376530402340, 326864.592522956838366, 326875.043698297871742, 326885.494902552745771, 326895.946135720645543, 326906.397397800697945, 326916.848688792088069, 326927.300008694117423, 326937.751357505680062, 326948.202735226135701, 326958.654141854611225, 326969.105577390117105, 326979.557041832129471, 326990.008535179484170, 327000.460057431657333, 327010.911608587543014, 327021.363188646384515, 327031.814797607425135, 327042.266435469849966, 327052.718102232669480, 327063.169797895185184, 327073.621522456407547, 327084.073275915696286, 327094.525058272178285, 327104.976869524864014, 327115.428709673113190, 327125.880578715878073, 327136.332476652460173, 327146.784403482102789, 327157.236359203874599, 327167.688343816902488, 327178.140357320313342, 327188.592399713408668, 327199.044470995373558, 327209.496571165218484, 327219.948700222186744, 327230.400858165463433, 327240.853044994233642, 327251.305260707566049, 327261.757505304703955, 327272.209778784774244, 327282.662081146962009, 327293.114412390452344, 327303.566772514372133, 327314.019161517964676, 327324.471579400356859, 327334.924026160559151, 327345.376501797989476, 327355.829006311658304, 327366.281539700808935, 327376.734101964510046, 327387.186693102063145, 327397.639313112478703, 327408.091961995058227, 327418.544639748928603, 327428.997346373216715, 327439.450081867107656, 327449.902846229728311, 327460.355639460380189, 327470.808461558131967, 327481.261312522168737, 327491.714192351559177, 327502.167101045604795, 327512.620038603432477, 327523.073005024285521, 327533.526000307116192, 327543.979024451342411, 327554.432077455916442, 327564.885159320197999, 327575.338270043197554, 327585.791409624158405, 327596.244578062265646, 327606.697775356529746, 327617.151001506310422, 327627.604256510792766, 327638.057540368987247, 327648.510853080137167, 327658.964194643427618, 327669.417565057927277, 327679.870964322995860, 327690.324392437585630, 327700.777849401056301, 327711.231335212418344, 327721.684849870856851, 327732.138393375673331, 327742.591965725936461, 327753.045566920831334, 327763.499196959543042, 327773.952855841140263, 327784.406543564924505, 327794.860260130022652, 327805.314005535561591, 327815.767779780726414, 327826.221582864702214, 327836.675414786674082, 327847.129275545827113, 327857.583165141229983, 327868.037083572067786, 327878.491030837642029, 327888.945006937021390, 327899.399011869332753, 327909.853045633819420, 327920.307108229724690, 327930.761199656000827, 327941.215319911949337, 327951.669468996697105, 327962.123646909545641, 327972.577853649505414, 327983.032089215819724, 327993.486353607615456, 328003.940646824077703, 328014.394968864391558, 328024.849319727742113, 328035.303699413256254, 328045.758107920119073, 328056.212545247515664, 328066.667011394572910, 328077.121506360534113, 328087.576030144526158, 328098.030582745675929, 328108.485164163168520, 328118.939774396247230, 328129.394413444038946, 328139.849081305670552, 328150.303777980385348, 328160.758503467252012, 328171.213257765572052, 328181.668040874414146, 328192.122852793021593, 328202.577693520463072, 328213.032563056040090, 328223.487461398763116, 328233.942388548050076, 328244.397344502736814, 328254.852329262299463, 328265.307342825690284, 328275.762385192210786, 328286.217456360987853, 328296.672556331206579, 328307.127685101993848, 328317.582842672592960, 328328.038029042072594, 328338.493244209676050, 328348.948488174588419, 328359.403760935994796, 328369.859062492963858, 328380.314392844680697, 328390.769751990388613, 328401.225139929330908, 328411.680556660518050, 328422.136002183193341, 328432.591476496483665, 328443.046979599574115, 328453.502511491707992, 328463.958072172012180, 328474.413661639613565, 328484.869279893755447, 328495.324926933506504, 328505.780602758168243, 328516.236307366809342, 328526.692040758673102, 328537.147802932944614, 328547.603593888634350, 328558.059413625043817, 328568.515262141416315, 328578.971139436820522, 328589.427045510383323, 328599.882980361464433, 328610.338943988899700, 328620.794936392223462, 328631.250957570446189, 328641.707007522752974, 328652.163086248328909, 328662.619193746184465, 328673.075330015795771, 328683.531495056115091, 328693.987688866385724, 328704.443911445734557, 328714.900162793463096, 328725.356442908581812, 328735.812751790334005, 328746.269089437846560, 328756.725455850420985, 328767.181851027067751, 328777.638274967088364, 328788.094727669551503, 328798.551209133700468, 328809.007719358778559, 328819.464258343738038, 328829.920826087880414, 328840.377422590507194, 328850.834047850628849, 328861.290701867430471, 328871.747384640038945, 328882.204096167813987, 328892.660836449649651, 328903.117605485022068, 328913.574403272999916, 328924.031229812593665, 328934.488085103221238, 328944.944969143834896, 328955.401881933736149, 328965.858823472110089, 328976.315793758141808, 328986.772792790841777, 328997.229820569569711, 329007.686877093394287, 329018.143962361558806, 329028.601076373131946, 329039.058219127415214, 329049.515390623593703, 329059.972590860619675, 329070.429819837911054, 329080.887077554536518, 329091.344364009681158, 329101.801679202588275, 329112.259023132326547, 329122.716395797964651, 329133.173797198978718, 329143.631227334437426, 329154.088686203351244, 329164.546173805021681, 329175.003690138633829, 329185.461235203314573, 329195.918808998249006, 329206.376411522680428, 329216.834042775677517, 329227.291702756541781, 329237.749391464283690, 329248.207108898146544, 329258.664855057373643, 329269.122629941091873, 329279.580433548544534, 329290.038265878683887, 329300.496126930927858, 329310.954016704345122, 329321.411935198120773, 329331.869882411439903, 329342.327858343487605, 329352.785862993448973, 329363.243896360450890, 329373.701958443678450, 329384.160049242316745, 329394.618168755550869, 329405.076316982507706, 329415.534493922488764, 329425.992699574562721, 329436.450933937914670, 329446.909197011729702, 329457.367488795251120, 329467.825809287489392, 329478.284158487804234, 329488.742536395322531, 329499.200943009054754, 329509.659378328477032, 329520.117842352425214, 329530.576335080317222, 329541.034856511338148, 329551.493406644556671, 329561.951985479157884, 329572.410593014385086, 329582.869229249248747, 329593.327894183108583, 329603.786587815091480, 329614.245310144382529, 329624.704061170108616, 329635.162840891513042, 329645.621649307606276, 329656.080486417806242, 329666.539352221239824, 329676.998246716917492, 329687.457169904140756, 329697.916121782036498, 329708.375102349789813, 329718.834111606702209, 329729.293149551784154, 329739.752216184278950, 329750.211311503371689, 329760.670435508131050, 329771.129588197916746, 329781.588769571855664, 329792.047979629016481, 329802.507218368700705, 329812.966485789977014, 329823.425781892088708, 329833.885106674220879, 329844.344460135500412, 329854.803842275228817, 329865.263253092474770, 329875.722692586306948, 329886.182160756143276, 329896.641657600994222, 329907.101183120161295, 329917.560737312713172, 329928.020320177834947, 329938.479931714711711, 329948.939571922644973, 329959.399240800703410, 329969.858938348013908, 329980.318664563877974, 329990.778419447306078, 330001.238202997657936, 330011.698015214060433, 330022.157856095640454, 330032.617725641641300, 330043.077623851131648, 330053.537550723354798, 330063.997506257612258, 330074.457490452856291, 330084.917503308388405, 330095.377544823451899, 330105.837614997057244, 330116.297713828447741, 330126.757841316983104, 330137.217997461615596, 330147.678182261530310, 330158.138395716028754, 330168.598637824121397, 330179.058908585226163, 330189.519207998353522, 330199.979536062804982, 330210.439892777591012, 330220.900278142013121, 330231.360692155139986, 330241.821134816331323, 330252.281606124655809, 330262.742106079240330, 330273.202634679328185, 330283.663191924104467, 330294.123777812696062, 330304.584392344346270, 330315.045035518298391, 330325.505707333562896, 330335.966407789441291, 330346.427136885060463, 330356.887894619547296, 330367.348680992203299, 330377.809496002213564, 330388.270339648646768, 330398.731211930746213, 330409.192112847580574, 330419.653042398509569, 330430.114000582660083, 330440.574987399158999, 330451.036002847191412, 330461.497046926058829, 330471.958119634713512, 330482.419220972515177, 330492.880350938590709, 330503.341509532125201, 330513.802696752303746, 330524.263912598311435, 330534.725157069275156, 330545.186430164379999, 330555.647731882927474, 330566.109062224044465, 330576.570421186799649, 330587.031808770552743, 330597.493224974197801, 330607.954669797269162, 330618.416143238777295, 330628.877645297907293, 330639.339175973844249, 330649.800735265656840, 330660.262323172762990, 330670.723939694173168, 330681.185584829130676, 330691.647258576762397, 330702.108960936369840, 330712.570691906963475, 330723.032451487844810, 330733.494239678198937, 330743.956056477094535, 330754.417901883891318, 330764.879775897657964, 330775.341678517521359, 330785.803609742724802, 330796.265569572511595, 330806.727558006008621, 330817.189575042400975, 330827.651620680815540, 330838.113694920495618, 330848.575797760684509, 330859.037929200392682, 330869.500089238979854, 330879.962277875572909, 330890.424495109240524, 330900.886740939284209, 330911.349015364889055, 330921.811318385181949, 330932.273649999406189, 330942.736010206688661, 330953.198399006214458, 330963.660816397168674, 330974.123262378736399, 330984.585736950160936, 330995.048240110569168, 331005.510771859146189, 331015.973332195018884, 331026.435921117488761, 331036.898538625682704, 331047.361184718844015, 331057.823859395983163, 331068.286562656459864, 331078.749294499284588, 331089.212054923875257, 331099.674843929242343, 331110.137661514570937, 331120.600507679162547, 331131.063382422085851, 331141.526285742525943, 331151.989217639726121, 331162.452178112871479, 331172.915167161088903, 331183.378184783621691, 331193.841230979596730, 331204.304305748140905, 331214.767409088672139, 331225.230541000142694, 331235.693701481912285, 331246.156890532991383, 331256.620108152681496, 331267.083354339993093, 331277.546629094402306, 331288.009932414861396, 331298.473264300671872, 331308.936624750960618, 331319.400013764854521, 331329.863431341596879, 331340.326877480489202, 331350.790352180600166, 331361.253855441056658, 331371.717387261218391, 331382.180947640037630, 331392.644536576874088, 331403.108154070854653, 331413.571800121222623, 331424.035474727046676, 331434.499177887628321, 331444.962909602036234, 331455.426669869513717, 331465.890458689245861, 331476.354276060475968, 331486.818121982330922, 331497.281996453995816, 331507.745899474597536, 331518.209831043437589, 331528.673791159584653, 331539.137779822340235, 331549.601797030831221, 331560.065842784242705, 331570.529917081759777, 331580.994019922509324, 331591.458151305792853, 331601.922311230737250, 331612.386499696585815, 331622.850716702465434, 331633.314962247502990, 331643.779236330883577, 331654.243538951908704, 331664.707870109821670, 331675.172229803574737, 331685.636618032527622, 331696.101034795807209, 331706.565480092540383, 331717.029953922028653, 331727.494456283457112, 331737.958987175894435, 331748.423546598642133, 331758.888134550885297, 331769.352751031634398, 331779.817396040249150, 331790.282069575856440, 331800.746771637757774, 331811.211502224963624, 331821.676261336775497, 331832.141048972203862, 331842.605865130724851, 331853.070709811348934, 331863.535583013261203, 331874.000484735704958, 331884.465414977748878, 331894.930373738752678, 331905.395361017785035, 331915.860376814089250, 331926.325421126734000, 331936.790493955079000, 331947.255595298251137, 331957.720725155319087, 331968.185883525642566, 331978.651070408348460, 331989.116285802563652, 331999.581529707531445, 332010.046802122436929, 332020.512103046406992, 332030.977432478743140, 332041.442790418572258, 332051.908176865079440, 332062.373591817449778, 332072.839035274810158, 332083.304507236520294, 332093.770007701474242, 332104.235536669206340, 332114.701094138668850, 332125.166680109221488, 332135.632294579874724, 332146.097937549871858, 332156.563609018397983, 332167.029308984754607, 332177.495037448010407, 332187.960794407408684, 332198.426579862076323, 332208.892393811256625, 332219.358236254076473, 332229.824107189779170, 332240.290006617549807, 332250.755934536573477, 332261.221890946035273, 332271.687875845120288, 332282.153889233013615, 332292.619931108842138, 332303.086001471907366, 332313.552100321394391, 332324.018227656430099, 332334.484383476199582, 332344.950567779887933, 332355.416780566680245, 332365.883021835936233, 332376.349291586549953, 332386.815589817997534, 332397.281916529173031, 332407.748271719494369, 332418.214655388088431, 332428.681067534198519, 332439.147508156893309, 332449.613977255357895, 332460.080474828893784, 332470.547000876686070, 332481.013555397803430, 332491.480138391489163, 332501.946749857044779, 332512.413389793538954, 332522.880058200156782, 332533.346755076199770, 332543.813480420620181, 332554.280234232894145, 332564.747016512032133, 332575.213827257335652, 332585.680666467931587, 332596.147534142946824, 332606.614430281624664, 332617.081354883150198, 332627.548307946824934, 332638.015289471717551, 332648.482299456954934, 332658.949337901955005, 332669.416404805611819, 332679.883500167401507, 332690.350623986276332, 332700.817776261654217, 332711.284956992545631, 332721.752166178193875, 332732.219403817842249, 332742.686669910501223, 332753.153964455646928, 332763.621287452231627, 332774.088638899615034, 332784.556018796865828, 332795.023427143227309, 332805.490863937768154, 332815.958329179906286, 332826.425822868652176, 332836.893345003307331, 332847.360895582998637, 332857.828474606969394, 332868.296082074230071, 332878.763717984256800, 332889.231382336060051, 332899.699075128883123, 332910.166796361911111, 332920.634546034329105, 332931.102324145263992, 332941.570130693959072, 332952.037965679657646, 332962.505829101544805, 332972.973720958747435, 332983.441641250508837, 332993.909589976014104, 333004.377567134273704, 333014.845572724821977, 333025.313606746611185, 333035.781669198942836, 333046.249760080885608, 333056.717879391799215, 333067.186027130694129, 333077.654203296930064, 333088.122407889575697, 333098.590640907874331, 333109.058902350952849, 333119.527192218112759, 333129.995510508539155, 333140.463857221242506, 333150.932232355698943, 333161.400635910918936, 333171.869067886087578, 333182.337528280506376, 333192.806017093185801, 333203.274534323485568, 333213.743079970590770, 333224.211654033628292, 333234.680256511783227, 333245.148887404357083, 333255.617546710418537, 333266.086234429152682, 333276.554950559802819, 333287.023695101554040, 333297.492468053649645, 333307.961269415274728, 333318.430099185614381, 333328.898957363737281, 333339.367843948944937, 333349.836758940422442, 333360.305702337354887, 333370.774674138985574, 333381.243674344441388, 333391.712702952965628, 333402.181759963626973, 333412.650845375785138, 333423.119959188567009, 333433.589101401099470, 333444.058272012742236, 333454.527471022563986, 333464.996698429749813, 333475.465954233426601, 333485.935238433012273, 333496.404551027517300, 333506.873892016184982, 333517.343261398316827, 333527.812659172923304, 333538.282085339247715, 333548.751539896533359, 333559.221022843965329, 333569.690534180786926, 333580.160073906066827, 333590.629642019048333, 333601.099238519032951, 333611.568863405031152, 333622.038516676286235, 333632.508198332157917, 333642.977908371714875, 333653.447646794083994, 333663.917413598624989, 333674.387208784348331, 333684.857032350555528, 333695.326884296489879, 333705.796764621220063, 333716.266673324047588, 333726.736610404099338, 333737.206575860560406, 333747.676569692674093, 333758.146591899683699, 333768.616642480599694, 333779.086721434840001, 333789.556828761473298, 333800.026964459684677, 333810.497128528775647, 333820.967320967756677, 333831.437541775987484, 333841.907790952653158, 333852.378068496880587, 333862.848374407854863, 333873.318708684877492, 333883.789071326958947, 333894.259462333517149, 333904.729881703620777, 333915.200329436454922, 333925.670805531262886, 333936.141309987229761, 333946.611842803540640, 333957.082403979380615, 333967.552993513876572, 333978.023611406446435, 333988.494257656100672, 333998.964932262082584, 334009.435635223577265, 334019.906366539711598, 334030.377126209845301, 334040.847914233105257, 334051.318730608676560, 334061.789575335686095, 334072.260448413435370, 334082.731349841051269, 334093.202279617718887, 334103.673237742739730, 334114.144224215240683, 334124.615239034465048, 334135.086282199539710, 334145.557353709649760, 334156.028453564038500, 334166.499581761832815, 334176.970738302392419, 334187.441923184727784, 334197.913136408198625, 334208.384377971931826, 334218.855647875054274, 334229.326946116751060, 334239.798272696440108, 334250.269627613073681, 334260.741010866011493, 334271.212422454380430, 334281.683862377307378, 334292.155330634152051, 334302.626827223924920, 334313.098352145985700, 334323.569905399519484, 334334.041486983594950, 334344.513096897513606, 334354.984735140402336, 334365.456401711562648, 334375.928096610063221, 334386.399819835205562, 334396.871571386174764, 334407.343351262097713, 334417.815159462275915, 334428.286995985836256, 334438.758860831963830, 334449.230753999843728, 334459.702675488835666, 334470.174625297950115, 334480.646603426430374, 334491.118609873519745, 334501.590644638403319, 334512.062707720149774, 334522.534799118177034, 334533.006918831611983, 334543.479066859639715, 334553.951243201328907, 334564.423447856097482, 334574.895680823014118, 334585.367942101205699, 334595.840231690031942, 334606.312549588619731, 334616.784895796154160, 334627.257270311936736, 334637.729673134977929, 334648.202104264637455, 334658.674563699983992, 334669.147051440377254, 334679.619567484885920, 334690.092111832753289, 334700.564684483106248, 334711.037285435362719, 334721.509914688533172, 334731.982572241686285, 334742.455258094298188, 334752.927972245553974, 334763.400714694464114, 334773.873485440330114, 334784.346284482337069, 334794.819111819670070, 334805.291967451630626, 334815.764851377287414, 334826.237763595883735, 334836.710704106604680, 334847.183672908751760, 334857.656670001393650, 334868.129695383715443, 334878.602749055018649, 334889.075831014546566, 334899.548941261367872, 334910.022079794725869, 334920.495246613805648, 334930.968441717908718, 334941.441665105987340, 334951.914916777575854, 334962.388196731626522, 334972.861504967440851, 334983.334841484145727, 334993.808206281100865, 335004.281599357374944, 335014.755020712036639, 335025.228470344620291, 335035.701948254078161, 335046.175454439711757, 335056.648988900647964, 335067.122551636188291, 335077.596142645459622, 335088.069761927588843, 335098.543409481935669, 335109.017085307626985, 335119.490789403906092, 335129.964521769899875, 335140.438282404909842, 335150.912071307946462, 335161.385888478369452, 335171.859733915422112, 335182.333607618114911, 335192.807509585865773, 335203.281439817743376, 335213.755398312991019, 335224.229385070735589, 335234.703400090278592, 335245.177443370805122, 335255.651514911500271, 335266.125614711549133, 335276.599742770136800, 335287.073899086506572, 335297.548083659843542, 335308.022296489332803, 335318.496537574217655, 335328.970806913683191, 335339.445104506914504, 335349.919430353154894, 335360.393784451531246, 335370.868166801345069, 335381.342577401606832, 335391.817016251734458, 335402.291483350913040, 335412.765978698211256, 335423.240502292872407, 335433.715054134197999, 335444.189634221314918, 335454.664242553350050, 335465.138879129663110, 335475.613543949322775, 335486.088237011630554, 335496.562958315713331, 335507.037707860872615, 335517.512485646177083, 335527.987291670870036, 335538.462125934252981, 335548.936988435394596, 335559.411879173596390, 335569.886798148043454, 335580.361745357862674, 335590.836720802355558, 335601.311724480590783, 335611.786756391928066, 335622.261816535494290, 335632.736904910532758, 335643.212021516170353, 335653.687166351708584, 335664.162339416274335, 335674.637540709052701, 335685.112770229345188, 335695.588027976278681, 335706.063313949096482, 335716.538628146925475, 335727.013970569067169, 335737.489341214648448, 335747.964740082912613, 335758.440167173102964, 335768.915622484346386, 335779.391106015886180, 335789.866617766849231, 335800.342157736595254, 335810.817725924251135, 335821.293322328885552, 335831.768946949974634, 335842.244599786528852, 335852.720280837791506, 335863.195990102889482, 335873.671727581182495, 335884.147493271855637, 335894.623287173977587, 335905.099109286849853, 335915.574959609657526, 335926.050838141643908, 335936.526744881935883, 335947.002679829776753, 335957.478642984409817, 335967.954634345020168, 335978.430653910676483, 335988.906701680796687, 335999.382777654507663, 336009.858881830936298, 336020.335014209384099, 336030.811174789036158, 336041.287363569077570, 336051.763580548635218, 336062.239825727127027, 336072.716099103505258, 336083.192400677187834, 336093.668730447185226, 336104.145088412915356, 336114.621474573388696, 336125.097888927906752, 336135.574331475654617, 336146.050802215875592, 336156.527301147754770, 336167.003828270477243, 336177.480383583228104, 336187.956967085250653, 336198.433578775729984, 336208.910218653909396, 336219.386886718973983, 336229.863582970050629, 336240.340307406499051, 336250.817060027446132, 336261.293840832076967, 336271.770649819634855, 336282.247486989246681, 336292.724352340155747, 336303.201245871663559, 336313.678167582897004, 336324.155117473099381, 336334.632095541339368, 336345.109101786976680, 336355.586136209138203, 336366.063198807125445, 336376.540289580007084, 336387.017408527142834, 336397.494555647659581, 336407.971730940684211, 336418.448934405518230, 336428.926166041346733, 336439.403425847413018, 336449.880713822843973, 336460.358029966999311, 336470.835374278889503, 336481.312746757816058, 336491.790147403022274, 336502.267576213576831, 336512.745033188839443, 336523.222518327995203, 336533.700031630170997, 336544.177573094668332, 336554.655142720555887, 336565.132740507193375, 336575.610366453707684, 336586.088020559283905, 336596.565702823223546, 336607.043413244653493, 336617.521151822817046, 336627.998918556899298, 336638.476713446085341, 336648.954536489734892, 336659.432387686742004, 336669.910267036582809, 336680.388174538442399, 336690.866110191447660, 336701.344073994841892, 336711.822065947810188, 336722.300086049595848, 336732.778134299325757, 336743.256210696301423, 336753.734315239707939, 336764.212447928672191, 336774.690608762553893, 336785.168797740479931, 336795.647014861635398, 336806.125260125205386, 336816.603533530374989, 336827.081835076503921, 336837.560164762777276, 336848.038522588321939, 336858.516908552323002, 336868.995322654023767, 336879.473764892609324, 336889.952235267439391, 336900.430733777408022, 336910.909260422049556, 336921.387815200374462, 336931.866398111800663, 336942.345009155222215, 336952.823648330115248, 336963.302315635548439, 336973.781011070706882, 336984.259734634950291, 336994.738486327463761, 337005.217266147257760, 337015.696074093750212, 337026.174910166068003, 337036.653774363454431, 337047.132666685094591, 337057.611587130115367, 337068.090535697876476, 337078.569512387504801, 337089.048517198243644, 337099.527550129278097, 337110.006611179793254, 337120.485700349090621, 337130.964817636180669, 337141.443963040481322, 337151.923136561119463, 337162.402338197338395, 337172.881567948323209, 337183.360825813258998, 337193.840111791389063, 337204.319425881956704, 337214.798768083972391, 337225.278138396912254, 337235.757536819903180, 337246.236963352130260, 337256.716417992720380, 337267.195900741033256, 337277.675411596137565, 337288.154950557451230, 337298.634517623868305, 337309.114112794864923, 337319.593736069567967, 337330.073387447220739, 337340.553066926950123, 337351.032774508057628, 337361.512510189670138, 337371.992273970914539, 337382.472065851266962, 337392.951885829796083, 337403.431733905686997, 337413.911610078183003, 337424.391514346469194, 337434.871446709788870, 337445.351407167327125, 337455.831395718269050, 337466.311412361916155, 337476.791457097395323, 337487.271529924008064, 337497.751630840823054, 337508.231759847200010, 337518.711916942207608, 337529.192102125147358, 337539.672315395204350, 337550.152556751621887, 337560.632826193585061, 337571.113123720337171, 337581.593449331005104, 337592.073803024890367, 337602.554184801178053, 337613.034594659053255, 337623.515032597759273, 337633.995498616422992, 337644.475992714462336, 337654.956514890829567, 337665.437065144942608, 337675.917643475870136, 337686.398249882855453, 337696.878884365200065, 337707.359546922030859, 337717.840237552649342, 337728.320956256124191, 337738.801703031756915, 337749.282477878790814, 337759.763280796352774, 337770.244111783744302, 337780.724970840034075, 337791.205857964581810, 337801.686773156514391, 337812.167716415191535, 337822.648687739565503, 337833.129687129112426, 337843.610714582900982, 337854.091770100116264, 337864.572853680059779, 337875.053965321916621, 337885.535105024813674, 337896.016272788168862, 337906.497468610992655, 337916.978692492586561, 337927.459944432135671, 337937.941224428883288, 337948.422532481956296, 337958.903868590714410, 337969.385232754226308, 337979.866624971851707, 337990.348045242717490, 338000.829493565950543, 338011.310969940910581, 338021.792474366782699, 338032.274006842635572, 338042.755567367945332, 338053.237155941664241, 338063.718772563268431, 338074.200417231710162, 338084.682089946349151, 338095.163790706312284, 338105.645519510959275, 338116.127276359300595, 338126.609061250754166, 338137.090874184330460, 338147.572715159447398, 338158.054584175231867, 338168.536481230868958, 338179.018406325601973, 338189.500359458616003, 338199.982340629037935, 338210.464349836343899, 338220.946387079544365, 338231.428452357882634, 338241.910545670660213, 338252.392667016945779, 338262.874816396040842, 338273.356993807188701, 338283.839199249458034, 338294.321432722266763, 338304.803694224741776, 338315.285983756068163, 338325.768301315431017, 338336.250646902131848, 338346.733020515355747, 338357.215422154287808, 338367.697851818171330, 338378.180309506191406, 338388.662795217533130, 338399.145308951556217, 338409.627850707387552, 338420.110420484212227, 338430.593018281215336, 338441.075644097698387, 338451.558297932788264, 338462.040979785844684, 338472.523689655994531, 338483.006427542422898, 338493.489193444373086, 338503.971987361030187, 338514.454809291637503, 338524.937659235438332, 338535.420537191559561, 338545.903443159360904, 338556.386377137911040, 338566.869339126511477, 338577.352329124405514, 338587.835347130720038, 338598.318393144698348, 338608.801467165641952, 338619.284569192503113, 338629.767699224816170, 338640.250857261649799, 338650.734043302247301, 338661.217257345851976, 338671.700499391590711, 338682.183769438765012, 338692.667067486443557, 338703.150393534044269, 338713.633747580635827, 338724.117129625577945, 338734.600539667997509, 338745.083977707021404, 338755.567443742067553, 338766.050937772204634, 338776.534459796617739, 338787.018009814608376, 338797.501587825419847, 338807.985193828237243, 338818.468827822245657, 338828.952489806688391, 338839.436179780808743, 338849.919897743733600, 338860.403643694706261, 338870.887417633028235, 338881.371219557826407, 338891.855049468402285, 338902.338907363882754, 338912.822793243569322, 338923.306707106588874, 338933.790648952242918, 338944.274618779716548, 338954.758616588136647, 338965.242642376804724, 338975.726696145022288, 338986.210777891858015, 338996.694887616671622, 339007.179025318473577, 339017.663190996740013, 339028.147384650423191, 339038.631606278999243, 339049.115855881478637, 339059.600133457104675, 339070.084439005295280, 339080.568772525002714, 339091.053134015644901, 339101.537523476348724, 339112.021940906299278, 339122.506386304798070, 339132.990859670971986, 339143.475361004122533, 339153.959890303434804, 339164.444447568152100, 339174.929032797401305, 339185.413645990600344, 339195.898287146701477, 339206.382956265122630, 339216.867653344932478, 339227.352378385432530, 339237.837131385866087, 339248.321912345476449, 339258.806721263390500, 339269.291558138851542, 339279.776422971161082, 339290.261315759387799, 339300.746236502891406, 339311.231185200740583, 339321.716161852295045, 339332.201166456681676, 339342.686199013260193, 339353.171259521041065, 339363.656347979384009, 339374.141464387532324, 339384.626608744612895, 339395.111781049869023, 339405.596981302427594, 339416.082209501764737, 339426.567465646832716, 339437.052749737049453, 339447.538061771483626, 339458.023401749494951, 339468.508769670093898, 339478.994165532698389, 339489.479589336435311, 339499.965041080606170, 339510.450520764337853, 339520.936028386873659, 339531.421563947398681, 339541.907127445330843, 339552.392718879622407, 339562.878338249574881, 339573.363985554547980, 339583.849660793493968, 339594.335363965888973, 339604.821095070859883, 339615.306854107591789, 339625.792641075386200, 339636.278455973370001, 339646.764298800844699, 339657.250169556937180, 339667.736068240890745, 339678.221994852006901, 339688.707949389470741, 339699.193931852467358, 339709.679942240240052, 339720.165980552032124, 339730.652046786970459, 339741.138140944356564, 339751.624263023433741, 339762.110413023270667, 339772.596590943285264, 339783.082796782662626, 339793.569030540529639, 339804.055292216129601, 339814.541581808764022, 339825.027899317501578, 339835.514244741760194, 339846.000618080550339, 339856.487019333231729, 339866.973448498989455, 339877.459905577066820, 339887.946390566707123, 339898.432903467037249, 339908.919444277358707, 339919.406012996856589, 339929.892609624715988, 339940.379234160180204, 339950.865886602608953, 339961.352566950954497, 339971.839275204692967, 339982.326011362951249, 339992.812775424914435, 340003.299567389825825, 340013.786387256928720, 340024.273235025408212, 340034.760110694507603, 340045.247014263411984, 340055.733945731422864, 340066.220905097725336, 340076.707892361504491, 340087.194907522003632, 340097.681950578524265, 340108.169021530193277, 340118.656120376137551, 340129.143247115833219, 340139.630401748232543, 340150.117584272811655, 340160.604794688639231, 340171.092032994958572, 340181.579299191012979, 340192.066593275987543, 340202.553915249183774, 340213.041265109670348, 340223.528642856865190, 340234.016048489836976, 340244.503482007887214, 340254.990943410200998, 340265.478432696079835, 340275.965949864650611, 340286.453494915156625, 340296.941067846782971, 340307.428668658831157, 340317.916297350544482, 340328.403953921049833, 340338.891638369648717, 340349.379350695584435, 340359.867090897983871, 340370.354858976090327, 340380.842654929088894, 340391.330478756339289, 340401.818330456968397, 340412.306210030219518, 340422.794117475335952, 340433.282052791502792, 340443.770015978021547, 340454.258007033960894, 340464.746025958680548, 340475.234072751365602, 340485.722147411259357, 340496.210249937488697, 340506.698380329355132, 340517.186538586160168, 340527.674724707030691, 340538.162938691151794, 340548.651180537824985, 340559.139450246235356, 340569.627747815684415, 340580.116073245182633, 340590.604426534147933, 340601.092807681881823, 340611.581216687394772, 340622.069653549988288, 340632.558118268905673, 340643.046610843448434, 340653.535131272685248, 340664.023679555917624, 340674.512255692330655, 340685.000859681167640, 340695.489491521730088, 340705.978151213203091, 340716.466838754713535, 340726.955554145621136, 340737.444297385052778, 340747.933068472251762, 340758.421867406519596, 340768.910694186983164, 340779.399548812885769, 340789.888431283412501, 340800.377341597981285, 340810.866279755602591, 340821.355245755636133, 340831.844239597208798, 340842.333261279622093, 340852.822310802002903, 340863.311388163710944, 340873.800493363756686, 340884.289626401674468, 340894.778787276474759, 340905.267975987400860, 340915.757192533754278, 340926.246436914720107, 340936.735709129483439, 340947.225009177345783, 340957.714337057375815, 340968.203692768991459, 340978.693076311319601, 340989.182487683661748, 340999.671926885202993, 341010.161393915012013, 341020.650888772623148, 341031.140411457046866, 341041.629961967526469, 341052.119540303305257, 341062.609146463568322, 341073.098780447733589, 341083.588442254811525, 341094.078131884103641, 341104.567849334853236, 341115.057594606303610, 341125.547367697639856, 341136.037168608047068, 341146.526997336826753, 341157.016853883164003, 341167.506738246243913, 341177.996650425484404, 341188.486590419954155, 341198.976558228838257, 341209.466553851438221, 341219.956577286939137, 341230.446628534700722, 341240.936707593733445, 341251.426814463455230, 341261.916949142876547, 341272.407111631473526, 341282.897301928431261, 341293.387520032760222, 341303.877765943936538, 341314.368039661028888, 341324.858341183338780, 341335.348670510051306, 341345.839027640467975, 341356.329412573657464, 341366.819825309037697, 341377.310265845677350, 341387.800734182936139, 341398.291230319999158, 341408.781754256051499, 341419.272305990336463, 341429.762885522155557, 341440.253492850577459, 341450.744127974961884, 341461.234790894435719, 341471.725481608358677, 341482.216200115857646, 341492.706946416175924, 341503.197720508615021, 341513.688522392243613, 341524.179352066537831, 341534.670209530449938, 341545.161094783397857, 341555.652007824450266, 341566.142948652966879, 341576.633917268132791, 341587.124913669249509, 341597.615937855443917, 341608.106989825959317, 341618.598069580097217, 341629.089177116926294, 341639.580312435864471, 341650.071475535980426, 341660.562666416575667, 341671.053885076951701, 341681.545131516235415, 341692.036405733611900, 341702.527707728499081, 341713.019037499907427, 341723.510395047254860, 341734.001780369610060, 341744.493193466332741, 341754.984634336433373, 341765.476102979504503, 341775.967599394440185, 341786.459123580658343, 341796.950675537285861, 341807.442255263624247, 341817.933862758858595, 341828.425498022232205, 341838.917161052930169, 341849.408851850253996, 341859.900570413388778, 341870.392316741636023, 341880.884090834064409, 341891.375892690033652, 341901.867722308845259, 341912.359579689509701, 341922.851464831386693, 341933.343377733777743, 341943.835318395751528, 341954.327286816609558, 341964.819282995595131, 341975.311306931893341, 341985.803358624805696, 341996.295438073517289, 342006.787545277271420, 342017.279680235311389, 342027.771842946822289, 342038.264033410989214, 342048.756251627230085, 342059.248497594497167, 342069.740771312266588, 342080.233072779665235, 342090.725401995994616, 342101.217758960323408, 342111.710143672069535, 342122.202556130359881, 342132.694996334495954, 342143.187464283546433, 342153.679959976929240, 342164.172483413713053, 342174.665034593257587, 342185.157613514806144, 342195.650220177485608, 342206.142854580597486, 342216.635516723268665, 342227.128206604858860, 342237.620924224553164, 342248.113669581536669, 342258.606442675169092, 342269.099243504402693, 342279.592072068771813, 342290.084928367403336, 342300.577812399540562, 342311.070724164368585, 342321.563663661130704, 342332.056630889012013, 342342.549625847372226, 342353.042648535396438, 342363.535698952211533, 342374.028777097060811, 342384.521882969420403, 342395.015016568184365, 342405.508177892887034, 342416.001366942480672, 342426.494583716383204, 342436.987828213779721, 342447.481100433913525, 342457.974400375969708, 342468.467728039191570, 342478.961083422764204, 342489.454466526047327, 342499.947877348226029, 342510.441315888485406, 342520.934782146126963, 342531.428276120277587, 342541.921797810296994, 342552.415347215312067, 342562.908924334566109, 342573.402529167360626, 342583.896161712822504, 342594.389821970311459, 342604.883509938954376, 342615.377225618052762, 342625.870969006791711, 342636.364740104414523, 342646.858538910222705, 342657.352365423284937, 342667.846219643019140, 342678.340101568552200, 342688.834011199127417, 342699.327948533988092, 342709.821913572319318, 342720.315906313480809, 342730.809926756541245, 342741.303974900860339, 342751.798050745681394, 342762.292154290131293, 342772.786285533511546, 342783.280444475007243, 342793.774631113861687, 342804.268845449376386, 342814.763087480678223, 342825.257357207126915, 342835.751654627849348, 342846.245979742147028, 342856.740332549205050, 342867.234713048208505, 342877.729121238575317, 342888.223557119315956, 342898.718020689790137, 342909.212511949182954, 342919.707030896795914, 342930.201577531814110, 342940.696151853480842, 342951.190753860981204, 342961.685383553674910, 342972.180040930630639, 342982.674725991208106, 342993.169438734592404, 343003.664179159968626, 343014.158947266638279, 343024.653743053844664, 343035.148566520772874, 343045.643417666782625, 343056.138296490884386, 343066.633202992496081, 343077.128137170744594, 343087.623099024989642, 343098.118088554299902, 343108.613105758035090, 343119.108150635322090, 343129.603223185520619, 343140.098323407815769, 343150.593451301392633, 343161.088606865552720, 343171.583790099422913, 343182.079001002421137, 343192.574239573674276, 343203.069505812367424, 343213.564799717802089, 343224.060121289105155, 343234.555470525694545, 343245.050847426755354, 343255.546251991414465, 343266.041684219089802, 343276.537144108733628, 343287.032631659880280, 343297.528146871598437, 343308.023689743131399, 343318.519260273722466, 343329.014858462614939, 343339.510484309052117, 343350.006137812277302, 343360.501818971592002, 343370.997527786064893, 343381.493264255113900, 343391.989028377807699, 343402.484820153447799, 343412.980639581335708, 343423.476486660598312, 343433.972361390595324, 343444.468263770395424, 343454.964193799300119, 343465.460151476669125, 343475.956136801629327, 343486.452149773482233, 343496.948190391296521, 343507.444258654490113, 343517.940354562189896, 343528.436478113697376, 343538.932629308255855, 343549.428808144992217, 343559.925014623207971, 343570.421248742204625, 343580.917510501167271, 343591.413799899339210, 343601.910116935905535, 343612.406461610109545, 343622.902833921310958, 343633.399233868636657, 343643.895661451329943, 343654.392116668634117, 343664.888599519734271, 343675.385110003931914, 343685.881648120528553, 343696.378213868651073, 343706.874807247542776, 343717.371428256446961, 343727.868076894723345, 343738.364753161440603, 343748.861457055958454, 343759.358188577403780, 343769.854947725078091, 343780.351734498166479, 343790.848548895912245, 343801.345390917675104, 343811.842260562640149, 343822.339157829934265, 343832.836082718917169, 343843.333035228657536, 343853.830015358631499, 343864.327023107907735, 343874.824058475845959, 343885.321121461573057, 343895.818212064215913, 343906.315330283308867, 343916.812476117920596, 343927.309649567294400, 343937.806850630615372, 343948.304079307301436, 343958.801335596421268, 343969.298619497218169, 343979.795931009051856, 343990.293270131049212, 344000.790636862511747, 344011.288031202566344, 344021.785453150572721, 344032.282902705832385, 344042.780379867297597, 344053.277884634502698, 344063.775417006574571, 344074.272976982756518, 344084.770564562291838, 344095.268179744365625, 344105.765822528221179, 344116.263492913160007, 344126.761190898367204, 344137.258916483144276, 344147.756669666676316, 344158.254450448264834, 344168.752258826978505, 344179.250094802293461, 344189.747958373336587, 344200.245849539234769, 344210.743768299464136, 344221.241714653035160, 344231.739688599307556, 344242.237690137466416, 344252.735719266755041, 344263.233775986533146, 344273.731860295869410, 344284.229972194123548, 344294.728111680480652, 344305.226278754184023, 344315.724473414535169, 344326.222695660602767, 344336.720945491746534, 344347.219222907209769, 344357.717527906293981, 344368.215860488067847, 344378.714220651891083, 344389.212608396948781, 344399.711023722542450, 344410.209466627857182, 344420.707937112194486, 344431.206435174739454, 344441.704960814735387, 344452.203514031483792, 344462.702094824053347, 344473.200703191861976, 344483.699339133978356, 344494.198002649878617, 344504.696693738689646, 344515.195412399596535, 344525.694158631842583, 344536.192932434787508, 344546.691733807499986, 344557.190562749339733, 344567.689419259491842, 344578.188303337316029, 344588.687214981880970, 344599.186154192429967, 344609.685120968322735, 344620.184115308802575, 344630.683137212996371, 344641.182186680322047, 344651.681263709848281, 344662.180368300760165, 344672.679500452592038, 344683.178660164237954, 344693.677847435232252, 344704.177062264585402, 344714.676304651715327, 344725.175574595632497, 344735.674872095871251, 344746.174197151500266, 344756.673549761821050, 344767.172929926018696, 344777.672337643336505, 344788.171772913017776, 344798.671235734422226, 344809.170726106618531, 344819.670244028966408, 344830.169789500592742, 344840.669362520799041, 344851.168963088886812, 344861.668591204041149, 344872.168246865563560, 344882.667930072580930, 344893.167640824336559, 344903.667379120190162, 344914.167144959326833, 344924.666938341048080, 344935.166759264422581, 344945.666607728810050, 344956.166483733511996, 344966.666387277597096, 344977.166318360483274, 344987.666276981297415, 344998.166263139282819, 345008.666276833799202, 345019.166318064031657, 345029.666386829107068, 345040.166483128443360, 345050.666606961109210, 345061.166758326522540, 345071.666937223810237, 345082.167143652215600, 345092.667377611040138, 345103.167639099410735, 345113.667928116803523, 345124.168244662228972, 345134.668588734930381, 345145.168960334383883, 345155.669359459599946, 345166.169786109880079, 345176.670240284525789, 345187.170721982722171, 345197.671231203712523, 345208.171767946681939, 345218.672332211048342, 345229.172923995938618, 345239.673543300596066, 345250.174190124322195, 345260.674864466243889, 345271.175566325662658, 345281.676295701938216, 345292.177052594139241, 345302.677837001567241, 345313.178648923465516, 345323.679488359193783, 345334.180355307704303, 345344.681249768473208, 345355.182171740802005, 345365.683121223759372, 345376.184098216646817, 345386.685102718765847, 345397.186134729243349, 345407.687194247439038, 345418.188281272538006, 345428.689395803783555, 345439.190537840360776, 345449.691707381687593, 345460.192904426774476, 345470.694128975097556, 345481.195381025783718, 345491.696660578018054, 345502.197967631218489, 345512.699302184453700, 345523.200664237025194, 345533.702053788234480, 345544.203470837266650, 345554.704915383365005, 345565.206387425772846, 345575.707886963733472, 345586.209413996490184, 345596.710968523344491, 345607.212550543481484, 345617.714160056202672, 345628.215797060634941, 345638.717461556138005, 345649.219153541896958, 345659.720873017271515, 345670.222619981330354, 345680.724394433374982, 345691.226196372765116, 345701.728025798511226, 345712.229882710089441, 345722.731767106626648, 345733.233678987424355, 345743.735618351667654, 345754.237585198658053, 345764.739579527580645, 345775.241601337736938, 345785.743650628370233, 345796.245727398665622, 345806.747831647924613, 345817.249963375332300, 345827.752122580248397, 345838.254309261799790, 345848.756523419171572, 345859.258765051839873, 345869.761034158989787, 345880.263330739689991, 345890.765654793300200, 345901.268006319121923, 345911.770385316282045, 345922.272791784082074, 345932.775225721765310, 345943.277687128575053, 345953.780176003812812, 345964.282692346663680, 345974.785236156312749, 345985.287807432061527, 345995.790406173269730, 346006.293032379064243, 346016.795686048688367, 346027.298367181385402, 346037.801075776456855, 346048.303811833146028, 346058.806575350638013, 346069.309366328176111, 346079.812184765120037, 346090.315030660538469, 346100.817904013849329, 346111.320804824121296, 346121.823733090830501, 346132.326688813045621, 346142.829671990068164, 346153.332682621083222, 346163.835720705508720, 346174.338786242413335, 346184.841879231098574, 346195.344999670749530, 346205.848147560784128, 346216.351322900329251, 346226.854525688628200, 346237.357755924924277, 346247.861013608518988, 346258.364298738655634, 346268.867611314519309, 346279.370951335353311, 346289.874318800459150, 346300.377713709080126, 346310.881136060517747, 346321.384585853840690, 346331.888063088466879, 346342.391567763581406, 346352.895099878427573, 346363.398659432306886, 346373.902246424229816, 346384.405860853788909, 346394.909502719994634, 346405.413172022264916, 346415.916868759668432, 346426.420592931564897, 346436.924344537255820, 346447.428123575809877, 346457.931930046586785, 346468.435763948771637, 346478.939625281782355, 346489.443514044687618, 346499.947430236788932, 346510.451373857213184, 346520.955344905494712, 346531.459343380702194, 346541.963369282078929, 346552.467422608868219, 346562.971503360313363, 346573.475611535774078, 346583.979747134377249, 346594.483910155366175, 346604.988100598100573, 346615.492318461765535, 346625.996563745546155, 346636.500836448743939, 346647.005136570602190, 346657.509464110422414, 346668.013819067447912, 346678.518201440805569, 346689.022611229855102, 346699.527048433839809, 346710.031513052002992, 346720.536005083529744, 346731.040524527721573, 346741.545071383763570, 346752.049645651073661, 346762.554247328720521, 346773.058876416005660, 346783.563532912114169, 346794.068216816463973, 346804.572928128240164, 346815.077666846627835, 346825.582432970928494, 346836.087226500385441, 346846.592047434183769, 346857.096895771683194, 346867.601771512068808, 346878.106674654525705, 346888.611605198471807, 346899.116563142975792, 346909.621548487397376, 346920.126561230863445, 346930.631601372791920, 346941.136668912367895, 346951.641763848834671, 346962.146886181435548, 346972.652035909355618, 346983.157213032012805, 346993.662417548475787, 347004.167649458162487, 347014.672908760141581, 347025.178195453772787, 347035.683509538299404, 347046.188851012964733, 347056.694219877012074, 347067.199616129626520, 347077.705039770167787, 347088.210490797820967, 347098.715969211887568, 347109.221475011610892, 347119.727008196176030, 347130.232568764826283, 347140.738156716921367, 347151.243772051646374, 347161.749414768244606, 347172.255084866017569, 347182.760782344092149, 347193.266507201828063, 347203.772259438410401, 347214.278039053140674, 347224.783846045262180, 347235.289680414076429, 347245.795542158710305, 347256.301431278523523, 347266.807347772701178, 347277.313291640544776, 347287.819262881239410, 347298.325261494028382, 347308.831287478213198, 347319.337340833153576, 347329.843421557859983, 347340.349529651808552, 347350.855665114126168, 347361.361827943997923, 347371.868018140783533, 347382.374235703784507, 347392.880480632127728, 347403.386752925172914, 347413.893052582046948, 347424.399379602109548, 347434.905733984662220, 347445.412115728715435, 347455.918524833803531, 347466.424961298936978, 347476.931425123591907, 347487.437916306778789, 347497.944434847973753, 347508.450980746187270, 347518.957554000953678, 347529.464154611341655, 347539.970782576652709, 347550.477437896130141, 347560.984120569017250, 347571.490830594615545, 347581.997567972110119, 347592.504332700802479, 347603.011124779877719, 347613.517944208637346, 347624.024790986324660, 347634.531665112241171, 347645.038566585571971, 347655.545495405560359, 347666.052451571449637, 347676.559435082657728, 347687.066445938195102, 347697.573484137537889, 347708.080549679812975, 347718.587642564205453, 347729.094762790075038, 347739.601910356665030, 347750.109085263218731, 347760.616287509037647, 347771.123517093248665, 347781.630774015211500, 347792.138058274111245, 347802.645369869191200, 347813.152708799811080, 347823.660075065155979, 347834.167468664469197, 347844.674889597052243, 347855.182337862032000, 347865.689813458826393, 347876.197316386620514, 347886.704846644657664, 347897.212404232122935, 347907.719989148434252, 347918.227601392660290, 347928.735240964277182, 347939.242907862237189, 347949.750602086016443, 347960.258323634800036, 347970.766072507889476, 347981.273848704528064, 347991.781652223959100, 348002.289483065367676, 348012.797341228055302, 348023.305226711323485, 348033.813139514357317, 348044.321079636458308, 348054.829047076811548, 348065.337041834776755, 348075.845063909480814, 348086.353113300341647, 348096.861190006427933, 348107.369294027041178, 348117.877425361541100, 348128.385584009170998, 348138.893769969057757, 348149.401983240561094, 348159.910223822924308, 348170.418491715274286, 348180.926786917087156, 348191.435109427431598, 348201.943459245725535, 348212.451836371095851, 348222.960240802727640, 348233.468672540038824, 348243.977131582330912, 348254.485617928614374, 348264.994131578248926, 348275.502672530594282, 348286.011240784835536, 348296.519836340157781, 348307.028459195978940, 348317.537109351367690, 348328.045786805741955, 348338.554491558228619, 348349.063223608187400, 348359.571982954745181, 348370.080769597319886, 348380.589583534980193, 348391.098424767144024, 348401.607293293054681, 348412.116189111780841, 348422.625112222740427, 348433.134062625234947, 348443.643040318391286, 348454.152045301510952, 348464.661077573837247, 348475.170137134671677, 348485.679223983315751, 348496.188338118838146, 348506.697479540656786, 348517.206648248014972, 348527.715844240039587, 348538.225067516148556, 348548.734318075468764, 348559.243595917359926, 348569.752901041065343, 348580.262233445711900, 348590.771593130659312, 348601.280980095209088, 348611.790394338546321, 348622.299835859914310, 348632.809304658672772, 348643.318800733948592, 348653.828324085043278, 348664.337874711258337, 348674.847452611778863, 348685.357057785906363, 348695.866690232884139, 348706.376349951955490, 348716.886036942363717, 348727.395751203526743, 348737.905492734396830, 348748.415261534450110, 348758.925057602929883, 348769.434880939021241, 348779.944731542083900, 348790.454609411244746, 348800.964514545805287, 348811.474446945067029, 348821.984406608215068, 348832.494393534609117, 348843.004407723434269, 348853.514449173933826, 348864.024517885467503, 348874.534613857103977, 348885.044737088261172, 348895.554887578124180, 348906.065065325936303, 348916.575270331057254, 348927.085502592613921, 348937.595762109966017, 348948.106048882356845, 348958.616362908971496, 348969.126704189169686, 348979.637072722136509, 348990.147468507057056, 349000.657891543407459, 349011.168341830198187, 349021.678819366847165, 349032.189324152539484, 349042.699856186576653, 349053.210415468260180, 349063.721001996716950, 349074.231615771248471, 349084.742256791156251, 349095.252925055683590, 349105.763620564131998, 349116.274343315686565, 349126.785093309648801, 349137.295870545262005, 349147.806675021711271, 349158.317506738356315, 349168.828365694498643, 349179.339251889206935, 349189.850165321899112, 349200.361105991818476, 349210.872073898091912, 349221.383069040195551, 349231.894091417256277, 349242.405141028459184, 349252.916217873163987, 349263.427321950672194, 349273.938453260110691, 349284.449611800897401, 349294.960797572159208, 349305.472010573139414, 349315.983250803255942, 349326.494518261693884, 349337.005812947580125, 349347.517134860332590, 349358.028483999136370, 349368.539860363292973, 349379.051263951987494, 349389.562694764637854, 349400.074152800312731, 349410.585638058313634, 349421.097150537942071, 349431.608690238557756, 349442.120257159229368, 349452.631851299374830, 349463.143472658179235, 349473.655121234827675, 349484.166797028738074, 349494.678500039037317, 349505.190230265026912, 349515.701987706008367, 349526.213772361224983, 349536.725584229861852, 349547.237423311220482, 349557.749289604602382, 349568.261183109309059, 349578.773103824350983, 349589.285051749320701, 349599.797026883286890, 349610.309029225551058, 349620.821058775356505, 349631.333115531946532, 349641.845199494680855, 349652.357310662686359, 349662.869449035322759, 349673.381614611775149, 349683.893807391345035, 349694.406027373333927, 349704.918274556868710, 349715.430548941367306, 349725.942850526014809, 349736.455179310054518, 349746.967535292787943, 349757.479918473400176, 349767.992328851192724, 349778.504766425525304, 349789.017231195583008, 349799.529723160492722, 349810.042242319788784, 349820.554788672481664, 349831.067362217931077, 349841.579962955438532, 349852.092590884189121, 349862.605246003484353, 349873.117928312625736, 349883.630637810740154, 349894.143374497245532, 349904.656138371326961, 349915.168929432227742, 349925.681747679249384, 349936.194593111518770, 349946.707465728512034, 349957.220365529414266, 349967.733292513410561, 349978.246246679860633, 349988.759228027949575, 349999.272236557037104, 350009.785272266250104, 350020.298335154890083, 350030.811425222316757, 350041.324542467657011, 350051.837686890270561, 350062.350858489342500, 350072.864057264232542, 350083.377283214125782, 350093.890536338207312, 350104.403816635953262, 350114.917124106490519, 350125.430458749004174, 350135.943820562853944, 350146.457209547399543, 350156.970625701709650, 350167.484069025202189, 350177.997539517062251, 350188.511037176474929, 350199.024562002858147, 350209.538113995455205, 350220.051693153334782, 350230.565299476031214, 350241.078932962613180, 350251.592593612440396, 350262.106281424756162, 350272.619996398745570, 350283.133738533710130, 350293.647507829009555, 350304.161304283770733, 350314.675127897295170, 350325.188978668942582, 350335.702856597839855, 350346.216761683346704, 350356.730693924648222, 350367.244653321104124, 350377.758639871899504, 350388.272653576335870, 350398.786694433598313, 350409.300762443046551, 350419.814857603923883, 350430.328979915415403, 350440.843129376939032, 350451.357305987563450, 350461.871509746648371, 350472.385740653553512, 350482.899998707347549, 350493.414283907448407, 350503.928596252982970, 350514.442935743369162, 350524.957302377792075, 350535.471696155495010, 350545.986117075779475, 350556.500565137830563, 350567.015040341066197, 350577.529542684613261, 350588.044072167773265, 350598.558628789847717, 350609.073212550079916, 350619.587823447713163, 350630.102461481990758, 350640.617126652214210, 350651.131818957685027, 350661.646538397588301, 350672.161284971167333, 350682.676058677781839, 350693.190859516616911, 350703.705687487032264, 350714.220542588154785, 350724.735424819402397, 350735.250334179960191, 350745.765270669071469, 350756.280234286037739, 350766.795225030102301, 350777.310242900508456, 350787.825287896615919, 350798.340360017551575, 350808.855459262616932, 350819.370585631171707, 350829.885739122400992, 350840.400919735548086, 350850.916127469972707, 350861.431362324918155, 350871.946624299511313, 350882.461913393170107, 350892.977229605021421, 350903.492572934483178, 350914.007943380798679, 350924.523340943153016, 350935.038765620789491, 350945.554217413009610, 350956.069696319173090, 350966.585202338465024, 350977.100735470128711, 350987.616295713407453, 350998.131883067660965, 351008.647497532132547, 351019.163139106007293, 351029.678807788586710, 351040.194503579230513, 351050.710226477065589, 351061.225976481393445, 351071.741753591573797, 351082.257557806733530, 351092.773389126174152, 351103.289247549255379, 351113.805133075162303, 351124.321045703196432, 351134.836985432601068, 351145.352952262619510, 351155.868946192495059, 351166.384967221645638, 351176.901015349198133, 351187.417090574454051, 351197.933192896598484, 351208.449322315049358, 351218.965478828991763, 351229.481662437727209, 351239.997873140440788, 351250.514110936434008, 351261.030375825066585, 351271.546667805465404, 351282.062986876990180, 351292.579333038767800, 351303.095706290332600, 351313.612106630636845, 351324.128534059273079, 351334.644988575193565, 351345.161470177874435, 351355.677978866500780, 351366.194514640315901, 351376.711077498679515, 351387.227667440776713, 351397.744284465850797, 351408.260928573319688, 351418.777599762252066, 351429.294298032007646, 351439.811023381887935, 351450.327775811078027, 351460.844555318937637, 351471.361361904651858, 351481.878195567580406, 351492.395056306908373, 351502.911944121820852, 351513.428859011852182, 351523.945800976012833, 351534.462770013720728, 351544.979766124160960, 351555.496789306576829, 351566.013839560386259, 351576.530916884657927, 351587.048021278809756, 351597.565152742026839, 351608.082311273610685, 351618.599496872862801, 351629.116709539026488, 351639.633949271228630, 351650.151216068945359, 351660.668509931419976, 351671.185830857779365, 351681.703178847383242, 351692.220553899533115, 351702.737956013355870, 351713.255385188269429, 351723.772841423458885, 351734.290324718225747, 351744.807835071871523, 351755.325372483697720, 351765.842936952714808, 351776.360528478515334, 351786.878147060167976, 351797.395792697032448, 351807.913465388352051, 351818.431165133311879, 351828.948891931329854, 351839.466645781591069, 351849.984426683338825, 351860.502234635932837, 351871.020069638499990, 351881.537931690458208, 351892.055820790934376, 351902.573736939346418, 351913.091680134879425, 351923.609650376776699, 351934.127647664397955, 351944.645671996870078, 351955.163723373552784, 351965.681801793747582, 351976.199907256697770, 351986.718039761588443, 351997.236199307837524, 352007.754385894571897, 352018.272599521209486, 352028.790840186877176, 352039.309107890876476, 352049.827402632567100, 352060.345724411075935, 352070.864073225820903, 352081.382449075928889, 352091.900851960759610, 352102.419281879556365, 352112.937738831562456, 352123.456222816137597, 352133.974733832466882, 352144.493271879793610, 352155.011836957477499, 352165.530429064703640, 352176.049048200773541, 352186.567694364988711, 352197.086367556650657, 352207.605067774944473, 352218.123795019171666, 352228.642549288575538, 352239.161330582515802, 352249.680138900119346, 352260.198974240745883, 352270.717836603696924, 352281.236725988157559, 352291.755642393487506, 352302.274585818813648, 352312.793556263553910, 352323.312553726951592, 352333.831578208249994, 352344.350629706692416, 352354.869708221580368, 352365.388813752098940, 352375.907946297724266, 352386.427105857525021, 352396.946292430802714, 352407.465506016917061, 352417.984746615111362, 352428.504014224628918, 352439.023308844771236, 352449.542630474781618, 352460.061979113903362, 352470.581354761437979, 352481.100757416686974, 352491.620187078893650, 352502.139643747243099, 352512.659127421211451, 352523.178638099867385, 352533.698175782570615, 352544.217740468622651, 352554.737332157208584, 352565.256950847688131, 352575.776596539188176, 352586.296269231184851, 352596.815968922805041, 352607.335695613350254, 352617.855449302121997, 352628.375229988421779, 352638.895037671260070, 352649.414872350345831, 352659.934734024631325, 352670.454622693476267, 352680.974538356182165, 352691.494481011934113, 352702.014450660033617, 352712.534447299840394, 352723.054470930597745, 352733.574521551490761, 352744.094599161937367, 352754.614703761006240, 352765.134835348115303, 352775.654993922507856, 352786.175179483485408, 352796.695392030233052, 352807.215631562052295, 352817.735898078244645, 352828.256191578111611, 352838.776512060896493, 352849.296859525784384, 352859.817233972135000, 352870.337635399249848, 352880.858063806372229, 352891.378519192687236, 352901.899001557554584, 352912.419510900217574, 352922.940047220035922, 352933.460610516252927, 352943.981200787995476, 352954.501818034623284, 352965.022462255496066, 352975.543133449798916, 352986.063831616833340, 352996.584556755784433, 353007.105308866070118, 353017.626087946817279, 353028.146893997443840, 353038.667727017134894, 353049.188587005191948, 353059.709473960800096, 353070.230387883377261, 353080.751328772108536, 353091.272296626295429, 353101.793291445181239, 353112.314313228067476, 353122.835361974197440, 353133.356437682872638, 353143.877540353336371, 353154.398669984831940, 353164.919826576777268, 353175.441010128357448, 353185.962220638815779, 353196.483458107395563, 353207.004722533514723, 353217.526013916300144, 353228.047332255053334, 353238.568677549134009, 353249.090049797785468, 353259.611449000134598, 353270.132875155657530, 353280.654328263481148, 353291.175808323023375, 353301.697315333411098, 353312.218849294004031, 353322.740410204045475, 353333.261998062778730, 353343.783612869621720, 353354.305254623643123, 353364.826923324260861, 353375.348618970718235, 353385.870341562258545, 353396.392091098125093, 353406.913867577619385, 353417.435671000159346, 353427.957501364755444, 353438.479358670883812, 353449.001242917845957, 353459.523154104710557, 353470.045092230895534, 353480.567057295702398, 353491.089049298258033, 353501.611068237980362, 353512.133114114112686, 353522.655186925840098, 353533.177286672580522, 353543.699413353519049, 353554.221566967898980, 353564.743747515080031, 353575.265954994305503, 353585.788189404818695, 353596.310450745921116, 353606.832739016856067, 353617.355054216983262, 353627.877396345546003, 353638.399765401729383, 353648.922161384893116, 353659.444584294280503, 353669.967034129193053, 353680.489510888815857, 353691.012014572625048, 353701.534545179631095, 353712.057102709368337, 353722.579687160963658, 353733.102298533718567, 353743.624936826876365, 353754.147602039796766, 353764.670294171723071, 353775.193013221840374, 353785.715759189508390, 353796.238532074028626, 353806.761331874644384, 353817.284158590540756, 353827.807012221193872, 353838.329892765672412, 353848.852800223336089, 353859.375734593544621, 353869.898695875424892, 353880.421684068394825, 353890.944699171639513, 353901.467741184344050, 353911.990810106042773, 353922.513905935804360, 353933.037028672988527, 353943.560178316780366, 353954.083354866539594, 353964.606558321567718, 353975.129788681049831, 353985.653045944345649, 353996.176330110698473, 354006.699641179351602, 354017.222979149606545, 354027.746344020823017, 354038.269735792127904, 354048.793154462880921, 354059.316600032383576, 354069.840072499879170, 354080.363571864611004, 354090.887098125880584, 354101.410651282989420, 354111.934231335180812, 354122.457838281698059, 354132.981472121959087, 354143.505132855090778, 354154.028820480452850, 354164.552534997230396, 354175.076276404841337, 354185.600044702470768, 354196.123839889361989, 354206.647661964874715, 354217.171510928252246, 354227.695386778737884, 354238.219289515691344, 354248.743219138355926, 354259.267175645916723, 354269.791159037733451, 354280.315169313049410, 354290.839206471224315, 354301.363270511559676, 354311.887361433124170, 354322.411479235393927, 354332.935623917612247, 354343.459795478906017, 354353.983993918809574, 354364.508219236391596, 354375.032471431011800, 354385.556750501855277, 354396.081056448339950, 354406.605389269709121, 354417.129748965147883, 354427.654135534015950, 354438.178548975614831, 354448.702989289187826, 354459.227456473978236, 354469.751950529287569, 354480.276471454417333, 354490.801019248610828, 354501.325593911169562, 354511.850195441395044, 354522.374823838530574, 354532.899479101819452, 354543.424161230621394, 354553.948870224121492, 354564.473606081621256, 354574.998368802480400, 354585.523158385942224, 354596.047974831250031, 354606.572818137647118, 354617.097688304551411, 354627.622585331089795, 354638.147509216621984, 354648.672459960507695, 354659.197437561815605, 354669.722442019963637, 354680.247473334195092, 354690.772531503753271, 354701.297616528056096, 354711.822728406230453, 354722.347867137636058, 354732.873032721516211, 354743.398225157172419, 354753.923444443789776, 354764.448690580844413, 354774.973963567463215, 354785.499263402947690, 354796.024590086599346, 354806.549943617719691, 354817.075323995552026, 354827.600731219339650, 354838.126165288442280, 354848.651626202103216, 354859.177113959507551, 354869.702628560131416, 354880.228170003159903, 354890.753738287719898, 354901.279333413345739, 354911.804955379164312, 354922.330604184593540, 354932.856279828702100, 354943.381982310907915, 354953.907711630512495, 354964.433467786759138, 354974.959250778832939, 354985.485060606151819, 354996.010897267959081, 355006.536760763556231, 355017.062651092070155, 355027.588568252918776, 355038.114512245403603, 355048.640483068826143, 355059.166480722313281, 355069.692505205224734, 355080.218556516862009, 355090.744634656468406, 355101.270739623403642, 355111.796871416852809, 355122.323030036175624, 355132.849215480557177, 355143.375427749415394, 355153.901666841818951, 355164.427932757243980, 355174.954225494933780, 355185.480545054073445, 355196.006891434080899, 355206.533264634199440, 355217.059664653614163, 355227.586091491626576, 355238.112545147538185, 355248.639025620708708, 355259.165532910381444, 355269.692067015799694, 355280.218627936264966, 355290.745215671020560, 355301.271830219426192, 355311.798471580725163, 355322.325139754160773, 355332.851834739034530, 355343.378556534647942, 355353.905305140302517, 355364.432080555241555, 355374.958882778708357, 355385.485711810062639, 355396.012567648547702, 355406.539450293465052, 355417.066359744116198, 355427.593295999628026, 355438.120259059534874, 355448.647248922905419, 355459.174265589157585, 355469.701309057418257, 355480.228379327163566, 355490.755476397578605, 355501.282600267906673, 355511.809750937449280, 355522.336928405507933, 355532.864132671384141, 355543.391363734379411, 355553.918621593678836, 355564.445906248642132, 355574.973217698570807, 355585.500555942649953, 355596.027920980239287, 355606.555312810465693, 355617.082731432921719, 355627.610176846676040, 355638.137649051030166, 355648.665148045285605, 355659.192673828685656, 355669.720226400648244, 355680.247805760300253, 355690.775411907001399, 355701.303044839994982, 355711.830704558582511, 355722.358391062065493, 355732.886104349687230, 355743.413844420749228, 355753.941611274552997, 355764.469404910341837, 355774.997225327475462, 355785.525072525138967, 355796.052946502692066, 355806.580847259319853, 355817.108774794382043, 355827.636729107238352, 355838.164710196957458, 355848.692718063073698, 355859.220752704655752, 355869.748814121063333, 355880.276902311597951, 355890.805017275561113, 355901.333159012254328, 355911.861327520862687, 355922.389522800745908, 355932.917744851147290, 355943.445993671426550, 355953.974269260710571, 355964.502571618417278, 355975.030900743848179, 355985.559256636188366, 355996.087639294739347, 356006.616048718860839, 356017.144484907737933, 356027.672947860730346, 356038.201437577139586, 356048.729954056150746, 356059.258497297065333, 356069.787067299243063, 356080.315664061927237, 356090.844287584419362, 356101.372937865962740, 356111.901614905858878, 356122.430318703409284, 356132.959049257973675, 356143.487806568678934, 356154.016590634826571, 356164.545401455834508, 356175.074239030829631, 356185.603103359229863, 356196.131994440162089, 356206.660912273102440, 356217.189856857294217, 356227.718828191864304, 356238.247826276288833, 356248.776851109694690, 356259.305902691499796, 356269.834981020831037, 356280.364086097164545, 356290.893217919627205, 356301.422376487636939, 356311.951561800378840, 356322.480773857154418, 356333.010012657265179, 356343.539278200012632, 356354.068570484640077, 356364.597889510449022, 356375.127235276682768, 356385.656607782759238, 356396.186007027805317, 356406.715433011238929, 356417.244885732245166, 356427.774365190125536, 356438.303871384181548, 356448.833404313772917, 356459.362963978026528, 356469.892550376418512, 356480.422163508075755, 356490.951803372357972, 356501.481469968508463, 356512.011163295828737, 356522.540883353678510, 356533.070630141242873, 356543.600403657823335, 356554.130203902663197, 356564.660030875238590, 356575.189884574618191, 356585.719765000219923, 356596.249672151287086, 356606.779606027062982, 356617.309566626907326, 356627.839553950005211, 356638.369567995774560, 356648.899608763400465, 356659.429676252300851, 356669.959770461544394, 356680.489891390607227, 356691.020039038674440, 356701.550213405047543, 356712.080414489086252, 356722.610642289975658, 356733.140896807075478, 356743.671178039570805, 356754.201485986879561, 356764.731820648245048, 356775.262182022910565, 356785.792570110235829, 356796.322984909347724, 356806.853426419722382, 356817.383894640544895, 356827.914389571174979, 356838.444911210797727, 356848.975459558772855, 356859.506034614343662, 356870.036636376811657, 356880.567264845478348, 356891.097920019703452, 356901.628601898613852, 356912.159310481511056, 356922.690045767812990, 356933.220807756821159, 356943.751596447720658, 356954.282411839696579, 356964.813253932283260, 356975.344122724607587, 356985.875018215971068, 356996.405940405733418, 357006.936889293079730, 357017.467864877311513, 357027.998867157904897, 357038.529896133870352, 357049.060951804625802, 357059.592034169530962, 357070.123143227712717, 357080.654278978588991, 357091.185441421344876, 357101.716630555398297, 357112.247846379934344, 357122.779088894254528, 357133.310358097718563, 357143.841653989453334, 357154.372976568934973, 357164.904325835290365, 357175.435701787937433, 357185.967104426119477, 357196.498533749079797, 357207.029989756119903, 357217.561472446599510, 357228.092981819820125, 357238.624517874850426, 357249.156080611224752, 357259.687670028069988, 357270.219286124804057, 357280.750928900670260, 357291.282598354911897, 357301.814294486830477, 357312.346017295785714, 357322.877766781020910, 357333.409542941721156, 357343.941345777304377, 357354.473175287013873, 357365.005031470209360, 357375.536914326075930, 357386.068823853973299, 357396.600760053086560, 357407.132722922833636, 357417.664712462457828, 357428.196728671202436, 357438.728771548427176, 357449.260841093258932, 357459.792937305232044, 357470.325060183531605, 357480.857209727342706, 357491.389385936141480, 357501.921588809054811, 357512.453818345500622, 357522.986074544664007, 357533.518357405846473, 357544.050666928349528, 357554.583003111591097, 357565.115365954581648, 357575.647755456913728, 357586.180171617714223, 357596.712614436226431, 357607.245083911868278, 357617.777580043883063, 357628.310102831455879, 357638.842652274004649, 357649.375228370830882, 357659.907831121177878, 357670.440460524230730, 357680.973116579465568, 357691.505799286067486, 357702.038508643337991, 357712.571244650578592, 357723.104007307090797, 357733.636796612176113, 357744.169612565077841, 357754.702455165039282, 357765.235324411420152, 357775.768220303638373, 357786.301142840704415, 357796.834092022152618, 357807.367067847109865, 357817.900070314994082, 357828.433099425048567, 357838.966155176458415, 357849.499237568641547, 357860.032346600841265, 357870.565482272359077, 357881.098644582554698, 357891.631833530555014, 357902.165049115777947, 357912.698291337466799, 357923.231560194981284, 357933.764855687506497, 357944.298177814402152, 357954.831526574911550, 357965.364901968394406, 357975.898303994035814, 357986.431732651253697, 357996.965187939291354, 358007.498669857392088, 358018.032178404857405, 358028.565713580930606, 358039.099275385146029, 358049.632863816455938, 358060.166478874394670, 358070.700120558147319, 358081.233788867073599, 358091.767483800358605, 358102.301205357362051, 358112.834953537385445, 358123.368728339788504, 358133.902529763698112, 358144.436357808473986, 358154.970212473475840, 358165.504093757946976, 358176.038001661072485, 358186.571936182328500, 358197.105897320841905, 358207.639885076088831, 358218.173899447254371, 358228.707940433523618, 358239.242008034372702, 358249.776102248986717, 358260.310223076667171, 358270.844370516773779, 358281.378544568491634, 358291.912745231238659, 358302.446972504199948, 358312.981226386677008, 358323.515506878029555, 358334.049813977559097, 358344.584147684450727, 358355.118507998064160, 358365.652894917642698, 358376.187308442604262, 358386.721748572075740, 358397.256215305475052, 358407.790708641987294, 358418.325228581030387, 358428.859775121847633, 358439.394348263682332, 358449.928948005835991, 358460.463574347668327, 358470.998227288422640, 358481.532906827342231, 358492.067612963845022, 358502.602345697116107, 358513.137105026456993, 358523.671890951285604, 358534.206703470728826, 358544.741542584146373, 358555.276408290839754, 358565.811300590110477, 358576.346219481260050, 358586.881164963531774, 358597.416137036227155, 358607.951135698647704, 358618.486160950094927, 358629.021212789928541, 358639.556291217275430, 358650.091396231553517, 358660.626527832064312, 358671.161686018109322, 358681.696870788873639, 358692.232082143775187, 358702.767320081940852, 358713.302584602846764, 358723.837875705736224, 358734.373193389852531, 358744.908537654497195, 358755.443908498971723, 358765.979305922577623, 358776.514729924674612, 358787.050180504389573, 358797.585657661198638, 358808.121161394286901, 358818.656691703014076, 358829.192248586565256, 358839.727832044358365, 358850.263442075636704, 358860.799078679643571, 358871.334741855738685, 358881.870431603223551, 358892.406147921341471, 358902.941890809452161, 358913.477660266682506, 358924.013456292508636, 358934.549278886232059, 358945.085128047096077, 358955.621003774343990, 358966.156906067335512, 358976.692834925313946, 358987.228790347580798, 358997.764772333437577, 359008.300780882185791, 359018.836815993243363, 359029.372877665620763, 359039.908965898910537, 359050.445080692181364, 359060.981222044851165, 359071.517389956163242, 359082.053584425477311, 359092.589805452036671, 359103.126053035084624, 359113.662327174039092, 359124.198627868026961, 359134.734955116582569, 359145.271308918774594, 359155.807689273962751, 359166.344096181564964, 359176.880529640649911, 359187.416989650810137, 359197.953476210997906, 359208.489989320747554, 359219.026528979360592, 359229.563095185963903, 359240.099687939975411, 359250.636307240638416, 359261.172953087312635, 359271.709625479241367, 359282.246324415726122, 359292.783049896010198, 359303.319801919569727, 359313.856580485473387, 359324.393385593197308, 359334.930217241926584, 359345.467075430962723, 359356.003960159665439, 359366.540871427278034, 359377.077809233102016, 359387.614773576438893, 359398.151764456590172, 359408.688781872915570, 359419.225825824541971, 359429.762896310945507, 359440.299993331369478, 359450.837116885057185, 359461.374266971251927, 359471.911443589429837, 359482.448646738776006, 359492.985876418533735, 359503.523132628120948, 359514.060415366780944, 359524.597724633757025, 359535.135060428525321, 359545.672422750096302, 359556.209811598004308, 359566.747226971376222, 359577.284668869688176, 359587.822137292183470, 359598.359632237988990, 359608.897153706639074, 359619.434701697260607, 359629.972276209213305, 359640.509877241798677, 359651.047504794318229, 359661.585158866073471, 359672.122839456307702, 359682.660546564380638, 359693.198280189593788, 359703.736040331132244, 359714.273826988413930, 359724.811640160682146, 359735.349479847296607, 359745.887346047442406, 359756.425238760537468, 359766.963157985825092, 359777.501103722606786, 359788.039075970125850, 359798.577074727742001, 359809.115099994698539, 359819.653151770413388, 359830.191230054013431, 359840.729334844916593, 359851.267466142424382, 359861.805623945663683, 359872.343808254227042, 359882.882019067183137, 359893.420256383891683, 359903.958520203654189, 359914.496810525772162, 359925.035127349547110, 359935.573470674280543, 359946.111840499215759, 359956.650236823712476, 359967.188659647130407, 359977.727108968538232, 359988.265584787528496, 359998.804087103169877, 360009.342615914880298, 360019.881171221903060, 360030.419753023539670, 360040.958361319091637, 360051.496996107860468, 360062.035657389205880, 360072.574345162371174, 360083.113059426599648, 360093.651800181251019, 360104.190567425685003, 360114.729361159086693, 360125.268181380815804, 360135.807028090173844, 360146.345901286404114, 360156.884800968808122, 360167.423727136745583, 360177.962679789518006, 360188.501658926368691, 360199.040664546657354, 360209.579696649569087, 360220.118755234521814, 360230.657840300817043, 360241.196951847639866, 360251.736089874408208, 360262.275254380307160, 360272.814445364812855, 360283.353662826993968, 360293.892906766326632, 360304.432177182054147, 360314.971474073419813, 360325.510797439841554, 360336.050147280504461, 360346.589523594710045, 360357.128926381876227, 360367.668355641188100, 360378.207811372005381, 360388.747293573571369, 360399.286802245303988, 360409.826337386330124, 360420.365898996125907, 360430.905487073760014, 360441.445101618766785, 360451.984742630389519, 360462.524410107813310, 360473.064104050456081, 360483.603824457619339, 360494.143571328429971, 360504.683344662480522, 360515.223144458723255, 360525.762970716808923, 360536.302823435747996, 360546.842702615074813, 360557.382608253916260, 360567.922540351632051, 360578.462498907465488, 360589.002483920892701, 360599.542495391040575, 360610.082533317268826, 360620.622597698820755, 360631.162688535172492, 360641.702805825392716, 360652.242949568899348, 360662.783119765052106, 360673.323316413094290, 360683.863539512210991, 360694.403789061820135, 360704.944065061281435, 360715.484367509838194, 360726.024696406675503, 360736.565051751269493, 360747.105433542805258, 360757.645841780584306, 360768.186276464024559, 360778.726737592311110, 360789.267225164803676, 360799.807739180803765, 360810.348279639496468, 360820.888846540299710, 360831.429439882514998, 360841.970059665443841, 360852.510705888329539, 360863.051378550531808, 360873.592077651235741, 360884.132803189917468, 360894.673555165762082, 360905.214333578129299, 360915.755138426204212, 360926.295969709462952, 360936.836827427090611, 360947.377711578388698, 360957.918622162716929, 360968.459559179376811, 360979.000522627611645, 360989.541512506722938, 361000.082528816012200, 361010.623571554897353, 361021.164640722563490, 361031.705736318253912, 361042.246858341502957, 361052.788006791321095, 361063.329181667242665, 361073.870382968452759, 361084.411610694252886, 361094.952864844002761, 361105.494145417003892, 361116.035452412441373, 361126.576785829733126, 361137.118145668180659, 361147.659531927085482, 361158.200944605632685, 361168.742383703298401, 361179.283849219267722, 361189.825341152842157, 361200.366859503381420, 361210.908404270128813, 361221.449975452502258, 361231.991573049628641, 361242.533197060925886, 361253.074847485753708, 361263.616524323238991, 361274.158227572857868, 361284.699957233737223, 361295.241713305353187, 361305.783495786890853, 361316.325304677709937, 361326.867139977053739, 361337.409001684281975, 361347.950889798754361, 361358.492804319655988, 361369.034745246346574, 361379.576712578069419, 361390.118706314242445, 361400.660726454050746, 361411.202772996795829, 361421.744845941953827, 361432.286945288593415, 361442.829071036307141, 361453.371223184105475, 361463.913401731348131, 361474.455606677453034, 361484.997838021721691, 361495.540095763280988, 361506.082379901665263, 361516.624690436059609, 361527.167027365765534, 361537.709390690084547, 361548.251780408318155, 361558.794196519767866, 361569.336639023793396, 361579.879107919638045, 361590.421603206661530, 361600.964124884048942, 361611.506672951276414, 361622.049247407470830, 361632.591848252108321, 361643.134475484373979, 361653.677129103569314, 361664.219809109112248, 361674.762515500187874, 361685.305248276097700, 361695.848007436259650, 361706.390792979858816, 361716.933604906254914, 361727.476443214749452, 361738.019307904585730, 361748.562198975239880, 361759.105116425838787, 361769.648060255742166, 361780.191030464193318, 361790.734027050610166, 361801.277050014294218, 361811.820099354488775, 361822.363175070495345, 361832.906277161615435, 361843.449405627150554, 361853.992560466460418, 361864.535741678846534, 361875.078949263552204, 361885.622183219937142, 361896.165443547302857, 361906.708730244892649, 361917.252043312008027, 361927.795382748066913, 361938.338748552312609, 361948.882140723930206, 361959.425559262454044, 361969.969004167011008, 361980.512475437019020, 361991.055973071721382, 362001.599497070419602, 362012.143047432415187, 362022.686624157009646, 362033.230227243620902, 362043.773856691375840, 362054.317512499692384, 362064.861194667813834, 362075.404903195099905, 362085.948638080793899, 362096.492399324313737, 362107.036186924844515, 362117.580000881804153, 362128.123841194319539, 362138.667707861866802, 362149.211600883689243, 362159.755520259204786, 362170.299465987482108, 362180.843438067997340, 362191.387436499993782, 362201.931461282831151, 362212.475512415810954, 362223.019589898118284, 362233.563693729229271, 362244.107823908270802, 362254.651980434777215, 362265.196163307875395, 362275.740372526925057, 362286.284608091227710, 362296.828870000084862, 362307.373158252798021, 362317.917472848668694, 362328.461813787056599, 362339.006181067205034, 362349.550574688415509, 362360.094994650105946, 362370.639440951403230, 362381.183913591841701, 362391.728412570431828, 362402.272937886824366, 362412.817489540029783, 362423.362067529466003, 362433.906671854434535, 362444.451302514353301, 362454.995959508290980, 362465.540642835781910, 362476.085352496011183, 362486.630088488280308, 362497.174850812007207, 362507.719639466376975, 362518.264454450749326, 362528.809295764425769, 362539.354163406707812, 362549.899057376838755, 362560.443977674294729, 362570.988924298260827, 362581.533897248038556, 362592.078896522871219, 362602.623922122293152, 362613.168974045373034, 362623.714052291586995, 362634.259156860120129, 362644.804287750390358, 362655.349444961582776, 362665.894628493057098, 362676.439838344173040, 362686.985074514173903, 362697.530337002419401, 362708.075625808152836, 362718.620940930675715, 362729.166282369464170, 362739.711650123528671, 362750.257044192461763, 362760.802464575448539, 362771.347911271732301, 362781.893384280789178, 362792.438883601746056, 362802.984409234020859, 362813.529961176856887, 362824.075539429672062, 362834.621143991593271, 362845.166774862154853, 362855.712432040483691, 362866.258115525939502, 362876.803825317882001, 362887.349561415554490, 362897.895323818258476, 362908.441112525295466, 362918.986927536083385, 362929.532768849807326, 362940.078636465827003, 362950.624530383502133, 362961.170450602076016, 362971.716397120850161, 362982.262369939126074, 362992.808369056263473, 363003.354394471505657, 363013.900446184212342, 363024.446524193685036, 363034.992628499283455, 363045.538759100192692, 363056.084915995830670, 363066.631099185440689, 363077.177308668266051, 363087.723544443782885, 363098.269806511292700, 363108.816094869922381, 363119.362409519148059, 363129.908750458154827, 363140.455117686418816, 363151.001511203008704, 363161.547931007458828, 363172.094377099012490, 363182.640849476912990, 363193.187348140461836, 363203.733873089076951, 363214.280424322001636, 363224.827001838595606, 363235.373605638102163, 363245.920235719822813, 363256.466892083117273, 363267.013574727228843, 363277.560283651575446, 363288.107018855342176, 363298.653780337946955, 363309.200568098691292, 363319.747382136818487, 363330.294222451630048, 363340.841089042485692, 363351.387981908745132, 363361.934901049535256, 363372.481846464332193, 363383.028818152437452, 363393.575816113094334, 363404.122840345604345, 363414.669890849385411, 363425.216967623564415, 363435.764070667675696, 363446.311199980904348, 363456.858355562493671, 363467.405537411919795, 363477.952745528309606, 363488.499979911081027, 363499.047240559593774, 363509.594527473032940, 363520.141840650816448, 363530.689180092129391, 363541.236545796506107, 363551.783937763015274, 363562.331355991016608, 363572.878800479928032, 363583.426271229051054, 363593.973768237570766, 363604.521291504846886, 363615.068841030239128, 363625.616416813107207, 363636.164018852578010, 363646.711647148127668, 363657.259301698999479, 363667.806982504494954, 363678.354689563973807, 363688.902422876737546, 363699.450182442029472, 363709.997968259267509, 363720.545780327578541, 363731.093618646496907, 363741.641483215265907, 363752.189374033128843, 363762.737291099445429, 363773.285234413458966, 363783.833203974587377, 363794.381199782073963, 363804.929221835220233, 363815.477270133444108, 363826.025344675872475, 363836.573445461981464, 363847.121572491014376, 363857.669725762272719, 363868.217905275116209, 363878.766111028846353, 363889.314343022648245, 363899.862601256056223, 363910.410885728197172, 363920.959196438489016, 363931.507533386175055, 363942.055896570556797, 363952.604285991052166, 363963.152701646962669, 363973.701143537356984, 363984.249611661885865, 363994.798106019676197, 364005.346626610029489, 364015.895173432305455, 364026.443746485805605, 364036.992345769889653, 364047.540971283800900, 364058.089623026899062, 364068.638300998427439, 364079.187005197745748, 364089.735735624213703, 364100.284492277074605, 364110.833275155629963, 364121.382084259239491, 364131.930919587146491, 364142.479781138827093, 364153.028668913408183, 364163.577582910249475, 364174.126523128768895, 364184.675489568151534, 364195.224482227815315, 364205.773501106945332, 364216.322546204901300, 364226.871617521101143, 364237.420715054729953, 364247.969838805147447, 364258.518988771713339, 364269.068164953670930, 364279.617367350263521, 364290.166595960967243, 364300.715850785025395, 364311.265131821739487, 364321.814439070411026, 364332.363772530399729, 364342.913132200948894, 364353.462518081476446, 364364.011930171167478, 364374.561368469498120, 364385.110832975595258, 364395.660323688876815, 364406.209840608702507, 364416.759383734199218, 364427.308953064843081, 364437.858548599993810, 364448.408170338778291, 364458.957818280672655, 364469.507492424920201, 364480.057192770764232, 364490.606919317680877, 364501.156672064913437, 364511.706451011705212, 364522.256256157415919, 364532.806087501463480, 364543.355945042974781, 364553.905828781367745, 364564.455738715943880, 364575.005674846004695, 364585.555637170909904, 364596.105625689961016, 364606.655640402459539, 364617.205681307648774, 364627.755748405004852, 364638.305841693596449, 364648.855961173016112, 364659.406106842332520, 364669.956278700963594, 364680.506476748327259, 364691.056700983608607, 364701.606951406167354, 364712.157228015246801, 364722.707530810323078, 364733.257859790523071, 364743.808214955206495, 364754.358596303791273, 364764.909003835520707, 364775.459437549696304, 364786.009897445735987, 364796.560383522766642, 364807.110895780264400, 364817.661434217414353, 364828.211998833692633, 364838.762589628284331, 364849.313206600607373, 364859.863849749788642, 364870.414519075362477, 364880.965214576455764, 364891.515936252602842, 364902.066684102872387, 364912.617458126740530, 364923.168258323566988, 364933.719084692478646, 364944.269937232893426, 364954.820815944171045, 364965.371720825554803, 364975.922651876346208, 364986.473609095963184, 364997.024592483707238, 365007.575602038763463, 365018.126637760491576, 365028.677699648309499, 365039.228787701460533, 365049.779901919246186, 365060.331042301026173, 365070.882208846102003, 365081.433401553716976, 365091.984620423289016, 365102.535865454061422, 365113.087136645393912, 365123.638433996587992, 365134.189757507003378, 365144.741107175883371, 365155.292483002645895, 365165.843884986476041, 365176.395313126675319, 365186.946767422719859, 365197.498247873794753, 365208.049754479259718, 365218.601287238416262, 365229.152846150682308, 365239.704431215242948, 365250.256042431399692, 365260.807679798570462, 365271.359343315998558, 365281.911032983101904, 365292.462748799065594, 365303.014490763249341, 365313.566258875012863, 365324.118053133599460, 365334.669873538368847, 365345.221720088680740, 365355.773592783836648, 365366.325491623079870, 365376.877416605770122, 365387.429367731208913, 365397.981344998814166, 365408.533348407770973, 365419.085377957439050, 365429.637433647119906, 365440.189515476173256, 365450.741623443842400, 365461.293757549603470, 365471.845917792525142, 365482.398104172141757, 365492.950316687696613, 365503.502555338549428, 365514.054820123827085, 365524.607111043122131, 365535.159428095561452, 365545.711771280562971, 365556.264140597311780, 365566.816536045284010, 365577.368957623664755, 365587.921405331871938, 365598.473879169207066, 365609.026379134913441, 365619.578905228408985, 365630.131457448936999, 365640.684035795857199, 365651.236640268471092, 365661.789270866080187, 365672.341927587985992, 365682.894610433548223, 365693.447319402068388, 365704.000054492847994, 365714.552815705246758, 365725.105603038566187, 365735.658416492107790, 365746.211256065231282, 365756.764121757179964, 365767.317013567313552, 365777.869931494991761, 365788.422875539516099, 365798.975845700071659, 365809.528841976134572, 365820.081864366948139, 365830.634912871872075, 365841.187987490207888, 365851.741088221315295, 365862.294215064437594, 365872.847368018876296, 365883.400547084049322, 365893.953752259199973, 365904.506983543687966, 365915.060240936814807, 365925.613524437940214, 365936.166834046365693, 365946.720169761276338, 365957.273531582090072, 365967.826919508224819, 365978.380333538807463, 365988.933773673314136, 365999.487239911046345, 366010.040732251247391, 366020.594250693218783, 366031.147795236436650, 366041.701365880086087, 366052.254962623468600, 366062.808585466002114, 366073.362234406871721, 366083.915909445553552, 366094.469610581290908, 366105.023337813385297, 366115.577091141138226, 366126.130870563967619, 366136.684676081058569, 366147.238507691829000, 366157.792365395580418, 366168.346249191556126, 366178.900159079232253, 366189.454095057793893, 366200.008057126600761, 366210.562045284954365, 366221.116059532214422, 366231.670099867682438, 366242.224166290718131, 366252.778258800506592, 366263.332377396465745, 366273.886522078013513, 366284.440692844218574, 366294.994889694615267, 366305.549112628505100, 366316.103361645073164, 366326.657636743737385, 366337.211937923799269, 366347.766265184676740, 366358.320618525438476, 366368.874997945677023, 366379.429403444577474, 366389.983835021441337, 366400.538292675570119, 366411.092776406439953, 366421.647286213235930, 366432.201822095317766, 366442.756384051986970, 366453.310972082603257, 366463.865586186409928, 366474.420226362824906, 366484.974892611091491, 366495.529584930627607, 366506.084303320618346, 366516.639047780481633, 366527.193818309460767, 366537.748614906915464, 366548.303437572205439, 366558.858286304573994, 366569.413161103439052, 366579.968061968043912, 366590.522988897690084, 366601.077941891853698, 366611.632920949661639, 366622.187926070590038, 366632.742957253823988, 366643.298014498723205, 366653.853097804647405, 366664.408207170898095, 366674.963342596776783, 366685.518504081701394, 366696.073691624857020, 366706.628905225719791, 366717.184144883416593, 366727.739410597423557, 366738.294702366983984, 366748.850020191399381, 366759.405364070145879, 366769.960734002350364, 366780.516129987372551, 366791.071552024630364, 366801.627000113425311, 366812.182474253000692, 366822.737974442716222, 366833.293500681931619, 366843.849052969948389, 366854.404631306068040, 366864.960235689533874, 366875.515866119938437, 366886.071522596292198, 366896.627205118071288, 366907.182913684519008, 366917.738648295053281, 366928.294408948975615, 366938.850195645529311, 366949.406008384132292, 366959.961847164027859, 366970.517711984517518, 366981.073602845077403, 366991.629519744892605, 367002.185462683322839, 367012.741431659669615, 367023.297426673292648, 367033.853447723493446, 367044.409494809631724, 367054.965567930950783, 367065.521667086810339, 367076.077792276570108, 367086.633943499589805, 367097.190120755054522, 367107.746324042265769, 367118.302553360816091, 367128.858808709715959, 367139.415090088441502, 367149.971397496352438, 367160.527730932692066, 367171.084090396761894, 367181.640475887921639, 367192.196887405531015, 367202.753324948891532, 367213.309788517246488, 367223.866278110130224, 367234.422793726611417, 367244.979335366166197, 367255.535903028037865, 367266.092496711586136, 367276.649116416112520, 367287.205762141034938, 367297.762433885596693, 367308.319131649041083, 367318.875855430844240, 367329.432605230249465, 367339.989381046500057, 367350.546182879188564, 367361.103010727325454, 367371.659864590386860, 367382.216744467732497, 367392.773650358605664, 367403.330582262307871, 367413.887540178257041, 367424.444524105754681, 367435.001534044044092, 367445.558569992543198, 367456.115631950495299, 367466.672719917260110, 367477.229833892197348, 367487.786973874608520, 367498.344139863795135, 367508.901331859116908, 367519.458549859875347, 367530.015793865313753, 367540.573063874850050, 367551.130359887843952, 367561.687681903596967, 367572.245029921410605, 367582.802403940586373, 367593.359803960367572, 367603.917229980288539, 367614.474681999476161, 367625.032160017348360, 367635.589664033264853, 367646.147194046468940, 367656.704750056320336, 367667.262332062120549, 367677.819940063287504, 367688.377574059006292, 367698.935234048694838, 367709.492920031712856, 367720.050632007187232, 367730.608369974652305, 367741.166133933351375, 367751.723923882644158, 367762.281739821832161, 367772.839581750216894, 367783.397449667099863, 367793.955343571898993, 367804.513263463857584, 367815.071209342277143, 367825.629181206692010, 367836.187179056170862, 367846.745202890131623, 367857.303252707875799, 367867.861328508763108, 367878.419430292211473, 367888.977558057405986, 367899.535711803648155, 367910.093891530414112, 367920.652097236830741, 367931.210328922432382, 367941.768586586345918, 367952.326870228105690, 367962.885179846896790, 367973.443515442020725, 367984.001877012895420, 367994.560264558822382, 368005.118678079044912, 368015.677117573039141, 368026.235583040048368, 368036.794074479374103, 368047.352591890317854, 368057.911135272297543, 368068.469704624614678, 368079.028299946512561, 368089.586921237409115, 368100.145568496605847, 368110.704241723404266, 368121.262940917105880, 368131.821666077186819, 368142.380417202773970, 368152.939194293343462, 368163.497997348138597, 368174.056826366460882, 368184.615681347728241, 368195.174562291242182, 368205.733469196304213, 368216.292402062215842, 368226.851360888278577, 368237.410345673968550, 368247.969356418470852, 368258.528393121145200, 368269.087455781351309, 368279.646544398332480, 368290.205658971564844, 368300.764799500175286, 368311.323965983639937, 368321.883158421318512, 368332.442376812396105, 368343.001621156232432, 368353.560891452245414, 368364.120187699678354, 368374.679509897949174, 368385.238858046184760, 368395.798232143977657, 368406.357632190396544, 368416.917058184975758, 368427.476510126958601, 368438.035988015646581, 368448.595491850399412, 368459.155021630518604, 368469.714577355363872, 368480.274159024294931, 368490.833766636613291, 368501.393400191562250, 368511.953059688501526, 368522.512745126790833, 368533.072456505789887, 368543.632193824800197, 368554.191957083123270, 368564.751746280118823, 368575.311561415030155, 368585.871402487333398, 368596.431269496213645, 368606.991162441088818, 368617.551081321202219, 368628.111026136029977, 368638.670996884757187, 368649.230993566685356, 368659.791016181348823, 368670.351064727874473, 368680.911139205622021, 368691.471239614009392, 368702.031365952279884, 368712.591518219793215, 368723.151696415850893, 368733.711900539870840, 368744.272130591096357, 368754.832386568770744, 368765.392668472428340, 368775.952976301312447, 368786.513310054666363, 368797.073669731908012, 368807.634055332338903, 368818.194466855260544, 368828.754904300032649, 368839.315367666014936, 368849.875856952508911, 368860.436372158757877, 368870.996913284179755, 368881.557480328192469, 368892.118073289922904, 368902.678692168788984, 368913.239336964150425, 368923.800007675308734, 368934.360704301623628, 368944.921426842338406, 368955.482175296870992, 368966.042949664522894, 368976.603749944595620, 368987.164576136448886, 368997.725428239384200, 369008.286306252819486, 369018.847210175939836, 369029.408140008163173, 369039.969095748732798, 369050.530077397241257, 369061.091084952699021, 369071.652118414524011, 369082.213177782075945, 369092.774263054714538, 369103.335374231799506, 369113.896511312515941, 369124.457674296281766, 369135.018863182456698, 369145.580077970342245, 369156.141318659239914, 369166.702585248451214, 369177.263877737394068, 369187.825196125369985, 369198.386540411738679, 369208.947910595685244, 369219.509306676685810, 369230.070728654041886, 369240.632176527054980, 369251.193650295026600, 369261.755149957374670, 369272.316675513342489, 369282.878226962289773, 369293.439804303576238, 369304.001407536503393, 369314.563036660489161, 369325.124691674602218, 369335.686372578493319, 369346.248079371289350, 369356.809812052350026, 369367.371570621035062, 369377.933355076704174, 369388.495165418658871, 369399.057001646200661, 369409.618863758689258, 369420.180751755484380, 369430.742665635829326, 369441.304605399142019, 369451.866571044665761, 369462.428562571818475, 369472.990579979901668, 369483.552623268275056, 369494.114692436123732, 369504.676787482982036, 369515.238908408035059, 369525.801055210642517, 369536.363227890222333, 369546.925426445959602, 369557.487650877272245, 369568.049901183578186, 369578.612177364062518, 369589.174479418084957, 369599.736807344947010, 369610.299161144066602, 369620.861540814745240, 369631.423946356284432, 369641.986377768043894, 369652.548835049325135, 369663.111318199487869, 369673.673827217833605, 369684.236362103722058, 369694.798922856571153, 369705.361509475449566, 369715.924121959949844, 369726.486760309315287, 369737.049424522847403, 369747.612114599847700, 369758.174830539734103, 369768.737572341808118, 369779.300340005371254, 369789.863133529783227, 369800.425952914461959, 369810.988798158534337, 369821.551669261476491, 369832.114566222648136, 369842.677489041176159, 369853.240437716653105, 369863.803412248264067, 369874.366412635310553, 369884.929438877268694, 369895.492490973323584, 369906.055568922951352, 369916.618672725337092, 369927.181802379840519, 369937.744957885879558, 369948.308139242697507, 369958.871346449654084, 369969.434579506109003, 369979.997838411421981, 369990.561123164836317, 370001.124433765711728, 370011.687770213407930, 370022.251132507226430, 370032.814520646585152, 370043.377934630669188, 370053.941374458896462, 370064.504840130684897, 370075.068331645161379, 370085.631849001743831, 370096.195392199850176, 370106.758961238781922, 370117.322556117782369, 370127.886176836269442, 370138.449823393486440, 370149.013495788909495, 370159.577194021781906, 370170.140918091346975, 370180.704667997139040, 370191.268443738343194, 370201.832245314319152, 370212.396072724484839, 370222.959925968025345, 370233.523805044416804, 370244.087709952844307, 370254.651640692783985, 370265.215597263537347, 370275.779579664289486, 370286.343587894574739, 370296.907621953578200, 370307.471681840834208, 370318.035767555411439, 370328.599879096844234, 370339.164016464317683, 370349.728179657249711, 370360.292368675000034, 370370.856583516870160, 370381.420824182161596, 370391.985090670175850, 370402.549382980330847, 370413.113701111928094, 370423.678045064327307, 370434.242414836829994, 370444.806810428795870, 370455.371231839584652, 370465.935679068381432, 370476.500152114662342, 370487.064650977728888, 370497.629175656940788, 370508.193726151541341, 370518.758302460948471, 370529.322904584463686, 370539.887532521446701, 370550.452186271199025, 370561.016865833022166, 370571.581571206334047, 370582.146302390436176, 370592.711059384571854, 370603.275842188275419, 370613.840650800731964, 370624.405485221242998, 370634.970345449226443, 370645.535231483983807, 370656.100143324933015, 370666.665080971259158, 370677.230044422380161, 370687.795033677713946, 370698.360048736387398, 370708.925089597876649, 370719.490156261541415, 370730.055248726624995, 370740.620366992428899, 370751.185511058487464, 370761.750680923985783, 370772.315876588225365, 370782.881098050624132, 370793.446345310425386, 370804.011618367105257, 370814.576917219907045, 370825.142241868132260, 370835.707592311198823, 370846.272968548408244, 370856.838370579062030, 370867.403798402578104, 370877.969252018199768, 370888.534731425228529, 370899.100236623140518, 370909.665767611120827, 370920.231324388703797, 370930.796906955016311, 370941.362515309534501, 370951.928149451501667, 370962.493809380277526, 370973.059495095279999, 370983.625206595752388, 370994.190943880996201, 371004.756706950429361, 371015.322495803353377, 371025.888310439127963, 371036.454150857054628, 371047.020017056434881, 371057.585909036744852, 371068.151826797169633, 371078.717770337068941, 371089.283739655860700, 371099.849734752846416, 371110.415755627269391, 371120.981802278605755, 371131.547874706157017, 371142.113972909166478, 371152.680096886993852, 371163.246246639173478, 371173.812422164715827, 371184.378623463213444, 371194.944850533909630, 371205.511103376105893, 371216.077381989220157, 371226.643686372553930, 371237.210016525350511, 371247.776372447027825, 371258.342754136945587, 371268.909161594405305, 371279.475594818824902, 371290.042053809389472, 371300.608538565516938, 371311.175049086567014, 371321.741585371841211, 371332.308147420641035, 371342.874735232384410, 371353.441348806431051, 371364.007988141907845, 371374.574653238407336, 371385.141344095114619, 371395.708060711447615, 371406.274803086649626, 371416.841571220196784, 371427.408365111274179, 371437.975184759299736, 371448.542030163574964, 371459.108901323517784, 371469.675798238313291, 371480.242720907379407, 371490.809669330134057, 371501.376643505762331, 371511.943643433798570, 371522.510669113369659, 371533.077720543893520, 371543.644797724788077, 371554.211900655238423, 371564.779029334662482, 371575.346183762478177, 371585.913363937870599, 371596.480569860315882, 371607.047801529057324, 371617.615058943396434, 371628.182342102867551, 371638.749651006597560, 371649.316985653946176, 371659.884346044331323, 371670.451732177054510, 371681.019144051475450, 371691.586581666895654, 371702.154045022733044, 371712.721534118172713, 371723.289048952690791, 371733.856589525646996, 371744.424155836226419, 371754.991747883846983, 371765.559365667926613, 371776.127009187650401, 371786.694678442378063, 371797.262373431643937, 371807.830094154516701, 371818.397840610530693, 371828.965612798987422, 371839.533410719130188, 371850.101234370376915, 371860.669083752029110, 371871.236958863446489, 371881.804859703988768, 371892.372786272957455, 371902.940738569712266, 371913.508716593554709, 371924.076720343844499, 371934.644749819883145, 371945.212805021146778, 371955.780885946820490, 371966.348992596263997, 371976.917124968837015, 371987.485283064015675, 371998.053466880926862, 372008.621676418988500, 372019.189911677502096, 372029.758172656060196, 372040.326459353615064, 372050.894771769701038, 372061.463109903619625, 372072.031473754730541, 372082.599863322393503, 372093.168278605910018, 372103.736719604639802, 372114.305186317942571, 372124.873678745003417, 372135.442196885414887, 372146.010740738303866, 372156.579310303204693, 372167.147905579244252, 372177.716526565840468, 372188.285173262411263, 372198.853845668199938, 372209.422543782624416, 372219.991267604927998, 372230.560017134586815, 372241.128792370844167, 372251.697593313001562, 372262.266419960476924, 372272.835272312513553, 372283.404150368587580, 372293.973054127942305, 372304.541983589937445, 372315.110938753932714, 372325.679919619229622, 372336.248926185187884, 372346.817958451225422, 372357.387016416527331, 372367.956100080511533, 372378.525209442537744, 372389.094344501907472, 372399.663505257980432, 372410.232691710174549, 372420.801903857733123, 372431.371141699957661, 372441.940405236266088, 372452.509694465959910, 372463.079009388398845, 372473.648350002942607, 372484.217716308892705, 372494.787108305550646, 372505.356525992334355, 372515.925969368603546, 372526.495438433601521, 372537.064933186746202, 372547.634453627339099, 372558.203999754739925, 372568.773571568308398, 372579.343169067346025, 372589.912792251154315, 372600.482441119209398, 372611.052115670754574, 372621.621815905091353, 372632.191541821579449, 372642.761293419694994, 372653.331070698623080, 372663.900873657781631, 372674.470702296413947, 372685.040556613996159, 372695.610436609713361, 372706.180342283099890, 372716.750273633399047, 372727.320230659912340, 372737.890213361999486, 372748.460221738961991, 372759.030255790275987, 372769.600315515184775, 372780.170400913106278, 372790.740511983225588, 372801.310648725018837, 372811.880811137845740, 372822.450999220891390, 372833.021212973631918, 372843.591452395368833, 372854.161717485403642, 372864.732008243212476, 372875.302324667980429, 372885.872666759125423, 372896.443034515948966, 372907.013427937868983, 372917.583847024070565, 372928.154291774088051, 372938.724762187164742, 372949.295258262660354, 372959.865779999876395, 372970.436327398230787, 372981.006900457025040, 372991.577499175560661, 373002.148123553255573, 373012.718773589411285, 373023.289449283329304, 373033.860150634369347, 373044.430877641891129, 373055.001630305312574, 373065.572408623818774, 373076.143212596885860, 373086.714042223757133, 373097.284897503908724, 373107.855778436583932, 373118.426685021084268, 373128.997617256769445, 373139.568575143115595, 373150.139558679307811, 373160.710567864764016, 373171.281602698843926, 373181.852663180849049, 373192.423749310080893, 373202.994861085957382, 373213.565998507780023, 373224.137161574908532, 373234.708350286702625, 373245.279564642405603, 373255.850804641435388, 373266.422070283209905, 373276.993361566972453, 373287.564678492082749, 373298.136021057900507, 373308.707389263785444, 373319.278783108980861, 373329.850202592962887, 373340.421647714916617, 373350.993118474434596, 373361.564614870585501, 373372.136136902845465, 373382.707684570632409, 373393.279257873131428, 373403.850856809702236, 373414.422481379762758, 373424.994131582672708, 373435.565807417733595, 373446.137508884305134, 373456.709235981688835, 373467.280988709244411, 373477.852767066389788, 373488.424571052251849, 373498.996400666481350, 373509.568255908205174, 373520.140136776841246, 373530.712043271749280, 373541.283975392230786, 373551.855933137587272, 373562.427916507294867, 373572.999925500538666, 373583.571960116736591, 373594.144020355248358, 373604.716106215433683, 373615.288217696594074, 373625.860354798089247, 373636.432517519220710, 373647.004705859406386, 373657.576919817947783, 373668.149159394204617, 373678.721424587594811, 373689.293715397303458, 373699.866031822806690, 373710.438373863289598, 373721.010741518228315, 373731.583134786924347, 373742.155553668795619, 373752.727998163085431, 373763.300468269153498, 373773.872963986417744, 373784.445485314121470, 373795.018032251740806, 373805.590604798402637, 373816.163202953757718, 373826.735826716874726, 373837.308476087171584, 373847.881151064066216, 373858.453851646860130, 373869.026577834913041, 373879.599329627584666, 373890.172107024118304, 373900.744910023990087, 373911.317738626443315, 373921.890592830895912, 373932.463472636649385, 373943.036378043005243, 373953.609309049381409, 373964.182265655195806, 373974.755247859575320, 373985.328255661996081, 373995.901289061876014, 374006.474348058400210, 374017.047432651044801, 374027.620542839111295, 374038.193678621901199, 374048.766839998890646, 374059.340026969206519, 374069.913239532441366, 374080.486477687663864, 374091.059741434466559, 374101.633030772034544, 374112.206345699785743, 374122.779686217079870, 374133.353052323276643, 374143.926444017619360, 374154.499861299525946, 374165.073304168356117, 374175.646772623411380, 374186.220266664051451, 374196.793786289636046, 374207.367331499524880, 374217.940902293077670, 374228.514498669537716, 374239.088120628322940, 374249.661768168793060, 374260.235441290191375, 374270.809139992052224, 374281.382864273502491, 374291.956614134076517, 374302.530389573017601, 374313.104190589743666, 374323.678017183498014, 374334.251869353698567, 374344.825747099646833, 374355.399650420760736, 374365.973579316283576, 374376.547533785691485, 374387.121513828285970, 374397.695519443310332, 374408.269550630182493, 374418.843607388203964, 374429.417689716909081, 374439.991797615366522, 374450.565931083110627, 374461.140090119501110, 374471.714274723723065, 374482.288484895252623, 374492.862720633391291, 374503.436981937498786, 374514.011268806934822, 374524.585581241000909, 374535.159919239114970, 374545.734282800636720, 374556.308671924751252, 374566.883086610934697, 374577.457526858546771, 374588.031992666830774, 374598.606484035262838, 374609.181000963144470, 374619.755543449718971, 374630.330111494520679, 374640.904705096676480, 374651.479324255720712, 374662.053968970954884, 374672.628639241622295, 374683.203335067199077, 374693.778056446986739, 374704.352803380286787, 374714.927575866575353, 374725.502373905095737, 374736.077197495149449, 374746.652046636154409, 374757.226921327470336, 374767.801821568456944, 374778.376747358415741, 374788.951698696648236, 374799.526675582572352, 374810.101678015547805, 374820.676705994876102, 374831.251759519975167, 374841.826838590088300, 374852.401943204575218, 374862.977073362912051, 374873.552229064400308, 374884.127410308225080, 374894.702617093920708, 374905.277849420788698, 374915.853107288130559, 374926.428390695306007, 374937.003699641674757, 374947.579034126596525, 374958.154394149372820, 374968.729779709421564, 374979.305190806102473, 374989.880627438658848, 375000.456089606566820, 375011.031577309011482, 375021.607090545468964, 375032.182629315357190, 375042.758193617803045, 375053.333783452340867, 375063.909398818155751, 375074.485039714782033, 375085.060706141463015, 375095.636398097500205, 375106.212115582311526, 375116.787858595314901, 375127.363627135695424, 375137.939421202929225, 375148.515240796259604, 375159.091085915162694, 375169.666956558940001, 375180.242852726893034, 375190.818774418381508, 375201.394721632823348, 375211.970694369461853, 375222.546692627714947, 375233.122716406884138, 375243.698765706329141, 375254.274840525526088, 375264.850940863601863, 375275.427066720090806, 375286.003218094236217, 375296.579394985456020, 375307.155597392993513, 375317.731825316324830, 375328.308078754693270, 375338.884357707516756, 375349.460662174213212, 375360.036992153967731, 375370.613347646198235, 375381.189728650264442, 375391.766135165467858, 375402.342567191226408, 375412.919024726958014, 375423.495507771847770, 375434.072016325255390, 375444.648550386657007, 375455.225109955295920, 375465.801695030590054, 375476.378305611899123, 375486.954941698466428, 375497.531603289768100, 375508.108290385047439, 375518.685002983722370, 375529.261741085094400, 375539.838504688523244, 375550.415293793426827, 375560.992108399106655, 375571.568948504806031, 375582.145814110001083, 375592.722705214109737, 375603.299621816317085, 375613.876563916099258, 375624.453531512641348, 375635.030524605535902, 375645.607543193909805, 375656.184587277355604, 375666.761656854941975, 375677.338751926145051, 375687.915872490324546, 375698.493018546840176, 375709.070190095051657, 375719.647387134260498, 375730.224609663768206, 375740.801857683109120, 375751.379131191468332, 375761.956430188263766, 375772.533754672796931, 375783.111104644427542, 375793.688480102573521, 375804.265881046652794, 375814.843307475792244, 375825.420759389468003, 375835.998236787039787, 375846.575739667809103, 375857.153268031135667, 375867.730821876437403, 375878.308401202957612, 375888.886006010172423, 375899.463636297383346, 375910.041292063891888, 375920.618973308999557, 375931.196680032240693, 375941.774412232800387, 375952.352169910212979, 375962.929953063605353, 375973.507761692395434, 375984.085595796059351, 375994.663455373782199, 376005.241340425098315, 376015.819250949192792, 376026.397186945483554, 376036.975148413272109, 376047.553135352034587, 376058.131147760956082, 376068.709185639512725, 376079.287248987064231, 376089.865337802853901, 376100.443452086357865, 376111.021591836819425, 376121.599757053598296, 376132.177947736112401, 376142.756163883721456, 376153.334405495726969, 376163.912672571372241, 376174.490965110308025, 376185.069283111544792, 376195.647626574675087, 376206.225995499000419, 376216.804389883822296, 376227.382809728442226, 376237.961255032336339, 376248.539725794806145, 376259.118222015211359, 376269.696743692911696, 376280.275290827150457, 376290.853863417461980, 376301.432461463089567, 376312.011084963334724, 376322.589733917731792, 376333.168408325407654, 376343.747108185838442, 376354.325833498383872, 376364.904584262461867, 376375.483360477199312, 376386.062162142130546, 376396.640989256615285, 376407.219841819955036, 376417.798719831393100, 376428.377623290522024, 376438.956552196468692, 376449.535506548709236, 376460.114486346545164, 376470.693491589394398, 376481.272522276500240, 376491.851578407338820, 376502.430659981211647, 376513.009766997362021, 376523.588899455382489, 376534.168057354458142, 376544.747240693948697, 376555.326449473155662, 376565.905683691613376, 376576.484943348506931, 376587.064228443312459, 376597.643538975273259, 376608.222874943807255, 376618.802236348215956, 376629.381623187859077, 376639.961035462154541, 376650.540473170462064, 376661.119936311966740, 376671.699424886202905, 376682.278938892646693, 376692.858478330250364, 376703.438043198664673, 376714.017633497132920, 376724.597249225073028, 376735.176890381786507, 376745.756556966633070, 376756.336248979030643, 376766.915966418222524, 376777.495709283626638, 376788.075477574660908, 376798.655271290510427, 376809.235090430709533, 376819.814934994501527, 376830.394804981304333, 376840.974700390361249, 376851.554621221148409, 376862.134567472967319, 376872.714539145119488, 376883.294536237022839, 376893.874558748153504, 376904.454606677580159, 376915.034680024895351, 376925.614778789284173, 376936.194902970339172, 376946.775052567129023, 376957.355227579188067, 376967.935428005876020, 376978.515653846436180, 376989.095905100286473, 376999.676181766786613, 377010.256483845238108, 377020.836811335000675, 377031.417164235550445, 377041.997542546130717, 377052.577946266101208, 377063.158375394879840, 377073.738829931709915, 377084.319309876067564, 377094.899815227254294, 377105.480345984629821, 377116.060902147495653, 377126.641483715269715, 377137.222090687253512, 377147.802723062923178, 377158.383380841463804, 377168.964064022351522, 377179.544772604887839, 377190.125506588432472, 377200.706265972403344, 377211.287050756043755, 377221.867860938771628, 377232.448696519946679, 377243.029557498986833, 377253.610443875135388, 377264.191355647752061, 377274.772292816254776, 377285.353255379945040, 377295.934243338182569, 377306.515256690385286, 377317.096295435912907, 377327.677359573950525, 377338.258449104032479, 377348.839564025460277, 377359.420704337593634, 377370.001870039792266, 377380.583061131474096, 377391.164277611766011, 377401.745519480260555, 377412.326786736259237, 377422.908079379063565, 377433.489397408033255, 377444.070740822528023, 377454.652109622024000, 377465.233503805648070, 377475.814923372934572, 377486.396368323185015, 377496.977838655759115, 377507.559334370016586, 377518.140855465317145, 377528.722401941020507, 377539.303973796428181, 377549.885571030958090, 377560.467193643969949, 377571.048841634707060, 377581.630515002645552, 377592.212213747086935, 377602.793937867449131, 377613.375687363091856, 377623.957462233258411, 377634.539262477424927, 377645.121088094834704, 377655.702939085022081, 377666.284815447113942, 377676.866717180644628, 377687.448644284799229, 377698.030596759170294, 377708.612574602826498, 377719.194577815360390, 377729.776606396131683, 377740.358660344325472, 377750.940739659417886, 377761.522844340710435, 377772.104974387621041, 377782.687129799451213, 377793.269310575618874, 377803.851516715425532, 377814.433748218172695, 377825.016005083336495, 377835.598287310160231, 377846.180594898120034, 377856.762927846517414, 377867.345286154712085, 377877.927669821947347, 377888.510078847873956, 377899.092513231502380, 377909.674972972425167, 377920.257458070002031, 377930.839968523359857, 377941.422504332091194, 377952.005065495497547, 377962.587652012822218, 377973.170263883599546, 377983.752901107014623, 377994.335563682485372, 378004.918251609487925, 378015.500964887265582, 378026.083703515178058, 378036.666467492585070, 378047.249256818846334, 378057.832071493379772, 378068.414911515428685, 378078.997776884410996, 378089.580667599744629, 378100.163583660731092, 378110.746525066671893, 378121.329491816926748, 378131.912483911029994, 378142.495501348166727, 378153.078544127696659, 378163.661612249095924, 378174.244705711607821, 378184.827824514708482, 378195.410968657641206, 378205.994138139765710, 378216.577332960499916, 378227.160553119145334, 378237.743798615119886, 378248.327069447783288, 378258.910365616437048, 378269.493687120440882, 378280.077033959212713, 378290.660406132112257, 378301.243803638382815, 378311.827226477558725, 378322.410674648883287, 378332.994148151658010, 378343.577646985359024, 378354.161171149287838, 378364.744720642862376, 378375.328295465384144, 378385.911895616154652, 378396.495521094708238, 378407.079171900229994, 378417.662848032137845, 378428.246549489791505, 378438.830276272608899, 378449.414028379949741, 378459.997805810999125, 378470.581608565291390, 378481.165436642128043, 378491.749290040810592, 378502.333168760873377, 378512.917072801443283, 378523.501002162054647, 378534.084956841950770, 378544.668936840549577, 378555.252942157268990, 378565.836972791410517, 378576.421028742333874, 378587.005110009340569, 378597.589216591848526, 378608.173348489217460, 378618.757505700807087, 378629.341688225977123, 378639.925896064029075, 378650.510129214439075, 378661.094387676450424, 378671.678671449481044, 378682.262980532832444, 378692.847314925980754, 378703.431674628227483, 378714.016059638932347, 378724.600469957396854, 378735.184905583038926, 378745.769366515218280, 378756.353852753236424, 378766.938364296511281, 378777.522901144460775, 378788.107463296328206, 378798.692050751415081, 378809.276663509313948, 378819.861301569209900, 378830.445964930579066, 378841.030653592722956, 378851.615367554884870, 378862.200106816599146, 378872.784871377109084, 378883.369661235774402, 378893.954476392071228, 378904.539316845301073, 378915.124182594765443, 378925.709073639940470, 378936.293989980011247, 378946.878931614570320, 378957.463898542860989, 378968.048890764126554, 378978.633908277901355, 378989.218951083486900, 378999.804019180184696, 379010.389112567412667, 379020.974231244588736, 379031.559375210897997, 379042.144544465932995, 379052.729739008820616, 379063.314958839095198, 379073.900203956116457, 379084.485474359127693, 379095.070770047605038, 379105.656091020791791, 379116.241437278105877, 379126.826808818848804, 379137.412205642613117, 379147.997627748467494, 379158.583075135888066, 379169.168547804292757, 379179.754045752983075, 379190.339568981318735, 379200.925117488659453, 379211.510691274423152, 379222.096290337911341, 379232.681914678483736, 379243.267564295558259, 379253.853239188378211, 379264.438939356419723, 379275.024664798984304, 379285.610415515489876, 379296.196191505237948, 379306.781992767588235, 379317.367819301958662, 379327.953671107767150, 379338.539548184198793, 379349.125450530729722, 379359.711378146661445, 379370.297331031470094, 379380.883309184282552, 379391.469312604749575, 379402.055341292056255, 379412.641395245620515, 379423.227474464743864, 379433.813578948844224, 379444.399708697339520, 379454.985863709531259, 379465.572043984720949, 379476.158249522326514, 379486.744480321649462, 379497.330736382165924, 379507.917017703235615, 379518.503324284043629, 379529.089656124124303, 379539.676013222837355, 379550.262395579426084, 379560.848803193424828, 379571.435236063960474, 379582.021694190741982, 379592.608177572779823, 379603.194686209550127, 379613.781220100470819, 379624.367779244843405, 379634.954363642085809, 379645.540973291557748, 379656.127608192560729, 379666.714268344512675, 379677.300953746715095, 379687.887664398644120, 379698.474400299601257, 379709.061161448829807, 379719.647947845922317, 379730.234759490063880, 379740.821596380672418, 379751.408458517107647, 379761.995345898729283, 379772.582258524897043, 379783.169196395028848, 379793.756159508426208, 379804.343147864507046, 379814.930161462572869, 379825.517200301983394, 379836.104264382156543, 379846.691353702393826, 379857.278468262113165, 379867.865608060674276, 379878.452773097320460, 379889.039963371586055, 379899.627178882830776, 379910.214419630181510, 379920.801685613289010, 379931.388976831396576, 379941.976293283922132, 379952.563634970050771, 379963.151001889375038, 379973.738394041080028, 379984.325811424583662, 379994.913254039362073, 380005.500721884600352, 380016.088214959774632, 380026.675733264244627, 380037.263276797311846, 380047.850845558394212, 380058.438439546909649, 380069.026058762101457, 380079.613703203329351, 380090.201372870011255, 380100.789067761565093, 380111.376787877234165, 380121.964533216436394, 380132.552303778589703, 380143.140099563053809, 380153.727920569072012, 380164.315766796178650, 380174.903638243675232, 380185.491534910805058, 380196.079456797044259, 380206.667403901694342, 380217.255376224231441, 380227.843373763957061, 380238.431396520230919, 380249.019444492296316, 380259.607517679745797, 380270.195616081822664, 380280.783739697886631, 380291.371888527355623, 380301.960062569589354, 380312.548261823831126, 380323.136486289557070, 380333.724735966126900, 380344.313010852900334, 380354.901310949178878, 380365.489636254380457, 380376.077986767922994, 380386.666362489049789, 380397.254763417178765, 380407.843189551786054, 380418.431640892056748, 380429.020117437466979, 380439.608619187376462, 380450.197146141028497, 380460.785698297957424, 380471.374275657464750, 380481.962878218793776, 380492.551505981537048, 380503.140158944821451, 380513.728837108239532, 380524.317540470976382, 380534.906269032566343, 380545.495022792194504, 380556.083801749336999, 380566.672605903295334, 380577.261435253545642, 380587.850289799273014, 380598.439169539953582, 380609.028074475005269, 380619.617004603729583, 380630.205959925486241, 380640.794940439576749, 380651.383946145593654, 380661.972977042663842, 380672.562033130205236, 380683.151114407693967, 380693.740220874315128, 380704.329352529603057, 380714.918509372859262, 380725.507691403385252, 380736.096898620715365, 380746.686131023976486, 380757.275388612819370, 380767.864671386370901, 380778.453979343990795, 380789.043312485329807, 380799.632670809398405, 380810.222054315730929, 380820.811463003803510, 380831.400896872743033, 380841.990355922142044, 380852.579840151127428, 380863.169349559349939, 380873.758884145936463, 380884.348443910363130, 380894.938028851989657, 380905.527638970117550, 380916.117274264222942, 380926.706934733607341, 380937.296620377572253, 380947.886331195593812, 380958.476067186973523, 380969.065828351129312, 380979.655614687420893, 380990.245426195149776, 381000.835262873733882, 381011.425124722649343, 381022.015011740964837, 381032.604923928331118, 381043.194861283933278, 381053.784823807247449, 381064.374811497633345, 381074.964824354450684, 381085.554862377000973, 381096.144925564702135, 381106.735013916972093, 381117.325127433054149, 381127.915266112424433, 381138.505429954384454, 381149.095618958352134, 381159.685833123570774, 381170.276072449632920, 381180.866336935665458, 381191.456626581202727, 381202.046941385546234, 381212.637281348055694, 381223.227646468265448, 381233.818036745244171, 381244.408452178467996, 381254.998892767413054, 381265.589358511380851, 381276.179849409672897, 381286.770365461765323, 381297.360906667017844, 381307.951473024673760, 381318.542064534267411, 381329.132681195042096, 381339.723323006415740, 381350.313989967689849, 381360.904682078340556, 381371.495399337669369, 381382.086141745036002, 381392.676909299858380, 381403.267702001438010, 381413.858519849251024, 381424.449362842540722, 381435.040230980725028, 381445.631124263280071, 381456.222042689332739, 381466.812986258475576, 381477.403954969893675, 381487.994948823121376, 381498.585967817401979, 381509.177011952153407, 381519.768081226793583, 381530.359175640682224, 381540.950295193004422, 381551.541439883410931, 381562.132609711086843, 381572.723804675450083, 381583.315024775860365, 381593.906270011619199, 381604.497540382202715, 381615.088835886970628, 381625.680156525224447, 381636.271502296440303, 381646.862873199803289, 381657.454269234905951, 381668.045690400991589, 381678.637136697361711, 381689.228608123492450, 381699.820104678743519, 381710.411626362474635, 381721.003173173987307, 381731.594745112699457, 381742.186342178029008, 381752.777964369335677, 381763.369611685862765, 381773.961284127202816, 381784.552981692482717, 381795.144704381236807, 381805.736452192766592, 381816.328225126431789, 381826.920023181592114, 381837.511846357723698, 381848.103694654069841, 381858.695568070048466, 381869.287466605077498, 381879.879390258516651, 381890.471339029551018, 381901.063312917773146, 381911.655311922484543, 381922.247336042986717, 381932.839385278755799, 381943.431459629093297, 381954.023559093417134, 381964.615683671028819, 381975.207833361346275, 381985.800008163671009, 381996.392208077537362, 382006.984433102130424, 382017.576683236926328, 382028.168958481226582, 382038.761258834449109, 382049.353584295953624, 382059.945934865099844, 382070.538310541247483, 382081.130711323814467, 382091.723137212102301, 382102.315588205645327, 382112.908064303570427, 382123.500565505353734, 382134.093091810413171, 382144.685643218050245, 382155.278219727682881, 382165.870821338670794, 382176.463448050373700, 382187.056099862209521, 382197.648776773363352, 382208.241478783485945, 382218.834205891762394, 382229.426958097610623, 382240.019735400390346, 382250.612537799461279, 382261.205365294183139, 382271.798217883973848, 382282.391095568193123, 382292.983998346200678, 382303.576926217298023, 382314.169879181135911, 382324.762857236724813, 382335.355860383540858, 382345.948888621060178, 382356.541941948584281, 382367.135020365414675, 382377.728123871027492, 382388.321252464840654, 382398.914406146097463, 382409.507584914157633, 382420.100788768613711, 382430.694017708534375, 382441.287271733512171, 382451.880550842790399, 382462.473855035786983, 382473.067184311861638, 382483.660538670374081, 382494.253918110742234, 382504.847322632325813, 382515.440752234484535, 382526.034206916578114, 382536.627686678024475, 382547.221191518125124, 382557.814721436181571, 382568.408276431786362, 382579.001856504124589, 382589.595461652672384, 382600.189091876731254, 382610.782747175719123, 382621.376427549053915, 382631.970132995920721, 382642.563863515912089, 382653.157619108271319, 382663.751399772416335, 382674.345205507590435, 382684.939036313386168, 382695.532892188988626, 382706.126773133873940, 382716.720679147401825, 382727.314610228873789, 382737.908566377824172, 382748.502547593496274, 382759.096553875249811, 382769.690585222444497, 382780.284641634498257, 382790.878723110829014, 382801.472829650738277, 382812.066961253585760, 382822.661117918847594, 382833.255299645767082, 382843.849506433820352, 382854.443738282308914, 382865.037995190592483, 382875.632277158088982, 382886.226584184216335, 382896.820916268217843, 382907.415273409569636, 382918.009655607573222, 382928.604062861762941, 382939.198495171207469, 382949.792952535615768, 382960.387434954114724, 382970.981942426238675, 382981.576474951230921, 382992.171032528509386, 383002.765615157491993, 383013.360222837538458, 383023.954855567892082, 383034.549513348145410, 383045.144196177483536, 383055.738904055440798, 383066.333636981260497, 383076.928394954302348, 383087.523177974042483, 383098.117986039782409, 383108.712819150940049, 383119.307677306816913, 383129.902560506947339, 383140.497468750458211, 383151.092402036883868, 383161.687360365642235, 383172.282343736034818, 383182.877352147363126, 383193.472385599103291, 383204.067444090556819, 383214.662527621199843, 383225.257636190275662, 383235.852769797202200, 383246.447928441455588, 383257.043112122279126, 383267.638320839090738, 383278.233554591308348, 383288.828813378175255, 383299.424097199225798, 383310.019406053761486, 383320.614739941083826, 383331.210098860668950, 383341.805482811876573, 383352.400891794008203, 383362.996325806539971, 383373.591784848831594, 383384.187268920184579, 383394.782778019958641, 383405.378312147571705, 383415.973871302499902, 383426.569455483928323, 383437.165064691391308, 383447.760698924073949, 383458.356358181627002, 383468.952042463177349, 383479.547751768201124, 383490.143486095999833, 383500.739245446107816, 383511.335029817710165, 383521.930839210341219, 383532.526673623244278, 383543.122533055895474, 383553.718417507538106, 383564.314326977706514, 383574.910261465702206, 383585.506220970884897, 383596.102205492672510, 383606.698215030366555, 383617.294249583443161, 383627.890309151087422, 383638.486393732891884, 383649.082503328158055, 383659.678637936187442, 383670.274797556514386, 383680.870982188265771, 383691.467191830975935, 383702.063426484062802, 383712.659686146886088, 383723.255970818689093, 383733.852280498889741, 383744.448615187022369, 383755.044974882272072, 383765.641359584114980, 383776.237769291969016, 383786.834204005077481, 383797.430663722858299, 383808.027148444671184, 383818.623658169934060, 383829.220192898064852, 383839.816752628248651, 383850.413337360136211, 383861.009947092912626, 383871.606581825995818, 383882.203241558803711, 383892.799926290637814, 383903.396636020916048, 383913.993370749056339, 383924.590130474360194, 383935.186915196187329, 383945.783724914013874, 383956.380559627083130, 383966.977419334813021, 383977.574304036737885, 383988.171213731984608, 383998.768148420087527, 384009.365108100406360, 384019.962092772300821, 384030.559102435072418, 384041.156137088139076, 384051.753196730976924, 384062.350281362887472, 384072.947390983172227, 384083.544525591365527, 384094.141685186652467, 384104.738869768567383, 384115.336079336411785, 384125.933313889545389, 384136.530573427444324, 384147.127857949293684, 384157.725167454744224, 384168.322501942981035, 384178.919861413363833, 384189.517245865368750, 384200.114655298355501, 384210.712089711567387, 384221.309549104538746, 384231.907033476571087, 384242.504542827082332, 384253.102077155373991, 384263.699636460980400, 384274.297220743203070, 384284.894830001227092, 384295.492464234645013, 384306.090123442758340, 384316.687807625043206, 384327.285516780684702, 384337.883250909217168, 384348.481010009942111, 384359.078794082335662, 384369.676603125641122, 384380.274437139334623, 384390.872296122775879, 384401.470180075266398, 384412.068088996224105, 384422.666022885008715, 384433.263981741154566, 384443.861965563730337, 384454.459974352386780, 384465.058008106367197, 384475.656066825205926, 384486.254150508088060, 384496.852259154431522, 384507.450392763596028, 384518.048551335115917, 384528.646734868118074, 384539.244943362195045, 384549.843176816706546, 384560.441435230895877, 384571.039718604297377, 384581.638026936096139, 384592.236360225884710, 384602.834718472848181, 384613.433101676462684, 384624.031509836146142, 384634.629942951141857, 384645.228401020925958, 384655.826884044858161, 384666.425392022414599, 384677.023924952780362, 384687.622482835373376, 384698.221065669727977, 384708.819673455087468, 384719.418306190811563, 384730.016963876376394, 384740.615646511141676, 384751.214354094350711, 384761.813086625537835, 384772.411844104004558, 384783.010626529168803, 384793.609433900390286, 384804.208266217028722, 384814.807123478443827, 384825.406005684111733, 384836.004912833275739, 384846.603844925411977, 384857.202801959821954, 384867.801783936098218, 384878.400790853367653, 384888.999822710989974, 384899.598879508557729, 384910.197961245256010, 384920.797067920619156, 384931.396199533890467, 384941.995356084546074, 384952.594537571829278, 384963.193743995390832, 384973.792975354299415, 384984.392231648147572, 384994.991512876120396, 385005.590819037810434, 385016.190150132402778, 385026.789506159489974, 385037.388887118198909, 385047.988293008063920, 385058.587723828561138, 385069.187179578817450, 385079.786660258367192, 385090.386165866511874, 385100.985696402727626, 385111.585251866374165, 385122.184832256694790, 385132.784437573223840, 385143.384067815321032, 385153.983722982346080, 385164.583403073658701, 385175.183108088618610, 385185.782838026585523, 385196.382592887035571, 385206.982372669212054, 385217.582177372649312, 385228.182006996648852, 385238.781861540570389, 385249.381741003890056, 385259.981645385792945, 385270.581574685871601, 385281.181528903369326, 385291.781508037762251, 385302.381512088293675, 385312.981541054439731, 385323.581594935560133, 385334.181673731014598, 385344.781777440337464, 385355.381906062713824, 385365.982059597503394, 385376.582238044240512, 385387.182441402226686, 385397.782669670821633, 385408.382922849443275, 385418.983200937451329, 385429.583503934205510, 385440.183831839181948, 385450.784184651682153, 385461.384562371007632, 385471.984964996692725, 385482.585392528038938, 385493.185844964347780, 385503.786322305211797, 385514.386824549816083, 385524.987351697636768, 385535.587903748091776, 385546.188480700424407, 385556.789082553994376, 385567.389709308336023, 385577.990360962809063, 385588.591037516773213, 385599.191738969529979, 385609.792465320555493, 385620.393216569151264, 385630.993992714735214, 385641.594793756667059, 385652.195619694422930, 385662.796470527246129, 385673.397346254612785, 385683.998246875882614, 385694.599172390357126, 385705.200122797512449, 385715.801098096708301, 385726.402098287362605, 385737.003123368718661, 385747.604173340310808, 385758.205248201440554, 385768.806347951467615, 385779.407472589868121, 385790.008622115885373, 385800.609796528995503, 385811.210995828674641, 385821.812220014107879, 385832.413469084713142, 385843.014743039966561, 385853.616041879169643, 385864.217365601740312, 385874.818714207096491, 385885.420087694539689, 385896.021486063429620, 385906.622909313358832, 385917.224357443396002, 385927.825830453133676, 385938.427328341873363, 385949.028851109032985, 385959.630398753972258, 385970.231971276109107, 385980.833568674803246, 385991.435190949356183, 386002.036838099360466, 386012.638510124001186, 386023.240207022638060, 386033.841928794805426, 386044.443675439746585, 386055.045446956995875, 386065.647243345738389, 386076.249064605566673, 386086.850910735665821, 386097.452781735628378, 386108.054677604581229, 386118.656598342175130, 386129.258543947536964, 386139.860514420201071, 386150.462509759585373, 386161.064529964874964, 386171.666575035720598, 386182.268644971307367, 386192.870739771111403, 386203.472859434434213, 386214.075003960693721, 386224.677173349307850, 386235.279367599578109, 386245.881586710980628, 386256.483830682816915, 386267.086099514504895, 386277.688393205520697, 386288.290711755049415, 386298.893055162625387, 386309.495423427550122, 386320.097816549241543, 386330.700234527117573, 386341.302677360479720, 386351.905145048745908, 386362.507637591334060, 386373.110154987662099, 386383.712697236973327, 386394.315264338743873, 386404.917856292275246, 386415.520473097043578, 386426.123114752408583, 386436.725781257729977, 386447.328472612367477, 386457.931188815855421, 386468.533929867320694, 386479.136695766355842, 386489.739486512262374, 386500.342302104458213, 386510.945142542244866, 386521.548007825098466, 386532.150897952320520, 386542.753812923387159, 386553.356752737658098, 386563.959717394434847, 386574.562706893135328, 386585.165721233235672, 386595.768760413979180, 386606.371824434841983, 386616.974913295183796, 386627.578026994364336, 386638.181165531801526, 386648.784328906913288, 386659.387517118942924, 386669.990730167424772, 386680.593968051602133, 386691.197230771009345, 386701.800518324947916, 386712.403830712777562, 386723.007167933916207, 386733.610529987781774, 386744.213916873733979, 386754.817328591074329, 386765.420765139278956, 386776.024226517765783, 386786.627712725836318, 386797.231223762792069, 386807.834759628225584, 386818.438320321380161, 386829.041905841731932, 386839.645516188582405, 386850.249151361291297, 386860.852811359276529, 386871.456496182014234, 386882.060205828805920, 386892.663940298953094, 386903.267699591990095, 386913.871483707276639, 386924.475292644172441, 386935.079126401979011, 386945.682984980114270, 386956.286868378054351, 386966.890776595158968, 386977.494709630671423, 386988.098667484184261, 386998.702650154882576, 387009.306657642417122, 387019.910689945856575, 387030.514747064793482, 387041.118828998471145, 387051.722935746365692, 387062.327067307953257, 387072.931223682418931, 387083.535404869238846, 387094.139610867947340, 387104.743841677613091, 387115.348097297828645, 387125.952377727953717, 387136.556682967348024, 387147.161013015371282, 387157.765367871499620, 387168.369747535034548, 387178.974152005452197, 387189.578581282054074, 387200.183035364141688, 387210.787514251249377, 387221.392017942736857, 387231.996546437905636, 387242.601099736290053, 387253.205677837133408, 387263.810280739853624, 387274.414908443926834, 387285.019560948654544, 387295.624238253338262, 387306.228940357512329, 387316.833667260478251, 387327.438418961712159, 387338.043195460515562, 387348.647996756248176, 387359.252822848444339, 387369.857673736230936, 387380.462549419258721, 387391.067449896770995, 387401.672375168185681, 387412.277325232862495, 387422.882300090219360, 387433.487299739674199, 387444.092324180470314, 387454.697373412258457, 387465.302447434165515, 387475.907546245725825, 387486.512669846124481, 387497.117818235012237, 387507.722991411632393, 387518.328189375344664, 387528.933412125625182, 387539.538659661891870, 387550.143931983388029, 387560.749229089589790, 387571.354550979798660, 387581.959897653432563, 387592.565269109967630, 387603.170665348763578, 387613.776086369121913, 387624.381532170576975, 387634.987002752313856, 387645.592498113866895, 387656.198018254537601, 387666.803563173743896, 387677.409132870903704, 387688.014727345318533, 387698.620346596464515, 387709.225990623759571, 387719.831659426505212, 387730.437353004119359, 387741.043071355903521, 387751.648814481333829, 387762.254582379770000, 387772.860375050746370, 387783.466192493389826, 387794.072034707234707, 387804.677901691640727, 387815.283793446025811, 387825.889709969749674, 387836.495651262113824, 387847.101617322652601, 387857.707608150609303, 387868.313623745576479, 387878.919664106681012, 387889.525729233573657, 387900.131819125439506, 387910.737933781696483, 387921.344073201820720, 387931.950237385113724, 387942.556426330993418, 387953.162640038877726, 387963.768878508126363, 387974.375141738157254, 387984.981429728271905, 387995.587742477946449, 388006.194079986482393, 388016.800442253297660, 388027.406829277810175, 388038.013241059437860, 388048.619677597482223, 388059.226138891477603, 388069.832624940667301, 388080.439135744411033, 388091.045671302126721, 388101.652231613290496, 388112.258816677262075, 388122.865426493342966, 388133.472061061009299, 388144.078720379737206, 388154.685404448595364, 388165.292113267292734, 388175.898846835072618, 388186.505605151352938, 388197.112388215435203, 388207.719196026853751, 388218.326028584910091, 388228.932885889138561, 388239.539767938666046, 388250.146674733026884, 388260.753606271580793, 388271.360562553745694, 388281.967543578881305, 388292.574549346347339, 388303.181579855678137, 388313.788635106058791, 388324.395715097081847, 388335.002819827990606, 388345.609949298144784, 388356.217103507020511, 388366.824282453977503, 388377.431486138491891, 388388.038714559748769, 388398.645967717282474, 388409.253245610510930, 388419.860548238735646, 388430.467875601374544, 388441.075227697787341, 388451.682604527450167, 388462.290006089664530, 388472.897432383790147, 388483.504883409244940, 388494.112359165679663, 388504.719859652046580, 388515.327384867938235, 388525.934934812772553, 388536.542509485909250, 388547.150108886766247, 388557.757733014586847, 388568.365381868905388, 388578.973055449198000, 388589.580753754707985, 388600.188476784736849, 388610.796224538818933, 388621.403997016313951, 388632.011794216639828, 388642.619616139098071, 388653.227462783164810, 388663.835334148257971, 388674.443230233620852, 388685.051151038671378, 388695.659096562943887, 388706.267066805739887, 388716.875061766360886, 388727.483081444341224, 388738.091125838924199, 388748.699194949760567, 388759.307288775919005, 388769.915407316875644, 388780.523550572223030, 388791.131718541088048, 388801.739911223063245, 388812.348128617333714, 388822.956370723492000, 388833.564637540839612, 388844.172929068736266, 388854.781245306658093, 388865.389586253848393, 388875.997951909783296, 388886.606342273880728, 388897.214757345558610, 388907.823197124060243, 388918.431661608978175, 388929.040150799497496, 388939.648664695094340, 388950.257203295186628, 388960.865766599192284, 388971.474354606354609, 388982.082967316207942, 388992.691604728111997, 389003.300266841484699, 389013.908953655511141, 389024.517665169900283, 389035.126401383779012, 389045.735162296681665, 389056.343947907967959, 389066.952758216939401, 389077.561593223188538, 389088.170452925900463, 389098.779337324551307, 389109.388246418500785, 389119.997180207166821, 389130.606138689967338, 389141.215121866203845, 389151.824129735410679, 389162.433162296831142, 389173.042219549941365, 389183.651301494042855, 389194.260408128669951, 389204.869539453065954, 389215.478695466706995, 389226.087876169010997, 389236.697081559221260, 389247.306311636988539, 389257.915566401439719, 389268.524845851992723, 389279.134149988240097, 389289.743478809308726, 389300.352832314907573, 389310.962210504105315, 389321.571613376436289, 389332.181040931376629, 389342.790493168227840, 389353.399970086291432, 389364.009471685101744, 389374.618997964018490, 389385.228548922343180, 389395.838124559551943, 389406.447724875062704, 389417.057349868176971, 389427.666999538370874, 389438.276673885004129, 389448.886372907436453, 389459.496096605085768, 389470.105844977253582, 389480.715618023532443, 389491.325415743107442, 389501.935238135571126, 389512.545085200108588, 389523.154956936254166, 389533.764853343309369, 389544.374774420692120, 389554.984720167878550, 389565.594690584170166, 389576.204685668984894, 389586.814705421682447, 389597.424749841738958, 389608.034818928397726, 389618.644912681134883, 389629.255031099426560, 389639.865174182516057, 389650.475341929879505, 389661.085534340934828, 389671.695751415041741, 389682.305993151559960, 389692.916259549849201, 389703.526550609385595, 389714.136866329587065, 389724.747206709638704, 389735.357571749249473, 389745.967961447604466, 389756.578375804121606, 389767.188814818102401, 389777.799278489139397, 389788.409766816534102, 389799.020279799646232, 389809.630817437951919, 389820.241379730694462, 389830.851966677466407, 389841.462578277511057, 389852.073214530246332, 389862.683875435090158, 389873.294560991402250, 389883.905271198542323, 389894.516006056044716, 389905.126765563210938, 389915.737549719400704, 389926.348358524031937, 389936.959191976580769, 389947.570050076290499, 389958.180932822637260, 389968.791840214980766, 389979.402772252738941, 389990.013728935387917, 390000.624710262229200, 390011.235716232622508, 390021.846746845985763, 390032.457802101736888, 390043.068881999293808, 390053.679986537899822, 390064.291115717205685, 390074.902269536454696, 390085.513447995006572, 390096.124651092221029, 390106.735878827574197, 390117.347131200484000, 390127.958408210368361, 390138.569709856470581, 390149.181036138383206, 390159.792387055291329, 390170.403762606729288, 390181.015162791998591, 390191.626587610517163, 390202.238037061761133, 390212.849511145032011, 390223.461009859805927, 390234.072533205442596, 390244.684081181243528, 390255.295653786743060, 390265.907251021184493, 390276.518872884102166, 390287.130519374797586, 390297.742190492688678, 390308.353886237251572, 390318.965606607845984, 390329.577351603657007, 390340.189121224335395, 390350.800915469240863, 390361.412734337616712, 390372.024577828997280, 390382.636445942684077, 390393.248338678269647, 390403.860256034880877, 390414.472198012052104, 390425.084164609143045, 390435.696155825513415, 390446.308171660639346, 390456.920212113880552, 390467.532277184654959, 390478.144366872322280, 390488.756481176242232, 390499.368620095890947, 390509.980783630628139, 390520.592971779755317, 390531.205184542865027, 390541.817421919200569, 390552.429683908179868, 390563.041970509220846, 390573.654281721683219, 390584.266617544984911, 390594.878977978602052, 390605.491363021777943, 390616.103772673930507, 390626.716206934535876, 390637.328665803070180, 390647.941149278660305, 390658.553657360957004, 390669.166190049145371, 390679.778747342817951, 390690.391329241218045, 390701.003935743879993, 390711.616566850047093, 390722.229222559253685, 390732.841902870684862, 390743.454607783933170, 390754.067337298416533, 390764.680091413320042, 390775.292870128294453, 390785.905673442524858, 390796.518501355545595, 390807.131353866658174, 390817.744230975338724, 390828.357132680830546, 390838.970058982726187, 390849.583009880268946, 390860.195985372993164, 390870.808985460200347, 390881.422010141250212, 390892.035059415618889, 390902.648133282724302, 390913.261231741809752, 390923.874354792351369, 390934.487502433883492, 390945.100674665591214, 390955.713871487008873, 390966.327092897437979, 390976.940338896354660, 390987.553609483118635, 390998.166904657089617, 391008.780224417743739, 391019.393568764382508, 391030.006937696482055, 391040.620331213402096, 391051.233749314502347, 391061.847191999258939, 391072.460659267031588, 391083.074151117121801, 391093.687667549122125, 391104.301208562334068, 391114.914774156117346, 391125.528364329831675, 391136.141979082894977, 391146.755618414841592, 391157.369282324973028, 391167.982970812532585, 391178.596683877171017, 391189.210421518248040, 391199.824183735006955, 391210.437970526865683, 391221.051781893358566, 391231.665617833728902, 391242.279478347511031, 391252.893363434006460, 391263.507273092691321, 391274.121207322808914, 391284.735166123951785, 391295.349149495363235, 391305.963157436577603, 391316.577189946779981, 391327.191247025621124, 391337.805328672286123, 391348.419434886309318, 391359.033565666992217, 391369.647721013869159, 391380.261900926125236, 391390.876105403352994, 391401.490334444795735, 391412.104588049987797, 391422.718866218347102, 391433.333168949116953, 391443.947496241657063, 391454.561848095618188, 391465.176224510185421, 391475.790625484776683, 391486.405051018868107, 391497.019501111877616, 391507.633975763106719, 391518.248474972031545, 391528.862998737895396, 391539.477547060290817, 391550.092119938519318, 391560.706717371940613, 391571.321339360030834, 391581.935985902266111, 391592.550656997831538, 391603.165352646203246, 391613.780072846915573, 391624.394817599153612, 391635.009586902393494, 391645.624380756111350, 391656.239199159725104, 391666.854042112478055, 391677.468909613788128, 391688.083801663131453, 391698.698718259867746, 391709.313659403531346, 391719.928625093249138, 391730.543615328730084, 391741.158630109042861, 391751.773669433838222, 391762.388733302359469, 391773.003821714140940, 391783.618934668484144, 391794.234072164807003, 391804.849234202527441, 391815.464420781005174, 391826.079631899658125, 391836.694867557904217, 391847.310127755103167, 391857.925412490731105, 391868.540721764031332, 391879.156055574596394, 391889.771413921727799, 391900.386796804785263, 391911.002204223186709, 391921.617636176350061, 391932.233092663693242, 391942.848573684517760, 391953.464079238416161, 391964.079609324631747, 391974.695163942582440, 391985.310743091627955, 391995.926346771302633, 392006.541974980907980, 392017.157627719803713, 392027.773304987524170, 392038.389006783312652, 392049.004733106703497, 392059.620483956998214, 392070.236259333614726, 392080.852059235912748, 392091.467883663426619, 392102.083732615457848, 392112.699606091424357, 392123.315504090685863, 392133.931426612718496, 392144.547373656823765, 392155.163345222477801, 392165.779341308982112, 392176.395361915871035, 392187.011407042620704, 392197.627476688299794, 392208.243570852559060, 392218.859689534700010, 392229.475832734140567, 392240.092000450415071, 392250.708192682650406, 392261.324409430497326, 392271.940650693257339, 392282.556916470348369, 392293.173206761071924, 392303.789521564904135, 392314.405860881262925, 392325.022224709566217, 392335.638613049115520, 392346.255025899445172, 392356.871463259856682, 392367.487925129709765, 392378.104411508538760, 392388.720922395645175, 392399.337457790446933, 392409.954017692361958, 392420.570602100808173, 392431.187211015028879, 392441.803844434674829, 392452.420502358931117, 392463.037184787390288, 392473.653891719179228, 392484.270623154006898, 392494.887379091116600, 392505.504159529926255, 392516.120964469853789, 392526.737793910200708, 392537.354647850443143, 392547.971526289999019, 392558.588429228286259, 392569.205356664664578, 392579.822308598551899, 392590.439285029249731, 392601.056285956350621, 392611.673311379039660, 392622.290361296909396, 392632.907435709261335, 392643.524534615513403, 392654.141658015025314, 392664.758805907214992, 392675.375978291500360, 392685.993175167299341, 392696.610396534029860, 392707.227642391051631, 392717.844912737782579, 392728.462207573524211, 392739.079526897810865, 392749.696870710002258, 392760.314239009458106, 392770.931631795654539, 392781.549049067951273, 392792.166490825708024, 392802.783957068400923, 392813.401447795389686, 392824.018963006034028, 392834.636502699810080, 392845.254066876077559, 392855.871655534254387, 392866.489268673816696, 392877.106906293949578, 392887.724568394303787, 392898.342254974064417, 392908.959966032765806, 392919.577701569767669, 392930.195461584429722, 392940.813246076344512, 392951.431055044638924, 392962.048888488789089, 392972.666746408387553, 392983.284628802619409, 392993.902535670960788, 393004.520467012829613, 393015.138422827702016, 393025.756403114821296, 393036.374407873605378, 393046.992437103588600, 393057.610490804014262, 393068.228568974416703, 393078.846671614155639, 393089.464798722648993, 393100.082950299198274, 393110.701126343279611, 393121.319326854252722, 393131.937551831593737, 393142.555801274662372, 393153.174075182876550, 393163.792373555595987, 393174.410696392238606, 393185.029043692280538, 393195.647415454965085, 393206.265811679884791, 393216.884232366282959, 393227.502677513635717, 393238.121147121419199, 393248.739641188818496, 393259.358159715426154, 393269.976702700543683, 393280.595270143589005, 393291.213862044096459, 393301.832478401251137, 393312.451119214703795, 393323.069784483581316, 393333.688474207476247, 393344.307188385690097, 393354.925927017698996, 393365.544690102862660, 393376.163477640599012, 393386.782289630325977, 393397.401126071403269, 393408.019986963248812, 393418.638872305280529, 393429.257782096916344, 393439.876716337457765, 393450.495675026439130, 393461.114658163220156, 393471.733665747160558, 393482.352697777678259, 393492.971754254191183, 393503.590835176117253, 393514.209940542874392, 393524.829070353764109, 393535.448224608320743, 393546.067403305904008, 393556.686606445815414, 393567.305834027589299, 393577.925086050527170, 393588.544362514046952, 393599.163663417682983, 393609.782988760736771, 393620.402338542509824, 393631.021712762536481, 393641.641111420292873, 393652.260534514964093, 393662.879982046142686, 393673.499454013130162, 393684.118950415402651, 393694.738471252319869, 393705.358016523241531, 393715.977586227585562, 393726.597180364769883, 393737.216798934328835, 393747.836441935389303, 393758.456109367660247, 393769.075801230326761, 393779.695517522923183, 393790.315258244634606, 393800.935023395169992, 393811.554812973714434, 393822.174626979802269, 393832.794465412676800, 393843.414328271930572, 393854.034215556865092, 393864.654127266781870, 393875.274063401331659, 393885.894023959699553, 393896.514008941419888, 393907.134018345852382, 393917.754052172414958, 393928.374110420409124, 393938.994193089369219, 393949.614300178654958, 393960.234431687684264, 393970.854587615816854, 393981.474767962470651, 393992.094972727063578, 394002.715201909071766, 394013.335455507680308, 394023.955733522539958, 394034.576035952952225, 394045.196362798335031, 394055.816714058048092, 394066.437089731451124, 394077.057489818194881, 394087.677914317348041, 394098.298363228561357, 394108.918836551136337, 394119.539334284549113, 394130.159856428042985, 394140.780402981210500, 394151.400973943353165, 394162.021569313830696, 394172.642189092235640, 394183.262833277753089, 394193.883501869917382, 394204.504194868146442, 394215.124912271799985, 394225.745654080237728, 394236.366420292877592, 394246.987210909137502, 394257.608025928493589, 394268.228865350305568, 394278.849729173933156, 394289.470617398852482, 394300.091530024423264, 394310.712467050005216, 394321.333428475074470, 394331.954414299107157, 394342.575424521346577, 394353.196459141210653, 394363.817518158233725, 394374.438601571717300, 394385.059709381079301, 394395.680841585795861, 394406.301998185226694, 394416.923179178731516, 394427.544384565786459, 394438.165614345693029, 394448.786868517985567, 394459.408147081965581, 394470.029450037167408, 394480.650777382834349, 394491.272129118442535, 394501.893505243468098, 394512.514905757212546, 394523.136330659093801, 394533.757779948529787, 394544.379253624996636, 394555.000751687795855, 394565.622274136461783, 394576.243820970237721, 394586.865392188658006, 394597.486987790965941, 394608.108607776754070, 394618.730252145440318, 394629.351920896209776, 394639.973614028654993, 394650.595331542077474, 394661.217073436011560, 394671.838839709700551, 394682.460630362736993, 394693.082445394364186, 394703.704284804058261, 394714.326148591178935, 394724.948036755144130, 394735.569949295429979, 394746.191886211396195, 394756.813847502402496, 394767.435833167983219, 394778.057843207439873, 394788.679877620190382, 394799.301936405536253, 394809.924019563128240, 394820.546127092209645, 394831.168258992198389, 394841.790415262512397, 394852.412595902569592, 394863.034800911787897, 394873.657030289527029, 394884.279284035263117, 394894.901562148297671, 394905.523864628223237, 394916.146191474224906, 394926.768542685837019, 394937.390918262361083, 394948.013318203389645, 394958.635742508107796, 394969.258191176108085, 394979.880664206750225, 394990.503161599393934, 395001.125683353398927, 395011.748229468299542, 395022.370799943397287, 395032.993394778168295, 395043.616013971972279, 395054.238657524285372, 395064.861325434467290, 395075.484017701819539, 395086.106734325876459, 395096.729475306114182, 395107.352240641717799, 395117.975030332396273, 395128.597844377218280, 395139.220682775834575, 395149.843545527488459, 395160.466432631772477, 395171.089344087988138, 395181.712279895436950, 395192.335240053769667, 395202.958224562113173, 395213.581233420118224, 395224.204266627086326, 395234.827324182435405, 395245.450406085525174, 395256.073512335831765, 395266.696642932714894, 395277.319797875650693, 395287.942977163940668, 395298.566180797119159, 395309.189408774429467, 395319.812661095405929, 395330.435937759466469, 395341.059238765970804, 395351.682564114336856, 395362.305913803982548, 395372.929287834209390, 395383.552686204551719, 395394.176108914427459, 395404.799555963254534, 395415.423027350276243, 395426.046523074968718, 395436.670043136866298, 395447.293587535328697, 395457.917156269599218, 395468.540749339328613, 395479.164366743760183, 395489.788008482311852, 395500.411674554401543, 395511.035364959563594, 395521.659079697041307, 395532.282818766310811, 395542.906582166906446, 395553.530369897955097, 395564.154181958991103, 395574.778018349548802, 395585.401879068871494, 395596.025764116435312, 395606.649673491774593, 395617.273607194016222, 395627.897565222752746, 395638.521547577343881, 395649.145554257265758, 395659.769585261819884, 395670.393640590424184, 395681.017720242671203, 395691.641824217746034, 395702.265952515183017, 395712.890105134283658, 395723.514282074524090, 395734.138483335380442, 395744.762708916212432, 395755.386958816263359, 395766.011233035183977, 395776.635531572217587, 395787.259854426956736, 395797.884201598586515, 395808.508573086641263, 395819.132968890597112, 395829.757389009697363, 395840.381833443418145, 395851.006302191177383, 395861.630795252334792, 395872.255312626424711, 395882.879854312865064, 395893.504420310840942, 395904.129010620003100, 395914.753625239594840, 395925.378264169034082, 395936.002927407855168, 395946.627614955417812, 395957.252326811139937, 395967.877062974264845, 395978.501823444443289, 395989.126608220918570, 395999.751417303166818, 396010.376250690605957, 396021.001108382770326, 396031.625990378786810, 396042.250896678189747, 396052.875827280455269, 396063.500782184943091, 396074.125761391012929, 396084.750764898140915, 396095.375792705803178, 396106.000844813243020, 396116.625921219936572, 396127.251021925359964, 396137.876146928872913, 396148.501296229835134, 396159.126469827780966, 396169.751667721953709, 396180.376889911887702, 396191.002136397000868, 396201.627407176652923, 396212.252702250261791, 396222.878021617187187, 396233.503365276963450, 396244.128733228892088, 396254.754125472332817, 396265.379542006819975, 396276.004982831771486, 396286.630447946605273, 396297.255937350622844, 396307.881451043242123, 396318.506989023939241, 396329.132551292073913, 396339.758137847180478, 396350.383748688444030, 396361.009383815457113, 396371.635043227637652, 396382.260726924287155, 396392.886434904881753, 396403.512167168781161, 396414.137923715461511, 396424.763704544282518, 396435.389509654720314, 396446.015339046076406, 396456.641192717826925, 396467.267070669448003, 396477.892972900124732, 396488.518899409507867, 396499.144850197015330, 396509.770825261890423, 396520.396824603609275, 396531.022848221531603, 396541.648896115249954, 396552.274968284007628, 396562.901064727164339, 396573.527185444370843, 396584.153330434870441, 396594.779499698081054, 396605.405693233420607, 396616.031911040248815, 396626.658153118158225, 396637.284419466333929, 396647.910710084368475, 396658.537024971563369, 396669.163364127336536, 396679.789727551164106, 396690.416115242405795, 396701.042527200479526, 396711.668963424861431, 396722.295423914911225, 396732.921908669930417, 396743.548417689453345, 396754.174950972897932, 396764.801508519623894, 396775.428090329107363, 396786.054696400708053, 396796.681326733843889, 396807.307981327874586, 396817.934660182334483, 396828.561363296583295, 396839.188090669980738, 396849.814842302002944, 396860.441618191951420, 396871.068418339360505, 396881.695242743648123, 396892.322091404173989, 396902.948964320239611, 396913.575861491553951, 396924.202782917243894, 396934.829728596843779, 396945.456698529771529, 396956.083692715270445, 396966.710711152991280, 396977.337753842351958, 396987.964820782595780, 396998.591911973140668, 397009.219027413462754, 397019.846167103038169, 397030.473331041110214, 397041.100519227329642, 397051.727731660881545, 397062.354968341242056, 397072.982229267829098, 397083.609514440177009, 397094.236823857529089, 397104.864157519303262, 397115.491515425150283, 397126.118897574197035, 397136.746303965919651, 397147.373734599852469, 397158.001189475238789, 397168.628668591612950, 397179.256171948451083, 397189.883699544996489, 397200.511251380667090, 397211.138827454997227, 397221.766427767346613, 397232.394052317074966, 397243.021701103774831, 397253.649374126689509, 397264.277071385178715, 397274.904792878776789, 397285.532538606901653, 397296.160308568913024, 397306.788102764345240, 397317.415921192441601, 397328.043763852678239, 397338.671630744356662, 397349.299521867069416, 397359.927437220234424, 397370.555376803153194, 397381.183340615360066, 397391.811328656098340, 397402.439340924902353, 397413.067377421073616, 397423.695438144146465, 397434.323523093538824, 397444.951632268668618, 397455.579765668779146, 397466.207923293462954, 397476.836105142021552, 397487.464311213989276, 397498.092541508609429, 397508.720796025532763, 397519.349074763944373, 397529.977377723378595, 397540.605704903195146, 397551.234056302870158, 397561.862431921763346, 397572.490831759234425, 397583.119255814875942, 397593.747704087931197, 397604.376176577818114, 397615.004673284129240, 397625.633194206049666, 397636.261739343113732, 397646.890308694797568, 397657.518902260344476, 397668.147520039288793, 397678.776162031048443, 397689.404828234924935, 397700.033518650452606, 397710.662233277049381, 397721.290972114074975, 397731.919735160889104, 397742.548522416967899, 397753.177333881787490, 397763.806169554591179, 397774.435029435087927, 397785.063913522346411, 397795.692821816017386, 397806.321754315402359, 397816.950711019977462, 397827.579691929102410, 397838.208697042253334, 397848.837726358789951, 397859.466779878130183, 397870.095857599750161, 397880.724959522893187, 397891.354085647210013, 397901.983235971943941, 397912.612410496687517, 397923.241609220625833, 397933.870832143293228, 397944.500079264165834, 397955.129350582545158, 397965.758646097790916, 397976.387965809553862, 397987.017309717077296, 397997.646677819779143, 398008.276070117135532, 398018.905486608506180, 398029.534927293250803, 398040.164392171020154, 398050.793881240941118, 398061.423394502664451, 398072.052931955375243, 398082.682493598724250, 398093.312079431896564, 398103.941689454601146, 398114.571323665906675, 398125.200982065405697, 398135.830664652574342, 398146.460371426714119, 398157.090102387301158, 398167.719857533753384, 398178.349636865430512, 398188.979440381808672, 398199.609268082247581, 398210.239119966165163, 398220.868996033095755, 398231.498896282282658, 398242.128820713318419, 398252.758769325388130, 398263.388742118026130, 398274.018739090824965, 398284.648760242853314, 398295.278805573878344, 398305.908875083085150, 398316.538968769891653, 398327.169086633773986, 398337.799228674208280, 398348.429394890496042, 398359.059585282113403, 398369.689799848478287, 398380.320038589008618, 398390.950301503064111, 398401.580588590062689, 398412.210899849538691, 398422.841235280851834, 398433.471594883361831, 398444.101978656486608, 398454.732386599644087, 398465.362818712368608, 398475.993274993903469, 398486.623755443783011, 398497.254260061425157, 398507.884788846131414, 398518.515341797494330, 398529.145918914757203, 398539.776520197396167, 398550.407145644829143, 398561.037795256532263, 398571.668469031865243, 398582.299166970246006, 398592.929889071034268, 398603.560635333822574, 398614.191405757796019, 398624.822200342547148, 398635.453019087435678, 398646.083861991879530, 398656.714729055238422, 398667.345620276988484, 398677.976535656605847, 398688.607475193392020, 398699.238438886823133, 398709.869426736258902, 398720.500438741175458, 398731.131474900990725, 398741.762535215064418, 398752.393619682989083, 398763.024728303949814, 398773.655861077422742, 398784.287018002883997, 398794.918199079693295, 398805.549404307326768, 398816.180633685260545, 398826.811887212737929, 398837.443164889235049, 398848.074466714228038, 398858.705792687193025, 398869.337142807315104, 398879.968517074303236, 398890.599915487342514, 398901.231338045850862, 398911.862784749420825, 398922.494255597295705, 398933.125750589068048, 398943.757269724039361, 398954.388813001627568, 398965.020380421250593, 398975.651971982326359, 398986.283587684330996, 398996.915227526566014, 399007.546891508682165, 399018.178579629864544, 399028.810291889531072, 399039.442028287216090, 399050.073788822279312, 399060.705573494138662, 399071.337382302270271, 399081.969215246033855, 399092.601072324789129, 399103.232953538070433, 399113.864858885237481, 399124.496788365766406, 399135.128741979016922, 399145.760719724348746, 399156.392721601238009, 399167.024747609219048, 399177.656797747535165, 399188.288872015604284, 399198.920970413077157, 399209.553092939022463, 399220.185239593090955, 399230.817410374700557, 399241.449605283210985, 399252.081824317981955, 399262.714067478664219, 399273.346334764326457, 399283.978626174619421, 399294.610941708902828, 399305.243281366652809, 399315.875645147170871, 399326.508033050049562, 399337.140445074473973, 399347.772881220036652, 399358.405341486039106, 399369.037825872073881, 399379.670334377384279, 399390.302867001504637, 399400.935423743736465, 399411.568004603672307, 399422.200609580555465, 399432.833238673803862, 399443.465891883010045, 399454.098569207475521, 399464.731270646618214, 399475.363996199856047, 399485.996745866606943, 399496.629519646288827, 399507.262317538377829, 399517.895139542291872, 399528.527985657332465, 399539.160855883033946, 399549.793750218697824, 399560.426668663858436, 399571.059611217875499, 399581.692577880283352, 399592.325568650325295, 399602.958583527535666, 399613.591622511215974, 399624.224685600958765, 399634.857772796065547, 399645.490884095954243, 399656.124019500159193, 399666.757179007865489, 399677.390362618665677, 399688.023570332035888, 399698.656802147219423, 399709.290058063808829, 399719.923338081105612, 399730.556642198585905, 399741.189970415551215, 399751.823322731594089, 399762.456699146074243, 399773.090099658351392, 399783.723524267959874, 399794.356972974142991, 399804.990445776435081, 399815.623942674312275, 399826.257463667017873, 399836.891008754202630, 399847.524577935051639, 399858.158171209157445, 399868.791788575821556, 399879.425430034578312, 399890.059095584671013, 399900.692785225808620, 399911.326498957118019, 399921.960236778191756, 399932.593998688331340, 399943.227784687071107, 399953.861594773770776, 399964.495428947906476, 399975.129287208721507, 399985.763169555808417, 399996.397075988643337, 400007.031006506469566, 400017.664961108763237, 400028.298939795116894, 400038.932942564599216, 400049.566969416919164, 400060.201020351378247, 400070.835095367394388, 400081.469194464560132, 400092.103317642118782, 400102.737464899430051, 400113.371636236028280, 400124.005831651331391, 400134.640051144757308, 400145.274294715665746, 400155.908562363649253, 400166.542854087892920, 400177.177169887989294, 400187.811509763181675, 400198.445873713120818, 400209.080261737166438, 400219.714673834561836, 400230.349110004899558, 400240.983570247481111, 400251.618054561840836, 400262.252562947396655, 400272.887095403450076, 400283.521651929593645, 400294.156232525070664, 400304.790837189473677, 400315.425465922045987, 400326.060118722321931, 400336.694795589719433, 400347.329496523598209, 400357.964221523492597, 400368.598970588645898, 400379.233743718650658, 400389.868540912866592, 400400.503362170711625, 400411.138207491487265, 400421.773076874844264, 400432.407970320025925, 400443.042887826566584, 400453.677829393767752, 400464.312795021221973, 400474.947784708230756, 400485.582798454212025, 400496.217836258525494, 400506.852898120705504, 400517.487984040169977, 400528.123094016395044, 400538.758228048682213, 400549.393386136449408, 400560.028568279114552, 400570.663774476153776, 400581.299004726985004, 400591.934259031142574, 400602.569537387753371, 400613.204839796468150, 400623.840166256704833, 400634.475516767764930, 400645.110891329240985, 400655.746289940376300, 400666.381712600647006, 400677.017159309587441, 400687.652630066382699, 400698.288124870741740, 400708.923643721907865, 400719.559186619298998, 400730.194753562391270, 400740.830344550602604, 400751.465959583292715, 400762.101598659995943, 400772.737261780130211, 400783.372948942997027, 400794.008660148072522, 400804.644395394716412, 400815.280154682463035, 400825.915938010788523, 400836.551745378994383, 400847.187576786498539, 400857.823432232718915, 400868.459311717131641, 400879.095215239096433, 400889.731142798147630, 400900.367094393644948, 400911.003070025006309, 400921.639069691649638, 400932.275093392934650, 400942.911141128395684, 400953.547212897450663, 400964.183308699342888, 400974.819428533723112, 400985.455572399951052, 400996.091740297386423, 401006.727932225388940, 401017.364148183609359, 401028.000388171349186, 401038.636652187909931, 401049.272940232884139, 401059.909252305631526, 401070.545588405570015, 401081.181948532175738, 401091.818332684750203, 401102.454740862885956, 401113.091173065826297, 401123.727629293105565, 401134.364109544083476, 401145.000613818294369, 401155.637142115097959, 401166.273694433853962, 401176.910270774038509, 401187.546871135011315, 401198.183495516364928, 401208.820143917459063, 401219.456816337537020, 401230.093512776191346, 401240.730233232781757, 401251.366977706842590, 401262.003746197675355, 401272.640538704756182, 401283.277355227444787, 401293.914195765333716, 401304.551060317549855, 401315.187948883802164, 401325.824861463450361, 401336.461798055854160, 401347.098758660373278, 401357.735743276542053, 401368.372751903778408, 401379.009784541500267, 401389.646841189183760, 401400.283921846013982, 401410.921026511699893, 401421.558155185426585, 401432.195307866844814, 401442.832484555314295, 401453.469685250194743, 401464.106909950845875, 401474.744158656860236, 401485.381431367539335, 401496.018728082301095, 401506.656048800679855, 401517.293393522035331, 401527.930762245727237, 401538.568154971289914, 401549.205571698141284, 401559.843012425582856, 401570.480477153207175, 401581.117965880315751, 401591.755478606384713, 401602.393015330831986, 401613.030576052959077, 401623.668160772416741, 401634.305769488506485, 401644.943402200588025, 401655.581058908253908, 401666.218739610747434, 401676.856444307602942, 401687.494172998296563, 401698.131925682129804, 401708.769702358520590, 401719.407503027003258, 401730.045327686879318, 401740.683176337683108, 401751.321048978832550, 401761.958945609687362, 401772.596866229607258, 401783.234810838242993, 401793.872779434837867, 401804.510772018926218, 401815.148788589751348, 401825.786829146905802, 401836.424893689691089, 401847.062982217757963, 401857.701094730233308, 401868.339231226826087, 401878.977391706721392, 401889.615576169511769, 401900.253784614440519, 401910.892017041158397, 401921.530273448908702, 401932.168553837283980, 401942.806858205585741, 401953.445186553173698, 401964.083538879582193, 401974.721915184345562, 401985.360315466707107, 401995.998739726084750, 402006.637187961954623, 402017.275660173792858, 402027.914156360959169, 402038.552676522929687, 402049.191220659180544, 402059.829788768955041, 402070.468380851787515, 402081.106996907154098, 402091.745636934356298, 402102.384300932928454, 402113.022988902230281, 402123.661700841796119, 402134.300436750869267, 402144.939196629042272, 402155.577980475558434, 402166.216788290126715, 402176.855620071932208, 402187.494475820451044, 402198.133355535101146, 402208.772259215358645, 402219.411186860641465, 402230.050138470483944, 402240.689114044012967, 402251.328113580937497, 402261.967137080442626, 402272.606184542179108, 402283.245255965506658, 402293.884351349784993, 402304.523470694490243, 402315.162613999040332, 402325.801781262794975, 402336.440972485346720, 402347.080187665997073, 402357.719426804163959, 402368.358689899323508, 402378.997976950835437, 402389.637287958234083, 402400.276622920879163, 402410.915981838188600, 402421.555364709638525, 402432.194771534472238, 402442.834202312456910, 402453.473657042661216, 402464.113135724794120, 402474.752638358098920, 402485.392164942109957, 402496.031715476128738, 402506.671289959747810, 402517.310888392210472, 402527.950510773167480, 402538.590157101862133, 402549.229827377828769, 402559.869521600310691, 402570.509239768900443, 402581.148981883074157, 402591.788747942133341, 402602.428537945554126, 402613.068351892754436, 402623.708189783093985, 402634.348051616107114, 402644.987937391328160, 402655.627847107884008, 402666.267780765308999, 402676.907738363137469, 402687.547719900729135, 402698.187725377560128, 402708.827754792990163, 402719.467808146437164, 402730.107885437377263, 402740.747986665228382, 402751.388111829350237, 402762.028260929335374, 402772.668433964485303, 402783.308630934101529, 402793.948851837951224, 402804.589096675103065, 402815.229365445207804, 402825.869658147741575, 402836.509974781831261, 402847.150315347185824, 402857.790679843164980, 402868.431068269186653, 402879.071480624668766, 402889.711916908971034, 402900.352377121569589, 402910.992861261940561, 402921.633369329501875, 402932.273901323613245, 402942.914457243750803, 402953.555037089390680, 402964.195640859834384, 402974.836268554616254, 402985.476920173096005, 402996.117595714807976, 403006.758295179111883, 403017.399018565309234, 403028.039765873050783, 403038.680537101579830, 403049.321332250547130, 403059.962151319137774, 403070.602994306886103, 403081.243861213268247, 403091.884752037527505, 403102.525666779314633, 403113.166605437989347, 403123.807568012969568, 403134.448554503615014, 403145.089564909401815, 403155.730599229806103, 403166.371657464245800, 403177.012739612080622, 403187.653845672786701, 403198.294975645723753, 403208.936129530484322, 403219.577307326253504, 403230.218509032682050, 403240.859734649187885, 403251.500984174956102, 403262.142257609695662, 403272.783554952708073, 403283.424876203353051, 403294.066221361339558, 403304.707590425736271, 403315.348983396135736, 403325.990400272014085, 403336.631841052731033, 403347.273305737704504, 403357.914794326468837, 403368.556306818383746, 403379.197843212867156, 403389.839403509220574, 403400.480987707152963, 403411.122595805965830, 403421.764227804902475, 403432.405883703671861, 403443.047563501517288, 403453.689267198031303, 403464.330994792457204, 403474.972746284445748, 403485.614521673123818, 403496.256320958200376, 403506.898144138918724, 403517.539991214871407, 403528.181862185359932, 403538.823757049860433, 403549.465675807849038, 403560.107618458569050, 403570.749585001671221, 403581.391575436515268, 403592.033589762460906, 403602.675627979100682, 403613.317690085619688, 403623.959776081610471, 403634.601885966432746, 403645.244019739620853, 403655.886177400534507, 403666.528358948591631, 403677.170564383210149, 403687.812793703866191, 403698.455046909977682, 403709.097324001020752, 403719.739624976296909, 403730.381949835224077, 403741.024298577394802, 403751.666671202168800, 403762.309067708963994, 403772.951488097198308, 403783.593932366347872, 403794.236400515830610, 403804.878892545006238, 403815.521408453350887, 403826.163948240340687, 403836.806511905218940, 403847.449099447694607, 403858.091710867069196, 403868.734346162644215, 403879.377005334128626, 403890.019688380707521, 403900.662395301915240, 403911.305126097111497, 403921.947880765830632, 403932.590659307490569, 403943.233461721451022, 403953.876288007129915, 403964.519138164003380, 403975.162012191489339, 403985.804910089063924, 403996.447831856145058, 404007.090777492092457, 404017.733746996324044, 404028.376740368432365, 404039.019757607660722, 404049.662798713718075, 404060.305863685614895, 404070.948952523118351, 404081.592065225471742, 404092.235201792209409, 404102.878362222807482, 404113.521546516509261, 404124.164754672965501, 404134.807986691419501, 404145.451242571347393, 404156.094522312225308, 404166.737825913587585, 404177.381153374677524, 404188.024504694971256, 404198.667879873944912, 404209.311278911016416, 404219.954701805661898, 404230.598148557182867, 404241.241619165113661, 404251.885113628813997, 404262.528631947818212, 404273.172174121427815, 404283.815740149293561, 404294.459330030600540, 404305.102943764941301, 404315.746581351617351, 404326.390242790104821, 404337.033928079938050, 404347.677637220418546, 404358.321370211022440, 404368.965127051167656, 404379.608907740330324, 404390.252712277928367, 404400.896540663321503, 404411.540392895985860, 404422.184268975455780, 404432.828168901032768, 404443.472092672134750, 404454.116040288296062, 404464.760011748876423, 404475.404007053351961, 404486.048026201024186, 404496.692069191543851, 404507.336136024212465, 404517.980226698447950, 404528.624341213784646, 404539.268479569465853, 404549.912641765084118, 404560.556827800115570, 404571.201037673803512, 404581.845271385740489, 404592.489528935169801, 404603.133810321742203, 404613.778115544817410, 404624.422444603813346, 404635.066797498089727, 404645.711174227122683, 404656.355574790388346, 404666.999999187362846, 404677.644447417405900, 404688.288919479877222, 404698.933415374369361, 404709.577935100125615, 404720.222478656738531, 404730.867046043567825, 404741.511637260206044, 404752.156252305780072, 404762.800891179940663, 404773.445553882047534, 404784.090240411460400, 404794.734950767830014, 404805.379684950399678, 404816.024442958703730, 404826.669224792101886, 404837.314030450070277, 404847.958859932026826, 404858.603713237447664, 404869.248590365634300, 404879.893491316062864, 404890.538416088267695, 404901.183364681666717, 404911.828337095677853, 404922.473333329660818, 404933.118353383033536, 404943.763397255330347, 404954.408464945910964, 404965.053556454367936, 404975.698671779886354, 404986.343810922000557, 404996.988973880244885, 405007.634160653862637, 405018.279371242562775, 405028.924605645413976, 405039.569863862183411, 405050.215145892056171, 405060.860451734624803, 405071.505781389190815, 405082.151134855463170, 405092.796512132510543, 405103.441913219925482, 405114.087338117184117, 405124.732786823646165, 405135.378259338962380, 405146.023755662201438, 405156.669275793014094, 405167.314819730760064, 405177.960387474973686, 405188.605979025072884, 405199.251594380359165, 405209.897233540425077, 405220.542896504572127, 405231.188583272334654, 405241.834293843014166, 405252.480028216261417, 405263.125786391261499, 405273.771568367606960, 405284.417374144715723, 405295.063203721947502, 405305.709057098894846, 405316.354934274801053, 405327.000835249200463, 405337.646760021569207, 405348.292708591150586, 405358.938680957653560, 405369.584677120263223, 405380.230697078513913, 405390.876740831881762, 405401.522808379668277, 405412.168899721524213, 405422.815014856751077, 405433.461153784708586, 405444.107316504989285, 405454.753503016894683, 405465.399713319959119, 405476.045947413542308, 405486.692205297120381, 405497.338486970053054, 405507.984792431874666, 405518.631121682003140, 405529.277474719914608, 405539.923851544910576, 405550.570252156408969, 405561.216676554060541, 405571.863124737108592, 405582.509596705087461, 405593.156092457298655, 405603.802611993392929, 405614.449155312497169, 405625.095722414378542, 405635.742313298338559, 405646.388927963678725, 405657.035566409991588, 405667.682228636753280, 405678.328914643207099, 405688.975624428945594, 405699.622357993328478, 405710.269115335890092, 405720.915896455931943, 405731.562701352930162, 405742.209530026302673, 405752.856382475583814, 405763.503258700133301, 405774.150158699369058, 405784.797082472767215, 405795.444030019687489, 405806.091001339664217, 405816.737996432173532, 405827.385015296400525, 405838.032057932054158, 405848.679124338435940, 405859.326214515080210, 405869.973328461288475, 405880.620466176536866, 405891.267627660301514, 405901.914812912000343, 405912.562021931051277, 405923.209254716930445, 405933.856511268997565, 405944.503791586786974, 405955.151095669658389, 405965.798423517087940, 405976.445775128435344, 405987.093150503234938, 405997.740549640904646, 406008.387972540862393, 406019.035419202409685, 406029.682889625313692, 406040.330383808643091, 406050.977901752048638, 406061.625443454890046, 406072.273008916701656, 406082.920598136843182, 406093.568211114674341, 406104.215847849729471, 406114.863508341368288, 406125.511192589183338, 406136.158900592417922, 406146.806632350664586, 406157.454387863283046, 406168.102167129691225, 406178.749970149423461, 406189.397796921723057, 406200.045647446240764, 406210.693521722219884, 406221.341419749311171, 406231.989341526757926, 406242.637287054036278, 406253.285256330738775, 406263.933249356108718, 406274.581266129622236, 406285.229306650813669, 406295.877370918984525, 406306.525458933669142, 406317.173570694285445, 406327.821706200251356, 406338.469865450984798, 406349.118048445961904, 406359.766255184600595, 406370.414485666318797, 406381.062739890650846, 406391.711017856840044, 406402.359319564478938, 406413.007645013101865, 406423.655994201835711, 406434.304367130273022, 406444.952763797948137, 406455.601184204162564, 406466.249628348450642, 406476.898096230288502, 406487.546587848861236, 406498.195103203819599, 406508.843642294523306, 406519.492205120506696, 406530.140791681129485, 406540.789401975809596, 406551.438036004023161, 406562.086693765129894, 406572.735375258722343, 406583.384080484102014, 406594.032809440745041, 406604.681562128185760, 406615.330338545609266, 406625.979138692666311, 406636.627962568833027, 406647.276810173352715, 406657.925681505817920, 406668.574576565530151, 406679.223495352081954, 406689.872437864774838, 406700.521404103143141, 406711.170394066546578, 406721.819407754519489, 406732.468445166363381, 406743.117506301729009, 406753.766591159801465, 406764.415699740115087, 406775.064832042146008, 406785.713988065370359, 406796.363167809089646, 406807.012371272896416, 406817.661598456092179, 406828.310849358211271, 406838.960123978613410, 406849.609422316832934, 406860.258744372171350, 406870.908090144221205, 406881.557459632225800, 406892.206852835835889, 406902.856269754352979, 406913.505710387369618, 406924.155174734070897, 406934.804662794049364, 406945.454174566722941, 406956.103710051567759, 406966.753269248001743, 406977.402852155442815, 406988.052458773308899, 406998.702089100959711, 407009.351743138046004, 407020.001420883927494, 407030.651122337963898, 407041.300847499631345, 407051.950596368347760, 407062.600368943589274, 407073.250165224890225, 407083.899985211493913, 407094.549828902876470, 407105.199696298572235, 407115.849587397882715, 407126.499502200575080, 407137.149440705601592, 407147.799402912787627, 407158.449388821376488, 407169.099398430844303, 407179.749431740667205, 407190.399488750263117, 407201.049569459049962, 407211.699673866445664, 407222.349801972042769, 407232.999953775084578, 407243.650129275163636, 407254.300328471581452, 407264.950551363814157, 407275.600797951396089, 407286.251068233628757, 407296.901362210046500, 407307.551679880067240, 407318.202021243050694, 407328.852386298531201, 407339.502775046043098, 407350.153187484829687, 407360.803623614425305, 407371.454083434131462, 407382.104566943598911, 407392.755074142187368, 407403.405605029314756, 407414.056159604398999, 407424.706737866858020, 407435.357339816284366, 407446.007965451921336, 407456.658614773303270, 407467.309287779906299, 407477.959984471090138, 407488.610704846330918, 407499.261448905046564, 407509.912216646771412, 407520.563008070806973, 407531.213823176629376, 407541.864661963772960, 407552.515524431539234, 407563.166410579520743, 407573.817320407018997, 407584.468253913510125, 407595.119211098470259, 407605.770191961259115, 407616.421196501411032, 407627.072224718402140, 407637.723276611475740, 407648.374352180282585, 407659.025451424065977, 407669.676574342593085, 407680.327720934816170, 407690.978891200618818, 407701.630085139127914, 407712.281302749994211, 407722.932544032693841, 407733.583808986411896, 407744.235097610799130, 407754.886409905098844, 407765.537745868961792, 407776.189105501805898, 407786.840488802932668, 407797.491895771876443, 407808.143326408055145, 407818.794780710886698, 407829.446258679905441, 407840.097760314471088, 407850.749285613943357, 407861.400834577973001, 407872.052407205745112, 407882.704003497026861, 407893.355623450886924, 407904.007267067034263, 407914.658934344712179, 407925.310625283629633, 407935.962339883029927, 407946.614078142272774, 407957.265840061067138, 407967.917625638539903, 407978.569434874400031, 407989.221267768007237, 407999.873124318721239, 408010.525004526018165, 408021.176908389432356, 408031.828835908207111, 408042.480787081993185, 408053.132761910092086, 408063.784760392038152, 408074.436782527191099, 408085.088828315085266, 408095.740897755080368, 408106.392990846652538, 408117.045107589219697, 408127.697247982199769, 408138.349412025068887, 408149.001599717303179, 408159.653811058320571, 408170.306046047480777, 408180.958304684259929, 408191.610586968250573, 408202.262892898696009, 408212.915222475188784, 408223.567575697030406, 408234.219952563697007, 408244.872353074722923, 408255.524777229409665, 408266.177225027407985, 408276.829696467902977, 408287.482191550487187, 408298.134710274578538, 408308.787252639594954, 408319.439818645070773, 408330.092408290249296, 408340.745021574723069, 408351.397658497968223, 408362.050319059344474, 408372.703003258327954, 408383.355711094278377, 408394.008442566671874, 408404.661197675100993, 408415.313976418750826, 408425.966778797330335, 408436.619604810082819, 408447.272454456484411, 408457.925327735953033, 408468.578224648139440, 408479.231145192228723, 408489.884089367755223, 408500.537057174195070, 408511.190048610966187, 408521.843063677486498, 408532.496102373232134, 408543.149164697621018, 408553.802250650129281, 408564.455360230116639, 408575.108493437117431, 408585.761650270607788, 408596.414830729831010, 408607.068034814437851, 408617.721262523788027, 408628.374513857357670, 408639.027788814448286, 408649.681087394710630, 408660.334409597388003, 408670.987755422014743, 408681.641124868183397, 408692.294517935079057, 408702.947934622294270, 408713.601374929130543, 408724.254838855238631, 408734.908326399978250, 408745.561837562650908, 408756.215372342907358, 408766.868930740049109, 408777.522512753552292, 408788.176118383009452, 408798.829747627605684, 408809.483400486933533, 408820.137076960352715, 408830.790777047397569, 408841.444500747486018, 408852.098248060094193, 408862.752018984523602, 408873.405813520308584, 408884.059631666925270, 408894.713473423849791, 408905.367338790383656, 408916.021227766061202, 408926.675140350300353, 408937.329076542577241, 408947.983036342309788, 408958.637019748915918, 408969.291026761871763, 408979.945057380537037, 408990.599111604504287, 409001.253189433133230, 409011.907290865899995, 409022.561415902222507, 409033.215564541518688, 409043.869736783206463, 409054.523932626936585, 409065.178152071835939, 409075.832395117497072, 409086.486661763396114, 409097.140952009009197, 409107.795265853754245, 409118.449603296990972, 409129.103964338137303, 409139.758348976785783, 409150.412757212296128, 409161.067189044202678, 409171.721644471748732, 409182.376123494468629, 409193.030626111896709, 409203.685152323450893, 409214.339702128432691, 409224.994275526492856, 409235.648872516874690, 409246.303493099170737, 409256.958137272798922, 409267.612805037235375, 409278.267496391723398, 409288.922211335855536, 409299.576949869107921, 409310.231711990840267, 409320.886497700703330, 409331.541306997765787, 409342.196139881736599, 409352.850996352033690, 409363.505876408074982, 409374.160780049336608, 409384.815707275236491, 409395.470658085076138, 409406.125632478506304, 409416.780630454886705, 409427.435652013751678, 409438.090697154402733, 409448.745765876257792, 409459.400858178967610, 409470.055974061833695, 409480.711113524273969, 409491.366276565764565, 409502.021463185839821, 409512.676673383859452, 409523.331907159241382, 409533.987164511519950, 409544.642445440054871, 409555.297749944264069, 409565.953078023740090, 409576.608429677784443, 409587.263804905931465, 409597.919203707540873, 409608.574626082088798, 409619.230072029051371, 409629.885541547904722, 409640.541034638008568, 409651.196551298839040, 409661.852091529814061, 409672.507655330409762, 409683.163242700160481, 409693.818853638367727, 409704.474488144507632, 409715.130146217998117, 409725.785827858431730, 409736.441533065168187, 409747.097261837508995, 409757.753014175104909, 409768.408790077257436, 409779.064589543500915, 409789.720412573311478, 409800.376259166048840, 409811.032129321189132, 409821.688023038092069, 409832.343940316350199, 409842.999881155439653, 409853.655845554603729, 409864.311833513376769, 409874.967845031176694, 409885.623880107596051, 409896.279938741936348, 409906.936020933673717, 409917.592126682226080, 409928.248255987127777, 409938.904408847796731, 409949.560585263592657, 409960.216785233991686, 409970.873008758528158, 409981.529255836561788, 409992.185526467568707, 410002.841820650966838, 410013.498138386174105, 410024.154479672783054, 410034.810844510036986, 410045.467232897528447, 410056.123644834675360, 410066.780080320895649, 410077.436539355607238, 410088.093021938344464, 410098.749528068525251, 410109.406057745509315, 410120.062610968772788, 410130.719187737850007, 410141.375788052100688, 410152.032411911059171, 410162.689059314085171, 410173.345730260596611, 410184.002424750069622, 410194.659142782038543, 410205.315884355921298, 410215.972649471019395, 410226.629438126983587, 410237.286250323057175, 410247.943086058832705, 410258.599945333786309, 410269.256828147161286, 410279.913734498608392, 410290.570664387487341, 410301.227617813274264, 410311.884594775445294, 410322.541595273301937, 410333.198619306320325, 410343.855666874151211, 410354.512737976096105, 410365.169832611514721, 410375.826950779999606, 410386.484092480910476, 410397.141257713723462, 410407.798446477972902, 410418.455658772960305, 410429.112894598161802, 410439.770153953111731, 410450.427436837111600, 410461.084743249753956, 410471.742073190398514, 410482.399426658521406, 410493.056803653598763, 410503.714204174932092, 410514.371628222288564, 410525.029075794736855, 410535.686546891927719, 410546.344041513279080, 410557.001559658267070, 410567.659101326251402, 410578.316666516766418, 410588.974255229171831, 410599.631867463001981, 410610.289503217616584, 410620.947162492549978, 410631.604845287278295, 410642.262551601044834, 410652.920281433500350, 410663.578034784062766, 410674.235811652033590, 410684.893612037063576, 410695.551435938454233, 410706.209283355739899, 410716.867154288396705, 410727.525048735609744, 410738.182966697146185, 410748.840908172307536, 410759.498873160511721, 410770.156861661351286, 410780.814873674069531, 410791.472909198317211, 410802.130968233337626, 410812.789050778781530, 410823.447156834008638, 410834.105286398436874, 410844.763439471425954, 410855.421616052626632, 410866.079816141398624, 410876.738039737218060, 410887.396286839444656, 410898.054557447554544, 410908.712851560965646, 410919.371169179328717, 410930.029510301828850, 410940.687874928058591, 410951.346263057435863, 410962.004674689378589, 410972.663109823421109, 410983.321568458864931, 410993.980050595302600, 411004.638556232035626, 411015.297085368714761, 411025.955638004641514, 411036.614214139233809, 411047.272813772084191, 411057.931436902552377, 411068.590083530056290, 411079.248753654072061, 411089.907447274075821, 411100.566164389427286, 411111.224904999602586, 411121.883669104252476, 411132.542456702562049, 411143.201267794065643, 411153.860102378239390, 411164.518960454501212, 411175.177842022327241, 411185.836747081193607, 411196.495675630460028, 411207.154627669602633, 411217.813603198097553, 411228.472602215362713, 411239.131624720932450, 411249.790670714108273, 411260.449740194424521, 411271.108833161473740, 411281.767949614441022, 411292.427089552802499, 411303.086252976208925, 411313.745439883961808, 411324.404650275537279, 411335.063884150469676, 411345.723141508002300, 411356.382422347727697, 411367.041726669063792, 411377.701054471544921, 411388.360405754530802, 411399.019780517381150, 411409.679178759746719, 411420.338600480870809, 411430.998045680462383, 411441.657514357764740, 411452.317006512195803, 411462.976522143289912, 411473.636061250639614, 411484.295623833371792, 411494.955209891195409, 411505.614819423411973, 411516.274452429497615, 411526.934108909103088, 411537.593788861413486, 411548.253492285904940, 411558.913219182228204, 411569.572969549626578, 411580.232743387634400, 411590.892540695669595, 411601.552361473208293, 411612.212205719668418, 411622.872073434642516, 411633.531964617373887, 411644.191879267396871, 411654.851817384187598, 411665.511778967105784, 411676.171764015685767, 411686.831772529403679, 411697.491804507619236, 411708.151859949808568, 411718.811938855447806, 411729.472041224071290, 411740.132167054864112, 411750.792316347593442, 411761.452489101444371, 411772.112685316009447, 411782.772904990823008, 411793.433148125070147, 411804.093414718401618, 411814.753704770177137, 411825.414018279989250, 411836.074355247139465, 411846.734715671103913, 411857.395099551358726, 411868.055506887380034, 411878.715937678585760, 411889.376391924393829, 411900.036869624222163, 411910.697370777605101, 411921.357895384076983, 411932.018443442939315, 411942.679014953668229, 411953.339609915681649, 411964.000228328513913, 411974.660870191582944, 411985.321535504364874, 411995.982224266219418, 412006.642936476739123, 412017.303672135167290, 412027.964431241212878, 412038.625213794119190, 412049.286019793420564, 412059.946849238593131, 412070.607702128938399, 412081.268578464165330, 412091.929478243517224, 412102.590401466470212, 412113.251348132500425, 412123.912318241083995, 412134.573311791755259, 412145.234328783757519, 412155.895369216625113, 412166.556433089892380, 412177.217520402977243, 412187.878631155239418, 412198.539765346213244, 412209.200922975316644, 412219.862104042025749, 412230.523308545758482, 412241.184536485990975, 412251.845787862141151, 412262.507062673743349, 412273.168360920099076, 412283.829682600917295, 412294.491027715383098, 412305.152396263030823, 412315.813788243336603, 412326.475203655718360, 412337.136642499768641, 412347.798104774672538, 412358.459590480080806, 412369.121099615353160, 412379.782632180140354, 412390.444188173569273, 412401.105767595290672, 412411.767370444722474, 412422.428996721282601, 412433.090646424563602, 412443.752319553866982, 412454.414016108610667, 412465.075736088387202, 412475.737479492556304, 412486.399246320594102, 412497.061036571918521, 412507.722850246005692, 412518.384687342331745, 412529.046547860431019, 412539.708431799605023, 412550.370339159271680, 412561.032269938965328, 412571.694224138220306, 412582.356201756338123, 412593.018202792853117, 412603.680227247183211, 412614.342275118862744, 412625.004346407309640, 412635.666441111883614, 412646.328559232060798, 412656.990700767375529, 412667.652865717129316, 412678.315054081031121, 412688.977265858266037, 412699.639501048484817, 412710.301759650988970, 412720.964041665312834, 412731.626347090990748, 412742.288675927266013, 412752.951028173614759, 412763.613403829687741, 412774.275802894902881, 412784.938225368503481, 412795.600671250082087, 412806.263140539114829, 412816.925633234961424, 412827.588149337156210, 412838.250688845175318, 412848.913251758378465, 412859.575838076299988, 412870.238447798241396, 412880.901080923911650, 412891.563737452554051, 412902.226417383644730, 412912.889120716659818, 412923.551847451250069, 412934.214597586484160, 412944.877371122129261, 412955.540168057370465, 412966.202988391916733, 412976.865832125185989, 412987.528699256479740, 412998.191589785390534, 413008.854503711278085, 413019.517441033676732, 413030.180401751887985, 413040.843385865504388, 413051.506393373943865, 413062.169424276682548, 413072.832478573196568, 413083.495556262845639, 413094.158657345105894, 413104.821781819453463, 413115.484929685364477, 413126.148100942315068, 413136.811295589606743, 413147.474513626832049, 413158.137755053408910, 413168.801019868813455, 413179.464308072463609, 413190.127619663835503, 413200.790954642347060, 413211.454313007474411, 413222.117694758751895, 413232.781099895481020, 413243.444528417137917, 413254.107980323256925, 413264.771455613314174, 413275.434954286669381, 413286.098476342740469, 413296.762021781178191, 413307.425590601225849, 413318.089182802534197, 413328.752798384288326, 413339.416437346138991, 413350.080099687504116, 413360.743785407859832, 413371.407494506682269, 413382.071226983272936, 413392.734982837224379, 413403.398762067954522, 413414.062564674939495, 413424.726390657597221, 413435.390240015345626, 413446.054112747660838, 413456.718008854077198, 413467.381928334012628, 413478.045871186826844, 413488.709837412112392, 413499.373827009170782, 413510.037839977652766, 413520.701876316859853, 413531.365936026209965, 413542.030019105295651, 413552.694125553534832, 413563.358255370345432, 413574.022408555203583, 413584.686585107469000, 413595.350785026676022, 413606.015008312358987, 413616.679254963877611, 413627.343524980649818, 413638.007818362268154, 413648.672135107975919, 413659.336475217540283, 413670.000838690088131, 413680.665225525212009, 413691.329635722388048, 413701.994069281034172, 413712.658526200684719, 413723.323006480699405, 413733.987510120496154, 413744.652037119609304, 413755.316587477573194, 413765.981161193631124, 413776.645758267375641, 413787.310378698282875, 413797.975022485712543, 413808.639689629257191, 413819.304380128160119, 413829.969093982072081, 413840.633831190352794, 413851.298591752478387, 413861.963375668041408, 413872.628182936226949, 413883.293013556569349, 413893.957867528661154, 413904.622744851920288, 413915.287645525590051, 413925.952569549379405, 413936.617516922706272, 413947.282487644930370, 413957.947481715527829, 413968.612499133974779, 413979.277539899747353, 413989.942604012205265, 414000.607691471057478, 414011.272802275430877, 414021.937936424918007, 414032.603093918995000, 414043.268274757079780, 414053.933478938764893, 414064.598706463351846, 414075.263957330258563, 414085.929231539077591, 414096.594529089226853, 414107.259849980124272, 414117.925194211245980, 414128.590561782009900, 414139.255952691892162, 414149.921366940368898, 414160.586804526916239, 414171.252265450952109, 414181.917749711894430, 414192.583257309335750, 414203.248788242519367, 414213.914342511096038, 414224.579920114425477, 414235.245521051983815, 414245.911145323247183, 414256.576792927633505, 414267.242463864618912, 414277.908158133621328, 414288.573875734175090, 414299.239616665639915, 414309.905380927550141, 414320.571168519323692, 414331.236979440436698, 414341.902813690423500, 414352.568671268469188, 414363.234552174340934, 414373.900456407282036, 414384.566383966885041, 414395.232334852626082, 414405.898309063690249, 414416.564306599902920, 414427.230327460449189, 414437.896371644979808, 414448.562439152738079, 414459.228529983374756, 414469.894644136191346, 414480.560781610780396, 414491.226942406559829, 414501.893126522889361, 414512.559333959361538, 414523.225564715336077, 414533.891818790347315, 414544.558096183754969, 414555.224396895093378, 414565.890720923780464, 414576.557068269234151, 414587.223438931105193, 414597.889832908578683, 414608.556250201247167, 414619.222690808528569, 414629.889154730073642, 414640.555641965067480, 414651.222152512986213, 414661.888686373480596, 414672.555243545852136, 414683.221824029751588, 414693.888427824305836, 414704.555054929223843, 414715.221705343923531, 414725.888379067764618, 414736.555076100339647, 414747.221796440950129, 414757.888540089188609, 414768.555307044473011, 414779.222097306279466, 414789.888910874025896, 414800.555747747130226, 414811.222607925068587, 414821.889491407433525, 414832.556398193526547, 414843.223328282823786, 414853.890281674743164, 414864.557258368935436, 414875.224258364760317, 414885.891281661519315, 414896.558328258863185, 414907.225398156151641, 414917.892491352919023, 414928.559607848583255, 414939.226747642562259, 414949.893910734273959, 414960.561097123369109, 414971.228306809091009, 414981.895539791090414, 414992.562796068668831, 415003.230075641302392, 415013.897378508525435, 415024.564704669755884, 415035.232054124469869, 415045.899426872027107, 415056.566822912020143, 415067.234242243808694, 415077.901684866927098, 415088.569150780735072, 415099.236639984883368, 415109.904152478615288, 415120.571688261406962, 415131.239247332850937, 415141.906829692306928, 415152.574435339367483, 415163.242064273217693, 415173.909716493566521, 415184.577391999773681, 415195.245090791257098, 415205.912812867609318, 415216.580558228190057, 415227.248326872417238, 415237.916118799766991, 415248.583934009831864, 415259.251772501971573, 415269.919634275545832, 415280.587519330205396, 415291.255427665251773, 415301.923359280335717, 415312.591314174584113, 415323.259292347764131, 415333.927293799235485, 415344.595318528474309, 415355.263366534840316, 415365.931437817809638, 415376.599532376974821, 415387.267650211637374, 415397.935791321448050, 415408.603955705708358, 415419.272143363778014, 415429.940354295424186, 415440.608588499890175, 415451.276845976652112, 415461.945126725186128, 415472.613430744910147, 415483.281758035416715, 415493.950108596065547, 415504.618482426390983, 415515.286879525636323, 415525.955299893452320, 415536.623743529373314, 415547.292210432642605, 415557.960700602794532, 415568.629214039363433, 415579.297750741825439, 415589.966310709482059, 415600.634893941867631, 415611.303500438458286, 415621.972130198671948, 415632.640783222159371, 415643.309459508105647, 415653.978159056103323, 415664.646881865570322, 415675.315627936099190, 415685.984397266875021, 415696.653189857606776, 415707.322005707654171, 415717.990844816493336, 415728.659707183658611, 415739.328592808393296, 415749.997501690348145, 415760.666433828882873, 415771.335389223648235, 415782.004367873829324, 415792.673369779018685, 415803.342394938750658, 415814.011443352326751, 415824.680515019339509, 415835.349609939206857, 415846.018728111288510, 415856.687869535177015, 415867.357034210290294, 415878.026222136046272, 415888.695433311979286, 415899.364667737449054, 415910.033925412048120, 415920.703206335194409, 415931.372510506189428, 415942.041837924683932, 415952.711188590037636, 415963.380562501784880, 415974.049959659343585, 415984.719380062189884, 415995.388823709741700, 416006.058290601475164, 416016.727780736866407, 416027.397294115333352, 416038.066830736410338, 416048.736390599515289, 416059.405973704182543, 416070.075580049713608, 416080.745209635701030, 416091.414862461504526, 416102.084538526716642, 416112.754237830638885, 416123.423960372863803, 416134.093706152692903, 416144.763475169776939, 416155.433267423533835, 416166.103082913381513, 416176.772921638679691, 416187.442783599079121, 416198.112668793881312, 416208.782577222678810, 416219.452508884773124, 416230.122463779815007, 416240.792441907164175, 416251.462443266296759, 416262.132467856514268, 416272.802515677583870, 416283.472586728690658, 416294.142681009543594, 416304.812798519444186, 416315.482939257810358, 416326.153103224118240, 416336.823290418018587, 416347.493500838754699, 416358.163734485919122, 416368.833991358813364, 416379.504271457088180, 416390.174574780161493, 416400.844901327393018, 416411.515251098258886, 416422.185624092293438, 416432.856020309089217, 416443.526439747714903, 416454.196882407995872, 416464.867348289233632, 416475.537837390904315, 416486.208349712484051, 416496.878885253332555, 416507.549444013158791, 416518.220025991089642, 416528.890631186950486, 416539.561259599984623, 416550.231911229609977, 416560.902586075419094, 416571.573284136888105, 416582.244005413260311, 416592.914749904302880, 416603.585517609200906, 416614.256308527546935, 416624.927122658875305, 416635.597960002429318, 416646.268820557917934, 416656.939704324642662, 416667.610611302196048, 416678.281541489821393, 416688.952494887111243, 416699.623471493541729, 416710.294471308705397, 416720.965494331787340, 416731.636540562380105, 416742.307609999901615, 416752.978702643886209, 416763.649818493926432, 416774.320957549149171, 416784.992119809205178, 416795.663305273570586, 416806.334513941663317, 416817.005745813017711, 416827.677000886877067, 416838.348279163066763, 416849.019580640713684, 416859.690905319468584, 416870.362253198632970, 416881.033624277857598, 416891.705018556502182, 416902.376436034042854, 416913.047876710013952, 416923.719340583658777, 416934.390827654628083, 416945.062337922456209, 416955.733871386328246, 416966.405428045953158, 416977.077007900748868, 416987.748610950133298, 416998.420237193466164, 417009.091886630340014, 417019.763559260172769, 417030.435255082498770, 417041.106974096794147, 417051.778716302302200, 417062.450481698731892, 417073.122270285442937, 417083.794082061969675, 417094.465917027555406, 417105.137775181850884, 417115.809656524390448, 417126.481561054475605, 417137.153488771582488, 417147.825439675245434, 417158.497413764824159, 417169.169411039969418, 417179.841431499982718, 417190.513475144340191, 417201.185541972517967, 417211.857631984050386, 417222.529745178355370, 417233.201881554792635, 417243.874041112954728, 417254.546223852317780, 417265.218429772299714, 417275.890658872318454, 417286.562911151850130, 417297.235186610370874, 417307.907485247356817, 417318.579807062400505, 417329.252152054745238, 417339.924520223925356, 417350.596911569358781, 417361.269326090696268, 417371.941763787122909, 417382.614224658347666, 417393.286708703672048, 417403.959215922805015, 417414.631746314815246, 417425.304299879469909, 417435.976876616186928, 417446.649476524267811, 417457.322099603421520, 417467.994745852891356, 417478.667415272269864, 417489.340107860974967, 417500.012823618541006, 417510.685562544327695, 417521.358324637752958, 417532.031109898409341, 417542.703918325714767, 417553.376749919145368, 417564.049604678235482, 417574.722482602170203, 417585.395383690716699, 417596.068307943292893, 417606.741255359258503, 417617.414225938089658, 417628.087219679262489, 417638.760236582253128, 417649.433276646595914, 417660.106339871592354, 417670.779426256834995, 417681.452535801858176, 417692.125668505905196, 417702.798824368510395, 417713.472003389266320, 417724.145205567532685, 417734.818430902843829, 417745.491679394559469, 417756.164951042155735, 417766.838245845166966, 417777.511563803069293, 417788.184904915280640, 417798.858269181218930, 417809.531656600302085, 417820.205067172297277, 417830.878500896331389, 417841.551957772055175, 417852.225437798828352, 417862.898940976185258, 417873.572467303602025, 417884.246016780438367, 417894.919589406286832, 417905.593185180448927, 417916.266804102575406, 417926.940446172025986, 417937.614111388276797, 417948.287799750803970, 417958.961511259141844, 417969.635245912591927, 417980.309003710688557, 417990.982784652966075, 418001.656588738958817, 418012.330415967793670, 418023.004266339237802, 418033.678139852650929, 418044.352036507509183, 418055.025956303405110, 418065.699899239582010, 418076.373865315632429, 418087.047854530916084, 418097.721866885083728, 418108.395902377436869, 418119.069961007451639, 418129.744042774662375, 418140.418147678603418, 418151.092275718518067, 418161.766426894057076, 418172.440601204638369, 418183.114798649679869, 418193.789019228657708, 418204.463262941106223, 418215.137529786385130, 418225.811819764028769, 418236.486132873571478, 418247.160469114256557, 418257.834828485792968, 418268.509210987540428, 418279.183616618916858, 418289.858045379398391, 418300.532497268635780, 418311.206972285755910, 418321.881470430584159, 418332.555991702305619, 418343.230536100512836, 418353.905103624623735, 418364.579694274230860, 418375.254308048635721, 418385.928944947430864, 418396.603604969859589, 418407.278288115689065, 418417.952994384220801, 418428.627723774989136, 418439.302476287295576, 418449.977251920732670, 418460.652050674892962, 418471.326872548961546, 418482.001717542589176, 418492.676585655193776, 418503.351476886251476, 418514.026391235296614, 418524.701328701572493, 418535.376289284788072, 418546.051272984303068, 418556.726279799593613, 418567.401309730135836, 418578.076362775289454, 418588.751438934705220, 418599.426538207742851, 418610.101660593936685, 418620.776806092646439, 418631.451974703348242, 418642.127166425692849, 418652.802381258865353, 418663.477619202516507, 418674.152880256064236, 418684.828164418984670, 418695.503471690753940, 418706.178802070731763, 418716.854155558568891, 418727.529532153566834, 418738.204931855376344, 418748.880354663240723, 418759.555800576752517, 418770.231269595329650, 418780.906761718564667, 418791.582276945759077, 418802.257815276389010, 418812.933376710047014, 418823.608961246151011, 418834.284568884118926, 418844.960199623426888, 418855.635853463609237, 418866.311530404083896, 418876.987230444268789, 418887.662953583640046, 418898.338699821732007, 418909.014469158020802, 418919.690261591866147, 418930.366077122860588, 418941.041915750363842, 418951.717777473910246, 418962.393662292975932, 418973.069570206978824, 418983.745501215395052, 418994.421455317642540, 419005.097432513372041, 419015.773432801768649, 419026.449456182599533, 419037.125502655049786, 419047.801572218886577, 419058.477664873236790, 419069.153780617809389, 419079.829919452022295, 419090.506081375293434, 419101.182266387273557, 419111.858474487089552, 419122.534705674392171, 419133.210959948715754, 419143.887237309536431, 419154.563537756155711, 419165.239861288166139, 419175.916207904985640, 419186.592577606090344, 419197.268970390956383, 419207.945386259059887, 419218.621825209876988, 419229.298287242825609, 419239.974772357381880, 419250.651280553080142, 419261.327811829280108, 419272.004366185632534, 419282.680943621380720, 419293.357544136117212, 419304.034167729201727, 419314.710814400285017, 419325.387484148785006, 419336.064176974003203, 419346.740892875590362, 419357.417631852906197, 419368.094393905485049, 419378.771179032803047, 419389.447987234219909, 419400.124818509269971, 419410.801672857603990, 419421.478550278290641, 419432.155450771155301, 419442.832374335441273, 419453.509320970741101, 419464.186290676530916, 419474.863283452170435, 419485.540299297193997, 419496.217338211135939, 419506.894400193297770, 419517.571485243272036, 419528.248593360476661, 419538.925724544504192, 419549.602878794656135, 419560.280056110525038, 419570.957256491354201, 419581.634479936852586, 419592.311726446554530, 419602.988996019645128, 419613.666288655716926, 419624.343604354304262, 419635.020943114825059, 419645.698304936813656, 419656.375689819513354, 419667.053097762633115, 419677.730528765590861, 419688.407982827804517, 419699.085459948692005, 419709.762960127845872, 419720.440483364742249, 419731.118029658682644, 419741.795599009259604, 419752.473191415949259, 419763.150806878169533, 419773.828445395454764, 419784.506106967106462, 419795.183791592833586, 419805.861499271937646, 419816.539230004011188, 419827.216983788355719, 419837.894760624563787, 419848.572560512053315, 419859.250383450416848, 419869.928229438897688, 419880.606098477146588, 419891.283990564523265, 419901.961905700620264, 419912.639843884739093, 419923.317805116472300, 419933.995789395237807, 419944.673796720628161, 419955.351827091944870, 419966.029880508605856, 419976.707956970320083, 419987.386056476389058, 419998.064179026347119, 420008.742324619612191, 420019.420493255718611, 420030.098684934026096, 420040.776899654127192, 420051.455137415381614, 420062.133398217440117, 420072.811682059546001, 420083.489988941233605, 420094.168318862095475, 420104.846671821433119, 420115.525047818839084, 420126.203446853789501, 420136.881868925644085, 420147.560314033878967, 420158.238782178144902, 420168.917273357685190, 420179.595787572150584, 420190.274324820784386, 420200.952885103295557, 420211.631468419102021, 420222.310074767563492, 420232.988704148156103, 420243.667356560472399, 420254.346032003930304, 420265.024730477947742, 420275.703451982059050, 420286.382196515623946, 420297.060964078234974, 420307.739754669368267, 420318.418568288441747, 420329.097404934931546, 420339.776264608255588, 420350.455147308006417, 420361.134053033543751, 420371.812981784285512, 420382.491933559882455, 420393.170908359752502, 420403.849906183255371, 420414.528927029925399, 420425.207970899296924, 420435.887037790729664, 420446.566127703816164, 420457.245240637857933, 420467.924376592447516, 420478.603535567061044, 420489.282717561174650, 420499.961922574089840, 420510.641150605515577, 420521.320401654811576, 420531.999675721453968, 420542.678972804860678, 420553.358292904507834, 420564.037636019987985, 420574.717002150719054, 420585.396391296060756, 420596.075803455605637, 420606.755238628771622, 420617.434696815151256, 420628.114178014046047, 420638.793682224873919, 420649.473209447343834, 420660.152759680873714, 420670.832332924648654, 420681.511929178435821, 420692.191548441653140, 420702.871190713776741, 420713.550855994224548, 420724.230544282414485, 420734.910255577880889, 420745.589989880216308, 420756.269747188722249, 420766.949527502874844, 420777.629330822208431, 420788.309157146199141, 420798.989006474323105, 420809.668878805998247, 420820.348774140700698, 420831.028692477964796, 420841.708633817150258, 420852.388598157791421, 420863.068585499422625, 420873.748595841461793, 420884.428629183326848, 420895.108685524610337, 420905.788764864613768, 420916.468867202929687, 420927.148992539034225, 420937.829140872403514, 420948.509312202397268, 420959.189506528549828, 420969.869723850453738, 420980.549964167410508, 420991.230227478896268, 421001.910513784445357, 421012.590823083650321, 421023.271155375754461, 421033.951510660292115, 421044.631888936855830, 421055.312290204805322, 421065.992714463674929, 421076.673161712824367, 421087.353631951787975, 421098.034125180158298, 421108.714641397236846, 421119.395180602557957, 421130.075742795539554, 421140.756327975832392, 421151.436936142621562, 421162.117567295674235, 421172.798221434233710, 421183.478898557892535, 421194.159598666185047, 421204.840321758354548, 421215.521067834051792, 421226.201836892752908, 421236.882628933875822, 421247.563443956838455, 421258.244281961175147, 421268.925142946478445, 421279.606026911991648, 421290.286933857307304, 421300.967863781901542, 421311.648816685250495, 421322.329792566772085, 421333.010791426000651, 421343.691813262354117, 421354.372858075308613, 421365.053925864340272, 421375.735016629041638, 421386.416130368714221, 421397.097267082892358, 421407.778426771052182, 421418.459609432669822, 421429.140815067221411, 421439.822043674183078, 421450.503295252972748, 421461.184569803124759, 421471.865867324057035, 421482.547187815362122, 421493.228531276399735, 421503.909897706646007, 421514.591287105577067, 421525.272699472727254, 421535.954134807572700, 421546.635593109414913, 421557.317074377904646, 421567.998578612518031, 421578.680105812672991, 421589.361655977787450, 421600.043229107337538, 421610.724825200915802, 421621.406444257998373, 421632.088086277886759, 421642.769751260115299, 421653.451439204218332, 421664.133150109730195, 421674.814883975952398, 421685.496640802477486, 421696.178420588723384, 421706.860223334224429, 421717.542049038340338, 421728.223897700663656, 421738.905769320612308, 421749.587663897662424, 421760.269581431231927, 421770.951521920913365, 421781.633485366124660, 421792.315471766400151, 421802.997481120983139, 421813.679513429640792, 421824.361568691616412, 421835.043646906560753, 421845.725748073891737, 421856.407872192910872, 421867.090019263385329, 421877.772189284500200, 421888.454382256022654, 421899.136598177195992, 421909.818837047612760, 421920.501098866690882, 421931.183383633906487, 421941.865691348677501, 421952.548022010596469, 421963.230375619081315, 421973.912752173724584, 421984.595151673769578, 421995.277574118750636, 422005.960019508260302, 422016.642487841774710, 422027.324979118595365, 422038.007493338314816, 422048.690030500350986, 422059.372590604354627, 422070.055173649627250, 422080.737779635586776, 422091.420408561825752, 422102.103060427878518, 422112.785735233046580, 422123.468432976922486, 422134.151153658865951, 422144.833897278527729, 422155.516663835267536, 422166.199453328561503, 422176.882265757885762, 422187.565101122774649, 422198.247959422587883, 422208.930840656918008, 422219.613744825124741, 422230.296671926800627, 422240.979621961363591, 422251.662594928289764, 422262.345590826997068, 422273.028609657078050, 422283.711651417950634, 422294.394716108974535, 422305.077803729800507, 422315.760914279904682, 422326.444047758588567, 422337.127204165444709, 422347.810383499891032, 422358.493585761578288, 422369.176810949749779, 422379.860059063939843, 422390.543330103624612, 422401.226624068454839, 422411.909940957673825, 422422.593280770815909, 422433.276643507415429, 422443.960029167006724, 422454.643437748891301, 422465.326869252603501, 422476.010323677561246, 422486.693801023473497, 422497.377301289583556, 422508.060824475425761, 422518.744370580534451, 422529.427939604327548, 422540.111531546281185, 422550.795146405871492, 422561.478784182574600, 422572.162444875924848, 422582.846128485281952, 422593.529835010180250, 422604.213564450095873, 422614.897316804621369, 422625.581092073000036, 422636.264890254882630, 422646.948711349570658, 422657.632555356831290, 422668.316422275849618, 422679.000312106218189, 422689.684224847413134, 422700.368160498910584, 422711.052119060186669, 422721.736100530717522, 422732.420104909979273, 422743.104132197389845, 422753.788182392483577, 422764.472255494678393, 422775.156351503566839, 422785.840470418566838, 422796.524612239096314, 422807.208776964689605, 422817.892964594706427, 422828.577175128913950, 422839.261408566439059, 422849.945664906990714, 422860.629944149928633, 422871.314246294787154, 422881.998571341042407, 422892.682919288054109, 422903.367290135473013, 422914.051683882658836, 422924.736100529145915, 422935.420540074352175, 422946.105002517870162, 422956.789487859001383, 422967.473996097396594, 422978.158527232299093, 422988.843081263476051, 422999.527658190228976, 423010.212258012033999, 423020.896880728483666, 423031.581526338821277, 423042.266194842814002, 423052.950886239705142, 423063.635600529087242, 423074.320337710378226, 423085.005097783170640, 423095.689880746765994, 423106.374686600698624, 423117.059515344502870, 423127.744366977713071, 423138.429241499688942, 423149.114138909848407, 423159.799059207784012, 423170.484002393030096, 423181.168968464946374, 423191.853957422950771, 423202.538969266635831, 423213.224003995535895, 423223.909061609010678, 423234.594142106536310, 423245.279245487588923, 423255.964371751761064, 423266.649520898354240, 423277.334692926960997, 423288.019887836999260, 423298.705105628061574, 423309.390346299449448, 423320.075609850813635, 423330.760896281455643, 423341.446205591084436, 423352.131537778885104, 423362.816892844508402, 423373.502270787488669, 423384.187671607185621, 423394.873095303017180, 423405.558541874634102, 423416.244011321454309, 423426.929503642953932, 423437.615018838550895, 423448.300556907721329, 423458.986117849999573, 423469.671701664861757, 423480.357308351784013, 423491.042937910184264, 423501.728590339596849, 423512.414265639497899, 423523.099963809363544, 423533.785684848553501, 423544.471428756718524, 423555.157195533334743, 423565.842985177703667, 423576.528797689476050, 423587.214633067953400, 423597.900491312844679, 423608.586372423451394, 423619.272276399307884, 423629.958203239890281, 423640.644152944616508, 423651.330125513079111, 423662.016120944754221, 423672.702139238943346, 423683.388180395297240, 423694.074244413175620, 423704.760331292171031, 423715.446441031643189, 423726.132573631242849, 423736.818729090271518, 423747.504907408263534, 423758.191108584753238, 423768.877332619158551, 423779.563579510955606, 423790.249849259562325, 423800.936141864571255, 423811.622457325458527, 423822.308795641642064, 423832.995156812597997, 423843.681540837860666, 423854.367947716847993, 423865.054377449094318, 423875.740830033959355, 423886.427305470977444, 423897.113803759799339, 423907.800324899726547, 423918.486868890235201, 423929.173435730801430, 423939.860025421017781, 423950.546637960185762, 423961.233273347956128, 423971.919931583630387, 423982.606612666859291, 423993.293316597118974, 424003.980043373710942, 424014.666792996227741, 424025.353565464145504, 424036.040360776940361, 424046.727178934088442, 424057.414019935065880, 424068.100883779407013, 424078.787770466471557, 424089.474679995793849, 424100.161612366908230, 424110.848567579232622, 424121.535545632184949, 424132.222546525299549, 424142.909570258110762, 424153.596616830094717, 424164.283686240669340, 424174.970778489368968, 424185.657893575553317, 424196.345031498873141, 424207.032192258629948, 424217.719375854416285, 424228.406582285708282, 424239.093811551982071, 424249.781063652655575, 424260.468338587263133, 424271.155636355164461, 424281.842956956126727, 424292.530300389335025, 424303.217666654381901, 424313.905055750685278, 424324.592467677895911, 424335.279902435315307, 424345.967360022477806, 424356.654840438859537, 424367.342343684053048, 424378.029869757301640, 424388.717418658197857, 424399.404990386334248, 424410.092584941070527, 424420.780202321766410, 424431.467842528189067, 424442.155505559640005, 424452.843191415653564, 424463.530900095647667, 424474.218631599098444, 424484.906385925656650, 424495.594163074507378, 424506.281963045359589, 424516.969785837572999, 424527.657631450798362, 424538.345499884278979, 424549.033391137665603, 424559.721305210317951, 424570.409242101886775, 424581.097201811615378, 424591.785184339212719, 424602.473189683980308, 424613.161217845510691, 424623.849268823221792, 424634.537342616647948, 424645.225439225207083, 424655.913558648491744, 424666.601700885803439, 424677.289865936676506, 424687.978053800761700, 424698.666264477302320, 424709.354497966007330, 424720.042754266120028, 424730.731033377232961, 424741.419335298880469, 424752.107660030422267, 424762.796007571450900, 424773.484377921384294, 424784.172771079814993, 424794.861187045986298, 424805.549625819490757, 424816.238087399862707, 424826.926571786636487, 424837.615078979171813, 424848.303608977003023, 424858.992161779489834, 424869.680737386341207, 424880.369335796800442, 424891.057957010518294, 424901.746601026912685, 424912.435267845517956, 424923.123957465693820, 424933.812669886974618, 424944.501405108778272, 424955.190163130871952, 424965.878943952324335, 424976.567747572902590, 424987.256573992024641, 424997.945423209108412, 425008.634295223630033, 425019.323190035123844, 425030.012107643182389, 425040.701048047048971, 425051.390011246316135, 425062.078997240401804, 425072.768006029014941, 425083.457037611340638, 425094.146091987029649, 425104.835169155499898, 425115.524269116285723, 425126.213391868805047, 425136.902537412592210, 425147.591705747065134, 425158.280896871758159, 425168.970110786147416, 425179.659347489709035, 425190.348606981919147, 425201.037889262253884, 425211.727194330189377, 425222.416522185259964, 425233.105872826767154, 425243.795246254419908, 425254.484642467636149, 425265.174061465833802, 425275.863503248488996, 425286.552967815194279, 425297.242455165251158, 425307.931965298310388, 425318.621498213731684, 425329.311053911165800, 425340.000632389856037, 425350.690233649453148, 425361.379857689433265, 425372.069504509214312, 425382.759174108214211, 425393.448866486083716, 425404.138581642182544, 425414.828319576045033, 425425.518080287089106, 425436.207863774965517, 425446.897670038975775, 425457.587499078596011, 425468.277350893360563, 425478.967225482803769, 425489.657122846401762, 425500.347042983514257, 425511.036985893733799, 425521.726951576478314, 425532.416940031398553, 425543.106951257737819, 425553.796985255088657, 425564.487042022927199, 425575.177121560787782, 425585.867223867971916, 425596.557348944188561, 425607.247496788739227, 425617.937667401274666, 425628.627860781154595, 425639.318076927796938, 425650.008315840910655, 425660.698577519797254, 425671.388861963932868, 425682.079169172910042, 425692.769499146088492, 425703.459851883060765, 425714.150227383244783, 425724.840625646233093, 425735.531046671327204, 425746.221490458119661, 425756.911957005970180, 425767.602446314529516, 425778.292958383273799, 425788.983493211562745, 425799.674050798930693, 425810.364631144853774, 425821.055234248866327, 425831.745860110386275, 425842.436508728889748, 425853.127180103852879, 425863.817874234926421, 425874.508591121353675, 425885.199330762727186, 425895.890093158581294, 425906.580878308275715, 425917.271686211461201, 425927.962516867381055, 425938.653370275686029, 425949.344246435968671, 425960.035145347355865, 425970.726067009672988, 425981.417011422279757, 425992.107978584594093, 426002.798968496150337, 426013.489981156424619, 426024.181016564951278, 426034.872074721148238, 426045.563155624549836, 426056.254259274632204, 426066.945385670871474, 426077.636534812627360, 426088.327706699550617, 426099.018901331000961, 426109.710118706629146, 426120.401358825794887, 426131.092621687974315, 426141.783907292643562, 426152.475215639395174, 426163.166546727588866, 426173.857900556642562, 426184.549277126323432, 426195.240676435816567, 426205.932098484772723, 426216.623543272668030, 426227.315010798862204, 426238.006501063005999, 426248.698014064517338, 426259.389549802755937, 426270.081108277314343, 426280.772689487843309, 426291.464293433411513, 426302.155920113902539, 426312.847569528676104, 426323.539241677033715, 426334.230936558684334, 426344.922654173045885, 426355.614394519536290, 426366.306157597689889, 426376.997943407041021, 426387.689751947007608, 426398.381583217182197, 426409.073437216808088, 426419.765313945536036, 426430.457213402900379, 426441.149135588260833, 426451.841080501093529, 426462.533048141049221, 426473.225038507429417, 426483.917051599884871, 426494.609087417717092, 426505.301145960518625, 426515.993227227765601, 426526.685331218875945, 426537.377457933442201, 426548.069607370940503, 426558.761779530730564, 426569.453974412404932, 426580.146192015381530, 426590.838432339194696, 426601.530695383262355, 426612.222981147177052, 426622.915289630356710, 426633.607620832277462, 426644.299974752415437, 426654.992351390304975, 426665.684750745363999, 426676.377172817126848, 426687.069617605127860, 426697.762085108668543, 426708.454575327399652, 426719.147088260739110, 426729.839623908279464, 426740.532182269322220, 426751.224763343459927, 426761.917367130168714, 426772.609993628924713, 426783.302642839204054, 426793.995314760482870, 426804.688009392353706, 426815.380726734118070, 426826.073466785252094, 426836.766229545522947, 426847.459015014115721, 426858.151823190681171, 426868.844654074637219, 426879.537507665401790, 426890.230383962683845, 426900.923282965668477, 426911.616204674122855, 426922.309149087348487, 426933.002116204879712, 426943.695106026192661, 426954.388118550879881, 426965.081153778242879, 426975.774211707932409, 426986.467292339249980, 426997.160395671788137, 427007.853521705081221, 427018.546670438605361, 427029.239841871720273, 427039.933036004018504, 427050.626252834976185, 427061.319492364069447, 427072.012754590716213, 427082.706039514450822, 427093.399347134865820, 427104.092677451262716, 427114.786030463234056, 427125.479406170255970, 427136.172804571804591, 427146.866225667297840, 427157.559669456270058, 427168.253135938313790, 427178.946625112788752, 427189.640136979229283, 427200.333671536995098, 427211.027228785795160, 427221.720808724989183, 427232.414411353936885, 427243.108036672405433, 427253.801684679696336, 427264.495355375285726, 427275.189048758707941, 427285.882764829439111, 427296.576503587013576, 427307.270265030791052, 427317.964049160422292, 427328.657855975267012, 427339.351685474917758, 427350.045537658676039, 427360.739412526134402, 427371.433310076885391, 427382.127230310288724, 427392.821173225878738, 427403.515138823073357, 427414.209127101348713, 427424.903138060471974, 427435.597171699511819, 427446.291228018177208, 427456.985307015944272, 427467.679408692289144, 427478.373533046571538, 427489.067680078500416, 427499.761849787435494, 427510.456042172911111, 427521.150257234286983, 427531.844494971213862, 427542.538755383167882, 427553.233038469508756, 427563.927344229712617, 427574.621672663430218, 427585.316023770021275, 427596.010397549020126, 427606.704793999902904, 427617.399213122087531, 427628.093654915224761, 427638.788119378674310, 427649.482606511912309, 427660.177116314531304, 427670.871648785949219, 427681.566203925525770, 427692.260781732911710, 427702.955382207641378, 427713.650005349132698, 427724.344651156745385, 427735.039319630071986, 427745.734010768705048, 427756.428724571946077, 427767.123461039329413, 427777.818220170389395, 427788.513001964718569, 427799.207806421560235, 427809.902633540506940, 427820.597483321151230, 427831.292355762794614, 427841.987250865087844, 427852.682168627390638, 427863.377109049353749, 427874.072072130220477, 427884.767057869641576, 427895.462066267093178, 427906.157097322051413, 427916.852151034050621, 427927.547227402392309, 427938.242326426727232, 427948.937448106589727, 427959.632592441339511, 427970.327759430452716, 427981.022949073463678, 427991.718161370023154, 428002.413396319316234, 428013.108653920993675, 428023.803934174589813, 428034.499237079522572, 428045.194562635209877, 428055.889910841244273, 428066.585281697101891, 428077.280675202200655, 428087.976091356016695, 428098.671530158200767, 428109.366991608170792, 428120.062475705228280, 428130.757982449082192, 428141.453511839150451, 428152.149063874967396, 428162.844638555892743, 428173.540235881519038, 428184.235855851380620, 428194.931498464778997, 428205.627163721248507, 428216.322851620498113, 428227.018562161771115, 428237.714295344660059, 428248.410051168582868, 428259.105829633132089, 428269.801630737783853, 428280.497454481897876, 428291.193300865008496, 428301.889169886708260, 428312.585061546473298, 428323.280975843605120, 428333.976912777812686, 428344.672872348455712, 428355.368854555010330, 428366.064859397127293, 428376.760886873991694, 428387.456936985428911, 428398.153009730740450, 428408.849105109402444, 428419.545223121007439, 428430.241363765031565, 428440.937527040718123, 428451.633712947892491, 428462.329921485856175, 428473.026152654259931, 428483.722406452347059, 428494.418682879826520, 428505.114981935999822, 428515.811303620517720, 428526.507647932739928, 428537.204014872200787, 428547.900404438434634, 428558.596816630917601, 428569.293251449067611, 428579.989708892419003, 428590.686188960564323, 428601.382691652746871, 428612.079216968675610, 428622.775764907768462, 428633.472335469501559, 428644.168928653292824, 428654.865544458734803, 428665.562182885361835, 428676.258843932475429, 428686.955527599726338, 428697.652233886474278, 428708.348962792486418, 428719.045714316831436, 428729.742488459334709, 428740.439285219355952, 428751.136104596313089, 428761.832946589856874, 428772.529811199347023, 428783.226698424317874, 428793.923608264303766, 428804.620540718722623, 428815.317495786992367, 428826.014473468880169, 428836.711473763629328, 428847.408496670715977, 428858.105542189732660, 428868.802610320155509, 428879.499701061460655, 428890.196814413124230, 428900.893950374622364, 428911.591108945489395, 428922.288290125143249, 428932.985493913234677, 428943.682720309065189, 428954.379969312169123, 428965.077240922080819, 428975.774535138218198, 428986.471851960290223, 428997.169191387423780, 429007.866553419444244, 429018.563938055536710, 429029.261345295526553, 429039.958775138657074, 429050.656227584520821, 429061.353702632477507, 429072.051200282236096, 429082.748720533039887, 429093.446263384597842, 429104.143828836269677, 429114.841416887589730, 429125.539027538034134, 429136.236660787020810, 429146.934316634200513, 429157.631995078991167, 429168.329696120752487, 429179.027419759251643, 429189.725165993673727, 429200.422934823727701, 429211.120726248715073, 429221.818540268344805, 429232.516376881976612, 429243.214236089086626, 429253.912117889092769, 429264.610022281762213, 429275.307949266338255, 429286.005898842413444, 429296.703871009347495, 429307.401865766849369, 429318.099883114220574, 429328.797923050995450, 429339.495985576766543, 429350.194070690893568, 429360.892178392910864, 429371.590308682294562, 429382.288461558695417, 429392.986637021240313, 429403.684835069754627, 429414.383055703656282, 429425.081298922304995, 429435.779564725351520, 429446.477853112155572, 429457.176164082251489, 429467.874497635173611, 429478.572853770398069, 429489.271232487342786, 429499.969633785658516, 429510.668057664588559, 429521.366504123841878, 429532.064973162836395, 429542.763464781106450, 429553.461978978011757, 429564.160515753028449, 429574.859075105865486, 429585.557657035940792, 429596.256261542614084, 429606.954888625477906, 429617.653538283891976, 429628.352210517565254, 429639.050905325857457, 429649.749622708302923, 429660.448362664377782, 429671.147125193441752, 429681.845910295203794, 429692.544717969023623, 429703.243548214435577, 429713.942401030973997, 429724.641276417940389, 429735.340174375043716, 429746.039094901701901, 429756.738037997391075, 429767.437003661587369, 429778.135991893825121, 429788.835002693522256, 429799.534036060213111, 429810.233091993373819, 429820.932170492596924, 429831.631271557183936, 429842.330395186785609, 429853.029541380819865, 429863.728710138879251, 429874.427901460265275, 429885.127115344570484, 429895.826351791387424, 429906.525610800075810, 429917.224892370053567, 429927.924196501029655, 429938.623523192363791, 429949.322872443532106, 429960.022244254068937, 429970.721638623450417, 429981.421055551210884, 429992.120495036768261, 430002.819957079715095, 430013.519441679411102, 430024.218948835448828, 430034.918478547246195, 430045.618030814337544, 430056.317605636199005, 430067.017203012364917, 430077.716822942253202, 430088.416465425456408, 430099.116130461392459, 430109.815818049479276, 430120.515528189367615, 430131.215260880475398, 430141.915016122278757, 430152.614793914370239, 430163.314594256051350, 430174.014417146972846, 430184.714262586494442, 430195.414130574208684, 430206.114021109591704, 430216.813934192177840, 430227.513869821385015, 430238.213827996689361, 430248.913808717625216, 430259.613811983668711, 430270.313837794412393, 430281.013886149215978, 430291.713957047613803, 430302.414050489023793, 430313.114166473038495, 430323.814304999134038, 430334.514466066902969, 430345.214649675530382, 430355.914855824841652, 430366.615084514080081, 430377.315335743012838, 430388.015609510883223, 430398.715905817167368, 430409.416224661574233, 430420.116566043405328, 430430.816929962311406, 430441.517316417652182, 430452.217725408961996, 430462.918156935775187, 430473.618610997451469, 430484.319087593641598, 430495.019586723763496, 430505.720108387293294, 430516.420652583823539, 430527.121219312772155, 430537.821808573615272, 430548.522420365770813, 430559.223054688831326, 430569.923711542389356, 430580.624390925804619, 430591.325092838553246, 430602.025817280111369, 430612.726564250129741, 430623.427333747968078, 430634.128125773102511, 430644.828940325183794, 430655.529777403513435, 430666.230637007625774, 430676.931519137055147, 430687.632423791335896, 430698.333350969944149, 430709.034300672297832, 430719.735272897873074, 430730.436267646320630, 430741.137284917058423, 430751.838324709504377, 430762.539387023192830, 430773.240471857658122, 430783.941579212376382, 430794.642709086707328, 430805.343861480418127, 430816.045036392752081, 430826.746233823359944, 430837.447453771717846, 430848.148696237127297, 430858.849961219297256, 430869.551248717645649, 430880.252558731765021, 430890.953891260898672, 430901.655246304813772, 430912.356623862811830, 430923.058023934485391, 430933.759446519310586, 430944.460891616763547, 430955.162359226320405, 430965.863849347515497, 430976.565361979824957, 430987.266897122783121, 430997.968454775749706, 431008.670034938375466, 431019.371637610078324, 431030.073262790334411, 431040.774910478794482, 431051.476580674643628, 431062.178273377649020, 431072.879988587170374, 431083.581726302800234, 431094.283486523956526, 431104.985269250057172, 431115.687074480869342, 431126.388902215578128, 431137.090752453776076, 431147.792625195055734, 431158.494520438835025, 431169.196438184531871, 431179.898378431797028, 431190.600341179990210, 431201.302326428703964, 431212.004334177356213, 431222.706364425481297, 431233.408417172613554, 431244.110492418170907, 431254.812590161687694, 431265.514710402640048, 431276.216853140504099, 431286.919018374814186, 431297.621206105046440, 431308.323416330676991, 431319.025649051240180, 431329.727904266153928, 431340.430181975010782, 431351.132482177286875, 431361.834804872400127, 431372.537150059943087, 431383.239517739391886, 431393.941907910106238, 431404.644320571736898, 431415.346755723701790, 431426.049213365535252, 431436.751693496713415, 431447.454196116712410, 431458.156721225066576, 431468.859268821310252, 431479.561838904744945, 431490.264431475137826, 431500.967046531790402, 431511.669684074178804, 431522.372344101895578, 431533.075026614475064, 431543.777731611276977, 431554.480459091893863, 431565.183209055743646, 431575.885981502418872, 431586.588776431337465, 431597.291593842033762, 431607.994433733925689, 431618.697296106663998, 431629.400180959608406, 431640.103088292235043, 431650.806018104194663, 431661.508970394846983, 431672.211945163726341, 431682.914942410308868, 431693.617962134128902, 431704.321004334604368, 431715.024069011327811, 431725.727156163658947, 431736.430265791364945, 431747.133397893630899, 431757.836552470049355, 431768.539729520271067, 431779.242929043597542, 431789.946151039563119, 431800.649395507702138, 431811.352662447548937, 431822.055951858521439, 431832.759263740153983, 431843.462598091806285, 431854.165954913303722, 431864.869334203773178, 431875.572735962923616, 431886.276160190231167, 431896.979606885171961, 431907.683076047163922, 431918.386567675741389, 431929.090081770496909, 431939.793618330790196, 431950.497177356155589, 431961.200758846185636, 431971.904362800356466, 431982.607989217911381, 431993.311638098733965, 432004.015309442067519, 432014.719003247446381, 432025.422719514346682, 432036.126458242360968, 432046.830219430965371, 432057.534003079636022, 432068.237809187732637, 432078.941637754964177, 432089.645488780690357, 432100.349362264387310, 432111.053258205705788, 432121.757176604063716, 432132.461117458879016, 432143.165080769744236, 432153.869066536019091, 432164.573074757528957, 432175.277105433284305, 432185.981158563168719, 432196.685234146600123, 432207.389332182880025, 432218.093452671717387, 432228.797595612530131, 432239.501761004852597, 432250.205948848102707, 432260.910159141814802, 432271.614391885523219, 432282.318647078645881, 432293.022924720775336, 432303.727224811271299, 432314.431547349900939, 432325.135892335791141, 432335.840259768709075, 432346.544649648014456, 432357.249061973358039, 432367.953496743983123, 432378.657953959598672, 432389.362433619680814, 432400.066935723589268, 432410.771460271032993, 432421.476007261255290, 432432.180576694023330, 432442.885168568638619, 432453.589782884577289, 432464.294419641548302, 432474.999078838853166, 432485.703760475968011, 432496.408464552485384, 432507.113191067997832, 432517.817940021806862, 432528.522711413505021, 432539.227505242626648, 432549.932321508531459, 432560.637160210811999, 432571.342021349002607, 432582.046904922579415, 432592.751810930960346, 432603.456739373621531, 432614.161690250155516, 432624.866663560154848, 432635.571659302921034, 432646.276677478046622, 432656.981718084949534, 432667.686781123222318, 432678.391866592282895, 432689.096974491782021, 432699.802104821021203, 432710.507257579592988, 432721.212432766915299, 432731.917630382697098, 432742.622850426181685, 432753.328092896961607, 432764.033357794571202, 432774.738645118544810, 432785.443954868242145, 432796.149287043197546, 432806.854641643119976, 432817.560018667194527, 432828.265418115013745, 432838.970839986228384, 432849.676284280198161, 432860.381750996457413, 432871.087240134365857, 432881.792751693690661, 432892.498285673791543, 432903.203842074086424, 432913.909420894109644, 432924.615022133570164, 432935.320645791653078, 432946.026291868009139, 432956.731960362056270, 432967.437651273503434, 432978.143364601535723, 432988.849100345978513, 432999.554858506133314, 433010.260639081418049, 433020.966442071541678, 433031.672267475863919, 433042.378115293977316, 433053.083985525241587, 433063.789878169249278, 433074.495793225534726, 433085.201730693515856, 433095.907690572785214, 433106.613672862644307, 433117.319677562802099, 433128.025704672676511, 433138.731754191743676, 433149.437826119479723, 433160.143920455535408, 433170.850037199328654, 433181.556176350219175, 433192.262337907857727, 433202.968521871662233, 433213.674728241167031, 433224.380957015906461, 433235.087208195356652, 433245.793481778877322, 433256.499777766235638, 433267.206096156733111, 433277.912436949904077, 433288.618800145224668, 433299.325185742345639, 433310.031593740568496, 433320.738024139543995, 433331.444476938573644, 433342.150952137424611, 433352.857449735281989, 433363.563969731912948, 433374.270512126677204, 433384.977076919225510, 433395.683664108917583, 433406.390273695171345, 433417.096905677637551, 433427.803560055734124, 433438.510236829053611, 433449.216935996955726, 433459.923657559149433, 433470.630401514936239, 433481.337167863850482, 433492.043956605368294, 433502.750767739198636, 433513.457601264584810, 433524.164457181119360, 433534.871335488336626, 433545.578236185654532, 433556.285159272607416, 433566.992104748787824, 433577.699072613555472, 433588.406062866502907, 433599.113075507048052, 433609.820110534783453, 433620.527167949127033, 433631.234247749613132, 433641.941349935717881, 433652.648474507033825, 433663.355621462862473, 433674.062790802854579, 433684.769982526602689, 433695.477196633291896, 433706.184433122747578, 433716.891691994271241, 433727.598973247513641, 433738.306276881834492, 433749.013602896768134, 433759.720951291848905, 433770.428322066494729, 433781.135715220356360, 433791.843130752677098, 433802.550568663340528, 433813.258028951473534, 433823.965511616785079, 433834.673016658751294, 433845.380544076790102, 433856.088093870435841, 433866.795666039222851, 433877.503260582685471, 433888.210877500183415, 433898.918516791309230, 433909.626178455597255, 433920.333862492465414, 433931.041568901448045, 433941.749297681963071, 433952.457048833719455, 433963.164822356076911, 433973.872618248511571, 433984.580436510557774, 433995.288277141749859, 434005.996140141563956, 434016.704025509417988, 434027.411933244962711, 434038.119863347499631, 434048.827815816795919, 434059.535790652036667, 434070.243787853105459, 434080.951807419070974, 434091.659849349816795, 434102.367913644586224, 434113.076000302913599, 434123.784109324391466, 434134.492240708554164, 434145.200394454819616, 434155.908570562663954, 434166.616769031563308, 434177.324989861110225, 434188.033233050722629, 434198.741498600051273, 434209.449786508397665, 434220.158096775354352, 434230.866429400513880, 434241.574784383177757, 434252.283161722996738, 434262.991561419446953, 434273.699983471946325, 434284.408427880087402, 434295.116894643346313, 434305.825383761257399, 434316.533895233238582, 434327.242429058882408, 434337.950985237490386, 434348.659563768829685, 434359.368164652260020, 434370.076787887373939, 434380.785433473472949, 434391.494101410207804, 434402.202791697171051, 434412.911504333664197, 434423.620239319279790, 434434.328996653435752, 434445.037776335841045, 434455.746578365738969, 434466.455402742838487, 434477.164249466615729, 434487.873118536430411, 434498.582009951816872, 434509.290923712367658, 434519.999859817558900, 434530.708818266924936, 434541.417799059825484, 434552.126802195911296, 434562.835827674600296, 434573.544875495368615, 434584.253945657808799, 434594.963038161338773, 434605.672153005492873, 434616.381290189863648, 434627.090449713752605, 434637.799631576810498, 434648.508835778571665, 434659.218062318395823, 434669.927311195875518, 434680.636582410486881, 434691.345875961647835, 434702.055191849067342, 434712.764530072046909, 434723.473890630237292, 434734.183273522998206, 434744.892678749980405, 434755.602106310485397, 434766.311556204222143, 434777.021028430608567, 434787.730522989062592, 434798.440039879234973, 434809.149579100485425, 434819.859140652464703, 434830.568724534532521, 434841.278330746339634, 434851.987959287303966, 434862.697610156785231, 434873.407283354492392, 434884.116978879843373, 434894.826696732430719, 434905.536436911614146, 434916.246199416986201, 434926.955984248081222, 434937.665791404200718, 434948.375620885111857, 434959.085472690057941, 434969.795346818864346, 434980.505243270657957, 434991.215162045264151, 435001.925103141984437, 435012.635066560353152, 435023.345052299962845, 435034.055060360173229, 435044.765090740693267, 435055.475143440766260, 435066.185218460101169, 435076.895315798174124, 435087.605435454286635, 435098.315577428264078, 435109.025741719291545, 435119.735928327136207, 435130.446137251041364, 435141.156368490715977, 435151.866622045636177, 435162.576897915219888, 435173.287196099001449, 435183.997516596515197, 435194.707859407179058, 435205.418224530643784, 435216.128611966210883, 435226.839021713647526, 435237.549453772197012, 435248.259908141451888, 435258.970384821004700, 435269.680883810215164, 435280.391405108734034, 435291.101948715921026, 435301.812514631368686, 435312.523102854494937, 435323.233713384892326, 435333.944346222095191, 435344.655001365521457, 435355.365678814589046, 435366.076378569006920, 435376.787100628134795, 435387.497844991507009, 435398.208611658657901, 435408.919400629121810, 435419.630211902200244, 435430.341045477660373, 435441.051901354803704, 435451.762779533339199, 435462.473680012510158, 435473.184602792025544, 435483.895547871303279, 435494.606515249877702, 435505.317504927108530, 435516.028516902762931, 435526.739551176258828, 435537.450607746839523, 435548.161686614330392, 435558.872787778149359, 435569.583911237772554, 435580.295056992617901, 435591.006225042277947, 435601.717415386345237, 435612.428628024121281, 435623.139862955198623, 435633.851120179111604, 435644.562399695452768, 435655.273701503523625, 435665.985025602800306, 435676.696371993108187, 435687.407740673690569, 435698.119131644023582, 435708.830544903816190, 435719.541980452369899, 435730.253438289277256, 435740.964918414014392, 435751.676420826173853, 435762.387945525115356, 435773.099492510431446, 435783.811061781656463, 435794.522653338208329, 435805.234267179621384, 435815.945903305371758, 435826.657561715051997, 435837.369242408080027, 435848.080945384048391, 435858.792670642375015, 435869.504418182594236, 435880.216188004065771, 435890.927980106614996, 435901.639794489485212, 435912.351631152268965, 435923.063490094500594, 435933.775371315598022, 435944.487274815095589, 435955.199200592527632, 435965.911148647428490, 435976.623118979099672, 435987.335111587366555, 435998.047126471414231, 436008.759163631068077, 436019.471223065571394, 436030.183304774516728, 436040.895408757496625, 436051.607535013754386, 436062.319683543057181, 436073.031854344822932, 436083.744047418585978, 436094.456262763764244, 436105.168500379950274, 436115.880760266561992, 436126.593042423191946, 436137.305346849316265, 436148.017673544352874, 436158.730022508010734, 436169.442393739591353, 436180.154787238629069, 436190.867203004774638, 436201.579641037387773, 436212.292101335944608, 436223.004583900037687, 436233.717088729143143, 436244.429615822853521, 436255.142165180470329, 436265.854736801818945, 436276.567330686026253, 436287.279946832859423, 436297.992585241736379, 436308.705245912133250, 436319.417928843584377, 436330.130634035565890, 436340.843361487670336, 436351.556111199373845, 436362.268883170036133, 436372.981677399366163, 436383.694493886723649, 436394.407332631642930, 436405.120193633774761, 436415.833076892420650, 436426.545982407173142, 436437.258910177508369, 436447.971860203077085, 436458.684832483122591, 436469.397827017295640, 436480.110843805188779, 436490.823882846161723, 436501.536944139690604, 436512.250027685426176, 436522.963133482902776, 436533.676261531363707, 436544.389411830517929, 436555.102584379957989, 436565.815779178927187, 436576.528996227076277, 436587.242235523939598, 436597.955497068993282, 436608.668780861713458, 436619.382086901576258, 436630.095415188232437, 436640.808765720925294, 436651.522138499421999, 436662.235533523140475, 436672.948950791556854, 436683.662390304205474, 436694.375852060620673, 436705.089336060220376, 436715.802842302480713, 436726.516370787052438, 436737.229921513411682, 436747.943494480976369, 436758.657089689280838, 436769.370707137859426, 436780.084346826188266, 436790.798008753801696, 436801.511692920234054, 436812.225399324961472, 436822.939127967401873, 436833.652878847147804, 436844.366651963733602, 436855.080447316577192, 436865.794264905271120, 436876.508104729233310, 436887.221966788056307, 436897.935851081274450, 436908.649757608247455, 436919.363686368509661, 436930.077637361711822, 436940.791610587213654, 436951.505606044549495, 436962.219623733311892, 436972.933663652860560, 436983.647725802846253, 436994.361810182686895, 437005.075916791975033, 437015.790045630070381, 437026.504196696565486, 437037.218369991111103, 437047.932565512834117, 437058.646783261618111, 437069.361023236822803, 437080.075285437866114, 437090.789569864340592, 437101.503876515838783, 437112.218205391836818, 437122.932556491636205, 437133.646929814945906, 437144.361325361242052, 437155.075743130000774, 437165.790183120756410, 437176.504645332926884, 437187.219129766162951, 437197.933636419824325, 437208.648165293503553, 437219.362716386734974, 437230.077289698878303, 437240.791885229642503, 437251.506502978387289, 437262.221142944705207, 437272.935805128072388, 437283.650489527848549, 437294.365196143859066, 437305.079924975347240, 437315.794676021789201, 437326.509449282952119, 437337.224244758137502, 437347.939062446937896, 437358.653902348771226, 437369.368764463288244, 437380.083648789790459, 437390.798555327986833, 437401.513484077353496, 437412.228435037191957, 437422.943408207269385, 437433.658403586945496, 437444.373421175754629, 437455.088460973231122, 437465.803522978792898, 437476.518607192148920, 437487.233713612600695, 437497.948842239740770, 437508.663993073103484, 437519.379166112106759, 437530.094361356284935, 437540.809578805172350, 437551.524818458419759, 437562.240080315212253, 437572.955364375258796, 437583.670670638093725, 437594.385999103193171, 437605.101349769975059, 437615.816722637973726, 437626.532117706839927, 437637.247534975933377, 437647.962974444788415, 437658.678436112939380, 437669.393919979862403, 437680.109426045091823, 437690.824954308220185, 437701.540504768548999, 437712.256077425670810, 437722.971672279119957, 437733.687289328488987, 437744.402928573137615, 437755.118590012600180, 437765.834273646527436, 437776.549979474337306, 437787.265707495331299, 437797.981457709392998, 437808.697230115765706, 437819.413024713983759, 437830.128841503639705, 437840.844680484326091, 437851.560541655228008, 437862.276425016170833, 437872.992330566514283, 437883.708258305734489, 437894.424208233540412, 437905.140180349175353, 437915.856174652348273, 437926.572191142477095, 437937.288229819096159, 437948.004290681623388, 437958.720373729709536, 437969.436478962772526, 437980.152606380404904, 437990.868755982024595, 438001.584927767049521, 438012.301121735188644, 438023.017337885976303, 438033.733576218714006, 438044.449836732936092, 438055.166119428351521, 438065.882424304261804, 438076.598751360259484, 438087.315100595820695, 438098.031472010596190, 438108.747865603887476, 438119.464281375287101, 438130.180719324387610, 438140.897179450490512, 438151.613661753304768, 438162.330166232306510, 438173.046692886855453, 438183.763241716544144, 438194.479812721023336, 438205.196405899652746, 438215.913021251908503, 438226.629658777441364, 438237.346318475611042, 438248.063000346010085, 438258.779704388172831, 438269.496430601517204, 438280.213178985577542, 438290.929949539946392, 438301.646742264041677, 438312.363557157397736, 438323.080394219490699, 438333.797253449854907, 438344.514134848082904, 438355.231038413592614, 438365.947964145860169, 438376.664912044478115, 438387.381882108922582, 438398.098874338669702, 438408.815888733253814, 438419.532925292209256, 438430.249984015012160, 438440.967064901196864, 438451.684167950239498, 438462.401293161674403, 438473.118440534977708, 438483.835610069741961, 438494.552801765385084, 438505.270015621383209, 438515.987251637328882, 438526.704509812814649, 438537.421790147142019, 438548.139092640019953, 438558.856417290749960, 438569.573764099041000, 438580.291133064310998, 438591.008524185977876, 438601.725937463750597, 438612.443372896988876, 438623.160830485227052, 438633.878310228057671, 438644.595812124840450, 438655.313336175226141, 438666.030882378632668, 438676.748450734652579, 438687.466041242703795, 438698.183653902320657, 438708.901288713153917, 438719.618945674446877, 438730.336624785908498, 438741.054326047014911, 438751.772049457184039, 438762.489795016008429, 438773.207562723022420, 438783.925352577702142, 438794.643164579465520, 438805.360998728021514, 438816.078855022671632, 438826.796733463124838, 438837.514634048682638, 438848.232556778995786, 438858.950501653482206, 438869.668468671792652, 438880.386457833228633, 438891.104469137557317, 438901.822502584022004, 438912.540558172331657, 438923.258635901962407, 438933.976735772332177, 438944.694857782975305, 438955.413001933484338, 438966.131168223335408, 438976.849356651946437, 438987.567567218968179, 438998.285799923760351, 439009.004054766031913, 439019.722331745026167, 439030.440630860568490, 439041.158952111902181, 439051.877295498619787, 439062.595661020313855, 439073.314048676402308, 439084.032458466419484, 439094.750890389841516, 439105.469344446260948, 439116.187820635212120, 439126.906318955996539, 439137.624839408439584, 439148.343381991726346, 439159.061946705565788, 439169.780533549375832, 439180.499142522749025, 439191.217773625161499, 439201.936426856089383, 439212.655102215125225, 439223.373799701686949, 439234.092519315308891, 439244.811261055583600, 439255.530024921870790, 439266.248810913763009, 439276.967619030911010, 439287.686449272616301, 439298.405301638355013, 439309.124176127836108, 439319.843072740477510, 439330.561991475755349, 439341.280932333262172, 439351.999895312415902, 439362.718880412750877, 439373.437887633917853, 439384.156916975160129, 439394.875968436244875, 439405.595042016531806, 439416.314137715555262, 439427.033255532849580, 439437.752395467949100, 439448.471557520329952, 439459.190741689584684, 439469.909947975014802, 439480.629176376271062, 439491.348426892887801, 439502.067699524457566, 439512.786994270281866, 439523.506311129895039, 439534.225650103064254, 439544.945011188974604, 439555.664394387335051, 439566.383799697621725, 439577.103227119310759, 439587.822676651820075, 439598.542148294916842, 439609.261642047960777, 439619.981157910428010, 439630.700695881852880, 439641.420255961827934, 439652.139838149712887, 439662.859442445158493, 439673.579068847699091, 439684.298717356636189, 439695.018387971678749, 439705.738080692244694, 439716.457795517984778, 439727.177532448142301, 439737.897291482484434, 439748.617072620370891, 439759.336875861394219, 439770.056701205088757, 439780.776548650872428, 439791.496418198221363, 439802.216309846844524, 439812.936223596159834, 439823.656159445585217, 439834.376117394713219, 439845.096097443019971, 439855.816099590098020, 439866.536123835307080, 439877.256170178297907, 439887.976238618663047, 439898.696329155587591, 439909.416441788896918, 439920.136576518067159, 439930.856733342399821, 439941.576912261545658, 439952.297113275039010, 439963.017336382414214, 439973.737581583147403, 439984.457848876598291, 439995.178138262592256, 440005.898449740372598, 440016.618783309531864, 440027.339138969662599, 440038.059516720182728, 440048.779916560568381, 440059.500338490353897, 440070.220782509248238, 440080.941248616494704, 440091.661736811802257, 440102.382247094588820, 440113.102779464272317, 440123.823333920561709, 440134.543910462874919, 440145.264509090688080, 440155.985129803535528, 440166.705772601009812, 440177.426437482528854, 440188.147124447568785, 440198.867833495838568, 440209.588564626639709, 440220.309317839564756, 440231.030093134089839, 440241.750890509865712, 440252.471709966252092, 440263.192551502725109, 440273.913415118935518, 440284.634300814417657, 440295.355208588589448, 440306.076138440868817, 440316.797090371022932, 440327.518064378411509, 440338.239060462510679, 440348.960078622912988, 440359.681118859094568, 440370.402181170473341, 440381.123265556816477, 440391.844372017425485, 440402.565500551834702, 440413.286651159694884, 440424.007823840365745, 440434.729018593323417, 440445.450235418276861, 440456.171474314644001, 440466.892735281842761, 440477.614018319465686, 440488.335323427105322, 440499.056650604179595, 440509.777999850164633, 440520.499371164652985, 440531.220764547178987, 440541.942179997102357, 440552.663617514132056, 440563.385077097686008, 440574.106558747240342, 440584.828062462387607, 440595.549588242662139, 440606.271136087423656, 440616.992705996322911, 440627.714297968777828, 440638.435912004439160, 440649.157548102724832, 440659.879206263052765, 440670.600886485190131, 440681.322588768438436, 440692.044313112332020, 440702.766059516521636, 440713.487827980367001, 440724.209618503460661, 440734.931431085278746, 440745.653265725355595, 440756.375122423225548, 440767.097001178306527, 440777.818901990307495, 440788.540824858471751, 440799.262769782566465, 440809.984736761951353, 440820.706725796218961, 440831.428736884787213, 440842.150770027306862, 440852.872825223195832, 440863.594902471930254, 440874.317001773102675, 440885.039123126363847, 440895.761266530898865, 440906.483431986416690, 440917.205619492451660, 440927.927829048421700, 440938.650060653977562, 440949.372314308478963, 440960.094590011518449, 440970.816887762630358, 440981.539207561232615, 440992.261549406975973, 441002.983913299220148, 441013.706299237674102, 441024.428707221755758, 441035.151137250883039, 441045.873589324590284, 441056.596063442586455, 441067.318559604231268, 441078.041077808942646, 441088.763618056429550, 441099.486180346168112, 441110.208764677576255, 441120.931371050188318, 441131.653999463596847, 441142.376649917277973, 441153.099322410766035, 441163.822016943478957, 441174.544733515067492, 441185.267472124949563, 441195.990232772717718, 441206.713015457731672, 441217.435820179700386, 441228.158646938041784, 441238.881495732290205, 441249.604366561921779, 441260.327259426470846, 441271.050174325529952, 441281.773111258458812, 441292.496070224908181, 441303.219051224295981, 441313.942054256214760, 441324.665079320140649, 441335.388126415666193, 441346.111195542092901, 441356.834286699187942, 441367.557399886252824, 441378.280535102996510, 441389.003692348778713, 441399.726871623191983, 441410.450072925770655, 441421.173296255932655, 441431.896541613270529, 441442.619808997318614, 441453.343098407553043, 441464.066409843449946, 441474.789743304543663, 441485.513098790484946, 441496.236476300633512, 441506.959875834465493, 441517.683297391631640, 441528.406740971666295, 441539.130206573870964, 441549.853694197954610, 441560.577203843451571, 441571.300735509721562, 441582.024289196357131, 441592.747864902892616, 441603.471462628862355, 441614.195082373684272, 441624.918724136950914, 441635.642387918138411, 441646.366073716839310, 441657.089781532529742, 441667.813511364685837, 441678.537263212783728, 441689.261037076590583, 441699.984832955175079, 441710.708650848479010, 441721.432490755862091, 441732.156352676742245, 441742.880236610712018, 441753.604142557363957, 441764.328070516174193, 441775.052020486502443, 441785.775992468057666, 441796.499986460315995, 441807.224002462753560, 441817.948040474788286, 441828.672100496245548, 441839.396182526310440, 441850.120286564633716, 441860.844412610807922, 441871.568560664134566, 441882.292730724322610, 441893.016922790789977, 441903.741136863245629, 441914.465372940874659, 441925.189631023444235, 441935.913911110430490, 441946.638213201193139, 441957.362537295441143, 441968.086883392650634, 441978.811251492239535, 441989.535641593742184, 442000.260053696809337, 442010.984487800858915, 442021.708943905308843, 442032.433422009926289, 442043.157922114070971, 442053.882444217160810, 442064.606988318904769, 442075.331554418720771, 442086.056142516084947, 442096.780752610589843, 442107.505384701828007, 442118.230038789100945, 442128.954714872059412, 442139.679412950179540, 442150.404133023112081, 442161.128875090158544, 442171.853639150969684, 442182.578425205021631, 442193.303233251790516, 442204.028063290868886, 442214.752915321907494, 442225.477789344033226, 442236.202685357071459, 442246.927603360498324, 442257.652543353731744, 442268.377505336306058, 442279.102489307813812, 442289.827495267789345, 442300.552523215650581, 442311.277573150931858, 442322.002645073283929, 442332.727738982008304, 442343.452854876697529, 442354.177992757060565, 442364.903152622282505, 442375.628334472072311, 442386.353538306022529, 442397.078764123492874, 442407.804011924017686, 442418.529281707189512, 442429.254573472542688, 442439.979887219436932, 442450.705222947522998, 442461.430580656335223, 442472.155960345407948, 442482.881362013984472, 442493.606785662006587, 442504.332231288659386, 442515.057698893535417, 442525.783188476401847, 442536.508700036327355, 442547.234233573195525, 442557.959789086366072, 442568.685366575373337, 442579.410966039751656, 442590.136587478977162, 442600.862230892700609, 442611.587896280165296, 442622.313583641196601, 442633.039292975154240, 442643.765024281630758, 442654.490777559985872, 442665.216552809986752, 442675.942350030934904, 442686.668169222364668, 442697.394010383926798, 442708.119873514981009, 442718.845758615236264, 442729.571665683994070, 442740.297594720905181, 442751.023545725445729, 442761.749518697208259, 442772.475513635668904, 442783.201530540245585, 442793.927569410472643, 442804.653630246059038, 442815.379713046306279, 442826.105817810865119, 442836.831944539269898, 442847.558093230880331, 442858.284263885288965, 442869.010456502030138, 442879.736671080696397, 442890.462907620647456, 442901.189166121592280, 442911.915446582890581, 442922.641749004134908, 442933.368073384743184, 442944.094419724424370, 442954.820788022479974, 442965.547178278502543, 442976.273590492201038, 442987.000024662760552, 442997.726480789948255, 443008.452958873240277, 443019.179458912054542, 443029.905980905983597, 443040.632524854503572, 443051.359090757265221, 443062.085678613511845, 443072.812288423068821, 443083.538920185295865, 443094.265573899669107, 443104.992249565839302, 443115.718947183282580, 443126.445666751416866, 443137.172408269892912, 443147.899171738070436, 443158.625957155658398, 443169.352764522016514, 443180.079593836795539, 443190.806445099413395, 443201.533318309462629, 443212.260213466419373, 443222.987130569759756, 443233.714069619076326, 443244.441030613845214, 443255.168013553600758, 443265.895018437819090, 443276.622045266092755, 443287.349094037956093, 443298.076164752827026, 443308.803257410239894, 443319.530372009787243, 443330.257508550945204, 443340.984667033248115, 443351.711847456230316, 443362.439049819309730, 443373.166274122137111, 443383.893520364072174, 443394.620788544882089, 443405.348078663810156, 443416.075390720565338, 443426.802724714623764, 443437.530080645403359, 443448.257458512496669, 443458.984858315554447, 443469.712280053878203, 443480.439723727060482, 443491.167189334577415, 443501.894676876196172, 443512.622186351160053, 443523.349717759003397, 443534.077271099376958, 443544.804846371756867, 443555.532443575619254, 443566.260062710556667, 443576.987703775928821, 443587.715366771386471, 443598.443051696522161, 443609.170758550695609, 443619.898487333557568, 443630.626238044467755, 443641.354010683076922, 443652.081805248919409, 443662.809621741354931, 443673.537460160092451, 443684.265320504549891, 443694.993202774261590, 443705.721106968761887, 443716.449033087468706, 443727.176981130032800, 443737.904951096104924, 443748.632942984753754, 443759.360956795979291, 443770.088992529083043, 443780.817050183482934, 443791.545129758829717, 443802.273231254657730, 443813.001354670559522, 443823.729500005720183, 443834.457667260081507, 443845.185856432945002, 443855.914067523786798, 443866.642300532199442, 443877.370555457833689, 443888.098832299991045, 443898.827131058205850, 443909.555451732128859, 443920.283794321236201, 443931.012158825004008, 443941.740545243083034, 443952.468953574716579, 443963.197383819671813, 443973.925835977366660, 443984.654310047393665, 443995.382806029170752, 444006.111323922290467, 444016.839863726287149, 444027.568425440636929, 444038.297009064815938, 444049.025614598474931, 444059.754242041031830, 444070.482891392020974, 444081.211562650976703, 444091.940255817491561, 444102.668970890925266, 444113.397707870928571, 444124.126466756919399, 444134.855247548490297, 444145.584050245233811, 444156.312874846451450, 444167.041721351793967, 444177.770589760853909, 444188.499480073107406, 444199.228392288030591, 444209.957326405099593, 444220.686282424023375, 444231.415260344045237, 444242.144260164874140, 444252.873281886044424, 444263.602325507032219, 444274.331391027255449, 444285.060478446364868, 444295.789587763894815, 444306.518718979205005, 444317.247872092062607, 444327.977047101827338, 444338.706244007975329, 444349.435462810040917, 444360.164703507791273, 444370.893966100411490, 444381.623250587610528, 444392.352556968864519, 444403.081885243707802, 444413.811235411558300, 444424.540607472124975, 444435.270001424825750, 444445.999417269136757, 444456.728855004650541, 444467.458314630843233, 444478.187796147249173, 444488.917299553460907, 444499.646824848838151, 444510.376372033148073, 444521.105941105633974, 444531.835532065946609, 444542.565144913620315, 444553.294779648189433, 444564.024436269130092, 444574.754114775976632, 444585.483815168263391, 444596.213537445524707, 444606.943281607236713, 444617.673047652933747, 444628.402835582208354, 444639.132645394362044, 444649.862477089220192, 444660.592330666142516, 444671.322206124546938, 444682.052103464142419, 444692.782022684463300, 444703.511963784811087, 444714.241926764836535, 444724.971911624190398, 444735.701918362232391, 444746.431946978438646, 444757.161997472459916, 444767.892069843830541, 444778.622164091968443, 444789.352280216407962, 444800.082418216741644, 444810.812578092503827, 444821.542759843054228, 444832.272963468160015, 444843.003188967064489, 444853.733436339418404, 444864.463705584930722, 444875.193996702844743, 444885.924309692694806, 444896.654644554248080, 444907.385001286747865, 444918.115379889903124, 444928.845780363131780, 444939.576202706084587, 444950.306646918063052, 444961.037112998834345, 444971.767600947758183, 444982.498110764427111, 444993.228642448259052, 445003.959195999021176, 445014.689771415956784, 445025.420368698658422, 445036.150987846776843, 445046.881628859788179, 445057.612291737052146, 445068.342976478277706, 445079.073683082940988, 445089.804411550459918, 445100.535161880485248, 445111.265934072551318, 445121.996728126076050, 445132.727544040535577, 445143.458381815697066, 445154.189241450920235, 445164.920122945681214, 445175.651026299572550, 445186.381951512128580, 445197.112898582883645, 445207.843867511255667, 445218.574858296837192, 445229.305870939162560, 445240.036905437766109, 445250.767961792065762, 445261.499040001712274, 445272.230140066239983, 445282.961261985008605, 445293.692405757610686, 445304.423571383696981, 445315.154758862685412, 445325.885968194110319, 445336.617199377389625, 445347.348452412290499, 445358.079727298056241, 445368.811024034395814, 445379.542342620785348, 445390.273683056759182, 445401.005045341735240, 445411.736429475422483, 445422.467835457180627, 445433.199263286660425, 445443.930712963279802, 445454.662184486573096, 445465.393677856074646, 445476.125193071376998, 445486.856730132014491, 445497.588289037346840, 445508.319869787024800, 445519.051472380524501, 445529.783096817380283, 445540.514743097068276, 445551.246411219239235, 445561.978101183369290, 445572.709812988876365, 445583.441546635469422, 445594.173302122449968, 445604.905079449410550, 445615.636878616118338, 445626.368699621700216, 445637.100542465923354, 445647.832407148322091, 445658.564293668314349, 445669.296202025492676, 445680.028132219274994, 445690.760084249312058, 445701.492058115079999, 445712.224053816113155, 445722.956071351945866, 445733.688110722054262, 445744.420171925914474, 445755.152254963293672, 445765.884359833376948, 445776.616486535873264, 445787.348635070375167, 445798.080805436242372, 445808.812997633067425, 445819.545211660442874, 445830.277447517786641, 445841.009705204633065, 445851.741984720632900, 445862.474286065087654, 445873.206609237706289, 445883.938954238023143, 445894.671321065397933, 445905.403709719481412, 445916.136120199807920, 445926.868552505737171, 445937.601006636978127, 445948.333482593006920, 445959.065980373241473, 445969.798499977332540, 445980.531041404872667, 445991.263604655163363, 446001.996189727855381, 446012.728796622483060, 446023.461425338522531, 446034.194075875566341, 446044.926748233032413, 446055.659442410571501, 446066.392158407543320, 446077.124896223656833, 446087.857655858329963, 446098.590437311097048, 446109.323240581492428, 446120.056065669108648, 446130.788912573305424, 446141.521781293675303, 446152.254671829927247, 446162.987584181246348, 446173.720518347399775, 446184.453474327863660, 446195.186452122114133, 446205.919451729685534, 446216.652473150170408, 446227.385516383103095, 446238.118581427843310, 446248.851668284100015, 446259.584776951349340, 446270.317907429009210, 446281.051059716730379, 446291.784233813988976, 446302.517429720261134, 446313.250647435081191, 446323.983886958158109, 446334.717148288735189, 446345.450431426521391, 446356.183736370992847, 446366.917063121683896, 446377.650411678070668, 446388.383782039745711, 446399.117174206243362, 446409.850588176981546, 446420.584023951611016, 446431.317481529491488, 446442.050960910273716, 446452.784462093608454, 446463.517985078680795, 446474.251529865316115, 446484.985096452874132, 446495.718684841005597, 446506.452295029128436, 446517.185927016776986, 446527.919580803602003, 446538.653256388904992, 446549.386953772394918, 446560.120672953489702, 446570.854413931840099, 446581.588176706864033, 446592.321961278095841, 446603.055767645069864, 446613.789595807320438, 446624.523445764498319, 446635.257317515846808, 446645.991211061074864, 446656.725126399775036, 446667.459063531307038, 446678.193022455205210, 446688.927003171178512, 446699.661005678528454, 446710.395029976905789, 446721.129076065903064, 446731.863143944763578, 446742.597233613370918, 446753.331345071026590, 446764.065478317323141, 446774.799633351736702, 446785.533810173801612, 446796.268008783168625, 446807.002229179197457, 446817.736471361480653, 446828.470735329610761, 446839.205021082947496, 446849.939328621141613, 446860.673657943843864, 446871.408009050297551, 446882.142381940095220, 446892.876776612887625, 446903.611193068150897, 446914.345631305361167, 446925.080091324227396, 446935.814573123992886, 446946.549076704250183, 446957.283602064766455, 446968.018149204785004, 446978.752718123956583, 446989.487308821815532, 447000.221921297837980, 447010.956555551616475, 447021.691211582627147, 447032.425889390404336, 447043.160588974365965, 447053.895310334279202, 447064.630053469503764, 447075.364818379632197, 447086.099605064082425, 447096.834413522505201, 447107.569243754318450, 447118.304095759114716, 447129.038969536428340, 447139.773865085851867, 447150.508782406686805, 447161.243721498642117, 447171.978682361252140, 447182.713664993934799, 447193.448669396340847, 447204.183695567888208, 447214.918743508111220, 447225.653813216660637, 447236.388904692779761, 447247.124017936352175, 447257.859152946679387, 447268.594309723353945, 447279.329488265910186, 447290.064688573882449, 447300.799910646688659, 447311.535154484037776, 447322.270420085231308, 447333.005707450036425, 447343.741016577812843, 447354.476347468094900, 447365.211700120533351, 447375.947074534546118, 447386.682470709667541, 447397.417888645490166, 447408.153328341490123, 447418.888789797085337, 447429.624273012101185, 447440.359777985722758, 447451.095304717717227, 447461.830853207444306, 447472.566423454554752, 447483.302015458524693, 447494.037629218946677, 447504.773264735238627, 447515.508922006934881, 447526.244601033744402, 447536.980301814910490, 447547.716024350142106, 447558.451768639031798, 447569.187534680881072, 447579.923322475398891, 447590.659132022003178, 447601.394963320286479, 447612.130816369724926, 447622.866691169911064, 447633.602587720379233, 447644.338506020547356, 447655.074446070007980, 447665.810407868353650, 447676.546391415002290, 447687.282396709546447, 447698.018423751520459, 447708.754472540400457, 447719.490543075720780, 447730.226635357073974, 447740.962749383877963, 447751.698885155725293, 447762.435042672208510, 447773.171221932745539, 447783.907422936928924, 447794.643645684176590, 447805.379890174139291, 447816.116156406351365, 447826.852444380288944, 447837.588754095428158, 447848.325085551419761, 447859.061438747681677, 447869.797813683748245, 447880.534210359270219, 447891.270628773607314, 447902.007068926352076, 447912.743530817097053, 447923.480014445318375, 447934.216519810550380, 447944.953046912269201, 447955.689595750183798, 447966.426166323479265, 447977.162758631980978, 447987.899372675223276, 447998.636008452507667, 448009.372665963484906, 448020.109345207689330, 448030.846046184713487, 448041.582768893975299, 448052.319513335067313, 448063.056279507465661, 448073.793067410821095, 448084.529877044376917, 448095.266708408074919, 448106.003561501041986, 448116.740436323045287, 448127.477332873619162, 448138.214251152123325, 448148.951191158208530, 448159.688152891409118, 448170.425136351259425, 448181.162141537119169, 448191.899168448813725, 448202.636217085586395, 448213.373287447087932, 448224.110379532910883, 448234.847493342531379, 448245.584628875367343, 448256.321786131127737, 448267.058965109172277, 448277.796165809151717, 448288.533388230600394, 448299.270632372994442, 448310.007898235751782, 448320.745185818639584, 448331.482495121017564, 448342.219826142420061, 448352.957178882556036, 448363.694553340610582, 448374.431949516409077, 448385.169367409427650, 448395.906807019084226, 448406.644268344971351, 448417.381751386681572, 448428.119256143632811, 448438.856782615417615, 448449.594330801628530, 448460.331900701625273, 448471.069492315058596, 448481.807105641346425, 448492.544740680197719, 448503.282397431030404, 448514.020075893378817, 448524.757776066719089, 448535.495497950643767, 448546.233241544745397, 448556.971006848441903, 448567.708793861267623, 448578.446602582756896, 448589.184433012560476, 448599.922285150096286, 448610.660158994898666, 448621.398054546501953, 448632.135971804382280, 448642.873910768190399, 448653.611871437402442, 448664.349853811494540, 448675.087857890059240, 448685.825883672630880, 448696.563931158685591, 448707.302000347699504, 448718.040091239439789, 448728.778203833149746, 448739.516338128480129, 448750.254494125023484, 448760.992671822197735, 448771.730871219653636, 448782.469092316809110, 448793.207335113256704, 448803.945599608414341, 448814.683885802049190, 448825.422193693462759, 448836.160523282189388, 448846.898874567996245, 448857.637247550126631, 448868.375642228231300, 448879.114058601786382, 448889.852496670559049, 448900.590956433792599, 448911.329437891079579, 448922.067941042012535, 448932.806465886125807, 448943.545012422837317, 448954.283580651914235, 448965.022170572599862, 448975.760782184603158, 448986.499415487400256, 448997.238070480525494, 449007.976747163513210, 449018.715445535839535, 449029.454165597097017, 449040.192907346819993, 449050.931670784542803, 449061.670455909799784, 449072.409262721950654, 449083.148091220820788, 449093.886941405653488, 449104.625813276157714, 449115.364706831867807, 449126.103622072143480, 449136.842558996693697, 449147.581517605111003, 449158.320497896696907, 449169.059499871043954, 449179.798523527744692, 449190.537568866333459, 449201.276635886286385, 449212.015724587196019, 449222.754834968538489, 449233.493967029848136, 449244.233120770717505, 449254.972296190564521, 449265.711493288981728, 449276.450712065619882, 449287.189952519722283, 449297.929214651114307, 449308.668498459155671, 449319.407803943438921, 449330.147131103381980, 449340.886479938752018, 449351.625850448850542, 449362.365242633270100, 449373.104656491661444, 449383.844092023326084, 449394.583549228031188, 449405.323028105136473, 449416.062528654292691, 449426.802050874859560, 449437.541594766487833, 449448.281160328886472, 449459.020747561240569, 449469.760356463317294, 449480.499987034592777, 449491.239639274426736, 449501.979313182586338, 449512.719008758605924, 449523.458726001786999, 449534.198464911896735, 449544.938225488294847, 449555.678007730573881, 449566.417811638326384, 449577.157637211028486, 449587.897484448214527, 449598.637353349418845, 449609.377243914117571, 449620.117156141961459, 449630.857090032252017, 449641.597045584872831, 449652.337022799067199, 449663.077021674427669, 449673.817042210663203, 449684.557084406958893, 449695.297148263140116, 449706.037233778683003, 449716.777340953005478, 449727.517469785758294, 449738.257620276475791, 449748.997792424459476, 449759.737986229592934, 449770.478201691177674, 449781.218438808748033, 449791.958697581954766, 449802.698978010274004, 449813.439280093123671, 449824.179603830212727, 449834.919949220959097, 449845.660316264955327, 449856.400704961677548, 449867.141115310776513, 449877.881547311495524, 449888.622000963776372, 449899.362476266862359, 449910.102973220287822, 449920.843491823703516, 449931.584032076585572, 449942.324593978526536, 449953.065177528944332, 449963.805782727489714, 449974.546409573580604, 449985.287058066809550, 449996.027728206710890, 450006.768419992760755, 450017.509133424609900, 450028.249868501734454, 450038.990625223552343, 450049.731403589714319, 450060.472203599754721, 450071.213025253091473, 450081.953868549491744, 450092.694733488257043, 450103.435620068979915, 450114.176528291252907, 450124.917458154610358, 450135.658409658353776, 450146.399382802366745, 450157.140377585950773, 450167.881394008698408, 450178.622432070202194, 450189.363491769880056, 450200.104573107324541, 450210.845676082128193, 450221.586800693708938, 450232.327946941601112, 450243.069114825455472, 450253.810304344689939, 450264.551515498897061, 450275.292748287552968, 450286.034002710250206, 450296.775278766581323, 450307.516576455847826, 450318.257895777816884, 450328.999236731906421, 450339.740599317650776, 450350.481983534700703, 450361.223389382474124, 450371.964816860388964, 450382.706265968212392, 450393.447736705362331, 450404.189229071373120, 450414.930743065779097, 450425.672278688172810, 450436.413835937913973, 450447.155414814711548, 450457.897015318099875, 450468.638637447555084, 450479.380281202495098, 450490.121946582687087, 450500.863633587490767, 450511.605342216382269, 450522.347072469128761, 450533.088824345089961, 450543.830597843858413, 450554.572392965026665, 450565.314209707954433, 450576.056048072234262, 450586.797908057458699, 450597.539789663162082, 450608.281692888878752, 450619.023617734084837, 450629.765564198372886, 450640.507532281219028, 450651.249521982157603, 450661.991533300722949, 450672.733566236565821, 450683.475620789045934, 450694.217696957814042, 450704.959794742288068, 450715.701914142176975, 450726.444055156782269, 450737.186217785871122, 450747.928402028919663, 450758.670607885229401, 450769.412835354625713, 450780.155084436584730, 450790.897355130524375, 450801.639647435978986, 450812.381961352657527, 450823.124296879977919, 450833.866654017299879, 450844.609032764565200, 450855.351433120900765, 450866.093855086015537, 450876.836298659560271, 450887.578763840836473, 450898.321250629494898, 450909.063759025128093, 450919.806289027153980, 450930.548840635106899, 450941.291413848695811, 450952.034008667164017, 450962.776625090220477, 450973.519263117515948, 450984.261922748351935, 450995.004603982320987, 451005.747306819132064, 451016.490031258086674, 451027.232777298835572, 451037.975544940913096, 451048.718334183795378, 451059.461145027016755, 451070.203977470111568, 451080.946831512788776, 451091.689707154291682, 451102.432604394445661, 451113.175523232494015, 451123.918463668203913, 451134.661425700993277, 451145.404409330396447, 451156.147414556005970, 451166.890441377356183, 451177.633489793865010, 451188.376559805183206, 451199.119651410845108, 451209.862764610268641, 451220.605899403162766, 451231.349055788945407, 451242.092233767150901, 451252.835433337313589, 451263.578654498967808, 451274.321897251706105, 451285.065161595062818, 451295.808447528455872, 451306.551755051536020, 451317.295084163779393, 451328.038434864778537, 451338.781807153893169, 451349.525201030890457, 451360.268616495188326, 451371.012053546321113, 451381.755512183881365, 451392.498992407403421, 451403.242494216305204, 451413.986017610179260, 451424.729562588618137, 451435.473129151039757, 451446.216717297094874, 451456.960327026317827, 451467.703958338126540, 451478.447611232113559, 451489.191285707871430, 451499.934981764876284, 451510.678699402662460, 451521.422438620822504, 451532.166199418832548, 451542.909981796168722, 451553.653785752539989, 451564.397611287306063, 451575.141458400001284, 451585.885327090392821, 451596.629217357723974, 451607.373129201703705, 451618.117062621866353, 451628.861017617571633, 451639.604994188528508, 451650.348992334329523, 451661.093012054334395, 451671.837053348135669, 451682.581116215384100, 451693.325200655381195, 451704.069306667835917, 451714.813434252224397, 451725.557583408139180, 451736.301754134998191, 451747.045946432452183, 451757.790160299977288, 451768.534395737107843, 451779.278652743494604, 451790.022931318497285, 451800.767231461708434, 451811.511553172778804, 451822.255896451009903, 451833.000261296168901, 451843.744647707615513, 451854.489055685000494, 451865.233485227799974, 451875.977936335606501, 451886.722409007896204, 451897.466903244203422, 451908.211419044178911, 451918.955956407182384, 451929.700515332806390, 451940.445095820701681, 451951.189697870227974, 451961.934321481036022, 451972.678966652660165, 451983.423633384518325, 451994.168321676319465, 452004.913031527481508, 452015.657762937596999, 452026.402515906083863, 452037.147290432709269, 452047.892086516716518, 452058.636904157930985, 452069.381743355654180, 452080.126604109478649, 452090.871486419055145, 452101.616390283859801, 452112.361315703310538, 452123.106262677116320, 452133.851231204753276, 452144.596221285697538, 452155.341232919483446, 452166.086266105761752, 452176.831320844008587, 452187.576397133700084, 452198.321494974428788, 452209.066614365729038, 452219.811755307135172, 452230.556917798181530, 452241.302101838344242, 452252.047307427215856, 452262.792534564388916, 452273.537783249281347, 452284.283053481543902, 452295.028345260652713, 452305.773658586142119, 452316.518993457488250, 452327.264349874341860, 452338.009727836179081, 452348.755127342534252, 452359.500548392941710, 452370.245990986994002, 452380.991455124167260, 452391.736940803995822, 452402.482448026014026, 452413.227976789756212, 452423.973527094873134, 452434.719098940724507, 452445.464692326902878, 452456.210307253059000, 452466.955943718552589, 452477.701601723034400, 452488.447281266038772, 452499.192982347041834, 452509.938704965577926, 452520.684449121297803, 452531.430214813677594, 452542.176002042135224, 452552.921810806379654, 452563.667641105828807, 452574.413492940017022, 452585.159366308653262, 452595.905261211097240, 452606.651177646825090, 452617.397115615603980, 452628.143075116851833, 452638.889056149986573, 452649.635058714775369, 452660.381082810577936, 452671.127128436928615, 452681.873195593594573, 452692.619284279877320, 452703.365394495252986, 452714.111526239605155, 452724.857679512118921, 452735.603854312445037, 452746.350050640234258, 452757.096268494788092, 452767.842507875873707, 452778.588768783025444, 452789.335051215486601, 452800.081355173082557, 452810.827680655405857, 452821.574027661699802, 452832.320396191615146, 452843.066786244860850, 452853.813197820738424, 452864.559630918898620, 452875.306085538933985, 452886.052561680204235, 452896.799059342476539, 452907.545578525110614, 452918.292119227699004, 452929.038681449776050, 452939.785265190876089, 452950.531870450591668, 452961.278497228398919, 452972.025145523715764, 452982.771815336309373, 452993.518506665655877, 453004.265219511231408, 453015.011953872512095, 453025.758709749206901, 453036.505487140733749, 453047.252286046685185, 453057.999106466537341, 453068.745948399882764, 453079.492811846197583, 453090.239696805132553, 453100.986603276047390, 453111.733531258651055, 453122.480480752477888, 453133.227451756829396, 453143.974444271472748, 453154.721458296058699, 453165.468493829772342, 453176.215550872380845, 453186.962629423360340, 453197.709729482245166, 453208.456851048627868, 453219.203994122042786, 453229.951158701907843, 453240.698344787873793, 453251.445552379474975, 453262.192781476187520, 453272.940032077545766, 453283.687304183200467, 453294.434597792569548, 453305.181912905187346, 453315.929249520762824, 453326.676607638597488, 453337.423987258400302, 453348.171388379647397, 453358.918811001814902, 453369.666255124611780, 453380.413720747455955, 453391.161207869823556, 453401.908716491365340, 453412.656246611615643, 453423.403798229992390, 453434.151371346088126, 453444.898965959611814, 453455.646582069864962, 453466.394219676440116, 453477.141878778988030, 453487.889559376926627, 453498.637261469906662, 453509.384985057404265, 453520.132730138895568, 453530.880496713973116, 453541.628284782229457, 453552.376094343140721, 453563.123925396241248, 453573.871777941065375, 453584.619651977205649, 453595.367547504021786, 453606.115464521455579, 453616.863403028575704, 453627.611363025207538, 453638.359344510827214, 453649.107347484852653, 453659.855371947051026, 453670.603417896840256, 453681.351485333580058, 453692.099574257154018, 453702.847684666805435, 453713.595816562359687, 453724.343969943060074, 453735.092144808615558, 453745.840341158444062, 453756.588558992370963, 453767.336798309581354, 453778.085059109725989, 453788.833341392455623, 453799.581645157188177, 453810.329970403516199, 453821.078317131032236, 453831.826685339154210, 453842.575075027416460, 453853.323486195527948, 453864.071918842848390, 453874.820372968970332, 453885.568848573544528, 453896.317345655930694, 453907.065864215721376, 453917.814404252625536, 453928.562965765886474, 453939.311548755213153, 453950.060153220198117, 453960.808779160259292, 453971.557426575047430, 453982.306095464038663, 453993.054785826650914, 454003.803497662651353, 454014.552230971457902, 454025.300985752604902, 454036.049762005684897, 454046.798559730174020, 454057.547378925664816, 454068.296219591575209, 454079.045081727614161, 454089.793965333257802, 454100.542870407982264, 454111.291796951496508, 454122.040744963160250, 454132.789714442507830, 454143.538705389248207, 454154.287717802741099, 454165.036751682579052, 454175.785807028412819, 454186.534883839602116, 454197.283982115797698, 454208.033101856592111, 454218.782243061403278, 454229.531405729881953, 454240.280589861387853, 454251.029795455629937, 454261.779022512142546, 454272.528271030285396, 454283.277541009825654, 454294.026832450239453, 454304.776145350944716, 454315.525479711533990, 454326.274835531716235, 454337.024212810851168, 454347.773611548473127, 454358.523031744174659, 454369.272473397548310, 454380.021936508012004, 454390.771421075216495, 454401.520927098637912, 454412.270454577810597, 454423.020003512385301, 454433.769573901721742, 454444.519165745470673, 454455.268779043166433, 454466.018413794285152, 454476.768069998535793, 454487.517747655219864, 454498.267446764046326, 454509.017167324549519, 454519.766909336205572, 454530.516672798490617, 454541.266457711113617, 454552.016264073492493, 454562.766091885161586, 454573.515941145771649, 454584.265811854798812, 454595.015704011719208, 454605.765617616067175, 454616.515552667609882, 454627.265509165648837, 454638.015487109776586, 454648.765486499585677, 454659.515507334610447, 454670.265549614268821, 454681.015613338327967, 454691.765698506147601, 454702.515805117320269, 454713.265933171322104, 454724.016082667862065, 454734.766253606299870, 454745.516445986286271, 454756.266659807297401, 454767.016895068925805, 454777.767151770705823, 454788.517429912055377, 454799.267729492741637, 454810.018050512124319, 454820.768392969737761, 454831.518756865349133, 454842.269142198259942, 454853.019548968062736, 454863.769977174350061, 454874.520426816598047, 454885.270897894399241, 454896.021390407346189, 454906.771904354798608, 454917.522439736465458, 454928.272996551881079, 454939.023574800463393, 454949.774174481863156, 454960.524795595556498, 454971.275438141135965, 454982.026102118019480, 454992.776787526032422, 455003.527494364418089, 455014.278222632827237, 455025.028972330910619, 455035.779743457969744, 455046.530536013655365, 455057.281349997676443, 455068.032185409334488, 455078.783042248280253, 455089.533920514048077, 455100.284820206172299, 455111.035741324245464, 455121.786683867627289, 455132.537647835968528, 455143.288633228919934, 455154.039640045957640, 455164.790668286499567, 455175.541717950196471, 455186.292789036640897, 455197.043881545250770, 455207.794995475618634, 455218.546130827337038, 455229.297287599823903, 455240.048465792788193, 455250.799665405589622, 455261.550886437878944, 455272.302128889248706, 455283.053392759116832, 455293.804678047075868, 455304.555984752718359, 455315.307312875404023, 455326.058662414900027, 455336.810033370740712, 455347.561425742169376, 455358.312839529127814, 455369.064274730917532, 455379.815731347072870, 455390.567209377186373, 455401.318708820850588, 455412.070229677541647, 455422.821771946852095, 455433.573335628258064, 455444.324920721352100, 455455.076527225726750, 455465.828155140741728, 455476.579804466047790, 455487.331475201353896, 455498.083167345903348, 455508.834880899405107, 455519.586615861393511, 455530.338372231286485, 455541.090150008792989, 455551.841949193389155, 455562.593769784609322, 455573.345611782046035, 455584.097475185175426, 455594.849359993473627, 455605.601266206649598, 455616.353193824179471, 455627.105142845539376, 455637.857113270321861, 455648.609105098177679, 455659.361118328408338, 455670.113152960722800, 455680.865208994713612, 455691.617286429682281, 455702.369385265395977, 455713.121505501330830, 455723.873647137079388, 455734.625810172001366, 455745.377994605863933, 455756.130200438085012, 455766.882427668198943, 455777.634676295856480, 455788.386946320475545, 455799.139237741648685, 455809.891550558910239, 455820.643884771852754, 455831.396240379952360, 455842.148617382743396, 455852.901015779818408, 455863.653435570769943, 455874.405876754957717, 455885.158339332032483, 455895.910823301644996, 455906.663328663154971, 455917.415855416213162, 455928.168403560412116, 455938.920973095111549, 455949.673564019904006, 455960.426176334498450, 455971.178810038254596, 455981.931465130823199, 455992.684141611738596, 456003.436839480418712, 456014.189558736514300, 456024.942299379617907, 456035.695061409205664, 456046.447844824753702, 456057.200649625912774, 456067.953475812159013, 456078.706323383084964, 456089.459192338224966, 456100.212082677113358, 456110.964994399284478, 456121.717927504272666, 456132.470881991612259, 456143.223857860895805, 456153.976855111599434, 456164.729873743257485, 456175.482913755520713, 456186.235975147865247, 456196.989057919825427, 456207.742162070993800, 456218.495287600846495, 456229.248434508917853, 456240.001602794858627, 456250.754792458144948, 456261.508003498252947, 456272.261235914833378, 456283.014489707420580, 456293.767764875374269, 456304.521061418578029, 456315.274379336275160, 456326.027718628058210, 456336.781079293636139, 456347.534461332426872, 456358.287864743964747, 456369.041289527842309, 456379.794735683535691, 456390.548203210695647, 456401.301692108740099, 456412.055202377261594, 456422.808734015910886, 456433.562287024105899, 456444.315861401380971, 456455.069457147328649, 456465.823074261483271, 456476.576712743379176, 456487.330372592550702, 456498.084053808590397, 456508.837756390974391, 456519.591480339411646, 456530.345225653087255, 456541.098992332001217, 456551.852780375338625, 456562.606589782808442, 456573.360420553828590, 456584.114272688166238, 456594.868146185239311, 456605.622041044523939, 456616.375957265612669, 456627.129894848098047, 456637.883853791456204, 456648.637834095279686, 456659.391835759102833, 456670.145858782459982, 456680.899903164943680, 456691.653968905913644, 456702.408056005195249, 456713.162164462031797, 456723.916294276190456, 456734.670445447205566, 456745.424617974495050, 456756.178811857709661, 456766.933027096325532, 456777.687263689935207, 456788.441521638073027, 456799.195800940273330, 456809.950101595954038, 456820.704423604940530, 456831.458766966534313, 456842.213131680444349, 456852.967517746030353, 456863.721925163001288, 456874.476353930891491, 456885.230804049118888, 456895.985275517334230, 456906.739768335071858, 456917.494282501807902, 456928.248818017134909, 456939.003374880645424, 456949.757953091815580, 456960.512552650179714, 456971.267173555272166, 456982.021815806801897, 456992.776479404128622, 457003.531164346844889, 457014.285870634485036, 457025.040598266641609, 457035.795347242848948, 457046.550117562641390, 457057.304909225553274, 457068.059722231060732, 457078.814556578872725, 457089.569412268348970, 457100.324289299198426, 457111.079187670897227, 457121.834107382979710, 457132.589048434863798, 457143.344010826374870, 457154.098994556930847, 457164.853999626007862, 457175.609026033140253, 457186.364073777920566, 457197.119142860115971, 457207.874233278795145, 457218.629345033899881, 457229.384478124848101, 457240.139632551115938, 457250.894808312295936, 457261.650005408038851, 457272.405223837762605, 457283.160463601001538, 457293.915724697464611, 457304.671007126453333, 457315.426310887676664, 457326.181635980610736, 457336.936982404848095, 457347.692350159923080, 457358.447739245370030, 457369.203149660781492, 457379.958581405633595, 457390.714034479518887, 457401.469508881855290, 457412.225004612409975, 457422.980521670542657, 457433.736060055904090, 457444.491619768028613, 457455.247200806334149, 457466.002803170529660, 457476.758426860149484, 457487.514071874553338, 457498.269738213508390, 457509.025425876490772, 457519.781134862976614, 457530.536865172616672, 457541.292616804828867, 457552.048389759205747, 457562.804184035456274, 457573.559999632881954, 457584.315836551133543, 457595.071694789803587, 457605.827574348368216, 457616.583475226361770, 457627.339397423493210, 457638.095340939005837, 457648.851305772608612, 457659.607291923952289, 457670.363299392512999, 457681.119328177708667, 457691.875378279306460, 457702.631449696666095, 457713.387542429321911, 457724.143656477041077, 457734.899791839125101, 457745.655948515224736, 457756.412126504874323, 457767.168325807666406, 457777.924546423018910, 457788.680788350640796, 457799.437051590008195, 457810.193336140597239, 457820.949642002058681, 457831.705969173926860, 457842.462317655619700, 457853.218687446904369, 457863.975078547140583, 457874.731490955920890, 457885.487924672837835, 457896.244379697367549, 457907.000856029160786, 457917.757353667519055, 457928.513872612325940, 457939.270412862999365, 457950.026974418957252, 457960.783557279792149, 457971.540161445213016, 457982.296786914637778, 457993.053433687600773, 458003.810101763636339, 458014.566791142395232, 458025.323501823295373, 458036.080233806045726, 458046.836987090064213, 458057.593761674885172, 458068.350557560101151, 458079.107374745246489, 458089.864213229971938, 458100.621073013520800, 458111.377954095776659, 458122.134856476157438, 458132.891780154139269, 458143.648725129431114, 458154.405691401450895, 458165.162678969732951, 458175.919687833869830, 458186.676717993454076, 458197.433769447903614, 458208.190842196927406, 458218.947936239943374, 458229.705051576544065, 458240.462188206322026, 458251.219346128753386, 458261.976525343430694, 458272.733725849830080, 458283.490947647602297, 458294.248190736223478, 458305.005455115227960, 458315.762740784150083, 458326.520047742698807, 458337.277375990233850, 458348.034725526405964, 458358.792096350633074, 458369.549488462624140, 458380.306901861855295, 458391.064336547802668, 458401.821792520117015, 458412.579269778332673, 458423.336768321983982, 458434.094288150605280, 458444.851829263730906, 458455.609391660895199, 458466.366975341807120, 458477.124580305709969, 458487.882206552429125, 458498.639854081382509, 458509.397522892104462, 458520.155212984245736, 458530.912924357224256, 458541.670657010690775, 458552.428410944063216, 458563.186186157050543, 458573.943982649070676, 458584.701800419832580, 458595.459639468695968, 458606.217499795253389, 458616.975381399155594, 458627.733284279820509, 458638.491208436840679, 458649.249153869866859, 458660.007120578316972, 458670.765108561783563, 458681.523117819742765, 458692.281148351903539, 458703.039200157683808, 458713.797273236617912, 458724.555367588298395, 458735.313483212434221, 458746.071620108268689, 458756.829778275452554, 458767.587957713694777, 458778.346158422355074, 458789.104380401084200, 458799.862623649358284, 458810.620888166828081, 458821.379173952853307, 458832.137481007201131, 458842.895809329289477, 458853.654158918710891, 458864.412529774999712, 458875.170921897690278, 458885.929335286433343, 458896.687769940472208, 458907.446225859690458, 458918.204703043622430, 458928.963201491569635, 458939.721721203182824, 458950.480262178229168, 458961.238824415951967, 458971.997407916001976, 458982.756012678029947, 458993.514638701395597, 459004.273285985807888, 459015.031954530742951, 459025.790644335793331, 459036.549355400493369, 459047.308087724260986, 459058.066841306805145, 459068.825616147776600, 459079.584412246360444, 459090.343229602382053, 459101.102068215375766, 459111.860928084875923, 459122.619809210300446, 459133.378711591358297, 459144.137635227409191, 459154.896580118220299, 459165.655546263267752, 459176.414533662085887, 459187.173542314092629, 459197.932572219055146, 459208.691623376391362, 459219.450695785752032, 459230.209789446496870, 459240.968904358334839, 459251.728040520800278, 459262.487197933369316, 459273.246376595634501, 459284.005576507246587, 459294.764797667448875, 459305.524040076124948, 459316.283303732750937, 459327.042588636686560, 459337.801894787640776, 459348.561222185206134, 459359.320570828742348, 459370.079940717900172, 459380.839331852388568, 459391.598744231509045, 459402.358177854912356, 459413.117632722132839, 459423.877108832646627, 459434.636606186279096, 459445.396124782157131, 459456.155664620164316, 459466.915225699834991, 459477.674808020528872, 459488.434411581896711, 459499.194036383531056, 459509.953682424791623, 459520.713349705503788, 459531.473038225027267, 459542.232747983012814, 459552.992478978878353, 459563.752231212332845, 459574.512004682794213, 459585.271799389855005, 459596.031615333107766, 459606.791452512028627, 459617.551310926210135, 459628.311190575244837, 459639.071091458608862, 459649.831013575894758, 459660.590956926578656, 459671.350921510194894, 459682.110907326568849, 459692.870914374885615, 459703.630942654854152, 459714.390992166125216, 459725.151062908000313, 459735.911154880304821, 459746.671268082398456, 459757.431402513815556, 459768.191558174265083, 459778.951735063164961, 459789.711933180107735, 459800.472152524744160, 459811.232393096433952, 459821.992654894769657, 459832.752937919402029, 459843.513242169865407, 459854.273567645519506, 459865.033914346247911, 459875.794282271352131, 459886.554671420366503, 459897.315081792999990, 459908.075513388670515, 459918.835966206970625, 459929.596440247492865, 459940.356935509713367, 459951.117451993341092, 459961.877989697619341, 459972.638548622373492, 459983.399128767137881, 459994.159730131272227, 460004.920352714427281, 460015.680996516253799, 460026.441661536169704, 460037.202347773709334, 460047.963055228639860, 460058.723783900204580, 460069.484533788228873, 460080.245304892014246, 460091.006097211211454, 460101.766910745471250, 460112.527745494327974, 460123.288601457141340, 460134.049478633620311, 460144.810377023299225, 460155.571296625654213, 460166.332237440394238, 460177.093199466879014, 460187.854182704759296, 460198.615187153685838, 460209.376212812901940, 460220.137259682232980, 460230.898327761213295, 460241.659417049319018, 460252.420527546084486, 460263.181659251044039, 460273.942812163732015, 460284.703986283857375, 460295.465181610838044, 460306.226398144266568, 460316.987635883677285, 460327.748894828546327, 460338.510174978524446, 460349.271476333204191, 460360.032798892119899, 460370.794142654631287, 460381.555507620505523, 460392.316893789160531, 460403.078301160305273, 460413.839729733299464, 460424.601179507793859, 460435.362650483439211, 460446.124142659478821, 460456.885656035738066, 460467.647190611751284, 460478.408746386936400, 460489.170323360944167, 460499.931921533308923, 460510.693540903506801, 460521.455181471188553, 460532.216843235946726, 460542.978526197082829, 460553.740230354422238, 460564.501955707382876, 460575.263702255499084, 460586.025469998538028, 460596.787258935626596, 460607.549069066706579, 460618.310900391195901, 460629.072752908570692, 460639.834626618481707, 460650.596521520463284, 460661.358437614049762, 460672.120374898717273, 460682.882333374174777, 460693.644313039840199, 460704.406313895364292, 460715.168335940164980, 460725.930379173951223, 460736.692443596199155, 460747.454529206443112, 460758.216636004159227, 460768.978763989114668, 460779.740913160669152, 460790.503083518473431, 460801.265275062061846, 460812.027487790910527, 460822.789721704670228, 460833.551976802817080, 460844.314253084943630, 460855.076550550642423, 460865.838869199331384, 460876.601209030661266, 460887.363570044341031, 460898.125952239555772, 460908.888355616072658, 460919.650780173426028, 460930.413225911208428, 460941.175692828837782, 460951.938180926081259, 460962.700690202356782, 460973.463220657082275, 460984.225772290083114, 460994.988345100719016, 461005.750939088640735, 461016.513554253266193, 461027.276190594246145, 461038.038848111289553, 461048.801526803581510, 461059.564226670889184, 461070.326947712863330, 461081.089689928921871, 461091.852453318540938, 461102.615237881429493, 461113.378043617121875, 461124.140870525094215, 461134.903718604939058, 461145.666587856132537, 461156.429478278383613, 461167.192389871052001, 461177.955322633846663, 461188.718276566301938, 461199.481251667835750, 461210.244247938157059, 461221.007265376800206, 461231.770303983183112, 461242.533363756956533, 461253.296444697713014, 461264.059546804928686, 461274.822670078196097, 461285.585814517049585, 461296.348980121023487, 461307.112166889710352, 461317.875374822586309, 461328.638603919302113, 461339.401854179450311, 461350.165125602390617, 461360.928418187773786, 461371.691731935192365, 461382.455066844180692, 461393.218422914273106, 461403.981800145062152, 461414.745198536023963, 461425.508618086751085, 461436.272058796836063, 461447.035520665755030, 461457.799003693158738, 461468.562507878465112, 461479.326033221266698, 461490.089579721330665, 461500.853147377783898, 461511.616736190568190, 461522.380346159101464, 461533.143977282859851, 461543.907629561494105, 461554.671302994538564, 461565.434997581469361, 461576.198713321995456, 461586.962450215534773, 461597.726208261563443, 461608.489987459965050, 461619.253787809924688, 461630.017609311151318, 461640.781451963295694, 461651.545315765717532, 461662.309200718067586, 461673.073106819938403, 461683.837034070747904, 461694.600982470263261, 461705.364952017844189, 461716.128942713083234, 461726.892954555631150, 461737.656987544905860, 461748.421041680499911, 461759.185116962064058, 461769.949213389016222, 461780.713330960948952, 461791.477469677571207, 461802.241629538242705, 461813.005810542439576, 461823.770012690103613, 461834.534235980303492, 461845.298480412981007, 461856.062745987437665, 461866.827032703324221, 461877.591340560233220, 461888.355669557582587, 461899.120019695081282, 461909.884390972263645, 461920.648783388605807, 461931.413196943700314, 461942.177631637081504, 461952.942087468283717, 461963.706564436899498, 461974.471062542521395, 461985.235581784509122, 461996.000122162746266, 462006.764683676534332, 462017.529266325407661, 462028.293870109133422, 462039.058495027013123, 462049.823141078813933, 462060.587808264011983, 462071.352496582025196, 462082.117206032562535, 462092.881936615274753, 462103.646688329463359, 462114.411461174895521, 462125.176255150930956, 462135.941070257220417, 462146.705906493414659, 462157.470763858931605, 462168.235642353305593, 462179.000541976303793, 462189.765462727227714, 462200.530404605669901, 462211.295367611339316, 462222.060351743653882, 462232.825357002206147, 462243.590383386588655, 462254.355430896219332, 462265.120499530865345, 462275.885589289886411, 462286.650700172991492, 462297.415832179656718, 462308.180985309416428, 462318.946159561746754, 462329.711354936473072, 462340.476571432838682, 462351.241809050668962, 462362.007067789265420, 462372.772347648278810, 462383.537648627359886, 462394.302970725984778, 462405.068313943746034, 462415.833678280119784, 462426.599063734698575, 462437.364470306958538, 462448.129897996666841, 462458.895346803183202, 462469.660816726100165, 462480.426307765068486, 462491.191819919506088, 462501.957353189121932, 462512.722907573275734, 462523.488483071734663, 462534.254079683858436, 462545.019697409297805, 462555.785336247587111, 462566.550996198318899, 462577.316677261027507, 462588.082379435247276, 462598.848102720570751, 462609.613847116415855, 462620.379612622549757, 462631.145399238390382, 462641.911206963472068, 462652.677035797561985, 462663.442885739903431, 462674.208756790205371, 462684.974648948118556, 462695.740562212944496, 462706.506496584508568, 462717.272452062286902, 462728.038428645639215, 462738.804426334449090, 462749.570445128018036, 462760.336485025938600, 462771.102546027861536, 462781.868628133321181, 462792.634731341735460, 462803.400855652813334, 462814.167001066030934, 462824.933167580980808, 462835.699355197255500, 462846.465563914272934, 462857.231793731800281, 462867.998044649139047, 462878.764316665998194, 462889.530609781970270, 462900.296923996473197, 462911.063259309215937, 462921.829615719674621, 462932.595993227325380, 462943.362391831818968, 462954.128811532747932, 462964.895252329471987, 462975.661714221874718, 462986.428197209199425, 462997.194701291096862, 463007.961226467275992, 463018.727772737038322, 463029.494340100092813, 463040.260928556090221, 463051.027538104332052, 463061.794168744469061, 463072.560820476210210, 463083.327493298915215, 463094.094187212234829, 463104.860902215703391, 463115.627638308855239, 463126.394395491341129, 463137.161173762520775, 463147.927973122161347, 463158.694793569680769, 463169.461635104729794, 463180.228497726726346, 463190.995381435495801, 463201.762286230223253, 463212.529212110792287, 463223.296159076562617, 463234.063127127126791, 463244.830116262077354, 463255.597126480890438, 463266.364157783275004, 463277.131210168707184, 463287.898283636663109, 463298.665378186735325, 463309.432493818574585, 463320.199630531715229, 463330.966788325575180, 463341.733967199863400, 463352.501167153997812, 463363.268388187745586, 463374.035630300408229, 463384.802893491636496, 463395.570177761197556, 463406.337483108276501, 463417.104809532756917, 463427.872157033940312, 463438.639525611535646, 463449.406915265077259, 463460.174325994041283, 463470.941757798078470, 463481.709210676781368, 463492.476684629451483, 463503.244179656030610, 463514.011695755762048, 463524.779232928296551, 463535.546791173226666, 463546.314370490086731, 463557.081970878411084, 463567.849592337850481, 463578.617234867881052, 463589.384898467978928, 463600.152583137853071, 463610.920288876921404, 463621.688015684834681, 463632.455763561243657, 463643.223532505449839, 463653.991322517162189, 463664.759133595973253, 463675.526965741300955, 463686.294818952912465, 463697.062693230167497, 463707.830588572658598, 463718.598504980036523, 463729.366442451835610, 463740.134400987473782, 463750.902380586718209, 463761.670381248928607, 463772.438402973755728, 463783.206445760733914, 463793.974509609455708, 463804.742594519455452, 463815.510700490267482, 463826.278827521484345, 463837.046975612756796, 463847.815144763386343, 463858.583334973081946, 463869.351546241436154, 463880.119778567983303, 463890.888031952257734, 463901.656306393851992, 463912.424601892125793, 463923.192918447020929, 463933.961256057722494, 463944.729614723939449, 463955.497994445264339, 463966.266395221231505, 463977.034817051317077, 463987.803259935288224, 463998.571723872388247, 464009.340208862384316, 464020.108714904810768, 464030.877241999201942, 464041.645790145208593, 464052.414359342190437, 464063.182949589798227, 464073.951560887624510, 464084.720193235203624, 464095.488846632069908, 464106.257521077932324, 464117.026216572034173, 464127.794933114259038, 464138.563670703908429, 464149.332429340691306, 464160.101209024142008, 464170.870009753794875, 464181.638831529184245, 464192.407674349902663, 464203.176538215542678, 464213.945423125580419, 464224.714329079608433, 464235.483256077219266, 464246.252204117947258, 464257.021173201268539, 464267.790163326892070, 464278.559174494177569, 464289.328206702833995, 464300.097259952453896, 464310.866334242513403, 464321.635429572546855, 464332.404545942146797, 464343.173683350847568, 464353.942841798299924, 464364.712021283979993, 464375.481221807422116, 464386.250443368160632, 464397.019685965962708, 464407.788949600071646, 464418.558234270254616, 464429.327539976045955, 464440.096866716921795, 464450.866214492532890, 464461.635583302471787, 464472.404973146098200, 464483.174384023179300, 464493.943815933074802, 464504.713268875551876, 464515.482742850086652, 464526.252237856213469, 464537.021753893408459, 464547.791290961380582, 464558.560849059664179, 464569.330428187735379, 464580.100028345186729, 464590.869649531610776, 464601.639291746541858, 464612.408954989456106, 464623.178639260120690, 464633.948344557895325, 464644.718070882372558, 464655.487818233203143, 464666.257586609863210, 464677.027376011887100, 464687.797186438925564, 464698.567017890571151, 464709.336870366125368, 464720.106743865471799, 464730.876638387911953, 464741.646553933096584, 464752.416490500734653, 464763.186448090127669, 464773.956426701042801, 464784.726426332839765, 464795.496446985227522, 464806.266488657740410, 464817.036551349912770, 464827.806635061278939, 464838.576739791489672, 464849.346865539962891, 464860.117012306291144, 464870.887180090183392, 464881.657368891057558, 464892.427578708564397, 464903.197809542121831, 464913.968061391322408, 464924.738334255875088, 464935.508628135139588, 464946.278943028824870, 464957.049278936523478, 464967.819635857536923, 464978.590013791632373, 464989.360412738344166, 465000.130832697148435, 465010.901273667812347, 465021.671735649637412, 465032.442218642332591, 465043.212722645374015, 465053.983247658412438, 465064.753793680982199, 465075.524360712559428, 465086.294948752794880, 465097.065557801222894, 465107.836187857377809, 465118.606838920735754, 465129.377510991063900, 465140.148204067780171, 465150.918918150418904, 465161.689653238747269, 465172.460409332066774, 465183.231186429969966, 465194.001984532224014, 465204.772803638130426, 465215.543643747456372, 465226.314504859619774, 465237.085386974213179, 465247.856290090887342, 465258.627214209118392, 465269.398159328382462, 465280.169125448388513, 465290.940112568612676, 465301.711120688705705, 465312.482149808085524, 465323.253199926344678, 465334.024271043250337, 465344.795363158045802, 465355.566476270440035, 465366.337610380083788, 465377.108765486278571, 465387.879941588849761, 465398.651138687273487, 465409.422356781142298, 465420.193595869815908, 465430.964855953061488, 465441.736137030413374, 465452.507439101405907, 465463.278762165573426, 465474.050106222392060, 465484.821471271570772, 465495.592857312643901, 465506.364264345145784, 465517.135692368610762, 465527.907141382631380, 465538.678611386800185, 465549.450102380535100, 465560.221614363545086, 465570.993147335306276, 465581.764701295411214, 465592.536276243510656, 465603.307872178964317, 465614.079489101364743, 465624.851127010479104, 465635.622785905725323, 465646.394465786695946, 465657.166166652808897, 465667.937888503889553, 465678.709631339181215, 465689.481395158567466, 465700.253179961291607, 465711.024985747237224, 465721.796812515705824, 465732.568660266289953, 465743.340528998756781, 465754.112418712349609, 465764.884329406835604, 465775.656261081923731, 465786.428213736857288, 465797.200187371287029, 465807.972181984805502, 465818.744197577005252, 465829.516234147478826, 465840.288291695644148, 465851.060370221210178, 465861.832469723594841, 465872.604590202448890, 465883.376731657423079, 465894.148894087818917, 465904.921077493461780, 465915.693281873827800, 465926.465507228276692, 465937.237753556692041, 465948.010020858375356, 465958.782309133093804, 465969.554618380265310, 465980.326948599482421, 465991.099299790337682, 466001.871671952307224, 466012.644065085100010, 466023.416479188075755, 466034.188914261059836, 466044.961370303353760, 466055.733847314608283, 466066.506345294415951, 466077.278864242369309, 466088.051404158002697, 466098.823965040792245, 466109.596546890388709, 466120.369149706268217, 466131.141773488081526, 466141.914418235362973, 466152.687083947646897, 466163.459770624525845, 466174.232478265534155, 466185.005206870264374, 466195.777956438250840, 466206.550726969086099, 466217.323518462188076, 466228.096330917382147, 466238.869164333969820, 466249.642018711718265, 466260.414894049987197, 466271.187790348543786, 466281.960707606747746, 466292.733645824424457, 466303.506605000817217, 466314.279585135634989, 466325.052586228528526, 466335.825608278915752, 466346.598651286447421, 466357.371715250599664, 466368.144800171023235, 466378.917906047252472, 466389.691032878821716, 466400.464180665207095, 466411.237349406292196, 466422.010539101262111, 466432.783749749825802, 466443.556981351634022, 466454.330233906046487, 466465.103507412830368, 466475.876801871403586, 466486.650117281416897, 466497.423453642346431, 466508.196810953842942, 466518.970189215440769, 466529.743588426674251, 466540.517008587135933, 466551.290449696301948, 466562.063911753881257, 466572.837394759233575, 466583.610898712184280, 466594.384423612034880, 466605.157969458494335, 466615.931536251096986, 466626.705123989377171, 466637.478732672927435, 466648.252362301398534, 466659.026012874150183, 466669.799684390891343, 466680.573376851098146, 466691.347090254304931, 466702.120824600278866, 466712.894579888263252, 466723.668356118141674, 466734.442153289332055, 466745.215971401368733, 466755.989810453902464, 466766.763670446351171, 466777.537551378307398, 466788.311453249480110, 466799.085376059345435, 466809.859319807379507, 466820.633284493233077, 466831.407270116440486, 466842.181276676652487, 466852.955304173345212, 466863.729352605994791, 466874.503421974368393, 466885.277512277767528, 466896.051623515959363, 466906.825755688536447, 466917.599908794916701, 466928.374082834750880, 466939.148277807573322, 466949.922493712801952, 466960.696730550320353, 466971.470988319371827, 466982.245267019723542, 466993.019566650851630, 467003.793887212348636, 467014.568228703748900, 467025.342591124644969, 467036.116974474512972, 467046.891378753120080, 467057.665803959709592, 467068.440250094165094, 467079.214717155904509, 467089.989205144462176, 467100.763714059372433, 467111.538243900344241, 467122.312794666795526, 467133.087366358377039, 467143.861958974564914, 467154.636572515009902, 467165.411206979304552, 467176.185862366924994, 467186.960538677405566, 467197.735235910338815, 467208.509954065375496, 467219.284693141991738, 467230.059453139780089, 467240.834234058158472, 467251.609035896952264, 467262.383858655579388, 467273.158702333574183, 467283.933566930587403, 467294.708452446095180, 467305.483358879748266, 467316.258286230964586, 467327.033234499453101, 467337.808203684806358, 467348.583193786384072, 467359.358204803836998, 467370.133236736932304, 467380.908289584913291, 467391.683363347605336, 467402.458458024309948, 467413.233573614852503, 467424.008710118650924, 467434.783867535239551, 467445.559045864327345, 467456.334245105332229, 467467.109465257846750, 467477.884706321521662, 467488.659968295833096, 467499.435251180257183, 467510.210554974619299, 467520.985879678279161, 467531.761225290887523, 467542.536591811978724, 467553.311979240970686, 467564.087387577688787, 467574.862816821492743, 467585.638266972033307, 467596.413738028903026, 467607.189229991578031, 467617.964742859709077, 467628.740276632830501, 467639.515831310360227, 467650.291406892240047, 467661.067003377538640, 467671.842620766139589, 467682.618259057635441, 467693.393918251327705, 467704.169598347041756, 467714.945299344253726, 467725.721021242439747, 467736.496764041250572, 467747.272527740220539, 467758.048312338942196, 467768.824117837008089, 467779.599944233894348, 467790.375791529135313, 467801.151659722439945, 467811.927548813342582, 467822.703458801319357, 467833.479389685904607, 467844.255341466749087, 467855.031314143503550, 467865.807307715469506, 467876.583322182414122, 467887.359357543871738, 467898.135413799434900, 467908.911490948637947, 467919.687588990840595, 467930.463707925926428, 467941.239847753371578, 467952.016008472593967, 467962.792190083244350, 467973.568392585031688, 467984.344615977257490, 467995.120860259630717, 468005.897125431685708, 468016.673411493073218, 468027.449718443211168, 468038.226046281750314, 468049.002395008166786, 468059.778764622169547, 468070.555155123292934, 468081.331566511013079, 468092.107998784864321, 468102.884451944555622, 468113.660925989621319, 468124.437420919479337, 468135.213936733722221, 468145.990473432175349, 468156.767031014140230, 468167.543609479267616, 468178.320208827033639, 468189.096829057147261, 468199.873470169084612, 468210.650132162380032, 468221.426815036742482, 468232.203518791531678, 468242.980243426456582, 468253.756988941109739, 468264.533755334909074, 468275.310542607505340, 468286.087350758491084, 468296.864179787342437, 468307.641029693651944, 468318.417900477070361, 468329.194792137073819, 468339.971704673313070, 468350.748638085206039, 468361.525592372345272, 468372.302567534497939, 468383.079563570965547, 468393.856580481515266, 468404.633618265565019, 468415.410676922765560, 468426.187756452651229, 468436.964856854756363, 468447.741978128673509, 468458.519120274053421, 468469.296283290314022, 468480.073467177047860, 468490.850671933905687, 468501.627897560421843, 468512.405144056130666, 468523.182411420624703, 468533.959699653380085, 468544.737008754105773, 468555.514338722161483, 468566.291689557372592, 468577.069061259098817, 468587.846453827049118, 468598.623867260699626, 468609.401301559642889, 468620.178756723355036, 468630.956232751545031, 468641.733729643689003, 468652.511247399321292, 468663.288786018150859, 468674.066345499653835, 468684.843925843364559, 468695.621527048875578, 468706.399149115779437, 468717.176792043610476, 468727.954455831844825, 468738.732140480249655, 468749.509845988184679, 468760.287572355358861, 468771.065319581306539, 468781.843087665620260, 468792.620876607717946, 468803.398686407308560, 468814.176517063926440, 468824.954368577164132, 468835.732240946439561, 468846.510134171461686, 468857.288048251823056, 468868.065983186883386, 468878.843938976468053, 468889.621915619994979, 468900.399913117056713, 468911.177931467304006, 468921.955970670038369, 468932.734030725085177, 468943.512111631978769, 468954.290213390137069, 468965.068335999327246, 468975.846479458967224, 468986.624643768649548, 468997.402828927966766, 469008.181034936453216, 469018.959261793701444, 469029.737509499362204, 469040.515778052737005, 469051.294067453651223, 469062.072377701580990, 469072.850708796060644, 469083.629060736740939, 469094.407433523039799, 469105.185827154666185, 469115.964241631154437, 469126.742676951980684, 469137.521133116853889, 469148.299610125250183, 469159.078107976762112, 469169.856626670924015, 469180.635166207328439, 469191.413726585451514, 469202.192307805060409, 469212.970909865514841, 469223.749532766465563, 469234.528176507621538, 469245.306841088284273, 469256.085526508104522, 469266.864232766791247, 469277.642959863704164, 469288.421707798610441, 469299.200476570869796, 469309.979266180249397, 469320.758076626167167, 469331.536907908215653, 469342.315760026045609, 469353.094632979133166, 469363.873526767070871, 469374.652441389393061, 469385.431376845692284, 469396.210333135677502, 469406.989310258592013, 469417.768308214261197, 469428.547327002277598, 469439.326366621942725, 469450.105427073140163, 469460.884508355171420, 469471.663610467745457, 469482.442733410513029, 469493.221877182775643, 469504.001041784300469, 469514.780227214621846, 469525.559433473215904, 469536.338660559791606, 469547.117908473883290, 469557.897177214908879, 469568.676466782635543, 469579.455777176422998, 469590.235108396096621, 469601.014460440957919, 469611.793833310715854, 469622.573227004962973, 469633.352641523117200, 469644.132076864945702, 469654.911533029924612, 469665.691010017588269, 469676.470507827354595, 469687.250026459165383, 469698.029565912322141, 469708.809126186475623, 469719.588707281101961, 469730.368309195851907, 469741.147931930318009, 469751.927575484034605, 469762.707239856419619, 469773.486925047298428, 469784.266631056088954, 469795.046357882325538, 469805.826105525717139, 469816.605873985681683, 469827.385663261928130, 469838.165473353816196, 469848.945304261113051, 469859.725155983353034, 469870.505028520070482, 469881.284921870799735, 469892.064836035133339, 469902.844771012489218, 469913.624726802809164, 469924.404703405336477, 469935.184700819721911, 469945.964719045558013, 469956.744758082379121, 469967.524817929835990, 469978.304898587346543, 469989.085000054561533, 469999.865122331131715, 470010.645265416533221, 470021.425429310358595, 470032.205614012025762, 470042.985819521301892, 470053.766045837721322, 470064.546292960818391, 470075.326560890069231, 470086.106849625182804, 470096.887159165751655, 470107.667489511193708, 470118.447840661159717, 470129.228212615184020, 470140.008605372800957, 470150.789018933661282, 470161.569453297357541, 470172.349908463365864, 470183.130384431337006, 470193.910881200805306, 470204.691398771246895, 470215.471937142196111, 470226.252496313478332, 470237.033076284569688, 470247.813677054888103, 470258.594298624026123, 470269.374940991692711, 470280.155604157480411, 470290.936288120690733, 470301.716992881032638, 470312.497718438273296, 470323.278464791714214, 470334.059231941006146, 470344.840019885741640, 470355.620828625396825, 470366.401658159680665, 470377.182508488069288, 470387.963379610155243, 470398.744271525531076, 470409.525184233731125, 470420.306117734347936, 470431.087072026857641, 470441.868047110910993, 470452.649042986158747, 470463.430059651960619, 470474.211097108141985, 470484.992155353946146, 470495.773234389198478, 470506.554334213549737, 470517.335454826185014, 470528.116596226929687, 470538.897758415434510, 470549.678941391059197, 470560.460145153512713, 470571.241369702271186, 470582.022615036927164, 470592.803881157131400, 470603.585168062301818, 470614.366475752205588, 470625.147804226260632, 470635.929153484001290, 470646.710523525194731, 470657.491914349142462, 470668.273325955611654, 470679.054758344194852, 470689.836211514193565, 470700.617685465433169, 470711.399180197448004, 470722.180695709714200, 470732.962232001940720, 470743.743789073487278, 470754.525366924062837, 470765.306965553259943, 470776.088584960554726, 470786.870225145539735, 470797.651886107865721, 470808.433567846950609, 470819.215270362619776, 470829.996993654116523, 470840.778737721208017, 470851.560502563370392, 470862.342288180312607, 470873.124094571510796, 470883.905921736441087, 470894.687769674812444, 470905.469638386217412, 470916.251527870073915, 470927.033438126032706, 470937.815369153628126, 470948.597320952452719, 470959.379293522157241, 470970.161286862217821, 470980.943300972168799, 470991.725335851719137, 471002.507391500286758, 471013.289467917580623, 471024.071565102960449, 471034.853683056193404, 471045.635821776813827, 471056.417981264239643, 471067.200161518296227, 471077.982362538343295, 471088.764584324031603, 471099.546826874953695, 471110.329090190527495, 471121.111374270520173, 471131.893679114407860, 471142.676004721783102, 471153.458351092238445, 471164.240718225133605, 471175.023106120293960, 471185.805514777312055, 471196.587944195605814, 471207.370394374709576, 471218.152865314332303, 471228.935357013950124, 471239.717869473155588, 471250.500402691541240, 471261.282956668641418, 471272.065531404106878, 471282.848126897355542, 471293.630743148096371, 471304.413380155805498, 471315.196037920075469, 471325.978716440615244, 471336.761415716726333, 471347.544135748175904, 471358.326876534498297, 471369.109638075169642, 471379.892420369957108, 471390.675223418220412, 471401.458047219610307, 471412.240891773719341, 471423.023757080081850, 471433.806643138348591, 471444.589549947995692, 471455.372477508557495, 471466.155425819742959, 471476.938394881086424, 471487.721384692005813, 471498.504395252268296, 471509.287426561291795, 471520.070478618727066, 471530.853551424108446, 471541.636644977028482, 471552.419759277137928, 471563.202894323738292, 471573.986050116829574, 471584.769226655538660, 471595.552423939690925, 471606.335641968762502, 471617.118880742404144, 471627.902140260091983, 471638.685420521418564, 471649.468721526092850, 471660.252043273474555, 471671.035385763272643, 471681.818748994963244, 471692.602132968197111, 471703.385537682450376, 471714.168963137373794, 471724.952409332559910, 471735.735876267543063, 471746.519363941799384, 471757.302872355096042, 471768.086401506734546, 471778.869951396656688, 471789.653522024047561, 471800.437113388732541, 471811.220725490071345, 471822.004358327831142, 471832.788011901604477, 471843.571686210809276, 471854.355381255038083, 471865.139097033825237, 471875.922833546879701, 471886.706590793735813, 471897.490368773986120, 471908.274167486990336, 471919.057986932573840, 471929.841827110154554, 471940.625688019383233, 471951.409569659794215, 471962.193472030980047, 471972.977395132533275, 471983.761338963871822, 471994.545303524762858, 472005.329288814682513, 472016.113294833165128, 472026.897321579861455, 472037.681369054364040, 472048.465437256090809, 472059.249526184808929, 472070.033635839936323, 472080.817766221065540, 472091.601917327847332, 472102.386089159757830, 472113.170281716505997, 472123.954494997393340, 472134.738729002419859, 472145.522983730712440, 472156.307259182038251, 472167.091555356048048, 472177.875872252159752, 472188.660209869965911, 472199.444568209233694, 472210.228947269264609, 472221.013347049767617, 472231.797767550335266, 472242.582208770443685, 472253.366670709743630, 472264.151153367653023, 472274.935656744055450, 472285.720180838194210, 472296.504725649894681, 472307.289291178574786, 472318.073877423710655, 472328.858484385127667, 472339.643112062301952, 472350.427760454709642, 472361.212429562059697, 472371.997119383770041, 472382.781829919491429, 472393.566561168816406, 472404.351313131279312, 472415.136085806530900, 472425.920879194047302, 472436.705693293421064, 472447.490528104186524, 472458.275383626052644, 472469.060259858495556, 472479.845156800991390, 472490.630074453307316, 472501.415012814861257, 472512.199971885245759, 472522.984951664111577, 472533.769952151051257, 472544.554973345482722, 472555.340015247114934, 472566.125077855424024, 472576.910161170060746, 472587.695265190501232, 472598.480389916396234, 472609.265535347396508, 472620.050701482803561, 472630.835888322384562, 472641.621095865848474, 472652.406324112496804, 472663.191573061980307, 472673.976842713891529, 472684.762133067881223, 472695.547444123483729, 472706.332775880116969, 472717.118128337431699, 472727.903501495195087, 472738.688895352650434, 472749.474309909739532, 472760.259745165705681, 472771.045201120257843, 472781.830677772988565, 472792.616175123373978, 472803.401693171123043, 472814.187231915653683, 472824.972791356733069, 472835.758371493779123, 472846.543972326326184, 472857.329593854083214, 472868.115236076642759, 472878.900898993364535, 472889.686582604073919, 472900.472286908072419, 472911.258011905185413, 472922.043757594889030, 472932.829523976601195, 472943.615311050205491, 472954.401118815061636, 472965.186947270703968, 472975.972796416899655, 472986.758666253066622, 472997.544556778739206, 473008.330467993742786, 473019.116399897320662, 473029.902352489298210, 473040.688325769035146, 473051.474319736298639, 473062.260334390564822, 473073.046369731426239, 473083.832425758417230, 473094.618502471188549, 473105.404599869158119, 473116.190717952093109, 473126.976856719411444, 473137.763016170763876, 473148.549196305801161, 473159.335397123941220, 473170.121618624834809, 473180.907860808016267, 473191.694123673136346, 473202.480407219671179, 473213.266711447213311, 473224.053036355355289, 473234.839381943689659, 473245.625748211750761, 473256.412135159072932, 473267.198542785365134, 473277.984971090161707, 473288.771420072880574, 473299.557889733230695, 473310.344380070746411, 473321.130891085020266, 473331.917422775644809, 473342.703975142154377, 473353.490548184141517, 473364.277141901198775, 473375.063756292802282, 473385.850391358661000, 473396.637047098251060, 473407.423723511106800, 473418.210420596995391, 473428.997138355218340, 473439.783876785542816, 473450.570635887503158, 473461.357415660633706, 473472.144216104643419, 473482.931037218833808, 473493.717879002972040, 473504.504741456650663, 473515.291624579345807, 473526.078528370591812, 473536.865452830214053, 473547.652397957514040, 473558.439363752200734, 473569.226350213808473, 473580.013357341813389, 473590.800385136040859, 473601.587433595734183, 473612.374502720776945, 473623.161592510587070, 473633.948702964757103, 473644.735834082821384, 473655.522985864430666, 473666.310158309061080, 473677.097351416363381, 473687.884565185871907, 473698.671799617295619, 473709.459054709936026, 473720.246330463560298, 473731.033626877702773, 473741.820943951955996, 473752.608281685912516, 473763.395640079048462, 473774.183019131014589, 473784.970418841403443, 473795.757839209691156, 473806.545280235528480, 473817.332741918449756, 473828.120224258047529, 473838.907727253972553, 473849.695250905642752, 473860.482795212767087, 473871.270360174705274, 473882.057945791340899, 473892.845552062033676, 473903.633178986434359, 473914.420826564077288, 473925.208494794555008, 473935.996183677460067, 473946.783893212385010, 473957.571623398747761, 473968.359374236373696, 473979.147145724680740, 473989.934937863203231, 474000.722750651650131, 474011.510584089439362, 474022.298438176221680, 474033.086312911706045, 474043.874208295135759, 474054.662124326510821, 474065.450061005016323, 474076.238018330419436, 474087.025996302312706, 474097.813994920114055, 474108.602014183648862, 474119.390054092276841, 474130.178114645648748, 474140.966195843298919, 474151.754297684761696, 474162.542420169804245, 474173.330563297844492, 474184.118727068474982, 474194.906911481346469, 474205.695116535876878, 474216.483342231775168, 474227.271588568633888, 474238.059855545870960, 474248.848143163195346, 474259.636451420141384, 474270.424780316185206, 474281.213129851210397, 474292.001500024402048, 474302.789890835527331, 474313.578302284236997, 474324.366734369948972, 474335.155187092372216, 474345.943660450924654, 474356.732154445257038, 474367.520669075020123, 474378.309204339690041, 474389.097760238917544, 474399.886336772120558, 474410.674933939066250, 474421.463551739230752, 474432.252190172206610, 474443.040849237586372, 474453.829528934846167, 474464.618229263694957, 474475.406950223667081, 474486.195691814238671, 474496.984454035176896, 474507.773236885841470, 474518.562040365941357, 474529.350864475010894, 474540.139709212642629, 474550.928574578429107, 474561.717460571962874, 474572.506367192603648, 474583.295294440235011, 474594.084242314333096, 474604.873210814257618, 474615.662199939892162, 474626.451209690596443, 474637.240240066079423, 474648.029291065875441, 474658.818362689518835, 474669.607454936602153, 474680.396567806659732, 474691.185701299342327, 474701.974855414242484, 474712.764030150836334, 474723.553225508774631, 474734.342441487591714, 474745.131678086880129, 474755.920935306232423, 474766.710213145182934, 474777.499511603324208, 474788.288830680248793, 474799.078170375491027, 474809.867530688759871, 474820.656911619415041, 474831.446313167223707, 474842.235735331603792, 474853.025178112147842, 474863.814641508623026, 474874.604125520330854, 474885.393630147096701, 474896.183155388280284, 474906.972701243590564, 474917.762267712620087, 474928.551854794903193, 474939.341462490032427, 474950.131090797425713, 474960.920739716792013, 474971.710409247782081, 474982.500099389930256, 474993.289810142770875, 475004.079541505780071, 475014.869293478666805, 475025.659066061023623, 475036.448859252326656, 475047.238673052110244, 475058.028507460316177, 475068.818362476013135, 475079.608238099142909, 475090.398134328948800, 475101.188051165372599, 475111.977988607774023, 475122.767946655745618, 475133.557925308996346, 475144.347924566827714, 475155.137944429065101, 475165.927984895242844, 475176.718045964837074, 475187.508127637498546, 475198.298229912819806, 475209.088352790335193, 475219.878496269695461, 475230.668660350202117, 475241.458845031855162, 475252.249050313839689, 475263.039276196039282, 475273.829522677871864, 475284.619789758871775, 475295.410077438689768, 475306.200385716976598, 475316.990714593150187, 475327.781064066861290, 475338.571434137702454, 475349.361824805149809, 475360.152236069028731, 475370.942667928582523, 475381.733120383578353, 475392.523593433608767, 475403.314087078208104, 475414.104601316968910, 475424.895136149367318, 475435.685691575170495, 475446.476267593738157, 475457.266864204721060, 475468.057481407828163, 475478.848119202535599, 475489.638777588319499, 475500.429456564947031, 475511.220156131777912, 475522.010876288637519, 475532.801617034943774, 475543.592378370231017, 475554.383160294208210, 475565.173962806351483, 475575.964785906369798, 475586.755629593622871, 475597.546493867877871, 475608.337378728669137, 475619.128284175472800, 475629.919210208056029, 475640.710156825778540, 475651.501124028291088, 475662.292111815302633, 475673.083120186114684, 475683.874149140669033, 475694.665198678208981, 475705.456268798501696, 475716.247359501023311, 475727.038470785482787, 475737.829602651298046, 475748.620755098119844, 475759.411928125424311, 475770.203121733036824, 475780.994335920258891, 475791.785570686974097, 475802.576826032367535, 475813.368101956380997, 475824.159398458374199, 475834.950715537881479, 475845.742053194670007, 475856.533411428157706, 475867.324790238053538, 475878.116189623950049, 475888.907609585148748, 475899.699050121533219, 475910.490511232637800, 475921.281992917822208, 475932.073495176911820, 475942.865018009324558, 475953.656561414769385, 475964.448125392606016, 475975.239709942718036, 475986.031315064406954, 475996.822940757439937, 476007.614587021293119, 476018.406253855559044, 476029.197941259772051, 476039.989649233582895, 476050.781377776525915, 476061.573126888193656, 476072.364896568295080, 476083.156686816131696, 476093.948497631354257, 476104.740329013729934, 476115.532180962734856, 476126.324053477961570, 476137.115946558828000, 476147.907860205101315, 476158.699794416199438, 476169.491749191947747, 476180.283724531705957, 476191.075720435008407, 476201.867736901738681, 476212.659773931198288, 476223.451831522979774, 476234.243909676675685, 476245.036008391936775, 476255.828127668413799, 476266.620267505524680, 476277.412427902861964, 476288.204608860134613, 476298.996810376760550, 476309.789032452506945, 476320.581275086675305, 476331.373538278974593, 476342.165822029113770, 476352.958126336510759, 476363.750451200874522, 476374.542796621564776, 476385.335162598348688, 476396.127549130877014, 476406.919956218334846, 476417.712383860780392, 476428.504832057573367, 476439.297300808131695, 476450.089790112338960, 476460.882299969613086, 476471.674830379546620, 476482.467381341732107, 476493.259952855703887, 476504.052544921112712, 476514.845157537376508, 476525.637790704204235, 476536.430444421304855, 476547.223118687979877, 476558.015813503996469, 476568.808528868772555, 476579.601264782133512, 476590.394021243439056, 476601.186798252339941, 476611.979595808486920, 476622.772413911297917, 476633.565252560365479, 476644.358111755514983, 476655.150991496047936, 476665.943891781615093, 476676.736812611867208, 476687.529753986280411, 476698.322715904563665, 476709.115698366134893, 476719.908701370761264, 476730.701724917860702, 476741.494769007025752, 476752.287833638081793, 476763.080918810097501, 476773.874024523072876, 476784.667150776542258, 476795.460297569865361, 476806.253464902983978, 476817.046652775083203, 476827.839861185988411, 476838.633090135175735, 476849.426339622179512, 476860.219609646650497, 476871.012900208239444, 476881.806211306422483, 476892.599542940908577, 476903.392895110999234, 476914.186267816578038, 476924.979661057062913, 476935.773074832046404, 476946.566509141121060, 476957.359963983821217, 476968.153439359914046, 476978.946935268701054, 476989.740451709774788, 477000.533988683077041, 477011.327546187792905, 477022.121124223689549, 477032.914722790417727, 477043.708341887337156, 477054.501981514156796, 477065.295641670294572, 477076.089322355634067, 477086.883023569476791, 477097.676745311648119, 477108.470487581507768, 477119.264250378706492, 477130.058033702895045, 477140.851837553491350, 477151.645661930204369, 477162.439506832626648, 477173.233372260176111, 477184.027258212619927, 477194.821164689492434, 477205.615091690269765, 477216.409039214660879, 477227.203007262200117, 477237.996995832421817, 477248.791004924976733, 477259.585034539224580, 477270.379084675223567, 477281.173155332042370, 477291.967246509448159, 477302.761358207208104, 477313.555490424565505, 477324.349643161345739, 477335.143816417083144, 477345.938010191195644, 477356.732224483450409, 477367.526459293439984, 477378.320714620640501, 477389.114990464586299, 477399.909286825044546, 477410.703603701433167, 477421.497941093344707, 477432.292299000371713, 477443.086677422164939, 477453.881076358258724, 477464.675495808187407, 477475.469935771543533, 477486.264396248036064, 477497.058877237082925, 477507.853378738276660, 477518.647900751326233, 477529.442443275533151, 477540.237006310897414, 477551.031589856604114, 477561.826193912478629, 477572.620818477997091, 477583.415463552810252, 477594.210129136452451, 477605.004815228341613, 477615.799521828419529, 477626.594248935929500, 477637.388996550522279, 477648.183764671965037, 477658.978553299675696, 477669.773362433246803, 477680.568192072387319, 477691.363042216398753, 477702.157912865164690, 477712.952804017986637, 477723.747715674689971, 477734.542647834750824, 477745.337600497703534, 477756.132573663315270, 477766.927567330771126, 477777.722581500012893, 477788.517616170633119, 477799.312671341933310, 477810.107747013680637, 477820.902843185525853, 477831.697959856828675, 477842.493097027298063, 477853.288254696584772, 477864.083432864106726, 477874.878631529631093, 477885.673850692401174, 477896.469090352358762, 477907.264350509038195, 477918.059631161857396, 477928.854932310467120, 477939.650253954343498, 477950.445596093311906, 477961.240958726790268, 477972.036341854429338, 477982.831745475647040, 477993.627169590152334, 478004.422614197537769, 478015.218079297337681, 478026.013564889319241, 478036.809070972667541, 478047.604597547324374, 478058.400144612649456, 478069.195712168293539, 478079.991300213907380, 478090.786908749025315, 478101.582537773239892, 478112.378187286027241, 478123.173857287154533, 478133.969547776039690, 478144.765258752333466, 478155.560990215511993, 478166.356742165400647, 478177.152514601300936, 478187.948307522980031, 478198.744120929855853, 478209.539954821753781, 478220.335809198033530, 478231.131684058345854, 478241.927579402341507, 478252.723495229438413, 478263.519431539345533, 478274.315388331655413, 478285.111365605902392, 478295.907363361620810, 478306.703381598461419, 478317.499420316016767, 478328.295479513762984, 478339.091559191467240, 478349.887659348547459, 478360.683779984537978, 478371.479921099147759, 478382.276082691969350, 478393.072264762537088, 478403.868467310501728, 478414.664690335164778, 478425.460933836468030, 478436.257197813887615, 478447.053482266841456, 478457.849787195096724, 478468.646112598071340, 478479.442458475474268, 478490.238824827014469, 478501.035211651877034, 478511.831618950061966, 478522.628046720754355, 478533.424494963895995, 478544.220963678846601, 478555.017452865256928, 478565.813962522777729, 478576.610492650826927, 478587.407043249113485, 478598.203614317229949, 478609.000205854594242, 478619.796817861089949, 478630.593450335902162, 478641.390103278856259, 478652.186776689661201, 478662.983470567502081, 478673.780184912378900, 478684.576919723593164, 478695.373675000853837, 478706.170450743753463, 478716.967246951709967, 478727.764063624490518, 478738.560900761629455, 478749.357758362602908, 478760.154636427236255, 478770.951534954831004, 478781.748453945037909, 478792.545393397624139, 478803.342353311832994, 478814.139333687606268, 478824.936334524361882, 478835.733355821634177, 478846.530397579073906, 478857.327459796157200, 478868.124542472709436, 478878.921645608032122, 478889.718769201892428, 478900.515913253824692, 478911.313077763421461, 478922.110262730158865, 478932.907468153687660, 478943.704694033542182, 478954.501940369489603, 478965.299207160889637, 478976.096494407567661, 478986.893802108825184, 478997.691130264429376, 479008.488478873914573, 479019.285847936640494, 479030.083237452665344, 479040.880647421174217, 479051.678077842050698, 479062.475528714479879, 479073.273000038403552, 479084.070491813181434, 479094.868004038580693, 479105.665536714019254, 479116.463089839147869, 479127.260663413559087, 479138.058257436845452, 479148.855871908541303, 479159.653506828297395, 479170.451162195648067, 479181.248838010069449, 479192.046534271386918, 479202.844250979018398, 479213.641988132614642, 479224.439745731593575, 479235.237523775664158, 479246.035322264535353, 479256.833141197508667, 479267.630980574467685, 479278.428840394713916, 479289.226720658072736, 479300.024621363903861, 479310.822542511974461, 479321.620484101818874, 479332.418446132971440, 479343.216428605024703, 479354.014431517571211, 479364.812454870145302, 479375.610498662397731, 479386.408562893862836, 479397.206647564249579, 479408.004752672917675, 479418.802878219634295, 479429.601024204050191, 479440.399190625350457, 479451.197377483476885, 479461.995584778022021, 479472.793812508403789, 479483.592060674272943, 479494.390329275163822, 479505.188618310668971, 479515.986927780497354, 479526.785257684183307, 479537.583608021144755, 479548.381978791148867, 479559.180369993671775, 479569.978781628306024, 479580.777213694702368, 479591.575666192511562, 479602.374139121035114, 479613.172632480156608, 479623.971146269177552, 479634.769680487923324, 479645.568235135870054, 479656.366810212668497, 479667.165405717736576, 479677.964021650841460, 479688.762658011459280, 479699.561314799298998, 479710.359992013778538, 479721.158689654665068, 479731.957407721260097, 479742.756146213389002, 479753.554905130644329, 479764.353684472444002, 479775.152484238438774, 479785.951304428279400, 479796.750145041442011, 479807.549006077635568, 479818.347887536394410, 479829.146789417252876, 479839.945711719745304, 479850.744654443464242, 479861.543617588118650, 479872.342601153359283, 479883.141605138604064, 479893.940629543387331, 479904.739674367301632, 479915.538739610172343, 479926.337825271300972, 479937.136931350571103, 479947.936057847167831, 479958.735204760916531, 479969.534372091526166, 479980.333559838298243, 479991.132768000999931, 480001.931996579165570, 480012.731245572271291, 480023.530514980026055, 480034.329804802080616, 480045.129115037736483, 480055.928445686877239, 480066.727796748979017, 480077.527168223750778, 480088.326560110377613, 480099.125972408859525, 480109.925405118614435, 480120.724858239234891, 480131.524331770313438, 480142.323825711384416, 480153.123340062098578, 480163.922874821990263, 480174.722429990768433, 480185.522005567909218, 480196.321601552830543, 480207.121217945532408, 480217.920854745199904, 480228.720511951658409, 480239.520189564384054, 480250.319887582911178, 480261.119606006890535, 480271.919344835972879, 480282.719104069808964, 480293.518883707700297, 480304.318683749239426, 480315.118504194368143, 480325.918345042387955, 480336.718206293066032, 480347.518087945703883, 480358.317990000010468, 480369.117912455811165, 480379.917855312407482, 480390.717818569450174, 480401.517802226473577, 480412.317806283186655, 480423.117830739181954, 480433.917875593760982, 480444.717940846923739, 480455.518026497971732, 480466.318132546613924, 480477.118258992326446, 480487.918405834760051, 480498.718573073681910, 480509.518760708160698, 480520.318968738254625, 480531.119197163439821, 480541.919445983250625, 480552.719715197337791, 480563.520004805235658, 480574.320314806303941, 480585.120645200484432, 480595.920995987311471, 480606.721367166202981, 480617.521758736809716, 480628.322170698607806, 480639.122603051539045, 480649.923055794788525, 480660.723528928123415, 480671.524022451078054, 480682.324536363361403, 480693.125070664449595, 480703.925625353876967, 480714.726200431410689, 480725.526795896235853, 480736.327411748410668, 480747.128047987411264, 480757.928704612422734, 480768.729381623561494, 480779.530079020245466, 480790.330796801892575, 480801.131534968269989, 480811.932293518737424, 480822.733072453236673, 480833.533871770952828, 480844.334691471885890, 480855.135531555220950, 480865.936392020783387, 480876.737272868049331, 480887.538174096669536, 480898.339095706294756, 480909.140037696342915, 480919.941000066522975, 480930.741982816311065, 480941.542985945357941, 480952.344009453314357, 480963.145053339598235, 480973.946117604034953, 480984.747202246100642, 480995.548307265096810, 481006.349432661139872, 481017.150578433414921, 481027.951744581514504, 481038.752931105263997, 481049.554138004081324, 481060.355365277617238, 481071.156612925406080, 481081.957880947040394, 481092.759169342112727, 481103.560478110273834, 481114.361807250941638, 481125.163156763883308, 481135.964526648574974, 481146.765916904725600, 481157.567327531753108, 481168.368758529424667, 481179.170209897158202, 481189.971681634604465, 481200.773173741297796, 481211.574686216947157, 481222.376219060912263, 481233.177772273076698, 481243.979345852858387, 481254.780939799791668, 481265.582554113585502, 481276.384188793716021, 481287.185843839833979, 481297.987519251706544, 481308.789215028518811, 481319.590931170096155, 481330.392667676031124, 481341.194424545858055, 481351.996201779111288, 481362.797999375441577, 481373.599817334441468, 481384.401655655819923, 481395.203514338878449, 481406.005393383384217, 481416.807292788871564, 481427.609212555049453, 481438.411152681394015, 481449.213113167323172, 481460.015094012836926, 481470.817095217003953, 481481.619116779766046, 481492.421158700715750, 481503.223220979387406, 481514.025303615315352, 481524.827406608033925, 481535.629529957193881, 481546.431673662329558, 481557.233837723149918, 481568.036022139247507, 481578.838226910040248, 481589.640452035178896, 481600.442697514314204, 481611.244963346805889, 481622.047249532712158, 481632.849556071218103, 481643.651882961974479, 481654.454230204632040, 481665.256597798783332, 481676.058985744020902, 481686.861394039879087, 481697.663822686008643, 481708.466271681827493, 481719.268741027044598, 481730.071230721485335, 481740.873740764218383, 481751.676271155243739, 481762.478821893979330, 481773.281392980017699, 481784.083984413067810, 481794.886596192547586, 481805.689228318107780, 481816.491880789399147, 481827.294553605839610, 481838.097246767196339, 481848.899960272945464, 481859.702694122795947, 481870.505448316165712, 481881.308222852821928, 481892.111017732182518, 481902.913832953956444, 481913.716668517619837, 481924.519524422823451, 481935.322400669101626, 481946.125297256221529, 481956.928214183426462, 481967.731151450774632, 481978.534109057451133, 481989.337087003223132, 482000.140085287508555, 482010.943103910132777, 482021.746142870571930, 482032.549202168243937, 482043.352281803148799, 482054.155381774471607, 482064.958502081921324, 482075.761642725206912, 482086.564803703746293, 482097.367985017306637, 482108.171186665305868, 482118.974408647511154, 482129.777650963224005, 482140.580913612269796, 482151.384196594124660, 482162.187499908439349, 482172.990823554748204, 482183.794167532701977, 482194.597531841776799, 482205.400916481798049, 482216.204321452067234, 482227.007746752351522, 482237.811192382185254, 482248.614658340928145, 482259.418144628638402, 482270.221651244617533, 482281.025178188399877, 482291.828725459752604, 482302.632293058035430, 482313.435880983073730, 482324.239489234401844, 482335.043117811437696, 482345.846766713948455, 482356.650435941352043, 482367.454125493415631, 482378.257835369615350, 482389.061565569660161, 482399.865316092967987, 482410.669086939305998, 482421.472878108092118, 482432.276689598918892, 482443.080521411495283, 482453.884373545355629, 482464.688246000150684, 482475.492138775298372, 482486.296051870507654, 482497.099985285371076, 482507.903939019422978, 482518.707913072314113, 482529.511907443462405, 482540.315922132809646, 482551.119957139599137, 482561.924012463481631, 482572.728088104224298, 482583.532184061128646, 482594.336300334078260, 482605.140436922491062, 482615.944593825959601, 482626.748771044192836, 482637.552968576608691, 482648.357186422974337, 482659.161424582707696, 482669.965683055401314, 482680.769961840880569, 482691.574260938330553, 482702.378580347751267, 482713.182920068444218, 482723.987280100001954, 482734.791660442249849, 482745.596061094605830, 482756.400482056837063, 482767.204923328245059, 482778.009384908422362, 482788.813866797310766, 482799.618368994095363, 482810.422891498659737, 482821.227434310421813, 482832.031997429032344, 482842.836580854025669, 482853.641184584994335, 482864.445808621763717, 482875.250452963518910, 482886.055117610143498, 482896.859802561055403, 482907.664507815963589, 482918.469233374577016, 482929.273979235964362, 482940.078745400358457, 482950.883531866944395, 482961.688338635431137, 482972.493165705411229, 482983.298013076419011, 482994.102880748105235, 483004.907768720004242, 483015.712676991708577, 483026.517605562927201, 483037.322554433078039, 483048.127523601811845, 483058.932513068779372, 483069.737522833514959, 483080.542552895552944, 483091.347603254485875, 483102.152673910022713, 483112.957764861697797, 483123.762876109045465, 483134.568007651716471, 483145.373159489303362, 483156.178331621282268, 483166.983524047303945, 483177.788736767135561, 483188.593969780078623, 483199.399223085842095, 483210.204496684134938, 483221.009790574258659, 483231.815104756096844, 483242.620439229067415, 483253.425793992821127, 483264.231169047008734, 483275.036564390873536, 483285.841980024590157, 483296.647415947227273, 483307.452872158668470, 483318.258348658331670, 483329.063845445925836, 483339.869362520927098, 483350.674899883102626, 483361.480457531870343, 483372.286035466881003, 483383.091633687727153, 483393.897252193884924, 483404.702890985237900, 483415.508550061087590, 483426.314229421084747, 483437.119929064938333, 483447.925648992008064, 483458.731389202177525, 483469.537149694864638, 483480.342930469603743, 483491.148731526045594, 483501.954552863840945, 483512.760394482465927, 483523.566256381629501, 483534.372138560866006, 483545.178041019709781, 483555.983963757811580, 483566.789906774763949, 483577.595870070159435, 483588.401853643532377, 483599.207857494649943, 483610.013881622697227, 483620.819926027616020, 483631.625990708998870, 483642.432075666263700, 483653.238180899177678, 483664.044306407158729, 483674.850452189741191, 483685.656618246692233, 483696.462804577604402, 483707.269011182070244, 483718.075238059507683, 483728.881485209567472, 483739.687752632016782, 483750.494040326215327, 483761.300348291872069, 483772.106676528521348, 483782.913025035930332, 483793.719393813400529, 483804.525782860640902, 483815.332192177360412, 483826.138621762976982, 483836.945071617257781, 483847.751541739504319, 483858.558032129600178, 483869.364542786963284, 483880.171073711302597, 483890.977624902094249, 483901.784196359105408, 483912.590788081753999, 483923.397400069574360, 483934.204032322275452, 483945.010684839566238, 483955.817357620748226, 483966.624050665588584, 483977.430763973621652, 483988.237497544556390, 483999.044251377868932, 484009.851025473093614, 484020.657819829997607, 484031.464634447998833, 484042.271469326864462, 484053.078324465896003, 484063.885199864918832, 484074.692095523525495, 484085.499011441133916, 484096.305947617627680, 484107.112904052308295, 484117.919880744884722, 484128.726877694949508, 484139.533894902036991, 484150.340932365797926, 484161.147990085766651, 484171.955068061535712, 484182.762166292930488, 484193.569284779136069, 484204.376423520036042, 484215.183582515048329, 484225.990761763940100, 484236.797961266129278, 484247.605181021208409, 484258.412421029002871, 484269.219681288814172, 484280.026961800409481, 484290.834262563323136, 484301.641583577147685, 484312.448924841475673, 484323.256286355841439, 484334.063668119895738, 484344.871070133289322, 484355.678492395440117, 484366.485934906115290, 484377.293397664790973, 484388.100880671176128, 484398.908383924688678, 484409.715907424979378, 484420.523451171698980, 484431.331015164440032, 484442.138599402795080, 484452.946203886182047, 484463.753828614484519, 484474.561473587004002, 484485.369138803565875, 484496.176824263646267, 484506.984529966779519, 484517.792255912732799, 484528.600002100924030, 484539.407768531003967, 484550.215555202506948, 484561.023362115141936, 484571.831189268385060, 484582.639036662003491, 484593.446904295298737, 484604.254792168154381, 484615.062700280046556, 484625.870628630451392, 484636.678577219136059, 484647.486546045518480, 484658.294535109365825, 484669.102544410212431, 484679.910573947592638, 484690.718623721098993, 484701.526693730440456, 484712.334783975034952, 484723.142894454649650, 484733.951025168702472, 484744.759176116785966, 484755.567347298725508, 484766.375538713822607, 484777.183750361844432, 484787.991982242325321, 484798.800234354857821, 484809.608506699150894, 484820.416799274622463, 484831.225112080923282, 484842.033445117587689, 484852.841798384382855, 484863.650171880726703, 484874.458565606211778, 484885.266979560547043, 484896.075413743266836, 484906.883868154021911, 484917.692342792230193, 484928.500837657600641, 484939.309352749725804, 484950.117888068256434, 484960.926443612610456, 484971.735019382555038, 484982.543615377624519, 484993.352231597236823, 485004.160868041217327, 485014.969524709158577, 485025.778201600478496, 485036.586898714827839, 485047.395616051973775, 485058.204353611159604, 485069.013111392327119, 485079.821889394894242, 485090.630687618395314, 485101.439506062597502, 485112.248344726976939, 485123.057203611126170, 485133.866082714695949, 485144.674982037220616, 485155.483901578234509, 485166.292841337504797, 485177.101801314449403, 485187.910781508777291, 485198.719781920081005, 485209.528802547778469, 485220.337843391636852, 485231.146904451190494, 485241.955985726031940, 485252.765087215870153, 485263.574208920006640, 485274.383350838324986, 485285.192512970243115, 485296.001695315528195, 485306.810897873481736, 485317.620120644045528, 485328.429363626462873, 485339.238626820500940, 485350.047910225926898, 485360.857213841925841, 485371.666537668439560, 485382.475881705060601, 485393.285245951090474, 485404.094630406296346, 485414.904035070212558, 485425.713459942606278, 485436.522905022895429, 485447.332370310672559, 485458.141855805646628, 485468.951361507235561, 485479.760887415206525, 485490.570433529093862, 485501.379999848373700, 485512.189586372755002, 485522.999193101888523, 485533.808820035192184, 485544.618467172433157, 485555.428134513145778, 485566.237822056747973, 485577.047529803181533, 485587.857257751689758, 485598.667005902156234, 485609.476774253882468, 485620.286562806635629, 485631.096371560008265, 485641.906200513592921, 485652.716049666807521, 485663.525919019652065, 485674.335808571195230, 485685.145718321495224, 485695.955648269795347, 485706.765598415862769, 485717.575568759348243, 485728.385559299669694, 485739.195570036594290, 485750.005600969423540, 485760.815652098099235, 485771.625723422097508, 485782.435814940836281, 485793.245926654199138, 485804.056058561604004, 485814.866210662527010, 485825.676382956793532, 485836.486575443937909, 485847.296788123494480, 485858.107020994997583, 485868.917274058214389, 485879.727547312679235, 485890.537840757751837, 485901.348154393373989, 485912.158488218963612, 485922.968842234171461, 485933.779216438531876, 485944.589610831637401, 485955.400025413080584, 485966.210460182512179, 485977.020915139466524, 485987.831390283477958, 485998.641885614313651, 486009.452401131507941, 486020.262936834536958, 486031.073492722993251, 486041.884068796760403, 486052.694665055023506, 486063.505281497666147, 486074.315918124048039, 486085.126574934110977, 486095.937251927040052, 486106.747949102718849, 486117.558666460681707, 486128.369404000462964, 486139.180161721596960, 486149.990939623909071, 486160.801737706759013, 486171.612555969681125, 486182.423394412558991, 486193.234253034810536, 486204.045131836028304, 486214.856030815804843, 486225.666949973790906, 486236.477889309520833, 486247.288848822645377, 486258.099828512698878, 486268.910828379332088, 486279.721848422021139, 486290.532888640474994, 486301.343949034227990, 486312.155029603047296, 486322.966130346118007, 486333.777251263498329, 486344.588392354547977, 486355.399553618801292, 486366.210735056025442, 486377.021936665754765, 486387.833158447407186, 486398.644400400866289, 486409.455662525375374, 486420.266944820992649, 486431.078247286903206, 486441.889569922874216, 486452.700912728440017, 486463.512275703251362, 486474.323658846959006, 486485.135062158922665, 486495.946485638851300, 486506.757929286512081, 486517.569393101322930, 486528.380877082934603, 486539.192381230823230, 486550.003905544814188, 486560.815450024325401, 486571.627014669007622, 486582.438599478278775, 486593.250204452138860, 486604.061829589656554, 486614.873474890890066, 486625.685140355199110, 486636.496825982234441, 486647.308531771530397, 486658.120257722737733, 486668.932003835332580, 486679.743770109256729, 486690.555556543695275, 486701.367363138531800, 486712.179189893067814, 486722.991036807186902, 486733.802903880306985, 486744.614791112020612, 486755.426698502153158, 486766.238626050006133, 486777.050573755346704, 486787.862541617592797, 486798.674529636569787, 486809.486537811637390, 486820.298566142562777, 486831.110614628996700, 486841.922683270240668, 486852.734772066294681, 486863.546881016343832, 486874.359010120213497, 486885.171159377496224, 486895.983328787726350, 486906.795518350438215, 486917.607728065398987, 486928.419957931968383, 486939.232207950088196, 486950.044478118943516, 486960.856768438417930, 486971.669078907929361, 486982.481409527244978, 486993.293760295782704, 487004.106131213251501, 487014.918522279243916, 487025.730933493294287, 487036.543364855053369, 487047.355816364055499, 487058.168288019951433, 487068.980779822275508, 487079.793291770736687, 487090.605823864811100, 487101.418376104149502, 487112.230948488286231, 487123.043541016872041, 487133.856153689499479, 487144.668786505761091, 487155.481439465191215, 487166.294112567557022, 487177.106805812160019, 487187.919519199000206, 487198.732252727146260, 487209.545006396656390, 487220.357780206890311, 487231.170574157615192, 487241.983388248248957, 487252.796222478325944, 487263.609076847555116, 487274.421951355761848, 487285.234846002131235, 487296.047760786546860, 487306.860695708543062, 487317.673650767654181, 487328.486625963414554, 487339.299621295416728, 487350.112636763602495, 487360.925672367040534, 487371.738728105730843, 487382.551803979091346, 487393.364899986772798, 487404.178016128193121, 487414.991152403177693, 487425.804308811435476, 487436.617485352151562, 487447.430682025209535, 487458.243898830143735, 487469.057135766430292, 487479.870392833894584, 487490.683670031954534, 487501.496967360260896, 487512.310284818348009, 487523.123622405983042, 487533.936980122583918, 487544.750357967743184, 487555.563755941286217, 487566.377174042514525, 487577.190612271195278, 487588.004070626862813, 487598.817549109109677, 487609.631047717528418, 487620.444566451769788, 487631.258105311368126, 487642.071664295974188, 487652.885243405238725, 487663.698842638579663, 487674.512461995589547, 487685.326101476093754, 487696.139761079393793, 487706.953440805489663, 487717.767140653566457, 487728.580860623391345, 487739.394600714498665, 487750.208360926597379, 487761.022141259163618, 487771.835941711964551, 487782.649762284301687, 487793.463602976058610, 487804.277463786711451, 487815.091344715852756, 487825.905245763133280, 487836.719166928087361, 487847.533108210249338, 487858.347069609386381, 487869.161051124916412, 487879.975052756548394, 487890.789074503874872, 487901.603116366313770, 487912.417178343748674, 487923.231260435597505, 487934.045362641627435, 487944.859484961139970, 487955.673627393960487, 487966.487789939565118, 487977.301972597604617, 487988.116175367729738, 487998.930398249358404, 488009.744641242199577, 488020.558904346078634, 488031.373187560180668, 488042.187490884272847, 488053.001814318005927, 488063.816157861030661, 488074.630521512648556, 488085.444905272684991, 488096.259309140848927, 488107.073733116441872, 488117.888177199347410, 488128.702641388867050, 488139.517125684884377, 488150.331630086700898, 488161.146154594141990, 488171.960699206800200, 488182.775263924209867, 488193.589848745788913, 488204.404453671420924, 488215.219078700582031, 488226.033723832981195, 488236.848389067919925, 488247.663074405281805, 488258.477779844601173, 488269.292505385412369, 488280.107251027249731, 488290.922016769822221, 488301.736802612722386, 488312.551608555484563, 488323.366434597759508, 488334.181280739081558, 488344.996146979217883, 488355.811033317469992, 488366.625939753663260, 488377.440866287390236, 488388.255812918185256, 488399.070779645582661, 488409.885766469233204, 488420.700773388729431, 488431.515800403780304, 488442.330847513687331, 488453.145914718450513, 488463.961002017371356, 488474.776109410100617, 488485.591236896289047, 488496.406384475529194, 488507.221552147413604, 488518.036739911476616, 488528.851947767368983, 488539.667175714741461, 488550.482423753011972, 488561.297691881947685, 488572.112980101141147, 488582.928288410068490, 488593.743616808380466, 488604.558965295727830, 488615.374333871644922, 488626.189722535782494, 488637.005131287674885, 488647.820560126914643, 488658.636009053094313, 488669.451478065864649, 488680.266967164992820, 488691.082476349663921, 488701.898005619819742, 488712.713554974936415, 488723.529124414548278, 488734.344713938306086, 488745.160323545860592, 488755.975953236862551, 488766.791603010613471, 488777.607272866938729, 488788.422962805430871, 488799.238672825740650, 488810.054402927285992, 488820.870153109717648, 488831.685923372802790, 488842.501713715959340, 488853.317524138663430, 488864.133354640856851, 488874.949205221957527, 488885.765075881616212, 488896.580966619250830, 488907.396877434570342, 488918.212808327283710, 488929.028759296808857, 488939.844730342912953, 488950.660721465130337, 488961.476732662995346, 488972.292763936042320, 488983.108815283980221, 488993.924886706518009, 489004.740978203073610, 489015.557089773414191, 489026.373221416841261, 489037.189373133238405, 489048.005544922023546, 489058.821736782789230, 489069.637948715360835, 489080.454180719156284, 489091.270432793826330, 489102.086704938788898, 489112.902997154043987, 489123.719309438776691, 489134.535641792812385, 489145.351994215627201, 489156.168366706871893, 489166.984759266197216, 489177.801171893137507, 489188.617604587285314, 489199.434057348233182, 489210.250530175631866, 489221.067023069132119, 489231.883536028151866, 489242.700069052458275, 489253.516622141469270, 489264.333195294777397, 489275.149788512440864, 489285.966401793411933, 489296.783035137690604, 489307.599688544694800, 489318.416362014191691, 489329.233055545599200, 489340.049769138626289, 489350.866502792865504, 489361.683256507967599, 489372.500030283350497, 489383.316824118664954, 489394.133638013678137, 489404.950471967807971, 489415.767325980647001, 489426.584200051904190, 489437.401094181230292, 489448.218008367926814, 489459.034942611993756, 489469.851896912616212, 489480.668871269677766, 489491.485865682654548, 489502.302880151371937, 489513.119914675015025, 489523.936969253583811, 489534.754043886379804, 489545.571138573111966, 489556.388253313489258, 489567.205388106929604, 489578.022542953200173, 489588.839717851718888, 489599.656912802252918, 489610.474127804220188, 489621.291362857329659, 489632.108617961173877, 489642.925893115287181, 489653.743188319553155, 489664.560503573156893, 489675.377838875865564, 489686.195194227329921, 489697.012569627142511, 489707.829965074895881, 489718.647380570124369, 489729.464816112478729, 489740.282271701493300, 489751.099747336818837, 489761.917243018106092, 489772.734758744831197, 489783.552294516703114, 489794.369850333256181, 489805.187426194141153, 489816.005022098775953, 489826.822638047160581, 489837.640274038480129, 489848.457930072443560, 489859.275606148759834, 489870.093302266963292, 489880.911018426704686, 489891.728754627401941, 489902.546510868880432, 489913.364287150616292, 489924.182083472260274, 489934.999899833346717, 489945.817736233526375, 489956.635592672333587, 489967.453469149535522, 489978.271365664491896, 489989.089282217028085, 489999.907218806445599, 490010.725175432744436, 490021.543152095226105, 490032.361148793541361, 490043.179165527224541, 490053.997202296101023, 490064.815259099646937, 490075.633335937396623, 490086.451432809000835, 490097.269549714110326, 490108.087686652259436, 490118.905843623098917, 490129.724020626104902, 490140.542217660986353, 490151.360434727394022, 490162.178671824745834, 490172.996928952692542, 490183.815206111001316, 490194.633503299206495, 490205.451820516784210, 490216.270157763327006, 490227.088515038602054, 490237.906892342143692, 490248.725289673486259, 490259.543707032280508, 490270.362144418060780, 490281.180601830419619, 490291.999079269182403, 490302.817576733534224, 490313.636094223591499, 490324.454631738539319, 490335.273189278261270, 490346.091766841942444, 490356.910364429641049, 490367.728982040716801, 490378.547619674820453, 490389.366277331602760, 490400.184955010598060, 490411.003652711398900, 490421.822370433597825, 490432.641108176729176, 490443.459865940676536, 490454.278643724741414, 490465.097441528690979, 490475.916259351943154, 490486.735097194206901, 490497.553955055191182, 490508.372832934430335, 490519.191730831458699, 490530.010648745694198, 490540.829586677253246, 490551.648544625204522, 490562.467522589489818, 490573.286520569468848, 490584.105538564908784, 490594.924576575460378, 490605.743634600541554, 490616.562712639919482, 490627.381810693012085, 490638.200928759411909, 490649.020066839060746, 490659.839224931143690, 490670.658403035544325, 490681.477601151564158, 490692.296819279203191, 490703.116057417762931, 490713.935315566835925, 490724.754593726247549, 490735.573891895415727, 490746.393210073991213, 490757.212548261508346, 490768.031906457734294, 490778.851284662203398, 490789.670682874275371, 490800.490101093892008, 490811.309539320471231, 490822.128997553780209, 490832.948475793120451, 490843.767974038375542, 490854.587492288963404, 490865.407030544476584, 490876.226588804740459, 490887.046167069056537, 490897.865765337308403, 490908.685383608913980, 490919.505021883524023, 490930.324680160789285, 490941.144358440185897, 490951.964056721422821, 490962.783775004034396, 490973.603513287671376, 490984.423271571868099, 490995.243049856275320, 491006.062848140427377, 491016.882666424033232, 491027.702504706685431, 491038.522362987918314, 491049.342241267266218, 491060.162139544496313, 491070.982057819142938, 491081.801996090740431, 491092.621954358881339, 491103.441932623391040, 491114.261930883571040, 491125.081949139304925, 491135.901987389777787, 491146.722045635106042, 491157.542123874474782, 491168.362222107592970, 491179.182340334285982, 491190.002478553855326, 491200.822636766184587, 491211.642814970575273, 491222.463013166794553, 491233.283231354376767, 491244.103469533147290, 491254.923727702349424, 491265.744005861750338, 491276.564304011000786, 491287.384622149751522, 491298.204960277420469, 491309.025318393658381, 491319.845696498174220, 491330.666094590444118, 491341.486512670118827, 491352.306950736849103, 491363.127408790052868, 491373.947886829730123, 491384.768384855065960, 491395.588902865769342, 491406.409440861549228, 491417.229998841823544, 491428.050576806475874, 491438.871174754807726, 491449.691792686702684, 491460.512430601578671, 491471.333088498911820, 491482.153766378527507, 491492.974464240076486, 491503.795182082976680, 491514.615919906762429, 491525.436677711433731, 491536.257455496059265, 491547.078253260580823, 491557.899071004590951, 491568.719908727623988, 491579.540766429330688, 491590.361644109128974, 491601.182541766902432, 491612.003459401952568, 491622.824397013988346, 491633.645354602835141, 491644.466332167794462, 491655.287329708633479, 491666.108347224886529, 491676.929384716204368, 491687.750442182004917, 491698.571519622229971, 491709.392617036122829, 491720.213734423567075, 491731.034871784097049, 491741.856029117130674, 491752.677206422551535, 491763.498403699544724, 491774.319620948168449, 491785.140858167782426, 491795.962115358037408, 491806.783392518700566, 491817.604689649073407, 491828.426006748923101, 491839.247343817783985, 491850.068700855248608, 491860.890077861142345, 491871.711474834650289, 491882.532891775772441, 491893.354328683926724, 491904.175785558647476, 491914.997262399701867, 491925.818759206566028, 491936.640275979065336, 491947.461812716384884, 491958.283369418524671, 491969.104946084902622, 491979.926542715169489, 491990.748159308743197, 492001.569795865449123, 492012.391452384879813, 492023.213128866686020, 492034.034825310169253, 492044.856541715213098, 492055.678278081468306, 492066.500034408119973, 492077.321810695109889, 492088.143606942147017, 492098.965423148532864, 492109.787259314151015, 492120.609115438302979, 492131.430991520872340, 492142.252887561160605, 492153.074803559109569, 492163.896739513962530, 492174.718695425719488, 492185.540671293681953, 492196.362667117500678, 492207.184682896826416, 492218.006718631309923, 492228.828774320427328, 492239.650849963887595, 492250.472945561225060, 492261.295061112206895, 492272.117196616134606, 492282.939352072891779, 492293.761527481779922, 492304.583722842740826, 492315.405938155250624, 492326.228173418843653, 492337.050428633054253, 492347.872703797649592, 492358.694998912280425, 492369.517313976248261, 492380.339648989378475, 492391.162003951380029, 492401.984378861670848, 492412.806773719785269, 492423.629188525606878, 492434.451623278437182, 492445.274077978043351, 492456.096552624017932, 492466.919047215953469, 492477.741561753384303, 492488.564096235961188, 492499.386650663218461, 492510.209225035039708, 492521.031819350726437, 492531.854433609871194, 492542.677067812299356, 492553.499721957428847, 492564.322396045026835, 492575.145090074511245, 492585.967804045649245, 492596.790537957858760, 492607.613291810848750, 492618.436065604211763, 492629.258859337598551, 492640.081673010543454, 492650.904506622697227, 492661.727360173594207, 492672.550233662885148, 492683.373127090162598, 492694.196040455135517, 492705.018973757221829, 492715.841926996188704, 492726.664900171454065, 492737.487893282785080, 492748.310906329599675, 492759.133939311781432, 492769.956992228748277, 492780.780065080092754, 492791.603157865523826, 492802.426270584459417, 492813.249403236666694, 492824.072555821679998, 492834.895728339266498, 492845.718920788727701, 492856.542133169888984, 492867.365365482342895, 492878.188617725390941, 492889.011889899149537, 492899.835182002803776, 492910.658494036237244, 492921.481825998751447, 492932.305177890288178, 492943.128549710207153, 492953.951941458159126, 492964.775353133794852, 492975.598784736648668, 492986.422236266604159, 492997.245707722730003, 493008.069199105084408, 493018.892710413143504, 493029.716241646325216, 493040.539792804513127, 493051.363363887125161, 493062.186954893928487, 493073.010565824341029, 493083.834196678071748, 493094.657847454713192, 493105.481518153799698, 493116.305208775098436, 493127.128919318027329, 493137.952649782237131, 493148.776400167378597, 493159.600170473044273, 493170.423960698943119, 493181.247770844376646, 493192.071600909228437, 493202.895450893032830, 493213.719320795440581, 493224.543210615753196, 493235.367120353912469, 493246.191050009510946, 493257.014999581966549, 493267.838969071046449, 493278.662958476168569, 493289.486967797216494, 493300.310997033491731, 493311.135046184761450, 493321.959115250559989, 493332.783204230479896, 493343.607313124346547, 493354.431441931461450, 493365.255590651591774, 493376.079759284271859, 493386.903947829268873, 493397.728156285884324, 493408.552384653943591, 493419.376632933039218, 493430.200901122705545, 493441.025189222593326, 493451.849497232353315, 493462.673825151403435, 493473.498172979510855, 493484.322540716268122, 493495.146928361267783, 493505.971335914044175, 493516.795763374364469, 493527.620210741530173, 493538.444678015424870, 493549.269165195582900, 493560.093672281480394, 493570.918199272942729, 493581.742746169387829, 493592.567312970582861, 493603.391899676062167, 493614.216506285360083, 493625.041132798010949, 493635.865779213840142, 493646.690445532323793, 493657.515131753112655, 493668.339837875741068, 493679.164563899859786, 493689.989309825119562, 493700.814075651054736, 493711.638861377316061, 493722.463667003321461, 493733.288492529012728, 493744.113337953749578, 493754.938203277182765, 493765.763088498963043, 493776.587993618624751, 493787.412918635935057, 493798.237863550311886, 493809.062828361347783, 493819.887813068868127, 493830.712817672174424, 493841.537842171150260, 493852.362886565213557, 493863.187950854015071, 493874.013035037321970, 493884.838139114377555, 493895.663263085123617, 493906.488406948978081, 493917.313570705708116, 493928.138754354848061, 493938.963957895815838, 493949.789181328495033, 493960.614424652245361, 493971.439687866892200, 493982.264970971969888, 493993.090273967012763, 494003.915596851787996, 494014.740939625597093, 494025.566302288323641, 494036.391684839501977, 494047.217087278550025, 494058.042509605409577, 494068.867951819440350, 494079.693413920293096, 494090.518895907618571, 494101.344397781067528, 494112.169919540174305, 494122.995461184356827, 494133.821022713440470, 494144.646604127250612, 494155.472205424855929, 494166.297826606256422, 494177.123467670986429, 494187.949128618580289, 494198.774809448572341, 494209.600510160671547, 494220.426230754586868, 494231.251971229736228, 494242.077731585886795, 494252.903511822456494, 494263.729311939212494, 494274.555131935689133, 494285.380971811537165, 494296.206831566174515, 494307.032711199426558, 494317.858610710885841, 494328.684530099970289, 494339.510469366563484, 494350.336428510083351, 494361.162407530064229, 494371.988406426389702, 494382.814425198303070, 494393.640463845746126, 494404.466522368020378, 494415.292600765009411, 494426.118699036131147, 494436.944817181152757, 494447.770955199492164, 494458.597113090858329, 494469.423290854843799, 494480.249488491099328, 494491.075705999042839, 494501.901943378557917, 494512.728200629178900, 494523.554477750207298, 494534.380774741759524, 494545.207091602904256, 494556.033428333583288, 494566.859784933389165, 494577.686161401856225, 494588.512557738635223, 494599.338973943144083, 494610.165410015149973, 494620.991865954420064, 494631.818341760197654, 494642.644837432308123, 494653.471352970402222, 494664.297888374014292, 494675.124443642678671, 494685.951018776046112, 494696.777613773883786, 494707.604228635434993, 494718.430863360757940, 494729.257517949037720, 494740.084192400157917, 494750.910886713536456, 494761.737600889056921, 494772.564334926020820, 494783.391088824195322, 494794.217862583114766, 494805.044656202371698, 494815.871469681675080, 494826.698303020559251, 494837.525156218674965, 494848.352029275556561, 494859.178922190854792, 494870.005834964103997, 494880.832767595013138, 494891.659720083174761, 494902.486692428239621, 494913.313684629625641, 494924.140696687099990, 494934.967728600313421, 494945.794780368567444, 494956.621851991803851, 494967.448943469615187, 494978.276054801302962, 494989.103185986867175, 494999.930337025492918, 495010.757507917180192, 495021.584698661230505, 495032.411909257527441, 495043.239139705488924, 495054.066390004707500, 495064.893660154892132, 495075.720950155577157, 495086.548260006413329, 495097.375589706934988, 495108.202939256792888, 495119.030308655754197, 495129.857697903062217, 495140.685106998658739, 495151.512535941961687, 495162.339984732738230, 495173.167453370406292, 495183.994941854733042, 495194.822450185252819, 495205.649978361499961, 495216.477526383125223, 495227.305094249837566, 495238.132681961113121, 495248.960289516602643, 495259.787916916073300, 495270.615564158710185, 495281.443231244629715, 495292.270918173133396, 495303.098624943813775, 495313.926351556379814, 495324.754098010482267, 495335.581864305655472, 495346.409650441433769, 495357.237456417584326, 495368.065282233525068, 495378.893127888964955, 495389.720993383612949, 495400.548878716886975, 495411.376783888554201, 495422.204708898032550, 495433.032653745205607, 495443.860618429374881, 495454.688602950307541, 495465.516607307654340, 495476.344631500891410, 495487.172675529727712, 495498.000739393697586, 495508.828823092451785, 495519.656926625641063, 495530.485049992799759, 495541.313193193578627, 495552.141356227453798, 495562.969539094250649, 495573.797741793387104, 495584.625964324630331, 495595.454206687398255, 495606.282468881574459, 495617.110750906344038, 495627.939052761706989, 495638.767374447197653, 495649.595715962175746, 495660.424077306583058, 495671.252458479721099, 495682.080859481473453, 495692.909280311141629, 495703.737720968725625, 495714.566181453526951, 495725.394661765138153, 495736.223161903501023, 495747.051681867800653, 495757.880221657804213, 495768.708781273278873, 495779.537360713642556, 495790.365959978546016, 495801.194579067756422, 495812.023217980458867, 495822.851876716711558, 495833.680555275874212, 495844.509253657713998, 495855.337971861648839, 495866.166709887445904, 495876.995467734639533, 495887.824245402880479, 495898.653042891644873, 495909.481860200758092, 495920.310697329638060, 495931.139554277935531, 495941.968431045301259, 495952.797327631502412, 495963.626244035724085, 495974.455180257966276, 495985.284136297646910, 495996.113112154358532, 496006.942107827926520, 496017.771123317652382, 496028.600158623303287, 496039.429213744413573, 496050.258288680866826, 496061.087383431848139, 496071.916497997182887, 496082.745632376580033, 496093.574786569457501, 496104.403960575466044, 496115.233154394372832, 496126.062368025595788, 496136.891601468669251, 496147.720854723476805, 496158.550127789436374, 496169.379420666140504, 496180.208733353414573, 496191.038065850676503, 496201.867418157460634, 496212.696790273534134, 496223.526182198547758, 496234.355593931803014, 496245.185025473241694, 496256.014476822456345, 496266.843947978864890, 496277.673438942001667, 496288.502949711866677, 496299.332480287761427, 496310.162030669220258, 496320.991600856126752, 496331.821190847898833, 496342.650800644245464, 496353.480430244642776, 496364.310079648857936, 496375.139748856541701, 496385.969437866879161, 496396.799146680103149, 496407.628875295398757, 496418.458623712242115, 496429.288391930807848, 496440.118179950164631, 496450.947987770312466, 496461.777815390552860, 496472.607662810652982, 496483.437530030147173, 496494.267417048686184, 496505.097323865920771, 496515.927250481443480, 496526.757196894730441, 496537.587163105432410, 496548.417149113432970, 496559.247154917917214, 496570.077180518768728, 496580.907225915521849, 496591.737291107943747, 496602.567376095219515, 496613.397480877407361, 496624.227605453867000, 496635.057749824249186, 496645.887913988321088, 496656.718097945267800, 496667.548301695322152, 496678.378525237436406, 496689.208768571668770, 496700.039031697611790, 496710.869314614683390, 496721.699617322534323, 496732.529939820815343, 496743.360282109177206, 496754.190644187037833, 496765.021026054280810, 496775.851427710324060, 496786.681849154876545, 496797.512290387414396, 496808.342751407588366, 496819.173232215282042, 496830.003732809564099, 496840.834253190667368, 496851.664793357660528, 496862.495353310543578, 496873.325933048618026, 496884.156532571592834, 496894.987151879176963, 496905.817790970904753, 496916.648449846426956, 496927.479128505277913, 496938.309826947108377, 496949.140545171569102, 496959.971283178136218, 496970.802040966635104, 496981.632818536483683, 496992.463615887449123, 497003.294433018949348, 497014.125269930751529, 497024.956126622273587, 497035.787003093515523, 497046.617899343662430, 497057.448815372423269, 497068.279751179507002, 497079.110706764564384, 497089.941682127013337, 497100.772677266621031, 497111.603692183038220, 497122.434726875682827, 497133.265781344147399, 497144.096855588373728, 497154.927949607663322, 497165.759063401783351, 497176.590196970268153, 497187.421350312768482, 497198.252523428702261, 497209.083716317953076, 497219.914928979938850, 497230.746161414368544, 497241.577413620951120, 497252.408685598988086, 497263.239977348363027, 497274.071288868610281, 497284.902620159264188, 497295.733971220091917, 497306.565342050511390, 497317.396732650289778, 497328.228143018903211, 497339.059573156060651, 497349.891023061296437, 497360.722492734377738, 497371.553982174722478, 497382.385491381981410, 497393.217020355805289, 497404.048569095844869, 497414.880137601634488, 497425.711725872766692, 497436.543333908834029, 497447.374961709603667, 497458.206609274609946, 497469.038276603387203, 497479.869963695702609, 497490.701670550974086, 497501.533397168910597, 497512.365143548988272, 497523.196909691090696, 497534.028695594635792, 497544.860501259274315, 497555.692326684540603, 497566.524171870201826, 497577.356036815792322, 497588.187921520846430, 497599.019825985073112, 497609.851750207948498, 497620.683694189239759, 497631.515657928597648, 497642.347641425440088, 497653.179644679534249, 497664.011667690298054, 497674.843710457498673, 497685.675772980786860, 497696.507855259638745, 497707.339957293763291, 497718.172079082694836, 497729.004220626084134, 497739.836381923465524, 497750.668562974722590, 497761.500763779040426, 497772.332984336419031, 497783.165224646159913, 497793.997484708088450, 497804.829764521797188, 497815.662064086587634, 497826.494383402576204, 497837.326722469064407, 497848.159081285702996, 497858.991459852026310, 497869.823858167859726, 497880.656276232562959, 497891.488714045903180, 497902.321171607531141, 497913.153648916864768, 497923.986145973787643, 497934.818662777601276, 497945.651199328072835, 497956.483755624853075, 497967.316331667418126, 497978.148927455593366, 497988.981542988796718, 497999.814178266678937, 498010.646833288890775, 498021.479508055082988, 498032.312202564789914, 498043.144916817545891, 498053.977650813118089, 498064.810404551099055, 498075.643178030964918, 498086.475971252482850, 498097.308784215187188, 498108.141616918612272, 498118.974469362641685, 498129.807341546460520, 498140.640233470068779, 498151.473145132767968, 498162.306076534383465, 498173.139027674507815, 498183.971998552791774, 498194.804989168653265, 498205.637999521743041, 498216.471029611944687, 498227.304079438559711, 498238.137149001355283, 498248.970238299749326, 498259.803347333567217, 498270.636476102285087, 498281.469624605670106, 498292.302792843140196, 498303.135980814578943, 498313.969188519287854, 498324.802415956917685, 498335.635663127293810, 498346.468930030008778, 498357.302216664364096, 498368.135523030359764, 498378.968849127180874, 498389.802194954943843, 498400.635560512717348, 498411.468945800617803, 498422.302350817946717, 498433.135775564296637, 498443.969220039609354, 498454.802684242953546, 498465.636168174445629, 498476.469671833503526, 498487.303195219777990, 498498.136738332686946, 498508.970301172113977, 498519.803883737477008, 498530.637486028485000, 498541.471108044730499, 498552.304749785864260, 498563.138411251420621, 498573.972092440933920, 498584.805793354171328, 498595.639513990667183, 498606.473254350188654, 498617.307014432037249, 498628.140794236038346, 498638.974593761900906, 498649.808413008926436, 498660.642251976998523, 498671.476110665651504, 498682.309989074419718, 498693.143887202953920, 498703.977805051021278, 498714.811742617923301, 498725.645699903485365, 498736.479676907416433, 498747.313673629018012, 498758.147690068057273, 498768.981726224184968, 498779.815782097051851, 498790.649857686192263, 498801.483952991140541, 498812.318068011663854, 498823.152202747238334, 498833.986357197689358, 498844.820531362318434, 498855.654725241009146, 498866.488938833179418, 498877.323172138596419, 498888.157425156794488, 498898.991697887307964, 498909.825990329904016, 498920.660302484058775, 498931.494634349481203, 498942.328985925705638, 498953.163357212499250, 498963.997748209163547, 498974.832158915698528, 498985.666589331405703, 498996.501039456052240, 499007.335509289288893, 499018.169998830475379, 499029.004508079553489, 499039.839037035824731, 499050.673585699172691, 499061.508154069131706, 499072.342742145119701, 499083.177349927020259, 499094.011977414251305, 499104.846624606580008, 499115.681291503366083, 499126.515978104551323, 499137.350684409553651, 499148.185410418023821, 499159.020156129612587, 499169.854921543854289, 499180.689706660283264, 499191.524511478783097, 499202.359335998655297, 499213.194180219725240, 499224.029044141585473, 499234.863927763770334, 499245.698831085930578, 499256.533754107600544, 499267.368696828547399, 499278.203659248305485, 499289.038641366525553, 499299.873643182625528, 499310.708664696430787, 499321.543705907533877, 499332.378766815469135, 499343.213847419887315, 499354.048947720439173, 499364.884067716659047, 499375.719207408197690, 499386.554366794589441, 499397.389545875601470, 499408.224744650709908, 499419.059963119623717, 499429.895201281877235, 499440.730459137121215, 499451.565736685006414, 499462.401033925067168, 499473.236350856954232, 499484.071687480318360, 499494.907043794693891, 499505.742419799673371, 499516.577815495082177, 499527.413230880221818, 499538.248665954859462, 499549.084120718645863, 499559.919595171231776, 499570.755089312035125, 499581.590603140939493, 499592.426136657246388, 499603.261689860664774, 499614.097262751020025, 499624.932855327730067, 499635.768467590445653, 499646.604099538817536, 499657.439751172380056, 499668.275422490783967, 499679.111113493680023, 499689.946824180602562, 499700.782554551144131, 499711.618304605130106, 499722.454074341861997, 499733.289863761339802, 499744.125672862748615, 499754.961501646088436, 499765.797350110660773, 499776.633218256116379, 499787.469106082338840, 499798.305013588571455, 499809.140940774756018, 499819.976887640310451, 499830.812854185001925, 499841.648840408248361, 499852.484846309700515, 499863.320871889125556, 499874.156917146057822, 499884.992982079915237, 499895.829066690639593, 499906.665170977590606, 499917.501294940651860, 499928.337438579124864, 499939.173601892776787, 499950.009784881258383, 499960.845987543987576, 499971.682209880847950, 499982.518451891257428, 499993.354713574924972, 500004.190994931443129, 500015.027295960346237, 500025.863616661401466, 500036.699957034143154, 500047.536317078222055, 500058.372696793056093, 500069.209096178528853, 500080.045515234058257, 500090.881953959353268, 500101.718412354006432, 500112.554890417668503, 500123.391388149873819, 500134.227905550273135, 500145.064442618517205, 500155.900999354140367, 500166.737575756909791, 500177.574171826126985, 500188.410787561733741, 500199.247422963322606, 500210.084078030311503, 500220.920752762351185, 500231.757447159092408, 500242.594161220185924, 500253.430894945282489, 500264.267648333916441, 500275.104421385622118, 500285.941214100283105, 500296.778026477200910, 500307.614858516200911, 500318.451710216759238, 500329.288581578526646, 500340.125472601386718, 500350.962383284408133, 500361.799313627707306, 500372.636263630585745, 500383.473233292810619, 500394.310222614032682, 500405.147231593611650, 500415.984260231489316, 500426.821308527083602, 500437.658376480045263, 500448.495464089908637, 500459.332571356557310, 500470.169698279176373, 500481.006844857765827, 500491.844011091860011, 500502.681196980818640, 500513.518402524583507, 500524.355627722572535, 500535.192872574436478, 500546.030137079942506, 500556.867421238392126, 500567.704725049668923, 500578.542048513423651, 500589.379391628957819, 500600.216754396096803, 500611.054136814549565, 500621.891538883617613, 500632.728960603184532, 500643.566401972784661, 500654.403862992068753, 500665.241343660687562, 500676.078843978059012, 500686.916363943833858, 500697.753903557953890, 500708.591462819545995, 500719.429041728610173, 500730.266640284680761, 500741.104258487175684, 500751.941896335862111, 500762.779553830390796, 500773.617230970296077, 500784.454927755112294, 500795.292644184839446, 500806.130380258546211, 500816.968135976057965, 500827.805911337316502, 500838.643706341390498, 500849.481520988279954, 500860.319355277519207, 500871.157209208642598, 500881.995082781300880, 500892.832975995144807, 500903.670888849825133, 500914.508821344701573, 500925.346773479715921, 500936.184745254402515, 500947.022736668179277, 500957.860747720929794, 500968.698778411955573, 500979.536828741140198, 500990.374898708134424, 501001.212988312239759, 501012.051097553397994, 501022.889226430968847, 501033.727374944719486, 501044.565543094300665, 501055.403730879130308, 501066.241938299091998, 501077.080165353487246, 501087.918412042316049, 501098.756678364763502, 501109.594964320713188, 501120.433269909699447, 501131.271595131431241, 501142.109939985501114, 501152.948304471326992, 501163.786688588792458, 501174.625092337199021, 501185.463515716546681, 501196.301958726136945, 501207.140421365853399, 501217.978903634997550, 501228.817405533394776, 501239.655927060637623, 501250.494468216260429, 501261.333029000030365, 501272.171609411365353, 501283.010209450032562, 501293.848829115566332, 501304.687468407617416, 501315.526127325720154, 501326.364805869699921, 501337.203504038916435, 501348.042221833253279, 501358.880959252011962, 501369.719716294959653, 501380.558492961863521, 501391.397289252025075, 501402.236105165444314, 501413.074940701306332, 501423.913795859494712, 501434.752670639660209, 501445.591565041162539, 501456.430479063943494, 501467.269412707304582, 501478.108365971245803, 501488.947338854835834, 501499.786331358307507, 501510.625343480729498, 501521.464375222218223, 501532.303426581958774, 501543.142497559660114, 501553.981588155147620, 501564.820698367839213, 501575.659828197385650, 501586.498977643437684, 501597.338146705762483, 501608.177335383661557, 501619.016543676902074, 501629.855771585134789, 501640.695019107835833, 501651.534286244946998, 501662.373572995653376, 501673.212879360071383, 501684.052205337269697, 501694.891550927131902, 501705.730916129308753, 501716.570300943451002, 501727.409705368860159, 501738.249129405536223, 501749.088573052897118, 501759.928036310535390, 501770.767519178276416, 501781.607021655538119, 501792.446543742087670, 501803.286085437342990, 501814.125646740954835, 501824.965227652690373, 501835.804828172083944, 501846.644448298669886, 501857.484088032157160, 501868.323747372138314, 501879.163426318264101, 501890.003124870185275, 501900.842843027319759, 501911.682580789551139, 501922.522338156180922, 501933.362115127092693, 501944.201911701820791, 501955.041727880015969, 501965.881563661096152, 501976.721419045003131, 501987.561294031096622, 501998.401188619143795, 502009.241102808562573, 502020.081036599236540, 502030.920989990583621, 502041.760962982254568, 502052.600955573900137, 502063.440967765171081, 502074.280999555543531, 502085.121050944842864, 502095.961121932487004, 502106.801212518243119, 502117.641322701645549, 502128.481452482345048, 502139.321601859759539, 502150.161770833889022, 502161.001959404035006, 502171.842167569964658, 502182.682395331328735, 502193.522642687486950, 502204.362909638381097, 502215.203196183429100, 502226.043502322281711, 502236.883828054589685, 502247.724173380003776, 502258.564538297941908, 502269.404922808287665, 502280.245326910458971, 502291.085750604164787, 502301.926193888997659, 502312.766656764608342, 502323.607139230647590, 502334.447641286533326, 502345.288162932149135, 502356.128704166796524, 502366.969264990475494, 502377.809845402487554, 502388.650445402599871, 502399.491064990346786, 502410.331704165437259, 502421.172362927463837, 502432.013041275960859, 502442.853739210579079, 502453.694456730969250, 502464.535193836898543, 502475.375950527668465, 502486.216726803046186, 502497.057522662682459, 502507.898338106169831, 502518.739173133100849, 502529.580027743009850, 502540.420901935780421, 502551.261795710830484, 502562.102709067810792, 502572.943642006255686, 502583.784594525815919, 502594.625566626258660, 502605.466558307234664, 502616.307569567929022, 502627.148600408399943, 502637.989650828123558, 502648.830720826634206, 502659.671810403699055, 502670.512919558736030, 502681.354048291628715, 502692.195196601678617, 502703.036364488885738, 502713.877551952435169, 502724.718758992326912, 502735.559985607862473, 502746.401231798867229, 502757.242497564933728, 502768.083782905596308, 502778.925087820622139, 502789.766412309429143, 502800.607756371784490, 502811.449120007222518, 502822.290503215393983, 502833.131905995833222, 502843.973328348249197, 502854.814770272350870, 502865.656231767556164, 502876.497712833632249, 502887.339213470113464, 502898.180733676766977, 502909.022273452894296, 502919.863832798379008, 502930.705411712639034, 502941.547010195674375, 502952.388628246553708, 502963.230265865335241, 502974.071923051495105, 502984.913599804684054, 502995.755296124320012, 503006.597012010286562, 503017.438747462001629, 503028.280502479232382, 503039.122277061513159, 503049.964071208494715, 503060.805884919711389, 503071.647718194930349, 503082.489571033627726, 503093.331443435512483, 503104.173335400235374, 503115.015246927214321, 503125.857178016332909, 503136.699128667009063, 503147.541098878893536, 503158.383088651753496, 503169.225097985006869, 503180.067126878246199, 503190.909175331296865, 503201.751243343693204, 503212.593330915085971, 503223.435438044893090, 503234.277564732998144, 503245.119710978819057, 503255.961876782122999, 503266.804062142444309, 503277.646267059550155, 503288.488491532742046, 503299.330735561845358, 503310.172999146452639, 503321.015282286214642, 503331.857584980782121, 503342.699907229456585, 503353.542249032354448, 503364.384610388777219, 503375.226991298375651, 503386.069391760800499, 503396.911811775702517, 503407.754251342732459, 503418.596710461250041, 503429.439189131313469, 503440.281687352107838, 503451.124205123516731, 503461.966742444958072, 503472.809299316315446, 503483.651875737006776, 503494.494471706682816, 503505.337087224994320, 503516.179722291592043, 503527.022376905893907, 503537.865051067841705, 503548.707744776795153, 503559.550458032521419, 503570.393190834554844, 503581.235943182546180, 503592.078715076029766, 503602.921506514772773, 503613.764317498309538, 503624.607148026290815, 503635.449998098250944, 503646.292867713840678, 503657.135756872768980, 503667.978665574511979, 503678.821593818836845, 503689.664541605277918, 503700.507508933485951, 503711.350495802995283, 503722.193502213573083, 503733.036528164753690, 503743.879573656071443, 503754.722638687293511, 503765.565723257837817, 503776.408827367529739, 503787.251951016078237, 503798.095094202668406, 503808.938256927300245, 503819.781439189508092, 503830.624640988942701, 503841.467862325021997, 503852.311103197629564, 503863.154363606183324, 503873.997643550275825, 503884.840943029732443, 503895.684262044087518, 503906.527600592875388, 503917.370958675746806, 503928.214336292468943, 503939.057733442459721, 503949.901150125486311, 503960.744586341083050, 503971.588042088784277, 503982.431517368357163, 503993.275012179394253, 504004.118526521488093, 504014.962060394289438, 504025.805613797332626, 504036.649186730268411, 504047.492779192863964, 504058.336391184420791, 504069.180022704938892, 504080.023673753719777, 504090.867344330647029, 504101.711034435022157, 504112.554744066786952, 504123.398473225301132, 504134.242221910331864, 504145.085990121529903, 504155.929777858313173, 504166.773585120565258, 504177.617411907704081, 504188.461258219496813, 504199.305124055361375, 504210.149009415181354, 504220.992914298374671, 504231.836838704533875, 504242.680782633484341, 504253.524746084760409, 504264.368729057780001, 504275.212731552426703, 504286.056753568234853, 504296.900795104738791, 504307.744856161705684, 504318.588936738669872, 504329.433036835165694, 504340.277156450960319, 504351.121295585646294, 504361.965454238699749, 504372.809632410004269, 504383.653830098977778, 504394.498047305271029, 504405.342284028534777, 504416.186540268303361, 504427.030816024343949, 504437.875111296074465, 504448.719426083494909, 504459.563760385673959, 504470.408114202669822, 504481.252487533958629, 504492.096880379074719, 504502.941292737901676, 504513.785724609624594, 504524.630175994243473, 504535.474646891292650, 504546.319137300306465, 504557.163647220935673, 504568.008176652831025, 504578.852725595526863, 504589.697294048732147, 504600.541882012155838, 504611.386489485099446, 504622.231116467562970, 504633.075762958847918, 504643.920428958721459, 504654.765114466834348, 504665.609819482837338, 504676.454544006148353, 504687.299288036534563, 504698.144051573646720, 504708.988834617077373, 504719.833637166419066, 504730.678459221206140, 504741.523300781205762, 504752.368161846068688, 504763.213042415212840, 504774.057942488405388, 504784.902862065297086, 504795.747801145305857, 504806.592759728198871, 504817.437737813743297, 504828.282735401182435, 504839.127752490458079, 504849.972789081104565, 504860.817845172656234, 504871.662920764880255, 504882.508015857310966, 504893.353130449482705, 504904.198264541162644, 504915.043418131885119, 504925.888591221417300, 504936.733783809060697, 504947.578995894815307, 504958.424227477982640, 504969.269478558271658, 504980.114749135507736, 504990.960039209108800, 505001.805348778725602, 505012.650677844008896, 505023.496026404493023, 505034.341394459945150, 505045.186782009899616, 505056.032189053890761, 505066.877615591685753, 505077.723061622818932, 505088.568527146882843, 505099.414012163702864, 505110.259516672580503, 505121.105040673515759, 505131.950584165810142, 505142.796147149230819, 505153.641729623195715, 505164.487331587704830, 505175.332953042059671, 505186.178593986027408, 505197.024254419142380, 505207.869934340997133, 505218.715633751417045, 505229.561352649820037, 505240.407091035856865, 505251.252848909294698, 505262.098626269551460, 505272.944423116394319, 505283.790239449357614, 505294.636075268092100, 505305.481930572132114, 505316.327805361244828, 505327.173699635022786, 505338.019613393174950, 505348.865546635002829, 505359.711499360390007, 505370.557471568870824, 505381.403463260096032, 505392.249474433716387, 505403.095505089266226, 505413.941555226396304, 505424.787624844757374, 505435.633713943883777, 505446.479822523600888, 505457.325950583268423, 505468.172098122769967, 505479.018265141523443, 505489.864451639179606, 505500.710657615389209, 505511.556883069803007, 505522.403128002188168, 505533.249392411729787, 505544.095676298427861, 505554.941979661700316, 505565.788302501430735, 505576.634644816920627, 505587.481006607995369, 505598.327387874131091, 505609.173788615211379, 505620.020208830537740, 505630.866648519877344, 505641.713107682880946, 505652.559586319082882, 505663.406084428250324, 505674.252602009801194, 505685.099139063619077, 505695.945695589005481, 505706.792271585785784, 505717.638867053552531, 505728.485481991840061, 505739.332116400531959, 505750.178770278929733, 505761.025443626800552, 505771.872136443678755, 505782.718848729447927, 505793.565580483409576, 505804.412331705214456, 505815.259102394746151, 505826.105892551364377, 505836.952702174894512, 505847.799531264754478, 505858.646379820595030, 505869.493247842299752, 505880.340135329170153, 505891.187042280856986, 505902.033968697243836, 505912.880914577748626, 505923.727879922138527, 505934.574864729715046, 505945.421869000361767, 505956.268892733613029, 505967.115935929177795, 505977.962998586648609, 505988.810080705559812, 505999.657182285678573, 506010.504303326422814, 506021.351443827676121, 506032.198603788740002, 506043.045783209498040, 506053.892982089484576, 506064.740200428350363, 506075.587438225629739, 506086.434695481031667, 506097.281972194148693, 506108.129268364631571, 506118.976583992014639, 506129.823919075948652, 506140.671273616200779, 506151.518647612188943, 506162.366041063563898, 506173.213453970092814, 506184.060886331310030, 506194.908338146866299, 506205.755809416179545, 506216.603300139249768, 506227.450810315320268, 506238.298339944332838, 506249.145889025705401, 506259.993457559088711, 506270.841045544017106, 506281.688652980490588, 506292.536279867694248, 506303.383926205395255, 506314.231591993244365, 506325.079277231008746, 506335.926981917989906, 506346.774706054013222, 506357.622449638787657, 506368.470212671731133, 506379.317995152494404, 506390.165797080844641, 506401.013618456316181, 506411.861459278443363, 506422.709319546993356, 506433.557199261500500, 506444.405098421615548, 506455.253017026989255, 506466.100955077155959, 506476.948912571882829, 506487.796889510645997, 506498.644885893154424, 506509.492901718942448, 506520.340936987777241, 506531.188991699076723, 506542.037065852724481, 506552.885159448022023, 506563.733272484852932, 506574.581404962751549, 506585.429556881368626, 506596.277728240238503, 506607.125919039070141, 506617.974129277572501, 506628.822358955163509, 506639.670608071493916, 506650.518876626330893, 506661.367164619208779, 506672.215472049661912, 506683.063798917457461, 506693.912145222246181, 506704.760510963562410, 506715.608896140940487, 506726.457300754147582, 506737.305724802718032, 506748.154168286360800, 506759.002631204668432, 506769.851113557175267, 506780.699615343532059, 506791.548136563505977, 506802.396677216631360, 506813.245237302442547, 506824.093816820706706, 506834.942415770958178, 506845.791034152731299, 506856.639671965793241, 506867.488329209794756, 506878.337005884270184, 506889.185701988812070, 506900.034417523129378, 506910.883152486756444, 506921.731906879460439, 506932.580680700659286, 506943.429473950236570, 506954.278286627493799, 506965.127118732314557, 506975.975970264233183, 506986.824841222784016, 506997.673731607734226, 507008.522641418676358, 507019.371570655202959, 507030.220519316848367, 507041.069487403496169, 507051.918474914447870, 507062.767481849470641, 507073.616508208215237, 507084.465553990332410, 507095.314619195356499, 507106.163703823054675, 507117.012807872844860, 507127.861931344377808, 507138.711074237420689, 507149.560236551566049, 507160.409418286290020, 507171.258619441359770, 507182.107840016426053, 507192.957080010906793, 507203.806339424685575, 507214.655618257180322, 507225.504916508158203, 507236.354234177153558, 507247.203571263817139, 507258.052927767683286, 507268.902303688635584, 507279.751699025975540, 507290.601113779528532, 507301.450547948770691, 507312.300001533469185, 507323.149474533274770, 507333.998966947721783, 507344.848478776460979, 507355.698010018910281, 507366.547560675069690, 507377.397130744124297, 507388.246720226190519, 507399.096329120569862, 507409.945957426913083, 507420.795605144870933, 507431.645272274152376, 507442.494958814349957, 507453.344664764998015, 507464.194390125747304, 507475.044134896248579, 507485.893899076269008, 507496.743682665110100, 507507.593485662655439, 507518.443308068322949, 507529.293149881996214, 507540.143011103093158, 507550.992891731322743, 507561.842791766277514, 507572.692711207608227, 507583.542650054965634, 507594.392608307767659, 507605.242585966014303, 507616.092583028890658, 507626.942599496513139, 507637.792635367950425, 507648.642690643318929, 507659.492765321920160, 507670.342859403521288, 507681.192972887773067, 507692.043105774151627, 507702.893258062482346, 507713.743429752183147, 507724.593620843021199, 507735.443831334530842, 507746.294061226479243, 507757.144310518167913, 507767.994579209713265, 507778.844867300300393, 507789.695174789696466, 507800.545501677552238, 507811.395847963634878, 507822.246213647245895, 507833.096598728210665, 507843.947003206238151, 507854.797427080746274, 507865.647870351502206, 507876.498333018040285, 507887.348815080011263, 507898.199316537065897, 507909.049837388854939, 507919.900377634796314, 507930.750937274890020, 507941.601516308437567, 507952.452114735206123, 507963.302732554730028, 507974.153369766718242, 507985.004026370763313, 507995.854702366515994, 508006.705397753627039, 508017.556112531514373, 508028.406846700177994, 508039.257600258802995, 508050.108373207272962, 508060.959165545238648, 508071.809977272234391, 508082.660808387910947, 508093.511658891919069, 508104.362528783793095, 508115.213418063125573, 508126.064326729858294, 508136.915254783176351, 508147.766202222963329, 508158.617169048869982, 508169.468155260430649, 508180.319160857296083, 508191.170185839000624, 508202.021230205195025, 508212.872293955762871, 508223.723377090005670, 508234.574479607574176, 508245.425601508235559, 508256.276742791698780, 508267.127903457207140, 508277.979083504760638, 508288.830282933893614, 508299.681501744140405, 508310.532739935268182, 508321.383997506578453, 508332.235274458071217, 508343.086570789164398, 508353.937886499741580, 508364.789221588987857, 508375.640576056786813, 508386.491949902789202, 508397.343343126529362, 508408.194755727774464, 508419.046187706000637, 508429.897639060800429, 508440.749109791941009, 508451.600599899073131, 508462.452109381498303, 508473.303638239332940, 508484.155186471762136, 508495.006754078785889, 508505.858341059705708, 508516.709947414172348, 508527.561573142069392, 508538.413218242814764, 508549.264882716059219, 508560.116566561511718, 508570.968269778648391, 508581.819992367352825, 508592.671734326926526, 508603.523495657136664, 508614.375276357750408, 508625.227076428069267, 508636.078895868093241, 508646.930734677123837, 508657.782592855044641, 508668.634470401273575, 508679.486367315694224, 508690.338283597608097, 508701.190219246724155, 508712.042174262867775, 508722.894148645456880, 508733.746142394375056, 508744.598155508807395, 508755.450187988753896, 508766.302239833748899, 508777.154311043326743, 508788.006401617254596, 508798.858511554950383, 508809.710640856297687, 508820.562789520830847, 508831.414957547967788, 508842.267144937533885, 508853.119351689121686, 508863.971577802381944, 508874.823823277081829, 508885.676088112406433, 508896.528372308472171, 508907.380675864464138, 508918.232998780382331, 508929.085341055761091, 508939.937702690018341, 508950.790083683037665, 508961.642484034236986, 508972.494903743267059, 508983.347342810011469, 508994.199801233771723, 509005.052279014256783, 509015.904776151292026, 509026.757292644295376, 509037.609828492917586, 509048.462383696809411, 509059.314958255738020, 509070.167552169004921, 509081.020165436610114, 509091.872798057855107, 509102.725450032507069, 509113.578121360216755, 509124.430812040634919, 509135.283522073179483, 509146.136251457792241, 509156.989000193832908, 509167.841768281068653, 509178.694555719150230, 509189.547362507611979, 509200.400188645988237, 509211.253034134162590, 509222.105898971552961, 509232.958783157810103, 509243.811686692701187, 509254.664609575644135, 509265.517551806522533, 509276.370513384637889, 509287.223494309815578, 509298.076494581880979, 509308.929514200019184, 509319.782553164113779, 509330.635611473699100, 509341.488689128542319, 509352.341786128177773, 509363.194902472139802, 509374.048038160195574, 509384.901193191995844, 509395.754367566958535, 509406.607561284967232, 509417.460774345439859, 509428.314006748143584, 509439.167258492612746, 509450.020529578439891, 509460.873820005450398, 509471.727129773062188, 509482.580458880926017, 509493.433807328809053, 509504.287175116245635, 509515.140562242770102, 509525.993968708266038, 509536.847394512034953, 509547.700839653844014, 509558.554304133460391, 509569.407787950302009, 509580.261291104136035, 509591.114813594438601, 509601.968355421151500, 509612.821916583459824, 509623.675497081247158, 509634.529096914164256, 509645.382716081745457, 509656.236354583641514, 509667.090012419503182, 509677.943689588864800, 509688.797386091493536, 509699.651101927040145, 509710.504837094922550, 509721.358591594791505, 509732.212365426414181, 509743.066158589441329, 509753.919971083349083, 509764.773802907962818, 509775.627654062700458, 509786.481524547329172, 509797.335414361266885, 509808.189323504513595, 509819.043251976254396, 509829.897199776489288, 509840.751166904636193, 509851.605153360345867, 509862.459159143269062, 509873.313184253172949, 509884.167228689359035, 509895.021292451827321, 509905.875375539879315, 509916.729477953340393, 509927.583599691803101, 509938.437740754801780, 509949.291901142103598, 509960.146080853242893, 509971.000279887870420, 509981.854498245520517, 509992.708735925960355, 510003.562992928840686, 510014.417269253695849, 510025.271564900060184, 510036.125879867700860, 510046.980214156268630, 510057.834567765414249, 510068.688940694555640, 510079.543332943518180, 510090.397744511778001, 510101.252175399102271, 510112.106625605025329, 510122.961095129197929, 510133.815583971270826, 510144.670092130894773, 510155.524619607720524, 510166.379166401166003, 510177.233732511114795, 510188.088317936868407, 510198.942922678543255, 510209.797546735324431, 510220.652190107037313, 510231.506852793390863, 510242.361534793803003, 510253.216236107924487, 510264.070956735638902, 510274.925696676247753, 510285.780455929518212, 510296.635234495101031, 510307.490032372646965, 510318.344849561690353, 510329.199686061881948, 510340.054541872988921, 510350.909416994429193, 510361.764311425853521, 510372.619225167029072, 510383.474158217548393, 510394.329110577004030, 510405.184082244930323, 510416.039073221094441, 510426.894083505030721, 510437.749113096506335, 510448.604161995055620, 510459.459230200212914, 510470.314317711628973, 510481.169424529187381, 510492.024550652189646, 510502.879696080519352, 510513.734860813478008, 510524.590044851182029, 510535.445248192700092, 510546.300470838090405, 510557.155712786712684, 510568.010974038334098, 510578.866254592721816, 510589.721554449060932, 510600.576873607467860, 510611.432212067244109, 510622.287569828273263, 510633.142946889740415, 510643.998343251878396, 510654.853758913872298, 510665.709193875489291, 510676.564648136380129, 510687.420121696079150, 510698.275614554237109, 510709.131126710562967, 510719.986658164765686, 510730.842208916263189, 510741.697778964706231, 510752.553368309978396, 510763.408976951381192, 510774.264604888565373, 510785.120252121530939, 510795.975918649462983, 510806.831604472245090, 510817.687309589295182, 510828.543034000496846, 510839.398777705268003, 510850.254540703608654, 510861.110322994471062, 510871.966124578029849, 510882.821945453877561, 510893.677785621432122, 510904.533645080344286, 510915.389523830381222, 510926.245421871193685, 510937.101339202199597, 510947.957275823166128, 510958.813231733627617, 510969.669206933351234, 510980.525201421987731, 510991.381215198955033, 511002.237248264020309, 511013.093300616834313, 511023.949372256931383, 511034.805463184020482, 511045.661573397577740, 511056.517702897486743, 511067.373851683165412, 511078.230019754380919, 511089.086207110784017, 511099.942413751792628, 511110.798639677057508, 511121.654884886462241, 511132.511149379541166, 511143.367433155595791, 511154.223736214742530, 511165.080058556399308, 511175.936400180100463, 511186.792761085613165, 511197.649141272471752, 511208.505540740326978, 511219.361959488771390, 511230.218397517513949, 511241.074854826205410, 511251.931331414380111, 511262.787827281688806, 511273.644342427898664, 511284.500876852427609, 511295.357430555042811, 511306.214003535278607, 511317.070595792785753, 511327.927207327215001, 511338.783838138217106, 511349.640488225442823, 511360.497157588426489, 511371.353846226818860, 511382.210554140328895, 511393.067281328549143, 511403.924027791013941, 511414.780793527490459, 511425.637578537513036, 511436.494382820848841, 511447.351206376915798, 511458.208049205364659, 511469.064911306079011, 511479.921792678360362, 511490.778693322208710, 511501.635613236809149, 511512.492552422161680, 511523.349510877684224, 511534.206488603143953, 511545.063485597900581, 511555.920501862012316, 511566.777537394664250, 511577.634592195856385, 511588.491666265006643, 511599.348759601765778, 511610.205872205784544, 511621.063004076830111, 511631.920155214320403, 511642.777325617906172, 511653.634515287238173, 511664.491724222083576, 511675.348952421976719, 511686.206199886568356, 511697.063466615392826, 511707.920752608100884, 511718.778057864459697, 511729.635382383945398, 511740.492726166150533, 511751.350089210842270, 511762.207471517671365, 511773.064873086172156, 511783.922293916111812, 511794.779734006908257, 511805.637193358212244, 511816.494671969790943, 511827.352169841295108, 511838.209686972142663, 511849.067223362217192, 511859.924779010936618, 511870.782353918068111, 511881.639948083146010, 511892.497561505879276, 511903.355194185744040, 511914.212846122623887, 511925.070517315936740, 511935.928207765449770, 511946.785917470813729, 511957.643646431330126, 511968.501394646998961, 511979.359162117354572, 511990.216948841931298, 512001.074754820379894, 512011.932580052467529, 512022.790424537612125, 512033.648288275697269, 512044.506171266140882, 512055.364073508710135, 512066.221995002822950, 512077.079935748304706, 512087.937895744864363, 512098.795874991803430, 512109.653873489121906, 512120.511891236121301, 512131.369928232685197, 512142.227984478231519, 512153.086059972643852, 512163.944154715223704, 512174.802268705971073, 512185.660401944303885, 512196.518554429872893, 512207.376726162096020, 512218.234917141089682, 512229.093127366155386, 512239.951356836943887, 512250.809605553105939, 512261.667873514234088, 512272.526160720153712, 512283.384467170166317, 512294.242792864271905, 512305.101137801771984, 512315.959501982550137, 512326.817885406024288, 512337.676288071961608, 512348.534709980012849, 512359.393151129712351, 512370.251611520710867, 512381.110091152659152, 512391.968590025207959, 512402.827108137891628, 512413.685645490477327, 512424.544202082441188, 512435.402777913608588, 512446.261372983397450, 512457.119987291574944, 512467.978620837791823, 512478.837273621582426, 512489.695945642597508, 512500.554636900604237, 512511.413347394904122, 512522.272077125497162, 512533.130826091801282, 512543.989594293583650, 512554.848381730262190, 512565.707188401604071, 512576.566014307260048, 512587.424859446880873, 512598.283723820000887, 512609.142607426212635, 512620.001510265341494, 512630.860432336805388, 512641.719373640487902, 512652.578334175690543, 512663.437313942296896, 512674.296312939957716, 512685.155331168090925, 512696.014368626347277, 512706.873425314610358, 512717.732501232298091, 512728.591596379177645, 512739.450710754666943, 512750.309844358533155, 512761.168997190427035, 512772.028169249882922, 512782.887360536667984, 512793.746571050258353, 512804.605800790479407, 512815.465049756865483, 512826.324317948950920, 512837.183605366386473, 512848.042912008939311, 512858.902237876143772, 512869.761582967650611, 512880.620947283110581, 512891.480330822174437, 512902.339733584376518, 512913.199155569367576, 512924.058596776798368, 512934.918057206436060, 512945.777536857582163, 512956.637035730236676, 512967.496553823817521, 512978.356091137917247, 512989.215647672477644, 513000.075223426683806, 513010.934818400535733, 513021.794432593334932, 513032.654066005081404, 513043.513718635076657, 513054.373390483204275, 513065.233081548882183, 513076.092791831877548, 513086.952521331724711, 513097.812270048307255, 513108.672037980926689, 513119.531825129350182, 513130.391631493228488, 513141.251457072212361, 513152.111301865719724, 513162.971165873750579, 513173.831049095606431, 513184.690951531112660, 513195.550873179861810, 513206.410814041388221, 513217.270774115459062, 513228.130753401492257, 513238.990751899487805, 513249.850769608747214, 513260.710806529037654, 513271.570862659893464, 513282.430938001081813, 513293.291032552137040, 513304.151146312709898, 513315.011279282567557, 513325.871431461127941, 513336.731602848041803, 513347.591793443076313, 513358.452003245765809, 513369.312232255702838, 513380.172480472712778, 513391.032747896329965, 513401.893034525972325, 513412.753340361639857, 513423.613665402750485, 513434.474009648838546, 513445.334373099787626, 513456.194755754899234, 513467.055157614289783, 513477.915578677027952, 513488.776018943230156, 513499.636478412314318, 513510.496957083814777, 513521.357454957498703, 513532.217972033016849, 513543.078508309787139, 513553.939063787634950, 513564.799638466269244, 513575.660232345224358, 513586.520845424151048, 513597.381477702467237, 513608.242129180172924, 513619.102799856569618, 513629.963489731540903, 513640.824198804504704, 513651.684927075228188, 513662.545674543362111, 513673.406441208440810, 513684.267227070115041, 513695.128032128151972, 513705.988856381969526, 513716.849699831451289, 513727.710562475782353, 513738.571444315195549, 513749.432345348759554, 513760.293265576532576, 513771.154204997990746, 513782.015163612668402, 513792.876141420332715, 513803.737138420518022, 513814.598154612991493, 513825.459189997171052, 513836.320244573056698, 513847.181318339833524, 513858.042411297385115, 513868.903523445245810, 513879.764654783182777, 513890.625805310730357, 513901.486975027539302, 513912.348163933027536, 513923.209372027311474, 513934.070599309576210, 513944.931845779705327, 513955.793111437233165, 513966.654396281752270, 513977.515700313088018, 513988.377023530541919, 513999.238365934113972, 514010.099727523105685, 514020.961108297400642, 514031.822508256416768, 514042.683927400037646, 514053.545365727681201, 514064.406823239114601, 514075.268299933872186, 514086.129795811604708, 514096.991310871962924, 514107.852845114714000, 514118.714398539275862, 514129.575971145299263, 514140.437562932551373, 514151.299173900508322, 514162.160804048995487, 514173.022453377430793, 514183.884121885581408, 514194.745809573098086, 514205.607516439515166, 514216.469242484483402, 514227.330987707769964, 514238.192752108792774, 514249.054535687435418, 514259.916338443115819, 514270.778160375601146, 514281.640001484309323, 514292.501861769123934, 514303.363741229579318, 514314.225639865209814, 514325.087557675782591, 514335.949494660948403, 514346.811450820241589, 514357.673426153371111, 514368.535420659929514, 514379.397434339567553, 514390.259467191819567, 514401.121519216452725, 514411.983590413001366, 514422.845680781232659, 514433.707790320680942, 514444.569919030880556, 514455.432066911715083, 514466.294233962602448, 514477.156420183309820, 514488.018625573371537, 514498.880850132438354, 514509.743093860161025, 514520.605356756190304, 514531.467638820060529, 514542.329940051655285, 514553.192260450276081, 514564.054600015748292, 514574.916958747664467, 514585.779336645675357, 514596.641733709548134, 514607.504149938584305, 514618.366585332667455, 514629.229039891331922, 514640.091513614344876, 514650.954006501124240, 514661.816518551437184, 514672.679049764934462, 514683.541600141150411, 514694.404169679852203, 514705.266758380574174, 514716.129366242967080, 514726.991993266681675, 514737.854639451252297, 514748.717304796446115, 514759.579989301913884, 514770.442692967189942, 514781.305415791925043, 514792.168157775711734, 514803.030918918375392, 514813.893699219217524, 514824.756498678238131, 514835.619317294855136, 514846.482155068719294, 514857.345011999481358, 514868.207888086792082, 514879.070783330302220, 514889.933697729662526, 514900.796631284290925, 514911.659583994187415, 514922.522555858537089, 514933.385546877456363, 514944.248557050246745, 514955.111586376558989, 514965.974634856276680, 514976.837702488817740, 514987.700789273716509, 514998.563895210798364, 515009.427020299888682, 515020.290164540172555, 515031.153327931533568, 515042.016510473506059, 515052.879712165857200, 515063.742933008121327, 515074.606172999949194, 515085.469432140991557, 515096.332710430782754, 515107.196007869089954, 515118.059324455563910, 515128.922660189738963, 515139.786015071265865, 515150.649389099795371, 515161.512782274861820, 515172.376194596348796, 515183.239626063674223, 515194.103076676605269, 515204.966546434559859, 515215.830035337421577, 515226.693543384666555, 515237.557070576003753, 515248.420616910967510, 515259.284182389441412, 515270.147767010726966, 515281.011370774707757, 515291.874993680918124, 515302.738635729008820, 515313.602296918514185, 515324.465977249201387, 515335.329676720721181, 515346.193395332607906, 515357.057133084512316, 515367.920889976085164, 515378.784666006977204, 515389.648461176839191, 515400.512275485205464, 515411.376108931726776, 515422.239961516286712, 515433.103833238128573, 515443.967724097194150, 515454.831634092901368, 515465.695563225133810, 515476.559511493309401, 515487.423478897078894, 515498.287465436093044, 515509.151471110119019, 515520.015495918691158, 515530.879539861460216, 515541.743602937844116, 515552.607685147842858, 515563.471786490874365, 515574.335906966705807, 515585.200046574755106, 515596.064205314905848, 515606.928383186575957, 515617.792580189532600, 515628.656796323426533, 515639.521031587675679, 515650.385285982280038, 515661.249559506482910, 515672.113852160226088, 515682.978163943043910, 515693.842494854470715, 515704.706844894157257, 515715.571214061987121, 515726.435602357261814, 515737.300009779864922, 515748.164436329214368, 515759.028882005193736, 515769.893346807220951, 515780.757830735063180, 515791.622333788138349, 515802.486855966446456, 515813.351397269289009, 515824.215957696549594, 515835.080537247646134, 515845.945135922345798, 515856.809753720182925, 515867.674390640924685, 515878.539046684105415, 515889.403721849434078, 515900.268416136386804, 515911.133129544847179, 515921.997862074233126, 515932.862613724195398, 515943.727384494617581, 515954.592174384801183, 515965.456983394629788, 515976.321811523637734, 515987.186658771359362, 515998.051525137561839, 516008.916410621895920, 516019.781315223895945, 516030.646238943329081, 516041.511181779729668, 516052.376143732748460, 516063.241124801919796, 516074.106124987010844, 516084.971144287672359, 516095.836182703555096, 516106.701240234076977, 516117.566316879179794, 516128.431412638223264, 516139.296527511090972, 516150.161661497200839, 516161.026814596203621, 516171.891986807982903, 516182.757178131956607, 516193.622388567775488, 516204.487618115090299, 516215.352866773551796, 516226.218134542694315, 516237.083421422401443, 516247.948727412091102, 516258.814052511414047, 516269.679396720021032, 516280.544760037795641, 516291.410142463922966, 516302.275543998403009, 516313.140964640653692, 516324.006404390442185, 516334.871863247302826, 516345.737341211002786, 516356.602838281076401, 516367.468354457116220, 516378.333889738947619, 516389.199444125988521, 516400.065017618006095, 516410.930610214418266, 516421.796221915225033, 516432.661852719844319, 516443.527502627810463, 516454.393171639007051, 516465.258859752968419, 516476.124566969228908, 516486.990293287672102, 516497.856038707483094, 516508.721803228778299, 516519.587586850975640, 516530.453389573725872, 516541.319211396563333, 516552.185052319371607, 516563.050912341568619, 516573.916791462921537, 516584.782689682848286, 516595.648607001348864, 516606.514543417608365, 516617.380498931684997, 516628.246473542938475, 516639.112467251135968, 516649.978480055928230, 516660.844511956849601, 516671.710562953550834, 516682.576633045799099, 516693.442722233128734, 516704.308830514957663, 516715.174957891402300, 516726.041104361647740, 516736.907269925693981, 516747.773454582958948, 516758.639658333093394, 516769.505881175631657, 516780.372123110573739, 516791.238384137104731, 516802.104664255224634, 516812.970963464351371, 516823.837281764252111, 516834.703619154344779, 516845.569975634454750, 516856.436351204290986, 516867.302745863387827, 516878.169159611279611, 516889.035592447733507, 516899.902044372283854, 516910.768515384697821, 516921.635005484626163, 516932.501514671486802, 516943.368042945046909, 516954.234590304957237, 516965.101156750984956, 516975.967742282431573, 516986.834346899180673, 516997.700970600766595, 517008.567613387072925, 517019.434275257284753, 517030.300956211402081, 517041.167656248959247, 517052.034375369490590, 517062.901113572763279, 517073.767870858428068, 517084.634647226019297, 517095.501442675187718, 517106.368257205584086, 517117.235090816800948, 517128.101943508547265, 517138.968815280473791, 517149.835706132347696, 517160.702616063470487, 517171.569545073609333, 517182.436493162531406, 517193.303460329771042, 517204.170446574862581, 517215.037451897689607, 517225.904476297670044, 517236.771519774571061, 517247.638582327926997, 517258.505663957505021, 517269.372764662839472, 517280.239884443464689, 517291.107023299264256, 517301.974181229772512, 517312.841358234523796, 517323.708554313285276, 517334.575769465591293, 517345.443003691209015, 517356.310256989556365, 517367.177529360458720, 517378.044820803625043, 517388.912131318473257, 517399.779460904770531, 517410.646809562051203, 517421.514177289966028, 517432.381564088282175, 517443.248969956650399, 517454.116394894488622, 517464.983838901680429, 517475.851301977527328, 517486.718784122029319, 517497.586285334720742, 517508.453805615135934, 517519.321344962925650, 517530.188903377740644, 517541.056480859348085, 517551.924077407165896, 517562.791693020961247, 517573.659327700501308, 517584.526981445087586, 517595.394654254603665, 517606.262346128700301, 517617.130057066795416, 517627.997787068772595, 517638.865536133991554, 517649.733304262510501, 517660.601091453514528, 517671.468897707003634, 517682.336723022395745, 517693.204567399458028, 517704.072430837491993, 517714.940313336730469, 517725.808214896242134, 517736.676135516026989, 517747.544075195502955, 517758.412033934553619, 517769.280011732480489, 517780.148008589167148, 517791.016024504147936, 517801.884059477190021, 517812.752113507594913, 517823.620186595479026, 517834.488278740260284, 517845.356389941473026, 517856.224520198768005, 517867.092669511912391, 517877.960837880440522, 517888.829025304003153, 517899.697231782367453, 517910.565457315009553, 517921.433701901638415, 517932.301965541788377, 517943.170248235343024, 517954.038549981603865, 517964.906870780454483, 517975.775210631545633, 517986.643569534411654, 517997.511947488586884, 518008.380344493954908, 518019.248760549933650, 518030.117195656290278, 518040.985649812675547, 518051.854123018623795, 518062.722615273785777, 518073.591126577812247, 518084.459656930470373, 518095.328206331294496, 518106.196774779818952, 518117.065362275927328, 518127.933968819037545, 518138.802594408800360, 518149.671239044866525, 518160.539902727119625, 518171.408585454861168, 518182.277287227916531, 518193.146008045761846, 518204.014747908280697, 518214.883506814891007, 518225.752284765359946, 518236.621081759221852, 518247.489897796127480, 518258.358732875843998, 518269.227586997905746, 518280.096460161963478, 518290.965352367667947, 518301.834263614669908, 518312.703193902503699, 518323.572143230936490, 518334.441111599502619, 518345.310099007969256, 518356.179105455754325, 518367.048130942857824, 518377.917175468581263, 518388.786239032575395, 518399.655321634723805, 518410.524423274444416, 518421.393543951504398, 518432.262683665438090, 518443.131842415896244, 518454.001020202646032, 518464.870217025221791, 518475.739432883216068, 518486.608667776337825, 518497.477921704121400, 518508.347194666450378, 518519.216486662742682, 518530.085797692649066, 518540.955127755936701, 518551.824476852023508, 518562.693844980793074, 518573.563232141779736, 518584.432638334517833, 518595.302063558890950, 518606.171507814317010, 518617.040971100446768, 518627.910453417047393, 518638.779954763769638, 518649.649475140031427, 518660.519014545599930, 518671.388572980242316, 518682.258150443376508, 518693.127746934769675, 518703.997362454072572, 518714.866997000819538, 518725.736650574777741, 518736.606323175365105, 518747.476014802465215, 518758.345725455612410, 518769.215455134515651, 518780.085203838767484, 518790.954971567902248, 518801.824758321570698, 518812.694564099540003, 518823.564388901577331, 518834.434232726867776, 518845.304095575527754, 518856.173977446858771, 518867.043878340744413, 518877.913798256602604, 518888.783737194200512, 518899.653695153072476, 518910.523672133102082, 518921.393668133590836, 518932.263683154538739, 518943.133717195247300, 518954.003770255483687, 518964.873842335015070, 518975.743933433259372, 518986.614043549983762, 518997.484172684838995, 519008.354320837475825, 519019.224488007428590, 519030.094674194348045, 519040.964879398001358, 519051.835103617806453, 519062.705346853588708, 519073.575609105057083, 519084.445890371513087, 519095.316190652956720, 519106.186509948922321, 519117.056848258944228, 519127.927205582673196, 519138.797581919876393, 519149.667977270088159, 519160.538391632959247, 519171.408825008140411, 519182.279277395282406, 519193.149748794035986, 519204.020239203935489, 519214.890748624748085, 519225.761277056124527, 519236.631824497482739, 519247.502390948822722, 519258.372976409445982, 519269.243580879119691, 519280.114204357611015, 519290.984846844454296, 519301.855508339067455, 519312.726188841450494, 519323.596888351021335, 519334.467606867430732, 519345.338344390445855, 519356.209100919717457, 519367.079876454663463, 519377.950670995109249, 519388.821484540530946, 519399.692317090812139, 519410.563168645487167, 519421.434039203973953, 519432.304928766272496, 519443.175837331684306, 519454.046764900209382, 519464.917711471149232, 519475.788677044387441, 519486.659661619341932, 519497.530665195896290, 519508.401687773468439, 519519.272729351825546, 519530.143789930501953, 519541.014869509264827, 519551.885968087764923, 519562.757085665420163, 519573.628222242114134, 519584.499377817497589, 519595.370552390988450, 519606.241745962353889, 519617.112958531128243, 519627.984190097195096, 519638.855440659855958, 519649.726710219227243, 519660.597998774377629, 519671.469306325307116, 519682.340632871666458, 519693.211978412815370, 519704.083342948695645, 519714.954726478841621, 519725.826129002904054, 519736.697550520417280, 519747.568991031148471, 519758.440450534748379, 519769.311929030751344, 519780.183426518808119, 519791.054942998685874, 519801.926478469802532, 519812.798032932041679, 519823.669606384937651, 519834.541198828024790, 519845.412810261070263, 519856.284440683608409, 519867.156090095406398, 519878.027758496231399, 519888.899445885268506, 519899.771152262517717, 519910.642877627629787, 519921.514621980139054, 519932.386385319463443, 519943.258167645719368, 519954.129968958208337, 519965.001789256581105, 519975.873628540604841, 519986.745486809930298, 519997.617364064091817, 520008.489260302740149, 520019.361175525526050, 520030.233109732158482, 520041.105062922229990, 520051.977035095391329, 520062.849026251293253, 520073.721036389470100, 520084.593065509689040, 520095.465113611484412, 520106.337180694623385, 520117.209266758640297, 520128.081371803302318, 520138.953495828027371, 520149.825638832582626, 520160.697800816618837, 520171.569981779903173, 520182.442181721969973, 520193.314400642237160, 520204.186638540588319, 520215.058895416790619, 520225.931171270029154, 520236.803466100420337, 520247.675779907265678, 520258.548112690448761, 520269.420464449503925, 520280.292835183965508, 520291.165224893717095, 520302.037633578176610, 520312.910061236994807, 520323.782507870055269, 520334.654973476659507, 520345.527458056807518, 520356.399961609800812, 520367.272484135406557, 520378.145025633391924, 520389.017586103233043, 520399.890165544638876, 520410.762763957260177, 520421.635381340747699, 520432.508017694519367, 520443.380673018575180, 520454.253347312216647, 520465.126040575560182, 520475.998752807674464, 520486.871484008559491, 520497.744234177749604, 520508.617003314895555, 520519.489791419531684, 520530.362598491541576, 520541.235424530343153, 520552.108269535820000, 520562.981133507273626, 520573.854016444471199, 520584.726918347296305, 520595.599839215050451, 520606.472779047500808, 520617.345737844530959, 520628.218715605325997, 520639.091712329885922, 520649.964728017628659, 520660.837762668437790, 520671.710816281614825, 520682.583888857159764, 520693.456980394374114, 520704.330090893141460, 520715.203220353112556, 520726.076368773821741, 520736.949536154803354, 520747.822722495882772, 520758.695927796768956, 520769.569152056763414, 520780.442395275866147, 520791.315657453611493, 520802.188938589533791, 520813.062238683400210, 520823.935557734745089, 520834.808895743102767, 520845.682252708473243, 520856.555628630274441, 520867.429023508157115, 520878.302437341655605, 520889.175870130653493, 520900.049321874568705, 520910.922792573168408, 520921.796282226103358, 520932.669790832907893, 520943.543318393349182, 520954.416864906961564, 520965.290430373395793, 520976.164014792419039, 520987.037618163449224, 520997.911240486369934, 521008.784881760599092, 521019.658541986136697, 521030.532221162051428, 521041.405919288576115, 521052.279636364895850, 521063.153372390894219, 521074.027127366221976, 521084.900901290297043, 521095.774694163119420, 521106.648505983990617, 521117.522336752677802, 521128.396186468889937, 521139.270055132103153, 521150.143942742201034, 521161.017849298601504, 521171.891774801071733, 521182.765719249378890, 521193.639682642824482, 521204.513664981175680, 521215.387666264199652, 521226.261686491547152, 521237.135725662636105, 521248.009783777233679, 521258.883860835107043, 521269.757956835790537, 521280.632071778818499, 521291.506205663958099, 521302.380358490743674, 521313.254530259058811, 521324.128720968321431, 521335.002930618182290, 521345.877159208292142, 521356.751406738534570, 521367.625673208211083, 521378.499958617088851, 521389.374262964818627, 521400.248586251167580, 521411.122928475553636, 521421.997289637743961, 521432.871669737389311, 521443.746068774024025, 521454.620486747298855, 521465.494923657097388, 521476.369379502837546, 521487.243854284170084, 521498.118348000629339, 521508.992860652215313, 521519.867392238229513, 521530.741942758497316, 521541.616512212611269, 521552.491100600105710, 521563.365707920864224, 521574.240334174304735, 521585.114979360194411, 521595.989643478067592, 521606.864326527691446, 521617.739028508483898, 521628.613749420444947, 521639.488489262876101, 521650.363248035660945, 521661.238025738333818, 521672.112822370429058, 521682.987637931713834, 521693.862472421955317, 521704.737325840571430, 521715.612198187329341, 521726.487089461646974, 521737.361999663640745, 521748.236928792495746, 521759.111876847979147, 521769.986843829858117, 521780.861829737666994, 521791.736834571056534, 521802.611858329793904, 521813.486901013180614, 521824.361962621216662, 521835.237043153436389, 521846.112142609490547, 521856.987260988913476, 521867.862398291472346, 521878.737554516701493, 521889.612729664368089, 521900.487923733890057, 521911.363136725267395, 521922.238368637801614, 521933.113619471492711, 521943.988889225525782, 521954.864177899726201, 521965.739485494035762, 521976.614812007639557, 521987.490157440654002, 521998.365521792147774, 522009.240905062237289, 522020.116307250456885, 522030.991728356340900, 522041.867168379540090, 522052.742627319821622, 522063.618105176719837, 522074.493601949885488, 522085.369117638969328, 522096.244652243622113, 522107.120205763494596, 522117.995778198237531, 522128.871369547501672, 522139.746979810937773, 522150.622608987963758, 522161.498257078579627, 522172.373924082203303, 522183.249609998485539, 522194.125314827309921, 522205.001038567977957, 522215.876781220256817, 522226.752542783913668, 522237.628323258366436, 522248.504122643498704, 522259.379940938728396, 522270.255778143939096, 522281.131634258548729, 522292.007509282324463, 522302.883403214917053, 522313.759316055860836, 522324.635247804806568, 522335.511198461521417, 522346.387168025656138, 522357.263156496745069, 522368.139163874322549, 522379.015190158272162, 522389.891235348128248, 522400.767299443599768, 522411.643382444162853, 522422.519484349584673, 522433.395605159515981, 522444.271744873723947, 522455.147903491510078, 522466.024081012757961, 522476.900277437118348, 522487.776492764125578, 522498.652726993430406, 522509.528980124800000, 522520.405252157768700, 522531.281543091987260, 522542.157852927106433, 522553.034181662893388, 522563.910529298766050, 522574.786895834491588, 522585.663281269720756, 522596.539685604104307, 522607.416108837176580, 522618.292550968588330, 522629.169011998223141, 522640.045491925615352, 522650.921990750182886, 522661.798508471809328, 522672.675045090029016, 522683.551600604492705, 522694.428175014967564, 522705.304768320871517, 522716.181380522088148, 522727.058011618035380, 522737.934661608480383, 522748.811330493190326, 522759.688018271466717, 522770.564724943309557, 522781.441450508253183, 522792.318194965715520, 522803.194958315696567, 522814.071740557497833, 522824.948541691002902, 522835.825361715746112, 522846.702200631494634, 522857.579058437666390, 522868.455935134086758, 522879.332830720464699, 522890.209745196218137, 522901.086678561114240, 522911.963630814803764, 522922.840601956937462, 522933.717591987049673, 522944.594600904907566, 522955.471628710161895, 522966.348675402463414, 522977.225740981113631, 522988.102825446345378, 522998.979928797343746, 523009.857051033992320, 523020.734192155709025, 523031.611352162377443, 523042.488531053531915, 523053.365728828823194, 523064.242945487902034, 523075.120181030419189, 523085.997435455908999, 523096.874708764138632, 523107.752000954758842, 523118.629312027303968, 523129.506641981657594, 523140.383990817121230, 523151.261358533578459, 523162.138745130680036, 523173.016150607843883, 523183.893574965070002, 523194.771018201543484, 523205.648480317380745, 523216.525961311883293, 523227.403461184934713, 523238.280979935952928, 523249.158517564705107, 523260.036074070842005, 523270.913649454014376, 523281.791243713756558, 523292.668856849835720, 523303.546488861786202, 523314.424139749491587, 523325.301809512253385, 523336.179498149955180, 523347.057205662131310, 523357.934932048548944, 523368.812677308742423, 523379.690441442362498, 523390.568224449059926, 523401.446026328427251, 523412.323847080173437, 523423.201686703949235, 523434.079545199521817, 523444.957422566309106, 523455.835318804078270, 523466.713233912363648, 523477.591167890932411, 523488.469120739435311, 523499.347092457406688, 523510.225083044613712, 523521.103092500590719, 523531.981120824988466, 523542.859168017574120, 523553.737234077765606, 523564.615319005562924, 523575.493422800151166, 523586.371545461646747, 523597.249686989234760, 523608.127847383031622, 523619.006026642222423, 523629.884224766807165, 523640.762441756203771, 523651.640677610295825, 523662.518932328384835, 523673.397205910354387, 523684.275498355855234, 523695.153809664421715, 523706.032139835820999, 523716.910488869587425, 523727.788856765488163, 523738.667243522941135, 523749.545649141713511, 523760.424073621572461, 523771.302516962052323, 523782.180979162803851, 523793.059460223477799, 523803.937960143724922, 523814.816478923195973, 523825.695016561541706, 523836.573573058180045, 523847.452148413227405, 523858.330742625868879, 523869.209355695988052, 523880.087987623119261, 523890.966638407146093, 523901.845308047370054, 523912.723996543674730, 523923.602703895710874, 523934.481430102896411, 523945.360175165114924, 523956.238939081784338, 523967.117721852788236, 523977.996523477602750, 523988.875343955936842, 523999.754183287557680, 524010.633041471883189, 524021.511918508680537, 524032.390814397600479, 524043.269729138177354, 524054.148662730178330, 524065.027615173254162, 524075.906586467055604, 524086.785576611000579, 524097.664585605089087, 524108.543613448622636, 524119.422660141601227, 524130.301725683326367, 524141.180810073565226, 524152.059913312084973, 524162.939035398419946, 524173.818176332220901, 524184.697336113138590, 524195.576514740823768, 524206.455712215043604, 524217.334928535099607, 524228.214163700991776, 524239.093417712138034, 524249.972690568421967, 524260.851982269145083, 524271.731292814307380, 524282.610622203326784, 524293.489970435854048, 524304.369337511714548, 524315.248723430442624, 524326.128128191689029, 524337.007551794871688, 524347.886994240107015, 524358.766455526696518, 524369.645935654290952, 524380.525434622657485, 524391.404952431446873, 524402.284489080193453, 524413.164044568664394, 524424.043618896394037, 524434.923212063149549, 524445.802824068465270, 524456.682454912108369, 524467.562104593380354, 524478.441773112397641, 524489.321460468578152, 524500.201166661689058, 524511.080891691031866, 524521.960635556606576, 524532.840398257947527, 524543.720179794821888, 524554.599980166531168, 524565.479799372958951, 524576.359637413872406, 524587.239494288689457, 524598.119369997060858, 524608.999264538870193, 524619.879177913535386, 524630.759110120707192, 524641.639061160152778, 524652.519031031522900, 524663.399019734351896, 524674.279027268174104, 524685.159053632989526, 524696.039098828216083, 524706.919162853620946, 524717.799245708505623, 524728.679347392870113, 524739.559467906248756, 524750.439607248525135, 524761.319765418767929, 524772.199942417093553, 524783.080138243152760, 524793.960352896479890, 524804.840586376492865, 524815.720838683075272, 524826.601109815994278, 524837.481399774667807, 524848.361708558746614, 524859.242036167997867, 524870.122382602188736, 524881.002747860620730, 524891.883131943061016, 524902.763534849276766, 524913.643956578918733, 524924.524397131521255, 524935.404856506618671, 524946.285334704210982, 524957.165831723599695, 524968.046347564668395, 524978.926882226951420, 524989.807435709983110, 525000.688008013647050, 525011.568599137593992, 525022.449209081125446, 525033.329837844124995, 525044.210485426359810, 525055.091151827247813, 525065.971837046556175, 525076.852541083935648, 525087.733263938920572, 525098.614005611394532, 525109.494766100659035, 525120.375545406714082, 525131.256343528977595, 525142.137160467100330, 525153.017996220733039, 525163.898850789642893, 525174.779724173480645, 525185.660616371780634, 525196.541527384077199, 525207.422457210253924, 525218.303405849961564, 525229.184373302734457, 525240.065359568106942, 525250.946364645962603, 525261.827388535835780, 525272.708431237377226, 525283.589492750121281, 525294.470573073951527, 525305.351672208402306, 525316.232790153007954, 525327.113926907535642, 525337.995082471519709, 525348.876256844960153, 525359.757450027042069, 525370.638662017532624, 525381.519892816315405, 525392.401142422808334, 525403.282410836662166, 525414.163698057760485, 525425.045004085404798, 525435.926328919478692, 525446.807672559516504, 525457.689035005285405, 525468.570416256203316, 525479.451816312270239, 525490.333235172787681, 525501.214672837522812, 525512.096129306242801, 525522.977604578598402, 525533.859098653891124, 525544.740611532004550, 525555.622143212822266, 525566.503693695645779, 525577.385262980125844, 525588.266851066146046, 525599.148457953240722, 525610.030083640944213, 525620.911728128907271, 525631.793391417013481, 525642.675073504797183, 525653.556774391909130, 525664.438494077767245, 525675.320232562371530, 525686.201989845023490, 525697.083765925723128, 525707.965560803888366, 525718.847374479169957, 525729.729206951335073, 525740.611058219918050, 525751.492928284569643, 525762.374817145173438, 525773.256724801030941, 525784.138651252025738, 525795.020596497575752, 525805.902560537448153, 525816.784543371410109, 525827.666544999112375, 525838.548565419972874, 525849.430604633758776, 525860.312662640120834, 525871.194739438709803, 525882.076835029176436, 525892.958949411171488, 525903.841082584462129, 525914.723234548349865, 525925.605405302718282, 525936.487594847218134, 525947.369803181500174, 525958.252030305215158, 525969.134276217897423, 525980.016540919314139, 525990.898824409116060, 526001.781126686953939, 526012.663447752245702, 526023.545787604991347, 526034.428146244608797, 526045.310523670748807, 526056.192919883062132, 526067.075334881315939, 526077.957768665160984, 526088.840221234131604, 526099.722692587762140, 526110.605182726052590, 526121.487691648304462, 526132.370219354401343, 526143.252765843877569, 526154.135331116383895, 526165.017915171571076, 526175.900518009206280, 526186.783139628591016, 526197.665780029725283, 526208.548439212376252, 526219.431117175729014, 526230.313813919550739, 526241.196529443841428, 526252.079263747902587, 526262.962016831384972, 526273.844788694055751, 526284.727579335682094, 526295.610388755681925, 526306.493216953938827, 526317.376063929637894, 526328.258929683011957, 526339.141814213362522, 526350.024717520456761, 526360.907639603712596, 526371.790580463130027, 526382.673540098126978, 526393.556518508354202, 526404.439515693578869, 526415.322531653451733, 526426.205566387507133, 526437.088619895395823, 526447.971692176768556, 526458.854783231508918, 526469.737893058918417, 526480.621021658764221, 526491.504169030813500, 526502.387335174717009, 526513.270520089892671, 526524.153723776107654, 526535.036946233012713, 526545.920187460375018, 526556.803447457728907, 526567.686726224608719, 526578.570023760898039, 526589.453340066131204, 526600.336675139958970, 526611.220028982032090, 526622.103401592001319, 526632.986792969517410, 526643.870203114114702, 526654.753632025560364, 526665.637079703505151, 526676.520546147599816, 526687.404031357611530, 526698.287535332725383, 526709.171058073174208, 526720.054599578259513, 526730.938159847748466, 526741.821738881058991, 526752.705336678307503, 526763.588953238795511, 526774.472588562173769, 526785.356242648093030, 526796.239915496320464, 526807.123607106506824, 526818.007317478186451, 526828.891046611126512, 526839.774794504861347, 526850.658561159158126, 526861.542346573551185, 526872.426150747691281, 526883.309973681229167, 526894.193815374048427, 526905.077675825450569, 526915.961555035202764, 526926.845453003072180, 526937.729369728593156, 526948.613305211532861, 526959.497259451309219, 526970.381232447689399, 526981.265224200440571, 526992.149234709097072, 527003.033263973309658, 527013.917311992729083, 527024.801378767006099, 527035.685464295907877, 527046.569568578735925, 527057.453691615490243, 527068.337833405821584, 527079.221993949147873, 527090.106173245236278, 527100.990371293737553, 527111.874588094302453, 527122.758823646581732, 527133.643077950109728, 527144.527351004770026, 527155.411642809980549, 527166.295953365624882, 527177.180282670888118, 527188.064630726003088, 527198.948997530387715, 527209.833383083576337, 527220.717787385103293, 527231.602210435201414, 527242.486652232822962, 527253.371112778084353, 527264.255592070403509, 527275.140090109547600, 527286.024606895050965, 527296.909142426797189, 527307.793696704087779, 527318.678269726689905, 527329.562861494603567, 527340.447472007013857, 527351.332101263687946, 527362.216749264393002, 527373.101416008779779, 527383.986101496266201, 527394.870805726735853, 527405.755528699839488, 527416.640270415111445, 527427.525030872318894, 527438.409810070763342, 527449.294608010561205, 527460.179424691130407, 527471.064260112354532, 527481.949114273302257, 527492.833987174322829, 527503.718878814601339, 527514.603789194021374, 527525.488718312000856, 527536.373666168306954, 527547.258632762823254, 527558.143618094851263, 527569.028622164041735, 527579.913644970394671, 527590.798686513327993, 527601.683746792376041, 527612.568825807305984, 527623.453923557884991, 527634.339040043647401, 527645.224175264243968, 527656.109329219092615, 527666.994501908309758, 527677.879693331313320, 527688.764903487754054, 527699.650132377166301, 527710.535379999433644, 527721.420646353974007, 527732.305931440670975, 527743.191235258826055, 527754.076557808555663, 527764.961899089161307, 527775.847259100410156, 527786.732637841720134, 527797.618035313207656, 527808.503451514174230, 527819.388886444387026, 527830.274340103496797, 527841.159812491154298, 527852.045303606893867, 527862.930813450482674, 527873.816342021571472, 527884.701889319694601, 527895.587455344619229, 527906.473040096112527, 527917.358643573476002, 527928.244265776593238, 527939.129906705114990, 527950.015566358692013, 527960.901244736742228, 527971.786941839382052, 527982.672657665912993, 527993.558392215869389, 528004.444145489134826, 528015.329917485360056, 528026.215708204195835, 528037.101517645292915, 528047.987345808069222, 528058.873192692524754, 528069.759058298077434, 528080.644942624378018, 528091.530845671193674, 528102.416767438058741, 528113.302707924856804, 528124.188667130772956, 528135.074645055923611, 528145.960641699843109, 528156.846657062065788, 528167.732691142125987, 528178.618743940023705, 528189.504815455060452, 528200.390905687236227, 528211.277014635852538, 528222.163142300909385, 528233.049288681824692, 528243.935453778132796, 528254.821637589717284, 528265.707840116228908, 528276.594061357202008, 528287.480301312287338, 528298.366559981135651, 528309.252837363514118, 528320.139133458957076, 528331.025448267348111, 528341.911781787755899, 528352.798134020529687, 528363.684504964854568, 528374.570894620614126, 528385.457302987226285, 528396.343730064691044, 528407.230175852309912, 528418.116640349966474, 528429.003123557078652, 528439.889625473530032, 528450.776146098971367, 528461.662685432820581, 528472.549243474844843, 528483.435820224811323, 528494.322415682254359, 528505.209029846941121, 528516.095662718173116, 528526.982314296066761, 528537.868984580156393, 528548.755673569743522, 528559.642381264828146, 528570.529107664944604, 528581.415852769860066, 528592.302616579108872, 528603.189399092225358, 528614.076200309093110, 528624.963020229246467, 528635.849858852336183, 528646.736716178013012, 528657.623592205927707, 528668.510486935847439, 528679.397400367190130, 528690.284332499722950, 528701.171283333213069, 528712.058252867194824, 528722.945241101318970, 528733.832248035119846, 528744.719273668597452, 528755.606318001053296, 528766.493381032254547, 528777.380462761851959, 528788.267563189496286, 528799.154682314954698, 528810.041820137645118, 528820.928976657334715, 528831.816151873790659, 528842.703345786430873, 528853.590558395138942, 528864.477789699332789, 528875.365039698895998, 528886.252308393362910, 528897.139595782384276, 528908.026901865494438, 528918.914226642576978, 528929.801570113166235, 528940.688932276912965, 528951.576313133351505, 528962.463712682481855, 528973.351130923605524, 528984.238567856606096, 528995.126023480785079, 529006.013497796142474, 529016.900990802212618, 529027.788502498646267, 529038.676032885094173, 529049.563581961207092, 529060.451149726635776, 529071.338736181147397, 529082.226341324043460, 529093.113965155440383, 529104.001607674639672, 529114.889268881524913, 529125.776948775514029, 529136.664647356374189, 529147.552364623756148, 529158.440100577427074, 529169.327855216804892, 529180.215628541773185, 529191.103420551749878, 529201.991231246502139, 529212.879060625680722, 529223.766908689052798, 529234.654775436152704, 529245.542660866631195, 529256.430564979906194, 529267.318487776094116, 529278.206429254612885, 529289.094389415113255, 529299.982368257129565, 529310.870365780545399, 529321.758381985011511, 529332.646416869945824, 529343.534470434882678, 529354.422542680054903, 529365.310633604647592, 529376.198743208544329, 529387.086871491046622, 529397.975018452154472, 529408.863184091402218, 529419.751368408557028, 529430.639571403036825, 529441.527793074608780, 529452.416033423040062, 529463.304292447865009, 529474.192570148617961, 529485.080866525182500, 529495.969181577092968, 529506.857515304000117, 529517.745867705554701, 529528.634238781407475, 529539.522628531209193, 529550.411036954727024, 529561.299464051378891, 529572.187909821048379, 529583.076374263269827, 529593.964857377693988, 529604.853359163855202, 529615.741879621753469, 529626.630418750690296, 529637.518976550549269, 529648.407553020864725, 529659.296148161171004, 529670.184761971468106, 529681.073394451057538, 529691.962045599706471, 529702.850715417182073, 529713.739403903018683, 529724.628111056983471, 529735.516836878261529, 529746.405581367202103, 529757.294344523223117, 529768.183126345742494, 529779.071926834294572, 529789.960745989112183, 529800.849583809496835, 529811.738440295099281, 529822.627315445570275, 529833.516209260560572, 529844.405121739837341, 529855.294052883051336, 529866.183002689504065, 529877.071971159311943, 529887.960958292009309, 529898.849964087014087, 529909.738988544093445, 529920.628031663014553, 529931.517093443311751, 529942.406173884752207, 529953.295272986753844, 529964.184390749316663, 529975.073527171858586, 529985.962682254146785, 529996.851855995482765, 530007.741048395982943, 530018.630259455181658, 530029.519489172613248, 530040.408737547928467, 530051.298004580894485, 530062.187290271045640, 530073.076594618149102, 530083.965917621739209, 530094.855259281466715, 530105.744619597098790, 530116.633998568286188, 530127.523396194563247, 530138.412812475580722, 530149.302247411222197, 530160.191701000905596, 530171.081173244281672, 530181.970664141117595, 530192.860173691064119, 530203.749701893655583, 530214.639248748659156, 530225.528814255492762, 530236.418398414156400, 530247.308001224184409, 530258.197622685111128, 530269.087262796703726, 530279.976921558612958, 530290.866598970373161, 530301.756295031751506, 530312.646009742282331, 530323.535743101849221, 530334.425495109870099, 530345.315265766228549, 530356.205055070109665, 530367.094863021746278, 530377.984689620439894, 530388.874534866074100, 530399.764398757950403, 530410.654281296068802, 530421.544182479847223, 530432.434102309285663, 530443.324040783452801, 530454.213997902581468, 530465.103973665973172, 530475.993968073278666, 530486.883981124381535, 530497.774012818816118, 530508.664063156233169, 530519.554132136283442, 530530.444219758501276, 530541.334326022770256, 530552.224450928741135, 530563.114594475715421, 530574.004756663693115, 530584.894937492208555, 530595.785136960912496, 530606.675355069455691, 530617.565591817488894, 530628.455847204662859, 530639.346121230744757, 530650.236413895268925, 530661.126725197769701, 530672.017055138130672, 530682.907403716002591, 530693.797770930803381, 530704.688156782300211, 530715.578561270260252, 530726.468984394334257, 530737.359426153940149, 530748.249886548845097, 530759.140365578932688, 530770.030863243620843, 530780.921379542443901, 530791.811914475285448, 530802.702468041796237, 530813.593040241510607, 530824.483631074079312, 530835.374240539269522, 530846.264868636615574, 530857.155515365884639, 530868.046180726727471, 530878.936864718561992, 530889.827567341271788, 530900.718288594507612, 530911.609028478036635, 530922.499786990927532, 530933.390564133645967, 530944.281359905260615, 530955.172174305655062, 530966.063007334363647, 530976.953858991153538, 530987.844729275791906, 530998.735618187580258, 531009.626525726518594, 531020.517451892024837, 531031.408396683866158, 531042.299360101693310, 531053.190342145040631, 531064.081342813675292, 531074.972362107364461, 531085.863400025642477, 531096.754456567927264, 531107.645531734218821, 531118.536625524051487, 531129.427737937076017, 531140.318868972943164, 531151.210018631303683, 531162.101186911808327, 531172.992373814107850, 531183.883579337736592, 531194.774803482694551, 531205.666046248283237, 531216.557307634386234, 531227.448587640421465, 531238.339886266272515, 531249.231203511473723, 531260.122539375675842, 531271.013893858529627, 531281.905266959802248, 531292.796658679028042, 531303.688069015974179, 531314.579497970058583, 531325.470945541164838, 531336.362411728827283, 531347.253896532813087, 531358.145399952656589, 531369.036921988008544, 531379.928462638752535, 531390.820021904190071, 531401.711599784204736, 531412.603196278447285, 531423.494811386452056, 531434.386445108102635, 531445.278097442584112, 531456.169768390012905, 531467.061457949923351, 531477.953166121966206, 531488.844892905559391, 531499.736638300702907, 531510.628402306931093, 531521.520184923894703, 531532.411986151011661, 531543.303805988281965, 531554.195644435356371, 531565.087501491652802, 531575.979377156822011, 531586.871271430747584, 531597.763184312847443, 531608.655115803005174, 531619.547065900638700, 531630.439034605631605, 531641.331021917518228, 531652.223027835949324, 531663.115052360575646, 531674.007095491047949, 531684.899157227016985, 531695.791237568249926, 531706.683336514164694, 531717.575454064528458, 531728.467590219224803, 531739.359744977671653, 531750.251918339403346, 531761.144110304419883, 531772.036320872022770, 531782.928550042095594, 531793.820797814172693, 531804.713064188021235, 531815.605349163291976, 531826.497652739519253, 531837.389974916353822, 531848.282315693562850, 531859.174675070797093, 531870.067053047590889, 531880.959449623827823, 531891.851864798809402, 531902.744298572302796, 531913.636750944308005, 531924.529221914242953, 531935.421711481525563, 531946.314219646039419, 531957.206746407551691, 531968.099291765480302, 531978.991855719592422, 531989.884438269538805, 532000.777039414970204, 532011.669659155653790, 532022.562297490891069, 532033.454954420798458, 532044.347629944677465, 532055.240324062411673, 532066.133036773419008, 532077.025768077583052, 532087.918517974554561, 532098.811286463751458, 532109.704073544940911, 532120.596879218006507, 532131.489703482249752, 532142.382546337554231, 532153.275407783337869, 532164.168287819600664, 532175.061186445760541, 532185.954103661584668, 532196.847039466490969, 532207.739993860479444, 532218.632966842968017, 532229.525958413723856, 532240.418968572281301, 532251.311997318523936, 532262.205044651869684, 532273.098110572085716, 532283.991195078706369, 532294.884298171498813, 532305.777419850230217, 532316.670560114318505, 532327.563718963414431, 532338.456896397401579, 532349.350092415930703, 532360.243307018419728, 532371.136540204519406, 532382.029791974113323, 532392.923062326852232, 532403.816351262154058, 532414.709658779785968, 532425.602984879515134, 532436.496329560992308, 532447.389692823635414, 532458.283074667211622, 532469.176475091488101, 532480.069894096115604, 532490.963331680628471, 532501.856787844677456, 532512.750262588029727, 532523.643755910219625, 532534.537267811130732, 532545.430798289948143, 532556.324347346904688, 532567.217914981301874, 532578.111501192906871, 532589.005105981137604, 532599.898729346110485, 532610.792371287127025, 532621.686031803954393, 532632.579710896126926, 532643.473408563528210, 532654.367124805576168, 532665.260859622154385, 532676.154613012680784, 532687.048384977038950, 532697.942175514763221, 532708.835984625504352, 532719.729812308913097, 532730.623658564640209, 532741.517523392336443, 532752.411406791885383, 532763.305308762588538, 532774.199229304213077, 532785.093168416642584, 532795.987126099178568, 532806.881102351704612, 532817.775097173755057, 532828.669110565097071, 532839.563142525381409, 532850.457193054258823, 532861.351262151147239, 532872.245349815930240, 532883.139456048374996, 532894.033580847899430, 532904.927724214154296, 532915.821886147139594, 532926.716066646156833, 532937.610265710973181, 532948.504483341122977, 532959.398719536489807, 532970.292974296491593, 532981.187247621128336, 532992.081539509468712, 533002.975849961861968, 533013.870178977609612, 533024.764526556245983, 533035.658892697654665, 533046.553277401369996, 533057.447680667159148, 533068.342102494556457, 533079.236542883212678, 533090.131001833011396, 533101.025479343254119, 533111.919975413940847, 533122.814490044256672, 533133.709023234434426, 533144.603574983892031, 533155.498145292163827, 533166.392734158900566, 533177.287341583985835, 533188.181967566837557, 533199.076612107339315, 533209.971275204909034, 533220.865956859313883, 533231.760657070321031, 533242.655375837348402, 533253.550113160163164, 533264.444869038532488, 533275.339643471990712, 533286.234436460188590, 533297.129248002776876, 533308.024078099522740, 533318.918926749960519, 533329.813793953973800, 533340.708679710747674, 533351.603584020282142, 533362.498506882344373, 533373.393448296352290, 533384.288408261840232, 533395.183386778924614, 533406.078383846906945, 533416.973399465437979, 533427.868433634284884, 533438.763486353214830, 533449.658557621645741, 533460.553647439344786, 533471.448755805962719, 533482.343882721150294, 533493.239028184558265, 533504.134192195953801, 533515.029374754754826, 533525.924575860844925, 533536.819795513758436, 533547.715033713146113, 533558.610290458658710, 533569.505565750179812, 533580.400859587010927, 533591.296171969152056, 533602.191502896021120, 533613.086852367152460, 533623.982220382546075, 533634.877606941619888, 533645.773012044257484, 533656.668435689760372, 533667.563877878012136, 533678.459338608779944, 533689.354817881598137, 533700.250315696001053, 533711.145832051755860, 533722.041366948629729, 533732.936920386156999, 533743.832492363872007, 533754.728082881658338, 533765.623691939050332, 533776.519319535815157, 533787.414965671370737, 533798.310630345600657, 533809.206313558155671, 533820.102015308570117, 533830.997735596494749, 533841.893474421696737, 533852.789231783826835, 533863.685007682535797, 533874.580802117241547, 533885.476615088060498, 533896.372446594177745, 533907.268296635593288, 533918.164165211725049, 533929.060052322340198, 533939.955957967205904, 533950.851882145856507, 533961.747824857826345, 533972.643786102882586, 533983.539765880908817, 533994.435764191322960, 534005.331781033542939, 534016.227816407685168, 534027.123870313283987, 534038.019942749873735, 534048.916033716988750, 534059.812143214629032, 534070.708271242328919, 534081.604417799622752, 534092.500582886161283, 534103.396766501828097, 534114.292968646041118, 534125.189189318683930, 534136.085428519174457, 534146.981686247163452, 534157.877962502650917, 534168.774257285054773, 534179.670570593792945, 534190.566902428981848, 534201.463252789922990, 534212.359621676616371, 534223.256009088247083, 534234.152415024931543, 534245.048839486204088, 534255.945282471599057, 534266.841743980650790, 534277.738224013359286, 534288.634722569142468, 534299.531239647883922, 534310.427775249001570, 534321.324329372029752, 534332.220902017084882, 534343.117493183584884, 534354.014102871064097, 534364.910731079289690, 534375.807377808028832, 534386.704043056699447, 534397.600726825185120, 534408.497429113020189, 534419.394149919855408, 534430.290889245341532, 534441.187647089245729, 534452.084423451218754, 534462.981218330678530, 534473.878031727625057, 534484.774863641476259, 534495.671714071882889, 534506.568583018612117, 534517.465470481431112, 534528.362376459757797, 534539.259300953359343, 534550.156243961770087, 534561.053205484873615, 534571.950185522320680, 534582.847184073412791, 534593.744201138149947, 534604.641236716182902, 534615.538290807045996, 534626.435363410273567, 534637.332454525865614, 534648.229564153240062, 534659.126692292047665, 534670.023838941939175, 534680.921004102798179, 534691.818187774042599, 534702.715389955439605, 534713.612610646523535, 534724.509849847177975, 534735.407107556820847, 534746.304383775335737, 534757.201678502024151, 534768.098991737002507, 534778.996323479688726, 534789.893673729617149, 534800.791042486671358, 534811.688429750385694, 534822.585835520410910, 534833.483259796630591, 534844.380702578346245, 534855.278163865441456, 534866.175643657566980, 534877.073141954373568, 534887.970658755279146, 534898.868194060283713, 534909.765747868805192, 534920.663320180610754, 534931.560910995467566, 534942.458520312793553, 534953.356148132355884, 534964.253794453921728, 534975.151459277025424, 534986.049142601317726, 534996.946844426449388, 535007.844564752187580, 535018.742303578066640, 535029.640060903620906, 535040.537836728966795, 535051.435631053405814, 535062.333443876588717, 535073.231275198282674, 535084.129125018022023, 535095.026993335690349, 535105.924880150821991, 535116.822785462951288, 535127.720709271845408, 535138.618651577387936, 535149.516612378880382, 535160.414591675857082, 535171.312589468667284, 535182.210605756263249, 535193.108640538644977, 535204.006693815346807, 535214.904765586135909, 535225.802855850663036, 535236.700964608462527, 535247.599091859185137, 535258.497237602714449, 535269.395401838468388, 535280.293584566330537, 535291.191785785718821, 535302.090005496400408, 535312.988243698142469, 535323.886500390479341, 535334.784775572945364, 535345.683069245424122, 535356.581381407566369, 535367.479712058906443, 535378.378061199095100, 535389.276428827783093, 535400.174814944737591, 535411.073219549609348, 535421.971642642049119, 535432.870084221591242, 535443.768544288119301, 535454.667022841051221, 535465.565519880270585, 535476.464035405078903, 535487.362569415476173, 535498.261121911229566, 535509.159692891524173, 535520.058282356359996, 535530.956890305271372, 535541.855516738025472, 535552.754161654273048, 535563.652825053315610, 535574.551506935385987, 535585.450207299902104, 535596.348926146398298, 535607.247663474525325, 535618.146419284166768, 535629.045193574856967, 535639.943986346130259, 535650.842797597753815, 535661.741627329611219, 535672.640475540887564, 535683.539342231699266, 535694.438227401347831, 535705.337131049716845, 535716.236053176457062, 535727.134993781102821, 535738.033952863304876, 535748.932930422946811, 535759.831926459446549, 535770.730940972687677, 535781.629973961855285, 535792.529025427298620, 535803.428095368202776, 535814.327183784334920, 535825.226290675229393, 535836.125416040769778, 535847.024559880606830, 535857.923722194391303, 535868.822902981541120, 535879.722102241939865, 535890.621319975121878, 535901.520556180970743, 535912.419810858904384, 535923.319084008573554, 535934.218375629745424, 535945.117685722187161, 535956.017014285316691, 535966.916361318901181, 535977.815726822707802, 535988.715110796270892, 535999.614513239241205, 536010.513934151153080, 536021.413373532006517, 536032.312831381335855, 536043.212307698675431, 536054.111802483559586, 536065.011315735988319, 536075.910847455612384, 536086.810397641733289, 536097.709966294234619, 536108.609553412883542, 536119.509158997097984, 536130.408783046761528, 536141.308425561292097, 536152.208086540689692, 536163.107765984255821, 536174.007463891874067, 536184.907180263078772, 536195.806915097637102, 536206.706668395083398, 536217.606440155184828, 536228.506230377592146, 536239.406039061839692, 536250.305866207811050, 536261.205711815040559, 536272.105575883062556, 536283.005458411644213, 536293.905359400552697, 536304.805278849438764, 536315.705216757603921, 536326.605173125164583, 536337.505147951655090, 536348.405141236609779, 536359.305152979679406, 536370.205183180631138, 536381.105231839115731, 536392.005298954783939, 536402.905384527286515, 536413.805488556157798, 536424.705611041281372, 536435.605751982191578, 536446.505911378539167, 536457.406089229974896, 536468.306285536265932, 536479.206500297063030, 536490.106733511784114, 536501.006985180312768, 536511.907255302299745, 536522.807543877279386, 536533.707850905135274, 536544.608176385285333, 536555.508520317496732, 536566.408882701653056, 536577.309263536939397, 536588.209662823239341, 536599.110080560320057, 536610.010516747832298, 536620.910971385193989, 536631.811444472288713, 536642.711936008767225, 536653.612445994280279, 536664.512974428362213, 536675.413521310663782, 536686.314086641068570, 536697.214670419110917, 536708.115272644441575, 536719.015893316594884, 536729.916532435570844, 536740.817190000670962, 536751.717866011778824, 536762.618560468428768, 536773.519273370271549, 536784.420004717074335, 536795.320754508487880, 536806.221522744162939, 536817.122309423517436, 536828.023114546667784, 536838.923938113031909, 536849.824780122144148, 536860.725640573655255, 536871.626519467565231, 536882.527416803291999, 536893.428332580602728, 536904.329266798798926, 536915.230219457997009, 536926.131190557731315, 536937.032180097652599, 536947.933188077178784, 536958.834214496309869, 536969.735259354580194, 536980.636322651640512, 536991.537404387025163, 537002.438504560617730, 537013.339623172068968, 537024.240760220796801, 537035.141915706568398, 537046.043089629267342, 537056.944281988195144, 537067.845492783351801, 537078.746722014155239, 537089.647969680372626, 537100.549235781654716, 537111.450520317652263, 537122.351823287899606, 537133.253144692280330, 537144.154484530445188, 537155.055842801812105, 537165.957219506148249, 537176.858614643220790, 537187.760028212680481, 537198.661460214061663, 537209.562910647131503, 537220.464379511424340, 537231.365866806823760, 537242.267372532864101, 537253.168896689079702, 537264.070439275237732, 537274.972000291105360, 537285.873579736216925, 537296.775177610339597, 537307.676793912774883, 537318.578428643755615, 537329.480081802583300, 537340.381753388908692, 537351.283443402382545, 537362.185151843004860, 537373.086878710077144, 537383.988624003366567, 537394.890387722407468, 537405.792169867199846, 537416.693970437045209, 537427.595789431827143, 537438.497626851079985, 537449.399482694454491, 537460.301356961834244, 537471.203249652637169, 537482.105160766514018, 537493.007090303231962, 537503.909038262558170, 537514.811004644026980, 537525.712989447056316, 537536.614992671762593, 537547.517014317680150, 537558.419054384226911, 537569.321112871286459, 537580.223189778393134, 537591.125285105314106, 537602.027398851583712, 537612.929531017085537, 537623.831681601237506, 537634.733850603806786, 537645.636038024444133, 537656.538243862800300, 537667.440468118526042, 537678.342710791388527, 537689.244971880922094, 537700.147251387010328, 537711.049549308838323, 537721.951865646406077, 537732.854200399480760, 537743.756553567596711, 537754.658925150171854, 537765.561315147322603, 537776.463723558350466, 537787.366150383139029, 537798.268595620989799, 537809.171059272135608, 537820.073541335877962, 537830.976041811867617, 537841.878560699755326, 537852.781097999308258, 537863.683653710177168, 537874.586227832012810, 537885.488820364349522, 537896.391431307187304, 537907.294060659827664, 537918.196708422037773, 537929.099374593468383, 537940.002059173886664, 537950.904762162826955, 537961.807483560172841, 537972.710223365342245, 537983.612981577985920, 537994.515758197871037, 538005.418553224648349, 538016.321366657968611, 538027.224198497482575, 538038.127048742840998, 538049.029917393927462, 538059.932804450043477, 538070.835709910956211, 538081.738633776432835, 538092.641576046240516, 538103.544536719680764, 538114.447515796637163, 538125.350513276876882, 538136.253529159817845, 538147.156563445227221, 538158.059616132872179, 538168.962687222287059, 538179.865776713122614, 538190.768884605262429, 538201.672010897891596, 538212.575155591126531, 538223.478318684617989, 538234.381500177667476, 538245.284700070158578, 538256.187918361858465, 538267.091155052185059, 538277.994410141021945, 538288.897683627903461, 538299.800975512596779, 538310.704285794636235, 538321.607614473788999, 538332.510961549589410, 538343.414327021688223, 538354.317710889969021, 538365.221113154082559, 538376.124533813446760, 538387.027972867712379, 538397.931430316762999, 538408.834906160249375, 538419.738400397705846, 538430.641913028783165, 538441.545444053364918, 538452.448993470752612, 538463.352561280946247, 538474.256147483363748, 538485.159752077772282, 538496.063375063939020, 538506.967016441398300, 538517.870676209800877, 538528.774354368797503, 538539.678050918155350, 538550.581765857408755, 538561.485499186208472, 538572.389250904438086, 538583.293021011631936, 538594.196809507324360, 538605.100616391282529, 538616.004441663273610, 538626.908285322831944, 538637.812147369608283, 538648.716027803369798, 538659.619926623534411, 538670.523843830102123, 538681.427779422607273, 538692.331733400467783, 538703.235705763567239, 538714.139696511789225, 538725.043705644435249, 538735.947733161388896, 538746.851779061951675, 538757.755843346239999, 538768.659926013671793, 538779.564027064130642, 538790.468146496918052, 538801.372284311917610, 538812.276440508780070, 538823.180615087156184, 538834.084808046696708, 538844.989019387052394, 538855.893249107990414, 538866.797497209045105, 538877.701763689867221, 538888.606048550223932, 538899.510351789649576, 538910.414673408027738, 538921.319013404659927, 538932.223371779546142, 538943.127748532337137, 538954.032143662450835, 538964.936557169654407, 538975.840989053598605, 538986.745439314167015, 538997.649907950777560, 539008.554394963197410, 539019.458900350844488, 539030.363424113718793, 539041.267966251354665, 539052.172526763402857, 539063.077105649397708, 539073.981702909222804, 539084.886318542528898, 539095.790952548966743, 539106.695604927837849, 539117.600275679258630, 539128.504964802763425, 539139.409672298002988, 539150.314398164511658, 539161.219142402173020, 539172.123905010521412, 539183.028685989207588, 539193.933485337882303, 539204.838303056196310, 539215.743139144033194, 539226.647993600810878, 539237.552866426180117, 539248.457757620024495, 539259.362667181878351, 539270.267595111276023, 539281.172541407984681, 539292.077506071771495, 539302.982489102287218, 539313.887490499066189, 539324.792510261759162, 539335.697548390016891, 539346.602604883722961, 539357.507679742411710, 539368.412772965617478, 539379.317884553107433, 539390.223014504648745, 539401.128162819775753, 539412.033329498255625, 539422.938514539622702, 539433.843717943527736, 539444.748939709737897, 539455.654179838020355, 539466.559438327676617, 539477.464715178706683, 539488.370010390644893, 539499.275323963142000, 539510.180655895848759, 539521.086006188532338, 539531.991374840843491, 539542.896761852316558, 539553.802167222602293, 539564.707590951584280, 539575.613033038796857, 539586.518493483890779, 539597.423972286400385, 539608.329469446209259, 539619.234984962851740, 539630.140518836211413, 539641.046071065706201, 539651.951641650870442, 539662.857230591704138, 539673.762837887741625, 539684.668463538633659, 539695.574107543914579, 539706.479769903467968, 539717.385450616944581, 539728.291149683878757, 539739.196867103921250, 539750.102602876839228, 539761.008357002399862, 539771.914129479904659, 539782.819920309237204, 539793.725729490164667, 539804.631557022221386, 539815.537402905058116, 539826.443267138325609, 539837.349149721791036, 539848.255050655105151, 539859.160969937918708, 539870.066907569649629, 539880.972863550297916, 539891.878837879514322, 539902.784830556600355, 539913.690841581672430, 539924.596870954032056, 539935.502918673679233, 539946.408984740031883, 539957.315069152857177, 539968.221171911689453, 539979.127293016295880, 539990.033432466443628, 540000.939590261550620, 540011.845766401384026, 540022.751960885711014, 540033.658173714065924, 540044.564404886215925, 540055.470654401695356, 540066.376922260387801, 540077.283208461827599, 540088.189513005549088, 540099.095835891319439, 540110.002177118905820, 540120.908536687842570, 540131.814914597780444, 540142.721310848370194, 540153.627725439495407, 540164.534158370690420, 540175.440609641489573, 540186.347079251543619, 540197.253567200852558, 540208.160073488834314, 540219.066598115023226, 540229.973141079419293, 540240.879702381324023, 540251.786282020737417, 540262.692879997077398, 540273.599496310227551, 540284.506130959489383, 540295.412783944979310, 540306.319455265998840, 540317.226144922431558, 540328.132852913695388, 540339.039579239790328, 540349.946323900250718, 540360.853086894610897, 540371.759868222521618, 540382.666667883982882, 540393.573485878296196, 540404.480322205228731, 540415.387176864547655, 540426.294049855787307, 540437.200941178714857, 540448.107850832981057, 540459.014778818003833, 540469.921725133783184, 540480.828689779969864, 540491.735672755981795, 540502.642674061702564, 540513.549693696666509, 540524.456731660640799, 540535.363787953043357, 540546.270862573874183, 540557.177955522551201, 540568.085066798957996, 540578.992196402512491, 540589.899344333214685, 540600.806510590249673, 540611.713695173733868, 540622.620898082968779, 540633.528119317954406, 540644.435358877992257, 540655.342616763198748, 540666.249892972875386, 540677.157187506789342, 540688.064500364707783, 540698.971831546048634, 540709.879181050695479, 540720.786548878299072, 540731.693935028393753, 540742.601339500746690, 540753.508762295125052, 540764.416203410830349, 540775.323662847862579, 540786.231140605872497, 540797.138636684278026, 540808.046151083195582, 540818.953683801693842, 540829.861234839772806, 540840.768804197199643, 540851.676391873392276, 540862.583997868234292, 540873.491622181143612, 540884.399264812003821, 540895.306925760349259, 540906.214605026063509, 540917.122302608448081, 540928.030018507386558, 540938.937752722646110, 540949.845505253644660, 540960.753276100149378, 540971.661065261927433, 540982.568872738396749, 540993.476698529673740, 541004.384542634710670, 541015.292405053973198, 541026.200285786646418, 541037.108184832381085, 541048.016102190944366, 541058.924037862219848, 541069.831991845509037, 541080.739964140695520, 541091.647954747313634, 541102.555963665130548, 541113.463990893680602, 541124.372036432963796, 541135.280100282165222, 541146.188182441168465, 541157.096282909857109, 541168.004401687532663, 541178.912538774195127, 541189.820694169146009, 541200.728867872268893, 541211.637059883330949, 541222.545270201866515, 541233.453498827293515, 541244.361745759728365, 541255.270010998588987, 541266.178294543642551, 541277.086596394306980, 541287.994916550582275, 541298.903255012002774, 541309.811611778335646, 541320.719986848765984, 541331.628380223526619, 541342.536791902151890, 541353.445221884176135, 541364.353670169366524, 541375.262136757257394, 541386.170621647615917, 541397.079124840092845, 541407.987646334338933, 541418.896186129888520, 541429.804744226741605, 541440.713320624316111, 541451.621915322379209, 541462.530528320348822, 541473.439159618341364, 541484.347809215658344, 541495.256477112183347, 541506.165163307217881, 541517.073867800761946, 541527.982590592466295, 541538.891331681981683, 541549.800091068842448, 541560.708868752815761, 541571.617664733552374, 541582.526479010819457, 541593.435311583918519, 541604.344162452965975, 541615.253031617379747, 541626.161919076810591, 541637.070824831142090, 541647.979748879675753, 541658.888691222411580, 541669.797651858883910, 541680.706630788743496, 541691.615628011641093, 541702.524643527343869, 541713.433677335502580, 541724.342729435651563, 541735.251799827441573, 541746.160888510756195, 541757.069995485129766, 541767.979120750329457, 541778.888264305656776, 541789.797426151228137, 541800.706606286577880, 541811.615804711240344, 541822.525021424866281, 541833.434256427339278, 541844.343509718193673, 541855.252781297196634, 541866.162071163766086, 541877.071379317669198, 541887.980705758789554, 541898.890050486545078, 541909.799413500819355, 541920.708794800797477, 541931.618194386712275, 541942.527612258098088, 541953.437048414489254, 541964.346502855536528, 541975.255975580890663, 541986.165466590435244, 541997.074975883588195, 542007.984503460116684, 542018.894049319671467, 542029.803613462019712, 542040.713195886695758, 542051.622796593350358, 542062.532415581750683, 542073.442052851547487, 542084.351708402391523, 542095.261382233817130, 542106.171074345707893, 542117.080784737714566, 542127.990513409255072, 542138.900260360329412, 542149.810025590239093, 542160.719809098984115, 542171.629610886098817, 542182.539430951233953, 542193.449269293807447, 542204.359125914052129, 542215.269000811269507, 542226.178893985110335, 542237.088805435225368, 542247.998735161498189, 542258.908683163346723, 542269.818649440770969, 542280.728633992956020, 542291.638636819901876, 542302.548657921375707, 542313.458697296679020, 542324.368754945695400, 542335.278830868075602, 542346.188925063470379, 542357.099037531646900, 542368.009168272023089, 542378.919317284482531, 542389.829484568559565, 542400.739670124137774, 542411.649873950635083, 542422.560096047818661, 542433.470336415339261, 542444.380595052847639, 542455.290871960110962, 542466.201167136547156, 542477.111480582156219, 542488.021812296472490, 542498.932162279030308, 542509.842530529596843, 542520.752917047939263, 542531.663321833591908, 542542.573744886205532, 542553.484186205547303, 542564.394645791151561, 542575.305123642785475, 542586.215619760216214, 542597.126134142745286, 542608.036666790489107, 542618.947217702865601, 542629.857786879525520, 542640.768374320352450, 542651.678980024647899, 542662.589603992295451, 542673.500246223062277, 542684.410906716482714, 542695.321585472091101, 542706.232282489887439, 542717.142997769289650, 542728.053731310064904, 542738.964483111747541, 542749.875253174104728, 542760.786041496903636, 542771.696848079795018, 542782.607672922080383, 542793.518516023876145, 542804.429377384716645, 542815.340257004136220, 542826.251154881785624, 542837.162071017548442, 542848.073005411191843, 542858.983958061900921, 542869.894928969675675, 542880.805918134166859, 542891.716925554908812, 542902.627951231785119, 542913.538995164213702, 542924.450057351961732, 542935.361137794796377, 542946.272236492368393, 542957.183353444212116, 542968.094488649978302, 542979.005642109434120, 542989.916813822346739, 543000.828003788250498, 543011.739212006679736, 543022.650438477634452, 543033.561683200416155, 543044.472946175024845, 543055.384227400762029, 543066.295526877627708, 543077.206844605272636, 543088.118180583114736, 543099.029534811154008, 543109.940907288575545, 543120.852298015495762, 543131.763706991448998, 543142.675134216086008, 543153.586579688941129, 543164.498043409897946, 543175.409525378607213, 543186.321025594603270, 543197.232544057420455, 543208.144080767175183, 543219.055635723168962, 543229.967208925168961, 543240.878800372709520, 543251.790410065790638, 543262.702038003830239, 543273.613684186595492, 543284.525348613620736, 543295.437031284673139, 543306.348732199519873, 543317.260451357578859, 543328.172188758733682, 543339.083944402518682, 543349.995718288701028, 543360.907510416931473, 543371.819320786860771, 543382.731149397906847, 543393.642996250186116, 543404.554861343116499, 543415.466744676348753, 543426.378646249650046, 543437.290566062671132, 543448.202504114946350, 543459.114460406359285, 543470.026434936211444, 543480.938427704619244, 543491.850438711117022, 543502.762467955355532, 543513.674515436636284, 543524.586581155192107, 543535.498665110440925, 543546.410767302033491, 543557.322887729620561, 543568.235026392852888, 543579.147183291497640, 543590.059358425089158, 543600.971551793627441, 543611.883763396297581, 543622.795993233099580, 543633.708241303567775, 543644.620507607469335, 543655.532792144222185, 543666.445094913826324, 543677.357415915816091, 543688.269755149842240, 543699.182112615439110, 543710.094488312606700, 543721.006882240762934, 543731.919294399558567, 543742.831724788760766, 543753.744173408020288, 543764.656640256987885, 543775.569125335314311, 543786.481628642766736, 543797.394150178763084, 543808.306689943303354, 543819.219247935921885, 543830.131824156153016, 543841.044418603763916, 543851.957031278405339, 543862.869662179844454, 543873.782311307732016, 543884.694978661485948, 543895.607664241222665, 543906.520368046243675, 543917.433090076199733, 543928.345830330974422, 543939.258588810218498, 543950.171365513349883, 543961.084160440368578, 543971.996973590692505, 543982.909804964205250, 543993.822654560441151, 544004.735522379050963, 544015.648408419685438, 544026.561312681995332, 544037.474235165864229, 544048.387175870826468, 544059.300134796416387, 544070.213111942284741, 544081.126107308431529, 544092.039120894507505, 544102.952152699697763, 544113.865202724002302, 544124.778270967188291, 544135.691357428790070, 544146.604462108341977, 544157.517585005727597, 544168.430726120481268, 544179.343885452486575, 544190.257063001161441, 544201.170258766156621, 544212.083472747355700, 544222.996704944409430, 544233.909955356852151, 544244.823223984334618, 544255.736510826507583, 544266.649815883254632, 544277.563139153993689, 544288.476480638724752, 544299.389840336632915, 544310.303218247834593, 544321.216614371747710, 544332.130028708139434, 544343.043461256544106, 544353.956912016845308, 544364.870380988577381, 544375.783868171507493, 544386.697373565053567, 544397.610897169215605, 544408.524438983411528, 544419.437999007524922, 544430.351577240857296, 544441.265173683525063, 544452.178788334946148, 544463.092421194887720, 544474.006072262884118, 544484.919741538586095, 544495.833429021877237, 544506.747134712408297, 544517.660858609713614, 544528.574600713327527, 544539.488361023250036, 544550.402139538899064, 544561.315936260158196, 544572.229751186445355, 544583.143584317644127, 544594.057435653288849, 544604.971305193146691, 544615.885192936751992, 544626.799098883871920, 544637.713023034157231, 544648.626965387375094, 544659.540925943059847, 544670.454904700745828, 544681.368901660433039, 544692.282916821655817, 544703.196950183948502, 544714.111001747078262, 544725.025071510812268, 544735.939159474684857, 544746.853265638463199, 544757.767390001565218, 544768.681532564107329, 544779.595693325391039, 544790.509872285299934, 544801.424069443135522, 544812.338284799130633, 544823.252518352586776, 544834.166770103271119, 544845.081040050718002, 544855.995328194811009, 544866.909634534968063, 544877.823959071189165, 544888.738301802892238, 544899.652662729728036, 544910.567041851463728, 544921.481439167866483, 544932.395854678470641, 544943.310288382810540, 544954.224740280886181, 544965.139210372115485, 544976.053698656265624, 544986.968205132987350, 544997.882729801931418, 545008.797272662748583, 545019.711833715206012, 545030.626412958838046, 545041.541010393411852, 545052.455626018578187, 545063.370259833987802, 545074.284911839291453, 545085.199582034256309, 545096.114270418533124, 545107.028976991656236, 545117.943701753509231, 545128.858444703277200, 545139.773205841309391, 545150.687985166790895, 545161.602782679605298, 545172.517598379403353, 545183.432432265719399, 545194.347284338320605, 545205.262154596974142, 545216.177043041097932, 545227.091949670575559, 545238.006874485057779, 545248.921817484195344, 545259.836778667522594, 545270.751758034923114, 545281.666755585931242, 545292.581771320197731, 545303.496805237606168, 545314.411857337341644, 545325.326927619636990, 545336.242016083910130, 545347.157122729695402, 545358.072247556876391, 545368.987390565103851, 545379.902551754028536, 545390.817731123184785, 545401.732928672223352, 545412.648144401027821, 545423.563378309365362, 545434.478630396537483, 545445.393900662311353, 545456.309189106570557, 545467.224495728849433, 545478.139820528798737, 545489.055163506185636, 545499.970524660311639, 545510.885903991409577, 545521.801301498664543, 545532.716717182076536, 545543.632151041179895, 545554.547603075625375, 545565.463073285296559, 545576.378561669494957, 545587.294068227987736, 545598.209592960774899, 545609.125135867157951, 545620.040696946904063, 545630.956276199663989, 545641.871873625321314, 545652.787489223410375, 545663.703122993465513, 545674.618774935137480, 545685.534445048426278, 545696.450133332633413, 545707.365839787758887, 545718.281564413220622, 545729.197307208669372, 545740.113068174105138, 545751.028847308829427, 545761.944644612609409, 545772.860460085095838, 545783.776293726288714, 545794.692145535489544, 545805.608015512465499, 545816.523903656634502, 545827.439809968229383, 545838.355734446551651, 545849.271677091368474, 545860.187637902097777, 545871.103616878739558, 545882.019614020944573, 545892.935629328363575, 545903.851662800414488, 545914.767714436864480, 545925.683784237597138, 545936.599872202263214, 545947.515978330397047, 545958.432102621416561, 545969.348245075554587, 545980.264405692112632, 545991.180584470857866, 546002.096781411208212, 546013.012996513280086, 546023.929229776607826, 546034.845481200609356, 546045.761750785168260, 546056.678038529935293, 546067.594344434677623, 546078.510668498813175, 546089.427010722341947, 546100.343371104449034, 546111.259749645250849, 546122.176146344281733, 546133.092561201192439, 546144.008994215517305, 546154.925445387256332, 546165.841914715827443, 546176.758402200997807, 546187.674907842301764, 546198.591431639622897, 546209.507973592495546, 546220.424533700570464, 546231.341111963498406, 546242.257708381162956, 546253.174322952982038, 546264.090955678839236, 546275.007606558036059, 546285.924275590688922, 546296.840962776448578, 546307.757668114500120, 546318.674391605076380, 546329.591133247362450, 546340.507893041474745, 546351.424670986831188, 546362.341467083082534, 546373.258281329879537, 546384.175113727222197, 546395.091964274412021, 546406.008832971332595, 546416.925719817401841, 546427.842624812503345, 546438.759547956404276, 546449.676489248522557, 546460.593448688508943, 546471.510426276363432, 546482.427422011503950, 546493.344435893581249, 546504.261467922478914, 546515.178518097614869, 546526.095586418756284, 546537.012672885670327, 546547.929777497891337, 546558.846900255186483, 546569.764041157206520, 546580.681200203485787, 546591.598377394024283, 546602.515572728007101, 546613.432786205434240, 546624.350017826189287, 546635.267267589457333, 546646.184535495005548, 546657.101821542833932, 546668.019125732360408, 546678.936448063352145, 546689.853788535343483, 546700.771147147985175, 546711.688523901160806, 546722.605918794404715, 546733.523331827484071, 546744.440762999933213, 546755.358212311519310, 546766.275679761893116, 546777.193165350705385, 546788.110669077606872, 546799.028190942364745, 546809.945730944629759, 546820.863289083936252, 546831.780865360051394, 546842.698459772625938, 546853.616072321427055, 546864.533703005989082, 546875.451351826195605, 546886.369018781231716, 546897.286703871330246, 546908.204407095909119, 546919.122128454735503, 546930.039867947227322, 546940.957625573268160, 546951.875401332625188, 546962.793195224832743, 546973.711007249425165, 546984.628837406286038, 546995.546685695066117, 547006.464552115416154, 547017.382436666870490, 547028.300339349196292, 547039.218260162277147, 547050.136199105530977, 547061.054156178608537, 547071.972131381276995, 547082.890124713187106, 547093.808136173989624, 547104.726165763451718, 547115.644213480991311, 547126.562279326608405, 547137.480363299837336, 547148.398465400328860, 547159.316585627617314, 547170.234723981702700, 547181.152880462002940, 547192.071055068401620, 547202.989247800083831, 547213.907458657282405, 547224.825687639531679, 547235.743934746365994, 547246.662199977552518, 547257.580483332625590, 547268.498784811352380, 547279.417104413383640, 547290.335442138602957, 547301.253797986311838, 547312.172171956393868, 547323.090564048616216, 547334.008974262513220, 547344.927402597502805, 547355.845849053817801, 547366.764313630759716, 547377.682796327979304, 547388.601297145243734, 547399.519816082320176, 547410.438353138742968, 547421.356908314279281, 547432.275481608579867, 547443.194073021179065, 547454.112682551844046, 547465.031310200225562, 547475.949955966207199, 547486.868619849090464, 547497.787301848875359, 547508.706001964979805, 547519.624720197287388, 547530.543456545332447, 547541.462211008882150, 547552.380983587354422, 547563.299774280865677, 547574.218583088601008, 547585.137410010676831, 547596.056255046511069, 547606.975118195870891, 547617.893999458407052, 547628.812898833537474, 547639.731816321262158, 547650.650751921348274, 547661.569705633097328, 547672.488677456392907, 547683.407667390885763, 547694.326675436226651, 547705.245701592066325, 547716.164745858055539, 547727.083808233961463, 547738.002888719551265, 547748.921987314242870, 547759.841104017803445, 547770.760238829883747, 547781.679391750367358, 547792.598562778672203, 547803.517751914565451, 547814.436959157581441, 547825.356184507603757, 547836.275427964283153, 547847.194689527153969, 547858.113969195983373, 547869.033266970422119, 547879.952582850120962, 547890.871916834963486, 547901.791268924134783, 547912.710639117751271, 547923.630027415347286, 547934.549433816689998, 547945.468858321197331, 547956.388300928636454, 547967.307761638890952, 547978.227240451378748, 547989.146737365867011, 548000.066252382006496, 548010.985785499564372, 548021.905336718191393, 548032.824906037538312, 548043.744493457023054, 548054.664098976762034, 548065.583722596173175, 548076.503364314907230, 548087.423024132731371, 548098.342702049179934, 548109.262398064136505, 548120.182112177251838, 548131.101844388060272, 548142.021594696096145, 548152.941363101475872, 548163.861149603500962, 548174.780954201938584, 548185.700776896555908, 548196.620617686887272, 548207.540476572816260, 548218.460353553644381, 548229.380248629371636, 548240.300161799648777, 548251.220093064010143, 548262.140042422222905, 548273.060009873821400, 548283.979995418689214, 548294.899999056360684, 548305.820020786486566, 548316.740060608834028, 548327.660118523053825, 548338.580194528796710, 548349.500288625713438, 548360.420400813571177, 548371.340531091787852, 548382.260679460363463, 548393.180845918832347, 548404.101030466961674, 548415.021233103936538, 548425.941453830222599, 548436.861692645004950, 548447.781949547934346, 548458.702224538661540, 548469.622517617302947, 548480.542828783043660, 548491.463158035883680, 548502.383505375240929, 548513.303870800766163, 548524.224254312342964, 548535.144655909622088, 548546.065075592137873, 548556.985513359541073, 548567.905969211831689, 548578.826443148194812, 548589.746935168746859, 548600.667445272789337, 548611.587973460438661, 548622.508519730996341, 548633.429084084113128, 548644.349666519789025, 548655.270267037325539, 548666.190885636722669, 548677.111522317398340, 548688.032177079236135, 548698.952849921653979, 548709.873540844651870, 548720.794249847647734, 548731.714976930408739, 548742.635722092585638, 548753.556485333712772, 548764.477266653790139, 548775.398066052352078, 548786.318883528816514, 548797.239719083183445, 548808.160572715103626, 548819.081444424111396, 548830.002334209857509, 548840.923242071992718, 548851.844168010517024, 548862.765112024731934, 548873.686074114521034, 548884.607054279302247, 548895.528052519191988, 548906.449068833491765, 548917.370103221968748, 548928.291155684273690, 548939.212226220173761, 548950.133314829319715, 548961.054421511245891, 548971.975546265835874, 548982.896689092624001, 548993.817849991377443, 549004.739028961630538, 549015.660226003150456, 549026.581441115587950, 549037.502674298593774, 549048.423925552051514, 549059.345194875379093, 549070.266482268227264, 549081.187787730479613, 549092.109111261670478, 549103.030452861450613, 549113.951812529470772, 549124.873190265730955, 549135.794586069532670, 549146.715999940643087, 549157.637431878829375, 549168.558881883625872, 549179.480349954799749, 549190.401836092001759, 549201.323340294882655, 549212.244862563093193, 549223.166402896516956, 549234.087961294571869, 549245.009537757141516, 549255.931132283527404, 549266.852744873962365, 549277.774375527631491, 549288.696024244418368, 549299.617691023973748, 549310.539375865948386, 549321.461078770109452, 549332.382799736107700, 549343.304538763477467, 549354.226295851869509, 549365.148071001283824, 549376.069864211138338, 549386.991675481083803, 549397.913504810887389, 549408.835352200199850, 549419.757217648671940, 549430.679101156070828, 549441.601002721814439, 549452.522922346019186, 549463.444860027986579, 549474.366815767483786, 549485.288789564161561, 549496.210781417787075, 549507.132791327894665, 549518.054819294484332, 549528.976865316857584, 549539.898929394665174, 549550.821011527907103, 549561.743111716117710, 549572.665229958947748, 549583.587366255931556, 549594.509520606952719, 549605.431693011661991, 549616.353883469593711, 549627.276091980515048, 549638.198318544193171, 549649.120563160162419, 549660.042825828073546, 549670.965106547810137, 549681.887405318790115, 549692.809722140780650, 549703.732057013548911, 549714.654409936745651, 549725.576780909788795, 549736.499169932678342, 549747.421577004948631, 549758.344002126366831, 549769.266445296350867, 549780.188906515017152, 549791.111385781667195, 549802.033883096068166, 549812.956398457987234, 549823.878931866958737, 549834.801483322633430, 549845.724052824894898, 549856.646640373393893, 549867.569245967431925, 549878.491869607241824, 549889.414511292125098, 549900.337171021848917, 549911.259848795947619, 549922.182544614421204, 549933.105258476804011, 549944.027990382630378, 549954.950740331551060, 549965.873508323449641, 549976.796294358093292, 549987.719098434783518, 549998.641920553403907, 550009.564760713605210, 550020.487618915154599, 550031.410495157586411, 550042.333389440551400, 550053.256301763816737, 550064.179232127149589, 550075.102180529967882, 550086.025146972271614, 550096.948131453362294, 550107.871133973239921, 550118.794154531438835, 550129.717193127609789, 550140.640249761519954, 550151.563324432703666, 550162.486417140928097, 550173.409527885844000, 550184.332656667218544, 550195.255803484586067, 550206.178968337713741, 550217.102151226252317, 550228.025352149852552, 550238.948571108165197, 550249.871808100957423, 550260.795063127763569, 550271.718336188467219, 550282.641627282602713, 550293.564936409820803, 550304.488263569888659, 550315.411608762457035, 550326.334971987176687, 550337.258353243465535, 550348.181752531556413, 550359.105169850750826, 550370.028605200699531, 550380.952058581286110, 550391.875529992044903, 550402.799019432626665, 550413.722526902914979, 550424.646052402211353, 550435.569595930515788, 550446.493157487479039, 550457.416737072519027, 550468.340334685635753, 550479.263950326130725, 550490.187583994120359, 550501.111235689022578, 550512.034905410604551, 550522.958593158284202, 550533.882298932061531, 550544.806022731587291, 550555.729764556395821, 550566.653524405905046, 550577.577302280464210, 550588.501098179258406, 550599.424912102054805, 550610.348744048620574, 550621.272594018373638, 550632.196462011313997, 550643.120348027092405, 550654.044252065126784, 550664.968174125184305, 550675.892114207148552, 550686.816072310437448, 550697.740048434934579, 550708.664042580057867, 550719.588054745807312, 550730.512084931600839, 550741.436133137205616, 550752.360199362039566, 550763.284283606335521, 550774.208385869394988, 550785.132506150985137, 550796.056644450756721, 550806.980800768244080, 550817.904975103447214, 550828.829167455784045, 550839.753377825021744, 550850.677606210694648, 550861.601852612802759, 550872.526117030647583, 550883.450399464112706, 550894.374699912848882, 550905.299018376506865, 550916.223354854853824, 550927.147709347540513, 550938.072081854101270, 550948.996472374070436, 550959.920880907680839, 550970.845307454117574, 550981.769752013264224, 550992.694214584771544, 551003.618695168290287, 551014.543193763354793, 551025.467710369965062, 551036.392244987422600, 551047.316797615843825, 551058.241368254530244, 551069.165956903365441, 551080.090563561883755, 551091.015188229735941, 551101.939830906689167, 551112.864491592510603, 551123.789170286851004, 551134.713866989011876, 551145.638581699226052, 551156.563314416911453, 551167.488065141718835, 551178.412833873182535, 551189.337620611418970, 551200.262425355729647, 551211.187248105765320, 551222.112088861525990, 551233.036947622196749, 551243.961824388010427, 551254.886719158384949, 551265.811631932971068, 551276.736562711303122, 551287.661511493381113, 551298.586478278622963, 551309.511463066795841, 551320.436465857550502, 551331.361486650770530, 551342.286525445873849, 551353.211582242511213, 551364.136657040449791, 551375.061749839456752, 551385.986860639299266, 551396.911989439278841, 551407.837136239395477, 551418.762301038950682, 551429.687483838177286, 551440.612684636260383, 551451.537903433199972, 551462.463140228297561, 551473.388395021669567, 551484.313667812850326, 551495.238958601374179, 551506.164267386891879, 551517.089594169287011, 551528.014938948210329, 551538.940301723196171, 551549.865682494011708, 551560.791081260307692, 551571.716498021618463, 551582.641932777944021, 551593.567385528818704, 551604.492856273660436, 551615.418345012585633, 551626.343851744895801, 551637.269376470590942, 551648.194919188856147, 551659.120479900040664, 551670.046058603329584, 551680.971655298606493, 551691.897269985405728, 551702.822902663378045, 551713.748553332523443, 551724.674221992143430, 551735.599908642238006, 551746.525613281992264, 551757.451335911639035, 551768.377076530596241, 551779.302835138631053, 551790.228611735161394, 551801.154406320187263, 551812.080218893243000, 551823.006049453979358, 551833.931898002279922, 551844.857764537329786, 551855.783649059245363, 551866.709551567677408, 551877.635472062160261, 551888.561410542344674, 551899.487367007997818, 551910.413341458886862, 551921.339333894429728, 551932.265344314510003, 551943.191372718778439, 551954.117419107002206, 551965.043483478482813, 551975.969565833336674, 551986.895666170865297, 551997.821784491068684, 552008.747920793481171, 552019.674075077869929, 552030.600247343652882, 552041.526437590830028, 552052.452645818819292, 552063.378872027387843, 552074.305116216302849, 552085.231378385215066, 552096.157658533658832, 552107.083956661517732, 552118.010272768209688, 552128.936606853618287, 552139.862958917394280, 552150.789328959188424, 552161.715716978651471, 552172.642122975434177, 552183.568546949303709, 552194.494988900027238, 552205.421448827022687, 552216.347926730057225, 552227.274422608898021, 552238.200936463079415, 552249.127468292484991, 552260.054018096649088, 552270.980585875222459, 552281.907171627855860, 552292.833775354432873, 552303.760397054487839, 552314.687036727555096, 552325.613694373634644, 552336.540369992260821, 552347.467063583084382, 552358.393775145639665, 552369.320504679810256, 552380.247252185130492, 552391.174017661600374, 552402.100801108404994, 552413.027602525544353, 552423.954421912669204, 552434.881259269430302, 552445.808114595478401, 552456.734987890347838, 552467.661879153922200, 552478.588788385852240, 552489.515715585905127, 552500.442660753382370, 552511.369623888283968, 552522.296604990377091, 552533.223604059079662, 552544.150621094042435, 552555.077656095265411, 552566.004709062166512, 552576.931779994396493, 552587.858868891838938, 552598.785975753911771, 552609.713100580498576, 552620.640243371366523, 552631.567404125933535, 552642.494582843850367, 552653.421779525000602, 552664.348994169151410, 552675.276226775720716, 552686.203477344242856, 552697.130745874950662, 552708.058032367029227, 552718.985336820362136, 552729.912659234600142, 552740.839999609393999, 552751.767357944510877, 552762.694734239485115, 552773.622128494200297, 552784.549540707957931, 552795.476970880874433, 552806.404419012484141, 552817.331885102321394, 552828.259369150036946, 552839.186871155514382, 552850.114391118404455, 552861.041929038357921, 552871.969484914909117, 552882.897058747825213, 552893.824650536873378, 552904.752260281704366, 552915.679887981852517, 552926.607533637084998, 552937.535197247168981, 552948.462878811638802, 552959.390578330261633, 552970.318295802688226, 552981.246031228569336, 552992.173784607672133, 553003.101555939647369, 553014.029345224145800, 553024.957152460585348, 553035.884977649198845, 553046.812820789171383, 553057.740681880502962, 553068.668560922611505, 553079.596457915380597, 553090.524372858460993, 553101.452305751387030, 553112.380256593925878, 553123.308225385844707, 553134.236212126677856, 553145.164216816192493, 553156.092239454039373, 553167.020280039752834, 553177.948338573216461, 553188.876415054081008, 553199.804509481997229, 553210.732621856615879, 553221.660752177587710, 553232.588900444679894, 553243.517066657543182, 553254.445250815711915, 553265.373452919069678, 553276.301672967267223, 553287.229910959838890, 553298.158166896668263, 553309.086440777173266, 553320.014732601237483, 553330.943042368511669, 553341.871370078646578, 553352.799715731176548, 553363.728079325985163, 553374.656460862723179, 553385.584860341041349, 553396.513277760474011, 553407.441713120904751, 553418.370166421984322, 553429.298637663247064, 553440.227126844576560, 553451.155633965507150, 553462.084159025689587, 553473.012702024891041, 553483.941262962762266, 553494.869841838954017, 553505.798438653117046, 553516.727053405134939, 553527.655686094425619, 553538.584336720989086, 553549.513005283894017, 553560.441691783489659, 553571.370396219193935, 553582.299118590541184, 553593.227858897414990, 553604.156617139349692, 553615.085393316228874, 553626.014187427470461, 553636.942999472841620, 553647.871829452109523, 553658.800677364924923, 553669.729543210938573, 553680.658426989801228, 553691.587328701163642, 553702.516248344909400, 553713.445185920456424, 553724.374141427688301, 553735.303114866022952, 553746.232106235460378, 553757.161115535418503, 553768.090142765780911, 553779.019187926081941, 553789.948251015972346, 553800.877332035335712, 553811.806430983706377, 553822.735547860735096, 553833.664682665956207, 553844.593835399486125, 553855.523006060626358, 553866.452194649260491, 553877.381401164922863, 553888.310625607380643, 553899.239867976284586, 553910.169128271401860, 553921.098406492150389, 553932.027702638413757, 553942.957016709959134, 553953.886348706320859, 553964.815698627149686, 553975.745066472096369, 553986.674452241044492, 553997.603855933528394, 554008.533277549315244, 554019.462717087822966, 554030.392174549051560, 554041.321649932535365, 554052.251143238041550, 554063.180654464988038, 554074.110183613374829, 554085.039730682736263, 554095.969295672839507, 554106.898878583218902, 554117.828479413525201, 554128.758098163641989, 554139.687734833220020, 554150.617389421677217, 554161.547061928897165, 554172.476752354647033, 554183.406460698344745, 554194.336186959990300, 554205.265931138885207, 554216.195693235145882, 554227.125473248073831, 554238.055271177552640, 554248.985087023116648, 554259.914920784533024, 554270.844772461568937, 554281.774642053875141, 554292.704529560985975, 554303.634434982435778, 554314.564358318457380, 554325.494299568352289, 554336.424258731654845, 554347.354235808365047, 554358.284230798017234, 554369.214243700378574, 554380.144274515099823, 554391.074323241715319, 554402.004389879992232, 554412.934474429581314, 554423.864576890249737, 554434.794697261764668, 554445.724835543427616, 554456.654991735354997, 554467.585165836964734, 554478.515357848140411, 554489.445567768183537, 554500.375795597210526, 554511.306041334639303, 554522.236304980237037, 554533.166586533770896, 554544.096885994542390, 554555.027203362784348, 554565.957538637681864, 554576.887891819234937, 554587.818262906861492, 554598.748651900561526, 554609.679058799869381, 554620.609483604319394, 554631.539926313795149, 554642.470386927830987, 554653.400865446194075, 554664.331361868535168, 554675.261876194505021, 554686.192408423870802, 554697.122958556166850, 554708.053526591276750, 554718.984112528851256, 554729.914716368191876, 554740.845338109531440, 554751.775977752171457, 554762.706635295879096, 554773.637310740537941, 554784.568004085449502, 554795.498715330497362, 554806.429444475448690, 554817.360191519954242, 554828.290956463431939, 554839.221739305881783, 554850.152540046838112, 554861.083358686184511, 554872.014195223106071, 554882.945049657835625, 554893.875921989791095, 554904.806812218739651, 554915.737720344099216, 554926.668646365869790, 554937.599590283469297, 554948.530552097014152, 554959.461531805689447, 554970.392529409378767, 554981.323544907732867, 554992.254578300518915, 555003.185629587387666, 555014.116698767757043, 555025.047785841743462, 555035.978890808881260, 555046.910013668704778, 555057.841154420981184, 555068.772313065244816, 555079.703489601612091, 555090.634684029268101, 555101.565896348096430, 555112.497126557747833, 555123.428374657989480, 555134.359640648472123, 555145.290924528846517, 555156.222226298763417, 555167.153545957873575, 555178.084883505944163, 555189.016238942625932, 555199.947612267569639, 555210.879003480426036, 555221.810412581078708, 555232.741839569061995, 555243.673284443910234, 555254.604747205390595, 555265.536227853386663, 555276.467726387549192, 555287.399242807296105, 555298.330777112510987, 555309.262329302611761, 555320.193899377714843, 555331.125487337121740, 555342.057093180716038, 555352.988716908148490, 555363.920358518953435, 555374.852018013014458, 555385.783695389982313, 555396.715390649274923, 555407.647103791008703, 555418.578834814601578, 555429.510583719820715, 555440.442350506200455, 555451.374135173275135, 555462.305937721277587, 555473.237758149509318, 555484.169596457621083, 555495.101452645380050, 555506.033326712553389, 555516.965218658791855, 555527.897128483629785, 555538.829056186717935, 555549.761001768056303, 555560.692965227179229, 555571.624946563621052, 555582.556945777148940, 555593.488962867413647, 555604.420997834065929, 555615.353050676989369, 555626.285121395718306, 555637.217209989903495, 555648.149316459195688, 555659.081440803594887, 555670.013583022402599, 555680.945743115385994, 555691.877921082195826, 555702.810116922715679, 555713.742330636479892, 555724.674562223255634, 555735.606811682344414, 555746.539079014095478, 555757.471364217577502, 555768.403667293023318, 555779.335988239385188, 555790.268327057012357, 555801.200683745439164, 555812.133058304199949, 555823.065450732945465, 555833.997861031442881, 555844.930289199342951, 555855.862735236412846, 555866.795199142303318, 555877.727680916665122, 555888.660180559149012, 555899.592698069405742, 555910.525233447202481, 555921.457786692189984, 555932.390357804135419, 555943.322946782573126, 555954.255553627270274, 555965.188178337877616, 555976.120820914045908, 555987.053481355425902, 555997.986159662017599, 556008.918855833006091, 556019.851569868391380, 556030.784301767824218, 556041.717051530838944, 556052.649819157319143, 556063.582604646799155, 556074.515407998929732, 556085.448229213478044, 556096.381068290327676, 556107.313925228780136, 556118.246800028602593, 556129.179692689678632, 556140.112603211426176, 556151.045531593961641, 556161.978477836353704, 556172.911441938718781, 556183.844423900591210, 556194.777423721854575, 556205.710441401810385, 556216.643476940342225, 556227.576530337217264, 556238.509601591969840, 556249.442690704483539, 556260.375797674176283, 556271.308922500931658, 556282.242065184167586, 556293.175225724000484, 556304.108404119615443, 556315.041600371128879, 556325.974814477958716, 556336.908046439872123, 556347.841296256636269, 556358.774563927552663, 556369.707849452737719, 556380.641152831842192, 556391.574474064284004, 556402.507813149946742, 556413.441170088364743, 556424.374544879421592, 556435.307937522651628, 556446.241348017705604, 556457.174776364234276, 556468.108222562237643, 556479.041686611017212, 556489.975168510456569, 556500.908668260090053, 556511.842185859801248, 556522.775721309240907, 556533.709274607826956, 556544.642845755442977, 556555.576434751856141, 556566.510041596600786, 556577.443666289444081, 556588.377308830153197, 556599.310969217913225, 556610.244647453073412, 556621.178343534935266, 556632.112057463382371, 556643.045789237832651, 556653.979538858169690, 556664.913306323927827, 556675.847091634990647, 556686.780894790892489, 556697.714715791167691, 556708.648554636049084, 556719.582411324605346, 556730.516285856836475, 556741.450178232276812, 556752.384088450693525, 556763.318016511853784, 556774.251962415291928, 556785.185926160658710, 556796.119907747837715, 556807.053907176363282, 556817.987924446002580, 556828.921959556173533, 556839.856012506876141, 556850.790083297644742, 556861.724171928362921, 556872.658278398448601, 556883.592402707436122, 556894.526544855558313, 556905.460704842000268, 556916.394882666878402, 556927.329078329377808, 556938.263291829498485, 556949.197523166891187, 556960.131772341206670, 556971.066039352212101, 556982.000324199208990, 556992.934626882430166, 557003.868947401293553, 557014.803285755333491, 557025.737641944317147, 557036.672015968244523, 557047.606407826417126, 557058.540817518718541, 557069.475245044683106, 557080.409690403961577, 557091.344153596553952, 557102.278634621761739, 557113.213133479584940, 557124.147650169325061, 557135.082184691098519, 557146.016737044323236, 557156.951307228766382, 557167.885895243962295, 557178.820501089794561, 557189.755124765913934, 557200.689766271971166, 557211.624425607617013, 557222.559102772385813, 557233.493797766161151, 557244.428510588826612, 557255.363241239683703, 557266.297989718383178, 557277.232756024925038, 557288.167540158960037, 557299.102342119906098, 557310.037161907763220, 557320.971999521716498, 557331.906854961998761, 557342.841728228027932, 557353.776619319571182, 557364.711528236162849, 557375.646454977686517, 557386.581399543792941, 557397.516361934016459, 557408.451342148007825, 557419.386340185650624, 557430.321356046595611, 557441.256389730493538, 557452.191441236995161, 557463.126510565634817, 557474.061597716296092, 557484.996702688746154, 557495.931825482519343, 557506.866966097149998, 557517.802124532638118, 557528.737300788518041, 557539.672494864440523, 557550.607706760172732, 557561.542936475132592, 557572.478184009436518, 557583.413449362502433, 557594.348732533981092, 557605.284033523639664, 557616.219352331128903, 557627.154688956099562, 557638.090043398435228, 557649.025415657437406, 557659.960805733222514, 557670.896213625324890, 557681.831639333162457, 557692.767082856735215, 557703.702544195577502, 557714.638023349572904, 557725.573520318139344, 557736.509035101043992, 557747.444567697821185, 557758.380118108470924, 557769.315686332527548, 557780.251272369758226, 557791.186876219697297, 557802.122497881995514, 557813.058137356536463, 557823.993794642854482, 557834.929469740716740, 557845.865162649541162, 557856.800873369560577, 557867.736601899960078, 557878.672348240623251, 557889.608112391084433, 557900.543894351343624, 557911.479694120818749, 557922.415511699276976, 557933.351347086369060, 557944.287200281629339, 557955.223071284941398, 557966.158960096188821, 557977.094866714673117, 557988.030791140161455, 557998.966733372304589, 558009.902693411102518, 558020.838671255973168, 558031.774666906567290, 558042.710680362535641, 558053.646711623878218, 558064.582760690012947, 558075.518827560590580, 558086.454912235261872, 558097.391014714026824, 558108.327134996303357, 558119.263273081858642, 558130.199428970343433, 558141.135602661292069, 558152.071794154704548, 558163.008003450231627, 558173.944230547291227, 558184.880475445650518, 558195.816738145076670, 558206.753018645220436, 558217.689316945848987, 558228.625633046380244, 558239.561966946814209, 558250.498318646801636, 558261.434688145760447, 558272.371075443690643, 558283.307480539893731, 558294.243903434486128, 558305.180344126885757, 558316.116802616859786, 558327.053278903942555, 558337.989772988134064, 558348.926284868852235, 558359.862814545864239, 558370.799362018820830, 558381.735927287372760, 558392.672510351287201, 558403.609111210331321, 558414.545729864039458, 558425.482366312062368, 558436.419020554167219, 558447.355692590004764, 558458.292382419458590, 558469.229090041830204, 558480.165815457003191, 558491.102558664744720, 558502.039319664705545, 558512.976098456536420, 558523.912895039771684, 558534.849709414294921, 558545.786541579640470, 558556.723391535691917, 558567.660259281867184, 558578.597144818049856, 558589.534048144007102, 558600.470969259156846, 558611.407908163382672, 558622.344864856102504, 558633.281839337432757, 558644.218831606791355, 558655.155841663829051, 558666.092869508313015, 558677.029915139777586, 558687.966978558222763, 558698.904059763066471, 558709.841158753959462, 558720.778275530785322, 558731.715410093194805, 558742.652562440838665, 558753.589732573251240, 558764.526920490199700, 558775.464126191451214, 558786.401349676772952, 558797.338590945699252, 558808.275849997648038, 558819.213126832852140, 558830.150421450729482, 558841.087733850930817, 558852.025064033223316, 558862.962411997141317, 558873.899777742568403, 558884.837161269038916, 558895.774562576320022, 558906.711981664062478, 558917.649418531917036, 558928.586873179650865, 558939.524345606914721, 558950.461835813359357, 558961.399343798519112, 558972.336869562510401, 558983.274413104634732, 558994.211974424775690, 559005.149553522351198, 559016.087150397361256, 559027.024765049340203, 559037.962397477938794, 559048.900047682924196, 559059.837715663947165, 559070.775401420774870, 559081.713104952941649, 559092.650826260331087, 559103.588565342244692, 559114.526322198798880, 559125.464096829411574, 559136.401889233966358, 559147.339699411881156, 559158.277527363039553, 559169.215373087208718, 559180.153236583806574, 559191.091117852716707, 559202.029016893473454, 559212.966933705843985, 559223.904868289595470, 559234.842820644378662, 559245.780790769727901, 559256.718778665410355, 559267.656784331309609, 559278.594807766727172, 559289.532848971546628, 559300.470907945535146, 559311.408984688343480, 559322.347079199738801, 559333.285191479022615, 559344.223321526194923, 559355.161469340906478, 559366.099634922808036, 559377.037818271666765, 559387.976019386900589, 559398.914238268509507, 559409.852474916027859, 559420.790729329339229, 559431.729001507745124, 559442.667291451129131, 559453.605599159258418, 559464.543924631667323, 559475.482267868355848, 559486.420628868509084, 559497.359007632127032, 559508.297404158976860, 559519.235818448360078, 559530.174250500509515, 559541.112700314493850, 559552.051167890429497, 559562.989653227967210, 559573.928156326641329, 559584.866677186102606, 559595.805215806234628, 559606.743772186688147, 559617.682346326997504, 559628.620938226929866, 559639.559547886252403, 559650.498175304499455, 559661.436820481438190, 559672.375483416719362, 559683.314164109993726, 559694.252862561028451, 559705.191578769590706, 559716.130312735214829, 559727.069064457435161, 559738.007833936251700, 559748.946621171315201, 559759.885426162160002, 559770.824248908553272, 559781.763089410145767, 559792.701947666588239, 559803.640823677647859, 559814.579717442975380, 559825.518628962105140, 559836.457558235037141, 559847.396505261305720, 559858.335470040445216, 559869.274452572339214, 559880.213452856522053, 559891.152470892877318, 559902.091506680939347, 559913.030560220475309, 559923.969631511019543, 559934.908720552455634, 559945.847827344317921, 559956.786951886373572, 559967.726094178389758, 559978.665254219551571, 559989.604432010324672, 560000.543627549894154, 560011.482840838143602, 560022.422071874490939, 560033.361320658819750, 560044.300587190897204, 560055.239871470257640, 560066.179173496668227, 560077.118493269663304, 560088.057830789242871, 560098.997186054708436, 560109.936559066059999, 560120.875949822715484, 560131.815358324558474, 560142.754784571356140, 560153.694228562526405, 560164.633690297720022, 560175.573169776936993, 560186.512666999828070, 560197.452181965811178, 560208.391714674886316, 560219.331265126238577, 560230.270833320217207, 560241.210419256007299, 560252.150022933492437, 560263.089644352206960, 560274.029283512150869, 560284.968940412625670, 560295.908615053631365, 560306.848307434818707, 560317.788017555605620, 560328.727745415992104, 560339.667491015396081, 560350.607254353817552, 560361.547035430441611, 560372.486834245501086, 560383.426650798413903, 560394.366485088830814, 560405.306337116518989, 560416.246206881245598, 560427.186094382544979, 560438.125999620184302, 560449.065922593814321, 560460.005863302969374, 560470.945821747765876, 560481.885797927388921, 560492.825791841954924, 560503.765803490765393, 560514.705832873820327, 560525.645879990537651, 560536.585944840917364, 560547.526027424377389, 560558.466127740568481, 560569.406245789490640, 560580.346381570561789, 560591.286535083665513, 560602.226706328103319, 560613.166895303991623, 560624.107102010864764, 560635.047326448373497, 560645.987568616168573, 560656.927828514017165, 560667.868106141570024, 560678.808401498594321, 560689.748714584624395, 560700.689045399310999, 560711.629393942537718, 560722.569760214071721, 560733.510144213330932, 560744.450545940082520, 560755.390965393860824, 560766.331402574782260, 560777.271857482148334, 560788.212330115842633, 560799.152820475166664, 560810.093328560469672, 560821.033854371053167, 560831.974397906567901, 560842.914959166664630, 560853.855538151226938, 560864.796134859905578, 560875.736749292234890, 560886.677381448098458, 560897.618031326914206, 560908.558698928565718, 560919.499384252703749, 560930.440087299095467, 560941.380808067158796, 560952.321546556893736, 560963.262302768067457, 560974.203076699865051, 560985.143868352402933, 560996.084677725099027, 561007.025504817836918, 561017.966349630150944, 561028.907212162041105, 561039.848092412692495, 561050.788990382105112, 561061.729906070162542, 561072.670839476049878, 561083.611790599883534, 561094.552759440965019, 561105.493745999294333, 561116.434750274522230, 561127.375772266299464, 561138.316811974043958, 561149.257869397872128, 561160.198944537201896, 561171.140037391916849, 561182.081147961434908, 561193.022276245639659, 561203.963422244181857, 561214.904585956712253, 561225.845767382998019, 561236.786966522573493, 561247.728183375205845, 561258.669417940778658, 561269.610670218593441, 561280.551940208533779, 561291.493227910366841, 561302.434533323626965, 561313.375856448197737, 561324.317197283613496, 561335.258555829408579, 561346.199932085582986, 561357.141326051671058, 561368.082737727439962, 561379.024167112307623, 561389.965614206390455, 561400.907079009106383, 561411.848561520106159, 561422.790061739273369, 561433.731579665909521, 561444.673115300247446, 561455.614668641472235, 561466.556239689700305, 561477.497828444233164, 561488.439434905070812, 561499.381059071631171, 561510.322700943797827, 561521.264360521221533, 561532.206037803436629, 561543.147732790443115, 561554.089445481658913, 561565.031175876851194, 561575.972923975554295, 561586.914689777768217, 561597.856473283027299, 561608.798274490865879, 561619.740093401283957, 561630.681930013583042, 561641.623784327763133, 561652.565656343474984, 561663.507546060252935, 561674.449453477864154, 561685.391378596075810, 561696.333321414422244, 561707.275281932787038, 561718.217260150704533, 561729.159256067709066, 561740.101269683800638, 561751.043300998630002, 561761.985350011731498, 561772.927416722639464, 561783.869501131470315, 561794.811603237758391, 561805.753723041038029, 561816.695860541076399, 561827.638015737407841, 561838.580188630148768, 561849.522379218600690, 561860.464587502647191, 561871.406813481589779, 561882.349057155777700, 561893.291318524279632, 561904.233597587211989, 561915.175894343992695, 561926.118208794505335, 561937.060540938284248, 561948.002890775213018, 561958.945258304593153, 561969.887643526424654, 561980.830046440474689, 561991.772467046161182, 562002.714905343367718, 562013.657361331512220, 562024.599835010594688, 562035.542326380265877, 562046.484835440176539, 562057.427362189744599, 562068.369906628970057, 562079.312468757387251, 562090.255048574879766, 562101.197646080981940, 562112.140261275228113, 562123.082894157618284, 562134.025544727686793, 562144.968212985200807, 562155.910898929811083, 562166.853602560935542, 562177.796323878574185, 562188.739062882494181, 562199.681819572113454, 562210.624593947082758, 562221.567386007402092, 562232.510195752605796, 562243.453023182461038, 562254.395868296385743, 562265.338731094263494, 562276.281611575861461, 562287.224509740713984, 562298.167425588588230, 562309.110359119018540, 562320.053310332004912, 562330.996279226965271, 562341.939265803666785, 562352.882270061760210, 562363.825292001012713, 562374.768331621191464, 562385.711388921714388, 562396.654463902581483, 562407.597556563094258, 562418.540666903252713, 562429.483794922707602, 562440.426940621109679, 562451.370103998109698, 562462.313285053241998, 562473.256483786622994, 562484.199700197554193, 562495.142934286035597, 562506.086186051252298, 562517.029455493437126, 562527.972742612008005, 562538.916047406732105, 562549.859369877260178, 562560.802710023242980, 562571.746067844447680, 562582.689443340525031, 562593.632836511125788, 562604.576247355900705, 562615.519675874733366, 562626.463122067158110, 562637.406585932825692, 562648.350067471503280, 562659.293566682958044, 562670.237083566724323, 562681.180618122569285, 562692.124170350143686, 562703.067740249098279, 562714.011327819316648, 562724.954933060216717, 562735.898555971682072, 562746.842196553247049, 562757.785854804795235, 562768.729530725860968, 562779.673224316211417, 562790.616935575497337, 562801.560664503253065, 562812.504411099595018, 562823.448175363708287, 562834.391957295709290, 562845.335756894783117, 562856.279574161162600, 562867.223409094265662, 562878.167261693743058, 562889.111131959361956, 562900.055019890773110, 562910.998925487860106, 562921.942848750040866, 562932.886789677082561, 562943.830748268635944, 562954.774724524351768, 562965.718718444230035, 562976.662730027688667, 562987.606759274494834, 562998.550806184182875, 563009.494870756519958, 563020.438952991389669, 563031.383052888442762, 563042.327170446980745, 563053.271305667120032, 563064.215458548394963, 563075.159629090572707, 563086.103817293071188, 563097.048023155773990, 563107.992246678448282, 563118.936487860861234, 563129.880746702314354, 563140.825023202691227, 563151.769317361875437, 563162.713629179284908, 563173.657958654803224, 563184.602305787964724, 563195.546670578420162, 563206.491053026053123, 563217.435453130514361, 563228.379870891454630, 563239.324306308291852, 563250.268759381258860, 563261.213230109540746, 563272.157718493137509, 563283.102224531699903, 563294.046748224645853, 563304.991289571975358, 563315.935848573339172, 563326.880425228388049, 563337.825019536539912, 563348.769631497911178, 563359.714261112036183, 563370.658908378449269, 563381.603573297034018, 563392.548255867324769, 563403.492956089088693, 563414.437673962209374, 563425.382409485988319, 563436.327162660309114, 563447.271933484822512, 563458.216721959295683, 563469.161528083495796, 563480.106351856840774, 563491.051193279097788, 563501.996052350150421, 563512.940929069649428, 563523.885823437012732, 563534.830735452123918, 563545.775665114750154, 563556.720612424425781, 563567.665577381034382, 563578.610559983993880, 563589.555560233071446, 563600.500578128150664, 563611.445613668765873, 563622.390666854567826, 563633.335737685323693, 563644.280826160684228, 563655.225932280416600, 563666.171056044171564, 563677.116197451483458, 563688.061356502235867, 563699.006533196079545, 563709.951727532548830, 563720.896939511643723, 563731.842169132665731, 563742.787416395614855, 563753.732681300025433, 563764.677963845781051, 563775.623264032299630, 563786.568581859348342, 563797.513917326694354, 563808.459270434104837, 563819.404641180997714, 563830.350029567256570, 563841.295435592532158, 563852.240859256591648, 563863.186300558969378, 563874.131759499432519, 563885.077236077631824, 563896.022730293450877, 563906.968242146424018, 563917.913771636202000, 563928.859318762202747, 563939.804883524775505, 563950.750465923221782, 563961.696065957192332, 563972.641683626337908, 563983.587318930542096, 563994.532971869572066, 564005.478642442729324, 564016.424330650013871, 564027.370036490960047, 564038.315759965451434, 564049.261501072905958, 564060.207259813323617, 564071.153036186005920, 564082.098830191069283, 564093.044641827931628, 564103.990471096360125, 564114.936317996005528, 564125.882182526635006, 564136.828064687782899, 564147.773964479332790, 564158.719881900819018, 564169.665816952008754, 564180.611769632669166, 564191.557739942218177, 564202.503727880772203, 564213.449733447516337, 564224.395756642566994, 564235.341797465342097, 564246.287855915725231, 564257.233931993134320, 564268.180025697569363, 564279.126137028564699, 564290.072265985887498, 564301.018412569072098, 564311.964576778002083, 564322.910758612211794, 564333.856958071351983, 564344.803175155422650, 564355.749409863725305, 564366.695662196143530, 564377.641932152328081, 564388.588219732162543, 564399.534524934948422, 564410.480847760802135, 564421.427188209025189, 564432.373546279617585, 564443.319921971880831, 564454.266315286047757, 564465.212726221303456, 564476.159154777647927, 564487.105600954731926, 564498.052064752089791, 564508.998546169605106, 564519.945045206579380, 564530.891561863245443, 564541.838096139137633, 564552.784648033673875, 564563.731217546737753, 564574.677804677980021, 564585.624409427167848, 564596.571031793951988, 564607.517671777983196, 564618.464329378795810, 564629.411004596389830, 564640.357697430416010, 564651.304407880408689, 564662.251135946018621, 564673.197881627012976, 564684.144644923275337, 564695.091425834223628, 564706.038224359741434, 564716.985040499130264, 564727.931874252622947, 564738.878725619637407, 564749.825594599824399, 564760.772481192951091, 564771.719385398668237, 564782.666307216743007, 564793.613246646709740, 564804.560203688568436, 564815.507178341504186, 564826.454170605749823, 564837.401180480490439, 564848.348207965958863, 564859.295253061223775, 564870.242315766634420, 564881.189396081375889, 564892.136494005448185, 564903.083609538269229, 564914.030742679722607, 564924.977893429459073, 564935.925061787129380, 564946.872247752500698, 564957.819451324990951, 564968.766672504716553, 564979.713911291211843, 564990.661167684011161, 565001.608441682998091, 565012.555733287590556, 565023.503042497788556, 565034.450369313242845, 565045.397713733371347, 565056.345075758057646, 565067.292455387185328, 565078.239852620172314, 565089.187267456669360, 565100.134699896560051, 565111.082149939378724, 565122.029617584892549, 565132.977102832868695, 565143.924605682841502, 565154.872126134578139, 565165.819664187845774, 565176.767219842178747, 565187.714793097460642, 565198.662383953109384, 565209.609992408892140, 565220.557618464808911, 565231.505262120277621, 565242.452923374949023, 565253.400602228706703, 565264.348298680852167, 565275.296012731618248, 565286.243744380306453, 565297.191493626800366, 565308.139260470517911, 565319.087044911575504, 565330.034846949507482, 565340.982666583731771, 565351.930503814248368, 565362.878358640475199, 565373.826231062412262, 565384.774121079710312, 565395.722028691787273, 565406.669953898410313, 565417.617896699579433, 565428.565857094712555, 565439.513835083576851, 565450.461830665823072, 565461.409843840985559, 565472.357874609180726, 565483.305922969710082, 565494.253988922457211, 565505.202072466840036, 565516.150173602974974, 565527.098292330396362, 565538.046428648638539, 565548.994582557585090, 565559.942754056653939, 565570.890943145845085, 565581.839149824809283, 565592.787374093080871, 565603.735615950194187, 565614.683875396265648, 565625.632152430829592, 565636.580447053536773, 565647.528759263921529, 565658.477089061983861, 565669.425436447141692, 565680.373801419162191, 565691.322183977928944, 565702.270584122859873, 565713.219001853838563, 565724.167437170515768, 565735.115890072542243, 565746.064360559568740, 565757.012848631246015, 565767.961354287457652, 565778.909877527737990, 565789.858418351854198, 565800.806976759340614, 565811.755552750197239, 565822.704146323958412, 565833.652757480158471, 565844.601386218797415, 565855.550032539060339, 565866.498696441296488, 565877.447377924690954, 565888.396076989243738, 565899.344793634372763, 565910.293527859961614, 565921.242279665777460, 565932.191049051238224, 565943.139836016227491, 565954.088640560279600, 565965.037462683394551, 565975.986302384873852, 565986.935159664717503, 565997.884034522459842, 566008.832926957751624, 566019.781836970476434, 566030.730764560168609, 566041.679709726595320, 566052.628672469407320, 566063.577652788255364, 566074.526650682906620, 566085.475666153011844, 566096.424699198221788, 566107.373749818303622, 566118.322818013024516, 566129.271903781918809, 566140.221007124753669, 566151.170128041063435, 566162.119266530964524, 566173.068422593525611, 566184.017596229095943, 566194.966787436744198, 566205.915996216586791, 566216.865222568158060, 566227.814466491341591, 566238.763727985438891, 566249.713007050333545, 566260.662303685909137, 566271.611617891816422, 566282.560949667473324, 566293.510299012530595, 566304.459665927221067, 566315.409050410729833, 566326.358452462940477, 566337.307872083620168, 566348.257309272070415, 566359.206764028524049, 566370.156236352282576, 566381.105726243345998, 566392.055233700899407, 566403.004758725292049, 566413.954301315709017, 566424.903861472150311, 566435.853439194033854, 566446.803034481243230, 566457.752647333429195, 566468.702277750358917, 566479.651925731566735, 566490.601591276819818, 566501.551274385652505, 566512.500975058181211, 566523.450693293707445, 566534.400429091998376, 566545.350182452704757, 566556.299953375826590, 566567.249741860781796, 566578.199547907221131, 566589.149371515028179, 566600.099212683737278, 566611.049071413115598, 566621.998947702697478, 566632.948841552599333, 566643.898752961889841, 566654.848681930801831, 566665.798628458753228, 566676.748592545627616, 566687.698574190959334, 566698.648573394282721, 566709.598590155597776, 566720.548624474555254, 566731.498676350689493, 566742.448745783767663, 566753.398832773556933, 566764.348937319708057, 566775.299059421871789, 566786.249199079582468, 566797.199356292840093, 566808.149531061179005, 566819.099723384366371, 566830.049933262052946, 566841.000160693656653, 566851.950405679410324, 566862.900668218615465, 566873.850948311039247, 566884.801245956565253, 566895.751561154494993, 566906.701893904944882, 566917.652244207332842, 566928.602612061542459, 566939.552997466991656, 566950.503400423564017, 566961.453820931026712, 566972.404258988797665, 566983.354714596993290, 566994.305187754798681, 567005.255678462213837, 567016.206186719005927, 567027.156712524709292, 567038.107255878858268, 567049.057816781569272, 567060.008395232143812, 567070.958991230581887, 567081.909604776301421, 567092.860235869069584, 567103.810884508653544, 567114.761550694820471, 567125.712234427104704, 567136.662935705156997, 567147.613654528860934, 567158.564390897750854, 567169.515144811593927, 567180.465916270157322, 567191.416705272975378, 567202.367511819815263, 567213.318335910327733, 567224.269177544279955, 567235.220036721206270, 567246.170913440873846, 567257.121807703282684, 567268.072719507617876, 567279.023648853995837, 567289.974595741718076, 567300.925560170901008, 567311.876542140962556, 567322.827541651669890, 567333.778558702673763, 567344.729593293508515, 567355.680645424174145, 567366.631715094321407, 567377.582802303601056, 567388.533907051431015, 567399.485029337927699, 567410.436169162509032, 567421.387326524942182, 567432.338501425110735, 567443.289693862199783, 567454.240903836442158, 567465.192131347372197, 567476.143376394407824, 567487.094638977665454, 567498.045919096446596, 567508.997216750751249, 567519.948531940113753, 567530.899864664301276, 567541.851214922848158, 567552.802582715637982, 567563.753968042321503, 567574.705370902665891, 567585.656791295972653, 567596.608229222474620, 567607.559684681473300, 567618.511157672968693, 567629.462648196262307, 567640.414156251237728, 567651.365681837778538, 567662.317224955419078, 567673.268785603810102, 567684.220363782602362, 567695.171959491679445, 567706.123572730575688, 567717.075203499058262, 567728.026851796777919, 567738.978517623268999, 567749.930200978647918, 567760.881901862332597, 567771.833620273973793, 567782.785356213222258, 567793.737109680077992, 567804.688880673842505, 567815.640669194632210, 567826.592475241748616, 567837.544298815075308, 567848.496139914263040, 567859.447998539078981, 567870.399874689057469, 567881.351768364082091, 567892.303679563570768, 567903.255608287639916, 567914.207554535591044, 567925.159518307307735, 567936.111499602324329, 567947.063498420640826, 567958.015514761791565, 567968.967548625310883, 567979.919600010965951, 567990.871668918523937, 568001.823755347752012, 568012.775859298184514, 568023.727980769588612, 568034.680119761615060, 568045.632276273914613, 568056.584450306370854, 568067.536641858634539, 568078.488850930240005, 568089.441077520954423, 568100.393321630428545, 568111.345583258429542, 568122.297862404724583, 568133.250159068731591, 568144.202473250450566, 568155.154804949532263, 568166.107154165394604, 568177.059520898037590, 568188.011905146879144, 568198.964306911919266, 568209.916726192808710, 568220.869162988848984, 568231.821617300156504, 568242.774089126265608, 568253.726578466943465, 568264.679085321840830, 568275.631609690608457, 568286.584151572897099, 568297.536710968590342, 568308.489287877222523, 568319.441882298560813, 568330.394494232255965, 568341.347123677958734, 568352.299770635436289, 568363.252435104339384, 568374.205117084551603, 568385.157816575258039, 568396.110533576807939, 568407.063268088502809, 568418.016020109993406, 568428.968789641163312, 568439.921576681663282, 568450.874381231144071, 568461.827203289372846, 568472.780042855883949, 568483.732899930444546, 568494.685774512938224, 568505.638666602782905, 568516.591576199862175, 568527.544503303710371, 568538.497447913978249, 568549.450410030665807, 568560.403389653307386, 568571.356386781437322, 568582.309401414939202, 568593.262433553463779, 568604.215483196778223, 568615.168550344416872, 568626.121634996146895, 568637.074737151502632, 568648.027856810600497, 568658.980993972625583, 568669.934148637694307, 568680.887320805224590, 568691.840510475100018, 568702.793717646854930, 568713.746942320372909, 568724.700184495188296, 568735.653444170835428, 568746.606721347314306, 568757.560016024275683, 568768.513328201370314, 568779.466657878248952, 568790.420005054445937, 568801.373369730077684, 568812.326751904445700, 568823.280151577549987, 568834.233568748575635, 568845.187003417871892, 568856.140455584740266, 568867.093925249064341, 568878.047412410378456, 568889.000917068333365, 568899.954439222812653, 568910.907978873467073, 568921.861536019830965, 568932.815110661671497, 568943.768702798872255, 568954.722312430967577, 568965.675939557608217, 568976.629584178561345, 568987.583246293361299, 568998.536925902008079, 569009.490623003919609, 569020.444337599095888, 569031.398069686722010, 569042.351819267030805, 569053.305586339556612, 569064.259370903717354, 569075.213172959629446, 569086.166992506594397, 569097.120829544612207, 569108.074684073100798, 569119.028556092060171, 569129.982445600908250, 569140.936352599528618, 569151.890277087572031, 569162.844219064572826, 569173.798178530531004, 569184.752155484864488, 569195.706149927340448, 569206.660161857726052, 569217.614191275788471, 569228.568238180945627, 569239.522302573081106, 569250.476384451962076, 569261.430483817006461, 569272.384600668330677, 569283.338735005119815, 569294.292886827373877, 569305.247056134976447, 569316.201242927229032, 569327.155447204015218, 569338.109668964869343, 569349.063908209674992, 569360.018164938315749, 569370.972439149976708, 569381.926730844541453, 569392.881040022009984, 569403.835366681800224, 569414.789710823562928, 569425.744072447181679, 569436.698451551957987, 569447.652848138241097, 569458.607262205099687, 569469.561693752766587, 569480.516142780426890, 569491.470609287964180, 569502.425093275262043, 569513.379594741854817, 569524.334113687509671, 569535.288650111644529, 569546.243204014375806, 569557.197775395121425, 569568.152364253648557, 569579.106970589724369, 569590.061594402883202, 569601.016235692892224, 569611.970894459518604, 569622.925570702413097, 569633.880264421110041, 569644.834975615609437, 569655.789704285445623, 569666.744450430269353, 569677.699214049847797, 569688.653995143715292, 569699.608793711871840, 569710.563609753735363, 569721.518443269189447, 569732.473294257768430, 569743.428162719239481, 569754.383048653369769, 569765.337952059693635, 569776.292872938094661, 569787.247811288107187, 569798.202767109498382, 569809.157740401919000, 569820.112731165252626, 569831.067739398917183, 569842.022765102679841, 569852.977808276191354, 569863.932868919568136, 569874.887947031995282, 569885.843042613239959, 569896.798155663185753, 569907.753286181483418, 569918.708434167900123, 569929.663599621970206, 569940.618782543344423, 569951.573982931789942, 569962.529200787073933, 569973.484436108963564, 569984.439688896876760, 569995.394959150697105, 570006.350246870191768, 570017.305552054895088, 570028.260874704574235, 570039.216214818763547, 570050.171572397346608, 570061.126947440090589, 570072.082339946529828, 570083.037749916431494, 570093.993177349329926, 570104.948622245225124, 570115.904084603651427, 570126.859564424259588, 570137.815061706700362, 570148.770576450857334, 570159.726108656264842, 570170.681658322573639, 570181.637225449667312, 570192.592810037080199, 570203.548412084579468, 570214.504031591932289, 570225.459668558789417, 570236.415322984685190, 570247.370994869503193, 570258.326684212894179, 570269.282391014625318, 570280.238115274230950, 570291.193856991245411, 570302.149616165901534, 570313.105392797500826, 570324.061186885810457, 570335.016998430597596, 570345.972827431512997, 570356.928673888090998, 570367.884537800331600, 570378.840419167885557, 570389.796317989937961, 570400.752234266954474, 570411.708167998120189, 570422.664119183435105, 570433.620087822317146, 570444.576073914417066, 570455.532077459734865, 570466.488098457921296, 570477.444136908394285, 570488.400192810920998, 570499.356266165617853, 570510.312356971786357, 570521.268465229077265, 570532.224590937490575, 570543.180734096211381, 570554.136894705588929, 570565.093072764924727, 570576.049268273869529, 570587.005481232306920, 570597.961711639771238, 570608.917959496146068, 570619.874224801082164, 570630.830507554230280, 570641.786807755008340, 570652.743125403649174, 570663.699460499454290, 570674.655813042307273, 570685.612183031742461, 570696.568570467643440, 570707.524975349660963, 570718.481397677329369, 570729.437837450532243, 570740.394294668803923, 570751.350769331911579, 570762.307261439622380, 570773.263770991703495, 570784.220297987689264, 570795.176842427114025, 570806.133404309977777, 570817.089983635931276, 570828.046580404625274, 570839.003194615477696, 570849.959826268721372, 570860.916475363657810, 570871.873141900170594, 570882.829825877910480, 570893.786527296411805, 570904.743246155558154, 570915.699982455000281, 570926.656736194505356, 570937.613507373607717, 570948.570295992074534, 570959.527102049672976, 570970.483925545937382, 570981.440766480751336, 570992.397624853649177, 571003.354500664514489, 571014.311393912881613, 571025.268304598634131, 571036.225232721189968, 571047.182178280199878, 571058.139141275896691, 571069.096121707465500, 571080.053119574673474, 571091.010134877287783, 571101.967167615192011, 571112.924217787804082, 571123.881285395007581, 571134.838370436453260, 571145.795472911675461, 571156.752592820557766, 571167.709730162750930, 571178.666884937905706, 571189.624057145672850, 571200.581246785935946, 571211.538453858229332, 571222.495678362436593, 571233.452920297975652, 571244.410179664613679, 571255.367456462234259, 571266.324750690488145, 571277.282062348793261, 571288.239391437266022, 571299.196737955207936, 571310.154101902619004, 571321.111483278917149, 571332.068882084218785, 571343.026298317592591, 571353.983731979387812, 571364.941183068905957, 571375.898651586030610, 571386.856137530296110, 571397.813640901353210, 571408.771161699318327, 571419.728699923492968, 571430.686255573527887, 571441.643828649306670, 571452.601419150596485, 571463.559027076815255, 571474.516652427962981, 571485.474295203690417, 571496.431955403299071, 571507.389633027021773, 571518.347328074276447, 571529.305040544713847, 571540.262770438217558, 571551.220517754321918, 571562.178282492794096, 571573.136064653401263, 571584.093864235794172, 571595.051681239390746, 571606.009515664307401, 571616.967367510078475, 571627.925236776354723, 571638.883123463019729, 571649.841027569258586, 571660.798949095420539, 571671.756888040923513, 571682.714844405301847, 571693.672818188439123, 571704.630809389986098, 571715.588818009826355, 571726.546844047261402, 571737.504887502291240, 571748.462948374450207, 571759.421026663621888, 571770.379122369224206, 571781.337235491257161, 571792.295366029371507, 571803.253513982985169, 571814.211679351981729, 571825.169862136244774, 571836.128062335075811, 571847.086279948358424, 571858.044514975976199, 571869.002767417463474, 571879.961037272471003, 571890.919324540765956, 571901.877629221882671, 571912.835951315704733, 571923.794290821999311, 571934.752647740300745, 571945.711022070143372, 571956.669413811643608, 571967.627822964219376, 571978.586249527637847, 571989.544693501549773, 572000.503154885722324, 572011.461633679806255, 572022.420129883568734, 572033.378643496660516, 572044.337174518732354, 572055.295722949435003, 572066.254288788652048, 572077.212872035917826, 572088.171472691115923, 572099.130090753547847, 572110.088726223446429, 572121.047379100113176, 572132.006049383315258, 572142.964737073052675, 572153.923442168394104, 572164.882164669688791, 572175.840904576354660, 572186.799661888042465, 572197.758436604402959, 572208.717228725319728, 572219.676038250443526, 572230.634865179425105, 572241.593709512031637, 572252.552571247797459, 572263.511450386489742, 572274.470346927992068, 572285.429260871838778, 572296.388192217564210, 572307.347140965051949, 572318.306107114069164, 572329.265090664266609, 572340.224091615295038, 572351.183109966572374, 572362.142145718331449, 572373.101198870106600, 572384.060269421315752, 572395.019357372075319, 572405.978462721570395, 572416.937585469917394, 572427.896725616650656, 572438.855883161653765, 572449.815058104344644, 572460.774250444374047, 572471.733460181858391, 572482.692687316215597, 572493.651931847096421, 572504.611193774268031, 572515.570473097381182, 572526.529769816319458, 572537.489083930617198, 572548.448415439925157, 572559.407764344010502, 572570.367130642640404, 572581.326514335465617, 572592.285915422136895, 572603.245333902421407, 572614.204769775853492, 572625.164223042433150, 572636.123693701461889, 572647.083181753172539, 572658.042687196633779, 572669.002210031962022, 572679.961750258808024, 572690.921307876706123, 572701.880882885539904, 572712.840475284843706, 572723.800085074384697, 572734.759712253930047, 572745.719356823130511, 572756.679018781520426, 572767.638698129099794, 572778.598394865402952, 572789.558108990197070, 572800.517840503016487, 572811.477589403628372, 572822.437355691799894, 572833.397139367298223, 572844.356940429541282, 572855.316758878529072, 572866.276594713679515, 572877.236447934992611, 572888.196318542119116, 572899.156206534476951, 572910.116111911833286, 572921.076034674188122, 572932.035974821075797, 572942.995932352030650, 572953.955907267052680, 572964.915899565443397, 572975.875909247202799, 572986.835936311981641, 572997.795980759547092, 573008.756042589317076, 573019.716121801175177, 573030.676218395004980, 573041.636332370224409, 573052.596463726600632, 573063.556612463784404, 573074.516778581659310, 573085.476962079876103, 573096.437162957969122, 573107.397381215705536, 573118.357616852736101, 573129.317869868827984, 573140.278140263864771, 573151.238428037264384, 573162.198733188677579, 573173.159055718104355, 573184.119395625079051, 573195.079752909252420, 573206.040127570508048, 573217.000519608147442, 573227.960929022403434, 573238.921355812577531, 573249.881799978553317, 573260.842261519981548, 573271.802740436396562, 573282.763236727798358, 573293.723750393721275, 573304.684281433816068, 573315.644829847733490, 573326.605395635473542, 573337.565978796570562, 573348.526579330558889, 573359.487197237322107, 573370.447832516510971, 573381.408485167776234, 573392.369155190885067, 573403.329842585488223, 573414.290547351236455, 573425.251269488013349, 573436.212008995353244, 573447.172765873023309, 573458.133540120790713, 573469.094331738189794, 573480.055140724871308, 573491.015967080835253, 573501.976810805499554, 573512.937671898747794, 573523.898550360114314, 573534.859446189249866, 573545.820359386270866, 573556.781289950362407, 573567.742237881524488, 573578.703203179291449, 573589.664185843663290, 573600.625185874057934, 573611.586203270126134, 573622.547238031635061, 573633.508290158351883, 573644.469359650043771, 573655.430446506361477, 573666.391550726839341, 573677.352672311244532, 573688.313811259460635, 573699.274967570905574, 573710.236141245579347, 573721.197332282783464, 573732.158540682750754, 573743.119766444666311, 573754.081009568646550, 573765.042270053992979, 573776.003547900705598, 573786.964843108318746, 573797.926155676599592, 573808.887485605315305, 573819.848832893883809, 573830.810197542421520, 573841.771579550346360, 573852.732978917425498, 573863.694395643426105, 573874.655829727766104, 573885.617281170678325, 573896.578749971347861, 573907.540236129658297, 573918.501739645260386, 573929.463260517921299, 573940.424798747408204, 573951.386354333255440, 573962.347927275346592, 573973.309517573099583, 573984.271125226514414, 573995.232750235241838, 574006.194392598816194, 574017.156052317121066, 574028.117729389574379, 574039.079423816176131, 574050.041135596460663, 574061.002864730195142, 574071.964611217030324, 574082.926375056616962, 574093.888156248838641, 574104.849954793346114, 574115.811770689790137, 574126.773603937588632, 574137.735454536858015, 574148.697322487365454, 574159.659207788296044, 574170.621110439766198, 574181.583030441310257, 574192.544967792695388, 574203.506922493572347, 574214.468894543824717, 574225.430883942870423, 574236.392890690360218, 574247.354914786294103, 574258.316956230322830, 574269.279015021980740, 574280.241091161035001, 574291.203184647252783, 574302.165295480168425, 574313.127423659665510, 574324.089569185394794, 574335.051732057007030, 574346.013912274152972, 574356.976109836716205, 574367.938324744231068, 574378.900556996348314, 574389.862806592951529, 574400.825073533691466, 574411.787357818218879, 574422.749659446300939, 574433.711978417355567, 574444.674314731499180, 574455.636668388149701, 574466.599039387190714, 574477.561427728156559, 574488.523833410814404, 574499.486256434815004, 574510.448696799925528, 574521.411154505913146, 574532.373629552312195, 574543.336121938889846, 574554.298631665413268, 574565.261158731533214, 574576.223703136900440, 574587.186264881165698, 574598.148843964328989, 574609.111440385808237, 574620.074054145254195, 574631.036685242550448, 574641.999333677231334, 574652.961999449296854, 574663.924682558048517, 574674.887383003486320, 574685.850100785144605, 574696.812835902790539, 574707.775588356191292, 574718.738358144997619, 574729.701145268860273, 574740.663949727313593, 574751.626771520473994, 574762.589610647759400, 574773.552467108820565, 574784.515340903541073, 574795.478232031455263, 574806.441140492563136, 574817.404066286166199, 574828.367009412148036, 574839.329969870159402, 574850.292947660083883, 574861.255942781339400, 574872.218955233925954, 574883.181985017261468, 574894.145032131229527, 574905.108096575364470, 574916.071178349549882, 574927.034277453552932, 574937.997393886675127, 574948.960527648916468, 574959.923678740044124, 574970.886847159592435, 574981.850032907328568, 574992.813235982786864, 575003.776456385967322, 575014.739694116404280, 575025.702949173864909, 575036.666221557883546, 575047.629511268227361, 575058.592818304663524, 575069.556142667075619, 575080.519484354765154, 575091.482843367615715, 575102.446219705278054, 575113.409613367635757, 575124.373024354339577, 575135.336452664807439, 575146.299898299039342, 575157.263361256569624, 575168.226841537281871, 575179.190339140710421, 575190.153854066738859, 575201.117386314668693, 575212.080935884616338, 575223.044502776116133, 575234.008086988818832, 575244.971688522608019, 575255.935307376901619, 575266.898943551699631, 575277.862597046536393, 575288.826267861179076, 575299.789955995045602, 575310.753661448368803, 575321.717384220450185, 575332.681124311056919, 575343.644881719956174, 575354.608656446798705, 575365.572448491468094, 575376.536257853382267, 575387.500084532424808, 575398.463928528130054, 575409.427789840265177, 575420.391668468597345, 575431.355564412893727, 575442.319477672805078, 575453.283408247749321, 575464.247356137842871, 575475.211321342620067, 575486.175303861731663, 575497.139303694944829, 575508.103320841677487, 575519.067355302162468, 575530.031407075701281, 575540.995476162177511, 575551.959562561125495, 575562.923666272428818, 575573.887787295621820, 575584.851925630588084, 575595.816081276978366, 575606.780254234210588, 575617.744444502401166, 575628.708652080968022, 575639.672876969794743, 575650.637119168415666, 575661.601378676597960, 575672.565655494108796, 575683.529949620598927, 575694.494261055835523, 575705.458589799236506, 575716.422935850918293, 575727.387299210298806, 575738.351679877145216, 575749.316077851108275, 575760.280493131955154, 575771.244925719453022, 575782.209375613252632, 575793.173842813004740, 575804.138327318360098, 575815.102829129202291, 575826.067348245065659, 575837.031884665717371, 575847.996438390808180, 575858.961009419988841, 575869.925597753259353, 575880.890203390037641, 575891.854826330207288, 575902.819466573302634, 575913.784124118858017, 575924.748798966989852, 575935.713491117232479, 575946.678200569236651, 575957.642927322769538, 575968.607671377249062, 575979.572432732908055, 575990.537211389048025, 576001.502007345552556, 576012.466820601839572, 576023.431651157909073, 576034.396499013528228, 576045.361364168114960, 576056.326246621436439, 576067.291146373376250, 576078.256063423468731, 576089.220997771364637, 576100.185949416947551, 576111.150918359868228, 576122.115904599661008, 576133.080908136325888, 576144.045928969280794, 576155.010967098292895, 576165.976022523129359, 576176.941095243557356, 576187.906185259111226, 576198.871292569558136, 576209.836417174665257, 576220.801559073966928, 576231.766718267463148, 576242.731894754571840, 576253.697088535060175, 576264.662299608695321, 576275.627527975011617, 576286.592773634009063, 576297.558036585221998, 576308.523316828301176, 576319.488614362897351, 576330.453929188894108, 576341.419261305942200, 576352.384610713692382, 576363.349977411911823, 576374.315361400018446, 576385.280762678128667, 576396.246181245776825, 576407.211617102730088, 576418.177070248406380, 576429.142540682689287, 576440.108028405462392, 576451.073533416143619, 576462.039055714616552, 576473.004595300531946, 576483.970152173540555, 576494.935726333409548, 576505.901317779789679, 576516.866926512448117, 576527.832552530919202, 576538.798195835202932, 576549.763856424717233, 576560.729534299229272, 576571.695229458622634, 576582.660941902315244, 576593.626671630190685, 576604.592418642016128, 576615.558182937325910, 576626.523964515770786, 576637.489763377234340, 576648.455579521367326, 576659.421412947820500, 576670.387263656361029, 576681.353131646639667, 576692.319016918423586, 576703.284919471363537, 576714.250839305110276, 576725.216776419430971, 576736.182730813859962, 576747.148702488397248, 576758.114691442693584, 576769.080697676166892, 576780.046721188817173, 576791.012761980178766, 576801.978820050135255, 576812.944895398104563, 576823.910988024086691, 576834.877097927499563, 576845.843225108110346, 576856.809369565919042, 576867.775531300343573, 576878.741710311151110, 576889.707906597992405, 576900.674120160634629, 576911.640350998728536, 576922.606599112041295, 576933.572864500340074, 576944.539147162926383, 576955.505447100033052, 576966.471764311078005, 576977.438098796061240, 576988.404450554051436, 576999.370819585281424, 577010.337205889401957, 577021.303609465947375, 577032.270030314684846, 577043.236468435265124, 577054.202923827571794, 577065.169396491139196, 577076.135886425734498, 577087.102393631008454, 577098.068918106611818, 577109.035459852428176, 577120.002018868108280, 577130.968595153302886, 577141.935188707546331, 577152.901799530838616, 577163.868427622714080, 577174.835072982939892, 577185.801735611166805, 577196.768415507161990, 577207.735112670576200, 577218.701827101176605, 577229.668558798497543, 577240.635307762422599, 577251.602073992486112, 577262.568857488571666, 577273.535658250330016, 577284.502476277411915, 577295.469311569351703, 577306.436164126265794, 577317.403033947572112, 577328.369921033154242, 577339.336825382430106, 577350.303746995166875, 577361.270685871364549, 577372.237642010441050, 577383.204615412163548, 577394.171606076299213, 577405.138614002382383, 577416.105639190296642, 577427.072681639692746, 577438.039741350337863, 577449.006818321649916, 577459.973912553628907, 577470.941024045925587, 577481.908152798307128, 577492.875298810191453, 577503.842462081462145, 577514.809642611886375, 577525.776840401114896, 577536.744055448798463, 577547.711287754704244, 577558.678537318366580, 577569.645804139785469, 577580.613088218495250, 577591.580389554146677, 577602.547708146506920, 577613.515043995226733, 577624.482397100073285, 577635.449767460813746, 577646.417155077098869, 577657.384559948346578, 577668.351982074673288, 577679.319421455729753, 577690.286878090933897, 577701.254351980285719, 577712.221843123203143, 577723.189351519569755, 577734.156877169269137, 577745.124420071719214, 577756.091980226570740, 577767.059557633707300, 577778.027152292779647, 577788.994764203554951, 577799.962393365683965, 577810.930039778701030, 577821.897703442606144, 577832.865384357050061, 577843.833082521567121, 577854.800797935808077, 577865.768530599772930, 577876.736280512879603, 577887.704047675011680, 577898.671832085936330, 577909.639633744955063, 577920.607452652184293, 577931.575288807274774, 577942.543142209644429, 577953.511012859293260, 577964.478900755872019, 577975.446805899031460, 577986.414728288422339, 577997.382667923811823, 578008.350624804967083, 578019.318598931306042, 578030.286590302945115, 578041.254598919302225, 578052.222624780144542, 578063.190667885239236, 578074.158728234237060, 578085.126805826788768, 578096.094900662777945, 578107.063012741622515, 578118.031142063089646, 578128.999288627295755, 578139.967452433425933, 578150.935633481480181, 578161.903831771109253, 578172.872047301731072, 578183.840280073345639, 578194.808530085836537, 578205.776797338505276, 578216.745081831119023, 578227.713383563561365, 578238.681702535483055, 578249.650038746534847, 578260.618392196483910, 578271.586762884980999, 578282.555150811560452, 578293.523555976338685, 578304.491978378733620, 578315.460418018396012, 578326.428874895093031, 578337.397349008708261, 578348.365840358659625, 578359.334348945063539, 578370.302874767105095, 578381.271417824667878, 578392.239978117635474, 578403.208555645658635, 578414.177150408388115, 578425.145762405358255, 578436.114391636452638, 578447.083038101322018, 578458.051701799966395, 578469.020382731570862, 578479.989080896019004, 578490.957796293194406, 578501.926528922747821, 578512.895278784330003, 578523.864045877591707, 578534.832830202183686, 578545.801631757989526, 578556.770450544659980, 578567.739286561845802, 578578.708139809314162, 578589.677010286599398, 578600.645897993585095, 578611.614802929922007, 578622.583725095377304, 578633.552664489601739, 578644.521621112013236, 578655.490594962844625, 578666.459586041513830, 578677.428594347671606, 578688.397619881085120, 578699.366662641637959, 578710.335722628748044, 578721.304799842298962, 578732.273894281941466, 578743.243005947209895, 578754.212134837987833, 578765.181280954158865, 578776.150444295140915, 578787.119624860701151, 578798.088822650490329, 578809.058037664392032, 578820.027269901940599, 578830.996519363019615, 578841.965786047047004, 578852.935069954022765, 578863.904371083481237, 578874.873689435189590, 578885.843025008798577, 578896.812377803958952, 578907.781747820554301, 578918.751135058235377, 578929.720539516536519, 578940.689961195457727, 578951.659400094300508, 578962.628856213181280, 578973.598329551517963, 578984.567820109194145, 578995.537327885744162, 579006.506852881051600, 579017.476395094767213, 579028.445954526425339, 579039.415531175909564, 579050.385125042870641, 579061.354736127075739, 579072.324364428175613, 579083.294009945704602, 579094.263672679779120, 579105.233352629584260, 579116.203049795352854, 579127.172764176386409, 579138.142495772568509, 579149.112244583666325, 579160.082010608981363, 579171.051793848746456, 579182.021594302495942, 579192.991411969764158, 579203.961246850318275, 579214.931098943925463, 579225.900968250352889, 579236.870854769251309, 579247.840758500155061, 579258.810679442947730, 579269.780617597396486, 579280.750572963152081, 579291.720545539748855, 579302.690535327070393, 579313.660542324651033, 579324.630566532374360, 579335.600607949891128, 579346.570666576968506, 579357.540742413024418, 579368.510835458175279, 579379.480945711839013, 579390.451073173782788, 579401.421217843773775, 579412.391379721346311, 579423.361558806383982, 579434.331755098653957, 579445.301968597690575, 579456.272199303261004, 579467.242447214899585, 579478.212712332606316, 579489.182994656031951, 579500.153294184594415, 579511.123610918293707, 579522.093944856780581, 579533.064295999589376, 579544.034664346720092, 579555.005049897590652, 579565.975452651968226, 579576.945872609736398, 579587.916309770429507, 579598.886764133931138, 579609.857235699659213, 579620.827724467380904, 579631.798230436979793, 579642.768753608223051, 579653.739293980412185, 579664.709851553663611, 579675.680426327395253, 579686.651018301607110, 579697.621627475600690, 579708.592253849492408, 579719.562897422816604, 579730.533558194991201, 579741.504236166249029, 579752.474931336008012, 579763.445643704035319, 579774.416373269748874, 579785.387120033381507, 579796.357883994234726, 579807.328665152308531, 579818.299463506904431, 579829.270279058022425, 579840.241111805429682, 579851.211961748660542, 579862.182828887482174, 579873.153713221545331, 579884.124614750500768, 579895.095533474115655, 579906.066469392273575, 579917.037422504508868, 579928.008392810472287, 579938.979380310047418, 579949.950385002768598, 579960.921406888402998, 579971.892445966717787, 579982.863502237247303, 579993.834575699875131, 580004.805666354135610, 580015.776774199912325, 580026.747899236856028, 580037.719041464617476, 580048.690200882847421, 580059.661377491429448, 580070.632571290014312, 580081.603782278252766, 580092.575010455679148, 580103.546255822177045, 580114.517518377630040, 580125.488798121572472, 580136.460095053538680, 580147.431409173528664, 580158.402740481076762, 580169.374088975833729, 580180.345454657683149, 580191.316837526159361, 580202.288237581262365, 580213.259654822293669, 580224.231089249136858, 580235.202540861559100, 580246.174009659211151, 580257.145495641743764, 580268.116998809040524, 580279.088519160635769, 580290.060056696296670, 580301.031611415557563, 580312.003183318534866, 580322.974772404530086, 580333.946378673310392, 580344.918002124642953, 580355.889642758411355, 580366.861300574149936, 580377.832975571509451, 580388.804667750373483, 580399.776377110159956, 580410.748103650985286, 580421.719847372034565, 580432.691608273540623, 580443.663386354921386, 580454.635181615711190, 580465.606994056026451, 580476.578823675401509, 580487.550670473370701, 580498.522534449701197, 580509.494415604392998, 580520.466313936980441, 580531.438229446997866, 580542.410162134212442, 580553.382111998507753, 580564.354079039418139, 580575.326063256710768, 580586.298064650152810, 580597.270083219278604, 580608.242118963971734, 580619.214171883766539, 580630.186241978546605, 580641.158329247846268, 580652.130433691665530, 580663.102555309189484, 580674.074694100534543, 580685.046850065467879, 580696.019023203523830, 580706.991213514120318, 580717.963420997606590, 580728.935645653167740, 580739.907887480687350, 580750.880146479932591, 580761.852422650321387, 580772.824715992086567, 580783.797026504413225, 580794.769354187417775, 580805.741699040401727, 580816.714061063248664, 580827.686440255842172, 580838.658836617716588, 580849.631250148522668, 580860.603680848143995, 580871.576128715998493, 580882.548593752086163, 580893.521075956057757, 580904.493575327447616, 580915.466091866022907, 580926.438625571667217, 580937.411176443914883, 580948.383744482533075, 580959.356329687288962, 580970.328932057600468, 580981.301551593467593, 580992.274188294541091, 581003.246842160471715, 581014.219513191026635, 581025.192201385740191, 581036.164906744495966, 581047.137629267061129, 581058.110368953086436, 581069.083125801989809, 581080.055899813654833, 581091.028690988197923, 581102.001499324687757, 581112.974324823240750, 581123.947167483274825, 581134.920027304789983, 581145.892904287320562, 581156.865798430633731, 581167.838709734380245, 581178.811638198210858, 581189.784583822009154, 581200.757546605309471, 581211.730526547995396, 581222.703523649601266, 581233.676537909894250, 581244.649569328641519, 581255.622617905377410, 581266.595683640101925, 581277.568766532349400, 581288.541866581537761, 581299.514983787899837, 581310.488118150737137, 581321.461269670049660, 581332.434438345255330, 581343.407624176354147, 581354.380827162880450, 581365.354047304484993, 581376.327284601051360, 581387.300539052113891, 581398.273810657439753, 581409.247099416796118, 581420.220405329950154, 581431.193728396319784, 581442.167068615788594, 581453.140425988123752, 581464.113800513092428, 581475.087192190112546, 581486.060601019184105, 581497.034026999608614, 581508.007470131735317, 581518.980930414632894, 581529.954407848417759, 581540.927902432507835, 581551.901414166903123, 581562.874943051137961, 581573.848489084979519, 581584.822052268078551, 581595.795632599969395, 581606.769230080768466, 581617.742844709893689, 581628.716476487112232, 581639.690125412191264, 581650.663791484665126, 581661.637474704417400, 581672.611175071098842, 581683.584892584476620, 581694.558627244201489, 581705.532379049691372, 581716.506148001179099, 581727.479934098082595, 581738.453737340169027, 581749.427557726972736, 581760.401395258493721, 581771.375249934382737, 581782.349121754057705, 581793.323010717518628, 581804.296916824299842, 581815.270840074284934, 581826.244780467008241, 581837.218738002353348, 581848.192712679738179, 581859.166704499162734, 581870.140713460161351, 581881.114739562617615, 581892.088782806065865, 581903.062843190273270, 581914.036920714774169, 581925.011015379568562, 581935.985127184307203, 581946.959256128524430, 581957.933402211987413, 581968.907565434463322, 581979.881745795719326, 581990.855943295406178, 582001.830157933174632, 582012.804389708559029, 582023.778638621559367, 582034.752904671826400, 582045.727187859243713, 582056.701488182996400, 582067.675805643200874, 582078.650140239391476, 582089.624491971451789, 582100.598860838916153, 582111.573246841551736, 582122.547649979009293, 582133.522070251172408, 582144.496507657575421, 582155.470962197985500, 582166.445433871936984, 582177.419922679429874, 582188.394428620114923, 582199.368951693526469, 582210.343491899548098, 582221.318049237597734, 582232.292623707791790, 582243.267215309664607, 582254.241824042866938, 582265.216449906933121, 582276.191092901863158, 582287.165753027307801, 582298.140430282917805, 582309.115124668576755, 582320.089836183702573, 582331.064564828062430, 582342.039310601423495, 582353.014073503552936, 582363.988853534101509, 582374.963650692719966, 582385.938464979291894, 582396.913296393351629, 582407.888144934666343, 582418.863010602886789, 582429.837893397780135, 582440.812793319113553, 582451.787710366421379, 582462.762644539587200, 582473.737595838261768, 582484.712564261979423, 582495.687549810740165, 582506.662552484078333, 582517.637572281761095, 582528.612609203322791, 582539.587663248647004, 582550.562734417500906, 582561.537822709418833, 582572.512928124284372, 582583.488050661631860, 582594.463190321228467, 582605.438347102841362, 582616.413521006121300, 582627.388712030835450, 582638.363920176401734, 582649.339145442936569, 582660.314387830090709, 582671.289647337282076, 582682.264923964510672, 582693.240217711194418, 582704.215528577333316, 582715.190856562461704, 582726.166201666463166, 582737.141563888755627, 582748.116943229222670, 582759.092339687631465, 582770.067753263516352, 582781.043183956760913, 582792.018631767015904, 582802.994096693932079, 582813.969578737276606, 582824.945077896583825, 582835.920594171970151, 582846.896127562504262, 582857.871678068535402, 582868.847245689365081, 582879.822830424993299, 582890.798432274837978, 582901.774051238899119, 582912.749687316594645, 582923.725340507808141, 582934.701010812073946, 582945.676698229392059, 582956.652402759180404, 582967.628124401322566, 582978.603863155585714, 582989.579619021387771, 583000.555391998728737, 583011.531182087026536, 583022.506989286281168, 583033.482813596143387, 583044.458655016147532, 583055.434513546177186, 583066.410389185766689, 583077.386281934916042, 583088.362191793043166, 583099.338118759915233, 583110.314062835182995, 583121.290024018846452, 583132.266002310439944, 583143.241997709497809, 583154.218010216020048, 583165.194039829308167, 583176.170086549594998, 583187.146150376298465, 583198.122231309069321, 583209.098329347791150, 583220.074444491881877, 583231.050576741457917, 583242.026726095937192, 583253.002892555086873, 583263.979076118674129, 583274.955276786349714, 583285.931494557880796, 583296.907729432918131, 583307.883981411228888, 583318.860250492347404, 583329.836536676040851, 583340.812839962309226, 583351.789160350570455, 583362.765497840475291, 583373.741852431907319, 583384.718224124517292, 583395.694612918072380, 583406.671018812223338, 583417.647441806620918, 583428.623881901032291, 583439.600339095108211, 583450.576813388732262, 583461.553304781438783, 583472.529813273111358, 583483.506338863051496, 583494.482881551375613, 583505.459441337734461, 583516.436018221778795, 583527.412612203042954, 583538.389223281410523, 583549.365851456648670, 583560.342496728408150, 583571.319159096339718, 583582.295838560210541, 583593.272535119671375, 583604.249248774489388, 583615.225979524431750, 583626.202727369032800, 583637.179492307943292, 583648.156274341163225, 583659.133073468343355, 583670.109889689018019, 583681.086723002954386, 583692.063573409919627, 583703.040440909564495, 583714.017325501539744, 583724.994227185845375, 583735.971145961666480, 583746.948081829235889, 583757.925034788087942, 583768.902004837873392, 583779.878991978242993, 583790.855996208963916, 583801.833017529803328, 583812.810055940411985, 583823.787111440557055, 583834.764184029889293, 583845.741273707943037, 583856.718380474834703, 583867.695504329982214, 583878.672645273152739, 583889.649803304113448, 583900.626978422398679, 583911.604170627892017, 583922.581379920244217, 583933.558606299222447, 583944.535849764477462, 583955.513110315543599, 583966.490387952420861, 583977.467682674759999, 583988.444994482095353, 583999.422323374310508, 584010.399669351056218, 584021.377032412099652, 584032.354412556975149, 584043.331809785566293, 584054.309224097407423, 584065.286655492382124, 584076.264103970257565, 584087.241569530568086, 584098.219052172848023, 584109.196551897213794, 584120.174068703083321, 584131.151602590456605, 584142.129153558751568, 584153.106721607851796, 584164.084306737175211, 584175.061908946721815, 584186.039528236258775, 584197.017164605204016, 584207.994818053673953, 584218.972488580853678, 584229.950176186859608, 584240.927880871226080, 584251.905602633720264, 584262.883341473876499, 584273.861097391811199, 584284.838870386825874, 584295.816660458804108, 584306.794467607396655, 584317.772291832487099, 584328.750133133493364, 584339.727991510415450, 584350.705866962671280, 584361.683759490144439, 584372.661669092602096, 584383.639595769462176, 584394.617539520957507, 584405.595500346273184, 584416.573478245292790, 584427.551473217899911, 584438.529485263512470, 584449.507514382014051, 584460.485560573171824, 584471.463623836520128, 584482.441704171826132, 584493.419801578857005, 584504.397916057379916, 584515.376047606929205, 584526.354196227272041, 584537.332361918175593, 584548.310544679407030, 584559.288744510500692, 584570.266961411223747, 584581.245195381226949, 584592.223446420510300, 584603.201714528375305, 584614.179999704938382, 584625.158301949617453, 584636.136621262063272, 584647.114957642159425, 584658.093311089673080, 584669.071681604254991, 584680.050069185439497, 584691.028473833110183, 584702.006895547034219, 584712.985334326745942, 584723.963790172012523, 584734.942263082484715, 584745.920753058046103, 584756.899260098347440, 584767.877784203155898, 584778.856325371889398, 584789.834883604431525, 584800.813458900549449, 584811.792051260010339, 584822.770660682464950, 584833.749287167447619, 584844.727930714841932, 584855.706591324298643, 584866.685268995468505, 584877.663963728351519, 584888.642675522365607, 584899.621404377045110, 584910.600150292622857, 584921.578913268516771, 584932.557693304377608, 584943.536490400088951, 584954.515304555068724, 584965.494135769316927, 584976.472984042484313, 584987.451849374221638, 584998.430731764179654, 585009.409631212241948, 585020.388547718059272, 585031.367481281165965, 585042.346431901562028, 585053.325399578665383, 585064.304384312359616, 585075.283386102295481, 585086.262404948240146, 585097.241440849844366, 585108.220493806875311, 585119.199563818867318, 585130.178650885820389, 585141.157755007268861, 585152.136876182863489, 585163.116014412371442, 585174.095169695559889, 585185.074342032196000, 585196.053531421930529, 585207.032737864297815, 585218.011961359065026, 585228.991201906115748, 585239.970459505100735, 585250.949734155670740, 585261.929025857476518, 585272.908334610401653, 585283.887660414096899, 585294.867003268213011, 585305.846363172517158, 585316.825740126543678, 585327.805134130059741, 585338.784545183065347, 585349.763973285094835, 585360.743418435798958, 585371.722880634712055, 585382.702359881834127, 585393.681856176932342, 585404.661369519424625, 585415.640899909310974, 585426.620447345892899, 585437.600011829403229, 585448.579593359143473, 585459.559191934997216, 585470.538807556731626, 585481.518440223764628, 585492.498089936096221, 585503.477756693493575, 585514.457440495374613, 585525.437141341739334, 585536.416859231889248, 585547.396594165940769, 585558.376346143544652, 585569.356115164235234, 585580.335901227896102, 585591.315704334061593, 585602.295524482498877, 585613.275361673091538, 585624.255215905373916, 585635.235087178996764, 585646.214975493960083, 585657.194880849565379, 585668.174803245812654, 585679.154742682469077, 585690.134699158836156, 585701.114672675146721, 585712.094663230702281, 585723.074670825502835, 585734.054695459082723, 585745.034737131092697, 585756.014795841532759, 585766.994871589704417, 585777.974964375724085, 585788.955074199009687, 585799.935201059328392, 585810.915344956563786, 585821.895505890250206, 585832.875683860271238, 585843.855878865928389, 585854.836090907338075, 585865.816319984267466, 585876.796566096134484, 585887.776829242706299, 585898.757109423633665, 585909.737406638800167, 585920.717720888089389, 585931.698052170802839, 585942.678400486940518, 585953.658765835803933, 585964.639148217625916, 585975.619547631940804, 585986.599964078282937, 585997.580397556535900, 586008.560848066234030, 586019.541315607377328, 586030.521800179500133, 586041.502301782253198, 586052.482820415403694, 586063.463356078718789, 586074.443908771732822, 586085.424478494445793, 586096.405065246392041, 586107.385669027105905, 586118.366289836703800, 586129.346927674603648, 586140.327582540689036, 586151.308254434377886, 586162.288943355670199, 586173.269649304216728, 586184.250372279668227, 586195.231112281791866, 586206.211869310238399, 586217.192643364658579, 586228.173434444935992, 586239.154242550604977, 586250.135067681665532, 586261.115909837419167, 586272.096769017865881, 586283.077645222656429, 586294.058538451325148, 586305.039448703988455, 586316.020375979947858, 586327.001320278970525, 586337.982281601056457, 586348.963259945623577, 586359.944255312439054, 586370.925267701386474, 586381.906297111883759, 586392.887343543930911, 586403.868406997062266, 586414.849487471044995, 586425.830584965529852, 586436.811699480284005, 586447.792831015191041, 586458.773979569552466, 586469.755145143484697, 586480.736327736289240, 586491.717527348082513, 586502.698743978398852, 586513.679977627005428, 586524.661228293436579, 586535.642495977459475, 586546.623780678957701, 586557.605082397698425, 586568.586401132983156, 586579.567736884811893, 586590.549089652835391, 586601.530459436820820, 586612.511846236535348, 586623.493250051513314, 586634.474670881521888, 586645.456108726211824, 586656.437563585466705, 586667.419035458820872, 586678.400524346157908, 586689.382030247128569, 586700.363553161267191, 586711.345093088457361, 586722.326650028349832, 586733.308223980944604, 586744.289814945310354, 586755.271422921796329, 586766.253047909820452, 586777.234689909266308, 586788.216348919551820, 586799.198024940444157, 586810.179717971826904, 586821.161428013467230, 586832.143155064899474, 586843.124899125890806, 586854.106660195975564, 586865.088438275153749, 586876.070233362959698, 586887.052045459393412, 586898.033874563639984, 586909.015720675815828, 586919.997583795571700, 586930.979463922558352, 586941.961361056426540, 586952.943275196943432, 586963.925206343759783, 586974.907154496759176, 586985.889119655592367, 586996.871101819910109, 587007.853100989363156, 587018.835117163718678, 587029.817150342860259, 587040.799200526322238, 587051.781267713755369, 587062.763351904810406, 587073.745453099603765, 587084.727571297436953, 587095.709706498309970, 587106.691858701757155, 587117.674027907312848, 587128.656214115093462, 587139.638417324749753, 587150.620637535583228, 587161.602874747826718, 587172.585128960548900, 587183.567400174215436, 587194.549688388127834, 587205.531993601936847, 587216.514315815758891, 587227.496655028662644, 587238.479011240764521, 587249.461384451831691, 587260.443774661514908, 587271.426181869348511, 587282.408606075099669, 587293.391047278651968, 587304.373505479656160, 587315.355980677646585, 587326.338472872506827, 587337.320982064004056, 587348.303508251672611, 587359.286051435396075, 587370.268611614708789, 587381.251188789377920, 587392.233782959170640, 587403.216394123854116, 587414.199022282962687, 587425.181667436379939, 587436.164329583523795, 587447.147008724510670, 587458.129704858874902, 587469.112417986383662, 587480.095148106571287, 587491.077895219088532, 587502.060659324168228, 587513.043440420995466, 587524.026238509453833, 587535.009053589194082, 587545.991885659983382, 587556.974734721705317, 587567.957600773777813, 587578.940483816084452, 587589.923383848159574, 587600.906300869886763, 587611.889234881033190, 587622.872185881249607, 587633.855153870186768, 587644.838138847495429, 587655.821140812942758, 587666.804159766412340, 587677.787195707322098, 587688.770248635672033, 587699.753318550880067, 587710.736405452946201, 587721.719509341404773, 587732.702630216022953, 587743.685768076451495, 587754.668922922457568, 587765.652094753808342, 587776.635283570038155, 587787.618489371263422, 587798.601712156552821, 587809.584951926139183, 587820.568208679556847, 587831.551482416572981, 587842.534773136721924, 587853.518080840003677, 587864.501405525836162, 587875.484747193986550, 587886.468105844454840, 587897.451481476658955, 587908.434874090482481, 587919.418283685343340, 587930.401710261357948, 587941.385153817944229, 587952.368614354869351, 587963.352091872016899, 587974.335586368804798, 587985.319097845233046, 587996.302626300952397, 588007.286171735497192, 588018.269734148634598, 588029.253313540131785, 588040.236909909872338, 588051.220523257274181, 588062.204153582220897, 588073.187800884246826, 588084.171465163351968, 588095.155146419070661, 588106.138844651170075, 588117.122559859184548, 588128.106292042997666, 588139.090041202260181, 588150.073807336855680, 588161.057590446318500, 588172.041390530299395, 588183.025207588565536, 588194.009041621000506, 588204.992892627255060, 588215.976760606863536, 588226.960645559593104, 588237.944547485210933, 588248.928466383484192, 588259.912402254063636, 588270.896355096832849, 588281.880324911093339, 588292.864311696728691, 588303.848315453738905, 588314.832336181658320, 588325.816373880021274, 588336.800428548711352, 588347.784500187262893, 588358.768588795675896, 588369.752694373484701, 588380.736816920572892, 588391.720956436358392, 588402.705112920724787, 588413.689286373439245, 588424.673476794152521, 588435.657684182515368, 588446.641908538178541, 588457.626149861025624, 588468.610408150823787, 588479.594683407223783, 588490.578975629759952, 588501.563284818199463, 588512.547610972425900, 588523.531954092090018, 588534.516314176726155, 588545.500691226334311, 588556.485085240332410, 588567.469496218720451, 588578.453924161032774, 588589.438369067036547, 588600.422830936498940, 588611.407309768721461, 588622.391805564053357, 588633.376318321796134, 588644.360848041949794, 588655.345394723932259, 588666.329958367394283, 588677.314538972452283, 588688.299136538524181, 588699.283751065377146, 588710.268382552661933, 588721.253031000262126, 588732.237696407828480, 588743.222378775011748, 588754.207078101579100, 588765.191794386948459, 588776.176527631469071, 588787.161277834326029, 588798.146044995519333, 588809.130829114466906, 588820.115630191052333, 588831.100448225042783, 588842.085283216089010, 588853.070135163841769, 588864.055004068184644, 588875.039889928535558, 588886.024792744894512, 588897.009712516912259, 588907.994649244355969, 588918.979602926759981, 588929.964573563658632, 588940.949561155401170, 588951.934565701056272, 588962.919587200856768, 588973.904625654104166, 588984.889681060682051, 588995.874753420357592, 589006.859842732781544, 589017.844948997488245, 589028.830072214477696, 589039.815212383284234, 589050.800369503907859, 589061.785543575650081, 589072.770734598510899, 589083.755942571908236, 589094.741167495958507, 589105.726409370079637, 589116.711668194155209, 589127.696943967719562, 589138.682236690539867, 589149.667546362499706, 589160.652872983133420, 589171.638216552208178, 589182.623577069491148, 589193.608954534400254, 589204.594348947051913, 589215.579760306980461, 589226.565188613836654, 589237.550633867504075, 589248.536096067517065, 589259.521575213759206, 589270.507071305764839, 589281.492584343417548, 589292.478114326251671, 589303.463661254034378, 589314.449225126765668, 589325.434805943630636, 589336.420403704745695, 589347.406018409761600, 589358.391650058096275, 589369.377298649866134, 589380.362964184721932, 589391.348646662198007, 589402.334346082061529, 589413.320062443846837, 589424.305795747670345, 589435.291545993066393, 589446.277313179569319, 589457.263097307295538, 589468.248898375430144, 589479.234716384089552, 589490.220551332808100, 589501.206403221352957, 589512.192272049374878, 589523.178157816757448, 589534.164060523035005, 589545.149980168091133, 589556.135916751460172, 589567.121870272792876, 589578.107840732089244, 589589.093828128883615, 589600.079832462943159, 589611.065853734035045, 589622.051891941577196, 589633.037947085686028, 589644.024019165779464, 589655.010108181741089, 589665.996214133221656, 589676.982337019871920, 589687.968476841459051, 589698.954633597866632, 589709.940807288512588, 589720.926997913164087, 589731.913205471588299, 589742.899429963785224, 589753.885671388939954, 589764.871929747285321, 589775.858205038122833, 589786.844497261219658, 589797.830806416575797, 589808.817132503725588, 589819.803475522319786, 589830.789835472125560, 589841.776212352793664, 589852.762606164207682, 589863.749016905901954, 589874.735444577760063, 589885.721889179316349, 589896.708350710454397, 589907.694829170708545, 589918.681324559962377, 589929.667836877866648, 589940.654366123955697, 589951.640912298229523, 589962.627475400338881, 589973.614055429934524, 589984.600652386667207, 589995.587266270304099, 590006.573897080612369, 590017.560544817359187, 590028.547209480078891, 590039.533891068538651, 590050.520589582272805, 590061.507305021630600, 590072.494037385680713, 590083.480786674306728, 590094.467552887392230, 590105.454336024471559, 590116.441136085311882, 590127.427953069680370, 590138.414786977227777, 590149.401637807721272, 590160.388505560695194, 590171.375390236149542, 590182.362291833618656, 590193.349210352869704, 590204.336145793437026, 590215.323098155320622, 590226.310067438171245, 590237.297053641523235, 590248.284056765260175, 590259.271076809032820, 590270.258113772491924, 590281.245167655521072, 590292.232238457654603, 590303.219326178776100, 590314.206430818536319, 590325.193552376469597, 590336.180690852575935, 590347.167846246389672, 590358.155018557794392, 590369.142207786091603, 590380.129413931514136, 590391.116636993479915, 590402.103876971756108, 590413.091133866109885, 590424.078407676192001, 590435.065698401769623, 590446.053006042493507, 590457.040330598130822, 590468.027672068332322, 590479.015030452748761, 590490.002405751496553, 590500.989797963760793, 590511.977207089541480, 590522.964633128605783, 590533.952076080371626, 590544.939535944839008, 590555.927012721658684, 590566.914506410481408, 590577.902017011074349, 590588.889544523088261, 590599.877088946173899, 590610.864650280331261, 590621.852228525094688, 590632.839823680114932, 590643.827435745042749, 590654.815064719878137, 590665.802710604039021, 590676.790373397525400, 590687.778053099871613, 590698.765749710611999, 590709.753463229862973, 590720.741193657042459, 590731.728940992034040, 590742.716705234604888, 590753.704486384172924, 590764.692284440621734, 590775.680099403718486, 590786.667931273230352, 590797.655780048458837, 590808.643645729636773, 590819.631528316414915, 590830.619427808211185, 590841.607344204909168, 590852.595277506159618, 590863.583227711729705, 590874.571194821386598, 590885.559178834781051, 590896.547179751680233, 590907.535197571502067, 590918.523232294362970, 590929.511283919913694, 590940.499352447688580, 590951.487437877571210, 590962.475540208979510, 590973.463659442029893, 590984.451795576373115, 590995.439948611427099, 591006.428118547075428, 591017.416305382968858, 591028.404509118990973, 591039.392729754792526, 591050.380967290024273, 591061.369221724453382, 591072.357493057614192, 591083.345781289506704, 591094.334086419665255, 591105.322408447973430, 591116.310747373965569, 591127.299103197292425, 591138.287475917837583, 591149.275865535368212, 591160.264272049535066, 591171.252695459872484, 591182.241135766147636, 591193.229592968360521, 591204.218067066045478, 591215.206558058853261, 591226.195065946551040, 591237.183590728673153, 591248.172132405336015, 591259.160690976073965, 591270.149266440421343, 591281.137858798261732, 591292.126468049245887, 591303.115094193140976, 591314.103737229714170, 591325.092397158616222, 591336.081073979381472, 591347.069767692009918, 591358.058478296152316, 591369.047205791459419, 591380.035950177581981, 591391.024711454287171, 591402.013489621342160, 591413.002284678514116, 591423.991096625453793, 591434.979925461811945, 591445.968771187239327, 591456.957633801619522, 591467.946513304719701, 591478.935409696074203, 591489.924322975566611, 591500.913253142614849, 591511.902200197218917, 591522.891164139145985, 591533.880144967813976, 591544.869142683106475, 591555.858157284674235, 591566.847188772517256, 591577.836237145937048, 591588.825302404817194, 591599.814384549041279, 591610.803483577910811, 591621.792599491542205, 591632.781732289586216, 591643.770881971693598, 591654.760048537515104, 591665.749231986701488, 591676.738432319136336, 591687.727649534586817, 591698.716883632587269, 591709.706134612904862, 591720.695402475190349, 591731.684687219443731, 591742.673988845082931, 591753.663307351875119, 591764.652642739703879, 591775.641995007987134, 591786.631364156724885, 591797.620750185567886, 591808.610153094166890, 591819.599572882289067, 591830.589009549352340, 591841.578463095589541, 591852.567933520418592, 591863.557420823606662, 591874.546925004688092, 591885.536446063662879, 591896.525984000298195, 591907.515538813895546, 591918.505110504571348, 591929.494699071859941, 591940.484304515528493, 591951.473926835227758, 591962.463566030608490, 591973.453222101670690, 591984.442895047715865, 591995.432584868860431, 592006.422291564638726, 592017.412015134934336, 592028.401755579165183, 592039.391512896982022, 592050.381287088501267, 592061.371078153373674, 592072.360886091133580, 592083.350710901431739, 592094.340552584035322, 592105.330411138827913, 592116.320286565343849, 592127.310178863466717, 592138.300088032847270, 592149.290014073136263, 592160.279956984100863, 592171.269916765275411, 592182.259893416776322, 592193.249886938021518, 592204.239897328661755, 592215.229924588697031, 592226.219968717545271, 592237.210029715206474, 592248.200107581214979, 592259.190202315105125, 592270.180313917109743, 592281.170442386530340, 592292.160587723250501, 592303.150749926920980, 592314.140928997076117, 592325.131124933832325, 592336.121337736607529, 592347.111567405401729, 592358.101813939516433, 592369.092077338835225, 592380.082357603241690, 592391.072654732386582, 592402.062968725920655, 592413.053299583494663, 592424.043647304875776, 592435.034011889831163, 592446.024393338127993, 592457.014791649417020, 592468.005206823232584, 592478.995638859574683, 592489.986087758094072, 592500.976553518325090, 592511.967036140267737, 592522.957535623339936, 592533.948051967541687, 592544.938585172407329, 592555.929135237704031, 592566.919702162966132, 592577.910285948193632, 592588.900886593037285, 592599.891504097147845, 592610.882138460292481, 592621.872789682121947, 592632.863457762286998, 592643.854142700671218, 592654.844844497041777, 592665.835563150816597, 592676.826298661879264, 592687.817051029996946, 592698.807820254820399, 592709.798606336233206, 592720.789409273653291, 592731.780229066964239, 592742.771065715816803, 592753.761919220094569, 592764.752789579448290, 592775.743676793412305, 592786.734580861870199, 592797.725501784356311, 592808.716439560870640, 592819.707394190947525, 592830.698365674470551, 592841.689354010974057, 592852.680359200108796, 592863.671381241758354, 592874.662420135573484, 592885.653475881437771, 592896.644548478769138, 592907.635637927334756, 592918.626744227018207, 592929.617867377586663, 592940.609007378574461, 592951.600164229748771, 592962.591337930760346, 592973.582528481492773, 592984.573735881596804, 592995.564960130606778, 593006.556201228639111, 593017.547459174878895, 593028.538733969442546, 593039.530025611864403, 593050.521334102144465, 593061.512659439584240, 593072.504001624067314, 593083.495360655477270, 593094.486736533232033, 593105.478129257448018, 593116.469538827310316, 593127.460965242935345, 593138.452408503973857, 593149.443868610076606, 593160.435345561127178, 593171.426839356427081, 593182.418349996092729, 593193.409877479658462, 593204.401421807007864, 593215.392982977558859, 593226.384560991195031, 593237.376155847916380, 593248.367767546907999, 593259.359396088286303, 593270.351041471585631, 593281.342703696573153, 593292.334382762899622, 593303.326078670448624, 593314.317791418754496, 593325.309521007584408, 593336.301267436705530, 593347.293030705768615, 593358.284810814657249, 593369.276607762789354, 593380.268421550281346, 593391.260252176318318, 593402.252099641016684, 593413.243963944143616, 593424.235845085117035, 593435.227743063936941, 593446.219657880021259, 593457.211589533253573, 593468.203538023517467, 593479.195503350230865, 593490.187485513277352, 593501.179484512191266, 593512.171500346972607, 593523.163533017155714, 593534.155582522624172, 593545.147648862795904, 593556.139732037554495, 593567.131832046667114, 593578.123948889900930, 593589.116082566673867, 593600.108233077102341, 593611.100400420604274, 593622.092584596946836, 593633.084785606013611, 593644.077003447338939, 593655.069238120922819, 593666.061489625833929, 593677.053757962537929, 593688.046043130336329, 593699.038345129112713, 593710.030663958517835, 593721.022999618086033, 593732.015352107933722, 593743.007721427362412, 593754.000107576372102, 593764.992510554613546, 593775.984930361737497, 593786.977366997627541, 593797.969820461818017, 593808.962290753959678, 593819.954777873936109, 593830.947281821514480, 593841.939802596229129, 593852.932340198080055, 593863.924894626368769, 593874.917465880978853, 593885.910053961793892, 593896.902658868464641, 593907.895280600758269, 593918.887919158209115, 593929.880574540467933, 593940.873246747534722, 593951.865935778943822, 593962.858641634578817, 593973.851364313974045, 593984.844103816896677, 593995.836860143113881, 594006.829633292276412, 594017.822423264267854, 594028.815230058506131, 594039.808053674874827, 594050.800894113024697, 594061.793751372955739, 594072.786625454085879, 594083.779516356298700, 594094.772424079012126, 594105.765348622342572, 594116.758289985824376, 594127.751248169108294, 594138.744223171961494, 594149.737214994034730, 594160.730223635328002, 594171.723249095142819, 594182.716291373595595, 594193.709350470104255, 594204.702426384435967, 594215.695519116590731, 594226.688628665986471, 594237.681755032390356, 594248.674898215569556, 594259.668058215174824, 594270.661235030973330, 594281.654428662732244, 594292.647639110102318, 594303.640866372850724, 594314.634110450511798, 594325.627371343085542, 594336.620649050222710, 594347.613943571457639, 594358.607254906557500, 594369.600583055289462, 594380.593928017537110, 594391.587289792834781, 594402.580668380833231, 594413.574063781532459, 594424.567475994233973, 594435.560905018937774, 594446.554350855411030, 594457.547813503188081, 594468.541292962152511, 594479.534789231838658, 594490.528302312130108, 594501.521832202677615, 594512.515378903248347, 594523.508942413376644, 594534.502522732946090, 594545.496119861607440, 594556.489733799244277, 594567.483364545390941, 594578.477012099698186, 594589.470676462049596, 594600.464357632095926, 594611.458055609720759, 594622.451770394458435, 594633.445501985959709, 594644.439250383991748, 594655.433015588438138, 594666.426797598833218, 594677.420596415060572, 594688.414412036770955, 594699.408244463498704, 594710.402093695127405, 594721.395959731307812, 594732.389842572039925, 594743.383742216625251, 594754.377658664947376, 594765.371591916889884, 594776.365541971987113, 594787.359508830006234, 594798.353492490481585, 594809.347492953413166, 594820.341510218451731, 594831.335544285248034, 594842.329595153569244, 594853.323662822949700, 594864.317747293389402, 594875.311848564655520, 594886.305966636049561, 594897.300101507571526, 594908.294253178872168, 594919.288421649718657, 594930.282606919994578, 594941.276808989117853, 594952.271027856855653, 594963.265263522975147, 594974.259515987243503, 594985.253785249311477, 594996.248071308946237, 595007.242374165914953, 595018.236693819751963, 595029.231030270340852, 595040.225383517332375, 595051.219753560493700, 595062.214140399475582, 595073.208544033928774, 595084.202964463853277, 595095.197401688783430, 595106.191855708369985, 595117.186326522380114, 595128.180814130580984, 595139.175318532623351, 595150.169839728390798, 595161.164377717417665, 595172.158932499471121, 595183.153504074085504, 595194.148092441377230, 595205.142697600880638, 595216.137319552246481, 595227.131958295241930, 595238.126613829517737, 595249.121286154841073, 595260.115975270979106, 595271.110681177699007, 595282.105403874535114, 595293.100143361254595, 595304.094899637741037, 595315.089672703645192, 595326.084462558501400, 595337.079269202309661, 595348.074092634371482, 595359.068932854919694, 595370.063789863372222, 595381.058663659496233, 595392.053554243058898, 595403.048461613478139, 595414.043385771103203, 595425.038326715002768, 595436.033284445409663, 595447.028258961625397, 595458.023250263533555, 595469.018258351017721, 595480.013283223495819, 595491.008324880967848, 595502.003383322851732, 595512.998458549147472, 595523.993550559389405, 595534.988659353344701, 595545.983784930896945, 595556.978927291580476, 595567.974086434929632, 595578.969262361177243, 595589.964455069624819, 595600.959664560155943, 595611.954890832421370, 595622.950133886071853, 595633.945393720990978, 595644.940670336945914, 595655.935963733470999, 595666.931273910333402, 595677.926600867183879, 595688.921944603906013, 595699.917305120150559, 595710.912682415684685, 595721.908076490042731, 595732.903487342991866, 595743.898914974415675, 595754.894359383964911, 595765.889820571290329, 595776.885298536275513, 595787.880793278338388, 595798.876304797478952, 595809.871833093347959, 595820.867378165596165, 595831.862940013990737, 595842.858518638066016, 595853.854114037822001, 595864.849726212909445, 595875.845355163095519, 595886.841000887914561, 595897.836663387017325, 595908.832342660403810, 595919.828038707841188, 595930.823751528747380, 595941.819481122889556, 595952.815227490034886, 595963.810990630066954, 595974.806770542636514, 595985.802567227277905, 595996.798380683758296, 596007.794210911844857, 596018.790057911421172, 596029.785921682137996, 596040.781802223529667, 596051.777699535246938, 596062.773613617522642, 596073.769544469541870, 596084.765492091304623, 596095.761456482461654, 596106.757437642547302, 596117.753435571561567, 596128.749450269038789, 596139.745481734862551, 596150.741529968683608, 596161.737594970152713, 596172.733676738920622, 596183.729775275103748, 596194.725890577887185, 596205.722022647387348, 596216.718171482905746, 596227.714337084675208, 596238.710519452230074, 596249.706718585104682, 596260.702934483182617, 596271.699167145998217, 596282.695416573551483, 596293.691682765493169, 596304.687965721357614, 596315.684265441028401, 596326.680581924039871, 596337.676915170392022, 596348.673265179619193, 596359.669631951488554, 596370.666015485767275, 596381.662415781873278, 596392.658832839922979, 596403.655266659567133, 596414.651717240456492, 596425.648184582241811, 596436.644668684573844, 596447.641169547336176, 596458.637687170295976, 596469.634221552987583, 596480.630772695294581, 596491.627340596751310, 596502.623925257357769, 596513.620526676531881, 596524.617144854273647, 596535.613779790000990, 596546.610431483481079, 596557.607099934713915, 596568.603785143233836, 596579.600487108924426, 596590.597205831087194, 596601.593941309722140, 596612.590693544712849, 596623.587462535477243, 596634.584248281782493, 596645.581050783628598, 596656.577870040200651, 596667.574706051847897, 596678.571558817755431, 596689.568428338039666, 596700.565314612234943, 596711.562217639992014, 596722.559137421078049, 596733.556073955376633, 596744.553027242422104, 596755.549997282098047, 596766.546984073822387, 596777.543987617595121, 596788.541007913067006, 596799.538044960005209, 596810.535098757944070, 596821.532169306650758, 596832.529256606125273, 596843.526360655785538, 596854.523481455398723, 596865.520619004848413, 596876.517773303668946, 596887.514944351627491, 596898.512132148374803, 596909.509336693910882, 596920.506557987653650, 596931.503796029370278, 596942.501050818944350, 596953.498322356026620, 596964.495610640151426, 596975.492915671318769, 596986.490237449062988, 596997.487575973151252, 597008.484931243234314, 597019.482303259312175, 597030.479692020802759, 597041.477097527473234, 597052.474519779090770, 597063.471958775422536, 597074.469414516119286, 597085.466887000948191, 597096.464376229560003, 597107.461882201838307, 597118.459404917317443, 597129.456944375764579, 597140.454500576830469, 597151.452073520398699, 597162.449663206236437, 597173.447269633761607, 597184.444892802974209, 597195.442532713524997, 597206.440189364831895, 597217.437862757127732, 597228.435552889830433, 597239.433259762939997, 597250.430983375641517, 597261.428723728051409, 597272.426480819820426, 597283.424254650599323, 597294.422045220388100, 597305.419852528488263, 597316.417676574666984, 597327.415517359040678, 597338.413374880910851, 597349.411249140277505, 597360.409140136674978, 597371.407047869870439, 597382.404972339747474, 597393.402913545840420, 597404.400871487800032, 597415.398846165626310, 597426.396837578620762, 597437.394845727016218, 597448.392870610230602, 597459.390912228031084, 597470.388970580068417, 597481.387045665993355, 597492.385137485805899, 597503.383246039156802, 597514.381371325580403, 597525.379513345076703, 597536.377672096947208, 597547.375847581191920, 597558.374039797578007, 597569.372248745756224, 597580.370474425493740, 597591.368716836208478, 597602.366975978016853, 597613.365251850569621, 597624.363544453517534, 597635.361853786394931, 597646.360179849085398, 597657.358522641588934, 597668.356882163090631, 597679.355258413706906, 597690.353651392972097, 597701.352061100653373, 597712.350487536401488, 597723.348930700216442, 597734.347390591516159, 597745.345867210067809, 597756.344360555638559, 597767.342870627995580, 597778.341397426789626, 597789.339940951787867, 597800.338501202757470, 597811.337078179232776, 597822.335671881097369, 597833.334282308002003, 597844.332909459830262, 597855.331553336116485, 597866.330213936395012, 597877.328891260898672, 597888.327585309045389, 597899.326296080485918, 597910.325023574987426, 597921.323767792317085, 597932.322528732242063, 597943.321306394529529, 597954.320100778830238, 597965.318911884678528, 597976.317739711841568, 597987.316584260435775, 597998.315445529762655, 598009.314323519705795, 598020.313218230032362, 598031.312129660276696, 598042.311057810322382, 598053.310002679820172, 598064.308964268537238, 598075.307942576240748, 598086.306937602348626, 598097.305949346977286, 598108.304977809777483, 598119.304022990167141, 598130.303084888146259, 598141.302163503365591, 598152.301258835592307, 598163.300370884477161, 598174.299499649787322, 598185.298645131173544, 598196.297807328286581, 598207.296986241010018, 598218.296181869111024, 598229.295394212240353, 598240.294623269932345, 598251.293869042186998, 598262.293131528538652, 598273.292410728754476, 598284.291706642718054, 598295.291019269963726, 598306.290348610142246, 598317.289694663137197, 598328.289057428599335, 598339.288436906412244, 598350.287833095993847, 598361.287245997227728, 598372.286675609881058, 598383.286121933604591, 598394.285584968281910, 598405.285064713330939, 598416.284561168518849, 598427.284074333962053, 598438.283604208962061, 598449.283150793286040, 598460.282714086933993, 598471.282294089207426, 598482.281890800222754, 598493.281504219630733, 598504.281134346849285, 598515.280781181878410, 598526.280444724368863, 598537.280124974087812, 598548.279821930686012, 598559.279535593930632, 598570.279265963472426, 598581.279013039078563, 598592.278776820516214, 598603.278557307436131, 598614.278354499489069, 598625.278168396675028, 598636.277998998295516, 598647.277846304466948, 598658.277710314840078, 598669.277591028949246, 598680.277488446678035, 598691.277402567444369, 598702.277333391364664, 598713.277280917973258, 598724.277245147153735, 598735.277226078440435, 598746.277223711367697, 598757.277238046168350, 598768.277269082260318, 598779.277316819294356, 598790.277381257154047, 598801.277462395373732, 598812.277560233953409, 598823.277674772427417, 598834.277806010562927, 598845.277953948010691, 598856.278118584537879, 598867.278299919911660, 598878.278497953899205, 598889.278712686034851, 598900.278944116202183, 598911.279192244051956, 598922.279457069351338, 598933.279738591751084, 598944.280036810901947, 598955.280351726920344, 598966.280683338874951, 598977.281031646998599, 598988.281396651058458, 598999.281778350356035, 599010.282176745007746, 599021.282591834315099, 599032.283023618510924, 599043.283472097013146, 599054.283937269472517, 599065.284419135772623, 599076.284917695564218, 599087.285432948730886, 599098.285964894806966, 599109.286513533443213, 599120.287078864639625, 599131.287660887814127, 599142.288259602850303, 599153.288875009631738, 599164.289507107459940, 599175.290155896451324, 599186.290821376023814, 599197.291503546177410, 599208.292202406446449, 599219.292917956598103, 599230.293650196515955, 599241.294399125617929, 599252.295164743787609, 599263.295947050792165, 599274.296746046165936, 599285.297561730025336, 599296.298394101439044, 599307.299243160872720, 599318.300108907511458, 599329.300991341355257, 599340.301890462054871, 599351.302806269144639, 599362.303738762624562, 599373.304687942028977, 599384.305653807241470, 599395.306636357796378, 599406.307635593460873, 599417.308651514118537, 599428.309684119420126, 599439.310733409016393, 599450.311799382674508, 599461.312882040045224, 599472.313981380779296, 599483.315097404993139, 599494.316230111988261, 599505.317379501648247, 599516.318545573623851, 599527.319728327798657, 599538.320927763823420, 599549.322143881348893, 599560.323376680142246, 599571.324626159737818, 599582.325892320252024, 599593.327175161102787, 599604.328474682173692, 599615.329790883231908, 599626.331123763578944, 599637.332473323447630, 599648.333839562255889, 599659.335222480003722, 599670.336622075992636, 599681.338038350222632, 599692.339471302460879, 599703.340920932358131, 599714.342387239681557, 599725.343870223965496, 599736.345369884977117, 599747.346886222716421, 599758.348419236601330, 599769.349968926515430, 599780.351535292109475, 599791.353118333034217, 599802.354718049289659, 599813.356334440293722, 599824.357967505929992, 599835.359617245849222, 599846.361283659818582, 599857.362966747488827, 599868.364666508743539, 599879.366382943117060, 599890.368116050376557, 599901.369865830289200, 599912.371632282505743, 599923.373415407026187, 599934.375215203152038, 599945.377031670883298, 599956.378864809870720, 599967.380714619765058, 599978.382581100449897, 599989.384464251575992, 600000.386364072794095, 600011.388280563754961, 600022.390213724458590, 600033.392163554439321, 600044.394130053464323, 600055.396113221184351, 600066.398113057250157, 600077.400129561778158, 600088.402162734069861, 600099.404212574008852, 600110.406279081362300, 600121.408362255664542, 600132.410462096915580, 600143.412578604649752, 600154.414711778634228, 600165.416861618636176, 600176.419028124189936, 600187.421211295295507, 600198.423411131487228, 600209.425627632532269, 600220.427860798197798, 600231.430110628134571, 600242.432377122109756, 600253.434660279890522, 600264.436960101127625, 600275.439276585588232, 600286.441609732806683, 600297.443959542782977, 600308.446326015051454, 600319.448709149612114, 600330.451108945766464, 600341.453525403398089, 600352.455958522390574, 600363.458408302394673, 600374.460874743177556, 600385.463357844273560, 600396.465857605449855, 600407.468374026473612, 600418.470907107111998, 600429.473456847132184, 600440.476023246184923, 600451.478606304037385, 600462.481206020223908, 600473.483822394628078, 600484.486455427017063, 600495.489105117041618, 600506.491771464468911, 600517.494454468833283, 600528.497154130134732, 600539.499870448024012, 600550.502603422035463, 600561.505353052169085, 600572.508119337726384, 600583.510902278940193, 600594.513701875228435, 600605.516518126591109, 600616.519351032329723, 600627.522200592327863, 600638.525066806469113, 600649.527949674404226, 600660.530849195783958, 600671.533765370375477, 600682.536698197713122, 600693.539647678029723, 600704.542613810510375, 600715.545596595155075, 600726.548596031730995, 600737.551612119539641, 600748.554644858813845, 600759.557694249087945, 600770.560760290129110, 600781.563842981471680, 600792.566942322882824, 600803.570058314362541, 600814.573190955445170, 600825.576340245781466, 600836.579506185138598, 600847.582688773283735, 600858.585888009984046, 600869.589103894773871, 600880.592336427653208, 600891.595585608039983, 600902.598851435817778, 600913.602133910870180, 600924.605433032615110, 600935.608748800936155, 600946.612081215600483, 600957.615430276142433, 600968.618795982445590, 600979.622178334277123, 600990.625577331171371, 601001.628992973128334, 601012.632425259449519, 601023.635874190134928, 601034.639339765068144, 601045.642821983667091, 601056.646320845815353, 601067.649836351047270, 601078.653368499362841, 601089.656917290412821, 601100.660482723731548, 601111.664064799319021, 601122.667663516476750, 601133.671278875437565, 601144.674910875619389, 601155.678559516905807, 601166.682224798831157, 601177.685906721162610, 601188.689605283667333, 601199.693320486228913, 601210.697052328265272, 601221.700800809776410, 601232.704565930180252, 601243.708347689593211, 601254.712146087433212, 601265.715961123467423, 601276.719792797579430, 601287.723641109187156, 601298.727506058523431, 601309.731387644773349, 601320.735285867936909, 601331.739200727664866, 601342.743132223607972, 601353.747080355649814, 601364.751045123441145, 601375.755026526749134, 601386.759024565340951, 601397.763039238634519, 601408.767070546746254, 601419.771118489210494, 601430.775183065677993, 601441.779264276032336, 601452.783362119924277, 601463.787476597004570, 601474.791607707040384, 601485.795755450031720, 601496.799919825280085, 601507.804100832552649, 601518.808298471849412, 601529.812512742704712, 601540.816743645118549, 601551.820991178276017, 601562.825255342293531, 601573.829536136705428, 601584.833833561628126, 601595.838147616246715, 601606.842478300677612, 601617.846825614338741, 601628.851189557113685, 601639.855570128886029, 601650.859967329190113, 601661.864381157793105, 601672.868811614229344, 601683.873258698498830, 601694.877722410252318, 601705.882202749140561, 601716.886699715047143, 601727.891213307506405, 601738.895743526169099, 601749.900290371035226, 601760.904853841639124, 601771.909433937864378, 601782.914030659245327, 601793.918644005549140, 601804.923273976659402, 601815.927920572110452, 601826.932583791669458, 601837.937263635220006, 601848.941960102180019, 601859.946673192549497, 601870.951402905979194, 601881.956149242236279, 601892.960912200855091, 601903.965691781602800, 601914.970487984246574, 601925.975300808786415, 601936.980130254523829, 601947.984976321458817, 601958.989839009125717, 601969.994718317291699, 601980.999614245840348, 601992.004526794422418, 602003.009455962572247, 602014.014401750173420, 602025.019364156993106, 602036.024343182682060, 602047.029338827007450, 602058.034351089736447, 602069.039379970286973, 602080.044425468891859, 602091.049487584852614, 602102.054566318052821, 602113.059661668376066, 602124.064773635123856, 602135.069902218412608, 602146.075047417893074, 602157.080209233099595, 602168.085387663915753, 602179.090582709875889, 602190.095794371096417, 602201.101022646995261, 602212.106267537456006, 602223.111529042012990, 602234.116807160200551, 602245.122101892367937, 602256.127413237816654, 602267.132741196546704, 602278.138085767859593, 602289.143446951638907, 602300.148824747884646, 602311.154219156014733, 602322.159630175912753, 602333.165057807229459, 602344.170502049615607, 602355.175962902954780, 602366.181440366897732, 602377.186934441211633, 602388.192445125547238, 602399.197972419555299, 602410.203516323235817, 602421.209076836006716, 602432.214653957867995, 602443.220247688353993, 602454.225858027115464, 602465.231484974152409, 602476.237128528999165, 602487.242788691422902, 602498.248465461074375, 602509.254158837720752, 602520.259868821245618, 602531.265595411183313, 602542.271338607301004, 602553.277098409365863, 602564.282874816912226, 602575.288667830056511, 602586.294477448216639, 602597.300303671159782, 602608.306146498653106, 602619.312005930347368, 602630.317881966009736, 602641.323774605640210, 602652.329683848423883, 602663.335609694477171, 602674.341552143450826, 602685.347511194879189, 602696.353486848762259, 602707.359479104750790, 602718.365487962379120, 602729.371513421647251, 602740.377555482089520, 602751.383614143473096, 602762.389689405565150, 602773.395781268016435, 602784.401889730594121, 602795.408014792948961, 602806.414156455080956, 602817.420314716408029, 602828.426489576813765, 602839.432681035832502, 602850.438889093347825, 602861.445113749243319, 602872.451355002936907, 602883.457612854312174, 602894.463887303136289, 602905.470178348827176, 602916.476485991384834, 602927.482810230692849, 602938.489151066169143, 602949.495508497580886, 602960.501882524695247, 602971.508273147395812, 602982.514680365216918, 602993.521104177925736, 603004.527544585173018, 603015.534001586842351, 603026.540475182468072, 603037.546965371933766, 603048.553472155006602, 603059.559995531337336, 603070.566535500576720, 603081.573092062491924, 603092.579665216850117, 603103.586254963302054, 603114.592861301614903, 603125.599484231439419, 603136.606123752775602, 603147.612779865041375, 603158.619452568120323, 603169.626141861779615, 603180.632847745320760, 603191.639570219093002, 603202.646309282514267, 603213.653064935235307, 603224.659837177139707, 603235.666626007645391, 603246.673431426985189, 603257.680253434577025, 603268.687092030071653, 603279.693947213469073, 603290.700818984070793, 603301.707707341993228, 603312.714612286887132, 603323.721533818519674, 603334.728471936308779, 603345.735426640138030, 603356.742397929891013, 603367.749385805218481, 603378.756390265771188, 603389.763411311316304, 603400.770448941504583, 603411.777503156103194, 603422.784573954995722, 603433.791661337716505, 603444.798765304032713, 603455.805885853711516, 603466.813022986403666, 603477.820176701876335, 603488.827346999896690, 603499.834533880115487, 603510.841737342416309, 603521.848957386333495, 603532.856194011517800, 603543.863447218085639, 603554.870717005454935, 603565.878003373276442, 603576.885306321433745, 603587.892625849694014, 603598.899961957708001, 603609.907314645242877, 603620.914683911949396, 603631.922069757478312, 603642.929472181713209, 603653.936891184537672, 603664.944326765253209, 603675.951778923976235, 603686.959247660008259, 603697.966732973582111, 603708.974234864115715, 603719.981753331376240, 603730.989288375014439, 603741.996839994913898, 603753.004408190608956, 603764.011992962099612, 603775.019594308920205, 603786.027212230837904, 603797.034846727503464, 603808.042497798800468, 603819.050165444263257, 603830.057849663775414, 603841.065550456987694, 603852.073267823550850, 603863.081001763464883, 603874.088752276147716, 603885.096519361482933, 603896.104303019121289, 603907.112103248829953, 603918.119920050376095, 603929.127753423526883, 603940.135603367816657, 603951.143469883129001, 603962.151352968881838, 603973.159252625424415, 603984.167168851941824, 603995.175101648317650, 604006.183051014319062, 604017.191016949596815, 604028.198999453918077, 604039.206998527050018, 604050.215014168759808, 604061.223046378581785, 604072.231095156515948, 604083.239160501863807, 604094.247242414741777, 604105.255340894800611, 604116.263455941691063, 604127.271587555180304, 604138.279735734802671, 604149.287900480558164, 604160.296081792097539, 604171.304279669071548, 604182.312494111363776, 604193.320725118392147, 604204.328972690156661, 604215.337236826308072, 604226.345517526729964, 604237.353814790840261, 604248.362128618522547, 604259.370459009427577, 604270.378805963322520, 604281.387169480090961, 604292.395549559267238, 604303.403946200502105, 604314.412359403795563, 604325.420789168681949, 604336.429235495044850, 604347.437698382418603, 604358.446177830453962, 604369.454673839267343, 604380.463186408276670, 604391.471715537132695, 604402.480261225835420, 604413.488823473919183, 604424.497402281267568, 604435.505997647531331, 604446.514609572361223, 604457.523238055524416, 604468.531883096671663, 604479.540544695686549, 604490.549222852336243, 604501.557917566271499, 604512.566628837026656, 604523.575356664368883, 604534.584101048298180, 604545.592861988465302, 604556.601639484404586, 604567.610433535999618, 604578.619244142784737, 604589.628071304759942, 604600.636915021575987, 604611.645775292767212, 604622.654652118333615, 604633.663545497576706, 604644.672455430845730, 604655.681381917325780, 604666.690324957133271, 604677.699284549686126, 604688.708260694867931, 604699.717253392213024, 604710.726262641721405, 604721.735288443043828, 604732.744330795831047, 604743.753389699850231, 604754.762465154752135, 604765.771557160303928, 604776.780665716272779, 604787.789790822542273, 604798.798932478530332, 604809.808090684120543, 604820.817265438963659, 604831.826456742943265, 604842.835664595593698, 604853.844888996682130, 604864.854129945975728, 604875.863387443358079, 604886.872661488247104, 604897.881952080642805, 604908.891259220079519, 604919.900582906324416, 604930.909923139144666, 604941.919279918423854, 604952.928653243463486, 604963.938043114496395, 604974.947449530707672, 604985.956872492446564, 604996.966311998898163, 605007.975768050178885, 605018.985240645590238, 605029.994729785132222, 605041.004235468688421, 605052.013757695676759, 605063.023296466097236, 605074.032851779367775, 605085.042423635255545, 605096.052012033876963, 605107.061616974533536, 605118.071238457225263, 605129.080876481486484, 605140.090531046967953, 605151.100202153669670, 605162.109889801242389, 605173.119593989336863, 605184.129314717720263, 605195.139051985926926, 605206.148805793956853, 605217.158576141577214, 605228.168363028205931, 605239.178166453959420, 605250.187986418139189, 605261.197822920628823, 605272.207675961195491, 605283.217545539722778, 605294.227431655861437, 605305.237334309029393, 605316.247253499226645, 605327.257189226220362, 605338.267141489661299, 605349.277110289316624, 605360.287095624837093, 605371.297097495873459, 605382.307115902309306, 605393.317150843795389, 605404.327202320098877, 605415.337270331103355, 605426.347354876110330, 605437.357455955119804, 605448.367573567898944, 605459.377707714214921, 605470.387858393718489, 605481.398025605827570, 605492.408209350774996, 605503.418409627978690, 605514.428626437322237, 605525.438859778456390, 605536.449109651031904, 605547.459376054815948, 605558.469658989808522, 605569.479958455311134, 605580.490274451323785, 605591.500606977264397, 605602.510956033482216, 605613.521321619045921, 605624.531703734071925, 605635.542102378094569, 605646.552517550764605, 605657.562949252082035, 605668.573397481697612, 605679.583862239262089, 605690.594343524542637, 605701.604841337073594, 605712.615355676971376, 605723.625886543653905, 605734.636433936888352, 605745.646997856674716, 605756.657578302314505, 605767.668175273691304, 605778.678788770572282, 605789.689418792841025, 605800.700065340031870, 605811.710728412028402, 605822.721408008132130, 605833.732104128575884, 605844.742816772894002, 605855.753545940853655, 605866.764291631989181, 605877.775053846184164, 605888.785832583322190, 605899.796627842937596, 605910.807439624797553, 605921.818267928552814, 605932.829112753854133, 605943.839974100817926, 605954.850851968862116, 605965.861746357753873, 605976.872657267260365, 605987.883584697032347, 605998.894528646836989, 606009.905489116441458, 606020.916466105612926, 606031.927459614118561, 606042.938469641376287, 606053.949496187386103, 606064.960539251798764, 606075.971598834381439, 606086.982674934901297, 606097.993767552892677, 606109.004876688239165, 606120.016002340707928, 606131.027144509833306, 606142.038303195615299, 606153.049478397471830, 606164.060670115402900, 606175.071878348942846, 606186.083103097858839, 606197.094344362034462, 606208.105602141004056, 606219.116876434534788, 606230.128167242510244, 606241.139474564464763, 606252.150798400281928, 606263.162138749496080, 606274.173495611874387, 606285.184868987300433, 606296.196258875424974, 606307.207665276015177, 606318.219088188721798, 606329.230527613079175, 606340.241983549320139, 606351.253455996746197, 606362.264944955240935, 606373.276450424571522, 606384.287972404272296, 606395.299510894226842, 606406.311065894318745, 606417.322637403965928, 606428.334225423051976, 606439.345829951227643, 606450.357450988260098, 606461.369088534032926, 606472.380742588080466, 606483.392413150053471, 606494.404100219835527, 606505.415803797193803, 606516.427523881779052, 606527.439260473358445, 606538.451013571699150, 606549.462783176335506, 606560.474569287034683, 606571.486371903796680, 606582.498191026039422, 606593.510026653646491, 606604.521878786268644, 606615.533747423673049, 606626.545632565626875, 606637.557534211780876, 606648.569452361902222, 606659.581387015874498, 606670.593338172999211, 606681.605305833392777, 606692.617289996705949, 606703.629290662705898, 606714.641307830810547, 606725.653341501019895, 606736.665391673101112, 606747.677458346704952, 606758.689541521482170, 606769.701641197316349, 606780.713757373741828, 606791.725890050642192, 606802.738039227668196, 606813.750204904703423, 606824.762387081282213, 606835.774585757055320, 606846.786800932022743, 606857.799032605718821, 606868.811280778027140, 606879.823545448598452, 606890.835826616967097, 606901.848124283249490, 606912.860438446863554, 606923.872769107576460, 606934.885116265388206, 606945.897479919367470, 606956.909860070096329, 606967.922256716759875, 606978.934669859241694, 606989.947099497425370, 607000.959545630495995, 607011.972008258686401, 607022.984487381763756, 607033.996982999145985, 607045.009495110716671, 607056.022023716126569, 607067.034568815142848, 607078.047130407649092, 607089.059708493063226, 607100.072303071385249, 607111.084914142265916, 607122.097541705239564, 607133.110185760306194, 607144.122846307116561, 607155.135523345437832, 607166.148216874920763, 607177.160926895099692, 607188.173653406091034, 607199.186396407429129, 607210.199155898764729, 607221.211931880097836, 607232.224724350613542, 607243.237533310777508, 607254.250358759774826, 607265.263200697489083, 607276.276059123687446, 607287.288934038020670, 607298.301825440372340, 607309.314733330276795, 607320.327657707617618, 607331.340598571929149, 607342.353555923094973, 607353.366529760882258, 607364.379520084941760, 607375.392526894924231, 607386.405550190829672, 607397.418589971959591, 607408.431646238313988, 607419.444718989776447, 607430.457808225764893, 607441.470913946279325, 607452.484036150621250, 607463.497174839023501, 607474.510330010903999, 607485.523501666029915, 607496.536689804284833, 607507.549894425203092, 607518.563115528435446, 607529.576353114214726, 607540.589607181726024, 607551.602877730969340, 607562.616164761595428, 607573.629468273138627, 607584.642788265831769, 607595.656124738976359, 607606.669477692339569, 607617.682847125804983, 607628.696233039023355, 607639.709635431645438, 607650.723054303671233, 607661.736489654518664, 607672.749941484071314, 607683.763409791979939, 607694.776894578011706, 607705.790395842050202, 607716.803913583629765, 607727.817447802401148, 607738.830998498247936, 607749.844565670820884, 607760.858149320119992, 607771.871749445446767, 607782.885366046801209, 607793.898999123717658, 607804.912648676079698, 607815.926314703770913, 607826.939997206209227, 607837.953696183278225, 607848.967411634512246, 607859.981143560027704, 607870.994891959358938, 607882.008656832040288, 607893.022438178071752, 607904.036235996987671, 607915.050050288555212, 607926.063881052657962, 607937.077728288946673, 607948.091591997072101, 607959.105472176917829, 607970.119368827785365, 607981.133281950023957, 607992.147211543051526, 608003.161157606518827, 608014.175120140193030, 608025.189099143841304, 608036.203094617347233, 608047.217106560245156, 608058.231134972302243, 608069.245179853402078, 608080.259241202962585, 608091.273319020867348, 608102.287413306883536, 608113.301524060894735, 608124.315651282318868, 608135.329794970923103, 608146.343955126591027, 608157.358131749089807, 608168.372324837953784, 608179.386534393066540, 608190.400760413962416, 608201.415002900641412, 608212.429261852754280, 608223.443537269835360, 608234.457829151884653, 608245.472137498436496, 608256.486462309141643, 608267.500803584000096, 608278.515161322662607, 608289.529535524779931, 608300.543926190002821, 608311.558333318214864, 608322.572756909066811, 608333.587196962442249, 608344.601653477875516, 608355.616126455133781, 608366.630615893867798, 608377.645121794077568, 608388.659644155297428, 608399.674182977294549, 608410.688738259836100, 608421.703310002340004, 608432.717898205155507, 608443.732502867351286, 608454.747123989276588, 608465.761761570116505, 608476.776415609871037, 608487.791086108307354, 608498.805773064959794, 608509.820476479711942, 608520.835196352330968, 608531.849932682351209, 608542.864685469656251, 608553.879454714013264, 608564.894240415073000, 608575.909042572486214, 608586.923861186020076, 608597.938696255558170, 608608.953547780751251, 608619.968415761133656, 608630.983300196821801, 608641.998201087233610, 608653.013118432019837, 608664.028052231180482, 608675.043002484366298, 608686.057969191460870, 608697.072952351649292, 608708.087951965164393, 608719.102968031773344, 608730.118000550777651, 608741.133049522410147, 608752.148114945972338, 608763.163196821347810, 608774.178295148303732, 608785.193409926723689, 608796.208541155909188, 608807.223688835976645, 608818.238852966460399, 608829.254033547127619, 608840.269230577978306, 608851.284444058313966, 608862.299673988018185, 608873.314920366858132, 608884.330183194600977, 608895.345462470897473, 608906.360758195631206, 608917.376070368336514, 608928.391398988664150, 608939.406744056730531, 608950.422105571953580, 608961.437483534100465, 608972.452877942938358, 608983.468288798118010, 608994.483716099406593, 609005.499159846804105, 609016.514620039728470, 609027.530096677946858, 609038.545589761342853, 609049.561099289334379, 609060.576625262037851, 609071.592167678987607, 609082.607726539950818, 609093.623301844461821, 609104.638893592404202, 609115.654501783661544, 609126.670126417884603, 609137.685767494607717, 609148.701425013830885, 609159.717098974972032, 609170.732789378031157, 609181.748496222659014, 609192.764219508506358, 609203.779959235456772, 609214.795715403044596, 609225.811488011153415, 609236.827277059550397, 609247.843082547886297, 609258.858904475811869, 609269.874742842977867, 609280.890597649384290, 609291.906468894798309, 609302.922356578637846, 609313.938260700786486, 609324.954181261127815, 609335.970118259079754, 609346.986071694525890, 609358.002041567233391, 609369.018027876969427, 609380.034030623384751, 609391.050049806013703, 609402.066085424972698, 609413.082137479912490, 609424.098205970367417, 609435.114290896221064, 609446.130392256891355, 609457.146510052494705, 609468.162644282681867, 609479.178794947220013, 609490.194962045643479, 609501.211145577719435, 609512.227345543215051, 609523.243561942013912, 609534.259794773766771, 609545.276044038124382, 609556.292309734621085, 609567.308591863489710, 609578.324890424148180, 609589.341205416247249, 609600.357536839786917, 609611.373884694185108, 609622.390248979325406, 609633.406629695091397, 609644.423026841017418, 609655.439440416870639, 609666.455870422418229, 609677.472316857194528, 609688.488779721315950, 609699.505259014200419, 609710.521754735731520, 609721.538266885560006, 609732.554795463336632, 609743.571340468944982, 609754.587901902152225, 609765.604479762609117, 609776.621074049849994, 609787.637684763874859, 609798.654311904334463, 609809.670955470995978, 609820.687615463626571, 609831.704291881876998, 609842.720984725165181, 609853.737693993840367, 609864.754419687320478, 609875.771161805139855, 609886.787920347414911, 609897.804695313563570, 609908.821486703469418, 609919.838294517016038, 609930.855118753504939, 609941.871959413168952, 609952.888816495309584, 609963.905689999810420, 609974.922579926438630, 609985.939486275077797, 609996.956409045145847, 610007.973348236526363, 610018.990303848986514, 610030.007275882177055, 610041.024264335981570, 610052.041269209817983, 610063.058290503802709, 610074.075328217237256, 610085.092382350238040, 610096.109452902339399, 610107.126539873424917, 610118.143643263145350, 610129.160763070918620, 610140.177899296977557, 610151.195051940740086, 610162.212221002206206, 610173.229406480910257, 610184.246608376386575, 610195.263826688635163, 610206.281061417539604, 610217.298312562517822, 610228.315580123453401, 610239.332864099880680, 610250.350164491799660, 610261.367481298861094, 610272.384814520715736, 610283.402164157130755, 610294.419530207873322, 610305.436912672594190, 610316.454311550944112, 610327.471726843039505, 610338.489158548298292, 610349.506606666487642, 610360.524071197258309, 610371.541552140493877, 610382.559049495845102, 610393.576563263079152, 610404.594093441963196, 610415.611640032147989, 610426.629203033400699, 610437.646782445488498, 610448.664378268062137, 610459.681990500888787, 610470.699619143619202, 610481.717264196253382, 610492.734925658209249, 610503.752603529486805, 610514.770297809503973, 610525.788008498144336, 610536.805735595291480, 610547.823479100479744, 610558.841239013476297, 610569.859015334164724, 610580.876808061962947, 610591.894617196870968, 610602.912442738539539, 610613.930284686735831, 610624.948143041110598, 610635.966017801431008, 610646.983908967347816, 610658.001816538744606, 610669.019740515388548, 610680.037680896813981, 610691.055637682904489, 610702.073610873077996, 610713.091600467567332, 610724.109606465790421, 610735.127628867630847, 610746.145667672622949, 610757.163722880533896, 610768.181794491130859, 610779.199882504413836, 610790.217986919800751, 610801.236107737058774, 610812.254244955955073, 610823.272398576140404, 610834.290568597614765, 610845.308755019796081, 610856.326957842567936, 610867.345177065697499, 610878.363412688835524, 610889.381664711632766, 610900.399933133972809, 610911.418217955622822, 610922.436519176233560, 610933.454836795339361, 610944.473170812940225, 610955.491521228803322, 610966.509888042462990, 610977.528271253802814, 610988.546670862357132, 610999.565086868009530, 611010.583519270527177, 611021.601968069677241, 611032.620433264877647, 611043.638914856128395, 611054.657412843196653, 611065.675927225733176, 611076.694458003388718, 611087.713005175930448, 611098.731568743009120, 611109.750148704741150, 611120.768745060544461, 611131.787357810069807, 611142.805986953200772, 611153.824632489588112, 611164.843294419115409, 611175.861972741433419, 611186.880667456192896, 611197.899378563277423, 611208.918106062221341, 611219.936849952791817, 611230.955610234988853, 611241.974386908230372, 611252.993179972399957, 611264.011989427264780, 611275.030815272242762, 611286.049657507450320, 611297.068516132421792, 611308.087391147040762, 611319.106282550957985, 611330.125190343707800, 611341.144114525290206, 611352.163055095355958, 611363.182012053672224, 611374.200985399889760, 611385.219975133659318, 611396.238981254980899, 611407.258003763505258, 611418.277042658766732, 611429.296097940532491, 611440.315169608686119, 611451.334257662994787, 611462.353362102876417, 611473.372482928563841, 611484.391620139358565, 611495.410773735144176, 611506.429943715571426, 611517.449130080523901, 611528.468332829652354, 611539.487551962607540, 611550.506787479273044, 611561.526039379183203, 611572.545307662338018, 611583.564592328271829, 611594.583893376984634, 611605.603210807777941, 611616.622544620535336, 611627.641894815140404, 611638.661261391243897, 611649.680644348612987, 611660.700043686898425, 611671.719459405750968, 611682.738891505170614, 611693.758339984691702, 611704.777804844197817, 611715.797286083223298, 611726.816783701651730, 611737.836297699017450, 611748.855828075320460, 611759.875374830095097, 611770.894937963224947, 611781.914517474360764, 611792.934113363036886, 611803.953725629486144, 611814.973354272893630, 611825.992999293375760, 611837.012660690466873, 611848.032338463817723, 611859.052032613428310, 611870.071743138949387, 611881.091470040031709, 611892.111213316442445, 611903.130972967715934, 611914.150748993968591, 611925.170541394734755, 611936.190350169781595, 611947.210175318759866, 611958.230016841320321, 611969.249874737462960, 611980.269749006838538, 611991.289639649097808, 612002.309546664007939, 612013.329470051219687, 612024.349409810500219, 612035.369365941616707, 612046.389338444336317, 612057.409327318426222, 612068.429332563537173, 612079.449354179203510, 612090.469392165658064, 612101.489446522318758, 612112.509517248719931, 612123.529604344977997, 612134.549707810627297, 612145.569827645434998, 612156.589963849051856, 612167.610116421477869, 612178.630285362130962, 612189.650470670778304, 612200.670672347419895, 612211.690890391473658, 612222.711124802823178, 612233.731375581468455, 612244.751642726478167, 612255.771926238085143, 612266.792226115940139, 612277.812542359810323, 612288.832874969346449, 612299.853223944199272, 612310.873589284135960, 612321.893970989040099, 612332.914369058446027, 612343.934783492353745, 612354.955214290297590, 612365.975661451811902, 612376.996124977129512, 612388.016604865551926, 612399.037101117079146, 612410.057613731361926, 612421.078142707934603, 612432.098688046797179, 612443.119249747600406, 612454.139827810111456, 612465.160422233864665, 612476.181033018860035, 612487.201660164631903, 612498.222303671063855, 612509.242963537806645, 612520.263639764627442, 612531.284332351177000, 612542.305041297222488, 612553.325766602531075, 612564.346508266986348, 612575.367266289889812, 612586.388040671474300, 612597.408831411041319, 612608.429638508474454, 612619.450461963773705, 612630.471301776356995, 612641.492157946107909, 612652.513030472560786, 612663.533919355599210, 612674.554824595106766, 612685.575746190501377, 612696.596684141783044, 612707.617638448369689, 612718.638609110377729, 612729.659596127341501, 612740.680599498911761, 612751.701619224972092, 612762.722655305173248, 612773.743707739282399, 612784.764776527066715, 612795.785861668176949, 612806.806963162496686, 612817.828081009443849, 612828.849215209018439, 612839.870365760871209, 612850.891532664885744, 612861.912715920596384, 612872.933915527770296, 612883.955131486058235, 612894.976363795460202, 612905.997612455510534, 612917.018877465976402, 612928.040158826624975, 612939.061456536990590, 612950.082770597189665, 612961.104101006756537, 612972.125447765341960, 612983.146810872713104, 612994.168190328520723, 613005.189586132764816, 613016.210998284979723, 613027.232426785165444, 613038.253871632507071, 613049.275332827353850, 613060.296810368890874, 613071.318304257234558, 613082.339814491919242, 613093.361341072828509, 613104.382883999613114, 613115.404443271807395, 613126.426018889527768, 613137.447610852424987, 613148.469219159916975, 613159.490843812120147, 613170.512484808452427, 613181.534142148913816, 613192.555815833038650, 613203.577505860710517, 613214.599212231580168, 613225.620934945181943, 613236.642674001748674, 613247.664429400698282, 613258.686201141681522, 613269.707989224581979, 613280.729793648933992, 613291.751614414853975, 613302.773451521643437, 613313.795304969418794, 613324.817174757714383, 613335.839060886180960, 613346.860963354585692, 613357.882882162812166, 613368.904817310511135, 613379.926768797566183, 613390.948736623395234, 613401.970720787765458, 613412.992721290793270, 613424.014738131780177, 613435.036771310726181, 613446.058820827165619, 613457.080886680982076, 613468.102968871942721, 613479.125067399698310, 613490.147182263899595, 613501.169313464430161, 613512.191461000824347, 613523.213624873082153, 613534.235805080854334, 613545.258001623791642, 613556.280214501661249, 613567.302443714230321, 613578.324689260916784, 613589.346951142069884, 613600.369229356991127, 613611.391523905447684, 613622.413834787323140, 613633.436162002151832, 613644.458505549817346, 613655.480865429970436, 613666.503241642494686, 613677.525634186924435, 613688.548043063143268, 613699.570468270801939, 613710.592909809667617, 613721.615367679507472, 613732.637841879972257, 613743.660332410712726, 613754.682839271728881, 613765.705362462555058, 613776.727901983074844, 613787.750457832938991, 613798.773030011681840, 613809.795618519303389, 613820.818223355454393, 613831.840844519902021, 613842.863482012413442, 613853.886135832522996, 613864.908805980114266, 613875.931492454838008, 613886.954195256577805, 613897.976914384984411, 613908.999649839824997, 613920.022401620750315, 613931.045169727527536, 613942.067954160040244, 613953.090754917706363, 613964.113572000525892, 613975.136405408033170, 613986.159255140228197, 613997.182121196645312, 614008.205003576935269, 614019.227902281098068, 614030.250817308784463, 614041.273748659412377, 614052.296696333214641, 614063.319660329609178, 614074.342640648363158, 614085.365637289243750, 614096.388650252018124, 614107.411679536453448, 614118.434725142084062, 614129.457787069026381, 614140.480865316581912, 614151.503959884634241, 614162.527070773066953, 614173.550197981530800, 614184.573341509560123, 614195.596501357271336, 614206.619677523965947, 614217.642870009760372, 614228.666078814188950, 614239.689303937018849, 614250.712545377900824, 614261.735803136834875, 614272.759077213238925, 614283.782367606880143, 614294.805674317874946, 614305.828997345524840, 614316.852336689713411, 614327.875692350091413, 614338.899064326542430, 614349.922452618833631, 614360.945857226615772, 614371.969278149423189, 614382.992715387255885, 614394.016168939881027, 614405.039638806832954, 614416.063124987878837, 614427.086627482902259, 614438.110146291321144, 614449.133681413251907, 614460.157232848345302, 614471.180800596252084, 614482.204384656506591, 614493.227985029225238, 614504.251601713825949, 614515.275234710308723, 614526.298884018207900, 614537.322549637407064, 614548.346231567324139, 614559.369929808075540, 614570.393644359312020, 614581.417375220567919, 614592.441122391843237, 614603.464885872672312, 614614.488665662705898, 614625.512461762060411, 614636.536274170270190, 614647.560102886985987, 614658.583947911974974, 614669.607809244771488, 614680.631686885608360, 614691.655580833787099, 614702.679491089424118, 614713.703417651820928, 614724.727360520977527, 614735.751319696428254, 614746.775295178056695, 614757.799286965746433, 614768.823295059148222, 614779.847319457679987, 614790.871360161341727, 614801.895417169900611, 614812.919490483007394, 614823.943580100429244, 614834.967686022049747, 614845.991808247170411, 614857.015946775907651, 614868.040101607912220, 614879.064272742951289, 614890.088460180559196, 614901.112663920619525, 614912.136883962899446, 614923.161120307166129, 614934.185372952953912, 614945.209641900262795, 614956.233927148627117, 614967.258228697697632, 614978.282546547590755, 614989.306880697607994, 615000.331231147749349, 615011.355597897781990, 615022.379980947123840, 615033.404380295774899, 615044.428795943502337, 615055.453227889956906, 615066.477676134905778, 615077.502140677766874, 615088.526621518889442, 615099.551118657458574, 615110.575632093474269, 615121.600161826820113, 615132.624707856681198, 615143.649270183406770, 615154.673848806298338, 615165.698443725355901, 615176.723054940230213, 615187.747682450572029, 615198.772326256148517, 615209.796986356843263, 615220.821662752190605, 615231.846355442074127, 615242.871064426144585, 615253.895789704052731, 615264.920531275798567, 615275.945289140916429, 615286.970063299173489, 615297.994853750336915, 615309.019660493941046, 615320.044483530102298, 615331.069322858238593, 615342.094178478349932, 615353.119050389854237, 615364.143938592635095, 615375.168843086459674, 615386.193763871211559, 615397.218700946308672, 615408.243654311634600, 615419.268623966840096, 615430.293609911808744, 615441.318612146191299, 615452.343630669871345, 615463.368665482383221, 615474.393716583610512, 615485.418783972971141, 615496.443867650581524, 615507.468967615975998, 615518.494083869038150, 615529.519216409418732, 615540.544365236652084, 615551.569530350854620, 615562.594711751444265, 615573.619909438304603, 615584.645123411319219, 615595.670353669789620, 615606.695600213832222, 615617.720863043097779, 615628.746142157237045, 615639.771437556133606, 615650.796749239321798, 615661.822077206452377, 615672.847421457758173, 615683.872781992540695, 615694.898158810683526, 615705.923551911837421, 615716.948961295769550, 615727.974386962247081, 615738.999828911037184, 615750.025287141907029, 615761.050761654390953, 615772.076252448372543, 615783.101759523502551, 615794.127282879664563, 615805.152822516625747, 615816.178378433804028, 615827.203950631199405, 615838.229539108346216, 615849.255143865360878, 615860.280764901661314, 615871.306402216898277, 615882.332055811071768, 615893.357725683832541, 615904.383411834831350, 615915.409114263835363, 615926.434832970611751, 615937.460567954927683, 615948.486319216433913, 615959.512086755014025, 615970.537870570202358, 615981.563670661882497, 615992.589487029705197, 616003.615319673321210, 616014.641168592730537, 616025.667033787583932, 616036.692915257415734, 616047.718813002109528, 616058.744727021548897, 616069.770657315035351, 616080.796603882685304, 616091.822566724149510, 616102.848545839195140, 616113.874541227472946, 616124.900552888633683, 616135.926580822677352, 616146.952625029138289, 616157.978685507783666, 616169.004762258380651, 616180.030855280579999, 616191.056964574265294, 616202.083090139087290, 616213.109231974813156, 616224.135390081093647, 616235.161564457695931, 616246.187755104387179, 616257.213962021050975, 616268.240185207105242, 616279.266424662549980, 616290.292680387035944, 616301.318952380097471, 616312.345240641734563, 616323.371545171714388, 616334.397865969571285, 616345.424203035188839, 616356.450556367984973, 616367.476925968192518, 616378.503311835345812, 616389.529713969095610, 616400.556132369209081, 616411.582567035453394, 616422.609017967479303, 616433.635485165170394, 616444.661968628061004, 616455.688468356151134, 616466.714984348975122, 616477.741516606300138, 616488.768065127893351, 616499.794629913521931, 616510.821210962836631, 616521.847808275721036, 616532.874421851593070, 616543.901051690569147, 616554.927697792183608, 616565.954360156320035, 616576.981038782512769, 616588.007733670412563, 616599.034444820135832, 616610.061172231216915, 616621.087915903306566, 616632.114675836288370, 616643.141452029696666, 616654.168244483531453, 616665.195053197327070, 616676.221878170967102, 616687.248719404102303, 616698.275576896383427, 616709.302450647694059, 616720.329340657684952, 616731.356246926239692, 616742.383169452776201, 616753.410108237294480, 616764.437063279445283, 616775.464034579112194, 616786.491022135829553, 616797.518025949480943, 616808.545046019600704, 616819.572082346072420, 616830.599134928546846, 616841.626203766907565, 616852.653288860921748, 616863.680390210123733, 616874.707507814280689, 616885.734641673159786, 616896.761791786528192, 616907.788958154153079, 616918.816140775801614, 616929.843339651124552, 616940.870554779656231, 616951.897786161513068, 616962.925033796229400, 616973.952297683688812, 616984.979577823425643, 616996.006874215090647, 617007.034186858916655, 617018.061515754088759, 617029.088860900723375, 617040.116222298354842, 617051.143599946633913, 617062.170993845560588, 617073.198403994785622, 617084.225830393959768, 617095.253273042850196, 617106.280731941107661, 617117.308207088732161, 617128.335698485141620, 617139.363206130336039, 617150.390730023849756, 617161.418270165566355, 617172.445826555020176, 617183.473399192211218, 617194.500988076790236, 617205.528593208407983, 617216.556214586831629, 617227.583852211711928, 617238.611506083165295, 617249.639176200376824, 617260.666862563579343, 617271.694565172190778, 617282.722284025978297, 617293.750019124592654, 617304.777770468266681, 617315.805538056185469, 617326.833321888349019, 617337.861121964408085, 617348.888938284013420, 617359.916770847165026, 617370.944619653397240, 617381.972484702593647, 617393.000365994172171, 617404.028263528132811, 617415.056177304242738, 617426.084107322152704, 617437.112053581629880, 617448.140016082325019, 617459.167994824005291, 617470.195989806554280, 617481.224001029622741, 617492.252028492861427, 617503.280072196037509, 617514.308132138918154, 617525.336208321154118, 617536.364300742628984, 617547.392409402993508, 617558.420534302131273, 617569.448675439460203, 617580.476832814863883, 617591.505006428342313, 617602.533196279429831, 617613.561402367660776, 617624.589624693035148, 617635.617863255087286, 617646.646118053817190, 617657.674389088759199, 617668.702676359796897, 617679.730979866464622, 617690.759299608645961, 617701.787635585991666, 617712.815987798268907, 617723.844356245477684, 617734.872740926919505, 617745.901141842477955, 617756.929558991920203, 617767.957992375129834, 617778.986441991757601, 617790.014907841337845, 617801.043389923870564, 617812.071888238773681, 617823.100402786280029, 617834.128933565574698, 617845.157480576890521, 617856.186043819645420, 617867.214623293606564, 617878.243218998541124, 617889.271830934332684, 617900.300459100515582, 617911.329103497089818, 617922.357764123356901, 617933.386440979433246, 617944.415134064853191, 617955.443843379500322, 617966.472568923025392, 617977.501310695311986, 617988.530068695661612, 617999.558842924307100, 618010.587633380782790, 618021.616440064855851, 618032.645262976293452, 618043.674102114513516, 618054.702957479748875, 618065.731829071417451, 618076.760716889402829, 618087.789620933355764, 618098.818541203159839, 618109.847477698232979, 618120.876430418575183, 618131.905399363837205, 618142.934384533902630, 618153.963385928305797, 618164.992403546813875, 618176.021437389194034, 618187.050487455329858, 618198.079553744755685, 618209.108636257471517, 618220.137734992662445, 618231.166849950561300, 618242.195981130935252, 618253.225128533202223, 618264.254292157245800, 618275.283472002949566, 618286.312668069731444, 618297.341880357591435, 618308.371108866180293, 618319.400353595381603, 618330.429614544613287, 618341.458891713758931, 618352.488185102585703, 618363.517494710860774, 618374.546820538351312, 618385.576162584824488, 618396.605520849698223, 618407.634895332972519, 618418.664286034530960, 618429.693692953791469, 618440.723116090754047, 618451.752555444836617, 618462.782011016039178, 618473.811482804012485, 618484.840970808640122, 618495.870475029340014, 618506.899995466228575, 618517.929532118607312, 618528.959084986592643, 618539.988654069835320, 618551.018239367986098, 618562.047840880812146, 618573.077458607964218, 618584.107092549325898, 618595.136742704664357, 618606.166409073630348, 618617.196091655991040, 618628.225790451397188, 618639.255505459499545, 618650.285236680414528, 618661.314984113560058, 618672.344747758586891, 618683.374527615727857, 618694.404323684051633, 618705.434135963907465, 618716.463964454713278, 618727.493809156236239, 618738.523670068243518, 618749.553547190269455, 618760.583440522546880, 618771.613350064493716, 618782.643275815644301, 618793.673217776115052, 618804.703175945556723, 618815.733150323387235, 618826.763140909723006, 618837.793147704214789, 618848.823170706513338, 618859.853209916502237, 618870.883265333599411, 618881.913336957804859, 618892.943424789002165, 618903.973528826609254, 618915.003649070626125, 618926.033785520354286, 618937.063938176026568, 618948.094107037177309, 618959.124292103573680, 618970.154493374866433, 618981.184710850822739, 618992.214944531326182, 619003.245194415911101, 619014.275460504461080, 619025.305742796626873, 619036.336041292175651, 619047.366355990874581, 619058.396686892374419, 619069.427033996558748, 619080.457397303078324, 619091.487776811700314, 619102.518172521842644, 619113.548584433854558, 619124.579012547037564, 619135.609456861275248, 619146.639917376334779, 619157.670394091634080, 619168.700887007289566, 619179.731396123068407, 619190.761921438504942, 619201.792462953249924, 619212.823020667303354, 619223.853594580199569, 619234.884184691822156, 619245.914791001821868, 619256.945413510082290, 619267.976052216137759, 619279.006707119522616, 619290.037378220586106, 619301.068065518629737, 619312.098769013653509, 619323.129488704958931, 619334.160224592662416, 619345.190976676531136, 619356.221744956099428, 619367.252529431134462, 619378.283330101519823, 619389.314146966789849, 619400.344980026711710, 619411.375829281285405, 619422.406694729928859, 619433.437576372642070, 619444.468474208959378, 619455.499388238531537, 619466.530318461474963, 619477.561264877207577, 619488.592227485612966, 619499.623206286458299, 619510.654201279161498, 619521.685212463955395, 619532.716239840141498, 619543.747283407836221, 619554.778343166457489, 619565.809419115888886, 619576.840511255897582, 619587.871619586017914, 619598.902744106366299, 619609.933884816360660, 619620.965041715884581, 619631.996214804355986, 619643.027404082124121, 619654.058609548490494, 619665.089831203222275, 619676.121069046319462, 619687.152323076967150, 619698.183593295514584, 619709.214879701496102, 619720.246182294446044, 619731.277501074364409, 619742.308836040901951, 619753.340187193593010, 619764.371554532437585, 619775.402938057202846, 619786.434337767539546, 619797.465753663098440, 619808.497185743530281, 619819.528634008835070, 619830.560098458663560, 619841.591579092782922, 619852.623075910960324, 619863.654588912613690, 619874.686118097859435, 619885.717663466231897, 619896.749225017614663, 619907.780802751774900, 619918.812396668130532, 619929.844006766565144, 619940.875633047195151, 619951.907275509205647, 619962.938934152713045, 619973.970608977251686, 619985.002299982472323, 619996.034007168607786, 620007.065730534726754, 620018.097470081178471, 620029.129225807264447, 620040.160997712868266, 620051.192785797757097, 620062.224590061698109, 620073.256410504342057, 620084.288247125456110, 620095.320099924923852, 620106.351968902046792, 620117.383854057174176, 620128.415755389607511, 620139.447672899346799, 620150.479606585809961, 620161.511556448880583, 620172.543522488442250, 620183.575504704145715, 620194.607503095758148, 620205.639517662930302, 620216.671548405312933, 620227.703595322906040, 620238.735658415360376, 620249.767737682210281, 620260.799833123455755, 620271.831944738863967, 620282.864072527852841, 620293.896216490422376, 620304.928376626106910, 620315.960552935022861, 620326.992745416588150, 620338.024954070453532, 620349.057178896619007, 620360.089419894735329, 620371.121677064569667, 620382.153950405772775, 620393.186239918111823, 620404.218545601353981, 620415.250867455266416, 620426.283205479616299, 620437.315559673937969, 620448.347930038115010, 620459.380316571914591, 620470.412719275103882, 620481.445138147217222, 620492.477573188254610, 620503.510024397866800, 620514.542491775588132, 620525.574975321418606, 620536.607475035125390, 620547.639990916126408, 620558.672522964538075, 620569.705071179778315, 620580.737635561730713, 620591.770216110278852, 620602.802812824957073, 620613.835425705532543, 620624.868054751772434, 620635.900699963327497, 620646.933361340081319, 620657.966038881801069, 620668.998732588137500, 620680.031442458741367, 620691.064168493496254, 620702.096910692052916, 620713.129669054178521, 620724.162443579756655, 620735.195234268321656, 620746.228041119524278, 620757.260864133364521, 620768.293703309493139, 620779.326558647560887, 620790.359430147567764, 620801.392317808931693, 620812.425221631419845, 620823.458141614915803, 620834.491077759186737, 620845.524030063883401, 620856.556998528889380, 620867.589983153506182, 620878.622983937966637, 620889.656000881921500, 620900.689033984905109, 620911.722083246684633, 620922.755148667260073, 620933.788230245932937, 620944.821327982819639, 620955.854441877570935, 620966.887571929953992, 620977.920718139503151, 620988.953880506101996, 620999.987059029634111, 621011.020253709517419, 621022.053464545751922, 621033.086691537988372, 621044.119934685993940, 621055.153193989419378, 621066.186469448148273, 621077.219761061714962, 621088.253068830119446, 621099.286392752896063, 621110.319732829811983, 621121.353089060634375, 621132.386461445130408, 621143.419849983067252, 621154.453254674095660, 621165.486675517866388, 621176.520112514495850, 621187.553565663285553, 621198.587034964351915, 621209.620520417112857, 621220.654022021335550, 621231.687539777019992, 621242.721073683816940, 621253.754623741260730, 621264.788189949234948, 621275.821772307506762, 621286.855370815726928, 621297.888985473662615, 621308.922616281313822, 621319.956263237982057, 621330.989926343667321, 621342.023605597903952, 621353.057301000808366, 621364.091012551682070, 621375.124740250641480, 621386.158484097220935, 621397.192244090954773, 621408.226020232075825, 621419.259812520002015, 621430.293620954616927, 621441.327445535571314, 621452.361286262632348, 621463.395143135217950, 621474.429016153793782, 621485.462905317428522, 621496.496810626238585, 621507.530732079758309, 621518.564669677754864, 621529.598623420111835, 621540.632593306363560, 621551.666579336393625, 621562.700581510085613, 621573.734599826741032, 621584.768634286476299, 621595.802684888942167, 621606.836751633789390, 621617.870834520901553, 621628.904933549929410, 621639.939048720407300, 621650.973180032451637, 621662.007327485713176, 621673.041491079726256, 621684.075670814490877, 621695.109866689308546, 621706.144078704528511, 621717.178306859452277, 621728.212551154079847, 621739.246811587945558, 621750.281088160816580, 621761.315380872460082, 621772.349689722759649, 621783.384014711249620, 621794.418355837697163, 621805.452713102102280, 621816.487086503766477, 621827.521476042689756, 621838.555881718755700, 621849.590303531382233, 621860.624741480569355, 621871.659195565734990, 621882.693665786995552, 621893.728152143885382, 621904.762654636171646, 621915.797173263737932, 621926.831708026118577, 621937.866258922964334, 621948.900825954391621, 621959.935409119818360, 621970.970008419128135, 621982.004623851971701, 621993.039255418116227, 622004.073903117445298, 622015.108566949609667, 622026.143246914143674, 622037.177943011163734, 622048.212655239971355, 622059.247383600566536, 622070.282128092832863, 622081.316888716304675, 622092.351665470749140, 622103.386458356049843, 622114.421267371508293, 622125.456092517357320, 622136.490933793014847, 622147.525791198597290, 622158.560664733522572, 622169.595554397325031, 622180.630460190353915, 622191.665382112027146, 622202.700320161995478, 622213.735274340026081, 622224.770244645886123, 622235.805231079459190, 622246.840233640279621, 622257.875252328347415, 622268.910287143080495, 622279.945338084362447, 622290.980405152076855, 622302.015488345758058, 622313.050587665289640, 622324.085703110205941, 622335.120834680506960, 622346.155982375727035, 622357.191146195633337, 622368.226326140109450, 622379.261522208806127, 622390.296734401606955, 622401.331962717929855, 622412.367207157658413, 622423.402467720676214, 622434.437744406517595, 622445.473037215182558, 622456.508346146089025, 622467.543671199120581, 622478.579012374044396, 622489.614369670744054, 622500.649743088753894, 622511.685132627841085, 622522.720538287656382, 622533.755960068199784, 622544.791397969005629, 622555.826851989957504, 622566.862322130589746, 622577.897808390902355, 622588.933310770313255, 622599.968829268822446, 622611.004363886080682, 622622.039914621971548, 622633.075481475912966, 622644.111064447904937, 622655.146663537598215, 622666.182278744876385, 622677.217910069390200, 622688.253557510674000, 622699.289221068611369, 622710.324900743085891, 622721.360596533748321, 622732.396308440365829, 622743.432036462589167, 622754.467780600185506, 622765.503540852689184, 622776.539317220333032, 622787.575109702651389, 622798.610918299062178, 622809.646743009681813, 622820.682583834044635, 622831.718440772034228, 622842.754313823417760, 622853.790202987729572, 622864.826108264969662, 622875.862029654672369, 622886.897967156488448, 622897.933920770534314, 622908.969890496227890, 622920.005876333452761, 622931.041878281976096, 622942.077896341215819, 622953.113930511404760, 622964.149980791960843, 622975.186047182767652, 622986.222129683475941, 622997.258228293736465, 623008.294343013549224, 623019.330473842564970, 623030.366620780434459, 623041.402783826924860, 623052.438962981803343, 623063.475158244604245, 623074.511369615560398, 623085.547597093973309, 623096.583840679726563, 623107.620100372703746, 623118.656376172206365, 623129.692668078467250, 623140.728976091020741, 623151.765300209634006, 623162.801640433957800, 623173.837996763875708, 623184.874369198922068, 623195.910757739096880, 623206.947162384050898, 623217.983583133434877, 623229.020019987132400, 623240.056472944677807, 623251.092942005954683, 623262.129427170613781, 623273.165928438538685, 623284.202445809496567, 623295.238979282905348, 623306.275528858881444, 623317.312094536842778, 623328.348676316905767, 623339.385274198604748, 623350.421888181590475, 623361.458518265513703, 623372.495164450490847, 623383.531826736172661, 623394.568505121977068, 623405.605199608020484, 623416.641910193720832, 623427.678636879194528, 623438.715379663743079, 623449.752138547482900, 623460.788913530064747, 623471.825704610790126, 623482.862511790124699, 623493.899335067486390, 623504.936174442409538, 623515.973029914894141, 623527.009901484707370, 623538.046789151383564, 623549.083692914689891, 623560.120612774626352, 623571.157548730727285, 623582.194500782759860, 623593.231468930258416, 623604.268453173222952, 623615.305453511537053, 623626.342469944618642, 623637.379502472351305, 623648.416551094618626, 623659.453615810722113, 623670.490696620894596, 623681.527793524553999, 623692.564906521700323, 623703.602035611751489, 623714.639180794591084, 623725.676342070219107, 623736.713519437937066, 623747.750712897977792, 623758.787922449526377, 623769.825148092699237, 623780.862389827147126, 623791.899647652520798, 623802.936921568820253, 623813.974211575579830, 623825.011517672566697, 623836.048839859315194, 623847.086178136058152, 623858.123532502097078, 623869.160902957431972, 623880.198289501713589, 623891.235692134476267, 623902.273110855836421, 623913.310545665328391, 623924.347996562719345, 623935.385463547776453, 623946.422946620266885, 623957.460445779724978, 623968.497961026150733, 623979.535492359194905, 623990.573039778624661, 624001.610603284090757, 624012.648182875360362, 624023.685778552200645, 624034.723390314495191, 624045.761018161778338, 624056.798662093933672, 624067.836322110379115, 624078.873998211231083, 624089.911690396256745, 624100.949398664874025, 624111.987123017082922, 624123.024863452534191, 624134.062619970878586, 624145.100392571999691, 624156.138181255548261, 624167.175986021524295, 624178.213806869229302, 624189.251643798663281, 624200.289496809593402, 624211.327365901670419, 624222.365251074777916, 624233.403152328450233, 624244.441069662454538, 624255.479003076674417, 624266.516952570760623, 624277.554918144480325, 624288.592899797600694, 624299.630897529772483, 624310.668911340762861, 624321.706941230455413, 624332.744987198500894, 624343.783049244550057, 624354.821127368370071, 624365.859221569728106, 624376.897331848507747, 624387.935458204243332, 624398.973600636818446, 624410.011759145883843, 624421.049933731323108, 624432.088124392670579, 624443.126331129693426, 624454.164553942275234, 624465.202792830066755, 624476.241047792951576, 624487.279318830347620, 624498.317605942371301, 624509.355909128556959, 624520.394228388671763, 624531.432563722482882, 624542.470915129757486, 624553.509282610029913, 624564.547666163300164, 624575.586065789218992, 624586.624481487669982, 624597.662913258071057, 624608.701361100305803, 624619.739825014257804, 624630.778304999577813, 624641.816801056033000, 624652.855313183274120, 624663.893841380951926, 624674.932385649182834, 624685.970945987268351, 624697.009522395324893, 624708.048114873003215, 624719.086723419837654, 624730.125348035711795, 624741.163988720392808, 624752.202645473531447, 624763.241318295011297, 624774.280007184483111, 624785.318712141597643, 624796.357433166122064, 624807.396170258172788, 624818.434923417051323, 624829.473692642524838, 624840.512477934593335, 624851.551279292791151, 624862.590096716885455, 624873.628930206643417, 624884.667779761948623, 624895.706645382451825, 624906.745527067570947, 624917.784424817538820, 624928.823338631889783, 624939.862268510391004, 624950.901214452809654, 624961.940176458680071, 624972.979154527885839, 624984.018148660310544, 624995.057158855488524, 625006.096185113303363, 625017.135227433522232, 625028.174285815563053, 625039.213360259542242, 625050.252450765110552, 625061.291557332035154, 625072.330679959850386, 625083.369818648439832, 625094.408973397570662, 625105.448144207126461, 625116.487331076525152, 625127.526534005766734, 625138.565752994385548, 625149.604988042148761, 625160.644239149056375, 625171.683506314526312, 625182.722789538558573, 625193.762088820803910, 625204.801404160796665, 625215.840735558653250, 625226.880083013908006, 625237.919446526328102, 625248.958826095564291, 625259.998221721616574, 625271.037633403786458, 625282.077061142423190, 625293.116504936711863, 625304.155964786768891, 625315.195440692012198, 625326.234932652441785, 625337.274440667708404, 625348.313964737579226, 625359.353504861705005, 625370.393061040085740, 625381.432633271906525, 625392.472221557633020, 625403.511825896566734, 625414.551446288474835, 625425.591082733240910, 625436.630735230515711, 625447.670403779949993, 625458.710088381543756, 625469.749789034831338, 625480.789505739696324, 625491.829238495556638, 625502.868987302528694, 625513.908752160263248, 625524.948533068411052, 625535.988330026855692, 625547.028143035247922, 625558.067972093238495, 625569.107817200594582, 625580.147678357199766, 625591.187555562821217, 625602.227448816993274, 625613.267358119599521, 625624.307283470290713, 625635.347224868950434, 625646.387182315229438, 625657.427155808894895, 625668.467145349597558, 625679.507150937337428, 625690.547172571416013, 625701.587210251949728, 625712.627263978589326, 625723.667333751101978, 625734.707419569138438, 625745.747521432349458, 625756.787639340735041, 625767.827773294062354, 625778.867923291749321, 625789.908089333795942, 625800.948271419620141, 625811.988469549454749, 625823.028683722834103, 625834.068913939408958, 625845.109160199062899, 625856.149422501330264, 625867.189700846094638, 625878.229995233123191, 625889.270305662066676, 625900.310632132808678, 625911.350974644883536, 625922.391333198174834, 625933.431707792333327, 625944.472098427359015, 625955.512505102669820, 625966.552927818265744, 625977.593366573797539, 625988.633821368799545, 625999.674292203155346, 626010.714779076864943, 626021.755281989346258, 626032.795800940482877, 626043.836335929925554, 626054.876886957441457, 626065.917454022914171, 626076.958037125994451, 626087.998636266333051, 626099.039251443813555, 626110.079882657970302, 626121.120529908803292, 626132.161193195846863, 626143.201872519217432, 626154.242567878100090, 626165.283279272494838, 626176.324006702285260, 626187.364750167122111, 626198.405509666772559, 626209.446285200887360, 626220.487076769000851, 626231.527884371345863, 626242.568708007456735, 626253.609547676984221, 626264.650403379695490, 626275.691275115357712, 626286.732162883738056, 626297.773066684720106, 626308.813986517721787, 626319.854922382743098, 626330.895874279434793, 626341.936842207447626, 626352.977826166665182, 626364.018826156854630, 626375.059842177666724, 626386.100874228868634, 626397.141922310343944, 626408.182986421394162, 626419.224066562252119, 626430.265162732452154, 626441.306274931877851, 626452.347403160063550, 626463.388547416660003, 626474.429707701783627, 626485.470884014968760, 626496.512076356098987, 626507.553284724592231, 626518.594509120681323, 626529.635749543434940, 626540.677005993202329, 626551.718278469517827, 626562.759566972148605, 626573.800871500629000, 626584.842192054959014, 626595.883528634789400, 626606.924881240003742, 626617.966249870136380, 626629.007634525070898, 626640.049035204225220, 626651.090451907948591, 626662.131884635426104, 626673.173333386774175, 626684.214798161410727, 626695.256278959452175, 626706.297775780200027, 626717.339288623770699, 626728.380817489814945, 626739.422362377983518, 626750.463923288043588, 626761.505500219762325, 626772.547093173023313, 626783.588702147244476, 626794.630327142542228, 626805.671968158334494, 626816.713625194504857, 626827.755298250820488, 626838.796987327048555, 626849.838692422839813, 626860.880413537961431, 626871.922150672296993, 626882.963903825264424, 626894.005672996863723, 626905.047458186862059, 626916.089259395026602, 626927.131076620891690, 626938.172909864340909, 626949.214759124908596, 626960.256624402711168, 626971.298505697282963, 626982.340403008391149, 626993.382316335802898, 627004.424245679052547, 627015.466191038140096, 627026.508152412832715, 627037.550129802781157, 627048.592123207636178, 627059.634132627164945, 627070.676158061251044, 627081.718199509545229, 627092.760256971814670, 627103.802330447826535, 627114.844419937347993, 627125.886525439796969, 627136.928646955406293, 627147.970784483710304, 627159.012938024359755, 627170.055107577121817, 627181.097293141763657, 627192.139494718285277, 627203.181712305988185, 627214.223945905105211, 627225.266195514937863, 627236.308461135253310, 627247.350742766051553, 627258.393040407099761, 627269.435354057932273, 627280.477683718316257, 627291.520029388135299, 627302.562391066923738, 627313.604768754565157, 627324.647162450943142, 627335.689572155592032, 627346.731997868278995, 627357.774439588771202, 627368.816897316719405, 627379.859371052123606, 627390.901860794518143, 627401.944366543670185, 627412.986888299463317, 627424.029426061315462, 627435.071979829343036, 627446.114549603080377, 627457.157135382411070, 627468.199737166985869, 627479.242354956455529, 627490.284988750587218, 627501.327638549380936, 627512.370304352254607, 627523.412986159208231, 627534.455683970008977, 627545.498397783958353, 627556.541127601172775, 627567.583873421535827, 627578.626635244349018, 627589.669413069845177, 627600.712206897442229, 627611.755016726790927, 627622.797842557891272, 627633.840684390394017, 627644.883542224066332, 627655.926416058675386, 627666.969305893755518, 627678.012211729423143, 627689.055133565096185, 627700.098071400774643, 627711.141025235992856, 627722.183995070634410, 627733.226980904117227, 627744.269982736790553, 627755.313000567839481, 627766.356034397380427, 627777.399084224831313, 627788.442150050192140, 627799.485231873113662, 627810.528329693363048, 627821.571443510707468, 627832.614573324797675, 627843.657719135400839, 627854.700880942284130, 627865.744058745331131, 627876.787252544076182, 627887.830462338402867, 627898.873688127845526, 627909.916929912287742, 627920.960187691613100, 627932.003461465355940, 627943.046751233399846, 627954.090056995511986, 627965.133378751110286, 627976.176716500427574, 627987.220070242765360, 627998.263439978356473, 628009.306825706386007, 628020.350227426970378, 628031.393645139643922, 628042.437078844406642, 628053.480528540792875, 628064.523994228569791, 628075.567475907620974, 628086.610973577480763, 628097.654487238032743, 628108.698016889044084, 628119.741562530049123, 628130.785124161164276, 628141.828701781807467, 628152.872295391862281, 628163.915904990979470, 628174.959530579042621, 628186.003172155702487, 628197.046829720726237, 628208.090503273764625, 628219.134192814701237, 628230.177898343303241, 628241.221619859221391, 628252.265357362222858, 628263.309110851958394, 628274.352880328311585, 628285.396665791049600, 628296.440467239823192, 628307.484284674399532, 628318.528118094545789, 628329.571967499796301, 628340.615832890267484, 628351.659714265493676, 628362.703611625242047, 628373.747524969279766, 628384.791454297374003, 628395.835399609059095, 628406.879360904335044, 628417.923338182969019, 628428.967331444495358, 628440.011340688797645, 628451.055365915526636, 628462.099407124565914, 628473.143464315449819, 628484.187537488178350, 628495.231626642402261, 628506.275731777772307, 628517.319852893939242, 628528.363989990903065, 628539.408143068430945, 628550.452312126057222, 628561.496497163665481, 628572.540698180790059, 628583.584915177430958, 628594.629148153238930, 628605.673397107981145, 628616.717662041424774, 628627.761942953104153, 628638.806239843019284, 628649.850552710820921, 628660.894881556159817, 628671.939226379035972, 628682.983587178983726, 628694.027963955653831, 628705.072356709162705, 628716.116765438928269, 628727.161190144717693, 628738.205630826414563, 628749.250087483669631, 628760.294560116250068, 628771.339048724039458, 628782.383553306455724, 628793.428073863615282, 628804.472610395052470, 628815.517162900418043, 628826.561731379712000, 628837.606315832585096, 628848.650916258688085, 628859.695532657788135, 628870.740165029652417, 628881.784813374048099, 628892.829477690858766, 628903.874157979618758, 628914.918854240095243, 628925.963566472171806, 628937.008294675266370, 628948.053038849611767, 628959.097798994742334, 628970.142575110075995, 628981.187367195845582, 628992.232175251469016, 629003.276999276946299, 629014.321839271811768, 629025.366695235949010, 629036.411567169008777, 629047.456455070758238, 629058.501358940848149, 629069.546278779278509, 629080.591214585583657, 629091.636166359647177, 629102.681134101119824, 629113.726117809535936, 629124.771117485128343, 629135.816133127431385, 629146.861164735979401, 629157.906212310772389, 629168.951275851344690, 629179.996355357579887, 629191.041450829245150, 629202.086562266107649, 629213.131689667701721, 629224.176833034143783, 629235.221992364735343, 629246.267167659359984, 629257.312358918134123, 629268.357566140359268, 629279.402789325919002, 629290.448028474580497, 629301.493283586110920, 629312.538554660161026, 629323.583841696614400, 629334.629144695238210, 629345.674463655450381, 629356.719798577367328, 629367.765149460523389, 629378.810516304802150, 629389.855899109854363, 629400.901297875563614, 629411.946712601464242, 629422.992143287207000, 629434.037589932908304, 629445.083052538335323, 629456.128531102789566, 629467.174025626387447, 629478.219536108546890, 629489.265062549267896, 629500.310604948434047, 629511.356163305463269, 629522.401737620239146, 629533.447327892645262, 629544.492934121983126, 629555.538556308485568, 629566.584194451803342, 629577.629848551470786, 629588.675518607371487, 629599.721204619156197, 629610.766906586708501, 629621.812624509795569, 629632.858358388068154, 629643.904108221177012, 629654.949874009122141, 629665.995655751321465, 629677.041453447774984, 629688.087267098249868, 629699.133096702280454, 629710.178942259866744, 629721.224803770310245, 629732.270681233843789, 629743.316574650234543, 629754.362484018784016, 629765.408409339492209, 629776.454350612126291, 629787.500307836337015, 629798.546281012007967, 629809.592270138906315, 629820.638275216449983, 629831.684296244755387, 629842.730333223356865, 629853.776386152021587, 629864.822455030633137, 629875.868539858842269, 629886.914640636416152, 629897.960757363121957, 629909.006890038494021, 629920.053038662532344, 629931.099203234887682, 629942.145383755327202, 629953.191580223618075, 629964.237792639411055, 629975.284021002589725, 629986.330265312688425, 629997.376525569707155, 630008.422801773296669, 630019.469093923107721, 630030.515402018907480, 630041.561726060579531, 630052.608066047774628, 630063.654421980259940, 630074.700793857686222, 630085.747181679820642, 630096.793585446663201, 630107.840005157748237, 630118.886440812726505, 630129.932892411481589, 630140.979359953897074, 630152.025843439274468, 630163.072342867846601, 630174.118858239031397, 630185.165389552828856, 630196.211936808656901, 630207.258500006631948, 630218.305079146288335, 630229.351674227393232, 630240.398285249713808, 630251.444912212900817, 630262.491555116837844, 630273.538213961292058, 630284.584888745797798, 630295.631579470355064, 630306.678286134614609, 630317.725008738343604, 630328.771747280959971, 630339.818501762812957, 630350.865272183204070, 630361.912058542133309, 630372.958860839018598, 630384.005679073976353, 630395.052513246424496, 630406.099363356479444, 630417.146229403559119, 630428.193111387430690, 630439.240009308094159, 630450.286923164967448, 630461.333852958166972, 630472.380798687227070, 630483.427760351798497, 630494.474737951881252, 630505.521731486893259, 630516.568740956834517, 630527.615766361472197, 630538.662807700340636, 630549.709864973323420, 630560.756938180187717, 630571.804027320584282, 630582.851132394280285, 630593.898253401159309, 630604.945390340872109, 630615.992543213185854, 630627.039712017751299, 630638.086896754335612, 630649.134097422822379, 630660.181314022862352, 630671.228546554222703, 630682.275795016554184, 630693.323059409623966, 630704.370339733315632, 630715.417635987396352, 630726.464948171400465, 630737.512276285211556, 630748.559620328596793, 630759.606980301090516, 630770.654356202809140, 630781.701748033170588, 630792.749155792058446, 630803.796579479239881, 630814.844019094249234, 630825.891474637319334, 630836.938946107751690, 630847.986433505429886, 630859.033936830121092, 630870.081456081592478, 630881.128991259378381, 630892.176542363478802, 630903.224109393544495, 630914.271692349342629, 630925.319291230640374, 630936.366906037088484, 630947.414536768454127, 630958.462183424737304, 630969.509846005355939, 630980.557524510193616, 630991.605218939017504, 631002.652929291361943, 631013.700655567226931, 631024.748397766379640, 631035.796155888354406, 631046.843929933151230, 631057.891719900188036, 631068.939525789464824, 631079.987347600748762, 631091.035185333690606, 631102.083038987941109, 631113.130908563383855, 631124.178794059669599, 631135.226695476565510, 631146.274612814071588, 631157.322546071605757, 631168.370495249168016, 631179.418460346059874, 631190.466441362514161, 631201.514438298181631, 631212.562451152713038, 631223.610479925875552, 631234.658524617319927, 631245.706585226813331, 631256.754661754122935, 631267.802754199248739, 631278.850862561725080, 631289.898986841202714, 631300.947127037565224, 631311.995283150463365, 631323.043455179897137, 631334.091643125284463, 631345.139846986508928, 631356.188066763337702, 631367.236302455421537, 631378.284554062644020, 631389.332821584655903, 631400.381105021340773, 631411.429404372349381, 631422.477719637216069, 631433.526050816057250, 631444.574397908407263, 631455.622760914149694, 631466.671139832935296, 631477.719534664414823, 631488.767945408471860, 631499.816372064757161, 631510.864814633270726, 631521.913273113430478, 631532.961747505120002, 631544.010237808106467, 631555.058744022040628, 631566.107266146922484, 631577.155804182286374, 631588.204358127783053, 631599.252927983412519, 631610.301513748709112, 631621.350115423556417, 631632.398733007605188, 631643.447366500739008, 631654.496015902725048, 631665.544681212981232, 631676.593362431623973, 631687.642059558187611, 631698.690772592555732, 631709.739501534379087, 631720.788246383424848, 631731.837007139343768, 631742.885783802019432, 631753.934576371335424, 631764.983384846709669, 631776.032209228142165, 631787.081049515050836, 631798.129905707552098, 631809.178777805413119, 631820.227665808168240, 631831.276569715584628, 631842.325489527429454, 631853.374425243353471, 631864.423376863356680, 631875.472344387089834, 631886.521327814203687, 631897.570327144465409, 631908.619342377642170, 631919.668373513501137, 631930.717420551925898, 631941.766483492334373, 631952.815562334842980, 631963.864657078869641, 631974.913767724297941, 631985.962894271011464, 631997.012036718428135, 632008.061195066664368, 632019.110369315370917, 632030.159559463965707, 632041.208765512565151, 632052.257987460936420, 632063.307225308497436, 632074.356479055364616, 632085.405748701072298, 632096.455034245387651, 632107.504335687961429, 632118.553653028793633, 632129.602986267535016, 632140.652335403836332, 632151.701700437581167, 632162.751081368187442, 632173.800478195887990, 632184.849890920217149, 632195.899319540825672, 632206.948764057597145, 632217.998224470065907, 632229.047700778231956, 632240.097192981746048, 632251.146701080375351, 632262.196225073770620, 632273.245764961931854, 632284.295320744160563, 632295.344892420573160, 632306.394479990820400, 632317.444083454669453, 632328.493702812003903, 632339.543338062125258, 632350.592989205149934, 632361.642656240845099, 632372.692339168861508, 632383.742037988849916, 632394.791752700577490, 632405.841483303927816, 632416.891229798551649, 632427.940992184332572, 632438.990770460921340, 632450.040564628085122, 632461.090374685241841, 632472.140200632624328, 632483.190042469883338, 632494.239900196669623, 632505.289773812633939, 632516.339663317776285, 632527.389568711398169, 632538.439489993848838, 632549.489427164429799, 632560.539380223141052, 632571.589349169516936, 632582.639334003441036, 632593.689334724564105, 632604.739351332769729, 632615.789383827825077, 632626.839432209264487, 632637.889496476971544, 632648.939576630597003, 632659.989672670140862, 632671.039784595137462, 632682.089912405353971, 632693.140056100557558, 632704.190215680515394, 632715.240391144878231, 632726.290582493529655, 632737.340789726353250, 632748.391012842650525, 632759.441251842537895, 632770.491506725549698, 632781.541777491685934, 632792.592064140364528, 632803.642366671701893, 632814.692685085232370, 632825.743019380490296, 632836.793369557708502, 632847.843735616304912, 632858.894117556279525, 632869.944515377050266, 632880.994929078500718, 632892.045358660281636, 632903.095804122509435, 632914.146265464718454, 632925.196742686443031, 632936.247235787683167, 632947.297744767973199, 632958.348269627429545, 632969.398810365470126, 632980.449366981978528, 632991.499939476605505, 633002.550527849118225, 633013.601132099283859, 633024.651752227102406, 633035.702388231991790, 633046.753040113719180, 633057.803707872284576, 633068.854391507105902, 633079.905091018066742, 633090.955806405050680, 633102.006537667708471, 633113.057284805690870, 633124.108047818997875, 633135.158826706930995, 633146.209621469723061, 633157.260432106791995, 633168.311258618137799, 633179.362101003411226, 633190.412959262263030, 633201.463833394460380, 633212.514723399770446, 633223.565629278076813, 633234.616551029030234, 633245.667488652281463, 633256.718442147597671, 633267.769411514978856, 633278.820396753959358, 633289.871397864306346, 633300.922414845670573, 633311.973447698052041, 633323.024496420868672, 633334.075561014236882, 633345.126641477691010, 633356.177737810998224, 633367.228850013809279, 633378.279978086007759, 633389.331122027477250, 633400.382281837752089, 633411.433457516599447, 633422.484649063902907, 633433.535856479080394, 633444.587079762248322, 633455.638318912941031, 633466.689573931158520, 633477.740844816318713, 633488.792131568421610, 633499.843434187001549, 633510.894752672058530, 633521.946087023126893, 633532.997437240090221, 633544.048803322599269, 633555.100185270421207, 633566.151583083323203, 633577.202996761072427, 633588.254426303436048, 633599.305871710181236, 633610.357332980958745, 633621.408810115302913, 633632.460303113446571, 633643.511811975040473, 633654.563336699502543, 633665.614877286949195, 633676.666433736798353, 633687.718006049050018, 633698.769594223238528, 633709.821198259480298, 633720.872818157193251, 633731.924453916144557, 633742.976105536217801, 633754.027773016947322, 633765.079456358333118, 633776.131155560025945, 633787.182870621909387, 633798.234601543401368, 633809.286348324385472, 633820.338110964861698, 633831.389889464247972, 633842.441683822544292, 633853.493494039401412, 633864.545320114353672, 633875.597162047401071, 633886.649019838310778, 633897.700893486733548, 633908.752782992436551, 633919.804688355186954, 633930.856609574635513, 633941.908546650665812, 633952.960499583045021, 633964.012468371423893, 633975.064453015569597, 633986.116453515249304, 633997.168469870113768, 634008.220502080046572, 634019.272550144814886, 634030.324614064185880, 634041.376693837693892, 634052.428789464989677, 634063.480900946422480, 634074.533028281177394, 634085.585171469254419, 634096.637330510304309, 634107.689505404210649, 634118.741696150507778, 634129.793902749079280, 634140.846125199692324, 634151.898363502114080, 634162.950617655995302, 634174.002887660986744, 634185.055173517204821, 634196.107475224067457, 634207.159792781458236, 634218.212126189027913, 634229.264475446660072, 634240.316840554005466, 634251.369221510831267, 634262.421618316904642, 634273.474030971992761, 634284.526459475862794, 634295.578903828165494, 634306.631364028551616, 634317.683840077253990, 634328.736331973457709, 634339.788839717162773, 634350.841363308252767, 634361.893902746145613, 634372.946458030724898, 634383.999029162107036, 634395.051616139477119, 634406.104218962835148, 634417.156837631948292, 634428.209472146350890, 634439.262122506275773, 634450.314788711024448, 634461.367470760596916, 634472.420168654643930, 634483.472882392699830, 634494.525611974881031, 634505.578357400838286, 634516.631118669989519, 634527.683895782683976, 634538.736688738223165, 634549.789497536374256, 634560.842322177137248, 634571.895162659930065, 634582.948018984869123, 634594.000891151488759, 634605.053779159439728, 634616.106683008722030, 634627.159602698870003, 634638.212538229767233, 634649.265489601180889, 634660.318456812878139, 634671.371439864160493, 634682.424438755493611, 634693.477453486179002, 634704.530484055983834, 634715.583530464908108, 634726.636592712369747, 634737.689670798252337, 634748.742764722555876, 634759.795874484581873, 634770.849000084446743, 634781.902141521801241, 634792.955298796063289, 634804.008471907465719, 634815.061660855659284, 634826.114865640178323, 634837.168086260906421, 634848.221322717494331, 634859.274575009709224, 634870.327843137667514, 634881.381127100554295, 634892.434426898485981, 634903.487742531113327, 634914.541073998087086, 634925.594421299290843, 634936.647784434491768, 634947.701163403224200, 634958.754558205488138, 634969.807968840934336, 634980.861395309329964, 634991.914837610325776, 635002.968295743921772, 635014.021769709535874, 635025.075259507051669, 635036.128765136236325, 635047.182286596973427, 635058.235823888913728, 635069.289377011707984, 635080.342945965123363, 635091.396530749159865, 635102.450131363118999, 635113.503747807000764, 635124.557380080805160, 635135.611028183950111, 635146.664692116202787, 635157.718371877330355, 635168.772067467099987, 635179.825778885511681, 635190.879506131866947, 635201.933249206282198, 635212.987008108291775, 635224.040782837662846, 635235.094573394278996, 635246.148379777790979, 635257.202201988082379, 635268.256040024687536, 635279.309893887373619, 635290.363763576024212, 635301.417649090406485, 635312.471550430287607, 635323.525467595085502, 635334.579400585033000, 635345.633349399431609, 635356.687314038397744, 635367.741294501582161, 635378.795290788402781, 635389.849302899208851, 635400.903330833185464, 635411.957374590332620, 635423.011434170533903, 635434.065509573323652, 635445.119600798585452, 635456.173707845970057, 635467.227830715128221, 635478.281969406059943, 635489.336123918415979, 635500.390294251963496, 635511.444480406469665, 635522.498682381468825, 635533.552900176844560, 635544.607133792480454, 635555.661383228027262, 635566.715648483252153, 635577.769929557922296, 635588.824226451572031, 635599.878539164201356, 635610.932867695461027, 635621.987212045234628, 635633.041572213056497, 635644.095948198926635, 635655.150340002262965, 635666.204747623065487, 635677.259171060984954, 635688.313610316021368, 635699.368065387592651, 635710.422536275582388, 635721.477022979524918, 635732.531525499536656, 635743.586043835151941, 635754.640577986254357, 635765.695127952494659, 635776.749693733523600, 635787.804275329341181, 635798.858872739481740, 635809.913485963828862, 635820.968115002149716, 635832.022759853862226, 635843.077420519199222, 635854.132096997578628, 635865.186789288884029, 635876.241497392882593, 635887.296221309341490, 635898.350961037795059, 635909.405716578243300, 635920.460487930220552, 635931.515275093726814, 635942.570078068412840, 635953.624896853929386, 635964.679731450043619, 635975.734581856755540, 635986.789448073483072, 635997.844330100109801, 636008.899227936402895, 636019.954141582129523, 636031.009071036940441, 636042.064016300602816, 636053.118977373116650, 636064.173954253899865, 636075.228946942952462, 636086.283955439692363, 636097.338979744235985, 636108.394019856117666, 636119.449075775220990, 636130.504147501196712, 636141.559235033812001, 636152.614338372834027, 636163.669457518029958, 636174.724592469050549, 636185.779743225779384, 636196.834909787983634, 636207.890092155314051, 636218.945290327421390, 636230.000504304305650, 636241.055734085617587, 636252.110979671007954, 636263.166241060360335, 636274.221518253325485, 636285.276811249670573, 636296.332120049162768, 636307.387444651569240, 636318.442785056773573, 636329.498141264310107, 636340.553513273829594, 636351.608901085448451, 636362.664304698817432, 636373.719724113354459, 636384.775159329175949, 636395.830610345816240, 636406.886077163158916, 636417.941559780971147, 636428.997058198903687, 636440.052572416840121, 636451.108102434314787, 636462.163648251094855, 636473.219209867180325, 636484.274787282221951, 636495.330380495754071, 636506.385989507893100, 636517.441614318056963, 636528.497254926245660, 636539.552911332109943, 636550.608583535300568, 636561.664271535584703, 636572.719975332962349, 636583.775694926851429, 636594.831430317135528, 636605.887181503698230, 636616.942948486190289, 636627.998731264378875, 636639.054529837914743, 636650.110344206565060, 636661.166174370213412, 636672.222020328510553, 636683.277882081223652, 636694.333759628119878, 636705.389652968849987, 636716.445562103413977, 636727.501487031229772, 636738.557427752413787, 636749.613384266383946, 636760.669356573023833, 636771.725344672100618, 636782.781348563381471, 636793.837368246633559, 636804.893403721507639, 636815.949454987770878, 636827.005522045190446, 636838.061604893649928, 636849.117703532683663, 636860.173817962291650, 636871.229948181891814, 636882.286094191484153, 636893.342255990835838, 636904.398433579597622, 636915.454626957536675, 636926.510836124303751, 636937.567061079898849, 636948.623301823856309, 636959.679558356059715, 636970.735830676043406, 636981.792118783923797, 636992.848422679118812, 637003.904742361512035, 637014.961077830754220, 637026.017429086845368, 637037.073796129319817, 637048.130178958061151, 637059.186577572603710, 637070.242991972947493, 637081.299422158626840, 637092.355868129641749, 637103.412329885526560, 637114.468807426164858, 637125.525300751207396, 637136.581809860537760, 637147.638334753573872, 637158.694875430432148, 637169.751431890763342, 637180.808004134334624, 637191.864592160796747, 637202.921195969916880, 637213.977815561695024, 637225.034450935432687, 637236.091102091246285, 637247.147769028902985, 637258.204451747820713, 637269.261150247883052, 637280.317864529090002, 637291.374594590975903, 637302.431340433307923, 637313.488102055853233, 637324.544879458262585, 637335.601672640535980, 637346.658481602207758, 637357.715306343161501, 637368.772146862931550, 637379.829003161634319, 637390.885875238571316, 637401.942763093742542, 637412.999666727147996, 637424.056586138089187, 637435.113521326566115, 637446.170472292229533, 637457.227439034846611, 637468.284421554184519, 637479.341419850126840, 637490.398433922207914, 637501.455463770194910, 637512.512509393971413, 637523.569570793304592, 637534.626647967845201, 637545.683740917360410, 637556.740849641617388, 637567.797974140266888, 637578.855114413192496, 637589.912270460161380, 637600.969442280824296, 637612.026629875064828, 637623.083833242533728, 637634.141052382881753, 637645.198287295992486, 637656.255537981749512, 637667.312804439687170, 637678.370086669689044, 637689.427384671289474, 637700.484698444372043, 637711.542027988820337, 637722.599373304285109, 637733.656734390417114, 637744.714111247216351, 637755.771503874217160, 637766.828912271070294, 637777.886336437775753, 637788.943776374100707, 637800.001232079579495, 637811.058703554095700, 637822.116190797300078, 637833.173693809192628, 637844.231212589191273, 637855.288747137296014, 637866.346297453157604, 637877.403863536659628, 637888.461445387220010, 637899.519043004838750, 637910.576656389399432, 637921.634285540436395, 637932.691930457600392, 637943.749591140891425, 637954.807267590076663, 637965.864959804574028, 637976.922667784616351, 637987.980391529621556, 637999.038131039240398, 638010.095886313472874, 638021.153657352086157, 638032.211444154847413, 638043.269246721174568, 638054.327065051184036, 638065.384899144410156, 638076.442749000620097, 638087.500614619813859, 638098.558496001525782, 638109.616393145406619, 638120.674306051572785, 638131.732234719325788, 638142.790179148665629, 638153.848139339475892, 638164.906115291174501, 638175.964107003761455, 638187.022114477003925, 638198.080137710319832, 638209.138176703942008, 638220.196231457171962, 638231.254301970126107, 638242.312388242455199, 638253.370490273809992, 638264.428608063724823, 638275.486741612548940, 638286.544890919700265, 638297.603055984713137, 638308.661236807820387, 638319.719433388323523, 638330.777645726106130, 638341.835873821168207, 638352.894117673044093, 638363.952377281500958, 638375.010652646189556, 638386.068943766993470, 638397.127250643679872, 638408.185573276015930, 638419.243911663768813, 638430.302265806472860, 638441.360635703895241, 638452.419021356152371, 638463.477422762778588, 638474.535839923541062, 638485.594272838090546, 638496.652721506310627, 638507.711185927735642, 638518.769666102365591, 638529.828162029851228, 638540.886673710076138, 638551.945201142574660, 638563.003744327113964, 638574.062303263577633, 638585.120877951732837, 638596.179468391230330, 638607.238074581953697, 638618.296696523437276, 638629.355334215564653, 638640.413987658219412, 638651.472656850819476, 638662.531341793481261, 638673.590042485622689, 638684.648758927360177, 638695.707491117995232, 638706.766239057644270, 638717.825002745958045, 638728.883782182820141, 638739.942577367648482, 638751.001388300559483, 638762.060214980854653, 638773.119057408766821, 638784.177915583713911, 638795.236789505695924, 638806.295679174363613, 638817.354584589251317, 638828.413505750475451, 638839.472442657570355, 638850.531395310536027, 638861.590363708673976, 638872.649347852217034, 638883.708347740350291, 638894.767363373422995, 638905.826394750853069, 638916.885441872524098, 638927.944504738203250, 638939.003583347424865, 638950.062677700072527, 638961.121787796029821, 638972.180913634947501, 638983.240055216592737, 638994.299212540616281, 639005.358385606668890, 639016.417574414983392, 639027.476778964861296, 639038.535999256186187, 639049.595235288841650, 639060.654487062362023, 639071.713754576630890, 639082.773037831299007, 639093.832336826249957, 639104.891651561250910, 639115.950982035952620, 639127.010328250005841, 639138.069690203410573, 639149.129067895701155, 639160.188461326761171, 639171.247870496474206, 639182.307295404258184, 639193.366736049996689, 639204.426192433573306, 639215.485664554638788, 639226.545152412960306, 639237.604656008421443, 639248.664175340440124, 639259.723710408899933, 639270.783261213800870, 639281.842827754677273, 639292.902410031296313, 639303.962008043425158, 639315.021621790714562, 639326.081251273164526, 639337.140896490425803, 639348.200557442149147, 639359.260234128218144, 639370.319926548283547, 639381.379634701996110, 639392.439358589472249, 639403.499098210129887, 639414.558853563736193, 639425.618624650174752, 639436.678411469329149, 639447.738214020500891, 639458.798032303922810, 639469.857866319245659, 639480.917716066003777, 639491.977581544080749, 639503.037462753010914, 639514.097359693027101, 639525.157272363547236, 639536.217200764338486, 639547.277144895284437, 639558.337104756035842, 639569.397080346243456, 639580.457071665907279, 639591.517078714445233, 639602.577101492090151, 639613.637139998259954, 639624.697194232721813, 639635.757264195242897, 639646.817349885590374, 639657.877451303647831, 639668.937568449066021, 639679.997701321379282, 639691.057849920704030, 639702.118014246574603, 639713.178194298991002, 639724.238390077254735, 639735.298601581598632, 639746.358828811557032, 639757.419071766780689, 639768.479330447036773, 639779.539604852441698, 639790.599894982296973, 639801.660200836602598, 639812.720522415009327, 639823.780859717167914, 639834.841212743194774, 639845.901581492507830, 639856.961965964990668, 639868.022366160410456, 639879.082782078301534, 639890.143213718780316, 639901.203661081381142, 639912.264124165987596, 639923.324602972134016, 639934.385097499703988, 639945.445607748348266, 639956.506133718066849, 639967.566675408394076, 639978.627232819213532, 639989.687805950175971, 640000.748394801164977, 640011.808999371598475, 640022.869619661592878, 640033.930255670915358, 640044.990907398983836, 640056.051574845914729, 640067.112258011125959, 640078.172956894617528, 640089.233671496156603, 640100.294401815277524, 640111.355147851863876, 640122.415909605799243, 640133.476687076617964, 640144.537480264087208, 640155.598289168206975, 640166.659113788395189, 640177.719954124651849, 640188.780810176511295, 640199.841681943973526, 640210.902569426689297, 640221.963472624425776, 640233.024391536833718, 640244.085326163796708, 640255.146276504849084, 640266.207242560107261, 640277.268224329105578, 640288.329221811494790, 640299.390235007274896, 640310.451263915980235, 640321.512308537377976, 640332.573368871468119, 640343.634444917785004, 640354.695536676212214, 640365.756644146284088, 640376.817767327767797, 640387.878906220896170, 640398.940060824737884, 640410.001231139642186, 640421.062417164910585, 640432.123618900543079, 640443.184836346190423, 640454.246069501736201, 640465.307318366831169, 640476.368582941126078, 640487.429863224620931, 640498.491159216966480, 640509.552470917580649, 640520.613798326812685, 640531.675141444080509, 640542.736500269267708, 640553.797874802025035, 640564.859265041886829, 640575.920670988969505, 640586.982092642923817, 640598.043530003400519, 640609.104983070399612, 640620.166451843455434, 640631.227936322218738, 640642.289436506689526, 640653.350952396634966, 640664.412483991589397, 640675.474031291436404, 640686.535594295943156, 640697.597173004760407, 640708.658767417771742, 640719.720377534627914, 640730.782003355212510, 640741.843644879059866, 640752.905302106053568, 640763.966975036077201, 640775.028663668665104, 640786.090368003700860, 640797.152088040951639, 640808.213823780068196, 640819.275575220701285, 640830.337342362967320, 640841.399125206400640, 640852.460923750652000, 640863.522737995604984, 640874.584567941026762, 640885.646413586568087, 640896.708274932112545, 640907.770151977427304, 640918.832044722163118, 640929.893953166087158, 640940.955877308850177, 640952.017817150335759, 640963.079772690427490, 640974.141743928659707, 640985.203730864915997, 640996.265733498847112, 641007.327751830220222, 641018.389785858802497, 641029.451835584477521, 641040.513901006779633, 641051.575982125825249, 641062.638078940915875, 641073.700191451935098, 641084.762319658766501, 641095.824463561177254, 641106.886623158818111, 641117.948798451456241, 641129.010989438858815, 641140.073196120793000, 641151.135418497025967, 641162.197656567324884, 641173.259910331340507, 641184.322179788956419, 641195.384464939706959, 641206.446765783592127, 641217.509082320262678, 641228.571414549602196, 641239.633762471145019, 641250.696126084774733, 641261.758505390142091, 641272.820900387130678, 641283.883311075391248, 641294.945737454807386, 641306.008179525029846, 641317.070637285709381, 641328.133110736845993, 641339.195599878206849, 641350.258104709209874, 641361.320625229971483, 641372.383161439909600, 641383.445713339024223, 641394.508280926849693, 641405.570864203618839, 641416.633463168400340, 641427.696077821659856, 641438.758708162582479, 641449.821354191051796, 641460.884015906951390, 641471.946693310048431, 641483.009386400226504, 641494.072095176670700, 641505.134819639613852, 641516.197559788823128, 641527.260315623949282, 641538.323087144759484, 641549.385874350904487, 641560.448677242151462, 641571.511495818383992, 641582.574330079369247, 641593.637180024641566, 641604.700045654200949, 641615.762926967698149, 641626.825823964900337, 641637.888736645458266, 641648.951665009255521, 641660.014609055942856, 641671.077568785403855, 641682.140544197405688, 641693.203535291599110, 641704.266542067518458, 641715.329564525396563, 641726.392602664767765, 641737.455656485282816, 641748.518725986941718, 641759.581811169045977, 641770.644912031828426, 641781.708028574939817, 641792.771160797914490, 641803.834308700636029, 641814.897472282988019, 641825.960651544504799, 641837.023846485069953, 641848.087057104334235, 641859.150283402297646, 641870.213525378494523, 641881.276783032575622, 641892.340056364540942, 641903.403345374041237, 641914.466650060843676, 641925.529970424715430, 641936.593306465423666, 641947.656658182619140, 641958.720025576185435, 641969.783408645773306, 641980.846807391266339, 641991.910221812315285, 642002.973651908687316, 642014.037097680033185, 642025.100559126469307, 642036.164036247297190, 642047.227529042516835, 642058.291037511895411, 642069.354561655083671, 642080.418101471732371, 642091.481656961957924, 642102.545228125294670, 642113.608814961509779, 642124.672417470254004, 642135.736035651410930, 642146.799669504747726, 642157.863319030031562, 642168.926984226796776, 642179.990665095159784, 642191.054361634538509, 642202.118073844816536, 642213.181801725877449, 642224.245545277255587, 642235.309304498834535, 642246.373079390497878, 642257.436869951663539, 642268.500676182215102, 642279.564498082036152, 642290.628335650777444, 642301.692188888322562, 642312.756057794322260, 642323.819942368310876, 642334.883842610404827, 642345.947758520254865, 642357.011690097628161, 642368.075637342175469, 642379.139600253663957, 642390.203578831860796, 642401.267573076649569, 642412.331582987564616, 642423.395608564722352, 642434.459649807424285, 642445.523706715670414, 642456.587779289111495, 642467.651867527631111, 642478.715971430996433, 642489.780090998974629, 642500.844226230983622, 642511.908377127023414, 642522.972543687094003, 642534.036725910496898, 642545.100923797348514, 642556.165137347299606, 642567.229366560000926, 642578.293611435103230, 642589.357871972722933, 642600.422148172277957, 642611.486440033768304, 642622.550747556844726, 642633.615070741274394, 642644.679409586708061, 642655.743764093029313, 642666.808134259888902, 642677.872520087286830, 642688.936921574641019, 642700.001338721951470, 642711.065771528752521, 642722.130219995044172, 642733.194684120477177, 642744.259163904818706, 642755.323659347835928, 642766.388170448946767, 642777.452697208500467, 642788.517239625914954, 642799.581797700957395, 642810.646371433511376, 642821.710960822994821, 642832.775565869524144, 642843.840186572750099, 642854.904822932556272, 642865.969474948360585, 642877.034142620163038, 642888.098825947730802, 642899.163524930598214, 642910.228239568765275, 642921.292969861882739, 642932.357715809717774, 642943.422477412153967, 642954.487254668609239, 642965.552047579200007, 642976.616856143460609, 642987.681680361274630, 642998.746520232292823, 643009.811375756282359, 643020.876246933126822, 643031.941133762360550, 643043.006036243983544, 643054.070954377530143, 643065.135888163000345, 643076.200837599928491, 643087.265802687965333, 643098.330783427343704, 643109.395779817365110, 643120.460791858029552, 643131.525819548871368, 643142.590862889774144, 643153.655921880621463, 643164.720996520947665, 643175.786086810752749, 643186.851192749571055, 643197.916314337053336, 643208.981451573316008, 643220.046604457893409, 643231.111772990552709, 643242.176957171061076, 643253.242156999185681, 643264.307372474810109, 643275.372603597352281, 643286.437850366812199, 643297.503112782957032, 643308.568390845670365, 643319.633684554370120, 643330.698993908939883, 643341.764318909146823, 643352.829659554874524, 643363.895015845657326, 643374.960387781495228, 643386.025775361922570, 643397.091178586706519, 643408.156597455847077, 643419.222031968762167, 643430.287482125568204, 643441.352947925683111, 643452.418429369106889, 643463.483926455257460, 643474.549439184484072, 643485.614967555971816, 643496.680511569837108, 643507.746071225614287, 643518.811646523070522, 643529.877237461856566, 643540.942844042205252, 643552.008466263418086, 643563.074104125495069, 643574.139757627970539, 643585.205426770728081, 643596.271111553534865, 643607.336811976158060, 643618.402528038364835, 643629.468259739805944, 643640.534007080364972, 643651.599770059576258, 643662.665548677439801, 643673.731342933722772, 643684.797152827959508, 643695.862978360033594, 643706.928819529828615, 643717.994676336646080, 643729.060548780718818, 643740.126436861814000, 643751.192340579349548, 643762.258259933325462, 643773.324194923276082, 643784.390145549084991, 643795.456111810752191, 643806.522093707695603, 643817.588091239682399, 643828.654104406712577, 643839.720133208204061, 643850.786177644156851, 643861.852237714454532, 643872.918313418515027, 643883.984404756338336, 643895.050511727458797, 643906.116634331759997, 643917.182772569009103, 643928.248926438973285, 643939.315095941536129, 643950.381281076115556, 643961.447481842827983, 643972.513698241091333, 643983.579930270905606, 643994.646177931921557, 644005.712441223906353, 644016.778720146627165, 644027.845014699851163, 644038.911324883345515, 644049.977650696877390, 644061.043992140213959, 644072.110349213005975, 644083.176721915137023, 644094.243110246025026, 644105.309514205902815, 644116.375933794421144, 644127.442369011114351, 644138.508819855866022, 644149.575286328443326, 644160.641768428497016, 644171.708266156027094, 644182.774779510451481, 644193.841308492003009, 644204.907853099866770, 644215.974413334275596, 644227.040989194530994, 644238.107580680749379, 644249.174187792581506, 644260.240810529910959, 644271.307448892155662, 644282.374102879315615, 644293.440772491157986, 644304.507457727566361, 644315.574158587842248, 644326.640875072218478, 644337.707607180112973, 644348.774354911409318, 644359.841118265991099, 644370.907897243509069, 644381.974691843613982, 644393.041502066189423, 644404.108327911002561, 644415.175169377587736, 644426.242026466061361, 644437.308899176074192, 644448.375787507160567, 644459.442691459204070, 644470.509611031855457, 644481.576546225231141, 644492.643497038749047, 644503.710463472292759, 644514.777445525629446, 644525.844443198409863, 644536.911456490401179, 644547.978485401486978, 644559.045529931201600, 644570.112590079661459, 644581.179665846284479, 644592.246757231187075, 644603.313864233554341, 644614.380986853619106, 644625.448125090915710, 644636.515278945444152, 644647.582448416855186, 644658.649633504683152, 644669.716834208695218, 644680.784050529124215, 644691.851282465271652, 644702.918530017021112, 644713.985793184139766, 644725.053071966278367, 644736.120366363436915, 644747.187676375149749, 644758.255002001300454, 644769.322343241539784, 644780.389700095751323, 644791.457072563469410, 644802.524460644694045, 644813.591864339075983, 644824.659283646498807, 644835.726718566496857, 644846.794169098953716, 644857.861635243520141, 644868.929117000079714, 644879.996614368399605, 644891.064127348246984, 644902.131655939156190, 644913.199200141127221, 644924.266759953694418, 644935.334335376974195, 644946.401926410384476, 644957.469533053692430, 644968.537155307014473, 644979.604793169535697, 644990.672446641605347, 645001.740115722408518, 645012.807800412294455, 645023.875500710564665, 645034.943216617219150, 645046.010948131675832, 645057.078695254283957, 645068.146457984228618, 645079.214236321509816, 645090.282030266011134, 645101.349839817266911, 645112.417664974927902, 645123.485505739110522, 645134.553362109465525, 645145.621234085527249, 645156.689121667295694, 645167.757024854305200, 645178.824943646555766, 645189.892878043698147, 645200.960828045499511, 645212.028793651727028, 645223.096774862031452, 645234.164771676179953, 645245.232784094172530, 645256.300812115427107, 645267.368855739943683, 645278.436914967373013, 645289.504989797482267, 645300.573080230038613, 645311.641186264925636, 645322.709307901561260, 645333.777445140061900, 645344.845597980078310, 645355.913766421261244, 645366.981950463261455, 645378.050150106311776, 645389.118365349713713, 645400.186596193350852, 645411.254842637106776, 645422.323104680515826, 645433.391382323461585, 645444.459675565827638, 645455.527984407148324, 645466.596308847190812, 645477.664648885955103, 645488.733004522859119, 645499.801375757786445, 645510.869762590737082, 645521.938165021245368, 645533.006583049078472, 645544.075016674003564, 645555.143465895671397, 645566.211930713965558, 645577.280411128769629, 645588.348907139617950, 645599.417418746277690, 645610.485945948748849, 645621.554488746332936, 645632.623047139379196, 645643.691621127072722, 645654.760210709646344, 645665.828815886517987, 645676.897436657454818, 645687.966073022573255, 645699.034724981291220, 645710.103392533492297, 645721.172075678710826, 645732.240774417063221, 645743.309488748083822, 645754.378218671539798, 645765.446964187314734, 645776.515725295059383, 645787.584501994540915, 645798.653294285642914, 645809.722102167666890, 645820.790925640962087, 645831.859764704946429, 645842.928619359503500, 645853.997489604400471, 645865.066375439288095, 645876.135276863933541, 645887.204193878103979, 645898.273126481799409, 645909.342074674437754, 645920.411038455902599, 645931.480017825844698, 645942.549012784264050, 645953.618023330694996, 645964.687049465137534, 645975.756091187126003, 645986.825148496427573, 645997.894221392809413, 646008.963309876038693, 646020.032413946115412, 646031.101533602573909, 646042.170668845181353, 646053.239819673588499, 646064.308986087562516, 646075.378168087103404, 646086.447365671978332, 646097.516578841605224, 646108.585807596100494, 646119.655051934882067, 646130.724311857833527, 646141.793587364954874, 646152.862878455664031, 646163.932185129960999, 646175.001507387380116, 646186.070845227688551, 646197.140198651002720, 646208.209567656740546, 646219.278952244785614, 646230.348352414788678, 646241.417768166749738, 646252.487199499970302, 646263.556646414683200, 646274.626108910422772, 646285.695586986956187, 646296.765080644050613, 646307.834589881473221, 646318.904114698991179, 646329.973655096371658, 646341.043211073265411, 646352.112782629672438, 646363.182369765010662, 646374.251972479512915, 646385.321590772364289, 646396.391224643564783, 646407.460874093114398, 646418.530539120431058, 646429.600219725631177, 646440.669915907899849, 646451.739627667586319, 646462.809355004108511, 646473.879097917350009, 646484.948856407077983, 646496.018630472943187, 646507.088420114712790, 646518.158225332153961, 646529.228046125266701, 646540.297882493585348, 646551.367734436877072, 646562.437601954909042, 646573.507485047332011, 646584.577383714145981, 646595.647297954885289, 646606.717227769433521, 646617.787173157557845, 646628.857134119025432, 646639.927110653370619, 646650.997102760593407, 646662.067110440460965, 646673.137133692624047, 646684.207172516849823, 646695.277226912789047, 646706.347296880441718, 646717.417382419458590, 646728.487483529606834, 646739.557600210537203, 646750.627732462249696, 646761.697880284045823, 646772.768043676274829, 646783.838222638238221, 646794.908417169936001, 646805.978627271135338, 646817.048852941254154, 646828.119094180408865, 646839.189350988250226, 646850.259623364661820, 646861.329911309177987, 646872.400214821565896, 646883.470533901941963, 646894.540868549374864, 646905.611218764330260, 646916.681584546226077, 646927.751965894829482, 646938.822362810024060, 646949.892775291460566, 646960.963203338673338, 646972.033646951895207, 646983.104106130660512, 646994.174580874736421, 647005.245071183773689, 647016.315577057539485, 647027.386098496033810, 647038.456635498791002, 647049.527188065578230, 647060.597756196279079, 647071.668339890544303, 647082.738939148141071, 647093.809553968952969, 647104.880184352514334, 647115.950830298708752, 647127.021491807536222, 647138.092168878298253, 647149.162861510878429, 647160.233569705160335, 647171.304293460911140, 647182.375032777898014, 647193.445787655655295, 647204.516558094299398, 647215.587344093248248, 647226.658145652385429, 647237.728962771594524, 647248.799795450526290, 647259.870643688947894, 647270.941507486393675, 647282.012386842980050, 647293.083281758474186, 647304.154192232294008, 647315.225118264439516, 647326.296059854677878, 647337.367017002427019, 647348.437989707919769, 647359.508977970690466, 647370.579981790739112, 647381.651001167367212, 647392.722036100574769, 647403.793086590012535, 647414.864152635796927, 647425.935234237345867, 647437.006331394542940, 647448.077444106922485, 647459.148572374600917, 647470.219716196996160, 647481.290875574108213, 647492.362050505704246, 647503.433240991435014, 647514.504447031067684, 647525.575668624253012, 647536.646905770874582, 647547.718158470815979, 647558.789426723727956, 647569.860710529377684, 647580.932009887299500, 647592.003324797493406, 647603.074655259726569, 647614.146001273649745, 647625.217362839030102, 647636.288739955867641, 647647.360132623580284, 647658.431540841935202, 647669.502964610932395, 647680.574403930222616, 647691.645858799573034, 647702.717329218750820, 647713.788815187406726, 647724.860316705307923, 647735.931833772454411, 647747.003366388380527, 647758.074914552853443, 647769.146478265756741, 647780.218057526741177, 647791.289652335573919, 647802.361262692022137, 647813.432888595853001, 647824.504530046950094, 647835.576187044847757, 647846.647859589196742, 647857.719547680229880, 647868.791251317365095, 647879.862970500602387, 647890.934705229359679, 647902.006455503636971, 647913.078221322968602, 647924.150002687354572, 647935.221799596445635, 647946.293612050125375, 647957.365440047928132, 647968.437283589853905, 647979.509142675437033, 647990.581017304561101, 648001.652907477109693, 648012.724813192500733, 648023.796734450734220, 648034.868671251577325, 648045.940623594564386, 648057.012591479695402, 648068.084574906853959, 648079.156573875341564, 648090.228588385274634, 648101.300618436303921, 648112.372664028196596, 648123.444725160719827, 648134.516801833640784, 648145.588894046726637, 648156.661001799628139, 648167.733125092112459, 648178.805263924063183, 648189.877418295247480, 648200.949588205316104, 648212.021773654152639, 648223.093974641407840, 648234.166191166616045, 648245.238423230126500, 648256.310670831240714, 648267.382933969842270, 648278.455212645698339, 648289.527506858576089, 648300.599816608009860, 648311.672141894116066, 648322.744482716545463, 648333.816839074948803, 648344.889210969093256, 648355.961598398862407, 648367.034001363907009, 648378.106419863994233, 648389.178853898891248, 648400.251303468481638, 648411.323768572416157, 648422.396249210345559, 648433.468745382037014, 648444.541257087606937, 648455.613784326356836, 648466.686327098403126, 648477.758885403280146, 648488.831459240638651, 648499.904048610595055, 648510.976653512683697, 648522.049273946671747, 648533.121909912559204, 648544.194561409647577, 648555.267228437936865, 648566.339910997310653, 648577.412609087303281, 648588.485322707914747, 648599.558051858679391, 648610.630796539480798, 648621.703556749969721, 648632.776332490029745, 648643.849123759311624, 648654.921930557698943, 648665.994752884842455, 648677.067590740625747, 648688.140444124583155, 648699.213313036714680, 648710.286197476554662, 648721.359097444103099, 648732.432012939010747, 648743.504943960928358, 648754.577890509739518, 648765.650852585211396, 648776.723830187111162, 648787.796823315089568, 648798.869831969030201, 648809.942856148350984, 648821.015895853401162, 648832.088951083482243, 648843.162021838594228, 648854.235108118504286, 648865.308209922630340, 648876.381327250972390, 648887.454460103414021, 648898.527608479605988, 648909.600772379199043, 648920.673951802193187, 648931.747146748122759, 648942.820357216638513, 648953.893583207856864, 648964.966824721312150, 648976.040081756887957, 648987.113354314235039, 648998.186642393120565, 649009.259945993195288, 649020.333265114575624, 649031.406599756795913, 649042.479949919506907, 649053.553315602592193, 649064.626696805702522, 649075.700093528837897, 649086.773505771532655, 649097.846933533670381, 649108.920376815018244, 649119.993835615110584, 649131.067309933947399, 649142.140799771295860, 649153.214305126806721, 649164.287826000247151, 649175.361362391384318, 649186.434914299985394, 649197.508481725701131, 649208.582064668647945, 649219.655663128127344, 649230.729277104255743, 649241.802906596567482, 649252.876551605062559, 649263.950212129158899, 649275.023888168740086, 649286.097579723806120, 649297.171286793891340, 649308.245009378762916, 649319.318747478304431, 649330.392501091933809, 649341.466270219883882, 649352.540054861688986, 649363.613855016999878, 649374.687670685816556, 649385.761501867556944, 649396.835348562337458, 649407.909210769925267, 649418.983088489738293, 649430.056981721776538, 649441.130890465807170, 649452.204814721248113, 649463.278754488448612, 649474.352709766710177, 649485.426680555916391, 649496.500666856067255, 649507.574668666464277, 649518.648685987223871, 649529.722718817880377, 649540.796767158550210, 649551.870831008651294, 649562.944910367950797, 649574.019005236332305, 649585.093115613330156, 649596.167241499177180, 649607.241382893291302, 649618.315539795439690, 649629.389712205389515, 649640.463900123024359, 649651.538103547994979, 649662.612322480068542, 649673.686556919012219, 649684.760806864709593, 649695.835072316578589, 649706.909353274735622, 649717.983649738831446, 649729.057961708516814, 649740.132289183908142, 649751.206632164306939, 649762.280990649596788, 649773.355364639544860, 649784.429754134151153, 649795.504159132950008, 649806.578579635825008, 649817.653015642310493, 649828.727467152406462, 649839.801934165647253, 649850.876416682032868, 649861.950914701214060, 649873.025428222957999, 649884.099957247031853, 649895.174501773202792, 649906.249061800888740, 649917.323637330438942, 649928.398228361387737, 649939.472834893385880, 649950.547456926316954, 649961.622094459831715, 649972.696747493580915, 649983.771416027680971, 649994.846100061666220, 650005.920799595303833, 650016.995514628360979, 650028.070245160488412, 650039.144991191686131, 650050.219752721604891, 650061.294529749895446, 650072.369322276674211, 650083.444130301126279, 650094.518953823484480, 650105.593792843283154, 650116.668647360522300, 650127.743517374619842, 650138.818402885575779, 650149.893303893040866, 650160.968220396782272, 650172.043152396567166, 650183.118099892279133, 650194.193062883685343, 650205.268041370203719, 650216.343035351950675, 650227.418044828460552, 650238.493069799733348, 650249.568110265303403, 650260.643166225054301, 650271.718237678869627, 650282.793324626050889, 650293.868427066830918, 650304.943545000744052, 650316.018678427673876, 650327.093827347271144, 650338.168991759419441, 650349.244171663653105, 650360.319367059855722, 650371.394577947910875, 650382.469804327469319, 650393.545046198298223, 650404.620303560164757, 650415.695576412603259, 650426.770864755730145, 650437.846168589196168, 650448.921487912768498, 650459.996822726214305, 650471.072173029184341, 650482.147538821329363, 650493.222920102765784, 650504.298316873027943, 650515.373729131999426, 650526.449156879214570, 650537.524600114673376, 650548.600058837910183, 650559.675533049041405, 650570.751022747484967, 650581.826527933008038, 650592.902048605610617, 650603.977584764943458, 650615.053136410540901, 650626.128703542635776, 650637.204286160646006, 650648.279884264338762, 650659.355497853597626, 650670.431126928073354, 650681.506771487533115, 650692.582431531860493, 650703.658107060706243, 650714.733798073837534, 650725.809504571137950, 650736.885226552258246, 650747.960964016849175, 650759.036716964794323, 650770.112485396093689, 650781.188269310048781, 650792.264068706776015, 650803.339883585576899, 650814.415713946800679, 650825.491559789981693, 650836.567421114654280, 650847.643297920934856, 650858.719190208357759, 650869.795097976573743, 650880.871021225815639, 650891.946959955268539, 650903.022914165048860, 650914.098883854923770, 650925.174869024427608, 650936.250869673443958, 650947.326885801739991, 650958.402917409082875, 650969.478964495239779, 650980.555027059977874, 650991.631105103064328, 651002.707198624033481, 651013.783307623001747, 651024.859432099619880, 651035.935572053422220, 651047.011727484641597, 651058.087898392463103, 651069.164084777003154, 651080.240286638028920, 651091.316503975074738, 651102.392736788140610, 651113.468985076877289, 651124.545248841051944, 651135.621528080431744, 651146.697822794783860, 651157.774132983875461, 651168.850458647357300, 651179.926799785229377, 651191.003156396909617, 651202.079528482514434, 651213.155916041694582, 651224.232319074100815, 651235.308737579616718, 651246.385171557776630, 651257.461621008580551, 651268.538085931795649, 651279.614566326956265, 651290.691062194062397, 651301.767573532881215, 651312.844100342947058, 651323.920642624143511, 651334.997200376237743, 651346.073773598996922, 651357.150362292304635, 651368.226966455695219, 651379.303586088935845, 651390.380221191910096, 651401.456871764385141, 651412.533537806128152, 651423.610219316906296, 651434.686916296253912, 651445.763628744171001, 651456.840356660308316, 651467.917100044433028, 651478.993858896428719, 651490.070633215946145, 651501.147423002868891, 651512.224228256847709, 651523.301048977416940, 651534.377885164692998, 651545.454736818443052, 651556.531603938201442, 651567.608486523851752, 651578.685384575161152, 651589.762298091780394, 651600.839227073709480, 651611.916171520482749, 651622.993131431867369, 651634.070106807746924, 651645.147097647655755, 651656.224103951710276, 651667.301125719444826, 651678.378162950626574, 651689.455215645139106, 651700.532283802633174, 651711.609367422643118, 651722.686466505401768, 651733.763581050443463, 651744.840711057535373, 651755.917856526444666, 651766.995017456822097, 651778.072193848551251, 651789.149385701282881, 651800.226593015133403, 651811.303815789404325, 651822.381054024095647, 651833.458307718858123, 651844.535576873575337, 651855.612861487898044, 651866.690161561709829, 651877.767477094661444, 651888.844808086520061, 651899.922154537052847, 651910.999516446143389, 651922.076893813326024, 651933.154286638600752, 651944.231694921618327, 651955.309118662145920, 651966.386557859834284, 651977.464012514567003, 651988.541482626111247, 651999.618968194350600, 652010.696469218702987, 652021.773985699168406, 652032.851517635514028, 652043.929065027390607, 652055.006627874681726, 652066.084206177154556, 652077.161799934343435, 652088.239409146248363, 652099.317033812520094, 652110.394673932925798, 652121.472329507232644, 652132.550000535324216, 652143.627687016967684, 652154.705388951580971, 652165.783106339280494, 652176.860839179600589, 652187.938587472541258, 652199.016351217636839, 652210.094130414770916, 652221.171925063710660, 652232.249735163990408, 652243.327560715842992, 652254.405401718686335, 652265.483258172287606, 652276.561130076530389, 652287.639017430949025, 652298.716920235543512, 652309.794838489964604, 652320.872772194212303, 652331.950721347588114, 652343.028685950208455, 652354.106666001840495, 652365.184661501902156, 652376.262672450626269, 652387.340698847547174, 652398.418740692315623, 652409.496797984815203, 652420.574870724696666, 652431.652958911843598, 652442.731062546023168, 652453.809181627118960, 652464.887316154548898, 652475.965466128312983, 652487.043631548061967, 652498.121812413679436, 652509.200008724816144, 652520.278220481355675, 652531.356447683065198, 652542.434690329479054, 652553.512948420364410, 652564.591221955837682, 652575.669510935433209, 652586.747815359034576, 652597.826135226059705, 652608.904470536625013, 652619.982821290264837, 652631.061187486862764, 652642.139569126302376, 652653.217966208234429, 652664.296378732193261, 652675.374806698295288, 652686.453250105958432, 652697.531708955299109, 652708.610183245968074, 652719.688672977616079, 652730.767178149893880, 652741.845698762917891, 652752.924234816222452, 652764.002786309574731, 652775.081353242741898, 652786.159935615607537, 652797.238533427822404, 652808.317146679153666, 652819.395775369252078, 652830.474419498117641, 652841.553079065401107, 652852.631754070753232, 652863.710444514174014, 652874.789150395197794, 652885.867871713708155, 652896.946608469472267, 652908.025360662140884, 652919.104128291597590, 652930.182911357725970, 652941.261709859827533, 652952.340523798135109, 652963.419353172299452, 652974.498197981854901, 652985.577058226801455, 652996.655933906789869, 653007.734825021587312, 653018.813731570960954, 653029.892653554794379, 653040.971590972738340, 653052.050543824676424, 653063.129512110026553, 653074.208495828905143, 653085.287494980962947, 653096.366509565850720, 653107.445539583684877, 653118.524585033766925, 653129.603645916213281, 653140.682722230325453, 653151.761813976452686, 653162.840921154012904, 653173.920043762889691, 653184.999181802733801, 653196.078335273428820, 653207.157504174509086, 653218.236688505974598, 653229.315888267592527, 653240.395103459130041, 653251.474334080121480, 653262.553580130566843, 653273.632841610000469, 653284.712118518305942, 653295.791410855366848, 653306.870718620950356, 653317.950041814474389, 653329.029380435938947, 653340.108734485111199, 653351.188103961991146, 653362.267488865880296, 653373.346889196778648, 653384.426304954453371, 653395.505736138438806, 653406.585182748851366, 653417.664644785341807, 653428.744122247560881, 653439.823615135392174, 653450.903123448486440, 653461.982647186610848, 653473.062186349532567, 653484.141740937251598, 653495.221310949185863, 653506.300896385335363, 653517.380497245350853, 653528.460113528883085, 653539.539745235932060, 653550.619392366148531, 653561.699054919416085, 653572.778732895152643, 653583.858426293474622, 653594.938135114032775, 653606.017859356477857, 653617.097599020809866, 653628.177354106563143, 653639.257124613737687, 653650.336910541751422, 653661.416711890604347, 653672.496528659947217, 653683.576360849663615, 653694.656208459637128, 653705.736071489285678, 653716.815949938492849, 653727.895843807142228, 653738.975753094884567, 653750.055677801603451, 653761.135617926949635, 653772.215573470690288, 653783.295544432592578, 653794.375530812307261, 653805.455532609950751, 653816.535549825057387, 653827.615582457277924, 653838.695630506612360, 653849.775693972478621, 653860.855772854993120, 653871.935867153806612, 653883.015976868686266, 653894.096101999399252, 653905.176242545596324, 653916.256398507044651, 653927.336569883627817, 653938.416756675229408, 653949.496958881267346, 653960.577176501741633, 653971.657409536419436, 653982.737657984718680, 653993.817921846988611, 654004.898201122647151, 654015.978495811461471, 654027.058805913198739, 654038.139131427742541, 654049.219472354510799, 654060.299828693736345, 654071.380200444837101, 654082.460587607813068, 654093.540990182314999, 654104.621408168110065, 654115.701841564849019, 654126.782290372415446, 654137.862754590576515, 654148.943234219099395, 654160.023729257867672, 654171.104239706415683, 654182.184765564277768, 654193.265306831919588, 654204.345863508642651, 654215.426435594214126, 654226.507023088401183, 654237.587625991203822, 654248.668244301923551, 654259.748878020793200, 654270.829527147463523, 654281.910191681468859, 654292.990871622809209, 654304.071566971251741, 654315.152277726330794, 654326.233003887929954, 654337.313745455932803, 654348.394502429990098, 654359.475274809869006, 654370.556062595220283, 654381.636865786043927, 654392.717684381990694, 654403.798518382827751, 654414.879367788205855, 654425.960232598008588, 654437.041112812003121, 654448.122008429956622, 654459.202919451519847, 654470.283845876692794, 654481.364787705126218, 654492.445744936354458, 654503.526717570261098, 654514.607705606729724, 654525.688709045643918, 654536.769727886538021, 654547.850762129179202, 654558.931811773334630, 654570.012876818771474, 654581.093957265256904, 654592.175053112790920, 654603.256164360791445, 654614.337291009258479, 654625.418433057842776, 654636.499590506195091, 654647.580763354315422, 654658.661951601738110, 654669.743155248579569, 654680.824374294257723, 654691.905608738656156, 654702.986858581425622, 654714.068123822566122, 654725.149404461611994, 654736.230700498446822, 654747.312011932837777, 654758.393338764435612, 654769.474680993123911, 654780.556038618669845, 654791.637411640724167, 654802.718800059286878, 654813.800203873775899, 654824.881623084191233, 654835.963057690067217, 654847.044507691636682, 654858.125973088201135, 654869.207453879760578, 654880.288950065965764, 654891.370461646583863, 654902.451988621382043, 654913.533530990127474, 654924.615088752703741, 654935.696661908878013, 654946.778250458184630, 654957.859854400507174, 654968.941473735379986, 654980.023108463035896, 654991.104758583009243, 655002.186424095183611, 655013.268104998976924, 655024.349801294389181, 655035.431512981303968, 655046.513240059255622, 655057.594982528127730, 655068.676740387571044, 655079.758513637585565, 655090.840302277589217, 655101.922106307698414, 655113.003925727447495, 655124.085760536720045, 655135.167610735166818, 655146.249476322671399, 655157.331357298768125, 655168.413253663456999, 655179.495165416505188, 655190.577092557679862, 655201.659035086515360, 655212.740993002895266, 655223.822966306703165, 655234.904954997589812, 655245.986959075438790, 655257.068978539784439, 655268.151013390510343, 655279.233063627500087, 655290.315129250288010, 655301.397210258757696, 655312.479306652792729, 655323.561418432043865, 655334.643545596161857, 655345.725688145030290, 655356.807846078299917, 655367.890019395970739, 655378.972208097577095, 655390.054412183118984, 655401.136631652130745, 655412.218866504495963, 655423.301116739748977, 655434.383382357889786, 655445.465663358801976, 655456.547959742019884, 655467.630271507427096, 655478.712598654674366, 655489.794941183412448, 655500.877299093757756, 655511.959672385244630, 655523.042061057756655, 655534.124465110828169, 655545.206884544575587, 655556.289319358300418, 655567.371769552119076, 655578.454235125798732, 655589.536716078990139, 655600.619212411460467, 655611.701724122860469, 655622.784251213190146, 655633.866793682100251, 655644.949351529357955, 655656.031924754730426, 655667.114513357984833, 655678.197117338655517, 655689.279736696975306, 655700.362371432478540, 655711.445021544815972, 655722.527687033871189, 655733.610367899411358, 655744.693064141087234, 655755.775775758782402, 655766.858502752147615, 655777.941245121182874, 655789.024002865422517, 655800.106775984750129, 655811.189564478583634, 655822.272368347272277, 655833.355187590350397, 655844.438022207352333, 655855.520872198278084, 655866.603737562778406, 655877.686618300620466, 655888.769514411687851, 655899.852425895631313, 655910.935352752218023, 655922.018294981331564, 655933.101252582506277, 655944.184225555625744, 655955.267213900689967, 655966.350217617116868, 655977.433236704673618, 655988.516271163476631, 655999.599320992943831, 656010.682386192958802, 656021.765466763288714, 656032.848562703700736, 656043.931674013962038, 656055.014800693839788, 656066.097942743101157, 656077.181100161280483, 656088.264272948494181, 656099.347461104393005, 656110.430664628744125, 656121.513883521198295, 656132.597117781639099, 656143.680367409833707, 656154.763632405432872, 656165.846912768320180, 656176.930208498146385, 656188.013519594911486, 656199.096846058033407, 656210.180187887395732, 656221.263545082882047, 656232.346917644259520, 656243.430305571178906, 656254.513708863523789, 656265.597127520944923, 656276.680561543093063, 656287.764010929968208, 656298.847475681221113, 656309.930955796735361, 656321.014451276278123, 656332.097962119267322, 656343.181488325819373, 656354.265029895585030, 656365.348586828447878, 656376.432159124058671, 656387.515746781951748, 656398.599349802243523, 656409.682968184701167, 656420.766601928859018, 656431.850251034717076, 656442.933915501693264, 656454.017595330020413, 656465.101290518883616, 656476.185001068748534, 656487.268726978800260, 656498.352468249038793, 656509.436224879231304, 656520.519996869144961, 656531.603784218314104, 656542.687586926855147, 656553.771404994418845, 656564.855238420655951, 656575.939087205333635, 656587.022951348451898, 656598.106830849312246, 656609.190725708263926, 656620.274635924608447, 656631.358561498345807, 656642.442502429126762, 656653.526458716951311, 656664.610430361004546, 656675.694417361752130, 656686.778419718611985, 656697.862437431351282, 656708.946470499737188, 656720.030518923653290, 656731.114582702633925, 656742.198661836679094, 656753.282756325439550, 656764.366866168682463, 656775.450991366175003, 656786.535131917800754, 656797.619287822977640, 656808.703459081938490, 656819.787645694101229, 656830.871847659465857, 656841.956064977566712, 656853.040297648403794, 656864.124545671395026, 656875.208809046773240, 656886.293087773839943, 656897.377381852711551, 656908.461691283038817, 656919.546016064472497, 656930.630356196779758, 656941.714711679960601, 656952.799082513549365, 656963.883468697546050, 656974.967870231484994, 656986.052287115249783, 656997.136719348374754, 657008.221166930859908, 657019.305629862588830, 657030.390108143095858, 657041.474601772031747, 657052.559110749512911, 657063.643635075073689, 657074.728174748481251, 657085.812729769735597, 657096.897300138254650, 657107.981885854038410, 657119.066486916854046, 657130.151103326235898, 657141.235735082183965, 657152.320382184349000, 657163.405044632498175, 657174.489722426515073, 657185.574415565934032, 657196.659124050755054, 657207.743847880628891, 657218.828587055322714, 657229.913341574720107, 657240.998111438471824, 657252.082896646345034, 657263.167697197874077, 657274.252513093408197, 657285.337344332132488, 657296.422190914163366, 657307.507052839151584, 657318.591930106747895, 657329.676822716835886, 657340.761730669299141, 657351.846653963671997, 657362.931592599838041, 657374.016546577564441, 657385.101515896501951, 657396.186500556650572, 657407.271500557544641, 657418.356515899184160, 657429.441546581103466, 657440.526592603186145, 657451.611653964966536, 657462.696730666561052, 657473.781822707620449, 657484.866930087795481, 657495.952052806853317, 657507.037190864793956, 657518.122344261035323, 657529.207512995693833, 657540.292697068303823, 657551.377896478632465, 657562.463111226563342, 657573.548341311863624, 657584.633586733951233, 657595.718847493175417, 657606.804123588954099, 657617.889415021054447, 657628.974721789360046, 657640.060043893405236, 657651.145381333073601, 657662.230734108365141, 657673.316102218697779, 657684.401485664071515, 657695.486884444137104, 657706.572298558661714, 657717.657728007412516, 657728.743172790273093, 657739.828632906894200, 657750.914108356926590, 657761.999599140486680, 657773.085105256992392, 657784.170626706210896, 657795.256163488142192, 657806.341715602437034, 657817.427283048979007, 657828.512865827302448, 657839.598463937407359, 657850.684077378711663, 657861.769706151331775, 657872.855350255034864, 657883.941009689238854, 657895.026684454060160, 657906.112374549149536, 657917.198079974041320, 657928.283800728851929, 657939.369536813348532, 657950.455288227065466, 657961.541054969886318, 657972.626837041461840, 657983.712634441675618, 657994.798447170294821, 658005.884275227086619, 658016.970118611585349, 658028.055977324023843, 658039.141851363820024, 658050.227740730624646, 658061.313645424554124, 658072.399565445142798, 658083.485500792274252, 658094.571451465715654, 658105.657417465117760, 658116.743398790247738, 658127.829395440989174, 658138.915407416992821, 658150.001434718258679, 658161.087477344204672, 658172.173535294830799, 658183.259608569671400, 658194.345697168842889, 658205.431801091879606, 658216.517920338665135, 658227.604054908733815, 658238.690204802202061, 658249.776370018371381, 658260.862550557474606, 658271.948746419046074, 658283.034957602852955, 658294.121184108778834, 658305.207425936474465, 658316.293683085590601, 658327.379955556127243, 658338.466243347735144, 658349.552546460181475, 658360.638864893466234, 658371.725198646774516, 658382.811547720455565, 658393.897912113927305, 658404.984291827189736, 658416.070686860010028, 658427.157097211922519, 658438.243522882927209, 658449.329963872325607, 658460.416420180583373, 658471.502891807002015, 658482.589378751465119, 658493.675881013856269, 658504.762398593476973, 658515.848931490676478, 658526.935479704989120, 658538.022043236182071, 658549.108622084022500, 658560.195216248277575, 658571.281825728481635, 658582.368450524751097, 658593.455090636620298, 658604.541746064205654, 658615.628416806808673, 658626.715102864545770, 658637.801804236834869, 658648.888520923792385, 658659.975252925069071, 658671.062000240199268, 658682.148762869415805, 658693.235540812136605, 658704.322334068012424, 658715.409142637159675, 658726.495966519229114, 658737.582805713755079, 658748.669660220853984, 658759.756530040293001, 658770.843415171257220, 658781.930315614212304, 658793.017231368576176, 658804.104162434232421, 658815.191108810948208, 658826.278070498257875, 658837.365047496045008, 658848.452039804426022, 658859.539047422702424, 658870.626070350757800, 658881.713108588592149, 658892.800162135623395, 658903.887230991735123, 658914.974315156810917, 658926.061414630734362, 658937.148529412923381, 658948.235659503261559, 658959.322804901748896, 658970.409965607686900, 658981.497141621191986, 658992.584332942031324, 659003.671539569855668, 659014.758761504548602, 659025.845998745760880, 659036.933251293026842, 659048.020519146812148, 659059.107802306185476, 659070.195100771263242, 659081.282414541696198, 659092.369743617251515, 659103.457087997579947, 659114.544447682797909, 659125.631822672323324, 659136.719212966272607, 659147.806618564063683, 659158.894039465580136, 659169.981475670589134, 659181.068927178857848, 659192.156393990153447, 659203.243876104359515, 659214.331373521126807, 659225.418886240222491, 659236.506414261297323, 659247.593957584351301, 659258.681516208918765, 659269.769090134999715, 659280.856679362361319, 659291.944283890421502, 659303.031903719180264, 659314.119538848521188, 659325.207189278095029, 659336.294855007668957, 659347.382536036893725, 659358.470232365769334, 659369.557943993830122, 659380.645670920959674, 659391.733413146925159, 659402.821170671610162, 659413.908943494549021, 659424.996731615741737, 659436.084535034606233, 659447.172353751142509, 659458.260187765234150, 659469.348037076415494, 659480.435901684570126, 659491.523781589581631, 659502.611676790751517, 659513.699587288429029, 659524.787513082032092, 659535.875454171444289, 659546.963410556432791, 659558.051382236764766, 659569.139369211974554, 659580.227371482294984, 659591.315389047143981, 659602.403421906288713, 659613.491470059729181, 659624.579533506999724, 659635.667612247751094, 659646.755706282099709, 659657.843815609812737, 659668.931940230308101, 659680.020080143702216, 659691.108235349529423, 659702.196405847440474, 659713.284591637551785, 659724.372792719514109, 659735.461009093094617, 659746.549240757944062, 659757.637487713946030, 659768.725749960518442, 659779.814027498010546, 659790.902320325956680, 659801.990628443891183, 659813.078951851930469, 659824.167290549492463, 659835.255644536577165, 659846.344013812951744, 659857.432398378383368, 659868.520798232522793, 659879.609213375137188, 659890.697643806110136, 659901.786089525092393, 659912.874550531967543, 659923.963026826386340, 659935.051518408348784, 659946.140025277272798, 659957.228547433158383, 659968.317084875423461, 659979.405637604533695, 659990.494205619674176, 660001.582788920728490, 660012.671387507580221, 660023.760001379880123, 660034.848630537278950, 660045.937274979893118, 660057.025934707373381, 660068.114609719370492, 660079.203300015768036, 660090.292005596100353, 660101.380726460251026, 660112.469462608103640, 660123.558214039425366, 660134.646980753866956, 660145.735762751195580, 660156.824560031294823, 660167.913372593699023, 660179.002200438291766, 660190.091043565073051, 660201.179901973577216, 660212.268775663571432, 660223.357664634939283, 660234.446568887098692, 660245.535488420282491, 660256.624423234141432, 660267.713373328209855, 660278.802338702371344, 660289.891319356625900, 660300.980315290275030, 660312.069326503435150, 660323.158352995873429, 660334.247394767240621, 660345.336451817303896, 660356.425524145830423, 660367.514611752470955, 660378.603714637341909, 660389.692832799977623, 660400.781966240261681, 660411.871114957844839, 660422.960278952261433, 660434.049458223744296, 660445.138652771827765, 660456.227862596279010, 660467.317087696865201, 660478.406328073353507, 660489.495583725627512, 660500.584854653105140, 660511.674140856019221, 660522.763442334020510, 660533.852759086643346, 660544.942091113771312, 660556.031438415287994, 660567.120800990611315, 660578.210178839974105, 660589.299571962794289, 660600.388980359188281, 660611.478404028457589, 660622.567842970718630, 660633.657297185622156, 660644.746766673051752, 660655.836251432541758, 660666.925751464092173, 660678.015266767237335, 660689.104797341977246, 660700.194343187846243, 660711.283904304844327, 660722.373480692622252, 660733.463072351063602, 660744.552679279702716, 660755.642301478423178, 660766.731938946875744, 660777.821591685060412, 660788.911259692744352, 660800.000942969461903, 660811.090641515096650, 660822.180355329532176, 660833.270084412302822, 660844.359828763408586, 660855.449588382500224, 660866.539363269228488, 660877.629153423593380, 660888.718958845245652, 660899.808779533836059, 660910.898615489364602, 660921.988466711482033, 660933.078333199955523, 660944.168214954552241, 660955.258111975039355, 660966.348024261184037, 660977.437951812753454, 660988.527894629514776, 660999.617852711351588, 661010.707826057798229, 661021.797814668738283, 661032.887818543822505, 661043.977837683167309, 661055.067872086190619, 661066.157921752776019, 661077.247986682690680, 661088.338066875701770, 661099.428162331576459, 661110.518273050198331, 661121.608399031101726, 661132.698540274170227, 661143.788696779171005, 661154.878868545987643, 661165.969055574038066, 661177.059257863438688, 661188.149475413956679, 661199.239708225242794, 661210.329956296947785, 661221.420219628955238, 661232.510498221032321, 661243.600792072946206, 661254.691101184464060, 661265.781425555469468, 661276.871765185496770, 661287.962120074545965, 661299.052490222034976, 661310.142875628080219, 661321.233276292448863, 661332.323692214791663, 661343.414123394642957, 661354.504569832235575, 661365.595031526987441, 661376.685508478665724, 661387.776000687386841, 661398.866508152568713, 661409.957030874211341, 661421.047568851965480, 661432.138122085249051, 661443.228690574527718, 661454.319274319102988, 661465.409873318974860, 661476.500487573677674, 661487.591117083211429, 661498.681761846994050, 661509.772421865258366, 661520.863097137422301, 661531.953787663369440, 661543.044493443099782, 661554.135214475914836, 661565.225950761698186, 661576.316702300566249, 661587.407469091936946, 661598.498251135810278, 661609.589048431837000, 661620.679860979784280, 661631.770688779302873, 661642.861531830276363, 661653.952390132588334, 661665.043263685773127, 661676.134152489830740, 661687.225056544528343, 661698.315975849167444, 661709.406910404097289, 661720.497860208852217, 661731.588825263199396, 661742.679805566905998, 661753.770801119739190, 661764.861811921466142, 661775.952837971854024, 661787.043879270670004, 661798.134935817681253, 661809.226007612771355, 661820.317094655474648, 661831.408196945674717, 661842.499314483255148, 661853.590447267750278, 661864.681595299160108, 661875.772758577135392, 661886.863937101443298, 661897.955130871850997, 661909.046339888125658, 661920.137564150034450, 661931.228803657344542, 661942.320058409823105, 661953.411328407353722, 661964.502613649470732, 661975.593914136174135, 661986.685229867114685, 661997.776560841943137, 662008.867907060775906, 662019.959268523030914, 662031.050645228591748, 662042.142037177225575, 662053.233444368815981, 662064.324866803013720, 662075.416304479469545, 662086.507757398299873, 662097.599225558806211, 662108.690708961221389, 662119.782207605079748, 662130.873721490148455, 662141.965250616078265, 662153.056794982985593, 662164.148354590171948, 662175.239929437870160, 662186.331519525498152, 662197.423124853172339, 662208.514745420310646, 662219.606381226796657, 662230.698032272397541, 662241.789698556996882, 662252.881380080245435, 662263.973076841910370, 662275.064788841758855, 662286.156516079674475, 662297.248258555307984, 662308.340016268310137, 662319.431789218797348, 662330.523577406303957, 662341.615380830597132, 662352.707199491444044, 662363.799033388728276, 662374.890882521984167, 662385.982746891328134, 662397.074626496178098, 662408.166521336417645, 662419.258431412046775, 662430.350356722366996, 662441.442297267611139, 662452.534253047429956, 662463.626224061357789, 662474.718210309394635, 662485.810211791191250, 662496.902228506514803, 662507.994260455248877, 662519.086307637044229, 662530.178370051668026, 662541.270447699003853, 662552.362540578818880, 662563.454648690647446, 662574.546772034489550, 662585.638910610112362, 662596.731064417166635, 662607.823233455419540, 662618.915417724754661, 662630.007617224822752, 662641.099831955507398, 662652.192061916459352, 662663.284307107562199, 662674.376567528466694, 662685.468843178940006, 662696.561134058865719, 662707.653440168011002, 662718.745761505910195, 662729.838098072679713, 662740.930449867970310, 662752.022816891432740, 662763.115199142717756, 662774.207596621825360, 662785.300009328639135, 662796.392437262577005, 662807.484880423755385, 662818.577338811825030, 662829.669812426203862, 662840.762301267124712, 662851.854805334238335, 662862.947324627311900, 662874.039859145879745, 662885.132408890058286, 662896.224973859381862, 662907.317554053734057, 662918.410149472765625, 662929.502760116476566, 662940.595385984401219, 662951.688027076423168, 662962.780683392076753, 662973.873354931361973, 662984.966041694278829, 662996.058743680128828, 663007.151460888911970, 663018.244193320395425, 663029.336940974229947, 663040.429703850299120, 663051.522481948486529, 663062.615275268210098, 663073.708083809586242, 663084.800907572265714, 663095.893746555899270, 663106.986600760370493, 663118.079470185330138, 663129.172354830778204, 663140.265254696365446, 663151.358169781742617, 663162.451100086793303, 663173.544045611284673, 663184.637006355100311, 663195.729982317658141, 663206.822973499190994, 663217.915979899000376, 663229.009001517086290, 663240.102038353332318, 663251.195090407389216, 663262.288157678907737, 663273.381240167887881, 663284.474337873863988, 663295.567450796719640, 663306.660578936222009, 663317.753722292138264, 663328.846880864468403, 663339.940054652513936, 663351.033243656391278, 663362.126447875634767, 663373.219667310244404, 663384.312901959754527, 663395.406151824165136, 663406.499416903126985, 663417.592697196523659, 663428.685992703773081, 663439.779303425108083, 663450.872629359946586, 663461.965970508288592, 663473.059326869784854, 663484.152698444202542, 663495.246085231192410, 663506.339487230987288, 663517.432904442772269, 663528.526336866663769, 663539.619784502428956, 663550.713247349602170, 663561.806725408066995, 663572.900218677707016, 663583.993727158289403, 663595.087250849348493, 663606.180789750884287, 663617.274343862547539, 663628.367913184105419, 663639.461497715441510, 663650.555097456322983, 663661.648712406284176, 663672.742342565325089, 663683.835987933212891, 663694.929648509481922, 663706.023324294248596, 663717.117015287047252, 663728.210721487645060, 663739.304442895925604, 663750.398179511656053, 663761.491931334370747, 663772.585698364069685, 663783.679480600520037, 663794.773278043488972, 663805.867090692510828, 663816.960918547702022, 663828.054761608480476, 663839.148619874962606, 663850.242493346799165, 663861.336382023640908, 663872.430285905371420, 663883.524204991641454, 663894.618139282218181, 663905.712088777101599, 663916.806053475942463, 663927.900033378391527, 663938.994028484332375, 663950.088038793415762, 663961.182064305525273, 663972.276105020428076, 663983.370160937891342, 663994.464232057565823, 664005.558318379451521, 664016.652419903082773, 664027.746536628343165, 664038.840668554999866, 664049.934815682703629, 664061.028978011454456, 664072.123155540903099, 664083.217348270816728, 664094.311556200846098, 664105.405779330874793, 664116.500017660786398, 664127.594271190231666, 664138.688539918861352, 664149.782823846675456, 664160.877122973208316, 664171.971437298343517, 664183.065766821964644, 664194.160111543722451, 664205.254471463267691, 664216.348846580600366, 664227.443236895371228, 664238.537642407347448, 664249.632063116296194, 664260.726499022101052, 664271.820950124412775, 664282.915416422998533, 664294.009897917509079, 664305.104394607944414, 664316.198906494071707, 664327.293433575541712, 664338.387975852121599, 664349.482533323578537, 664360.577105989912525, 664371.671693850425072, 664382.766296905232593, 664393.860915154102258, 664404.955548596801236, 664416.050197232863866, 664427.144861062406562, 664438.239540084847249, 664449.334234300069511, 664460.428943708073348, 664471.523668308393098, 664482.618408100912347, 664493.713163085281849, 664504.807933261152357, 664515.902718628756702, 664526.997519187512808, 664538.092334937187843, 664549.187165877665393, 664560.282012008712627, 664571.376873329863884, 664582.471749841235578, 664593.566641542478465, 664604.661548433359712, 664615.756470513413660, 664626.851407782756723, 664637.946360240923241, 664649.041327887796797, 664660.136310723144561, 664671.231308746733703, 664682.326321958331391, 664693.421350357588381, 664704.516393944388255, 664715.611452718498185, 664726.706526679801755, 664737.801615827833302, 664748.896720162592828, 664759.991839683614671, 664771.086974390666001, 664782.182124283863232, 664793.277289362624288, 664804.372469626832753, 664815.467665076372214, 664826.562875710777007, 664837.658101529814303, 664848.753342533600517, 664859.848598721553572, 664870.943870093789883, 664882.039156649727374, 664893.134458389249630, 664904.229775312007405, 664915.325107418117113, 664926.420454707113095, 664937.515817178878933, 664948.611194832948968, 664959.706587669323198, 664970.801995687535964, 664981.897418887703680, 664992.992857269360684, 665004.088310832274146, 665015.183779576327652, 665026.279263501171954, 665037.374762606574222, 665048.470276892418042, 665059.565806358470581, 665070.661351004382595, 665081.756910829921253, 665092.852485835086554, 665103.948076019180007, 665115.043681382550858, 665126.139301924733445, 665137.234937645262107, 665148.330588544136845, 665159.426254621241242, 665170.521935875993222, 665181.617632308392785, 665192.713343918207102, 665203.809070705203339, 665214.904812669148669, 665226.000569809693843, 665237.096342126722448, 665248.192129620118067, 665259.287932289415039, 665270.383750134496950, 665281.479583155130967, 665292.575431351084262, 665303.671294722007588, 665314.767173267900944, 665325.863066988415085, 665336.958975883317180, 665348.054899952374399, 665359.150839195353910, 665370.246793612022884, 665381.342763202148490, 665392.438747965497896, 665403.534747901954688, 665414.630763011169620, 665425.726793292793445, 665436.822838746826164, 665447.918899372918531, 665459.014975170954131, 665470.111066140583716, 665481.207172281574458, 665492.303293593926355, 665503.399430077057332, 665514.495581730734557, 665525.591748555190861, 665536.687930549727753, 665547.784127714228816, 665558.880340048694052, 665569.976567552657798, 665581.072810225770809, 665592.169068068149500, 665603.265341079444624, 665614.361629259306937, 665625.457932607503608, 665636.554251124034636, 665647.650584808317944, 665658.746933660469949, 665669.843297680024989, 665680.939676866983064, 665692.036071220762096, 665703.132480741594918, 665714.228905428666621, 665725.325345282210037, 665736.421800301992334, 665747.518270487547852, 665758.614755838760175, 665769.711256355396472, 665780.807772037107497, 665791.904302883893251, 665803.000848895404488, 665814.097410071408376, 665825.193986411672086, 665836.290577915962785, 665847.387184584047645, 665858.483806415810250, 665869.580443410784937, 665880.677095568971708, 665891.773762890021317, 665902.870445373700932, 665913.967143019661307, 665925.063855828018859, 665936.160583798307925, 665947.257326930412091, 665958.354085223982111, 665969.450858678785153, 665980.547647294588387, 665991.644451071275398, 666002.741270008496940, 666013.838104106136598, 666024.934953363961540, 666036.031817781622522, 666047.128697358886711, 666058.225592095521279, 666069.322501991526224, 666080.419427046552300, 666091.516367260250263, 666102.613322632503696, 666113.710293162963353, 666124.807278851512820, 666135.904279697919264, 666147.001295701949857, 666158.098326863371767, 666169.195373181835748, 666180.292434657108970, 666191.389511289307848, 666202.486603077850305, 666213.583710022736341, 666224.680832123500295, 666235.777969380142167, 666246.875121792079881, 666257.972289359429851, 666269.069472081842832, 666280.166669959202409, 666291.263882991159335, 666302.361111177480780, 666313.458354517933913, 666324.555613012169488, 666335.652886660303921, 666346.750175461755134, 666357.847479416639544, 666368.944798524491489, 666380.042132785078138, 666391.139482198050246, 666402.236846763407812, 666413.334226481034420, 666424.431621350347996, 666435.529031371464953, 666446.626456543919630, 666457.723896867479198, 666468.821352341910824, 666479.918822967214510, 666491.016308742924593, 666502.113809668808244, 666513.211325744865462, 666524.308856970630586, 666535.406403345987201, 666546.503964870702475, 666557.601541544427164, 666568.699133367161267, 666579.796740338555537, 666590.894362458027899, 666601.991999726044014, 666613.089652142021805, 666624.187319705495611, 666635.285002416698262, 666646.382700275047682, 666657.480413280311041, 666668.578141432604752, 666679.675884731463157, 666690.773643176653422, 666701.871416767826304, 666712.969205505098216, 666724.067009387770668, 666735.164828416076489, 666746.262662589550018, 666757.360511908074841, 666768.458376371301711, 666779.556255978997797, 666790.654150730813853, 666801.752060626866296, 666812.849985666805878, 666823.947925850283355, 666835.045881177182309, 666846.143851647269912, 666857.241837260080501, 666868.339838015614077, 666879.437853913637809, 666890.535884953918867, 666901.633931136224419, 666912.731992460205220, 666923.830068925628439, 666934.928160532610491, 666946.026267280569300, 666957.124389169272035, 666968.222526198718697, 666979.320678368443623, 666990.418845678446814, 667001.517028128262609, 667012.615225717891008, 667023.713438446982764, 667034.811666315305047, 667045.909909322625026, 667057.008167468826286, 667068.106440753210336, 667079.204729176242836, 667090.303032737341709, 667101.401351436390541, 667112.499685272923671, 667123.598034246941097, 667134.696398357977159, 667145.794777606148273, 667156.893171990988776, 667167.991581512382254, 667179.090006170095876, 667190.188445963780396, 667201.286900893086568, 667212.385370958130807, 667223.483856158447452, 667234.582356494036503, 667245.680871964432299, 667256.779402569402009, 667267.877948308829218, 667278.976509182481095, 667290.075085190241225, 667301.173676331643946, 667312.272282606456429, 667323.370904014678672, 667334.469540555845015, 667345.568192230071872, 667356.666859036660753, 667367.765540975728072, 667378.864238046924584, 667389.962950250133872, 667401.061677584773861, 667412.160420051077381, 667423.259177648462355, 667434.357950377045199, 667445.456738236243837, 667456.555541226058267, 667467.654359346022829, 667478.753192596253939, 667489.852040976285934, 667500.950904485885985, 667512.049783124937676, 667523.148676893208176, 667534.247585790115409, 667545.346509816008620, 667556.445448970305733, 667567.544403252890334, 667578.643372663529590, 667589.742357201990671, 667600.841356867924333, 667611.940371661214158, 667623.039401581510901, 667634.138446628814563, 667645.237506802775897, 667656.336582103162073, 667667.435672529623844, 667678.534778082044795, 667689.633898760308512, 667700.733034563949332, 667711.832185493083671, 667722.931351547013037, 667734.030532725970261, 667745.129729029256850, 667756.228940457105637, 667767.328167009050958, 667778.427408684859984, 667789.526665484416299, 667800.625937407370657, 667811.725224453490227, 667822.824526622658595, 667833.923843914642930, 667845.023176329093985, 667856.122523865895346, 667867.221886524697766, 667878.321264305268414, 667889.420657207607292, 667900.520065231248736, 667911.619488376076333, 667922.718926641857252, 667933.818380028358661, 667944.917848535231315, 667956.017332162358798, 667967.116830909624696, 667978.216344776563346, 667989.315873763174750, 668000.415417869109660, 668011.514977093902417, 668022.614551437785849, 668033.714140900294296, 668044.813745481078513, 668055.913365180254914, 668067.012999997357838, 668078.112649931921624, 668089.212314984411933, 668100.311995153897442, 668111.411690440494567, 668122.511400843854062, 668133.611126363859512, 668144.710867000161670, 668155.810622752644122, 668166.910393621074036, 668178.010179605218582, 668189.109980704612099, 668200.209796919371001, 668211.309628248913214, 668222.409474693355151, 668233.509336252463982, 668244.609212925657630, 668255.709104713168927, 668266.809011614299379, 668277.908933629281819, 668289.008870757301338, 668300.108822998707183, 668311.208790353033692, 668322.308772820048034, 668333.408770399517380, 668344.508783091325313, 668355.608810894889757, 668366.708853810559958, 668377.808911837637424, 668388.908984976122156, 668400.009073225548491, 668411.109176586032845, 668422.209295056993142, 668433.309428638429381, 668444.409577330225147, 668455.509741131798364, 668466.609920043149032, 668477.710114064044319, 668488.810323194134980, 668499.910547433304600, 668511.010786781436764, 668522.111041237949394, 668533.211310802958906, 668544.311595476116054, 668555.411895257188007, 668566.512210145825520, 668577.612540141912177, 668588.712885245447978, 668599.813245455734432, 668610.913620773004368, 668622.014011196442880, 668633.114416726515628, 668644.214837362640537, 668655.315273104584776, 668666.415723952115513, 668677.516189904999919, 668688.616670963121578, 668699.717167126247659, 668710.817678393912502, 668721.918204766232520, 668733.018746242742054, 668744.119302823324688, 668755.219874507631175, 668766.320461295545101, 668777.421063186833635, 668788.521680181263946, 668799.622312278486788, 668810.722959478385746, 668821.823621780727990, 668832.924299185280688, 668844.024991691811010, 668855.125699300202541, 668866.226422009989619, 668877.327159821172245, 668888.427912733284757, 668899.528680746210739, 668910.629463859833777, 668921.730262073804624, 668932.831075388006866, 668943.931903802091256, 668955.032747315824963, 668966.133605928975157, 668977.234479641541839, 668988.335368452942930, 668999.436272363178432, 669010.537191372131929, 669021.638125479221344, 669032.739074684446678, 669043.840038987575099, 669054.941018388373777, 669066.042012886493467, 669077.143022481934167, 669088.244047174230218, 669099.345086963148788, 669110.446141848806292, 669121.547211830620654, 669132.648296908591874, 669143.749397082254291, 669154.850512351607904, 669165.951642716187052, 669177.052788175991736, 669188.153948730672710, 669199.255124380113557, 669210.356315123965032, 669221.457520962110721, 669232.558741894084960, 669243.659977920004167, 669254.761229039286263, 669265.862495252164081, 669276.963776557939127, 669288.065072956611402, 669299.166384447715245, 669310.267711031367071, 669321.369052707217634, 669332.470409475150518, 669343.571781334700063, 669354.673168285633437, 669365.774570327950642, 669376.875987461186014, 669387.977419685339555, 669399.078867000062019, 669410.180329405120574, 669421.281806900398806, 669432.383299485431053, 669443.484807160100900, 669454.586329924291931, 669465.687867777771316, 669476.789420720189810, 669487.890988751314580, 669498.992571871029213, 669510.094170078868046, 669521.195783375063911, 669532.297411758918315, 669543.399055230547674, 669554.500713789486326, 669565.602387435617857, 669576.704076168476604, 669587.805779988295399, 669598.907498894608580, 669610.009232887066901, 669621.110981965670362, 669632.212746129953302, 669643.314525379799306, 669654.416319714975543, 669665.518129135365598, 669676.619953640620224, 669687.721793230506591, 669698.823647904908285, 669709.925517663359642, 669721.027402505977079, 669732.129302432178520, 669743.231217442080379, 669754.333147535216995, 669765.435092711355537, 669776.537052970263176, 669787.639028311823495, 669798.741018736036494, 669809.843024242203683, 669820.945044830325060, 669832.047080500051379, 669843.149131251266226, 669854.251197083853185, 669865.353277997579426, 669876.455373991862871, 669887.557485066819936, 669898.659611222101375, 669909.761752457474358, 669920.863908772589639, 669931.966080167563632, 669943.068266642047092, 669954.170468195574358, 669965.272684828145429, 669976.374916539527476, 669987.477163329138421, 669998.579425197211094, 670009.681702143512666, 670020.783994167577475, 670031.886301269056275, 670042.988623448181897, 670054.090960704139434, 670065.193313037278131, 670076.295680447132327, 670087.398062933469191, 670098.500460496055894, 670109.602873134543188, 670120.705300848814659, 670131.807743638753891, 670142.910201504011638, 670154.012674444355071, 670165.115162459551357, 670176.217665549484082, 670187.320183713687584, 670198.422716952278279, 670209.525265264790505, 670220.627828651107848, 670231.730407110881060, 670242.833000643993728, 670253.935609249863774, 670265.038232928956859, 670276.140871680574492, 670287.243525504600257, 670298.346194400684908, 670309.448878368828446, 670320.551577408448793, 670331.654291519662365, 670342.757020702236332, 670353.859764955705032, 670364.962524280068465, 670376.065298674860969, 670387.168088140082546, 670398.270892675383948, 670409.373712280648760, 670420.476546955527738, 670431.579396699788049, 670442.682261513313279, 670453.785141395870596, 670464.888036346994340, 670475.990946366800927, 670487.093871454824694, 670498.196811610949226, 670509.299766835058108, 670520.402737126569264, 670531.505722485482693, 670542.608722911565565, 670553.711738404701464, 670564.814768964657560, 670575.917814590851776, 670587.020875283284113, 670598.123951041838154, 670609.227041866164654, 670620.330147756147198, 670631.433268711320125, 670642.536404731799848, 670653.639555817120709, 670664.742721966933459, 670675.845903181354515, 670686.949099459918216, 670698.052310802508146, 670709.155537208891474, 670720.258778678718954, 670731.362035211874172, 670742.465306808124296, 670753.568593467120081, 670764.671895188861527, 670775.775211972999386, 670786.878543819300830, 670797.981890727533028, 670809.085252697346732, 670820.188629728858359, 670831.292021821602248, 670842.395428975345567, 670853.498851189855486, 670864.602288464899175, 670875.705740800360218, 670886.809208195889369, 670897.912690651486628, 670909.016188166686334, 670920.119700741372071, 670931.223228375194594, 670942.326771067921072, 670953.430328819435090, 670964.533901629736647, 670975.637489498010837, 670986.741092424606904, 670997.844710409175605, 671008.948343451018445, 671020.051991550484672, 671031.155654706992209, 671042.259332920773886, 671053.363026191014796, 671064.466734517831355, 671075.570457900757901, 671086.674196339910850, 671097.777949834824540, 671108.881718385382555, 671119.985501991352066, 671131.089300652383827, 671142.193114368245006, 671153.296943138819188, 671164.400786963989958, 671175.504645843291655, 671186.608519776607864, 671197.712408763822168, 671208.816312804352492, 671219.920231898315251, 671231.024166045477614, 671242.128115245373920, 671253.232079498004168, 671264.336058803019114, 671275.440053160302341, 671286.544062569388188, 671297.648087030393071, 671308.752126542851329, 671319.856181106530130, 671330.960250721313059, 671342.064335386967286, 671353.168435103143565, 671364.272549869725481, 671375.376679686480202, 671386.480824553291313, 671397.584984469576739, 671408.689159435569309, 671419.793349450570531, 671430.897554514696822, 671442.001774627715349, 671453.106009789276868, 671464.210259999032132, 671475.314525257097557, 671486.418805562774651, 671497.523100916412659, 671508.627411317313090, 671519.731736765475944, 671530.836077260668389, 671541.940432802657597, 671553.044803390977904, 671564.149189025745727, 671575.253589706611820, 671586.358005433226936, 671597.462436205591075, 671608.566882023354992, 671619.671342886169441, 671630.775818793918006, 671641.880309746484272, 671652.984815743518993, 671664.089336784789339, 671675.193872870295309, 671686.298423999338411, 671697.402990172035061, 671708.507571388152428, 671719.612167647457682, 671730.716778949601576, 671741.821405294467695, 671752.926046681823209, 671764.030703111318871, 671775.135374582721852, 671786.240061096148565, 671797.344762651016936, 671808.449479247210547, 671819.554210884496570, 671830.658957562642172, 671841.763719281414524, 671852.868496040697210, 671863.973287840140983, 671875.078094679513015, 671886.182916558696888, 671897.287753477226943, 671908.392605435219593, 671919.497472432209179, 671930.602354468079284, 671941.707251542597078, 671952.812163655413315, 671963.917090806295164, 671975.022032995242625, 671986.126990222022869, 671997.231962486053817, 672008.336949787451886, 672019.441952125984244, 672030.546969501185231, 672041.652001912938431, 672052.757049361127429, 672063.862111845286563, 672074.967189365532249, 672086.072281921282411, 672097.177389512653463, 672108.282512139063329, 672119.387649800512008, 672130.492802496766672, 672141.597970227594487, 672152.703152992762625, 672163.808350792038254, 672174.913563625072129, 672186.018791491631418, 672197.124034391948953, 672208.229292325209826, 672219.334565291414037, 672230.439853290445171, 672241.545156321837567, 672252.650474385707639, 672263.755807481473312, 672274.861155609367415, 672285.966518768575042, 672297.071896959212609, 672308.177290180930868, 672319.282698433729820, 672330.388121717143804, 672341.493560031056404, 672352.599013375234790, 672363.704481749446131, 672374.809965153457597, 672385.915463586919941, 672397.020977049716748, 672408.126505541848019, 672419.232049062731676, 672430.337607612367719, 672441.443181190406904, 672452.548769796499982, 672463.654373430763371, 672474.759992092731409, 672485.865625782287680, 672496.971274499199353, 672508.076938243117183, 672519.182617013691925, 672530.288310811272822, 672541.394019635161385, 672552.499743485124782, 672563.605482361046597, 672574.711236262694001, 672585.817005189950578, 672596.922789142467082, 672608.028588119894266, 672619.134402122348547, 672630.240231149247847, 672641.346075200708583, 672652.451934276032262, 672663.557808375451714, 672674.663697498734109, 672685.769601645297371, 672696.875520815141499, 672707.981455008033663, 672719.087404223508202, 672730.193368461914361, 672741.299347722437233, 672752.405342005193233, 672763.511351309716702, 672774.617375636007637, 672785.723414983716793, 672796.829469352611341, 672807.935538742574863, 672819.041623153141700, 672830.147722584544681, 672841.253837036085315, 672852.359966507763602, 672863.466110999113880, 672874.572270510136150, 672885.678445040830411, 672896.784634590614587, 672907.890839159255847, 672918.997058746754192, 672930.103293352527544, 672941.209542976692319, 672952.315807619132102, 672963.422087279148400, 672974.528381956974044, 672985.634691652026959, 672996.741016364190727, 673007.847356093465351, 673018.953710839268751, 673030.060080601833761, 673041.166465380345471, 673052.272865175036713, 673063.379279985441826, 673074.485709811560810, 673085.592154652928002, 673096.698614509543404, 673107.805089380824938, 673118.911579267005436, 673130.018084167619236, 673141.124604082433507, 673152.231139011215419, 673163.337688953615725, 673174.444253909867257, 673185.550833879271522, 673196.657428861828521, 673207.764038857189007, 673218.870663865236565, 673229.977303885738365, 673241.083958918461576, 673252.190628963056952, 673263.297314019524492, 673274.404014087282121, 673285.510729166562669, 673296.617459256900474, 673307.724204357946292, 673318.830964469816536, 673329.937739591929130, 673341.044529724167660, 673352.151334866415709, 673363.258155018440448, 673374.364990179892629, 673385.471840350655839, 673396.578705530380830, 673407.685585718951188, 673418.792480916134082, 673429.899391121696681, 673441.006316335406154, 673452.113256557146087, 673463.220211786334403, 673474.327182023203932, 673485.434167267056182, 673496.541167518123984, 673507.648182776058093, 673518.755213040392846, 673529.862258311244659, 673540.969318588031456, 673552.076393870636821, 673563.183484159060754, 673574.290589452954009, 673585.397709751967341, 673596.504845055984333, 673607.611995364888571, 673618.719160678097978, 673629.826340995845385, 673640.933536317548715, 673652.040746643091552, 673663.147971972473897, 673674.255212305113673, 673685.362467640894465, 673696.469737979699858, 673707.577023321297020, 673718.684323665336706, 673729.791639011702500, 673740.898969360161573, 673752.006314710248262, 673763.113675062195398, 673774.221050415420905, 673785.328440769808367, 673796.435846125241369, 673807.543266481254250, 673818.650701837963425, 673829.758152194670402, 673840.865617551375180, 673851.973097908077762, 673863.080593264428899, 673874.188103620079346, 673885.295628974796273, 673896.403169328346848, 673907.510724680731073, 673918.618295031599700, 673929.725880380603485, 673940.833480727742426, 673951.941096072550863, 673963.048726414912380, 673974.156371754710563, 673985.264032091596164, 673996.371707425336353, 674007.479397755698301, 674018.587103082565591, 674029.694823405588977, 674040.802558724768460, 674051.910309039521962, 674063.018074349849485, 674074.125854655518197, 674085.233649956411682, 674096.341460252064280, 674107.449285542243160, 674118.557125826831907, 674129.664981105830520, 674140.772851378540508, 674151.880736645194702, 674162.988636905327439, 674174.096552158705890, 674185.204482405097224, 674196.312427644385025, 674207.420387876336463, 674218.528363100718707, 674229.636353317066096, 674240.744358525378630, 674251.852378725539893, 674262.960413917200640, 674274.068464100011624, 674285.176529273972847, 674296.284609438735060, 674307.392704594065435, 674318.500814739731140, 674329.608939875615761, 674340.717080001370050, 674351.825235116877593, 674362.933405221789144, 674374.041590315871872, 674385.149790399125777, 674396.258005471085198, 674407.366235531633720, 674418.474480580654927, 674429.582740617799573, 674440.691015642601997, 674451.799305655062199, 674462.907610655180179, 674474.015930642606691, 674485.124265616876073, 674496.232615577871911, 674507.340980525477789, 674518.449360459344462, 674529.557755379355513, 674540.666165285278112, 674551.774590176879428, 674562.883030053810216, 674573.991484916070476, 674585.099954763078131, 674596.208439594949596, 674607.316939411452040, 674618.425454212119803, 674629.533983997069299, 674640.642528765718453, 674651.751088517950848, 674662.859663253650069, 674673.968252972583286, 674685.076857674401253, 674696.185477359103970, 674707.294112026109360, 674718.402761675417423, 674729.511426306911744, 674740.620105920243077, 674751.728800515178591, 674762.837510091369040, 674773.946234648814425, 674785.054974187165499, 674796.163728706189431, 674807.272498205653392, 674818.381282685557380, 674829.490082145552151, 674840.598896585172042, 674851.707726004417054, 674862.816570403054357, 674873.925429780734703, 674885.034304137574509, 674896.143193472875282, 674907.252097786753438, 674918.361017078859732, 674929.469951348844916, 674940.578900596825406, 674951.687864822335541, 674962.796844025142491, 674973.905838205246255, 674985.014847362064756, 674996.123871495365165, 675007.232910605380312, 675018.341964691644534, 675029.451033753925003, 675040.560117791872472, 675051.669216805486940, 675062.778330794302747, 675073.887459758203477, 675084.996603697072715, 675096.105762610561214, 675107.214936498436145, 675118.324125360697508, 675129.433329196763225, 675140.542548006633297, 675151.651781789958477, 675162.761030546738766, 675173.870294276508503, 675184.979572979267687, 675196.088866654550657, 675207.198175302240998, 675218.307498922105879, 675229.416837514028884, 675240.526191077660769, 675251.635559612768702, 675262.744943119236268, 675273.854341596597806, 675284.963755044969730, 675296.073183464002796, 675307.182626853347756, 675318.292085212888196, 675329.401558542391285, 675340.511046841624193, 675351.620550110237673, 675362.730068348231725, 675373.839601555257104, 675384.949149731080979, 675396.058712875470519, 675407.168290988425724, 675418.277884069248103, 675429.387492118286900, 675440.497115134960040, 675451.606753119034693, 675462.716406070394441, 675473.826073988806456, 675484.935756873921491, 675496.045454725855961, 675507.155167544027790, 675518.264895328204148, 675529.374638078501448, 675540.484395794337615, 675551.594168475712650, 675562.703956122277305, 675573.813758734031580, 675584.923576310393400, 675596.033408851479180, 675607.143256356823258, 675618.253118826309219, 675629.362996259704232, 675640.472888656659052, 675651.582796017290093, 675662.692718341015279, 675673.802655627718195, 675684.912607877282426, 675696.022575089242309, 675707.132557263714261, 675718.242554400232621, 675729.352566498680972, 675740.462593558710068, 675751.572635580203496, 675762.682692562928423, 675773.792764506652020, 675784.902851411141455, 675796.012953276047483, 675807.123070101486519, 675818.233201886876486, 675829.343348631984554, 675840.453510336927138, 675851.563687001354992, 675862.673878625035286, 675873.784085207502358, 675884.894306748756208, 675896.004543248564005, 675907.114794706576504, 675918.225061122793704, 675929.335342496982776, 675940.445638828561641, 675951.555950117763132, 675962.666276364005171, 675973.776617567171343, 675984.886973727145232, 675995.997344843577594, 676007.107730916468427, 676018.218131945352070, 676029.328547929995693, 676040.438978870166466, 676051.549424765980802, 676062.659885616856627, 676073.770361422677524, 676084.880852183210663, 676095.991357898339629, 676107.101878567482345, 676118.212414190871641, 676129.322964768158272, 676140.433530298992991, 676151.544110783259384, 676162.654706220608205, 676173.765316610806622, 676184.875941953738220, 676195.986582249286585, 676207.097237497102469, 676218.207907696953043, 676229.318592848489061, 676240.429292951826937, 676251.540008006268181, 676262.650738011929207, 676273.761482968693599, 676284.872242876095697, 676295.983017733902670, 676307.093807542114519, 676318.204612300032750, 676329.315432008006610, 676340.426266665570438, 676351.537116272374988, 676362.647980828420259, 676373.758860333357006, 676384.869754786835983, 676395.980664188857190, 676407.091588539304212, 676418.202527837594971, 676429.313482083729468, 676440.424451277474873, 676451.535435418249108, 676462.646434506401420, 676473.757448541582562, 676484.868477523443289, 676495.979521451517940, 676507.090580326039344, 676518.201654146425426, 676529.312742912559770, 676540.423846624325961, 676551.534965281491168, 676562.646098883706145, 676573.757247430970892, 676584.868410922703333, 676595.979589358787052, 676607.090782739338465, 676618.201991063775495, 676629.313214331981726, 676640.424452543840744, 676651.535705699003302, 676662.646973797120154, 676673.758256838074885, 676684.869554821867496, 676695.980867748032324, 676707.092195616452955, 676718.203538426896557, 676729.314896179013886, 676740.426268872572109, 676751.537656507687643, 676762.649059083661996, 676773.760476600727998, 676784.871909058419988, 676795.983356456388719, 676807.094818794634193, 676818.206296072807163, 676829.317788290791214, 676840.429295448353514, 676851.540817545144819, 676862.652354581048712, 676873.763906555715948, 676884.875473469146527, 676895.987055320991203, 676907.098652111017145, 676918.210263839107938, 676929.321890504797921, 676940.433532107970677, 676951.545188648509793, 676962.656860126182437, 676973.768546540755779, 676984.880247891764157, 676995.991964179323986, 677007.103695402969606, 677018.215441562701017, 677029.327202658168972, 677040.438978689140640, 677051.550769655266777, 677062.662575556663796, 677073.774396392749622, 677084.886232163524255, 677095.998082868638448, 677107.109948507975787, 677118.221829081303440, 677129.333724588388577, 677140.445635028881952, 677151.557560402667150, 677162.669500709511340, 677173.781455949298106, 677184.893426121678203, 677196.005411226418801, 677207.117411263287067, 677218.229426232050173, 677229.341456132591702, 677240.453500964795239, 677251.565560728195123, 677262.677635422558524, 677273.789725047885440, 677284.901829603593796, 677296.013949089800008, 677307.126083506271243, 677318.238232852658257, 677329.350397128728218, 677340.462576334248297, 677351.574770469218493, 677362.686979532940313, 677373.799203525646590, 677384.911442446988076, 677396.023696296731941, 677407.135965074528940, 677418.248248780379072, 677429.360547413816676, 677440.472860974841751, 677451.585189463105053, 677462.697532878490165, 677473.809891220531426, 677484.922264489345253, 677496.034652684233151, 677507.147055805544369, 677518.259473852696829, 677529.371906825690530, 677540.484354724059813, 677551.596817547688261, 677562.709295296459459, 677573.821787969907746, 677584.934295567916706, 677596.046818090369925, 677607.159355537034571, 677618.271907907561399, 677629.384475201833993, 677640.497057419386692, 677651.609654560452327, 677662.722266624332406, 677673.834893611259758, 677684.947535520652309, 677696.060192352393642, 677707.172864106250927, 677718.285550782107748, 677729.398252379614860, 677740.510968898772262, 677751.623700338997878, 677762.736446700291708, 677773.849207982304506, 677784.961984185036272, 677796.074775308137760, 677807.187581351259723, 677818.300402314402163, 677829.413238197215833, 677840.526088999467902, 677851.638954720925540, 677862.751835361472331, 677873.864730920875445, 677884.977641398785636, 677896.090566795086488, 677907.203507109545171, 677918.316462341812439, 677929.429432491888292, 677940.542417559307069, 677951.655417544185184, 677962.768432446056977, 677973.881462264573202, 677984.994506999617442, 677996.107566651073284, 678007.220641218824312, 678018.333730702404864, 678029.446835101582110, 678040.559954416356049, 678051.673088646377437, 678062.786237791180611, 678073.899401850998402, 678085.012580825365148, 678096.125774714048021, 678107.238983516930602, 678118.352207233780064, 678129.465445864130743, 678140.578699407982640, 678151.691967865219340, 678162.805251235375181, 678173.918549518450163, 678185.031862713862211, 678196.145190821611322, 678207.258533841813914, 678218.371891773655079, 678229.485264617251232, 678240.598652372369543, 678251.712055038777180, 678262.825472616008483, 678273.938905104179867, 678285.052352502825670, 678296.165814811945893, 678307.279292031191289, 678318.392784160329029, 678329.506291199126281, 678340.619813147117384, 678351.733350004651584, 678362.846901771263219, 678373.960468446603045, 678385.074050030438229, 678396.187646522652358, 678407.301257922896184, 678418.414884231169708, 678429.528525447123684, 678440.642181570525281, 678451.755852601141669, 678462.869538538856432, 678473.983239383203909, 678485.096955134300515, 678496.210685791680589, 678507.324431355111301, 678518.438191824592650, 678529.551967199775390, 678540.665757480310276, 678551.779562665964477, 678562.893382756854407, 678574.007217752397992, 678585.121067652711645, 678596.234932457213290, 678607.348812165902928, 678618.462706778314896, 678629.576616294682026, 678640.690540714422241, 678651.804480037419125, 678662.918434263439849, 678674.032403392135166, 678685.146387423388660, 678696.260386357200332, 678707.374400192988105, 678718.488428930751979, 678729.602472570142709, 678740.716531111160293, 678751.830604553106241, 678762.944692896329798, 678774.058796140248887, 678785.172914284863509, 678796.287047329708003, 678807.401195274782367, 678818.515358119620942, 678829.629535864223726, 678840.743728508241475, 678851.857936051557772, 678862.972158493939787, 678874.086395835154690, 678885.200648074969649, 678896.314915212802589, 678907.429197249002755, 678918.543494183220901, 678929.657806014991365, 678940.772132744430564, 678951.886474370840006, 678963.000830894452520, 678974.115202314802445, 678985.229588631656952, 678996.343989845016040, 679007.458405954414047, 679018.572836959734559, 679029.687282860861160, 679040.801743657211773, 679051.916219349019229, 679063.030709935817868, 679074.145215417491272, 679085.259735793573782, 679096.374271064181812, 679107.488821228733286, 679118.603386287344620, 679129.717966239666566, 679140.832561085466295, 679151.947170824510977, 679163.061795456567779, 679174.176434981287457, 679185.291089398786426, 679196.405758708599024, 679207.520442910608836, 679218.635142004466616, 679229.749855990055948, 679240.864584867027588, 679251.979328635381535, 679263.094087294652127, 679274.208860844839364, 679285.323649285594001, 679296.438452616799623, 679307.553270837990567, 679318.668103949166834, 679329.782951950095594, 679340.897814840427600, 679352.012692620162852, 679363.127585288835689, 679374.242492846329696, 679385.357415292295627, 679396.472352626849897, 679407.587304849410430, 679418.702271960093640, 679429.817253958317451, 679440.932250844081864, 679452.047262616921216, 679463.162289277068339, 679474.277330823941156, 679485.392387257423252, 679496.507458577398211, 679507.622544783400372, 679518.737645875313319, 679529.852761852904223, 679540.967892716056667, 679552.083038464537822, 679563.198199098114856, 679574.313374616438523, 679585.428565019392408, 679596.543770306627266, 679607.658990478143096, 679618.774225533474237, 679629.889475472620688, 679641.004740295349620, 679652.120020001311786, 679663.235314590157941, 679674.350624062004499, 679685.465948416385800, 679696.581287653185427, 679707.696641772170551, 679718.812010773224756, 679729.927394655882381, 679741.042793419910595, 679752.158207065425813, 679763.273635591845959, 679774.389078999287449, 679785.504537287168205, 679796.620010455721058, 679807.735498504131101, 679818.851001432631165, 679829.966519240872003, 679841.082051928620785, 679852.197599495644681, 679863.313161941827275, 679874.428739266702905, 679885.544331470387988, 679896.659938552416861, 679907.775560512556694, 679918.891197350691073, 679930.006849066587165, 679941.122515660128556, 679952.238197130733170, 679963.353893478401005, 679974.469604703015648, 679985.585330804344267, 679996.701071782154031, 680007.816827635979280, 680018.932598365703598, 680030.048383971326984, 680041.164184452616610, 680052.279999809106812, 680063.395830040564761, 680074.511675146990456, 680085.627535127918236, 680096.743409983348101, 680107.859299713163637, 680118.975204316782765, 680130.091123794205487, 680141.207058145198971, 680152.323007369297557, 680163.438971466734074, 680174.554950436926447, 680185.670944279758260, 680196.786952995113097, 680207.902976582641713, 680219.019015042227693, 680230.135068373405375, 680241.251136576291174, 680252.367219650419429, 680263.483317595673725, 680274.599430411821231, 680285.715558098629117, 680296.831700655748136, 680307.947858083294705, 680319.064030380803160, 680330.180217548157088, 680341.296419584890828, 680352.412636491120793, 680363.528868266264908, 680374.645114910323173, 680385.761376423179172, 680396.877652804483660, 680407.993944054003805, 680419.110250171506777, 680430.226571156759746, 680441.342907009646297, 680452.459257729817182, 680463.575623317155987, 680474.692003771429881, 680485.808399092289619, 680496.924809279735200, 680508.041234333300963, 680519.157674252870493, 680530.274129038327374, 680541.390598689438775, 680552.507083205855452, 680563.623582587344572, 680574.740096833673306, 680585.856625944841653, 680596.973169920500368, 680608.089728760300204, 680619.206302464241162, 680630.322891031857580, 680641.439494463265873, 680652.556112757767551, 680663.672745915595442, 680674.789393936283886, 680685.906056819716468, 680697.022734565660357, 680708.139427173882723, 680719.256134644034319, 680730.372856975998729, 680741.489594169775955, 680752.606346224783920, 680763.723113141022623, 680774.839894918142818, 680785.956691555911675, 680797.073503054212779, 680808.190329412813298, 680819.307170631480403, 680830.424026709981263, 680841.540897648199461, 680852.657783445669338, 680863.774684102274477, 680874.891599617898464, 680886.008529992308468, 680897.125475225155242, 680908.242435316322371, 680919.359410265577026, 680930.476400072686374, 680941.593404737301171, 680952.710424259421416, 680963.827458638814278, 680974.944507875014096, 680986.061571968020871, 680997.178650917601772, 681008.295744723407552, 681019.412853385321796, 681030.529976902995259, 681041.647115276427940, 681052.764268505270593, 681063.881436589406803, 681074.998619528370909, 681086.115817322046496, 681097.233029970433563, 681108.350257473066449, 681119.467499829828739, 681130.584757040487602, 681141.702029104460962, 681152.819316022214480, 681163.936617793166079, 681175.053934417082928, 681186.171265893732198, 681197.288612222997472, 681208.405973404413089, 681219.523349438095465, 681230.640740323578939, 681241.758146060863510, 681252.875566649483517, 681263.993002089438960, 681275.110452380380593, 681286.227917521959171, 681297.345397514174692, 681308.462892356794327, 681319.580402049585246, 681330.697926592198201, 681341.815465984516777, 681352.933020226191729, 681364.050589317223057, 681375.168173257261515, 681386.285772046190687, 681397.403385683544911, 681408.521014169324189, 681419.638657503062859, 681430.756315684993751, 681441.873988714651205, 681452.991676591685973, 681464.109379315865226, 681475.227096887188964, 681486.344829305424355, 681497.462576569989324, 681508.580338681233115, 681519.698115638457239, 681530.815907441661693, 681541.933714090613648, 681553.051535584963858, 681564.169371924712323, 681575.287223109393381, 681586.405089139007032, 681597.522970013087615, 681608.640865731751546, 681619.758776294533163, 681630.876701701199636, 681641.994641951634549, 681653.112597045605071, 681664.230566982878372, 681675.348551763105206, 681686.466551386401989, 681697.584565852186643, 681708.702595160226338, 681719.820639310753904, 681730.938698303187266, 681742.056772137293592, 681753.174860812840052, 681764.292964329943061, 681775.411082687904127, 681786.529215886723250, 681797.647363926400431, 681808.765526806470007, 681819.883704526582733, 681831.001897086855024, 681842.120104486704804, 681853.238326726248488, 681864.356563805136830, 681875.474815723020583, 681886.593082479783334, 681897.711364075308666, 681908.829660509247333, 681919.947971781482920, 681931.066297891549766, 681942.184638839564286, 681953.302994625177234, 681964.421365248039365, 681975.539750708034262, 681986.658151004812680, 681997.776566138374619, 682008.894996108487248, 682020.013440914801322, 682031.131900557200424, 682042.250375035335310, 682053.368864348856732, 682064.487368497997522, 682075.605887482292019, 682086.724421301390976, 682097.842969955294393, 682108.961533443536609, 682120.080111766234040, 682131.198704922688194, 682142.317312913248315, 682153.435935737448744, 682164.554573394823819, 682175.673225885373540, 682186.791893208981492, 682197.910575365182012, 682209.029272353975102, 682220.147984175011516, 682231.266710828291252, 682242.385452313232236, 682253.504208629834466, 682264.622979777748697, 682275.741765756974928, 682286.860566567163914, 682297.979382208082825, 682309.098212679615244, 682320.217057981295511, 682331.335918113007210, 682342.454793074633926, 682353.573682866059244, 682364.692587486817501, 682375.811506936792284, 682386.930441215750761, 682398.049390323460102, 682409.168354259571061, 682420.287333024200052, 682431.406326616881415, 682442.525335037498735, 682453.644358285702765, 682464.763396361377090, 682475.882449264288880, 682487.001516994088888, 682498.120599550777115, 682509.239696934004314, 682520.358809143770486, 682531.477936179377139, 682542.597078041057102, 682553.716234728344716, 682564.835406241239980, 682575.954592579160817, 682587.073793742340058, 682598.193009730195627, 682609.312240542727523, 682620.431486179353669, 682631.550746640423313, 682642.670021925237961, 682653.789312033914030, 682664.908616966102272, 682676.027936721453443, 682687.147271299967542, 682698.266620701062493, 682709.385984924971126, 682720.505363971227780, 682731.624757839716040, 682742.744166529970244, 682753.863590042106807, 682764.983028375776485, 682776.102481530630030, 682787.221949506667443, 682798.341432303539477, 682809.460929921013303, 682820.580442358856089, 682831.699969616835006, 682842.819511694950052, 682853.939068592735566, 682865.058640310075134, 682876.178226846852340, 682887.297828202601522, 682898.417444377206266, 682909.537075370433740, 682920.656721182167530, 682931.776381812058389, 682942.896057260106318, 682954.015747525729239, 682965.135452609043568, 682976.255172509700060, 682987.374907227465883, 682998.494656761991791, 683009.614421113394201, 683020.734200281207450, 683031.853994265198708, 683042.973803065135144, 683054.093626681016758, 683065.213465112494305, 683076.333318359218538, 683087.453186421305872, 683098.573069298057817, 683109.692966989707202, 683120.812879495671950, 683131.932806815952063, 683143.052748950314708, 683154.172705898527056, 683165.292677660472691, 683176.412664235569537, 683187.532665623817593, 683198.652681825216860, 683209.772712839185260, 683220.892758665839210, 683232.012819304713048, 683243.132894755573943, 683254.252985018421896, 683265.373090092674829, 683276.493209978449158, 683287.613344675512053, 683298.733494183514267, 683309.853658502339385, 683320.973837631521747, 683332.094031571061350, 683343.214240320725366, 683354.334463880397379, 683365.454702249495313, 683376.574955428251997, 683387.695223416201770, 683398.815506212878972, 683409.935803818632849, 683421.056116232881323, 683432.176443455391563, 683443.296785486163571, 683454.417142324731685, 683465.537513971095905, 683476.657900424674153, 683487.778301685699262, 683498.898717753821984, 683510.019148628693074, 683521.139594310079701, 683532.260054797865450, 683543.380530091817491, 683554.501020191586576, 683565.621525097289123, 683576.742044808343053, 683587.862579324748367, 683598.983128646039404, 683610.103692772216164, 683621.224271703162231, 683632.344865438295528, 683643.465473977848887, 683654.586097321240231, 683665.706735468353145, 683676.827388419071212, 683687.948056172928773, 683699.068738729925826, 683710.189436089829542, 683721.310148252407089, 683732.430875217309222, 683743.551616984652355, 683754.672373553621583, 683765.793144924566150, 683776.913931097020395, 683788.034732070867904, 683799.155547845759429, 683810.276378421578556, 683821.397223798092455, 683832.518083974951878, 683843.638958952156827, 683854.759848729358055, 683865.880753306322731, 683877.001672682818025, 683888.122606858843938, 683899.243555833818391, 683910.364519607741386, 683921.485498180380091, 683932.606491551501676, 683943.727499720989726, 683954.848522688494995, 683965.969560453551821, 683977.090613016509451, 683988.211680376785807, 683999.332762534264475, 684010.453859488712624, 684021.574971239897422, 684032.696097787469625, 684043.817239131312817, 684054.938395271310583, 684066.059566207113676, 684077.180751938605681, 684088.301952465553768, 684099.423167787725106, 684110.544397904654033, 684121.665642816456966, 684132.786902522901073, 684143.908177023637109, 684155.029466318432242, 684166.150770407170057, 684177.272089289384894, 684188.393422965193167, 684199.514771434245631, 684210.636134696193039, 684221.757512751035392, 684232.878905598539859, 684244.000313238240778, 684255.121735670021735, 684266.243172893882729, 684277.364624909358099, 684288.486091716331430, 684299.607573314569890, 684310.729069703957066, 684321.850580883910879, 684332.972106854664162, 684344.093647615634836, 684355.215203166939318, 684366.336773508111946, 684377.458358639036305, 684388.579958559479564, 684399.701573269092478, 684410.823202767875046, 684421.944847055478022, 684433.066506131901406, 684444.188179996563122, 684455.309868649346754, 684466.431572090135887, 684477.553290318814106, 684488.675023335032165, 684499.796771138440818, 684510.918533729040064, 684522.040311106480658, 684533.162103270529769, 684544.283910221070983, 684555.405731957987882, 684566.527568480698392, 684577.649419789318927, 684588.771285883500241, 684599.893166763125919, 684611.015062427730300, 684622.136972877196968, 684633.258898111525923, 684644.380838130367920, 684655.502792933373712, 684666.624762520426884, 684677.746746891178191, 684688.868746045627631, 684699.990759983658791, 684711.112788704689592, 684722.234832208603621, 684733.356890495400876, 684744.478963564499281, 684755.601051416015252, 684766.723154049715959, 684777.845271465135738, 684788.967403662274592, 684800.089550640783273, 684811.211712400428951, 684822.333888941095211, 684833.456080262665637, 684844.578286364558153, 684855.700507247005589, 684866.822742909425870, 684877.944993351818994, 684889.067258573719300, 684900.189538575126790, 684911.311833355808631, 684922.434142915531993, 684933.556467254180461, 684944.678806371288374, 684955.801160266739316, 684966.923528940300457, 684978.045912391738966, 684989.168310621054843, 685000.290723627782427, 685011.413151411688887, 685022.535593972890638, 685033.658051310572773, 685044.780523425084539, 685055.903010315960273, 685067.025511983083561, 685078.148028425988741, 685089.270559644792229, 685100.393105639028363, 685111.515666408580728, 685122.638241953216493, 685133.760832272819243, 685144.883437367156148, 685156.006057235761546, 685167.128691878519021, 685178.251341295312159, 685189.374005485908128, 685200.496684450074099, 685211.619378187693655, 685222.742086698301136, 685233.864809981780127, 685244.987548038014211, 685256.110300866654143, 685267.233068467583507, 685278.355850840569474, 685289.478647985379212, 685300.601459901779890, 685311.724286589422263, 685322.847128048306331, 685333.969984278082848, 685345.092855278751813, 685356.215741049847566, 685367.338641591253690, 685378.461556902620941, 685389.584486983832903, 685400.707431834773161, 685411.830391455092467, 685422.953365844557993, 685434.076355003053322, 685445.199358930345625, 685456.322377625969239, 685467.445411090156995, 685478.568459322326817, 685489.691522322362289, 685500.814600090263411, 685511.937692625448108, 685523.060799927916378, 685534.183921997318976, 685545.307058833423071, 685556.430210436461493, 685567.553376805619337, 685578.676557940896600, 685589.799753842176870, 685600.922964508994482, 685612.046189941465855, 685623.169430139125325, 685634.292685101972893, 685645.415954829542898, 685656.539239321718924, 685667.662538578500971, 685678.785852599074133, 685689.909181383904070, 685701.032524932408705, 685712.155883244471624, 685723.279256319743581, 685734.402644158224575, 685745.526046759332530, 685756.649464123300277, 685767.772896249778569, 685778.896343138301745, 685790.019804788986221, 685801.143281201366335, 685812.266772375325672, 685823.390278310514987, 685834.513799006817862, 685845.637334464234300, 685856.760884682298638, 685867.884449660778046, 685879.008029399556108, 685890.131623898283578, 685901.255233156727627, 685912.378857175121084, 685923.502495952649042, 685934.626149489427917, 685945.749817785224877, 685956.873500839574262, 685967.997198652476072, 685979.120911223697476, 685990.244638553122059, 686001.368380640284158, 686012.492137485183775, 686023.615909087355249, 686034.739695446682163, 686045.863496563280933, 686056.987312436569482, 686068.111143066314980, 686079.234988452401012, 686090.358848594711162, 686101.482723492663354, 686112.606613146606833, 686123.730517555843107, 686134.854436720255762, 686145.978370639961213, 686157.102319314260967, 686168.226282743271440, 686179.350260926526971, 686190.474253864027560, 686201.598261555540375, 686212.722284000716172, 686223.846321199322119, 686234.970373151358217, 686246.094439856242388, 686257.218521314091049, 686268.342617524787784, 686279.466728487750515, 686290.590854202746414, 686301.714994670008309, 686312.839149888721295, 686323.963319859118201, 686335.087504580966197, 686346.211704053799622, 686357.335918277618475, 686368.460147252073511, 686379.584390976931900, 686390.708649452077225, 686401.832922677160241, 686412.957210652180947, 686424.081513376790099, 686435.205830850638449, 686446.330163073842414, 686457.454510045703501, 686468.578871766454540, 686479.703248235746287, 686490.827639453229494, 686501.952045418904163, 686513.076466132421046, 686524.200901593430899, 686535.325351801817305, 686546.449816757463850, 686557.574296460137703, 686568.698790909606032, 686579.823300105519593, 686590.947824047878385, 686602.072362736216746, 686613.196916170534678, 686624.321484350366518, 686635.446067275945097, 686646.570664946571924, 686657.695277362246998, 686668.819904522853903, 686679.944546427810565, 686691.069203077233396, 686702.193874470889568, 686713.318560608429834, 686724.443261489621364, 686735.567977114347741, 686746.692707482259721, 686757.817452593357302, 686768.942212447407655, 686780.066987043945119, 686791.191776382969692, 686802.316580464248545, 686813.441399287316017, 686824.566232852172107, 686835.691081158700399, 686846.815944206435233, 686857.940821995376609, 686869.065714525175281, 686880.190621795714833, 686891.315543806529604, 686902.440480557619594, 686913.565432048868388, 686924.690398279810324, 686935.815379250445403, 686946.940374960424379, 686958.065385409398004, 686969.190410597599111, 686980.315450524329208, 686991.440505189588293, 687002.565574593143538, 687013.690658734762110, 687024.815757614327595, 687035.940871231257915, 687047.065999585785903, 687058.191142677562311, 687069.316300506237894, 687080.441473071696237, 687091.566660373820923, 687102.691862411913462, 687113.817079186439514, 687124.942310696817003, 687136.067556942929514, 687147.192817924427800, 687158.318093641195446, 687169.443384092883207, 687180.568689279374667, 687191.694009200553410, 687202.819343856186606, 687213.944693245808594, 687225.070057369419374, 687236.195436226902530, 687247.320829817675985, 687258.446238141856156, 687269.571661199093796, 687280.697098989156075, 687291.822551511926576, 687302.948018767172471, 687314.073500754428096, 687325.198997473809868, 687336.324508924852125, 687347.450035107554868, 687358.575576021568850, 687369.701131666777655, 687380.826702042715624, 687391.952287149499170, 687403.077886986662634, 687414.203501554089598, 687425.329130851547234, 687436.454774878919125, 687447.580433635739610, 687458.706107122008689, 687469.831795337493531, 687480.957498281844892, 687492.083215955062769, 687503.208948356681503, 687514.334695486701094, 687525.460457344655879, 687536.586233930545859, 687547.712025244021788, 687558.837831285083666, 687569.963652053265832, 687581.089487548568286, 687592.215337770525366, 687603.341202718904242, 687614.467082393821329, 687625.592976794927381, 687636.718885921873152, 687647.844809774425812, 687658.970748352585360, 687670.096701656002551, 687681.222669684328139, 687692.348652437562123, 687703.474649915471673, 687714.600662117707543, 687725.726689044153318, 687736.852730694576167, 687747.978787068626843, 687759.104858166421764, 687770.230943987378851, 687781.357044531381689, 687792.483159798430279, 687803.609289787942544, 687814.735434500151314, 687825.861593934358098, 687836.987768090562895, 687848.113956968765706, 687859.240160568500869, 687870.366378889535554, 687881.492611931753345, 687892.618859694804996, 687903.745122178574093, 687914.871399382944219, 687925.997691307566129, 687937.123997952206992, 687948.250319316750392, 687959.376655400730669, 687970.503006204380654, 687981.629371727118269, 687992.755751968827099, 688003.882146929274313, 688015.008556608343497, 688026.134981005801819, 688037.261420121067204, 688048.387873954372481, 688059.514342505484819, 688070.640825773938559, 688081.767323759850115, 688092.893836462520994, 688104.020363882067613, 688115.146906018257141, 688126.273462870740332, 688137.400034439517185, 688148.526620724238455, 688159.653221724554896, 688170.779837440582924, 688181.906467871624045, 688193.033113017911091, 688204.159772879094817, 688215.286447454942390, 688226.413136745104566, 688237.539840749581344, 688248.666559467907064, 688259.793292900081724, 688270.920041045988910, 688282.046803905046545, 688293.173581477371044, 688304.300373762496747, 688315.427180760307238, 688326.554002470569685, 688337.680838893284090, 688348.807690027984791, 688359.934555874438956, 688371.061436432530172, 688382.188331702025607, 688393.315241682692431, 688404.442166374297813, 688415.569105776725337, 688426.696059889742173, 688437.823028712882660, 688448.950012246379629, 688460.077010489651002, 688471.204023442347534, 688482.331051104702055, 688493.458093476248905, 688504.585150556988083, 688515.712222346337512, 688526.839308844413608, 688537.966410050750710, 688549.093525965232402, 688560.220656587742269, 688571.347801917814650, 688582.474961955682375, 688593.602136700530536, 688604.729326152475551, 688615.856530311401002, 688626.983749176957645, 688638.110982749029063, 688649.238231027149595, 688660.365494011319242, 688671.492771701305173, 688682.620064096758142, 688693.747371197561733, 688704.874693003599532, 688716.002029514405876, 688727.129380729980767, 688738.256746649974957, 688749.384127274272032, 688760.511522602639161, 688771.638932634843513, 688782.766357370535843, 688793.893796809716150, 688805.021250952151604, 688816.148719797492959, 688827.276203345507383, 688838.403701596078463, 688849.531214549089782, 688860.658742203959264, 688871.786284560919739, 688882.913841619505547, 688894.041413379483856, 688905.168999840738252, 688916.296601002919488, 688927.424216866027564, 688938.551847429713234, 688949.679492693743668, 688960.807152658002451, 688971.934827321907505, 688983.062516685808077, 688994.190220749122091, 689005.317939511849545, 689016.445672973641194, 689027.573421134031378, 689038.701183993252926, 689049.828961550956592, 689060.956753806676716, 689072.084560760529712, 689083.212382412166335, 689094.340218761353754, 689105.468069807975553, 689116.595935551449656, 689127.723815992008895, 689138.851711129304022, 689149.979620963102207, 689161.107545493054204, 689172.235484719160013, 689183.363438640953973, 689194.491407258436084, 689205.619390571257100, 689216.747388579300605, 689227.875401282566600, 689239.003428680356592, 689250.131470772670582, 689261.259527559159324, 689272.387599040055647, 689283.515685214661062, 689294.643786083091982, 689305.771901644766331, 689316.900031899916939, 689328.028176847845316, 689339.156336488784291, 689350.284510822268203, 689361.412699848064221, 689372.540903566055931, 689383.669121976010501, 689394.797355077811517, 689405.925602870760486, 689417.053865355323069, 689428.182142530917190, 689439.310434397426434, 689450.438740954501554, 689461.567062202026136, 689472.695398139650933, 689483.823748767492361, 689494.952114084968343, 689506.080494092195295, 689517.208888788591139, 689528.337298174272291, 689539.465722248889506, 689550.594161011977121, 689561.722614463767968, 689572.851082603796385, 689583.979565431829542, 689595.108062947867438, 689606.236575151444413, 689617.365102042327635, 689628.493643620517105, 689639.622199885663576, 689650.750770837650634, 689661.879356476012617, 689673.007956800865941, 689684.136571811861359, 689695.265201508533210, 689706.393845891114324, 689717.522504959255457, 689728.651178712374531, 689739.779867150704376, 689750.908570273895748, 689762.037288081482984, 689773.166020573698916, 689784.294767750077881, 689795.423529610270634, 689806.552306154393591, 689817.681097381981090, 689828.809903292800300, 689839.938723886734806, 689851.067559163668193, 689862.196409123251215, 689873.325273765134625, 689884.454153089434840, 689895.583047095802613, 689906.711955783772282, 689917.840879153343849, 689928.969817204517312, 689940.098769936710596, 689951.227737349923700, 689962.356719443690963, 689973.485716218012385, 689984.614727672771551, 689995.743753807619214, 690006.872794622089714, 690018.001850116532296, 690029.130920290248469, 690040.260005143238232, 690051.389104675152339, 690062.518218885874376, 690073.647347775171511, 690084.776491342927329, 690095.905649588792585, 690107.034822512534447, 690118.164010114036500, 690129.293212392949499, 690140.422429349157028, 690151.551660982659087, 690162.680907292757183, 690173.810168279567733, 690184.939443942974322, 690196.068734282278456, 690207.198039297712967, 690218.327358988928609, 690229.456693355692551, 690240.586042397888377, 690251.715406115166843, 690262.844784507178701, 690273.974177574040368, 690285.103585315402597, 690296.233007731148973, 690307.362444820813835, 690318.491896584280767, 690329.621363021433353, 690340.750844131922349, 690351.880339915631339, 690363.009850372327492, 690374.139375501777977, 690385.268915303866379, 690396.398469778127037, 690407.528038924559951, 690418.657622742932290, 690429.787221232894808, 690440.916834394447505, 690452.046462227241136, 690463.176104731159285, 690474.305761905736290, 690485.435433750855736, 690496.565120266401209, 690507.694821452256292, 690518.824537308071740, 690529.954267833614722, 690541.084013028652407, 690552.213772892951965, 690563.343547426396981, 690574.473336628754623, 690585.603140499792062, 690596.732959039276466, 690607.862792247091420, 690618.992640122771263, 690630.122502666199580, 690641.252379877259955, 690652.382271755835973, 690663.512178301578388, 690674.642099514254369, 690685.772035393747501, 690696.901985939475708, 690708.031951151671819, 690719.161931029986590, 690730.291925574187189, 690741.421934784040786, 690752.551958659314550, 690763.681997199892066, 690774.812050405191258, 690785.942118275561370, 690797.072200810420327, 690808.202298009768128, 690819.332409873139113, 690830.462536400533281, 690841.592677591601387, 690852.722833446227014, 690863.853003964060917, 690874.983189145103097, 690886.113388989004306, 690897.243603495415300, 690908.373832664336078, 690919.504076495417394, 690930.634334988542832, 690941.764608143595979, 690952.894895959994756, 690964.025198437971994, 690975.155515576945618, 690986.285847376799211, 690997.416193837532774, 691008.546554958680645, 691019.676930740009993, 691030.807321181637235, 691041.937726282863878, 691053.068146043922752, 691064.198580464348197, 691075.329029543907382, 691086.459493282600306, 691097.589971680077724, 691108.720464736106806, 691119.850972450338304, 691130.981494822772220, 691142.112031853059307, 691153.242583541199565, 691164.373149886727333, 691175.503730889642611, 691186.634326549596153, 691197.764936866355129, 691208.895561839686707, 691220.026201469474472, 691231.156855755485594, 691242.287524697603658, 691253.418208295363002, 691264.548906548647210, 691275.679619457223453, 691286.810347021091729, 691297.941089239786379, 691309.071846113190986, 691320.202617641189136, 691331.333403823431581, 691342.464204659569077, 691353.595020149601623, 691364.725850293296389, 691375.856695090420544, 691386.987554540741257, 691398.118428643909283, 691409.249317399924621, 691420.380220808554441, 691431.511138869449496, 691442.642071582493372, 691453.773018947453238, 691464.903980964096263, 691476.034957632189617, 691487.165948951733299, 691498.296954922028817, 691509.427975543309003, 691520.559010815224610, 691531.690060737542808, 691542.821125310030766, 691553.952204532572068, 691565.083298404584639, 691576.214406926417723, 691587.345530097489245, 691598.476667917799205, 691609.607820386881940, 691620.738987504621036, 691631.870169271016493, 691643.001365685486235, 691654.132576748030260, 691665.263802458532155, 691676.395042816526257, 691687.526297822012566, 691698.657567474641837, 691709.788851774064824, 691720.920150720514357, 691732.051464313291945, 691743.182792552630417, 691754.314135437947698, 691765.445492969127372, 691776.576865146053024, 691787.708251968375407, 691798.839653436094522, 691809.971069548744708, 691821.102500306325965, 691832.233945708372630, 691843.365405754884705, 691854.496880445512943, 691865.628369780140929, 691876.759873758535832, 691887.891392380581237, 691899.022925645811483, 691910.154473554342985, 691921.286036105593666, 691932.417613299563527, 691943.549205136019737, 691954.680811614613049, 691965.812432735343464, 691976.944068497978151, 691988.075718902167864, 691999.207383947563358, 692010.339063634397462, 692021.470757962088101, 692032.602466930635273, 692043.734190539573319, 692054.865928788902238, 692065.997681678389199, 692077.129449207568541, 692088.261231376673095, 692099.393028185120784, 692110.524839632911608, 692121.656665719579905, 692132.788506445242092, 692143.920361809316091, 692155.052231811918318, 692166.184116452699527, 692177.316015731426887, 692188.447929647983983, 692199.579858202137984, 692210.711801393423229, 692221.843759221839719, 692232.975731687154621, 692244.107718789251521, 692255.239720527664758, 692266.371736902510747, 692277.503767913440242, 692288.635813559987582, 692299.767873842152767, 692310.899948759702966, 692322.032038312521763, 692333.164142500376329, 692344.296261322801001, 692355.428394780028611, 692366.560542871244252, 692377.692705596797168, 692388.824882956221700, 692399.957074949285015, 692411.089281575987116, 692422.221502835745923, 692433.353738728561439, 692444.485989254200831, 692455.618254412547685, 692466.750534203252755, 692477.882828625966795, 692489.015137680806220, 692500.147461367538199, 692511.279799685580656, 692522.412152635050006, 692533.544520215597004, 692544.676902426988818, 692555.809299269225448, 692566.941710741841234, 692578.074136844719760, 692589.206577577628195, 692600.339032940333709, 692611.471502932719886, 692622.603987554553896, 692633.736486805486493, 692644.869000685401261, 692656.001529194065370, 692667.134072331362404, 692678.266630096826702, 692689.399202490574680, 692700.531789512140676, 692711.664391161408275, 692722.797007438144647, 692733.929638342116959, 692745.062283873208798, 692756.194944030954503, 692767.327618815586902, 692778.460308226523921, 692789.593012263532728, 692800.725730926613323, 692811.858464215532877, 692822.991212129942141, 692834.123974669608288, 692845.256751834531315, 692856.389543624245562, 692867.522350038634613, 692878.655171077582054, 692889.788006740738638, 692900.920857027987950, 692912.053721939097159, 692923.186601473833434, 692934.319495631963946, 692945.452404413255863, 692956.585327817476355, 692967.718265844625421, 692978.851218494237401, 692989.984185766195878, 693001.117167660384439, 693012.250164176453836, 693023.383175313938409, 693034.516201073187403, 693045.649241453618743, 693056.782296455116011, 693067.915366077562794, 693079.048450320609845, 693090.181549183907919, 693101.314662667457014, 693112.447790771140717, 693123.580933494609781, 693134.714090837514959, 693145.847262799856253, 693156.980449381284416, 693168.113650581566617, 693179.246866400702856, 693190.380096838227473, 693201.513341894024052, 693212.646601567976177, 693223.779875859851018, 693234.913164769066498, 693246.046468295971863, 693257.179786439985037, 693268.313119200989604, 693279.446466578869149, 693290.579828573158011, 693301.713205183972605, 693312.846596410847269, 693323.980002253665589, 693335.113422712194733, 693346.246857786201872, 693357.380307475570589, 693368.513771779951639, 693379.647250699112192, 693390.780744233052246, 693401.914252381422557, 693413.047775143990293, 693424.181312520639040, 693435.314864510903135, 693446.448431114898995, 693457.582012332160957, 693468.715608162689023, 693479.849218606133945, 693490.982843662262894, 693502.116483330843039, 693513.250137611874379, 693524.383806504891254, 693535.517490009660833, 693546.651188126183115, 693557.784900854225270, 693568.918628193554468, 693580.052370143821463, 693591.186126705026254, 693602.319897876470350, 693613.453683658502996, 693624.587484050658531, 693635.721299052936956, 693646.855128664756194, 693657.988972886116244, 693669.122831716900691, 693680.256705156643875, 693691.390593205345795, 693702.524495862773620, 693713.658413128578104, 693724.792345002642833, 693735.926291484851390, 693747.060252574505284, 693758.194228272070177, 693769.328218577080406, 693780.462223489186727, 693791.596243008272722, 693802.730277133989148, 693813.864325866336003, 693824.998389204964042, 693836.132467149756849, 693847.266559700365178, 693858.400666856789030, 693869.534788618679158, 693880.668924985686317, 693891.803075957810506, 693902.937241534702480, 693914.071421716245823, 693925.205616502324119, 693936.339825892471708, 693947.474049886572175, 693958.608288484509103, 693969.742541685933247, 693980.876809490728192, 693992.011091898544692, 694003.145388909382746, 694014.279700522893108, 694025.414026738959365, 694036.548367557115853, 694047.682722977478988, 694058.817092999699526, 694069.951477623428218, 694081.085876848665066, 694092.220290675177239, 694103.354719102615491, 694114.489162130630575, 694125.623619759455323, 694136.758091988624074, 694147.892578817903996, 694159.027080246945843, 694170.161596275866032, 694181.296126904198900, 694192.430672131944448, 694203.565231958753429, 694214.699806384276599, 694225.834395408513956, 694236.968999031232670, 694248.103617252199911, 694259.238250070950016, 694270.372897487715818, 694281.507559501915239, 694292.642236113664694, 694303.776927322498523, 694314.911633128300309, 694326.046353530837223, 694337.181088529760018, 694348.315838125068694, 694359.450602316414006, 694370.585381103679538, 694381.720174486632459, 694392.854982464923523, 694403.989805038552731, 694415.124642207170837, 694426.259493970661424, 694437.394360328791663, 694448.529241281212308, 694459.664136827806942, 694470.799046968459152, 694481.933971702586859, 694493.068911030422896, 694504.203864951618016, 694515.338833465939388, 694526.473816573154181, 694537.608814273145981, 694548.743826565216295, 694559.878853449947201, 694571.013894926523790, 694582.148950995062478, 694593.284021655097604, 694604.419106906512752, 694615.554206749191508, 694626.689321182784624, 694637.824450207292102, 694648.959593822248280, 694660.094752027536742, 694671.229924822924659, 694682.365112208295614, 694693.500314183183946, 694704.635530747822486, 694715.770761901745573, 694726.906007644603960, 694738.041267976281233, 694749.176542896660976, 694760.311832405510359, 694771.447136502363719, 694782.582455187453888, 694793.717788460082375, 694804.853136320598423, 694815.988498768303543, 694827.123875803197734, 694838.259267424931750, 694849.394673633389175, 694860.530094428337179, 694871.665529809775762, 694882.800979777122848, 694893.936444330378436, 694905.071923469309695, 694916.207417193683796, 694927.342925503267907, 694938.478448397945613, 694949.613985877367668, 694960.749537941417657, 694971.885104589862749, 694983.020685822470114, 694994.156281638774090, 695005.291892039240338, 695016.427517023053952, 695027.563156590098515, 695038.698810740374029, 695049.834479473647662, 695060.970162789220922, 695072.105860687559471, 695083.241573168081231, 695094.377300230669789, 695105.513041875092313, 695116.648798101115972, 695127.784568908624351, 695138.920354297035374, 695150.056154266698286, 695161.191968817031011, 695172.327797948033549, 695183.463641659240238, 695194.599499950651079, 695205.735372821800411, 695216.871260272921063, 695228.007162303314544, 695239.143078913213685, 695250.279010102036409, 695261.414955869666301, 695272.550916216103360, 695283.686891140765510, 695294.822880643769167, 695305.958884724765085, 695317.094903383520432, 695328.230936619802378, 695339.366984433610924, 695350.503046824480407, 695361.639123792294413, 695372.775215336820111, 695383.911321457824670, 695395.047442155191675, 695406.183577428688295, 695417.319727277965285, 695428.455891702906229, 695439.592070703394711, 695450.728264279197901, 695461.864472429850139, 695473.000695155467838, 695484.136932455468923, 695495.273184329969808, 695506.409450778621249, 695517.545731801423244, 695528.682027397793718, 695539.818337567849085, 695550.954662311123684, 695562.091001627501100, 695573.227355516632088, 695584.363723978749476, 695595.500107013271190, 695606.636504619964398, 695617.772916798945516, 695628.909343549516052, 695640.045784871908836, 695651.182240765541792, 695662.318711230414920, 695673.455196266295388, 695684.591695872950368, 695695.728210050263442, 695706.864738797885366, 695718.001282115466893, 695729.137840003240854, 695740.274412460625172, 695751.410999487619847, 695762.547601083875634, 695773.684217249159701, 695784.820847983355634, 695795.957493285997771, 695807.094153157318942, 695818.230827596853487, 695829.367516604368575, 695840.504220179747790, 695851.640938322641887, 695862.777671033050865, 695873.914418310392648, 695885.051180154783651, 695896.187956566107459, 695907.324747543781996, 695918.461553087923676, 695929.598373198066838, 695940.735207874095067, 695951.872057115775533, 695963.008920923108235, 695974.145799295627512, 695985.282692233216949, 695996.419599735643715, 696007.556521802674979, 696018.693458433961496, 696029.830409629619680, 696040.967375389183871, 696052.104355712654069, 696063.241350599564612, 696074.378360049915500, 696085.515384063357487, 696096.652422639774159, 696107.789475778816268, 696118.926543480483815, 696130.063625744427554, 696141.200722570414655, 696152.337833958328702, 696163.474959907704033, 696174.612100418773480, 696185.749255490954965, 696196.886425124132074, 696208.023609318188392, 696219.160808072774671, 696230.298021387890913, 696241.435249262955040, 696252.572491698083468, 696263.709748693043366, 696274.847020247485489, 696285.984306361177005, 696297.121607034117915, 696308.258922265842557, 696319.396252056350932, 696330.533596405293792, 696341.670955312438309, 696352.808328777784482, 696363.945716800866649, 696375.083119381684810, 696386.220536519656889, 696397.357968215132132, 696408.495414467412047, 696419.632875276613049, 696430.770350642269477, 696441.907840564381331, 696453.045345042599365, 696464.182864076574333, 696475.320397666539066, 696486.457945812027901, 696497.595508512575179, 696508.733085768413730, 696519.870677579077892, 696531.008283944334835, 696542.145904864068143, 696553.283540338161401, 696564.421190366148949, 696575.558854947914369, 696586.696534083457664, 696597.834227772196755, 696608.971936014248058, 696620.109658809262328, 696631.247396157006733, 696642.385148057248443, 696653.522914509987459, 696664.660695514758117, 696675.798491071211174, 696686.936301179695874, 696698.074125839513727, 696709.211965050548315, 696720.349818812916055, 696731.487687125918455, 696742.625569989555515, 696753.763467403594404, 696764.901379367918707, 696776.039305882295594, 696787.177246946375817, 696798.315202560042962, 696809.453172723180614, 696820.591157435323112, 696831.729156696586870, 696842.867170506389812, 696854.005198864964768, 696865.143241771729663, 696876.281299226451665, 696887.419371229247190, 696898.557457779534161, 696909.695558877428994, 696920.833674522582442, 696931.971804714761674, 696943.109949453733861, 696954.248108739382587, 696965.386282571242191, 696976.524470949545503, 696987.662673873826861, 696998.800891343737021, 697009.939123359275982, 697021.077369920094498, 697032.215631026308984, 697043.353906677104533, 697054.492196872713976, 697065.630501612904482, 697076.768820897326805, 697087.907154725980945, 697099.045503098284826, 697110.183866014354862, 697121.322243473841809, 697132.460635476512834, 697143.599042022251524, 697154.737463110825047, 697165.875898742000572, 697177.014348915661685, 697188.152813631226309, 697199.291292889043689, 697210.429786688531749, 697221.568295029457659, 697232.706817911821418, 697243.845355335273780, 697254.983907299581915, 697266.122473804512993, 697277.261054849950597, 697288.399650435894728, 697299.538260561763309, 697310.676885227439925, 697321.815524432808161, 697332.954178177635185, 697344.092846461455338, 697355.231529284501448, 697366.370226646307856, 697377.508938546641730, 697388.647664985503070, 697399.786405962309800, 697410.925161477061920, 697422.063931529643014, 697433.202716119820252, 697444.341515247244388, 697455.480328911799006, 697466.619157113134861, 697477.757999851251952, 697488.896857125801034, 697500.035728936549276, 697511.174615283496678, 697522.313516166177578, 697533.452431584591977, 697544.591361538274214, 697555.730306027107872, 697566.869265051092952, 697578.008238609763794, 697589.147226703120396, 697600.286229330697097, 697611.425246492493898, 697622.564278188161552, 697633.703324417467229, 697644.842385180410929, 697655.981460476643406, 697667.120550306048244, 697678.259654668276198, 697689.398773563094437, 697700.537906990502961, 697711.677054949919693, 697722.816217441461049, 697733.955394465010613, 697745.094586020102724, 697756.233792106504552, 697767.373012724099681, 697778.512247872538865, 697789.651497551938519, 697800.790761761832982, 697811.930040502105840, 697823.069333772524260, 697834.208641572855413, 697845.347963902866468, 697856.487300762324594, 697867.626652151113376, 697878.766018069116399, 697889.905398515751585, 697901.044793491251767, 697912.184202995034866, 697923.323627026984468, 697934.463065587100573, 697945.602518675033934, 697956.741986290551722, 697967.881468433537520, 697979.020965103525668, 697990.160476300632581, 698001.300002024276182, 698012.439542274572887, 698023.579097051289864, 698034.718666354077868, 698045.858250182820484, 698056.997848537168466, 698068.137461417121813, 698079.277088822098449, 698090.416730752331205, 698101.556387207470834, 698112.696058187284507, 698123.835743691422977, 698134.975443719769828, 698146.115158271975815, 698157.254887348273769, 698168.394630948081613, 698179.534389071282931, 698190.674161717528477, 698201.813948886934668, 698212.953750578919426, 698224.093566793482751, 698235.233397530391812, 698246.373242789413780, 698257.513102570199408, 698268.652976872865111, 698279.792865696945228, 698290.932769042439759, 698302.072686908650212, 698313.212619295925833, 698324.352566203917377, 698335.492527632275596, 698346.632503580767661, 698357.772494049393572, 698368.912499037571251, 698380.052518545533530, 698391.192552572814748, 698402.332601119298488, 698413.472664184751920, 698424.612741768942215, 698435.752833871636540, 698446.892940492485650, 698458.033061631605960, 698469.173197288648225, 698480.313347463263199, 698491.453512155450881, 698502.593691364978440, 698513.733885091263801, 698524.874093334656209, 698536.014316094573587, 698547.154553371015936, 698558.294805163634010, 698569.435071472194977, 698580.575352296582423, 698591.715647636447102, 698602.855957491789013, 698613.996281862258911, 698625.136620747740380, 698636.276974147884175, 698647.417342062690295, 698658.557724491693079, 698669.698121434776112, 698680.838532891706564, 698691.978958862484433, 698703.119399346527644, 698714.259854343952611, 698725.400323854526505, 698736.540807877783664, 698747.681306413607672, 698758.821819462114945, 698769.962347022606991, 698781.102889095200226, 698792.243445679545403, 698803.384016775526106, 698814.524602382676676, 698825.665202501229942, 698836.805817130603828, 698847.946446270798333, 698859.087089921464212, 698870.227748082368635, 698881.368420753511600, 698892.509107934311032, 698903.649809624999762, 698914.790525825112127, 698925.931256534531713, 698937.072001753025688, 698948.212761480244808, 698959.353535715956241, 698970.494324460392818, 698981.635127712972462, 698992.775945473462343, 699003.916777741746046, 699015.057624517707154, 699026.198485800996423, 699037.339361591264606, 699048.480251888511702, 699059.621156692737713, 699070.762076003244147, 699081.903009820263833, 699093.043958143214695, 699104.184920972096734, 699115.325898306793533, 699126.466890146723017, 699137.607896492234431, 699148.748917342629284, 699159.889952697791159, 699171.031002557720058, 699182.172066921833903, 699193.313145790249109, 699204.454239162849262, 699215.595347039168701, 699226.736469418974593, 699237.877606302266940, 699249.018757688580081, 699260.159923577797599, 699271.301103969919495, 699282.442298864596523, 699293.583508261479437, 699304.724732160568237, 699315.865970561397262, 699327.007223463966511, 699338.148490868043154, 699349.289772773394361, 699360.431069179787301, 699371.572380086989142, 699382.713705494883470, 699393.855045403237455, 699404.996399811701849, 699416.137768720160238, 699427.279152128496207, 699438.420550036476925, 699449.561962443753146, 699460.703389350208454, 699471.844830755493604, 699482.986286659608595, 699494.127757062320597, 699505.269241963163950, 699516.410741362371482, 699527.552255259361118, 699538.693783654132858, 699549.835326546104625, 699560.976883935509250, 699572.118455821997486, 699583.260042205336504, 699594.401643085409887, 699605.543258461868390, 699616.684888334479183, 699627.826532703009434, 699638.968191567459144, 699650.109864927595481, 699661.251552782952785, 699672.393255133531056, 699683.534971979213879, 699694.676703319419175, 699705.818449154146947, 699716.960209483280778, 699728.101984306587838, 699739.243773623835295, 699750.385577434790321, 699761.527395739220083, 699772.669228536658920, 699783.811075827339664, 699794.952937611029483, 699806.094813887262717, 699817.236704655922949, 699828.378609916893765, 699839.520529669825919, 699850.662463914370164, 699861.804412650759332, 699872.946375878411345, 699884.088353597442620, 699895.230345807271078, 699906.372352507896721, 699917.514373699086718, 699928.656409380491823, 699939.798459552228451, 699950.940524213714525, 699962.082603364950046, 699973.224697005818598, 699984.366805135738105, 699995.508927754824981, 700006.651064862846397, 700017.793216459453106, 700028.935382544645108, 700040.077563117956743, 700051.219758179271594, 700062.361967728589661, 700073.504191765212454, 700084.646430289489217, 700095.788683300954290, 700106.930950799258426, 700118.073232784518041, 700129.215529256151058, 700140.357840214273892, 700151.500165658304468, 700162.642505588475615, 700173.784860004321672, 700184.927228905609809, 700196.069612292340025, 700207.212010164163075, 700218.354422520613298, 700229.496849361923523, 700240.639290687744506, 700251.781746497726999, 700262.924216791871004, 700274.066701569594443, 700285.209200831246562, 700296.351714576128870, 700307.494242804241367, 700318.636785515351221, 700329.779342709225602, 700340.921914385748096, 700352.064500544569455, 700363.207101185573265, 700374.349716308526695, 700385.492345913080499, 700396.634989999351092, 700407.777648566872813, 700418.920321615412831, 700430.063009144971147, 700441.205711155198514, 700452.348427645862103, 700463.491158616845496, 700474.633904067915864, 700485.776663998607546, 700496.919438409153372, 700508.062227299204096, 700519.205030668177642, 700530.347848516306840, 700541.490680843242444, 700552.633527648751624, 700563.776388932834379, 700574.919264694908634, 700586.062154934974387, 700597.205059652565978, 700608.347978847916238, 700619.490912520675920, 700630.633860670495778, 700641.776823297142982, 700652.919800400617532, 700664.062791980337352, 700675.205798036535271, 700686.348818568862043, 700697.491853577084839, 700708.634903060854413, 700719.777967020054348, 700730.921045454568230, 700742.064138364046812, 700753.207245748373680, 700764.350367607199587, 700775.493503940524533, 700786.636654747999273, 700797.779820029507391, 700808.922999784932472, 700820.066194013576023, 700831.209402715787292, 700842.352625891100615, 700853.495863539399579, 700864.639115660334937, 700875.782382253790274, 700886.925663319532759, 700898.068958857445978, 700909.212268867064267, 700920.355593348620459, 700931.498932301532477, 700942.642285725683905, 700953.785653620841913, 700964.929035986773670, 700976.072432823479176, 700987.215844130492769, 700998.359269907814451, 701009.502710155211389, 701020.646164872334339, 701031.789634058950469, 701042.933117714943364, 701054.076615840196609, 701065.220128434244543, 701076.363655497203581, 701087.507197028608061, 701098.650753028574400, 701109.794323496171273, 701120.937908432097174, 701132.081507835537195, 701143.225121706491336, 701154.368750044843182, 701165.512392850127071, 701176.656050122343004, 701187.799721861025319, 701198.943408066290431, 701210.087108737905510, 701221.230823875288479, 701232.374553478788584, 701243.518297547707334, 701254.662056082044728, 701265.805829081451520, 701276.949616545927711, 701288.093418475240469, 701299.237234869156964, 701310.381065727211535, 701321.524911049637012, 701332.668770835734904, 701343.812645085738041, 701354.956533799297176, 701366.100436975946650, 701377.244354615919292, 701388.388286718633026, 701399.532233284087852, 701410.676194311934523, 701421.820169802173041, 701432.964159754337743, 701444.108164168428630, 701455.252183044096455, 701466.396216381224804, 701477.540264179464430, 701488.684326438815333, 701499.828403158928268, 701510.972494339453988, 701522.116599980625324, 701533.260720081860200, 701544.404854643042199, 701555.549003663822077, 701566.693167144432664, 701577.837345084175467, 701588.981537483050488, 701600.125744341057725, 701611.269965657498688, 701622.414201432489790, 701633.558451665798202, 701644.702716357074678, 701655.846995506435633, 701666.991289113415405, 701678.135597177664749, 701689.279919699416496, 701700.424256677972153, 701711.568608113331720, 701722.712974005495198, 701733.857354353880510, 701745.001749158604071, 701756.146158419200219, 701767.290582135668956, 701778.435020307544619, 701789.579472934827209, 701800.723940017400309, 701811.868421554914676, 701823.012917547137477, 701834.157427993719466, 701845.301952894777060, 701856.446492249844596, 701867.591046058805659, 701878.735614321543835, 701889.880197037593462, 701901.024794207070954, 701912.169405829627067, 701923.314031904912554, 701934.458672432927415, 701945.603327413322404, 701956.747996845981106, 701967.892680730670691, 701979.037379067158327, 701990.182091855211183, 702001.326819094596431, 702012.471560785197653, 702023.616316926898435, 702034.761087519233115, 702045.905872562201694, 702057.050672055454925, 702068.195485998876393, 702079.340314392116852, 702090.485157235176302, 702101.630014527821913, 702112.774886269588023, 702123.919772460591048, 702135.064673100481741, 702146.209588189027272, 702157.354517725878395, 702168.499461711151525, 702179.644420144497417, 702190.789393025566824, 702201.934380354243331, 702213.079382130526938, 702224.224398353835568, 702235.369429024169222, 702246.514474141411483, 702257.659533705213107, 702268.804607715341263, 702279.949696171679534, 702291.094799073995091, 702302.239916421938688, 702313.385048215626739, 702324.530194454477169, 702335.675355138606392, 702346.820530267548747, 702357.965719841304235, 702369.110923859407194, 702380.256142321741208, 702391.401375228422694, 702402.546622578753158, 702413.691884372849017, 702424.837160610477440, 702435.982451291172765, 702447.127756415167823, 702458.273075981764123, 702469.418409991078079, 702480.563758442760445, 702491.709121336694807, 702502.854498672531918, 702513.999890450271778, 702525.145296669448726, 702536.290717330179177, 702547.436152431881055, 702558.581601974787191, 702569.727065958315507, 702580.872544382349588, 702592.018037246773019, 702603.163544551120140, 702614.309066295507364, 702625.454602479701862, 702636.600153103354387, 702647.745718166232109, 702658.891297668335028, 702670.036891609081067, 702681.182499988470227, 702692.328122806502506, 702703.473760062712245, 702714.619411756983027, 702725.765077889082022, 702736.910758458776399, 702748.056453465716913, 702759.202162910019979, 702770.347886791336350, 702781.493625109433196, 702792.639377864077687, 702803.785145055153407, 702814.930926682311110, 702826.076722745317966, 702837.222533244173974, 702848.368358178646304, 702859.514197548385710, 702870.660051353275776, 702881.805919593083672, 702892.951802267576568, 702904.097699376288801, 702915.243610919569619, 702926.389536896953359, 702937.535477308207192, 702948.681432152981870, 702959.827401431393810, 702970.973385142744519, 702982.119383287383243, 702993.265395864727907, 703004.411422874778509, 703015.557464317185804, 703026.703520191833377, 703037.849590498488396, 703048.995675236801617, 703060.141774406773038, 703071.287888008169830, 703082.434016040642746, 703093.580158504075371, 703104.726315398351289, 703115.872486723121256, 703127.018672478036024, 703138.164872663328424, 703149.311087278299965, 703160.457316323183477, 703171.603559797513299, 703182.749817701056600, 703193.896090033813380, 703205.042376795201562, 703216.188677985337563, 703227.334993603988551, 703238.481323650921695, 703249.627668125787750, 703260.774027028586715, 703271.920400358736515, 703283.066788116586395, 703294.213190301670693, 703305.359606913640164, 703316.506037952378392, 703327.652483417652547, 703338.798943309462629, 703349.945417627226561, 703361.091906371177174, 703372.238409540615976, 703383.384927135775797, 703394.531459156307392, 703405.678005601861514, 703416.824566472438164, 703427.971141767455265, 703439.117731487145647, 703450.264335631160066, 703461.410954199265689, 703472.557587191229686, 703483.704234606819227, 703494.850896445801482, 703505.997572708060034, 703517.144263393478468, 703528.290968501707539, 703539.437688032514416, 703550.584421985666268, 703561.731170361279510, 703572.877933158539236, 703584.024710377911106, 703595.171502018580213, 703606.318308080895804, 703617.465128564275801, 703628.611963468603790, 703639.758812793763354, 703650.905676539288834, 703662.052554705296643, 703673.199447291321121, 703684.346354297478683, 703695.493275723187253, 703706.640211568446830, 703717.787161833140999, 703728.934126516571268, 703740.081105619203299, 703751.228099140338600, 703762.375107079977170, 703773.522129438002594, 703784.669166213949211, 703795.816217407584190, 703806.963283019140363, 703818.110363048035651, 703829.257457494153641, 703840.404566357261501, 703851.551689637126401, 703862.698827333864756, 703873.845979446545243, 703884.993145975633524, 703896.140326920780353, 703907.287522281520069, 703918.434732057969086, 703929.581956249778159, 703940.729194856598042, 703951.876447878312320, 703963.023715314804576, 703974.170997165958397, 703985.318293431308120, 703996.465604110737331, 704007.612929204129614, 704018.760268711135723, 704029.907622631639242, 704041.054990965407342, 704052.202373712323606, 704063.349770872038789, 704074.497182444436476, 704085.644608429283835, 704096.792048826231621, 704107.939503635279834, 704119.086972856195644, 704130.234456488746218, 704141.381954532698728, 704152.529466987703927, 704163.676993853761815, 704174.824535130523145, 704185.972090817987919, 704197.119660915806890, 704208.267245423747227, 704219.414844341692515, 704230.562457669409923, 704241.710085406550206, 704252.857727552880533, 704264.005384108517319, 704275.153055073111318, 704286.300740446313284, 704297.448440228006802, 704308.596154418075457, 704319.743883016170003, 704330.891626022174023, 704342.039383435738273, 704353.187155256862752, 704364.334941485081799, 704375.482742120628245, 704386.630557162803598, 704397.778386611607857, 704408.926230466808192, 704420.074088728288189, 704431.221961395815015, 704442.369848469039425, 704453.517749947961420, 704464.665665832231753, 704475.813596121617593, 704486.961540815886110, 704498.109499915153719, 704509.257473418838345, 704520.405461326823570, 704531.553463638992980, 704542.701480355113745, 704553.849511474836618, 704564.997556998278014, 704576.145616924855858, 704587.293691254686564, 704598.441779987420887, 704609.589883122593164, 704620.738000660319813, 704631.886132600484416, 704643.034278942621313, 704654.182439686614089, 704665.330614832229912, 704676.478804379352368, 704687.627008327748626, 704698.775226676953025, 704709.923459427081980, 704721.071706577902660, 704732.219968129065819, 704743.368244080455042, 704754.516534431837499, 704765.664839182980359, 704776.813158333534375, 704787.961491883615963, 704799.109839832875878, 704810.258202181081288, 704821.406578927999362, 704832.554970073513687, 704843.703375617275015, 704854.851795559050515, 704866.000229899073020, 704877.148678636527620, 704888.297141771530733, 704899.445619303965941, 704910.594111233367585, 704921.742617559502833, 704932.891138282488100, 704944.039673401974142, 704955.188222917728126, 704966.336786829517223, 704977.485365137108602, 704988.633957840385847, 704999.782564938883297, 705010.931186432833783, 705022.079822321655229, 705033.228472605347633, 705044.377137283678167, 705055.525816356413998, 705066.674509823322296, 705077.823217684053816, 705088.971939938608557, 705100.120676586753689, 705111.269427628372796, 705122.418193063116632, 705133.566972890752368, 705144.715767110930756, 705155.864575723768212, 705167.013398729031906, 705178.162236126372591, 705189.311087915673852, 705200.459954096586443, 705211.608834668993950, 705222.757729632547125, 705233.906638987362385, 705245.055562733090483, 705256.204500869382173, 705267.353453396237455, 705278.502420313307084, 705289.651401620241813, 705300.800397317041643, 705311.949407403590158, 705323.098431879538111, 705334.247470744769089, 705345.396523998933844, 705356.545591641799547, 705367.694673673366196, 705378.843770093284547, 705389.992880901321769, 705401.142006097477861, 705412.291145681403577, 705423.440299652749673, 705434.589468011632562, 705445.738650757470168, 705456.887847890378907, 705468.037059409893118, 705479.186285316012800, 705490.335525608505122, 705501.484780286904424, 705512.634049351327121, 705523.783332801423967, 705534.932630636962131, 705546.081942857941613, 705557.231269463896751, 705568.380610454711132, 705579.529965830268338, 705590.679335590219125, 705601.828719734214246, 705612.978118262486532, 705624.127531174570322, 705635.276958470349200, 705646.426400149473920, 705657.575856211828068, 705668.725326657178812, 705679.874811485176906, 705691.024310695822351, 705702.173824288882315, 705713.323352264240384, 705724.472894621547312, 705735.622451360453852, 705746.772022480960004, 705757.921607982949354, 705769.071207865956239, 705780.220822129980661, 705791.370450774673373, 705802.520093799917959, 705813.669751205598004, 705824.819422991131432, 705835.969109156751074, 705847.118809701991268, 705858.268524626735598, 705869.418253930867650, 705880.567997614038177, 705891.717755676014349, 705902.867528116563335, 705914.017314935685135, 705925.167116133030504, 705936.316931708483025, 705947.466761661693454, 705958.616605992545374, 705969.766464700805955, 705980.916337786242366, 705992.066225248738192, 706003.216127088060603, 706014.366043303976767, 706025.515973896253854, 706036.665918864775449, 706047.815878209308721, 706058.965851929271594, 706070.115840025129728, 706081.265842496184632, 706092.415859342669137, 706103.565890563768335, 706114.715936159831472, 706125.865996130160056, 706137.016070474986918, 706148.166159193846397, 706159.316262286854908, 706170.466379753313959, 706181.616511593339965, 706192.766657806700096, 706203.916818392928690, 706215.066993352258578, 706226.217182684224099, 706237.367386388592422, 706248.517604465363547, 706259.667836913955398, 706270.818083734600805, 706281.968344926601276, 706293.118620490306057, 706304.268910425249487, 706315.419214731082320, 706326.569533407804556, 706337.719866455066949, 706348.870213872636668, 706360.020575660397299, 706371.170951818348840, 706382.321342345909216, 706393.471747243078426, 706404.622166509623639, 706415.772600145428441, 706426.923048149910755, 706438.073510523419827, 706449.223987265489995, 706460.374478375655599, 706471.524983854149468, 706482.675503700505942, 706493.826037914492190, 706504.976586495875381, 706516.127149444771931, 706527.277726760832593, 706538.428318443591706, 706549.578924493049271, 706560.729544909205288, 706571.880179691361263, 706583.030828839633614, 706594.181492353789508, 706605.332170233596116, 706616.482862478820607, 706627.633569089346565, 706638.784290064941160, 706649.935025405255146, 706661.085775110055692, 706672.236539179575630, 706683.387317613116466, 706694.538110410678200, 706705.688917572144419, 706716.839739097049460, 706727.990574985276908, 706739.141425236826763, 706750.292289851233363, 706761.443168828496709, 706772.594062168383971, 706783.744969870429486, 706794.895891934749670, 706806.046828360878862, 706817.197779148817062, 706828.348744298331439, 706839.499723809189163, 706850.650717680924572, 706861.801725913886912, 706872.952748507377692, 706884.103785461164080, 706895.254836775478907, 706906.405902449856512, 706917.556982484064065, 706928.708076877985150, 706939.859185631270520, 706951.010308744036593, 706962.161446215468459, 706973.312598045915365, 706984.463764235144481, 706995.614944782690145, 707006.766139688552357, 707017.917348952265456, 707029.068572573945858, 707040.219810553011484, 707051.371062889695168, 707062.522329583531246, 707073.673610634286888, 707084.824906041845679, 707095.976215806091204, 707107.127539926324971, 707118.278878403129056, 707129.430231235688552, 707140.581598424119875, 707151.732979968073778, 707162.884375867433846, 707174.035786121850833, 707185.187210730975494, 707196.338649695040658, 707207.490103013580665, 707218.641570686479099, 707229.793052713386714, 707240.944549094303511, 707252.096059828880243, 707263.247584916884080, 707274.399124358082190, 707285.550678152474575, 707296.702246299711987, 707307.853828799678013, 707319.005425652023405, 707330.157036856631748, 707341.308662413153797, 707352.460302321589552, 707363.611956581822596, 707374.763625193387270, 707385.915308156167157, 707397.067005469813012, 707408.218717134441249, 707419.370443149586208, 707430.522183515131474, 707441.673938230844215, 707452.825707296608016, 707463.977490712190047, 707475.129288477241062, 707486.281100591644645, 707497.432927055167966, 707508.584767867694609, 707519.736623028991744, 707530.888492538942955, 707542.040376396966167, 707553.192274603410624, 707564.344187157345004, 707575.496114059467800, 707586.648055308964103, 707597.800010905717500, 707608.951980849495158, 707620.103965140297078, 707631.255963777657598, 707642.407976761460304, 707653.560004091705196, 707664.712045768043026, 707675.864101790124550, 707687.016172157949768, 707698.168256871285848, 707709.320355929667130, 707720.472469333093613, 707731.624597081448883, 707742.776739174383692, 707753.928895612014458, 707765.081066393642686, 707776.233251519268379, 707787.385450988542289, 707798.537664801580831, 707809.689892958034761, 707820.842135457671247, 707831.994392300373875, 707843.146663485793397, 707854.298949013813399, 707865.451248883968219, 707876.603563096490689, 707887.755891650915146, 707898.908234547241591, 707910.060591785004362, 707921.212963364087045, 707932.365349284256808, 707943.517749545280822, 707954.670164147275500, 707965.822593089658767, 707976.975036372314207, 707988.127493995125405, 707999.279965957859531, 708010.432452260167338, 708021.584952902048826, 708032.737467883154750, 708043.889997203485109, 708055.042540862574242, 708066.195098860305734, 708077.347671196563169, 708088.500257871113718, 708099.652858883491717, 708110.805474233813584, 708121.958103921846487, 708133.110747947357595, 708144.263406309997663, 708155.416079009766690, 708166.568766046082601, 708177.721467419294640, 708188.874183128820732, 708200.026913174428046, 708211.179657556232996, 708222.332416273769923, 708233.485189326805994, 708244.637976715224795, 708255.790778438793495, 708266.943594497395679, 708278.096424890798517, 708289.249269618652761, 708300.402128680958413, 708311.555002077366225, 708322.707889807526954, 708333.860791871673428, 708345.013708269223571, 708356.166639000177383, 708367.319584064185619, 708378.472543461131863, 708389.625517190783285, 708400.778505252790637, 708411.931507647386752, 708423.084524373873137, 708434.237555432366207, 708445.390600822400302, 708456.543660543859005, 708467.696734596742317, 708478.849822980584577, 708490.002925695385784, 708501.156042740796693, 708512.309174116584472, 708523.462319822632708, 708534.615479858824983, 708545.768654224695638, 708556.921842920244671, 708568.075045945239253, 708579.228263299446553, 708590.381494982633740, 708601.534740994684398, 708612.688001335365698, 708623.841276004328392, 708634.994565001456067, 708646.147868326632306, 708657.301185979624279, 708668.454517960199155, 708679.607864268007688, 708690.761224903166294, 708701.914599865092896, 708713.067989153787494, 708724.221392769017257, 708735.374810710665770, 708746.528242978500202, 708757.681689572287723, 708768.835150491679087, 708779.988625736557879, 708791.142115306807682, 708802.295619202195667, 708813.449137422489002, 708824.602669967338443, 708835.756216836860403, 708846.909778030705638, 708858.063353548408486, 708869.216943390201777, 708880.370547555503435, 708891.524166044313461, 708902.677798856515437, 708913.831445991643704, 708924.985107449581847, 708936.138783230329864, 708947.292473333422095, 708958.446177758742124, 708969.599896506173536, 708980.753629575367086, 708991.907376966206357, 709003.061138678342104, 709014.214914711774327, 709025.368705066270195, 709036.522509741480462, 709047.676328737288713, 709058.830162053578533, 709069.984009690000676, 709081.137871646322310, 709092.291747922543436, 709103.445638518198393, 709114.599543433287181, 709125.753462667576969, 709136.907396220951341, 709148.061344092944637, 709159.215306283207610, 709170.369282792205922, 709181.523273619124666, 709192.677278764196672, 709203.831298226723447, 709214.985332007054240, 709226.139380104490556, 709237.293442518915981, 709248.447519250446931, 709259.601610298617743, 709270.755715663428418, 709281.909835344296880, 709293.063969341339543, 709304.218117654323578, 709315.372280282899737, 709326.526457226951607, 709337.680648486362770, 709348.834854060783982, 709359.989073950098827, 709371.143308154074475, 709382.297556672245264, 709393.451819504844025, 709404.606096651521511, 709415.760388112044893, 709426.914693886181340, 709438.069013973581605, 709449.223348374362104, 709460.377697088057175, 709471.532060114666820, 709482.686437453841791, 709493.840829105349258, 709504.995235069189221, 709516.149655344779603, 709527.304089932353236, 709538.458538831328042, 709549.613002041820437, 709560.767479563481174, 709571.921971396077424, 709583.076477539376356, 709594.230997993377969, 709605.385532757616602, 709616.540081831975840, 709627.694645216222852, 709638.849222910241224, 709650.003814914030954, 709661.158421226893552, 709672.313041848945431, 709683.467676779953763, 709694.622326019569300, 709705.776989567675628, 709716.931667424156331, 709728.086359588778578, 709739.241066061193123, 709750.395786841399968, 709761.550521928933449, 709772.705271323793568, 709783.860035025863908, 709795.014813034678809, 709806.169605350238271, 709817.324411972193047, 709828.479232900426723, 709839.634068134590052, 709850.788917674683034, 709861.943781520589255, 709873.098659671726637, 709884.253552128211595, 709895.408458889578469, 709906.563379955943674, 709917.718315326725133, 709928.873265002039261, 709940.028228981536813, 709951.183207264984958, 709962.338199852500111, 709973.493206743267365, 709984.648227937635966, 709995.803263435023837, 710006.958313235547394, 710018.113377338624559, 710029.268455744488165, 710040.423548452672549, 710051.578655463061295, 710062.733776775421575, 710073.888912389287725, 710085.044062304892577, 710096.199226521886885, 710107.354405039921403, 710118.509597858996131, 710129.664804978645407, 710140.820026398869231, 710151.975262119551189, 710163.130512140109204, 710174.285776460776106, 710185.441055081086233, 710196.596348000923172, 710207.751655220054090, 710218.906976738246158, 710230.062312555382960, 710241.217662671231665, 710252.373027085443027, 710263.528405798017047, 710274.683798808604479, 710285.839206117205322, 710296.994627723237500, 710308.150063626817428, 710319.305513827712275, 710330.460978325689211, 710341.616457120398991, 710352.771950211841613, 710363.927457599667832, 710375.082979283644818, 710386.238515263772570, 710397.394065539701842, 710408.549630111199804, 710419.705208978266455, 710430.860802140436135, 710442.016409597592428, 710453.172031349386089, 710464.327667395933531, 710475.483317737001926, 710486.638982372125611, 710497.794661301304586, 710508.950354524189606, 710520.106062040780671, 710531.261783850495704, 710542.417519953567535, 710553.573270349530503, 710564.729035038268194, 710575.884814019547775, 710587.040607293252833, 710598.196414859034121, 710609.352236716775224, 710620.508072866243310, 710631.663923307321966, 710642.819788039661944, 710653.975667063146830, 710665.131560377427377, 710676.287467982503586, 710687.443389878142625, 710698.599326063995250, 710709.755276540061459, 710720.911241305992007, 710732.067220361670479, 710743.223213706747629, 710754.379221341107041, 710765.535243264515884, 710776.691279476974159, 710787.847329978016205, 710799.003394767525606, 710810.159473845385946, 710821.315567211247981, 710832.471674864762463, 710843.627796806162223, 710854.783933034865186, 710865.940083550871350, 710877.096248354064301, 710888.252427443978377, 710899.408620820613578, 710910.564828483387828, 710921.721050432533957, 710932.877286667819135, 710944.033537188894115, 710955.189801995526068, 710966.346081087714992, 710977.502374464878812, 710988.658682127133943, 710999.815004074131139, 711010.971340305753984, 711022.127690821886063, 711033.284055622061715, 711044.440434706280939, 711055.596828074310906, 711066.753235725685954, 711077.909657660638914, 711089.066093878820539, 711100.222544379765168, 711111.379009163589217, 711122.535488229943439, 711133.691981578595005, 711144.848489209427498, 711156.005011122208089, 711167.161547316703945, 711178.318097792682238, 711189.474662550142966, 711200.631241588620469, 711211.787834907998331, 711222.944442508043721, 711234.101064388756640, 711245.257700549787842, 711256.414350990788080, 711267.571015711757354, 711278.727694712462835, 711289.884387992438860, 711301.041095551918261, 711312.197817390435375, 711323.354553507873788, 711334.511303904000670, 711345.668068578466773, 711356.824847531272098, 711367.981640762067400, 711379.138448270969093, 711390.295270057278685, 711401.452106121229008, 711412.608956462237984, 711423.765821080538444, 711434.922699975431897, 711446.079593147034757, 711457.236500595114194, 711468.393422319437377, 711479.550358319771476, 711490.707308595883660, 711501.864273147657514, 711513.021251974860206, 711524.178245077258907, 711535.335252454620786, 711546.492274106829427, 711557.649310033652000, 711568.806360234855674, 711579.963424710207619, 711591.120503459707834, 711602.277596482774243, 711613.434703779523261, 711624.591825349722058, 711635.748961193021387, 711646.906111309304833, 711658.063275698339567, 711669.220454359776340, 711680.377647293731570, 711691.534854499972425, 711702.692075978033245, 711713.849311727797613, 711725.006561749149114, 711736.163826041971333, 711747.321104605798610, 711758.478397440514527, 711769.635704546002671, 711780.793025922030210, 711791.950361568480730, 711803.107711485004984, 711814.265075671370141, 711825.422454127459787, 711836.579846852924675, 711847.737253847881220, 711858.894675111863762, 711870.052110644872300, 711881.209560446441174, 711892.367024516570382, 711903.524502854910679, 711914.681995461462066, 711925.839502335758880, 711936.997023477801122, 711948.154558887355961, 711959.312108564074151, 711970.469672507955693, 711981.627250718534924, 711992.784843195928261, 712003.942449939670041, 712015.100070949760266, 712026.257706225849688, 712037.415355767938308, 712048.573019575444050, 712059.730697648483329, 712070.888389986590482, 712082.046096589881927, 712093.203817458008416, 712104.361552590853535, 712115.519301988068037, 712126.677065649419092, 712137.834843574673869, 712148.992635763948783, 712160.150442216778174, 712171.308262932929210, 712182.466097912285477, 712193.623947154846974, 712204.781810659798793, 712215.939688427606598, 712227.097580457804725, 712238.255486750160344, 712249.413407304557040, 712260.571342120529152, 712271.729291198309511, 712282.887254537199624, 712294.045232137548737, 712305.203223998658359, 712316.361230120644905, 712327.519250503042713, 712338.677285145968199, 712349.835334048839286, 712360.993397211772390, 712372.151474634418264, 712383.309566316544078, 712394.467672258149832, 712405.625792458886281, 712416.783926918404177, 712427.942075636819936, 712439.100238613551483, 712450.258415848715231, 712461.416607341961935, 712472.574813093175180, 712483.733033102122135, 712494.891267368453555, 712506.049515892169438, 712517.207778672920540, 712528.366055710590445, 712539.524347004946321, 712550.682652555871755, 712561.840972363017499, 712572.999306426267140, 712584.157654745504260, 712595.316017320146784, 712606.474394150311127, 712617.632785235880874, 712628.791190576506779, 712639.949610172072425, 712651.108044022112153, 712662.266492126742378, 712673.424954485381022, 712684.583431098377332, 712695.741921965032816, 712706.900427085463889, 712718.058946459321305, 712729.217480086372234, 712740.376027966500260, 712751.534590099356137, 712762.693166484939866, 712773.851757122785784, 712785.010362013010308, 712796.168981155264191, 712807.327614549314603, 712818.486262194812298, 712829.644924091873690, 712840.803600240149535, 712851.962290639407001, 712863.120995289529674, 712874.279714190168306, 712885.438447341206484, 712896.597194742411375, 712907.755956393550150, 712918.914732294622809, 712930.073522445163690, 712941.232326845172793, 712952.391145494417287, 712963.549978392431512, 712974.708825539331883, 712985.867686934652738, 712997.026562578510493, 713008.185452470555902, 713019.344356610439718, 713030.503274998161942, 713041.662207633373328, 713052.821154515841044, 713063.980115645565093, 713075.139091022312641, 713086.298080645734444, 713097.457084515714087, 713108.616102632018737, 713119.775134994415566, 713130.934181602671742, 713142.093242456670851, 713153.252317556296475, 713164.411406901199371, 713175.570510491263121, 713186.729628326254897, 713197.888760405941866, 713209.047906729858369, 713220.207067298353650, 713231.366242110962048, 713242.525431167334318, 713253.684634467586875, 713264.843852011254057, 713276.003083798103034, 713287.162329828017391, 713298.321590100880712, 713309.480864616576582, 713320.640153374639340, 713331.799456374952570, 713342.958773617399856, 713354.118105101748370, 713365.277450827532448, 713376.436810794984922, 713387.596185003523715, 713398.755573453381658, 713409.914976143976673, 713421.074393075192347, 713432.233824246795848, 713443.393269658670761, 713454.552729310700670, 713465.712203202536330, 713476.871691333944909, 713488.031193704926409, 713499.190710315015167, 713510.350241164094768, 713521.509786252165213, 713532.669345578760840, 713543.828919143765233, 713554.988506947061978, 713566.148108988301829, 713577.307725267484784, 713588.467355784028769, 713599.627000538166612, 713610.786659529432654, 713621.946332757826895, 713633.106020222883672, 713644.265721924602985, 713655.425437862752005, 713666.585168036981486, 713677.744912447175011, 713688.904671093332581, 713700.064443974988535, 713711.224231092142873, 713722.384032444213517, 713733.543848031549715, 713744.703677853336558, 713755.863521909923293, 713767.023380200960673, 713778.183252725983039, 713789.343139484990388, 713800.503040477866307, 713811.662955704261549, 713822.822885163826868, 713833.982828856678680, 713845.142786782467738, 713856.302758941194043, 713867.462745332275517, 713878.622745955712162, 713889.782760811271146, 713900.942789898836054, 713912.102833218057640, 713923.262890768935904, 713934.422962551005185, 713945.583048564265482, 713956.743148808600381, 713967.903263283427805, 713979.063391988864169, 713990.223534924560227, 714001.383692090399563, 714012.543863486149348, 714023.704049111693166, 714034.864248966798186, 714046.024463050998747, 714057.184691364294849, 714068.344933906570077, 714079.505190677708015, 714090.665461677126586, 714101.825746904942207, 714112.986046360805631, 714124.146360044600442, 714135.306687956093810, 714146.467030095052905, 714157.627386461244896, 714168.787757054436952, 714179.948141874745488, 714191.108540921588428, 714202.268954194849357, 714213.429381694295444, 714224.589823420043103, 714235.750279371510260, 714246.910749548696913, 714258.071233951370232, 714269.231732579297386, 714280.392245432129130, 714291.552772510098293, 714302.713313812506385, 714313.873869339469820, 714325.034439090522937, 714336.195023065665737, 714347.355621264781803, 714358.516233687289059, 714369.676860333536752, 714380.837501202709973, 714391.998156295157969, 714403.158825610415079, 714414.319509148248471, 714425.480206908541732, 714436.640918890829198, 714447.801645095460117, 714458.962385521619581, 714470.123140169656835, 714481.283909038989805, 714492.444692129502073, 714503.605489441077225, 714514.766300973366015, 714525.927126726368442, 714537.087966699735261, 714548.248820893233642, 714559.409689306979999, 714570.570571940275840, 714581.731468793237582, 714592.892379865515977, 714604.053305156994611, 714615.214244667557068, 714626.375198396854103, 714637.536166344885714, 714648.697148511069827, 714659.858144895522855, 714671.019155497895554, 714682.180180318071507, 714693.341219355817884, 714704.502272611018270, 714715.663340083207004, 714726.824421772616915, 714737.985517678549513, 714749.146627801121213, 714760.307752139982767, 714771.468890695134178, 714782.630043466226198, 714793.791210453142412, 714804.952391655533575, 714816.113587073166855, 714827.274796705925837, 714838.436020553810522, 714849.597258616355248, 714860.758510893443599, 714871.919777384842746, 714883.081058090436272, 714894.242353009991348, 714905.403662143042311, 714916.564985489821993, 714927.726323049864732, 714938.887674823170528, 714950.049040809273720, 714961.210421008174308, 714972.371815419523045, 714983.533224043203518, 714994.694646878866479, 715005.856083926744759, 715017.017535186139867, 715028.179000657168217, 715039.340480339364149, 715050.501974232611246, 715061.663482336909510, 715072.825004651793279, 715083.986541177378967, 715095.148091913084500, 715106.309656859026290, 715117.471236014738679, 715128.632829380105250, 715139.794436955009587, 715150.956058739335276, 715162.117694732616656, 715173.279344934737310, 715184.441009345813654, 715195.602687965030782, 715206.764380792621523, 715217.926087828353047, 715229.087809071992524, 715240.249544523307122, 715251.411294182064012, 715262.573058048030362, 715273.734836121206172, 715284.896628401009366, 715296.058434887556359, 715307.220255580730736, 715318.382090479950421, 715329.543939585448243, 715340.705802896642126, 715351.867680413648486, 715363.029572135768831, 715374.191478063352406, 715385.353398196166381, 715396.515332533628680, 715407.677281075739302, 715418.839243822381832, 715430.001220773207024, 715441.163211928098463, 715452.325217286823317, 715463.487236849148758, 715474.649270614958368, 715485.811318584019318, 715496.973380755982362, 715508.135457130963914, 715519.297547708381899, 715530.459652488352731, 715541.621771470410749, 715552.783904654788785, 715563.946052040671930, 715575.108213628293015, 715586.270389417419210, 715597.432579407701269, 715608.594783599022776, 715619.757001991034485, 715630.919234583852813, 715642.081481376895681, 715653.243742370279506, 715664.406017563655041, 715675.568306956556626, 715686.730610549333505, 715697.892928341520019, 715709.055260332999751, 715720.217606523190625, 715731.379966912441887, 715742.542341500287876, 715753.704730286262929, 715764.867133270599879, 715776.029550452949479, 715787.191981833078898, 715798.354427410755306, 715809.516887185862288, 715820.679361158050597, 715831.841849327320233, 715843.004351693205535, 715854.166868255939335, 715865.329399014939554, 715876.491943970089778, 715887.654503121273592, 715898.817076468141750, 715909.979664010694250, 715921.142265748465434, 715932.304881681455299, 715943.467511809431016, 715954.630156132392585, 715965.792814649641514, 715976.955487361410633, 715988.118174267117865, 715999.280875366879627, 716010.443590660579503, 716021.606320147635415, 716032.769063828163780, 716043.931821701931767, 716055.094593768357299, 716066.257380027789623, 716077.420180479530245, 716088.582995123811997, 716099.745823960285634, 716110.908666988601908, 716122.071524208644405, 716133.234395620296709, 716144.397281223209575, 716155.560181017266586, 716166.723095002467744, 716177.886023178230971, 716189.048965544556268, 716200.211922101327218, 716211.374892847961746, 716222.537877784692682, 716233.700876911170781, 716244.863890227163211, 716256.026917732553557, 716267.189959426992573, 716278.353015310247429, 716289.516085382318124, 716300.679169642971829, 716311.842268091975711, 716323.005380728980526, 716334.168507553869858, 716345.331648566643707, 716356.494803766836412, 716367.657973154215142, 716378.821156729012728, 716389.984354490414262, 716401.147566438768990, 716412.310792573611252, 716423.474032894591801, 716434.637287401943468, 716445.800556094734930, 716456.963838973664679, 716468.127136037917808, 716479.290447287494317, 716490.453772722277790, 716501.617112341918983, 716512.780466146185063, 716523.943834134959616, 716535.107216308009811, 716546.270612665335648, 716557.434023206355050, 716568.597447931184433, 716579.760886839474551, 716590.924339930992573, 716602.087807205505669, 716613.251288663130254, 716624.414784303400666, 716635.578294126084074, 716646.741818131064065, 716657.905356318224221, 716669.068908687215298, 716680.232475237804465, 716691.396055969875306, 716702.559650883311406, 716713.723259977763519, 716724.886883253231645, 716736.050520709250122, 716747.214172345702536, 716758.377838162472472, 716769.541518159327097, 716780.705212336149998, 716791.868920692591928, 716803.032643228303641, 716814.196379943517968, 716825.360130837652832, 716836.523895910708234, 716847.687675162451342, 716858.851468592649326, 716870.015276201185770, 716881.179097987827845, 716892.342933952109888, 716903.506784094264731, 716914.670648413593881, 716925.834526910446584, 716936.998419584240764, 716948.162326434976421, 716959.326247462304309, 716970.490182666108012, 716981.654132046154700, 716992.818095602095127, 717003.982073334162124, 717015.146065241773613, 717026.310071324813180, 717037.474091583047993, 717048.638126016478054, 717059.802174624637701, 717070.966237407410517, 717082.130314364680089, 717093.294405496213585, 717104.458510801778175, 717115.622630281257443, 717126.786763934302144, 717137.950911760795861, 717149.115073760505766, 717160.279249933315441, 717171.443440278875642, 717182.607644797186367, 717193.771863487898372, 717204.936096350778826, 717216.100343385711312, 717227.264604592463002, 717238.428879970801063, 717249.593169520725496, 717260.757473241770640, 717271.921791134052910, 717283.086123196873814, 717294.250469430466183, 717305.414829834364355, 717316.579204408568330, 717327.743593152961694, 717338.907996066962369, 717350.072413150686771, 717361.236844403902069, 717372.401289826259017, 717383.565749417408369, 717394.730223177699372, 717405.894711106549948, 717417.059213203727268, 717428.223729469231330, 717439.388259902712889, 717450.552804503939115, 717461.717363272793591, 717472.881936209159903, 717484.046523312688805, 717495.211124583147466, 717506.375740020652302, 717517.540369624621235, 717528.705013394821435, 717539.869671331485733, 717551.034343434148468, 717562.199029702576809, 717573.363730136654340, 717584.528444736148231, 717595.693173500825651, 717606.857916430337355, 717618.022673524799757, 717629.187444783980027, 717640.352230207412504, 717651.517029795097187, 717662.681843546801247, 717673.846671462408267, 717685.011513541336171, 717696.176369783817790, 717707.341240189503878, 717718.506124758278020, 717729.671023489790969, 717740.835936384042725, 717752.000863440451212, 717763.165804659132846, 717774.330760039738379, 717785.495729582384229, 717796.660713286488317, 717807.825711151934229, 717818.990723178721964, 717830.155749366502278, 717841.320789714809507, 717852.485844223876484, 717863.650912893470377, 717874.815995723125525, 717885.981092712725513, 717897.146203862270340, 717908.311329171410762, 717919.476468639681116, 717930.641622267430648, 717941.806790053960867, 717952.971971999388188, 717964.137168103479780, 717975.302378365769982, 717986.467602786491625, 717997.632841364946216, 718008.798094101366587, 718019.963360995403491, 718031.128642046707682, 718042.293937255279161, 718053.459246620768681, 718064.624570143176243, 718075.789907821803354, 718086.955259657232091, 718098.120625648647547, 718109.286005796049722, 718120.451400099438615, 718131.616808558232151, 718142.782231172430329, 718153.947667941800319, 718165.113118866109289, 718176.278583945240825, 718187.444063179078512, 718198.609556567040272, 718209.775064109475352, 718220.940585805685259, 718232.106121655786410, 718243.271671659429558, 718254.437235816381872, 718265.602814126643352, 718276.768406589864753, 718287.934013205813244, 718299.099633974372409, 718310.265268895076588, 718321.430917968275025, 718332.596581193385646, 718343.762258570175618, 718354.927950098644942, 718366.093655778444372, 718377.259375609457493, 718388.425109591218643, 718399.590857723960653, 718410.756620007450692, 718421.922396440990269, 718433.088187024928629, 718444.253991758800112, 718455.419810642371885, 718466.585643675527535, 718477.751490858034231, 718488.917352189891972, 718500.083227670635097, 718511.249117300147191, 718522.415021078195423, 718533.580939004663378, 718544.746871079085395, 718555.912817301810719, 718567.078777672140859, 718578.244752190075815, 718589.410740855382755, 718600.576743667828850, 718611.742760627297685, 718622.908791733440012, 718634.074836986255832, 718645.240896385395899, 718656.406969930743799, 718667.573057622066699, 718678.739159459131770, 718689.905275441822596, 718701.071405569789931, 718712.237549843033776, 718723.403708261204883, 718734.569880824186839, 718745.736067531630397, 718756.902268383535556, 718768.068483379669487, 718779.234712519566528, 718790.400955803343095, 718801.567213230766356, 718812.733484801603481, 718823.899770515505224, 718835.066070372355171, 718846.232384372153319, 718857.398712514201179, 718868.565054798731580, 718879.731411225511692, 718890.897781794308685, 718902.064166504889727, 718913.230565356905572, 718924.396978350472637, 718935.563405485008843, 718946.729846760630608, 718957.896302176988684, 718969.062771733966656, 718980.229255431331694, 718991.395753268734552, 719002.562265246175230, 719013.728791363304481, 719024.895331620238721, 719036.061886016395874, 719047.228454551659524, 719058.395037226029672, 719069.561634039157070, 719080.728244990808889, 719091.894870080752298, 719103.061509308987297, 719114.228162675164640, 719125.394830179167911, 719136.561511820647866, 719147.728207599488087, 719158.894917515688576, 719170.061641568550840, 719181.228379758424126, 719192.395132084842771, 719203.561898547573946, 719214.728679146617651, 719225.895473881508224, 719237.062282752129249, 719248.229105758364312, 719259.395942899980582, 719270.562794176745228, 719281.729659588541836, 719292.896539135137573, 719304.063432816299610, 719315.230340631795116, 719326.397262581391260, 719337.564198665088043, 719348.731148882536218, 719359.898113233619370, 719371.065091717988253, 719382.232084335642867, 719393.399091086117551, 719404.566111969295889, 719415.733146985177882, 719426.900196133530699, 719438.067259414005093, 719449.234336826368235, 719460.401428370620124, 719471.568534046411514, 719482.735653853509575, 719493.902787791914307, 719505.069935861160047, 719516.237098061363213, 719527.404274392058142, 719538.571464853244834, 719549.738669444457628, 719560.905888165580109, 719572.073121016612276, 719583.240367997204885, 719594.407629107241519, 719605.574904346372932, 719616.742193714482710, 719627.909497211454436, 719639.076814836822450, 719650.244146590819582, 719661.411492472863756, 719672.578852482954971, 719683.746226620860398, 719694.913614886347204, 719706.081017279182561, 719717.248433799133636, 719728.415864446084015, 719739.583309220033698, 719750.750768120284192, 719761.918241147184744, 719773.085728300153278, 719784.253229579073377, 719795.420744983595796, 719806.588274513953365, 719817.755818169796839, 719828.923375950660557, 719840.090947856660932, 719851.258533887332305, 719862.426134042558260, 719873.593748322222382, 719884.761376726208255, 719895.929019254050218, 719907.096675905748270, 719918.264346680953167, 719929.432031579548493, 719940.599730601534247, 719951.767443746211939, 719962.935171013814397, 719974.102912404108793, 719985.270667916862294, 719996.438437551725656, 720007.606221308582462, 720018.774019187199883, 720029.941831187461503, 720041.109657309018075, 720052.277497551869601, 720063.445351915783249, 720074.613220400409773, 720085.781103005749173, 720096.948999731452204, 720108.116910577169620, 720119.284835543017834, 720130.452774628764018, 720141.620727834058926, 720152.788695158786140, 720163.956676602712832, 720175.124672165722586, 720186.292681847233325, 720197.460705647594295, 720208.628743566339836, 720219.796795603469945, 720230.964861758286133, 720242.132942031254061, 720253.301036421675235, 720264.469144929316826, 720275.637267554295249, 720286.805404296494089, 720297.973555155214854, 720309.141720130806789, 720320.309899222687818, 720331.478092430857942, 720342.646299754851498, 720353.814521194784902, 720364.982756750425324, 720376.151006421423517, 720387.319270207663067, 720398.487548108911142, 720409.655840125051327, 720420.824146255617961, 720431.992466500727460, 720443.160800860146992, 720454.329149333527312, 720465.497511920635588, 720476.665888621471822, 720487.834279435803182, 720499.002684363280423, 720510.171103403787129, 720521.339536557206884, 720532.507983823190443, 720543.676445201621391, 720554.844920692266896, 720566.013410294894129, 720577.181914009386674, 720588.350431835628115, 720599.518963773152791, 720610.687509822077118, 720621.856069981935434, 720633.024644252611324, 720644.193232634104788, 720655.361835125717334, 720666.530451727798209, 720677.699082439881749, 720688.867727261851542, 720700.036386193358339, 720711.205059234518558, 720722.373746384866536, 720733.542447643936612, 720744.711163012310863, 720755.879892489057966, 720767.048636074410751, 720778.217393767903559, 720789.386165569536388, 720800.554951479076408, 720811.723751495941542, 720822.892565620597452, 720834.061393852462061, 720845.230236191302538, 720856.399092637002468, 720867.567963189329021, 720878.736847848282196, 720889.905746613279916, 720901.074659484438598, 720912.243586461525410, 720923.412527544191107, 720934.581482732319273, 720945.750452025909908, 720956.919435424380936, 720968.088432927615941, 720979.257444535731338, 720990.426470248377882, 721001.595510065206327, 721012.764563985983841, 721023.933632010710426, 721035.102714139153250, 721046.271810370963067, 721057.440920706256293, 721068.610045144450851, 721079.779183685546741, 721090.948336329427548, 721102.117503075744025, 721113.286683924263343, 721124.455878874985501, 721135.625087927444838, 721146.794311081757769, 721157.963548337575048, 721169.132799694431014, 721180.302065152558498, 721191.471344711724669, 721202.640638371231034, 721213.809946131426841, 721224.979267991962843, 721236.148603952489793, 721247.317954013124108, 721258.487318173167296, 721269.656696432852186, 721280.826088791829534, 721291.995495249866508, 721303.164915806963108, 721314.334350462653674, 721325.503799216821790, 721336.673262069351040, 721347.842739020008594, 721359.012230068328790, 721370.181735214660875, 721381.351254458422773, 721392.520787799498066, 721403.690335237653926, 721414.859896772773936, 721426.029472404625267, 721437.199062132858671, 721448.368665957474150, 721459.538283878238872, 721470.707915894920006, 721481.877562007401139, 721493.047222215333022, 721504.216896518715657, 721515.386584916966967, 721526.556287410203367, 721537.726003998308443, 721548.895734680932947, 721560.065479457960464, 721571.235238328925334, 721582.405011293943971, 721593.574798352667131, 721604.744599504978396, 721615.914414750644937, 721627.084244089317508, 721638.254087520996109, 721649.423945045447908, 721660.593816662556492, 721671.763702371739782, 721682.933602173114195, 721694.103516066679731, 721705.273444051854312, 721716.443386128637940, 721727.613342296681367, 721738.783312555984594, 721749.953296906081960, 721761.123295346973464, 721772.293307878542691, 721783.463334500440396, 721794.633375212550163, 721805.803430014522746, 721816.973498906358145, 721828.143581887590699, 721839.313678958336823, 721850.483790118247271, 721861.653915367089212, 721872.824054704746231, 721883.994208130985498, 721895.164375645574182, 721906.334557248279452, 721917.504752938984893, 721928.674962717457674, 721939.845186583697796, 721951.015424537006766, 721962.185676577733830, 721973.355942705413327, 721984.526222919812426, 721995.696517220814712, 722006.866825608303770, 722018.037148081930354, 722029.207484641461633, 722040.377835287014022, 722051.548200017889030, 722062.718578834435903, 722073.888971735956147, 722085.059378722566180, 722096.229799794033170, 722107.400234950007871, 722118.570684190490283, 722129.741147515131161, 722140.911624923814088, 722152.082116416189820, 722163.252621992258355, 722174.423141651786864, 722185.593675394542515, 722196.764223220292479, 722207.934785128803924, 722219.105361120076850, 722230.275951193412766, 722241.446555349277332, 722252.617173587204888, 722263.787805906846188, 722274.958452308317646, 722286.129112791037187, 722297.299787355004810, 722308.470475999871269, 722319.641178725869395, 722330.811895532417111, 722341.982626419281587, 722353.153371386462823, 722364.324130433727987, 722375.494903560844250, 722386.665690767462365, 722397.836492053698748, 722409.007307419087738, 722420.178136863512918, 722431.348980386857875, 722442.519837988889776, 722453.690709669492207, 722464.861595427966677, 722476.032495264778845, 722487.203409179463051, 722498.374337171670049, 722509.545279241632670, 722520.716235388652422, 722531.887205612729304, 722543.058189913630486, 722554.229188291355968, 722565.400200745440088, 722576.571227275999263, 722587.742267882451415, 722598.913322564912960, 722610.084391322918236, 722621.255474156467244, 722632.426571065210737, 722643.597682049148716, 722654.768807108048350, 722665.939946241560392, 722677.111099449684843, 722688.282266732072458, 722699.453448088373989, 722710.624643518589437, 722721.795853022602387, 722732.967076600180008, 722744.138314251089469, 722755.309565974981524, 722766.480831771972589, 722777.652111641480587, 722788.823405583505519, 722799.994713597930968, 722811.166035684407689, 722822.337371843052097, 722833.508722073165700, 722844.680086374864914, 722855.851464747800492, 722867.022857191856019, 722878.194263707147911, 722889.365684292977676, 722900.537118949228898, 722911.708567676017992, 722922.880030472762883, 722934.051507339463569, 722945.222998276003636, 722956.394503282150254, 722967.566022357554175, 722978.737555502098985, 722989.909102715668269, 723001.080663998029195, 723012.252239348599687, 723023.423828767845407, 723034.595432255184278, 723045.767049810499884, 723056.938681433675811, 723068.110327124362811, 723079.281986882328056, 723090.453660707338713, 723101.625348599627614, 723112.797050558496267, 723123.968766583944671, 723135.140496675856411, 723146.312240833998658, 723157.483999058022164, 723168.655771347810514, 723179.827557703247294, 723190.999358123983257, 723202.171172610018402, 723213.343001161119901, 723224.514843776822090, 723235.686700457241386, 723246.858571201912127, 723258.030456010950729, 723269.202354884007946, 723280.374267820850946, 723291.546194821363315, 723302.718135885079391, 723313.890091012115590, 723325.062060202122666, 723336.234043454984203, 723347.406040770467371, 723358.578052148572169, 723369.750077588600107, 723380.922117090784013, 723392.094170654774643, 723403.266238280455582, 723414.438319967477582, 723425.610415715840645, 723436.782525525079109, 723447.954649395309389, 723459.126787326182239, 723470.298939317464828, 723481.471105369040743, 723492.643285480560735, 723503.815479651908390, 723514.987687883083709, 723526.159910173621029, 723537.332146523403935, 723548.504396932199597, 723559.676661400008015, 723570.848939926363528, 723582.021232511266135, 723593.193539154366590, 723604.365859855548479, 723615.538194614695385, 723626.710543431574479, 723637.882906305720098, 723649.055283237248659, 723660.227674225810915, 723671.400079271406867, 723682.572498373570852, 723693.744931532302871, 723704.917378747253679, 723716.089840018306859, 723727.262315345229581, 723738.434804727905430, 723749.607308166101575, 723760.779825659701601, 723771.952357208239846, 723783.124902811716311, 723794.297462470014580, 723805.470036182668991, 723816.642623949795961, 723827.815225770929828, 723838.987841646070592, 723850.160471574985422, 723861.333115557441488, 723872.505773593089543, 723883.678445681813173, 723894.851131823612377, 723906.023832018254325, 723917.196546265273355, 723928.369274564669468, 723939.542016916326247, 723950.714773319778033, 723961.887543774908409, 723973.060328281833790, 723984.233126839972101, 723995.405939449323341, 724006.578766109654680, 724017.751606820733286, 724028.924461582326330, 724040.097330394317396, 724051.270213256473653, 724062.443110168562271, 724073.616021130466834, 724084.788946141954511, 724095.961885203025304, 724107.134838312980719, 724118.307805471937172, 724129.480786679894663, 724140.653781936271116, 724151.826791241182946, 724162.999814594280906, 724174.172851995332167, 724185.345903444103897, 724196.518968940596096, 724207.692048484459519, 724218.865142075577751, 724230.038249713717960, 724241.211371398530900, 724252.384507130016573, 724263.557656908058561, 724274.730820732191205, 724285.903998602414504, 724297.077190518495627, 724308.250396480201744, 724319.423616487300023, 724330.596850539674051, 724341.770098637090996, 724352.943360779201612, 724364.116636966122314, 724375.289927197620273, 724386.463231473229825, 724397.636549792834558, 724408.809882156318054, 724419.983228563563898, 724431.156589014106430, 724442.329963508062065, 724453.503352045081556, 724464.676754624815658, 724475.850171247380786, 724487.023601912427694, 724498.197046619723551, 724509.370505369035527, 724520.543978160247207, 724531.717464993125759, 724542.890965867671184, 724554.064480783417821, 724565.238009740249254, 724576.411552737932652, 724587.585109776351601, 724598.758680855389684, 724609.932265974581242, 724621.105865133926272, 724632.279478333191946, 724643.453105572261848, 724654.626746850786731, 724665.800402168766595, 724676.974071525619365, 724688.147754921461456, 724699.321452356176451, 724710.495163829298690, 724721.668889340828173, 724732.842628890532069, 724744.016382478177547, 724755.190150103298947, 724766.363931766245514, 724777.537727466551587, 724788.711537203984335, 724799.885360978310928, 724811.059198789414950, 724822.233050637179986, 724833.406916521140374, 724844.580796441412531, 724855.754690397647209, 724866.928598389611579, 724878.102520417189226, 724889.276456480147317, 724900.450406578253023, 724911.624370711273514, 724922.798348879208788, 724933.972341081709601, 724945.146347318775952, 724956.320367589825764, 724967.494401894975454, 724978.668450233875774, 724989.842512606410310, 725001.016589012229815, 725012.190679451334290, 725023.364783923723735, 725034.538902428583242, 725045.713034966262057, 725056.887181536294520, 725068.061342138564214, 725079.235516772954725, 725090.409705439000390, 725101.583908136817627, 725112.758124866173603, 725123.932355626719072, 725135.106600418221205, 725146.280859240447171, 725157.455132093629800, 725168.629418977070600, 725179.803719890885986, 725190.978034834843129, 725202.152363808592781, 725213.326706811902113, 725224.501063844654709, 725235.675434906850569, 725246.849819998140447, 725258.024219118175097, 725269.198632267070934, 725280.373059444362298, 725291.547500650049187, 725302.721955883549526, 725313.896425145212561, 725325.070908434456214, 725336.245405751396902, 725347.419917095452547, 725358.594442466623150, 725369.768981864908710, 725380.943535289727151, 725392.118102741078474, 725403.292684218729846, 725414.467279722681269, 725425.641889252467081, 725436.816512807854451, 725447.991150388959795, 725459.165801995433867, 725470.340467626927420, 725481.515147283440456, 725492.689840964623727, 725503.864548670477234, 725515.039270400651731, 725526.214006155030802, 725537.388755933265202, 725548.563519735354930, 725559.738297561067156, 725570.913089410052635, 725582.087895282194950, 725593.262715177377686, 725604.437549095484428, 725615.612397036049515, 725626.787258998840116, 725637.962134983972646, 725649.137024991214275, 725660.311929020215757, 725671.486847070744261, 725682.661779142799787, 725693.836725235916674, 725705.011685350094922, 725716.186659485101700, 725727.361647640820593, 725738.536649816902354, 725749.711666013230570, 725760.886696229572408, 725772.061740465811454, 725783.236798721482046, 725794.411870996700600, 725805.586957291350700, 725816.762057604850270, 725827.937171937315725, 725839.112300288514234, 725850.287442657980137, 725861.462599045713432, 725872.637769451597705, 725883.812953875516541, 725894.988152316887863, 725906.163364775828086, 725917.338591251987964, 725928.513831745251082, 725939.689086255384609, 725950.864354782272130, 725962.039637325680815, 725973.214933885377832, 725984.390244461130351, 725995.565569052821957, 726006.740907660219818, 726017.916260283091106, 726029.091626921202987, 726040.267007574671879, 726051.442402242915705, 726062.617810925934464, 726073.793233623495325, 726084.968670335365459, 726096.144121061428450, 726107.319585801335052, 726118.495064554968849, 726129.670557322213426, 726140.846064102835953, 726152.021584896603599, 726163.197119703399949, 726174.372668522992171, 726185.548231354798190, 726196.723808199283667, 726207.899399055982940, 726219.075003924546763, 726230.250622804975137, 726241.426255697035231, 726252.601902600261383, 726263.777563514770009, 726274.953238440328278, 726286.128927376703359, 726297.304630323662423, 726308.480347281089053, 726319.656078248634003, 726330.831823226180859, 726342.007582213496789, 726353.183355210698210, 726364.359142217086628, 726375.534943232778460, 726386.710758257540874, 726397.886587291141041, 726409.062430333462544, 726420.238287384039722, 726431.414158442988992, 726442.590043509844691, 726453.765942584839649, 726464.941855667275377, 726476.117782757268287, 726487.293723854585551, 726498.469678958761506, 726509.645648070028983, 726520.821631187805906, 726531.997628312208690, 726543.173639442888089, 726554.349664579494856, 726565.525703722145408, 726576.701756870490499, 726587.877824024297297, 726599.053905183449388, 726610.230000347713940, 726621.406109516858123, 726632.582232690765522, 726643.758369869319722, 726654.934521051822230, 726666.110686238855124, 726677.286865429603495, 726688.463058624183759, 726699.639265822246671, 726710.815487023675814, 726721.991722228238359, 726733.167971435701475, 726744.344234646065161, 726755.520511858980171, 726766.696803074213676, 726777.873108291649260, 726789.049427510937676, 726800.225760732078925, 726811.402107954840176, 726822.578469178988598, 726833.754844404291362, 726844.931233630515635, 726856.107636857661419, 726867.284054085379466, 726878.460485313553363, 726889.636930541833863, 726900.813389769988135, 726911.989862998249009, 726923.166350226034410, 726934.342851453227922, 726945.519366679596715, 726956.695895905140787, 726967.872439129510894, 726979.048996352357790, 726990.225567573797889, 727001.402152793365531, 727012.578752011060715, 727023.755365226650611, 727034.931992439902388, 727046.108633650583215, 727057.285288858460262, 727068.461958063533530, 727079.638641265337355, 727090.815338463988155, 727101.992049659136683, 727113.168774850550108, 727124.345514037879184, 727135.522267221123911, 727146.699034400284290, 727157.875815574894659, 727169.052610744722188, 727180.229419909650460, 727191.406243069679476, 727202.583080224343576, 727213.759931373409927, 727224.936796516878530, 727236.113675654632971, 727247.290568786207587, 727258.467475911485963, 727269.644397030351683, 727280.821332142688334, 727291.998281247913837, 727303.175244346261024, 727314.352221437380649, 727325.529212521156296, 727336.706217597238719, 727347.883236665395088, 727359.060269725625403, 727370.237316777696833, 727381.414377821143717, 727392.591452856198885, 727403.768541882396676, 727414.945644899620675, 727426.122761907521635, 727437.299892906215973, 727448.477037895238027, 727459.654196874354966, 727470.831369843683206, 727482.008556802757084, 727493.185757751576602, 727504.362972689676099, 727515.540201617171988, 727526.717444533715025, 727537.894701438955963, 727549.071972332894802, 727560.249257215415128, 727571.426556086051278, 727582.603868944803253, 727593.781195791438222, 727604.958536625723355, 727616.135891447425820, 727627.313260256545618, 727638.490643052733503, 727649.668039835756645, 727660.845450605615042, 727672.022875361843035, 727683.200314104440622, 727694.377766833058558, 727705.555233547696844, 727716.732714248006232, 727727.910208933753893, 727739.087717604939826, 727750.265240261331201, 727761.442776902578771, 727772.620327528566122, 727783.797892139060423, 727794.975470733945258, 727806.153063313104212, 727817.330669876071624, 727828.508290422847494, 727839.685924953198992, 727850.863573466776870, 727862.041235963697545, 727873.218912443611771, 727884.396602906170301, 727895.574307351489551, 727906.752025779220276, 727917.929758189013228, 727929.107504580751993, 727940.285264954436570, 727951.463039309717715, 727962.640827646479011, 727973.818629964487627, 727984.996446263394319, 727996.174276543199085, 728007.352120803669095, 728018.529979044338688, 728029.707851265557110, 728040.885737466625869, 728052.063637647777796, 728063.241551808314398, 728074.419479948468506, 728085.597422068007290, 728096.775378166232258, 728107.953348243725486, 728119.131332299672067, 728130.309330334188417, 728141.487342347041704, 728152.665368337999098, 728163.843408306827769, 728175.021462253294885, 728186.199530177284032, 728197.377612078562379, 728208.555707957129925, 728219.733817812521011, 728230.911941644735634, 728242.090079453308135, 728253.268231238122098, 728264.446396999293938, 728275.624576736474410, 728286.802770449314266, 728297.980978137697093, 728309.159199801390059, 728320.337435440276749, 728331.515685054124333, 728342.693948642816395, 728353.872226206120104, 728365.050517743686214, 728376.228823255631141, 728387.407142741372809, 728398.585476201027632, 728409.763823634129949, 728420.942185040796176, 728432.120560420677066, 728443.298949773423374, 728454.477353099151514, 728465.655770397512242, 728476.834201668156311, 728488.012646911200136, 728499.191106126061641, 728510.369579312973656, 728521.548066471470520, 728532.726567601552233, 728543.905082702753134, 728555.083611774956807, 728566.262154818279669, 728577.440711831906810, 728588.619282816303894, 728599.797867770888843, 728610.976466695661657, 728622.155079590273090, 728633.333706454606727, 728644.512347288313322, 728655.691002091392875, 728666.869670863612555, 728678.048353604739532, 728689.227050314540975, 728700.405760993133299, 728711.584485639701597, 728722.763224254595116, 728733.941976837348193, 728745.120743387960829, 728756.299523906083778, 728767.478318391600624, 728778.657126844278537, 728789.835949263768271, 728801.014785650186241, 728812.193636003066786, 728823.372500322409905, 728834.551378607982770, 728845.730270859436132, 728856.909177076769993, 728868.088097259751521, 728879.267031408031471, 728890.445979521493427, 728901.624941600020975, 728912.803917643381283, 728923.982907651341520, 728935.161911623901688, 728946.340929560596123, 728957.519961461308412, 728968.699007325922139, 728979.878067153971642, 728991.057140945689753, 729002.236228700727224, 729013.415330418618396, 729024.594446099479683, 729035.773575743078254, 729046.952719349181280, 729058.131876917439513, 729069.311048447852954, 729080.490233940188773, 729091.669433394214138, 729102.848646809696220, 729114.027874186635017, 729125.207115524564870, 729136.386370823252946, 729147.565640082932077, 729158.744923303136602, 729169.924220483633690, 729181.103531624306925, 729192.282856724923477, 729203.462195785134099, 729214.641548804938793, 729225.820915784337558, 729237.000296722748317, 729248.179691620054655, 729259.359100476256572, 729270.538523291004822, 729281.717960064299405, 729292.897410795441829, 729304.076875484781340, 729315.256354131968692, 729326.435846736771055, 729337.615353298955597, 729348.794873818289489, 729359.974408294889145, 729371.153956728056073, 729382.333519117906690, 729393.513095464208163, 729404.692685766844079, 729415.872290025465190, 729427.051908239955083, 729438.231540410197340, 729449.411186535842717, 729460.590846616658382, 729471.770520652527921, 729482.950208643451333, 729494.129910589079373, 729505.309626489179209, 729516.489356343518011, 729527.669100151862949, 729538.848857914214022, 729550.028629630338401, 729561.208415299770422, 729572.388214922859333, 729583.568028498790227, 729594.747856027912349, 729605.927697509643622, 729617.107552943867631, 729628.287422330467962, 729639.467305669328198, 729650.647202960099094, 729661.827114202547818, 729673.007039396790788, 729684.186978542129509, 729695.366931638796814, 729706.546898686443456, 729717.726879684836604, 729728.906874633859843, 729740.086883533396758, 729751.266906382981688, 729762.446943182847463, 729773.626993932179175, 729784.807058631326072, 729795.987137279938906, 729807.167229877668433, 729818.347336424631067, 729829.527456920244731, 729840.707591364625841, 729851.887739757308736, 729863.067902098409832, 729874.248078387579881, 729885.428268624702469, 729896.608472809428349, 729907.788690941641107, 729918.968923021107912, 729930.149169047712348, 729941.329429021105170, 729952.509702941286378, 729963.689990808139555, 729974.870292621082626, 729986.050608380232006, 729997.230938085354865, 730008.411281736334786, 730019.591639332473278, 730030.772010874236003, 730041.952396361157298, 730053.132795793004334, 730064.313209169660695, 730075.493636490777135, 730086.674077756353654, 730097.854532966041006, 730109.035002119722776, 730120.215485217282549, 730131.395982258371077, 730142.576493242988363, 730153.757018170552328, 730164.937557041412219, 730176.118109854869545, 730187.298676611040719, 730198.479257309576496, 730209.659851950476877, 730220.840460533392616, 730232.021083058207296, 730243.201719524571672, 730254.382369932369329, 730265.563034281483851, 730276.743712571682408, 730287.924404802848585, 730299.105110974633135, 730310.285831086803228, 730321.466565139242448, 730332.647313131950796, 730343.828075064462610, 730355.008850936777890, 730366.189640748430975, 730377.370444499538280, 730388.551262189750560, 730399.732093819067813, 730410.912939386907965, 730422.093798893271014, 730433.274672338040546, 730444.455559720983729, 730455.636461041984148, 730466.817376300576143, 730477.998305496876128, 730489.179248630418442, 730500.360205701086670, 730511.541176708997227, 730522.722161653568037, 730533.903160534799099, 730545.084173352457583, 730556.265200106310658, 730567.446240796125494, 730578.627295421669260, 730589.808363983058371, 730600.989446479710750, 730612.170542911742814, 730623.351653278805315, 730634.532777580665424, 730645.713915817206725, 730656.895067988079973, 730668.076234093401581, 730679.257414132822305, 730690.438608106109314, 730701.619816012913361, 730712.801037853467278, 730723.982273627188988, 730735.163523333845660, 730746.344786973670125, 730757.526064546196721, 730768.707356051192619, 730779.888661488424987, 730791.069980858010240, 730802.251314159366302, 730813.432661392609589, 730824.614022557158023, 730835.795397653244436, 730846.976786680403166, 730858.158189638750628, 730869.339606527704746, 730880.521037347265519, 730891.702482097200118, 730902.883940777392127, 730914.065413387492299, 730925.246899927384220, 730936.428400397067890, 730947.609914795961231, 730958.791443124297075, 730969.972985381609760, 730981.154541567550041, 730992.336111682234332, 731003.517695725429803, 731014.699293696903624, 731025.880905596422963, 731037.062531423754990, 731048.244171178783290, 731059.425824861275032, 731070.607492471113801, 731081.789174007950351, 731092.970869471784681, 731104.152578862267546, 731115.334302179282531, 731126.516039422596805, 731137.697790591977537, 731148.879555687424727, 731160.061334708589129, 731171.243127655121498, 731182.424934527138248, 731193.606755324406549, 731204.788590046460740, 731215.970438693300821, 731227.152301264693961, 731238.334177760523744, 731249.516068180440925, 731260.697972524445504, 731271.879890792304650, 731283.061822983669117, 731294.243769098538905, 731305.425729136331938, 731316.607703097513877, 731327.789690981269814, 731338.971692787716165, 731350.153708516620100, 731361.335738167865202, 731372.517781741102226, 731383.699839236098342, 731394.881910652853549, 731406.063995991018601, 731417.246095250593498, 731428.428208431228995, 731439.610335532575846, 731450.792476554750465, 731461.974631497287191, 731473.156800360186026, 731484.338983143330552, 731495.521179846371524, 731506.703390469076112, 731517.885615011211485, 731529.067853472894058, 731540.250105853658170, 731551.432372153154574, 731562.614652371499687, 731573.796946508577093, 731584.979254563921131, 731596.161576537415385, 731607.343912429059856, 731618.526262238272466, 731629.708625965053216, 731640.891003609402105, 731652.073395170853473, 731663.255800649523735, 731674.438220044830814, 731685.620653356774710, 731696.803100585122593, 731707.985561729758047, 731719.168036790448241, 731730.350525766843930, 731741.533028659177944, 731752.715545466751792, 731763.898076189681888, 731775.080620827735402, 731786.263179380446672, 731797.445751848048531, 731808.628338230191730, 731819.810938526410609, 731830.993552736938000, 731842.176180861308239, 731853.358822899404913, 731864.541478850995190, 731875.724148715962656, 731886.906832494074479, 731898.089530185214244, 731909.272241788916290, 731920.454967305297032, 731931.637706734007224, 731942.820460074930452, 731954.003227327717468, 731965.186008492484689, 731976.368803568650037, 731987.551612556329928, 731998.734435455291532, 732009.917272265069187, 732021.100122985895723, 732032.282987617072649, 732043.465866158832796, 732054.648758610826917, 732065.831664972822182, 732077.014585244702175, 732088.197519426234066, 732099.380467517301440, 732110.563429517438635, 732121.746405426878482, 732132.929395245038904, 732144.112398971919902, 732155.295416607405059, 732166.478448151028715, 732177.661493602907285, 732188.844552962458692, 732200.027626230032183, 732211.210713405045681, 732222.393814487266354, 732233.576929476810619, 732244.760058373329230, 732255.943201176472940, 732267.126357886125334, 732278.309528502286412, 732289.492713024490513, 732300.675911452737637, 732311.859123786794953, 732323.042350026546046, 732334.225590171525255, 732345.408844221848994, 732356.592112176935188, 732367.775394037016667, 732378.958689801744185, 732390.141999470884912, 732401.325323044322431, 732412.508660521823913, 732423.692011903040111, 732434.875377187971026, 732446.058756376383826, 732457.242149468162097, 732468.425556462956592, 732479.608977360650897, 732490.792412160895765, 732501.975860863807611, 732513.159323468920775, 732524.342799976118840, 732535.526290385401808, 732546.709794696420431, 732557.893312908825465, 732569.076845022733323, 732580.260391037678346, 732591.443950953427702, 732602.627524770214222, 732613.811112487339415, 732624.994714105036110, 732636.178329622838646, 732647.361959040630609, 732658.545602358411998, 732669.729259575600736, 732680.912930691963993, 732692.096615707851015, 732703.280314622796141, 732714.464027436450124, 732725.647754148812965, 732736.831494759651832, 732748.015249268617481, 732759.199017675477080, 732770.382799980463460, 732781.566596183110960, 732792.750406283186749, 732803.934230280574411, 732815.118068175157532, 732826.301919966470450, 732837.485785654396750, 732848.669665239052847, 732859.853558719973080, 732871.037466097041033, 732882.221387369907461, 732893.405322538688779, 732904.589271602919325, 732915.773234562366270, 732926.957211417262442, 732938.141202167025767, 732949.325206811423413, 732960.509225350571796, 732971.693257784121670, 732982.877304111723788, 732994.061364333378151, 733005.245438448851928, 733016.429526457912289, 733027.613628360442817, 733038.797744156210683, 733049.981873844983056, 733061.166017426643521, 733072.350174900959246, 733083.534346267580986, 733094.718531526625156, 733105.902730677742511, 733117.086943720700219, 733128.271170655381866, 733139.455411481554620, 733150.639666198985651, 733161.823934807442129, 733173.008217306924053, 733184.192513697082177, 733195.376823977800086, 733206.561148148844950, 733217.745486210100353, 733228.929838161217049, 733240.114204002078623, 733251.298583732568659, 733262.482977352337912, 733273.667384861502796, 733284.851806259364821, 733296.036241546156816, 733307.220690721645951, 733318.405153785482980, 733329.589630737318657, 733340.774121577385813, 733351.958626305335201, 733363.143144920817576, 733374.327677423716523, 733385.512223813915625, 733396.696784091182053, 733407.881358255282976, 733419.065946305985563, 733430.250548243289813, 733441.435164066846482, 733452.619793776539154, 733463.804437372018583, 733474.989094853284769, 733486.173766219872050, 733497.358451472013257, 733508.543150609242730, 733519.727863631444052, 733530.912590538267978, 733542.097331329714507, 733553.282086005550809, 733564.466854565427639, 733575.651637009344995, 733586.836433337070048, 733598.021243548486382, 733609.206067643011920, 733620.390905620995909, 733631.575757481856272, 733642.760623225476593, 733653.945502851856872, 733665.130396360531449, 733676.315303751733154, 733687.500225024763495, 733698.685160179506056, 733709.870109216193669, 733721.055072134127840, 733732.240048933308572, 733743.425039613852277, 733754.610044174944051, 733765.795062617049553, 733776.980094939470291, 733788.165141142206267, 733799.350201225141063, 733810.535275187925436, 733821.720363030442968, 733832.905464752577245, 733844.090580353979021, 733855.275709834648296, 733866.460853194119409, 733877.646010432508774, 733888.831181549234316, 733900.016366544528864, 733911.201565418043174, 733922.386778169544414, 733933.572004798683338, 733944.757245305692777, 733955.942499689990655, 733967.127767951576971, 733978.313050090102479, 733989.498346105450764, 734000.683655997621827, 734011.868979766150005, 734023.054317410918884, 734034.239668931695633, 734045.425034328480251, 734056.610413600807078, 734067.795806748676114, 734078.981213771970943, 734090.166634670225903, 734101.352069443557411, 734112.537518091499805, 734123.722980614053085, 734134.908457010868005, 734146.093947281828150, 734157.279451426817104, 734168.464969445485622, 734179.650501337833703, 734190.836047103395686, 734202.021606742404401, 734213.207180254044943, 734224.392767638782971, 734235.578368896036409, 734246.763984025688842, 734257.949613027507439, 734269.135255901492201, 734280.320912647293881, 734291.506583264679648, 734302.692267753416672, 734313.877966113621369, 734325.063678344711661, 734336.249404446803965, 734347.435144419665448, 734358.620898262830451, 734369.806665976415388, 734380.992447559954599, 734392.178243013564497, 734403.364052336779423, 734414.549875529599376, 734425.735712591675110, 734436.921563523123041, 734448.107428323361091, 734459.293306992272846, 734470.479199529741891, 734481.665105935768224, 734492.851026209886186, 734504.036960351979360, 734515.222908361931331, 734526.408870239509270, 734537.594845984247513, 734548.780835596495308, 734559.966839075670578, 734571.152856421656907, 734582.338887634454295, 734593.524932713597082, 734604.710991658968851, 734615.897064470453188, 734627.083151147700846, 734638.269251690595411, 734649.455366099020466, 734660.641494372859597, 734671.827636511879973, 734683.013792515615933, 734694.199962384183891, 734705.386146117234603, 734716.572343714535236, 734727.758555176085792, 734738.944780501769856, 734750.131019690888934, 734761.317272743792273, 734772.503539660014212, 734783.689820439205505, 734794.876115081598982, 734806.062423586961813, 734817.248745954711922, 734828.435082184965722, 734839.621432277373970, 734850.807796231820248, 734861.994174048071727, 734873.180565725895576, 734884.366971265408210, 734895.553390666027553, 734906.739823927870020, 734917.926271050353535, 734929.112732033827342, 734940.299206877592951, 734951.485695581533946, 734962.672198145766743, 734973.858714569825679, 734985.045244853827171, 734996.231788997189142, 735007.418346999911591, 735018.604918861761689, 735029.791504582506604, 735040.978104162146337, 735052.164717600331642, 735063.351344896946102, 735074.537986051640473, 735085.724641064298339, 735096.911309934919700, 735108.097992663038895, 735119.284689248539507, 735130.471399691421539, 735141.658123991335742, 735152.844862147932872, 735164.031614161329344, 735175.218380031175911, 735186.405159757123329, 735197.591953339288011, 735208.778760777320713, 735219.965582071105018, 735231.152417220175266, 735242.339266224764287, 735253.526129084522836, 735264.713005798985250, 735275.899896368267946, 735287.086800792138092, 735298.273719070362858, 735309.460651202709414, 735320.647597189061344, 735331.834557029069401, 735343.021530722733587, 735354.208518269704655, 735365.395519669982605, 735376.582534923334606, 735387.769564029411413, 735398.956606988213025, 735410.143663799390197, 735421.330734462593682, 735432.517818977939896, 735443.704917345428839, 735454.892029564245604, 735466.079155634739436, 735477.266295556328259, 735488.453449329244904, 735499.640616952790879, 735510.827798427199014, 735522.014993752120063, 735533.202202927204780, 735544.389425952569582, 735555.576662827865221, 735566.763913552858867, 735577.951178127434105, 735589.138456551358104, 735600.325748824398033, 735611.513054946437478, 735622.700374917360023, 735633.887708736816421, 735645.075056404573843, 735656.262417920748703, 735667.449793284875341, 735678.637182496604510, 735689.824585556169041, 735701.012002463219687, 735712.199433217407204, 735723.386877818731591, 735734.574336266960017, 735745.761808561743237, 735756.949294702964835, 735768.136794690508395, 735779.324308524257503, 735790.511836203979328, 735801.699377729208209, 735812.886933100176975, 735824.074502316303551, 735835.262085377820767, 735846.449682283913717, 735857.637293034931645, 735868.824917630641721, 735880.012556070578285, 735891.200208354857750, 735902.387874482898042, 735913.575554454931989, 735924.763248270377517, 735935.950955929467455, 735947.138677431619726, 735958.326412776950747, 735969.514161964994855, 735980.701924995752051, 735991.889701868989505, 736003.077492584357969, 736014.265297141973861, 736025.453115541371517, 736036.640947782550938, 736047.828793865162879, 736059.016653789090924, 736070.204527554102242, 736081.392415160196833, 736092.580316606792621, 736103.768231894006021, 736114.956161021604203, 736126.144103989354335, 736137.332060797140002, 736148.520031444728374, 736159.708015931770205, 736170.896014258149080, 736182.084026423981413, 736193.272052428568713, 736204.460092272143811, 736215.648145954357460, 736226.836213474860415, 736238.024294833769090, 736249.212390030501410, 736260.400499065290205, 736271.588621937786229, 736282.776758647640236, 736293.964909194852225, 736305.153073579189368, 736316.341251800302416, 736327.529443858074956, 736338.717649752623402, 736349.905869483365677, 736361.094103050301783, 736372.282350453082472, 736383.470611691707745, 736394.658886765828356, 736405.847175675444305, 736417.035478419973515, 736428.223794999765232, 736439.412125414237380, 736450.600469663273543, 736461.788827746873721, 736472.977199664688669, 736484.165585416485555, 736495.353985002031550, 736506.542398421210237, 736517.730825674021617, 736528.919266760000028, 736540.107721679029055, 736551.296190431108698, 736562.484673015656881, 736573.673169432673603, 736584.861679682158865, 736596.050203763879836, 736607.238741677370854, 736618.427293422631919, 736629.615858999430202, 736640.804438407532871, 736651.993031646939926, 736663.181638717069291, 736674.370259618153796, 736685.558894349844195, 736696.747542911907658, 736707.936205304111354, 736719.124881526455283, 736730.313571578590199, 736741.502275460166857, 736752.690993171301670, 736763.879724711761810, 736775.068470081314445, 736786.257229279610328, 736797.446002306649461, 736808.634789162199013, 736819.823589846026152, 736831.012404357781634, 736842.201232697698288, 736853.390074865194038, 736864.578930860268883, 736875.767800682689995, 736886.956684332224540, 736898.145581808872521, 736909.334493111935444, 736920.523418241878971, 736931.712357198121026, 736942.901309980545193, 736954.090276589035057, 736965.279257023241371, 736976.468251283047721, 736987.657259368221276, 736998.846281278762035, 737010.035317014320754, 737021.224366574664600, 737032.413429959793575, 737043.602507169358432, 737054.791598203126341, 737065.980703061097302, 737077.169821742805652, 737088.358954248367809, 737099.548100577434525, 737110.737260729772970, 737121.926434705150314, 737133.115622503682971, 737144.304824124788865, 737155.494039568467997, 737166.683268834603950, 737177.872511922963895, 737189.061768833198585, 737200.251039565191604, 737211.440324118942954, 737222.629622494103387, 737233.818934690207243, 737245.008260707603768, 737256.197600545827299, 737267.386954204528593, 737278.576321683940478, 737289.765702983480878, 737300.955098103149794, 737312.144507042481564, 737323.333929801709019, 737334.523366380366497, 737345.712816778570414, 737356.902280995622277, 737368.091759031754918, 737379.281250886502676, 737390.470756559749134, 737401.660276051494293, 737412.849809361388907, 737424.039356489316560, 737435.228917434928007, 737446.418492198223248, 737457.608080778853036, 737468.797683176817372, 737479.987299391534179, 737491.176929423352703, 737502.366573271574453, 737513.556230936432257, 737524.745902417576872, 737535.935587714659050, 737547.125286827562377, 737558.314999756170437, 737569.504726500366814, 737580.694467059918679, 737591.884221434476785, 737603.073989624041133, 737614.263771628262475, 737625.453567447140813, 737636.643377080094069, 737647.833200527355075, 737659.023037788690999, 737670.212888863752596, 737681.402753752423450, 737692.592632454354316, 737703.782524969661608, 737714.972431297879666, 737726.162351438775659, 737737.352285392466001, 737748.542233158717863, 737759.732194737065583, 737770.922170127509162, 737782.112159329815768, 737793.302162343868986, 737804.492179169203155, 737815.682209806051105, 737826.872254253830761, 737838.062312512658536, 737849.252384582068771, 737860.442470462177880, 737871.632570152636617, 737882.822683652979322, 737894.012810963555239, 737905.202952083898708, 737916.393107013776898, 737927.583275752956979, 737938.773458301322535, 737949.963654658873565, 737961.153864825144410, 737972.344088800018653, 737983.534326583263464, 737994.724578174878843, 738005.914843574399129, 738017.105122781940736, 738028.295415797154419, 738039.485722619807348, 738050.676043249550276, 738061.866377686732449, 738073.056725930655375, 738084.247087981319055, 738095.437463838490658, 738106.627853502053767, 738117.818256971659139, 738129.008674247306772, 738140.199105328763835, 738151.389550215681084, 738162.580008908058517, 738173.770481405663304, 738184.960967708146200, 738196.151467815623619, 738207.341981727629900, 738218.532509443932213, 738229.723050964646973, 738240.913606289424933, 738252.104175417916849, 738263.294758350239135, 738274.485355085926130, 738285.675965625094250, 738296.866589967045002, 738308.057228112011217, 738319.247880059876479, 738330.438545810058713, 738341.629225362790748, 738352.819918717490509, 738364.010625874274410, 738375.201346832676791, 738386.392081592697650, 738397.582830154220574, 738408.773592516779900, 738419.964368680492043, 738431.155158645007759, 738442.345962409977801, 738453.536779975518584, 738464.727611341164447, 738475.918456507031806, 738487.109315472771414, 738498.300188238034025, 738509.491074802819639, 738520.681975167011842, 738531.872889330144972, 738543.063817292102613, 738554.254759053001180, 738565.445714612375014, 738576.636683970107697, 738587.827667125966400, 738599.018664079718292, 738610.209674831363373, 738621.400699380435981, 738632.591737726819701, 738643.782789870630950, 738654.973855811287649, 738666.164935548906215, 738677.356029083137400, 738688.547136413631961, 738699.738257540622726, 738710.929392463411205, 738722.120541182113811, 738733.311703696497716, 738744.502880006330088, 738755.694070111610927, 738766.885274011990987, 738778.076491707121022, 738789.267723197001033, 738800.458968481398188, 738811.650227560312487, 738822.841500433161855, 738834.032787100179121, 738845.224087560898624, 738856.415401815203950, 738867.606729862629436, 738878.798071703524329, 738889.989427337422967, 738901.180796764092520, 738912.372179983300157, 738923.563576995045878, 738934.754987799096853, 738945.946412395103835, 738957.137850782950409, 738968.329302962636575, 738979.520768933696672, 738990.712248696130700, 739001.903742249589413, 739013.095249593956396, 739024.286770729115233, 739035.478305654716678, 739046.669854370644316, 739057.861416876781732, 739069.052993172896095, 739080.244583258870989, 739091.436187134240754, 739102.627804799238220, 739113.819436253164895, 739125.011081496253610, 739136.202740528271534, 739147.394413348753005, 739158.586099957698025, 739169.777800354990177, 739180.969514540280215, 739192.161242513568141, 739203.352984274271876, 739214.544739822624251, 739225.736509158392437, 739236.928292281227186, 739248.120089190895669, 739259.311899887281470, 739270.503724370268174, 739281.695562639506534, 739292.887414695112966, 739304.079280536505394, 739315.271160163800232, 739326.463053576648235, 739337.654960774932988, 739348.846881758305244, 739360.038816526765004, 739371.230765080079436, 739382.422727418015711, 739393.614703540457413, 739404.806693447171710, 739415.998697137925774, 739427.190714612486772, 739438.382745870738290, 739449.574790912563913, 739460.766849737730809, 739471.958922346006148, 739483.151008737040684, 739494.343108911067247, 739505.535222867503762, 739516.727350606350228, 739527.919492127373815, 739539.111647430341691, 739550.303816515137441, 739561.495999381528236, 739572.688196029514074, 739583.880406458396465, 739595.072630668524653, 739606.264868659549393, 739617.457120430888608, 739628.649385982891545, 739639.841665315325372, 739651.033958427608013, 739662.226265319972299, 739673.418585991836153, 739684.610920443432406, 739695.803268674178980, 739706.995630684075877, 739718.188006473006681, 739729.380396040738560, 739740.572799386922270, 739751.765216511557810, 739762.957647414295934, 739774.150092094903812, 739785.342550553614274, 739796.535022789728828, 739807.727508803480305, 739818.920008594170213, 739830.112522162147798, 739841.305049506947398, 739852.497590628452599, 739863.690145526197739, 739874.882714200299233, 739886.075296650640666, 739897.267892876872793, 739908.460502878879197, 739919.653126656194218, 739930.845764209050685, 739942.038415536750108, 739953.231080639641732, 739964.423759517376311, 739975.616452169604599, 739986.809158596210182, 739998.001878797076643, 740009.194612771854736, 740020.387360520544462, 740031.580122042796575, 740042.772897338494658, 740053.965686407522298, 740065.158489249413833, 740076.351305864518508, 740087.544136252021417, 740098.736980412038974, 740109.929838344338350, 740121.122710048803128, 740132.315595525316894, 740143.508494773413986, 740154.701407793094404, 740165.894334584241733, 740177.087275146506727, 740188.280229479423724, 740199.473197583574802, 740210.666179458145052, 740221.859175103018060, 740233.052184518193826, 740244.245207703555934, 740255.438244658638723, 740266.631295383209363, 740277.824359877384268, 740289.017438140697777, 740300.210530173382722, 740311.403635974740610, 740322.596755544771440, 740333.789888883358799, 740344.983035990269855, 740356.176196865271777, 740367.369371508248150, 740378.562559919082560, 740389.755762097425759, 740400.948978043161333, 740412.142207755940035, 740423.335451235878281, 740434.528708482277580, 740445.721979495603591, 740456.915264275390655, 740468.108562821405940, 740479.301875133300200, 740490.495201211189851, 740501.688541054725647, 740512.881894663674757, 740524.075262037920766, 740535.268643177230842, 740546.462038081604987, 740557.655446750693955, 740568.848869184148498, 740580.042305382085033, 740591.235755344154313, 740602.429219069890678, 740613.622696559759788, 740624.816187813063152, 740636.009692829800770, 740647.203211609739810, 740658.396744152763858, 740669.590290458523668, 740680.783850526902825, 740691.977424357784912, 740703.171011950820684, 740714.364613306010142, 740725.558228423120454, 740736.751857301918790, 740747.945499942172319, 740759.139156343648210, 740770.332826506230049, 740781.526510430034250, 740792.720208114245906, 740803.913919559214264, 740815.107644764590077, 740826.301383729907684, 740837.495136455399916, 740848.688902940484695, 740859.882683185394853, 740871.076477189548314, 740882.270284953177907, 740893.464106475585140, 740904.657941757002845, 740915.851790796965361, 740927.045653595356271, 740938.239530152175575, 740949.433420467074029, 740960.627324539818801, 740971.821242370409891, 740983.015173958381638, 740994.209119303734042, 741005.403078406234272, 741016.597051265533082, 741027.791037881863303, 741038.985038254642859, 741050.179052383755334, 741061.373080269084312, 741072.567121910396963, 741083.761177307693288, 741094.955246460507624, 741106.149329368723556, 741117.343426032224670, 741128.537536450894549, 741139.731660624383949, 741150.925798552460037, 741162.119950235122815, 741173.314115672139451, 741184.508294863160700, 741195.702487808070146, 741206.896694506867789, 741218.090914959087968, 741229.285149164847098, 741240.479397123679519, 741251.673658835352398, 741262.867934299982153, 741274.062223517103121, 741285.256526486715302, 741296.450843208702281, 741307.645173682481982, 741318.839517908287235, 741330.033875885652378, 741341.228247614460997, 741352.422633094480261, 741363.617032325826585, 741374.811445307917893, 741386.005872040870599, 741397.200312524102628, 741408.394766757846810, 741419.589234741753899, 741430.783716475474648, 741441.978211959009059, 741453.172721192124300, 741464.367244174820371, 741475.561780906515196, 741486.756331387325190, 741497.950895616784692, 741509.145473595010117, 741520.340065321652219, 741531.534670796594582, 741542.729290019487962, 741553.923922990448773, 741565.118569709011354, 741576.313230174942873, 741587.507904388359748, 741598.702592348796315, 741609.897294056136161, 741621.092009510379285, 741632.286738711060025, 741643.481481658178382, 741654.676238351385109, 741665.871008790796623, 741677.065792975714430, 741688.260590906254947, 741699.455402582418174, 741710.650228003622033, 741721.845067170099355, 741733.039920081151649, 741744.234786737011746, 741755.429667137446813, 741766.624561281991191, 741777.819469170644879, 741789.014390803407878, 741800.209326179698110, 741811.404275299631990, 741822.599238162860274, 741833.794214769266546, 741844.989205118501559, 741856.184209210681729, 741867.379227045457810, 741878.574258622480556, 741889.769303941866383, 741900.964363003149629, 741912.159435806446709, 741923.354522351059131, 741934.549622637336142, 741945.744736665044911, 741956.939864433603361, 741968.135005943127908, 741979.330161193269305, 741990.525330184027553, 742001.720512915053405, 742012.915709386114031, 742024.110919597325847, 742035.306143548106775, 742046.501381238573231, 742057.696632668375969, 742068.891897837398574, 742080.087176745408215, 742091.282469392172061, 742102.477775777690113, 742113.673095901496708, 742124.868429763591848, 742136.063777363859117, 742147.259138701832853, 742158.454513777513057, 742169.649902590666898, 742180.845305141177960, 742192.040721428813413, 742203.236151453340426, 742214.431595214759000, 742225.627052712603472, 742236.822523946873844, 742248.018008917104453, 742259.213507623411715, 742270.409020065562800, 742281.604546243324876, 742292.800086156465113, 742303.995639804867096, 742315.191207188181579, 742326.386788306524977, 742337.582383159315214, 742348.777991746785119, 742359.973614068352617, 742371.169250124250539, 742382.364899913896807, 742393.560563437407836, 742404.756240694201551, 742415.951931684510782, 742427.147636407869868, 742438.343354864162393, 742449.539087053271942, 742460.734832975082099, 742471.930592629243620, 742483.126366015523672, 742494.322153133922257, 742505.517953984090127, 742516.713768565910868, 742527.909596879268065, 742539.105438923696056, 742550.301294699427672, 742561.497164205880836, 742572.693047443171963, 742583.888944410718977, 742595.084855108754709, 742606.280779537046328, 742617.476717695128173, 742628.672669583000243, 742639.868635200546123, 742651.064614547416568, 742662.260607623378746, 742673.456614428316243, 742684.652634962112643, 742695.848669224651530, 742707.044717215583660, 742718.240778934792615, 742729.436854381929152, 742740.632943557226099, 742751.829046459868550, 742763.025163090089336, 742774.221293447655626, 742785.417437532334588, 742796.613595344009809, 742807.809766882332042, 742819.005952147301286, 742830.202151138568297, 742841.398363856016658, 742852.594590299413539, 742863.790830468642525, 742874.987084363587201, 742886.183351983898319, 742897.379633329343051, 742908.575928399921395, 742919.772237195284106, 742930.968559715431184, 742942.164895960013382, 742953.361245928914286, 742964.557609621784650, 742975.753987038740888, 742986.950378179433756, 742998.146783043397591, 743009.343201630981639, 743020.539633941603824, 743031.736079975380562, 743042.932539731729776, 743054.129013210767880, 743065.325500412262045, 743076.522001335863024, 743087.718515981454402, 743098.915044349036179, 743110.111586438142695, 743121.308142248890363, 743132.504711780813523, 743143.701295033912174, 743154.897892007837072, 743166.094502702355385, 743177.291127117583528, 743188.487765253055841, 743199.684417108772323, 743210.881082684383728, 743222.077761979773641, 743233.274454994709231, 743244.471161729190499, 743255.667882182751782, 743266.864616355276667, 743278.061364246765152, 743289.258125856867991, 743300.454901185468771, 743311.651690232218243, 743322.848492997116409, 743334.045309479697607, 743345.242139680311084, 743356.438983598258346, 743367.635841233655810, 743378.832712586037815, 743390.029597655520774, 743401.226496441755444, 743412.423408944508992, 743423.620335163548589, 743434.817275098874234, 743446.014228750253096, 743457.211196117452346, 743468.408177200239152, 743479.605171998497099, 743490.802180512109771, 743501.999202740495093, 743513.196238684002310, 743524.393288342165761, 743535.590351714752614, 743546.787428801879287, 743557.984519602847286, 743569.181624117889442, 743580.378742346656509, 743591.575874289148487, 743602.773019944783300, 743613.970179313793778, 743625.167352395597845, 743636.364539190428331, 743647.561739697703160, 743658.758953917655163, 743669.956181849469431, 743681.153423493611626, 743692.350678849616088, 743703.547947917366400, 743714.745230696513318, 743725.942527187056839, 743737.139837388647720, 743748.337161301053129, 743759.534498924273066, 743770.731850258191116, 743781.929215302341618, 743793.126594056724571, 743804.323986521107145, 743815.521392695372924, 743826.718812579056248, 743837.916246172157116, 743849.113693474675529, 743860.311154486145824, 743871.508629206568003, 743882.706117635709234, 743893.903619773220271, 743905.101135619101115, 743916.298665172886103, 743927.496208434808068, 743938.693765404401347, 743949.891336081665941, 743961.088920466136187, 743972.286518557928503, 743983.484130356460810, 743994.681755862082355, 744005.879395073978230, 744017.077047992497683, 744028.274714617407881, 744039.472394948126748, 744050.670088984770700, 744061.867796727106906, 744073.065518174902536, 744084.263253328041174, 744095.461002186173573, 744106.658764749416150, 744117.856541017186828, 744129.054330989602022, 744140.252134666428901, 744151.449952047318220, 744162.647783132153563, 744173.845627920818515, 744185.043486413196661, 744196.241358608938754, 744207.439244507811964, 744218.637144109932706, 744229.835057414718904, 744241.032984422286972, 744252.230925132171251, 744263.428879544488154, 744274.626847658888437, 744285.824829475255683, 744297.022824993240647, 744308.220834212843329, 744319.418857133714482, 744330.616893755737692, 744341.814944078796543, 744353.013008102658205, 744364.211085827089846, 744375.409177251975052, 744386.607282377197407, 744397.805401202291250, 744409.003533727140166, 744420.201679951860569, 744431.399839875870384, 744442.598013499286026, 744453.796200821874663, 744464.994401843170635, 744476.192616563406773, 744487.390844982000999, 744498.589087099069729, 744509.787342914147303, 744520.985612427233718, 744532.183895638328977, 744543.382192546734586, 744554.580503152799793, 744565.778827455942519, 744576.977165456279181, 744588.175517153111286, 744599.373882546904497, 744610.572261637076735, 744621.770654423628002, 744632.969060906209052, 744644.167481084587052, 744655.365914958762005, 744666.564362528384663, 744677.762823793571442, 744688.961298753856681, 744700.159787409007549, 744711.358289759024046, 744722.556805803673342, 744733.755335542606190, 744744.953878975939006, 744756.152436103089713, 744767.351006924174726, 744778.549591438961215, 744789.748189647216350, 744800.946801548707299, 744812.145427143434063, 744823.344066430930980, 744834.542719410965219, 744845.741386083886027, 744856.940066448994912, 744868.138760506291874, 744879.337468255544081, 744890.536189696635120, 744901.734924829215743, 744912.933673653169535, 744924.132436168612912, 744935.331212374847382, 744946.530002271872945, 744957.728805859922431, 744968.927623138064519, 744980.126454106648453, 744991.325298765324987, 745002.524157113861293, 745013.723029152140953, 745024.921914879931137, 745036.120814297231846, 745047.319727403577417, 745058.518654198851436, 745069.717594683053903, 745080.916548855602741, 745092.115516716730781, 745103.314498266088776, 745114.513493503443897, 745125.712502428679727, 745136.911525041563436, 745148.110561341862194, 745159.309611329576001, 745170.508675004239194, 745181.707752365851775, 745192.906843414297327, 745204.105948149110191, 745215.305066570523195, 745226.504198677954264, 745237.703344471286982, 745248.902503950288519, 745260.101677115191706, 745271.300863965298049, 745282.500064500840381, 745293.699278721353039, 745304.898506626719609, 745316.097748216590844, 745327.297003491083160, 745338.496272449730895, 745349.695555092650466, 745360.894851419492625, 745372.094161429908127, 745383.293485124013387, 745394.492822501459159, 745405.692173561896197, 745416.891538305440918, 745428.090916731744073, 745439.290308840689249, 745450.489714632043615, 745461.689134105574340, 745472.888567261281423, 745484.088014098699205, 745495.287474617827684, 745506.486948818317614, 745517.686436700285412, 745528.885938263381831, 745540.085453507374041, 745551.284982432029210, 745562.484525037230924, 745573.684081322862767, 745584.883651288459077, 745596.083234934252687, 745607.282832259777933, 745618.482443265034817, 745629.682067949557677, 745640.881706313346513, 745652.081358356168494, 745663.281024078023620, 745674.480703478329815, 745685.680396557087079, 745696.880103314295411, 745708.079823749605566, 745719.279557862901129, 745730.479305653832853, 745741.679067122400738, 745752.878842268139124, 745764.078631091164425, 745775.278433591243811, 745786.478249768144451, 745797.678079621517099, 745808.877923151478171, 745820.077780357562006, 745831.277651239885017, 745842.477535797865130, 745853.677434031618759, 745864.877345940796658, 745876.077271525398828, 745887.277210784959607, 745898.477163719595410, 745909.677130328840576, 745920.877110612811521, 745932.077104570926167, 745943.277112203417346, 745954.477133509935811, 745965.677168490248732, 745976.877217144006863, 745988.077279471443035, 745999.277355471975170, 746010.477445145603269, 746021.677548492210917, 746032.877665511332452, 746044.077796202967875, 746055.277940567000769, 746066.478098603314720, 746077.678270311327651, 746088.878455691039562, 746100.078654742566869, 746111.278867465211079, 746122.479093859437853, 746133.679333924432285, 746144.879587660194375, 746156.079855066607706, 746167.280136143323034, 746178.480430890689604, 746189.680739307776093, 746200.881061395048164, 746212.081397151807323, 746223.281746578053571, 746234.482109673786908, 746245.682486438541673, 746256.882876872201450, 746268.083280974766240, 746279.283698745886795, 746290.484130185330287, 746301.684575292980298, 746312.885034068720415, 746324.085506512317806, 746335.285992623306811, 746346.486492402036674, 746357.687005847925320, 746368.887532960856333, 746380.088073740829714, 746391.288628187379800, 746402.489196300506592, 746413.689778080093674, 746424.890373525558971, 746436.090982637018897, 746447.291605414473452, 746458.492241857340559, 746469.692891965736635, 746480.893555739312433, 746492.094233177835122, 746503.294924281188287, 746514.495629049255513, 746525.696347481803969, 746536.897079578717239, 746548.097825339646079, 746559.298584764474072, 746570.499357852968387, 746581.700144605129026, 746592.900945020490326, 746604.101759099052288, 746615.302586840698496, 746626.503428244963288, 746637.704283312079497, 746648.905152041348629, 746660.106034433003515, 746671.306930486578494, 746682.507840202073567, 746693.708763579255901, 746704.909700617892668, 746716.110651317867450, 746727.311615678947419, 746738.512593701016158, 746749.713585383724421, 746760.914590726839378, 746772.115609730477445, 746783.316642394289374, 746794.517688718158752, 746805.718748701619916, 746816.919822345022112, 746828.120909647550434, 746839.322010609437712, 746850.523125230451114, 746861.724253510124981, 746872.925395448692143, 746884.126551045686938, 746895.327720300992951, 746906.528903214377351, 746917.730099785840139, 746928.931310014915653, 746940.132533901487477, 746951.333771445555612, 746962.535022646770813, 746973.736287505133078, 746984.937566020176746, 746996.138858191901818, 747007.340164019842632, 747018.541483504348435, 747029.742816644837148, 747040.944163441308774, 747052.145523893297650, 747063.346898000920191, 747074.548285763710737, 747085.749687181785703, 747096.951102254679427, 747108.152530982391909, 747119.353973364923149, 747130.555429401574656, 747141.756899092579260, 747152.958382437471300, 747164.159879436250776, 747175.361390088684857, 747186.562914394540712, 747197.764452353818342, 747208.966003965935670, 747220.167569231125526, 747231.369148149038665, 747242.570740719442256, 747253.772346942219883, 747264.973966817138717, 747276.175600343965925, 747287.377247522701509, 747298.578908352879807, 747309.780582834617235, 747320.982270967564546, 747332.183972751488909, 747343.385688186157495, 747354.587417271686718, 747365.789160007610917, 747376.990916393813677, 747388.192686430178583, 747399.394470116472803, 747410.596267452347092, 747421.798078438034281, 747432.999903072835878, 747444.201741356868297, 747455.403593289898708, 747466.605458871810697, 747477.807338102371432, 747489.009230981348082, 747500.211137508391403, 747511.413057683501393, 747522.614991506678052, 747533.816938977455720, 747545.018900095717981, 747556.220874861232005, 747567.422863273997791, 747578.624865333666094, 747589.826881040004082, 747601.028910392895341, 747612.230953392223455, 747623.433010037872009, 747634.635080329491757, 747645.837164266849868, 747657.039261849829927, 747668.241373078431934, 747679.443497951957397, 747690.645636470755562, 747701.847788634477183, 747713.049954442889430, 747724.252133895875886, 747735.454326993087307, 747746.656533734523691, 747757.858754119835794, 747769.060988149023615, 747780.263235821737908, 747791.465497137745842, 747802.667772097163834, 747813.870060699526221, 747825.072362944833003, 747836.274678832618520, 747847.477008362999186, 747858.679351535625756, 747869.881708350265399, 747881.084078807034530, 747892.286462905351073, 747903.488860645331442, 747914.691272026626393, 747925.893697049003094, 747937.096135712345131, 747948.298588016652502, 747959.501053961459547, 747970.703533546649851, 747981.906026772223413, 747993.108533637714572, 748004.311054143123329, 748015.513588288100436, 748026.716136072762311, 748037.918697496643290, 748049.121272559626959, 748060.323861261713319, 748071.526463602320291, 748082.729079581797123, 748093.931709199445322, 748105.134352455032058, 748116.337009349022992, 748127.539679880719632, 748138.742364049889147, 748149.945061856764369, 748161.147773300763220, 748172.350498381885700, 748183.553237099782564, 748194.755989454453811, 748205.958755445666611, 748217.161535073304549, 748228.364328336901963, 748239.567135236575268, 748250.769955771975219, 748261.972789943101816, 748273.175637749256566, 748284.378499191021547, 748295.581374267698266, 748306.784262979170308, 748317.987165325321257, 748329.190081306034699, 748340.393010920961387, 748351.595954169752076, 748362.798911052756011, 748374.001881569507532, 748385.204865719657391, 748396.407863503322005, 748407.610874920035712, 748418.813899969798513, 748430.016938652377576, 748441.219990967423655, 748452.423056914936751, 748463.626136494800448, 748474.829229706781916, 748486.032336550415494, 748497.235457025817595, 748508.438591132871807, 748519.641738870996051, 748530.844900240423158, 748542.048075240687467, 748553.251263871905394, 748564.454466133378446, 748575.657682025455870, 748586.860911547788419, 748598.064154699910432, 748609.267411481938325, 748620.470681893639266, 748631.673965934780426, 748642.877263605361804, 748654.080574904801324, 748665.283899833215401, 748676.487238390371203, 748687.690590576035902, 748698.893956389976665, 748710.097335832193494, 748721.300728902337141, 748732.504135600291193, 748743.707555925706401, 748754.910989878699183, 748766.114437458803877, 748777.317898665904067, 748788.521373499999754, 748799.724861960741691, 748810.928364048013464, 748822.131879761465825, 748833.335409101098776, 748844.538952066563070, 748855.742508657742292, 748866.946078874752857, 748878.149662716896273, 748889.353260184288956, 748900.556871276698075, 748911.760495993890800, 748922.964134335867129, 748934.167786302044988, 748945.371451892540790, 748956.575131107121706, 748967.778823945554905, 748978.982530407840386, 748990.186250493512489, 749001.389984202687629, 749012.593731534783728, 749023.797492489917204, 749035.001267067622393, 749046.205055268132128, 749057.408857091097161, 749068.612672536284663, 749079.816501603345387, 749091.020344292395748, 749102.224200603086501, 749113.428070535068400, 749124.631954088457860, 749135.835851263022050, 749147.039762058411725, 749158.243686474626884, 749169.447624511201866, 749180.651576168369502, 749191.855541445547715, 749203.059520342736505, 749214.263512859703042, 749225.467518996330909, 749236.671538752503693, 749247.875572127755731, 749259.079619122203439, 749270.283679735381156, 749281.487753967288882, 749292.691841817693785, 749303.895943286595866, 749315.100058373413049, 749326.304187078261748, 749337.508329400909133, 749348.712485341122374, 749359.916654898785055, 749371.120838073431514, 749382.325034865178168, 749393.529245273908600, 749404.733469299273565, 749415.937706941040233, 749427.141958199092187, 749438.346223073313013, 749449.550501563237049, 749460.754793668980710, 749471.959099390194751, 749483.163418726995587, 749494.367751678801142, 749505.572098245611414, 749516.776458427193575, 749527.980832223431207, 749539.185219633975066, 749550.389620658825152, 749561.594035297865048, 749572.798463550512679, 749584.002905417117290, 749595.207360897096805, 749606.411829990451224, 749617.616312696831301, 749628.820809016120620, 749640.025318948319182, 749651.229842493077740, 749662.434379650047049, 749673.638930419459939, 749684.843494800734334, 749696.048072793870233, 749707.252664398634806, 749718.457269614911638, 749729.661888442467898, 749740.866520881070755, 749752.071166930603795, 749763.275826590834185, 749774.480499861645512, 749785.685186742688529, 749796.889887233963236, 749808.094601335236803, 749819.299329046276398, 749830.504070366965607, 749841.708825297188014, 749852.913593836477958, 749864.118375984835438, 749875.323171742027625, 749886.527981107938103, 749897.732804082450457, 749908.937640665099025, 749920.142490856000222, 749931.347354654804803, 749942.552232061396353, 749953.757123075542040, 749964.962027697009034, 749976.166945925680920, 749987.371877761441283, 749998.576823204057291, 750009.781782253296115, 750020.986754909041338, 750032.191741170943715, 750043.396741038886830, 750054.601754512870684, 750065.806781592546031, 750077.011822277680039, 750088.216876568272710, 750099.421944464091212, 750110.627025964786299, 750121.832121070125140, 750133.037229780340567, 750144.242352094850503, 750155.447488013538532, 750166.652637536404654, 750177.857800663099624, 750189.062977393507026, 750200.268167727394029, 750211.473371664527804, 750222.678589204791933, 750233.883820348070003, 750245.089065094012767, 750256.294323442736641, 750267.499595393659547, 750278.704880946897902, 750289.910180102102458, 750301.115492859040387, 750312.320819217711687, 750323.526159177883528, 750334.731512739323080, 750345.936879901913926, 750357.142260665190406, 750368.347655029385351, 750379.553062993916683, 750390.758484559017234, 750401.963919724221341, 750413.169368489412591, 750424.374830854474567, 750435.580306819058023, 750446.785796383046545, 750457.991299546440132, 750469.196816308773123, 750480.402346669929102, 750491.607890629908070, 750502.813448188244365, 750514.019019344937988, 750525.224604099872522, 750536.430202452698722, 750547.635814403183758, 750558.841439951327629, 750570.047079096897505, 750581.252731839544140, 750592.458398179383948, 750603.664078116067685, 750614.869771649246104, 750626.075478779152036, 750637.281199505086988, 750648.486933827167377, 750659.692681745276786, 750670.898443259065971, 750682.104218368418515, 750693.310007073101588, 750704.515809372998774, 750715.721625267644413, 750726.927454757387750, 750738.133297841646709, 750749.339154520304874, 750760.545024793362245, 750771.750908660469577, 750782.956806121394038, 750794.162717176019214, 750805.368641824112274, 750816.574580065556802, 750827.780531900119968, 750838.986497327685356, 750850.192476348136552, 750861.398468961007893, 750872.604475166299380, 750883.810494963778183, 750895.016528353444301, 750906.222575334832072, 750917.428635907941498, 750928.634710072656162, 750939.840797828510404, 750951.046899175504223, 750962.253014113404788, 750973.459142641979270, 750984.665284761227667, 750995.871440470684320, 751007.077609770582058, 751018.283792660455219, 751029.489989139954560, 751040.696199209196493, 751051.902422867948189, 751063.108660115743987, 751074.314910952933133, 751085.521175378700718, 751096.727453393395990, 751107.933744996669702, 751119.140050188056193, 751130.346368967671879, 751141.552701335283928, 751152.759047290659510, 751163.965406833682209, 751175.171779964119196, 751186.378166681970470, 751197.584566986537538, 751208.790980878169648, 751219.997408356517553, 751231.203849421115592, 751242.410304072313011, 751253.616772309411317, 751264.823254132526927, 751276.029749541543424, 751287.236258535878733, 751298.442781115882099, 751309.649317280738614, 751320.855867030913942, 751332.062430365709588, 751343.269007285358384, 751354.475597789394669, 751365.682201877702028, 751376.888819550164044, 751388.095450806547888, 751399.302095646271482, 751410.508754069916904, 751421.715426076902077, 751432.922111666994169, 751444.128810840076767, 751455.335523596033454, 751466.542249934631400, 751477.748989855404943, 751488.955743358586915, 751500.162510443944484, 751511.369291111128405, 751522.576085360022262, 751533.782893190276809, 751544.989714602124877, 751556.196549594984390, 751567.403398168506101, 751578.610260323155671, 751589.817136058467440, 751601.024025373975746, 751612.230928269797005, 751623.437844745698385, 751634.644774801330641, 751645.851718436693773, 751657.058675651322119, 751668.265646445564926, 751679.472630818840116, 751690.679628771031275, 751701.886640302021988, 751713.093665411463007, 751724.300704099354334, 751735.507756365230307, 751746.714822209323756, 751757.921901631285436, 751769.128994630766101, 751780.336101207765751, 751791.543221362051554, 751802.750355093507096, 751813.957502401666716, 751825.164663286530413, 751836.371837748098187, 751847.579025785904378, 751858.786227399948984, 751869.993442589999177, 751881.200671355822124, 751892.407913697301410, 751903.615169613971375, 751914.822439106064849, 751926.029722173232585, 751937.237018815358169, 751948.444329031975940, 751959.651652823202312, 751970.858990188688040, 751982.066341128433123, 751993.273705641971901, 752004.481083729420789, 752015.688475390314125, 752026.895880624768324, 752038.103299432434142, 752049.310731813078746, 752060.518177766585723, 752071.725637292722240, 752082.933110391371883, 752094.140597062301822, 752105.348097305279225, 752116.555611120304093, 752127.763138507027179, 752138.970679465215653, 752150.178233994869515, 752161.385802095639519, 752172.593383767525665, 752183.800979010295123, 752195.008587823598646, 752206.216210207319818, 752217.423846161458641, 752228.631495685549453, 752239.839158779475838, 752251.046835443121381, 752262.254525676486082, 752273.462229479104280, 752284.669946850859560, 752295.877677791751921, 752307.085422301199287, 752318.293180379434489, 752329.500952025991865, 752340.708737240871415, 752351.916536023723893, 752363.124348374549299, 752374.332174293114804, 752385.540013778954744, 752396.747866832418367, 752407.955733452807181, 752419.163613640237600, 752430.371507394360378, 752441.579414715175517, 752452.787335602333769, 752463.995270055718720, 752475.203218075213954, 752486.411179660470225, 752497.619154811371118, 752508.827143527916633, 752520.035145809641108, 752531.243161656428128, 752542.451191068277694, 752553.659234044724144, 752564.867290585883893, 752576.075360691407695, 752587.283444360946305, 752598.491541594616137, 752609.699652392184362, 752620.907776753301732, 752632.115914677968249, 752643.324066165951081, 752654.532231216900982, 752665.740409830817953, 752676.948602007352747, 752688.156807746505365, 752699.365027047926560, 752710.573259911732748, 752721.781506337341852, 752732.989766324870288, 752744.198039873968810, 752755.406326984404586, 752766.614627656177618, 752777.822941889055073, 752789.031269682804123, 752800.239611037308350, 752811.447965952218510, 752822.656334427534603, 752833.864716463023797, 752845.073112058336847, 752856.281521213473752, 752867.489943928434514, 752878.698380202520639, 752889.906830036081374, 752901.115293428534642, 752912.323770379880443, 752923.532260889769532, 752934.740764958318323, 752945.949282585177571, 752957.157813770230860, 752968.366358513128944, 752979.574916813755408, 752990.783488671877421, 753001.992074087611400, 753013.200673060258850, 753024.409285590169020, 753035.617911676876247, 753046.826551320264116, 753058.035204520099796, 753069.243871276266873, 753080.452551588532515, 753091.661245456663892, 753102.869952880428173, 753114.078673859825358, 753125.287408394622616, 753136.496156484703533, 753147.704918129602447, 753158.913693329435773, 753170.122482083970681, 753181.331284392741509, 753192.540100255981088, 753203.748929673223756, 753214.957772644469514, 753226.166629169369116, 753237.375499247689731, 753248.584382879547775, 753259.793280064477585, 753271.002190802129917, 753282.211115092970431, 753293.420052936300635, 753304.629004332004115, 753315.837969279964454, 753327.046947780065238, 753338.255939831957221, 753349.464945435640402, 753360.673964590649121, 753371.882997297216207, 753383.092043554876000, 753394.301103363395669, 753405.510176722775213, 753416.719263632665388, 753427.928364093182608, 753439.137478103628382, 753450.346605664235540, 753461.555746774771251, 753472.764901434886269, 753483.974069644580595, 753495.183251403621398, 753506.392446711775847, 753517.601655568811111, 753528.810877974494360, 753540.020113928942010, 753551.229363431571983, 753562.438626482617110, 753573.647903081611730, 753584.857193228439428, 753596.066496922983788, 753607.275814164895564, 753618.485144954174757, 753629.694489290472120, 753640.903847173904069, 753652.113218603772111, 753663.322603580425493, 753674.532002103398554, 753685.741414172574878, 753696.950839787605219, 753708.160278948722407, 753719.369731655344367, 753730.579197907354683, 753741.788677704753354, 753752.998171047191136, 753764.207677934435196, 753775.417198366485536, 753786.626732342992909, 753797.836279863957316, 753809.045840929029509, 753820.255415538325906, 753831.465003691264428, 753842.674605387845077, 753853.884220627718605, 753865.093849410768598, 753876.303491737111472, 753887.513147606281564, 753898.722817018278874, 753909.932499972637743, 753921.142196469358169, 753932.351906508323736, 753943.561630089185201, 753954.771367211709730, 753965.981117876013741, 753977.190882081631571, 753988.400659828563221, 753999.610451116575859, 754010.820255945436656, 754022.030074315029196, 754033.239906224887818, 754044.449751675245352, 754055.659610665752552, 754066.869483196176589, 754078.079369266401045, 754089.289268876193091, 754100.499182025319897, 754111.709108713781461, 754122.919048941112123, 754134.129002707428299, 754145.338970012380742, 754156.548950855853036, 754167.758945237612352, 754178.968953157542273, 754190.178974615409970, 754201.389009610982612, 754212.599058143910952, 754223.809120214544237, 754235.019195822300389, 754246.229284967062995, 754257.439387648599222, 754268.649503866909072, 754279.859633621643297, 754291.069776912452653, 754302.279933739686385, 754313.490104102646001, 754324.700288001447916, 754335.910485435742885, 754347.120696405414492, 754358.330920910346322, 754369.541158950189129, 754380.751410524826497, 754391.961675634258427, 754403.171954277902842, 754414.382246456108987, 754425.592552168294787, 754436.802871414227411, 754448.013204194023274, 754459.223550507333130, 754470.433910354040563, 754481.644283733912744, 754492.854670646833256, 754504.065071092336439, 754515.275485070655122, 754526.485912581323646, 754537.696353624342009, 754548.906808199360967, 754560.117276306264102, 754571.327757944935001, 754582.538253115257248, 754593.748761816765182, 754604.959284049458802, 754616.169819813105278, 754627.380369107471779, 754638.590931932325475, 754649.801508288015611, 754661.012098173610866, 754672.222701589460485, 754683.433318535098806, 754694.643949010525830, 754705.854593015275896, 754717.065250549465418, 754728.275921612745151, 754739.486606205115095, 754750.697304326109588, 754761.908015975961462, 754773.118741153972223, 754784.329479860258289, 754795.540232094703242, 754806.750997856841423, 754817.961777146789245, 754829.172569964197464, 754840.383376308949664, 754851.594196180696599, 754862.805029579671100, 754874.015876505174674, 754885.226736957323737, 754896.437610935885459, 754907.648498440627009, 754918.859399471431971, 754930.070314028183930, 754941.281242110417224, 754952.492183718248270, 754963.703138851444237, 754974.914107509539463, 754986.125089692650363, 754997.336085400660522, 755008.547094633104280, 755019.758117389981635, 755030.969153671059757, 755042.180203476222232, 755053.391266805236228, 755064.602343657752499, 755075.813434033771046, 755087.024537933175452, 755098.235655355732888, 755109.446786300977692, 755120.657930769259110, 755131.869088759995066, 755143.080260272836313, 755154.291445308248512, 755165.502643865416758, 755176.713855944573879, 755187.925081545370631, 755199.136320667574182, 755210.347573311068118, 755221.558839475736022, 755232.770119160995819, 755243.981412367313169, 755255.192719094222412, 755266.404039341374300, 755277.615373108652420, 755288.826720395940356, 755300.038081203121692, 755311.249455529963598, 755322.460843376116827, 755333.672244741581380, 755344.883659626124427, 755356.095088029629551, 755367.306529951980338, 755378.517985392711125, 755389.729454351705499, 755400.940936828847043, 755412.152432824135758, 755423.363942337338813, 755434.575465367874131, 755445.787001916207373, 755456.998551981523633, 755468.210115564055741, 755479.421692663338035, 755490.633283279370517, 755501.844887411920354, 755513.056505060871132, 755524.268136225990020, 755535.479780907160603, 755546.691439104033634, 755557.903110816492699, 755569.114796044421382, 755580.326494787470438, 755591.538207045756280, 755602.749932818813249, 755613.961672106641345, 755625.173424909124151, 755636.385191225796007, 755647.596971056540497, 755658.808764401241206, 755670.020571259781718, 755681.232391632045619, 755692.444225517683662, 755703.656072916579433, 755714.867933828500099, 755726.079808253212832, 755737.291696190717630, 755748.503597640548833, 755759.715512602939270, 755770.927441077423282, 755782.139383063884452, 755793.351338562089950, 755804.563307571923360, 755815.775290093151852, 755826.987286125542596, 755838.199295668862760, 755849.411318723345175, 755860.623355288291350, 755871.835405363817699, 755883.047468949691392, 755894.259546045796014, 755905.471636651665904, 755916.683740767301060, 755927.895858392701484, 755939.107989527285099, 755950.320134171284735, 755961.532292324234731, 755972.744463986135088, 755983.956649156636558, 755995.168847835739143, 756006.381060022860765, 756017.593285718234256, 756028.805524921626784, 756040.017777632805519, 756051.230043851654045, 756062.442323577823117, 756073.654616811196320, 756084.866923551424406, 756096.079243798623793, 756107.291577552561648, 756118.503924812888727, 756129.716285579721443, 756140.928659852477722, 756152.141047631273977, 756163.353448915760964, 756174.565863705705851, 756185.778292001225054, 756196.990733801852912, 756208.203189107589424, 756219.415657918201759, 756230.628140233457088, 756241.840636053122580, 756253.053145377198234, 756264.265668205218390, 756275.478204537183046, 756286.690754373092204, 756297.903317712480202, 756309.115894555114210, 756320.328484901110642, 756331.541088750120252, 756342.753706101910211, 756353.966336956364103, 756365.178981313249096, 756376.391639172565192, 756387.604310533963144, 756398.816995397093706, 756410.029693762189709, 756421.242405628785491, 756432.455130996531807, 756443.667869865894318, 756454.880622235941701, 756466.093388107023202, 756477.306167478673160, 756488.518960350891575, 756499.731766723212786, 756510.944586595869623, 756522.157419968047179, 756533.370266840443946, 756544.583127212012187, 756555.796001083217561, 756567.008888453477994, 756578.221789322909899, 756589.434703691047616, 756600.647631557891145, 756611.860572922974825, 756623.073527786531486, 756634.286496148211882, 756645.499478007783182, 756656.712473365128972, 756667.925482219900005, 756679.138504572212696, 756690.351540421601385, 756701.564589768066071, 756712.777652611257508, 756723.990728951175697, 756735.203818787471391, 756746.416922120144591, 756757.630038948846050, 756768.843169273459353, 756780.056313093868084, 756791.269470409606583, 756802.482641221024096, 756813.695825527538545, 756824.909023329033516, 756836.122234625276178, 756847.335459416266531, 756858.548697701655328, 756869.761949481326155, 756880.975214755046181, 756892.188493522698991, 756903.401785784051754, 756914.615091539104469, 756925.828410787391476, 756937.041743528796360, 756948.255089763319120, 756959.468449490494095, 756970.681822710554115, 756981.895209422917105, 756993.108609627699479, 757004.322023324551992, 757015.535450513125397, 757026.748891193536110, 757037.962345365434885, 757049.175813028705306, 757060.389294183230959, 757071.602788828662597, 757082.816296965000220, 757094.029818592010997, 757105.243353709345683, 757116.456902317004278, 757127.670464414753951, 757138.884040002361871, 757150.097629079711623, 757161.311231646686792, 757172.524847703054547, 757183.738477248349227, 757194.952120282920077, 757206.165776806068607, 757217.379446817911230, 757228.593130318331532, 757239.806827306980267, 757251.020537783741020, 757262.234261748264544, 757273.447999200667255, 757284.661750140599906, 757295.875514567713253, 757307.089292482123710, 757318.303083883482032, 757329.516888771788217, 757340.730707146576606, 757351.944539007963613, 757363.158384355483577, 757374.372243189252913, 757385.586115508689545, 757396.800001314026304, 757408.013900604797527, 757419.227813381003216, 757430.441739642294124, 757441.655679388670251, 757452.869632619898766, 757464.083599335630424, 757475.297579535865225, 757486.511573220370337, 757497.725580388912931, 757508.939601041493006, 757520.153635177644901, 757531.367682797485031, 757542.581743900547735, 757553.795818486833014, 757565.009906556108035, 757576.224008108256385, 757587.438123142928816, 757598.652251660125330, 757609.866393659613095, 757621.080549141159281, 757632.294718104531057, 757643.508900549612008, 757654.723096476402134, 757665.937305884435773, 757677.151528773829341, 757688.365765143884346, 757699.580014994950034, 757710.794278326677158, 757722.008555138716474, 757733.222845431067981, 757744.437149203731678, 757755.651466456009075, 757766.865797188133001, 757778.080141399754211, 757789.294499090872705, 757800.508870261022821, 757811.723254910088144, 757822.937653038068675, 757834.152064644847997, 757845.366489729844034, 757856.580928293289617, 757867.795380334719084, 757879.009845854016021, 757890.224324851064011, 757901.438817325630225, 757912.653323277598247, 757923.867842706851661, 757935.082375613041222, 757946.296921995934099, 757957.511481855646707, 757968.726055191713385, 757979.940642003901303, 757991.155242292326875, 758002.369856056640856, 758013.584483296843246, 758024.799124012351967, 758036.013778203283437, 758047.228445869521238, 758058.443127010716125, 758069.657821626518853, 758080.872529717045836, 758092.087251282180659, 758103.301986321574077, 758114.516734834993258, 758125.731496822438203, 758136.946272283443250, 758148.161061218008399, 758159.375863625900820, 758170.590679507236928, 758181.805508861318231, 758193.020351688377559, 758204.235207988065667, 758215.450077760033309, 758226.664961004513316, 758237.879857720923610, 758249.094767909264192, 758260.309691569302231, 758271.524628701037727, 758282.739579304121435, 758293.954543378320523, 758305.169520923518576, 758316.384511939599179, 758327.599516426329501, 758338.814534383360296, 758350.029565810807981, 758361.244610708439723, 758372.459669075906277, 758383.674740913091227, 758394.889826219878159, 758406.104924996034242, 758417.320037241210230, 758428.535162955638953, 758439.750302138738334, 758450.965454790508375, 758462.180620910832658, 758473.395800499478355, 758484.610993556096219, 758495.826200080802664, 758507.041420073015615, 758518.256653532851487, 758529.471900460193865, 758540.687160854693502, 758551.902434716117568, 758563.117722044466063, 758574.333022839389741, 758585.548337100772187, 758596.763664828496985, 758607.979006022447720, 758619.194360682158731, 758630.409728807746433, 758641.625110398745164, 758652.840505455271341, 758664.055913976859301, 758675.271335963625461, 758686.486771414987743, 758697.702220331178978, 758708.917682711849920, 758720.133158556884155, 758731.348647865932435, 758742.564150639111176, 758753.779666875838302, 758764.995196575997397, 758776.210739739704877, 758787.426296366727911, 758798.641866456717253, 758809.857450009556487, 758821.073047025012784, 758832.288657502969727, 758843.504281443194486, 758854.719918845454231, 758865.935569709748961, 758877.151234035845846, 758888.366911823628470, 758899.582603072631173, 758910.798307782970369, 758922.014025954180397, 758933.229757586261258, 758944.445502679096535, 758955.661261232453398, 758966.877033246099018, 758978.092818719800562, 758989.308617653441615, 759000.524430047022179, 759011.740255899960175, 759022.956095212372020, 759034.171947984141298, 759045.387814214802347, 759056.603693904355168, 759067.819587052566931, 759079.035493659437634, 759090.251413724385202, 759101.467347247758880, 759112.683294228743762, 759123.899254667689092, 759135.115228564245626, 759146.331215918064117, 759157.547216729260981, 759168.763230997370556, 759179.979258722509257, 759191.195299904211424, 759202.411354542477056, 759213.627422637073323, 759224.843504187767394, 759236.059599194559269, 759247.275707656983286, 759258.491829575155862, 759269.707964948611334, 759280.924113777233288, 759292.140276061138138, 759303.356451799743809, 759314.572640993050300, 759325.788843640941195, 759337.005059743067250, 759348.221289299544878, 759359.437532309792005, 759370.653788773925044, 759381.870058691594750, 759393.086342062801123, 759404.302638887194917, 759415.518949164659716, 759426.735272894962691, 759437.951610078103840, 759449.167960713501088, 759460.384324801503681, 759471.600702341645956, 759482.817093333578669, 759494.033497777534649, 759505.249915672931820, 759516.466347019886598, 759527.682791818166152, 759538.899250067188405, 759550.115721767302603, 759561.332206918275915, 759572.548705519526266, 759583.765217571286485, 759594.981743073323742, 759606.198282025172375, 759617.414834426832385, 759628.631400278070942, 759639.847979578888044, 759651.064572328934446, 759662.281178528093733, 759673.497798176133074, 759684.714431272936054, 759695.931077818153426, 759707.147737811901607, 759718.364411253598519, 759729.581098143476993, 759740.797798481187783, 759752.014512266381644, 759763.231239499174990, 759774.447980179218575, 759785.664734306395985, 759796.881501880241558, 759808.098282901104540, 759819.315077368519269, 759830.531885282136500, 759841.748706642072648, 759852.965541447978467, 759864.182389699737541, 759875.399251397117041, 759886.616126539884135, 759897.833015128038824, 759909.049917161348276, 759920.266832639463246, 759931.483761562383734, 759942.700703929876909, 759953.917659741709940, 759965.134628997766413, 759976.351611697813496, 759987.568607841734774, 759998.785617429413833, 760010.002640460385010, 760021.219676934881136, 760032.436726852320135, 760043.653790212818421, 760054.870867016026750, 760066.087957261712290, 760077.305060949758627, 760088.522178080165759, 760099.739308652700856, 760110.956452666898258, 760122.173610122874379, 760133.390781020279974, 760144.607965358998626, 760155.825163138797507, 760167.042374359676614, 760178.259599021286704, 760189.476837123511359, 760200.694088666001335, 760211.911353648989461, 760223.128632071777247, 760234.345923934481107, 760245.563229236868210, 760256.780547978822142, 760267.997880159993656, 760279.215225780499168, 760290.432584839873016, 760301.649957337998785, 760312.867343274760060, 760324.084742649807595, 760335.302155463257805, 760346.519581714645028, 760357.737021404085681, 760368.954474531114101, 760380.171941095613874, 760391.389421097585000, 760402.606914536561817, 760413.824421412660740, 760425.041941725416109, 760436.259475474827923, 760447.477022660779767, 760458.694583283038810, 760469.912157341139391, 760481.129744835314341, 760492.347345764981583, 760503.564960130373947, 760514.782587931142189, 760526.000229167053476, 760537.217883837874979, 760548.435551943606697, 760559.653233483899385, 760570.870928458753042, 760582.088636867585592, 760593.306358710746281, 760604.524093987769447, 760615.741842698538676, 760626.959604842821136, 760638.177380420616828, 760649.395169431460090, 760660.612971875350922, 760671.830787751940079, 760683.048617061343975, 760694.266459803096950, 760705.484315977199003, 760716.702185583417304, 760727.920068621519022, 760739.137965091387741, 760750.355874992674217, 760761.573798325494863, 760772.791735089616850, 760784.009685284574516, 760795.227648910484277, 760806.445625966996886, 760817.663616453995928, 760828.881620371364988, 760840.099637718754821, 760851.317668496049009, 760862.535712703247555, 760873.753770339884795, 760884.971841405960731, 760896.189925901358947, 760907.408023825730197, 760918.626135178958066, 760929.844259960693307, 760941.062398171168752, 760952.280549809918739, 760963.498714876826853, 760974.716893371543847, 760985.935085294186138, 760997.153290644404478, 761008.371509421849623, 761019.589741626637988, 761030.807987258536741, 761042.026246317313053, 761053.244518802734092, 761064.462804714683443, 761075.681104052928276, 761086.899416817468591, 761098.117743007838726, 761109.336082623922266, 761120.554435665719211, 761131.772802133113146, 761142.991182025521994, 761154.209575343178585, 761165.427982085617259, 761176.646402252721600, 761187.864835844375193, 761199.083282860578038, 761210.301743300748058, 761221.520217164885253, 761232.738704452989623, 761243.957205164595507, 761255.175719299819320, 761266.394246858195402, 761277.612787839490920, 761288.831342243938707, 761300.049910070956685, 761311.268491320661269, 761322.487085992703214, 761333.705694086966105, 761344.924315603217110, 761356.142950541223399, 761367.361598900752142, 761378.580260681919754, 761389.798935884376988, 761401.017624507891014, 761412.236326552461833, 761423.455042017623782, 761434.673770903493278, 761445.892513209604658, 761457.111268935957924, 761468.330038082436658, 761479.548820648691617, 761490.767616634489968, 761501.986426040064543, 761513.205248864716850, 761524.424085108563304, 761535.642934771371074, 761546.861797852790914, 761558.080674353055656, 761569.299564271583222, 761580.518467608373612, 761591.737384363193996, 761602.956314535927959, 761614.175258126226254, 761625.394215134088881, 761636.613185559166595, 761647.832169401575811, 761659.051166660967283, 761670.270177337108180, 761681.489201429882087, 761692.708238938939758, 761703.927289864281192, 761715.146354205673561, 761726.365431963000447, 761737.584523136029020, 761748.803627724642865, 761760.022745728609152, 761771.241877147695050, 761782.461021981667727, 761793.680180230527185, 761804.899351893924177, 761816.118536971975118, 761827.337735464097932, 761838.556947370525450, 761849.776172690559179, 761860.995411424548365, 761872.214663572027348, 761883.433929132763296, 761894.653208106756210, 761905.872500493889675, 761917.091806293814443, 761928.311125506297685, 761939.530458131222986, 761950.749804168473929, 761961.969163617934100, 761973.188536479021423, 761984.407922752085142, 761995.627322436659597, 762006.846735532628372, 762018.066162039875053, 762029.285601958166808, 762040.505055287270807, 762051.724522026954219, 762062.944002177100629, 762074.163495737710036, 762085.383002708316781, 762096.602523089037277, 762107.822056879405864, 762119.041604079422541, 762130.261164688854478, 762141.480738707468845, 762152.700326135032810, 762163.919926971546374, 762175.139541216660291, 762186.359168870490976, 762197.578809932572767, 762208.798464402905665, 762220.018132281024009, 762231.237813566811383, 762242.457508260500617, 762253.677216361509636, 762264.896937869838439, 762276.116672785137780, 762287.336421107407659, 762298.556182836415246, 762309.775957971927710, 762320.995746513595805, 762332.215548461652361, 762343.435363815631717, 762354.655192575417459, 762365.875034741009586, 762377.094890311826020, 762388.314759288099594, 762399.534641669364646, 762410.754537455504760, 762421.974446646403521, 762433.194369241944514, 762444.414305241778493, 762455.634254645789042, 762466.854217453976162, 762478.074193665874191, 762489.294183281483129, 762500.514186300453730, 762511.734202722669579, 762522.954232548247091, 762534.174275776720606, 762545.394332407857291, 762556.614402441657148, 762567.834485877770931, 762579.054582715965807, 762590.274692956474610, 762601.494816598715261, 762612.714953642687760, 762623.935104088159278, 762635.155267935013399, 762646.375445182900876, 762657.595635831821710, 762668.815839881310239, 762680.036057331715710, 762691.256288182339631, 762702.476532433298416, 762713.696790084359236, 762724.917061135172844, 762736.137345585855655, 762747.357643436058424, 762758.577954685431905, 762769.798279333976097, 762781.018617381691001, 762792.238968828110956, 762803.459333673119545, 762814.679711916716769, 762825.900103558553383, 762837.120508598512970, 762848.340927036129870, 762859.561358871636912, 762870.781804104684852, 762882.002262735273689, 762893.222734762821347, 762904.443220187560655, 762915.663719008909538, 762926.884231227217242, 762938.104756841785274, 762949.325295852613635, 762960.545848259585910, 762971.766414062702097, 762982.986993261496536, 762994.207585855736397, 763005.428191845421679, 763016.648811230203137, 763027.869444010197185, 763039.090090185054578, 763050.310749754542485, 763061.531422718660906, 763072.752109076827765, 763083.972808829392307, 763095.193521975772455, 763106.414248515968211, 763117.634988449746743, 763128.855741777108051, 763140.076508497470059, 763151.297288611182012, 763162.518082117545418, 763173.738889016793109, 763184.959709308459423, 763196.180542992427945, 763207.401390068698674, 763218.622250536689535, 763229.843124396866187, 763241.064011648413725, 763252.284912291564979, 763263.505826325854287, 763274.726753751398064, 763285.947694567730650, 763297.168648774735630, 763308.389616372413002, 763319.610597360529937, 763330.831591738737188, 763342.052599507034756, 763353.273620665189810, 763364.494655212736689, 763375.715703150024638, 763386.936764476587996, 763398.157839192193933, 763409.378927296726033, 763420.600028790184297, 763431.821143672103062, 763443.042271942482330, 763454.263413600972854, 763465.484568647574633, 763476.705737082054839, 763487.926918904180638, 763499.148114113952033, 763510.369322710903361, 763521.590544695034623, 763532.811780066229403, 763544.033028824022040, 763555.254290968528949, 763566.475566499517299, 763577.696855416754261, 763588.918157720123418, 763600.139473409275524, 763611.360802484210581, 763622.582144944579341, 763633.803500790381804, 763645.024870021268725, 763656.246252637240104, 763667.467648638179526, 763678.689058023504913, 763689.910480793565512, 763701.131916947662830, 763712.353366486029699, 763723.574829407967627, 763734.796305713942274, 763746.017795403487980, 763757.239298476371914, 763768.460814932594076, 763779.682344771805219, 763790.903887993772514, 763802.125444598263130, 763813.347014585509896, 763824.568597954930738, 763835.790194706642069, 763847.011804840061814, 763858.233428355422802, 763869.455065252375789, 763880.676715530687943, 763891.898379190242849, 763903.120056230924092, 763914.341746652498841, 763925.563450454617850, 763936.785167637397535, 763948.006898200488649, 763959.228642143774778, 763970.450399467023090, 763981.672170170000754, 763992.893954252707772, 764004.115751714678481, 764015.337562556145713, 764026.559386776760221, 764037.781224376056343, 764049.003075354266912, 764060.224939710809849, 764071.446817445801571, 764082.668708559009247, 764093.890613050316460, 764105.112530919490382, 764116.334462166298181, 764127.556406790390611, 764138.778364792000502, 764150.000336170662194, 764161.222320926142856, 764172.444319058558904, 764183.666330567444675, 764194.888355452916585, 764206.110393714392558, 764217.332445351989008, 764228.554510365473107, 764239.776588754612021, 764250.998680519405752, 764262.220785659388639, 764273.442904174560681, 764284.665036064689048, 764295.887181329657324, 764307.109339969232678, 764318.331511983298697, 764329.553697371389717, 764340.775896133738570, 764351.998108269996010, 764363.220333779929206, 764374.442572663421743, 764385.664824920357205, 764396.887090550386347, 764408.109369553509168, 764419.331661929260008, 764430.553967677755281, 764441.776286798878573, 764452.998619292164221, 764464.220965157612227, 764475.443324394873343, 764486.665697004063986, 764497.888082984718494, 764509.110482336720452, 764520.332895059837028, 764531.555321154301055, 764542.777760619414039, 764554.000213455408812, 764565.222679661819711, 764576.445159238413908, 764587.667652185307816, 764598.890158502035774, 764610.112678188597783, 764621.335211244877428, 764632.557757670525461, 764643.780317465425469, 764655.002890629461035, 764666.225477162282914, 764677.448077063891105, 764688.670690333936363, 764699.893316972302273, 764711.115956978988834, 764722.338610353646800, 764733.561277096159756, 764744.783957206294872, 764756.006650683935732, 764767.229357528616674, 764778.452077740570530, 764789.674811319564469, 764800.897558265249245, 764812.120318577508442, 764823.343092256109230, 764834.565879300935194, 764845.788679711869918, 764857.011493488447741, 764868.234320630901493, 764879.457161138765514, 764890.680015012039803, 764901.902882250375114, 764913.125762853771448, 764924.348656821879558, 764935.571564154699445, 764946.794484851649031, 764958.017418913077563, 764969.240366338519379, 764980.463327127858065, 764991.686301280977204, 765002.909288797643967, 765014.132289677625522, 765025.355303920689039, 765036.578331526718102, 765047.801372495829128, 765059.024426827440038, 765070.247494521550834, 765081.470575577928685, 765092.693669996224344, 765103.916777776787058, 765115.139898918918334, 765126.363033422501758, 765137.586181287537329, 765148.809342513908632, 765160.032517101266421, 765171.255705049494281, 765182.478906358359382, 765193.702121027745306, 765204.925349057535641, 765216.148590447264723, 765227.371845197165385, 765238.595113306655549, 765249.818394775968045, 765261.041689604637213, 765272.264997792430222, 765283.488319339463487, 765294.711654245154932, 765305.935002509737387, 765317.158364132978022, 765328.381739114411175, 765339.605127454036847, 765350.828529151738621, 765362.051944207167253, 765373.275372620322742, 765384.498814390739426, 765395.722269518533722, 765406.945738003589213, 765418.169219845556654, 765429.392715044203214, 765440.616223599412479, 765451.839745511068031, 765463.063280778937042, 765474.286829402670264, 765485.510391382500529, 765496.733966717962176, 765507.957555408822373, 765519.181157455081120, 765530.404772856505588, 765541.628401612862945, 765552.852043724036776, 765564.075699189677835, 765575.299368009902537, 765586.523050184361637, 765597.746745712938718, 765608.970454595400952, 765620.194176831515506, 765631.417912421165965, 765642.641661364352331, 765653.865423660376109, 765665.089199309586547, 765676.312988311750814, 765687.536790666519664, 765698.760606373776682, 765709.984435433172621, 765721.208277844823897, 765732.432133608264849, 765743.656002723611891, 765754.879885190399364, 765766.103781008743681, 765777.327690178295597, 765788.551612698822282, 765799.775548570323735, 765810.999497792334296, 765822.223460364853963, 765833.447436287882738, 765844.671425561071374, 765855.895428184187040, 765867.119444156996906, 765878.343473479500972, 765889.567516151466407, 765900.791572172660381, 765912.015641542966478, 765923.239724262151867, 765934.463820329983719, 765945.687929746462032, 765956.912052511470392, 765968.136188624426723, 765979.360338085563853, 765990.584500894532539, 766001.808677050983533, 766013.032866555033252, 766024.257069406332448, 766035.481285604764707, 766046.705515150213614, 766057.929758042562753, 766069.154014281230047, 766080.378283866448328, 766091.602566797751933, 766102.826863075257279, 766114.051172698615119, 766125.275495667709038, 766136.499831982306205, 766147.724181642290205, 766158.948544647311792, 766170.172920997370966, 766181.397310692234896, 766192.621713731670752, 766203.846130115794949, 766215.070559844025411, 766226.295002916362137, 766237.519459332688712, 766248.743929092655890, 766259.968412196263671, 766271.192908643046394, 766282.417418433236890, 766293.641941566485912, 766304.866478042560630, 766316.091027861228213, 766327.315591022488661, 766338.540167526109144, 766349.764757371624000, 766360.989360559382476, 766372.213977088686079, 766383.438606959767640, 766394.663250172277912, 766405.887906725867651, 766417.112576620653272, 766428.337259856401943, 766439.561956432648003, 766450.786666349507868, 766462.011389606865123, 766473.236126204370521, 766484.460876141791232, 766495.685639419127256, 766506.910416036029346, 766518.135205992381088, 766529.360009288066067, 766540.584825922967866, 766551.809655896620825, 766563.034499209141359, 766574.259355860180221, 766585.484225849737413, 766596.709109177463688, 766607.934005843126215, 766619.158915846608579, 766630.383839188143611, 766641.608775866916403, 766652.833725883043371, 766664.058689236408100, 766675.283665926661342, 766686.508655953803100, 766697.733659317600541, 766708.958676017588004, 766720.183706054114737, 766731.408749426482245, 766742.633806134923361, 766753.858876179205254, 766765.083959558862261, 766776.309056273894385, 766787.534166324301623, 766798.759289709501900, 766809.984426429611631, 766821.209576484630816, 766832.434739873860963, 766843.659916597534902, 766854.885106655186974, 766866.110310047050007, 766877.335526772425510, 766888.560756831546314, 766899.786000224063173, 766911.011256949859671, 766922.236527008702978, 766933.461810400476679, 766944.687107124947943, 766955.912417181767523, 766967.137740571051836, 766978.363077292568050, 766989.588427346083336, 767000.813790731481276, 767012.039167448412627, 767023.264557496877387, 767034.489960876526311, 767045.715377587475814, 767056.940807629027404, 767068.166251001646742, 767079.391707704751752, 767090.617177738226019, 767101.842661101953126, 767113.068157795816660, 767124.293667819467373, 767135.519191172672436, 767146.744727855548263, 767157.970277867745608, 767169.195841209031641, 767180.421417879406363, 767191.647007878520526, 767202.872611206257716, 767214.098227862385102, 767225.323857846902683, 767236.549501159344800, 767247.775157799827866, 767259.000827768002637, 767270.226511063752696, 767281.452207686961628, 767292.677917637280189, 767303.903640914591961, 767315.129377518780529, 767326.355127449496649, 767337.580890706973150, 767348.806667290744372, 767360.032457200461067, 767371.258260436239652, 767382.484076997847296, 767393.709906885051169, 767404.935750097618438, 767416.161606635432690, 767427.387476498261094, 767438.613359686103649, 767449.839256198611110, 767461.065166035783477, 767472.291089197271504, 767483.517025682842359, 767494.742975492496043, 767505.968938625766896, 767517.194915082887746, 767528.420904863509350, 767539.646907967398874, 767550.872924394439906, 767562.098954144283198, 767573.324997216928750, 767584.551053612260148, 767595.777123329928145, 767607.003206369816326, 767618.229302731691860, 767629.455412415671162, 767640.681535421172157, 767651.907671748194844, 767663.133821396739222, 767674.359984366223216, 767685.586160656879656, 767696.812350268126465, 767708.038553200196475, 767719.264769452740438, 767730.490999025409110, 767741.717241918318905, 767752.943498131120577, 767764.169767663581297, 767775.396050515701063, 767786.622346687130630, 767797.848656177869998, 767809.074978987686336, 767820.301315116230398, 767831.527664563502185, 767842.754027329385281, 767853.980403413297608, 767865.206792815588415, 767876.433195535792038, 767887.659611573908478, 767898.886040929588489, 767910.112483602715656, 767921.338939593057148, 767932.565408900496550, 767943.791891524801031, 767955.018387465854175, 767966.244896723539568, 767977.471419297507964, 767988.697955187875777, 767999.924504394060932, 768011.151066916063428, 768022.377642753883265, 768033.604231907054782, 768044.830834375577979, 768056.057450159336440, 768067.284079257980920, 768078.510721671511419, 768089.737377399462275, 768100.964046442066319, 768112.190728798741475, 768123.417424469371326, 768134.644133454072289, 768145.870855752495117, 768157.097591364523396, 768168.324340289807878, 768179.551102528348565, 768190.777878079679795, 768202.004666944150813, 768213.231469120946713, 768224.458284610533156, 768235.685113412211649, 768246.911955526098609, 768258.138810951961204, 768269.365679689683020, 768280.592561738798395, 768291.819457099307328, 768303.046365771093406, 768314.273287754040211, 768325.500223047914915, 768336.727171652368270, 768347.954133567400277, 768359.181108792778105, 768370.408097328268923, 768381.635099173756316, 768392.862114329123870, 768404.089142794138752, 768415.316184568568133, 768426.543239652295597, 768437.770308045204729, 768448.997389747062698, 768460.224484757520258, 768471.451593076693825, 768482.678714704117738, 768493.905849639908411, 768505.132997883716598, 768516.360159435425885, 768527.587334294803441, 768538.814522461732849, 768550.041723935981281, 768561.268938717315905, 768572.496166805620305, 768583.723408200778067, 768594.950662902672775, 768606.177930910955183, 768617.405212225508876, 768628.632506846101023, 768639.859814772731625, 768651.087136004935019, 768662.314470542827621, 768673.541818386176601, 768684.769179534632713, 768695.996553988079540, 768707.223941746517085, 768718.451342809712514, 768729.678757177200168, 768740.906184849096462, 768752.133625825052150, 768763.361080105183646, 768774.588547689141706, 768785.816028576577082, 768797.043522767489776, 768808.271030261646956, 768819.498551058932208, 768830.726085158996284, 768841.953632561839186, 768853.181193267344497, 768864.408767275279388, 768875.636354585294612, 768886.863955197390169, 768898.091569111449644, 768909.319196327123791, 768920.546836844063364, 768931.774490662501194, 768943.002157782088034, 768954.229838202707469, 768965.457531924126670, 768976.685238945996389, 768987.912959268433042, 768999.140692891087383, 769010.368439813726582, 769021.596200036350638, 769032.823973558726721, 769044.051760380738415, 769055.279560501920059, 769066.507373922504485, 769077.735200642026030, 769088.963040660251863, 769100.190893977414817, 769111.418760592932813, 769122.646640506805852, 769133.874533718801104, 769145.102440228685737, 769156.330360036459751, 769167.558293141773902, 769178.786239544511773, 769190.014199244440533, 769201.242172241676599, 769212.470158535637893, 769223.698158126324415, 769234.926171013619751, 769246.154197197291069, 769257.382236677105539, 769268.610289452713914, 769279.838355524465442, 769291.066434891894460, 769302.294527554651722, 769313.522633512853645, 769324.750752766150981, 769335.978885314427316, 769347.207031157449819, 769358.435190294985659, 769369.663362726918422, 769380.891548453248106, 769392.119747473625466, 769403.347959787817672, 769414.576185395824723, 769425.804424297297373, 769437.032676492235623, 769448.260941980057396, 769459.489220761228353, 769470.717512835050002, 769481.945818201638758, 769493.174136860645376, 769504.402468812069856, 769515.630814055562951, 769526.859172591008246, 769538.087544418172911, 769549.315929536940530, 769560.544327947078273, 769571.772739648586139, 769583.001164641114883, 769594.229602924548090, 769605.458054498769343, 769616.686519363429397, 769627.914997518411838, 769639.143488963483833, 769650.371993698878214, 769661.600511723780073, 769672.829043038538657, 769684.057587642804720, 769695.286145536229014, 769706.514716718927957, 769717.743301190435886, 769728.971898950752802, 769740.200509999529459, 769751.429134336998686, 769762.657771962578408, 769773.886422876268625, 769785.115087077836506, 769796.343764567049220, 769807.572455343673937, 769818.801159407943487, 769830.029876759275794, 769841.258607397554442, 769852.487351322895847, 769863.716108534717932, 769874.944879032904282, 769886.173662817571312, 769897.402459888253361, 769908.631270244834013, 769919.860093887313269, 769931.088930815341882, 769942.317781028803438, 769953.546644527465105, 769964.775521311326884, 769976.004411379923113, 769987.233314733253792, 769998.462231371086091, 770009.691161293303594, 770020.920104499673471, 770032.149060990195721, 770043.378030764521100, 770054.607013822416775, 770065.836010163766332, 770077.065019788453355, 770088.294042696245015, 770099.523078887024894, 770110.752128360560164, 770121.981191116734408, 770133.210267155198380, 770144.439356476068497, 770155.668459078762680, 770166.897574963513762, 770178.126704129972495, 770189.355846577906050, 770200.585002307314426, 770211.814171317848377, 770223.043353609391488, 770234.272549181827344, 770245.501758034690283, 770256.730980168096721, 770267.960215582046658, 770279.189464275841601, 770290.418726249714382, 770301.648001503432170, 770312.877290036645718, 770324.106591849355027, 770335.335906941210851, 770346.565235312096775, 770357.794576962012798, 770369.023931890609674, 770380.253300097654574, 770391.482681583147496, 770402.712076346739195, 770413.941484388429672, 770425.170905707753263, 770436.400340304942802, 770447.629788179649040, 770458.859249331522733, 770470.088723760563880, 770481.318211466656066, 770492.547712449333631, 770503.777226708829403, 770515.006754244444892, 770526.236295056529343, 770537.465849144617096, 770548.695416508708149, 770559.924997148336843, 770571.154591063619591, 770582.384198254207149, 770593.613818719983101, 770604.843452460831031, 770616.073099476401694, 770627.302759766811505, 770638.532433331594802, 770649.762120170751587, 770660.991820284049027, 770672.221533671254292, 770683.451260332134552, 770694.681000266573392, 770705.910753474687226, 770717.140519955893978, 770728.370299710310064, 770739.600092737469822, 770750.829899037489668, 770762.059718609903939, 770773.289551454829052, 770784.519397571799345, 770795.749256960814819, 770806.979129621759057, 770818.209015554282814, 770829.438914758386090, 770840.668827233836055, 770851.898752980283462, 770863.128691997728311, 770874.358644285937771, 770885.588609844795428, 770896.818588674068451, 770908.048580773640424, 770919.278586143278517, 770930.508604782866314, 770941.738636692054570, 770952.968681870843284, 770964.198740318999626, 770975.428812036290765, 770986.658897022716701, 770997.888995278044604, 771009.119106801925227, 771020.349231594358571, 771031.579369655228220, 771042.809520983952098, 771054.039685580763035, 771065.269863445311785, 771076.500054577714764, 771087.730258977273479, 771098.960476644337177, 771110.190707578323781, 771121.420951779349707, 771132.651209246949293, 771143.881479981122538, 771155.111763981753029, 771166.342061248491518, 771177.572371781454422, 771188.802695580176078, 771200.033032644540071, 771211.263382974429987, 771222.493746569729410, 771233.724123429972678, 771244.954513555276208, 771256.184916945523582, 771267.415333600249141, 771278.645763519569300, 771289.876206702901982, 771301.106663150596432, 771312.337132861837745, 771323.567615837207995, 771334.798112076008692, 771346.028621578239836, 771357.259144343552180, 771368.489680372062139, 771379.720229663420469, 771390.950792217394337, 771402.181368033750914, 771413.411957112723030, 771424.642559453612193, 771435.873175056651235, 771447.103803921490908, 771458.334446048014797, 771469.565101435873657, 771480.795770085067488, 771492.026451995247044, 771503.257147166412324, 771514.487855598446913, 771525.718577291001566, 771536.949312243843451, 771548.180060457088985, 771559.410821930156089, 771570.641596663394012, 771581.872384655987844, 771593.103185908286832, 771604.334000420058146, 771615.564828190836124, 771626.795669220620766, 771638.026523509295657, 771649.257391056511551, 771660.488271862268448, 771671.719165926217102, 771682.950073248357512, 771694.180993828456849, 771705.411927666282281, 771716.642874761717394, 771727.873835114645772, 771739.104808724718168, 771750.335795591934584, 771761.566795715829358, 771772.797809096518904, 771784.028835733886808, 771795.259875627467409, 771806.490928777377121, 771817.721995183266699, 771828.953074844903313, 771840.184167762170546, 771851.415273934951983, 771862.646393363014795, 771873.877526046126150, 771885.108671984402463, 771896.339831177261658, 771907.571003624936566, 771918.802189326961525, 771930.033388283103704, 771941.264600493363105, 771952.495825957506895, 771963.727064675535075, 771974.958316646981984, 771986.189581871847622, 771997.420860349782743, 772008.652152081020176, 772019.883457064861432, 772031.114775301190093, 772042.346106790355407, 772053.577451531775296, 772064.808809525216930, 772076.040180770680308, 772087.271565268049017, 772098.502963016973808, 772109.734374017338268, 772120.965798268909566, 772132.197235771571286, 772143.428686525090598, 772154.660150529351085, 772165.891627784469165, 772177.123118289629929, 772188.354622045182623, 772199.586139050778002, 772210.817669305950403, 772222.049212811165489, 772233.280769565608352, 772244.512339569628239, 772255.743922822759487, 772266.975519324769266, 772278.207129075541161, 772289.438752075075172, 772300.670388323022053, 772311.902037819148973, 772323.133700563455932, 772334.365376555710100, 772345.597065795795061, 772356.828768283361569, 772368.060484018409625, 772379.292213000589982, 772390.523955229786225, 772401.755710705998354, 772412.987479428760707, 772424.219261398189701, 772435.451056613819674, 772446.682865075767040, 772457.914686783566140, 772469.146521737333387, 772480.378369936603121, 772491.610231381375343, 772502.842106071533635, 772514.073994006845169, 772525.305895186960697, 772536.537809611996636, 772547.769737281487323, 772559.001678195549175, 772570.233632353600115, 772581.465599755989388, 772592.697580402134918, 772603.929574292036705, 772615.161581425461918, 772626.393601802177727, 772637.625635422300547, 772648.857682285364717, 772660.089742391020991, 772671.321815739502199, 772682.553902330575511, 772693.786002163891681, 772705.018115239334293, 772716.250241556786932, 772727.482381116016768, 772738.714533916790970, 772749.946699958993122, 772761.178879242506810, 772772.411071767099202, 772783.643277532653883, 772794.875496538938023, 772806.107728785835207, 772817.339974272996187, 772828.572233000420965, 772839.804504967760295, 772851.036790175130591, 772862.269088622066192, 772873.501400308683515, 772884.733725234400481, 772895.966063399449922, 772907.198414803482592, 772918.430779446382076, 772929.663157327566296, 772940.895548447500914, 772952.127952805603854, 772963.360370401875116, 772974.592801236198284, 772985.825245308107696, 772997.057702617603354, 773008.290173164685257, 773019.522656948771328, 773030.755153969977982, 773041.987664228072390, 773053.220187722938135, 773064.452724454225972, 773075.685274421935901, 773086.917837625835091, 773098.150414065807126, 773109.383003741386347, 773120.615606652689166, 773131.848222799599171, 773143.080852181767114, 773154.313494799076580, 773165.546150651411153, 773176.778819738421589, 773188.011502059991471, 773199.244197615887970, 773210.476906406343915, 773221.709628430544399, 773232.942363688955083, 773244.175112180877477, 773255.407873906544410, 773266.640648865373805, 773277.873437057598494, 773289.106238482636400, 773300.339053140720353, 773311.571881031501107, 773322.804722154629417, 773334.037576510221697, 773345.270444097812288, 773356.503324917401187, 773367.736218968988396, 773378.969126251875423, 773390.202046766527928, 773401.434980512247421, 773412.667927489266731, 773423.900887697003782, 773435.133861135691404, 773446.366847804863937, 773457.599847704404965, 773468.832860834081657, 773480.065887194010429, 773491.298926783609204, 773502.531979603110813, 773513.765045652049594, 773524.998124930309132, 773536.231217437889427, 773547.464323174091987, 773558.697442139498889, 773569.930574333411641, 773581.163719755946659, 773592.396878406521864, 773603.630050285486504, 773614.863235392258503, 773626.096433726837859, 773637.329645288875327, 773648.562870078487322, 773659.796108095324598, 773671.029359339270741, 773682.262623810209334, 773693.495901507674716, 773704.729192431783304, 773715.962496582302265, 773727.195813958882354, 773738.429144561639987, 773749.662488390225917, 773760.895845444290899, 773772.129215724184178, 773783.362599229090847, 773794.595995959476568, 773805.829405914526433, 773817.062829094473273, 773828.296265499084257, 773839.529715128126554, 773850.763177981600165, 773861.996654059039429, 773873.230143360327929, 773884.463645885465667, 773895.697161634336226, 773906.930690606357530, 773918.164232801645994, 773929.397788219968788, 773940.631356861325912, 773951.864938725251704, 773963.098533811746165, 773974.332142120692879, 773985.565763651742600, 773996.799398404662497, 774008.033046379452571, 774019.266707575996406, 774030.500381993944757, 774041.734069633414038, 774052.967770493822172, 774064.201484575169161, 774075.435211877338588, 774086.668952400097623, 774097.902706143213436, 774109.136473106686026, 774120.370253290398978, 774131.604046693770215, 774142.837853317032568, 774154.071673159720376, 774165.305506221833639, 774176.539352503139526, 774187.773212003405206, 774199.007084722630680, 774210.240970660583116, 774221.474869816913269, 774232.708782191737555, 774243.942707784706727, 774255.176646595587954, 774266.410598624264821, 774277.644563870504498, 774288.878542334306985, 774300.112534015439451, 774311.346538913669065, 774322.580557028762996, 774333.814588360721245, 774345.048632909194566, 774356.282690673950128, 774367.516761654987931, 774378.750845852307975, 774389.984943265444599, 774401.219053894164972, 774412.453177738469094, 774423.687314798124135, 774434.921465073130094, 774446.155628562904894, 774457.389805267564952, 774468.623995186993852, 774479.858198320958763, 774491.092414669226855, 774502.326644231565297, 774513.560887007857673, 774524.795142997987568, 774536.029412201605737, 774547.263694618828595, 774558.497990249306895, 774569.732299092807807, 774580.966621149214916, 774592.200956418411806, 774603.435304900282063, 774614.669666594476439, 774625.904041500645690, 774637.138429619139060, 774648.372830949490890, 774659.607245491468348, 774670.841673244955018, 774682.076114209950902, 774693.310568385990337, 774704.545035773073323, 774715.779516370734200, 774727.014010179322213, 774738.248517198371701, 774749.483037427649833, 774760.717570867156610, 774771.952117516542785, 774783.186677375691943, 774794.421250444371253, 774805.655836722580716, 774816.890436209971085, 774828.125048906542361, 774839.359674811945297, 774850.594313926179893, 774861.828966248896904, 774873.063631779979914, 774884.298310519312508, 774895.533002466545440, 774906.767707621678710, 774918.002425984595902, 774929.237157555064186, 774940.471902332734317, 774951.706660317722708, 774962.941431509563699, 774974.176215908257291, 774985.411013513454236, 774996.645824325387366, 775007.880648343358189, 775019.115485567599535, 775030.350335997762159, 775041.585199633729644, 775052.820076475152746, 775064.054966522147879, 775075.289869774132967, 775086.524786231340840, 775097.759715893538669, 775108.994658760377206, 775120.229614831623621, 775131.464584107394330, 775142.699566587340087, 775153.934562271344475, 775165.169571159058250, 775176.404593250481412, 775187.639628545497544, 775198.874677043873817, 775210.109738745377399, 775221.344813649891876, 775232.579901756951585, 775243.815003067022189, 775255.050117579172365, 775266.285245293751359, 775277.520386210526340, 775288.755540329148062, 775299.990707649500109, 775311.225888171466067, 775322.461081894929521, 775333.696288819424808, 775344.931508945068344, 775356.166742271627299, 775367.401988798985258, 775378.637248526676558, 775389.872521454817615, 775401.107807583292015, 775412.343106911634095, 775423.578419439843856, 775434.813745167688467, 775446.049084094935097, 775457.284436221583746, 775468.519801547401585, 775479.755180072272196, 775490.990571795846336, 775502.225976718007587, 775513.461394838639535, 775524.696826157625765, 775535.932270674500614, 775547.167728389380500, 775558.403199302149005, 775569.638683412456885, 775580.874180720071308, 775592.109691224992275, 775603.345214926870540, 775614.580751825706102, 775625.816301921033300, 775637.051865213201381, 775648.287441701511852, 775659.523031386081129, 775670.758634266792797, 775681.994250343181193, 775693.229879615246318, 775704.465522082755342, 775715.701177745591849, 775726.936846603523009, 775738.172528656548820, 775749.408223904320039, 775760.643932346720248, 775771.879653983516619, 775783.115388814592734, 775794.351136839832179, 775805.586898058769293, 775816.822672471636906, 775828.058460078085773, 775839.294260877766646, 775850.530074870795943, 775861.765902056940831, 775873.001742435852066, 775884.237596007413231, 775895.473462771624327, 775906.709342728019692, 775917.945235876715742, 775929.181142217479646, 775940.417061750078574, 775951.652994474279694, 775962.888940389966592, 775974.124899496906437, 775985.360871794866398, 775996.596857283962891, 776007.832855963730253, 776019.068867834168486, 776030.304892895044759, 776041.540931146242656, 776052.776982587529346, 776064.013047218788415, 776075.249125039554201, 776086.485216049943119, 776097.721320249838755, 776108.957437638891861, 776120.193568216986023, 776131.429711984004825, 776142.665868939715438, 776153.902039084001444, 776165.138222416397184, 776176.374418937135488, 776187.610628645983525, 776198.846851542592049, 776210.083087626728229, 776221.319336898392066, 776232.555599357467145, 776243.791875003604218, 776255.028163836570457, 776266.264465856365860, 776277.500781062874012, 776288.737109455978498, 776299.973451035097241, 776311.209805800346658, 776322.446173751610331, 776333.682554888539016, 776344.918949211016297, 776356.155356718809344, 776367.391777412034571, 776378.628211290109903, 776389.864658353151754, 776401.101118600927293, 776412.337592033087276, 776423.574078649864532, 776434.810578450560570, 776446.047091435175389, 776457.283617603941821, 776468.520156956161372, 776479.756709491834044, 776490.993275210959837, 776502.229854113073088, 776513.466446198290214, 776524.703051466029137, 776535.939669916755520, 776547.176301549654454, 776558.412946364842355, 776569.649604362319224, 776580.886275541502982, 776592.122959902510047, 776603.359657445107587, 776614.596368168946356, 776625.833092074142769, 776637.069829160463996, 776648.306579427444376, 776659.543342875433154, 776670.780119503731839, 776682.016909312456846, 776693.253712301375344, 776704.490528470021673, 776715.727357818861492, 776726.964200347196311, 776738.201056055026129, 776749.437924942234531, 776760.674807008472271, 776771.911702253739350, 776783.148610677802935, 776794.385532280430198, 776805.622467061504722, 776816.859415020910092, 776828.096376158413477, 776839.333350473898463, 776850.570337967015803, 776861.807338637649082, 776873.044352485914715, 776884.281379511114210, 776895.518419713480398, 776906.755473092780448, 776917.992539648781531, 776929.229619381367229, 776940.466712290188298, 776951.703818375361152, 776962.940937636303715, 776974.178070073132403, 776985.415215685847215, 776996.652374473866075, 777007.889546437305398, 777019.126731575815938, 777030.363929889281280, 777041.601141377585009, 777052.838366040610708, 777064.075603877776302, 777075.312854889431037, 777086.550119075225666, 777097.787396434810944, 777109.024686968303286, 777120.261990675469860, 777131.499307555728592, 777142.736637609545141, 777153.973980836104602, 777165.211337235639803, 777176.448706808150746, 777187.686089552938938, 777198.923485470237210, 777210.160894559463486, 777221.398316821083426, 777232.635752254398540, 777243.873200859175995, 777255.110662635648623, 777266.348137583350763, 777277.585625702282414, 777288.823126992327161, 777300.060641453019343, 777311.298169084358960, 777322.535709886229597, 777333.773263858165592, 777345.010831000399776, 777356.248411312582903, 777367.486004794482142, 777378.723611445981078, 777389.961231266963296, 777401.198864257195964, 777412.436510416329838, 777423.674169744364917, 777434.911842241417617, 777446.149527906789444, 777457.387226740596816, 777468.624938742606901, 777479.862663912586868, 777491.100402250536717, 777502.338153756107204, 777513.575918428949080, 777524.813696269411594, 777536.051487277029082, 777547.289291451685131, 777558.527108793030493, 777569.764939301065169, 777581.002782975556329, 777592.240639816387556, 777603.478509823209606, 777614.716392996022478, 777625.954289334709756, 777637.192198839038610, 777648.430121508659795, 777659.668057343573309, 777670.906006343546323, 777682.143968508578837, 777693.381943838088773, 777704.619932332308963, 777715.857933991122991, 777727.095948813948780, 777738.333976800786331, 777749.572017951635644, 777760.810072265914641, 777772.048139743972570, 777783.286220385343768, 777794.524314189795405, 777805.762421157327481, 777817.000541287590750, 777828.238674580585212, 777839.476821036078036, 777850.714980653836392, 777861.953153433743864, 777873.191339375684038, 777884.429538479191251, 777895.667750744498335, 777906.905976171256043, 777918.144214759347960, 777929.382466508541256, 777940.620731418486685, 777951.859009489300661, 777963.097300720750354, 777974.335605112370104, 777985.573922664392740, 777996.812253376585431, 778008.050597248482518, 778019.288954280083999, 778030.527324471389875, 778041.765707821934484, 778053.004104331717826, 778064.242514000390656, 778075.480936828069389, 778086.719372814404778, 778097.957821959163994, 778109.196284262347035, 778120.434759723604657, 778131.673248342936859, 778142.911750119994394, 778154.150265054660849, 778165.388793146703392, 778176.627334396238439, 778187.865888802800328, 778199.104456366389059, 778210.343037086771801, 778221.581630963715725, 778232.820237996871583, 778244.058858186472207, 778255.297491532051936, 778266.536138033610769, 778277.774797690915875, 778289.013470503734425, 778300.252156471950002, 778311.490855595446192, 778322.729567873873748, 778333.968293307116255, 778345.207031895173714, 778356.445783637696877, 778367.684548534569331, 778378.923326585674658, 778390.162117790780030, 778401.400922149769031, 778412.639739662292413, 778423.878570328117348, 778435.117414147476666, 778446.356271120021120, 778457.595141245517880, 778468.834024523734115, 778480.072920954553410, 778491.311830537859350, 778502.550753273419105, 778513.789689160883427, 778525.028638200485148, 778536.267600391991436, 778547.506575734820217, 778558.745564229087904, 778569.984565874678083, 778581.223580671241507, 778592.462608618778177, 778603.701649716822430, 778614.940703965723515, 778626.179771364666522, 778637.418851914117113, 778648.657945613376796, 778659.897052462678403, 778671.136172461439855, 778682.375305609893985, 778693.614451907458715, 778704.853611354250461, 778716.092783950152807, 778727.331969694816507, 778738.571168588008732, 778749.810380629845895, 778761.049605819862336, 778772.288844158058055, 778783.528095644083805, 778794.767360278056003, 778806.006638059508987, 778817.245928988442756, 778828.485233064508066, 778839.724550287937745, 778850.963880658033304, 778862.203224175027572, 778873.442580838222057, 778884.681950648198836, 778895.921333604375832, 778907.160729706403799, 778918.400138954399154, 778929.639561348012649, 778940.878996887360699, 778952.118445571977645, 778963.357907401630655, 778974.597382376319729, 778985.836870496044867, 778997.076371760223992, 779008.315886169089936, 779019.555413722177036, 779030.794954419368878, 779042.034508260549046, 779053.274075245601125, 779064.513655374059454, 779075.753248646156862, 779086.992855061544105, 779098.232474619988352, 779109.472107321489602, 779120.711753165582195, 779131.951412152382545, 779143.191084281541407, 779154.430769552825950, 779165.670467966352589, 779176.910179521772079, 779188.149904218851589, 779199.389642057591118, 779210.629393037641421, 779221.869157159002498, 779233.108934421208687, 779244.348724824376404, 779255.588528368156403, 779266.828345052548684, 779278.068174877320416, 779289.308017842122354, 779300.547873947187327, 779311.787743191816844, 779323.027625576243736, 779334.267521099885926, 779345.507429763209075, 779356.747351565398276, 779367.987286506686360, 779379.227234586724080, 779390.467195805395022, 779401.707170162582770, 779412.947157657938078, 779424.187158291460946, 779435.427172062802128, 779446.667198971961625, 779457.907239018823020, 779469.147292203037068, 779480.387358524370939, 779491.627437982824631, 779502.867530578281730, 779514.107636310276575, 779525.347755178925581, 779536.587887183879502, 779547.828032325138338, 779559.068190602469258, 779570.308362015523016, 779581.548546564299613, 779592.788744248682633, 779604.028955068206415, 779615.269179022987373, 779626.509416112792678, 779637.749666337505914, 779648.989929696777835, 779660.230206190492027, 779671.470495818648487, 779682.710798580781557, 779693.951114476774819, 779705.191443506744690, 779716.431785670458339, 779727.672140967333689, 779738.912509397603571, 779750.152890961035155, 779761.393285657279193, 779772.633693486452103, 779783.874114447971806, 779795.114548541954719, 779806.354995768168010, 779817.595456126495264, 779828.835929616820067, 779840.076416238676757, 779851.316915992181748, 779862.557428877102211, 779873.797954893088900, 779885.038494040141813, 779896.279046318144538, 779907.519611726631410, 779918.760190265718848, 779930.000781935290433, 779941.241386734996922, 779952.482004664605483, 779963.722635724116117, 779974.963279913063161, 779986.203937231679447, 779997.444607679615729, 780008.685291256522760, 780019.925987962516956, 780031.166697797249071, 780042.407420760719106, 780053.648156852461398, 780064.888906072475947, 780076.129668420646340, 780087.370443896739744, 780098.611232500523329, 780109.852034232113510, 780121.092849090928212, 780132.333677077083848, 780143.574518190231174, 780154.815372430137359, 780166.056239796802402, 780177.297120290109888, 780188.538013909943402, 780199.778920655720867, 780211.019840527675115, 780222.260773525456898, 780233.501719648949802, 780244.742678897688165, 780255.983651272021234, 780267.224636771599762, 780278.465635395958088, 780289.706647145445459, 780300.947672019246966, 780312.188710017711855, 780323.429761140490882, 780334.670825387351215, 780345.911902758176439, 780357.152993252733722, 780368.394096870906651, 780379.635213612578809, 780390.876343477633782, 780402.117486465605907, 780413.358642576611601, 780424.599811810301617, 780435.840994166559540, 780447.082189645385370, 780458.323398246429861, 780469.564619969343767, 780480.805854814359918, 780492.047102781129070, 780503.288363869185559, 780514.529638078762218, 780525.770925409509800, 780537.012225861428306, 780548.253539434052072, 780559.494866127497517, 780570.736205941531807, 780581.977558875689283, 780593.218924930202775, 780604.460304104490206, 780615.701696398667991, 780626.943101812619716, 780638.184520346112549, 780649.425951998797245, 780660.667396770673804, 780671.908854661509395, 780683.150325671187602, 780694.391809799359180, 780705.633307046024129, 780716.874817410949618, 780728.116340894135647, 780739.357877495232970, 780750.599427213892341, 780761.840990050346591, 780773.082566004246473, 780784.324155075242743, 780795.565757263218984, 780806.807372568291612, 780818.049000990111381, 780829.290642528445460, 780840.532297183177434, 780851.773964954190888, 780863.015645841136575, 780874.257339843898080, 780885.499046962475404, 780896.740767196519300, 780907.982500546029769, 780919.224247010657564, 780930.466006590286270, 780941.707779284799471, 780952.949565093964338, 780964.191364017548040, 780975.433176055434160, 780986.675001207506284, 780997.916839473647997, 781009.158690853510052, 781020.400555347092450, 781031.642432954162359, 781042.884323674486950, 781054.126227507833391, 781065.368144454201683, 781076.610074513242580, 781087.852017684956081, 781099.093973969225772, 781110.335943365702406, 781121.577925874153152, 781132.819921494578011, 781144.061930226860568, 781155.303952070418745, 781166.545987025718205, 781177.788035092060454, 781189.030096269561909, 781200.272170557756908, 781211.514257956994697, 781222.756358466576785, 781233.998472086386755, 781245.240598816541024, 781256.482738656690344, 781267.724891606834717, 781278.967057666508481, 781290.209236835711636, 781301.451429114327766, 781312.693634502007626, 781323.935852998867631, 781335.178084604209289, 781346.420329318381846, 781357.662587141152471, 781368.904858072171919, 781380.147142111207359, 781391.389439258375205, 781402.631749513209797, 781413.874072875827551, 781425.116409345646389, 781436.358758922899142, 781447.601121607236564, 781458.843497398542240, 781470.085886296466924, 781481.328288301243447, 781492.570703412173316, 781503.813131629372947, 781515.055572952842340, 781526.298027381999418, 781537.540494916960597, 781548.782975557493046, 781560.025469303480349, 781571.267976154689677, 781582.510496110771783, 781593.753029171843082, 781604.995575337554328, 781616.238134607789107, 781627.480706982431002, 781638.723292461363599, 781649.965891044237651, 781661.208502730820328, 781672.451127521228045, 781683.693765415111557, 781694.936416412238032, 781706.179080512491055, 781717.421757715870626, 781728.664448022027500, 781739.907151430845261, 781751.149867942091078, 781762.392597555532120, 781773.635340271284804, 781784.878096088883467, 781796.120865008095279, 781807.363647029153071, 781818.606442151474766, 781829.849250375293195, 781841.092071700026281, 781852.334906125790440, 781863.577753652352840, 781874.820614279364236, 781886.063488006708212, 781897.306374834384769, 781908.549274762161076, 781919.792187789804302, 781931.035113917198032, 781942.278053144225851, 781953.521005470422097, 781964.763970895903185, 781976.006949420436285, 781987.249941043904983, 781998.492945765843615, 782009.735963586601429, 782020.978994505596347, 782032.222038522711955, 782043.465095637948252, 782054.708165850839578, 782065.951249161502346, 782077.194345569587313, 782088.437455075094476, 782099.680577677674592, 782110.923713377211243, 782122.166862173704430, 782133.410024066688493, 782144.653199056163430, 782155.896387142012827, 782167.139588323771022, 782178.382802601554431, 782189.626029975363053, 782200.869270444498397, 782212.112524009193294, 782223.355790669098496, 782234.599070424214005, 782245.842363274074160, 782257.085669218678959, 782268.328988257911988, 782279.572320391540416, 782290.815665619447827, 782302.059023941401392, 782313.302395357284695, 782324.545779866864905, 782335.789177469909191, 782347.032588166301139, 782358.276011956040747, 782369.519448838662356, 782380.762898814282380, 782392.006361882551573, 782403.249838043353520, 782414.493327296571806, 782425.736829641857184, 782436.980345078976825, 782448.223873608163558, 782459.467415229068138, 782470.710969941224903, 782481.954537744866684, 782493.198118639644235, 782504.441712625441141, 782515.685319702024572, 782526.928939869161695, 782538.172573126736097, 782549.416219474631362, 782560.659878912731074, 782571.903551440685987, 782583.147237058379687, 782594.390935765812173, 782605.634647562750615, 782616.878372448729351, 782628.122110423864797, 782639.365861487924121, 782650.609625640674494, 782661.853402882115915, 782673.097193212015554, 782684.340996629907750, 782695.584813136141747, 782706.828642730019055, 782718.072485411772504, 782729.316341180936433, 782740.560210037743673, 782751.804091981612146, 782763.047987012425438, 782774.291895130183548, 782785.535816334653646, 782796.779750625602901, 782808.023698002914898, 782819.267658466240391, 782830.511632015812211, 782841.755618651281111, 782852.999618372181430, 782864.243631178746000, 782875.487657070509158, 782886.731696047587320, 782897.975748109514825, 782909.219813256058842, 782920.463891487568617, 782931.707982803462073, 782942.952087203739211, 782954.196204687934369, 782965.440335256280378, 782976.684478908195160, 782987.928635643678717, 782999.172805462847464, 783010.416988365119323, 783021.661184350610711, 783032.905393419088796, 783044.149615570087917, 783055.393850803840905, 783066.638099119998515, 783077.882360518211499, 783089.126634998712689, 783100.370922560920008, 783111.615223205182701, 783122.859536930685863, 783134.103863737662323, 783145.348203625879250, 783156.592556595220231, 783167.836922645219602, 783179.081301776110195, 783190.325693987426348, 783201.570099279168062, 783212.814517651102506, 783224.058949102996849, 783235.303393634851091, 783246.547851246199571, 783257.792321937158704, 783269.036805707495660, 783280.281302556861192, 783291.525812485255301, 783302.770335492561571, 783314.014871578547172, 783325.259420742862858, 783336.503982985508628, 783347.748558306368068, 783358.993146705091931, 783370.237748181563802, 783381.482362735900097, 783392.726990367635153, 783403.971631076419726, 783415.216284862603061, 783426.460951725486666, 783437.705631665303372, 783448.950324681471102, 783460.195030774339102, 783471.439749943325296, 783482.684482188429683, 783493.929227509535849, 783505.173985906294547, 783516.418757378589362, 783527.663541926303878, 783538.908339549205266, 783550.153150247293524, 783561.397974020102993, 783572.642810867750086, 783583.887660790001974, 783595.132523786392994, 783606.377399857155979, 783617.622289002058096, 783628.867191220633686, 783640.112106512766331, 783651.357034878688864, 783662.601976317935623, 783673.846930830273777, 783685.091898415586911, 783696.336879073875025, 783707.581872804672457, 783718.826879607979208, 783730.071899483678862, 783741.316932431538589, 783752.561978451325558, 783763.807037543039769, 783775.052109706215560, 783786.297194940969348, 783797.542293247068301, 783808.787404624046758, 783820.032529072253965, 783831.277666591224261, 783842.522817180608399, 783853.767980840755627, 783865.013157570851035, 783876.258347371243872, 783887.503550241468474, 783898.748766181524843, 783909.993995190947317, 783921.239237270085141, 783932.484492418472655, 783943.729760635644197, 783954.975041922065429, 783966.220336277037859, 783977.465643700677902, 783988.710964192519896, 783999.956297752680257, 784011.201644380809739, 784022.447004076908343, 784033.692376840743236, 784044.937762672198005, 784056.183161570923403, 784067.428573536803015, 784078.673998569720425, 784089.919436669559218, 784101.164887835970148, 784112.410352069069631, 784123.655829368392006, 784134.901319733937271, 784146.146823165472597, 784157.392339662765153, 784168.637869225814939, 784179.883411854272708, 784191.128967548138462, 784202.374536307062954, 784213.620118131046183, 784224.865713019855320, 784236.111320973257534, 784247.356941991252825, 784258.602576073375531, 784269.848223219625652, 784281.093883429886773, 784292.339556703926064, 784303.585243041510694, 784314.830942442524247, 784326.076654906966724, 784337.322380434372462, 784348.568119024857879, 784359.813870677957311, 784371.059635393670760, 784382.305413171765395, 784393.551204012241215, 784404.797007914748974, 784416.042824879172258, 784427.288654905278236, 784438.534497992950492, 784449.780354142189026, 784461.026223352295347, 784472.272105623735115, 784483.518000955926254, 784494.763909348868765, 784506.009830802446231, 784517.255765316309407, 784528.501712890341878, 784539.747673524660058, 784550.993647218332626, 784562.239633972058073, 784573.485633785254322, 784584.731646657804959, 784595.977672589477152, 784607.223711580270901, 784618.469763629720546, 784629.715828737942502, 784640.961906904703937, 784652.207998129655607, 784663.454102412913926, 784674.700219754013233, 784685.946350153069943, 784697.192493609734811, 784708.438650123891421, 784719.684819695306942, 784730.931002323632129, 784742.177198009216227, 784753.423406751360744, 784764.669628550414927, 784775.915863405680284, 784787.162111317506060, 784798.408372285193764, 784809.654646308859810, 784820.900933388154954, 784832.147233523195609, 784843.393546713632531, 784854.639872959349304, 784865.886212260229513, 784877.132564616156742, 784888.378930026432499, 784899.625308491638862, 784910.871700010960922, 784922.118104584631510, 784933.364522212301381, 784944.610952893970534, 784955.857396629406139, 784967.103853418491781, 784978.350323260645382, 784989.596806156216189, 785000.843302104854956, 785012.089811106096022, 785023.336333160288632, 785034.582868266850710, 785045.829416425898671, 785057.075977637199685, 785068.322551900404505, 785079.569139215513133, 785090.815739582176320, 785102.062353000394069, 785113.308979469933547, 785124.555618990794756, 785135.802271562512033, 785147.048937185201794, 785158.295615858281963, 785169.542307582218200, 785180.789012356079184, 785192.035730180330575, 785203.282461054390296, 785214.529204978374764, 785225.775961952051148, 785237.022731975070201, 785248.269515047548339, 785259.516311169019900, 785270.763120339368470, 785282.009942558477633, 785293.256777826347388, 785304.503626142628491, 785315.750487507204525, 785326.997361919842660, 785338.244249380426481, 785349.491149888839573, 785360.738063444732688, 785371.984990048105828, 785383.231929698609747, 785394.478882396360859, 785405.725848140893504, 785416.972826932207681, 785428.219818770186976, 785439.466823654482141, 785450.713841584976763, 785461.960872561670840, 785473.207916583982296, 785484.454973652143963, 785495.702043765923008, 785506.949126925086603, 785518.196223129401915, 785529.443332378868945, 785540.690454673138447, 785551.937590011977591, 785563.184738395386375, 785574.431899823248386, 785585.679074295214377, 785596.926261811284348, 785608.173462371109053, 785619.420675974688493, 785630.667902621906251, 785641.915142312180251, 785653.162395045626909, 785664.409660822246224, 785675.656939641572535, 785686.904231503722258, 785698.151536408229731, 785709.398854355094954, 785720.646185343968682, 785731.893529374967329, 785743.140886447741650, 785754.388256562175229, 785765.635639718035236, 785776.883035915088840, 785788.130445153452456, 785799.377867432776839, 785810.625302752712741, 785821.872751113376580, 785833.120212514419109, 785844.367686955723912, 785855.615174437290989, 785866.862674958654679, 785878.110188519814983, 785889.357715120539069, 785900.605254760826938, 785911.852807440212928, 785923.100373158813454, 785934.347951916162856, 785945.595543712377548, 785956.843148547108285, 785968.090766420238651, 785979.338397331768647, 785990.586041281116195, 786001.833698268514127, 786013.081368293613195, 786024.329051356064156, 786035.576747456216253, 786046.824456593370996, 786058.072178767761216, 786069.319913978921250, 786080.567662226734683, 786091.815423511085100, 786103.063197831972502, 786114.310985188814811, 786125.558785581728444, 786136.806599010713398, 786148.054425475187600, 786159.302264975151047, 786170.550117510720156, 786181.797983081196435, 786193.045861686812714, 786204.293753327219747, 786215.541658002184704, 786226.789575711591169, 786238.037506455555558, 786249.285450233612210, 786260.533407045761123, 786271.781376891536638, 786283.029359771055169, 786294.277355684083886, 786305.525364630157128, 786316.773386609624140, 786328.021421622019261, 786339.269469667109661, 786350.517530745011754, 786361.765604855259880, 786373.013691997737624, 786384.261792172561400, 786395.509905379032716, 786406.758031617500819, 786418.006170887383632, 786429.254323188913986, 786440.502488521509804, 786451.750666885403916, 786462.998858280130662, 786474.247062705690041, 786485.495280161616392, 786496.743510648142546, 786507.991754164919257, 786519.240010711713694, 786530.488280288409442, 786541.736562895006500, 786552.984858531039208, 786564.233167196507566, 786575.481488891178742, 786586.729823614819907, 786597.978171367431059, 786609.226532148779370, 786620.474905958748423, 786631.723292797105387, 786642.971692663617432, 786654.220105558168143, 786665.468531480641104, 786676.716970430570655, 786687.965422408306040, 786699.213887413265184, 786710.462365445564501, 786721.710856504854746, 786732.959360590786673, 786744.207877703709528, 786755.456407843041234, 786766.704951008548960, 786777.953507200349122, 786789.202076418208890, 786800.450658661895432, 786811.699253931175917, 786822.947862226050347, 786834.196483546169475, 786845.445117891533300, 786856.693765261676162, 786867.942425656830892, 786879.191099076648243, 786890.439785520895384, 786901.688484989455901, 786912.937197482213378, 786924.185922998818569, 786935.434661539387889, 786946.683413103455678, 786957.932177690905519, 786969.180955301853828, 786980.429745935718529, 786991.678549592732452, 787002.927366272429936, 787014.176195974810980, 787025.425038699642755, 787036.673894446576014, 787047.922763215610757, 787059.171645006746985, 787070.420539819519036, 787081.669447654043324, 787092.918368509970605, 787104.167302387184463, 787115.416249285335653, 787126.665209204540588, 787137.914182144333608, 787149.163168104831129, 787160.412167085567489, 787171.661179086891934, 787182.910204107989557, 787194.159242149093188, 787205.408293209969997, 787216.657357290387154, 787227.906434389995411, 787239.155524509027600, 787250.404627647018060, 787261.653743803966790, 787272.902872979640961, 787284.152015173807740, 787295.401170386350714, 787306.650338617153466, 787317.899519865866750, 787329.148714132606983, 787340.397921417024918, 787351.647141718887724, 787362.896375038195401, 787374.145621374598704, 787385.394880728097633, 787396.644153098459356, 787407.893438485451043, 787419.142736888839863, 787430.392048308742233, 787441.641372744692490, 787452.890710196690634, 787464.140060664620250, 787475.389424148132093, 787486.638800647226162, 787497.888190161553212, 787509.137592690996826, 787520.387008235440589, 787531.636436794768088, 787542.885878368746489, 787554.135332957259379, 787565.384800560073927, 787576.634281176957302, 787587.883774807793088, 787599.133281452348456, 787610.382801110623404, 787621.632333782268688, 787632.881879467400722, 787644.131438165553845, 787655.381009876844473, 787666.630594600574113, 787677.880192337208427, 787689.129803086048923, 787700.379426847328432, 787711.629063620697707, 787722.878713406040333, 787734.128376203123480, 787745.378052011714317, 787756.627740831812844, 787767.877442663302645, 787779.127157505718060, 787790.376885358942673, 787801.626626223092899, 787812.876380097819492, 787824.126146983006038, 787835.375926878303289, 787846.625719783827662, 787857.875525699113496, 787869.125344624277204, 787880.375176558853127, 787891.625021502841264, 787902.874879456125200, 787914.124750418472104, 787925.374634389765561, 787936.624531369656324, 787947.874441358260810, 787959.124364355113357, 787970.374300360097550, 787981.624249373213388, 787992.874211394460872, 788004.124186423141509, 788015.374174459371716, 788026.624175503035076, 788037.874189553898759, 788049.124216611729935, 788060.374256676412188, 788071.624309747829102, 788082.874375825864263, 788094.124454910168424, 788105.374547000625171, 788116.624652097118087, 788127.874770199530758, 788139.124901307630353, 788150.375045421184041, 788161.625202539842576, 788172.875372663955204, 788184.125555792939849, 788195.375751926912926, 788206.625961065408774, 788217.876183208427392, 788229.126418355852365, 788240.376666507334448, 788251.626927662757225, 788262.877201822004281, 788274.127488985075615, 788285.377789151505567, 788296.628102321294136, 788307.878428494092077, 788319.128767670015804, 788330.379119848832488, 788341.629485029843636, 788352.879863213747740, 788364.130254399729893, 788375.380658587906510, 788386.631075778161176, 788397.881505970028229, 788409.131949163624085, 788420.382405358599499, 788431.632874554721639, 788442.883356752106920, 788454.133851950522512, 788465.384360149619170, 788476.634881349396892, 788487.885415549506433, 788499.135962749831378, 788510.386522950371727, 788521.637096150894649, 788532.887682350818068, 788544.138281550724059, 788555.388893750030547, 788566.639518948388286, 788577.890157145913690, 788589.140808342373930, 788600.391472537536174, 788611.642149731400423, 788622.892839923617430, 788634.143543113954365, 788645.394259302527644, 788656.644988488871604, 788667.895730672986247, 788679.146485854638740, 788690.397254033829086, 788701.648035210091621, 788712.898829383426346, 788724.149636553716846, 788735.400456720613874, 788746.651289884117432, 788757.902136044111103, 788769.152995200129226, 788780.403867352288216, 788791.654752500355244, 788802.905650644097477, 788814.156561783282086, 788825.407485917909071, 788836.658423047862016, 788847.909373172675259, 788859.160336292465217, 788870.411312406882644, 788881.662301515811123, 788892.913303619134240, 788904.164318716502748, 788915.415346808033064, 788926.666387893375941, 788937.917441972414963, 788949.168509044800885, 788960.419589110766537, 788971.670682169846259, 788982.921788221807219, 788994.172907266649418, 789005.424039304256439, 789016.675184334279038, 789027.926342356717214, 789039.177513371221721, 789050.428697377792560, 789061.679894376196899, 789072.931104366201907, 789084.182327347458340, 789095.433563320315443, 789106.684812284307554, 789117.936074239201844, 789129.187349184998311, 789140.438637121347710, 789151.689938048250042, 789162.941251965239644, 789174.192578872665763, 789185.443918769713491, 789196.695271656848490, 789207.946637533372268, 789219.198016399634071, 789230.449408255051821, 789241.700813099509105, 789252.952230933005922, 789264.203661755425856, 789275.455105566186830, 789286.706562365521677, 789297.958032153197564, 789309.209514928865246, 789320.461010692524724, 789331.712519443943165, 789342.964041183004156, 789354.215575909474865, 789365.467123623122461, 789376.718684323946945, 789387.970258011715487, 789399.221844686311670, 789410.473444347386248, 789421.725056994939223, 789432.976682628854178, 789444.228321248665452, 789455.479972854489461, 789466.731637445860542, 789477.983315023127943, 789489.235005585593171, 789500.486709133372642, 789511.738425666349940, 789522.990155183942989, 789534.241897686617449, 789545.493653173674829, 789556.745421644998714, 789567.997203100705519, 789579.248997540445998, 789590.500804964103736, 789601.752625371445902, 789613.004458762356080, 789624.256305136717856, 789635.508164494298398, 789646.760036834748462, 789658.011922158300877, 789669.263820464489982, 789680.515731753199361, 789691.767656024312600, 789703.019593277713284, 789714.271543513052166, 789725.523506730212830, 789736.775482929078862, 789748.027472109533846, 789759.279474271344952, 789770.531489414395764, 789781.783517538337037, 789793.035558643285185, 789804.287612728890963, 789815.539679795154370, 789826.791759841609746, 789838.043852868140675, 789849.295958874863572, 789860.548077861312777, 789871.800209827488288, 789883.052354773273692, 789894.304512698319741, 789905.556683602626435, 789916.808867485844530, 789928.061064347974025, 789939.313274188665673, 789950.565497007919475, 789961.817732805502601, 789973.069981581182219, 789984.322243335074745, 789995.574518066598102, 790006.826805775752291, 790018.079106462420896, 790029.331420126487501, 790040.583746767719276, 790051.836086385883391, 790063.088438980979845, 790074.340804552542977, 790085.593183100689203, 790096.845574625185691, 790108.097979125683196, 790119.350396602181718, 790130.602827054681256, 790141.855270482599735, 790153.107726886053570, 790164.360196264926344, 790175.612678618752398, 790186.865173947648145, 790198.117682251380756, 790209.370203529600985, 790220.622737782425247, 790231.875285009387881, 790243.127845210488886, 790254.380418385611847, 790265.633004534640349, 790276.885603657225147, 790288.138215753133409, 790299.390840822365135, 790310.643478864687495, 790321.896129880100489, 790333.148793868138455, 790344.401470828917809, 790355.654160761972889, 790366.906863667420112, 790378.159579544910230, 790389.412308394326828, 790400.665050215553492, 790411.917805008357391, 790423.170572772622108, 790434.423353508231230, 790445.676147214835510, 790456.928953892318532, 790468.181773540680297, 790479.434606159571558, 790490.687451748643070, 790501.940310308360495, 790513.193181837908924, 790524.446066337521188, 790535.698963806848042, 790546.951874245773070, 790558.204797654063441, 790569.457734031486325, 790580.710683378158137, 790591.963645693613216, 790603.216620977851562, 790614.469609230756760, 790625.722610452095978, 790636.975624641403556, 790648.228651799028739, 790659.481691924389452, 790670.734745017485693, 790681.987811078201048, 790693.240890106302686, 790704.493982101674192, 790715.747087064082734, 790727.000204993411899, 790738.253335889428854, 790749.506479752017185, 790760.759636580944061, 790772.012806376093067, 790783.265989137231372, 790794.519184864242561, 790805.772393557126634, 790817.025615215534344, 790828.278849839232862, 790839.532097428105772, 790850.785357982153073, 790862.038631501025520, 790873.291917984490283, 790884.545217432547361, 790895.798529844963923, 790907.051855221623555, 790918.305193562293425, 790929.558544866973534, 790940.811909135198221, 790952.065286366851069, 790963.318676562048495, 790974.572079720324837, 790985.825495841563679, 790997.078924925881438, 791008.332366972696036, 791019.585821982240304, 791030.839289953932166, 791042.092770887888037, 791053.346264783642255, 791064.599771641427651, 791075.853291461011395, 791087.106824242044240, 791098.360369984293357, 791109.613928687875159, 791120.867500352323987, 791132.121084977756254, 791143.374682563589886, 791154.628293110174127, 791165.881916617043316, 791177.135553084081039, 791188.389202511170879, 791199.642864897963591, 791210.896540244459175, 791222.150228550541215, 791233.403929815627635, 791244.657644040300511, 791255.911371223744936, 791267.165111366077326, 791278.418864467064850, 791289.672630526474677, 791300.926409544306807, 791312.180201520211995, 791323.434006454190239, 791334.687824345775880, 791345.941655195085332, 791357.195499002002180, 791368.449355766177177, 791379.703225487493910, 791390.957108165835962, 791402.211003800970502, 791413.464912392664701, 791424.718833940685727, 791435.972768445266411, 791447.226715905941091, 791458.480676322593354, 791469.734649695106782, 791480.988636023132131, 791492.242635306669399, 791503.496647545485757, 791514.750672739231959, 791526.004710888257250, 791537.258761991863139, 791548.512826050282456, 791559.766903063049540, 791571.020993030164391, 791582.275095951277763, 791593.529211826506071, 791604.783340655383654, 791616.037482438026927, 791627.291637173970230, 791638.545804863329977, 791649.799985505756922, 791661.054179101134650, 791672.308385649346747, 791683.562605150043964, 791694.816837603226304, 791706.071083008544520, 791717.325341366115026, 791728.579612675821409, 791739.833896937081590, 791751.088194150011986, 791762.342504314263351, 791773.596827429952100, 791784.851163496728987, 791796.105512514244765, 791807.359874482732266, 791818.614249401842244, 791829.868637271225452, 791841.123038090881892, 791852.377451860811561, 791863.631878580548801, 791874.886318250093609, 791886.140770869096741, 791897.395236437674612, 791908.649714955361560, 791919.904206422274001, 791931.158710838179104, 791942.413228202611208, 791953.667758515803143, 791964.922301777405664, 791976.176857987302355, 791987.431427145027556, 791998.686009250814095, 792009.940604304429144, 792021.195212305639870, 792032.449833254213445, 792043.704467150033452, 792054.959113992983475, 792066.213773782714270, 792077.468446519109420, 792088.723132202285342, 792099.977830831892788, 792111.232542407698929, 792122.487266929470934, 792133.742004397208802, 792144.996754810796119, 792156.251518169883639, 792167.506294474354945, 792178.761083723977208, 792190.015885918634012, 792201.270701058208942, 792212.525529142701998, 792223.780370171763934, 792235.035224145045504, 792246.290091062546708, 792257.544970924383961, 792268.799863729742356, 792280.054769478971139, 792291.309688171837479, 792302.564619808108546, 792313.819564387551509, 792325.074521910166368, 792336.329492375603877, 792347.584475783631206, 792358.839472134248354, 792370.094481427338906, 792381.349503662553616, 792392.604538839892484, 792403.859586959006265, 792415.114648020011373, 792426.369722022558562, 792437.624808966415003, 792448.879908851580694, 792460.135021677473560, 792471.390147444442846, 792482.645286152255721, 792493.900437800562941, 792505.155602389131673, 792516.410779917961918, 792527.665970386937261, 792538.921173795824870, 792550.176390144159086, 792561.431619432056323, 792572.686861659516580, 792583.942116826190613, 792595.197384931729175, 792606.452665976248682, 792617.707959959516302, 792628.963266881182790, 792640.218586741248146, 792651.473919539595954, 792662.729265275876969, 792673.984623950091191, 792685.239995562005788, 792696.495380111387931, 792707.750777598237619, 792719.006188022205606, 792730.261611383291893, 792741.517047681030817, 792752.772496915655211, 792764.027959086815827, 792775.283434194279835, 792786.538922237930819, 792797.794423217535950, 792809.049937133095227, 792820.305463984492235, 792831.561003771028481, 792842.816556493169628, 792854.072122150566429, 792865.327700742753223, 792876.583292269962840, 792887.838896731846035, 792899.094514128169976, 792910.350144459051080, 792921.605787723790854, 792932.861443922738545, 792944.117113055544905, 792955.372795121977106, 792966.628490121918730, 792977.884198055253364, 792989.139918921864592, 793000.395652721286751, 793011.651399453752674, 793022.907159118796699, 793034.162931716302410, 793045.418717246153392, 793056.674515708233230, 793067.930327102309093, 793079.186151428380981, 793090.441988685866818, 793101.697838874999434, 793112.953701995429583, 793124.209578047040850, 793135.465467029600404, 793146.721368943224661, 793157.977283787331544, 793169.233211562037468, 793180.489152266993187, 793191.745105902082287, 793203.001072467304766, 793214.257051962311380, 793225.513044386869296, 793236.769049741094932, 793248.025068024522625, 793259.281099237268791, 793270.537143378984183, 793281.793200449552387, 793293.049270448740572, 793304.305353376199491, 793315.561449232278392, 793326.817558016395196, 793338.073679728666320, 793349.329814368626103, 793360.585961936274543, 793371.842122431378812, 793383.098295854055323, 793394.354482203489169, 793405.610681480262429, 793416.866893683560193, 793428.123118813731708, 793439.379356870427728, 793450.635607853415422, 793461.891871762578376, 793473.148148597567342, 793484.404438358382322, 793495.660741044906899, 793506.917056657141075, 793518.173385194502771, 793529.429726656991988, 793540.686081044608727, 793551.942448357003741, 793563.198828594060615, 793574.455221755546518, 793585.711627841345035, 793596.968046851339750, 793608.224478785297833, 793619.480923643102869, 793630.737381424638443, 793641.993852129555307, 793653.250335757737048, 793664.506832309183665, 793675.763341783545911, 793687.019864180707373, 793698.276399500551634, 793709.532947742962278, 793720.789508907590061, 793732.046082994434983, 793743.302670003264211, 793754.559269933961332, 793765.815882786060683, 793777.072508559911512, 793788.329147254931740, 793799.585798871237785, 793810.842463408363983, 793822.099140866310336, 793833.355831245076843, 793844.612534544197842, 793855.869250763673335, 793867.125979903154075, 793878.382721962640062, 793889.639476942131296, 793900.896244841162115, 793912.153025659732521, 793923.409819397609681, 793934.666626054560766, 793945.923445630585775, 793957.180278125219047, 793968.437123538576998, 793979.693981870543212, 793990.950853120768443, 794002.207737289019860, 794013.464634375413880, 794024.721544379601255, 794035.978467301349156, 794047.235403140541166, 794058.492351897060871, 794069.749313570791855, 794081.006288161501288, 794092.263275669072755, 794103.520276093157008, 794114.777289433754049, 794126.034315690631047, 794137.291354863671586, 794148.548406952642836, 794159.805471957428381, 794171.062549878028221, 794182.319640713976696, 794193.576744465273805, 794204.833861131686717, 794216.090990713099018, 794227.348133209277876, 794238.605288619990461, 794249.862456945353188, 794261.119638185016811, 794272.376832338748500, 794283.634039406548254, 794294.891259387950413, 794306.148492283187807, 794317.405738091911189, 794328.662996813771315, 794339.920268448884599, 794351.177552996901795, 794362.434850457706489, 794373.692160831298679, 794384.949484117212705, 794396.206820315681398, 794407.464169426122680, 794418.721531448420137, 794429.978906382573768, 794441.236294228350744, 794452.493694985634647, 794463.751108654309064, 794475.008535234141164, 794486.265974724898115, 794497.523427126463503, 794508.780892438604496, 794520.038370661204681, 794531.295861794264056, 794542.553365837200545, 794553.810882790363394, 794565.068412653170526, 794576.325955425854772, 794587.583511107717641, 794598.841079699108377, 794610.098661199561320, 794621.356255608843639, 794632.613862927071750, 794643.871483153896406, 794655.129116289317608, 794666.386762332986109, 794677.644421284669079, 794688.902093144366518, 794700.159777912078425, 794711.417475587106310, 794722.675186169683002, 794733.932909659692086, 794745.190646056900732, 794756.448395360959694, 794767.706157571752556, 794778.963932689279318, 794790.221720713307150, 794801.479521643603221, 794812.737335480051115, 794823.995162222301587, 794835.253001870587468, 794846.510854424559511, 794857.768719883868471, 794869.026598248514347, 794880.284489518380724, 794891.542393693118356, 794902.800310772494413, 794914.058240756741725, 794925.316183645511046, 794936.574139438453130, 794947.832108135684393, 794959.090089736739174, 794970.348084241733886, 794981.606091650202870, 794992.864111962146126, 795004.122145177563652, 795015.380191295989789, 795026.638250317540951, 795037.896322241751477, 795049.154407068737783, 795060.412504798150621, 795071.670615429873578, 795082.928738963673823, 795094.186875399318524, 795105.445024737040512, 795116.703186976257712, 795127.961362117086537, 795139.219550159177743, 795150.477751102414913, 795161.735964946565218, 795172.994191691628657, 795184.252431337139569, 795195.510683883330785, 795206.768949329736643, 795218.027227676357143, 795229.285518922959454, 795240.543823069427162, 795251.802140115411021, 795263.060470060911030, 795274.318812905810773, 795285.577168649644591, 795296.835537292528898, 795308.093918834347278, 795319.352313274866901, 795330.610720613622107, 795341.869140850845724, 795353.127573986304924, 795364.386020019534044, 795375.644478950649500, 795386.902950779534876, 795398.161435505840927, 795409.419933129567653, 795420.678443650249392, 795431.936967068118975, 795443.195503382594325, 795454.454052593791857, 795465.712614701362327, 795476.971189705538563, 795488.229777605622075, 795499.488378401845694, 795510.746992093976587, 795522.005618681665510, 795533.264258164679632, 795544.522910543251783, 795555.781575816916302, 795567.040253985323943, 795578.298945048707537, 795589.557649006834254, 795600.816365859471262, 795612.075095606385730, 795623.333838247344829, 795634.592593782464974, 795645.851362211396918, 795657.110143533907831, 795668.368937749881297, 795679.627744859200902, 795690.886564861750230, 795702.145397757180035, 795713.404243545606732, 795724.663102226681076, 795735.921973800170235, 795747.180858266074210, 795758.439755623810925, 795769.698665873962454, 795780.957589015713893, 795792.216525049298070, 795803.475473974249326, 795814.734435790567659, 795825.993410498136654, 795837.252398096490651, 795848.511398585862480, 795859.770411965786479, 795871.029438236262649, 795882.288477397058159, 795893.547529448173009, 795904.806594389141537, 795916.065672219963744, 795927.324762940523215, 795938.583866550354287, 795949.842983049689792, 795961.102112438296899, 795972.361254715826362, 795983.620409882278182, 795994.879577937303111, 796006.138758880784735, 796017.397952712723054, 796028.657159432768822, 796039.916379040805623, 796051.175611536717042, 796062.434856920270249, 796073.694115191348828, 796084.953386349836364, 796096.212670395500027, 796107.471967328106984, 796118.731277147773653, 796129.990599853685126, 796141.249935446423478, 796152.509283925523050, 796163.768645290751010, 796175.028019541990943, 796186.287406679010019, 796197.546806701924652, 796208.806219610152766, 796220.065645403810777, 796231.325084082549438, 796242.584535646368749, 796253.844000095152296, 796265.103477428434417, 796276.362967646447942, 796287.622470748727210, 796298.881986735155806, 796310.141515605733730, 796321.401057359995320, 796332.660611997940578, 796343.920179519569501, 796355.179759924532846, 796366.439353212714195, 796377.698959383880720, 796388.958578437799588, 796400.218210374470800, 796411.477855193661526, 796422.737512895255350, 796433.997183479019441, 796445.256866944953799, 796456.516563292709179, 796467.776272522169165, 796479.035994632984512, 796490.295729625388049, 796501.555477498914115, 796512.815238253329881, 796524.075011888751760, 796535.334798404946923, 796546.594597801566124, 796557.854410078609362, 796569.114235235843807, 796580.374073273153044, 796591.633924190304242, 796602.893787987064570, 796614.153664663550444, 796625.413554219296202, 796636.673456654301845, 796647.933371968334541, 796659.193300161277875, 796670.453241233015433, 796681.713195183197968, 796692.973162011709064, 796704.233141718432307, 796715.493134303367697, 796726.753139766165987, 796738.013158106594346, 796749.273189324652776, 796760.533233419992030, 796771.793290392612107, 796783.053360242396593, 796794.313442968646996, 796805.573538572061807, 796816.833647051942535, 796828.093768408172764, 796839.353902640636079, 796850.614049749099649, 796861.874209733563475, 796873.134382593678311, 796884.394568329444155, 796895.654766940628178, 796906.914978426881135, 796918.175202788319439, 796929.435440024593845, 796940.695690135704353, 796951.955953121301718, 796963.216228981385939, 796974.476517715607770, 796985.736819323967211, 796996.997133806115016, 797008.257461162167601, 797019.517801391659304, 797030.778154494706541, 797042.038520470960066, 797053.298899320187047, 797064.559291042387486, 797075.819695637328550, 797087.080113104777411, 797098.340543444734067, 797109.600986656965688, 797120.861442741239443, 797132.121911697555333, 797143.382393525447696, 797154.642888225032948, 797165.903395795961842, 797177.163916238001548, 797188.424449551268481, 797199.684995735529810, 797210.945554790552706, 797222.206126716220751, 797233.466711512068287, 797244.727309178444557, 797255.987919714883901, 797267.248543121037073, 797278.509179397136904, 797289.769828542717732, 797301.030490557779558, 797312.291165442089550, 797323.551853195531294, 797334.812553818104789, 797346.073267309227958, 797357.333993669017218, 797368.594732897006907, 797379.855484993546270, 797391.116249958169647, 797402.377027790644206, 797413.637818490969948, 797424.898622058914043, 797436.159438494360074, 797447.420267796958797, 797458.681109966593795, 797469.941965003381483, 797481.202832906856202, 797492.463713677017950, 797503.724607313517481, 797514.985513816471212, 797526.246433185413480, 797537.507365420344286, 797548.768310521147214, 797560.029268487356603, 797571.290239319088869, 797582.551223016344011, 797593.812219578539953, 797605.073229005676694, 797616.334251297637820, 797627.595286454306915, 797638.856334475451149, 797650.117395360721275, 797661.378469110233709, 797672.639555723755620, 797683.900655201054178, 797695.161767542012967, 797706.422892746399157, 797717.684030814212747, 797728.945181745104492, 797740.206345538841560, 797751.467522195423953, 797762.728711714735255, 797773.989914096542634, 797785.251129340613261, 797796.512357446830720, 797807.773598415078595, 797819.034852245124057, 797830.296118936967105, 797841.557398490025662, 797852.818690904416144, 797864.079996180138551, 797875.341314316843636, 797886.602645314298570, 797897.863989172503352, 797909.125345891108736, 797920.386715470114723, 797931.648097909172066, 797942.909493208280765, 797954.170901367207989, 797965.432322385953739, 797976.693756264052354, 797987.955203001620248, 797999.216662598191760, 798010.478135053999722, 798021.739620368462056, 798033.001118541578762, 798044.262629573233426, 798055.524153463309631, 798066.785690211458132, 798078.047239817795344, 798089.308802281739190, 798100.570377603638917, 798111.831965782796033, 798123.093566819443367, 798134.355180713348091, 798145.616807464160956, 798156.878447071881965, 798168.140099536278285, 798179.401764857233502, 798190.663443034514785, 798201.925134068005718, 798213.186837957589887, 798224.448554702801630, 798235.710284303990193, 798246.972026760573499, 798258.233782072667964, 798269.495550239807926, 798280.757331261993386, 798292.019125139224343, 798303.280931871035136, 798314.542751457309350, 798325.804583898046985, 798337.066429193131626, 798348.328287342097610, 798359.590158344944939, 798370.852042201557197, 798382.113938911817968, 798393.375848475261591, 798404.637770892120898, 798415.899706161930226, 798427.161654284573160, 798438.423615260049701, 798449.685589088127017, 798460.947575768572278, 798472.209575301269069, 798483.471587685868144, 798494.733612922602333, 798505.995651010889560, 798517.257701950729825, 798528.519765742006712, 798539.781842384603806, 798551.043931878288276, 798562.306034222827293, 798573.568149418220855, 798584.830277464003302, 798596.092418360291049, 798607.354572106734850, 798618.616738703451119, 798629.878918149974197, 798641.141110446304083, 798652.403315592207946, 798663.665533587569371, 798674.927764432039112, 798686.190008125733584, 798697.452264668303542, 798708.714534059632570, 798719.976816299604252, 798731.239111387985758, 798742.501419324660674, 798753.763740109396167, 798765.026073742075823, 798776.288420222583227, 798787.550779550685547, 798798.813151726149954, 798810.075536748976447, 798821.337934618815780, 798832.600345335667953, 798843.862768899416551, 798855.125205309712328, 798866.387654566438869, 798877.650116669363342, 798888.912591618369333, 798900.175079413456842, 798911.437580054509453, 798922.700093540945090, 798933.962619872996584, 798945.225159050081857, 798956.487711072550155, 798967.750275940052234, 798979.012853652006015, 798990.275444208877161, 799001.538047610200010, 799012.800663855741732, 799024.063292945502326, 799035.325934879132546, 799046.588589656748809, 799057.851257277885452, 799069.113937742542475, 799080.376631050487049, 799091.639337201602757, 799102.902056195656769, 799114.164788032649085, 799125.427532712230459, 799136.690290234400891, 799147.953060598811135, 799159.215843805344775, 799170.478639853768982, 799181.741448744200170, 799193.004270476289093, 799204.267105049919337, 799215.529952464741655, 799226.792812720872462, 799238.055685817962512, 799249.318571755895391, 799260.581470534671098, 799271.844382153707556, 799283.107306613121182, 799294.370243912911974, 799305.633194052497856, 799316.896157032111660, 799328.159132851404138, 799339.422121510142460, 799350.685123008326627, 799361.948137345490977, 799373.211164521751925, 799384.474204536993057, 799395.737257390981540, 799407.000323083484545, 799418.263401614385657, 799429.526492983452044, 799440.789597190450877, 799452.052714235382155, 799463.315844118013047, 799474.578986838227138, 799485.842142395675182, 799497.105310790590011, 799508.368492022505961, 799519.631686091306619, 799530.894892996642739, 799542.158112738747150, 799553.421345317154191, 799564.684590731747448, 799575.947848982410505, 799587.211120069143362, 799598.474403991480358, 799609.737700749305077, 799621.001010342733935, 799632.264332771301270, 799643.527668035007082, 799654.791016133385710, 799666.054377066786401, 799677.317750834627077, 799688.581137436907738, 799699.844536873511970, 799711.107949144206941, 799722.371374248643406, 799733.634812187054195, 799744.898262958857231, 799756.161726564285345, 799767.425203002872877, 799778.688692274619825, 799789.952194379176944, 799801.215709316660650, 799812.479237086721696, 799823.742777689127252, 799835.006331123877317, 799846.269897390622646, 799857.533476489363238, 799868.797068419982679, 799880.060673182131723, 799891.324290775810368, 799902.587921200669371, 799913.851564456825145, 799925.115220543812029, 799936.378889461513609, 799947.642571209929883, 799958.906265788828023, 799970.169973197975196, 799981.433693437371403, 799992.697426506783813, 800003.961172405863181, 800015.224931134493090, 800026.488702692906372, 800037.752487080288120, 800049.016284296987578, 800060.280094342655502, 800071.543917217175476, 800082.807752920314670, 800094.071601451956667, 800105.335462811868638, 800116.599337000050582, 800127.863224015920423, 800139.127123859943822, 800150.391036531655118, 800161.654962030705065, 800172.918900357093662, 800184.182851510820910, 800195.446815491421148, 800206.710792298894376, 800217.974781933124177, 800229.238784393644892, 800240.502799680805765, 800251.766827794024721, 800263.030868733185343, 800274.294922498287633, 800285.558989089098759, 800296.823068505385891, 800308.087160747032613, 800319.351265813806094, 800330.615383705822751, 800341.879514422500506, 800353.143657964072190, 800364.407814330072142, 800375.671983520383947, 800386.936165535124019, 800398.200360373710282, 800409.464568036259152, 800420.728788522421382, 800431.993021832313389, 800443.257267965469509, 800454.521526921889745, 800465.785798701457679, 800477.050083303940482, 800488.314380728988908, 800499.578690976602957, 800510.843014046666212, 800522.107349938945845, 800533.371698653441854, 800544.636060189688578, 800555.900434547802433, 800567.164821727434173, 800578.429221728467382, 800589.693634550785646, 800600.958060194156133, 800612.222498658346012, 800623.486949943588115, 800634.751414049183950, 800646.015890975366347, 800657.280380721786059, 800668.544883288210258, 800679.809398674638942, 800691.073926880839281, 800702.338467906578444, 800713.603021751740016, 800724.867588416207582, 800736.132167899981141, 800747.396760202478617, 800758.661365323932841, 800769.925983263878152, 800781.190614022430964, 800792.455257599125616, 800803.719913993845694, 800814.984583206707612, 800826.249265237362124, 800837.513960085692815, 800848.778667751466855, 800860.043388234567828, 800871.308121534879319, 800882.572867652052082, 800893.837626585853286, 800905.102398336515762, 800916.367182903690264, 800927.631980287027545, 800938.896790486760437, 800950.161613502423279, 800961.426449333783239, 800972.691297980956733, 800983.956159443710931, 800995.221033721463755, 801006.485920814564452, 801017.750820722663775, 801029.015733445761725, 801040.280658983392641, 801051.545597335672937, 801062.810548502253368, 801074.075512482784688, 801085.340489277616143, 801096.605478886049241, 801107.870481308433227, 801119.135496544186026, 801130.400524593424052, 801141.665565455914475, 801152.930619131308049, 801164.195685619604774, 801175.460764920688234, 801186.725857034209184, 801197.990961960167624, 801209.256079698330723, 801220.521210248582065, 801231.786353610688820, 801243.051509784418158, 801254.316678769886494, 801265.581860566628166, 801276.847055174526758, 801288.112262593698688, 801299.377482823678292, 801310.642715864465572, 801321.907961715711281, 801333.173220377415419, 801344.438491849577986, 801355.703776131500490, 801366.969073223532178, 801378.234383125207387, 801389.499705836526118, 801400.765041357255541, 801412.030389687279239, 801423.295750826480798, 801434.561124774394557, 801445.826511531369761, 801457.091911096707918, 801468.357323470525444, 801479.622748652705923, 801490.888186643016525, 801502.153637441224419, 801513.419101047213189, 801524.684577460750006, 801535.950066681951284, 801547.215568710351363, 801558.481083545950241, 801569.746611188165843, 801581.012151637463830, 801592.277704893494956, 801603.543270955909975, 801614.808849824592471, 801626.074441499542445, 801637.340045980294235, 801648.605663266964257, 801659.871293359203264, 801671.136936257127672, 801682.402591960271820, 801693.668260468519293, 801704.933941781753674, 801716.199635899858549, 801727.465342822833918, 801738.731062549981289, 801749.996795081649907, 801761.262540417490527, 801772.528298557386734, 801783.794069500989281, 801795.059853248414584, 801806.325649799313396, 801817.591459153685719, 801828.857281311182305, 801840.123116271570325, 801851.388964034849778, 801862.654824600904249, 801873.920697969500907, 801885.186584140639752, 801896.452483113855124, 801907.718394888914190, 801918.984319466049783, 801930.250256844912656, 801941.516207025386393, 801952.782170007121749, 801964.048145790118724, 801975.314134374260902, 801986.580135759315453, 801997.846149944933131, 802009.112176931346767, 802020.378216718090698, 802031.644269305048510, 802042.910334691870958, 802054.176412878907286, 802065.442503865575418, 802076.708607651991770, 802087.974724237690680, 802099.240853622672148, 802110.506995806703344, 802121.773150789900683, 802133.039318571565673, 802144.305499151931144, 802155.571692530764267, 802166.837898708065040, 802178.104117683134973, 802189.370349456439726, 802200.636594027397223, 802211.902851396007463, 802223.169121562154032, 802234.435404525371268, 802245.701700285892002, 802256.968008843366988, 802268.234330197679810, 802279.500664348714054, 802290.767011296004057, 802302.033371039666235, 802313.299743579700589, 802324.566128915525042, 802335.832527047023177, 802347.098937974311411, 802358.365361697273329, 802369.631798215443268, 802380.898247528704815, 802392.164709637174383, 802403.431184540269896, 802414.697672238224186, 802425.964172730455175, 802437.230686017195694, 802448.497212098096497, 802459.763750973041169, 802471.030302641913295, 802482.296867104363628, 802493.563444360275753, 802504.830034409766085, 802516.096637252252549, 802527.363252887851559, 802538.629881316446699, 802549.896522537572309, 802561.163176551344804, 802572.429843357414939, 802583.696522955899127, 802594.963215346331708, 802606.229920528712682, 802617.496638502692804, 802628.763369268388487, 802640.030112825334072, 802651.296869173645973, 802662.563638312974945, 802673.830420243320987, 802685.097214964218438, 802696.364022475900128, 802707.630842778016813, 802718.897675870102830, 802730.164521752507426, 802741.431380424881354, 802752.698251886875369, 802763.965136138605885, 802775.232033179723658, 802786.498943010112271, 802797.765865629655309, 802809.032801038119942, 802820.299749235273339, 802831.566710221115500, 802842.833683995530009, 802854.100670558167621, 802865.367669908911921, 802876.634682047646493, 802887.901706974138506, 802899.168744688387960, 802910.435795189812779, 802921.702858478878625, 802932.969934555003420, 802944.237023418070748, 802955.504125068197027, 802966.771239504683763, 802978.038366727763787, 802989.305506737204269, 803000.572659532888792, 803011.839825114351697, 803023.107003481825814, 803034.374194634961896, 803045.641398573643528, 803056.908615297637880, 803068.175844806828536, 803079.443087101099081, 803090.710342180100270, 803101.977610043832101, 803113.244890692178160, 803124.512184124789201, 803135.779490341665223, 803147.046809342806228, 803158.314141127630137, 803169.581485696136951, 803180.848843048210256, 803192.116213183733635, 803203.383596102357842, 803214.650991804082878, 803225.918400288792327, 803237.185821556253359, 803248.453255606233142, 803259.720702438615263, 803270.988162053399719, 803282.255634450004436, 803293.523119628662243, 803304.790617589023896, 803316.058128331089392, 803327.325651854509488, 803338.593188159167767, 803349.860737245064229, 803361.128299111849628, 803372.395873759407550, 803383.663461187505163, 803394.931061395909637, 803406.198674384853803, 803417.466300153871998, 803428.733938702964224, 803440.001590031781234, 803451.269254140206613, 803462.536931028123945, 803473.804620695183985, 803485.072323141503148, 803496.340038366732188, 803507.607766370987520, 803518.875507153687067, 803530.143260715063661, 803541.411027054651640, 803552.678806172334589, 803563.946598068112507, 803575.214402741752565, 803586.482220192905515, 803597.750050421687774, 803609.017893427866511, 803620.285749211092480, 803631.553617771482095, 803642.821499108802527, 803654.089393222704530, 803665.357300113188103, 803676.625219780020416, 803687.893152222852223, 803699.161097441916354, 803710.429055436863564, 803721.697026207577437, 803732.965009753708728, 803744.233006075257435, 803755.501015172107145, 803766.769037044025026, 803778.037071690661833, 803789.305119112250395, 803800.573179308325052, 803811.841252278769389, 803823.109338023699820, 803834.377436542417854, 803845.645547835156322, 803856.913671901682392, 803868.181808741879649, 803879.449958355166018, 803890.718120742007159, 803901.986295902053826, 803913.254483834840357, 803924.522684540483169, 803935.790898018749431, 803947.059124269406311, 803958.327363292337395, 803969.595615087426268, 803980.863879654440098, 803992.132156993378885, 804003.400447103776969, 804014.668749985867180, 804025.937065639183857, 804037.205394063610584, 804048.473735259030946, 804059.742089225328527, 804071.010455962154083, 804082.278835469507612, 804093.547227747272700, 804104.815632795100100, 804116.084050613106228, 804127.352481200941838, 804138.620924558374099, 804149.889380685286596, 804161.157849581330083, 804172.426331246970221, 804183.694825681508519, 804194.963332884944975, 804206.231852856930345, 804217.500385597581044, 804228.768931106547825, 804240.037489383830689, 804251.306060428963974, 804262.574644242064096, 804273.843240822898224, 804285.111850171349943, 804296.380472287302837, 804307.649107170291245, 804318.917754820431583, 804330.186415237491019, 804341.455088421353139, 804352.723774371668696, 804363.992473088321276, 804375.261184571427293, 804386.529908820521086, 804397.798645835602656, 804409.067395616555586, 804420.336158162914217, 804431.604933474794962, 804442.873721551964991, 804454.142522394191474, 804465.411336001357995, 804476.680162373464555, 804487.949001510045491, 804499.217853411217220, 804510.486718076630495, 804521.755595506052487, 804533.024485699716024, 804544.293388657039031, 804555.562304377905093, 804566.831232862314209, 804578.100174110149965, 804589.369128121063113, 804600.638094895053655, 804611.907074431772344, 804623.176066731219180, 804634.445071793161333, 804645.714089617482387, 804656.983120204065926, 804668.252163552446291, 804679.521219662856311, 804690.790288534830324, 804702.059370168484747, 804713.328464563586749, 804724.597571719670668, 804735.866691636852920, 804747.135824314900674, 804758.404969753697515, 804769.674127953127027, 804780.943298912839964, 804792.212482632836327, 804803.481679112883285, 804814.750888352864422, 804826.020110352546908, 804837.289345111814328, 804848.558592630433850, 804859.827852908405475, 804871.097125945379958, 804882.366411741357297, 804893.635710296104662, 804904.905021609505638, 804916.174345681210980, 804927.443682511220686, 804938.713032099301927, 804949.982394445454702, 804961.251769549213350, 804972.521157410810702, 804983.790558029781096, 804995.059971406008117, 805006.329397539375350, 805017.598836429882795, 805028.868288076948375, 805040.137752480804920, 805051.407229641103186, 805062.676719557726756, 805073.946222230559215, 805085.215737659367733, 805096.485265843919478, 805107.754806784330867, 805119.024360480136238, 805130.293926931102760, 805141.563506137579679, 805152.833098098868504, 805164.102702815202065, 805175.372320286114700, 805186.641950511489995, 805197.911593491444364, 805209.181249225395732, 805220.450917713460512, 805231.720598955405876, 805242.990292950998992, 805254.259999700356275, 805265.529719202895649, 805276.799451458733529, 805288.069196467637084, 805299.338954229606315, 805310.608724744059145, 805321.878508011111990, 805333.148304030764848, 805344.418112802552059, 805355.687934326590039, 805366.957768602296710, 805378.227615629904903, 805389.497475409298204, 805400.767347939894535, 805412.037233221926726, 805423.307131254812703, 805434.577042038901709, 805445.846965573611669, 805457.116901859058999, 805468.386850895010866, 805479.656812681234442, 805490.926787217496894, 805502.196774503914639, 805513.466774540022016, 805524.736787325819023, 805536.006812861072831, 805547.276851145783439, 805558.546902179485187, 805569.816965962294489, 805581.087042493978515, 805592.357131774304435, 805603.627233803155832, 805614.897348580299877, 805626.167476105620153, 805637.437616379000247, 805648.707769400323741, 805659.977935169357806, 805671.248113685869612, 805682.518304949626327, 805693.788508960744366, 805705.058725718990900, 805716.328955223900266, 805727.599197475705296, 805738.869452474173158, 805750.139720218954608, 805761.410000709933229, 805772.680293946992606, 805783.950599930016324, 805795.220918658771552, 805806.491250133025460, 805817.761594352778047, 805829.031951317796484, 805840.302321027964354, 805851.572703483048826, 805862.843098682817072, 805874.113506627501920, 805885.383927316288464, 805896.654360749525949, 805907.924806926865131, 805919.195265848189592, 805930.465737513266504, 805941.736221922095865, 805953.006719074328430, 805964.277228969847783, 805975.547751608537510, 805986.818286990281194, 805998.088835114729591, 806009.359395981999114, 806020.629969591740519, 806031.900555943837389, 806043.171155038056895, 806054.441766874282621, 806065.712391452514566, 806076.983028772287071, 806088.253678833600134, 806099.524341636220925, 806110.795017180149443, 806122.065705465152860, 806133.336406490998343, 806144.607120257569477, 806155.877846764633432, 806167.148586012190208, 806178.419338000006974, 806189.690102727850899, 806200.960880195489153, 806212.231670403038152, 806223.502473349915817, 806234.773289036587812, 806246.044117462239228, 806257.314958627102897, 806268.585812530945987, 806279.856679173535667, 806291.127558554522693, 806302.398450674023479, 806313.669355532038026, 806324.940273128100671, 806336.211203461978585, 806347.482146533788182, 806358.753102343296632, 806370.024070890038274, 806381.295052174362354, 806392.566046195570379, 806403.837052953895181, 806415.108072448987514, 806426.379104680963792, 806437.650149649241939, 806448.921207353938371, 806460.192277794820257, 806471.463360971538350, 806482.734456884325482, 806494.005565532599576, 806505.276686916593462, 806516.547821035841480, 806527.818967890343629, 806539.090127479983494, 806550.361299804295413, 806561.632484863512218, 806572.903682657051831, 806584.174893185147084, 806595.446116447448730, 806606.717352443840355, 806617.988601174089126, 806629.259862638078630, 806640.531136835808866, 806651.802423766697757, 806663.073723431094550, 806674.345035828533582, 806685.616360958665609, 806696.887698821723461, 806708.159049417474307, 806719.430412745568901, 806730.701788806123659, 806741.973177598556504, 806753.244579123100266, 806764.515993379405700, 806775.787420367239974, 806787.058860086603090, 806798.330312537495047, 806809.601777719217353, 806820.873255632119253, 806832.144746275851503, 806843.416249650297686, 806854.687765754992142, 806865.959294590284117, 806877.230836155475117, 806888.502390450797975, 806899.773957476252690, 806911.045537231140770, 806922.317129715578631, 806933.588734929449856, 806944.860352872521617, 806956.131983544444665, 806967.403626945568249, 806978.675283075077459, 806989.946951933321543, 807001.218633520067669, 807012.490327834733762, 807023.762034877785482, 807035.033754648640752, 807046.305487147299573, 807057.577232373412699, 807068.848990326980129, 807080.120761007769033, 807091.392544415662996, 807102.664340550662018, 807113.936149412300438, 807125.207971000578254, 807136.479805315379053, 807147.751652356470004, 807159.023512123501860, 807170.295384616591036, 807181.567269835388288, 807192.839167780126445, 807204.111078449990600, 807215.383001845446415, 807226.654937966028228, 807237.926886811503209, 807249.198848381871358, 807260.470822676783428, 807271.742809696239419, 807283.014809440122917, 807294.286821908201091, 807305.558847100241110, 807316.830885016242974, 807328.102935655857436, 807339.374999019084498, 807350.647075105574913, 807361.919163915328681, 807373.191265448112972, 807384.463379703694955, 807395.735506682191044, 807407.007646383135580, 807418.279798806644976, 807429.551963952253573, 807440.824141819961369, 807452.096332409535535, 807463.368535720859654, 807474.640751753817312, 807485.912980508292094, 807497.185221983934753, 807508.457476180745289, 807519.729743098490871, 807531.002022737055086, 807542.274315096321516, 807553.546620175708085, 807564.818937975680456, 807576.091268495656550, 807587.363611735752784, 807598.635967695619911, 807609.908336375025101, 807621.180717774084769, 807632.453111892333254, 807643.725518729886971, 807654.997938286280259, 807666.270370561513118, 807677.542815555585548, 807688.815273268148303, 807700.087743699084967, 807711.360226848046295, 807722.632722715265118, 807733.905231300159357, 807745.177752602961846, 807756.450286623206921, 807767.722833360778168, 807778.995392815675586, 807790.267964987549931, 807801.540549876401201, 807812.813147481996566, 807824.085757804103196, 807835.358380842721090, 807846.631016597501002, 807857.903665068326518, 807869.176326255197637, 807880.449000157765113, 807891.721686776028946, 807902.994386109756306, 807914.267098158714361, 807925.539822922903113, 807936.812560401856899, 807948.085310595692135, 807959.358073504175991, 807970.630849127075635, 807981.903637464391068, 807993.176438515889458, 808004.449252281221561, 808015.722078760620207, 808026.994917953503318, 808038.267769859870896, 808049.540634479606524, 808060.813511812593788, 808072.086401858716272, 808083.359304617391899, 808094.632220088969916, 808105.905148273217492, 808117.178089169552550, 808128.451042778324336, 808139.724009098950773, 808150.996988131548278, 808162.269979875884019, 808173.542984331957996, 808184.816001499188133, 808196.089031377807260, 808207.362073967349716, 808218.635129268048331, 808229.908197279437445, 808241.181278001284227, 808252.454371433588676, 808263.727477576234378, 808275.000596428988501, 808286.273727991734631, 808297.546872264239937, 808308.820029246388003, 808320.093198938062415, 808331.366381339030340, 808342.639576448942535, 808353.912784267915413, 808365.186004795832559, 808376.459238032344729, 808387.732483977335505, 808399.005742630688474, 808410.279013992287219, 808421.552298061898910, 808432.825594839057885, 808444.098904324229807, 808455.372226516949013, 808466.645561416866258, 808477.918909024097957, 808489.192269338294864, 808500.465642359456979, 808511.739028087351471, 808523.012426521745510, 808534.285837662406266, 808545.559261509566568, 808556.832698062644340, 808568.106147321639583, 808579.379609286435880, 808590.653083956916817, 808601.926571332616732, 808613.200071413768455, 808624.473584199906327, 808635.747109691030346, 808647.020647886907682, 808658.294198787538335, 808669.567762392573059, 808680.841338701895438, 808692.114927715389058, 808703.388529432704672, 808714.662143853958696, 808725.935770978801884, 808737.209410807234235, 808748.483063339022920, 808759.756728573935106, 808771.030406511737965, 808782.304097152547911, 808793.577800496015698, 808804.851516541908495, 808816.125245290459134, 808827.398986740736291, 808838.672740893438458, 808849.946507747750729, 808861.220287304022349, 808872.494079561787657, 808883.767884520930238, 808895.041702181333676, 808906.315532542765141, 808917.589375604991801, 808928.863231368130073, 808940.137099831830710, 808951.410980995977297, 808962.684874860453419, 808973.958781424909830, 808985.232700689462945, 808996.506632653647102, 809007.780577317462303, 809019.054534680675715, 809030.328504743287340, 809041.602487505064346, 809052.876482965773903, 809064.150491125299595, 809075.424511983525008, 809086.698545540217310, 809097.972591795260087, 809109.246650748420507, 809120.520722399582155, 809131.794806748628616, 809143.068903795443475, 809154.343013539677486, 809165.617135981330648, 809176.891271120170131, 809188.165418955963105, 809199.439579488825984, 809210.713752718176693, 809221.987938644248061, 809233.262137266690843, 809244.536348585272208, 809255.810572600108571, 809267.084809310734272, 809278.359058717149310, 809289.633320819237269, 809300.907595616648905, 809312.181883109267801, 809323.456183296977542, 809334.730496179778129, 809346.004821757320315, 809357.279160029487684, 809368.553510996163823, 809379.827874657115899, 809391.102251012111083, 809402.376640061265789, 809413.651041803997941, 809424.925456240656786, 809436.199883370660245, 809447.474323194008321, 809458.748775710468180, 809470.023240920156240, 809481.297718822490424, 809492.572209417587146, 809503.846712705097161, 809515.121228685136884, 809526.395757357357070, 809537.670298721641302, 809548.944852777756751, 809560.219419525587000, 809571.493998965015635, 809582.768591095693409, 809594.043195917853154, 809605.317813431029208, 809616.592443634988740, 809627.867086529848166, 809639.141742115258239, 809650.416410391102545, 809661.691091357148252, 809672.965785013511777, 809684.240491359727457, 809695.515210395678878, 809706.789942121133208, 809718.064686536323279, 809729.339443640667014, 809740.614213434280828, 809751.888995916699059, 809763.163791088154539, 809774.438598948181607, 809785.713419496663846, 809796.988252733368427, 809808.263098658411764, 809819.537957271561027, 809830.812828572466969, 809842.087712561129592, 809853.362609237199649, 809864.637518600793555, 809875.912440651562065, 809887.187375389505178, 809898.462322813924402, 809909.737282925518230, 809921.012255723588169, 809932.287241207901388, 809943.562239378574304, 809954.837250235374086, 809966.112273778067902, 809977.387310006539337, 809988.662358920555562, 809999.937420520000160, 810011.212494804756716, 810022.487581774592400, 810033.762681429507211, 810045.037793769151904, 810056.312918793526478, 810067.588056502281688, 810078.863206895533949, 810090.138369972701184, 810101.413545734016225, 810112.688734179129824, 810123.963935307809152, 810135.239149120170623, 810146.514375615864992, 810157.789614794659428, 810169.064866656553932, 810180.340131201315671, 810191.615408428595401, 810202.890698338742368, 810214.166000931174494, 810225.441316205658950, 810236.716644162544981, 810247.991984801017679, 810259.267338121309876, 810270.542704123305157, 810281.818082806654274, 810293.093474171240814, 810304.368878216831945, 810315.644294943544082, 810326.919724351027980, 810338.195166439050809, 810349.470621207612567, 810360.746088656364009, 810372.021568785421550, 810383.297061594319530, 810394.572567082941532, 810405.848085251287557, 810417.123616099241190, 810428.399159626453184, 810439.674715832923539, 810450.950284718186595, 810462.225866282475181, 810473.501460525556467, 810484.777067446848378, 810496.052687046700157, 810507.328319324878976, 810518.603964280919172, 810529.879621914937161, 810541.155292226583697, 810552.430975215975195, 810563.706670882645994, 810574.982379226596095, 810586.258100247476250, 810597.533833945402876, 810608.809580320143141, 810620.085339371464215, 810631.361111099249683, 810642.636895503150299, 810653.912692583398893, 810665.188502339413390, 810676.464324771310203, 810687.740159878740087, 810699.016007661703043, 810710.291868120082654, 810721.567741253646091, 810732.843627062044106, 810744.119525545509532, 810755.395436703460291, 810766.671360535779968, 810777.947297042584978, 810789.223246223642491, 810800.499208078603260, 810811.775182607583702, 810823.051169810350984, 810834.327169686439447, 810845.603182236081921, 810856.879207458812743, 810868.155245354748331, 810879.431295923423022, 810890.707359164953232, 810901.983435079106130, 810913.259523665648885, 810924.535624924465083, 810935.811738855321892, 810947.087865458102897, 810958.364004732808098, 810969.640156679088250, 810980.916321296594106, 810992.192498585674912, 811003.468688545865007, 811014.744891176931560, 811026.021106478758156, 811037.297334451577626, 811048.573575094575062, 811059.849828407983296, 811071.126094391453080, 811082.402373045100830, 811093.678664368577302, 811104.954968361882493, 811116.231285024550743, 811127.507614356698468, 811138.783956357860006, 811150.060311028268188, 811161.336678367457353, 811172.613058375311084, 811183.889451051945798, 811195.165856396895833, 811206.442274410161190, 811217.718705091392621, 811228.995148440590128, 811240.271604457753710, 811251.548073142184876, 811262.824554494349286, 811274.101048513432033, 811285.377555200015195, 811296.654074553400278, 811307.930606573703699, 811319.207151260459796, 811330.483708613901399, 811341.760278633562848, 811353.036861319444142, 811364.313456671312451, 811375.590064689051360, 811386.866685372311622, 811398.143318721326068, 811409.419964735512622, 811420.696623414987698, 811431.973294759518467, 811443.249978768872097, 811454.526675443048589, 811465.803384781698696, 811477.080106784706004, 811488.356841452070512, 811499.633588783442974, 811510.910348778823391, 811522.187121437746100, 811533.463906760560349, 811544.740704746567644, 811556.017515396000817, 811567.294338708394207, 811578.571174683864228, 811589.848023322061636, 811601.124884622870013, 811612.401758586405776, 811623.678645212086849, 811634.955544499913231, 811646.232456449768506, 811657.509381061419845, 811668.786318334634416, 811680.063268269412220, 811691.340230865636840, 811702.617206123075448, 811713.894194041495211, 811725.171194620779715, 811736.448207860812545, 811747.725233761360869, 811759.002272322191857, 811770.279323543421924, 811781.556387424701825, 811792.833463965915143, 811804.110553166829050, 811815.387655027327128, 811826.664769547292963, 811837.941896726377308, 811849.219036564696580, 811860.496189061901532, 811871.773354217992164, 811883.050532032735646, 811894.327722505899146, 811905.604925637366250, 811916.882141426904127, 811928.159369874512777, 811939.436610979959369, 811950.713864743011072, 811961.991131163551472, 811973.268410241347738, 811984.545701976516284, 811995.823006368707865, 812007.100323417806067, 812018.377653123578057, 812029.654995485674590, 812040.932350504444912, 812052.209718179306947, 812063.487098510027863, 812074.764491496956907, 812086.041897139512002, 812097.319315437809564, 812108.596746391383931, 812119.874190000235103, 812131.151646264246665, 812142.429115183069371, 812153.706596756703220, 812164.984090985031798, 812176.261597867938690, 812187.539117404958233, 812198.816649596206844, 812210.094194441451691, 812221.371751940576360, 812232.649322093231604, 812243.926904899417423, 812255.204500358900987, 812266.482108471565880, 812277.759729237412103, 812289.037362655973993, 812300.315008727251552, 812311.592667451128364, 812322.870338827371597, 812334.148022855864838, 812345.425719536375254, 812356.703428868786432, 812367.981150852981955, 812379.258885488612577, 812390.536632775794715, 812401.814392714295536, 812413.092165303765796, 812424.369950544321910, 812435.647748435498215, 812446.925558977411129, 812458.203382169711404, 812469.481218012399040, 812480.759066505124792, 812492.036927647888660, 812503.314801440574229, 812514.592687882832251, 812525.870586974546313, 812537.148498715599999, 812548.426423105876893, 812559.704360145144165, 812570.982309833168983, 812582.260272170067765, 812593.538247155491263, 812604.816234789323062, 812616.094235071330331, 812627.372248001396656, 812638.650273579405621, 812649.928311804891564, 812661.206362678320147, 812672.484426198876463, 812683.762502366909757, 812695.040591182070784, 812706.318692644010298, 812717.596806752844714, 812728.874933508341201, 812740.153072910150513, 812751.431224958272651, 812762.709389652591199, 812773.987566992873326, 812785.265756979002617, 812796.543959610862657, 812807.822174888104200, 812819.100402810727246, 812830.378643378498964, 812841.656896591302939, 812852.935162448906340, 812864.213440951425582, 812875.491732098278590, 812886.770035889698192, 812898.048352325218730, 812909.326681404956616, 812920.605023128446192, 812931.883377495571040, 812943.161744506447576, 812954.440124160610139, 812965.718516458175145, 812976.996921398909763, 812988.275338982348330, 812999.553769208840095, 813010.832212077802978, 813022.110667589353397, 813033.389135743142106, 813044.667616538819857, 813055.946109976735897, 813067.224616056540981, 813078.503134777885862, 813089.781666140770540, 813101.060210144962184, 813112.338766790344380, 813123.617336076917127, 813134.895918004331179, 813146.174512572120875, 813157.453119780751877, 813168.731739629642107, 813180.010372118907981, 813191.289017248083837, 813202.567675017286092, 813213.846345426281914, 813225.125028474722058, 813236.403724162490107, 813247.682432489818893, 813258.961153456009924, 813270.239887061179616, 813281.518633305327967, 813292.797392188105732, 813304.076163709163666, 813315.354947868618183, 813326.633744666236453, 813337.912554101785645, 813349.191376175149344, 813360.470210886327550, 813371.749058234971017, 813383.027918220846914, 813394.306790843955241, 813405.585676104179583, 813416.864574001287110, 813428.143484535044990, 813439.422407705220394, 813450.701343511929736, 813461.980291954940185, 813473.259253034018911, 813484.538226749049500, 813495.817213099682704, 813507.096212085918523, 813518.375223707756959, 813529.654247964732349, 813540.933284856728278, 813552.212334383861162, 813563.491396545781754, 813574.770471342140809, 813586.049558773287572, 813597.328658838639967, 813608.607771538081579, 813619.886896871612407, 813631.166034838650376, 813642.445185439777561, 813653.724348674295470, 813665.003524542204104, 813676.282713043154217, 813687.561914177262224, 813698.841127944295295, 813710.120354344020598, 813721.399593376321718, 813732.678845040965825, 813743.958109337952919, 813755.237386266933754, 813766.516675827791914, 813777.795978020527400, 813789.075292844907381, 813800.354620300582610, 813811.633960387785919, 813822.913313105935231, 813834.192678454914130, 813845.472056434955448, 813856.751447045477107, 813868.030850286595523, 813879.310266157961451, 813890.589694659574889, 813901.869135791203007, 813913.148589552612975, 813924.428055943688378, 813935.707534964312799, 813946.987026614369825, 813958.266530893626623, 813969.546047801966779, 813980.825577339157462, 813992.105119505082257, 814003.384674299508333, 814014.664241722552106, 814025.943821773631498, 814037.223414452862926, 814048.503019760129973, 814059.782637695083395, 814071.062268257606775, 814082.341911447700113, 814093.621567265130579, 814104.901235709781758, 814116.180916781187989, 814127.460610479349270, 814138.740316804265603, 814150.020035755820572, 814161.299767333548516, 814172.579511537565850, 814183.859268367523327, 814195.139037823537365, 814206.418819905142300, 814217.698614612338133, 814228.978421944659203, 814240.258241902454756, 814251.538074485142715, 814262.817919692955911, 814274.097777525428683, 814285.377647982561029, 814296.657531064003706, 814307.937426769756712, 814319.217335099587217, 814330.497256053262390, 814341.777189630898647, 814353.057135832146741, 814364.337094656890258, 814375.617066105012782, 814386.897050176165067, 814398.177046870347112, 814409.457056187209673, 814420.737078126869164, 814432.017112689092755, 814443.297159873647615, 814454.577219680533744, 814465.857292109285481, 814477.137377159902826, 814488.417474832385778, 814499.697585126385093, 814510.977708041667938, 814522.257843578234315, 814533.537991735967807, 814544.818152514519170, 814556.098325914004818, 814567.378511933842674, 814578.658710574381985, 814589.938921835157089, 814601.219145715935156, 814612.499382216716185, 814623.779631337267347, 814635.059893077588640, 814646.340167437330820, 814657.620454416377470, 814668.900754014845006, 814680.181066232034937, 814691.461391068063676, 814702.741728522931226, 814714.022078596288338, 814725.302441288018599, 814736.582816598005593, 814747.863204526016489, 814759.143605071934871, 814770.424018235527910, 814781.704444016795605, 814792.984882415505126, 814804.265333431423642, 814815.545797064434737, 814826.826273314305581, 814838.106762181036174, 814849.387263664510101, 814860.667777764378116, 814871.948304480523802, 814883.228843812714331, 814894.509395761182532, 814905.789960325229913, 814917.070537504856475, 814928.351127300178632, 814939.631729710847139, 814950.912344736745581, 814962.192972377524711, 814973.473612633417360, 814984.754265503725037, 814996.034930988796987, 815007.315609088283964, 815018.596299801720306, 815029.877003129571676, 815041.157719071139582, 815052.438447626540437, 815063.719188795541413, 815074.999942578026094, 815086.280708973761648, 815097.561487982748076, 815108.842279604519717, 815120.123083839076571, 815131.403900686185807, 815142.684730146080256, 815153.965572218177840, 815165.246426902478561, 815176.527294198749587, 815187.808174106874503, 815199.089066626736894, 815210.369971757987514, 815221.650889500626363, 815232.931819854537025, 815244.212762819603086, 815255.493718395475298, 815266.774686582037248, 815278.055667379288934, 815289.336660786997527, 815300.617666804930195, 815311.898685432737693, 815323.179716670769267, 815334.460760518442839, 815345.741816975758411, 815357.022886042483151, 815368.303967718733475, 815379.585062003927305, 815390.866168898181058, 815402.147288401378319, 815413.428420513053425, 815424.709565233206376, 815435.990722561953589, 815447.271892498712987, 815458.553075043600984, 815469.834270196268335, 815481.115477956715040, 815492.396698324708268, 815503.677931300131604, 815514.959176882635802, 815526.240435072337277, 815537.521705869119614, 815548.802989272400737, 815560.084285282413475, 815571.365593898924999, 815582.646915121702477, 815593.928248950629495, 815605.209595385356806, 815616.490954425884411, 815627.772326072328724, 815639.053710324107669, 815650.335107181221247, 815661.616516643553041, 815672.897938710870221, 815684.179373383056372, 815695.460820659878664, 815706.742280541337095, 815718.023753026966006, 815729.305238116998225, 815740.586735811084509, 815751.868246109108441, 815763.149769010837190, 815774.431304516154341, 815785.712852624827065, 815796.994413336855359, 815808.275986651889980, 815819.557572570047341, 815830.839171090745367, 815842.120782214333303, 815853.402405940345488, 815864.684042268549092, 815875.965691199060529, 815887.247352731530555, 815898.529026865726337, 815909.810713601531461, 815921.092412939062342, 815932.374124877969734, 815943.655849417904392, 815954.937586558982730, 815966.219336300971918, 815977.501098643755540, 815988.782873586867936, 816000.064661130658351, 816011.346461274428293, 816022.628274018527009, 816033.910099362488836, 816045.191937306197360, 816056.473787849419750, 816067.755650992272422, 816079.037526734406129, 816090.319415075588040, 816101.601316015818156, 816112.883229554747231, 816124.165155692491680, 816135.447094428702258, 816146.729045763262548, 816158.011009695939720, 816169.292986226733774, 816180.574975355295464, 816191.856977081741206, 816203.138991405721754, 816214.421018326887861, 816225.703057845239528, 816236.985109961009584, 816248.267174673499539, 816259.549251982709393, 816270.831341888639145, 816282.113444390939549, 816293.395559489610605, 816304.677687184186652, 816315.959827474900521, 816327.241980361402966, 816338.524145843461156, 816349.806323921191506, 816361.088514594128355, 816372.370717862388119, 816383.652933725388721, 816394.935162183479406, 816406.217403236078098, 816417.499656883301213, 816428.781923124915920, 816440.064201960805804, 816451.346493390738033, 816462.628797414596193, 816473.911114032147452, 816485.193443243275397, 816496.475785047747195, 816507.758139445446432, 816519.040506436373107, 816530.322886020410806, 816541.605278196977451, 816552.887682966422290, 816564.170100328279659, 816575.452530282316729, 816586.734972828649916, 816598.017427966813557, 816609.299895696807653, 816620.582376018748619, 816631.864868931937963, 816643.147374436724931, 816654.429892532643862, 816665.712423219578341, 816676.994966497411951, 816688.277522366028279, 816699.560090825194493, 816710.842671874561347, 816722.125265514478087, 816733.407871744362637, 816744.690490564098582, 816755.973121973918751, 816767.255765973124653, 816778.538422561949119, 816789.821091739926487, 816801.103773506940342, 816812.386467863107100, 816823.669174808077514, 816834.951894341735169, 816846.234626463963650, 816857.517371174530126, 816868.800128473201767, 816880.082898359978572, 816891.365680834627710, 816902.648475896916352, 816913.931283546728082, 816925.214103784179315, 816936.496936608687975, 816947.779782020486891, 816959.062640018993989, 816970.345510604325682, 816981.628393776365556, 816992.911289534764364, 817004.194197879405692, 817015.477118810289539, 817026.760052327066660, 817038.042998429737054, 817049.325957118067890, 817060.608928391826339, 817071.891912251012400, 817083.174908695393242, 817094.457917724852450, 817105.740939338924363, 817117.023973537958227, 817128.307020321371965, 817139.590079689281993, 817150.873151641455479, 817162.156236177659594, 817173.439333297777921, 817184.722443001694046, 817196.005565289175138, 817207.288700160104781, 817218.571847614366561, 817229.855007651611231, 817241.138180271955207, 817252.421365475165658, 817263.704563261009753, 817274.987773629254662, 817286.270996579900384, 817297.554232112597674, 817308.837480227346532, 817320.120740924030542, 817331.404014202416874, 817342.687300062272698, 817353.970598503598012, 817365.253909526159987, 817376.537233129725792, 817387.820569314295426, 817399.103918079519644, 817410.387279425282031, 817421.670653351582587, 817432.954039858188480, 817444.237438944983296, 817455.520850611617789, 817466.804274857975543, 817478.087711684056558, 817489.371161089744419, 817500.654623074573465, 817511.938097638543695, 817523.221584781771526, 817534.505084503674880, 817545.788596804370172, 817557.072121683624573, 817568.355659141088836, 817579.639209176995791, 817590.922771790763363, 817602.206346982391551, 817613.489934751996771, 817624.773535098996945, 817636.057148023624904, 817647.340773525414988, 817658.624411604250781, 817669.908062260132283, 817681.191725492710248, 817692.475401302101091, 817703.759089687722735, 817715.042790649808012, 817726.326504188124090, 817737.610230302438140, 817748.893968992400914, 817760.177720258361660, 817771.461484099621885, 817782.745260516298003, 817794.029049508273602, 817805.312851075199433, 817816.596665217075497, 817827.880491933668964, 817839.164331224979833, 817850.448183090658858, 817861.732047530473210, 817873.015924544539303, 817884.299814132507890, 817895.583716294146143, 817906.867631029454060, 817918.151558338315226, 817929.435498220496811, 817940.719450675765984, 817952.003415704122745, 817963.287393305450678, 817974.571383479284123, 817985.855386225739494, 817997.139401544351131, 818008.423429435351864, 818019.707469898392446, 818030.991522933356464, 818042.275588540011086, 818053.559666718123481, 818064.843757467810065, 818076.127860788838007, 818087.411976680974476, 818098.696105143753812, 818109.980246177525260, 818121.264399781823158, 818132.548565956763923, 818143.832744701998308, 818155.116936017409898, 818166.401139902649447, 818177.685356357949786, 818188.969585382845253, 818200.253826977103017, 818211.538081140955910, 818222.822347873821855, 818234.106627175933681, 818245.390919046709314, 818256.675223486497998, 818267.959540494717658, 818279.243870071368292, 818290.528212216217071, 818301.812566929147579, 818313.096934210159816, 818324.381314059020951, 818335.665706475265324, 818346.950111459125765, 818358.234529010253027, 818369.518959128647111, 818380.803401813958772, 818392.087857066071592, 818403.372324884752743, 818414.656805270235054, 818425.941298221936449, 818437.225803739973344, 818448.510321823880076, 818459.794852473773062, 818471.079395689419471, 818482.363951470586471, 818493.648519817274064, 818504.933100729016587, 818516.217694206046872, 818527.502300247899257, 818538.786918854690157, 818550.071550025953911, 818561.356193761806935, 818572.640850061783567, 818583.925518926233053, 818595.210200354340486, 818606.494894346455112, 818617.779600902227685, 818629.064320021541789, 818640.349051704281010, 818651.633795950212516, 818662.918552759219892, 818674.203322130953893, 818685.488104065530933, 818696.772898562601767, 818708.057705622166395, 818719.342525243991986, 818730.627357427962124, 818741.912202173960395, 818753.197059481521137, 818764.481929350877181, 818775.766811781562865, 818787.051706773811020, 818798.336614326806739, 818809.621534441132098, 818820.906467116205022, 818832.191412352025509, 818843.476370148244314, 818854.761340504861437, 818866.046323421760462, 818877.331318898708560, 818888.616326935589314, 818899.901347532053478, 818911.186380688217469, 818922.471426403732039, 818933.756484678597189, 818945.041555512463674, 818956.326638905447908, 818967.611734857084230, 818978.896843367372639, 818990.181964436196722, 819001.467098063090816, 819012.752244248404168, 819024.037402991787530, 819035.322574292891659, 819046.607758151600137, 819057.892954567912966, 819069.178163541597314, 819080.463385072536767, 819091.748619160614908, 819103.033865805366077, 819114.319125007023104, 819125.604396765003912, 819136.889681079774164, 819148.174977950518951, 819159.460287377587520, 819170.745609360514209, 819182.030943899299018, 819193.316290993592702, 819204.601650643395260, 819215.887022848590277, 819227.172407608944923, 819238.457804924226366, 819249.743214794551022, 819261.028637219453231, 819272.314072198816575, 819283.599519732641056, 819294.884979820577428, 819306.170452462509274, 819317.455937658553012, 819328.741435408359393, 819340.026945711695589, 819351.312468568445183, 819362.598003978375345, 819373.883551941602491, 819385.169112457660958, 819396.454685526317917, 819407.740271147922613, 819419.025869322009385, 819430.311480048345402, 819441.597103326814249, 819452.882739157299511, 819464.168387539801188, 819475.454048473853618, 819486.739721959456801, 819498.025407996377908, 819509.311106584500521, 819520.596817723824643, 819531.882541414117441, 819543.168277655029669, 819554.454026446561329, 819565.739787788596004, 819577.025561680900864, 819588.311348123243079, 819599.597147115506232, 819610.882958657573909, 819622.168782749446109, 819633.454619390773587, 819644.740468581439927, 819656.026330321212299, 819667.312204610090703, 819678.598091447725892, 819689.883990834117867, 819701.169902769033797, 819712.455827252357267, 819723.741764283971861, 819735.027713863644749, 819746.313675991259515, 819757.599650666466914, 819768.885637889383361, 819780.171637659776025, 819791.457649977528490, 819802.743674842058681, 819814.029712253948674, 819825.315762212499976, 819836.601824717712589, 819847.887899769353680, 819859.173987367423251, 819870.460087511688471, 819881.746200202149339, 819893.032325438223779, 819904.318463220028207, 819915.604613547446206, 819926.890776420244947, 819938.176951838424429, 819949.463139801518992, 819960.749340309645049, 819972.035553362336941, 819983.321778959943913, 819994.608017101883888, 820005.894267787924036, 820017.180531018297188, 820028.466806792537682, 820039.753095110878348, 820051.039395972620696, 820062.325709377997555, 820073.612035326659679, 820084.898373818490654, 820096.184724853490479, 820107.471088431193493, 820118.757464551599696, 820130.043853214709088, 820141.330254420405254, 820152.616668168106116, 820163.903094457928091, 820175.189533289754763, 820186.475984663236886, 820197.762448578490876, 820209.048925034934655, 820220.335414033033885, 820231.621915572206490, 820242.908429652219638, 820254.194956273306161, 820265.481495434883982, 820276.768047136953101, 820288.054611379513517, 820299.341188162099570, 820310.627777484827675, 820321.914379347465001, 820333.200993749895133, 820344.487620692001656, 820355.774260173318908, 820367.060912193963304, 820378.347576753818430, 820389.634253852418624, 820400.920943489763886, 820412.207645665970631, 820423.494360380573198, 820434.781087633571588, 820446.067827424616553, 820457.354579753708094, 820468.641344620613381, 820479.928122025448829, 820491.214911967515945, 820502.501714447047561, 820513.788529463694431, 820525.075357017572969, 820536.362197108333930, 820547.649049735860899, 820558.935914899921045, 820570.222792600397952, 820581.509682837291621, 820592.796585610136390, 820604.083500918932259, 820615.370428763562813, 820626.657369143911637, 820637.944322059862316, 820649.231287510949187, 820660.518265497288667, 820671.805256018647924, 820683.092259074794129, 820694.379274665727280, 820705.666302791098133, 820716.953343451023102, 820728.240396645152941, 820739.527462373254821, 820750.814540635328740, 820762.101631431141868, 820773.388734760694206, 820784.675850623636506, 820795.962979019735940, 820807.250119948992506, 820818.537273411406204, 820829.824439406394958, 820841.111617934191599, 820852.398808994563296, 820863.686012587277219, 820874.973228711984120, 820886.260457369033247, 820897.547698557609692, 820908.834952278062701, 820920.122218530159444, 820931.409497313667089, 820942.696788628236391, 820953.984092474100180, 820965.271408850909211, 820976.558737758314237, 820987.846079196431674, 820999.133433164912276, 821010.420799663872458, 821021.708178692846559, 821032.995570251950994, 821044.282974340720102, 821055.570390959386714, 821066.857820107485168, 821078.145261784899049, 821089.432715991628356, 821100.720182727207430, 821112.007661991752684, 821123.295153785031289, 821134.582658107043244, 821145.870174957439303, 821157.157704335986637, 821168.445246242685243, 821179.732800677302293, 821191.020367639837787, 821202.307947129826061, 821213.595539147499949, 821224.883143692393787, 821236.170760764391162, 821247.458390363492072, 821258.746032489463687, 821270.033687142189592, 821281.321354321320541, 821292.609034026972950, 821303.896726258681156, 821315.184431016561575, 821326.472148300264962, 821337.759878109907731, 821349.047620445024222, 821360.335375305614434, 821371.623142691561952, 821382.910922602517530, 821394.198715038481168, 821405.486519999103621, 821416.774337484617718, 821428.062167494441383, 821439.350010028691031, 821450.637865087250248, 821461.925732669769786, 821473.213612776133232, 821484.501505406224169, 821495.789410559809767, 821507.077328236890025, 821518.365258437115699, 821529.653201160603203, 821540.941156406770460, 821552.229124175966717, 821563.517104467726313, 821574.805097281816415, 821586.093102618353441, 821597.381120476871729, 821608.669150857487693, 821619.957193759968504, 821631.245249184081331, 821642.533317129826173, 821653.821397596737370, 821665.109490584931336, 821676.397596094291657, 821687.685714124469087, 821698.973844675463624, 821710.261987746809609, 821721.550143338739872, 821732.838311450905167, 821744.126492083189078, 821755.414685235475190, 821766.702890907530673, 821777.991109099239111, 821789.279339810367674, 821800.567583040916361, 821811.855838790535927, 821823.144107059226371, 821834.432387846754864, 821845.720681152888574, 821857.008986977743916, 821868.297305320971645, 821879.585636182338931, 821890.873979561845772, 821902.162335459259339, 821913.450703874113970, 821924.739084806875326, 821936.027478257194161, 821947.315884224604815, 821958.604302709223703, 821969.892733710817993, 821981.181177229271270, 821992.469633264350705, 822003.758101815939881, 822015.046582883689553, 822026.335076467832550, 822037.623582568019629, 822048.912101184134372, 822060.200632315827534, 822071.489175963215530, 822082.777732125949115, 822094.066300803911872, 822105.354881996987388, 822116.643475704942830, 822127.932081927778199, 822139.220700665260665, 822150.509331917157397, 822161.797975683351979, 822173.086631963727996, 822184.375300758169033, 822195.663982066325843, 822206.952675888082013, 822218.241382223553956, 822229.530101072392426, 822240.818832434364595, 822252.107576309470460, 822263.396332697477192, 822274.685101598384790, 822285.973883011494763, 822297.262676937272772, 822308.551483375369571, 822319.840302325552329, 822331.129133787588216, 822342.417977761477232, 822353.706834247102961, 822364.995703244232573, 822376.284584752633236, 822387.573478772188537, 822398.862385302782059, 822410.151304344297387, 822421.440235896501690, 822432.729179959278554, 822444.018136532395147, 822455.307105615851469, 822466.596087209414691, 822477.885081312735565, 822489.174087925930507, 822500.463107048883103, 822511.752138680894859, 822523.041182822547853, 822534.330239473260008, 822545.619308632914908, 822556.908390301512554, 822568.197484478703700, 822579.486591164488345, 822590.775710358633660, 822602.064842060906813, 822613.353986271307804, 822624.643142989487387, 822635.932312215445563, 822647.221493949182332, 822658.510688190232031, 822669.799894938361831, 822681.089114193804562, 822692.378345956210978, 822703.667590225348249, 822714.956847001099959, 822726.246116283233277, 822737.535398071864620, 822748.824692366877571, 822760.113999167573638, 822771.403318474302068, 822782.692650286713615, 822793.981994604575448, 822805.271351427887566, 822816.560720756300725, 822827.850102590047754, 822839.139496928546578, 822850.428903771913610, 822861.718323119916022, 822873.007754972320981, 822884.297199329012074, 822895.586656189872883, 822906.876125554670580, 822918.165607423172332, 822929.455101795494556, 822940.744608671404421, 822952.034128050552681, 822963.323659933055751, 822974.613204318447970, 822985.902761206845753, 822997.192330598016270, 823008.481912491610274, 823019.771506887627766, 823031.061113785835914, 823042.350733186467551, 823053.640365088824183, 823064.930009493022226, 823076.219666398945265, 823087.509335806244053, 823098.799017714802176, 823110.088712124736048, 823121.378419035463594, 823132.668138447101228, 823143.957870359648950, 823155.247614772524685, 823166.537371685961261, 823177.827141099493019, 823189.116923013236374, 823200.406717426842079, 823211.696524340077303, 823222.986343752942048, 823234.276175665319897, 823245.566020077094436, 823256.855876988032833, 823268.145746397785842, 823279.435628306469880, 823290.725522713852115, 823302.015429619699717, 823313.305349023896270, 823324.595280926208943, 823335.885225326637737, 823347.175182225066237, 823358.465151621145196, 823369.755133514758199, 823381.045127905905247, 823392.335134794237092, 823403.625154179753736, 823414.915186062222347, 823426.205230441293679, 823437.495287317084149, 823448.785356689477339, 823460.075438558124006, 823471.365532923024148, 823482.655639783828519, 823493.945759140653536, 823505.235890993033536, 823516.526035340968519, 823527.816192184225656, 823539.106361522921361, 823550.396543356589973, 823561.686737685115077, 823572.976944508496672, 823584.267163826501928, 823595.557395639014430, 823606.847639945801347, 823618.137896746629849, 823629.428166041383520, 823640.718447830062360, 823652.008742112549953, 823663.299048888380639, 823674.589368157670833, 823685.879699920187704, 823697.170044175698422, 823708.460400924086571, 823719.750770165235735, 823731.041151898796670, 823742.331546125002205, 823753.621952843503095, 823764.912372054066509, 823776.202803756459616, 823787.493247950798832, 823798.783704636734910, 823810.074173814267851, 823821.364655483048409, 823832.655149642960168, 823843.945656293886714, 823855.236175435711630, 823866.526707068202086, 823877.817251191358082, 823889.107807804946788, 823900.398376908735372, 823911.688958502491005, 823922.979552586097270, 823934.270159159670584, 823945.560778222861700, 823956.851409775554202, 823968.142053817398846, 823979.432710348512046, 823990.723379368544556, 824002.014060877379961, 824013.304754875018261, 824024.595461361110210, 824035.886180335539393, 824047.176911798305809, 824058.467655748943798, 824069.758412187686190, 824081.049181114067324, 824092.339962528087199, 824103.630756429512985, 824114.921562818228267, 824126.212381694000214, 824137.503213056828827, 824148.794056906481273, 824160.084913242724724, 824171.375782065442763, 824182.666663374518976, 824193.957557169836946, 824205.248463451163843, 824216.539382218383253, 824227.830313471145928, 824239.121257209684700, 824250.412213433533907, 824261.703182142693549, 824272.994163337047212, 824284.285157016129233, 824295.576163180056028, 824306.867181828827597, 824318.158212961745448, 824329.449256579158828, 824340.740312680602074, 824352.031381266191602, 824363.322462335578166, 824374.613555888645351, 824385.904661925276741, 824397.195780445239507, 824408.486911448650062, 824419.778054934809916, 824431.069210903951898, 824442.360379355843179, 824453.651560290600173, 824464.942753707524389, 824476.233959606965072, 824487.525177988340147, 824498.816408851766028, 824510.107652197009884, 824521.398908023955300, 824532.690176332253031, 824543.981457122135907, 824555.272750393021852, 824566.564056145027280, 824577.855374378035776, 824589.146705091698095, 824600.438048285897821, 824611.729403960634954, 824623.020772115443833, 824634.312152750440873, 824645.603545865509659, 824656.894951460068114, 824668.186369534581900, 824679.477800088585354, 824690.769243121845648, 824702.060698634129949, 824713.352166625554673, 824724.643647096003406, 824735.935140044894069, 824747.226645472343080, 824758.518163378350437, 824769.809693762566894, 824781.101236624876037, 824792.392791965045035, 824803.684359783073887, 824814.975940078729764, 824826.267532851779833, 824837.559138101991266, 824848.850755829480477, 824860.142386034131050, 824871.434028715477325, 824882.725683873402886, 824894.017351508140564, 824905.309031619108282, 824916.600724206189625, 824927.892429269384593, 824939.184146808343939, 824950.475876823416911, 824961.767619313788600, 824973.059374279691838, 824984.351141721010208, 824995.642921637161635, 825006.934714028611779, 825018.226518894662149, 825029.518336235429160, 825040.810166050679982, 825052.102008340181783, 825063.393863104050979, 825074.685730341938324, 825085.977610053727403, 825097.269502239301801, 825108.561406898312271, 825119.853324030642398, 825131.145253636525013, 825142.437195715145208, 825153.729150266852230, 825165.021117291529663, 825176.313096788711846, 825187.605088758398779, 825198.897093200474046, 825210.189110114704818, 825221.481139500858262, 825232.773181358934380, 825244.065235688583925, 825255.357302489923313, 825266.649381762719713, 825277.941473506623879, 825289.233577721635811, 825300.525694407522678, 825311.817823564284481, 825323.109965191571973, 825334.402119289501570, 825345.694285857491195, 825356.986464895657264, 825368.278656403999776, 825379.570860382169485, 825390.863076829933561, 825402.155305747292005, 825413.447547133895569, 825424.739800989744253, 825436.032067314838059, 825447.324346108478494, 825458.616637371131219, 825469.908941102446988, 825481.201257302076556, 825492.493585969903506, 825503.785927105927840, 825515.078280710033141, 825526.370646781870164, 825537.663025321322493, 825548.955416328273714, 825560.247819802723825, 825571.540235744207166, 825582.832664152840152, 825594.125105028273538, 825605.417558370507322, 825616.710024179308675, 825628.002502454561181, 825639.294993196032010, 825650.587496403488331, 825661.880012077162974, 825673.172540216473863, 825684.465080821304582, 825695.757633891887963, 825707.050199427641928, 825718.342777428682894, 825729.635367894661613, 825740.927970825461671, 825752.220586220966652, 825763.513214080943726, 825774.805854405625723, 825786.098507194314152, 825797.391172447125427, 825808.683850163943134, 825819.976540344418027, 825831.269242988782935, 825842.561958096339367, 825853.854685667087324, 825865.147425701259635, 825876.440178198390640, 825887.732943158363923, 825899.025720581063069, 825910.318510466255248, 825921.611312813824043, 825932.904127623536624, 825944.196954895392992, 825955.489794629043899, 825966.782646824605763, 825978.075511481729336, 825989.368388600181788, 826000.661278180079535, 826011.954180221073329, 826023.247094723163173, 826034.540021685999818, 826045.832961109466851, 826057.125912993331440, 826068.418877337710001, 826079.711854142136872, 826091.004843406844884, 826102.297845131368376, 826113.590859315590933, 826124.883885959512554, 826136.176925062783994, 826147.469976625288837, 826158.763040646794252, 826170.056117127416655, 826181.349206066806801, 826192.642307464964688, 826203.935421321424656, 826215.228547636419535, 826226.521686409483664, 826237.814837640617043, 826249.108001329703256, 826260.401177476393059, 826271.694366080686450, 826282.987567142234184, 826294.280780661269091, 826305.574006637325510, 826316.867245070287026, 826328.160495960153639, 826339.453759306692518, 826350.747035109438002, 826362.040323368739337, 826373.333624084130861, 826384.626937255496159, 826395.920262882835232, 826407.213600965798832, 826418.506951504270546, 826429.800314498250373, 826441.093689947389066, 826452.387077851686627, 826463.680478210793808, 826474.973891024827026, 826486.267316293437034, 826497.560754016507417, 826508.854204193805344, 826520.147666825214401, 826531.441141910851002, 826542.734629450133070, 826554.028129443177022, 826565.321641889633611, 826576.615166789619252, 826587.908704142784700, 826599.202253949013539, 826610.495816208189353, 826621.789390920079313, 826633.082978084567003, 826644.376577701536007, 826655.670189770753495, 826666.963814291986637, 826678.257451265468262, 826689.551100690616295, 826700.844762567547150, 826712.138436895795166, 826723.432123675593175, 826734.725822906475514, 826746.019534588558599, 826757.313258721493185, 826768.606995305046439, 826779.900744339218363, 826791.194505823776126, 826802.488279758836143, 826813.782066143816337, 826825.075864978833124, 826836.369676263770089, 826847.663499998161569, 826858.957336182240397, 826870.251184815424494, 826881.545045898063108, 826892.838919429574162, 826904.132805410074070, 826915.426703839213587, 826926.720614716876298, 826938.014538043178618, 826949.308473817538470, 826960.602422040072270, 826971.896382710430771, 826983.190355828846805, 826994.484341394738294, 827005.778339407988824, 827017.072349868831225, 827028.366372776683420, 827039.660408131661825, 827050.954455933533609, 827062.248516182182357, 827073.542588877025992, 827084.836674018530175, 827096.130771606229246, 827107.424881640123203, 827118.719004119862802, 827130.013139045448042, 827141.307286416646093, 827152.601446233340539, 827163.895618495182134, 827175.189803202170879, 827186.484000354423188, 827197.778209951356985, 827209.072431992972270, 827220.366666479269043, 827231.660913410014473, 827242.955172784859315, 827254.249444603803568, 827265.543728866614401, 827276.838025573058985, 827288.132334723370150, 827299.426656316965818, 827310.720990354078822, 827322.015336834359914, 827333.309695757459849, 827344.604067123378627, 827355.898450932116248, 827367.192847183323465, 827378.487255876767449, 827389.781677012681030, 827401.076110590598546, 827412.370556610287167, 827423.665015071863309, 827434.959485974977724, 827446.253969319630414, 827457.548465105588548, 827468.842973332619295, 827480.137494000489824, 827491.432027109200135, 827502.726572658750229, 827514.021130648907274, 827525.315701079205610, 827536.610283949878067, 827547.904879260575399, 827559.199487011064775, 827570.494107201346196, 827581.788739831186831, 827593.083384900586680, 827604.378042409080081, 827615.672712356899865, 827626.967394743580371, 827638.262089569121599, 827649.556796833290718, 827660.851516536087729, 827672.146248677046970, 827683.440993256168440, 827694.735750273568556, 827706.030519728548825, 827717.325301621458493, 827728.620095952064730, 827739.914902720018290, 827751.209721925202757, 827762.504553567501716, 827773.799397646798752, 827785.094254162628204, 827796.389123115455732, 827807.684004504582845, 827818.978898330125958, 827830.273804591852240, 827841.568723289645277, 827852.863654423388653, 827864.158597992733121, 827875.453553997562267, 827886.748522437992506, 827898.043503313558176, 827909.338496624142863, 827920.633502369862981, 827931.928520550369285, 827943.223551165545359, 827954.518594215041958, 827965.813649698859081, 827977.108717617113143, 827988.403797969105653, 827999.698890755069442, 828010.993995974655263, 828022.289113627979532, 828033.584243714693002, 828044.879386234679259, 828056.174541187705472, 828067.469708573538810, 828078.764888392179273, 828090.060080643510446, 828101.355285327299498, 828112.650502443546429, 828123.945731991785578, 828135.240973972133361, 828146.536228384356946, 828157.831495228223503, 828169.126774503733031, 828180.422066210536286, 828191.717370348516852, 828203.012686917791143, 828214.308015917777084, 828225.603357348707505, 828236.898711210233159, 828248.194077502237633, 828259.489456224488094, 828270.784847376868129, 828282.080250959261321, 828293.375666971318424, 828304.671095413388684, 828315.966536284890026, 828327.261989585822448, 828338.557455316069536, 828349.852933475165628, 828361.148424063343555, 828372.443927080254070, 828383.739442525780760, 828395.034970399574377, 828406.330510701984167, 828417.626063432311639, 828428.921628590673208, 828440.217206176952459, 828451.512796190916561, 828462.808398632449098, 828474.104013501200825, 828485.399640797404572, 828496.695280520361848, 828507.990932670421898, 828519.286597247351892, 828530.582274250802584, 828541.877963680657558, 828553.173665536916815, 828564.469379819231108, 828575.765106527367607, 828587.060845661559142, 828598.356597221340053, 828609.652361206593923, 828620.948137617437169, 828632.243926453287713, 828643.539727714261971, 828654.835541400243528, 828666.131367510883138, 828677.427206046064384, 828688.723057005787268, 828700.018920389586128, 828711.314796197810210, 828722.610684429877438, 828733.906585085787810, 828745.202498165424913, 828756.498423668439500, 828767.794361594947986, 828779.090311944717541, 828790.386274717398919, 828801.682249912875704, 828812.978237531380728, 828824.274237572331913, 828835.570250035729259, 828846.866274921456352, 828858.162312229280360, 828869.458361959084868, 828880.754424110753462, 828892.050498684053309, 828903.346585678751580, 828914.642685094848275, 828925.938796932226978, 828937.234921190654859, 828948.531057869899087, 828959.827206969959661, 828971.123368490603752, 828982.419542431714945, 828993.715728793060407, 829005.011927574523725, 829016.308138775755651, 829027.604362396989018, 829038.900598437874578, 829050.196846898412332, 829061.493107778136618, 829072.789381077163853, 829084.085666795028374, 829095.381964932079427, 829106.678275487734936, 829117.974598461762071, 829129.270933854393661, 829140.567281665280461, 829151.863641894306056, 829163.160014541354030, 829174.456399606075138, 829185.752797088585794, 829197.049206988536753, 829208.345629305928014, 829219.642064040177502, 829230.938511191750877, 829242.234970760182478, 829253.531442745355889, 829264.827927147154696, 829276.124423965229653, 829287.420933199580759, 829298.717454850208014, 829310.013988916645758, 829321.310535398893990, 829332.607094296836294, 829343.903665610239841, 829355.200249338988215, 829366.496845482965000, 829377.793454042053781, 829389.090075015788898, 829400.386708404519595, 829411.683354207663797, 829422.980012425221503, 829434.276683056959882, 829445.573366102995351, 829456.870061562978663, 829468.166769436793402, 829479.463489724090323, 829490.760222425102256, 829502.056967539247125, 829513.353725066641346, 829524.650495006935671, 829535.947277360246517, 829547.244072126341052, 829558.540879304870032, 829569.837698895833455, 829581.134530899231322, 829592.431375314597972, 829603.728232141933404, 829615.025101381121203, 829626.321983031695709, 829637.618877094006166, 829648.915783567703329, 829660.212702452437952, 829671.509633748210035, 829682.806577454903163, 829694.103533572284505, 829705.400502100354061, 829716.697483038762584, 829727.994476387277246, 829739.291482146014459, 829750.588500314741395, 829761.885530893341638, 829773.182573881349526, 829784.479629278997891, 829795.776697086053900, 829807.073777302168310, 829818.370869927341118, 829829.667974961223081, 829840.965092404047027, 829852.262222255347297, 829863.559364515007474, 829874.856519183143973, 829886.153686259174719, 829897.450865743216127, 829908.748057635151781, 829920.045261934516020, 829931.342478641425259, 829942.639707755763084, 829953.936949277180247, 829965.234203205676749, 829976.531469541019760, 829987.828748283209279, 829999.126039431896061, 830010.423342986963689, 830021.720658948179334, 830033.017987315542996, 830044.315328088938259, 830055.612681268015876, 830066.910046853008680, 830078.207424843218178, 830089.504815238760784, 830100.802218039636500, 830112.099633245379664, 830123.397060856106691, 830134.694500871468335, 830145.991953291348182, 830157.289418115746230, 830168.586895344429649, 830179.884384977165610, 830191.181887013837695, 830202.479401454213075, 830213.776928298408166, 830225.074467546073720, 830236.372019196744077, 830247.669583250884898, 830258.967159708146937, 830270.264748568064533, 830281.562349830754101, 830292.859963495982811, 830304.157589563750662, 830315.455228033708408, 830326.752878905856051, 830338.050542179727927, 830349.348217855440453, 830360.645905932877213, 830371.943606411688961, 830383.241319291992113, 830394.539044573437423, 830405.836782255908474, 830417.134532339288853, 830428.432294823229313, 830439.730069707846269, 830451.027856992790475, 830462.325656678061932, 830473.623468763427809, 830484.921293248771690, 830496.219130133744329, 830507.516979418578558, 830518.814841102692299, 830530.112715186318383, 830541.410601669107564, 830552.708500550827011, 830564.006411831360310, 830575.304335510707460, 830586.602271588752046, 830597.900220065028407, 830609.198180939536542, 830620.496154212392867, 830631.794139883015305, 830643.092137951403856, 830654.390148417325690, 830665.688171280897222, 830676.986206541769207, 830688.284254199825227, 830699.582314254948869, 830710.880386706907302, 830722.178471555700526, 830733.476568800979294, 830744.774678442627192, 830756.072800480527803, 830767.370934914448299, 830778.669081744505093, 830789.967240970348939, 830801.265412591747008, 830812.563596608699299, 830823.861793020972982, 830835.160001828451641, 830846.458223030902445, 830857.756456628208980, 830869.054702620138414, 830880.352961006923579, 830891.651231787865981, 830902.949514963198453, 830914.247810532804579, 830925.546118496102281, 830936.844438853324391, 830948.142771604121663, 830959.441116748377681, 830970.739474285976030, 830982.037844216916710, 830993.336226540734060, 831004.634621257544495, 831015.933028366998769, 831027.231447869096883, 831038.529879763606004, 831049.828324050293304, 831061.126780728925951, 831072.425249799853191, 831083.723731262492947, 831095.022225116728805, 831106.320731362444349, 831117.619249999639578, 831128.917781027965248, 831140.216324447304942, 831151.514880257425830, 831162.813448458444327, 831174.112029049894772, 831185.410622031777166, 831196.709227404091507, 831208.007845166255720, 831219.306475318619050, 831230.605117860832252, 831241.903772792546079, 831253.202440113760531, 831264.501119824242778, 831275.799811923992820, 831287.098516412894242, 831298.397233290597796, 831309.695962556987070, 831320.994704212062061, 831332.293458255589940, 831343.592224687337875, 831354.891003507189453, 831366.189794714911841, 831377.488598310505040, 831388.787414293736219, 831400.086242664721794, 831411.385083422763273, 831422.683936568209901, 831433.982802100479603, 831445.281680019805208, 831456.580570325953886, 831467.879473018343560, 831479.178388097439893, 831490.477315562660806, 831501.776255414239131, 831513.075207651592791, 831524.374172274954617, 831535.673149283858947, 831546.972138678305782, 831558.271140458062291, 831569.570154622895643, 831580.869181172805838, 831592.168220107792877, 831603.467271427391097, 831614.766335131716914, 831626.065411220537499, 831637.364499693387188, 831648.663600550615229, 831659.962713791639544, 831671.261839416692965, 831682.560977425076999, 831693.860127817140892, 831705.159290592535399, 831716.458465751376934, 831727.757653292967007, 831739.056853217654862, 831750.356065525091253, 831761.655290215159766, 831772.954527287511155, 831784.253776742145419, 831795.553038579062559, 831806.852312797796912, 831818.151599398581311, 831829.450898380950093, 831840.750209744786844, 831852.049533489975147, 831863.348869616515003, 831874.648218124057166, 831885.947579012368806, 831897.246952281682752, 831908.546337931416929, 831919.845735961687751, 831931.145146372262388, 831942.444569163024426, 831953.744004333624616, 831965.043451884179376, 831976.342911814339459, 831987.642384124104865, 831998.941868813242763, 832010.241365881520323, 832021.540875329053961, 832032.840397155261599, 832044.139931360492483, 832055.439477944048122, 832066.739036906394176, 832078.038608246832155, 832089.338191965245642, 832100.637788061983883, 832111.937396536464803, 832123.237017388571985, 832134.536650618305430, 832145.836296225548722, 832157.135954209719785, 832168.435624571284279, 832179.735307309543714, 832191.035002424614504, 832202.334709916380234, 832213.634429784491658, 832224.934162029065192, 832236.233906649751589, 832247.533663646434434, 832258.833433018997312, 832270.133214767207392, 832281.433008890948258, 832292.732815390103497, 832304.032634264556691, 832315.332465514075011, 832326.632309138425626, 832337.932165137724951, 832349.232033511507325, 832360.531914259889163, 832371.831807382637635, 832383.131712879519910, 832394.431630750303157, 832405.731560994870961, 832417.031503613339737, 832428.331458605360240, 832439.631425970699638, 832450.931405709474348, 832462.231397821102291, 832473.531402305816300, 832484.831419163383543, 832496.131448393454775, 832507.431489995913580, 832518.731543970876373, 832530.031610317993909, 832541.331689037149772, 832552.631780128111131, 832563.931883590877987, 832575.231999425101094, 832586.532127630896866, 832597.832268207799643, 832609.132421155809425, 832620.432586474809796, 832631.732764164684340, 832643.032954225316644, 832654.333156656241044, 832665.633371457573958, 832676.933598629198968, 832688.233838170766830, 832699.534090082161129, 832710.834354363265447, 832722.134631013963372, 832733.434920034138486, 832744.735221423674375, 832756.035535182221793, 832767.335861309664324, 832778.636199806118384, 832789.936550671118312, 832801.236913904547691, 832812.537289506406523, 832823.837677476578392, 832835.138077814714052, 832846.438490520580672, 832857.738915594411083, 832869.039353035739623, 832880.339802844566293, 832891.640265020658262, 832902.940739563782699, 832914.241226473939605, 832925.541725751012564, 832936.842237394652329, 832948.142761404858902, 832959.443297781399451, 832970.743846524157561, 832982.044407633016817, 832993.344981107744388, 833004.645566948223859, 833015.946165154222399, 833027.246775725740008, 833038.547398662660271, 833049.848033964633942, 833061.148681631661020, 833072.449341663508676, 833083.750014059944078, 833095.050698820967227, 833106.351395946345292, 833117.652105435961857, 833128.952827289584093, 833140.253561507211998, 833151.554308088612743, 833162.855067033553496, 833174.155838342034258, 833185.456622013822198, 833196.757418048800901, 833208.058226446621120, 833219.359047207399271, 833230.659880330786109, 833241.960725816781633, 833253.261583665385842, 833264.562453876016662, 833275.863336448790506, 833287.164231383358128, 833298.465138679835945, 833309.766058337991126, 833321.066990357358009, 833332.367934738169424, 833343.668891480308957, 833354.969860583310947, 833366.270842047291808, 833377.571835871902294, 833388.872842057142407, 833400.173860602662899, 833411.474891508580185, 833422.775934774428606, 833434.076990400208160, 833445.378058385918848, 833456.679138731211424, 833467.980231436085887, 833479.281336500192992, 833490.582453923532739, 833501.883583705988713, 833513.184725847095251, 833524.485880347201601, 833535.787047205492854, 833547.088226422551088, 833558.389417997794226, 833569.690621930989437, 833580.991838222253136, 833592.293066871468909, 833603.594307878171094, 833614.895561242359690, 833626.196826964034699, 833637.498105042730458, 833648.799395478563383, 833660.100698271417059, 833671.402013420825824, 833682.703340926906094, 833694.004680789425038, 833705.306033008149825, 833716.607397583080456, 833727.908774513984099, 833739.210163800627925, 833750.511565442895517, 833761.812979440786876, 833773.114405794069171, 833784.415844502625987, 833795.717295566108078, 833807.018758984631859, 833818.320234757848084, 833829.621722885523923, 833840.923223367659375, 833852.224736204254441, 833863.526261394843459, 833874.827798939542845, 833886.129348838119768, 833897.430911090341397, 833908.732485696091317, 833920.034072655253112, 833931.335671967477538, 833942.637283632997423, 833953.938907651230693, 833965.240544022293761, 833976.542192746070214, 833987.843853822210804, 833999.145527250715531, 834010.447213031467982, 834021.748911164118908, 834033.050621648668312, 834044.352344484883361, 834055.654079672531225, 834066.955827211728320, 834078.257587102125399, 834089.559359343606047, 834100.861143936053850, 834112.162940879468806, 834123.464750173268840, 834134.766571817686781, 834146.068405812256970, 834157.370252156979404, 834168.672110851970501, 834179.973981896764599, 834191.275865291245282, 834202.577761035179719, 834213.879669128684327, 834225.181589571409859, 834236.483522363356315, 834247.785467504174449, 834259.087424993631430, 834270.389394831843674, 834281.691377018461935, 834292.993371553719044, 834304.295378436916508, 834315.597397668287158, 834326.899429247481748, 834338.201473174383864, 834349.503529448993504, 834360.805598070961423, 834372.107679040171206, 834383.409772356506437, 834394.711878019850701, 834406.013996030087583, 834417.316126386984251, 834428.618269090191461, 834439.920424140058458, 834451.222591536003165, 834462.524771277792752, 834473.826963365660049, 834485.129167799488641, 834496.431384578696452, 834507.733613703399897, 834519.035855173366144, 834530.338108988595195, 834541.640375148737803, 834552.942653653793968, 834564.244944503414445, 834575.547247697599232, 834586.849563236115500, 834598.151891118963249, 834609.454231345909648, 834620.756583916721866, 834632.058948831283487, 834643.361326089594513, 834654.663715691305697, 834665.966117636300623, 834677.268531924462877, 834688.570958555676043, 834699.873397529590875, 834711.175848846440203, 834722.478312505758367, 834733.780788507428952, 834745.083276851451956, 834756.385777537594549, 834767.688290565623902, 834778.990815935307182, 834790.293353646644391, 834801.595903699635528, 834812.898466093931347, 834824.201040829415433, 834835.503627905854955, 834846.806227323366329, 834858.108839081483893, 834869.411463180091232, 834880.714099619071931, 834892.016748398425989, 834903.319409517920576, 834914.622082977439277, 834925.924768776749261, 834937.227466915617697, 834948.530177394044586, 834959.832900211913511, 834971.135635368875228, 834982.438382864813320, 834993.741142699727789, 835005.043914873502217, 835016.346699385787360, 835027.649496236466803, 835038.952305425540544, 835050.255126952775754, 835061.557960817939602, 835072.860807020799257, 835084.163665561471134, 835095.466536439722404, 835106.769419655320235, 835118.072315208148211, 835129.375223097973503, 835140.678143324796110, 835151.981075888383202, 835163.284020788501948, 835174.586978025152348, 835185.889947598217987, 835197.192929507233202, 835208.495923752314411, 835219.798930333345197, 835231.101949250092730, 835242.404980502207763, 835253.708024089923128, 835265.011080012889579, 835276.314148270874284, 835287.617228863760829, 835298.920321791432798, 835310.223427053657360, 835321.526544650667347, 835332.829674581880681, 835344.132816847180948, 835355.435971446568146, 835366.739138379809447, 835378.042317646904849, 835389.345509247388691, 835400.648713181377389, 835411.951929448521696, 835423.255158049054444, 835434.558398982277140, 835445.861652248422615, 835457.164917847374454, 835468.468195778666995, 835479.771486042416655, 835491.074788638157770, 835502.378103566123173, 835513.681430825963616, 835524.984770417446271, 835536.288122340687551, 835547.591486595338210, 835558.894863181281835, 835570.198252098402008, 835581.501653346465901, 835592.805066925357096, 835604.108492834842764, 835615.411931074922904, 835626.715381645481102, 835638.018844546051696, 835649.322319776983932, 835660.625807337695733, 835671.929307228070684, 835683.232819448225200, 835694.536343997926451, 835705.839880876708776, 835717.143430084688589, 835728.446991621749476, 835739.750565487775020, 835751.054151682415977, 835762.357750205555931, 835773.661361057194881, 835784.964984236983582, 835796.268619745038450, 835807.572267580893822, 835818.875927744549699, 835830.179600235773250, 835841.483285054680891, 835852.786982200923376, 835864.090691674151458, 835875.394413474597968, 835886.698147601913661, 835898.001894055982120, 835909.305652836454101, 835920.609423943446018, 835931.913207376608625, 835943.217003136174753, 835954.520811221678741, 835965.824631632887758, 835977.128464369685389, 835988.432309432071634, 835999.736166819813661, 836011.040036532795057, 836022.343918570782989, 836033.647812933777459, 836044.951719621545635, 836056.255638633738272, 836067.559569970471784, 836078.863513631513342, 836090.167469616862945, 836101.471437926054932, 836112.775418559089303, 836124.079411515733227, 836135.383416796103120, 836146.687434399849735, 836157.991464326740243, 836169.295506576774642, 836180.599561149720103, 836191.903628045460209, 836203.207707263762131, 836214.511798804625869, 836225.815902667818591, 836237.120018852991052, 836248.424147360376082, 836259.728288189740852, 836271.032441340619698, 836282.336606813129038, 836293.640784607152455, 836304.944974722340703, 836316.249177158693783, 836327.553391915862449, 836338.857618993963115, 836350.161858392762952, 836361.466110111912712, 836372.770374151528813, 836384.074650511494838, 836395.378939191345125, 836406.683240191079676, 836417.987553510582075, 836429.291879149735905, 836440.596217108191922, 836451.900567385950126, 836463.204929982894100, 836474.509304898907430, 836485.813692133640870, 836497.118091687210836, 836508.422503559151664, 836519.726927749579772, 836531.031364258262329, 836542.335813084850088, 836553.640274229459465, 836564.944747691974044, 836576.249233471928164, 836587.553731569438241, 836598.858241984271444, 836610.162764716194943, 836621.467299765325151, 836632.771847131079994, 836644.076406813692302, 836655.380978812696412, 836666.685563128208742, 836677.990159760112874, 836689.294768707943149, 836700.599389971815981, 836711.904023551498540, 836723.208669446874410, 836734.513327657594346, 836745.817998183774762, 836757.122681025066413, 836768.427376181585714, 836779.732083652750589, 836791.036803438793868, 836802.341535539482720, 836813.646279954467900, 836824.951036683865823, 836836.255805727327242, 836847.560587084735744, 836858.865380755858496, 836870.170186740928330, 836881.475005039363168, 836892.779835651279427, 836904.084678576444276, 836915.389533814508468, 836926.694401365588419, 836937.999281229567714, 836949.304173405864276, 836960.609077894827351, 836971.913994695991278, 836983.218923809356056, 836994.523865234805271, 837005.828818972222507, 837017.133785021142103, 837028.438763381680474, 837039.743754053604789, 837051.048757036798634, 837062.353772331029177, 837073.658799936296418, 837084.963839852483943, 837096.268892079126090, 837107.573956616339274, 837118.879033463890664, 837130.184122621547431, 837141.489224089309573, 837152.794337867060676, 837164.099463954335079, 837175.404602351365611, 837186.709753057686612, 837198.014916073414497, 837209.320091398200020, 837220.625279032043181, 837231.930478974711150, 837243.235691225971095, 837254.540915785939433, 837265.846152654034086, 837277.151401830371469, 837288.456663314951584, 837299.761937107308768, 837311.067223207559437, 837322.372521615354344, 837333.677832330693491, 837344.983155353344046, 837356.288490683073178, 837367.593838319764473, 837378.899198263417929, 837390.204570513684303, 837401.509955070563592, 837412.815351933939382, 837424.120761103346013, 837435.426182579016313, 837446.731616360717453, 837458.037062448216602, 837469.342520841164514, 837480.647991539561190, 837491.953474543523043, 837503.258969852467999, 837514.564477466745302, 837525.869997385772876, 837537.175529609434307, 837548.481074137729593, 837559.786630970658734, 837571.092200107639655, 837582.397781548672356, 837593.703375293989666, 837605.008981343009509, 837616.314599695615470, 837627.620230351923965, 837638.925873311469331, 837650.231528574251570, 837661.537196140270680, 837672.842876009061001, 837684.148568180622533, 837695.454272654722445, 837706.759989431477152, 837718.065718510420993, 837729.371459891553968, 837740.677213574759662, 837751.982979559688829, 837763.288757846574299, 837774.594548434833996, 837785.900351324584335, 837797.206166515476070, 837808.511994007509202, 837819.817833800567314, 837831.123685894417576, 837842.429550288943574, 837853.735426983912475, 837865.041315979324281, 837876.347217274829745, 837887.653130870428868, 837898.959056765772402, 837910.264994961093180, 837921.570945455925539, 837932.876908250153065, 837944.182883343659341, 837955.488870736444369, 837966.794870428158902, 837978.100882418570109, 837989.406906707794406, 838000.712943295482546, 838012.018992181518115, 838023.325053365901113, 838034.631126848282292, 838045.937212628894486, 838057.243310706922784, 838068.549421082716435, 838079.855543755926192, 838091.161678726552054, 838102.467825994244777, 838113.773985559004359, 838125.080157420597970, 838136.386341578909196, 838147.692538033938035, 838158.998746785218827, 838170.304967832867987, 838181.611201176652685, 838192.917446816223674, 838204.223704751930200, 838215.529974982840940, 838226.836257509537973, 838238.142552331672050, 838249.448859448893927, 838260.755178861203603, 838272.061510568368249, 838283.367854570387863, 838294.674210866913199, 838305.980579457944259, 838317.286960343131796, 838328.593353522708640, 838339.899758996092714, 838351.206176763400435, 838362.512606824515387, 838373.819049179088324, 838385.125503827002831, 838396.431970768258907, 838407.738450002507307, 838419.044941529631615, 838430.351445349631831, 838441.657961462275125, 838452.964489867445081, 838464.271030564908870, 838475.577583554550074, 838486.884148836252280, 838498.190726409782656, 838509.497316275141202, 838520.803918431978673, 838532.110532880295068, 838543.417159619857557, 838554.723798650666140, 838566.030449972255155, 838577.337113584857434, 838588.643789488123730, 838599.950477681704797, 838611.257178165949881, 838622.563890940276906, 838633.870616004453041, 838645.177353358827531, 838656.484103002934717, 838667.790864936658181, 838679.097639159765095, 838690.404425672371872, 838701.711224473896436, 838713.018035564571619, 838724.324858944048174, 838735.631694612326100, 838746.938542568939738, 838758.245402814238332, 838769.552275347639807, 838780.859160169376992, 838792.166057278751396, 838803.472966676112264, 838814.779888361226767, 838826.086822333629243, 838837.393768593319692, 838848.700727140298113, 838860.007697974448092, 838871.314681095420383, 838882.621676503098570, 838893.928684197482653, 838905.235704178223386, 838916.542736445320770, 838927.849780998541974, 838939.156837837654166, 838950.463906962773763, 838961.770988373435102, 838973.078082069754601, 838984.385188051383011, 838995.692306318320334, 839006.999436870333739, 839018.306579707190394, 839029.613734829123132, 839040.920902235433459, 839052.228081926121376, 839063.535273901303299, 839074.842478160746396, 839086.149694704101421, 839097.456923531368375, 839108.764164642314427, 839120.071418036823161, 839131.378683714894578, 839142.685961676179431, 839153.993251920444891, 839165.300554447923787, 839176.607869258150458, 839187.915196351008490, 839199.222535726381466, 839210.529887384152971, 839221.837251324090175, 839233.144627546193078, 839244.452016050228849, 839255.759416835848242, 839267.066829903284088, 839278.374255252070725, 839289.681692882208154, 839300.989142793579958, 839312.296604985953309, 839323.604079459095374, 839334.911566213006154, 839346.219065247452818, 839357.526576562318951, 839368.834100157371722, 839380.141636032611132, 839391.449184187804349, 839402.756744622834958, 839414.064317337470129, 839425.371902331826277, 839436.679499605321325, 839447.987109157955274, 839459.294730989844538, 839470.602365100407042, 839481.910011489875615, 839493.217670158017427, 839504.525341104483232, 839515.833024329156615, 839527.140719832153991, 839538.448427613126114, 839549.756147671956569, 839561.063880008412525, 839572.371624622377567, 839583.679381513851695, 839594.987150682485662, 839606.294932128163055, 839617.602725850883871, 839628.910531850415282, 839640.218350126640871, 839651.526180679327808, 839662.834023508359678, 839674.141878613270819, 839685.449745994526893, 839696.757625651662238, 839708.065517584444024, 839719.373421792872250, 839730.681338276830502, 839741.989267035969533, 839753.297208070172928, 839764.605161379440688, 839775.913126963656396, 839787.221104822121561, 839798.529094955534674, 839809.837097363313660, 839821.145112045225687, 839832.453139001154341, 839843.761178231099620, 839855.069229734828696, 839866.377293512225151, 839877.685369562939741, 839888.993457886972465, 839900.301558484439738, 839911.609671354643069, 839922.917796498048119, 839934.225933913956396, 839945.534083602484316, 839956.842245563399047, 839968.150419796700589, 839979.458606301923282, 839990.766805079183541, 840002.075016128248535, 840013.383239449118264, 840024.691475041327067, 840035.999722905107774, 840047.307983039994724, 840058.616255446104333, 840069.924540122970939, 840081.232837070594542, 840092.541146288742311, 840103.849467777530663, 840115.157801536493935, 840126.466147565864958, 840137.774505864945240, 840149.082876434084028, 840160.391259272932075, 840171.699654381256551, 840183.008061759057455, 840194.316481406101957, 840205.624913322157227, 840216.933357507339679, 840228.241813961300068, 840239.550282683921978, 840250.858763674972579, 840262.167256934451871, 840273.475762462127022, 840284.784280257881619, 840296.092810321482830, 840307.401352652697824, 840318.709907251759432, 840330.018474118085578, 840341.327053251909092, 840352.635644652880728, 840363.944248320767656, 840375.252864255569875, 840386.561492457054555, 840397.870132924872451, 840409.178785659256391, 840420.487450659973547, 840431.796127926791087, 840443.104817459476180, 840454.413519257912412, 840465.722233322099783, 840477.030959651805460, 840488.339698246796615, 840499.648449107073247, 840510.957212232286111, 840522.265987622318789, 840533.574775277287699, 840544.883575196727179, 840556.192387380637228, 840567.501211829017848, 840578.810048541403376, 840590.118897517677397, 840601.427758757839911, 840612.736632261890918, 840624.045518029248342, 840635.354416060028598, 840646.663326354231685, 840657.972248911391944, 840669.281183731509373, 840680.590130814467557, 840691.899090159917250, 840703.208061768091284, 840714.517045638523996, 840725.826041770982556, 840737.135050165583380, 840748.444070822093636, 840759.753103740396909, 840771.062148920143954, 840782.371206361451186, 840793.680276064085774, 840804.989358027931303, 840816.298452252522111, 840827.607558737974614, 840838.916677484055981, 840850.225808490882628, 840861.534951758105308, 840872.844107285374776, 840884.153275072923861, 840895.462455120286904, 840906.771647427580319, 840918.080851994338445, 840929.390068820677698, 840940.699297906132415, 840952.008539251051843, 840963.317792854853906, 840974.627058717538603, 840985.936336838989519, 840997.245627219090238, 841008.554929857607931, 841019.864244754309766, 841031.173571909312159, 841042.482911322033033, 841053.792262992705218, 841065.101626921095885, 841076.411003107088618, 841087.720391550334170, 841099.029792250948958, 841110.339205208583735, 841121.648630423122086, 841132.958067894447595, 841144.267517622327432, 841155.576979606761597, 841166.886453847517259, 841178.195940344361588, 841189.505439097294584, 841200.814950106199831, 841212.124473370844498, 841223.434008890995756, 841234.743556666537188, 841246.053116697352380, 841257.362688983208500, 841268.672273524221964, 841279.981870320159942, 841291.291479370556772, 841302.601100675528869, 841313.910734234843403, 841325.220380048500374, 841336.530038116150536, 841347.839708437793888, 841359.149391012964770, 841370.459085842012428, 841381.768792924471200, 841393.078512260341085, 841404.388243849272840, 841415.697987691266462, 841427.007743786205538, 841438.317512133624405, 841449.627292733872309, 841460.937085586483590, 841472.246890691225417, 841483.556708048330620, 841494.866537657333538, 841506.176379518117756, 841517.486233630566858, 841528.796099994448014, 841540.105978609761223, 841551.415869476506487, 841562.725772593985312, 841574.035687962546945, 841585.345615581958555, 841596.655555451987311, 841607.965507572400384, 841619.275471943081357, 841630.585448564146645, 841641.895437435130589, 841653.205438555916771, 841664.515451926505193, 841675.825477546430193, 841687.135515416157432, 841698.445565534988418, 841709.755627902923152, 841721.065702519845217, 841732.375789385521784, 841743.685888500069268, 841754.995999863022007, 841766.306123474380001, 841777.616259333677590, 841788.926407441380434, 841800.236567797022872, 841811.546740400139242, 841822.856925251195207, 841834.167122349492274, 841845.477331695379689, 841856.787553288275376, 841868.097787128179334, 841879.408033214858733, 841890.718291548429988, 841902.028562128427438, 841913.338844954967499, 841924.649140027817339, 841935.959447346627712, 841947.269766911515035, 841958.580098722246476, 841969.890442778589204, 841981.200799080543220, 841992.511167627642862, 842003.821548420237377, 842015.131941457861103, 842026.442346740281209, 842037.752764267497696, 842049.063194039394148, 842060.373636055854149, 842071.684090316412039, 842082.994556821300648, 842094.305035570170730, 842105.615526562905870, 842116.926029799389653, 842128.236545279505663, 842139.547073002904654, 842150.857612969703041, 842162.168165179435164, 842173.478729632333852, 842184.789306328166276, 842196.099895266233943, 842207.410496447118931, 842218.721109870471992, 842230.031735535943881, 842241.342373443534598, 842252.653023592894897, 842263.963685984141193, 842275.274360617040657, 842286.585047491360456, 842297.895746607100591, 842309.206457963795401, 842320.517181561677717, 842331.827917400398292, 842343.138665479840711, 842354.449425800004974, 842365.760198360425420, 842377.070983161102049, 842388.381780202034861, 842399.692589482991025, 842411.003411003388464, 842422.314244763809256, 842433.625090763787739, 842444.935949003091082, 842456.246819481602870, 842467.557702199206688, 842478.868597155669704, 842490.179504350991920, 842501.490423784824088, 842512.801355457049794, 842524.112299367901869, 842535.423255516681820, 842546.734223903738894, 842558.045204528374597, 842569.356197390938178, 842580.667202491080388, 842591.978219828568399, 842603.289249403518625, 842614.600291215465404, 842625.911345264292322, 842637.222411549999379, 842648.533490072586574, 842659.844580831471831, 842671.155683826887980, 842682.466799058485776, 842693.777926526148804, 842705.089066229760647, 842716.400218169204891, 842727.711382344015874, 842739.022558754659258, 842750.333747400436550, 842761.644948281464167, 842772.956161397509277, 842784.267386748571880, 842795.578624334186316, 842806.889874154468998, 842818.201136209303513, 842829.512410498107783, 842840.823697021231055, 842852.134995778324082, 842863.446306769503281, 842874.757629994070157, 842886.068965452373959, 842897.380313143832609, 842908.691673068678938, 842920.003045226563700, 842931.314429617486894, 842942.625826240866445, 842953.937235097284429, 842965.248656186042354, 842976.560089507023804, 842987.871535060461611, 842999.182992845657282, 843010.494462863076478, 843021.805945112020709, 843033.117439592489973, 843044.428946304484271, 843055.740465247770771, 843067.051996422233060, 843078.363539827638306, 843089.675095463986509, 843100.986663331044838, 843112.298243428580463, 843123.609835756476969, 843134.921440314617939, 843146.233057102770545, 843157.544686121051200, 843168.856327368994243, 843180.167980846599676, 843191.479646553867497, 843202.791324490448460, 843214.103014656109735, 843225.414717050851323, 843236.726431674556807, 843248.038158526876941, 843259.349897607811727, 843270.661648917361163, 843281.973412455059588, 843293.285188221023418, 843304.596976214903407, 843315.908776436815970, 843327.220588886295445, 843338.532413563341834, 843349.844250467722304, 843361.156099599320441, 843372.467960958136246, 843383.779834543936886, 843395.091720356489532, 843406.403618395794183, 843417.715528661501594, 843429.027451153611764, 843440.339385871891864, 843451.651332816109061, 843462.963291986379772, 843474.275263382354751, 843485.587247004150413, 843496.899242851301096, 843508.211250923573971, 843519.523271221201867, 843530.835303743835539, 843542.147348491358571, 843553.459405463538133, 843564.771474660257809, 843576.083556081168354, 843587.395649726735428, 843598.707755596144125, 843610.019873689743690, 843621.332004007068463, 843632.644146548118442, 843643.956301312660798, 843655.268468300462700, 843666.580647511640564, 843677.892838945612311, 843689.205042602727190, 843700.517258482635953, 843711.829486585105769, 843723.141726910136640, 843734.453979457495734, 843745.766244226950221, 843757.078521218267269, 843768.390810431796126, 843779.703111866838299, 843791.015425523393787, 843802.327751401462592, 843813.640089500928298, 843824.952439821325243, 843836.264802362886257, 843847.577177125262097, 843858.889564108336344, 843870.201963311759755, 843881.514374735648744, 843892.826798379770480, 843904.139234243892133, 843915.451682328130119, 843926.764142632135190, 843938.076615155674517, 843949.389099898748100, 843960.701596861239523, 843972.014106042683125, 843983.326627443311736, 843994.639161062659696, 844005.951706901076250, 844017.264264957979321, 844028.576835233252496, 844039.889417726779357, 844051.202012438443489, 844062.514619368244894, 844073.827238515834324, 844085.139869881095365, 844096.452513463795185, 844107.765169263933785, 844119.077837281511165, 844130.390517516061664, 844141.703209967468865, 844153.015914635849185, 844164.328631520853378, 844175.641360622132197, 844186.954101940034889, 844198.266855473979376, 844209.579621224082075, 844220.892399189993739, 844232.205189371597953, 844243.517991768894717, 844254.830806381767616, 844266.143633209750988, 844277.456472253077663, 844288.769323511281982, 844300.082186984480359, 844311.395062672207132, 844322.707950574578717, 844334.020850691245869, 844345.333763022441417, 844356.646687567466870, 844367.959624326671474, 844379.272573299589567, 844390.585534486221150, 844401.898507886449806, 844413.211493499926291, 844424.524491326417774, 844435.837501366273500, 844447.150523619027808, 844458.463558084447868, 844469.776604762533680, 844481.089663653052412, 844492.402734756004065, 844503.715818071039394, 844515.028913598158397, 844526.342021337011829, 844537.655141287716106, 844548.968273450038396, 844560.281417823745869, 844571.594574408722110, 844582.907743204734288, 844594.220924211898819, 844605.534117429866455, 844616.847322858520783, 844628.160540497512557, 844639.473770347074606, 844650.787012406857684, 844662.100266676628962, 844673.413533156388439, 844684.726811846019700, 844696.040102745289914, 844707.353405853966251, 844718.666721172048710, 844729.980048699188046, 844741.293388435384259, 844752.606740380637348, 844763.920104534481652, 844775.233480897033587, 844786.546869468060322, 844797.860270247212611, 844809.173683234723285, 844820.487108430126682, 844831.800545833422802, 844843.113995444145985, 844854.427457262761891, 844865.740931288688444, 844877.054417521925643, 844888.367915962240659, 844899.681426609400660, 844910.994949463405646, 844922.308484524139203, 844933.622031791252084, 844944.935591264860705, 844956.249162944615819, 844967.562746830517426, 844978.876342922216281, 844990.189951219712384, 845001.503571722889319, 845012.817204431514256, 845024.130849345470779, 845035.444506464642473, 845046.758175788796507, 845058.071857317583635, 845069.385551051236689, 845080.699256989522837, 845092.012975132209249, 845103.326705479295924, 845114.640448030317202, 845125.954202785389498, 845137.267969744512811, 845148.581748906988651, 845159.895540273049846, 845171.209343842463568, 845182.523159615346231, 845193.836987590999343, 845205.150827769772150, 845216.464680151315406, 845227.778544735629112, 845239.092421522364020, 845250.406310511287302, 845261.720211702398956, 845273.034125095582567, 845284.348050690605305, 845295.661988487583585, 845306.975938486051746, 845318.289900686009787, 845329.603875087224878, 845340.917861689580604, 845352.231860492844135, 845363.545871497131884, 845374.859894701978192, 845386.173930107383057, 845397.487977713346481, 845408.802037519519217, 845420.116109525668435, 845431.430193731910549, 845442.744290137896314, 845454.058398743509315, 845465.372519548633136, 845476.686652553034946, 845488.000797756947577, 845499.314955159556121, 845510.629124761442654, 845521.943306561908685, 845533.257500560954213, 845544.571706758579239, 845555.885925154434517, 845567.200155748520046, 845578.514398540602997, 845589.828653530450538, 845601.142920718062669, 845612.457200103439391, 845623.771491686115041, 845635.085795466089621, 845646.400111443246715, 845657.714439617353491, 845669.028779988177121, 845680.343132555717602, 845691.657497319858521, 845702.971874280367047, 845714.286263437126763, 845725.600664790021256, 845736.915078338701278, 845748.229504083399661, 845759.543942023534328, 845770.858392159338109, 845782.172854490461759, 845793.487329016556032, 845804.801815737737343, 845816.116314654005691, 845827.430825764895417, 845838.745349070522934, 845850.059884570538998, 845861.374432264827192, 845872.688992153387517, 845884.003564235754311, 845895.318148512160406, 845906.632744982023723, 845917.947353645693511, 845929.261974502704106, 845940.576607552939095, 845951.891252796282060, 845963.205910232616588, 845974.520579861826263, 845985.835261683794670, 845997.149955698172562, 846008.464661904727109, 846019.779380303691141, 846031.094110894715413, 846042.408853677683510, 846053.723608652362600, 846065.038375818752684, 846076.353155176504515, 846087.667946725734510, 846098.982750466093421, 846110.297566397581249, 846121.612394519615918, 846132.927234832663089, 846144.242087336257100, 846155.556952030397952, 846166.871828914503567, 846178.186717989039607, 846189.501619253540412, 846200.816532707773149, 846212.131458351854235, 846223.446396185318008, 846234.761346208164468, 846246.076308420393616, 846257.391282821772620, 846268.706269411952235, 846280.021268190932460, 846291.336279158713296, 846302.651302315061912, 846313.966337659512646, 846325.281385192298330, 846336.596444913186133, 846347.911516821943223, 846359.226600918336771, 846370.541697202483192, 846381.856805674149655, 846393.171926333103329, 846404.487059179227799, 846415.802204212290235, 846427.117361432290636, 846438.432530838996172, 846449.747712432290427, 846461.062906212056987, 846472.378112177946605, 846483.693330330075696, 846495.008560668211430, 846506.323803192237392, 846517.639057901920751, 846528.954324797028676, 846540.269603877561167, 846551.584895143285394, 846562.900198594084941, 846574.215514229959808, 846585.530842050677165, 846596.846182055887766, 846608.161534245708026, 846619.476898619788699, 846630.792275178129785, 846642.107663920498453, 846653.423064846778288, 846664.738477956852876, 846676.053903250372969, 846687.369340727454983, 846698.684790387866087, 846710.000252231373452, 846721.315726258093491, 846732.631212467560545, 846743.946710859658197, 846755.262221434386447, 846766.577744191512465, 846777.893279130919836, 846789.208826252608560, 846800.524385556112975, 846811.839957041433081, 846823.155540708452463, 846834.471136556938291, 846845.786744587006979, 846857.102364798076451, 846868.417997190263122, 846879.733641763450578, 846891.049298517405987, 846902.364967452012934, 846913.680648567155004, 846924.996341862599365, 846936.312047338346019, 846947.627764993812889, 846958.943494829582050, 846970.259236844838597, 846981.574991039698943, 846992.890757414046675, 847004.206535967765376, 847015.522326700505801, 847026.838129612500779, 847038.153944703284651, 847049.469771972624585, 847060.785611420636997, 847072.101463046856225, 847083.417326851515099, 847094.733202834264375, 847106.049090995104052, 847117.364991333684884, 847128.680903849890456, 847139.996828543604352, 847151.312765414710157, 847162.628714463207871, 847173.944675688631833, 847185.260649090865627, 847196.576634670025669, 847207.892632425879128, 847219.208642358193174, 847230.524664466734976, 847241.840698751620948, 847253.156745212501846, 847264.472803849261254, 847275.788874661782756, 847287.104957649717107, 847298.421052813180722, 847309.737160152057186, 847321.053279666113667, 847332.369411355117336, 847343.685555218835361, 847355.001711257384159, 847366.317879470530897, 847377.634059858042747, 847388.950252419803292, 847400.266457155579701, 847411.582674065488391, 847422.898903149063699, 847434.215144406538457, 847445.531397837447003, 847456.847663441672921, 847468.163941219099797, 847479.480231169611216, 847490.796533293090761, 847502.112847589305602, 847513.429174058139324, 847524.745512699475512, 847536.061863513197750, 847547.378226499189623, 847558.694601657101884, 847570.010988986934535, 847581.327388488571160, 847592.643800161662512, 847603.960224006208591, 847615.276660021976568, 847626.593108209082857, 847637.909568567178212, 847649.226041096146218, 847660.542525795754045, 847671.859022665885277, 847683.175531706423499, 847694.492052917368710, 847705.808586298371665, 847717.125131849199533, 847728.441689569852315, 847739.758259460446425, 847751.074841520399787, 847762.391435749595985, 847773.708042148267850, 847785.024660715833306, 847796.341291452408768, 847807.657934357644990, 847818.974589431541972, 847830.291256673983298, 847841.607936084736139, 847852.924627663684078, 847864.241331410710700, 847875.558047325699590, 847886.874775408301502, 847898.191515658516437, 847909.508268076344393, 847920.825032661203295, 847932.141809413325973, 847943.458598332479596, 847954.775399418547750, 847966.092212671181187, 847977.409038090379909, 847988.725875676143914, 848000.042725428123958, 848011.359587346087210, 848022.676461430266500, 848033.993347679963335, 848045.310246095410548, 848056.627156676491722, 848067.944079422974028, 848079.261014334741049, 848090.577961411443539, 848101.894920653081499, 848113.211892059538513, 848124.528875630581751, 848135.845871366211213, 848147.162879265961237, 848158.479899330064654, 848169.796931558288634, 848181.113975950283930, 848192.431032506166957, 848203.748101225588471, 848215.065182108315639, 848226.382275154581293, 848237.699380363803357, 848249.016497736098245, 848260.333627271233127, 848271.650768969091587, 848282.967922829557210, 848294.285088852397166, 848305.602267037727870, 848316.919457384967245, 848328.236659894115292, 848339.553874565172009, 848350.871101398020983, 848362.188340392080136, 848373.505591547815129, 848384.822854864643887, 848396.140130342682824, 848407.457417981582694, 848418.774717781227082, 848430.092029741615988, 848441.409353862516582, 848452.726690143696032, 848464.044038584921509, 848475.361399186425842, 848486.678771947626956, 848497.996156868757680, 848509.313553949468769, 848520.630963189643808, 848531.948384589166380, 848543.265818147803657, 848554.583263865439221, 848565.900721741840243, 848577.218191777006723, 848588.535673970938660, 848599.853168323170394, 848611.170674833701923, 848622.488193502184004, 848633.805724328965880, 848645.123267313349061, 848656.440822455449961, 848667.758389755152166, 848679.075969211990014, 848690.393560826429166, 848701.711164597887546, 848713.028780526132323, 848724.346408611396328, 848735.664048853213899, 848746.981701251352206, 848758.299365806044079, 848769.617042516940273, 848780.934731383807957, 848792.252432406530716, 848803.570145585108548, 848814.887870919308625, 848826.205608409014530, 848837.523358054109849, 848848.841119854245335, 848860.158893809304573, 848871.476679919520393, 848882.794478184310719, 848894.112288603559136, 848905.430111177498475, 848916.747945905430242, 848928.065792787820101, 848939.383651824085973, 848950.701523014111444, 848962.019406357896514, 848973.337301855208352, 848984.655209505930543, 848995.973129309713840, 849007.291061266907491, 849018.609005376929417, 849029.926961639779620, 849041.244930055225268, 849052.562910623266362, 849063.880903343670070, 849075.198908216319978, 849086.516925240983255, 849097.834954417659901, 849109.152995745884255, 849120.471049225889146, 849131.789114857325330, 849143.107192640192807, 849154.425282574258745, 849165.743384659290314, 849177.061498895171098, 849188.379625281901099, 849199.697763819131069, 849211.015914506744593, 849222.334077344741672, 849233.652252332889475, 849244.970439471071586, 849256.288638759171590, 849267.606850196956657, 849278.925073784077540, 849290.243309520883486, 849301.561557406908832, 849312.879817441920750, 849324.198089625919238, 849335.516373958904296, 849346.834670440293849, 849358.152979070437141, 849369.471299848984927, 849380.789632775587961, 849392.107977850479074, 849403.426335073076189, 849414.744704443728551, 849426.063085961737670, 849437.381479627336375, 849448.699885440408252, 849460.018303400604054, 849471.336733507923782, 849482.655175761901774, 849493.973630162887275, 849505.292096710531041, 849516.610575404367410, 849527.929066244745627, 849539.247569231083617, 849550.566084363730624, 849561.884611641988158, 849573.203151066089049, 849584.521702635684051, 849595.840266350773163, 849607.158842211123556, 849618.477430216735229, 849629.796030367142521, 849641.114642662461847, 849652.433267102460377, 849663.751903687021695, 849675.070552416029386, 849686.389213289134204, 849697.707886306452565, 849709.026571467751637, 849720.345268772915006, 849731.663978221709840, 849742.982699813786894, 849754.301433549495414, 849765.620179428253323, 849776.938937450060621, 849788.257707615033723, 849799.576489922590554, 849810.895284372847527, 849822.214090965571813, 849833.532909700530581, 849844.851740577723831, 849856.170583596802317, 849867.489438757998869, 849878.808306060964242, 849890.127185505465604, 849901.446077091386542, 849912.764980818610638, 849924.083896687021479, 849935.402824696386233, 849946.721764846704900, 849958.040717137744650, 849969.359681569039822, 849980.678658141056076, 849991.997646853211336, 850003.316647705505602, 850014.635660697822459, 850025.954685829929076, 850037.273723101941869, 850048.592772513162345, 850059.911834063823335, 850071.230907753808424, 850082.549993582768366, 850093.869091550819576, 850105.188201657612808, 850116.507323903148063, 850127.826458287076093, 850139.145604809280485, 850150.464763469877653, 850161.783934268285520, 850173.103117204620503, 850184.422312278999016, 850195.741519490838982, 850207.060738840140402, 850218.379970326786861, 850229.699213950661942, 850241.018469711416401, 850252.337737609166652, 850263.657017643563449, 850274.976309814723209, 850286.295614122063853, 850297.614930565818213, 850308.934259145753458, 850320.253599861753173, 850331.572952713351697, 850342.892317700898275, 850354.211694823927246, 850365.531084082322195, 850376.850485475966707, 850388.169899004627950, 850399.489324668305926, 850410.808762467000633, 850422.128212400246412, 850433.447674467926845, 850444.767148670041934, 850456.086635006475262, 850467.406133476994000, 850478.725644081365317, 850490.045166819589213, 850501.364701691316441, 850512.684248696547002, 850524.003807835164480, 850535.323379107052460, 850546.642962511978112, 850557.962558049825020, 850569.282165720243938, 850580.601785523467697, 850591.921417459147051, 850603.241061527049169, 850614.560717727057636, 850625.880386059288867, 850637.200066523160785, 850648.519759119022638, 850659.839463846408762, 850671.159180704969913, 850682.478909695055336, 850693.798650816199370, 850705.118404068402015, 850716.438169451314025, 850727.757946965051815, 850739.077736609266140, 850750.397538383956999, 850761.717352288775146, 850773.037178323836997, 850784.357016488909721, 850795.676866783644073, 850806.996729208156466, 850818.316603761981241, 850829.636490445351228, 850840.956389257917181, 850852.276300199562684, 850863.596223270171322, 850874.916158469393849, 850886.236105797463097, 850897.556065253913403, 850908.876036838861182, 850920.196020551724359, 850931.516016392852180, 850942.836024361778982, 850954.156044458504766, 850965.476076682796702, 850976.796121034654789, 850988.116177513729781, 850999.436246120021679, 851010.756326853181235, 851022.076419713557698, 851033.396524700219743, 851044.716641813633032, 851056.036771053448319, 851067.356912419782020, 851078.677065912052058, 851089.997231530374847, 851101.317409274401143, 851112.637599144363776, 851123.957801139797084, 851135.278015260584652, 851146.598241506493650, 851157.918479877640493, 851169.238730373792350, 851180.558992994599976, 851191.879267740179785, 851203.199554610298946, 851214.519853604841046, 851225.840164723456837, 851237.160487966262735, 851248.480823332793079, 851259.801170823397115, 851271.121530437492765, 851282.441902175196446, 851293.762286036158912, 851305.082682020263746, 851316.403090127510950, 851327.723510357551277, 851339.043942710501142, 851350.364387186011299, 851361.684843783732504, 851373.005312504014000, 851384.325793346506543, 851395.646286310744472, 851406.966791397077031, 851418.287308605271392, 851429.607837934745476, 851440.928379385848530, 851452.248932958231308, 851463.569498651544563, 851474.890076466021128, 851486.210666401428171, 851497.531268457416445, 851508.851882633869536, 851520.172508930903859, 851531.493147348170169, 851542.813797885435633, 851554.134460542816669, 851565.455135319847614, 851576.775822216528468, 851588.096521232742816, 851599.417232368490659, 851610.737955623306334, 851622.058690997422673, 851633.379438490374014, 851644.700198102043942, 851656.020969832316041, 851667.341753681190312, 851678.662549648317508, 851689.983357733697630, 851701.304177937097847, 851712.625010258401744, 851723.945854697609320, 851735.266711254371330, 851746.587579928571358, 851757.908460719976574, 851769.229353628819808, 851780.550258654518984, 851791.871175796957687, 851803.192105056252331, 851814.513046432170086, 851825.833999924594536, 851837.154965533292852, 851848.475943258032203, 851859.796933098812588, 851871.117935055517592, 851882.438949127797969, 851893.759975315537304, 851905.081013618852012, 851916.402064037392847, 851927.723126571159810, 851939.044201219803654, 851950.365287983324379, 851961.686386861605570, 851973.007497854181565, 851984.328620961285196, 851995.649756182567216, 852006.970903517911211, 852018.292062967317179, 852029.613234530552290, 852040.934418207267299, 852052.255613997578621, 852063.576821901253425, 852074.898041918058880, 852086.219274048111401, 852097.540518290945329, 852108.861774646560661, 852120.183043114724569, 852131.504323695437051, 852142.825616388465278, 852154.146921193692833, 852165.468238111003302, 852176.789567140163854, 852188.110908281058073, 852199.432261533569545, 852210.753626897581853, 852222.075004372745752, 852233.396393959061243, 852244.717795656528324, 852256.039209464797750, 852267.360635383869521, 852278.682073413394392, 852290.003523553372361, 852301.324985803687014, 852312.646460163989104, 852323.967946634395048, 852335.289445214555599, 852346.610955904470757, 852357.932478703907691, 852369.254013612866402, 852380.575560630881228, 852391.897119757952169, 852403.218690994195640, 852414.540274339262396, 852425.861869792803191, 852437.183477354818024, 852448.505097025423311, 852459.826728804153390, 852471.148372691008262, 852482.470028685755096, 852493.791696788161062, 852505.113376998342574, 852516.435069315950386, 852527.756773740984499, 852539.078490273212083, 852550.400218912400305, 852561.721959658549167, 852573.043712511425838, 852584.365477470913902, 852595.687254536896944, 852607.009043709258549, 852618.330844987765886, 852629.652658372186124, 852640.974483862635680, 852652.296321458532475, 852663.618171160342172, 852674.940032967482693, 852686.261906879837625, 852697.583792897406965, 852708.905691019957885, 852720.227601247257553, 852731.549523579422385, 852742.871458016219549, 852754.193404557183385, 852765.515363202430308, 852776.837333952076733, 852788.159316805424169, 852799.481311762705445, 852810.803318823687732, 852822.125337988254614, 852833.447369256173261, 852844.769412627210841, 852856.091468101367354, 852867.413535678409971, 852878.735615358455107, 852890.057707141037099, 852901.379811026272364, 852912.701927013695240, 852924.024055103422143, 852935.346195295220241, 852946.668347588856705, 852957.990511984331533, 852969.312688481528312, 852980.634877079981379, 852991.957077779807150, 853003.279290580889210, 853014.601515483111143, 853025.923752486240119, 853037.246001589926891, 853048.568262794404291, 853059.890536099206656, 853071.212821504450403, 853082.535119009669870, 853093.857428614981472, 853105.179750320268795, 853116.502084125299007, 853127.824430029722862, 853139.146788033773191, 853150.469158136984333, 853161.791540339356288, 853173.113934640772641, 853184.436341041000560, 853195.758759539923631, 853207.081190137425438, 853218.403632833273150, 853229.726087627466768, 853241.048554519773461, 853252.371033509960398, 853263.693524598027579, 853275.016027783858590, 853286.338543067104183, 853297.661070447647944, 853308.983609925489873, 853320.306161500629969, 853331.628725172486156, 853342.951300941291265, 853354.273888806696050, 853365.596488768467680, 853376.919100826722570, 853388.241724981227890, 853399.564361231750809, 853410.887009578058496, 853422.209670020383783, 853433.532342558261007, 853444.855027191573754, 853456.177723920322023, 853467.500432744156569, 853478.823153663077392, 853490.145886676851660, 853501.468631785362959, 853512.791388988378458, 853524.114158286130987, 853535.436939678038470, 853546.759733164100908, 853558.082538744201884, 853569.405356418224983, 853580.728186185937375, 853592.051028047222644, 853603.373882001964375, 853614.696748050046153, 853626.019626190885901, 853637.342516425182112, 853648.665418752236292, 853659.988333171932027, 853671.311259684152901, 853682.634198288782500, 853693.957148985704407, 853705.280111774802208, 853716.603086655726656, 853727.926073628710583, 853739.249072693055496, 853750.572083849110641, 853761.895107096643187, 853773.218142435303889, 853784.541189865092747, 853795.864249385776930, 853807.187320997356437, 853818.510404699598439, 853829.833500492153689, 853841.156608375138603, 853852.479728348436765, 853863.802860411698930, 853875.126004565157928, 853886.449160808115266, 853897.772329140803777, 853909.095509562874213, 853920.418702074442990, 853931.741906675277278, 853943.065123364911415, 853954.388352143578231, 853965.711593010928482, 853977.034845966962166, 853988.358111011330038, 853999.681388144264929, 854011.004677365068346, 854022.327978674205951, 854033.651292070979252, 854044.974617555737495, 854056.297955127665773, 854067.621304787462577, 854078.944666534313001, 854090.268040368449874, 854101.591426289523952, 854112.914824297418818, 854124.238234392134473, 854135.561656573321670, 854146.885090840863995, 854158.208537194761448, 854169.531995634664781, 854180.855466160690412, 854192.178948772489093, 854203.502443470177241, 854214.825950253056362, 854226.149469121708535, 854237.473000075318851, 854248.796543114120141, 854260.120098237879574, 854271.443665446364321, 854282.767244739690796, 854294.090836117393337, 854305.414439579588361, 854316.738055125926621, 854328.061682756408118, 854339.385322470800020, 854350.708974268985912, 854362.032638150849380, 854373.356314116041176, 854384.680002164561301, 854396.003702296526171, 854407.327414511470124, 854418.651138809276745, 854429.974875189946033, 854441.298623653128743, 854452.622384198824875, 854463.946156826918013, 854475.269941537058912, 854486.593738329363987, 854497.917547203367576, 854509.241368159186095, 854520.565201196819544, 854531.889046315685846, 854543.212903515901417, 854554.536772797349840, 854565.860654159798287, 854577.184547603130341, 854588.508453127113171, 854599.832370731513947, 854611.156300416681916, 854622.480242181918584, 854633.804196027340367, 854645.128161952830851, 854656.452139958157204, 854667.776130043203011, 854679.100132207619026, 854690.424146451638080, 854701.748172774910927, 854713.072211177204736, 854724.396261658403091, 854735.720324218622409, 854747.044398857397027, 854758.368485574726947, 854769.692584370495752, 854781.016695244470611, 854792.340818196651526, 854803.664953226572834, 854814.989100334350951, 854826.313259519869462, 854837.637430782779120, 854848.961614123196341, 854860.285809540888295, 854871.610017035505734, 854882.934236607048661, 854894.258468255517073, 854905.582711980561726, 854916.906967782182619, 854928.231235659914091, 854939.555515613988973, 854950.879807644174434, 854962.204111750121228, 854973.528427931945771, 854984.852756189298816, 854996.177096522180364, 855007.501448930473998, 855018.825813413830474, 855030.150189972133376, 855041.474578605499119, 855052.798979313462041, 855064.123392096138559, 855075.447816953295842, 855086.772253884701058, 855098.096702890354209, 855109.421163969906047, 855120.745637123356573, 855132.070122350589372, 855143.394619651138783, 855154.719129025354050, 855166.043650472885929, 855177.368183993501589, 855188.692729587084614, 855200.017287253518589, 855211.341856992570683, 855222.666438804357313, 855233.991032688529231, 855245.315638644853607, 855256.640256673330441, 855267.964886773726903, 855279.289528946159407, 855290.614183190162294, 855301.938849505502731, 855313.263527892413549, 855324.588218350545503, 855335.912920879898593, 855347.237635480007157, 855358.562362150987610, 855369.887100892607123, 855381.211851704865694, 855392.536614587414078, 855403.861389540252276, 855415.186176563147455, 855426.510975655866787, 855437.835786818410270, 855449.160610050777905, 855460.485445352387615, 855471.810292723355815, 855483.135152163682505, 855494.460023673018441, 855505.784907251247205, 855517.109802898252383, 855528.434710613917559, 855539.759630398009904, 855551.084562250529416, 855562.409506171126850, 855573.734462159685791, 855585.059430216322653, 855596.384410340455361, 855607.709402532549575, 855619.034406791906804, 855630.359423118527047, 855641.684451512410305, 855653.009491973323748, 855664.334544501034543, 855675.659609095542692, 855686.984685756382532, 855698.309774484019727, 855709.634875277755782, 855720.959988137590699, 855732.285113063640893, 855743.610250055324286, 855754.935399112990126, 855766.260560235939920, 855777.585733424406499, 855788.910918678273447, 855800.236115997075103, 855811.561325380927883, 855822.886546829598956, 855834.211780342971906, 855845.537025920930319, 855856.862283563357778, 855868.187553269788623, 855879.512835040572099, 855890.838128875242546, 855902.163434773567133, 855913.488752735778689, 855924.814082761411555, 855936.139424850582145, 855947.464779002941214, 855958.790145218255930, 855970.115523496526293, 855981.440913837635890, 855992.766316241584718, 856004.091730707790703, 856015.417157236253843, 856026.742595827206969, 856038.068046480068006, 856049.393509195069782, 856060.718983971746638, 856072.044470809982158, 856083.369969709776342, 856094.695480670896359, 856106.021003693225794, 856117.346538776415400, 856128.672085920814425, 856139.997645125724375, 856151.323216391378082, 856162.648799717542715, 856173.974395103985444, 856185.300002550589852, 856196.625622057239525, 856207.951253623934463, 856219.276897250209004, 856230.602552936063148, 856241.928220681380481, 856253.253900486044586, 856264.579592349822633, 856275.905296272714622, 856287.231012254371308, 856298.556740294909105, 856309.882480393862352, 856321.208232551347464, 856332.533996767131612, 856343.859773040865548, 856355.185561372665688, 856366.511361762415618, 856377.837174209998921, 856389.162998715066351, 856400.488835277385078, 856411.814683897071518, 856423.140544573892839, 856434.466417307732627, 856445.792302098241635, 856457.118198945536278, 856468.444107849500142, 856479.770028809783980, 856491.095961826271378, 856502.421906898962334, 856513.747864027624018, 856525.073833212023601, 856536.399814452161081, 856547.725807747687213, 856559.051813098601997, 856570.377830504789017, 856581.703859966248274, 856593.029901482514106, 856604.355955053702928, 856615.682020679349080, 856627.008098359685391, 856638.334188094246201, 856649.660289883031510, 856660.986403725924902, 856672.312529622693546, 856683.638667573453858, 856694.964817577623762, 856706.290979635319673, 856717.617153746541589, 856728.943339910823852, 856740.269538128166460, 856751.595748398452997, 856762.921970721450634, 856774.248205097042955, 856785.574451525229961, 856796.900710005662404, 856808.226980538340285, 856819.553263123030774, 856830.879557759733871, 856842.205864447983913, 856853.532183187897317, 856864.858513979357667, 856876.184856822015718, 856887.511211715871468, 856898.837578660808504, 856910.163957656710409, 856921.490348703111522, 856932.816751800244674, 856944.143166947760619, 856955.469594145775773, 856966.796033393708058, 856978.122484691790305, 856989.448948039556853, 857000.775423437007703, 857012.101910884259269, 857023.428410380845889, 857034.754921926767565, 857046.081445521791466, 857057.407981165801175, 857068.734528858680278, 857080.061088600195944, 857091.387660390348174, 857102.714244228787720, 857114.040840115514584, 857125.367448050528765, 857136.694068033364601, 857148.020700064022094, 857159.347344142384827, 857170.674000268452801, 857182.000668441760354, 857193.327348662307486, 857204.654040929861367, 857215.980745244538411, 857227.307461605989374, 857238.634190014097840, 857249.960930468747392, 857261.287682969821617, 857272.614447517087683, 857283.941224110429175, 857295.268012749729678, 857306.594813434872776, 857317.921626165392809, 857329.248450941755436, 857340.575287763378583, 857351.902136630145833, 857363.228997542057186, 857374.555870498879813, 857385.882755500613712, 857397.209652546793222, 857408.536561637534760, 857419.863482772605494, 857431.190415951889008, 857442.517361175268888, 857453.844318442395888, 857465.171287753502838, 857476.498269108124077, 857487.825262506376021, 857499.152267947676592, 857510.479285432375036, 857521.806314960122108, 857533.133356530452147, 857544.460410143830813, 857555.787475799908862, 857567.114553498337045, 857578.441643238998950, 857589.768745021894574, 857601.095858846791089, 857612.422984713688493, 857623.750122622121125, 857635.077272572321817, 857646.404434563824907, 857657.731608596746810, 857669.058794670621864, 857680.385992785682902, 857691.713202941697091, 857703.040425138315186, 857714.367659375537187, 857725.694905653130263, 857737.022163971210830, 857748.349434329313226, 857759.676716727088206, 857771.004011165001430, 857782.331317642703652, 857793.658636159845628, 857804.985966716427356, 857816.313309312332422, 857827.640663947444409, 857838.968030621414073, 857850.295409334241413, 857861.622800085577182, 857872.950202875654213, 857884.277617704239674, 857895.605044570984319, 857906.932483475771733, 857918.259934418601915, 857929.587397399242036, 857940.914872417575680, 857952.242359473370016, 857963.569858566625044, 857974.897369696991518, 857986.224892864585854, 857997.552428069175221, 858008.879975310410373, 858020.207534588407725, 858031.535105902934447, 858042.862689253874123, 858054.190284640993923, 858065.517892064177431, 858076.845511523308232, 858088.173143018269911, 858099.500786548829637, 858110.828442114870995, 858122.156109716393985, 858133.483789352932945, 858144.811481024720706, 858156.139184731408022, 858167.466900472878478, 858178.794628249015659, 858190.122368059353903, 858201.450119904242456, 858212.777883783448488, 858224.105659696506336, 858235.433447643765248, 858246.761247624526732, 858258.089059639023617, 858269.416883687023073, 858280.744719768175855, 858292.072567882831208, 858303.400428030057810, 858314.728300210554153, 858326.056184423738159, 858337.384080669609830, 858348.711988947703503, 858360.039909258252010, 858371.367841601022519, 858382.695785975782201, 858394.023742382531054, 858405.351710820803419, 858416.679691290715709, 858428.007683792151511, 858439.335688324761577, 858450.663704888662323, 858461.991733483737335, 858473.319774109520949, 858484.647826765896752, 858495.975891452981159, 858507.303968170657754, 858518.632056918344460, 858529.960157696274109, 858541.288270504330285, 858552.616395342047326, 858563.944532209541649, 858575.272681106813252, 858586.600842033280060, 858597.929014989174902, 858609.257199974032119, 858620.585396987968124, 858631.913606030750088, 858643.241827102145180, 858654.570060202269815, 858665.898305330658332, 858677.226562487310730, 858688.554831672110595, 858699.883112885057926, 858711.211406125687063, 858722.539711393998004, 858733.868028689874336, 858745.196358013083227, 858756.524699363624677, 858767.853052741149440, 858779.181418145773932, 858790.509795577148907, 858801.838185035390779, 858813.166586519917473, 858824.495000031078234, 858835.823425568290986, 858847.151863131555729, 858858.480312720872462, 858869.808774335891940, 858881.137247976614162, 858892.465733643039130, 858903.794231334701180, 858915.122741051600315, 858926.451262793503702, 858937.779796560411341, 858949.108342352206819, 858960.436900168540888, 858971.765470009297132, 858983.094051874475554, 858994.422645763959736, 859005.751251677633263, 859017.079869615030475, 859028.408499576267786, 859039.737141561112367, 859051.065795569564216, 859062.394461601157673, 859073.723139656009153, 859085.051829733885825, 859096.380531834787689, 859107.709245958481915, 859119.037972104852088, 859130.366710273548961, 859141.695460464805365, 859153.024222678039223, 859164.352996913366951, 859175.681783170555718, 859187.010581449605525, 859198.339391750283539, 859209.668214072356932, 859220.997048415709287, 859232.325894780340604, 859243.654753166018054, 859254.983623572625220, 859266.312505999812856, 859277.641400447813794, 859288.970306916045956, 859300.299225404625759, 859311.628155913436785, 859322.957098442246206, 859334.286052991054021, 859345.615019559510984, 859356.943998147617094, 859368.272988755255938, 859379.601991381961852, 859390.931006027851254, 859402.260032692807727, 859413.589071376714855, 859424.918122079339810, 859436.247184800449759, 859447.576259540044703, 859458.905346298008226, 859470.234445073991083, 859481.563555867993273, 859492.892678679898381, 859504.221813509473577, 859515.550960356718861, 859526.880119221284986, 859538.209290103171952, 859549.538473002263345, 859560.867667918209918, 859572.196874851128086, 859583.526093800785020, 859594.855324766831473, 859606.184567749267444, 859617.513822747976519, 859628.843089762958698, 859640.172368793864734, 859651.501659840694629, 859662.830962903099135, 859674.160277981194668, 859685.489605074631982, 859696.818944183294661, 859708.148295306949876, 859719.477658445597626, 859730.807033599121496, 859742.136420767405070, 859753.465819950331934, 859764.795231147436425, 859776.124654358951375, 859787.454089584411122, 859798.783536823932081, 859810.112996077165008, 859821.442467344226316, 859832.771950624650344, 859844.101445918553509, 859855.430953225702979, 859866.760472545982338, 859878.090003879158758, 859889.419547225115821, 859900.749102583737113, 859912.078669955022633, 859923.408249338506721, 859934.737840734189376, 859946.067444142070599, 859957.397059561801143, 859968.726686993381009, 859980.056326436577365, 859991.385977891390212, 860002.715641357470304, 860014.045316834817640, 860025.375004323315807, 860036.704703822615556, 860048.034415332716890, 860059.364138853386976, 860070.693874384625815, 860082.023621926200576, 860093.353381477994844, 860104.683153039892204, 860116.012936611659825, 860127.342732193181291, 860138.672539784573019, 860150.002359385252930, 860161.332190995104611, 860172.662034614360891, 860183.991890242672525, 860195.321757879806682, 860206.651637525763363, 860217.981529180426151, 860229.311432843562216, 860240.641348514938727, 860251.971276194439270, 860263.301215882180259, 860274.631167577579618, 860285.961131280870177, 860297.291106991819106, 860308.621094710193574, 860319.951094435760751, 860331.281106168753468, 860342.611129908706062, 860353.941165655502118, 860365.271213409025222, 860376.601273169275373, 860387.931344935786910, 860399.261428708676249, 860410.591524487826973, 860421.921632273006253, 860433.251752063981257, 860444.581883860751987, 860455.912027663085610, 860467.242183470865712, 860478.572351283975877, 860489.902531102183275, 860501.232722925487906, 860512.562926753656939, 860523.893142586573958, 860535.223370424006134, 860546.553610265953466, 860557.883862112066709, 860569.214125962578692, 860580.544401816907339, 860591.874689675052650, 860603.204989537014626, 860614.535301402560435, 860625.865625271573663, 860637.195961143821478, 860648.526309019303881, 860659.856668897671625, 860671.187040778924711, 860682.517424662830308, 860693.847820549504831, 860705.178228438482620, 860716.508648329530843, 860727.839080222998746, 860739.169524118304253, 860750.499980015680194, 860761.830447914544493, 860773.160927815013565, 860784.491419716854580, 860795.821923620183952, 860807.152439524419606, 860818.482967429561540, 860829.813507335726172, 860841.144059242564254, 860852.474623150075786, 860863.805199057795107, 860875.135786965838633, 860886.466386873973534, 860897.796998782199807, 860909.127622690168209, 860920.458258597878739, 860931.788906504982151, 860943.119566411478445, 860954.450238317484036, 860965.780922222533263, 860977.111618126509711, 860988.442326029296964, 860999.773045930545777, 861011.103777830605395, 861022.434521729010157, 861033.765277625643648, 861045.096045520273037, 861056.426825412898324, 861067.757617303519510, 861079.088421191787347, 861090.419237077469006, 861101.750064960448071, 861113.080904840840958, 861124.411756718414836, 861135.742620592587627, 861147.073496463708580, 861158.404384331661277, 861169.735284195980057, 861181.066196056897752, 861192.397119913715869, 861203.728055766900070, 861215.059003615984693, 861226.389963460736908, 861237.720935301273130, 861249.051919137244113, 861260.382914968533441, 861271.713922795141116, 861283.044942616834305, 861294.375974433380179, 861305.707018244895153, 861317.038074050913565, 861328.369141851435415, 861339.700221646344289, 861351.031313435640186, 861362.362417218857445, 861373.693532995879650, 861385.024660766823217, 861396.355800531455316, 861407.686952289543115, 861419.018116040970199, 861430.349291785620153, 861441.680479523260146, 861453.011679254006594, 861464.342890977510251, 861475.674114693421870, 861487.005350401974283, 861498.336598102701828, 861509.667857795953751, 861520.999129481031559, 861532.330413158168085, 861543.661708827130497, 861554.993016487569548, 861566.324336139601655, 861577.655667782877572, 861588.987011417397298, 861600.318367042811587, 861611.649734659353271, 861622.981114266673103, 861634.312505864421837, 861645.643909452832304, 861656.975325031555258, 861668.306752600474283, 861679.638192159356549, 861690.969643708318472, 861702.301107246777974, 861713.632582774851471, 861724.964070292655379, 861736.295569799607620, 861747.627081295708194, 861758.958604781073518, 861770.290140255121514, 861781.621687718085013, 861792.953247169614770, 861804.284818609594367, 861815.616402037790976, 861826.947997454321012, 861838.279604858835228, 861849.611224251100793, 861860.942855631466955, 861872.274498999118805, 861883.606154354405589, 861894.937821696861647, 861906.269501026719809, 861917.601192343281582, 861928.932895646896213, 861940.264610937214456, 861951.596338214119896, 861962.928077477728948, 861974.259828727459535, 861985.591591963311657, 861996.923367185285315, 862008.255154393031262, 862019.586953586549498, 862030.918764765607193, 862042.250587930204347, 862053.582423079991713, 862064.914270215085708, 862076.246129335253499, 862087.578000440262258, 862098.909883529879153, 862110.241778604104184, 862121.573685662937351, 862132.905604705912992, 862144.237535733031109, 862155.569478744058870, 862166.901433739112690, 862178.233400717959739, 862189.565379680367187, 862200.897370626102202, 862212.229373555281200, 862223.561388467554934, 862234.893415362806991, 862246.225454240920953, 862257.557505101547576, 862268.889567945036106, 862280.221642770920880, 862291.553729578969069, 862302.885828369413503, 862314.217939141672105, 862325.550061895744875, 862336.882196631631814, 862348.214343349100091, 862359.546502047916874, 862370.878672728082165, 862382.210855389363132, 862393.543050031643361, 862404.875256654806435, 862416.207475258735940, 862427.539705843082629, 862438.871948408079334, 862450.204202953143977, 862461.536469478392974, 862472.868747983593494, 862484.201038468629122, 862495.533340933383442, 862506.865655377856456, 862518.197981801582500, 862529.530320204794407, 862540.862670587026514, 862552.195032948162407, 862563.527407288202085, 862574.859793606912717, 862586.192191904177889, 862597.524602179881185, 862608.857024433906190, 862620.189458665903658, 862631.521904876106419, 862642.854363064048812, 862654.186833229730837, 862665.519315372919664, 862676.851809493615292, 862688.184315591352060, 862699.516833666246384, 862710.849363718181849, 862722.181905747042038, 862733.514459752594121, 862744.847025734605268, 862756.179603693191893, 862767.512193627771921, 862778.844795538694598, 862790.177409425610676, 862801.510035288054496, 862812.842673126375303, 862824.175322940340266, 862835.507984729600139, 862846.840658494154923, 862858.173344233771786, 862869.506041948450729, 862880.838751637958921, 862892.171473302179947, 862903.504206940764561, 862914.836952553712763, 862926.169710141140968, 862937.502479702583514, 862948.835261238040403, 862960.168054747395217, 862971.500860230182298, 862982.833677686750889, 862994.166507116518915, 863005.499348519719206, 863016.832201896002516, 863028.165067245136015, 863039.497944567119703, 863050.830833861720748, 863062.163735129055567, 863073.496648368542083, 863084.829573580529541, 863096.162510764435865, 863107.495459920493886, 863118.828421048237942, 863130.161394147668034, 863141.494379218551330, 863152.827376260887831, 863164.160385274561122, 863175.493406259105541, 863186.826439214870334, 863198.159484141389839, 863209.492541038431227, 863220.825609906227328, 863232.158690744196065, 863243.491783552453853, 863254.824888330884278, 863266.158005079138093, 863277.491133797331713, 863288.824274485232309, 863300.157427142607048, 863311.490591769223101, 863322.823768365313299, 863334.156956930295564, 863345.490157464286312, 863356.823369967169128, 863368.156594438594766, 863379.489830878679641, 863390.823079287074506, 863402.156339663779363, 863413.489612008561380, 863424.822896321187727, 863436.156192601774819, 863447.489500849856995, 863458.822821065434255, 863470.156153248506598, 863481.489497398724779, 863492.822853516088799, 863504.156221600482240, 863515.489601651555859, 863526.822993669309653, 863538.156397653743625, 863549.489813604392111, 863560.823241521255113, 863572.156681404332630, 863583.490133253159001, 863594.823597067967057, 863606.157072848291136, 863617.490560594247654, 863628.824060305487365, 863640.157571982126683, 863651.491095623699948, 863662.824631230323575, 863674.158178801648319, 863685.491738337557763, 863696.825309837935492, 863708.158893302897923, 863719.492488732095808, 863730.826096125296317, 863742.159715482499450, 863753.493346803355962, 863764.826990087982267, 863776.160645336029120, 863787.494312547612935, 863798.827991722151637, 863810.161682859994471, 863821.495385960675776, 863832.829101024195552, 863844.162828050320968, 863855.496567039052024, 863866.830317990155891, 863878.164080903283320, 863889.497855778783560, 863900.831642616074532, 863912.165441414923407, 863923.499252175679430, 863934.833074897993356, 863946.166909581632353, 863957.500756226480007, 863968.834614832303487, 863980.168485399102792, 863991.502367926761508, 864002.836262415163219, 864014.170168863842264, 864025.504087272915058, 864036.838017642265186, 864048.171959971776232, 864059.505914261098951, 864070.839880510233343, 864082.173858719062991, 864093.507848887355067, 864104.841851015109569, 864116.175865102093667, 864127.509891147841699, 864138.843929152819328, 864150.177979116444476, 864161.512041038833559, 864172.846114919753745, 864184.180200759088621, 864195.514298556488939, 864206.848408312071115, 864218.182530025369488, 864229.516663696733303, 864240.850809325464070, 864252.184966911911033, 864263.519136455492117, 864274.853317956440151, 864286.187511414522305, 864297.521716829505749, 864308.855934201274067, 864320.190163529594429, 864331.524404814583249, 864342.858658055774868, 864354.192923253169283, 864365.527200406766497, 864376.861489516217262, 864388.195790581637993, 864399.530103602563031, 864410.864428578875959, 864422.198765510693192, 864433.533114397549070, 864444.867475239676423, 864456.201848036726005, 864467.536232788464986, 864478.870629494893365, 864490.205038155661896, 864501.539458771003410, 864512.873891340568662, 864524.208335864124820, 864535.542792341555469, 864546.877260772860609, 864558.211741157807410, 864569.546233496163040, 864580.880737787927501, 864592.215254032984376, 864603.549782230984420, 864614.884322382044047, 864626.218874485814013, 864637.553438542177901, 864648.888014551135711, 864660.222602512454614, 864671.557202426018193, 864682.891814291477203, 864694.226438108948059, 864705.561073878314346, 864716.895721599226817, 864728.230381271685474, 864739.565052895457484, 864750.899736470426433, 864762.234431996708736, 864773.569139473722316, 864784.903858901350759, 864796.238590279826894, 864807.573333608801477, 864818.908088888041675, 864830.242856117663905, 864841.577635297202505, 864852.912426426657476, 864864.247229506028816, 864875.582044534967281, 864886.916871513472870, 864898.251710441196337, 864909.586561318254098, 864920.921424144296907, 864932.256298919324763, 864943.591185643104836, 864954.926084315637127, 864966.260994936688803, 864977.595917505910620, 864988.930852023418993, 865000.265798489097506, 865011.600756902596913, 865022.935727263917215, 865034.270709572825581, 865045.605703829438426, 865056.940710033173673, 865068.275728184264153, 865079.610758282360621, 865090.945800327579491, 865102.280854319338687, 865113.615920257754624, 865124.950998142827302, 865136.286087974091060, 865147.621189751662314, 865158.956303475308232, 865170.291429144912399, 865181.626566760358401, 865192.961716321413405, 865204.296877827844582, 865215.632051279768348, 865226.967236676951870, 865238.302434019045904, 865249.637643306166865, 865260.972864537965506, 865272.308097714674659, 865283.643342835828662, 865294.978599901078269, 865306.313868910772726, 865317.649149864562787, 865328.984442762215622, 865340.319747603731230, 865351.655064388760366, 865362.990393117419444, 865374.325733789359219, 865385.661086404579692, 865396.996450962848030, 865408.331827464164235, 865419.667215908062644, 865431.002616294776089, 865442.338028623955324, 865453.673452895483933, 865465.008889109129086, 865476.344337265007198, 865487.679797362885438, 865499.015269402298145, 865510.350753383594565, 865521.686249306309037, 865533.021757170441560, 865544.357276975759305, 865555.692808722262271, 865567.028352409601212, 865578.363908037659712, 865589.699475606437773, 865601.035055115702562, 865612.370646565454081, 865623.706249955459498, 865635.041865285369568, 865646.377492555417120, 865657.713131765136495, 865669.048782914527692, 865680.384446003357880, 865691.720121031627059, 865703.055807999102399, 865714.391506905783899, 865725.727217751322314, 865737.062940535601228, 865748.398675258620642, 865759.734421920147724, 865771.070180520182475, 865782.405951058375649, 865793.741733534378000, 865805.077527948538773, 865816.413334300508723, 865827.749152590287849, 865839.084982817294076, 865850.420824981876649, 865861.756679083569907, 865873.092545122490264, 865884.428423098288476, 865895.764313010964543, 865907.100214860169217, 865918.436128646018915, 865929.772054368047975, 865941.107992026489228, 865952.443941620993428, 865963.779903151560575, 865975.115876617725007, 865986.451862019719556, 865997.787859357078560, 866009.123868630034849, 866020.459889838006347, 866031.795922981225885, 866043.131968059344217, 866054.468025072244927, 866065.804094019811600, 866077.140174902044237, 866088.476267718593590, 866099.812372469343245, 866111.148489154176787, 866122.484617772977799, 866133.820758325629868, 866145.156910811783746, 866156.493075231672265, 866167.829251584946178, 866179.165439871372655, 866190.501640091068111, 866201.837852243566886, 866213.174076328868978, 866224.510312347090803, 866235.846560297417454, 866247.182820180314593, 866258.519091995665804, 866269.855375742889009, 866281.191671422217041, 866292.527979033417068, 866303.864298576139845, 866315.200630050501786, 866326.536973456153646, 866337.873328793211840, 866349.209696060977876, 866360.546075260033831, 866371.882466390030459, 866383.218869450618513, 866394.555284441681579, 866405.891711363103241, 866417.228150214883499, 866428.564600996673107, 866439.901063708588481, 866451.237538350280374, 866462.574024921399541, 866473.910523422295228, 866485.247033852618188, 866496.583556212135591, 866507.920090500963852, 866519.256636718520895, 866530.593194865039550, 866541.929764940170571, 866553.266346943797544, 866564.602940875920467, 866575.939546736306511, 866587.276164524839260, 866598.612794241285883, 866609.949435885529965, 866621.286089457571507, 866632.622754957177676, 866643.959432384115644, 866655.296121738268994, 866666.632823019637726, 866677.969536228105426, 866689.306261363090016, 866700.642998425057158, 866711.979747413424775, 866723.316508328425698, 866734.653281169594266, 866745.990065936814062, 866757.326862629968673, 866768.663671249058098, 866780.000491793849505, 866791.337324264226481, 866802.674168659956194, 866814.011024981038645, 866825.347893227124587, 866836.684773398330435, 866848.021665494423360, 866859.358569515054114, 866870.695485460455529, 866882.032413330161944, 866893.369353124056943, 866904.706304842256941, 866916.043268484296277, 866927.380244050407782, 866938.717231540009379, 866950.054230953333899, 866961.391242289915681, 866972.728265549987555, 866984.065300733200274, 866995.402347839321010, 867006.739406868349761, 867018.076477819937281, 867029.413560694083571, 867040.750655490788631, 867052.087762209819630, 867063.424880850943737, 867074.762011414277367, 867086.099153899122030, 867097.436308306059800, 867108.773474634275772, 867120.110652884002775, 867131.447843055007979, 867142.785045147174969, 867154.122259160387330, 867165.459485094528645, 867176.796722949366085, 867188.133972724783234, 867199.471234420663677, 867210.808508036774583, 867222.145793572999537, 867233.483091029454954, 867244.820400405558757, 867256.157721701427363, 867267.495054916944355, 867278.832400051876903, 867290.169757106225006, 867301.507126079639420, 867312.844506972120143, 867324.181899783550762, 867335.519304513582028, 867346.856721162213944, 867358.194149729330093, 867369.531590214697644, 867380.869042618316598, 867392.206506940070540, 867403.543983179493807, 867414.881471336819232, 867426.218971411697567, 867437.556483404012397, 867448.894007313647307, 867460.231543140369467, 867471.569090884178877, 867482.906650544959120, 867494.244222122477368, 867505.581805616617203, 867516.919401027145796, 867528.257008354063146, 867539.594627597136423, 867550.932258756249212, 867562.269901831285097, 867573.607556822011247, 867584.945223728311248, 867596.282902550185099, 867607.620593287399970, 867618.958295939723030, 867630.296010507154278, 867641.633736989460886, 867652.971475386526436, 867664.309225698350929, 867675.646987924585119, 867686.984762064879760, 867698.322548119700514, 867709.660346088348888, 867720.998155970941298, 867732.335977767594159, 867743.673811477608979, 867755.011657101102173, 867766.349514638073742, 867777.687384088058025, 867789.025265451287851, 867800.363158727181144, 867811.701063916087151, 867823.038981017656624, 867834.376910031540319, 867845.714850957854651, 867857.052803796366788, 867868.390768546960317, 867879.728745209518820, 867891.066733783809468, 867902.404734269715846, 867913.742746667121537, 867925.080770975793712, 867936.418807195965201, 867947.756855326937512, 867959.094915368943475, 867970.432987321750261, 867981.771071185125038, 867993.109166959067807, 868004.447274643462151, 868015.785394238075241, 868027.123525742557831, 868038.461669157026336, 868049.799824481364340, 868061.137991715339012, 868072.476170858833939, 868083.814361911732703, 868095.152564873802476, 868106.490779745043255, 868117.829006525105797, 868129.167245214222930, 868140.505495811579749, 868151.843758317641914, 868163.182032732176594, 868174.520319054950960, 868185.858617285615765, 868197.196927424403839, 868208.535249471082352, 868219.873583425418474, 868231.211929287062958, 868242.550287056132220, 868253.888656732626259, 868265.227038316079415, 868276.565431806491688, 868287.903837203863077, 868299.242254507844336, 868310.580683718202636, 868321.919124835170805, 868333.257577858283184, 868344.596042787539773, 868355.934519622591324, 868367.273008363554254, 868378.611509010312147, 868389.950021562632173, 868401.288546020281501, 868412.627082383143716, 868423.965630651218817, 868435.304190824157558, 868446.642762902076356, 868457.981346884509549, 868469.319942771573551, 868480.658550562919118, 868491.997170258779079, 868503.335801858687773, 868514.674445362528786, 868526.013100770302117, 868537.351768081542104, 868548.690447296597995, 868560.029138414887711, 868571.367841436527669, 868582.706556361168623, 868594.045283188926987, 868605.384021919569932, 868616.722772552864626, 868628.061535088927485, 868639.400309527176432, 868650.739095867611468, 868662.077894110465422, 868673.416704255156219, 868684.755526301800273, 868696.094360249931924, 868707.433206099900417, 868718.772063851240091, 868730.110933503834531, 868741.449815057567321, 868752.788708512322046, 868764.127613867982291, 868775.466531124315225, 868786.805460281204432, 868798.144401338533498, 868809.483354296069592, 868820.822319153929129, 868832.161295911879279, 868843.500284569570795, 868854.839285127003677, 868866.178297584061511, 868877.517321940627880, 868888.856358196353540, 868900.195406351238489, 868911.534466405282728, 868922.873538358137012, 868934.212622209684923, 868945.551717959926464, 868956.890825608628802, 868968.229945155675523, 868979.569076600833796, 868990.908219943987206, 869002.247375185135752, 869013.586542323930189, 869024.925721360370517, 869036.264912294223905, 869047.604115125490353, 869058.943329853820615, 869070.282556479331106, 869081.621795001788996, 869092.961045420845039, 869104.300307736732066, 869115.639581948867999, 869126.978868057485670, 869138.318166062003002, 869149.657475962885655, 869160.996797759667970, 869172.336131452117115, 869183.675477040233091, 869195.014834523899481, 869206.354203902883455, 869217.693585176952183, 869229.032978346222080, 869240.372383410343900, 869251.711800369201228, 869263.051229222794063, 869274.390669970773160, 869285.730122613254935, 869297.069587149773724, 869308.409063580445945, 869319.748551905155182, 869331.088052123435773, 869342.427564235636964, 869353.767088241060264, 869365.106624140054919, 869376.446171932038851, 869387.785731617244892, 869399.125303195440210, 869410.464886666508391, 869421.804482030100189, 869433.144089286332019, 869444.483708434738219, 869455.823339475551620, 869467.162982408422977, 869478.502637233003043, 869489.842303949641064, 869501.181982557754964, 869512.521673057577573, 869523.861375448759645, 869535.201089731184766, 869546.540815904736519, 869557.880553969182074, 869569.220303924521431, 869580.560065770405345, 869591.899839506833814, 869603.239625133806840, 869614.579422650858760, 869625.919232058105990, 869637.259053355432115, 869648.598886542487890, 869659.938731619273312, 869671.278588585555553, 869682.618457441334613, 869693.958338186261244, 869705.298230820219032, 869716.638135343324393, 869727.978051755228080, 869739.317980055813678, 869750.657920245081186, 869761.997872322564945, 869773.337836288497783, 869784.677812142414041, 869796.017799884430133, 869807.357799514313228, 869818.697811031597666, 869830.037834436749108, 869841.377869729301892, 869852.717916909139603, 869864.057975976029411, 869875.398046929971315, 869886.738129770732485, 869898.078224498312920, 869909.418331112479791, 869920.758449612883851, 869932.098579999757931, 869943.438722272869200, 869954.778876431868412, 869966.119042476755567, 869977.459220407297835, 869988.799410223495215, 870000.139611925231293, 870011.479825512156822, 870022.820050984271802, 870034.160288341343403, 870045.500537583371624, 870056.840798710123636, 870068.181071721483022, 870079.521356617333367, 870090.861653397558257, 870102.201962061924860, 870113.542282610200346, 870124.882615042501129, 870136.222959358594380, 870147.563315558014438, 870158.903683641226962, 870170.244063607533462, 870181.584455457166769, 870192.924859189777635, 870204.265274805366062, 870215.605702303815633, 870226.946141684660688, 870238.286592948134057, 870249.627056094002910, 870260.967531121801585, 870272.308018031879328, 870283.648516823886894, 870294.989027497475035, 870306.329550052993000, 870317.670084489742294, 870329.010630808072165, 870340.351189007516950, 870351.691759087960236, 870363.032341049285606, 870374.372934891493060, 870385.713540614233352, 870397.054158217622899, 870408.394787701545283, 870419.735429065302014, 870431.076082309358753, 870442.416747433366254, 870453.757424437091686, 870465.098113320535049, 870476.438814083579928, 870487.779526725877076, 870499.120251247426495, 870510.460987648111768, 870521.801735927700065, 870533.142496086191386, 870544.483268123236485, 870555.824052038835362, 870567.164847832871601, 870578.505655505228788, 870589.846475055441260, 870601.187306483741850, 870612.528149790014140, 870623.869004973676056, 870635.209872035076842, 870646.550750973867252, 870657.891641789930873, 870669.232544483151287, 870680.573459053412080, 870691.914385500364006, 870703.255323824007064, 870714.596274024108425, 870725.937236100900918, 870737.278210053686053, 870748.619195882813074, 870759.960193587932736, 870771.301203168695793, 870782.642224625451490, 870793.983257957501337, 870805.324303165194578, 870816.665360248065554, 870828.006429205997847, 870839.347510038991459, 870850.688602746929973, 870862.029707329464145, 870873.370823786710389, 870884.711952118435875, 870896.053092324291356, 870907.394244404509664, 870918.735408358625136, 870930.076584186404943, 870941.417771888081916, 870952.758971463539638, 870964.100182912196033, 870975.441406234283932, 870986.782641429570504, 870998.123888497822918, 871009.465147439041175, 871020.806418252992444, 871032.147700939443894, 871043.488995498279110, 871054.830301929614507, 871066.171620233217254, 871077.512950408738106, 871088.854292456177063, 871100.195646375417709, 871111.537012166227214, 871122.878389828605577, 871134.219779362087138, 871145.561180767021142, 871156.902594042825513, 871168.244019189616665, 871179.585456207161769, 871190.926905095460825, 871202.268365854164585, 871213.609838483273052, 871224.951322982669808, 871236.292819351889193, 871247.634327591164038, 871258.975847700261511, 871270.317379678832367, 871281.658923526993021, 871293.000479244743474, 871304.342046831501648, 871315.683626287383959, 871327.025217612273991, 871338.366820805938914, 871349.708435868145898, 871361.050062799127772, 871372.391701598186046, 871383.733352265553549, 871395.075014801113866, 871406.416689204634167, 871417.758375475998037, 871429.100073614856228, 871440.441783621441573, 871451.783505495404825, 871463.125239236513153, 871474.466984844882973, 871485.808742320048623, 871497.150511662010103, 871508.492292870883830, 871519.834085946204141, 871531.175890887854621, 871542.517707695835270, 871553.859536370029673, 871565.201376910204999, 871576.543229316128418, 871587.885093587683514, 871599.226969724986702, 871610.568857727455907, 871621.910757595556788, 871633.252669328590855, 871644.594592926674522, 871655.936528389458545, 871667.278475717292167, 871678.620434909360483, 871689.962405966129154, 871701.304388887016103, 871712.646383672021329, 871723.988390321144834, 871735.330408834153786, 871746.672439210931771, 871758.014481451129541, 871769.356535554979928, 871780.698601522133686, 871792.040679352474399, 871803.382769045652822, 871814.724870601785369, 871826.066984020755626, 871837.409109302097932, 871848.751246446161531, 871860.093395452480763, 871871.435556321055628, 871882.777729051536880, 871894.119913644040935, 871905.462110098218545, 871916.804318414186127, 871928.146538591478020, 871939.488770630210638, 871950.831014529801905, 871962.173270290833898, 871973.515537912608124, 871984.857817395357415, 871996.200108738499694, 872007.542411942267790, 872018.884727006428875, 872030.227053930633701, 872041.569392715115100, 872052.911743359407410, 872064.254105863510631, 872075.596480227308348, 872086.938866450567730, 872098.281264533172362, 872109.623674475122243, 872120.966096276184544, 872132.308529936010018, 872143.650975454831496, 872154.993432832299732, 872166.335902068181895, 872177.678383162361570, 872189.020876114955172, 872200.363380925729871, 872211.705897594336420, 872223.048426120774820, 872234.390966504928656, 872245.733518746681511, 872257.076082845800556, 872268.418658802052960, 872279.761246615671553, 872291.103846286074258, 872302.446457813261077, 872313.789081197348423, 872325.131716437870637, 872336.474363534944132, 872347.817022488103248, 872359.159693297580816, 872370.502375963027589, 872381.845070484210737, 872393.187776861246675, 872404.530495093669742, 872415.873225181712769, 872427.215967124910094, 872438.558720923261717, 872449.901486576767638, 872461.244264085195027, 872472.587053448078223, 872483.929854665882885, 872495.272667737910524, 872506.615492664161138, 872517.958329444751143, 872529.301178079447709, 872540.644038567785174, 872551.986910910112783, 872563.329795105964877, 872574.672691155341454, 872586.015599057893269, 872597.358518813736737, 872608.701450422522612, 872620.044393884250894, 872631.387349198805168, 872642.730316365952604, 872654.073295385693200, 872665.416286257677712, 872676.759288981789723, 872688.102303558145650, 872699.445329986396246, 872710.788368266192265, 872722.131418397766538, 872733.474480380886234, 872744.817554215434939, 872756.160639900946990, 872767.503737437771633, 872778.846846825443208, 872790.189968064078130, 872801.533101153210737, 872812.876246092957444, 872824.219402882969007, 872835.562571523245424, 872846.905752013553865, 872858.248944353777915, 872869.592148544033989, 872880.935364583856426, 872892.278592473245226, 872903.621832211967558, 872914.965083800023422, 872926.308347237063572, 872937.651622523204423, 872948.994909658213146, 872960.338208641740493, 872971.681519473902881, 872983.024842154467478, 872994.368176683434285, 873005.711523060337640, 873017.054881285410374, 873028.398251358186826, 873039.741633278783411, 873051.085027046734467, 873062.428432662505656, 873073.771850125049241, 873085.115279435180128, 873096.458720591966994, 873107.802173595991917, 873119.145638446439989, 873130.489115143660456, 873141.832603687187657, 873153.176104077138007, 873164.519616313278675, 873175.863140395376831, 873187.206676323316060, 873198.550224097096361, 873209.893783716368489, 873221.237355181248859, 873232.580938491271809, 873243.924533646670170, 873255.268140646978281, 873266.611759492196143, 873277.955390182323754, 873289.299032717011869, 873300.642687096027657, 873311.986353319487534, 873323.330031387042254, 873334.673721298924647, 873346.017423054552637, 873357.361136654042639, 873368.704862097045407, 873380.048599383560941, 873391.392348513589241, 873402.736109486781061, 873414.079882302787155, 873425.423666962073185, 873436.767463464057073, 873448.111271808622405, 873459.455091995769180, 873470.798924025264569, 873482.142767897108570, 873493.486623610951938, 873504.830491166794673, 873516.174370564403944, 873527.518261803546920, 873538.862164884456433, 873550.206079806783237, 873561.550006570178084, 873572.893945174873807, 873584.237895620404743, 873595.581857906770892, 873606.925832033972256, 873618.269818001659587, 873629.613815809716471, 873640.957825457910076, 873652.301846946589649, 873663.645880274940282, 873674.989925443427637, 873686.333982451469637, 873697.678051299066283, 873709.022131986101158, 873720.366224512574263, 873731.710328878019936, 873743.054445082554594, 873754.398573125828989, 873765.742713008075953, 873777.086864728596993, 873788.431028287857771, 873799.775203685392626, 873811.119390921085142, 873822.463589994702488, 873833.807800906361081, 873845.152023655711673, 873856.496258242754266, 873867.840504666906781, 873879.184762928751297, 873890.529033027705736, 873901.873314963770099, 873913.217608736711554, 873924.561914346297272, 873935.906231792527251, 873947.250561075517908, 873958.594902194570750, 873969.939255149918608, 873981.283619941212237, 873992.627996568568051, 874003.972385031869635, 874015.316785330534913, 874026.661197465029545, 874038.005621434655041, 874049.350057239527814, 874060.694504879531451, 874072.038964354433119, 874083.383435664232820, 874094.727918808581308, 874106.072413787594996, 874117.416920600808226, 874128.761439248453826, 874140.105969730298966, 874151.450512045994401, 874162.795066195423715, 874174.139632178703323, 874185.484209995367564, 874196.828799645649269, 874208.173401128849946, 874219.518014445435256, 874230.862639595055953, 874242.207276577362791, 874253.551925392472185, 874264.896586040151305, 874276.241258520283736, 874287.585942832636647, 874298.930638977093622, 874310.275346953887492, 874321.620066761970520, 874332.964798402274027, 874344.309541873983108, 874355.654297177214175, 874366.999064311617985, 874378.343843277310953, 874389.688634074060246, 874401.033436701633036, 874412.378251159912907, 874423.723077448899858, 874435.067915568244644, 874446.412765518063679, 874457.757627297891304, 874469.102500907960348, 874480.447386347805150, 874491.792283617425710, 874503.137192716705613, 874514.482113645528443, 874525.827046403661370, 874537.171990990987979, 874548.516947407275438, 874559.861915652523749, 874571.206895726849325, 874582.551887629553676, 874593.896891360753216, 874605.241906920447946, 874616.586934308405034, 874627.931973524391651, 874639.277024568291381, 874650.622087440104224, 874661.967162139248103, 874673.312248666305095, 874684.657347020576708, 874696.002457202179357, 874707.347579210996628, 874718.692713046562858, 874730.037858709110878, 874741.383016198291443, 874752.728185514104553, 874764.073366656200960, 874775.418559624580666, 874786.763764419127256, 874798.108981039724313, 874809.454209486139007, 874820.799449758138508, 874832.144701855955645, 874843.489965778891928, 874854.835241527413018, 874866.180529100936837, 874877.525828499579802, 874888.871139722876251, 874900.216462771175429, 874911.561797643895261, 874922.907144341035746, 874934.252502862713300, 874945.597873208462261, 874956.943255378166214, 874968.288649371825159, 874979.634055189206265, 874990.979472830193117, 875002.324902294669300, 875013.670343582518399, 875025.015796693507582, 875036.361261627636850, 875047.706738384789787, 875059.052226964500733, 875070.397727366886102, 875081.743239591829479, 875093.088763638981618, 875104.434299508575350, 875115.779847200028598, 875127.125406713574193, 875138.470978048746474, 875149.816561205894686, 875161.162156184320338, 875172.507762984256260, 875183.853381605353206, 875195.199012047494762, 875206.544654310680926, 875217.890308394562453, 875229.235974299139343, 875240.581652024411596, 875251.927341570029967, 875263.273042935878038, 875274.618756121839397, 875285.964481127797626, 875297.310217953636311, 875308.655966599122621, 875320.001727064256556, 875331.347499348688871, 875342.693283452419564, 875354.039079375332221, 875365.384887117194012, 875376.730706678121351, 875388.076538057532161, 875399.422381255659275, 875410.768236272153445, 875422.114103107014671, 875433.459981760010123, 875444.805872231023386, 875456.151774520054460, 875467.497688626637682, 875478.843614550889470, 875490.189552292576991, 875501.535501851700246, 875512.881463228026405, 875524.227436421322636, 875535.573421431588940, 875546.919418258476071, 875558.265426902216859, 875569.611447362229228, 875580.957479638629593, 875592.303523731301539, 875603.649579640128650, 875614.995647364761680, 875626.341726905200630, 875637.687818261212669, 875649.033921432914212, 875660.380036419839598, 875671.726163222221658, 875683.072301839478314, 875694.418452271725982, 875705.764614518848248, 875717.110788580612279, 875728.456974456901662, 875739.803172147599980, 875751.149381652590819, 875762.495602971641347, 875773.841836104751565, 875785.188081051688641, 875796.534337812103331, 875807.880606386228465, 875819.226886773831211, 875830.573178974678740, 875841.919482988654636, 875853.265798815758899, 875864.612126455642283, 875875.958465908071958, 875887.304817173280753, 875898.651180250803009, 875909.997555140638724, 875921.343941842671484, 875932.690340356784873, 875944.036750682862476, 875955.383172820438631, 875966.729606769862585, 875978.076052530552261, 875989.422510102740489, 876000.768979485961609, 876012.115460680332035, 876023.461953685502522, 876034.808458501473069, 876046.154975128243677, 876057.501503565348685, 876068.848043812788092, 876080.194595870445482, 876091.541159738204442, 876102.887735415948555, 876114.234322903328575, 876125.580922200460918, 876136.927533307112753, 876148.274156223051250, 876159.620790948392823, 876170.967437482671812, 876182.314095826004632, 876193.660765978158452, 876205.007447939016856, 876216.354141708230600, 876227.700847286032513, 876239.047564672073349, 876250.394293866003864, 876261.741034868056886, 876273.087787677999586, 876284.434552295715548, 876295.781328720855527, 876307.128116953535937, 876318.474916993407533, 876329.821728840353899, 876341.168552494375035, 876352.515387955238111, 876363.862235222826712, 876375.209094297140837, 876386.555965177598409, 876397.902847864548676, 876409.249742357758805, 876420.596648656995967, 876431.943566762027331, 876443.290496672736481, 876454.637438389007002, 876465.984391910955310, 876477.331357238115743, 876488.678334370488301, 876500.025323307840154, 876511.372324050287716, 876522.719336597365327, 876534.066360949189402, 876545.413397105410695, 876556.760445065912791, 876568.107504830812104, 876579.454576399642974, 876590.801659772288986, 876602.148754949099384, 876613.495861929259263, 876624.842980713234283, 876636.190111300325952, 876647.537253690767102, 876658.884407884324901, 876670.231573880766518, 876681.578751680091955, 876692.925941281951964, 876704.273142686462961, 876715.620355893392116, 876726.967580902623013, 876738.314817713922821, 876749.662066327175125, 876761.009326742379926, 876772.356598959304392, 876783.703882977832109, 876795.051178797613829, 876806.398486418765970, 876817.745805840939283, 876829.093137064250186, 876840.440480088465847, 876851.787834913353436, 876863.135201538912952, 876874.482579964795150, 876885.829970191116445, 876897.177372217644006, 876908.524786044145003, 876919.872211670503020, 876931.219649096601643, 876942.567098322324455, 876953.914559347671457, 876965.262032172176987, 876976.609516795957461, 876987.957013218896464, 876999.304521440644749, 877010.652041461085901, 877021.999573280336335, 877033.347116898046806, 877044.694672313984483, 877056.042239528382197, 877067.389818540774286, 877078.737409351160750, 877090.085011959192343, 877101.432626365101896, 877112.780252568307333, 877124.127890569157898, 877135.475540367071517, 877146.823201962281018, 877158.170875354204327, 877169.518560543190688, 877180.866257528774440, 877192.213966310839169, 877203.561686889617704, 877214.909419264411554, 877226.257163435337134, 877237.604919402394444, 877248.952687165234238, 877260.300466723856516, 877271.648258077912033, 877282.996061227633618, 877294.343876172439195, 877305.691702912561595, 877317.039541447651573, 877328.387391777709126, 877339.735253902385011, 877351.083127821679227, 877362.431013535591774, 877373.778911043773405, 877385.126820345991291, 877396.474741442361847, 877407.822674332768656, 877419.170619016862474, 877430.518575494526885, 877441.866543765645474, 877453.214523830218241, 877464.562515688012354, 877475.910519338794984, 877487.258534782682545, 877498.606562019209377, 877509.954601048491895, 877521.302651870297268, 877532.650714484509081, 877543.998788890894502, 877555.346875089453533, 877566.694973079953343, 877578.043082862161100, 877589.391204436193220, 877600.739337801700458, 877612.087482958682813, 877623.435639906791039, 877634.783808646257967, 877646.131989176617935, 877657.480181497754529, 877668.828385609784164, 877680.176601512241177, 877691.524829205125570, 877702.873068688437343, 877714.221319961827248, 877725.569583025178872, 877736.917857878375798, 877748.266144521418028, 877759.614442953956313, 877770.962753176223487, 877782.311075187521055, 877793.659408988198265, 877805.007754577905871, 877816.356111956411041, 877827.704481123830192, 877839.052862079697661, 877850.401254824129865, 877861.749659356893972, 877873.098075677989982, 877884.446503786952235, 877895.794943684129976, 877907.143395368941128, 877918.491858841385692, 877929.840334101463668, 877941.188821148825809, 877952.537319983355701, 877963.885830605053343, 877975.234353013802320, 877986.582887209253386, 877997.931433191406541, 878009.279990960261784, 878020.628560515353456, 878031.977141856797971, 878043.325734984362498, 878054.674339897930622, 878066.022956597036682, 878077.371585082146339, 878088.720225352793932, 878100.068877408979461, 878111.417541250353679, 878122.766216877033003, 878134.114904288551770, 878145.463603485026397, 878156.812314466224052, 878168.161037232028320, 878179.509771782089956, 878190.858518116641790, 878202.207276235450990, 878213.556046138401143, 878224.904827825143002, 878236.253621295560151, 878247.602426549652591, 878258.951243587187491, 878270.300072408164851, 878281.648913012351841, 878292.997765399632044, 878304.346629569656216, 878315.695505522657186, 878327.044393258285709, 878338.393292776425369, 878349.742204076843336, 878361.091127159656025, 878372.440062024514191, 878383.789008671534248, 878395.137967100134119, 878406.486937310430221, 878417.835919302189723, 878429.184913075529039, 878440.533918630098924, 878451.882935965782963, 878463.231965082464740, 878474.581005980027840, 878485.930058658239432, 878497.279123117099516, 878508.628199356258847, 878519.977287375950254, 878531.326387175591663, 878542.675498755183071, 878554.024622114957310, 878565.373757254215889, 878576.722904173308052, 878588.072062871651724, 878599.421233349363320, 878610.770415606442839, 878622.119609642424621, 878633.468815457308665, 878644.818033050862141, 878656.167262423201464, 878667.516503573977388, 878678.865756503073499, 878690.215021210489795, 878701.564297695993446, 878712.913585959351622, 878724.262886000564322, 878735.612197819398716, 878746.961521415854804, 878758.310856789466925, 878769.660203940467909, 878781.009562868508510, 878792.358933573588729, 878803.708316055592149, 878815.057710314053111, 878826.407116349320859, 878837.756534160813317, 878849.105963748646900, 878860.455405112588778, 878871.804858252522536, 878883.154323168331757, 878894.503799859900028, 878905.853288326994516, 878917.202788569615223, 878928.552300587529317, 878939.901824380503967, 878951.251359948655590, 878962.600907291402109, 878973.950466409209184, 878985.300037301378325, 878996.649619968142360, 879007.999214409268461, 879019.348820624640211, 879030.698438613908365, 879042.048068377305754, 879053.397709914366715, 879064.747363225091249, 879076.097028309246525, 879087.446705166948959, 879098.796393797500059, 879110.146094201481901, 879121.495806378195994, 879132.845530327875167, 879144.195266050170176, 879155.545013544964604, 879166.894772812258452, 879178.244543851702474, 879189.594326663296670, 879200.944121246924624, 879212.293927602237090, 879223.643745729234070, 879234.993575627915561, 879246.343417298165150, 879257.693270739400759, 879269.043135951971635, 879280.393012935528532, 879291.742901689838618, 879303.092802214901894, 879314.442714510718361, 879325.792638576705940, 879337.142574413213879, 879348.492522020009346, 879359.842481396626681, 879371.192452543182299, 879382.542435459559783, 879393.892430145526305, 879405.242436600965448, 879416.592454825760797, 879427.942484819912352, 879439.292526582721621, 879450.642580114887096, 879461.992645415593870, 879473.342722485074773, 879484.692811322980560, 879496.042911929427646, 879507.393024303950369, 879518.743148446548730, 879530.093284357339144, 879541.443432035623118, 879552.793591481749900, 879564.143762695370242, 879575.493945676484145, 879586.844140424858779, 879598.194346940377727, 879609.544565222924575, 879620.894795272150077, 879632.245037088170648, 879643.595290670753457, 879654.945556019898504, 879666.295833135023713, 879677.646122016478330, 879688.996422664029524, 879700.346735077560879, 879711.697059256606735, 879723.047395201516338, 879734.397742911591195, 879745.748102387180552, 879757.098473627935164, 879768.448856633738615, 879779.799251404474489, 879791.149657939793542, 879802.500076240045018, 879813.850506304414012, 879825.200948133482598, 879836.551401726785116, 879847.901867083972320, 879859.252344205277041, 879870.602833090233617, 879881.953333738958463, 879893.303846151218750, 879904.654370326781645, 879916.004906265530735, 879927.355453967466019, 879938.706013432471082, 879950.056584660429507, 879961.407167650875635, 879972.757762403925881, 879984.108368919463828, 879995.458987197140232, 880006.809617237071507, 880018.160259038791992, 880029.510912602650933, 880040.861577928182669, 880052.212255015387200, 880063.562943863915280, 880074.913644473766908, 880086.264356844825670, 880097.615080976975150, 880108.965816869982518, 880120.316564523731358, 880131.667323938105255, 880143.018095112987794, 880154.368878048029728, 880165.719672743463889, 880177.070479199057445, 880188.421297414461151, 880199.772127389675006, 880211.122969124466181, 880222.473822619067505, 880233.824687872780487, 880245.175564885605127, 880256.526453657774255, 880267.877354188938625, 880279.228266478865407, 880290.579190527438186, 880301.930126334540546, 880313.281073900172487, 880324.632033223984763, 880335.983004305977374, 880347.333987145917490, 880358.684981743688695, 880370.035988099290989, 880381.387006212491542, 880392.738036083057523, 880404.089077710872516, 880415.440131095936522, 880426.791196238016710, 880438.142273136996664, 880449.493361792759970, 880460.844462205073796, 880472.195574373705313, 880483.546698298887350, 880494.897833980270661, 880506.248981417738833, 880517.600140611059032, 880528.951311560114846, 880540.302494264906272, 880551.653688725200482, 880563.004894940997474, 880574.356112911715172, 880585.707342637586407, 880597.058584118494764, 880608.409837354323827, 880619.761102344724350, 880631.112379089696333, 880642.463667589123361, 880653.814967842656188, 880665.166279850527644, 880676.517603612272069, 880687.868939127889462, 880699.220286397146992, 880710.571645420044661, 880721.923016196233220, 880733.274398726061918, 880744.625793008832261, 880755.977199044660665, 880767.328616833314300, 880778.680046374793164, 880790.031487668748014, 880801.382940715295263, 880812.734405514085665, 880824.085882065119222, 880835.437370368163101, 880846.788870423217304, 880858.140382230048999, 880869.491905788541771, 880880.843441098346375, 880892.194988159812056, 880903.546546972240321, 880914.898117535864003, 880926.249699850450270, 880937.601293915766291, 880948.952899731812067, 880960.304517298354767, 880971.656146615394391, 880983.007787682581693, 880994.359440500033088, 881005.711105067282915, 881017.062781384680420, 881028.414469451410696, 881039.766169267939404, 881051.117880833684467, 881062.469604148878716, 881073.821339213289320, 881085.173086026683450, 881096.524844588944688, 881107.876614899956621, 881119.228396959602833, 881130.580190767650492, 881141.931996323983185, 881153.283813628717326, 881164.635642681154422, 881175.987483481643721, 881187.339336030068807, 881198.691200325964019, 881210.043076369445771, 881221.394964160397649, 881232.746863698237576, 881244.098774983547628, 881255.450698015629314, 881266.802632794482633, 881278.154579319874756, 881289.506537591922097, 881300.858507610508241, 881312.210489375167526, 881323.562482886132784, 881334.914488142938353, 881346.266505145584233, 881357.618533894070424, 881368.970574387931265, 881380.322626627399586, 881391.674690612009726, 881403.026766341761686, 881414.378853816655464, 881425.730953036341816, 881437.083064000937156, 881448.435186709859408, 881459.787321163574234, 881471.139467361383140, 881482.491625303286128, 881493.843794989399612, 881505.195976419374347, 881516.548169593093917, 881527.900374510558322, 881539.252591171534732, 881550.604819575673901, 881561.957059723325074, 881573.309311613906175, 881584.661575247417204, 881596.013850623741746, 881607.366137742763385, 881618.718436604249291, 881630.070747208199464, 881641.423069554381073, 881652.775403642677702, 881664.127749473089352, 881675.480107045150362, 881686.832476358977146, 881698.184857414453290, 881709.537250211229548, 881720.889654749538749, 881732.242071028682403, 881743.594499048893340, 881754.946938810171559, 881766.299390312051401, 881777.651853554649279, 881789.004328537615947, 881800.356815260951407, 881811.709313724422827, 881823.061823928146623, 881834.414345871540718, 881845.766879554721527, 881857.119424977572635, 881868.471982139977627, 881879.824551041703671, 881891.177131682750769, 881902.529724062886089, 881913.882328181876801, 881925.234944039722905, 881936.587571636307985, 881947.940210971282795, 881959.292862044763751, 881970.645524856285192, 881981.998199406196363, 881993.350885693915188, 882004.703583719558083, 882016.056293483008631, 882027.409014983917587, 882038.761748222284950, 882050.114493197877891, 882061.467249910696410, 882072.820018360740505, 882084.172798547195271, 882095.525590470642783, 882106.878394130733795, 882118.231209527468309, 882129.584036660380661, 882140.936875529354438, 882152.289726134506054, 882163.642588475486264, 882174.995462552411482, 882186.348348364932463, 882197.701245912699960, 882209.054155196063221, 882220.407076214556582, 882231.760008968296461, 882243.112953456817195, 882254.465909680351615, 882265.818877638434060, 882277.171857331180945, 882288.524848758243024, 882299.877851919503883, 882311.230866814847104, 882322.583893444389105, 882333.936931807664223, 882345.289981904672459, 882356.643043735297397, 882367.996117299306206, 882379.349202596582472, 882390.702299627242610, 882402.055408390704542, 882413.408528887084685, 882424.761661116150208, 882436.114805077901110, 882447.467960772220977, 882458.821128198760562, 882470.174307357519865, 882481.527498248498887, 882492.880700871115550, 882504.233915225719102, 882515.587141312076710, 882526.940379129722714, 882538.293628678773530, 882549.646889959112741, 882561.000162970507517, 882572.353447712841444, 882583.706744186114520, 882595.060052390210330, 882606.413372324546799, 882617.766703989473172, 882629.120047384640202, 882640.473402509815060, 882651.826769365230575, 882663.180147950304672, 882674.533538265153766, 882685.886940309545025, 882697.240354083594866, 882708.593779586721212, 882719.947216819156893, 882731.300665780552663, 882742.654126470908523, 882754.007598889875226, 882765.361083037685603, 882776.714578913757578, 882788.068086518323980, 882799.421605851035565, 882810.775136911892332, 882822.128679700661451, 882833.482234217226505, 882844.835800461471081, 882856.189378433162346, 882867.542968132416718, 882878.896569558768533, 882890.250182712101378, 882901.603807592531666, 882912.957444199826568, 882924.311092533753254, 882935.664752594311722, 882947.018424381385557, 882958.372107894625515, 882969.725803134031594, 882981.079510099487379, 882992.433228790760040, 883003.786959207733162, 883015.140701350290328, 883026.494455218431540, 883037.848220811807550, 883049.201998130418360, 883060.555787173914723, 883071.909587942645885, 883083.263400435796939, 883094.617224653949961, 883105.971060596406460, 883117.324908262933604, 883128.678767654113472, 883140.032638769247569, 883151.386521608335897, 883162.740416171145625, 883174.094322457793169, 883185.448240467812866, 883196.802170201321132, 883208.156111658085138, 883219.510064837872051, 883230.864029740681872, 883242.218006366398185, 883253.571994714904577, 883264.925994785735384, 883276.280006579123437, 883287.634030094952323, 883298.988065332872793, 883310.342112292768434, 883321.696170974522829, 883333.050241378019564, 883344.404323503258638, 883355.758417349774390, 883367.112522917683236, 883378.466640206985176, 883389.820769217098132, 883401.174909948371351, 883412.529062400339171, 883423.883226572885178, 883435.237402466009371, 883446.591590079362504, 883457.945789413177408, 883469.300000466872007, 883480.654223240679130, 883492.008457734249532, 883503.362703947583213, 883514.716961880447343, 883526.071231532725506, 883537.425512904184870, 883548.779805994941853, 883560.134110804647207, 883571.488427333184518, 883582.842755580320954, 883594.197095546289347, 883605.551447230507620, 883616.905810633092187, 883628.260185753926635, 883639.614572592778131, 883650.968971149530262, 883662.323381423950195, 883673.677803416270763, 883685.032237125909887, 883696.386682552634738, 883707.741139696910977, 883719.095608558272943, 883730.450089136487804, 883741.804581431555562, 883753.159085443243384, 883764.513601171318442, 883775.868128616129979, 883787.222667776979506, 883798.577218653983437, 883809.931781246908940, 883821.286355555639602, 883832.640941580175422, 883843.995539320283569, 883855.350148775847629, 883866.704769946634769, 883878.059402832528576, 883889.414047433645464, 883900.768703749403358, 883912.123371780151501, 883923.478051525307819, 883934.832742985105142, 883946.187446159077808, 883957.542161047342233, 883968.896887649549171, 883980.251625965815037, 883991.606375995907001, 884002.961137739592232, 884014.315911196754314, 884025.670696367276832, 884037.025493251043372, 884048.380301847704686, 884059.735122157726437, 884071.089954180293716, 884082.444797915639356, 884093.799653363530524, 884105.154520523850806, 884116.509399396483786, 884127.864289981196634, 884139.219192277989350, 884150.574106286629103, 884161.929032006766647, 884173.283969438634813, 884184.638918582000770, 884195.993879436748102, 884207.348852002643980, 884218.703836279571988, 884230.058832267415710, 884241.413839965942316, 884252.768859375268221, 884264.123890494811349, 884275.478933324920945, 884286.833987865247764, 884298.189054115558974, 884309.544132075854577, 884320.899221745901741, 884332.254323125700466, 884343.609436215134338, 884354.964561013854109, 884366.319697521626949, 884377.674845738918521, 884389.030005664797500, 884400.385177299729548, 884411.740360643365420, 884423.095555695705116, 884434.450762456166558, 884445.805980925098993, 884457.161211102386005, 884468.516452987445518, 884479.871706580510363, 884491.226971881231293, 884502.582248889608309, 884513.937537605524994, 884525.292838028515689, 884536.648150159046054, 884548.003473996417597, 884559.358809540979564, 884570.714156792149879, 884582.069515750044957, 884593.424886414315552, 884604.780268785078079, 884616.135662862099707, 884627.491068645147607, 884638.846486134221777, 884650.201915328972973, 884661.557356229634024, 884672.912808835739270, 884684.268273147405125, 884695.623749164282344, 884706.979236886370927, 884718.334736313205212, 884729.690247445134446, 884741.045770281692967, 884752.401304822880775, 884763.756851068697870, 884775.112409018678591, 884786.467978672822937, 884797.823560031130910, 884809.179153093253262, 884820.534757859189995, 884831.890374328708276, 884843.246002501924522, 884854.601642378256656, 884865.957293957937509, 884877.312957240617834, 884888.668632226414047, 884900.024318914976902, 884911.380017306189984, 884922.735727400053293, 884934.091449196217582, 884945.447182694682851, 884956.802927895332687, 884968.158684797701426, 884979.514453402138315, 884990.870233708294109, 885002.226025716052391, 885013.581829425413162, 885024.937644835910760, 885036.293471947545186, 885047.649310760316439, 885059.005161273875274, 885070.361023488221690, 885081.716897403122857, 885093.072783018811606, 885104.428680334589444, 885115.784589350689203, 885127.140510066994466, 885138.496442483039573, 885149.852386598940939, 885161.208342414465733, 885172.564309929730371, 885183.920289144152775, 885195.276280057965778, 885206.632282670703717, 885217.988296982599422, 885229.344322993303649, 885240.700360702699982, 885252.056410110788420, 885263.412471217336133, 885274.768544022110291, 885286.124628524878062, 885297.480724725872278, 885308.836832624743693, 885320.192952221259475, 885331.549083515419625, 885342.905226507107727, 885354.261381196090952, 885365.617547582369298, 885376.973725665709935, 885388.329915445880033, 885399.686116922996007, 885411.042330096592195, 885422.398554966901429, 885433.754791533341631, 885445.111039796145633, 885456.467299755197018, 885467.823571410146542, 885479.179854760877788, 885490.536149807274342, 885501.892456549336202, 885513.248774986830540, 885524.605105119640939, 885535.961446947534569, 885547.317800470278598, 885558.674165688105859, 885570.030542600667104, 885581.386931207845919, 885592.743331509409472, 885604.099743505474180, 885615.456167195574380, 885626.812602579826489, 885638.169049657997675, 885649.525508429971524, 885660.881978895398788, 885672.238461054395884, 885683.594954906846397, 885694.951460452633910, 885706.307977691409178, 885717.664506623288617, 885729.021047247922979, 885740.377599565079436, 885751.734163574990816, 885763.090739277307875, 885774.447326671914198, 885785.803925758460537, 885797.160536537063308, 885808.517159007722512, 885819.873793170088902, 885831.230439023929648, 885842.587096569361165, 885853.943765806034207, 885865.300446733948775, 885876.657139352872036, 885888.013843662687577, 885899.370559663278982, 885910.727287354529835, 885922.084026736440137, 885933.440777808427811, 885944.797540570958517, 885956.154315023450181, 885967.511101165902801, 885978.867898998083547, 885990.224708520108834, 886001.581529731513001, 886012.938362632412463, 886024.295207222574390, 886035.652063501998782, 886047.008931470219977, 886058.365811127470806, 886069.722702473285608, 886081.079605507897213, 886092.436520230839960, 886103.793446642230265, 886115.150384741718881, 886126.507334529072978, 886137.864296004525386, 886149.221269167726859, 886160.578254018560983, 886171.935250556911342, 886183.292258782661520, 886194.649278695578687, 886206.006310295662843, 886217.363353582564741, 886228.720408556400798, 886240.077475216821767, 886251.434553563711233, 886262.791643597185612, 886274.148745316779241, 886285.505858722608536, 886296.862983814440668, 886308.220120592275634, 886319.577269055647776, 886330.934429204673506, 886342.291601039003581, 886353.648784558754414, 886365.005979763576761, 886376.363186653587036, 886387.720405228435993, 886399.077635488123633, 886410.434877432417125, 886421.792131061083637, 886433.149396374356002, 886444.506673371652141, 886455.863962053088471, 886467.221262418548577, 886478.578574467683211, 886489.935898200608790, 886501.293233616976067, 886512.650580716785043, 886524.007939499802887, 886535.365309966146015, 886546.722692115465179, 886558.080085947411135, 886569.437491462216713, 886580.794908659532666, 886592.152337539242581, 886603.509778101462871, 886614.867230345844291, 886626.224694272154011, 886637.582169880275615, 886648.939657170441933, 886660.297156142070889, 886671.654666795162484, 886683.012189129716717, 886694.369723145384341, 886705.727268842165358, 886717.084826219826937, 886728.442395278485492, 886739.799976017675363, 886751.157568437396549, 886762.515172537532635, 886773.872788318083622, 886785.230415778583847, 886796.588054919149727, 886807.945705739432015, 886819.303368239663541, 886830.661042419262230, 886842.018728278344497, 886853.376425816910341, 886864.734135034494102, 886876.091855931212194, 886887.449588506831788, 886898.807332761120051, 886910.165088694076985, 886921.522856305586174, 886932.880635595298372, 886944.238426563213579, 886955.596229209331796, 886966.954043533420190, 886978.311869535362348, 886989.669707214809023, 887001.027556571876630, 887012.385417606332339, 887023.743290318059735, 887035.101174706942402, 887046.459070772863925, 887057.816978515475057, 887069.174897934892215, 887080.532829030998982, 887091.890771803446114, 887103.248726252117194, 887114.606692377128638, 887125.964670178014785, 887137.322659655008465, 887148.680660807644017, 887160.038673635805026, 887171.396698139491491, 887182.754734318703413, 887194.112782172975130, 887205.470841702306643, 887216.828912906814367, 887228.186995785916224, 887239.545090339845046, 887250.903196568135172, 887262.261314471019432, 887273.619444048032165, 887284.977585299173370, 887296.335738224210218, 887307.693902823375538, 887319.052079096087255, 887330.410267042345367, 887341.768466662149876, 887353.126677955151536, 887364.484900921466760, 887375.843135560746305, 887387.201381873106584, 887398.559639857849106, 887409.917909515439533, 887421.276190845528618, 887432.634483847999945, 887443.992788522620685, 887455.351104869390838, 887466.709432888077572, 887478.067772578564472, 887489.426123940851539, 887500.784486974473111, 887512.142861679778434, 887523.501248055952601, 887534.859646103461273, 887546.218055821955204, 887557.576477211434394, 887568.934910271549597, 887580.293355002184398, 887591.651811403338797, 887603.010279474896379, 887614.368759216507897, 887625.727250628173351, 887637.085753709659912, 887648.444268460967578, 887659.802794881979935, 887671.161332972347736, 887682.519882732187398, 887693.878444161266088, 887705.237017259350978, 887716.595602026442066, 887727.954198462422937, 887739.312806567060761, 887750.671426340239123, 887762.030057781608775, 887773.388700891518965, 887784.747355669387616, 887796.106022115331143, 887807.464700229116715, 887818.823390010627918, 887830.182091459864751, 887841.540804576361552, 887852.899529360234737, 887864.258265811484307, 887875.617013929411769, 887886.975773714482784, 887898.334545166231692, 887909.693328284658492, 887921.052123069646768, 887932.410929521080106, 887943.769747638609260, 887955.128577422234230, 887966.487418871838599, 887977.846271987305954, 887989.205136768170632, 888000.564013214898296, 888011.922901326906867, 888023.281801104196347, 888034.640712546766736, 888045.999635654268786, 888057.358570426586084, 888068.717516863602214, 888080.076474965433590, 888091.435444731498137, 888102.794426162028685, 888114.153419256559573, 888125.512424015207216, 888136.871440437855199, 888148.230468524270691, 888159.589508274337277, 888170.948559687822126, 888182.307622764725238, 888193.666697504930198, 888205.025783908204176, 888216.384881974430755, 888227.743991703493521, 888239.103113095043227, 888250.462246149429120, 888261.821390866185538, 888273.180547245196067, 888284.539715286344290, 888295.898894989513792, 888307.258086354471743, 888318.617289381334558, 888329.976504069752991, 888341.335730419377796, 888352.694968430558220, 888364.054218102945015, 888375.413479436421767, 888386.772752430755645, 888398.132037085830234, 888409.491333401761949, 888420.850641377968714, 888432.209961014683358, 888443.569292311789468, 888454.928635268588550, 888466.287989885546267, 888477.647356162546203, 888489.006734099006280, 888500.366123695159331, 888511.725524950772524, 888523.084937865613028, 888534.444362439448014, 888545.803798672626726, 888557.163246564450674, 888568.522706115152687, 888579.882177324267104, 888591.241660192026757, 888602.601154718082398, 888613.960660902434029, 888625.320178744732402, 888636.679708244977519, 888648.039249403052963, 888659.398802218842320, 888670.758366691996343, 888682.117942822631449, 888693.477530610514805, 888704.837130055529997, 888716.196741157560609, 888727.556363916490227, 888738.915998331969604, 888750.275644404115155, 888761.635302132694051, 888772.994971517473459, 888784.354652558569796, 888795.714345255750231, 888807.074049608549103, 888818.433765617315657, 888829.793493281700648, 888841.153232601471245, 888852.512983576627448, 888863.872746207052842, 888875.232520492514595, 888886.592306433012709, 888897.952104028314352, 888909.311913278186694, 888920.671734182513319, 888932.031566741294228, 888943.391410954529420, 888954.751266821753234, 888966.111134342849255, 888977.471013518050313, 888988.830904346774332, 889000.190806829254143, 889011.550720965140499, 889022.910646754316986, 889034.270584196550772, 889045.630533291841857, 889056.990494040073827, 889068.350466441246681, 889079.710450494894758, 889091.070446201134473, 889102.430453559732996, 889113.790472570341080, 889125.150503233191557, 889136.510545548168011, 889147.870599514688365, 889159.230665133101866, 889170.590742402826436, 889181.950831324211322, 889193.310931896790862, 889204.671044120448641, 889216.031167995184660, 889227.391303520766087, 889238.751450697192922, 889250.111609524115920, 889261.471780001418665, 889272.831962129101157, 889284.192155907046981, 889295.552361335023306, 889306.912578412913717, 889318.272807140368968, 889329.633047517738305, 889340.993299544556066, 889352.353563220938668, 889363.713838546304032, 889375.074125520768575, 889386.434424144332297, 889397.794734416529536, 889409.155056337593123, 889420.515389907290228, 889431.875735125388019, 889443.236091991653666, 889454.596460506087169, 889465.956840668688528, 889477.317232479108498, 889488.677635937114246, 889500.038051042938605, 889511.398477796115912, 889522.758916196646169, 889534.119366244412959, 889545.479827939183451, 889556.840301281074062, 889568.200786269619130, 889579.561282904935069, 889590.921791186789051, 889602.282311114831828, 889613.642842689296231, 889625.003385909716599, 889636.363940776209347, 889647.724507288658060, 889659.085085446713492, 889670.445675250492059, 889681.806276699528098, 889693.166889793938026, 889704.527514533489011, 889715.888150918181054, 889727.248798947781324, 889738.609458622056991, 889749.970129940891638, 889761.330812904285267, 889772.691507512005046, 889784.052213764050975, 889795.412931660190225, 889806.773661200189963, 889818.134402384050190, 889829.495155211654492, 889840.855919682770036, 889852.216695797163993, 889863.577483554836363, 889874.938282955787145, 889886.299093999667093, 889897.659916686476208, 889909.020751015981659, 889920.381596987950616, 889931.742454602499492, 889943.103323859511875, 889954.464204758522101, 889965.825097299646586, 889977.186001482536085, 889988.546917307423428, 889999.907844773726538, 890011.268783881794661, 890022.629734631162137, 890033.990697021828964, 890045.351671053445898, 890056.712656726245768, 890068.073654039762914, 890079.434662993880920, 890090.795683588483371, 890102.156715823803097, 890113.517759699258022, 890124.878815214964561, 890136.239882370573469, 890147.600961166084744, 890158.962051601265557, 890170.323153676348738, 890181.684267390635796, 890193.045392744359560, 890204.406529737403616, 890215.767678369302303, 890227.128838640288450, 890238.490010550012812, 890249.851194098358974, 890261.212389285326935, 890272.573596110800281, 890283.934814574196935, 890295.296044676098973, 890306.657286415807903, 890318.018539793323725, 890329.379804808530025, 890340.741081461310387, 890352.102369751548395, 890363.463669679360464, 890374.824981244048104, 890386.186304446076974, 890397.547639284632169, 890408.908985760179348, 890420.270343872485682, 890431.631713621085510, 890442.993095005978830, 890454.354488027165644, 890465.715892684413120, 890477.077308977837674, 890488.438736906973645, 890499.800176471704617, 890511.161627672147006, 890522.523090507835150, 890533.884564978885464, 890545.246051085181534, 890556.607548826374114, 890567.969058202230372, 890579.330579213215970, 890590.692111858632416, 890602.053656138479710, 890613.415212052757852, 890624.776779601117596, 890636.138358783558942, 890647.499949599965475, 890658.861552050220780, 890670.223166134092025, 890681.584791851346381, 890692.946429202216677, 890704.308078186120838, 890715.669738803175278, 890727.031411053263582, 890738.393094936269335, 890749.754790451959707, 890761.116497600218281, 890772.478216380928643, 890783.839946793857962, 890795.201688839006238, 890806.563442516024224, 890817.925207825144753, 890829.286984766018577, 890840.648773338412866, 890852.010573542444035, 890863.372385377879255, 890874.734208844369277, 890886.096043941914104, 890897.457890670513734, 890908.819749029935338, 890920.181619019829668, 890931.543500640429556, 890942.905393891385756, 890954.267298772814684, 890965.629215284134261, 890976.991143425577320, 890988.353083196794614, 890999.715034597902559, 891011.076997628551908, 891022.438972288626246, 891033.800958578009158, 891045.162956496467814, 891056.524966044235043, 891067.886987220845185, 891079.249020026065409, 891090.611064460128546, 891101.973120522685349, 891113.335188213619404, 891124.697267532697879, 891136.059358480037190, 891147.421461055171676, 891158.783575258334167, 891170.145701089059003, 891181.507838547346182, 891192.869987633195706, 891204.232148346258327, 891215.594320686534047, 891226.956504653790034, 891238.318700248026289, 891249.680907469009981, 891261.043126316508278, 891272.405356790404767, 891283.767598890815862, 891295.129852617508732, 891306.492117970134132, 891317.854394948808476, 891329.216683553182520, 891340.578983783372678, 891351.941295639029704, 891363.303619120153598, 891374.665954226511531, 891386.028300957754254, 891397.390659314231016, 891408.753029295708984, 891420.115410901722498, 891431.477804132387973, 891442.840208987588994, 891454.202625467092730, 891465.565053570782766, 891476.927493298426270, 891488.289944650023244, 891499.652407625340857, 891511.014882224379107, 891522.377368447021581, 891533.739866292802617, 891545.102375762187876, 891556.464896854478866, 891567.827429569675587, 891579.189973907778040, 891590.552529868669808, 891601.915097452118061, 891613.277676657889970, 891624.640267485869117, 891636.002869936171919, 891647.365484008449130, 891658.728109702584334, 891670.090747018693946, 891681.453395956195891, 891692.816056515322998, 891704.178728695726022, 891715.541412497288547, 891726.904107920126989, 891738.266814963659272, 891749.629533628234640, 891760.992263913271017, 891772.355005819117650, 891783.717759345192462, 891795.080524491611868, 891806.443301258026622, 891817.806089644785970, 891829.168889650958590, 891840.531701277242973, 891851.894524522824213, 891863.257359388051555, 891874.620205872575752, 891885.983063976280391, 891897.345933699049056, 891908.708815040765330, 891920.071708001196384, 891931.434612580342218, 891942.797528778086416, 891954.160456594079733, 891965.523396028322168, 891976.886347080580890, 891988.249309750972316, 891999.612284039263614, 892010.975269945105538, 892022.338267468614504, 892033.701276609557681, 892045.064297367818654, 892056.427329743164591, 892067.790373735595495, 892079.153429344994947, 892090.516496571013704, 892101.879575413768180, 892113.242665872909129, 892124.605767948552966, 892135.968881640350446, 892147.332006948301569, 892158.695143872057088, 892170.058292411733419, 892181.421452566981316, 892192.784624337917194, 892204.147807724075392, 892215.511002725688741, 892226.874209342524409, 892238.237427574233152, 892249.600657420814969, 892260.963898882269859, 892272.327151958015747, 892283.690416648518294, 892295.053692953428254, 892306.416980872163549, 892317.780280405306257, 892329.143591552041471, 892340.506914312834851, 892351.870248687337153, 892363.233594675199129, 892374.596952276537195, 892385.960321491118520, 892397.323702318943106, 892408.687094759545289, 892420.050498813041486, 892431.413914479315281, 892442.777341758133844, 892454.140780649380758, 892465.504231152939610, 892476.867693268693984, 892488.231166996527463, 892499.594652336323634, 892510.958149287733249, 892522.321657850756310, 892533.685178025509231, 892545.048709811409935, 892556.412253208574839, 892567.775808216771111, 892579.139374836231582, 892590.502953066257760, 892601.866542907198891, 892613.230144358472899, 892624.593757420196198, 892635.957382092252374, 892647.321018374525011, 892658.684666266897693, 892670.048325769021176, 892681.411996880662628, 892692.775679602404125, 892704.139373933197930, 892715.503079873626120, 892726.866797423223034, 892738.230526581755839, 892749.594267349224538, 892760.958019725745544, 892772.321783710736781, 892783.685559304314665, 892795.049346506129950, 892806.413145316415466, 892817.776955734705552, 892829.140777761116624, 892840.504611395415850, 892851.868456637370400, 892863.232313486980274, 892874.596181944012642, 892885.960062008234672, 892897.323953679762781, 892908.687856958480552, 892920.051771843805909, 892931.415698336088099, 892942.779636435094289, 892954.143586140475236, 892965.507547452463768, 892976.871520370477811, 892988.235504894517362, 892999.599501024815254, 893010.963508760789409, 893022.327528102556244, 893033.691559049766511, 893045.055601602536626, 893056.419655760517344, 893067.783721523825079, 893079.147798892110586, 893090.511887865141034, 893101.875988443032838, 893113.240100625553168, 893124.604224412585609, 893135.968359803897329, 893147.332506799604744, 893158.696665399242193, 893170.060835602926090, 893181.425017410423607, 893192.789210821501911, 893204.153415836393833, 893215.517632454517297, 893226.881860675872304, 893238.246100500458851, 893249.610351928044111, 893260.974614958628081, 893272.338889591745101, 893283.703175827511586, 893295.067473665927537, 893306.431783106410876, 893317.796104149427265, 893329.160436794161797, 893340.524781041196547, 893351.889136889716610, 893363.253504340071231, 893374.617883391911164, 893385.982274045236409, 893397.346676299697720, 893408.711090155295096, 893420.075515612028539, 893431.439952669665217, 893442.804401327739470, 893454.168861586600542, 893465.533333446015604, 893476.897816905635409, 893488.262311965459958, 893499.626818625023589, 893510.991336884908378, 893522.355866744415835, 893533.720408203662373, 893545.084961262415163, 893556.449525920557790, 893567.814102177857421, 893579.178690034430474, 893590.543289489927702, 893601.907900544116274, 893613.272523196996190, 893624.637157448567450, 893636.001803298480809, 893647.366460746852681, 893658.731129793333821, 893670.095810437924229, 893681.460502680158243, 893692.825206520501524, 893704.189921958255582, 893715.554648993653245, 893726.919387626345269, 893738.284137856098823, 893749.648899683146738, 893761.013673107023351, 893772.378458127845079, 893783.743254745262675, 893795.108062959392555, 893806.472882769769058, 893817.837714176508598, 893829.202557179378346, 893840.567411778261885, 893851.932277973042801, 893863.297155763488263, 893874.662045149598271, 893886.026946131256409, 893897.391858708229847, 893908.756782880402170, 893920.121718647656962, 893931.486666009994224, 893942.851624966948293, 893954.216595518752001, 893965.581577664939687, 893976.946571405394934, 893988.311576740350574, 893999.676593669340946, 894011.041622192366049, 894022.406662309309468, 894033.771714019821957, 894045.136777324136347, 894056.501852221786976, 894067.866938712890260, 894079.232036797096953, 894090.597146474290639, 894101.962267744471319, 894113.327400607406162, 894124.692545063211583, 894136.057701111421920, 894147.422868752037175, 894158.788047984824516, 894170.153238809667528, 894181.518441226682626, 894192.883655235404149, 894204.248880835948512, 894215.614118027966470, 894226.979366811458021, 894238.344627186190337, 894249.709899152396247, 894261.075182709377259, 894272.440477857249789, 894283.805784596013837, 894295.171102925436571, 894306.536432845401578, 894317.901774355676025, 894329.267127456143498, 894340.632492146687582, 894351.997868427191861, 894363.363256297656335, 894374.728655757848173, 894386.094066807534546, 894397.459489446599036, 894408.824923675041646, 894420.190369492629543, 894431.555826899246313, 894442.921295894775540, 894454.286776478984393, 894465.652268651756458, 894477.017772413324565, 894488.383287762990221, 894499.748814700869843, 894511.114353227079846, 894522.479903341154568, 894533.845465042977594, 894545.211038332432508, 894556.576623209519312, 894567.942219673772343, 894579.307827725657262, 894590.673447364591993, 894602.039078590576537, 894613.404721403378062, 894624.770375802996568, 894636.136041789199226, 894647.501719361753203, 894658.867408520774916, 894670.233109266147949, 894681.598821597173810, 894692.964545514550991, 894704.330281017581001, 894715.696028106263839, 894727.061786780483089, 894738.427557040122338, 894749.793338885181583, 894761.159132315195166, 894772.524937330279499, 894783.890753930201754, 894795.256582114961930, 894806.622421884094365, 894817.988273237831891, 894829.354136175941676, 894840.720010698190890, 894852.085896804463118, 894863.451794494758360, 894874.817703768727370, 894886.183624626486562, 894897.549557067686692, 894908.915501092444174, 894920.281456700060517, 894931.647423891117796, 894943.013402665150352, 894954.379393021925353, 894965.745394961675629, 894977.111408483819105, 894988.477433588472195, 894999.843470275285654, 895011.209518544375896, 895022.575578395626508, 895033.941649828688242, 895045.307732843444683, 895056.673827439895831, 895068.039933618041687, 895079.406051377416588, 895090.772180718136951, 895102.138321639853530, 895113.504474142566323, 895124.870638226275332, 895136.236813890398480, 895147.603001135285012, 895158.969199960469268, 895170.335410366184078, 895181.701632351963781, 895193.067865917691961, 895204.434111063485034, 895215.800367789110169, 895227.166636094101705, 895238.532915978808887, 895249.899207442649640, 895261.265510485973209, 895272.631825108197518, 895283.998151309555396, 895295.364489089581184, 895306.730838448507711, 895318.097199385985732, 895329.463571901782416, 895340.829955995897762, 895352.196351668098941, 895363.562758918502368, 895374.929177746758796, 895386.295608152635396, 895397.662050136132166, 895409.028503697249107, 895420.394968835636973, 895431.761445551295765, 895443.127933843992651, 895454.494433713844046, 895465.860945160267875, 895477.227468183380552, 895488.594002783182077, 895499.960548959439620, 895511.327106711803935, 895522.693676040391438, 895534.060256945085712, 895545.426849425537512, 895556.793453481863253, 895568.160069113830104, 895579.526696321088821, 895590.893335103755817, 895602.259985461831093, 895613.626647394848987, 895624.993320902693085, 895636.360005985363387, 895647.726702642627060, 895659.093410874716938, 895670.460130681050941, 895681.826862061745487, 895693.193605016684160, 895704.560359545401298, 895715.927125648129731, 895727.293903324520215, 895738.660692574456334, 895750.027493397938088, 895761.394305794732645, 895772.761129764723592, 895784.127965307910927, 895795.494812423828989, 895806.861671112710610, 895818.228541374322958, 895829.595423208316788, 895840.962316614808515, 895852.329221593565308, 895863.696138144354336, 895875.063066267175600, 895886.430005961796269, 895897.796957228216343, 895909.163920066202991, 895920.530894475872628, 895931.897880456526764, 895943.264878008631058, 895954.631887131719850, 895965.998907825676724, 895977.365940090501681, 895988.732983925845474, 896000.100039331824519, 896011.467106308205985, 896022.834184854873456, 896034.201274971710518, 896045.568376658367924, 896056.935489914845675, 896068.302614741260186, 896079.669751137145795, 896091.036899102502503, 896102.404058637097478, 896113.771229741047136, 896125.138412413885817, 896136.505606655729935, 896147.872812466346659, 896159.240029845619574, 896170.607258793432266, 896181.974499309668317, 896193.341751394094899, 896204.709015046712011, 896216.076290267170407, 896227.443577055470087, 896238.810875411611050, 896250.178185335244052, 896261.545506826369092, 896272.912839884869754, 896284.280184510396793, 896295.647540703183040, 896307.014908462646417, 896318.382287789019756, 896329.749678681953810, 896341.117081141448580, 896352.484495167271234, 896363.851920759421773, 896375.219357917667367, 896386.586806641775183, 896397.954266931861639, 896409.321738787693903, 896420.689222208922729, 896432.056717195664532, 896443.424223747802898, 896454.791741865104996, 896466.159271547221579, 896477.526812794385478, 896488.894365606247447, 896500.261929982923903, 896511.629505924182013, 896522.997093429556116, 896534.364692499279045, 896545.732303133117966, 896557.099925330840051, 896568.467559092445299, 896579.835204417700879, 896591.202861306606792, 896602.570529758930206, 896613.938209774554707, 896625.305901353247464, 896636.673604495124891, 896648.041319199837744, 896659.409045467386022, 896670.776783297536895, 896682.144532690173946, 896693.512293645064346, 896704.880066162208095, 896716.247850241488777, 896727.615645882789977, 896738.983453085878864, 896750.351271850639023, 896761.719102177070454, 896773.086944064823911, 896784.454797513899393, 896795.822662524180487, 896807.190539095434360, 896818.558427227428183, 896829.926326920511201, 896841.294238173984922, 896852.662160987965763, 896864.030095362453721, 896875.398041297099553, 896886.765998791786842, 896898.133967846515588, 896909.501948461052962, 896920.869940635166131, 896932.237944368971512, 896943.605959662119858, 896954.973986514494754, 896966.342024926096201, 896977.710074896807782, 896989.078136426280253, 897000.446209514746442, 897011.814294161624275, 897023.182390367030166, 897034.550498130847700, 897045.918617452727631, 897057.286748332786374, 897068.654890770791098, 897080.023044766625389, 897091.391210320172831, 897102.759387431317009, 897114.127576099825092, 897125.495776325580664, 897136.863988108467311, 897148.232211448485032, 897159.600446345400997, 897170.968692798982374, 897182.336950808996335, 897193.705220375792123, 897205.073501498904079, 897216.441794178099371, 897227.810098413494416, 897239.178414204856381, 897250.546741552068852, 897261.915080454782583, 897273.283430913230404, 897284.651792927063070, 897296.020166495931335, 897307.388551620184444, 897318.756948299356736, 897330.125356533564627, 897341.493776322342455, 897352.862207665806636, 897364.230650563840754, 897375.599105016095564, 897386.967571022571065, 897398.336048583383672, 897409.704537697718479, 897421.073038366157562, 897432.441550588235259, 897443.810074363835156, 897455.178609692840837, 897466.547156575135887, 897477.915715010487475, 897489.284284999012016, 897500.652866540360264, 897512.021459634415805, 897523.390064281178638, 897534.758680480299518, 897546.127308231778443, 897557.495947535615414, 897568.864598391344771, 897580.233260799199343, 897591.601934758713469, 897602.970620269887149, 897614.339317332720384, 897625.708025946980342, 897637.076746112434193, 897648.445477828965522, 897659.814221096690744, 897671.182975915144198, 897682.551742284442298, 897693.920520204468630, 897705.289309674757533, 897716.658110695541836, 897728.026923266472295, 897739.395747387316078, 897750.764583058422431, 897762.133430279209279, 897773.502289049443789, 897784.871159369475208, 897796.240041238837875, 897807.608934657531790, 897818.977839625324123, 897830.346756142098457, 897841.715684207971208, 897853.084623822360300, 897864.453574985382147, 897875.822537697036751, 897887.191511956625618, 897898.560497764847241, 897909.929495121003129, 897921.298504025093280, 897932.667524477001280, 897944.036556476610713, 897955.405600023805164, 897966.774655118351802, 897978.143721760134213, 897989.512799949152395, 898000.881889685057104, 898012.250990967964754, 898023.620103797526099, 898034.989228173857555, 898046.358364096493460, 898057.727511565433815, 898069.096670580678619, 898080.465841142111458, 898091.835023249499500, 898103.204216902377084, 898114.573422101209871, 898125.942638845415786, 898137.311867135227658, 898148.681106970179826, 898160.050358350272290, 898171.419621275505051, 898182.788895745412447, 898194.158181760343723, 898205.527479319600388, 898216.896788423531689, 898228.266109071788378, 898239.635441264254041, 898251.004785000695847, 898262.374140280997381, 898273.743507105275057, 898285.112885473296046, 898296.482275384594686, 898307.851676839636639, 898319.221089837723412, 898330.590514379087836, 898341.959950463497080, 898353.329398090718314, 898364.698857260518707, 898376.068327973014675, 898387.437810228089802, 898398.807304025394842, 898410.176809365162626, 898421.546326246694662, 898432.915854670340195, 898444.285394635866396, 898455.654946142924018, 898467.024509191629477, 898478.394083781633526, 898489.763669912936166, 898501.133267585537396, 898512.502876799087971, 898523.872497553471476, 898535.242129848687910, 898546.611773684388027, 898557.981429060571827, 898569.351095977239311, 898580.720774434041232, 898592.090464430861175, 898603.460165967582725, 898614.829879044322297, 898626.199603660614230, 898637.569339816574939, 898648.939087511855178, 898660.308846746454947, 898671.678617520257831, 898683.048399832798168, 898694.418193684658036, 898705.787999074906111, 898717.157816003891639, 898728.527644471265376, 898739.897484477143735, 898751.267336021177471, 898762.637199103250168, 898774.007073723361827, 898785.376959881396033, 898796.746857577003539, 898808.116766810067929, 898819.486687580589205, 898830.856619888567366, 898842.226563733420335, 898853.596519115497358, 898864.966486034332775, 898876.336464489926584, 898887.706454482278787, 898899.076456011040136, 898910.446469076210633, 898921.816493677441031, 898933.186529814847745, 898944.556577488314360, 898955.926636697608046, 898967.296707442263141, 898978.666789722745307, 898990.036883538588881, 899001.406988889677450, 899012.777105776127428, 899024.147234197356738, 899035.517374153714627, 899046.887525644735433, 899058.257688670302741, 899069.627863230416551, 899080.998049324611202, 899092.368246953468770, 899103.738456116174348, 899115.108676812960766, 899126.478909043478779, 899137.849152807728387, 899149.219408105593175, 899160.589674936723895, 899171.959953301353380, 899183.330243199015968, 899194.700544629711658, 899206.070857593207620, 899217.441182089620270, 899228.811518118716776, 899240.181865680147894, 899251.552224774030037, 899262.922595400130376, 899274.292977558332495, 899285.663371248519979, 899297.033776470576413, 899308.404193224152550, 899319.774621509364806, 899331.145061325980350, 899342.515512673999183, 899353.885975553188473, 899365.256449963315390, 899376.626935904379934, 899387.997433376265690, 899399.367942378739826, 899410.738462911685929, 899422.108994974987581, 899433.479538568644784, 899444.850093692191876, 899456.220660345861688, 899467.591238529304974, 899478.961828242521733, 899490.332429485279135, 899501.703042257577181, 899513.073666559183039, 899524.444302389747463, 899535.814949749503285, 899547.185608638101257, 899558.556279055424966, 899569.926961001474410, 899581.297654476016760, 899592.668359478935599, 899604.039076010114513, 899615.409804069437087, 899626.780543656670488, 899638.151294771698304, 899649.522057414404117, 899660.892831584904343, 899672.263617282616906, 899683.634414507774636, 899695.005223259911872, 899706.376043539261445, 899717.746875345590524, 899729.117718678549863, 899740.488573538372293, 899751.859439924592152, 899763.230317837093025, 899774.601207275991328, 899785.972108240937814, 899797.343020731699653, 899808.713944748509675, 899820.084880291018635, 899831.455827359110117, 899842.826785952551290, 899854.197756071458571, 899865.568737715599127, 899876.939730884623714, 899888.310735578648746, 899899.681751797441393, 899911.052779541001655, 899922.423818808747455, 899933.794869601028040, 899945.165931917843409, 899956.537005758495070, 899967.908091123215854, 899979.279188011772931, 899990.650296424166299, 900002.021416359930299, 900013.392547819414176, 900024.763690802035853, 900036.134845307795331, 900047.506011336809024, 900058.877188888611272, 900070.248377963434905, 900081.619578560581431, 900092.990790680400096, 900104.362014322774485, 900115.733249487238936, 900127.104496173909865, 900138.475754382554442, 900149.847024113056250, 900161.218305365182459, 900172.589598139165901, 900183.960902434424497, 900195.332218250958249, 900206.703545588883571, 900218.074884447851218, 900229.446234827628359, 900240.817596728331409, 900252.188970149611123, 900263.560355091467500, 900274.931751553667709, 900286.303159536328167, 900297.674579038983211, 900309.046010061632842, 900320.417452604160644, 900331.788906666450202, 900343.160372248385102, 900354.531849349848926, 900365.903337970492430, 900377.274838110548444, 900388.646349769434892, 900400.017872947268188, 900411.389407644048333, 900422.760953859658912, 900434.132511593634263, 900445.504080846090801, 900456.875661616795696, 900468.247253905748948, 900479.618857712484896, 900490.990473037352785, 900502.362099879886955, 900513.733738239738159, 900525.105388117372058, 900536.477049512439407, 900547.848722424707375, 900559.220406853826717, 900570.592102800146677, 900581.963810263318010, 900593.335529242991470, 900604.707259739283472, 900616.079001752077602, 900627.450755281141028, 900638.822520326240920, 900650.194296887377277, 900661.566084964550100, 900672.937884557293728, 900684.309695665957406, 900695.681518289842643, 900707.053352429298684, 900718.425198083859868, 900729.797055253526196, 900741.168923938181251, 900752.540804137475789, 900763.912695851875469, 900775.284599080565386, 900786.656513823778369, 900798.028440081165172, 900809.400377852958627, 900820.772327138576657, 900832.144287938252091, 900843.516260251635686, 900854.888244078843854, 900866.260239419294521, 900877.632246273104101, 900889.004264640389010, 900900.376294520567171, 900911.748335913755000, 900923.120388819836080, 900934.492453238810413, 900945.864529170095921, 900957.236616613925435, 900968.608715570066124, 900979.980826038517989, 900991.352948018815368, 901002.725081511074677, 901014.097226515063085, 901025.469383030897006, 901036.841551058110781, 901048.213730596820824, 901059.585921646677889, 901070.958124207798392, 901082.330338279716671, 901093.702563862549141, 901105.074800956179388, 901116.447049560258165, 901127.819309674901888, 901139.191581299994141, 901150.563864435069263, 901161.936159080360085, 901173.308465235633776, 901184.680782900424674, 901196.053112075082026, 901207.425452759373002, 901218.797804952831939, 901230.170168655691668, 901241.542543867602944, 901252.914930588565767, 901264.287328818347305, 901275.659738556947559, 901287.032159804250114, 901298.404592559905723, 901309.777036823914386, 901321.149492596043274, 901332.521959876292385, 901343.894438664428890, 901355.266928960452788, 901366.639430764131248, 901378.011944075347856, 901389.384468894102611, 901400.757005220046267, 901412.129553053062409, 901423.502112393383868, 901434.874683240312152, 901446.247265593963675, 901457.619859454454854, 901468.992464821320027, 901480.365081694442779, 901491.737710073823109, 901503.110349959461018, 901514.483001350890845, 901525.855664248112589, 901537.228338651126251, 901548.601024559815414, 901559.973721973714419, 901571.346430892939679, 901582.719151317607611, 901594.091883246786892, 901605.464626681176014, 901616.837381620309316, 901628.210148064186797, 901639.582926012459211, 901650.955715465126559, 901662.328516421956010, 901673.701328883063979, 901685.074152847984806, 901696.446988316834904, 901707.819835289265029, 901719.192693765275180, 901730.565563744748943, 901741.938445227686316, 901753.311338213621639, 901764.684242702554911, 901776.057158694718964, 901787.430086189298891, 901798.803025186876766, 901810.175975686754100, 901821.548937688930891, 901832.921911193407141, 901844.294896200066432, 901855.667892708792351, 901867.040900719352067, 901878.413920231512748, 901889.786951245390810, 901901.159993760637008, 901912.533047777367756, 901923.906113295117393, 901935.279190314002335, 901946.652278833673336, 901958.025378854246810, 901969.398490375489928, 901980.771613397286274, 901992.144747919519432, 902003.517893941956572, 902014.891051464364864, 902026.264220487093553, 902037.637401009560563, 902049.010593031649478, 902060.383796553476714, 902071.757011574693024, 902083.130238095298409, 902094.503476115176454, 902105.876725633977912, 902117.249986651935615, 902128.623259168583900, 902139.996543183806352, 902151.369838697835803, 902162.743145710090175, 902174.116464220685884, 902185.489794229390100, 902196.863135736202821, 902208.236488740774803, 902219.609853243106045, 902230.983229243196547, 902242.356616740813479, 902253.730015735724010, 902265.103426227695309, 902276.476848216960207, 902287.850281703053042, 902299.223726685973816, 902310.597183165838942, 902321.970651141949929, 902333.344130614539608, 902344.717621583607979, 902356.091124048689380, 902367.464638009900227, 902378.838163467007689, 902390.211700419778936, 902401.585248868446797, 902412.958808812429197, 902424.332380251726136, 902435.705963186454028, 902447.079557616147213, 902458.453163540922105, 902469.826780960429460, 902481.200409874785691, 902492.574050283525139, 902503.947702186880633, 902515.321365584502928, 902526.695040476508439, 902538.068726862198673, 902549.442424742155708, 902560.816134115564637, 902572.189854982891120, 902583.563587343669496, 902594.937331197899766, 902606.311086545349099, 902617.684853385784663, 902629.058631719439290, 902640.432421545847319, 902651.806222865125164, 902663.180035676807165, 902674.553859980893321, 902685.927695777383633, 902697.301543066278100, 902708.675401847227477, 902720.049272119998932, 902731.423153884592466, 902742.797047140775248, 902754.170951888663694, 902765.544868127908558, 902776.918795858393423, 902788.292735080118291, 902799.666685792733915, 902811.040647996240295, 902822.414621690521017, 902833.788606875576079, 902845.162603550939821, 902856.536611716728657, 902867.910631372826174, 902879.284662518883124, 902890.658705155015923, 902902.032759280875325, 902913.406824896461330, 902924.780902001541108, 902936.154990596114658, 902947.529090680065565, 902958.903202253044583, 902970.277325315051712, 902981.651459866203368, 902993.025605905917473, 903004.399763434310444, 903015.773932451265864, 903027.148112956667319, 903038.522304949932732, 903049.896508431760594, 903061.270723401335999, 903072.644949858775362, 903084.019187803962268, 903095.393437236896716, 903106.767698156996630, 903118.141970564727671, 903129.516254459507763, 903140.890549841220491, 903152.264856709982269, 903163.639175065327436, 903175.013504907488823, 903186.387846236233599, 903197.762199051445350, 903209.136563352774829, 903220.510939140222035, 903231.885326413903385, 903243.259725173120387, 903254.634135418222286, 903266.008557148976251, 903277.382990365149453, 903288.757435066625476, 903300.131891253404319, 903311.506358925253153, 903322.880838082055561, 903334.255328723695129, 903345.629830849939026, 903357.004344460670836, 903368.378869556006975, 903379.753406135598198, 903391.127954199211672, 903402.502513746847399, 903413.877084778388962, 903425.251667293836363, 903436.626261292723939, 903448.000866775284521, 903459.375483741052449, 903470.750112190144137, 903482.124752122326754, 903493.499403537483886, 903504.874066435499117, 903516.248740816023201, 903527.623426679288968, 903538.998124024947174, 903550.372832852997817, 903561.747553163208067, 903573.122284955345094, 903584.497028229525313, 903595.871782985399477, 903607.246549223084003, 903618.621326942113228, 903629.996116142603569, 903641.370916824205779, 903652.745728987152688, 903664.120552630862221, 903675.495387755567208, 903686.870234361034818, 903698.245092447032221, 903709.619962013443001, 903720.994843060383573, 903732.369735587388277, 903743.744639594457112, 903755.119555081473663, 903766.494482048088685, 903777.869420494651422, 903789.244370420696214, 903800.619331826223060, 903811.994304710882716, 903823.369289074675180, 903834.744284917600453, 903846.119292239425704, 903857.494311039918102, 903868.869341319077648, 903880.244383076438680, 903891.619436312583275, 903902.994501026812941, 903914.369577218894847, 903925.744664889178239, 903937.119764037197456, 903948.494874663068913, 903959.869996766326949, 903971.245130347087979, 903982.620275405235589, 903993.995431940420531, 904005.370599952642806, 904016.745779441785999, 904028.120970407850109, 904039.496172850369476, 904050.871386769460514, 904062.246612165006809, 904073.621849036659114, 904084.997097384533845, 904096.372357208281755, 904107.747628508019261, 904119.122911283280700, 904130.498205534415320, 904141.873511260724626, 904153.248828462557867, 904164.624157139449380, 904175.999497291515581, 904187.374848918407224, 904198.750212020240724, 904210.125586596666835, 904221.500972647569142, 904232.876370173064061, 904244.251779172569513, 904255.627199646201916, 904267.002631594077684, 904278.378075015731156, 904289.753529911045916, 904301.128996280138381, 904312.504474122659303, 904323.879963438492268, 904335.255464227637276, 904346.630976489628665, 904358.006500224815682, 904369.382035432732664, 904380.757582113379613, 904392.133140266407281, 904403.508709892048500, 904414.884290989954025, 904426.259883560123853, 904437.635487602208741, 904449.011103116208687, 904460.386730102007277, 904471.762368559371680, 904483.138018488301896, 904494.513679888565093, 904505.889352760161273, 904517.265037102741189, 904528.640732916421257, 904540.016440200968646, 904551.392158956150524, 904562.767889181966893, 904574.143630878301337, 904585.519384044804610, 904596.895148681593128, 904608.270924788317643, 904619.646712365094572, 904631.022511411574669, 904642.398321927874349, 904653.774143913644366, 904665.149977368768305, 904676.525822293129750, 904687.901678686845116, 904699.277546549332328, 904710.653425880824216, 904722.029316680971533, 904733.405218949657865, 904744.781132686999626, 904756.157057892647572, 904767.532994566485286, 904778.908942708512768, 904790.284902318380773, 904801.660873395972885, 904813.036855941521935, 904824.412849954562262, 904835.788855434977449, 904847.164872382534668, 904858.540900797350332, 904869.916940679424442, 904881.292992028174922, 904892.669054843718186, 904904.045129125937819, 904915.421214874717407, 904926.797312089824118, 904938.173420771141537, 904949.549540918669663, 904960.925672532175668, 904972.301815611426719, 904983.677970156422816, 904995.054136166931130, 905006.430313643068075, 905017.806502584484406, 905029.182702991180122, 905040.558914862805977, 905051.935138199361973, 905063.311373000848107, 905074.687619266798720, 905086.063876997213811, 905097.440146192326210, 905108.816426851670258, 905120.192718975013122, 905131.569022562471218, 905142.945337613811716, 905154.321664128801785, 905165.698002107441425, 905177.074351549614221, 905188.450712455320172, 905199.827084823977202, 905211.203468655701727, 905222.579863950610161, 905233.956270708120428, 905245.332688928465359, 905256.709118611295708, 905268.085559756611474, 905279.462012364296243, 905290.838476434117183, 905302.214951965957880, 905313.591438959701918, 905324.967937415232882, 905336.344447332317941, 905347.720968710957095, 905359.097501551033929, 905370.474045852432027, 905381.850601614802144, 905393.227168838377111, 905404.603747522458434, 905415.980337667628191, 905427.356939273187891, 905438.733552339253947, 905450.110176865593530, 905461.486812852206640, 905472.863460298976861, 905484.240119205554947, 905495.616789571940899, 905506.993471398018301, 905518.370164683787152, 905529.746869428781793, 905541.123585633235052, 905552.500313296564855, 905563.877052419120446, 905575.253803000552580, 905586.630565040512010, 905598.007338539464399, 905609.384123496711254, 905620.760919912485406, 905632.137727786321193, 905643.514547118335031, 905654.891377908294089, 905666.268220155965537, 905677.645073861465789, 905689.021939024562016, 905700.398815644904971, 905711.775703722727485, 905723.152603257796727, 905734.529514249879867, 905745.906436698860489, 905757.283370604622178, 905768.660315967048518, 905780.037272786023095, 905791.414241061313078, 905802.791220792918466, 905814.168211980606429, 905825.545214624260552, 905836.922228723880835, 905848.299254279234447, 905859.676291290321387, 905871.053339756675996, 905882.430399678414688, 905893.807471055421047, 905905.184553887578659, 905916.561648174421862, 905927.938753916416317, 905939.315871112747118, 905950.692999763879925, 905962.070139869349077, 905973.447291429154575, 905984.824454443180002, 905996.201628911192529, 906007.578814832959324, 906018.956012208713219, 906030.333221037988551, 906041.710441320785321, 906053.087673056987114, 906064.464916246244684, 906075.842170888907276, 906087.219436984392814, 906098.596714532817714, 906109.974003533832729, 906121.351303987554274, 906132.728615893865936, 906144.105939252185635, 906155.483274062979035, 906166.860620325547643, 906178.237978040240705, 906189.615347206708975, 906200.992727824836038, 906212.370119894505478, 906223.747523415600881, 906235.124938388005830, 906246.502364811487496, 906257.879802686045878, 906269.257252011448145, 906280.634712787694298, 906292.012185014435090, 906303.389668691670522, 906314.767163819167763, 906326.144670397159643, 906337.522188425064087, 906348.899717902997509, 906360.277258830843493, 906371.654811208252795, 906383.032375035341829, 906394.409950311761349, 906405.787537037627771, 906417.165135212475434, 906428.542744836537167, 906439.920365909463726, 906451.297998431255110, 906462.675642401562072, 906474.053297820501029, 906485.430964687839150, 906496.808643003343605, 906508.186332767014392, 906519.564033978735097, 906530.941746638389304, 906542.319470745627768, 906553.697206300450489, 906565.074953302973881, 906576.452711752615869, 906587.830481649492867, 906599.208262993721291, 906610.586055784602650, 906621.963860022369772, 906633.341675706789829, 906644.719502837979235, 906656.097341415472329, 906667.475191439152695, 906678.853052909020334, 906690.230925825075246, 906701.608810186968185, 906712.986705994582735, 906724.364613247802481, 906735.742531946743838, 906747.120462090941146, 906758.498403680394404, 906769.876356714870781, 906781.254321194486693, 906792.632297118776478, 906804.010284487856552, 906815.388283301610500, 906826.766293559805490, 906838.144315262325108, 906849.522348409052938, 906860.900392999756150, 906872.278449034551159, 906883.656516513088718, 906895.034595435252413, 906906.412685800925829, 906917.790787610108964, 906929.168900862685405, 906940.547025558189489, 906951.925161696854047, 906963.303309278329834, 906974.681468302500434, 906986.059638769482262, 906997.437820679042488, 907008.816014030715451, 907020.194218824733980, 907031.572435060748830, 907042.950662738760002, 907054.328901858767495, 907065.707152420422062, 907077.085414423723705, 907088.463687868323177, 907099.841972754336894, 907111.220269081532024, 907122.598576849792153, 907133.976896059000865, 907145.355226709041744, 907156.733568799449131, 907168.111922330688685, 907179.490287302178331, 907190.868663714150898, 907202.247051566024311, 907213.625450858147815, 907225.003861590055749, 907236.382283761748113, 907247.760717372992076, 907259.139162423671223, 907270.517618913669139, 907281.896086843102239, 907293.274566211504862, 907304.653057018760592, 907316.031559265102260, 907327.410072949947789, 907338.788598073530011, 907350.167134635499679, 907361.545682635623962, 907372.924242074135691, 907384.302812950685620, 907395.681395264808089, 907407.059989017085172, 907418.438594206934795, 907429.817210834240541, 907441.195838899118826, 907452.574478400987573, 907463.953129340312444, 907475.331791716394946, 907486.710465529467911, 907498.089150779298507, 907509.467847465653904, 907520.846555588301271, 907532.225275147589855, 907543.604006142937578, 907554.982748574460857, 907566.361502441926859, 907577.740267745335586, 907589.119044484221376, 907600.497832658700645, 907611.876632268773392, 907623.255443314090371, 907634.634265794418752, 907646.013099709874950, 907657.391945060342550, 907668.770801845588721, 907680.149670065380633, 907691.528549719601870, 907702.907440808368847, 907714.286343331448734, 907725.665257288492285, 907737.044182679732330, 907748.423119504586793, 907759.802067763288505, 907771.181027455488220, 907782.559998581185937, 907793.938981140381657, 907805.317975132726133, 907816.696980558219366, 907828.075997416512109, 907839.455025707837194, 907850.834065431612544, 907862.213116587954573, 907873.592179176863283, 907884.971253197989427, 907896.350338651333004, 907907.729435536661185, 907919.108543853741139, 907930.487663602805696, 907941.866794783389196, 907953.245937395724468, 907964.625091439229436, 907976.004256914020516, 907987.383433819981292, 907998.762622156646103, 908010.141821924480610, 908021.521033123019151, 908032.900255752028897, 908044.279489811626263, 908055.658735301578417, 908067.037992221536115, 908078.417260571732186, 908089.796540351933800, 908101.175831561791711, 908112.555134201305918, 908123.934448270360008, 908135.313773769070394, 908146.693110696855001, 908158.072459053946659, 908169.451818839996122, 908180.831190054886974, 908192.210572698619217, 908203.589966771076433, 908214.969372271909378, 908226.348789201118052, 908237.728217558586039, 908249.107657344080508, 908260.487108557717875, 908271.866571199148893, 908283.246045268140733, 908294.625530764926225, 908306.005027689156123, 908317.384536040714011, 908328.764055819483474, 908340.143587025231682, 908351.523129657958634, 908362.902683717431501, 908374.282249203650281, 908385.661826116498560, 908397.041414455743507, 908408.421014221152291, 908419.800625412841327, 908431.180248030461371, 908442.559882074012421, 908453.939527543494478, 908465.319184438325465, 908476.698852758738212, 908488.078532504499890, 908499.458223675610498, 908510.837926271837205, 908522.217640292947181, 908533.597365739056841, 908544.977102609700523, 908556.356850904994644, 908567.736610624706373, 908579.116381768835708, 908590.496164337266237, 908601.875958329648711, 908613.255763745750301, 908624.635580585920252, 908636.015408849809319, 908647.395248537068255, 908658.775099647813477, 908670.154962181928568, 908681.534836139180698, 908692.914721519220620, 908704.294618322397582, 908715.674526548245922, 908727.054446196532808, 908738.434377267607488, 908749.814319761120714, 908761.194273676606826, 908772.574239014415070, 908783.954215774079785, 908795.334203955600969, 908806.714203558862209, 908818.094214583747089, 908829.474237030139193, 908840.854270897689275, 908852.234316186397336, 908863.614372896263376, 908874.994441027170978, 908886.374520578887314, 908897.754611551179551, 908909.134713944047689, 908920.514827757258900, 908931.894952990929596, 908943.275089644594118, 908954.655237718368880, 908966.035397211904638, 908977.415568125317805, 908988.795750458259135, 909000.175944210845046, 909011.556149382609874, 909022.936365973902866, 909034.316593984025531, 909045.696833413327113, 909057.077084261458367, 909068.457346528186463, 909079.837620213627815, 909091.217905317316763, 909102.598201839486137, 909113.978509779903106, 909125.358829138218425, 909136.739159914548509, 909148.119502108776942, 909159.499855720670894, 909170.880220750113949, 909182.260597196873277, 909193.640985060948879, 909205.021384342107922, 909216.401795040350407, 909227.782217155559920, 909239.162650687503628, 909250.543095636065118, 909261.923552001011558, 909273.304019782575779, 909284.684498980175704, 909296.064989594044164, 909307.445491623715498, 909318.826005069306120, 909330.206529930699617, 909341.587066207546741, 909352.967613899963908, 909364.348173007718287, 909375.728743530577049, 909387.109325468656607, 909398.489918821491301, 909409.870523589313962, 909421.251139771658927, 909432.631767368642613, 909444.012406380032189, 909455.393056805711240, 909466.773718645446934, 909478.154391899239272, 909489.535076567088254, 909500.915772648644634, 909512.296480143675581, 909523.677199052297510, 909535.057929374277592, 909546.438671109615825, 909557.819424258079380, 909569.200188819435425, 909580.580964793567546, 909591.961752180592157, 909603.342550980160013, 909614.723361192038283, 909626.104182816343382, 909637.485015853075311, 909648.865860301651992, 909660.246716162189841, 909671.627583434572443, 909683.008462118566968, 909694.389352214173414, 909705.770253721275367, 909717.151166639523581, 909728.532090968918055, 909739.913026709458791, 909751.293973860912956, 909762.674932423047721, 909774.055902395863086, 909785.436883779242635, 909796.817876573069952, 909808.198880776995793, 909819.579896391020156, 909830.960923415026627, 909842.341961849015206, 909853.723011692636646, 909865.104072945890948, 909876.485145608661696, 909887.866229680716060, 909899.247325161937624, 909910.628432052209973, 909922.009550351649523, 909933.390680059674196, 909944.771821176633239, 909956.152973701828159, 909967.534137635608204, 909978.915312977740541, 909990.296499727875926, 910001.677697886363603, 910013.058907452505082, 910024.440128426533192, 910035.821360808098689, 910047.202604597201571, 910058.583859793841839, 910069.965126397437416, 910081.346404408453964, 910092.727693826192990, 910104.108994651120156, 910115.490306882536970, 910126.871630520676263, 910138.252965565305203, 910149.634312016307376, 910161.015669873449951, 910172.397039136616513, 910183.778419805807061, 910195.159811880788766, 910206.541215361561626, 910217.922630247776397, 910229.304056539433077, 910240.685494236415252, 910252.066943338606507, 910263.448403845890425, 910274.829875757917762, 910286.211359074921347, 910297.592853796551935, 910308.974359922693111, 910320.355877452995628, 910331.737406387925148, 910343.118946726783179, 910354.500498469686136, 910365.882061616401188, 910377.263636166928336, 910388.645222121151164, 910400.026819478720427, 910411.408428239752539, 910422.790048403898254, 910434.171679971157573, 910445.553322941297665, 910456.934977314434946, 910468.316643090220168, 910479.698320268536918, 910491.080008849385194, 910502.461708832532167, 910513.843420217861421, 910525.225143005256541, 910536.606877194484696, 910547.988622785545886, 910559.370379778207280, 910570.752148172468878, 910582.133927968097851, 910593.515719165094197, 910604.897521763225086, 910616.279335762374103, 910627.661161162424833, 910639.042997963144444, 910650.424846164532937, 910661.806705766473897, 910673.188576768618077, 910684.570459170965478, 910695.952352973399684, 910707.334258176037110, 910718.716174778528512, 910730.098102780524641, 910741.480042182141915, 910752.861992983263917, 910764.243955183774233, 910775.625928783440031, 910787.007913782261312, 910798.389910179772414, 910809.771917976206169, 910821.153937171329744, 910832.535967764910311, 910843.918009757064283, 910855.300063147442415, 910866.682127936044708, 910878.064204122521915, 910889.446291707106866, 910900.828390689217485, 910912.210501069086604, 910923.592622846364975, 910934.974756020936184, 910946.356900592916645, 910957.739056562073529, 910969.121223928174004, 910980.503402690985240, 910991.885592850740068, 911003.267794406972826, 911014.650007359799929, 911026.032231708872132, 911037.414467453956604, 911048.796714595286176, 911060.178973132511601, 911071.561243065749295, 911082.943524394417182, 911094.325817118864506, 911105.708121238625608, 911117.090436753700487, 911128.472763663856313, 911139.855101969209500, 911151.237451669294387, 911162.619812764343806, 911174.002185253775679, 911185.384569137939252, 911196.766964416485280, 911208.149371089297347, 911219.531789156142622, 911230.914218617021106, 911242.296659471699968, 911253.679111720295623, 911265.061575362342410, 911276.444050397956744, 911287.826536826905794, 911299.209034649073146, 911310.591543864225969, 911321.974064472480677, 911333.356596473488025, 911344.739139867364429, 911356.121694653644226, 911367.504260832327418, 911378.886838403530419, 911390.269427366554737, 911401.652027721982449, 911413.034639469115064, 911424.417262608185410, 911435.799897138844244, 911447.182543060975149, 911458.565200374578126, 911469.947869079536758, 911481.330549175501801, 911492.713240662589669, 911504.095943540451117, 911515.478657809202559, 911526.861383468611166, 911538.244120518211275, 911549.626868958352134, 911561.009628788684495, 911572.392400009208359, 911583.775182619807310, 911595.157976620015688, 911606.540782010182738, 911617.923598789726384, 911629.306426958879456, 911640.689266517292708, 911652.072117464849725, 911663.454979801434092, 911674.837853527045809, 911686.220738641568460, 911697.603635144536383, 911708.986543036298826, 911720.369462316273712, 911731.752392984693870, 911743.135335041326471, 911754.518288485822268, 911765.901253318297677, 911777.284229538519867, 911788.667217146256007, 911800.050216141622514, 911811.433226524386555, 911822.816248294315301, 911834.199281451525167, 911845.582325995666906, 911856.965381926624104, 911868.348449244396761, 911879.731527948635630, 911891.114618039573543, 911902.497719516628422, 911913.880832379916683, 911925.263956629321910, 911936.647092264727689, 911948.030239285901189, 911959.413397692842409, 911970.796567485434934, 911982.179748663329519, 911993.562941226526164, 912004.946145174908452, 912016.329360508476384, 912027.712587226764299, 912039.095825329888612, 912050.479074817616493, 912061.862335689947940, 912073.245607946766540, 912084.628891587839462, 912096.012186612933874, 912107.395493022049777, 912118.778810815187171, 912130.162139991996810, 912141.545480552478693, 912152.928832496167161, 912164.312195823411457, 912175.695570534095168, 912187.078956627636217, 912198.462354104267433, 912209.845762963755988, 912221.229183205869049, 912232.612614830606617, 912243.996057837852277, 912255.379512227256782, 912266.762977999052964, 912278.146455152658746, 912289.529943688423373, 912300.913443605997600, 912312.296954905148596, 912323.680477585992776, 912335.064011648180895, 912346.447557091712952, 912357.831113916356117, 912369.214682122110389, 912380.598261708510108, 912391.981852675788105, 912403.365455023827963, 912414.749068752280436, 912426.132693861145526, 912437.516330350306816, 912448.899978219531476, 912460.283637468819506, 912471.667308097938076, 912483.050990106887184, 912494.434683495317586, 912505.818388263112865, 912517.202104410505854, 912528.585831936914474, 912539.969570842571557, 912551.353321127011441, 912562.737082790350541, 912574.120855832472444, 912585.504640253260732, 912596.888436052249745, 912608.272243229672313, 912619.656061785295606, 912631.039891718886793, 912642.423733030445874, 912653.807585719740018, 912665.191449786885642, 912676.575325231300667, 912687.959212053334340, 912699.343110252521001, 912710.727019828860648, 912722.110940782353282, 912733.494873112649657, 912744.878816819633357, 912756.262771903420798, 912767.646738363429904, 912779.030716200009920, 912790.414705412811600, 912801.798706001718529, 912813.182717966497876, 912824.566741307266057, 912835.950776023790240, 912847.334822115954012, 912858.718879583408125, 912870.102948426268995, 912881.487028644303791, 912892.871120237396099, 912904.255223205429502, 912915.639337548287585, 912927.023463265853934, 912938.407600358128548, 912949.791748824529350, 912961.175908665405586, 912972.560079880524427, 912983.944262469653040, 912995.328456432675011, 913006.712661769473925, 913018.096878479700536, 913029.481106563704088, 913040.865346021018922, 913052.249596851645038, 913063.633859055466019, 913075.018132632249035, 913086.402417581877671, 913097.786713904235512, 913109.171021599089727, 913120.555340666673146, 913131.939671106520109, 913143.324012918514200, 913154.708366102655418, 913166.092730658827350, 913177.477106586797163, 913188.861493886564858, 913200.245892557897605, 913211.630302600678988, 913223.014724014676176, 913234.399156799889170, 913245.783600956201553, 913257.168056483380497, 913268.552523381542414, 913279.937001650221646, 913291.321491289651021, 913302.705992299248464, 913314.090504679246806, 913325.475028429413214, 913336.859563549747691, 913348.244110039784573, 913359.628667899640277, 913371.013237129198387, 913382.397817728109658, 913393.782409696490504, 913405.167013034224510, 913416.551627741078846, 913427.936253816937096, 913439.320891261566430, 913450.705540074966848, 913462.090200257021934, 913473.474871807615273, 913484.859554726397619, 913496.244249013485387, 913507.628954668529332, 913519.013671691529453, 913530.398400082602166, 913541.783139841165394, 913553.167890967451967, 913564.552653461229056, 913575.937427322263829, 913587.322212550556287, 913598.707009145757183, 913610.091817107982934, 913621.476636437000707, 913632.861467132577673, 913644.246309194830246, 913655.631162623409182, 913667.016027418314479, 913678.400903579429723, 913689.785791106405668, 913701.170689999358729, 913712.555600258288905, 913723.940521882497706, 913735.325454872567207, 913746.710399227798916, 913758.095354948192835, 913769.480322033865377, 913780.865300484583713, 913792.250290300115012, 913803.635291480226442, 913815.020304025150836, 913826.405327934422530, 913837.790363208157942, 913849.175409846007824, 913860.560467848088592, 913871.945537214051001, 913883.330617943662219, 913894.715710037038662, 913906.100813494063914, 913917.485928314621560, 913928.871054498362355, 913940.256192045402713, 913951.641340955393389, 913963.026501228334382, 913974.411672864109278, 913985.796855862485245, 913997.182050223345868, 914008.567255946923979, 914019.952473032404669, 914031.337701480370015, 914042.722941290005110, 914054.108192461892031, 914065.493454995215870, 914076.878728890442289, 914088.264014147105627, 914099.649310765089467, 914111.034618744393811, 914122.419938084552996, 914133.805268786032684, 914145.190610848134384, 914156.575964271207340, 914167.961329054669477, 914179.346705198753625, 914190.732092703110538, 914202.117491567740217, 914213.502901792409830, 914224.888323377002962, 914236.273756321519613, 914247.659200625494123, 914259.044656289275736, 914270.430123312515207, 914281.815601694979705, 914293.201091436669230, 914304.586592537234537, 914315.972104996908456, 914327.357628815458156, 914338.743163992534392, 914350.128710528137162, 914361.514268422266468, 914372.899837674573064, 914384.285418285056949, 914395.671010253485292, 914407.056613579858094, 914418.442228264058940, 914429.827854305854999, 914441.213491705129854, 914452.599140461883508, 914463.984800575766712, 914475.370472046895884, 914486.756154874921776, 914498.141849059727974, 914509.527554601314478, 914520.913271499564871, 914532.298999754246324, 914543.684739365358837, 914555.070490332553163, 914566.456252655945718, 914577.842026335303672, 914589.227811370394193, 914600.613607761333697, 914611.999415507656522, 914623.385234609479085, 914634.771065066684969, 914646.156906878924929, 914657.542760046431795, 914668.928624568739906, 914680.314500445849262, 914691.700387677643448, 914703.086286264006048, 914714.472196204820648, 914725.858117499970831, 914737.244050148990937, 914748.629994152113795, 914760.015949509339407, 914771.401916220202111, 914782.787894284701906, 914794.173883702722378, 914805.559884474147111, 914816.945896598743275, 914828.331920076627284, 914839.717954907449894, 914851.104001090978272, 914862.490058627212420, 914873.876127516268753, 914885.262207757681608, 914896.648299351450987, 914908.034402297460474, 914919.420516595710069, 914930.806642245617695, 914942.192779247649014, 914953.578927601105534, 914964.965087306336500, 914976.351258362992667, 914987.737440770841204, 914999.123634529998526, 915010.509839640231803, 915021.896056101424620, 915033.282283913227729, 915044.668523075873964, 915056.054773589130491, 915067.441035452531651, 915078.827308666543104, 915090.213593230466358, 915101.599889144534245, 915112.986196408397518, 915124.372515022172593, 915135.758844985393807, 915147.145186298293993, 915158.531538960523903, 915169.917902972083539, 915181.304278332740068, 915192.690665042377077, 915204.077063100878149, 915215.463472508126870, 915226.849893264006823, 915238.236325368168764, 915249.622768820961937, 915261.009223621920682, 915272.395689770928584, 915283.782167267869227, 915295.168656112626195, 915306.555156305315904, 915317.941667845356278, 915329.328190732980147, 915340.714724967721850, 915352.101270549930632, 915363.487827479024418, 915374.874395755119622, 915386.260975377983414, 915397.647566347615793, 915409.034168663667515, 915420.420782326254994, 915431.807407335145399, 915443.194043690105900, 915454.580691391252913, 915465.967350438237190, 915477.354020830942318, 915488.740702569251880, 915500.127395653165877, 915511.514100082567893, 915522.900815857108682, 915534.287542976904660, 915545.674281441606581, 915557.061031251098029, 915568.447792405495420, 915579.834564904565923, 915591.221348747960292, 915602.608143935678527, 915613.994950467837043, 915625.381768343853764, 915636.768597564194351, 915648.155438128043897, 915659.542290035868064, 915670.929153287201189, 915682.316027881926857, 915693.702913820161484, 915705.089811101439409, 915716.476719725760631, 915727.863639693008736, 915739.250571003183722, 915750.637513656169176, 915762.024467651499435, 915773.411432989407331, 915784.798409669427201, 915796.185397691908292, 915807.572397056152113, 915818.959407762507908, 915830.346429810626432, 915841.733463200274855, 915853.120507931453176, 915864.507564004161395, 915875.894631418283097, 915887.281710173236206, 915898.668800269369967, 915910.055901706335135, 915921.443014484248124, 915932.830138602526858, 915944.217274061520584, 915955.604420860763639, 915966.991579000372440, 915978.378748479881324, 915989.765929299639538, 916001.153121459181421, 916012.540324958390556, 916023.927539797150530, 916035.314765975461341, 916046.702003493322991, 916058.089252350153401, 916069.476512546185404, 916080.863784080953337, 916092.251066954806447, 916103.638361167162657, 916115.025666718254797, 916126.412983607733622, 916137.800311835482717, 916149.187651401618496, 916160.575002305675298, 916171.962364547653124, 916183.349738127435558, 916194.737123044906184, 916206.124519300065003, 916217.511926892446354, 916228.899345822050236, 916240.286776088993065, 916251.674217692925595, 916263.061670633731410, 916274.449134911294095, 916285.836610525613651, 916297.224097476457246, 916308.611595763592049, 916319.999105387018062, 916331.386626346502453, 916342.774158642045222, 916354.161702273529954, 916365.549257240723819, 916376.936823543510400, 916388.324401181773283, 916399.711990155512467, 916411.099590464378707, 916422.487202108372003, 916433.874825087375939, 916445.262459401157685, 916456.650105049717240, 916468.037762032821774, 916479.425430350354873, 916490.813110002316535, 916502.200800988473929, 916513.588503308827057, 916524.976216962910257, 916536.363941950956360, 916547.751678272499703, 916559.139425927889533, 916570.527184916427359, 916581.914955238578841, 916593.302736893645488, 916604.690529881860130, 916616.078334202989936, 916627.466149856918491, 916638.853976843412966, 916650.241815162589774, 916661.629664814099669, 916673.017525797942653, 916684.405398114002310, 916695.793281761929393, 916707.181176741840318, 916718.569083053385839, 916729.957000696682371, 916741.344929671497084, 916752.732869977713563, 916764.120821615098976, 916775.508784583769739, 916786.896758883260190, 916798.284744513686746, 916809.672741474816576, 916821.060749766649678, 916832.448769388836809, 916843.836800341261551, 916855.224842624156736, 916866.612896237173118, 916878.000961180077866, 916889.389037452870980, 916900.777125055319630, 916912.165223987307400, 916923.553334248717874, 916934.941455839434639, 916946.329588759574108, 916957.717733008787036, 916969.105888586491346, 916980.494055493385531, 916991.882233729003929, 917003.270423292880878, 917014.658624185598455, 917026.046836406225339, 917037.435059955343604, 917048.823294832371175, 917060.211541037191637, 917071.599798569921404, 917082.988067430327646, 917094.376347618177533, 917105.764639133471064, 917117.152941975975409, 917128.541256145806983, 917139.929581642500125, 917151.317918466171250, 917162.706266616471112, 917174.094626093632542, 917185.482996897189878, 917196.871379027026705, 917208.259772483143024, 917219.648177265306003, 917231.036593373515643, 917242.425020807655528, 917253.813459567492828, 917265.201909653027542, 917276.590371064026840, 917287.978843800374307, 917299.367327861837111, 917310.755823248298839, 917322.144329959875904, 917333.532847996219061, 917344.921377357444726, 917356.309918043087237, 917367.698470053263009, 917379.087033387622796, 917390.475608046283014, 917401.864194029010832, 917413.252791335689835, 917424.641399966203608, 917436.030019920319319, 917447.418651198036969, 917458.807293799007311, 917470.195947723463178, 917481.584612971055321, 917492.973289541667327, 917504.361977435299195, 917515.750676651718095, 917527.139387190574780, 917538.528109052102081, 917549.916842236067168, 917561.305586742237210, 917572.694342570612207, 917584.083109720726497, 917595.471888193162158, 917606.860677986987866, 917618.249479102785699, 917629.638291539857164, 917641.027115298318677, 917652.415950378053822, 917663.804796778946184, 917675.193654500762932, 917686.582523543504067, 917697.971403906936757, 917709.360295590944588, 917720.749198595411144, 917732.138112920336425, 917743.527038565371186, 917754.915975530631840, 917766.304923815769143, 917777.693883420783095, 917789.082854345440865, 917800.471836589742452, 917811.860830153571442, 917823.249835036462173, 917834.638851238647476, 917846.027878760010935, 917857.416917600319721, 917868.805967759457417, 917880.195029237074777, 917891.584102033404633, 917902.973186148214154, 917914.362281581270508, 917925.751388332457282, 917937.140506401774473, 917948.529635788756423, 917959.918776493635960, 917971.307928516296670, 917982.697091856389306, 917994.086266514030285, 918005.475452488753945, 918016.864649780793115, 918028.253858389798552, 918039.643078315537423, 918051.032309558242559, 918062.421552117564715, 918073.810805993271060, 918085.200071185361594, 918096.589347693719901, 918107.978635518229567, 918119.367934658657759, 918130.757245115120895, 918142.146566887269728, 918153.535899975104257, 918164.925244378158823, 918176.314600096666254, 918187.703967130510136, 918199.093345479457639, 918210.482735143275931, 918221.872136121848598, 918233.261548415292054, 918244.650972023257054, 918256.040406945860013, 918267.429853182402439, 918278.819310733466409, 918290.208779598586261, 918301.598259777529165, 918312.987751270411536, 918324.377254076884128, 918335.766768196830526, 918347.156293630367145, 918358.545830377144739, 918369.935378437046893, 918381.324937810190022, 918392.714508496108465, 918404.104090494802222, 918415.493683806154877, 918426.883288430166431, 918438.272904366487637, 918449.662531615118496, 918461.052170175826177, 918472.441820048610680, 918483.831481233355589, 918495.221153729944490, 918506.610837538028136, 918518.000532657606527, 918529.390239088563249, 918540.779956830898300, 918552.169685884378850, 918563.559426248772070, 918574.949177924077958, 918586.338940910063684, 918597.728715206612833, 918609.118500813725404, 918620.508297731284983, 918631.898105958942324, 918643.287925496813841, 918654.677756344666705, 918666.067598502268083, 918677.457451969734393, 918688.847316746599972, 918700.237192832981236, 918711.627080228761770, 918723.016978933825158, 918734.406888947822154, 918745.796810270869173, 918757.186742902849801, 918768.576686843298376, 918779.966642092447728, 918791.356608650065027, 918802.746586515917443, 918814.136575690004975, 918825.526576172094792, 918836.916587962186895, 918848.306611060048454, 918859.696645465563051, 918871.086691178730689, 918882.476748199202120, 918893.866816526977345, 918905.256896162056364, 918916.646987104089931, 918928.037089352961630, 918939.427202908555046, 918950.817327770870179, 918962.207463939790614, 918973.597611414967105, 918984.987770196516067, 918996.377940284321085, 919007.768121678032912, 919019.158314377767965, 919030.548518383060582, 919041.938733694027178, 919053.328960310551338, 919064.719198232400231, 919076.109447459341027, 919087.499707991606556, 919098.889979828847572, 919110.280262970947661, 919121.670557417673990, 919133.060863169142976, 919144.451180225005373, 919155.841508585377596, 919167.231848249793984, 919178.622199218370952, 919190.012561490875669, 919201.402935067308135, 919212.793319947319105, 919224.183716131141409, 919235.574123618192971, 919246.964542408706620, 919258.354972502449527, 919269.745413899188861, 919281.135866598808207, 919292.526330601423979, 919303.916805906686932, 919315.307292514480650, 919326.697790424455889, 919338.088299637194723, 919349.478820151882246, 919360.869351968518458, 919372.259895087219775, 919383.650449507753365, 919395.041015229886398, 919406.431592253618874, 919417.822180578717962, 919429.212780205067247, 919440.603391132666729, 919451.994013361167163, 919463.384646890568547, 919474.775291720870882, 919486.165947851841338, 919497.556615283363499, 919508.947294015088119, 919520.337984047131613, 919531.728685379493982, 919543.119398011709563, 919554.510121943778358, 919565.900857175700366, 919577.291603707126342, 919588.682361538056284, 919600.073130668490194, 919611.463911098078825, 919622.854702826822177, 919634.245505854487419, 919645.636320181074552, 919657.027145806467161, 919668.417982730432414, 919679.808830952737480, 919691.199690473498777, 919702.590561292367056, 919713.981443409342319, 919725.372336824540980, 919736.763241537380964, 919748.154157547978684, 919759.545084856101312, 919770.936023461865261, 919782.326973364688456, 919793.717934564920142, 919805.108907062094659, 919816.499890856212005, 919827.890885947155766, 919839.281892334809527, 919850.672910019056872, 919862.063938999781385, 919873.454979276750237, 919884.846030849847011, 919896.237093719071709, 919907.628167884307913, 919919.019253345206380, 919930.410350101883523, 919941.801458154106513, 919953.192577501526102, 919964.583708144258708, 919975.974850082304329, 919987.366003315430135, 919998.757167843286879, 920010.148343666107394, 920021.539530783426017, 920032.930729195359163, 920044.321938901674002, 920055.713159902137704, 920067.104392196866684, 920078.495635785511695, 920089.886890668072738, 920101.278156844433397, 920112.669434314593673, 920124.060723077971488, 920135.452023134916089, 920146.843334484961815, 920158.234657128108665, 920169.625991064240225, 920181.017336293356493, 920192.408692815224640, 920203.800060629611835, 920215.191439736518078, 920226.582830135710537, 920237.974231827189215, 920249.365644810721278, 920260.757069086306728, 920272.148504653712735, 920283.539951512822881, 920294.931409663520753, 920306.322879105689935, 920317.714359839097597, 920329.105851863743737, 920340.497355179511942, 920351.888869786285795, 920363.280395683716051, 920374.671932871919125, 920386.063481350778602, 920397.455041120178066, 920408.846612179768272, 920420.238194529316388, 920431.629788169171661, 920443.021393098984845, 920454.413009318406694, 920465.804636827670038, 920477.196275626425631, 920488.587925714673474, 920499.979587092064321, 920511.371259758831002, 920522.762943714391440, 920534.154638958978467, 920545.546345492475666, 920556.938063314417377, 920568.329792425036430, 920579.721532823983580, 920591.113284511142410, 920602.505047486512922, 920613.896821749978699, 920625.288607301190495, 920636.680404140381142, 920648.072212267084979, 920659.464031681302004, 920670.855862382799387, 920682.247704371693544, 920693.639557647751644, 920705.031422210508026, 920716.423298060544766, 920727.815185197046958, 920739.207083620363846, 920750.598993329913355, 920761.990914326044731, 920773.382846608408727, 920784.774790176772512, 920796.166745031136088, 920807.558711171499453, 920818.950688597513363, 920830.342677308828570, 920841.734677305910736, 920853.126688588410616, 920864.518711155978963, 920875.910745008732192, 920887.302790146321058, 920898.694846568861976, 920910.086914276005700, 920921.478993267868645, 920932.871083544101566, 920944.263185104471631, 920955.655297949328087, 920967.047422078088857, 920978.439557490870357, 920989.831704187439755, 921001.223862167797051, 921012.616031431593001, 921024.008211978827603, 921035.400403809500858, 921046.792606923147105, 921058.184821320115589, 921069.577046999591403, 921080.969283962273039, 921092.361532207462005, 921103.753791735158302, 921115.146062545245513, 921126.538344637840055, 921137.930638012359850, 921149.322942669037730, 921160.715258607757278, 921172.107585828052834, 921183.499924329924397, 921194.892274113371968, 921206.284635178395547, 921217.677007524529472, 921229.069391151773743, 921240.461786060128361, 921251.854192249476910, 921263.246609719470143, 921274.639038470108062, 921286.031478501157835, 921297.423929812619463, 921308.816392404492944, 921320.208866276196204, 921331.601351428078488, 921342.993847859790549, 921354.386355571448803, 921365.778874562471174, 921377.171404833090492, 921388.563946383073926, 921399.956499212188646, 921411.349063320551068, 921422.741638707811944, 921434.134225374087691, 921445.526823318796232, 921456.919432542170398, 921468.312053044210188, 921479.704684824449942, 921491.097327882889658, 921502.489982219412923, 921513.882647834136151, 921525.275324726477265, 921536.668012896552682, 921548.060712344245985, 921559.453423069440760, 921570.846145071671344, 921582.238878351286985, 921593.631622908054851, 921605.024378741625696, 921616.417145852232352, 921627.809924239409156, 921639.202713903156109, 921650.595514843356796, 921661.988327059894800, 921673.381150552420877, 921684.773985321167856, 921696.166831365670078, 921707.559688686160371, 921718.952557282289490, 921730.345437154057436, 921741.738328301114962, 921753.131230723462068, 921764.524144420982338, 921775.917069393559359, 921787.310005640960298, 921798.702953163301572, 921810.095911960350350, 921821.488882031640969, 921832.881863377406262, 921844.274855997646227, 921855.667859891895205, 921867.060875060269609, 921878.453901502420194, 921889.846939218346961, 921901.239988207933493, 921912.633048471063375, 921924.026120007620193, 921935.419202817487530, 921946.812296900199726, 921958.205402255989611, 921969.598518884857185, 921980.991646786336787, 921992.384785960544832, 922003.777936407248490, 922015.171098126098514, 922026.564271117444150, 922037.957455380819738, 922049.350650916108862, 922060.743857723427936, 922072.137075802194886, 922083.530305152758956, 922094.923545774654485, 922106.316797668114305, 922117.710060832789168, 922129.103335268446244, 922140.496620975201949, 922151.889917952590622, 922163.283226200961508, 922174.676545719848946, 922186.069876509136520, 922197.463218568474986, 922208.856571898330003, 922220.249936498352326, 922231.643312368192710, 922243.036699507851154, 922254.430097917211242, 922265.823507596389391, 922277.216928544687107, 922288.610360762570053, 922300.003804249339737, 922311.397259005345404, 922322.790725030237809, 922334.184202324016951, 922345.577690886450000, 922356.971190717420541, 922368.364701816928573, 922379.758224184624851, 922391.151757820509374, 922402.545302724349312, 922413.938858896261081, 922425.332426336011849, 922436.726005043368787, 922448.119595018215477, 922459.513196260551922, 922470.906808770028874, 922482.300432546762750, 922493.694067590637133, 922505.087713901302777, 922516.481371478643268, 922527.875040322891437, 922539.268720433465205, 922550.662411810597405, 922562.056114454055205, 922573.449828363256529, 922584.843553538783453, 922596.237289980170317, 922607.631037687300704, 922619.024796660058200, 922630.418566898442805, 922641.812348402105272, 922653.206141171045601, 922664.599945205147378, 922675.993760504177772, 922687.387587068136781, 922698.781424896791577, 922710.175273990025744, 922721.569134347955696, 922732.963005969999358, 922744.356888856505975, 922755.750783007009886, 922767.144688421511091, 922778.538605099893175, 922789.932533042156138, 922801.326472247834317, 922812.720422717044130, 922824.114384449669160, 922835.508357445476577, 922846.902341704233550, 922858.296337226172909, 922869.690344010945410, 922881.084362058318220, 922892.478391368291341, 922903.872431940864772, 922915.266483775689267, 922926.660546872764826, 922938.054621231858619, 922949.448706852970645, 922960.842803735868074, 922972.236911880434491, 922983.631031286669895, 922995.025161954225041, 923006.419303883216344, 923017.813457073410973, 923029.207621524692513, 923040.601797236944549, 923051.995984210050665, 923063.390182443661615, 923074.784391937893815, 923086.178612692514434, 923097.572844707639888, 923108.967087982804514, 923120.361342518124729, 923131.755608313367702, 923143.149885368184187, 923154.544173682923429, 923165.938473257119767, 923177.332784090773202, 923188.727106183650903, 923200.121439535636455, 923211.515784146846272, 923222.910140016931109, 923234.304507145774551, 923245.698885533260182, 923257.093275179388002, 923268.487676083808765, 923279.882088246522471, 923291.276511667412706, 923302.670946346363053, 923314.065392283140682, 923325.459849477629177, 923336.854317929944955, 923348.248797639855184, 923359.643288606894203, 923371.037790831411257, 923382.432304312940687, 923393.826829051482491, 923405.221365047036670, 923416.615912299253978, 923428.010470808134414, 923439.405040573445149, 923450.799621595186181, 923462.194213873124681, 923473.588817407377064, 923484.983432197361253, 923496.378058243426494, 923507.772695545339957, 923519.167344102635980, 923530.562003915547393, 923541.956674983841367, 923553.351357307285070, 923564.746050885762088, 923576.140755719272420, 923587.535471807816066, 923598.930199151043780, 923610.324937748839147, 923621.719687601085752, 923633.114448707667179, 923644.509221068467014, 923655.904004683485255, 923667.298799552489072, 923678.693605675362051, 923690.088423051638529, 923701.483251681784168, 923712.878091565216891, 923724.272942702169530, 923735.667805092292838, 923747.062678735470399, 923758.457563631702214, 923769.852459780755453, 923781.247367182397284, 923792.642285836744122, 923804.037215743446723, 923815.432156902505085, 923826.827109313802794, 923838.222072976990603, 923849.617047892184928, 923861.012034059269354, 923872.407031478243880, 923883.802040148526430, 923895.197060070466250, 923906.592091243597679, 923917.987133667920716, 923929.382187343318947, 923940.777252269559540, 923952.172328446758911, 923963.567415874334984, 923974.962514552869834, 923986.357624481664971, 923997.752745660603978, 924009.147878089919686, 924020.543021769262850, 924031.938176698517054, 924043.333342877565883, 924054.728520306292921, 924066.123708984581754, 924077.518908912199549, 924088.914120089029893, 924100.309342515072785, 924111.704576190211810, 924123.099821114446968, 924134.495077287312597, 924145.890344708692282, 924157.285623378818855, 924168.680913297226653, 924180.076214464032091, 924191.471526878769509, 924202.866850541788153, 924214.262185452389531, 924225.657531611039303, 924237.052889017155394, 924248.448257670970634, 924259.843637572019361, 924271.239028720534407, 924282.634431116050109, 924294.029844758566469, 924305.425269647967070, 924316.820705784135498, 924328.216153167071752, 924339.611611796193756, 924351.007081671967171, 924362.402562793809921, 924373.798055161838420, 924385.193558776052669, 924396.589073635870591, 924407.984599741757847, 924419.380137093015946, 924430.775685689761303, 924442.171245531993918, 924453.566816619364545, 924464.962398951873183, 924476.357992529519834, 924487.753597351838835, 924499.149213418946601, 924510.544840730726719, 924521.940479286946356, 924533.336129087489098, 924544.731790132354945, 924556.127462421311066, 924567.523145954241045, 924578.918840730912052, 924590.314546751324087, 924601.710264015477151, 924613.105992522905581, 924624.501732273842208, 924635.897483268054202, 924647.293245505192317, 924658.689018985372968, 924670.084803708363324, 924681.480599674046971, 924692.876406882423908, 924704.272225333144888, 924715.668055026093498, 924727.063895961502567, 924738.459748138906434, 924749.855611558188684, 924761.251486219465733, 924772.647372122271918, 924784.043269266723655, 924795.439177652588114, 924806.835097279748879, 924818.231028148205951, 924829.626970257842913, 924841.022923608077690, 924852.418888199259527, 924863.814864031272009, 924875.210851103765890, 924886.606849416741170, 924898.002858969965018, 924909.398879763437435, 924920.794911796925589, 924932.190955070429482, 924943.587009583716281, 924954.983075336553156, 924966.379152328940108, 924977.775240560877137, 924989.171340032014996, 925000.567450742470101, 925011.963572691893205, 925023.359705880284309, 925034.755850307410583, 925046.152005973272026, 925057.548172877635807, 925068.944351020501927, 925080.340540401521139, 925091.736741020577028, 925103.132952877902426, 925114.529175973148085, 925125.925410306081176, 925137.321655876701698, 925148.717912684893236, 925160.114180730539374, 925171.510460013407283, 925182.906750533380546, 925194.303052290342748, 925205.699365284293890, 925217.095689514884725, 925228.492024982348084, 925239.888371686218306, 925251.284729626495391, 925262.681098803062923, 925274.077479215688072, 925285.473870864603668, 925296.870273749111220, 925308.266687869443558, 925319.663113225600682, 925331.059549817116931, 925342.455997643875889, 925353.852456705993973, 925365.248927003471181, 925376.645408535725437, 925388.041901302873157, 925399.438405304914340, 925410.834920541499741, 925422.231447012512945, 925433.627984717953950, 925445.024533657822758, 925456.421093831537291, 925467.817665239330381, 925479.214247881085612, 925490.610841756453738, 925502.007446865667589, 925513.404063208145089, 925524.800690784002654, 925536.197329593356699, 925547.593979635741562, 925558.990640911040828, 925570.387313419138081, 925581.783997159916908, 925593.180692133377306, 925604.577398339402862, 925615.974115777644329, 925627.370844448218122, 925638.767584351007827, 925650.164335485547781, 925661.561097852187231, 925672.957871450344101, 925684.354656280134805, 925695.751452341559343, 925707.148259634268470, 925718.545078158029355, 925729.941907912958413, 925741.338748898939230, 925752.735601115738973, 925764.132464563241228, 925775.529339241329581, 925786.926225149887614, 925798.323122288798913, 925809.720030657947063, 925821.116950257215649, 925832.513881086371839, 925843.910823145299219, 925855.307776434114203, 925866.704740952351131, 925878.101716700242832, 925889.498703677207232, 925900.895701883477159, 925912.292711318936199, 925923.689731983351521, 925935.086763876373880, 925946.483806998352520, 925957.880861348705366, 925969.277926927548833, 925980.675003734650090, 925992.072091770009138, 926003.469191033625975, 926014.866301525034942, 926026.263423244119622, 926037.660556191112846, 926049.057700365665369, 926060.454855767544359, 926071.852022396749817, 926083.249200253281742, 926094.646389336790890, 926106.043589647160843, 926117.440801184391603, 926128.838023948250338, 926140.235257938737050, 926151.632503155618906, 926163.029759598895907, 926174.427027268335223, 926185.824306163704023, 926197.221596285118721, 926208.618897632346489, 926220.016210205270909, 926231.413534003542736, 926242.810869027394801, 926254.208215276477858, 926265.605572750791907, 926277.002941450104117, 926288.400321374298073, 926299.797712523373775, 926311.195114897098392, 926322.592528495471925, 926333.989953318145126, 926345.387389365001582, 926356.784836636157706, 926368.182295131147839, 926379.579764850437641, 926390.977245793212205, 926402.374737959704362, 926413.772241349797696, 926425.169755963259377, 926436.567281800089404, 926447.964818859822117, 926459.362367142923176, 926470.759926648694091, 926482.157497377134860, 926493.555079328361899, 926504.952672502258793, 926516.350276898359880, 926527.747892516897991, 926539.145519357407466, 926550.543157420121133, 926561.940806704689749, 926573.338467210996896, 926584.736138939042576, 926596.133821888477542, 926607.531516059185378, 926618.929221451282501, 926630.326938064536080, 926641.724665898829699, 926653.122404954046942, 926664.520155229954980, 926675.917916726553813, 926687.315689443610609, 926698.713473381125368, 926710.111268538865261, 926721.509074916597456, 926732.906892514321953, 926744.304721332155168, 926755.702561369747855, 926767.100412626750767, 926778.498275103396736, 926789.896148799569346, 926801.294033714686520, 926812.691929849213921, 926824.089837202569470, 926835.487755774753168, 926846.885685565765016, 926858.283626575255767, 926869.681578803574666, 926881.079542249906808, 926892.477516914717853, 926903.875502797658555, 926915.273499898379669, 926926.671508217230439, 926938.069527753745206, 926949.467558507807553, 926960.865600479417481, 926972.263653668342158, 926983.661718074348755, 926995.059793697786517, 927006.457880538073368, 927017.855978595092893, 927029.254087868961506, 927040.652208359562792, 927052.050340066547506, 927063.448482989915647, 927074.846637129434384, 927086.244802484987304, 927097.642979056807235, 927109.041166844079271, 927120.439365847269073, 927131.837576066143811, 927143.235797500587068, 927154.634030150133185, 927166.032274015131406, 927177.430529095116071, 927188.828795389970765, 927200.227072899811901, 927211.625361624523066, 927223.023661563522182, 927234.421972717158496, 927245.820295084966347, 927257.218628667178564, 927268.616973463445902, 927280.015329473768361, 927291.413696697680280, 927302.812075135647319, 927314.210464786970988, 927325.608865651767701, 927337.007277730037458, 927348.405701021431014, 927359.804135525948368, 927371.202581243240274, 927382.601038173539564, 927393.999506316613406, 927405.397985672112554, 927416.796476240153424, 927428.194978020503186, 927439.593491013161838, 927450.992015217780136, 927462.390550634474494, 927473.789097262895666, 927485.187655103043653, 927496.586224154685624, 927507.984804417937994, 927519.383395892451517, 927530.781998578109778, 927542.180612475029193, 927553.579237582744099, 927564.977873901254497, 927576.376521430560388, 927587.775180170312524, 927599.173850120743737, 927610.572531281388365, 927621.971223652013578, 927633.369927232968621, 927644.768642023787834, 927656.167368024354801, 927667.566105234785937, 927678.964853654731996, 927690.363613284076564, 927701.762384122819640, 927713.161166170611978, 927724.559959427569993, 927735.958763893460855, 927747.357579567935318, 927758.756406451342627, 927770.155244543333538, 927781.554093843791634, 927792.952954352367669, 927804.351826069178060, 927815.750708994106390, 927827.149603127152659, 927838.548508467734791, 927849.947425016202033, 927861.346352772088721, 927872.745291735278443, 927884.144241906004027, 927895.543203283916228, 927906.942175868665799, 927918.341159660601988, 927929.740154659142718, 927941.139160864404403, 927952.538178276387043, 927963.937206894624978, 927975.336246719351038, 927986.735297750099562, 927998.134359986754134, 928009.533433429547586, 928020.932518078014255, 928032.331613932270557, 928043.730720992083661, 928055.129839257337153, 928066.528968727798201, 928077.928109403466806, 928089.327261284110136, 928100.726424369844608, 928112.125598660320975, 928123.524784155306406, 928134.923980854917318, 928146.323188759037293, 928157.722407867433503, 928169.121638179873116, 928180.520879696472548, 928191.920132416882552, 928203.319396341219544, 928214.718671469250694, 928226.117957800743170, 928237.517255335696973, 928248.916564073646441, 928260.315884015057236, 928271.715215159463696, 928283.114557506749406, 928294.513911056797951, 928305.913275809609331, 928317.312651764950715, 928328.712038922589272, 928340.111437282525003, 928351.510846844757907, 928362.910267608938739, 928374.309699574951082, 928385.709142742794938, 928397.108597112353891, 928408.508062683278695, 928419.907539455918595, 928431.307027429575101, 928442.706526604481041, 928454.106036980520003, 928465.505558557226323, 928476.905091334832832, 928488.304635313223116, 928499.704190492047928, 928511.103756871074438, 928522.503334450535476, 928533.902923230314627, 928545.302523209829815, 928556.702134389430285, 928568.101756768883206, 928579.501390347839333, 928590.901035126298666, 928602.300691104261205, 928613.700358281494118, 928625.100036657764576, 928636.499726232956164, 928647.899427007301711, 928659.299138980335556, 928670.698862152057700, 928682.098596522235312, 928693.498342090751976, 928704.898098857724108, 928716.297866822802462, 928727.697645985754207, 928739.097436346695758, 928750.497237905394286, 928761.897050661616959, 928773.296874615480192, 928784.696709766751155, 928796.096556115313433, 928807.496413660934195, 928818.896282403613441, 928830.296162343234755, 928841.696053479565307, 928853.095955812488683, 928864.495869342004880, 928875.895794067997485, 928887.295729990000837, 928898.695677108247764, 928910.095635422621854, 928921.495604932890274, 928932.895585638703778, 928944.295577540295199, 928955.695580637431704, 928967.095594929996878, 928978.495620417757891, 928989.895657100598328, 929001.295704978634603, 929012.695764051284641, 929024.095834318897687, 929035.495915781008080, 929046.896008437732235, 929058.296112288837321, 929069.696227334206924, 929081.096353573724627, 929092.496491007157601, 929103.896639634622261, 929115.296799455769360, 929126.696970470482484, 929138.097152678528801, 929149.497346080141142, 929160.897550675203092, 929172.297766463365406, 929183.697993444395252, 929195.098231618292630, 929206.498480984824710, 929217.898741544224322, 929229.299013296025805, 929240.699296240345575, 929252.099590376834385, 929263.499895705375820, 929274.900212225737050, 929286.300539938267320, 929297.700878842500970, 929309.101228938437998, 929320.501590225729160, 929331.901962704490870, 929343.302346374490298, 929354.702741235611029, 929366.103147287736647, 929377.503564530750737, 929388.903992964420468, 929400.304432588745840, 929411.704883403610438, 929423.105345408897847, 929434.505818604375236, 929445.906302989926189, 929457.306798565667123, 929468.707305331248790, 929480.107823286438361, 929491.508352431235835, 929502.908892765641212, 929514.309444289538078, 929525.710007002460770, 929537.110580904409289, 929548.511165995616466, 929559.911762275616638, 929571.312369744409807, 929582.712988401763141, 929594.113618247676641, 929605.514259281917475, 929616.914911504485644, 929628.315574915031902, 929639.716249513672665, 929651.116935299942270, 929662.517632274189964, 929673.918340436066501, 929685.319059785571881, 929696.719790322240442, 929708.120532046188600, 929719.521284957299940, 929730.922049055341631, 929742.322824340430088, 929753.723610812099651, 929765.124408470350318, 929776.525217315065674, 929787.926037346362136, 929799.326868563657627, 929810.727710967301391, 929822.128564556711353, 929833.529429332353175, 929844.930305293528363, 929856.331192440236919, 929867.732090772595257, 929879.133000290137716, 929890.533920993097126, 929901.934852881007828, 929913.335795953986235, 929924.736750211915933, 929936.137715654447675, 929947.538692281697877, 929958.939680093550123, 929970.340679089655168, 929981.741689269896597, 929993.142710634507239, 930004.543743182905018, 930015.944786915206350, 930027.345841831294820, 930038.746907930937596, 930050.147985214018263, 930061.549073680536821, 930072.950173330376856, 930084.351284163421951, 930095.752406179206446, 930107.153539377963170, 930118.554683759575710, 930129.955839323694818, 930141.357006070320494, 930152.758183999219909, 930164.159373110509478, 930175.560573403839953, 930186.961784879211336, 930198.363007536390796, 930209.764241375261918, 930221.165486395824701, 930232.566742597962730, 930243.968009981326759, 930255.369288546033204, 930266.770578291849233, 930278.171879218774848, 930289.573191326227970, 930300.974514614674263, 930312.375849083531648, 930323.777194733032957, 930335.178551563061774, 930346.579919573152438, 930357.981298763304949, 930369.382689133519307, 930380.784090683679096, 930392.185503413551487, 930403.586927323020063, 930414.988362411851995, 930426.389808680163696, 930437.791266127605923, 930449.192734754295088, 930460.594214559998363, 930471.995705544599332, 930483.397207707865164, 930494.798721049679443, 930506.200245570158586, 930517.601781268836930, 930529.003328145830892, 930540.404886200791225, 930551.806455433950759, 930563.208035844960250, 930574.609627433586866, 930586.011230199947022, 930597.412844143807888, 930608.814469264936633, 930620.216105563449673, 930631.617753038997762, 930643.019411691580899, 930654.421081521082669, 930665.822762527037412, 930677.224454709910788, 930688.626158069120720, 930700.027872604667209, 930711.429598316666670, 930722.831335204653442, 930734.233083268627524, 930745.634842508472502, 930757.036612924071960, 930768.438394515425898, 930779.840187282068655, 930791.241991224116646, 930802.643806341337040, 930814.045632633846253, 930825.447470101411454, 930836.849318743683398, 930848.251178560662083, 930859.653049552463926, 930871.054931718623266, 930882.456825059256516, 930893.858729574014433, 930905.260645262897015, 930916.662572125904262, 930928.064510162454098, 930939.466459373012185, 930950.868419757112861, 930962.270391314872541, 930973.672374045825563, 930985.074367950204760, 930996.476373027544469, 931007.878389277961105, 931019.280416701221839, 931030.682455297093838, 931042.084505065809935, 931053.486566006788053, 931064.888638120377436, 931076.290721406228840, 931087.692815863876604, 931099.094921493786387, 931110.497038295608945, 931121.899166268995032, 931133.301305414293893, 931144.703455730807036, 931156.105617218883708, 931167.507789878058247, 931178.909973708330654, 931190.312168709700927, 931201.714374881936237, 931213.116592224920169, 931224.518820738652721, 931235.921060422668234, 931247.323311277199537, 931258.725573302013800, 931270.127846496878192, 931281.530130861676298, 931292.932426396524534, 931304.334733100840822, 931315.737050974974409, 931327.139380018692464, 931338.541720231645741, 931349.944071613834240, 931361.346434165374376, 931372.748807885684073, 931384.151192774879746, 931395.553588832961395, 931406.955996059812605, 931418.358414454851300, 931429.760844018310308, 931441.163284750073217, 931452.565736650140025, 931463.968199717928655, 931475.370673953904770, 931486.773159357486293, 931498.175655928556807, 931509.578163667232729, 931520.980682573514059, 931532.383212646702304, 931543.785753887379542, 931555.188306294730864, 931566.590869868989103, 931577.993444610154256, 931589.396030517993495, 931600.798627592157573, 931612.201235832995735, 931623.603855239809491, 931635.006485812948085, 931646.409127551945858, 931657.811780456919223, 931669.214444527635351, 931680.617119764094241, 931692.019806165830232, 931703.422503733076155, 931714.825212465599179, 931726.227932363166474, 931737.630663425778039, 931749.033405653433874, 931760.436159045901150, 931771.838923602830619, 931783.241699324222282, 931794.644486210192554, 931806.047284260275774, 931817.450093474355526, 931828.852913852781057, 931840.255745394853875, 931851.658588100690395, 931863.061441970407031, 931874.464307003538124, 931885.867183199967258, 931897.270070559810847, 931908.672969082719646, 931920.075878768693656, 931931.478799617500044, 931942.881731628905982, 931954.284674803260714, 931965.687629139982164, 931977.090594639070332, 931988.493571300525218, 931999.896559124113992, 932011.299558109720238, 932022.702568257227540, 932034.105589566519484, 932045.508622037479654, 932056.911665669875219, 932068.314720463706180, 932079.717786418739706, 932091.120863534975797, 932102.523951812298037, 932113.927051250473596, 932125.330161849502474, 932136.733283609035425, 932148.136416529305279, 932159.539560609846376, 932170.942715850542299, 932182.345882251625881, 932193.749059812631458, 932205.152248533442616, 932216.555448414175771, 932227.958659454481676, 932239.361881654360332, 932250.765115013695322, 932262.168359532253817, 932273.571615209919401, 932284.974882046808489, 932296.378160042455420, 932307.781449196860194, 932319.184749510139227, 932330.588060981477611, 932341.991383611690253, 932353.394717400078662, 932364.798062346526422, 932376.201418451033533, 932387.604785713483579, 932399.008164133643731, 932410.411553711746819, 932421.814954447094351, 932433.218366339919157, 932444.621789390104823, 932456.025223597302102, 932467.428668961743824, 932478.832125482964329, 932490.235593161080033, 932501.639071995858103, 932513.042561987065710, 932524.446063134702854, 932535.849575438769534, 932547.253098898916505, 932558.656633515143767, 932570.060179287218489, 932581.463736215024255, 932592.867304298677482, 932604.270883537828922, 932615.674473932362162, 932627.078075482160784, 932638.481688187341206, 932649.885312047437765, 932661.288947062450461, 932672.692593232146464, 932684.096250556642190, 932695.499919035821222, 932706.903598669217899, 932718.307289456832223, 932729.710991398780607, 932741.114704494830221, 932752.518428744748235, 932763.922164148418233, 932775.325910705840215, 932786.729668416897766, 932798.133437281241640, 932809.537217299104668, 932820.941008469904773, 932832.344810793991201, 932843.748624270665459, 932855.152448900393210, 932866.556284682708792, 932877.960131617728621, 932889.363989705103450, 932900.767858944716863, 932912.171739336685278, 932923.575630880659446, 932934.979533576522954, 932946.383447424275801, 932957.787372423685156, 932969.191308574634604, 932980.595255877007730, 932991.999214330688119, 933003.403183935559355, 933014.807164691621438, 933026.211156598525122, 933037.615159656270407, 933049.019173864740878, 933060.423199223820120, 933071.827235733275302, 933083.231283392990008, 933094.635342202847824, 933106.039412162965164, 933117.443493272992782, 933128.847585532814264, 933140.251688942429610, 933151.655803501489572, 933163.059929210110568, 933174.464066067943349, 933185.868214074987918, 933197.272373231244273, 933208.676543536479585, 933220.080724990344606, 933231.484917593072169, 933242.889121344196610, 933254.293336243950762, 933265.697562291985378, 933277.101799488184042, 933288.506047832546756, 933299.910307324840687, 933311.314577965065837, 933322.718859752989374, 933334.123152688378468, 933345.527456771349534, 933356.931772001436912, 933368.336098378873430, 933379.740435903426260, 933391.144784574978985, 933402.549144393415190, 933413.953515358502045, 933425.357897470123135, 933436.762290728278458, 933448.166695132735185, 933459.571110683493316, 933470.975537380436435, 933482.379975222982466, 933493.784424211597070, 933505.188884346163832, 933516.593355625984259, 933527.997838051407598, 933539.402331622317433, 933550.806836338248104, 933562.211352199432440, 933573.615879205637611, 933585.020417356514372, 933596.424966652179137, 933607.829527092399076, 933619.234098677174188, 933630.638681406388059, 933642.043275279691443, 933653.447880297200754, 933664.852496458683163, 933676.257123764022253, 933687.661762212985195, 933699.066411805804819, 933710.471072542015463, 933721.875744421500713, 933733.280427444260567, 933744.685121610062197, 933756.089826919022016, 933767.494543370674364, 933778.899270965135656, 933790.304009702289477, 933801.708759582019411, 933813.113520603859797, 933824.518292768159881, 933835.923076074570417, 933847.327870522858575, 933858.732676113140769, 933870.137492844951339, 933881.542320718639530, 933892.947159733739682, 933904.352009890135378, 933915.756871188059449, 933927.161743626929820, 933938.566627206746489, 933949.971521927509457, 933961.376427789102308, 933972.781344791175798, 933984.186272933846340, 933995.591212216764688, 934006.996162640047260, 934018.401124203461222, 934029.806096907006577, 934041.211080750334077, 934052.616075733443722, 934064.021081856219098, 934075.426099118660204, 934086.831127520184964, 934098.236167061142623, 934109.641217741300352, 934121.046279560308903, 934132.451352518168278, 934143.856436614994891, 934155.261531850439496, 934166.666638224385679, 934178.071755736717023, 934189.476884387317114, 934200.882024176069535, 934212.287175102857873, 934223.692337167565711, 934235.097510370076634, 934246.502694710274227, 934257.907890187692828, 934269.313096802798100, 934280.718314555240795, 934292.123543444788083, 934303.528783471323550, 934314.934034634730779, 934326.339296935126185, 934337.744570372044109, 934349.149854945368133, 934360.555150655214675, 934371.960457501467317, 934383.365775483776815, 934394.771104602143168, 934406.176444856333546, 934417.581796246464364, 934428.987158772186376, 934440.392532433499582, 934451.797917230287567, 934463.203313162317500, 934474.608720229589380, 934486.014138431753963, 934497.419567768927664, 934508.825008240877651, 934520.230459847603925, 934531.635922588873655, 934543.041396464454010, 934554.446881474461406, 934565.852377618663013, 934577.257884896825999, 934588.663403308950365, 934600.068932855036110, 934611.474473534501158, 934622.880025347694755, 934634.285588294384070, 934645.691162374336272, 934657.096747587434947, 934668.502343933796510, 934679.907951412838884, 934691.313570024911314, 934702.719199769548140, 934714.124840646749362, 934725.530492656514980, 934736.936155798495747, 934748.341830072808079, 934759.747515479102731, 934771.153212017146870, 934782.558919687289745, 934793.964638489065692, 934805.370368422591127, 934816.776109487283975, 934828.181861683493480, 934839.587625010870397, 934850.993399469298311, 934862.399185058777221, 934873.804981779074296, 934885.210789629956707, 934896.616608611424454, 934908.022438723361120, 934919.428279965883121, 934930.834132338408381, 934942.239995841053315, 934953.645870473817922, 934965.051756236352958, 934976.457653128425591, 934987.863561150268652, 934999.269480301532894, 935010.675410582334734, 935022.081351991975680, 935033.487304531037807, 935044.893268198939040, 935056.299242995679379, 935067.705228921258822, 935079.111225975328125, 935090.517234158003703, 935101.923253469169140, 935113.329283908242360, 935124.735325475572608, 935136.141378171043471, 935147.547441994189285, 935158.953516945010051, 935170.359603023505770, 935181.765700229676440, 935193.171808563056402, 935204.577928023529239, 935215.984058611560613, 935227.390200326335616, 935238.796353167854249, 935250.202517136349343, 935261.608692231355235, 935273.014878452871926, 935284.421075800783001, 935295.827284274855629, 935307.233503875089809, 935318.639734601369128, 935330.045976453577168, 935341.452229431481101, 935352.858493535197340, 935364.264768764260225, 935375.671055118786171, 935387.077352598542348, 935398.483661203412339, 935409.889980933163315, 935421.296311788028106, 935432.702653767541051, 935444.109006871818565, 935455.515371100511402, 935466.921746453619562, 935478.328132931026630, 935489.734530532732606, 935501.140939258388244, 935512.547359107760713, 935523.953790081199259, 935535.360232177888975, 935546.766685398411937, 935558.173149742302485, 935569.579625209444202, 935580.986111799837090, 935592.392609513131902, 935603.799118349328637, 935615.205638308427297, 935626.612169390078634, 935638.018711594399065, 935649.425264921155758, 935660.831829370115884, 935672.238404941163026, 935683.644991634297185, 935695.051589449518360, 935706.458198386593722, 935717.864818445174024, 935729.271449625259265, 935740.678091926849447, 935752.084745349828154, 935763.491409893729724, 935774.898085558903404, 935786.304772344999947, 935797.711470251670107, 935809.118179279379547, 935820.524899427429773, 935831.931630696053617, 935843.338373084901832, 935854.745126594090834, 935866.151891223271377, 935877.558666972327046, 935888.965453841257840, 935900.372251829830930, 935911.779060937929899, 935923.185881165554747, 935934.592712512589060, 935945.999554978683591, 935957.406408563954756, 935968.813273268169723, 935980.220149091212079, 935991.627036032848991, 936003.033934093313292, 936014.440843272139318, 936025.847763569210656, 936037.254694984643720, 936048.661637517972849, 936060.068591169314459, 936071.475555938552134, 936082.882531825569458, 936094.289518830017187, 936105.696516952128150, 936117.103526191436686, 936128.510546548059210, 936139.917578021879308, 936151.324620612547733, 936162.731674320064485, 936174.138739144313149, 936185.545815085177310, 936196.952902142424136, 936208.360000316170044, 936219.767109606182203, 936231.174230012344196, 936242.581361534423195, 936253.988504172302783, 936265.395657925982960, 936276.802822795230895, 936288.209998780046590, 936299.617185880197212, 936311.024384095449932, 936322.431593426037580, 936333.838813871610910, 936345.246045432053506, 936356.653288107248954, 936368.060541896964423, 936379.467806801316328, 936390.875082820071839, 936402.282369952998124, 936413.689668200211599, 936425.096977561246604, 936436.504298036219552, 936447.911629624897614, 936459.318972327280790, 936470.726326143136248, 936482.133691072463989, 936493.541067115031183, 936504.948454270837829, 936516.355852539651096, 936527.763261921238154, 936539.170682415715419, 936550.578114022850059, 936561.985556742409244, 936573.393010574392974, 936584.800475518684834, 936596.207951575168408, 936607.615438743727282, 936619.022937024128623, 936630.430446416372433, 936641.837966920225881, 936653.245498535688967, 936664.653041262412444, 936676.060595100629143, 936687.468160049989820, 936698.875736110261641, 936710.283323281677440, 936721.690921563771553, 936733.098530956427567, 936744.506151459878311, 936755.913783073541708, 936767.321425797650591, 936778.729079631855711, 936790.136744576157071, 936801.544420630438253, 936812.952107794582844, 936824.359806068125181, 936835.767515451414511, 936847.175235944218002, 936858.582967546302825, 936869.990710257668979, 936881.398464077967219, 936892.806229007313959, 936904.214005045476370, 936915.621792192338035, 936927.029590447898954, 936938.437399811809883, 936949.845220284070820, 936961.253051864332519, 936972.660894552827813, 936984.068748349323869, 936995.476613253704272, 937006.884489265619777, 937018.292376385419630, 937029.700274612521753, 937041.108183946809731, 937052.516104388516396, 937063.924035937292501, 937075.331978593138047, 937086.739932355587371, 937098.147897225106135, 937109.555873200995848, 937120.963860283372924, 937132.371858472237363, 937143.779867767239921, 937155.187888168380596, 937166.595919675542973, 937178.003962288494222, 937189.412016007234342, 937200.820080831646919, 937212.228156761266291, 937223.636243796558119, 937235.044341937056743, 937246.452451182645746, 937257.860571533325128, 937269.268702988862060, 937280.676845549023710, 937292.084999213810079, 937303.493163983337581, 937314.901339857140556, 937326.309526835102588, 937337.717724917223677, 937349.125934103387408, 937360.534154393477365, 937371.942385787377134, 937383.350628284853883, 937394.758881885907613, 937406.167146590305492, 937417.575422397931106, 937428.983709308900870, 937440.392007322749123, 937451.800316439592279, 937463.208636659313925, 937474.616967981448397, 937486.025310406228527, 937497.433663933305070, 937508.842028562794439, 937520.250404294463806, 937531.658791128196754, 937543.067189063876867, 937554.475598101271316, 937565.884018240263686, 937577.292449481086805, 937588.700891823042184, 937600.109345266362652, 937611.517809810815379, 937622.926285456633195, 937634.334772203117609, 937645.743270050385036, 937657.151778998551890, 937668.560299047268927, 937679.968830196186900, 937691.377372445655055, 937702.785925795207731, 937714.194490244961344, 937725.603065794450231, 937737.011652443790808, 937748.420250192866661, 937759.828859041677788, 937771.237478989758529, 937782.646110037341714, 937794.054752184078097, 937805.463405429851264, 937816.872069774544798, 937828.280745218158700, 937839.689431760576554, 937851.098129401449114, 937862.506838140776381, 937873.915557978441939, 937885.324288914445788, 937896.733030948438682, 937908.141784080537036, 937919.550548310391605, 937930.959323638002388, 937942.368110063369386, 937953.776907585910521, 937965.185716206091456, 937976.594535923330113, 937988.003366737742908, 937999.412208649097010, 938010.821061657508835, 938022.229925762512721, 938033.638800964225084, 938045.047687262296677, 938056.456584656843916, 938067.865493147750385, 938079.274412734783255, 938090.683343417709693, 938102.092285196413286, 938113.501238071010448, 938124.910202041151933, 938136.319177106954157, 938147.728163268067874, 938159.137160524609499, 938170.546168876113370, 938181.955188322695903, 938193.364218864124268, 938204.773260500282049, 938216.182313231402077, 938227.591377056785859, 938239.000451976666227, 938250.409537990577519, 938261.818635098985396, 938273.227743301307783, 938284.636862597544678, 938296.045992987579666, 938307.455134471296333, 938318.864287048578262, 938330.273450719309039, 938341.682625483255833, 938353.091811340418644, 938364.501008290564641, 938375.910216333693825, 938387.319435469573364, 938398.728665698203258, 938410.137907019467093, 938421.547159433015622, 938432.956422939081676, 938444.365697537199594, 938455.774983227485791, 938467.184280009591021, 938478.593587883631699, 938490.002906849258579, 938501.412236906588078, 938512.821578055154532, 938524.230930295190774, 938535.640293626580387, 938547.049668048857711, 938558.459053562139161, 938569.868450166308321, 938581.277857861132361, 938592.687276646611281, 938604.096706522512250, 938615.506147488835268, 938626.915599545347504, 938638.325062691816129, 938649.734536928473972, 938661.144022254855372, 938672.553518671076745, 938683.963026176788844, 938695.372544771991670, 938706.782074456685223, 938718.191615230520256, 938729.601167093613185, 938741.010730045498349, 938752.420304086408578, 938763.829889215994626, 938775.239485434140079, 938786.649092740844935, 938798.058711135876365, 938809.468340619350784, 938820.877981190918945, 938832.287632850464433, 938843.697295597870834, 938855.106969432905316, 938866.516654355800711, 938877.926350366091356, 938889.336057463777252, 938900.745775648625568, 938912.155504920869134, 938923.565245280158706, 938934.974996726145037, 938946.384759259060957, 938957.794532878557220, 938969.204317584517412, 938980.614113377057947, 938992.023920255713165, 939003.433738220715895, 939014.843567271600477, 939026.253407408483326, 939037.663258631248027, 939049.073120939545333, 939060.482994333491661, 939071.892878812854178, 939083.302774377400056, 939094.712681027245708, 939106.122598762274720, 939117.532527582137845, 939128.942467486718670, 939140.352418476017192, 939151.762380550033413, 939163.172353708301671, 939174.582337951054797, 939185.992333277827129, 939197.402339688851498, 939208.812357183662243, 939220.222385762608610, 939231.632425424992107, 939243.042476171045564, 939254.452538000652567, 939265.862610913463868, 939277.272694909479469, 939288.682789988466538, 939300.092896150774322, 939311.503013395704329, 939322.913141723489389, 939334.323281133780256, 939345.733431626576930, 939357.143593201762997, 939368.553765859222040, 939379.963949598721229, 939391.374144420144148, 939402.784350323607214, 939414.194567308644764, 939425.604795375256799, 939437.015034523676150, 939448.425284753204323, 939459.835546064074151, 939471.245818456169218, 939482.656101929140277, 939494.066396482987329, 939505.476702117593959, 939516.887018832843751, 939528.297346628620289, 939539.707685504923575, 939551.118035461287946, 939562.528396497946233, 939573.938768614549190, 939585.349151811096817, 939596.759546087356284, 939608.169951443444006, 939619.580367878894322, 939630.990795393823646, 939642.401233988115564, 939653.811683661420830, 939665.222144413972273, 939676.632616245187819, 939688.043099155300297, 939699.453593144193292, 939710.864098211517558, 939722.274614357389510, 939733.685141581459902, 939745.095679883845150, 939756.506229264196008, 939767.916789722396061, 939779.327361258445308, 939790.737943872460164, 939802.148537563742138, 939813.559142332407646, 939824.969758178573102, 939836.380385102005675, 939847.791023102472536, 939859.201672179740854, 939870.612332334043458, 939882.023003565031104, 939893.433685872470960, 939904.844379256479442, 939916.255083716823719, 939927.665799253387377, 939939.076525865937583, 939950.487263554590754, 939961.898012319114059, 939973.308772159274668, 939984.719543075072579, 939996.130325066507794, 940007.541118133231066, 940018.951922275009565, 940030.362737492076121, 940041.773563784081489, 940053.184401151025668, 940064.595249592442997, 940076.006109108799137, 940087.416979699512012, 940098.827861364698038, 940110.238754104124382, 940121.649657917674631, 940133.060572805348784, 940144.471498766681179, 940155.882435801904649, 940167.293383910902776, 940178.704343093209900, 940190.115313348942436, 940201.526294677867554, 940212.937287080218084, 940224.348290555411950, 940235.759305103565566, 940247.170330724562518, 940258.581367418169975, 940269.992415184387937, 940281.403474022983573, 940292.814543933724053, 940304.225624916842207, 940315.636716971988790, 940327.047820098814555, 940338.458934297668748, 940349.870059568202123, 940361.281195910181850, 940372.692343323840760, 940384.103501808596775, 940395.514671364682727, 940406.925851991632953, 940418.337043689796701, 940429.748246458708309, 940441.159460298251361, 940452.570685208193026, 940463.981921188882552, 940475.393168239854276, 940486.804426360991783, 940498.215695552178659, 940509.626975813414901, 940521.038267144467682, 940532.449569545220584, 940543.860883015673608, 940555.272207555593923, 940566.683543164748698, 940578.094889843254350, 940589.506247590645216, 940600.917616407154128, 940612.328996292548254, 940623.740387246711180, 940635.151789269526489, 940646.563202360877767, 940657.974626520415768, 940669.386061748373322, 940680.797508044284768, 940692.208965408499353, 940703.620433840318583, 940715.031913339975290, 940726.443403907236643, 940737.854905542102642, 940749.266418244340457, 940760.677942013833672, 940772.089476850465871, 940783.501022754120640, 940794.912579724797979, 940806.324147762148641, 940817.735726866289042, 940829.147317036753520, 940840.558918273774907, 940851.970530576887541, 940863.382153946440667, 940874.793788381852210, 940886.205433883354999, 940897.617090450483374, 940909.028758083353750, 940920.440436781966127, 940931.852126545738429, 940943.263827374903485, 940954.675539269461296, 940966.087262228946202, 940977.498996253125370, 940988.910741342464462, 941000.322497496381402, 941011.734264714876190, 941023.146042997948825, 941034.557832345133647, 941045.969632756663486, 941057.381444232305512, 941068.793266771826893, 941080.205100375344045, 941091.616945042391308, 941103.028800773201510, 941114.440667567308992, 941125.852545424830168, 941137.264434345532209, 941148.676334329531528, 941160.088245376478881, 941171.500167486141436, 941182.912100658752024, 941194.324044893728569, 941205.736000191420317, 941217.147966551478021, 941228.559943973668851, 941239.971932457876392, 941251.383932004333474, 941262.795942612574436, 941274.207964282715693, 941285.619997014408000, 941297.032040807534941, 941308.444095662096515, 941319.856161577976309, 941331.268238554941490, 941342.680326592992060, 941354.092425692011602, 941365.504535851650871, 941376.916657072026283, 941388.328789353021421, 941399.740932694287039, 941411.153087096055970, 941422.565252557978965, 941433.977429079706781, 941445.389616661588661, 941456.801815303275362, 941468.214025004417636, 941479.626245765248314, 941491.038477585650980, 941502.450720465159975, 941513.862974403891712, 941525.275239401729777, 941536.687515458557755, 941548.099802574375644, 941559.512100748601370, 941570.924409981700592, 941582.336730272974819, 941593.749061622773297, 941605.161404030746780, 941616.573757496778853, 941627.986122020753101, 941639.398497602553107, 941650.810884242178872, 941662.223281939397566, 941673.635690693976358, 941685.048110506148078, 941696.460541375447065, 941707.872983301756904, 941719.285436285194010, 941730.697900325525552, 941742.110375422402285, 941753.522861576057039, 941764.935358786140569, 941776.347867052769288, 941787.760386375477538, 941799.172916754381731, 941810.585458189249039, 941821.998010680195875, 941833.410574226756580, 941844.823148829047568, 941856.235734486836009, 941867.648331199889071, 941879.060938968323171, 941890.473557792021893, 941901.886187670635991, 941913.298828604281880, 941924.711480592610314, 941936.124143635621294, 941947.536817733198404, 941958.949502885225229, 941970.362199091585353, 941981.774906352162361, 941993.187624666607007, 942004.600354035035707, 942016.013094457332045, 942027.425845933263190, 942038.838608462829143, 942050.251382046029903, 942061.664166682399809, 942073.076962371822447, 942084.489769114530645, 942095.902586910058744, 942107.315415758639574, 942118.728255659691058, 942130.141106613446027, 942141.553968619671650, 942152.966841678018682, 942164.379725788952783, 942175.792620951775461, 942187.205527166719548, 942198.618444433552213, 942210.031372751924209, 942221.444312122068368, 942232.857262543635443, 942244.270224016625434, 942255.683196540921926, 942267.096180116292089, 942278.509174742386676, 942289.922180419787765, 942301.335197147680447, 942312.748224926297553, 942324.161263755522668, 942335.574313635006547, 942346.987374564865604, 942358.400446544867009, 942369.813529574894346, 942381.226623654714786, 942392.639728784444742, 942404.052844963851385, 942415.465972192585468, 942426.879110470879823, 942438.292259798501618, 942449.705420175334439, 942461.118591601145454, 942472.531774075934663, 942483.944967599469237, 942495.358172171749175, 942506.771387792658061, 942518.184614461963065, 942529.597852179547772, 942541.011100945179351, 942552.424360759090632, 942563.837631620815955, 942575.250913530588150, 942586.664206487941556, 942598.077510492876172, 942609.490825545275584, 942620.904151645023376, 942632.317488792003132, 942643.730836985982023, 942655.144196227076463, 942666.557566514937207, 942677.970947849564254, 942689.384340230724774, 942700.797743658651598, 942712.211158132646233, 942723.624583652941510, 942735.038020219421014, 942746.451467831968330, 942757.864926490350626, 942769.278396194451489, 942780.691876944154501, 942792.105368739459664, 942803.518871580017731, 942814.932385465945117, 942826.345910397008993, 942837.759446372976527, 942849.172993394196965, 942860.586551459971815, 942872.000120570301078, 942883.413700725301169, 942894.827291924739257, 942906.240894168266095, 942917.654507456347346, 942929.068131788168103, 942940.481767163844779, 942951.895413583377376, 942963.309071046882309, 942974.722739553661086, 942986.136419104062952, 942997.550109697622247, 943008.963811334455386, 943020.377524014445953, 943031.791247737244703, 943043.204982502968051, 943054.618728311266750, 943066.032485162140802, 943077.446253055706620, 943088.860031991498545, 943100.273821969400160, 943111.687622989644296, 943123.101435051648878, 943134.515258155646734, 943145.929092301288620, 943157.342937488458119, 943168.756793717388064, 943180.170660987496376, 943191.584539298783056, 943202.998428651131690, 943214.412329044775106, 943225.826240479131229, 943237.240162954200059, 943248.654096469981596, 943260.068041026243009, 943271.481996622984298, 943282.895963259972632, 943294.309940937091596, 943305.723929654108360, 943317.137929411139339, 943328.551940207951702, 943339.965962044312619, 943351.379994920338504, 943362.794038835680112, 943374.208093790453859, 943385.622159784426913, 943397.036236817366444, 943408.450324889039621, 943419.864423999795690, 943431.278534149052575, 943442.692655337159522, 943454.106787563301623, 943465.520930827944539, 943476.935085130855441, 943488.349250471801497, 943499.763426850782707, 943511.177614267449826, 943522.591812722035684, 943534.006022213958204, 943545.420242743450217, 943556.834474310395308, 943568.248716914444230, 943579.662970555596985, 943591.077235233737156, 943602.491510948631912, 943613.905797700397670, 943625.320095488801599, 943636.734404313610867, 943648.148724174825475, 943659.563055072445422, 943670.977397005888633, 943682.391749975504354, 943693.806113981059752, 943705.220489022321999, 943716.634875099058263, 943728.049272211501375, 943739.463680359302089, 943750.878099542343989, 943762.292529760510661, 943773.706971013802104, 943785.121423301985487, 943796.535886624944396, 943807.950360982678831, 943819.364846374839544, 943830.779342801310122, 943842.193850262323394, 943853.608368757064454, 943865.022898286348209, 943876.437438849359751, 943887.851990446331911, 943899.266553076799028, 943910.681126740993932, 943922.095711438567378, 943933.510307169402950, 943944.924913933500648, 943956.339531730744056, 943967.754160560900345, 943979.168800423736684, 943990.583451319485903, 944001.998113247798756, 944013.412786208558828, 944024.827470201649703, 944036.242165226954967, 944047.656871284474619, 944059.071588373975828, 944070.486316495342180, 944081.901055648457259, 944093.315805833088234, 944104.730567049235106, 944116.145339296665043, 944127.560122575610876, 944138.974916885490529, 944150.389722226420417, 944161.804538598400541, 944173.219366000965238, 944184.634204434347339, 944196.049053898081183, 944207.463914392399602, 944218.878785916836932, 944230.293668471509591, 944241.708562056068331, 944253.123466670862399, 944264.538382315076888, 944275.953308989293873, 944287.368246692931280, 944298.783195426105522, 944310.198155188467354, 944321.613125980016775, 944333.028107800637372, 944344.443100650212727, 944355.858104528626427, 944367.273119435878471, 944378.688145371270366, 944390.103182335500605, 944401.518230327987112, 944412.933289348729886, 944424.348359397496097, 944435.763440474285744, 944447.178532578982413, 944458.593635711353272, 944470.008749871281907, 944481.423875058768317, 944492.839011273463257, 944504.254158515483141, 944515.669316784711555, 944527.084486080799252, 944538.499666403979063, 944549.914857753668912, 944561.330060130218044, 944572.745273533160798, 944584.160497962613590, 944595.575733418110758, 944606.990979899885133, 944618.406237407703884, 944629.821505941334181, 944641.236785500892438, 944652.652076086029410, 944664.067377696512267, 944675.482690332690254, 944686.898013994214125, 944698.313348680734634, 944709.728694392484613, 944721.144051128998399, 944732.559418890275992, 944743.974797676317394, 944755.390187487122603, 944766.805588322109543, 944778.221000181511045, 944789.636423065094277, 944801.051856972742826, 944812.467301904456690, 944823.882757860003039, 944835.298224839149043, 944846.713702842011116, 944858.129191868240014, 944869.544691917835735, 944880.960202990798280, 944892.375725086661987, 944903.791258205543272, 944915.206802347442135, 944926.622357512009330, 944938.037923699361272, 944949.453500908915885, 944960.869089141138829, 944972.284688395331614, 944983.700298671843484, 944995.115919970441610, 945006.531552290776744, 945017.947195632965304, 945029.362849996774457, 945040.778515382087789, 945052.194191788905300, 945063.609879216877744, 945075.025577666005120, 945086.441287136287428, 945097.857007627608255, 945109.272739139501937, 945120.688481672201306, 945132.104235225357115, 945143.519999799202196, 945154.935775393154472, 945166.351562007097527, 945177.767359641380608, 945189.183168295538053, 945200.598987969569862, 945212.014818663359620, 945223.430660376674496, 945234.846513109398074, 945246.262376861646771, 945257.678251632954925, 945269.094137423438951, 945280.510034232866019, 945291.925942061003298, 945303.341860908083618, 945314.757790773757733, 945326.173731657792814, 945337.589683560421690, 945349.005646481178701, 945360.421620420063846, 945371.837605376960710, 945383.253601351869293, 945394.669608344323933, 945406.085626354673877, 945417.501655382337049, 945428.917695427313447, 945440.333746489719488, 945451.749808569322340, 945463.165881666005589, 945474.581965779536404, 945485.998060909798369, 945497.414167056907900, 945508.830284220399335, 945520.246412400272675, 945531.662551596644334, 945543.078701809048653, 945554.494863037485629, 945565.911035281955265, 945577.327218542341143, 945588.743412818294019, 945600.159618110046722, 945611.575834417133592, 945622.992061739438213, 945634.408300077077001, 945645.824549429817125, 945657.240809797425754, 945668.657081180019304, 945680.073363577248529, 945691.489656989113428, 945702.905961415381171, 945714.322276856168173, 945725.738603311125189, 945737.154940780368634, 945748.571289263316430, 945759.987648760434240, 945771.404019271139987, 945782.820400795550086, 945794.236793333548121, 945805.653196884784847, 945817.069611449376680, 945828.486037026974373, 945839.902473617810756, 945851.318921221536584, 945862.735379838151857, 945874.151849467190914, 945885.568330108886585, 945896.984821763006039, 945908.401324429432862, 945919.817838108050637, 945931.234362798859365, 945942.650898501509801, 945954.067445215769112, 945965.484002941870131, 945976.900571679696441, 945988.317151428898796, 945999.733742189477198, 946011.150343961198814, 946022.566956743947230, 946033.983580537722446, 946045.400215342408046, 946056.816861157771200, 946068.233517983928323, 946079.650185820297338, 946091.066864666994661, 946102.483554524253123, 946113.900255391490646, 946125.316967268590815, 946136.733690155670047, 946148.150424052611925, 946159.567168959067203, 946170.983924875268713, 946182.400691800517961, 946193.817469735280611, 946205.234258679090999, 946216.651058631832711, 946228.067869593622163, 946239.484691564226523, 946250.901524543412961, 946262.318368531297892, 946273.735223527532071, 946285.152089532115497, 946296.568966544815339, 946307.985854565631598, 946319.402753594331443, 946330.819663630798459, 946342.236584675032645, 946353.653516726917587, 946365.070459785987623, 946376.487413852708414, 946387.904378926614299, 946399.321355007472448, 946410.738342095282860, 946422.155340190161951, 946433.572349291644059, 946444.989369399729185, 946456.406400514300913, 946467.823442635242827, 946479.240495762322098, 946490.657559895771556, 946502.074635035009123, 946513.491721180034801, 946524.908818331197836, 946536.325926487683319, 946547.743045649840496, 946559.160175817436539, 946570.577316990238614, 946581.994469168246724, 946593.411632351111621, 946604.828806538949721, 946616.245991731761023, 946627.663187928963453, 946639.080395131022669, 946650.497613337356597, 946661.914842547848821, 946673.332082762848586, 946684.749333981773816, 946696.166596204624511, 946707.583869431167841, 946719.001153661753051, 946730.418448895565234, 946741.835755132953636, 946753.253072373685427, 946764.670400617644191, 946776.087739864829928, 946787.505090114776976, 946798.922451367718168, 946810.339823623420671, 946821.757206881535240, 946833.174601142294705, 946844.592006405466236, 946856.009422670933418, 946867.426849938463420, 946878.844288207706995, 946890.261737479129806, 946901.679197752266191, 946913.096669027116150, 946924.514151303446852, 946935.931644581258297, 946947.349148860201240, 946958.766664140275680, 946970.184190421598032, 946981.601727703586221, 946993.019275986589491, 947004.436835270025767, 947015.854405554360710, 947027.271986838895828, 947038.689579123863950, 947050.107182408799417, 947061.524796694051474, 947072.942421979154460, 947084.360058264224790, 947095.777705548796803, 947107.195363833103329, 947118.613033116678707, 947130.030713399872184, 947141.448404681985267, 947152.866106963483617, 947164.283820243785158, 947175.701544523006305, 947187.119279801030643, 947198.537026077625342, 947209.954783352673985, 947221.372551626176573, 947232.790330897783861, 947244.208121167845093, 947255.625922435545363, 947267.043734701350331, 947278.461557964910753, 947289.879392226110213, 947301.297237484832294, 947312.715093740960583, 947324.132960994262248, 947335.550839244970120, 947346.968728492502123, 947358.386628737207502, 947369.804539978620596, 947381.222462216624990, 947392.640395451220684, 947404.058339682174847, 947415.476294909603894, 947426.894261133158579, 947438.312238352838904, 947449.730226568412036, 947461.148225779994391, 947472.566235987003893, 947483.984257189789787, 947495.402289388119243, 947506.820332581759430, 947518.238386770593934, 947529.656451954389922, 947541.074528133380227, 947552.492615307099186, 947563.910713475896046, 947575.328822638955899, 947586.746942796627991, 947598.165073948795907, 947609.583216095110402, 947621.001369235687889, 947632.419533370179124, 947643.837708498700522, 947655.255894620786421, 947666.674091736553237, 947678.092299845884554, 947689.510518948780373, 947700.928749045007862, 947712.346990134334192, 947723.765242216642946, 947735.183505292050540, 947746.601779360091314, 947758.020064420881681, 947769.438360474421643, 947780.856667520129122, 947792.274985558353364, 947803.693314588745125, 947815.111654611187987, 947826.530005625681952, 947837.948367631994188, 947849.366740630124696, 947860.785124619724229, 947872.203519600792788, 947883.621925573213957, 947895.040342537104152, 947906.458770491997711, 947917.877209437778220, 947929.295659374445677, 947940.714120302000083, 947952.132592220092192, 947963.551075128722005, 947974.969569027773105, 947986.388073917245492, 947997.806589796673506, 948009.225116666289978, 948020.643654525862075, 948032.062203375040554, 948043.480763213941827, 948054.899334042333066, 948066.317915860330686, 948077.736508667469025, 948089.155112463864498, 948100.573727249400690, 948111.992353023844771, 948123.410989787196741, 948134.829637539340183, 948146.248296279809438, 948157.666966008837335, 948169.085646726191044, 948180.504338431986980, 948191.923041125410236, 948203.341754807275720, 948214.760479476884939, 948226.179215134237893, 948237.597961778985336, 948249.016719411592931, 948260.435488031362183, 948271.854267638525926, 948283.273058232618496, 948294.691859813989140, 948306.110672382172197, 948317.529495936934836, 948328.948330478509888, 948340.367176006548107, 948351.786032521165907, 948363.204900021897629, 948374.623778508976102, 948386.042667982052080, 948397.461568440892734, 948408.880479885730892, 948420.299402316217311, 948431.718335732351989, 948443.137280133785680, 948454.556235520634800, 948465.975201892550103, 948477.394179249764420, 948488.813167591812089, 948500.232166918809526, 948511.651177230523899, 948523.070198526722379, 948534.489230807404965, 948545.908274072688073, 948557.327328321989626, 948568.746393555426039, 948580.165469772997312, 948591.584556974237785, 948603.003655159380287, 948614.422764328075573, 948625.841884480440058, 948637.261015616240911, 948648.680157735128887, 948660.099310837336816, 948671.518474922399037, 948682.937649990548380, 948694.356836041435599, 948705.776033074827865, 948717.195241090958007, 948728.614460089476779, 948740.033690070267767, 948751.452931033330970, 948762.872182978433557, 948774.291445905459113, 948785.710719814407639, 948797.130004705046304, 948808.549300577258691, 948819.968607430928387, 948831.387925265938975, 948842.807254082174040, 948854.226593879400752, 948865.645944657735527, 948877.065306416829117, 948888.484679156914353, 948899.904062877409160, 948911.323457578546368, 948922.742863259976730, 948934.162279921816662, 948945.581707563600503, 948957.001146185444668, 948968.420595787232742, 948979.840056368848309, 948991.259527929942124, 949002.679010470747016, 949014.098503990797326, 949025.518008490442298, 949036.937523969099857, 949048.357050426770002, 949059.776587863452733, 949071.196136278798804, 949082.615695673041046, 949094.035266045946628, 949105.454847396933474, 949116.874439726467244, 949128.294043034198694, 949139.713657320011407, 949151.133282583788969, 949162.552918825531378, 949173.972566044889390, 949185.392224241863005, 949196.811893416452222, 949208.231573568307795, 949219.651264697546139, 949231.070966803701594, 949242.490679886890575, 949253.910403946996666, 949265.330138983787037, 949276.749884997378103, 949288.169641987537034, 949299.589409954030998, 949311.009188896743581, 949322.428978815674782, 949333.848779710708186, 949345.268591581610963, 949356.688414428383112, 949368.108248250791803, 949379.528093048487790, 949390.947948822053149, 949402.367815570672974, 949413.787693294696510, 949425.207581993658096, 949436.627481667674147, 949448.047392316395417, 949459.467313939938322, 949470.887246538186446, 949482.307190110674128, 949493.727144657750614, 949505.147110178950243, 949516.567086674040183, 949527.987074143486097, 949539.407072586589493, 949550.827082003583200, 949562.247102394117974, 949573.667133758310229, 949585.087176095810719, 949596.507229406503029, 949607.927293690503575, 949619.347368947463110, 949630.767455177381635, 949642.187552380026318, 949653.607660555164330, 949665.027779703144915, 949676.447909823502414, 949687.868050916120410, 949699.288202980882488, 949710.708366017788649, 949722.128540026606061, 949733.548725007334724, 949744.968920959741808, 949756.389127883710898, 949767.809345779125579, 949779.229574645753019, 949790.649814483826049, 949802.070065292995423, 949813.490327073028311, 949824.910599824041128, 949836.330883545917459, 949847.751178238191642, 949859.171483900980093, 949870.591800534282811, 949882.012128137750551, 949893.432466711499728, 949904.852816255181096, 949916.273176768561825, 949927.693548251991160, 949939.113930705003440, 949950.534324127598666, 949961.954728519544005, 949973.375143880839460, 949984.795570211368613, 949996.216007510898635, 950007.636455779429525, 950019.056915016612038, 950030.477385222795419, 950041.897866397164762, 950053.318358540302143, 950064.738861651625484, 950076.159375731134787, 950087.579900778830051, 950099.000436794594862, 950110.420983778196387, 950121.841541729401797, 950133.262110648327507, 950144.682690534740686, 950156.103281388524920, 950167.523883209563792, 950178.944495997624472, 950190.365119752706960, 950201.785754474811256, 950213.206400163820945, 950224.627056819270365, 950236.047724441275932, 950247.468403029837646, 950258.889092584606260, 950270.309793105581775, 950281.730504592414945, 950293.151227045455016, 950304.571960464119911, 950315.992704848409630, 950327.413460198557004, 950338.834226513863541, 950350.255003794678487, 950361.675792040769011, 950373.096591251785867, 950384.517401427845471, 950395.938222568831407, 950407.359054674510844, 950418.779897744767368, 950430.200751779484563, 950441.621616778546013, 950453.042492741835304, 950464.463379669468850, 950475.884277560980991, 950487.305186416371725, 950498.726106235524639, 950510.147037018439732, 950521.567978764767759, 950532.988931474625133, 950544.409895147662610, 950555.830869783880189, 950567.251855383161455, 950578.672851945157163, 950590.093859470216557, 950601.514877957990393, 950612.935907408245839, 950624.356947820982896, 950635.777999196085148, 950647.199061533319764, 950658.620134832570329, 950670.041219093836844, 950681.462314317002892, 950692.883420501835644, 950704.304537648335099, 950715.725665756268427, 950727.146804825635627, 950738.567954856203869, 950749.989115848089568, 950761.410287800710648, 950772.831470714299940, 950784.252664588741027, 950795.673869423684664, 950807.095085219363682, 950818.516311975196004, 950829.937549691530876, 950841.358798367786221, 950852.780058004194871, 950864.201328600640409, 950875.622610156657174, 950887.043902672594413, 950898.465206147986464, 950909.886520582949743, 950921.307845977135003, 950932.729182330542244, 950944.150529643055052, 950955.571887914557010, 950966.993257144815288, 950978.414637333713472, 950989.836028481251560, 951001.257430587429553, 951012.678843652014621, 951024.100267674657516, 951035.521702655474655, 951046.943148594349623, 951058.364605491049588, 951069.786073345574550, 951081.207552157691680, 951092.629041927400976, 951104.050542654236779, 951115.472054338664748, 951126.893576980102807, 951138.315110578783788, 951149.736655134242028, 951161.158210646477528, 951172.579777115490288, 951184.001354540931061, 951195.422942922916263, 951206.844542261213064, 951218.266152555588633, 951229.687773806159385, 951241.109406012692489, 951252.531049174955115, 951263.952703293180093, 951275.374368366785347, 951286.796044396120124, 951298.217731380485930, 951309.639429320232011, 951321.061138215358369, 951332.482858065166511, 951343.904588870005682, 951355.326330629526637, 951366.748083343729377, 951378.169847012381069, 951389.591621635365300, 951401.013407212798484, 951412.435203744447790, 951423.857011230080388, 951435.278829669579864, 951446.700659062829800, 951458.122499410063028, 951469.544350710581057, 951480.966212964500301, 951492.388086171937175, 951503.809970332309604, 951515.231865445850417, 951526.653771512443200, 951538.075688531971537, 951549.497616504086182, 951560.919555428903550, 951572.341505306074396, 951583.763466135831550, 951595.185437917592935, 951606.607420651591383, 951618.029414337594062, 951629.451418975368142, 951640.873434564797208, 951652.295461106114089, 951663.717498598853126, 951675.139547043130733, 951686.561606438597664, 951697.983676785253920, 951709.405758082866669, 951720.827850331552327, 951732.249953530961648, 951743.672067680978216, 951755.094192781718448, 951766.516328832833096, 951777.938475834089331, 951789.360633785603568, 951800.782802687375806, 951812.204982539056800, 951823.627173340646550, 951835.049375091912225, 951846.471587792737409, 951857.893811443005688, 951869.316046042833477, 951880.738291591638699, 951892.160548089654185, 951903.582815536647104, 951915.005093932617456, 951926.427383277332410, 951937.849683570791967, 951949.271994812646881, 951960.694317003013566, 951972.116650141542777, 951983.538994228118099, 951994.961349263088778, 952006.383715245756321, 952017.806092176237144, 952029.228480054531246, 952040.650878880289383, 952052.073288653511554, 952063.495709373964928, 952074.918141041765921, 952086.340583656565286, 952097.763037218363024, 952109.185501727042720, 952120.607977182487957, 952132.030463584465906, 952143.452960932976566, 952154.875469227670692, 952166.297988468897529, 952177.720518655958585, 952189.143059789319523, 952200.565611868398264, 952211.988174893194810, 952223.410748863825575, 952234.833333779941313, 952246.255929641309194, 952257.678536448162049, 952269.101154200034216, 952280.523782897158526, 952291.946422539069317, 952303.369073125650175, 952314.791734657017514, 952326.214407133171335, 952337.637090553529561, 952349.059784918208607, 952360.482490227208473, 952371.905206480412744, 952383.327933677355759, 952394.750671818386763, 952406.173420903040096, 952417.596180931315757, 952429.018951903097332, 952440.441733818035573, 952451.864526676363312, 952463.287330477847718, 952474.710145222372375, 952486.132970909937285, 952497.555807540076785, 952508.978655112907290, 952520.401513628312387, 952531.824383086175658, 952543.247263486264274, 952554.670154828461818, 952566.093057112768292, 952577.515970338950865, 952588.938894507125951, 952600.361829616944306, 952611.784775668289512, 952623.207732661045156, 952634.630700595211238, 952646.053679470554926, 952657.476669286959805, 952668.899670044658706, 952680.322681742836721, 952691.745704381959513, 952703.168737961445004, 952714.591782481642440, 952726.014837942086160, 952737.437904343008995, 952748.860981683945283, 952760.284069965011440, 952771.707169185741805, 952783.130279346369207, 952794.553400446660817, 952805.976532486616634, 952817.399675466003828, 952828.822829384589568, 952840.245994242141023, 952851.669170039007440, 952863.092356774723157, 952874.515554449404590, 952885.938763062586077, 952897.361982614616863, 952908.785213104914874, 952920.208454533596523, 952931.631706900545396, 952943.054970205645077, 952954.478244448662736, 952965.901529629481956, 952977.324825747986324, 952988.748132804292254, 953000.171450798166916, 953011.594779729261063, 953023.018119597691111, 953034.441470403224230, 953045.864832145976834, 953057.288204825483263, 953068.711588441859931, 953080.134982994757593, 953091.558388484292664, 953102.981804910232313, 953114.405232272460125, 953125.828670570976101, 953137.252119805547409, 953148.675579975941218, 953160.099051082273945, 953171.522533124312758, 953182.946026102057658, 953194.369530015159398, 953205.793044863617979, 953217.216570647316985, 953228.640107366256416, 953240.063655019970611, 953251.487213608575985, 953262.910783131956123, 953274.334363590227440, 953285.757954982807860, 953297.181557309813797, 953308.605170571128838, 953320.028794766636565, 953331.452429896104150, 953342.876075959415175, 953354.299732956686057, 953365.723400887683965, 953377.147079751943238, 953388.570769549813122, 953399.994470281177200, 953411.418181945569813, 953422.841904542990960, 953434.265638073557056, 953445.689382536918856, 953457.113137932959944, 953468.536904261563905, 953479.960681522614323, 953491.384469716227613, 953502.808268841821700, 953514.232078899745829, 953525.655899889767170, 953537.079731811536476, 953548.503574665053748, 953559.927428450318985, 953571.351293167099357, 953582.775168815045618, 953594.199055394623429, 953605.622952905134298, 953617.046861346811056, 953628.470780719420873, 953639.894711022730917, 953651.318652256857604, 953662.742604421568103, 953674.166567516629584, 953685.590541542042047, 953697.014526497805491, 953708.438522383454256, 953719.862529199337587, 953731.286546944873407, 953742.710575620294549, 953754.134615225251764, 953765.558665759628639, 953776.982727223425172, 953788.406799616524950, 953799.830882938811556, 953811.254977190168574, 953822.679082370363176, 953834.103198479278944, 953845.527325516799465, 953856.951463482924737, 953868.375612377538346, 953879.799772200523876, 953891.223942951648496, 953902.648124630562961, 953914.072317237732932, 953925.496520772692747, 953936.920735235209577, 953948.344960625516251, 953959.769196943030693, 953971.193444188102148, 953982.617702360497788, 953994.041971459751949, 954005.466251486213878, 954016.890542439417914, 954028.314844319364056, 954039.739157125935890, 954051.163480859017000, 954062.587815518607385, 954074.012161104357801, 954085.436517616384663, 954096.860885054455139, 954108.285263418219984, 954119.709652708028443, 954131.134052923298441, 954142.558464064379223, 954153.982886130688712, 954165.407319122459739, 954176.831763039110228, 954188.256217881222256, 954199.680683648097329, 954211.105160339968279, 954222.529647956369445, 954233.954146497533657, 954245.378655963111669, 954256.803176353103481, 954268.227707667392679, 954279.652249905630015, 954291.076803068048321, 954302.501367154181935, 954313.925942164263688, 954325.350528097944334, 954336.775124955107458, 954348.199732735636644, 954359.624351439531893, 954371.048981066560373, 954382.473621616722085, 954393.898273089667782, 954405.322935485630296, 954416.747608804143965, 954428.172293045325205, 954439.596988208824769, 954451.021694294642657, 954462.446411302895285, 954473.871139233000576, 954485.295878085307777, 954496.720627859351225, 954508.145388555130921, 954519.570160172646865, 954530.994942711666226, 954542.419736171839759, 954553.844540553400293, 954565.269355856231414, 954576.694182079751045, 954588.119019224424846, 954599.543867290019989, 954610.968726276070811, 954622.393596182693727, 954633.818477009772323, 954645.243368757190183, 954656.668271424830891, 954668.093185012461618, 954679.518109519965947, 954690.943044947460294, 954702.367991294595413, 954713.792948561371304, 954725.217916747438721, 954736.642895853146911, 954748.067885877913795, 954759.492886821739376, 954770.917898684623651, 954782.342921466450207, 954793.767955167102627, 954805.192999786348082, 954816.618055324070156, 954828.043121780036017, 954839.468199154478498, 954850.893287446931936, 954862.318386657745577, 954873.743496786104515, 954885.168617832474411, 954896.593749796506017, 954908.018892678082921, 954919.444046477088705, 954930.869211193639785, 954942.294386827154085, 954953.719573377748020, 954965.144770845538005, 954976.569979229825549, 954987.995198531076312, 954999.420428748941049, 955010.845669883303344, 955022.270921933930367, 955033.696184900938533, 955045.121458783978596, 955056.546743583050556, 955067.972039298270829, 955079.397345928940922, 955090.822663475410081, 955102.247991937329061, 955113.673331314697862, 955125.098681607400067, 955136.524042815319262, 955147.949414938222617, 955159.374797976110131, 955170.800191928981803, 955182.225596796488389, 955193.651012578397058, 955205.076439274940640, 955216.501876885886304, 955227.927325410884805, 955239.352784849936143, 955250.778255203156732, 955262.203736470313743, 955273.629228651174344, 955285.054731745622121, 955296.480245753424242, 955307.905770674813539, 955319.331306509440765, 955330.756853257305920, 955342.182410918176174, 955353.607979491935112, 955365.033558978466317, 955376.459149377536960, 955387.884750689379871, 955399.310362913529389, 955410.735986050218344, 955422.161620098981075, 955433.587265059933998, 955445.012920932727866, 955456.438587717479095, 955467.864265413838439, 955479.289954021922313, 955490.715653541381471, 955502.141363972332329, 955513.567085314309224, 955524.992817567544989, 955536.418560731806792, 955547.844314807094634, 955559.270079793059267, 955570.695855689584278, 955582.121642496786080, 955593.547440214431845, 955604.973248842288740, 955616.399068380240351, 955627.824898828519508, 955639.250740186544135, 955650.676592454314232, 955662.102455631946214, 955673.528329719090834, 955684.954214715748094, 955696.380110621801578, 955707.806017437018454, 955719.231935161282308, 955730.657863794825971, 955742.083803336834535, 955753.509753788006492, 955764.935715147410519, 955776.361687415512279, 955787.787670592078939, 955799.213664676761255, 955810.639669669792056, 955822.065685570822097, 955833.491712379618548, 955844.917750096297823, 955856.343798720627092, 955867.769858252722770, 955879.195928692119196, 955890.622010038816370, 955902.048102292814292, 955913.474205453763716, 955924.900319521664642, 955936.326444496400654, 955947.752580378088169, 955959.178727166261524, 955970.604884860920720, 955982.031053462065756, 955993.457232969347388, 956004.883423382765613, 956016.309624702204019, 956027.735836927662604, 956039.162060058675706, 956050.588294095476158, 956062.014539037714712, 956073.440794885507785, 956084.867061638622545, 956096.293339296942577, 956107.719627860235050, 956119.145927328383550, 956130.572237701620907, 956141.998558979365043, 956153.424891161848791, 956164.851234248606488, 956176.277588239870965, 956187.703953135176562, 956199.130328934639692, 956210.556715638143942, 956221.983113245805725, 956233.409521756926551, 956244.835941171739250, 956256.262371490127407, 956267.688812711858191, 956279.115264836931601, 956290.541727865114808, 956301.968201796407811, 956313.394686630461365, 956324.821182367391884, 956336.247689007082954, 956347.674206549301744, 956359.100734994048253, 956370.527274341089651, 956381.953824590309523, 956393.380385741591454, 956404.806957794935443, 956416.233540750108659, 956427.660134606994689, 956439.086739365477115, 956450.513355025323108, 956461.939981586649083, 956473.366619049338624, 956484.793267413158901, 956496.219926678109914, 956507.646596843726002, 956519.073277910239995, 956530.499969877535477, 956541.926672745263204, 956553.353386513306759, 956564.780111181898974, 956576.206846750457771, 956587.633593219099566, 956599.060350587707944, 956610.487118856399320, 956621.913898024591617, 956633.340688092401251, 956644.767489059711806, 956656.194300926523283, 956667.621123692370020, 956679.047957357484847, 956690.474801921402104, 956701.901657384471036, 956713.328523745993152, 956724.755401006317697, 956736.182289165211841, 956747.609188222559169, 956759.036098178010434, 956770.463019031798467, 956781.889950783690438, 956793.316893433337100, 956804.743846981087700, 956816.170811426243745, 956827.597786769154482, 956839.024773009237833, 956850.451770146843046, 956861.878778181737289, 956873.305797113804147, 956884.732826942810789, 956896.159867668524384, 956907.586919291177765, 956919.013981810305268, 956930.441055226139724, 956941.868139538215473, 956953.295234746532515, 956964.722340850858018, 956976.149457851657644, 956987.576585747883655, 956999.003724540234543, 957010.430874228128232, 957021.858034811797552, 957033.285206290776841, 957044.712388664833270, 957056.139581934432499, 957067.566786098876037, 957078.994001158396713, 957090.421227112994529, 957101.848463962203823, 957113.275711705791764, 957124.702970343874767, 957136.130239876452833, 957147.557520303176716, 957158.984811624279246, 957170.412113839527592, 957181.839426948223263, 957193.266750951064751, 957204.694085847353563, 957216.121431637089700, 957227.548788320505992, 957238.976155897136778, 957250.403534366982058, 957261.830923729692586, 957273.258323985501193, 957284.685735134058632, 957296.113157175364904, 957307.540590109420009, 957318.968033935758285, 957330.395488654612564, 957341.822954265750013, 957353.250430768704973, 957364.677918163943104, 957376.105416450998746, 957387.532925629871897, 957398.960445700213313, 957410.387976662022993, 957421.815518515417352, 957433.243071260163561, 957444.670634896028787, 957456.098209422780201, 957467.525794840650633, 957478.953391149174422, 957490.380998348584399, 957501.808616438647732, 957513.236245418898761, 957524.663885289453901, 957536.091536050313152, 957547.519197701360099, 957558.946870242361911, 957570.374553673318587, 957581.802247993764468, 957593.229953204165213, 957604.657669304055162, 957616.085396292968653, 957627.513134171371348, 957638.940882939030416, 957650.368642595480196, 957661.796413141069934, 957673.224194575333968, 957684.651986898388714, 957696.079790110001341, 957707.507604209939018, 957718.935429198201746, 957730.363265074789524, 957741.791111839469522, 957753.218969492008910, 957764.646838032407686, 957776.074717460665852, 957787.502607776550576, 957798.930508979479782, 957810.358421070151962, 957821.786344047985040, 957833.214277913211845, 957844.642222665133886, 957856.070178304216824, 957867.498144829994999, 957878.926122242468409, 957890.354110541404225, 957901.782109726802446, 957913.210119798430242, 957924.638140756287612, 957936.066172600025311, 957947.494215330109000, 957958.922268945956603, 957970.350333447335288, 957981.778408834477887, 957993.206495106918737, 958004.634592264890671, 958016.062700307928026, 958027.490819236263633, 958038.918949049664661, 958050.347089747665450, 958061.775241330615245, 958073.203403798048384, 958084.631577150314115, 958096.059761386713944, 958107.487956507480703, 958118.916162512614392, 958130.344379401649348, 958141.772607174585573, 958153.200845831423067, 958164.629095371928997, 958176.057355796103366, 958187.485627103480510, 958198.913909294176847, 958210.342202368425205, 958221.770506325876340, 958233.198821165831760, 958244.627146889222786, 958256.055483494885266, 958267.483830983517691, 958278.912189354421571, 958290.340558608062565, 958301.768938743509352, 958313.197329761460423, 958324.625731661450118, 958336.054144443129189, 958347.482568106730469, 958358.911002652137540, 958370.339448078884743, 958381.767904387437738, 958393.196371577098034, 958404.624849647865631, 958416.053338599973358, 958427.481838432955556, 958438.910349146812223, 958450.338870741310529, 958461.767403216450475, 958473.195946572115645, 958484.624500808306038, 958496.053065924672410, 958507.481641921214759, 958518.910228797467425, 958530.338826554128900, 958541.767435190500692, 958553.196054706117138, 958564.624685101676732, 958576.053326376713812, 958587.481978530995548, 958598.910641564289108, 958610.339315476710908, 958621.768000268260948, 958633.196695938589983, 958644.625402487698011, 958656.054119915352203, 958667.482848221552558, 958678.911587406066246, 958690.340337468893267, 958701.769098410033621, 958713.197870228788815, 958724.626652925624512, 958736.055446500191465, 958747.484250952489674, 958758.913066282402724, 958770.341892489697784, 958781.770729574374855, 958793.199577536201105, 958804.628436374943703, 958816.057306090835482, 958827.486186683410779, 958838.915078152902424, 958850.343980498844758, 958861.772893721237779, 958873.201817819965072, 958884.630752795026638, 958896.059698646306060, 958907.488655373337679, 958918.917622976354323, 958930.346601455123164, 958941.775590809877031, 958953.204591039917432, 958964.633602145244367, 958976.062624126090668, 958987.491656981990673, 958998.920700713177212, 959010.349755318835378, 959021.778820799663663, 959033.207897155079991, 959044.636984385084361, 959056.066082489676774, 959067.495191468624398, 959078.924311321694404, 959090.353442048886791, 959101.782583650201559, 959113.211736125405878, 959124.640899474034086, 959136.070073696784675, 959147.499258792609908, 959158.928454761975445, 959170.357661604764871, 959181.786879320512526, 959193.216107909684069, 959204.645347371581011, 959216.074597706203349, 959227.503858913551085, 959238.933130993624218, 959250.362413945957087, 959261.791707770782523, 959273.221012467867695, 959284.650328036863357, 959296.079654478002340, 959307.508991790935397, 959318.938339975662529, 959330.367699032183737, 959341.797068959800526, 959353.226449759211391, 959364.655841429717839, 959376.085243971319869, 959387.514657384017482, 959398.944081667810678, 959410.373516822117381, 959421.802962847403251, 959433.232419743086211, 959444.661887509166263, 959456.091366145876236, 959467.520855652517639, 959478.950356029323302, 959490.379867276060395, 959501.809389392728917, 959513.238922379328869, 959524.668466235394590, 959536.098020960926078, 959547.527586555574089, 959558.957163019804284, 959570.386750353267416, 959581.816348555497825, 959593.245957626961172, 959604.675577567191795, 959616.105208375956863, 959627.534850053023547, 959638.964502598857507, 959650.394166012993082, 959661.823840295430273, 959673.253525445703417, 959684.683221464161761, 959696.112928350339644, 959707.542646104353480, 959718.972374725737609, 959730.402114214957692, 959741.831864571315236, 959753.261625795043074, 959764.691397885908373, 959776.121180843911134, 959787.550974668585695, 959798.980779360164888, 959810.410594918648712, 959821.840421343222260, 959833.270258634351194, 959844.700106792151928, 959856.129965815693140, 959867.559835705673322, 959878.989716461393982, 959890.419608083087951, 959901.849510570522398, 959913.279423923464492, 959924.709348141914234, 959936.139283225871623, 959947.569229174870998, 959958.999185989028774, 959970.429153668112122, 959981.859132212470286, 959993.289121621404774, 960004.719121894915588, 960016.149133033002727, 960027.579155035666190, 960039.009187902673148, 960050.439231633557938, 960061.869286228786223, 960073.299351687892340, 960084.729428010876291, 960096.159515197388828, 960107.589613247662783, 960119.019722161348909, 960130.449841938447207, 960141.879972578957677, 960153.310114082414657, 960164.740266449050978, 960176.170429678400978, 960187.600603770464659, 960199.030788725474849, 960210.460984542733058, 960221.891191222355701, 960233.321408764575608, 960244.751637168810703, 960256.181876435293816, 960267.612126563559286, 960279.042387553839944, 960290.472659405670129, 960301.902942119049840, 960313.333235693979077, 960324.763540130225010, 960336.193855427787639, 960347.624181586434133, 960359.054518605815247, 960370.484866486629471, 960381.915225227829069, 960393.345594829879701, 960404.775975292315707, 960416.206366615137085, 960427.636768798576668, 960439.067181841935962, 960450.497605745447800, 960461.928040508646518, 960473.358486131997779, 960484.788942614803091, 960496.219409957411699, 960507.649888159357943, 960519.080377220758237, 960530.510877141379751, 960541.941387920989655, 960553.371909559820779, 960564.802442057407461, 960576.232985413749702, 960587.663539628614672, 960599.094104702468030, 960610.524680634378456, 960621.955267424578778, 960633.385865072952583, 960644.816473579267040, 960656.247092943871394, 960667.677723166067153, 960679.108364246087149, 960690.539016183698550, 960701.969678978435695, 960713.400352630997077, 960724.831037140451372, 960736.261732507264242, 960747.692438730970025, 960759.123155811568722, 960770.553883748711087, 960781.984622542629950, 960793.415372193441726, 960804.846132700215094, 960816.276904063415714, 960827.707686282810755, 960839.138479358167388, 960850.569283289718442, 960862.000098076998256, 960873.430923719774000, 960884.861760218278505, 960896.292607572278939, 960907.723465781193227, 960919.154334845719859, 960930.585214765509591, 960942.016105540096760, 960953.447007169714198, 960964.877919653896242, 960976.308842992642894, 960987.739777186186984, 960999.170722234062850, 961010.601678136270493, 961022.032644892344251, 961033.463622502749786, 961044.894610966905020, 961056.325610284809954, 961067.756620456813835, 961079.187641481985338, 961090.618673360790126, 961102.049716092995368, 961113.480769678601064, 961124.911834116908722, 961136.342909408384003, 961147.773995552794077, 961159.205092549906112, 961170.636200399603695, 961182.067319101886824, 961193.498448656406254, 961204.929589063394815, 961216.360740322619677, 961227.791902433848009, 961239.223075396846980, 961250.654259211849421, 961262.085453878389671, 961273.516659396700561, 961284.947875766316429, 961296.379102987237275, 961307.810341059346683, 961319.241589982877485, 961330.672849757014774, 961342.104120382224210, 961353.535401858272962, 961364.966694184695370, 961376.397997361957096, 961387.829311389359646, 961399.260636267135851, 961410.691971995052882, 961422.123318573110737, 961433.554676000843756, 961444.986044278601184, 961456.417423405917361, 961467.848813382908702, 961479.280214209342375, 961490.711625885218382, 961502.143048410303891, 961513.574481784366071, 961525.005926007637754, 961536.437381079420447, 961547.868847000179812, 961559.300323769450188, 961570.731811387464404, 961582.163309853640385, 961593.594819168210961, 961605.026339331059717, 961616.457870341720991, 961627.889412200427614, 961639.320964906946756, 961650.752528461045586, 961662.184102862724103, 961673.615688111982308, 961685.047284208820201, 961696.478891152539290, 961707.910508943372406, 961719.342137581203133, 961730.773777065798640, 961742.205427397508174, 961753.637088575633243, 961765.068760600173846, 961776.500443471362814, 961787.932137188734487, 961799.363841752288863, 961810.795557161793113, 961822.227283417247236, 961833.659020518418401, 961845.090768465539441, 961856.522527258028276, 961867.954296896117739, 961879.386077379458584, 961890.817868707817979, 961902.249670881661586, 961913.681483900290914, 961925.113307763938792, 961936.545142472139560, 961947.976988025126047, 961959.408844422432594, 961970.840711664292030, 961982.272589750471525, 961993.704478680621833, 962005.136378454975784, 962016.568289073184133, 962028.000210535246879, 962039.432142841164023, 962050.864085990469903, 962062.296039983397350, 962073.728004819480702, 962085.159980498719960, 962096.591967021347955, 962108.023964386666194, 962119.455972594907507, 962130.887991645955481, 962142.320021539577283, 962153.752062275889330, 962165.184113854658790, 962176.616176275652833, 962188.048249538638629, 962199.480333643616177, 962210.912428590818308, 962222.344534379546531, 962233.776651010266505, 962245.208778482512571, 962256.640916795935482, 962268.073065950768068, 962279.505225947126746, 962290.937396784313023, 962302.369578462559730, 962313.801770981634036, 962325.233974341535941, 962336.666188542032614, 962348.098413583124056, 962359.530649464810267, 962370.962896186392754, 962382.395153748337179, 962393.827422150294296, 962405.259701392031275, 962416.691991473897360, 962428.124292395194061, 962439.556604156154208, 962450.988926756777801, 962462.421260196366347, 962473.853604475385509, 962485.285959593602456, 962496.718325550784357, 962508.150702346698381, 962519.583089981577359, 962531.015488454606384, 962542.447897766716778, 962553.880317917093635, 962565.312748905504122, 962576.745190732413903, 962588.177643397124484, 962599.610106900101528, 962611.042581240646541, 962622.475066418759525, 962633.907562434673309, 962645.340069288155064, 962656.772586978739128, 962668.205115506541915, 962679.637654871563427, 962691.070205073454417, 962702.502766112447716, 962713.935337988077663, 962725.367920700344257, 962736.800514249247499, 962748.233118634321727, 962759.665733856032602, 962771.098359913681634, 962782.530996807501651, 962793.963644537026994, 962805.396303102606907, 962816.828972503542900, 962828.261652740417048, 962839.694343812763691, 962851.127045720349997, 962862.559758463175967, 962873.992482041241601, 962885.425216454081237, 962896.857961702160537, 962908.290717784548178, 962919.723484701942652, 962931.156262453645468, 962942.589051039773040, 962954.021850460325368, 962965.454660714953206, 962976.887481803656556, 962988.320313726435415, 962999.753156483056955, 963011.186010073055513, 963022.618874496896751, 963034.051749754115008, 963045.484635844943114, 963056.917532768682577, 963068.350440525799058, 963079.783359115477651, 963091.216288538649678, 963102.649228794034570, 963114.082179882330820, 963125.515141803305596, 963136.948114556493238, 963148.381098142126575, 963159.814092559739947, 963171.247097809799016, 963182.680113891372457, 963194.113140805158764, 963205.546178550226614, 963216.979227127158083, 963228.412286535254680, 963239.845356775098480, 963251.278437845990993, 963262.711529748165049, 963274.144632481387816, 963285.577746045426466, 963297.010870440048166, 963308.444005665485747, 963319.877151721506380, 963331.310308607877232, 963342.743476324598305, 963354.176654871553183, 963365.609844248276204, 963377.043044455116615, 963388.476255492074415, 963399.909477358451113, 963411.342710054479539, 963422.775953580159694, 963434.209207935025916, 963445.642473119078204, 963457.075749132316560, 963468.509035974973813, 963479.942333646118641, 963491.375642146100290, 963502.808961474453099, 963514.242291631759144, 963525.675632617552765, 963537.108984431368299, 963548.542347073438577, 963559.975720543763600, 963571.409104842110537, 963582.842499968013726, 963594.275905921705998, 963605.709322703187354, 963617.142750311642885, 963628.576188748003915, 963640.009638011455536, 963651.443098101997748, 963662.876569019630551, 963674.310050764353946, 963685.743543335469440, 963697.177046733442694, 963708.610560958273709, 963720.044086009263992, 963731.477621886413544, 963742.911168589955196, 963754.344726119539700, 963765.778294475167058, 963777.211873656488024, 963788.645463663502596, 963800.079064496210776, 963811.512676154612564, 963822.946298638242297, 963834.379931947099976, 963845.813576081185602, 963857.247231040266342, 963868.680896824342199, 963880.114573433180340, 963891.548260866431519, 963902.981959124328569, 963914.415668206987903, 963925.849388113711029, 963937.283118844730780, 963948.716860399814323, 963960.150612778961658, 963971.584375981939957, 963983.018150008516386, 963994.451934858923778, 964005.885730532696471, 964017.319537029834464, 964028.753354350221343, 964040.187182493857108, 964051.621021460392512, 964063.054871250060387, 964074.488731862395070, 964085.922603297396563, 964097.356485555064864, 964108.790378635167144, 964120.224282537703402, 964131.658197262207977, 964143.092122809146531, 964154.526059177820571, 964165.960006368113682, 964177.393964380491525, 964188.827933214604855, 964200.261912869988009, 964211.695903346873820, 964223.129904645262286, 964234.563916764454916, 964245.997939704917371, 964257.431973466183990, 964268.866018048254773, 964280.300073451129720, 964291.734139674575999, 964303.168216718244366, 964314.602304582600482, 964326.036403266829439, 964337.470512771396898, 964348.904633096070029, 964360.338764240383171, 964371.772906204569153, 964383.207058988395147, 964394.641222591861151, 964406.075397014501505, 964417.509582256549038, 964428.943778317770921, 964440.377985197817907, 964451.812202897155657, 964463.246431415202096, 964474.680670751724392, 964486.114920907188207, 964497.549181881127879, 964508.983453673077747, 964520.417736283503473, 964531.852029711939394, 964543.286333958385512, 964554.720649023074657, 964566.154974905075505, 964577.589311604737304, 964589.023659122292884, 964600.458017456927337, 964611.892386608873494, 964623.326766578131355, 964634.761157364468090, 964646.195558967883699, 964657.629971387912519, 964669.064394624787383, 964680.498828678042628, 964691.933273548143916, 964703.367729234392755, 964714.802195736672729, 964726.236673055449501, 964737.671161190140992, 964749.105660140514374, 964760.540169907035306, 964771.974690489005297, 964783.409221886424348, 964794.843764099525288, 964806.278317127842456, 964817.712880971375853, 964829.147455629892647, 964840.582041103392839, 964852.016637391760014, 964863.451244494761340, 964874.885862412513234, 964886.320491144782864, 964897.755130691337399, 964909.189781052176841, 964920.624442227068357, 964932.059114216011949, 964943.493797019007616, 964954.928490635822527, 964966.363195065991022, 964977.797910309978761, 964989.232636367436498, 965000.667373238131404, 965012.102120921947062, 965023.536879418883473, 965034.971648728940636, 965046.406428851885721, 965057.841219787253067, 965069.276021535508335, 965080.710834096185863, 965092.145657469285652, 965103.580491654807702, 965115.015336652286351, 965126.450192461605184, 965137.885059083229862, 965149.319936516578309, 965160.754824761417694, 965172.189723817980848, 965183.624633686034940, 965195.059554365347140, 965206.494485855917446, 965217.929428157513030, 965229.364381270133890, 965240.799345193780027, 965252.234319927985780, 965263.669305472634733, 965275.104301828192547, 965286.539308993844315, 965297.974326970055699, 965309.409355756361037, 965320.844395352527499, 965332.279445758787915, 965343.714506974909455, 965355.149579000659287, 965366.584661836037412, 965378.019755480811000, 965389.454859934980050, 965400.889975198428147, 965412.325101270922460, 965423.760238152579404, 965435.195385842933320, 965446.630544341984205, 965458.065713649732061, 965469.500893766176887, 965480.936084691085853, 965492.371286423993297, 965503.806498965364881, 965515.241722314502113, 965526.676956471870653, 965538.112201436655596, 965549.547457209788263, 965560.982723789988086, 965572.418001177953556, 965583.853289373219013, 965595.288588375784457, 965606.723898185184225, 965618.159218802116811, 965629.594550225418061, 965641.029892455786467, 965652.465245492756367, 965663.900609336327761, 965675.335983986151405, 965686.771369442460127, 965698.206765704904683, 965709.642172773485072, 965721.077590648201294, 965732.513019328354858, 965743.948458814411424, 965755.383909106138162, 965766.819370203302242, 965778.254842105903663, 965789.690324813709594, 965801.125818326603621, 965812.561322644818574, 965823.996837767539546, 965835.432363695232198, 965846.867900427663699, 965858.303447964601219, 965869.739006306044757, 965881.174575451761484, 965892.610155401751399, 965904.045746155781671, 965915.481347713852301, 965926.916960075730458, 965938.352583241066895, 965949.788217210327275, 965961.223861983162351, 965972.659517559339292, 965984.095183938858099, 965995.530861121253110, 966006.966549106989987, 966018.402247895603068, 966029.837957486859523, 966041.273677880992182, 966052.709409077768214, 966064.145151076721959, 966075.580903878202662, 966087.016667481744662, 966098.452441887464374, 966109.888227095361799, 966121.324023104971275, 966132.759829916525632, 966144.195647529559210, 966155.631475944072008, 966167.067315160064027, 966178.503165177302435, 966189.939025996020064, 966201.374897615518421, 966212.810780035913922, 966224.246673257206567, 966235.682577279279940, 966247.118492101668380, 966258.554417724837549, 966269.990354148321785, 966281.426301372121088, 966292.862259395769797, 966304.298228219500743, 966315.734207843313925, 966327.170198266743682, 966338.606199490022846, 966350.042211512569338, 966361.478234334615991, 966372.914267956279218, 966384.350312376860529, 966395.786367596592754, 966407.222433615243062, 966418.658510432811454, 966430.094598049065098, 966441.530696464003995, 966452.966805677162483, 966464.402925689006224, 966475.839056499069557, 966487.275198107003234, 966498.711350513272919, 966510.147513717296533, 966521.583687719074078, 966533.019872518838383, 966544.456068115890957, 966555.892274510464631, 966567.328491702326573, 966578.764719691476785, 966590.200958477682434, 966601.637208060710691, 966613.073468440794386, 966624.509739617584273, 966635.946021591080353, 966647.382314360933378, 966658.818617927143350, 966670.254932289943099, 966681.691257448634133, 966693.127593403449282, 966704.563940154155716, 966716.000297700753435, 966727.436666043009609, 966738.873045180691406, 966750.309435114264488, 966761.745835842681117, 966773.182247366406955, 966784.618669685558416, 966796.055102799669839, 966807.491546708275564, 966818.928001412074082, 966830.364466910134070, 966841.800943203154020, 966853.237430290435441, 966864.673928171978332, 966876.110436847549863, 966887.546956317382865, 966898.983486580895260, 966910.420027638552710, 966921.856579489773139, 966933.293142134789377, 966944.729715572902933, 966956.166299804812297, 966967.602894829586148, 966979.039500647922978, 966990.476117258891463, 967001.912744662957266, 967013.349382859887555, 967024.786031849216670, 967036.222691631293856, 967047.659362205653451, 967059.096043572411872, 967070.532735731336288, 967081.969438682426699, 967093.406152425450273, 967104.842876960407011, 967116.279612287064083, 967127.716358405421488, 967139.153115315013565, 967150.589883016073145, 967162.026661508600228, 967173.463450792012736, 967184.900250866543502, 967196.337061732076108, 967207.773883388377726, 967219.210715835448354, 967230.647559073055163, 967242.084413100965321, 967253.521277919411659, 967264.958153527928516, 967276.395039926515892, 967287.831937115406618, 967299.268845093902200, 967310.705763862119056, 967322.142693420057185, 967333.579633767600171, 967345.016584904282354, 967356.453546830569394, 967367.890519545762800, 967379.327503050328232, 967390.764497343567200, 967402.201502425712533, 967413.638518296764232, 967425.075544956023805, 967436.512582404189743, 967447.949630640214309, 967459.386689664795995, 967470.823759477585554, 967482.260840078350157, 967493.697931466856971, 967505.135033643105999, 967516.572146607097238, 967528.009270358830690, 967539.446404897607863, 967550.883550223894417, 967562.320706337457523, 967573.757873238064349, 967585.195050925598480, 967596.632239400059916, 967608.069438661099412, 967619.506648708716966, 967630.943869543145411, 967642.381101163686253, 967653.818343570572324, 967665.255596763570793, 967676.692860742681660, 967688.130135507672094, 967699.567421058309264, 967711.004717394826002, 967722.442024516640231, 967733.879342424217612, 967745.316671116976067, 967756.754010594915599, 967768.191360858036205, 967779.628721906105056, 967791.066093739122152, 967802.503476356854662, 967813.940869759302586, 967825.378273946233094, 967836.815688917413354, 967848.253114673076198, 967859.690551212639548, 967871.127998536569066, 967882.565456644282676, 967894.002925535780378, 967905.440405211062171, 967916.877895669895224, 967928.315396912279539, 967939.752908937982284, 967951.190431747003458, 967962.627965338877402, 967974.065509714069776, 967985.503064872114919, 967996.940630812663585, 968008.378207535948604, 968019.815795041853562, 968031.253393330145627, 968042.691002400824800, 968054.128622253891081, 968065.566252888878807, 968077.003894305555150, 968088.441546504385769, 968099.879209484905005, 968111.316883247112855, 968122.754567790543661, 968134.192263115546666, 968145.629969221656211, 968157.067686108988710, 968168.505413777544163, 968179.943152226856910, 968191.380901456926949, 968202.818661467754282, 968214.256432259106077, 968225.694213830982335, 968237.132006183150224, 968248.569809315609746, 968260.007623227895238, 968271.445447920355946, 968282.883283392759040, 968294.321129644755274, 968305.758986676577479, 968317.196854487759992, 968328.634733078302816, 968340.072622448438779, 968351.510522597469389, 968362.948433525627479, 968374.386355232680216, 968385.824287718627602, 968397.262230983469635, 968408.700185026391409, 968420.138149848091416, 968431.576125448220409, 968443.014111826545559, 968454.452108983066864, 968465.890116917318664, 968477.328135629766621, 968488.766165119945072, 968500.204205387621187, 968511.642256433027796, 968523.080318255699240, 968534.518390855868347, 968545.956474232953042, 968557.394568387418985, 968568.832673318684101, 968580.270789026748389, 968591.708915511844680, 968603.147052773274481, 968614.585200811503455, 968626.023359625833109, 968637.461529216496274, 968648.899709583260119, 968660.337900726124644, 968671.776102644857019, 968683.214315339340828, 968694.652538809576072, 968706.090773055446334, 968717.529018076718785, 968728.967273873393424, 968740.405540445237420, 968751.843817792250775, 968763.282105914200656, 968774.720404811087064, 968786.158714482677169, 968797.597034928970970, 968809.035366149735637, 968820.473708144621924, 968831.912060914095491, 968843.350424457807094, 968854.788798775523901, 968866.227183867245913, 968877.665579732740298, 968889.103986372007057, 968900.542403784580529, 968911.980831971159205, 968923.419270930578932, 968934.857720663538203, 968946.296181169571355, 968957.734652448678389, 968969.173134500510059, 968980.611627325299196, 968992.050130922696553, 969003.488645292702131, 969014.927170435083099, 969026.365706349839456, 969037.804253036738373, 969049.242810495779850, 969060.681378726731054, 969072.119957729591988, 969083.558547504129820, 969094.997148050344549, 969106.435759368119761, 969117.874381457222626, 969129.313014317536727, 969140.751657949062064, 969152.190312351798639, 969163.628977525280789, 969175.067653469508514, 969186.506340184714645, 969197.945037670200691, 969209.383745926199481, 969220.822464952711016, 969232.261194749502465, 969243.699935315991752, 969255.138686652877368, 969266.577448759577237, 969278.016221636091359, 969289.455005282186903, 969300.893799697863869, 969312.332604882889427, 969323.771420837030746, 969335.210247560753487, 969346.649085053359158, 969358.087933315080591, 969369.526792345452122, 969380.965662144357339, 969392.404542712029070, 969403.843434048583731, 969415.282336153090000, 969426.721249026013538, 969438.160172667121515, 969449.599107075948268, 969461.038052252959460, 969472.477008197922260, 969483.915974910371006, 969495.354952390305698, 969506.793940637726337, 969518.232939652516507, 969529.671949434443377, 969541.110969983623363, 969552.550001299823634, 969563.989043382811360, 969575.428096232353710, 969586.867159848683514, 969598.306234231800772, 969609.745319381006993, 969621.184415296767838, 969632.623521978384815, 969644.062639426323585, 969655.501767640002072, 969666.940906619653106, 969678.380056364694610, 969689.819216875825077, 969701.258388152113184, 969712.697570193791762, 969724.136763000860810, 969735.575966573087499, 969747.015180910238996, 969758.454406012315303, 969769.893641879083589, 969781.332888510776684, 969792.772145906579681, 969804.211414066958241, 969815.650692991795950, 969827.089982680859976, 969838.529283133917488, 969849.968594351201318, 969861.407916332012974, 969872.847249076585285, 969884.286592584918253, 969895.725946856779046, 969907.165311891934834, 969918.604687690385617, 969930.044074252014980, 969941.483471576590091, 969952.922879664227366, 969964.362298514693975, 969975.801728127757087, 969987.241168503416702, 969998.680619641672820, 970010.120081542292610, 970021.559554205043241, 970032.999037629924715, 970044.438531816937029, 970055.878036765614524, 970067.317552476073615, 970078.757078948314302, 970090.196616181987338, 970101.636164177092724, 970113.075722933630459, 970124.515292451367714, 970135.954872730071656, 970147.394463769742288, 970158.834065570379607, 970170.273678131750785, 970181.713301453622989, 970193.152935535996221, 970204.592580378754064, 970216.032235981663689, 970227.471902345074341, 970238.911579468287528, 970250.351267351303250, 970261.790965994354337, 970273.230675396975130, 970284.670395559165627, 970296.110126480925828, 970307.549868161790073, 970318.989620602224022, 970330.429383801529184, 970341.869157759589143, 970353.308942476869561, 970364.748737952788360, 970376.188544187578373, 970387.628361180773936, 970399.068188932142220, 970410.508027442148887, 970421.947876710095443, 970433.387736736447550, 970444.827607520506717, 970456.267489062272944, 970467.707381361979060, 970479.147284419042990, 970490.587198233697563, 970502.027122805826366, 970513.467058135196567, 970524.907004221575335, 970536.346961065195501, 970547.786928665591404, 970559.226907022995874, 970570.666896136710420, 970582.106896007200703, 970593.546906634233892, 970604.986928017577156, 970616.426960156881250, 970627.867003052379005, 970639.307056703954004, 970650.747121111373417, 970662.187196274404414, 970673.627282193279825, 970685.067378867533989, 970696.507486297399737, 970707.947604482178576, 970719.387733422336169, 970730.827873117639683, 970742.268023567856289, 970753.708184772869572, 970765.148356732679531, 970776.588539446936920, 970788.028732915874571, 970799.468937139026821, 970810.909152116393670, 970822.349377847975120, 970833.789614333305508, 970845.229861572850496, 970856.670119566144422, 970868.110388313187286, 970879.550667813746259, 970890.990958067472093, 970902.431259074830450, 970913.871570835239254, 970925.311893348698504, 970936.752226615208201, 970948.192570634768344, 970959.632925406913273, 970971.073290931642987, 970982.513667208957486, 970993.954054238623939, 971005.394452020642348, 971016.834860554779880, 971028.275279840687290, 971039.715709878830239, 971051.156150668859482, 971062.596602210542187, 971074.037064503645524, 971085.477537548402324, 971096.918021344579756, 971108.358515891944990, 971119.799021190265194, 971131.239537239773199, 971142.680064040236175, 971154.120601591188461, 971165.561149893095717, 971177.001708945375867, 971188.442278748261742, 971199.882859301171266, 971211.323450604570098, 971222.764052657992579, 971234.204665461438708, 971245.645289014442824, 971257.085923317470588, 971268.526568370056339, 971279.967224172200076, 971291.407890723668970, 971302.848568024463020, 971314.289256074232981, 971325.729954873211682, 971337.170664421282709, 971348.611384717980400, 971360.052115763304755, 971371.492857557488605, 971382.933610099833459, 971394.374373390572146, 971405.815147429704666, 971417.255932216998190, 971428.696727752219886, 971440.137534035136923, 971451.578351065865718, 971463.019178844639100, 971474.460017370642163, 971485.900866644107737, 971497.341726665035821, 971508.782597432960756, 971520.223478948115371, 971531.664371210266836, 971543.105274219182320, 971554.546187974861823, 971565.987112477072515, 971577.428047725814395, 971588.868993720971048, 971600.309950462542474, 971611.750917950179428, 971623.191896183649078, 971634.632885163184255, 971646.073884888784960, 971657.514895359752700, 971668.955916576553136, 971680.396948538720608, 971691.837991246255115, 971703.279044698923826, 971714.720108896726742, 971726.161183839547448, 971737.602269527153112, 971749.043365959892981, 971760.484473137068562, 971771.925591058912687, 971783.366719724959694, 971794.807859135442413, 971806.249009290128015, 971817.690170188783668, 971829.131341831409372, 971840.572524218237959, 971852.013717348570935, 971863.454921222291887, 971874.896135839633644, 971886.337361200479791, 971897.778597304364666, 971909.219844151753932, 971920.661101741949096, 971932.102370075182989, 971943.543649151222780, 971954.984938970068470, 971966.426239531254396, 971977.867550835013390, 971989.308872881112620, 972000.750205669435672, 972012.191549199982546, 972023.632903472403996, 972035.074268486932851, 972046.515644243103452, 972057.957030740682967, 972069.398427980137058, 972080.839835960767232, 972092.281254683039151, 972103.722684146254323, 972115.164124350645579, 972126.605575295747258, 972138.047036981908605, 972149.488509408663958, 972160.929992576362565, 972172.371486484305933, 972183.812991132726893, 972195.254506521392614, 972206.696032650303096, 972218.137569519225508, 972229.579117128159851, 972241.020675476640463, 972252.462244565133005, 972263.903824392938986, 972275.345414960174821, 972286.787016266840510, 972298.228628312819637, 972309.670251097879373, 972321.111884622019716, 972332.553528885007836, 972343.995183886843733, 972355.436849627294578, 972366.878526106127538, 972378.320213323342614, 972389.761911279172637, 972401.203619972919114, 972412.645339404931292, 972424.087069574743509, 972435.528810482705012, 972446.970562128117308, 972458.412324511446059, 972469.854097631992772, 972481.295881489990279, 972492.737676085438579, 972504.179481417639181, 972515.621297487290576, 972527.063124293927103, 972538.504961837083101, 972549.946810116991401, 972561.388669133302756, 972572.830538886482827, 972584.272419375716709, 972595.714310601470061, 972607.156212563277222, 972618.598125260905363, 972630.040048694587313, 972641.481982863857411, 972652.923927768948488, 972664.365883409627713, 972675.807849785662256, 972687.249826897052117, 972698.691814743448049, 972710.133813325082883, 972721.575822641607374, 972733.017842693021521, 972744.459873479325324, 972755.901915000053123, 972767.343967255437747, 972778.786030245246366, 972790.228103969246149, 972801.670188427437097, 972813.112283619586378, 972824.554389545693994, 972835.996506205643527, 972847.438633599434979, 972858.880771726486273, 972870.322920587263070, 972881.765080181532539, 972893.207250508596189, 972904.649431569152512, 972916.091623362735845, 972927.533825888880529, 972938.976039148052223, 972950.418263140018098, 972961.860497864312492, 972973.302743321051821, 972984.744999510003254, 972996.187266431516036, 973007.629544084658846, 973019.071832470130175, 973030.514131587464362, 973041.956441436428577, 973053.398762017022818, 973064.841093329014257, 973076.283435372635722, 973087.725788147421554, 973099.168151653604582, 973110.610525890369900, 973122.052910858415999, 973133.495306557160802, 973144.937712986604311, 973156.380130146746524, 973167.822558037354611, 973179.264996658195741, 973190.707446009269916, 973202.149906090809964, 973213.592376901884563, 973225.034858443192206, 973236.477350714267232, 973247.919853714760393, 973259.362367445137352, 973270.804891904816031, 973282.247427093796432, 973293.689973012078553, 973305.132529659196734, 973316.575097035616636, 973328.017675140639767, 973339.460263974498957, 973350.902863537194207, 973362.345473828259856, 973373.788094847695902, 973385.230726595385931, 973396.673369071329944, 973408.116022275411524, 973419.558686207165010, 973431.001360867056064, 973442.444046254386194, 973453.886742369621061, 973465.329449212062173, 973476.772166782175191, 973488.214895079261623, 973499.657634103554301, 973511.100383854820393, 973522.543144333176315, 973533.985915538156405, 973545.428697469877079, 973556.871490128105506, 973568.314293512841687, 973579.757107624085620, 973591.199932461371645, 973602.642768024699762, 973614.085614314069971, 973625.528471329249442, 973636.971339070238173, 973648.414217537036166, 973659.857106729410589, 973671.300006646779366, 973682.742917289608158, 973694.185838657780550, 973705.628770751063712, 973717.071713568991981, 973728.514667112031020, 973739.957631379715167, 973751.400606371811591, 973762.843592088553123, 973774.286588529939763, 973785.729595695273019, 973797.172613584785722, 973808.615642198361456, 973820.058681535767391, 973831.501731597119942, 973842.944792382186279, 973854.387863890733570, 973865.830946122761816, 973877.274039078038186, 973888.717142756795511, 973900.160257158568129, 973911.603382283356041, 973923.046518130926415, 973934.489664701279253, 973945.932821994065307, 973957.375990009517409, 973968.819168747519143, 973980.262358207837678, 973991.705558390473016, 974003.148769294959493, 974014.591990921529941, 974026.035223269951530, 974037.478466339991428, 974048.921720131649636, 974060.364984644926153, 974071.808259879588149, 974083.251545835286379, 974094.694842512253672, 974106.138149910606444, 974117.581468029646203, 974129.024796869372949, 974140.468136430019513, 974151.911486711120233, 974163.354847712675110, 974174.798219434684142, 974186.241601876681671, 974197.684995039133355, 974209.128398921340704, 974220.571813523652963, 974232.015238845604472, 974243.458674887311645, 974254.902121648308821, 974266.345579129061662, 974277.789047329104505, 974289.232526248204522, 974300.676015886361711, 974312.119516243576072, 974323.563027319847606, 974335.006549114477821, 974346.450081627932377, 974357.893624859862030, 974369.337178810499609, 974380.780743479030207, 974392.224318865686655, 974403.667904970701784, 974415.111501793609932, 974426.555109334411100, 974437.998727592639625, 974449.442356568761170, 974460.885996262077242, 974472.329646672820672, 974483.773307800991461, 974495.216979646123946, 974506.660662208334543, 974518.104355487623252, 974529.548059483407997, 974540.991774196154438, 974552.435499625164084, 974563.879235770902596, 974575.322982632671483, 974586.766740210936405, 974598.210508505231701, 974609.654287515557371, 974621.098077241680585, 974632.541877683368511, 974643.985688840970397, 974655.429510714020580, 974666.873343302635476, 974678.317186606349424, 974689.761040625395253, 974701.204905359307304, 974712.648780808318406, 974724.092666972195730, 974735.536563850939274, 974746.980471444083378, 974758.424389751628041, 974769.868318773806095, 974781.312258510035463, 974792.756208960316144, 974804.200170124764554, 974815.644142003380693, 974827.088124595698901, 974838.532117901486345, 974849.976121920975856, 974861.420136653934605, 974872.864162100362591, 974884.308198259794153, 974895.752245132694952, 974907.196302718366496, 974918.640371016692370, 974930.084450028138235, 974941.528539752122015, 974952.972640188643709, 974964.416751337470487, 974975.860873198835179, 974987.305005772504956, 974998.749149057781324, 975010.193303055362776, 975021.637467765016481, 975033.081643186043948, 975044.525829318910837, 975055.970026163035072, 975067.414233718649484, 975078.858451985637657, 975090.302680963766761, 975101.746920653036796, 975113.191171053214930, 975124.635432164068334, 975136.079703985597007, 975147.523986518033780, 975158.968279760680161, 975170.412583714001812, 975181.856898377067409, 975193.301223750459030, 975204.745559834176674, 975216.189906627405435, 975227.634264130610973, 975239.078632343560457, 975250.523011266021058, 975261.967400897992775, 975273.411801239009947, 975284.856212289538234, 975296.300634049111977, 975307.745066517731175, 975319.189509694930166, 975330.633963581174612, 975342.078428175882436, 975353.522903479286470, 975364.967389491037466, 975376.411886211135425, 975387.856393639347516, 975399.300911775673740, 975410.745440619881265, 975422.189980171970092, 975433.634530431707390, 975445.079091399325989, 975456.523663074127398, 975467.968245456577279, 975479.412838546093553, 975490.857442342909053, 975502.302056846674532, 975513.746682057389989, 975525.191317975055426, 975536.635964598972350, 975548.080621929839253, 975559.525289967190474, 975570.969968710793182, 975582.414658160647377, 975593.859358316753060, 975605.304069178644568, 975616.748790746438317, 975628.193523020134307, 975639.638265999383293, 975651.083019684185274, 975662.527784074773081, 975673.972559170215391, 975685.417344970977865, 975696.862141477060504, 975708.306948687764816, 975719.751766603789292, 975731.196595224202611, 975742.641434549237601, 975754.086284579010680, 975765.531145313056186, 975776.976016751257703, 975788.420898893848062, 975799.865791740361601, 975811.310695291031152, 975822.755609545391053, 975834.200534503441304, 975845.645470165181905, 975857.090416530380026, 975868.535373598802835, 975879.980341370450333, 975891.425319845438935, 975902.870309023535810, 975914.315308904391713, 975925.760319488006644, 975937.205340774380602, 975948.650372763280757, 975960.095415454474278, 975971.540468848193996, 975982.985532944207080, 975994.430607742280699, 976005.875693242414854, 976017.320789444376715, 976028.765896348166279, 976040.211013953434303, 976051.656142260180786, 976063.101281268754974, 976074.546430978225544, 976085.991591389058158, 976097.436762501019984, 976108.881944313878193, 976120.327136827632785, 976131.772340042283759, 976143.217553957365453, 976154.662778572877869, 976166.108013889053836, 976177.553259905078448, 976188.998516621650197, 976200.443784037954174, 976211.889062154456042, 976223.334350970690139, 976234.779650486889295, 976246.224960702355020, 976257.670281617320143, 976269.115613231784664, 976280.560955545282923, 976292.006308558280580, 976303.451672270079143, 976314.897046680562198, 976326.342431790195405, 976337.787827598163858, 976349.233234105166048, 976360.678651310270652, 976372.124079213943332, 976383.569517815485597, 976395.014967115363106, 976406.460427113343030, 976417.905897808959708, 976429.351379202445969, 976440.796871293568984, 976452.242374081979506, 976463.687887568143196, 976475.133411751477979, 976486.578946632216685, 976498.024492209660821, 976509.470048484276049, 976520.915615455829538, 976532.361193124088459, 976543.806781488819979, 976555.252380550024100, 976566.697990307933651, 976578.143610761850141, 976589.589241911889985, 976601.034883758053184, 976612.480536300223321, 976623.926199537934735, 976635.371873471653089, 976646.817558100912720, 976658.263253425480798, 976669.708959445590153, 976681.154676161007956, 976692.600403571268544, 976704.046141676604748, 976715.491890477016568, 976726.937649972038344, 976738.383420161786489, 976749.829201046261005, 976761.274992624879815, 976772.720794898108579, 976784.166607865481637, 976795.612431526998989, 976807.058265882194974, 976818.504110931768082, 976829.949966674786992, 976841.395833111484535, 976852.841710241627879, 976864.287598065217026, 976875.733496582135558, 976887.179405792150646, 976898.625325695378706, 976910.071256291586906, 976921.517197580542415, 976932.963149562245235, 976944.409112236462533, 976955.855085603427142, 976967.301069662673399, 976978.747064414201304, 976990.193069857778028, 977001.639085993403569, 977013.085112820961513, 977024.531150340451859, 977035.977198551758192, 977047.423257454414852, 977058.869327048654668, 977070.315407334011979, 977081.761498310952447, 977093.207599978777580, 977104.653712337720208, 977116.099835387547500, 977127.545969128259458, 977138.992113559623249, 977150.438268681289628, 977161.884434493491426, 977173.330610996112227, 977184.776798188919201, 977196.222996071679518, 977207.669204644858837, 977219.115423907525837, 977230.561653860146180, 977242.007894502254203, 977253.454145834082738, 977264.900407855166122, 977276.346680565504357, 977287.792963964981027, 977299.239258053828962, 977310.685562831233256, 977322.131878297892399, 977333.578204453107901, 977345.024541296879761, 977356.470888829207979, 977367.917247049859725, 977379.363615958834998, 977390.809995555900969, 977402.256385841057636, 977413.702786814305000, 977425.149198475177400, 977436.595620823558420, 977448.042053859913722, 977459.488497583661228, 977470.934951994800940, 977482.381417092867196, 977493.827892878325656, 977505.274379350710660, 977516.720876510022208, 977528.167384356027469, 977539.613902888959274, 977551.060432108351961, 977562.506972013972700, 977573.953522605937906, 977585.400083884247579, 977596.846655849018134, 977608.293238499318250, 977619.739831835613586, 977631.186435857671313, 977642.633050565258600, 977654.079675958608277, 977665.526312037254684, 977676.972958801197819, 977688.419616250204854, 977699.866284384275787, 977711.312963203527033, 977722.759652707492933, 977734.206352896289900, 977745.653063769685104, 977757.099785327445716, 977768.546517569571733, 977779.993260496295989, 977791.440014106919989, 977802.886778401676565, 977814.333553380332887, 977825.780339042888954, 977837.227135388879105, 977848.673942418652587, 977860.120760131743737, 977871.567588528268971, 977883.014427608228289, 977894.461277371156029, 977905.908137817285024, 977917.355008946149610, 977928.801890757982619, 977940.248783252318390, 977951.695686429156922, 977963.142600288498215, 977974.589524830342270, 977986.036460054223426, 977997.483405960258096, 978008.930362548213452, 978020.377329818205908, 978031.824307769769803, 978043.271296403137967, 978054.718295718077570, 978066.165305714122951, 978077.612326391972601, 978089.059357750695199, 978100.506399790523574, 978111.953452511224896, 978123.400515913031995, 978134.847589995129965, 978146.294674758450128, 978157.741770201944746, 978169.188876325846650, 978180.635993130155839, 978192.083120614406653, 978203.530258778831922, 978214.977407623198815, 978226.424567147507332, 978237.871737351291813, 978249.318918235017918, 978260.766109797754325, 978272.213312040315941, 978283.660524961771443, 978295.107748562470078, 978306.554982842179015, 978318.002227801131085, 978329.449483438394964, 978340.896749754669145, 978352.344026749487966, 978363.791314422618598, 978375.238612774061039, 978386.685921803815290, 978398.133241511881351, 978409.580571897444315, 978421.027912961202674, 978432.475264702807181, 978443.922627122025006, 978455.370000218856148, 978466.817383993067779, 978478.264778444427066, 978489.712183573166840, 978501.159599379054271, 978512.607025861623697, 978524.054463021340780, 978535.501910857507028, 978546.949369370588101, 978558.396838560001925, 978569.844318425981328, 978581.291808967944235, 978592.739310186356306, 978604.186822080751881, 978615.634344651363790, 978627.081877897493541, 978638.529421819373965, 978649.976976417005062, 978661.424541689921170, 978672.872117638355121, 978684.319704261841252, 978695.767301560728811, 978707.214909534552135, 978718.662528183427639, 978730.110157506889664, 978741.557797505403869, 978753.005448178038932, 978764.453109525493346, 978775.900781547068618, 978787.348464242997579, 978798.796157613047399, 978810.243861657218076, 978821.691576375043951, 978833.139301766641438, 978844.587037832010537, 978856.034784571034834, 978867.482541983481497, 978878.930310069117695, 978890.378088827943429, 978901.825878259958699, 978913.273678365163505, 978924.721489143092185, 978936.169310593744740, 978947.617142716888338, 978959.064985512755811, 978970.512838980997913, 978981.960703121381812, 978993.408577934023924, 979004.856463418924250, 979016.304359575849958, 979027.752266404335387, 979039.200183904613368, 979050.648112076683901, 979062.096050920081325, 979073.544000435038470, 979084.991960621089675, 979096.439931478467770, 979107.887913006707095, 979119.335905205924064, 979130.783908075885847, 979142.231921616708860, 979153.679945828160271, 979165.127980710007250, 979176.576026262249798, 979188.024082484655082, 979199.472149377455935, 979210.920226940186694, 979222.368315172614530, 979233.816414074972272, 979245.264523647027090, 979256.712643888429739, 979268.160774799645878, 979279.608916380093433, 979291.057068629772402, 979302.505231548217125, 979313.953405136126094, 979325.401589392800815, 979336.849784318008460, 979348.297989912214689, 979359.746206174721010, 979371.194433105993085, 979382.642670705099590, 979394.090918972622603, 979405.539177908329293, 979416.987447512103245, 979428.435727783478796, 979439.884018722688779, 979451.332320329500362, 979462.780632603913546, 979474.228955545695499, 979485.677289154846221, 979497.125633431132883, 979508.573988374322653, 979520.022353984648362, 979531.470730261760764, 979542.919117205659859, 979554.367514815996401, 979565.815923093003221, 979577.264342036214657, 979588.712771645863540, 979600.161211921484210, 979611.609662863542326, 979623.058124471106566, 979634.506596744642593, 979645.955079683917575, 979657.403573288698681, 979668.852077558985911, 979680.300592494430020, 979691.749118095496669, 979703.197654361370951, 979714.646201292518526, 979726.094758888473734, 979737.543327149236575, 979748.991906074574217, 979760.440495664719492, 979771.889095919206738, 979783.337706837803125, 979794.786328420741484, 979806.234960667788982, 979817.683603578829207, 979829.132257153862156, 979840.580921392538585, 979852.029596294858493, 979863.478281860821880, 979874.926978089963086, 979886.375684982747771, 979897.824402538710274, 979909.273130757617764, 979920.721869639470242, 979932.170619184267707, 979943.619379391777329, 979955.068150261649862, 979966.516931794350967, 979977.965723989298567, 979989.414526846725494, 980000.863340366398916, 980012.312164547853172, 980023.760999391321093, 980035.209844896802679, 980046.658701063832268, 980058.107567892409861, 980069.556445382535458, 980081.005333534209058, 980092.454232346965000, 980103.903141820919700, 980115.352061955840327, 980126.800992751843296, 980138.249934208462946, 980149.698886326164939, 980161.147849104017951, 980172.596822542487644, 980184.045806641341187, 980195.494801400345750, 980206.943806819501333, 980218.392822898807935, 980229.841849638032727, 980241.290887036826462, 980252.739935095189139, 980264.188993813470006, 980275.638063190970570, 980287.087143227923661, 980298.536233924096450, 980309.985335279488936, 980321.434447293868288, 980332.883569966768846, 980344.332703298889101, 980355.781847289297730, 980367.231001938227564, 980378.680167245795019, 980390.129343211534433, 980401.578529835562222, 980413.027727117645554, 980424.476935057784431, 980435.926153655746020, 980447.375382911297493, 980458.824622824671678, 980470.273873395402916, 980481.723134623724036, 980493.172406509169377, 980504.621689051738940, 980516.070982251549140, 980527.520286108134314, 980538.969600621610880, 980550.418925791746005, 980561.868261618772522, 980573.317608101991937, 980584.766965241869912, 980596.216333037707955, 980607.665711489971727, 980619.115100597962737, 980630.564500362146646, 980642.013910782057792, 980653.463331857696176, 980664.912763588712551, 980676.362205975339748, 980687.811659017461352, 980699.261122714611702, 980710.710597067023627, 980722.160082074464299, 980733.609577736700885, 980745.059084053966217, 980756.508601025794633, 980767.958128652186133, 980779.407666932907887, 980790.857215867959894, 980802.306775457225740, 980813.756345700705424, 980825.205926598282531, 980836.655518149491400, 980848.105120354564860, 980859.554733213502914, 980871.004356725839898, 980882.453990891575813, 980893.903635710477829, 980905.353291182778776, 980916.802957308012992, 980928.252634086413309, 980939.702321517397650, 980951.152019601431675, 980962.601728337933309, 980974.051447727135383, 980985.501177768572234, 980996.950918462243862, 981008.400669808383100, 981019.850431806291454, 981031.300204456434585, 981042.749987757881172, 981054.199781711562537, 981065.649586316780187, 981077.099401573301293, 981088.549227481242269, 981099.999064040603116, 981111.448911251034588, 981122.898769112536684, 981134.348637625109404, 981145.798516788287088, 981157.248406602302566, 981168.698307066923007, 981180.148218181915581, 981191.598139947280288, 981203.048072363017127, 981214.498015428660437, 981225.947969144326635, 981237.397933510015719, 981248.847908525611274, 981260.297894190880470, 981271.747890505590476, 981283.197897469974123, 981294.647915083332919, 981306.097943346132524, 981317.547982258140109, 981328.998031819122843, 981340.448092028847896, 981351.898162887548096, 981363.348244394641370, 981374.798336550360546, 981386.248439354822040, 981397.698552807327360, 981409.148676908109337, 981420.598811656935140, 981432.048957053804770, 981443.499113098485395, 981454.949279790977016, 981466.399457131279632, 981477.849645118694752, 981489.299843753920868, 981500.750053036259487, 981512.200272965827025, 981523.650503542390652, 981535.100744765833952, 981546.550996636389755, 981558.001259153592400, 981569.451532317441888, 981580.901816127705388, 981592.352110584382899, 981603.802415687474422, 981615.252731436514296, 981626.703057831735350, 981638.153394873137586, 981649.603742559673265, 981661.054100892506540, 981672.504469870822504, 981683.954849494853988, 981695.405239763902500, 981706.855640678433701, 981718.306052237981930, 981729.756474442547187, 981741.206907292129472, 981752.657350786263123, 981764.107804925413802, 981775.558269709115848, 981787.008745137020014, 981798.459231209591962, 981809.909727926249616, 981821.360235287225805, 981832.810753292054869, 981844.261281940736808, 981855.711821233271621, 981867.162371169426478, 981878.612931749201380, 981890.063502972596325, 981901.514084839145653, 981912.964677348849364, 981924.415280501707457, 981935.865894297603518, 981947.316518736304715, 981958.767153817927465, 981970.217799542006105, 981981.668455909006298, 981993.119122917996719, 982004.569800569443032, 982016.020488863345236, 982027.471187799004838, 982038.921897376887500, 982050.372617596294731, 982061.823348457692191, 982073.274089960730635, 982084.724842105177231, 982096.175604891148396, 982107.626378318411298, 982119.077162386965938, 982130.527957096579485, 982141.978762447019108, 982153.429578438284807, 982164.880405070376582, 982176.331242343061604, 982187.782090256107040, 982199.232948809745722, 982210.683818003395572, 982222.134697837289423, 982233.585588311543688, 982245.036489425459877, 982256.487401179270819, 982267.938323572976515, 982279.389256605878472, 982290.840200278675184, 982302.291154590668157, 982313.742119541857392, 982325.193095132242888, 982336.644081361591816, 982348.095078230137005, 982359.546085737063549, 982370.997103883069940, 982382.448132667341270, 982393.899172090343200, 982405.350222151610069, 982416.801282851141877, 982428.252354188705795, 982439.703436164301820, 982451.154528777929954, 982462.605632029357366, 982474.056745918351226, 982485.507870444911532, 982496.959005608689040, 982508.410151409916580, 982519.861307848710567, 982531.312474924372509, 982542.763652637135237, 982554.214840986533090, 982565.666039973031729, 982577.117249595932662, 982588.568469855468720, 982600.019700751407072, 982611.470942283747718, 982622.922194452257827, 982634.373457256588154, 982645.824730697437190, 982657.276014773757197, 982668.727309486013837, 982680.178614833741449, 982691.629930816940032, 982703.081257435842417, 982714.532594689982943, 982725.983942579128779, 982737.435301103512757, 982748.886670262669213, 982760.338050056830980, 982771.789440485765226, 982783.240841549122706, 982794.692253247136250, 982806.143675579456612, 982817.595108546083793, 982829.046552147017792, 982840.498006382025778, 982851.949471250642091, 982863.400946753332391, 982874.852432889863849, 982886.303929659770802, 982897.755437063286081, 982909.206955099944025, 982920.658483770093881, 982932.110023073269986, 982943.561573009588756, 982955.013133578817360, 982966.464704780722968, 982977.916286615538411, 982989.367879082798027, 983000.819482182734646, 983012.271095914882608, 983023.722720279241912, 983035.174355275812559, 983046.626000904361717, 983058.077657164772972, 983069.529324057046324, 983080.981001580832526, 983092.432689736364409, 983103.884388523409143, 983115.336097941733897, 983126.787817991338670, 983138.239548671990633, 983149.691289983456954, 983161.143041925970465, 983172.594804499531165, 983184.046577703440562, 983195.498361537931487, 983206.950156002887525, 983218.401961098075844, 983229.853776823612861, 983241.305603179265745, 983252.757440164801665, 983264.209287780220620, 983275.661146025522612, 983287.113014900474809, 983298.564894404844381, 983310.016784538631327, 983321.468685301835649, 983332.920596693991683, 983344.372518715448678, 983355.824451365973800, 983367.276394644984975, 983378.728348552947864, 983390.180313089629635, 983401.632288254797459, 983413.084274048451334, 983424.536270470125601, 983435.988277520285919, 983447.440295198233798, 983458.892323504202068, 983470.344362438190728, 983481.796411999734119, 983493.248472188948654, 983504.700543005601503, 983516.152624449576251, 983527.604716521105729, 983539.056819219491445, 983550.508932545199059, 983561.961056497762911, 983573.413191077183001, 983584.865336283226497, 983596.317492115660571, 983607.769658574718051, 983619.221835660398938, 983630.674023372121155, 983642.126221709884703, 983653.578430673805997, 983665.030650263652205, 983676.482880479423329, 983687.935121320653707, 983699.387372787808999, 983710.839634880190715, 983722.291907598031685, 983733.744190940866247, 983745.196484908927232, 983756.648789502214640, 983768.101104720146395, 983779.553430562955327, 983791.005767030525021, 983802.458114122622646, 983813.910471839248203, 983825.362840180168860, 983836.815219145151787, 983848.267608734429814, 983859.720008947537281, 983871.172419784707017, 983882.624841245706193, 983894.077273330069147, 983905.529716038261540, 983916.982169369701296, 983928.434633324621245, 983939.887107902439311, 983951.339593103853986, 983962.792088927933946, 983974.244595374912024, 983985.697112444788218, 983997.149640137096867, 984008.602178452070802, 984020.054727389477193, 984031.507286949083209, 984042.959857131121680, 984054.412437934777699, 984065.865029360749759, 984077.317631408688612, 984088.770244078128599, 984100.222867369302548, 984111.675501281977631, 984123.128145816153847, 984134.580800971598364, 984146.033466748311184, 984157.486143145593815, 984168.938830164377578, 984180.391527803731151, 984191.844236063770950, 984203.296954944496974, 984214.749684445792809, 984226.202424567658454, 984237.655175309395418, 984249.107936671469361, 984260.560708653647453, 984272.013491255929694, 984283.466284477850422, 984294.919088319409639, 984306.371902780607343, 984317.824727861443534, 984329.277563561452553, 984340.730409880750813, 984352.183266819105484, 984363.636134376865812, 984375.089012553333305, 984386.541901348507963, 984397.994800762622617, 984409.447710795211606, 984420.900631446274929, 984432.353562715579756, 984443.806504603358917, 984455.259457108913921, 984466.712420232710429, 984478.165393974399194, 984489.618378333980218, 984501.071373311104253, 984512.524378905771300, 984523.977395117981359, 984535.430421947734430, 984546.883459394564852, 984558.336507458472624, 984569.789566139224917, 984581.242635437054560, 984592.695715351728722, 984604.148805883014575, 984615.601907030912116, 984627.055018795072101, 984638.508141175494529, 984649.961274172295816, 984661.414417785475962, 984672.867572014336474, 984684.320736859110184, 984695.773912319564261, 984707.227098395931534, 984718.680295087746345, 984730.133502395008691, 984741.586720317485742, 984753.039948855177499, 984764.493188007967547, 984775.946437775623053, 984787.399698158260435, 984798.852969155646861, 984810.306250767782331, 984821.759542994201183, 984833.212845835369080, 984844.666159290587530, 984856.119483360089362, 984867.572818043641746, 984879.026163341244683, 984890.479519252432510, 984901.932885777554475, 984913.386262916377746, 984924.839650668785907, 984936.293049034313299, 984947.746458013192751, 984959.199877605424263, 984970.653307810542174, 984982.106748628546484, 984993.560200059670024, 985005.013662103447132, 985016.467134759644978, 985027.920618028496392, 985039.374111909768544, 985050.827616403112188, 985062.281131508760154, 985073.734657226596028, 985085.188193556154147, 985096.641740497667342, 985108.095298050669953, 985119.548866215627640, 985131.002444991841912, 985142.456034379545599, 985153.909634378273040, 985165.363244988257065, 985176.816866209497675, 985188.270498041179962, 985199.724140484002419, 985211.177793537615798, 985222.631457201787271, 985234.085131476284005, 985245.538816361106001, 985256.992511856486090, 985268.446217961725779, 985279.899934677057900, 985291.353662002482451, 985302.807399937533773, 985314.261148482211865, 985325.714907636283897, 985337.168677400099114, 985348.622457773191854, 985360.076248755445704, 985371.530050347093493, 985382.983862547669560, 985394.437685356941074, 985405.891518775140867, 985417.345362801803276, 985428.799217437393963, 985440.253082681214437, 985451.706958533497527, 985463.160844993777573, 985474.614742062170990, 985486.068649738677777, 985497.522568022948690, 985508.976496915216558, 985520.430436415015720, 985531.884386522346176, 985543.338347237207927, 985554.792318559368141, 985566.246300488826819, 985577.700293025118299, 985589.154296168708242, 985600.608309918898158, 985612.062334275804460, 985623.516369239427149, 985634.970414809649810, 985646.424470986472443, 985657.878537769429386, 985669.332615158753470, 985680.786703153979033, 985692.240801755106077, 985703.694910962134600, 985715.149030775064602, 985726.603161193430424, 985738.057302217464894, 985749.511453846935183, 985760.965616081492044, 985772.419788921368308, 985783.873972366447560, 985795.328166416264139, 985806.782371071050875, 985818.236586330342107, 985829.690812194603495, 985841.145048663369380, 985852.599295736406930, 985864.053553413716145, 985875.507821695064195, 985886.962100580683909, 985898.416390069993213, 985909.870690163224936, 985921.325000860495493, 985932.779322161106393, 985944.233654065290466, 985955.687996572814882, 985967.142349683679640, 985978.596713397651911, 985990.051087714731693, 986001.505472634453326, 986012.959868157515302, 986024.414274282753468, 986035.868691010866314, 986047.323118341504596, 986058.777556274435483, 986070.232004809542559, 986081.686463946825825, 986093.140933686518110, 986104.595414027688093, 986116.049904971034266, 986127.504406515625305, 986138.958918662159704, 986150.413441409938969, 986161.867974759195931, 986173.322518709697761, 986184.777073261328042, 986196.231638414086774, 986207.686214167624712, 986219.140800521941856, 986230.595397477038205, 986242.050005032680929, 986253.504623188870028, 986264.959251945372671, 986276.413891301956028, 986287.868541258852929, 986299.323201815597713, 986310.777872972423211, 986322.232554729096591, 986333.687247085035779, 986345.141950040939264, 986356.596663595992140, 986368.051387750660069, 986379.506122504477389, 986390.960867857444100, 986402.415623809327371, 986413.870390360127203, 986425.325167509610765, 986436.779955258010887, 986448.234753604629077, 986459.689562550163828, 986471.144382093334571, 986482.599212235305458, 986494.054052975028753, 986505.508904312970117, 986516.963766248663887, 986528.418638782342896, 986539.873521913541481, 986551.328415642259642, 986562.783319968264550, 986574.238234891789034, 986585.693160412600264, 986597.148096530232579, 986608.603043245035224, 986620.058000556542538, 986631.512968465103768, 986642.967946970020421, 986654.422936071525328, 986665.877935769618489, 986677.332946063834243, 986688.787966954172589, 986700.242998440866359, 986711.698040523449890, 986723.153093201690353, 986734.608156476053409, 986746.063230345607735, 986757.518314810935408, 986768.973409871570766, 986780.428515527397394, 986791.883631778648123, 986803.338758625090122, 986814.793896066024899, 986826.249044102150947, 986837.704202733002603, 986849.159371958347037, 986860.614551778417081, 986872.069742192747071, 986883.524943201337010, 986894.980154803837650, 986906.435377000714652, 986917.890609791618772, 986929.345853176317178, 986940.801107154577039, 986952.256371726631187, 986963.711646892013960, 986975.166932650958188, 986986.622229002998210, 986998.077535948366858, 987009.532853486598469, 987020.988181617925875, 987032.443520342349075, 987043.898869658820331, 987055.354229568270966, 987066.809600070351735, 987078.264981164596975, 987089.720372851239517, 987101.175775130046532, 987112.631188000785187, 987124.086611463455483, 987135.542045518057421, 987146.997490164358169, 987158.452945401892066, 987169.908411231357604, 987181.363887651707046, 987192.819374663871713, 987204.274872266803868, 987215.730380460969172, 987227.185899246134795, 987238.641428621835075, 987250.096968588535674, 987261.552519145538099, 987273.008080293075182, 987284.463652031146921, 987295.919234359287657, 987307.374827277497388, 987318.830430786008947, 987330.286044884007424, 987341.741669572191313, 987353.197304849978536, 987364.652950717136264, 987376.108607173897326, 987387.564274220261723, 987399.019951855530962, 987410.475640080170706, 987421.931338893482462, 987433.387048295931891, 987444.842768287053332, 987456.298498867079616, 987467.754240035428666, 987479.209991792333312, 987490.665754137444310, 987502.121527070994489, 987513.577310592751019, 987525.033104702248238, 987536.488909399718978, 987547.944724685163237, 987559.400550557882525, 987570.856387018575333, 987582.312234066310339, 987593.768091701553203, 987605.223959924071096, 987616.679838733514771, 987628.135728130117059, 987639.591628113761544, 987651.047538683982566, 987662.503459840780124, 987673.959391584387049, 987685.415333914104849, 987696.871286830399185, 987708.327250332804397, 987719.783224421320483, 987731.239209095947444, 987742.695204356219620, 987754.151210202253424, 987765.607226634048857, 987777.063253651489504, 987788.519291254342534, 987799.975339442375116, 987811.431398215587251, 987822.887467573978938, 987834.343547517317347, 987845.799638045602478, 987857.255739158601500, 987868.711850856314413, 987880.167973138275556, 987891.624106004950590, 987903.080249455757439, 987914.536403490928933, 987925.992568109882995, 987937.448743313085288, 987948.904929100070149, 987960.361125470837578, 987971.817332425154746, 987983.273549963021651, 987994.729778084205464, 988006.186016788939014, 988017.642266076756641, 988029.098525947658345, 988040.554796401294880, 988052.011077437899075, 988063.467369057354517, 988074.923671259428374, 988086.379984043887816, 988097.836307410965674, 988109.292641360196285, 988120.748985891579650, 988132.205341005115770, 988143.661706700571813, 988155.118082977714948, 988166.574469836778007, 988178.030867277411744, 988189.487275299616158, 988200.943693903042004, 988212.400123087689281, 988223.856562853790820, 988235.313013200880960, 988246.769474128959700, 988258.225945637794212, 988269.682427727384493, 988281.138920397497714, 988292.595423648133874, 988304.051937479060143, 988315.508461890509352, 988326.964996881899424, 988338.421542453463189, 988349.878098604851402, 988361.334665336064063, 988372.791242647334002, 988384.247830537962727, 988395.704429007950239, 988407.161038057529368, 988418.617657686234452, 988430.074287894065492, 988441.530928681255318, 988452.987580047105439, 988464.444241991732270, 988475.900914515135810, 988487.357597617199644, 988498.814291297690943, 988510.270995556609705, 988521.727710393723100, 988533.184435809031129, 988544.641171802300960, 988556.097918373532593, 988567.554675522493199, 988579.011443249415606, 988590.468221553834155, 988601.925010435516015, 988613.381809894577600, 988624.838619931251742, 988636.295440544723533, 988647.752271735225804, 988659.209113502991386, 988670.665965847088955, 988682.122828768217005, 988693.579702265909873, 988705.036586339934729, 988716.493480990291573, 988727.950386217213236, 988739.407302020001225, 988750.864228398771957, 988762.321165353525430, 988773.778112884145230, 988785.235070990398526, 988796.692039672052488, 988808.149018929339945, 988819.606008762260899, 988831.063009170116857, 988842.520020152907819, 988853.977041711099446, 988865.434073843993247, 988876.891116551589221, 988888.348169834120199, 988899.805233691004105, 988911.262308122473769, 988922.719393128179945, 988934.176488708122633, 988945.633594862301834, 988957.090711590484716, 988968.547838892438449, 988980.004976768395863, 988991.462125217891298, 989002.919284241157584, 989014.376453837496229, 989025.833634007372893, 989037.290824750438333, 989048.748026066459715, 989060.205237955786288, 989071.662460417952389, 989083.119693452725187, 989094.576937060337514, 989106.034191240323707, 989117.491455992916599, 989128.948731317883357, 989140.406017214991152, 989151.863313684007153, 989163.320620725397021, 989174.777938338462263, 989186.235266523319297, 989197.692605279735290, 989209.149954608059488, 989220.607314507360570, 989232.064684978337027, 989243.522066020290367, 989254.979457633453421, 989266.436859817593358, 989277.894272572710179, 989289.351695898571052, 989300.809129795175977, 989312.266574262059294, 989323.724029299337417, 989335.181494907243177, 989346.638971085194498, 989358.096457833191380, 989369.553955151233822, 989381.011463039088994, 989392.468981496989727, 989403.926510524237528, 989415.384050121065229, 989426.841600287472829, 989438.299161023227498, 989449.756732328096405, 989461.214314201846719, 989472.671906644827686, 989484.129509656573646, 989495.587123237201013, 989507.044747386244126, 989518.502382103935815, 989529.960027390043251, 989541.417683244799264, 989552.875349667272530, 989564.333026657928713, 989575.790714216767810, 989587.248412343324162, 989598.706121037597768, 989610.163840299705043, 989621.621570129180327, 989633.079310526140034, 989644.537061490351334, 989655.994823021814227, 989667.452595120063052, 989678.910377785563469, 989690.368171017849818, 989701.825974817154929, 989713.283789182780311, 989724.741614115191624, 989736.199449613690376, 989747.657295678742230, 989759.115152309765108, 989770.573019506991841, 989782.030897270073183, 989793.488785599241965, 989804.946684494032525, 989816.404593954444863, 989827.862513980478980, 989839.320444571669213, 989850.778385728481226, 989862.236337450216524, 989873.694299737107940, 989885.152272588922642, 989896.610256005544215, 989908.068249986972660, 989919.526254533091560, 989930.984269643668085, 989942.442295318702236, 989953.900331557961181, 989965.358378361444920, 989976.816435728920624, 989988.274503660621122, 989999.732582155847922, 990011.190671214833856, 990022.648770837578923, 990034.106881023850292, 990045.565001773298718, 990057.023133086157031, 990068.481274962308817, 990079.939427401521243, 990091.397590403328650, 990102.855763968429528, 990114.313948096125387, 990125.772142786416225, 990137.230348039069213, 990148.688563854317181, 990160.146790231694467, 990171.605027171433903, 990183.063274672953412, 990194.521532736718655, 990205.979801362147555, 990217.438080549240112, 990228.896370297996327, 990240.354670608416200, 990251.812981480034068, 990263.271302913082764, 990274.729634907096624, 990286.187977462541312, 990297.646330578718334, 990309.104694255627692, 990320.563068493269384, 990332.021453291526996, 990343.479848650167696, 990354.938254569540732, 990366.396671048947610, 990377.855098088621162, 990389.313535688328557, 990400.771983848069794, 990412.230442567379214, 990423.688911846489646, 990435.147391685401089, 990446.605882083647884, 990458.064383041462861, 990469.522894558380358, 990480.981416634283960, 990492.439949269406497, 990503.898492463631555, 990515.357046216493472, 990526.815610527992249, 990538.274185398127884, 990549.732770827133209, 990561.191366814076900, 990572.649973359424621, 990584.108590463176370, 990595.567218124400824, 990607.025856344029307, 990618.484505121246912, 990629.943164456286468, 990641.401834349031560, 990652.860514799249358, 990664.319205806474201, 990675.777907371404581, 990687.236619493342005, 990698.695342172286473, 990710.154075408237986, 990721.612819200730883, 990733.071573550230823, 990744.530338456272148, 990755.989113918854855, 990767.447899937629700, 990778.906696512596682, 990790.365503644105047, 990801.824321331223473, 990813.283149574650452, 990824.741988373687491, 990836.200837728567421, 990847.659697638824582, 990859.118568104691803, 990870.577449125936255, 990882.036340702325106, 990893.495242834091187, 990904.954155520652421, 990916.413078762241639, 990927.872012558742426, 990939.330956909689121, 990950.789911815547384, 990962.248877275618725, 990973.707853290135972, 990985.166839859099127, 990996.625836981809698, 991008.084844658966176, 991019.543862889870070, 991031.002891674521379, 991042.461931012920104, 991053.920980904949829, 991065.380041350377724, 991076.839112349087372, 991088.298193901311606, 991099.757286006584764, 991111.216388664674014, 991122.675501876045018, 991134.134625639999285, 991145.593759956769645, 991157.052904825890437, 991168.512060247827321, 991179.971226221881807, 991191.430402748170309, 991202.889589826692827, 991214.348787457332946, 991225.807995639857836, 991237.267214374034666, 991248.726443660096265, 991260.185683497576974, 991271.644933886476792, 991283.104194827028550, 991294.563466318533756, 991306.022748361458071, 991317.482040955335833, 991328.941344099934213, 991340.400657795369625, 991351.859982041642070, 991363.319316838402301, 991374.778662185883150, 991386.238018083386123, 991397.697384531144053, 991409.156761529156938, 991420.616149077424780, 991432.075547175249085, 991443.534955822862685, 991454.994375020498410, 991466.453804767457768, 991477.913245063857175, 991489.372695909696631, 991500.832157304859720, 991512.291629249113612, 991523.751111742458306, 991535.210604784660973, 991546.670108375488780, 991558.129622515174560, 991569.589147203485481, 991581.048682440188713, 991592.508228225284256, 991603.967784558772109, 991615.427351439953782, 991626.886928869411349, 991638.346516846911982, 991649.806115371873602, 991661.265724444761872, 991672.725344065343961, 991684.184974233387038, 991695.644614948658273, 991707.104266210924834, 991718.563928020652384, 991730.023600377375260, 991741.483283281093463, 991752.942976731341332, 991764.402680728235282, 991775.862395272008143, 991787.322120362077840, 991798.781855998677202, 991810.241602181340568, 991821.701358910067938, 991833.161126184859313, 991844.620904005714692, 991856.080692372168414, 991867.540491284686141, 991879.000300742336549, 991890.460120745818131, 991901.919951294432394, 991913.379792388062924, 991924.839644026942551, 991936.299506210954860, 991947.759378940099850, 991959.219262213679031, 991970.679156032158062, 991982.139060395304114, 991993.598975302651525, 992005.058900754433125, 992016.518836750648916, 992027.978783290600404, 992039.438740374986082, 992050.898708003107458, 992062.358686174848117, 992073.818674890440889, 992085.278674149769358, 992096.738683952367865, 992108.198704298236407, 992119.658735187374987, 992131.118776619783603, 992142.578828595229425, 992154.038891113479622, 992165.498964174534194, 992176.959047778393142, 992188.419141924590804, 992199.879246613476425, 992211.339361844584346, 992222.799487618030980, 992234.259623933350667, 992245.719770791009068, 992257.179928190307692, 992268.640096131479368, 992280.100274614524096, 992291.560463638976216, 992303.020663205068558, 992314.480873312335461, 992325.941093960776925, 992337.401325150625780, 992348.861566881067120, 992360.321819152566604, 992371.782081965007819, 992383.242355318157934, 992394.702639211784117, 992406.162933645886369, 992417.623238620464690, 992429.083554135053419, 992440.543880189885385, 992452.004216784727760, 992463.464563919580542, 992474.924921594210900, 992486.385289808269590, 992497.845668561989442, 992509.306057855486870, 992520.766457687830552, 992532.226868059718981, 992543.687288970686495, 992555.147720420965925, 992566.608162409858778, 992578.068614937597886, 992589.529078003950417, 992600.989551608916372, 992612.450035752262920, 992623.910530433990061, 992635.371035653981380, 992646.831551412236877, 992658.292077708174475, 992669.752614542259835, 992681.213161914260127, 992692.673719823942520, 992704.134288271074183, 992715.594867255655117, 992727.055456777452491, 992738.516056836931966, 992749.976667433162220, 992761.437288566608913, 992772.897920236457139, 992784.358562443638220, 992795.819215187337250, 992807.279878467787057, 992818.740552284521982, 992830.201236637774855, 992841.661931527080014, 992853.122636952670291, 992864.583352914080024, 992876.044079411542043, 992887.504816444590688, 992898.965564013691619, 992910.426322118146345, 992921.887090758071281, 992933.347869933233596, 992944.808659643982537, 992956.269459889619611, 992967.730270670144819, 992979.191091985790990, 992990.651923836325295, 993002.112766221514903, 993013.573619141126983, 993025.034482595161535, 993036.495356583851390, 993047.956241106498055, 993059.417136163334362, 993070.878041754011065, 993082.338957878993824, 993093.799884537700564, 993105.260821729898453, 993116.721769455820322, 993128.182727715233341, 993139.643696507904679, 993151.104675833834335, 993162.565665692789480, 993174.026666085002944, 993185.487677010009065, 993196.948698468040675, 993208.409730458282866, 993219.870772981434129, 993231.331826036912389, 993242.792889624950476, 993254.253963745082729, 993265.715048397309147, 993277.176143581629731, 993288.637249298044480, 993300.098365546087734, 993311.559492325759493, 993323.020629637059756, 993334.481777479988523, 993345.942935854080133, 993357.404104759451002, 993368.865284195868298, 993380.326474163448438, 993391.787674661958590, 993403.248885691398755, 993414.710107251303270, 993426.171339341672137, 993437.632581962738186, 993449.093835114268586, 993460.555098795797676, 993472.016373007558286, 993483.477657749550417, 993494.938953021191992, 993506.400258822715841, 993517.861575154005550, 993529.322902014828287, 993540.784239405184053, 993552.245587324840017, 993563.706945773796178, 993575.168314751586877, 993586.629694258677773, 993598.091084294836037, 993609.552484859596007, 993621.013895953190513, 993632.475317575386725, 993643.936749725835398, 993655.398192404769361, 993666.859645611839369, 993678.321109347278252, 993689.782583610853180, 993701.244068401865661, 993712.705563721247017, 993724.167069567833096, 993735.628585942322388, 993747.090112844249234, 993758.551650273380801, 993770.013198229949921, 993781.474756713723764, 993792.936325724353082, 993804.397905261837877, 993815.859495326294564, 993827.321095917490311, 993838.782707035192288, 993850.244328679633327, 993861.705960850114934, 993873.167603546869941, 993884.629256769898348, 993896.090920518967323, 993907.552594793844037, 993919.014279594761319, 993930.475974921137094, 993941.937680773204193, 993953.399397150613368, 993964.861124053597450, 993976.322861481923610, 993987.784609435126185, 993999.246367913670838, 994010.708136916859075, 994022.169916445156559, 994033.631706498097628, 994045.093507075449452, 994056.555318177444860, 994068.017139803851023, 994079.478971954318695, 994090.940814629080705, 994102.402667827787809, 994113.864531550440006, 994125.326405797037296, 994136.788290567346849, 994148.250185861135833, 994159.712091678404249, 994171.174008019152097, 994182.635934883379377, 994194.097872270387597, 994205.559820180642419, 994217.021778613794595, 994228.483747569611296, 994239.945727048441768, 994251.407717049820349, 994262.869717573514208, 994274.331728619756177, 994285.793750188080594, 994297.255782278720289, 994308.717824891442433, 994320.179878026014194, 994331.641941682435572, 994343.104015860473737, 994354.566100560361519, 994366.028195781516843, 994377.490301524172537, 994388.952417787979357, 994400.414544573170133, 994411.876681879279204, 994423.338829706539400, 994434.800988054252230, 994446.263156922883354, 994457.725336312432773, 994469.187526221969165, 994480.649726652191021, 994492.111937602632679, 994503.574159073294140, 994515.036391063593328, 994526.498633574461564, 994537.960886604851112, 994549.423150154994801, 994560.885424224892631, 994572.347708814078942, 994583.810003922786564, 994595.272309550782666, 994606.734625698067248, 994618.196952364174649, 994629.659289549337700, 994641.121637253323570, 994652.583995476015843, 994664.046364217181690, 994675.508743477170356, 994686.971133255516179, 994698.433533551986329, 994709.895944366580807, 994721.358365699532442, 994732.820797550375573, 994744.283239918877371, 994755.745692805270664, 994767.208156209322624, 994778.670630130567588, 994790.133114569471218, 994801.595609525684267, 994813.058114999206737, 994824.520630989456549, 994835.983157496899366, 994847.445694521069527, 994858.908242062199861, 994870.370800119591877, 994881.833368693944067, 994893.295947784325108, 994904.758537391200662, 994916.221137514337897, 994927.683748153271154, 994939.146369308466092, 994950.609000979107805, 994962.071643165894784, 994973.534295868244953, 994984.996959085925482, 994996.459632819169201, 995007.922317067743279, 995019.385011831414886, 995030.847717110184021, 995042.310432904283516, 995053.773159212782048, 995065.235896036145277, 995076.698643374140374, 995088.161401226650923, 995099.624169593676925, 995111.086948474869132, 995122.549737870460376, 995134.012537779984996, 995145.475348203442991, 995156.938169140834361, 995168.401000592159107, 995179.863842556951568, 995191.326695035211742, 995202.789558026939631, 995214.252431532135233, 995225.715315550332889, 995237.178210081649013, 995248.641115126083605, 995260.104030683287419, 995271.566956753260456, 995283.029893335769884, 995294.492840431048535, 995305.955798038630746, 995317.418766158516519, 995328.881744790705852, 995340.344733934733085, 995351.807733591063879, 995363.270743759232573, 995374.733764438889921, 995386.196795630501583, 995397.659837333485484, 995409.122889548074454, 995420.585952273802832, 995432.049025510903448, 995443.512109258910641, 995454.975203518057242, 995466.438308288110420, 995477.901423568837345, 995489.364549360238016, 995500.827685662312433, 995512.290832474594936, 995523.753989797201939, 995535.217157630133443, 995546.680335973273031, 995558.143524826387875, 995569.606724189245142, 995581.069934062077664, 995592.533154444419779, 995603.996385336504318, 995615.459626737865619, 995626.922878648503684, 995638.386141068418510, 995649.849413997610100, 995661.312697435612790, 995672.775991382542998, 995684.239295838167891, 995695.702610802836716, 995707.165936275618151, 995718.629272256977856, 995730.092618746915832, 995741.555975744966418, 995753.019343251129612, 995764.482721265172586, 995775.946109787328169, 995787.409508817130700, 995798.872918354580179, 995810.336338399560191, 995821.799768952070735, 995833.263210011995398, 995844.726661579101346, 995856.190123653388582, 995867.653596234624274, 995879.117079322808422, 995890.580572917708196, 995902.044077019323595, 995913.507591627654620, 995924.971116742235608, 995936.434652363299392, 995947.898198490613140, 995959.361755123827606, 995970.825322263175622, 995982.288899908540770, 995993.752488059923053, 996005.216086716623977, 996016.679695879109204, 996028.143315546913072, 996039.606945720268413, 996051.070586398709565, 996062.534237582469359, 996073.997899270849302, 996085.461571464547887, 996096.925254162866622, 996108.388947365921922, 996119.852651073713787, 996131.316365285892971, 996142.780090002459474, 996154.243825223180465, 996165.707570948288776, 996177.171327177085914, 996188.635093910037540, 996200.098871146677993, 996211.562658887240104, 996223.026457131025381, 996234.490265878732316, 996245.954085129313171, 996257.417914883466437, 996268.881755140842870, 996280.345605900976807, 996291.809467164333910, 996303.273338930448517, 996314.737221199320629, 996326.201113970717415, 996337.665017244638875, 996349.128931020852178, 996360.592855299357325, 996372.056790080154315, 996383.520735362777486, 996394.984691147343256, 996406.448657434084453, 996417.912634222186171, 996429.376621512114070, 996440.840619303402491, 996452.304627596284263, 996463.768646390293725, 996475.232675685430877, 996486.696715481695719, 996498.160765778855421, 996509.624826576909982, 996521.088897875626571, 996532.552979675005190, 996544.017071974696591, 996555.481174775166437, 996566.945288075599819, 996578.409411876462400, 996589.873546177288517, 996601.337690978078172, 996612.801846278598532, 996624.266012078849599, 996635.730188378831372, 996647.194375178311020, 996658.658572477288544, 996670.122780275298283, 996681.586998572689481, 996693.051227369229309, 996704.515466664568521, 996715.979716458939947, 996727.443976751645096, 996738.908247543382458, 996750.372528833453543, 996761.836820622091182, 996773.301122909062542, 996784.765435693901964, 996796.229758977075107, 996807.694092758116312, 996819.158437037258409, 996830.622791813919321, 996842.087157088331878, 996853.551532860146835, 996865.015919129364192, 996876.480315895983949, 996887.944723160006106, 996899.409140920732170, 996910.873569178860635, 996922.338007933460176, 996933.802457184996456, 996945.266916933236644, 996956.731387177947909, 996968.195867918897420, 996979.660359156434424, 996991.124860890093260, 997002.589373119757511, 997014.053895845427178, 997025.518429067335092, 997036.982972784549929, 997048.447526997537352, 997059.912091706064530, 997071.376666910131462, 997082.841252609738149, 997094.305848804186098, 997105.770455493940972, 997117.235072678420693, 997128.699700358090922, 997140.164338532369584, 997151.628987201489508, 997163.093646364985034, 997174.558316023088992, 997186.022996175335720, 997197.487686821958050, 997208.952387962723151, 997220.417099597398192, 997231.881821725750342, 997243.346554348245263, 997254.811297464417294, 997266.276051073917188, 997277.740815176977776, 997289.205589773249812, 997300.670374862966128, 997312.135170445661061, 997323.599976521567442, 997335.064793090219609, 997346.529620151617564, 997357.994457705994137, 997369.459305752650835, 997380.924164291820489, 997392.389033323270269, 997403.853912847233005, 997415.318802863126621, 997426.783703370951116, 997438.248614370822906, 997449.713535862741992, 997461.178467845777050, 997472.643410320859402, 997484.108363287290558, 997495.573326745070517, 997507.038300694199279, 997518.503285134211183, 997529.968280065571889, 997541.433285487815738, 997552.898301400593482, 997564.363327804137953, 997575.828364698565565, 997587.293412083177827, 997598.758469958440401, 997610.223538323654793, 997621.688617179286666, 997633.153706524870358, 997644.618806360405870, 997656.083916685660370, 997667.549037500633858, 997679.014168805093504, 997690.479310599504970, 997701.944462882820517, 997713.409625655505806, 997724.874798917444423, 997736.339982668403536, 997747.805176908383146, 997759.270381637150422, 997770.735596854705364, 997782.200822560815141, 997793.666058755479753, 997805.131305438233539, 997816.596562609542161, 997828.061830269172788, 997839.527108416659757, 997850.992397051886655, 997862.457696175319143, 997873.923005786375143, 997885.388325884821825, 997896.853656471124850, 997908.318997544818558, 997919.784349105670117, 997931.249711153679527, 997942.715083688846789, 997954.180466710706241, 997965.645860219723545, 997977.111264215433039, 997988.576678697834723, 998000.042103666346520, 998011.507539121666923, 998022.972985063213855, 998034.438441490987316, 998045.903908404754475, 998057.369385804515332, 998068.834873690269887, 998080.300372061552480, 998091.765880918828771, 998103.231400261400267, 998114.696930089266971, 998126.162470402661711, 998137.628021201002412, 998149.093582484521903, 998160.559154253336601, 998172.024736506748013, 998183.490329244988970, 998194.955932467826642, 998206.421546175261028, 998217.887170367059298, 998229.352805043454282, 998240.818450203514658, 998252.284105848171748, 998263.749771976727061, 998275.215448589180596, 998286.681135684950277, 998298.146833264967427, 998309.612541328184307, 998321.078259875066578, 998332.543988905148581, 998344.009728418663144, 998355.475478415144607, 998366.941238894592971, 998378.407009857008234, 998389.872791302157566, 998401.338583230040967, 998412.804385640425608, 998424.270198533311486, 998435.736021908349358, 998447.201855765772052, 998458.667700105230324, 998470.133554926957004, 998481.599420230486430, 998493.065296015818603, 998504.531182282720692, 998515.997079031425528, 998527.462986261467449, 998538.928903972613625, 998550.394832165329717, 998561.860770838917233, 998573.326719993725419, 998584.792679629288614, 998596.258649745723233, 998607.724630343029276, 998619.190621420973912, 998630.656622979091480, 998642.122635017847642, 998653.588657536776736, 998665.054690535645932, 998676.520734014920890, 998687.986787973903120, 998699.452852412592620, 998710.918927331222221, 998722.385012729209848, 998733.851108606788330, 998745.317214963841252, 998756.783331800135784, 998768.249459115439095, 998779.715596909984015, 998791.181745183304884, 998802.647903935634531, 998814.114073166507296, 998825.580252876388840, 998837.046443064347841, 998848.512643730849959, 998859.978854875662364, 998871.445076498202980, 998882.911308599403128, 998894.377551178215072, 998905.843804235104471, 998917.310067769605666, 998928.776341781718656, 998940.242626271443442, 998951.708921238547191, 998963.175226682797074, 998974.641542604193091, 998986.107869002968073, 998997.574205878423527, 999009.040553231025115, 999020.506911059957929, 999031.973279365687631, 999043.439658148097806, 999054.906047406955622, 999066.372447141795419, 999077.838857353082858, 999089.305278040352277, 999100.771709203603677, 999112.238150842837058, 999123.704602957819588, 999135.171065548318438, 999146.637538614566438, 999158.104022155748680, 999169.570516172563657, 999181.037020664894953, 999192.503535631811246, 999203.970061074011028, 999215.436596991261467, 999226.903143382864073, 999238.369700249284506, 999249.836267590289935, 999261.302845405647531, 999272.769433695590124, 999284.236032459652051, 999295.702641697600484, 999307.169261409784667, 999318.635891595738940, 999330.102532255346887, 999341.569183388841338, 999353.035844995989464, 999364.502517076325603, 999375.969199630082585, 999387.435892657027580, 999398.902596157160588, 999410.369310130481608, 999421.836034576524980, 999433.302769495523535, 999444.769514887011610, 999456.236270750872791, 999467.703037087572739, 999479.169813896529377, 999490.636601177742705, 999502.103398931212723, 999513.570207156473771, 999525.037025853758678, 999536.503855022834614, 999547.970694663701579, 999559.437544776126742, 999570.904405359877273, 999582.371276414953172, 999593.838157941587269, 999605.305049939197488, 999616.771952407783829, 999628.238865347229876, 999639.705788757768460, 999651.172722638933919, 999662.639666990493424, 999674.106621812912636, 999685.573587105493061, 999697.040562868234701, 999708.507549101370387, 999719.974545804434456, 999731.441552977426909, 999742.908570620231330, 999754.375598732847720, 999765.842637314926833, 999777.309686366701499, 999788.776745887938887, 999800.243815878173336, 999811.710896337870508, 999823.177987266331911, 999834.645088664023206, 999846.112200530478731, 999857.579322865465656, 999869.046455669449642, 999880.513598941732198, 999891.980752682429738, 999903.447916891309433, 999914.915091568720527, 999926.382276713964529, 999937.849472327274270, 999949.316678408416919, 999960.783894957159646, 999972.251121973735280, 999983.718359457910992, 999995.185607409221120, 1000006.652865828131326, 1000018.120134713943116, 1000029.587414067122154, 1000041.054703887086362, 1000052.522004174068570, 1000063.989314927719533, 1000075.456636148272082, 1000086.923967835027725, 1000098.391309988452122, 1000109.858662608312443, 1000121.326025693910196, 1000132.793399245943874, 1000144.260783263947815, 1000155.728177747922018, 1000167.195582697633654, 1000178.662998112849891, 1000190.130423993687145, 1000201.597860340145417, 1000213.065307151875459, 1000224.532764428644441, 1000236.000232170685194, 1000247.467710377997719, 1000258.935199049883522, 1000270.402698186575435, 1000281.870207788073458, 1000293.337727854144759, 1000304.805258384556510, 1000316.272799379308708, 1000327.740350838284940, 1000339.207912761718035, 1000350.675485149025917, 1000362.143067999975756, 1000373.610661315033212, 1000385.078265093732625, 1000396.545879335841164, 1000408.013504041824490, 1000419.481139210751280, 1000430.948784843320027, 1000442.416440938599408, 1000453.884107497287914, 1000465.351784518919885, 1000476.819472003146075, 1000488.287169950199313, 1000499.754878359730355, 1000511.222597231739201, 1000522.690326566458680, 1000534.158066363190301, 1000545.625816622166894, 1000557.093577343388461, 1000568.561348526156507, 1000580.029130170936696, 1000591.496922277496196, 1000602.964724845602177, 1000614.432537875487469, 1000625.900361366337165, 1000637.368195318849757, 1000648.836039732210338, 1000660.303894606651738, 1000671.771759942406788, 1000683.239635738776997, 1000694.707521995995194, 1000706.175418713828549, 1000717.643325892044231, 1000729.111243530875072, 1000740.579171629855409, 1000752.047110189218074, 1000763.515059208497405, 1000774.983018687576987, 1000786.450988626689650, 1000797.918969025718980, 1000809.386959884432144, 1000820.854961202596314, 1000832.322972980211489, 1000843.790995217044838, 1000855.259027913096361, 1000866.727071068133228, 1000878.195124682388268, 1000889.663188755395822, 1000901.131263287155889, 1000912.599348277784884, 1000924.067443726817146, 1000935.535549634369090, 1000947.003666000207886, 1000958.471792824333534, 1000969.939930106280372, 1000981.408077846514061, 1000992.876236044568941, 1001004.344404700445011, 1001015.812583814142272, 1001027.280773385195062, 1001038.748973413836211, 1001050.217183899832889, 1001061.685404842835851, 1001073.153636243310757, 1001084.621878100675531, 1001096.090130414697342, 1001107.558393185841851, 1001119.026666413643397, 1001130.494950098101981, 1001141.963244238984771, 1001153.431548836058937, 1001164.899863889557309, 1001176.368189399247058, 1001187.836525364895351, 1001199.304871786502190, 1001210.773228663718328, 1001222.241595996776596, 1001233.709973785560578, 1001245.178362029604614, 1001256.646760729374364, 1001268.115169884171337, 1001279.583589494228363, 1001291.052019559312612, 1001302.520460079191253, 1001313.988911054097116, 1001325.457372483797371, 1001336.925844368059188, 1001348.394326706649736, 1001359.862819499918260, 1001371.331322747399099, 1001382.799836448743008, 1001394.268360604415648, 1001405.736895214184187, 1001417.205440277582966, 1001428.673995794844814, 1001440.142561765736900, 1001451.611138190259226, 1001463.079725067946129, 1001474.548322399030440, 1001486.016930183512159, 1001497.485548420809209, 1001508.954177111154422, 1001520.422816254431382, 1001531.891465850407258, 1001543.360125899082050, 1001554.828796400455758, 1001566.297477354062721, 1001577.766168760135770, 1001589.234870618209243, 1001600.703582928515971, 1001612.172305690823123, 1001623.641038904897869, 1001635.109782570973039, 1001646.578536688466556, 1001658.047301257611252, 1001669.516076278290711, 1001680.984861750272103, 1001692.453657673555426, 1001703.922464047907852, 1001715.391280873096548, 1001726.860108149587177, 1001738.328945876448415, 1001749.797794054378755, 1001761.266652682679705, 1001772.735521761351265, 1001784.204401290626265, 1001795.673291269922629, 1001807.142191699240357, 1001818.611102578928694, 1001830.080023908289149, 1001841.548955687554553, 1001853.017897916492075, 1001864.486850595101714, 1001875.955813723383471, 1001887.424787300638855, 1001898.893771327566355, 1001910.362765803467482, 1001921.831770728109404, 1001933.300786102190614, 1001944.769811924663372, 1001956.238848196226172, 1001967.707894916064106, 1001979.176952084642835, 1001990.646019701729529, 1002002.115097766858526, 1002013.584186280029826, 1002025.053285241476260, 1002036.522394650964998, 1002047.991514508263208, 1002059.460644813370891, 1002070.929785565822385, 1002082.398936765850522, 1002093.868098413338885, 1002105.337270508287475, 1002116.806453050114214, 1002128.275646039284766, 1002139.744849475333467, 1002151.214063358260319, 1002162.683287688065320, 1002174.152522464515641, 1002185.621767687378451, 1002197.091023356653750, 1002208.560289472341537, 1002220.029566033976153, 1002231.498853041906841, 1002242.968150495900773, 1002254.437458395841531, 1002265.906776741496287, 1002277.376105532632209, 1002288.845444769482128, 1002300.314794451580383, 1002311.784154579159804, 1002323.253525152220391, 1002334.722906170063652, 1002346.192297632922418, 1002357.661699540796690, 1002369.131111893453635, 1002380.600534690776840, 1002392.069967932766303, 1002403.539411619072780, 1002415.008865749696270, 1002426.478330324636772, 1002437.947805343661457, 1002449.417290807003155, 1002460.886786713963374, 1002472.356293064774945, 1002483.825809859437868, 1002495.295337097486481, 1002506.764874779153615, 1002518.234422904206440, 1002529.703981472295709, 1002541.173550483887084, 1002552.643129938165657, 1002564.112719835597090, 1002575.582320175948553, 1002587.051930958987214, 1002598.521552184247412, 1002609.991183852660470, 1002621.460825962829404, 1002632.930478515685536, 1002644.400141510530375, 1002655.869814947596751, 1002667.339498826419003, 1002678.809193147346377, 1002690.278897909680381, 1002701.748613114003092, 1002713.218338759616017, 1002724.688074846751988, 1002736.157821375178173, 1002747.627578344661742, 1002759.097345755202696, 1002770.567123607033864, 1002782.036911899456754, 1002793.506710632704198, 1002804.976519806543365, 1002816.446339420974255, 1002827.916169475647621, 1002839.386009971029125, 1002850.855860906303860, 1002862.325722281937487, 1002873.795594097464345, 1002885.265476352651604, 1002896.735369047964923, 1002908.205272182705812, 1002919.675185757107101, 1002931.145109771168791, 1002942.615044224192388, 1002954.084989116643555, 1002965.554944447940215, 1002977.024910218548030, 1002988.494886427884921, 1002999.964873076183721, 1003011.434870163211599, 1003022.904877688735723, 1003034.374895652523264, 1003045.844924055039883, 1003057.314962895587087, 1003068.785012174164876, 1003080.255071891006082, 1003091.725142045645043, 1003103.195222638314590, 1003114.665313668199815, 1003126.135415135999210, 1003137.605527041130699, 1003149.075649384059943, 1003160.545782163855620, 1003172.015925380750559, 1003183.486079034977593, 1003194.956243126303889, 1003206.426417654030956, 1003217.896602618624456, 1003229.366798019851558, 1003240.837003857712261, 1003252.307220131973736, 1003263.777446842286736, 1003275.247683988884091, 1003286.717931571649387, 1003298.188189590116963, 1003309.658458044519648, 1003321.128736934857443, 1003332.599026260897517, 1003344.069326022174209, 1003355.539636219153181, 1003367.009956851368770, 1003378.480287918588147, 1003389.950629421044141, 1003401.420981358503923, 1003412.891343730618246, 1003424.361716537619941, 1003435.832099779392593, 1003447.302493455703370, 1003458.772897566319443, 1003470.243312111473642, 1003481.713737090700306, 1003493.184172503999434, 1003504.654618351371028, 1003516.125074632582255, 1003527.595541347633116, 1003539.066018496290781, 1003550.536506078555249, 1003562.007004094310105, 1003573.477512543322518, 1003584.948031425708905, 1003596.418560741003603, 1003607.889100489439443, 1003619.359650671016425, 1003630.830211285268888, 1003642.300782332196832, 1003653.771363811567426, 1003665.241955723613501, 1003676.712558067869395, 1003688.183170844567940, 1003699.653794053243473, 1003711.124427693779580, 1003722.595071766641922, 1003734.065726271248423, 1003745.536391207366250, 1003757.007066575228237, 1003768.477752374601550, 1003779.948448605486192, 1003791.419155267416500, 1003802.889872360858135, 1003814.360599885112606, 1003825.831337840179913, 1003837.302086226292886, 1003848.772845042869449, 1003860.243614290375262, 1003871.714393968461081, 1003883.185184076894075, 1003894.655984615441412, 1003906.126795584335923, 1003917.597616983344778, 1003929.068448812235147, 1003940.539291071007028, 1003952.010143759660423, 1003963.481006877729669, 1003974.951880425447598, 1003986.422764402814209, 1003997.893658809014596, 1004009.364563644747250, 1004020.835478909662925, 1004032.306404603528790, 1004043.777340726112016, 1004055.248287277645431, 1004066.719244257896207, 1004078.190211666631512, 1004089.661189503618516, 1004101.132177769322880, 1004112.603176463046111, 1004124.074185584788211, 1004135.545205134782009, 1004147.016235112445429, 1004158.487275518011302, 1004169.958326351363212, 1004181.429387612268329, 1004192.900459300493822, 1004204.371541416272521, 1004215.842633959138766, 1004227.313736929325387, 1004238.784850326599553, 1004250.255974150728434, 1004261.727108401479200, 1004273.198253079317510, 1004284.669408183544874, 1004296.140573714044876, 1004307.611749671283178, 1004319.082936054677702, 1004330.554132864228450, 1004342.025340099702589, 1004353.496557761332951, 1004364.967785848886706, 1004376.439024361898191, 1004387.910273300600238, 1004399.381532664992847, 1004410.852802454610355, 1004422.324082669685595, 1004433.795373309985735, 1004445.266674375161529, 1004456.737985865445808, 1004468.209307780489326, 1004479.680640120292082, 1004491.151982884854078, 1004502.623336073942482, 1004514.094699687324464, 1004525.566073725232854, 1004537.037458187434822, 1004548.508853073464707, 1004559.980258383788168, 1004571.451674117706716, 1004582.923100275453180, 1004594.394536856678315, 1004605.865983861847781, 1004617.337441290379502, 1004628.808909142273478, 1004640.280387417064048, 1004651.751876115449704, 1004663.223375236499123, 1004674.694884780677967, 1004686.166404747520573, 1004697.637935137259774, 1004709.109475949429907, 1004720.581027184263803, 1004732.052588841062970, 1004743.524160920176655, 1004754.995743421837687, 1004766.467336345231161, 1004777.938939690822735, 1004789.410553457913920, 1004800.882177646970376, 1004812.353812257293612, 1004823.825457289582118, 1004835.297112742904574, 1004846.768778617726639, 1004858.240454913582653, 1004869.712141630472615, 1004881.183838768280111, 1004892.655546327005140, 1004904.127264306531288, 1004915.598992706858553, 1004927.070731527288444, 1004938.542480768519454, 1004950.014240429853089, 1004961.486010511289351, 1004972.957791012828238, 1004984.429581934702583, 1004995.901383276213892, 1005007.373195037362166, 1005018.845017218380235, 1005030.316849818686023, 1005041.788692838512361, 1005053.260546277742833, 1005064.732410136144608, 1005076.204284413484856, 1005087.676169110229239, 1005099.148064225679263, 1005110.619969759834930, 1005122.091885712696239, 1005133.563812084030360, 1005145.035748874070123, 1005156.507696082349867, 1005167.979653708636761, 1005179.451621753280051, 1005190.923600215814076, 1005202.395589096355252, 1005213.867588394903578, 1005225.339598110993393, 1005236.811618244391866, 1005248.283648795797490, 1005259.755689764278941, 1005271.227741150069050, 1005282.699802952934988, 1005294.171875172876753, 1005305.643957809661515, 1005317.116050863522105, 1005328.588154333876446, 1005340.060268220957369, 1005351.532392524415627, 1005363.004527244484052, 1005374.476672380696982, 1005385.948827933054417, 1005397.420993901556358, 1005408.893170286202803, 1005420.365357086528093, 1005431.837554302532226, 1005443.309761934215203, 1005454.781979981344193, 1005466.254208443919197, 1005477.726447321823798, 1005489.198696615057997, 1005500.670956323272549, 1005512.143226446700282, 1005523.615506984642707, 1005535.087797937565483, 1005546.560099305002950, 1005558.032411087187938, 1005569.504733283654787, 1005580.977065894636326, 1005592.449408919666894, 1005603.921762358979322, 1005615.394126212107949, 1005626.866500479169190, 1005638.338885160163045, 1005649.811280254740268, 1005661.283685762900859, 1005672.756101684411988, 1005684.228528019506484, 1005695.700964767718688, 1005707.173411929281428, 1005718.645869503496215, 1005730.118337490828708, 1005741.590815891046077, 1005753.063304703915492, 1005764.535803929436952, 1005776.008313567261212, 1005787.480833617621101, 1005798.953364080167376, 1005810.425904955132864, 1005821.898456241819076, 1005833.371017940691672, 1005844.843590051284991, 1005856.316172573599033, 1005867.788765507633798, 1005879.261368853156455, 1005890.733982609934174, 1005902.206606778199784, 1005913.679241357487626, 1005925.151886347914115, 1005936.624541749246418, 1005948.097207561600953, 1005959.569883784744889, 1005971.042570418445393, 1005982.515267462935299, 1005993.987974917516112, 1006005.460692782420665, 1006016.933421057648957, 1006028.406159742968157, 1006039.878908838378266, 1006051.351668343646452, 1006062.824438258423470, 1006074.297218583174981, 1006085.770009317318909, 1006097.242810461088084, 1006108.715622014016844, 1006120.188443976570852, 1006131.661276347818784, 1006143.134119128226303, 1006154.606972317560576, 1006166.079835915821604, 1006177.552709922543727, 1006189.025594337959774, 1006200.498489162069745, 1006211.971394394291565, 1006223.444310034625232, 1006234.917236083419994, 1006246.390172540210187, 1006257.863119404762983, 1006269.336076677544042, 1006280.809044357622042, 1006292.282022445462644, 1006303.755010940833017, 1006315.228009843733162, 1006326.701019153697416, 1006338.174038870958611, 1006349.647068995516747, 1006361.120109526556917, 1006372.593160464777611, 1006384.066221809596755, 1006395.539293561247177, 1006407.012375719030388, 1006418.485468283644877, 1006429.958571254392155, 1006441.431684631505050, 1006452.904808414517902, 1006464.377942603663541, 1006475.851087198476307, 1006487.324242199189030, 1006498.797407605801709, 1006510.270583417499438, 1006521.743769634747878, 1006533.216966257663444, 1006544.690173285780475, 1006556.163390718866140, 1006567.636618556920439, 1006579.109856799943373, 1006590.583105447702110, 1006602.056364500196651, 1006613.529633957426995, 1006625.002913818927482, 1006636.476204084930941, 1006647.949504755204543, 1006659.422815829166211, 1006670.896137307747267, 1006682.369469189899974, 1006693.842811476089992, 1006705.316164165851660, 1006716.789527259417810, 1006728.262900756322779, 1006739.736284656799398, 1006751.209678960614838, 1006762.683083667303436, 1006774.156498777098022, 1006785.629924289998598, 1006797.103360205539502, 1006808.576806523837149, 1006820.050263244891539, 1006831.523730368586257, 1006842.997207894688472, 1006854.470695822965354, 1006865.944194153416902, 1006877.417702886043116, 1006888.891222020611167, 1006900.364751557353884, 1006911.838291495339945, 1006923.311841835267842, 1006934.785402576671913, 1006946.258973719552159, 1006957.732555263792165, 1006969.206147209391929, 1006980.679749555769376, 1006992.153362303390168, 1007003.626985452021472, 1007015.100619001197629, 1007026.574262951384299, 1007038.047917301882990, 1007049.521582052693702, 1007060.995257204282098, 1007072.468942755949683, 1007083.942638707463630, 1007095.416345059522428, 1007106.890061811078340, 1007118.363788962597027, 1007129.837526513962075, 1007141.311274464707822, 1007152.785032815299928, 1007164.258801565039903, 1007175.732580713927746, 1007187.206370262196288, 1007198.680170209612697, 1007210.153980555944145, 1007221.627801300957799, 1007233.101632444886491, 1007244.575473987264559, 1007256.049325927975588, 1007267.523188267485239, 1007278.997061005211435, 1007290.470944141154177, 1007301.944837675313465, 1007313.418741607223637, 1007324.892655937117524, 1007336.366580664762296, 1007347.840515789925121, 1007359.314461312838830, 1007370.788417233037762, 1007382.262383550754748, 1007393.736360265524127, 1007405.210347377462313, 1007416.684344886336476, 1007428.158352792263031, 1007439.632371095009148, 1007451.106399794109166, 1007462.580438890261576, 1007474.054488382535055, 1007485.528548271395266, 1007497.002618556376547, 1007508.476699237478897, 1007519.950790314702317, 1007531.424891787813976, 1007542.899003656813875, 1007554.373125921119936, 1007565.847258581430651, 1007577.321401637163945, 1007588.795555088552646, 1007600.269718934898265, 1007611.743893176433630, 1007623.218077813158743, 1007634.692272844840772, 1007646.166478271246888, 1007657.640694092377089, 1007669.114920308231376, 1007680.589156918576919, 1007692.063403923297301, 1007703.537661322392523, 1007715.011929115746170, 1007726.486207303125411, 1007737.960495884530246, 1007749.434794859495014, 1007760.909104228718206, 1007772.383423991268501, 1007783.857754147611558, 1007795.332094697281718, 1007806.806445640046149, 1007818.280806976370513, 1007829.755178705789149, 1007841.229560827952810, 1007852.703953343327157, 1007864.178356251330115, 1007875.652769551961683, 1007887.127193245454691, 1007898.601627331110649, 1007910.076071809395216, 1007921.550526679609902, 1007933.024991942220367, 1007944.499467596993782, 1007955.973953643464483, 1007967.448450081865303, 1007978.922956911963411, 1007990.397474133409560, 1008001.872001746669412, 1008013.346539751160890, 1008024.821088147116825, 1008036.295646934071556, 1008047.770216112257913, 1008059.244795681443065, 1008070.719385641161352, 1008082.193985991878435, 1008093.668596733128652, 1008105.143217864912003, 1008116.617849387228489, 1008128.092491299612448, 1008139.567143602413125, 1008151.041806295164861, 1008162.516479378216900, 1008173.991162850870751, 1008185.465856713359244, 1008196.940560965449549, 1008208.415275607141666, 1008219.890000638435595, 1008231.364736058865674, 1008242.839481868664734, 1008254.314238067367114, 1008265.789004655438475, 1008277.263781632180326, 1008288.738568997709081, 1008300.213366751791909, 1008311.688174894778058, 1008323.162993426201865, 1008334.637822345830500, 1008346.112661653663963, 1008357.587511349935085, 1008369.062371434178203, 1008380.537241906160489, 1008392.012122766114771, 1008403.487014013808221, 1008414.961915649008006, 1008426.436827671946958, 1008437.911750081810169, 1008449.386682879528962, 1008460.861626064055599, 1008472.336579635855742, 1008483.811543594463728, 1008495.286517939879559, 1008506.761502672336064, 1008518.236497791134752, 1008529.711503296741284, 1008541.186519188689999, 1008552.661545466980897, 1008564.136582131148316, 1008575.611629181890748, 1008587.086686618393287, 1008598.561754440655932, 1008610.036832649027929, 1008621.511921242810786, 1008632.987020222237334, 1008644.462129587074742, 1008655.937249337323010, 1008667.412379472749308, 1008678.887519993353635, 1008690.362670899135992, 1008701.837832189630717, 1008713.313003864837810, 1008724.788185924990103, 1008736.263378369738348, 1008747.738581198849715, 1008759.213794412207790, 1008770.689018010045402, 1008782.164251992129721, 1008793.639496357995085, 1008805.114751108107157, 1008816.590016241767444, 1008828.065291759441607, 1008839.540577660431154, 1008851.015873945201747, 1008862.491180613054894, 1008873.966497664456256, 1008885.441825099056587, 1008896.917162916623056, 1008908.392511117272079, 1008919.867869700770825, 1008931.343238666886464, 1008942.818618016084656, 1008954.294007747434080, 1008965.769407861400396, 1008977.244818357517943, 1008988.720239235786721, 1009000.195670496439561, 1009011.671112139010802, 1009023.146564163500443, 1009034.622026569559239, 1009046.097499357652850, 1009057.572982527199201, 1009069.048476078198291, 1009080.523980010184459, 1009091.999494324089028, 1009103.475019018515013, 1009114.950554094393738, 1009126.426099551026709, 1009137.901655388646759, 1009149.377221606788225, 1009160.852798205683939, 1009172.328385185101070, 1009183.803982544690371, 1009195.279590284684673, 1009206.755208404734731, 1009218.230836905073375, 1009229.706475785234943, 1009241.182125045219436, 1009252.657784685026854, 1009264.133454704424366, 1009275.609135103411973, 1009287.084825881756842, 1009298.560527039458975, 1009310.036238576285541, 1009321.511960492236540, 1009332.987692787195556, 1009344.463435460929759, 1009355.939188513788395, 1009367.414951945072971, 1009378.890725754783489, 1009390.366509943152778, 1009401.842304509715177, 1009413.318109454470687, 1009424.793924777652137, 1009436.269750478793867, 1009447.745586557663046, 1009459.221433014259674, 1009470.697289848816581, 1009482.173157060518861, 1009493.649034650065005, 1009505.124922616872936, 1009516.600820961175486, 1009528.076729682506993, 1009539.552648780867457, 1009551.028578256256878, 1009562.504518108209595, 1009573.980468337191269, 1009585.456428942503408, 1009596.932399924378842, 1009608.408381282817572, 1009619.884373017586768, 1009631.360375128337182, 1009642.836387615301646, 1009654.312410478130914, 1009665.788443717057817, 1009677.264487331616692, 1009688.740541321807541, 1009700.216605687630363, 1009711.692680428852327, 1009723.168765545240603, 1009734.644861037028022, 1009746.120966903748922, 1009757.597083145636134, 1009769.073209762456827, 1009780.549346753861755, 1009792.025494120083749, 1009803.501651860773563, 1009814.977819976164028, 1009826.453998465556651, 1009837.930187329649925, 1009849.406386567512527, 1009860.882596179610118, 1009872.358816165709868, 1009883.835046525346115, 1009895.311287258751690, 1009906.787538365926594, 1009918.263799846637994, 1009929.740071700536646, 1009941.216353927855380, 1009952.692646528244950, 1009964.168949501705356, 1009975.645262848236598, 1009987.121586567605846, 1009998.597920659580268, 1010010.074265124159865, 1010021.550619961577468, 1010033.026985171367414, 1010044.503360753296874, 1010055.979746707365848, 1010067.456143033807166, 1010078.932549731805921, 1010090.408966802060604, 1010101.885394243989140, 1010113.361832057591528, 1010124.838280242867768, 1010136.314738799352199, 1010147.791207727277651, 1010159.267687026411295, 1010170.744176696753129, 1010182.220676738303155, 1010193.697187150595710, 1010205.173707933630794, 1010216.650239087408409, 1010228.126780611812137, 1010239.603332506609149, 1010251.079894771683030, 1010262.556467407266609, 1010274.033050412894227, 1010285.509643788798712, 1010296.986247534281574, 1010308.462861649808474, 1010319.939486135146581, 1010331.416120990063064, 1010342.892766214325093, 1010354.369421808165498, 1010365.846087771351449, 1010377.322764103533700, 1010388.799450804945081, 1010400.276147875236347, 1010411.752855314640328, 1010423.229573122458532, 1010434.706301299156621, 1010446.183039844501764, 1010457.659788758028299, 1010469.136548039969057, 1010480.613317690324038, 1010492.090097708627582, 1010503.566888094879687, 1010515.043688849313185, 1010526.520499971113168, 1010537.997321460978128, 1010549.474153318325989, 1010560.950995542923920, 1010572.427848135237582, 1010583.904711094568484, 1010595.381584421149455, 1010606.858468114980496, 1010618.335362175363116, 1010629.812266602995805, 1010641.289181396947242, 1010652.766106557683088, 1010664.243042084970511, 1010675.719987978693098, 1010687.196944238618016, 1010698.673910864628851, 1010710.150887856725603, 1010721.627875214908272, 1010733.104872938944027, 1010744.581881028832868, 1010756.058899484109133, 1010767.535928305238485, 1010779.012967491522431, 1010790.490017043426633, 1010801.967076960485429, 1010813.444147242465988, 1010824.921227889484726, 1010836.398318901308812, 1010847.875420278054662, 1010859.352532019489445, 1010870.829654125613160, 1010882.306786595960148, 1010893.783929430996068, 1010905.261082629789598, 1010916.738246193272062, 1010928.215420120512135, 1010939.692604411742650, 1010951.169799066497944, 1010962.647004085476510, 1010974.124219467630610, 1010985.601445213425905, 1010997.078681322745979, 1011008.555927795358002, 1011020.033184630796313, 1011031.510451829759404, 1011042.987729391548783, 1011054.465017315931618, 1011065.942315603373572, 1011077.419624253408983, 1011088.896943265805021, 1011100.374272640794516, 1011111.851612377911806, 1011123.328962477506138, 1011134.806322938879021, 1011146.283693762379698, 1011157.761074948008172, 1011169.238466495298781, 1011180.715868404018693, 1011192.193280674633570, 1011203.670703306444921, 1011215.148136299918406, 1011226.625579654355533, 1011238.103033369989134, 1011249.580497446586378, 1011261.057971884380095, 1011272.535456682788208, 1011284.012951841810718, 1011295.490457361564040, 1011306.967973241815343, 1011318.445499482331797, 1011329.923036083346233, 1011341.400583044392988, 1011352.878140365472063, 1011364.355708046583459, 1011375.833286087727174, 1011387.310874488204718, 1011398.788473248714581, 1011410.266082368558273, 1011421.743701847619377, 1011433.221331686363555, 1011444.698971883975901, 1011456.176622440922074, 1011467.654283356736414, 1011479.131954631418921, 1011490.609636264969595, 1011502.087328257155605, 1011513.565030607976951, 1011525.042743317200802, 1011536.520466384827159, 1011547.998199810623191, 1011559.475943594588898, 1011570.953697736375034, 1011582.431462236214429, 1011593.909237093990669, 1011605.387022309470922, 1011616.864817882422358, 1011628.342623812844977, 1011639.820440100738779, 1011651.298266745870933, 1011662.776103748241439, 1011674.253951107617468, 1011685.731808823766187, 1011697.209676897153258, 1011708.687555326847360, 1011720.165444113430567, 1011731.643343256437220, 1011743.121252755983733, 1011754.599172611837275, 1011766.077102823765017, 1011777.555043391766958, 1011789.032994315843098, 1011800.510955595760606, 1011811.988927231519483, 1011823.466909222886898, 1011834.944901569630019, 1011846.422904272214510, 1011857.900917329941876, 1011869.378940742695704, 1011880.856974510941654, 1011892.335018633864820, 1011903.813073111930862, 1011915.291137944906950, 1011926.769213132560253, 1011938.247298674657941, 1011949.725394571200013, 1011961.203500822186470, 1011972.681617427384481, 1011984.159744386794046, 1011995.637881700415164, 1012007.116029367782176, 1012018.594187389011495, 1012030.072355764103122, 1012041.550534492707811, 1012053.028723574825563, 1012064.506923010456376, 1012075.985132799367420, 1012087.463352941558696, 1012098.941583436564542, 1012110.419824284617789, 1012121.898075485718437, 1012133.376337039633654, 1012144.854608946130611, 1012156.332891205209307, 1012167.811183816520497, 1012179.289486780297011, 1012190.767800096422434, 1012202.246123764663935, 1012213.724457784788683, 1012225.202802156796679, 1012236.681156880920753, 1012248.159521956462413, 1012259.637897383654490, 1012271.116283162496984, 1012282.594679292524233, 1012294.073085773969069, 1012305.551502606365830, 1012317.029929789830931, 1012328.508367324364372, 1012339.986815209616907, 1012351.465273445821367, 1012362.943742032512091, 1012374.422220969689079, 1012385.900710257352330, 1012397.379209895269014, 1012408.857719883439131, 1012420.336240221862681, 1012431.814770910074003, 1012443.293311948073097, 1012454.771863335859962, 1012466.250425073551014, 1012477.728997160680592, 1012489.207579597132280, 1012500.686172383138910, 1012512.164775518001989, 1012523.643389002420008, 1012535.122012835694477, 1012546.600647017825395, 1012558.079291548812762, 1012569.557946428656578, 1012581.036611656891182, 1012592.515287233749405, 1012603.993973158998415, 1012615.472669432056136, 1012626.951376053853892, 1012638.430093023343943, 1012649.908820340991952, 1012661.387558006565087, 1012672.866306019597687, 1012684.345064380322583, 1012695.823833088739775, 1012707.302612144383602, 1012718.781401547486894, 1012730.260201297816820, 1012741.739011395140551, 1012753.217831839458086, 1012764.696662630653009, 1012776.175503768492490, 1012787.654355253092945, 1012799.133217084454373, 1012810.612089262111112, 1012822.090971786063164, 1012833.569864656310529, 1012845.048767872620374, 1012856.527681434992701, 1012868.006605343194678, 1012879.485539597459137, 1012890.964484197087586, 1012902.443439142778516, 1012913.922404433484189, 1012925.401380069670267, 1012936.880366051220335, 1012948.359362378134392, 1012959.838369049713947, 1012971.317386066424660, 1012982.796413428033702, 1012994.275451134541072, 1013005.754499185248278, 1013017.233557580620982, 1013028.712626320659183, 1013040.191705404897220, 1013051.670794833335094, 1013063.149894605623558, 1013074.629004722228274, 1013086.108125182334334, 1013097.587255986640230, 1013109.066397134447470, 1013120.545548625756055, 1013132.024710460798815, 1013143.503882638877258, 1013154.983065160224214, 1013166.462258024839684, 1013177.941461232258007, 1013189.420674782712013, 1013200.899898676201701, 1013212.379132912144996, 1013223.858377490541898, 1013235.337632411741652, 1013246.816897675278597, 1013258.296173280919902, 1013269.775459228898399, 1013281.254755518748425, 1013292.734062150935642, 1013304.213379124528728, 1013315.692706440226175, 1013327.172044097329490, 1013338.651392096071504, 1013350.130750436219387, 1013361.610119117656723, 1013373.089498140150681, 1013384.568887504050508, 1013396.048287208657712, 1013407.527697254437953, 1013419.007117640925571, 1013430.486548367887735, 1013441.965989435557276, 1013453.445440843701363, 1013464.924902592319995, 1013476.404374680947512, 1013487.883857109816745, 1013499.363349878694862, 1013510.842852987465449, 1013522.322366436128505, 1013533.801890224334784, 1013545.281424352317117, 1013556.760968819609843, 1013568.240523626445793, 1013579.720088772592135, 1013591.199664258048870, 1013602.679250082350336, 1013614.158846245729364, 1013625.638452747953124, 1013637.118069588788785, 1013648.597696768469177, 1013660.077334286412224, 1013671.556982142850757, 1013683.036640337901190, 1013694.516308870865032, 1013705.995987741975114, 1013717.475676951231435, 1013728.955376498168334, 1013740.435086383018643, 1013751.914806605782360, 1013763.394537165760994, 1013774.874278063420206, 1013786.354029298294336, 1013797.833790870616212, 1013809.313562779920176, 1013820.793345026322640, 1013832.273137609590776, 1013843.752940529608168, 1013855.232753786607645, 1013866.712577380123548, 1013878.192411309923045, 1013889.672255576471798, 1013901.152110179071315, 1013912.631975117954426, 1013924.111850392888300, 1013935.591736003640108, 1013947.071631950442679, 1013958.551538233063184, 1013970.031454850919545, 1013981.511381804710254, 1013992.991319093853235, 1014004.471266718348488, 1014015.951224677963182, 1014027.431192972930148, 1014038.911171602783725, 1014050.391160567523912, 1014061.871159867150709, 1014073.351169501198456, 1014084.831189470132813, 1014096.311219773488119, 1014107.791260411031544, 1014119.271311382646672, 1014130.751372688799165, 1014142.231444328906946, 1014153.711526302970015, 1014165.191618610755540, 1014176.671721252496354, 1014188.151834227726795, 1014199.631957536446862, 1014211.112091178656556, 1014222.592235153890215, 1014234.072389462613501, 1014245.552554104360752, 1014257.032729079131968, 1014268.512914386577904, 1014279.993110026931390, 1014291.473315999843180, 1014302.953532305546105, 1014314.433758943574503, 1014325.913995913928375, 1014337.394243216607720, 1014348.874500851146877, 1014360.354768818011507, 1014371.835047116735950, 1014383.315335747087374, 1014394.795634709298611, 1014406.275944003136829, 1014417.756263628019951, 1014429.236593584879301, 1014440.716933872667141, 1014452.197284491616301, 1014463.677645441726781, 1014475.158016722765751, 1014486.638398334733211, 1014498.118790277163498, 1014509.599192550522275, 1014521.079605154343881, 1014532.560028088628314, 1014544.040461353142746, 1014555.520904947887175, 1014567.001358872512355, 1014578.481823127483949, 1014589.962297711987048, 1014601.442782626487315, 1014612.923277870751917, 1014624.403783444548026, 1014635.884299347642809, 1014647.364825580269098, 1014658.845362141961232, 1014670.325909032952040, 1014681.806466252775863, 1014693.287033801665530, 1014704.767611679388210, 1014716.248199885594659, 1014727.728798420750536, 1014739.209407284273766, 1014750.690026475931518, 1014762.170655996422283, 1014773.651295844581909, 1014785.131946021108888, 1014796.612606525537558, 1014808.093277357635088, 1014819.573958517634310, 1014831.054650005302392, 1014842.535351820639335, 1014854.016063963179477, 1014865.496786432806402, 1014876.977519230218604, 1014888.458262354368344, 1014899.939015805488452, 1014911.419779583811760, 1014922.900553688872606, 1014934.381338120438159, 1014945.862132878741249, 1014957.342937963316217, 1014968.823753374395892, 1014980.304579111747444, 1014991.785415175138041, 1015003.266261564800516, 1015014.747118279919960, 1015026.227985321194865, 1015037.708862688275985, 1015049.189750380930491, 1015060.670648399158381, 1015072.151556742726825, 1015083.632475411635824, 1015095.113404405652545, 1015106.594343724776991, 1015118.075293368776329, 1015129.556253337883390, 1015141.037223631399684, 1015152.518204249790870, 1015163.999195192707703, 1015175.480196460150182, 1015186.961208051769063, 1015198.442229967797175, 1015209.923262208001688, 1015221.404304772149771, 1015232.885357660008594, 1015244.366420871810988, 1015255.847494407556951, 1015267.328578266547993, 1015278.809672449016944, 1015290.290776955196634, 1015301.771891784388572, 1015313.253016936709173, 1015324.734152412158437, 1015336.215298210619949, 1015347.696454331860878, 1015359.177620776114054, 1015370.658797542448156, 1015382.139984631794505, 1015393.621182043454610, 1015405.102389777195640, 1015416.583607833483256, 1015428.064836211618967, 1015439.546074911835603, 1015451.027323934133165, 1015462.508583277813159, 1015473.989852943457663, 1015485.471132930601016, 1015496.952423239126801, 1015508.433723869035020, 1015519.915034820325673, 1015531.396356092765927, 1015542.877687686122954, 1015554.359029600396752, 1015565.840381835354492, 1015577.321744391461834, 1015588.803117267787457, 1015600.284500464797020, 1015611.765893982257694, 1015623.247297819820233, 1015634.728711977717467, 1015646.210136455600150, 1015657.691571253468283, 1015669.173016371089034, 1015680.654471808695234, 1015692.135937565821223, 1015703.617413642467000, 1015715.098900038632564, 1015726.580396754085086, 1015738.061903788824566, 1015749.543421142618172, 1015761.024948815465905, 1015772.506486807018518, 1015783.988035117741674, 1015795.469593746820465, 1015806.951162694720551, 1015818.432741960976273, 1015829.914331545587629, 1015841.395931448554620, 1015852.877541669644415, 1015864.359162208857015, 1015875.840793065959588, 1015887.322434240952134, 1015898.804085733601823, 1015910.285747543908656, 1015921.767419671523385, 1015933.249102116678841, 1015944.730794879491441, 1015956.212497959029861, 1015967.694211355992593, 1015979.175935069913976, 1015990.657669100561179, 1016002.139413447934203, 1016013.621168112033047, 1016025.102933092857711, 1016036.584708390175365, 1016048.066494003520347, 1016059.548289933358319, 1016071.030096179340035, 1016082.511912741232663, 1016093.993739618919790, 1016105.475576812634245, 1016116.957424322143197, 1016128.439282147213817, 1016139.921150287613273, 1016151.403028743574396, 1016162.884917514864355, 1016174.366816601017490, 1016185.848726002499461, 1016197.330645719077438, 1016208.812575750285760, 1016220.294516096240841, 1016231.776466756709851, 1016243.258427732042037, 1016254.740399021771736, 1016266.222380625666119, 1016277.704372543958016, 1016289.186374776181765, 1016300.668387322570197, 1016312.150410182890482, 1016323.632443356909789, 1016335.114486844628118, 1016346.596540646045469, 1016358.078604760696180, 1016369.560679188696668, 1016381.042763930046931, 1016392.524858984863386, 1016404.006964352447540, 1016415.489080033032224, 1016426.971206026384607, 1016438.453342332504690, 1016449.935488951392472, 1016461.417645882582292, 1016472.899813126306981, 1016484.381990682566538, 1016495.864178550662473, 1016507.346376730827615, 1016518.828585223178379, 1016530.310804027249105, 1016541.793033143389039, 1016553.275272571132518, 1016564.757522310246713, 1016576.239782360731624, 1016587.722052722820081, 1016599.204333396046422, 1016610.686624380643480, 1016622.168925675912760, 1016633.651237282319926, 1016645.133559199399315, 1016656.615891427383758, 1016668.098233966040425, 1016679.580586814787239, 1016691.062949974089861, 1016702.545323443831876, 1016714.027707223780453, 1016725.510101313702762, 1016736.992505713598803, 1016748.474920423468575, 1016759.957345442846417, 1016771.439780772197992, 1016782.922226410824805, 1016794.404682358959690, 1016805.887148616369814, 1016817.369625183288008, 1016828.852112058899365, 1016840.334609243669547, 1016851.817116737482138, 1016863.299634540104307, 1016874.782162651536055, 1016886.264701071311720, 1016897.747249799431302, 1016909.229808836360462, 1016920.712378181167878, 1016932.194957834319212, 1016943.677547795581631, 1016955.160148064722307, 1016966.642758641508408, 1016978.125379526289180, 1016989.608010718366131, 1017001.090652218321338, 1017012.573304025689140, 1017024.055966140236706, 1017035.538638562196866, 1017047.021321290871128, 1017058.504014326957986, 1017069.986717669758946, 1017081.469431319274008, 1017092.952155275503173, 1017104.434889538446441, 1017115.917634107638150, 1017127.400388982961886, 1017138.883154165116139, 1017150.365929653053172, 1017161.848715447005816, 1017173.331511547206901, 1017184.814317952957936, 1017196.297134664491750, 1017207.779961681575514, 1017219.262799004209228, 1017230.745646632392891, 1017242.228504565660842, 1017253.711372804245912, 1017265.194251347915269, 1017276.677140196319669, 1017288.160039349924773, 1017299.642948808148503, 1017311.125868570990860, 1017322.608798638451844, 1017334.091739010298625, 1017345.574689686531201, 1017357.057650666916743, 1017368.540621951455250, 1017380.023603540146723, 1017391.506595432525501, 1017402.989597629057243, 1017414.472610129043460, 1017425.955632932600565, 1017437.438666039495729, 1017448.921709450311027, 1017460.404763163882308, 1017471.887827180908062, 1017483.370901500922628, 1017494.853986123926006, 1017506.337081049685366, 1017517.820186278200708, 1017529.303301809472032, 1017540.786427643266506, 1017552.269563779351301, 1017563.752710217959248, 1017575.235866958508268, 1017586.719034001231194, 1017598.202211346011609, 1017609.685398992849514, 1017621.168596941279247, 1017632.651805191533640, 1017644.135023743379861, 1017655.618252596585080, 1017667.101491751149297, 1017678.584741206839681, 1017690.068000963889062, 1017701.551271022064611, 1017713.034551381133497, 1017724.517842041095719, 1017736.001143001602031, 1017747.484454262652434, 1017758.967775824363343, 1017770.451107686501928, 1017781.934449848835357, 1017793.417802311596461, 1017804.901165074086748, 1017816.384538137004711, 1017827.867921499651857, 1017839.351315162028186, 1017850.834719123900868, 1017862.318133385735564, 1017873.801557946600951, 1017885.284992807079107, 1017896.768437966704369, 1017908.251893425360322, 1017919.735359183279797, 1017931.218835239997134, 1017942.702321595745161, 1017954.185818249825388, 1017965.669325202703476, 1017977.152842454146594, 1017988.636370003921911, 1018000.119907852029428, 1018011.603455998236313, 1018023.087014442775398, 1018034.570583184831776, 1018046.054162225103937, 1018057.537751563009806, 1018069.021351198549382, 1018080.504961131722666, 1018091.988581362296827, 1018103.472211890271865, 1018114.955852715414949, 1018126.439503837726079, 1018137.923165256972425, 1018149.406836973153986, 1018160.890518986037932, 1018172.374211295857094, 1018183.857913902029395, 1018195.341626804787666, 1018206.825350004015490, 1018218.309083499480039, 1018229.792827291181311, 1018241.276581378653646, 1018252.760345762362704, 1018264.244120441842824, 1018275.727905417094007, 1018287.211700687883422, 1018298.695506254443899, 1018310.179322116309777, 1018321.663148273481056, 1018333.146984725608490, 1018344.630831473157741, 1018356.114688515546732, 1018367.598555853008293, 1018379.082433485076763, 1018390.566321411984973, 1018402.050219633267261, 1018413.534128149389289, 1018425.018046959652565, 1018436.501976064289920, 1018447.985915462835692, 1018459.469865155522712, 1018470.953825142350979, 1018482.437795422854833, 1018493.921775996917859, 1018505.405766864772886, 1018516.889768026070669, 1018528.373779481044039, 1018539.857801229227334, 1018551.341833270620555, 1018562.825875604990870, 1018574.309928232338279, 1018585.793991152662784, 1018597.278064365498722, 1018608.762147871311754, 1018620.246241669636220, 1018631.730345760472119, 1018643.214460143470205, 1018654.698584818863310, 1018666.182719786302187, 1018677.666865045786835, 1018689.151020597550087, 1018700.635186440660618, 1018712.119362575816922, 1018723.603549002320506, 1018735.087745720637031, 1018746.571952730068006, 1018758.056170031079091, 1018769.540397622971795, 1018781.024635506211780, 1018792.508883680216968, 1018803.993142144987360, 1018815.477410900639370, 1018826.961689947172999, 1018838.445979284122586, 1018849.930278911488131, 1018861.414588829036802, 1018872.898909037001431, 1018884.383239535149187, 1018895.867580323480070, 1018907.351931401295587, 1018918.836292769294232, 1018930.320664426777512, 1018941.805046373861842, 1018953.289438610547222, 1018964.773841136484407, 1018976.258253951906227, 1018987.742677056347020, 1018999.227110450039618, 1019010.711554132518359, 1019022.196008104016073, 1019033.680472364067100, 1019045.164946912904270, 1019056.649431750294752, 1019068.133926876005717, 1019079.618432290037163, 1019091.102947992272675, 1019102.587473982712254, 1019114.072010261472315, 1019125.556556827621534, 1019137.041113681858405, 1019148.525680823717266, 1019160.010258253198117, 1019171.494845970068127, 1019182.979443974560127, 1019194.464052265975624, 1019205.948670844780281, 1019217.433299710741267, 1019228.917938863392919, 1019240.402588302851655, 1019251.887248029350303, 1019263.371918042306788, 1019274.856598341953941, 1019286.341288927826099, 1019297.825989800156094, 1019309.310700958711095, 1019320.795422403258272, 1019332.280154133797623, 1019343.764896150329150, 1019355.249648452620022, 1019366.734411040670238, 1019378.219183914246969, 1019389.703967073117383, 1019401.188760517630726, 1019412.673564247088507, 1019424.158378262072802, 1019435.643202561885118, 1019447.128037146525458, 1019458.612882016226649, 1019470.097737170755863, 1019481.582602609647438, 1019493.067478333134204, 1019504.552364341216162, 1019516.037260633427650, 1019527.522167210001498, 1019539.007084070472047, 1019550.492011214955710, 1019561.976948643219657, 1019573.461896355613135, 1019584.946854351437651, 1019596.431822630926035, 1019607.916801193845458, 1019619.401790039963089, 1019630.886789169511758, 1019642.371798582491465, 1019653.856818278203718, 1019665.341848256648518, 1019676.826888518058695, 1019688.311939062434249, 1019699.796999889193103, 1019711.282070998568088, 1019722.767152390209958, 1019734.252244064351544, 1019745.737346020527184, 1019757.222458258969709, 1019768.707580779213458, 1019780.192713581258431, 1019791.677856665337458, 1019803.163010030984879, 1019814.648173678200692, 1019826.133347606752068, 1019837.618531816871837, 1019849.103726307745092, 1019860.588931080303155, 1019872.074146133731119, 1019883.559371468028985, 1019895.044607083196752, 1019906.529852979234420, 1019918.015109155443497, 1019929.500375612522475, 1019940.985652350005694, 1019952.470939367660321, 1019963.956236665486358, 1019975.441544243250974, 1019986.926862101419829, 1019998.412190239061601, 1020009.897528656525537, 1020021.382877353811637, 1020032.868236330570653, 1020044.353605586802587, 1020055.838985122274607, 1020067.324374936986715, 1020078.809775030938908, 1020090.295185403898358, 1020101.780606055632234, 1020113.266036986606196, 1020124.751478195888922, 1020136.236929683946073, 1020147.722391450311989, 1020159.207863495103084, 1020170.693345818086527, 1020182.178838419378735, 1020193.664341298979707, 1020205.149854456190951, 1020216.635377891478129, 1020228.120911604375578, 1020239.606455595116131, 1020251.092009863466956, 1020262.577574408962391, 1020274.063149231835268, 1020285.548734332085587, 1020297.034329709247686, 1020308.519935363670811, 1020320.005551294889301, 1020331.491177502786741, 1020342.976813987595960, 1020354.462460748851299, 1020365.948117786785588, 1020377.433785101165995, 1020388.919462691526860, 1020400.405150558101013, 1020411.890848700888455, 1020423.376557119656354, 1020434.862275814171880, 1020446.348004784435034, 1020457.833744030096568, 1020469.319493551622145, 1020480.805253348429687, 1020492.291023420752026, 1020503.776803768356331, 1020515.262594390776940, 1020526.748395288479514, 1020538.234206460998394, 1020549.720027908100747, 1020561.205859630252235, 1020572.691701626754366, 1020584.177553897839971, 1020595.663416443276219, 1020607.149289262713864, 1020618.635172356618568, 1020630.121065724641085, 1020641.606969366315752, 1020653.092883282341063, 1020664.578807471785694, 1020676.064741934649646, 1020687.550686671398580, 1020699.036641681566834, 1020710.522606964921579, 1020722.008582521695644, 1020733.494568351190537, 1020744.980564454104751, 1020756.466570829739794, 1020767.952587477979250, 1020779.438614399055950, 1020790.924651592620648, 1020802.410699058906175, 1020813.896756797446869, 1020825.382824808242731, 1020836.868903091293760, 1020848.354991646367125, 1020859.841090473229997, 1020871.327199571882375, 1020882.813318942557089, 1020894.299448584788479, 1020905.785588498576544, 1020917.271738683572039, 1020928.757899140007794, 1020940.244069867767394, 1020951.730250866385177, 1020963.216442136326805, 1020974.702643676893786, 1020986.188855488318950, 1020997.675077570602298, 1021009.161309923278168, 1021020.647552546579391, 1021032.133805440040305, 1021043.620068603660911, 1021055.106342037674040, 1021066.592625741730444, 1021078.078919715830125, 1021089.565223959391005, 1021101.051538473111577, 1021112.537863256060518, 1021124.024198308936320, 1021135.510543631040491, 1021146.996899222373031, 1021158.483265083166771, 1021169.969641212956049, 1021181.456027611740865, 1021192.942424279288389, 1021204.428831215831451, 1021215.915248420555145, 1021227.401675894390792, 1021238.888113636290655, 1021250.374561646953225, 1021261.861019925680012, 1021273.347488472703844, 1021284.833967287559062, 1021296.320456370478496, 1021307.806955721229315, 1021319.293465339811519, 1021330.779985225992277, 1021342.266515379538760, 1021353.753055800450966, 1021365.239606488961726, 1021376.726167444256134, 1021388.212738667032681, 1021399.699320156476460, 1021411.185911913053133, 1021422.672513936297037, 1021434.159126226208173, 1021445.645748782786541, 1021457.132381606032141, 1021468.619024695479311, 1021480.105678051128052, 1021491.592341672745533, 1021503.079015560564585, 1021514.565699714352377, 1021526.052394133759663, 1021537.539098819252104, 1021549.025813770014793, 1021560.512538986746222, 1021571.999274468515068, 1021583.486020215554163, 1021594.972776228096336, 1021606.459542505443096, 1021617.946319048060104, 1021629.433105855481699, 1021640.919902927707881, 1021652.406710264505818, 1021663.893527865875512, 1021675.380355731700547, 1021686.867193861748092, 1021698.354042256367393, 1021709.840900914859958, 1021721.327769837458618, 1021732.814649024163373, 1021744.301538474508561, 1021755.788438188727014, 1021767.275348166585900, 1021778.762268407852389, 1021790.249198912526481, 1021801.736139680608176, 1021813.223090711631812, 1021824.710052005946636, 1021836.197023563086987, 1021847.684005383402109, 1021859.170997466193512, 1021870.657999811926857, 1021882.145012420136482, 1021893.632035290822387, 1021905.119068423751742, 1021916.606111819157377, 1021928.093165476340801, 1021939.580229395767674, 1021951.067303577205166, 1021962.554388020653278, 1021974.041482725413516, 1021985.528587692067958, 1021997.015702919918112, 1022008.502828409313224, 1022019.989964160253294, 1022031.477110172272660, 1022042.964266445371322, 1022054.451432979316451, 1022065.938609774340875, 1022077.425796829978935, 1022088.912994146463461, 1022100.400201723561622, 1022111.887419560807757, 1022123.374647658667527, 1022134.861886016791686, 1022146.349134634714574, 1022157.836393513018265, 1022169.323662651237100, 1022180.810942049138248, 1022192.298231706954539, 1022203.785531624220312, 1022215.272841801168397, 1022226.760162237333134, 1022238.247492932947353, 1022249.734833887778223, 1022261.222185101592913, 1022272.709546574391425, 1022284.196918306057341, 1022295.684300296590663, 1022307.171692545874976, 1022318.659095053444616, 1022330.146507819765247, 1022341.633930844371207, 1022353.121364127029665, 1022364.608807667973451, 1022376.096261467202567, 1022387.583725524018519, 1022399.071199838886969, 1022410.558684411342256, 1022422.046179241384380, 1022433.533684329013340, 1022445.021199673879892, 1022456.508725276216865, 1022467.996261135907844, 1022479.483807252487168, 1022490.971363625954837, 1022502.458930256543681, 1022513.946507143788040, 1022525.434094287920743, 1022536.921691688476130, 1022548.409299345454201, 1022559.896917258622125, 1022571.384545428445563, 1022582.872183853993192, 1022594.359832535614260, 1022605.847491473541595, 1022617.335160667193122, 1022628.822840116336010, 1022640.310529821203090, 1022651.798229781561531, 1022663.285939997644164, 1022674.773660468519665, 1022686.261391195119359, 1022697.749132176511921, 1022709.236883412930183, 1022720.724644904141314, 1022732.212416650378145, 1022743.700198650825769, 1022755.187990906415507, 1022766.675793416099623, 1022778.163606180343777, 1022789.651429198682308, 1022801.139262471348047, 1022812.627105997875333, 1022824.114959778496996, 1022835.602823812980205, 1022847.090698100859299, 1022858.578582642599940, 1022870.066477437969297, 1022881.554382486501709, 1022893.042297788546421, 1022904.530223343637772, 1022916.018159151892178, 1022927.506105213076808, 1022938.994061527424492, 1022950.482028094236739, 1022961.970004913746379, 1022973.457991985953413, 1022984.945989310625009, 1022996.433996887761168, 1023007.922014716896228, 1023019.410042798495851, 1023030.898081131861545, 1023042.386129717226140, 1023053.874188554473221, 1023065.362257643369958, 1023076.850336984032765, 1023088.338426575995982, 1023099.826526419725269, 1023111.314636514522135, 1023122.802756860619411, 1023134.290887457784265, 1023145.779028305783868, 1023157.267179404851049, 1023168.755340754985809, 1023180.243512355256826, 1023191.731694206362590, 1023203.219886307953857, 1023214.708088659797795, 1023226.196301262010820, 1023237.684524114360102, 1023249.172757216612808, 1023260.661000569001772, 1023272.149254171294160, 1023283.637518023024313, 1023295.125792124657892, 1023306.614076475729235, 1023318.102371076238342, 1023329.590675925952382, 1023341.078991024871357, 1023352.567316373111680, 1023364.055651969974861, 1023375.543997816042975, 1023387.032353911083192, 1023398.520720254397020, 1023410.009096846450120, 1023421.497483687009662, 1023432.985880775842816, 1023444.474288112949580, 1023455.962705698329955, 1023467.451133531751111, 1023478.939571612980217, 1023490.428019942250103, 1023501.916478519095108, 1023513.404947343631648, 1023524.893426415626891, 1023536.381915735197254, 1023547.870415301877074, 1023559.358925115899183, 1023570.847445177263580, 1023582.335975485271774, 1023593.824516040389426, 1023605.313066842150874, 1023616.801627890556119, 1023628.290199185837992, 1023639.778780727297999, 1023651.267372515401803, 1023662.755974549567327, 1023674.244586829794571, 1023685.733209356199950, 1023697.221842128783464, 1023708.710485147079453, 1023720.199138411087915, 1023731.687801920576021, 1023743.176475675776601, 1023754.665159676456824, 1023766.153853922151029, 1023777.642558413557708, 1023789.131273149745539, 1023800.619998130947351, 1023812.108733357046731, 1023823.597478828043677, 1023835.086234543821774, 1023846.575000504148193, 1023858.063776708790101, 1023869.552563157980330, 1023881.041359851253219, 1023892.530166788841598, 1023904.018983970512636, 1023915.507811396033503, 1023926.996649065404199, 1023938.485496978624724, 1023949.974355135462247, 1023961.463223535800353, 1023972.952102179639041, 1023984.440991066861898, 1023995.929890197003260, 1024007.418799570761621, 1024018.907719187205657, 1024030.396649046568200, 1024041.885589148849249, 1024053.374539493815973, 1024064.863500081235543, 1024076.352470911340788, 1024087.841451983666047, 1024099.330443298444152, 1024110.819444855209440, 1024122.308456654078327, 1024133.797478695050813, 1024145.286510977777652, 1024156.775553502258845, 1024168.264606268494390, 1024179.753669276018627, 1024191.242742525297217, 1024202.731826015864499, 1024214.220919747487642, 1024225.710023720399477, 1024237.199137934134342, 1024248.688262389157899, 1024260.177397084538825, 1024271.666542020859197, 1024283.155697197653353, 1024294.644862615270540, 1024306.134038273012266, 1024317.623224170878530, 1024329.112420309334993, 1024340.601626687683165, 1024352.090843306155875, 1024363.580070164054632, 1024375.069307262310758, 1024386.558554599760100, 1024398.047812177101150, 1024409.537079993635416, 1024421.026358049479313, 1024432.515646344632842, 1024444.004944878979586, 1024455.494253652286716, 1024466.983572664787062, 1024478.472901916014962, 1024489.962241405737586, 1024501.451591134187765, 1024512.940951101132669, 1024524.430321306572296, 1024535.919701750040986, 1024547.409092432004400, 1024558.898493351764046, 1024570.387904509785585, 1024581.877325905486941, 1024593.366757539100945, 1024604.856199410278350, 1024616.345651519019157, 1024627.835113865323365, 1024639.324586448958144, 1024650.814069269690663, 1024662.303562327753752, 1024673.793065622914582, 1024685.282579154707491, 1024696.772102923598140, 1024708.261636929120868, 1024719.751181171275675, 1024731.240735649713315, 1024742.730300364899449, 1024754.219875316019170, 1024765.709460503770970, 1024777.199055927456357, 1024788.688661587075330, 1024800.178277482627891, 1024811.667903613881208, 1024823.157539981068112, 1024834.647186583490111, 1024846.136843421612866, 1024857.626510494970717, 1024869.116187803796493, 1024880.605875347275287, 1024892.095573126105592, 1024903.585281139938161, 1024915.074999388540164, 1024926.564727871911600, 1024938.054466590052471, 1024949.544215542497113, 1024961.033974729478359, 1024972.523744150763378, 1024984.013523806119338, 1024995.503313695779070, 1025006.993113819509745, 1025018.482924176845700, 1025029.972744768252596, 1025041.462575592915528, 1025052.952416651532985, 1025064.442267943522893, 1025075.932129468885250, 1025087.422001227387227, 1025098.911883219261654, 1025110.401775444042869, 1025121.891677901963703, 1025133.381590592558496, 1025144.871513516060077, 1025156.361446672002785, 1025167.851390060619451, 1025179.341343681677245, 1025190.831307535059750, 1025202.321281620534137, 1025213.811265938216820, 1025225.301260487874970, 1025236.791265269508585, 1025248.281280282884836, 1025259.771305528003722, 1025271.261341004632413, 1025282.751386712770909, 1025294.241442652419209, 1025305.731508823111653, 1025317.221585225313902, 1025328.711671858327463, 1025340.201768722268753, 1025351.691875817137770, 1025363.181993142818101, 1025374.672120699076913, 1025386.162258485914208, 1025397.652406503329985, 1025409.142564750858583, 1025420.632733228732832, 1025432.122911936719902, 1025443.613100874586962, 1025455.103300042566843, 1025466.593509440426715, 1025478.083729067700915, 1025489.573958924855106, 1025501.064199011307210, 1025512.554449327290058, 1025524.044709872454405, 1025535.534980647033080, 1025547.025261650327593, 1025558.515552882803604, 1025570.005854343995452, 1025581.496166034368798, 1025592.986487952992320, 1025604.476820100331679, 1025615.967162476154044, 1025627.457515080226585, 1025638.947877912549302, 1025650.438250973005779, 1025661.928634261596017, 1025673.419027778203599, 1025684.909431522362866, 1025696.399845494539477, 1025707.890269694034941, 1025719.380704121082090, 1025730.871148775680922, 1025742.361603657365777, 1025753.852068766602315, 1025765.342544102692045, 1025776.833029665867798, 1025788.323525455896743, 1025799.814031472778879, 1025811.304547715932131, 1025822.795074186054990, 1025834.285610882565379, 1025845.776157805463299, 1025857.266714954515919, 1025868.757282329723239, 1025880.247859931085259, 1025891.738447758369148, 1025903.229045811574906, 1025914.719654090469703, 1025926.210272594820708, 1025937.700901324627921, 1025949.191540280124173, 1025960.682189460727386, 1025972.172848866670392, 1025983.663518497836776, 1025995.154198353760876, 1026006.644888434675522, 1026018.135588740347885, 1026029.626299270777963, 1026041.117020025732927, 1026052.607751005212776, 1026064.098492208984680, 1026075.589243637281470, 1026087.080005289404653, 1026098.570777165819891, 1026110.061559265945107, 1026121.552351590245962, 1026133.043154138140380, 1026144.533966909628361, 1026156.024789904709905, 1026167.515623123152182, 1026179.006466564955190, 1026190.497320229886100, 1026201.988184118177742, 1026213.479058229364455, 1026224.969942563446239, 1026236.460837120423093, 1026247.951741899829358, 1026259.442656902130693, 1026270.933582126745023, 1026282.424517573905177, 1026293.915463243261911, 1026305.406419134815224, 1026316.897385248565115, 1026328.388361584045924, 1026339.879348141490482, 1026351.370344920665957, 1026362.861351921572350, 1026374.352369143976830, 1026385.843396587879397, 1026397.334434253047220, 1026408.825482139480300, 1026420.316540247062221, 1026431.807608575560153, 1026443.298687125323340, 1026454.789775895653293, 1026466.280874886782840, 1026477.771984098479152, 1026489.263103530509397, 1026500.754233183106408, 1026512.245373056037351, 1026523.736523149069399, 1026535.227683462435380, 1026546.718853995669633, 1026558.210034748539329, 1026569.701225721393712, 1026581.192426913767122, 1026592.683638325775973, 1026604.174859957420267, 1026615.666091808234341, 1026627.157333878451027, 1026638.648586167837493, 1026650.139848676160909, 1026661.631121403421275, 1026673.122404349385761, 1026684.613697514287196, 1026696.105000897892751, 1026707.596314499969594, 1026719.087638320284896, 1026730.578972358955070, 1026742.070316615747288, 1026753.561671091010794, 1026765.053035784047097, 1026776.544410694856197, 1026788.035795823670924, 1026799.527191170025617, 1026811.018596733920276, 1026822.510012515587732, 1026834.001438514562324, 1026845.492874730611220, 1026856.984321163734421, 1026868.475777814397588, 1026879.967244681320153, 1026891.458721765666269, 1026902.950209066621028, 1026914.441706584184431, 1026925.933214318123646, 1026937.424732268671505, 1026948.916260435595177, 1026960.407798818661831, 1026971.899347417871468, 1026983.390906233224086, 1026994.882475264254026, 1027006.374054511194117, 1027017.865643973811530, 1027029.357243651989847, 1027040.848853545961902, 1027052.340473654912785, 1027063.832103979308158, 1027075.323744519148022, 1027086.815395273733884, 1027098.307056243531406, 1027109.798727428074926, 1027121.290408827364445, 1027132.782100441399962, 1027144.273802269715816, 1027155.765514312777668, 1027167.257236570119858, 1027178.748969041742384, 1027190.240711727296002, 1027201.732464627013542, 1027213.224227740545757, 1027224.716001068125479, 1027236.207784609519877, 1027247.699578364263289, 1027259.191382332588546, 1027270.683196514262818, 1027282.175020909518935, 1027293.666855517658405, 1027305.158700339146890, 1027316.650555373518728, 1027328.142420620773919, 1027339.634296080563217, 1027351.126181753352284, 1027362.618077638559043, 1027374.109983736416325, 1027385.601900046458468, 1027397.093826568918303, 1027408.585763303562999, 1027420.077710249926895, 1027431.569667408475652, 1027443.061634778976440, 1027454.553612360963598, 1027466.045600154669955, 1027477.537598160095513, 1027489.029606376774609, 1027500.521624804823659, 1027512.013653444009833, 1027523.505692294449545, 1027534.997741355677135, 1027546.489800628158264, 1027557.981870111194439, 1027569.473949805018492, 1027580.966039709397592, 1027592.458139824098907, 1027603.950250149588101, 1027615.442370684933849, 1027626.934501430834644, 1027638.426642386591993, 1027649.918793552322313, 1027661.410954927792773, 1027672.903126513119787, 1027684.395308308303356, 1027695.887500312877819, 1027707.379702526843175, 1027718.871914950199425, 1027730.364137582946569, 1027741.856370424618945, 1027753.348613475449383, 1027764.840866735205054, 1027776.333130203653127, 1027787.825403880793601, 1027799.317687766510062, 1027810.809981861035340, 1027822.302286163787358, 1027833.794600674766116, 1027845.286925394204445, 1027856.779260321636684, 1027868.271605457062833, 1027879.763960800250061, 1027891.256326350965537, 1027902.748702109674923, 1027914.241088076145388, 1027925.733484249678440, 1027937.225890630972572, 1027948.718307219329290, 1027960.210734014632180, 1027971.703171017114073, 1027983.195618226658553, 1027994.688075643032789, 1028006.180543266003951, 1028017.673021095804870, 1028029.165509131969884, 1028040.658007374731824, 1028052.150515823625028, 1028063.643034478882328, 1028075.135563340270892, 1028086.628102407557890, 1028098.120651680743322, 1028109.613211159710772, 1028121.105780844460241, 1028132.598360734875314, 1028144.090950830490328, 1028155.583551131770946, 1028167.076161638251506, 1028178.568782349699177, 1028190.061413266579621, 1028201.554054388194345, 1028213.046705714543350, 1028224.539367245859466, 1028236.032038981909864, 1028247.524720922461711, 1028259.017413067282178, 1028270.510115416720510, 1028282.002827970078215, 1028293.495550727704540, 1028304.988283689599484, 1028316.481026855064556, 1028327.973780224565417, 1028339.466543797636405, 1028350.959317574510351, 1028362.452101554721594, 1028373.944895738270134, 1028385.437700125388801, 1028396.930514715611935, 1028408.423339508706704, 1028419.916174505022354, 1028431.409019704093225, 1028442.901875106035732, 1028454.394740710617043, 1028465.887616517837159, 1028477.380502527463250, 1028488.873398739495315, 1028500.366305153700523, 1028511.859221770311706, 1028523.352148588630371, 1028534.845085609122179, 1028546.338032831321470, 1028557.830990255228244, 1028569.323957880842499, 1028580.816935708047822, 1028592.309923736611381, 1028603.802921966416761, 1028615.295930397696793, 1028626.788949029985815, 1028638.281977863283828, 1028649.775016897358000, 1028661.268066132441163, 1028672.761125568067655, 1028684.254195204237476, 1028695.747275040950626, 1028707.240365078207105, 1028718.733465315774083, 1028730.226575753069483, 1028741.719696390791796, 1028753.212827228591777, 1028764.705968266003765, 1028776.199119503260590, 1028787.692280940129422, 1028799.185452576610260, 1028810.678634412703104, 1028822.171826447942294, 1028833.665028682327829, 1028845.158241116092540, 1028856.651463748770766, 1028868.144696580362506, 1028879.637939610751346, 1028891.131192839937285, 1028902.624456267803907, 1028914.117729894118384, 1028925.611013718647882, 1028937.104307741858065, 1028948.597611963050440, 1028960.090926382225007, 1028971.584250999847427, 1028983.077585814753547, 1028994.570930827874690, 1029006.064286038745195, 1029017.557651446899399, 1029029.051027052570134, 1029040.544412855408154, 1029052.037808855879121, 1029063.531215053400956, 1029075.024631447973661, 1029086.518058039597236, 1029098.011494828038849, 1029109.504941813298501, 1029120.998398994910531, 1029132.491866373340599, 1029143.985343947890215, 1029155.478831719025038, 1029166.972329686512239, 1029178.465837849886157, 1029189.959356209263206, 1029201.452884764643386, 1029212.946423515677452, 1029224.439972462598234, 1029235.933531605172902, 1029247.427100943168625, 1029258.920680476352572, 1029270.414270205190405, 1029281.907870128983632, 1029293.401480247965083, 1029304.895100561901927, 1029316.388731070561334, 1029327.882371774408966, 1029339.376022672280669, 1029350.869683765224181, 1029362.363355052308179, 1029373.857036534114741, 1029385.350728209945373, 1029396.844430079800077, 1029408.338142143911682, 1029419.831864402047358, 1029431.325596853741445, 1029442.819339499459602, 1029454.313092338503338, 1029465.806855371105485, 1029477.300628597266041, 1029488.794412016752176, 1029500.288205629447475, 1029511.782009435119107, 1029523.275823433883488, 1029534.769647625507787, 1029546.263482009992003, 1029557.757326587336138, 1029569.251181357074529, 1029580.745046319207177, 1029592.238921473966911, 1029603.732806820888072, 1029615.226702359970659, 1029626.720608090981841, 1029638.214524013921618, 1029649.708450129022822, 1029661.202386435703374, 1029672.696332934196107, 1029684.190289623918943, 1029695.684256505337544, 1029707.178233577986248, 1029718.672220842097886, 1029730.166218297206797, 1029741.660225943312980, 1029753.154243780183606, 1029764.648271808051504, 1029776.142310026683845, 1029787.636358436080627, 1029799.130417035776190, 1029810.624485825654119, 1029822.118564806180075, 1029833.612653976771981, 1029845.106753337429836, 1029856.600862888153642, 1029868.094982628710568, 1029879.589112559333444, 1029891.083252679323778, 1029902.577402988914400, 1029914.071563488105312, 1029925.565734176430851, 1029937.059915054123849, 1029948.554106121184304, 1029960.048307377146557, 1029971.542518821894191, 1029983.036740455892868, 1029994.530972278327681, 1030006.025214289664291, 1030017.519466489204206, 1030029.013728877413087, 1030040.508001453825273, 1030052.002284218673594, 1030063.496577171259560, 1030074.990880312281661, 1030086.485193641041405, 1030097.979517157538794, 1030109.473850862006657, 1030120.968194753630087, 1030132.462548833107576, 1030143.956913099857047, 1030155.451287554111332, 1030166.945672195171937, 1030178.440067023737356, 1030189.934472038876265, 1030201.428887241054326, 1030212.923312630038708, 1030224.417748205596581, 1030235.912193968193606, 1030247.406649916665629, 1030258.901116051711142, 1030270.395592372980900, 1030281.890078880474903, 1030293.384575573843904, 1030304.879082453320734, 1030316.373599518672563, 1030327.868126769666560, 1030339.362664206302725, 1030350.857211828581057, 1030362.351769636268727, 1030373.846337629132904, 1030385.340915807173587, 1030396.835504170390777, 1030408.330102718784474, 1030419.824711452121846, 1030431.319330370053649, 1030442.813959472812712, 1030454.308598759816960, 1030465.803248231764883, 1030477.297907887957990, 1030488.792577728163451, 1030500.287257752846926, 1030511.781947961775586, 1030523.276648354483768, 1030534.771358930971473, 1030546.266079691238701, 1030557.760810635285452, 1030569.255551762878895, 1030580.750303073669784, 1030592.245064567890950, 1030603.739836245658807, 1030615.234618106274866, 1030626.729410149971955, 1030638.224212376982905, 1030649.719024786376394, 1030661.213847378618084, 1030672.708680153707974, 1030684.203523110947572, 1030695.698376251035370, 1030707.193239573040046, 1030718.688113077427261, 1030730.182996763964184, 1030741.677890632301569, 1030753.172794682672247, 1030764.667708914959803, 1030776.162633328698575, 1030787.657567924121395, 1030799.152512700995430, 1030810.647467659320682, 1030822.142432798864320, 1030833.637408119859174, 1030845.132393621606752, 1030856.627389304339886, 1030868.122395168291405, 1030879.617411212529987, 1030891.112437437637709, 1030902.607473843148910, 1030914.102520429412834, 1030925.597577195730992, 1030937.092644142336212, 1030948.587721269228496, 1030960.082808575942181, 1030971.577906062942930, 1030983.073013729532249, 1030994.568131575710140, 1031006.063259601709433, 1031017.558397807297297, 1031029.053546192008071, 1031040.548704756074585, 1031052.043873499613255, 1031063.539052421925589, 1031075.034241523360834, 1031086.529440803686157, 1031098.024650262901559, 1031109.519869901007041, 1031121.015099717304111, 1031132.510339712258428, 1031144.005589885637164, 1031155.500850237207487, 1031166.996120766969398, 1031178.491401474690065, 1031189.986692360602319, 1031201.481993423891254, 1031212.977304665255360, 1031224.472626084345393, 1031235.967957680928521, 1031247.463299455004744, 1031258.958651406341232, 1031270.454013534937985, 1031281.949385840795003, 1031293.444768323446624, 1031304.940160983125679, 1031316.435563819599338, 1031327.930976832867600, 1031339.426400022697635, 1031350.921833389089443, 1031362.417276931693777, 1031373.912730650743470, 1031385.408194546122104, 1031396.903668617364019, 1031408.399152864702046, 1031419.894647287903354, 1031431.390151886967942, 1031442.885666661662981, 1031454.381191611988470, 1031465.876726737944409, 1031477.372272038832307, 1031488.867827515350655, 1031500.363393166800961, 1031511.858968993532471, 1031523.354554995079525, 1031534.850151171558537, 1031546.345757522736676, 1031557.841374048613943, 1031569.337000748957507, 1031580.832637623767368, 1031592.328284673043527, 1031603.823941896553151, 1031615.319609294063412, 1031626.815286865574308, 1031638.310974611085840, 1031649.806672530365176, 1031661.302380623412319, 1031672.798098889878020, 1031684.293827330227941, 1031695.789565943647176, 1031707.285314730601385, 1031718.781073690392077, 1031730.276842823717743, 1031741.772622129879892, 1031753.268411608878523, 1031764.764211260713637, 1031776.260021085152403, 1031787.755841082194820, 1031799.251671251840889, 1031810.747511593857780, 1031822.243362107896246, 1031833.739222794189118, 1031845.235093652619980, 1031856.730974682956003, 1031868.226865885197185, 1031879.722767259110697, 1031891.218678804696538, 1031902.714600521954708, 1031914.210532410652377, 1031925.706474470556714, 1031937.202426701434888, 1031948.698389103985392, 1031960.194361677276902, 1031971.690344421309419, 1031983.186337336432189, 1031994.682340422179550, 1032006.178353678667918, 1032017.674377105664462, 1032029.170410702936351, 1032040.666454470483586, 1032052.162508408306167, 1032063.658572516171262, 1032075.154646794078872, 1032086.650731241796166, 1032098.146825859323144, 1032109.642930646659806, 1032121.139045603573322, 1032132.635170729714446, 1032144.131306025316007, 1032155.627451490261592, 1032167.123607124318369, 1032178.619772927486338, 1032190.115948899765499, 1032201.612135040690191, 1032213.108331350493245, 1032224.604537828708999, 1032236.100754475570284, 1032247.596981291077100, 1032259.093218274763785, 1032270.589465426630341, 1032282.085722746676765, 1032293.581990234553814, 1032305.078267890727147, 1032316.574555714614689, 1032328.070853705983609, 1032339.567161865299568, 1032351.063480191864073, 1032362.559808685909957, 1032374.056147347204387, 1032385.552496175747365, 1032397.048855171538889, 1032408.545224334113300, 1032420.041603663936257, 1032431.537993160076439, 1032443.034392823115923, 1032454.530802652589045, 1032466.027222648612224, 1032477.523652810952626, 1032489.020093139843084, 1032500.516543634817936, 1032512.013004295644350, 1032523.509475122555159, 1032535.005956115317531, 1032546.502447273931466, 1032557.998948597931303, 1032569.495460087782703, 1032580.991981742787175, 1032592.488513563410379, 1032603.985055549070239, 1032615.481607699766755, 1032626.978170015849173, 1032638.474742496619001, 1032649.971325142076239, 1032661.467917952686548, 1032672.964520927518606, 1032684.461134067038074, 1032695.957757370779291, 1032707.454390839207917, 1032718.951034471625462, 1032730.447688268031925, 1032741.944352228427306, 1032753.441026352695189, 1032764.937710641068406, 1032776.434405092964880, 1032787.931109708384611, 1032799.427824487327598, 1032810.924549429561011, 1032822.421284535084851, 1032833.918029803899117, 1032845.414785235538147, 1032856.911550830467604, 1032868.408326588221826, 1032879.905112508335151, 1032891.401908591506071, 1032902.898714837268926, 1032914.395531245041639, 1032925.892357815522701, 1032937.389194548130035, 1032948.886041442863643, 1032960.382898499723524, 1032971.879765718476847, 1032983.376643098890781, 1032994.873530641198158, 1033006.370428345166147, 1033017.867336210561916, 1033029.364254237385467, 1033040.861182425636798, 1033052.358120774850249, 1033063.855069285142235, 1033075.352027956745587, 1033086.848996789078228, 1033098.345975782140158, 1033109.842964936164208, 1033121.339964250451885, 1033132.836973725236021, 1033144.333993360749446, 1033155.831023156293668, 1033167.328063111868687, 1033178.825113227707334, 1033190.322173503576778, 1033201.819243939244188, 1033213.316324534709565, 1033224.813415289623663, 1033236.310516204219311, 1033247.807627278380096, 1033259.304748511873186, 1033270.801879904465750, 1033282.299021456157789, 1033293.796173167182133, 1033305.293335037073120, 1033316.790507065597922, 1033328.287689252989367, 1033339.784881599014625, 1033351.282084103440866, 1033362.779296766268089, 1033374.276519587612711, 1033385.773752567009069, 1033397.270995704573579, 1033408.768249000073411, 1033420.265512453741394, 1033431.762786064879037, 1033443.260069833952002, 1033454.757363760494627, 1033466.254667844506912, 1033477.751982085988857, 1033489.249306484940462, 1033500.746641040663235, 1033512.243985753622837, 1033523.741340623586439, 1033535.238705650437623, 1033546.736080834176391, 1033558.233466174220666, 1033569.730861671268940, 1033581.228267324622720, 1033592.725683134282008, 1033604.223109100013971, 1033615.720545222284272, 1033627.217991500394419, 1033638.715447934344411, 1033650.212914524367079, 1033661.710391269996762, 1033673.207878171233460, 1033684.705375228077173, 1033696.202882440411486, 1033707.700399807770737, 1033719.197927330737002, 1033730.695465008611791, 1033742.193012841627933, 1033753.690570829319768, 1033765.188138972152956, 1033776.685717269196175, 1033788.183305721380748, 1033799.680904327775352, 1033811.178513088612817, 1033822.676132003893144, 1033834.173761073150672, 1033845.671400296501815, 1033857.169049673946574, 1033868.666709205368534, 1033880.164378890302032, 1033891.662058729212731, 1033903.159748721402138, 1033914.657448867103085, 1033926.155159166548401, 1033937.652879618806764, 1033949.150610224576667, 1033960.648350983159617, 1033972.146101894788444, 1033983.643862959230319, 1033995.141634176252410, 1034006.639415546203963, 1034018.137207068619318, 1034029.635008743382059, 1034041.132820570492186, 1034052.630642549949698, 1034064.128474681521766, 1034075.626316964975558, 1034087.124169400543906, 1034098.622031987761147, 1034110.119904726627283, 1034121.617787617607974, 1034133.115680659539066, 1034144.613583853119053, 1034156.111497197765857, 1034167.609420693945140, 1034179.107354341074824, 1034190.605298139154911, 1034202.103252088185400, 1034213.601216188166291, 1034225.099190438631922, 1034236.597174839815125, 1034248.095169391250238, 1034259.593174093402922, 1034271.091188945574686, 1034282.589213947998360, 1034294.087249100441113, 1034305.585294402902946, 1034317.083349855267443, 1034328.581415457068942, 1034340.079491208889522, 1034351.577577110263519, 1034363.075673160958104, 1034374.573779360973276, 1034386.071895710309036, 1034397.570022208732553, 1034409.068158856243826, 1034420.566305652842857, 1034432.064462598063983, 1034443.562629692140035, 1034455.060806934605353, 1034466.558994325809181, 1034478.057191865285859, 1034489.555399553151801, 1034501.053617389174178, 1034512.551845373352990, 1034524.050083505688235, 1034535.548331785947084, 1034547.046590213663876, 1034558.544858789304271, 1034570.043137512635440, 1034581.541426383424550, 1034593.039725401438773, 1034604.538034566910937, 1034616.036353879608214, 1034627.534683338948525, 1034639.033022945630364, 1034650.531372699071653, 1034662.029732599505223, 1034673.528102646465413, 1034685.026482839952223, 1034696.524873179965653, 1034708.023273666272871, 1034719.521684299106710, 1034731.020105077768676, 1034742.518536002724431, 1034754.016977073275484, 1034765.515428289887495, 1034777.013889652211219, 1034788.512361160246655, 1034800.010842813877389, 1034811.509334612870589, 1034823.007836556993425, 1034834.506348646711558, 1034846.004870881326497, 1034857.503403260838240, 1034869.001945785712451, 1034880.500498455017805, 1034891.999061269219965, 1034903.497634228086099, 1034914.996217331383377, 1034926.494810578878969, 1034937.993413970689289, 1034949.492027507047169, 1034960.990651187137701, 1034972.489285011426546, 1034983.987928979680873, 1034995.486583091435023, 1035006.985247347154655, 1035018.483921746374108, 1035029.982606289093383, 1035041.481300975079648, 1035052.980005804565735, 1035064.478720777085982, 1035075.977445892640390, 1035087.476181151228957, 1035098.974926552502438, 1035110.473682096460834, 1035121.972447783453390, 1035133.471223612781614, 1035144.970009584445506, 1035156.468805698677897, 1035167.967611955245957, 1035179.466428353684023, 1035190.965254894224927, 1035202.464091576868668, 1035213.962938401382416, 1035225.461795367300510, 1035236.960662475088611, 1035248.459539724164642, 1035259.958427114994265, 1035271.457324646995403, 1035282.956232319935225, 1035294.455150134279393, 1035305.954078089795075, 1035317.453016185783781, 1035328.951964422944002, 1035340.450922800810076, 1035351.949891319149174, 1035363.448869977961294, 1035374.947858777246438, 1035386.446857716771774, 1035397.945866796537302, 1035409.444886016193777, 1035420.943915375974029, 1035432.442954875761643, 1035443.942004515090957, 1035455.441064293961972, 1035466.940134212840348, 1035478.439214271027595, 1035489.938304468523711, 1035501.437404805328697, 1035512.936515281209722, 1035524.435635896166787, 1035535.934766650199890, 1035547.433907543076202, 1035558.933058574446477, 1035570.432219744776376, 1035581.931391053483821, 1035593.430572500568815, 1035604.929764086264186, 1035616.428965809871443, 1035627.928177671856247, 1035639.427399671520106, 1035650.926631809561513, 1035662.425874085281976, 1035673.925126498681493, 1035685.424389049527235, 1035696.923661738052033, 1035708.422944564023055, 1035719.922237527091056, 1035731.421540627488866, 1035742.920853865332901, 1035754.420177239691839, 1035765.919510751264170, 1035777.418854399351403, 1035788.918208184419200, 1035800.417572106001899, 1035811.916946163866669, 1035823.416330358479172, 1035834.915724689140916, 1035846.415129155851901, 1035857.914543758844957, 1035869.413968497887254, 1035880.913403372629546, 1035892.412848383071832, 1035903.912303529330529, 1035915.411768811172806, 1035926.911244228365831, 1035938.410729780909605, 1035949.910225468804128, 1035961.409731291816570, 1035972.909247249946930, 1035984.408773342962377, 1035995.908309570862912, 1036007.407855933415703, 1036018.907412430620752, 1036030.406979062361643, 1036041.906555828638375, 1036053.406142729101703, 1036064.905739763751626, 1036076.405346932820976, 1036087.904964235611260, 1036099.404591672355309, 1036110.904229243053123, 1036122.403876947471872, 1036133.903534785378724, 1036145.403202757006511, 1036156.902880861889571, 1036168.402569100027904, 1036179.902267471421510, 1036191.401975975721143, 1036202.901694613392465, 1036214.401423383620568, 1036225.901162286871113, 1036237.400911322678439, 1036248.900670491042547, 1036260.400439792196266, 1036271.900219225441106, 1036283.400008791009896, 1036294.899808488669805, 1036306.399618318653665, 1036317.899438280495815, 1036329.399268374196254, 1036340.899108599405736, 1036352.398958956589922, 1036363.898819445166737, 1036375.398690065136179, 1036386.898570816731080, 1036398.398461699485779, 1036409.898362713167444, 1036421.398273858241737, 1036432.898195134010166, 1036444.398126540705562, 1036455.898068078095093, 1036467.398019746178761, 1036478.897981544723734, 1036490.397953473730013, 1036501.897935532848351, 1036513.397927722544409, 1036524.897930042236112, 1036536.397942491923459, 1036547.897965071606450, 1036559.397997781052254, 1036570.898040620260872, 1036582.398093588766642, 1036593.898156687268056, 1036605.398229914833792, 1036616.898313271696679, 1036628.398406757856719, 1036639.898510373081081, 1036651.398624117369764, 1036662.898747990606353, 1036674.398881992325187, 1036685.899026123108342, 1036697.399180382257327, 1036708.899344770004973, 1036720.399519286118448, 1036731.899703930364922, 1036743.399898702744395, 1036754.900103603256866, 1036766.400318631902337, 1036777.900543788215145, 1036789.400779072428122, 1036800.901024484308437, 1036812.401280023506843, 1036823.901545690489002, 1036835.401821484440006, 1036846.902107406058349, 1036858.402403454645537, 1036869.902709630201571, 1036881.403025932726450, 1036892.903352361987345, 1036904.403688918217085, 1036915.904035601182841, 1036927.404392410418950, 1036938.904759346158244, 1036950.405136408167891, 1036961.905523596447892, 1036973.405920910649002, 1036984.906328351004049, 1036996.406745917396620, 1037007.907173609593883, 1037019.407611427595839, 1037030.908059370936826, 1037042.408517439849675, 1037053.908985634334385, 1037065.409463954158127, 1037076.909952398855239, 1037088.410450968891382, 1037099.910959663800895, 1037111.411478483583778, 1037122.912007428123616, 1037134.412546497653238, 1037145.913095691590570, 1037157.413655009935610, 1037168.914224452688359, 1037180.414804019615985, 1037191.915393710718490, 1037203.415993526228704, 1037214.916603465448134, 1037226.417223528376780, 1037237.917853715480305, 1037249.418494026060216, 1037260.919144460116513, 1037272.419805017649196, 1037283.920475698541850, 1037295.421156502561644, 1037306.921847429824993, 1037318.422548480331898, 1037329.923259653383866, 1037341.423980949679390, 1037352.924712368519977, 1037364.425453910138458, 1037375.926205574069172, 1037387.426967360544950, 1037398.927739269565791, 1037410.428521300433204, 1037421.929313453612849, 1037433.430115728639066, 1037444.930928125861101, 1037456.431750644580461, 1037467.932583285379224, 1037479.433426047558896, 1037490.934278931119479, 1037502.435141936293803, 1037513.936015062849037, 1037525.436898310552351, 1037536.937791679170914, 1037548.438695169170387, 1037559.939608779619448, 1037571.440532510983758, 1037582.941466363263316, 1037594.442410335876048, 1037605.943364429054782, 1037617.444328642683104, 1037628.945302976528183, 1037640.446287430357188, 1037651.947282004635781, 1037663.448286698665470, 1037674.949301512679085, 1037686.450326446210966, 1037697.951361499726772, 1037709.452406672760844, 1037720.953461965080351, 1037732.454527376918122, 1037743.955602907808498, 1037755.456688557867892, 1037766.957784327096306, 1037778.458890215377323, 1037789.960006222245283, 1037801.461132348165847, 1037812.962268592440523, 1037824.463414955302142, 1037835.964571436983533, 1037847.465738036553375, 1037858.966914754477330, 1037870.468101590522565, 1037881.969298544689082, 1037893.470505616744049, 1037904.971722806454636, 1037916.472950114170089, 1037927.974187539191917, 1037939.475435081869364, 1037950.976692741969600, 1037962.477960519492626, 1037973.979238413972780, 1037985.480526425875723, 1037996.981824554502964, 1038008.483132800087333, 1038019.984451162628829, 1038031.485779641894624, 1038042.987118237419054, 1038054.488466949667782, 1038065.989825778291561, 1038077.491194723057561, 1038088.992573784082197, 1038100.493962961365469, 1038111.995362254441716, 1038123.496771663543768, 1038134.998191188205965, 1038146.499620828661136, 1038158.001060584676452, 1038169.502510456251912, 1038181.003970443154685, 1038192.505440545151941, 1038204.006920762476511, 1038215.508411094895564, 1038227.009911542059854, 1038238.511422104202211, 1038250.012942781206220, 1038261.514473572839051, 1038273.016014478867874, 1038284.517565499292687, 1038296.019126634346321, 1038307.520697883330286, 1038319.022279246710241, 1038330.523870724020526, 1038342.025472315261140, 1038353.527084020432085, 1038365.028705839067698, 1038376.530337771633640, 1038388.031979817315005, 1038399.533631976810284, 1038411.035294249537401, 1038422.536966635496356, 1038434.038649134454317, 1038445.540341746644117, 1038457.042044471367262, 1038468.543757309089415, 1038480.045480259577744, 1038491.547213322832249, 1038503.048956498387270, 1038514.550709786242805, 1038526.052473186631687, 1038537.554246698971838, 1038549.056030323496088, 1038560.557824060088024, 1038572.059627908514813, 1038583.561441868776456, 1038595.063265940640122, 1038606.565100124105811, 1038618.066944419173524, 1038629.568798825377598, 1038641.070663343183696, 1038652.572537971893325, 1038664.074422711739317, 1038675.576317562721670, 1038687.078222524141893, 1038698.580137596582063, 1038710.082062779576518, 1038721.583998073474504, 1038733.085943477577530, 1038744.587898991885595, 1038756.089864616864361, 1038767.591840351582505, 1038779.093826196505688, 1038790.595822151633911, 1038802.097828216035850, 1038813.599844390642829, 1038825.101870674756356, 1038836.603907068376429, 1038848.105953571503051, 1038859.608010183786973, 1038871.110076905461028, 1038882.612153736175969, 1038894.114240675931796, 1038905.616337724728510, 1038917.118444882333279, 1038928.620562148513272, 1038940.122689523501322, 1038951.624827006831765, 1038963.126974598504603, 1038974.629132298752666, 1038986.131300107110292, 1038997.633478023577482, 1039009.135666047804989, 1039020.637864180258475, 1039032.140072420355864, 1039043.642290768097155, 1039055.144519223715179, 1039066.646757786511444, 1039078.149006456951611, 1039089.651265234337188, 1039101.153534119133838, 1039112.655813111108728, 1039124.158102209796198, 1039135.660401415661909, 1039147.162710728240199, 1039158.665030147298239, 1039170.167359672952443, 1039181.669699305202812, 1039193.172049043932930, 1039204.674408888677135, 1039216.176778839901090, 1039227.679158896906301, 1039239.181549059925601, 1039250.683949328726158, 1039262.186359703540802, 1039273.688780183903873, 1039285.191210769815370, 1039296.693651461042464, 1039308.196102257817984, 1039319.698563159676269, 1039331.201034166500904, 1039342.703515278757550, 1039354.206006495864131, 1039365.708507817587815, 1039377.211019244394265, 1039388.713540775584988, 1039400.216072411392815, 1039411.718614151584916, 1039423.221165996161290, 1039434.723727944889106, 1039446.226299998001195, 1039457.728882154799066, 1039469.231474415748380, 1039480.734076780034229, 1039492.236689248587936, 1039503.739311820361763, 1039515.241944496054202, 1039526.744587274966761, 1039538.247240157099441, 1039549.749903142685071, 1039561.252576231025159, 1039572.755259422585368, 1039584.257952716900036, 1039595.760656114201993, 1039607.263369614258409, 1039618.766093216603622, 1039630.268826921470463, 1039641.771570728742518, 1039653.274324638419785, 1039664.777088650385849, 1039676.279862764175050, 1039687.782646980020218, 1039699.285441297921352, 1039710.788245717412792, 1039722.291060238727368, 1039733.793884861632250, 1039745.296719585894607, 1039756.799564411281608, 1039768.302419338491745, 1039779.805284366360866, 1039791.308159495587461, 1039802.811044725589454, 1039814.313940056366846, 1039825.816845488036051, 1039837.319761020364240, 1039848.822686653351411, 1039860.325622386764735, 1039871.828568220371380, 1039883.331524154404178, 1039894.834490188397467, 1039906.337466322584078, 1039917.840452556498349, 1039929.343448890605941, 1039940.846455324208364, 1039952.349471857189201, 1039963.852498490014113, 1039975.355535222333856, 1039986.858582053915597, 1039998.361638984526508, 1040009.864706014632247, 1040021.367783143534325, 1040032.870870371465571, 1040044.373967697960325, 1040055.877075123251416, 1040067.380192647338845, 1040078.883320269989781, 1040090.386457990738563, 1040101.889605810050853, 1040113.392763727344573, 1040124.895931742852554, 1040136.399109856225550, 1040147.902298067696393, 1040159.405496377032250, 1040170.908704784000292, 1040182.411923288367689, 1040193.915151890367270, 1040205.418390589766204, 1040216.921639386331663, 1040228.424898280296475, 1040239.928167271427810, 1040251.431446359260008, 1040262.934735544025898, 1040274.438034825376235, 1040285.941344203776680, 1040297.444663678645156, 1040308.947993249981664, 1040320.451332917553373, 1040331.954682681593113, 1040343.458042541635223, 1040354.961412497912534, 1040366.464792549959384, 1040377.968182697775774, 1040389.471582941594534, 1040400.974993281182833, 1040412.478413716075011, 1040423.981844246387482, 1040435.485284872120246, 1040446.988735593156889, 1040458.492196409264579, 1040469.995667320443317, 1040481.499148326460272, 1040493.002639427781105, 1040504.506140623474494, 1040516.009651913773268, 1040527.513173298677430, 1040539.016704777954146, 1040550.520246351603419, 1040562.023798019625247, 1040573.527359781553969, 1040585.030931637506001, 1040596.534513587481342, 1040608.038105631363578, 1040619.541707768687047, 1040631.045319999917410, 1040642.548942324589007, 1040654.052574742469005, 1040665.556217254023068, 1040677.059869858552702, 1040688.563532556290738, 1040700.067205347004347, 1040711.570888230693527, 1040723.074581207125448, 1040734.578284276067279, 1040746.081997437868267, 1040757.585720692062750, 1040769.089454038534313, 1040780.593197477515787, 1040792.096951008541510, 1040803.600714631844312, 1040815.104488346958533, 1040826.608272154117003, 1040838.112066052854061, 1040849.615870043402538, 1040861.119684125529602, 1040872.623508299002424, 1040884.127342564053833, 1040895.631186920451000, 1040907.135041367611848, 1040918.638905906234868, 1040930.142780535505153, 1040941.646665255888365, 1040953.150560066918842, 1040964.654464968596585, 1040976.158379960921593, 1040987.662305043893866, 1040999.166240216814913, 1041010.670185480383225, 1041022.174140833900310, 1041033.678106277598999, 1041045.182081811013632, 1041056.686067434260622, 1041068.190063147572801, 1041079.694068950368091, 1041091.198084842646495, 1041102.702110824408010, 1041114.206146895419806, 1041125.710193055914715, 1041137.214249305427074, 1041148.718315643956885, 1041160.222392071504146, 1041171.726478587836027, 1041183.230575192719698, 1041194.734681886387989, 1041206.238798668840900, 1041217.742925539263524, 1041229.247062498121522, 1041240.751209545531310, 1041252.255366680794396, 1041263.759533903910778, 1041275.263711215113290, 1041286.767898614169098, 1041298.272096101078205, 1041309.776303675142117, 1041321.280521337292157, 1041332.784749086597003, 1041344.288986923056655, 1041355.793234846671112, 1041367.297492857673205, 1041378.801760955480859, 1041390.306039140326902, 1041401.810327411862090, 1041413.314625770086423, 1041424.818934214999899, 1041436.323252746369690, 1041447.827581364195794, 1041459.331920068245381, 1041470.836268858518451, 1041482.340627734782174, 1041493.844996697036549, 1041505.349375745281577, 1041516.853764879051596, 1041528.358164098812267, 1041539.862573403981514, 1041551.366992794559337, 1041562.871422270662151, 1041574.375861832057126, 1041585.880311478278600, 1041597.384771210025065, 1041608.889241026598029, 1041620.393720927764662, 1041631.898210914223455, 1041643.402710985043086, 1041654.907221140223555, 1041666.411741380230524, 1041677.916271704365499, 1041689.420812112512067, 1041700.925362605135888, 1041712.429923181887716, 1041723.934493842534721, 1041735.439074586844072, 1041746.943665415048599, 1041758.448266326915473, 1041769.952877322211862, 1041781.457498401170596, 1041792.962129563326016, 1041804.466770808678120, 1041815.971422137226909, 1041827.476083548739552, 1041838.980755043216050, 1041850.485436620539986, 1041861.990128280478530, 1041873.494830023148097, 1041884.999541848315857, 1041896.504263755981810, 1041908.008995745913126, 1041919.513737818109803, 1041931.018489972339012, 1041942.523252208833583, 1041954.028024526895024, 1041965.532806926988997, 1041977.037599408649839, 1041988.542401972110383, 1042000.047214616904967, 1042011.552037343150005, 1042023.056870150612667, 1042034.561713039642200, 1042046.066566009307280, 1042057.571429060306400, 1042069.076302191941068, 1042080.581185404676944, 1042092.086078698048368, 1042103.590982071822509, 1042115.095895525999367, 1042126.600819060811773, 1042138.105752676026896, 1042149.610696371179074, 1042161.115650146384723, 1042172.620614001643844, 1042184.125587936840020, 1042195.630571951740421, 1042207.135566046577878, 1042218.640570220653899, 1042230.145584474434145, 1042241.650608807685785, 1042253.155643219943158, 1042264.660687711439095, 1042276.165742282173596, 1042287.670806931448169, 1042299.175881659961306, 1042310.680966467247345, 1042322.186061352957040, 1042333.691166317556053, 1042345.196281360229477, 1042356.701406481675804, 1042368.206541680963710, 1042379.711686958791688, 1042391.216842314461246, 1042402.722007748205215, 1042414.227183259557933, 1042425.732368848985061, 1042437.237564515788108, 1042448.742770260199904, 1042460.247986082220450, 1042471.753211981384084, 1042483.258447957807221, 1042494.763694011489861, 1042506.268950142082758, 1042517.774216349818744, 1042529.279492634232156, 1042540.784778995322995, 1042552.290075433091260, 1042563.795381947536953, 1042575.300698538427241, 1042586.806025205529295, 1042598.311361948843114, 1042609.816708768135868, 1042621.322065663640387, 1042632.827432635123841, 1042644.332809682004154, 1042655.838196804979816, 1042667.343594003701583, 1042678.849001277703792, 1042690.354418627219275, 1042701.859846052015200, 1042713.365283552091569, 1042724.870731127215549, 1042736.376188777387142, 1042747.881656502140686, 1042759.387134302174672, 1042770.892622176790610, 1042782.398120125988498, 1042793.903628149419092, 1042805.409146247315221, 1042816.914674419793300, 1042828.420212666387670, 1042839.925760986865498, 1042851.431319381459616, 1042862.936887850170024, 1042874.442466392298229, 1042885.948055008309893, 1042897.453653697972186, 1042908.959262461285107, 1042920.464881297550164, 1042931.970510207233019, 1042943.476149190333672, 1042954.981798246037215, 1042966.487457375274971, 1042977.993126576999202, 1042989.498805851675570, 1043001.004495199071243, 1043012.510194618720561, 1043024.015904111089185, 1043035.521623675944284, 1043047.027353312820196, 1043058.533093021949753, 1043070.038842803332955, 1043081.544602656504139, 1043093.050372581696138, 1043104.556152578443289, 1043116.061942646862008, 1043127.567742786719464, 1043139.073552998364903, 1043150.579373281099834, 1043162.085203635157086, 1043173.591044060536660, 1043185.096894556772895, 1043196.602755123865791, 1043208.108625762281008, 1043219.614506470854394, 1043231.120397250517271, 1043242.626298100571148, 1043254.132209021016024, 1043265.638130011851899, 1043277.144061072729528, 1043288.650002203881741, 1043300.155953405424953, 1043311.661914676427841, 1043323.167886017588899, 1043334.673867428209633, 1043346.179858908522874, 1043357.685860458528623, 1043369.191872077761218, 1043380.697893766453490, 1043392.203925524372607, 1043403.709967351285741, 1043415.216019247425720, 1043426.722081212326884, 1043438.228153245872818, 1043449.734235348529182, 1043461.240327519713901, 1043472.746429759194143, 1043484.252542067435570, 1043495.758664443506859, 1043507.264796888106503, 1043518.770939401001669, 1043530.277091981493868, 1043541.783254630048759, 1043553.289427346666344, 1043564.795610130648129, 1043576.301802982459776, 1043587.808005901519209, 1043599.314218888059258, 1043610.820441941963509, 1043622.326675063231960, 1043633.832918251398951, 1043645.339171506697312, 1043656.845434828661382, 1043668.351708217523992, 1043679.857991673285142, 1043691.364285195246339, 1043702.870588784106076, 1043714.376902439165860, 1043725.883226160425693, 1043737.389559948118404, 1043748.895903801429085, 1043760.402257721056230, 1043771.908621706417762, 1043783.414995757979341, 1043794.921379874809645, 1043806.427774057374336, 1043817.934178305207752, 1043829.440592618542723, 1043840.947016997379251, 1043852.453451441018842, 1043863.959895949927159, 1043875.466350523638539, 1043886.972815162385814, 1043898.479289865936153, 1043909.985774633940309, 1043921.492269466631114, 1043932.998774363892153, 1043944.505289325490594, 1043956.011814351193607, 1043967.518349441234022, 1043979.024894595146179, 1043990.531449813162908, 1044002.038015095051378, 1044013.544590440578759, 1044025.051175849745050, 1044036.557771322550252, 1044048.064376858761534, 1044059.570992458611727, 1044071.077618121053092, 1044082.584253847016953, 1044094.090899636154063, 1044105.597555488231592, 1044117.104221403016709, 1044128.610897380509414, 1044140.117583420709707, 1044151.624279523384757, 1044163.130985688534565, 1044174.637701915926300, 1044186.144428205792792, 1044197.651164557668380, 1044209.157910971553065, 1044220.664667447446845, 1044232.171433985000476, 1044243.678210584446788, 1044255.184997245436534, 1044266.691793967969716, 1044278.198600751813501, 1044289.705417597200722, 1044301.212244503665715, 1044312.719081471441314, 1044324.225928499829024, 1044335.732785589527339, 1044347.239652740070596, 1044358.746529950993136, 1044370.253417222760618, 1044381.760314554790966, 1044393.267221947549842, 1044404.774139400455169, 1044416.281066913506947, 1044427.788004486938007, 1044439.294952120282687, 1044450.801909813540988, 1044462.308877566480078, 1044473.815855379099958, 1044485.322843251400627, 1044496.829841183382086, 1044508.336849174578674, 1044519.843867224990390, 1044531.350895334850065, 1044542.857933503342792, 1044554.364981731167063, 1044565.872040017973632, 1044577.379108363529667, 1044588.886186767602339, 1044600.393275230424479, 1044611.900373751763254, 1044623.407482331385836, 1044634.914600969292223, 1044646.421729665482417, 1044657.928868419723585, 1044669.436017231782898, 1044680.943176101893187, 1044692.450345029821619, 1044703.957524015218951, 1044715.464713058318011, 1044726.971912158769555, 1044738.479121317039244, 1044749.986340532195754, 1044761.493569804704748, 1044773.000809134100564, 1044784.508058520616032, 1044796.015317963785492, 1044807.522587464074604, 1044819.029867020784877, 1044830.537156634381972, 1044842.044456303934567, 1044853.551766030373983, 1044865.059085812652484, 1044876.566415651235729, 1044888.073755545774475, 1044899.581105496501550, 1044911.088465503184125, 1044922.595835565356538, 1044934.103215683251619, 1044945.610605856636539, 1044957.118006085511297, 1044968.625416369875893, 1044980.132836709497496, 1044991.640267104143277, 1045003.147707553813234, 1045014.655158058740199, 1045026.162618618109263, 1045037.670089232386090, 1045049.177569901221432, 1045060.685060624848120, 1045072.192561402800493, 1045083.700072235078551, 1045095.207593121682294, 1045106.715124062146060, 1045118.222665056935512, 1045129.730216105584987, 1045141.237777208094485, 1045152.745348364231177, 1045164.252929573995061, 1045175.760520837269723, 1045187.268122154287994, 1045198.775733524467796, 1045210.283354947576299, 1045221.790986424311996, 1045233.298627953743562, 1045244.806279536103830, 1045256.313941171625629, 1045267.821612859610468, 1045279.329294600291178, 1045290.836986393434927, 1045302.344688239041716, 1045313.852400136878714, 1045325.360122087178752, 1045336.867854089359753, 1045348.375596143421717, 1045359.883348249713890, 1045371.391110407770611, 1045382.898882617359050, 1045394.406664878944866, 1045405.914457191596739, 1045417.422259556013159, 1045428.930071971495636, 1045440.437894438509829, 1045451.945726956357248, 1045463.453569525270723, 1045474.961422145017423, 1045486.469284815597348, 1045497.977157536894083, 1045509.485040308907628, 1045520.992933131288737, 1045532.500836004037410, 1045544.008748927386478, 1045555.516671900637448, 1045567.024604924023151, 1045578.532547997543588, 1045590.040501120965928, 1045601.548464294057339, 1045613.056437516817823, 1045624.564420789247379, 1045636.072414111346006, 1045647.580417482648045, 1045659.088430903037079, 1045670.596454372745939, 1045682.104487891891040, 1045693.612531459773891, 1045705.120585076394491, 1045716.628648741985671, 1045728.136722456314601, 1045739.644806219148450, 1045751.152900030487217, 1045762.661003890098073, 1045774.169117797981016, 1045785.677241754368879, 1045797.185375758563168, 1045808.693519810796715, 1045820.201673910720274, 1045831.709838058566675, 1045843.218012254219502, 1045854.726196497213095, 1045866.234390787780285, 1045877.742595125921071, 1045889.250809511169791, 1045900.759033943526447, 1045912.267268422991037, 1045923.775512949563563, 1045935.283767522778362, 1045946.792032142868266, 1045958.300306809833273, 1045969.808591522974893, 1045981.316886282642372, 1045992.825191088835709, 1046004.333505941205658, 1046015.841830839752220, 1046027.350165784475394, 1046038.858510775142349, 1046050.366865811520256, 1046061.875230893841945, 1046073.383606021641754, 1046084.891991195152514, 1046096.400386414141394, 1046107.908791678142734, 1046119.417206987622194, 1046130.925632342230529, 1046142.434067741967738, 1046153.942513186717406, 1046165.450968676246703, 1046176.959434210322797, 1046188.467909789411351, 1046199.976395412813872, 1046211.484891080763191, 1046222.993396793026477, 1046234.501912549370900, 1046246.010438350029290, 1046257.518974194768816, 1046269.027520083356649, 1046280.536076015792787, 1046292.044641991960816, 1046303.553218011627905, 1046315.061804075143300, 1046326.570400182041340, 1046338.079006332089193, 1046349.587622525519691, 1046361.096248761867173, 1046372.604885041597299, 1046384.113531364011578, 1046395.622187729342841, 1046407.130854137358256, 1046418.639530588057823, 1046430.148217081208713, 1046441.656913617043756, 1046453.165620194748044, 1046464.674336815020069, 1046476.183063477277756, 1046487.691800181753933, 1046499.200546927982941, 1046510.709303715964779, 1046522.218070545932278, 1046533.726847417419776, 1046545.235634330194443, 1046556.744431284721941, 1046568.253238280303776, 1046579.762055317405611, 1046591.270882395561785, 1046602.779719514539465, 1046614.288566674455069, 1046625.797423875308596, 1046637.306291116750799, 1046648.815168398781680, 1046660.324055721634068, 1046671.832953084376641, 1046683.341860487940721, 1046694.850777931627817, 1046706.359705415205099, 1046717.868642938905396, 1046729.377590502495877, 1046740.886548105976544, 1046752.395515749114566, 1046763.904493431909941, 1046775.413481153780594, 1046786.922478915657848, 1046798.431486716493964, 1046809.940504556754604, 1046821.449532435974106, 1046832.958570354152471, 1046844.467618311289698, 1046855.976676307385787, 1046867.485744341975078, 1046878.994822415290400, 1046890.503910526866093, 1046902.013008677167818, 1046913.522116865497082, 1046925.031235092086717, 1046936.540363356820308, 1046948.049501659465022, 1046959.558650000137277, 1046971.067808378371410, 1046982.576976794633083, 1046994.086155248223804, 1047005.595343739376403, 1047017.104542268090881, 1047028.613750833901577, 1047040.122969436808489, 1047051.632198077044450, 1047063.141436754376628, 1047074.650685468339361, 1047086.159944218932651, 1047097.669213006272912, 1047109.178491830360144, 1047120.687780690845102, 1047132.197079587960616, 1047143.706388521241024, 1047155.215707490453497, 1047166.725036495830864, 1047178.234375537373126, 1047189.743724614614621, 1047201.253083727788180, 1047212.762452876660973, 1047224.271832061000168, 1047235.781221280805767, 1047247.290620535961352, 1047258.800029826234095, 1047270.309449151973240, 1047281.818878512713127, 1047293.328317908220924, 1047304.837767338962294, 1047316.347226804238744, 1047327.856696304283105, 1047339.366175838862546, 1047350.875665407977067, 1047362.385165011161007, 1047373.894674648880027, 1047385.404194320901297, 1047396.913724026759155, 1047408.423263766337186, 1047419.932813540333882, 1047431.442373347701505, 1047442.951943188905716, 1047454.461523063713685, 1047465.971112971892580, 1047477.480712913442403, 1047488.990322888130322, 1047500.499942896189168, 1047512.009572937153280, 1047523.519213011022657, 1047535.028863118030131, 1047546.538523257477209, 1047558.048193429829553, 1047569.557873634505086, 1047581.067563871736638, 1047592.577264141407795, 1047604.086974443285726, 1047615.596694777370431, 1047627.106425143429078, 1047638.616165541461669, 1047650.125915971468203, 1047661.635676432983018, 1047673.145446926238947, 1047684.655227451003157, 1047696.165018007275648, 1047707.674818595056422, 1047719.184629213879816, 1047730.694449863862246, 1047742.204280544770882, 1047753.714121256954968, 1047765.223971999716014, 1047776.733832773519680, 1047788.243703577667475, 1047799.753584412392229, 1047811.263475277693942, 1047822.773376173339784, 1047834.283287099096924, 1047845.793208054965362, 1047857.303139040945098, 1047868.813080057036132, 1047880.323031102772802, 1047891.832992178271525, 1047903.342963283299468, 1047914.852944417973049, 1047926.362935582059436, 1047937.872936775558628, 1047949.382947998237796, 1047960.892969250096940, 1047972.403000530903228, 1047983.913041840656660, 1047995.423093179357238, 1048006.933154546539299, 1048018.443225942668505, 1048029.953307367279194, 1048041.463398820371367, 1048052.973500301362947, 1048064.483611810719594, 1048075.993733348557726, 1048087.503864914178848, 1048099.014006507815793, 1048110.524158129235730, 1048122.034319778438658, 1048133.544491455191746, 1048145.054673159494996, 1048156.564864891348407, 1048168.075066650286317, 1048179.585278436541557, 1048191.095500249881297, 1048202.605732090305537, 1048214.115973957465030, 1048225.626225851825438, 1048237.136487772571854, 1048248.646759720169939, 1048260.157041694154032, 1048271.667333694756962, 1048283.177635721513070, 1048294.687947774422355, 1048306.198269853484817, 1048317.708601958700456, 1048329.218944089836441, 1048340.729296246659942, 1048352.239658429170959, 1048363.750030637369491, 1048375.260412870906293, 1048386.770805130014196, 1048398.281207414576784, 1048409.791619724128395, 1048421.302042058901861, 1048432.812474418664351, 1048444.322916803415865, 1048455.833369212923571, 1048467.343831646954641, 1048478.854304105974734, 1048490.364786589285359, 1048501.875279096886516, 1048513.385781629011035, 1048524.896294185193256, 1048536.406816765549593, 1048547.917349369847216, 1048559.427891998202540, 1048570.938444650149904, 1048582.449007326271385, 1048593.959580025635660, 1048605.470162748359144, 1048616.980755494441837, 1048628.491358264116570, 1048640.001971056917682, 1048651.512593872845173, 1048663.023226711899042, 1048674.533869573613629, 1048686.044522458221763, 1048697.555185365490615, 1048709.065858295420185, 1048720.576541247777641, 1048732.087234222562984, 1048743.597937219776213, 1048755.108650239184499, 1048766.619373280555010, 1048778.130106344120577, 1048789.640849429182708, 1048801.151602536439896, 1048812.662365665193647, 1048824.173138815676793, 1048835.683921987656504, 1048847.194715180899948, 1048858.705518395407125, 1048870.216331631410867, 1048881.727154887979850, 1048893.237988166045398, 1048904.748831464909017, 1048916.259684784337878, 1048927.770548124331981, 1048939.281421485356987, 1048950.792304866481572, 1048962.303198268404230, 1048973.814101690426469, 1048985.325015132548288, 1048996.835938594769686, 1049008.346872077323496, 1049019.857815579511225, 1049031.368769101332873, 1049042.879732643021271, 1049054.390706204343587, 1049065.901689785066992, 1049077.412683385191485, 1049088.923687004484236, 1049100.434700643178076, 1049111.945724300807342, 1049123.456757977604866, 1049134.967801673104987, 1049146.478855387307703, 1049157.989919120445848, 1049169.500992872053757, 1049181.012076642131433, 1049192.523170430678874, 1049204.034274237463251, 1049215.545388062484562, 1049227.056511905509979, 1049238.567645766539499, 1049250.078789645107463, 1049261.589943541912362, 1049273.101107456022874, 1049284.612281388137490, 1049296.123465337324888, 1049307.634659304283559, 1049319.145863288547844, 1049330.657077289652079, 1049342.168301308061928, 1049353.679535343311727, 1049365.190779395401478, 1049376.702033464331180, 1049388.213297550100833, 1049399.724571652477607, 1049411.235855770995840, 1049422.747149906121194, 1049434.258454057388008, 1049445.769768225029111, 1049457.281092408578843, 1049468.792426608270034, 1049480.303770823637024, 1049491.815125054912642, 1049503.326489301864058, 1049514.837863564258441, 1049526.349247842095792, 1049537.860642135608941, 1049549.372046444099396, 1049560.883460768032819, 1049572.394885106477886, 1049583.906319460365921, 1049595.417763829231262, 1049606.929218212608248, 1049618.440682610729709, 1049629.952157023362815, 1049641.463641450740397, 1049652.975135892163962, 1049664.486640347866341, 1049675.998154818080366, 1049687.509679301874712, 1049699.021213799947873, 1049710.532758311834186, 1049722.044312837766483, 1049733.555877377046272, 1049745.067451929906383, 1049756.579036496346816, 1049768.090631076134741, 1049779.602235669037327, 1049791.113850275287405, 1049802.625474894419312, 1049814.137109526665881, 1049825.648754171794280, 1049837.160408829571679, 1049848.672073499998078, 1049860.183748183073476, 1049871.695432878565043, 1049883.207127586705610, 1049894.718832306563854, 1049906.230547039071098, 1049917.742271783296019, 1049929.254006539704278, 1049940.765751308063045, 1049952.277506087906659, 1049963.789270879467949, 1049975.301045682746917, 1049986.812830497510731, 1049998.324625323526561, 1050009.836430160794407, 1050021.348245009314269, 1050032.860069868853316, 1050044.371904739178717, 1050055.883749620523304, 1050067.395604512887076, 1050078.907469415571541, 1050090.419344328809530, 1050101.931229252601042, 1050113.443124186946079, 1050124.955029131378978, 1050136.466944085899740, 1050147.978869050508365, 1050159.490804025204852, 1050171.002749009756371, 1050182.514704003930092, 1050194.026669007726014, 1050205.538644021144137, 1050217.050629043951631, 1050228.562624076148495, 1050240.074629117501900, 1050251.586644168244675, 1050263.098669227911159, 1050274.610704296734184, 1050286.122749374248087, 1050297.634804460685700, 1050309.146869555581361, 1050320.658944658935070, 1050332.171029770979658, 1050343.683124891249463, 1050355.195230019977316, 1050366.707345156697556, 1050378.219470301410183, 1050389.731605454348028, 1050401.243750615045428, 1050412.755905783269554, 1050424.268070959253237, 1050435.780246142763644, 1050447.292431334033608, 1050458.804626532364637, 1050470.316831737989560, 1050481.829046950908378, 1050493.341272170655429, 1050504.853507397463545, 1050516.365752631099895, 1050527.878007871797308, 1050539.390273118391633, 1050550.902548372047022, 1050562.414833632297814, 1050573.927128898678347, 1050585.439434171421453, 1050596.951749450294301, 1050608.464074735064059, 1050619.976410025963560, 1050631.488755322527140, 1050643.001110625220463, 1050654.513475933345035, 1050666.025851246900856, 1050677.538236566120759, 1050689.050631890539080, 1050700.563037220155820, 1050712.075452555203810, 1050723.587877895217389, 1050735.100313239963725, 1050746.612758589675650, 1050758.125213944353163, 1050769.637679303297773, 1050781.150154666975141, 1050792.662640035152435, 1050804.175135407596827, 1050815.687640784541145, 1050827.200156165286899, 1050838.712681550299749, 1050850.225216939114034, 1050861.737762331729755, 1050873.250317728379741, 1050884.762883128365502, 1050896.275458532152697, 1050907.788043939275667, 1050919.300639349734411, 1050930.813244763528928, 1050942.325860180659220, 1050953.838485600659624, 1050965.351121023530141, 1050976.863766449270770, 1050988.376421877648681, 1050999.889087308896706, 1051011.401762742782012, 1051022.914448178838938, 1051034.427143617300317, 1051045.939849058166146, 1051057.452564500970766, 1051068.965289945947006, 1051080.478025392862037, 1051091.990770841715857, 1051103.503526292042807, 1051115.016291744308546, 1051126.529067198047414, 1051138.041852653259411, 1051149.554648109711707, 1051161.067453567637131, 1051172.580269026337191, 1051184.093094486277550, 1051195.605929947225377, 1051207.118775408947840, 1051218.631630871444941, 1051230.144496334716678, 1051241.657371798297390, 1051253.170257262652740, 1051264.683152727084234, 1051276.196058191824704, 1051287.708973656874150, }; double factorialln(int n) { if (n < 0) { std::stringstream os; os << "Invalid input argument (" << n << "); may not be negative"; throw std::invalid_argument( os.str() ); } else if (n > 100000-1) { const double PI = 3.141592653589793; double x = n + 1; return (x - 0.5)*log(x) - x + 0.5*log(2*PI) + 1.0/(12.0*x); } else { return lf[n]; } } double entropy(const string& st) { vector stvec(st.begin(), st.end()); set alphabet(stvec.begin(), stvec.end()); vector freqs; for (set::iterator c = alphabet.begin(); c != alphabet.end(); ++c) { int ctr = 0; for (vector::iterator s = stvec.begin(); s != stvec.end(); ++s) { if (*s == *c) { ++ctr; } } freqs.push_back((double)ctr / (double)stvec.size()); } double ent = 0; double ln2 = log(2); for (vector::iterator f = freqs.begin(); f != freqs.end(); ++f) { ent += *f * log(*f)/ln2; } ent = -ent; return ent; } freebayes-1.3.6/src/Utility.h000066400000000000000000000114541417247743000161070ustar00rootroot00000000000000// utility functions // #ifndef FREEBAYES_UTILITY_H #define FREEBAYES_UTILITY_H #include #include #include #include #include #include #include #include #include #include #include #include "convert.h" #include "ttmath.h" using namespace std; typedef ttmath::Big BigFloat; long double factorial(int); short qualityChar2ShortInt(char c); long double qualityChar2LongDouble(char c); long double lnqualityChar2ShortInt(char c); char qualityInt2Char(short i); //long double phred2float(int qual); long double phred2ln(int qual); long double ln2phred(long double prob); long double ln2log10(long double prob); long double log102ln(long double prob); long double phred2float(int qual); long double float2phred(long double prob); long double big2phred(const BigFloat& prob); long double nan2zero(long double x); long double powln(long double m, int n); // here 'joint' means 'probability that we have a vector entirely composed of true bases' long double jointQuality(const std::vector& quals); long double jointQuality(const std::string& qualstr); std::vector qualities(const std::string& qualstr); // long double sumQuality(const std::string& qualstr); long double minQuality(const std::string& qualstr); short minQuality(const std::vector& qualities); long double averageQuality(const std::string& qualstr); long double averageQuality(const std::vector& qualities); //unsigned int factorial(int n); bool stringInVector(string item, vector items); int upper(int c); // helper to below, wraps toupper string uppercase(string s); bool allATGC(string& s); string strip(string const& str, char const* separators = " \t"); int binomialCoefficient(int n, int k); long double binomialCoefficientLn(int k, int n); long double binomialProb(int k, int n, long double p); long double impl_binomialProbln(int k, int n, long double p); long double binomialProbln(int k, int n, long double p); long double poissonpln(int observed, int expected); long double poissonp(int observed, int expected); long double poissonPvalLn(int a, int b); long double gammaln( long double x); long double factorial( int n); double factorialln( int n); long double impl_factorialln( int n); #define MAX_FACTORIAL_CACHE_SIZE 100000 class FactorialCache : public map { public: long double factorialln(int n) { map::iterator f = find(n); if (f == end()) { if (size() > MAX_FACTORIAL_CACHE_SIZE) { clear(); } long double fln = impl_factorialln(n); insert(make_pair(n, fln)); return fln; } else { return f->second; } } }; #define MAX_BINOMIAL_CACHE_SIZE 100000 class BinomialCache : public map, long double> > { public: long double binomialProbln(int k, int n, long double p) { map, long double>& t = (*this)[p]; pair kn = make_pair(k, n); map, long double>::iterator f = t.find(kn); if (f == t.end()) { if (t.size() > MAX_BINOMIAL_CACHE_SIZE) { t.clear(); } long double bln = impl_binomialProbln(k, n, p); t.insert(make_pair(kn, bln)); return bln; } else { return f->second; } } }; long double cofactor( int n, int i); long double cofactorln( int n, int i); long double harmonicSum(int n); long double safedivide(long double a, long double b); long double safe_exp(long double ln); BigFloat big_exp(long double ln); long double logsumexp_probs(const vector& lnv); long double logsumexp(const vector& lnv); long double betaln(const vector& alphas); long double beta(const vector& alphas); long double hoeffding(double successes, double trials, double prob); long double hoeffdingln(double successes, double trials, double prob); int levenshteinDistance(const std::string source, const std::string target); bool isTransition(string& ref, string& alt); string dateStr(void); long double string2float(const string& s); long double log10string2ln(const string& s); string mergeCigar(const string& c1, const string& c2); vector > splitCigar(const string& cigarStr); list > splitCigarList(const string& cigarStr); string joinCigar(const vector >& cigar); string joinCigarList(const list >& cigar); bool isEmptyCigarElement(const pair& elem); std::string operator*(std::string const &s, size_t n); void normalizeSumToOne(vector&); void addLinesFromFile(vector& v, const string& f); double entropy(const string& st); #endif freebayes-1.3.6/src/bamleftalign.cpp000066400000000000000000000142221417247743000174200ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include #include "FBFasta.h" #include "LeftAlign.h" #ifdef VERBOSE_DEBUG #define DEBUG(msg) \ if (debug) { cerr << msg; } #else #define DEBUG(msg) #endif using namespace std; void printUsage(char** argv) { cerr << "usage: [BAM data stream] | " << argv[0] << " [options]" << endl << endl << "Left-aligns and merges the insertions and deletions in all alignments in stdin." << endl << "Iterates until each alignment is stable through a left-realignment step." << endl << endl << "arguments:" << endl << " -f --fasta-reference FILE FASTA reference file to use for realignment (required)" << endl << " -d --debug Print debugging information about realignment process" << endl << " -s --suppress-output Don't write BAM output stream (for debugging)" << endl << " -m --max-iterations N Iterate the left-realignment no more than this many times" << endl << " -c --compressed Write compressed BAM on stdout, default is uncompressed" << endl; } int main(int argc, char** argv) { int c; FB::FastaReference reference; bool has_ref = false; bool suppress_output = false; bool debug = false; bool isuncompressed = true; int maxiterations = 50; if (argc < 2) { printUsage(argv); exit(1); } while (true) { static struct option long_options[] = { {"help", no_argument, 0, 'h'}, {"debug", no_argument, 0, 'd'}, {"fasta-reference", required_argument, 0, 'f'}, {"max-iterations", required_argument, 0, 'm'}, {"suppress-output", no_argument, 0, 's'}, {"compressed", no_argument, 0, 'c'}, {0, 0, 0, 0} }; int option_index = 0; c = getopt_long (argc, argv, "hdcsf:m:", long_options, &option_index); /* Detect the end of the options. */ if (c == -1) break; switch (c) { case 'f': reference.open(optarg); // will exit on open failure has_ref = true; break; case 'm': maxiterations = atoi(optarg); break; case 'd': debug = true; break; case 's': suppress_output = true; break; case 'c': isuncompressed = false; break; case 'h': printUsage(argv); exit(0); break; case '?': printUsage(argv); exit(1); break; default: abort(); break; } } if (!has_ref) { cerr << "no FASTA reference provided, cannot realign" << endl; exit(1); } BAMSINGLEREADER reader; if (!reader.Open(STDIN)) { cerr << "could not open stdin for reading" << endl; exit(1); } #ifdef HAVE_BAMTOOLS BamWriter writer; if (isuncompressed) { writer.SetCompressionMode(BamWriter::Uncompressed); } if (!suppress_output && !writer.Open("stdout", reader.GetHeaderText(), reader.GetReferenceData())) { cerr << "could not open stdout for writing" << endl; exit(1); } #else SeqLib::BamWriter writer(SeqLib::BAM); SeqLib::BamHeader hdr = reader.Header(); if (hdr.isEmpty()) { cerr << "could not open header for input" << endl; exit(1); } writer.SetHeader(hdr); if (!suppress_output && !writer.Open("-")) { cerr << "could not open stdout for writing" << endl; exit(1); } writer.WriteHeader(); #endif // store the names of all the reference sequences in the BAM file map referenceIDToName; REFVEC referenceSequences = reader.GETREFDATA; int i = 0; for (REFVEC::iterator r = referenceSequences.begin(); r != referenceSequences.end(); ++r) { referenceIDToName[i] = r->REFNAME; ++i; } BAMALIGN alignment; while (GETNEXT(reader, alignment)) { DEBUG("--------------------------- read --------------------------" << endl); DEBUG("| " << referenceIDToName[alignment.REFID] << ":" << alignment.POSITION << endl); DEBUG("| " << alignment.QNAME << ":" << alignment.ENDPOSITION << endl); DEBUG("| " << alignment.QNAME << ":" << (alignment.ISMAPPED ? " mapped" : " unmapped") << endl); DEBUG("| " << alignment.QNAME << ":" << " cigar data size: " << alignment.GETCIGAR.size() << endl); DEBUG("--------------------------- realigned --------------------------" << endl); // skip unmapped alignments, as they cannot be left-realigned without CIGAR data if (alignment.ISMAPPED) { int endpos = alignment.ENDPOSITION; int length = endpos - alignment.POSITION + 1; if (alignment.POSITION >= 0 && length > 0) { if (!stablyLeftAlign(alignment, reference.getSubSequence( referenceIDToName[alignment.REFID], alignment.POSITION, length), maxiterations, debug)) { cerr << "unstable realignment of " << alignment.QNAME << " at " << referenceIDToName[alignment.REFID] << ":" << alignment.POSITION << endl << alignment.QUERYBASES << endl; } } } DEBUG("----------------------------------------------------------------" << endl); DEBUG(endl); if (!suppress_output) WRITEALIGNMENT(writer, alignment); } reader.Close(); if (!suppress_output) writer.Close(); return 0; } freebayes-1.3.6/src/freebayes.cpp000066400000000000000000000732631417247743000167520ustar00rootroot00000000000000// // freebayes // // A bayesian genetic variant detector. // // standard includes //#include #include #include #include #include #include #include #include #include #include #include #include // private libraries #ifdef HAVE_BAMTOOLS #include "api/BamReader.h" #endif #include "TryCatch.h" #include "Parameters.h" #include "Allele.h" #include "Sample.h" #include "AlleleParser.h" #include "Utility.h" #include "SegfaultHandler.h" #include "multichoose.h" #include "multipermute.h" #include "Genotype.h" #include "DataLikelihood.h" #include "Marginals.h" #include "ResultData.h" #include "Bias.h" #include "Contamination.h" #include "NonCall.h" #include "Logging.h" using namespace std; // todo // generalize the main function to take the parameters as input // so that we can invoke the entire algorithm on different regions // when requested to run in parallel // take the targets (or whole genome) and make small jobs // run the main function for each region in an omp parallel for loop // only do this if the --parallel flag is set > 1 // freebayes main int main (int argc, char *argv[]) { // install segfault handler signal(SIGSEGV, segfaultHandler); AlleleParser* parser = new AlleleParser(argc, argv); Parameters& parameters = parser->parameters; list alleles; Samples samples; NonCalls nonCalls; ostream& out = *(parser->output); Bias observationBias; if (!parameters.alleleObservationBiasFile.empty()) { observationBias.open(parameters.alleleObservationBiasFile); } Contamination contaminationEstimates(0.5+parameters.probContamination, parameters.probContamination); if (!parameters.contaminationEstimateFile.empty()) { contaminationEstimates.open(parameters.contaminationEstimateFile); } // this can be uncommented to force operation on a specific set of genotypes vector allGenotypeAlleles; allGenotypeAlleles.push_back(genotypeAllele(ALLELE_GENOTYPE, "A", 1)); allGenotypeAlleles.push_back(genotypeAllele(ALLELE_GENOTYPE, "T", 1)); allGenotypeAlleles.push_back(genotypeAllele(ALLELE_GENOTYPE, "G", 1)); allGenotypeAlleles.push_back(genotypeAllele(ALLELE_GENOTYPE, "C", 1)); int allowedAlleleTypes = ALLELE_REFERENCE; if (parameters.allowSNPs) { allowedAlleleTypes |= ALLELE_SNP; } if (parameters.allowIndels) { allowedAlleleTypes |= ALLELE_INSERTION; allowedAlleleTypes |= ALLELE_DELETION; } if (parameters.allowMNPs) { allowedAlleleTypes |= ALLELE_MNP; } if (parameters.allowComplex) { allowedAlleleTypes |= ALLELE_COMPLEX; } // output VCF header if (parameters.output == "vcf") { out << parser->variantCallFile.header << endl; } if (0 < parameters.limitCoverage) { srand(13); } Allele nullAllele = genotypeAllele(ALLELE_NULL, "N", 1, "1N"); unsigned long total_sites = 0; unsigned long processed_sites = 0; while (parser->getNextAlleles(samples, allowedAlleleTypes)) { ++total_sites; DEBUG2("at start of main loop"); // did we switch chromosomes or exceed our gVCF chunk size, or do we not want to use chunks? // if so, we may need to output a gVCF record Results results; if (parameters.gVCFout && !(nonCalls.empty()) && ( (parameters.gVCFNoChunk) || (nonCalls.begin()->first != parser->currentSequenceName) || (parameters.gVCFchunk && nonCalls.lastPos().second - nonCalls.firstPos().second >= parameters.gVCFchunk ) ) ){ vcflib::Variant var(parser->variantCallFile); out << results.gvcf(var, nonCalls, parser) << endl; nonCalls.clear(); } // don't process non-ATGCN's in the reference string cb = parser->currentReferenceBaseString(); if (cb != "A" && cb != "T" && cb != "C" && cb != "G" && cb != "N") { DEBUG2("current reference base is not in { A T G C N }"); continue; } int coverage = countAlleles(samples); DEBUG("position: " << parser->currentSequenceName << ":" << (long unsigned int) parser->currentPosition + 1 << " coverage: " << coverage); bool skip = false; if (!parser->hasInputVariantAllelesAtCurrentPosition()) { // skips 0-coverage regions if (coverage == 0) { DEBUG("no alleles left at this site after filtering"); skip = true; } else if (coverage < parameters.minCoverage) { DEBUG("post-filtering coverage of " << coverage << " is less than --min-coverage of " << parameters.minCoverage); skip = true; } else if (parameters.onlyUseInputAlleles) { DEBUG("no input alleles, but using only input alleles for analysis, skipping position"); skip = true; } else if (0 < parameters.limitCoverage) { // go through each sample for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { string sampleName = s->first; Sample& sample = s->second; // get the coverage for this sample int sampleCoverage = 0; for (Sample::iterator sg = sample.begin(); sg != sample.end(); ++sg) { sampleCoverage += sg->second.size(); } if (sampleCoverage <= parameters.limitCoverage) { continue; } DEBUG("coverage " << sampleCoverage << " for sample " << sampleName << " was > " << parameters.limitCoverage << ", so we will remove " << (sampleCoverage - parameters.limitCoverage) << " genotypes"); vector genotypesToErase; do { double probRemove = (sampleCoverage - parameters.limitCoverage) / (double)sampleCoverage; vector genotypesToErase; // iterate through the genotypes for (Sample::iterator sg = sample.begin(); sg != sample.end(); ++sg) { vector allelesToKeep; // iterate through each allele for (int alleleIndex = 0; alleleIndex < sg->second.size(); alleleIndex++) { // only if we have more alleles to remove if (parameters.limitCoverage < sampleCoverage) { double r = rand() / (double)RAND_MAX; if (r < probRemove) { // skip over this allele sampleCoverage--; continue; } } // keep it allelesToKeep.push_back(sg->second[alleleIndex]); } // re-assign the alleles to this genotype if (allelesToKeep.size() < sg->second.size()) { sg->second.assign(allelesToKeep.begin(), allelesToKeep.end()); } // if no more alleles for this genotype, remove it later if (sg->second.empty()) { genotypesToErase.push_back(sg->first); } } // remove empty genotypes for (vector::iterator gt = genotypesToErase.begin(); gt != genotypesToErase.end(); ++gt) { sample.erase(*gt); } } while (parameters.limitCoverage < sampleCoverage); sampleCoverage = 0; for (Sample::iterator sg = sample.begin(); sg != sample.end(); ++sg) { sampleCoverage += sg->second.size(); } DEBUG("coverage for sample " << sampleName << " is now " << sampleCoverage); } // update coverage coverage = countAlleles(samples); } DEBUG2("coverage " << parser->currentSequenceName << ":" << parser->currentPosition << " == " << coverage); // establish a set of possible alternate alleles to evaluate at this location if (!parameters.reportMonomorphic && !sufficientAlternateObservations(samples, parameters.minAltCount, parameters.minAltFraction)) { DEBUG("insufficient alternate observations"); skip = true; } if (parameters.reportMonomorphic) { DEBUG("calling at site even though there are no alternate observations"); } } else { /* cerr << "has input variants at " << parser->currentSequenceName << ":" << parser->currentPosition << endl; vector& inputs = parser->inputVariantAlleles[parser->currentSequenceName][parser->currentPosition]; for (vector::iterator a = inputs.begin(); a != inputs.end(); ++a) { cerr << *a << endl; } */ } if (skip) { // record data for gVCF if (parameters.gVCFout) { nonCalls.record(parser->currentSequenceName, parser->currentPosition, samples); } // and step ahead continue; } // to ensure proper ordering of output stream vector sampleListPlusRef; for (vector::iterator s = parser->sampleList.begin(); s != parser->sampleList.end(); ++s) { sampleListPlusRef.push_back(*s); } if (parameters.useRefAllele) { sampleListPlusRef.push_back(parser->currentSequenceName); } // establish genotype alleles using input filters map > alleleGroups; groupAlleles(samples, alleleGroups); DEBUG2("grouped alleles by equivalence"); vector genotypeAlleles = parser->genotypeAlleles(alleleGroups, samples, parameters.onlyUseInputAlleles); // always include the reference allele as a possible genotype, even when we don't include it by default if (!parameters.useRefAllele) { vector refAlleleVector; refAlleleVector.push_back(genotypeAllele(ALLELE_REFERENCE, string(1, parser->currentReferenceBase), 1, "1M")); genotypeAlleles = alleleUnion(genotypeAlleles, refAlleleVector); } map > partialObservationGroups; map > partialObservationSupport; // build haplotype alleles matching the current longest allele (often will do nothing) // this will adjust genotypeAlleles if changes are made DEBUG("building haplotype alleles, currently there are " << genotypeAlleles.size() << " genotype alleles"); DEBUG(genotypeAlleles); parser->buildHaplotypeAlleles(genotypeAlleles, samples, alleleGroups, partialObservationGroups, partialObservationSupport, allowedAlleleTypes); DEBUG("built haplotype alleles, now there are " << genotypeAlleles.size() << " genotype alleles"); DEBUG(genotypeAlleles); string referenceBase = parser->currentReferenceHaplotype(); // for debugging /* for (Samples::iterator s = samples.begin(); s != samples.end(); ++s) { string sampleName = s->first; Sample& sample = s->second; cerr << sampleName << ": " << sample << endl; } */ // re-calculate coverage, as this could change now that we've built haplotype alleles coverage = countAlleles(samples); // estimate theta using the haplotype length long double theta = parameters.TH * parser->lastHaplotypeLength; // if we have only one viable allele, we don't have evidence for variation at this site if (!parser->hasInputVariantAllelesAtCurrentPosition() && !parameters.reportMonomorphic && genotypeAlleles.size() <= 1 && genotypeAlleles.front().isReference()) { DEBUG("no alternate genotype alleles passed filters at " << parser->currentSequenceName << ":" << parser->currentPosition); continue; } DEBUG("genotype alleles: " << genotypeAlleles); // add the null genotype bool usingNull = false; if (parameters.excludeUnobservedGenotypes && genotypeAlleles.size() > 2) { genotypeAlleles.push_back(nullAllele); usingNull = true; } ++processed_sites; // generate possible genotypes // for each possible ploidy in the dataset, generate all possible genotypes vector ploidies = parser->currentPloidies(samples); map > genotypesByPloidy = getGenotypesByPloidy(ploidies, genotypeAlleles); int numCopiesOfLocus = parser->copiesOfLocus(samples); DEBUG2("generated all possible genotypes:"); if (parameters.debug2) { for (map >::iterator s = genotypesByPloidy.begin(); s != genotypesByPloidy.end(); ++s) { vector& genotypes = s->second; for (vector::iterator g = genotypes.begin(); g != genotypes.end(); ++g) { DEBUG2(*g); } } } // get estimated allele frequencies using sum of estimated qualities map estimatedAlleleFrequencies = samples.estimatedAlleleFrequencies(); double estimatedMaxAlleleFrequency = 0; double estimatedMaxAlleleCount = 0; double estimatedMajorFrequency = estimatedAlleleFrequencies[referenceBase]; if (estimatedMajorFrequency < 0.5) estimatedMajorFrequency = 1-estimatedMajorFrequency; double estimatedMinorFrequency = 1-estimatedMajorFrequency; //cerr << "num copies of locus " << numCopiesOfLocus << endl; int estimatedMinorAllelesAtLocus = max(1, (int) ceil((double) numCopiesOfLocus * estimatedMinorFrequency)); //cerr << "estimated minor frequency " << estimatedMinorFrequency << endl; //cerr << "estimated minor count " << estimatedMinorAllelesAtLocus << endl; map > > sampleDataLikelihoodsByPopulation; map > > variantSampleDataLikelihoodsByPopulation; map > > invariantSampleDataLikelihoodsByPopulation; map inputAlleleCounts; int inputLikelihoodCount = 0; DEBUG2("calculating data likelihoods"); calculateSampleDataLikelihoods( samples, results, parser, genotypesByPloidy, parameters, usingNull, observationBias, genotypeAlleles, contaminationEstimates, estimatedAlleleFrequencies, sampleDataLikelihoodsByPopulation, variantSampleDataLikelihoodsByPopulation, invariantSampleDataLikelihoodsByPopulation); DEBUG2("finished calculating data likelihoods"); // if somehow we get here without any possible sample genotype likelihoods, bail out bool hasSampleLikelihoods = false; for (map > >::iterator s = sampleDataLikelihoodsByPopulation.begin(); s != sampleDataLikelihoodsByPopulation.end(); ++s) { if (!s->second.empty()) { hasSampleLikelihoods = true; break; } } if (!hasSampleLikelihoods) { continue; } DEBUG2("calulating combo posteriors over " << parser->populationSamples.size() << " populations"); // XXX // TODO skip these steps in the case that there is only one population? // we provide p(var|data), or the probability that the location has // variation between individuals relative to the probability that it // has no variation // // in other words: // p(var|d) = 1 - p(AA|d) - p(TT|d) - P(GG|d) - P(CC|d) // // the approach is go through all the homozygous combos // and then subtract this from 1... resolving p(var|d) BigFloat pVar = 1.0; BigFloat pHom = 0.0; long double bestComboOddsRatio = 0; bool bestOverallComboIsHet = false; GenotypeCombo bestCombo; // = NULL; GenotypeCombo bestGenotypeComboByMarginals; vector > allSampleDataLikelihoods; DEBUG("searching genotype space"); // resample the posterior, this time without bounds on the // samples we vary, ensuring that we can generate marginals for // all sample/genotype combinations //SampleDataLikelihoods marginalLikelihoods = sampleDataLikelihoods; // heavyweight copy... map > genotypeCombosByPopulation; int genotypingTotalIterations = 0; // tally total iterations required to reach convergence map > glMaxCombos; for (map::iterator p = sampleDataLikelihoodsByPopulation.begin(); p != sampleDataLikelihoodsByPopulation.end(); ++p) { const string& population = p->first; SampleDataLikelihoods& sampleDataLikelihoods = p->second; list& populationGenotypeCombos = genotypeCombosByPopulation[population]; DEBUG2("genqerating banded genotype combinations from " << sampleDataLikelihoods.size() << " sample genotypes in population " << population); // cap the number of iterations at 2 x the number of alternate alleles // max it at parameters.genotypingMaxIterations iterations, min at 10 int itermax = min(max(10, 2 * estimatedMinorAllelesAtLocus), parameters.genotypingMaxIterations); //int itermax = parameters.genotypingMaxIterations; // XXX HACK // passing 0 for bandwidth and banddepth means "exhaustive local search" // this produces properly normalized GQ's at polyallelic sites int adjustedBandwidth = 0; int adjustedBanddepth = 0; // however, this can lead to huge performance problems at complex sites, // so we implement this hack... if (parameters.genotypingMaxBandDepth > 0 && genotypeAlleles.size() > parameters.genotypingMaxBandDepth) { adjustedBandwidth = 1; adjustedBanddepth = parameters.genotypingMaxBandDepth; } GenotypeCombo nullCombo; SampleDataLikelihoods nullSampleDataLikelihoods; // this is the genotype-likelihood maximum if (parameters.reportGenotypeLikelihoodMax) { GenotypeCombo comboKing; vector initialPosition; initialPosition.assign(sampleDataLikelihoods.size(), 0); SampleDataLikelihoods nullDataLikelihoods; // dummy variable makeComboByDatalLikelihoodRank(comboKing, initialPosition, sampleDataLikelihoods, nullDataLikelihoods, inputAlleleCounts, theta, parameters.pooledDiscrete, parameters.ewensPriors, parameters.permute, parameters.hwePriors, parameters.obsBinomialPriors, parameters.alleleBalancePriors, parameters.diffusionPriorScalar); glMaxCombos[population].push_back(comboKing); } // search much longer for convergence convergentGenotypeComboSearch( populationGenotypeCombos, nullCombo, sampleDataLikelihoods, // vary everything sampleDataLikelihoods, nullSampleDataLikelihoods, samples, genotypeAlleles, inputAlleleCounts, adjustedBandwidth, adjustedBanddepth, theta, parameters.pooledDiscrete, parameters.ewensPriors, parameters.permute, parameters.hwePriors, parameters.obsBinomialPriors, parameters.alleleBalancePriors, parameters.diffusionPriorScalar, itermax, genotypingTotalIterations, true); // add homozygous combos // ^^ combo results are sorted by default } // generate the GL max combo GenotypeCombo glMax; if (parameters.reportGenotypeLikelihoodMax) { list glMaxGenotypeCombos; combinePopulationCombos(glMaxGenotypeCombos, glMaxCombos); glMax = glMaxGenotypeCombos.front(); } // accumulate combos from independently-calculated populations into the list of combos list genotypeCombos; // build new combos into this list combinePopulationCombos(genotypeCombos, genotypeCombosByPopulation); // TODO factor out the following blocks as they are repeated from above // re-get posterior normalizer vector comboProbs; for (list::iterator gc = genotypeCombos.begin(); gc != genotypeCombos.end(); ++gc) { comboProbs.push_back(gc->posteriorProb); } long double posteriorNormalizer = logsumexp_probs(comboProbs); // recalculate posterior normalizer pVar = 1.0; pHom = 0.0; // calculates pvar and gets the best het combo list::iterator gc = genotypeCombos.begin(); bestCombo = *gc; for ( ; gc != genotypeCombos.end(); ++gc) { if (gc->isHomozygous() && gc->alleles().front() == referenceBase) { pVar -= big_exp(gc->posteriorProb - posteriorNormalizer); pHom += big_exp(gc->posteriorProb - posteriorNormalizer); } else if (gc == genotypeCombos.begin()) { bestOverallComboIsHet = true; } } // odds ratio between the first and second-best combinations if (genotypeCombos.size() > 1) { bestComboOddsRatio = genotypeCombos.front().posteriorProb - (++genotypeCombos.begin())->posteriorProb; } if (parameters.calculateMarginals) { // make a combined, all-populations sample data likelihoods vector to accumulate marginals SampleDataLikelihoods allSampleDataLikelihoods; for (map::iterator p = sampleDataLikelihoodsByPopulation.begin(); p != sampleDataLikelihoodsByPopulation.end(); ++p) { SampleDataLikelihoods& sdls = p->second; allSampleDataLikelihoods.reserve(allSampleDataLikelihoods.size() + distance(sdls.begin(), sdls.end())); allSampleDataLikelihoods.insert(allSampleDataLikelihoods.end(), sdls.begin(), sdls.end()); } // calculate the marginal likelihoods for this population marginalGenotypeLikelihoods(genotypeCombos, allSampleDataLikelihoods); // store the marginal data likelihoods in the results, for easy parsing // like a vector -> map conversion... results.update(allSampleDataLikelihoods); } map repeats; if (parameters.showReferenceRepeats) { repeats = parser->repeatCounts(parser->currentSequencePosition(), parser->currentSequence, 12); } vector alts; if (parameters.onlyUseInputAlleles || parameters.reportAllHaplotypeAlleles || parameters.pooledContinuous) { //alts = genotypeAlleles; for (vector::iterator a = genotypeAlleles.begin(); a != genotypeAlleles.end(); ++a) { if (!a->isReference()) { alts.push_back(*a); } } } else { // get the unique alternate alleles in this combo, sorted by frequency in the combo vector > alternates = alternateAlleles(bestCombo, referenceBase); for (vector >::iterator a = alternates.begin(); a != alternates.end(); ++a) { Allele& alt = a->first; if (!alt.isNull() && !alt.isReference()) alts.push_back(alt); } // if there are no alternate alleles in the best combo, use the genotype alleles // XXX ... if (alts.empty()) { for (vector::iterator a = genotypeAlleles.begin(); a != genotypeAlleles.end(); ++a) { if (!a->isReference()) { alts.push_back(*a); } } } } // reporting the GL maximum *over all alleles* if (parameters.reportGenotypeLikelihoodMax) { bestCombo = glMax; } else { // the default behavior is to report the GL maximum genotyping over the alleles in the best posterior genotyping // select the maximum-likelihood GL given the alternates we have // this is not the same thing as the GL max over all alleles! // it is the GL max over the selected alleles at this point vector alleles = alts; for (vector::iterator a = genotypeAlleles.begin(); a != genotypeAlleles.end(); ++a) { if (a->isReference()) { alleles.push_back(*a); } } map > glMaxComboBasedOnAltsByPop; for (map::iterator p = sampleDataLikelihoodsByPopulation.begin(); p != sampleDataLikelihoodsByPopulation.end(); ++p) { const string& population = p->first; SampleDataLikelihoods& sampleDataLikelihoods = p->second; GenotypeCombo glMaxBasedOnAlts; for (SampleDataLikelihoods::iterator v = sampleDataLikelihoods.begin(); v != sampleDataLikelihoods.end(); ++v) { SampleDataLikelihood* m = NULL; for (vector::iterator d = v->begin(); d != v->end(); ++d) { if (d->genotype->matchesAlleles(alleles)) { m = &*d; break; } } assert(m != NULL); glMaxBasedOnAlts.push_back(m); } glMaxComboBasedOnAltsByPop[population].push_back(glMaxBasedOnAlts); } list glMaxBasedOnAltsGenotypeCombos; // build new combos into this list combinePopulationCombos(glMaxBasedOnAltsGenotypeCombos, glMaxComboBasedOnAltsByPop); bestCombo = glMaxBasedOnAltsGenotypeCombos.front(); } DEBUG("best combo: " << bestCombo); // output if ((!alts.empty() && (1 - pHom.ToDouble()) >= parameters.PVL) || parameters.PVL == 0){ // write the last gVCF record(s) if (parameters.gVCFout && !nonCalls.empty()) { vcflib::Variant var(parser->variantCallFile); out << results.gvcf(var, nonCalls, parser) << endl; nonCalls.clear(); } vcflib::Variant var(parser->variantCallFile); out << results.vcf( var, pHom, bestComboOddsRatio, samples, referenceBase, alts, repeats, genotypingTotalIterations, parser->sampleList, coverage, bestCombo, alleleGroups, partialObservationGroups, partialObservationSupport, genotypesByPloidy, parser->sequencingTechnologies, parser) << endl; } else if (parameters.gVCFout) { // record statistics for gVCF output nonCalls.record(parser->currentSequenceName, parser->currentPosition, samples); } DEBUG2("finished position"); } // write the last gVCF record // NOTE: for some resion this is only needed if we are using gVCF chunks, if minimal chunking it is not requird, in fact it breaks.... if (parameters.gVCFout && !nonCalls.empty() && !parameters.gVCFNoChunk) { Results results; vcflib::Variant var(parser->variantCallFile); out << results.gvcf(var, nonCalls, parser) << endl; nonCalls.clear(); } DEBUG("total sites: " << total_sites << endl << "processed sites: " << processed_sites << endl << "ratio: " << (float) processed_sites / (float) total_sites); delete parser; return 0; } freebayes-1.3.6/src/version_git.h000066400000000000000000000001441417247743000167660ustar00rootroot00000000000000#ifndef VERSION_GIT_H #define VERSION_GIT_H #define VERSION_GIT "v1.3.6" #endif /* VERSION_GIT_H */ freebayes-1.3.6/test/000077500000000000000000000000001417247743000144565ustar00rootroot00000000000000freebayes-1.3.6/test/bash-tap/000077500000000000000000000000001417247743000161555ustar00rootroot00000000000000freebayes-1.3.6/test/performance/000077500000000000000000000000001417247743000167575ustar00rootroot00000000000000freebayes-1.3.6/test/performance/benchmark.md000066400000000000000000000031641417247743000212370ustar00rootroot00000000000000# Benchmarking In this file we keep track of some benchmarking stats over time. Download the test BAM file from https://www.internationalgenome.org/ wget ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/HG00100/alignment/HG00100.chrom20.ILLUMINA.bwa.GBR.low_coverage.20130415.bam And a reference genome. E.g. wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/chromosomes/chr20.fa.gz and unpack. Note you need to change the first 'chr20' tag to '20' for this to work. To speed things up somewhat using a smaller ref head -6000 chr20.fa > chr20-6K.fa ## Penguin2 56x Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz, 256Gb First test an older 1.3.0 release: ```sh time ./freebayes-v1.3.0-1 -f chr20-6K.fa HG00100.chrom20.ILLUMINA.bwa.GBR.low_coverage.20130415.bam > fb-test-1.3.0-1.vcf real 1m29.208s user 1m28.696s sys 0m0.508s ``` First test an older 1.2.0 release: ```sh time ./.conda/pkgs/freebayes-1.2.0-htslib1.7_0/bin/freebayes -f chr20-6K.fa HG00100.chrom20.ILLUMINA.bwa.GBR.low_coverage.20130415.bam > fb-test-1.2.0-conda.vcf real 4m31.958s user 4m31.364s sys 0m0.584s ``` Found 49265 variants. The output for 1.2.0 is slightly different, so stick with later versions (after 1.3.0) of freebayes! Latest static build finds 49265 variants: ```sh time ./freebayes-1.3.6 -f chr20-6K.fa HG00100.chrom20.ILLUMINA.bwa.GBR.low_coverage.20130415.bam > fb-test-1.3.6.vcf real 1m10.926s user 1m10.472s sys 0m0.444s ``` 1.3.0 and 1.3.6 give the same results. The speed difference between 1.3.0 to 1.3.6 is due to htslib improvements. The clang (9.0.1) + llvm (13.0.0) build has a similar runtime. freebayes-1.3.6/test/regression/000077500000000000000000000000001417247743000166365ustar00rootroot00000000000000freebayes-1.3.6/test/regression/NA12878.chr22.tiny.vcf000066400000000000000000002172001417247743000221510ustar00rootroot00000000000000##fileformat=VCFv4.2 ##reference=tiny/q.fa ##contig= ##phasing=none ##commandline="freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.bam" ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT 1 q 186 . T C 343.484 . AB=0.390244;ABP=7.30028;AC=1;AF=0.5;AN=2;AO=16;CIGAR=1X;DP=41;DPB=41;DPRA=0;EPP=3.55317;EPPR=7.26639;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=79.09;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=591;QR=953;RO=25;RPL=4;RPP=11.6962;RPPR=10.0459;RPR=12;RUN=1;SAF=11;SAP=7.89611;SAR=5;SRF=9;SRP=7.26639;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:41:25,16:25:953:16:591:-41.1681,0,-73.7281 q 382 . C G 1.05177e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=4.65535;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=33.5524;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=73;QR=1275;RO=33;RPL=1;RPP=3.0103;RPPR=4.65535;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=21;SRP=8.34028;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:33,2:33:1275:2:73:0,-3.60598,-108.099 q 910 . A C 1.9784e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=3.73412;EPPR=4.65535;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=40.0086;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=899;RO=33;RPL=2;RPP=3.73412;RPPR=17.8158;RPR=1;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=18;SRP=3.60252;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:33,3:33:899:3:45:0,-6.63712,-76.9532 q 930 . T C 1.78554e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=9.52472;EPPR=4.76149;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.6019;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=59;QR=841;RO=31;RPL=3;RPP=9.52472;RPPR=3.08035;RPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=18;SRP=4.76149;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:31,3:31:841:3:59:0,-4.7287,-70.4186 q 934 . T C 2.98643e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=33;DPB=33;DPRA=0;EPP=3.73412;EPPR=5.61607;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=33.1107;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=59;QR=786;RO=30;RPL=2;RPP=3.73412;RPPR=3.0103;RPR=1;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=17;SRP=4.16842;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:30,3:30:786:3:59:0,-4.42767,-65.4606 q 940 . T C 1.78476e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=9.52472;EPPR=3.08035;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.6019;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=59;QR=945;RO=31;RPL=3;RPP=9.52472;RPPR=6.44263;RPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=18;SRP=4.76149;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:31,3:31:945:3:59:0,-4.7287,-79.7982 q 948 . T C 1.46909e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.6626;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1131;RO=34;RPL=2;RPP=7.35324;RPPR=12.2071;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=20;SRP=5.30951;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1131:2:30:0,-7.9871,-99.2046 q 952 . T C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=3.9754;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=48.3256;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1097;RO=36;RPL=2;RPP=7.35324;RPPR=11.6962;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=20;SRP=3.9754;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1097:2:30:0,-8.58916,-96.1236 q 958 . T C 2.80771e-11 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=5;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=6.91895;EPPR=3.64073;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=25.7647;PAIRED=1;PAIREDR=0.967742;PAO=0;PQA=0;PQR=0;PRO=0;QA=109;QR=1021;RO=31;RPL=5;RPP=13.8677;RPPR=11.486;RPR=0;RUN=1;SAF=4;SAP=6.91895;SAR=1;SRF=16;SRP=3.08035;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:31,5:31:1021:5:109:0,-0.811201,-82.1297 q 960 . T C 1.29659e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=9.52472;EPPR=3.56868;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=41.3251;PAIRED=1;PAIREDR=0.971429;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=1022;RO=35;RPL=2;RPP=3.73412;RPPR=8.03571;RPR=1;RUN=1;SAF=2;SAP=3.73412;SAR=1;SRF=19;SRP=3.56868;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:35,3:35:1022:3:51:0,-6.67921,-87.46 q 974 . T C 1.46909e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=3.0103;EPPR=4.03217;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=44.2763;PAIRED=1;PAIREDR=0.970588;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1197;RO=34;RPL=1;RPP=3.0103;RPPR=15.5282;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=19;SRP=4.03217;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1197:2:30:0,-7.9871,-105.144 q 1008 . C T 493.294 . AB=0.564103;ABP=4.40227;AC=1;AF=0.5;AN=2;AO=22;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=4.58955;EPPR=3.13803;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=94.3914;PAIRED=0.954545;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=749;QR=648;RO=17;RPL=9;RPP=4.58955;RPPR=4.1599;RPR=13;RUN=1;SAF=16;SAP=12.8806;SAR=6;SRF=5;SRP=9.26925;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:39:17,22:17:648:22:749:-55.9636,0,-46.9124 q 1299 . A C 4.45272e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=14.1309;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=57.303;NS=1;NUMALT=1;ODDS=42.9472;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1087;RO=33;RPL=1;RPP=3.0103;RPPR=4.65535;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=21;SRP=8.34028;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:33,2:33:1087:2:30:0,-7.68607,-94.6971 q 1329 . A C 6.29097e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=12.9286;GTI=0;LEN=1;MEANALT=1;MQM=50;MQMR=57.9459;NS=1;NUMALT=1;ODDS=44.5082;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=48;QR=1269;RO=37;RPL=1;RPP=3.0103;RPPR=5.88603;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=20;SRP=3.5385;SRR=17;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1269:2:48:0,-7.25521,-107.4 q 1577 . T G 4.80352e-06 . AB=0.133333;ABP=20.5268;AC=1;AF=0.5;AN=2;AO=2;CIGAR=1X;DP=15;DPB=15;DPRA=0;EPP=7.35324;EPPR=3.73412;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=13.7147;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=48;QR=386;RO=12;RPL=0;RPP=7.35324;RPPR=9.52472;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=6;SRP=3.0103;SRR=6;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:15:12,2:12:386:2:48:-0.105334,0,-30.5764 q 1703 . G T 1.36364e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=7.35324;EPPR=9.07545;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.4103;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=1080;RO=29;RPL=0;RPP=7.35324;RPPR=4.88226;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=6.67934;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:29,2:29:1080:2:42:0,-5.34215,-93.5033 q 1715 . G A 9.9451e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=7.35324;EPPR=4.16842;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.857;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=46;QR=1118;RO=30;RPL=0;RPP=7.35324;RPPR=3.0103;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=5.61607;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:1118:2:46:0,-5.26312,-96.5357 q 1760 . C T 7.8055e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=7.35324;EPPR=3.73412;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=35.9605;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=34;QR=953;RO=27;RPL=0;RPP=7.35324;RPPR=3.09072;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=22;SRP=26.2531;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:27,2:27:953:2:34:0,-5.68991,-82.8126 q 1781 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=33;DPB=33;DPRA=0;EPP=7.35324;EPPR=8.68415;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=41.6804;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1113;RO=31;RPL=2;RPP=7.35324;RPPR=3.64073;RPR=0;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=23;SRP=18.771;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:31,2:31:1113:2:30:0,-7.08401,-97.6003 q 1817 . GCCC ACCT 129.28 . AB=0.321429;ABP=10.7656;AC=1;AF=0.5;AN=2;AO=9;CIGAR=1X2M1X;DP=28;DPB=28;DPRA=0;EPP=3.25157;EPPR=3.12459;GTI=0;LEN=4;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=29.7678;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=294;QR=697;RO=19;RPL=5;RPP=3.25157;RPPR=3.12459;RPR=4;RUN=1;SAF=5;SAP=3.25157;SAR=4;SRF=12;SRP=5.8675;SRR=7;TYPE=complex;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:28:19,9:19:697:9:294:-18.3443,0,-54.6217 q 1887 . G A 1.23032e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=7.35324;EPPR=6.66752;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=41.3789;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=74;QR=1375;RO=38;RPL=0;RPP=7.35324;RPPR=3.23888;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=19;SRP=3.0103;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1375:2:74:0,-5.01532,-116.996 q 1917 . A G 482.956 . AB=0.513514;ABP=3.06899;AC=1;AF=0.5;AN=2;AO=19;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=3.12459;EPPR=4.9405;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=94.6173;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=715;QR=638;RO=18;RPL=8;RPP=4.03889;RPPR=4.9405;RPR=11;RUN=1;SAF=10;SAP=3.12459;SAR=9;SRF=8;SRP=3.49285;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:37:18,19:18:638:19:715:-53.5355,0,-46.5916 q 1989 . T G 2.66744e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=5.88603;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=49.6592;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1345;RO=37;RPL=2;RPP=7.35324;RPPR=5.88603;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=3.06899;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1345:2:30:0,-8.89019,-118.477 q 1991 . G T 2.66744e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=3.0103;EPPR=3.5385;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=48.2729;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1384;RO=37;RPL=1;RPP=3.0103;RPPR=5.88603;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=3.06899;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1384:2:30:0,-8.89019,-121.976 q 2201 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=5.88603;GTI=0;LEN=1;MEANALT=1;MQM=50;MQMR=58.3784;NS=1;NUMALT=1;ODDS=47.8383;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=32;QR=1296;RO=37;RPL=1;RPP=3.0103;RPPR=3.5385;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=16;SRP=4.47751;SRR=21;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1296:2:32:0,-8.70145,-113.767 q 2286 . G T 9.57594e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=7.35324;EPPR=3.32051;GTI=0;LEN=1;MEANALT=1;MQM=48.5;MQMR=58.6429;NS=1;NUMALT=1;ODDS=37.7181;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=935;RO=28;RPL=0;RPP=7.35324;RPPR=5.80219;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=10;SRP=7.97367;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:28,2:28:935:2:30:0,-6.18219,-81.4476 q 2310 . T C 1.0299e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=9.52472;EPPR=18.2106;GTI=0;LEN=1;MEANALT=1;MQM=52.3333;MQMR=56.8214;NS=1;NUMALT=1;ODDS=35.5251;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=46;QR=897;RO=28;RPL=0;RPP=9.52472;RPPR=7.97367;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=11;SRP=5.80219;SRR=17;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:28,3:28:897:3:46:0,-5.03988,-76.1642 q 2331 . A C 8.89066e-10 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=23;DPB=23;DPRA=0;EPP=3.73412;EPPR=18.6449;GTI=0;LEN=1;MEANALT=1;MQM=52.3333;MQMR=56.35;NS=1;NUMALT=1;ODDS=22.3094;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=50;QR=678;RO=20;RPL=1;RPP=3.73412;RPPR=4.74748;RPR=2;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=8;SRP=4.74748;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:23:20,3:20:678:3:50:0,-2.25835,-56.1925 q 2348 . TCT CCC 1.98663e-06 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X1M1X;DP=17;DPB=17;DPRA=0;EPP=3.0103;EPPR=7.18621;GTI=0;LEN=3;MEANALT=3;MQM=48.5;MQMR=54.3846;NS=1;NUMALT=1;ODDS=14.5976;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=43;QR=408;RO=13;RPL=1;RPP=3.0103;RPPR=7.18621;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=8;SRP=4.51363;SRR=5;TYPE=complex;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:17:13,2:13:408:2:43:0,-0.641287,-32.7873 q 2354 . AG AA 1.18611e-08 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1M1X;DP=18;DPB=18;DPRA=0;EPP=7.35324;EPPR=3.55317;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=54;NS=1;NUMALT=1;ODDS=19.7186;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=41;QR=500;RO=16;RPL=0;RPP=7.35324;RPPR=29.6108;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=8;SRP=3.0103;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:18:16,2:16:500:2:41:0,-1.52363,-41.1703 q 2366 . G A 3.83792e-10 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=20;DPB=20;DPRA=0;EPP=7.35324;EPPR=3.49285;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=54.6667;NS=1;NUMALT=1;ODDS=23.1495;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=37;QR=531;RO=18;RPL=0;RPP=7.35324;RPPR=26.6552;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=10;SRP=3.49285;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:20:18,2:18:531:2:37:0,-2.50568,-44.1943 q 2376 . T A 3.68154e-09 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=20;DPB=20;DPRA=0;EPP=3.0103;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=58.5;MQMR=54.8333;NS=1;NUMALT=1;ODDS=20.8885;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=41;QR=551;RO=18;RPL=1;RPP=3.0103;RPPR=20.3821;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=10;SRP=3.49285;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:20:18,2:18:551:2:41:0,-2.12579,-45.66 q 2380 . T A 7.43946e-07 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=20;DPB=20;DPRA=0;EPP=3.73412;EPPR=3.13803;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=54.3529;NS=1;NUMALT=1;ODDS=15.5798;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=64;QR=539;RO=17;RPL=1;RPP=3.73412;RPPR=24.5973;RPR=2;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=10;SRP=4.1599;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:20:17,3:17:539:3:64:0,-0.0475202,-42.3876 q 2383 . T A 0.000106541 . AB=0.166667;ABP=20.3821;AC=1;AF=0.5;AN=2;AO=3;CIGAR=1X;DP=18;DPB=18;DPRA=0;EPP=9.52472;EPPR=4.31318;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=55.1333;NS=1;NUMALT=1;ODDS=10.6155;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=86;QR=479;RO=15;RPL=0;RPP=9.52472;RPPR=20.5268;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=8;SRP=3.15506;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:18:15,3:15:479:3:86:-2.60586,0,-37.6662 q 2527 . A G 3.88672e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=27;DPB=27;DPRA=0;EPP=7.35324;EPPR=17.6895;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=32.3846;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=858;RO=25;RPL=1;RPP=3.0103;RPPR=3.09716;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=17;SRP=10.0459;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:27:25,2:25:858:2:30:0,-5.27783,-74.6618 q 2528 . G T 5.24579e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=27;DPB=27;DPRA=0;EPP=7.35324;EPPR=17.6895;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=29.7601;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=815;RO=25;RPL=1;RPP=3.0103;RPPR=3.09716;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=17;SRP=10.0459;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:27:25,2:25:815:2:42:0,-4.13803,-69.6411 q 2537 . G A 1.43459e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=26;DPB=26;DPRA=0;EPP=7.35324;EPPR=12.0581;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=31.0753;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=741;RO=24;RPL=1;RPP=3.0103;RPPR=3.0103;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=17;SRP=12.0581;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:26:24,2:24:741:2:30:0,-4.9768,-64.1044 q 2576 . T A 7.11377e-11 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=23;DPB=23;DPRA=0;EPP=7.35324;EPPR=8.07707;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=24.835;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=47;QR=717;RO=21;RPL=0;RPP=7.35324;RPPR=3.94093;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=5.59539;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:23:21,2:21:717:2:47:0,-2.45894,-60.3627 q 2631 . T G 2.35464e-09 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=20;DPB=20;DPRA=0;EPP=7.35324;EPPR=4.1599;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=21.3354;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=538;RO=17;RPL=2;RPP=7.35324;RPPR=18.4661;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=13.3567;SRR=4;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:20:17,2:17:538:2:42:0,-1.97311,-44.6988 q 2633 . CAAAAAAAAAAAAAAAACTGC AAAAAAAAAAAAAAAAACTGC 13.0542 . AB=0.214286;ABP=12.937;AC=1;AF=0.5;AN=2;AO=3;CIGAR=1X20M;DP=14;DPB=14.0476;DPRA=0;EPP=3.73412;EPPR=7.35324;GTI=0;LEN=1;MEANALT=10;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=2.93333;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=78;QR=76;RO=2;RPL=1;RPP=3.73412;RPPR=3.0103;RPR=2;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=1;SRP=3.0103;SRR=1;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:14:2,3:2:76:3:78:-5.5341,0,-5.36713 q 2663 . T C 6.8196e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=27;DPB=27;DPRA=0;EPP=7.35324;EPPR=6.26751;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=32.0548;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=34;QR=776;RO=24;RPL=2;RPP=7.35324;RPPR=12.0581;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=12;SRP=3.0103;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:27:24,2:24:776:2:34:0,-4.80015,-66.8629 q 3004 . A T 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=3.9754;GTI=0;LEN=1;MEANALT=1;MQM=54.5;MQMR=60;NS=1;NUMALT=1;ODDS=47.451;PAIRED=1;PAIREDR=0.972222;PAO=0;PQA=0;PQR=0;PRO=0;QA=34;QR=1367;RO=36;RPL=2;RPP=7.35324;RPPR=5.18177;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=17;SRP=3.25157;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1367:2:34:0,-8.20933,-120.074 q 3132 . G A 6.22716e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=3.0103;EPPR=3.08518;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.6485;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=971;RO=29;RPL=1;RPP=3.0103;RPPR=4.88226;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=3.68421;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:29,2:29:971:2:30:0,-6.48195,-84.8164 q 3142 . T A 3.25958e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=28;DPB=28;DPRA=0;EPP=7.35324;EPPR=3.0103;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=30.2515;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=736;RO=24;RPL=2;RPP=7.35324;RPPR=6.26751;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=11;SRP=3.37221;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:28:24,2:24:736:2:42:0,-4.01699,-62.5375 q 3173 . T A 4.90556e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=3.73412;EPPR=3.0103;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=29.829;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=52;QR=942;RO=26;RPL=2;RPP=3.73412;RPPR=6.01695;RPR=1;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=13;SRP=3.0103;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:26,3:26:942:3:52:0,-4.03244,-80.2245 q 3195 . T G 8.90953e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=27;DPB=27;DPRA=0;EPP=3.0103;EPPR=13.5202;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=31.5097;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=34;QR=893;RO=25;RPL=2;RPP=7.35324;RPPR=13.5202;RPR=0;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=12;SRP=3.09716;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:27:25,2:25:893:2:34:0,-4.89785,-77.4368 q 3244 . C G 1.88786e-12 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=24;DPB=24;DPRA=0;EPP=7.35324;EPPR=4.58955;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.5;NS=1;NUMALT=1;ODDS=28.4661;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=614;RO=22;RPL=1;RPP=3.0103;RPPR=12.8806;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=9;SRP=4.58955;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:24:22,2:22:614:2:30:0,-4.37474,-51.7215 q 3252 . T G 9.8693e-10 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=21;DPB=21;DPRA=0;EPP=9.52472;EPPR=9.26925;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=57.5882;NS=1;NUMALT=1;ODDS=22.205;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=423;RO=17;RPL=0;RPP=9.52472;RPPR=6.20364;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=10;SRP=4.1599;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:21:17,3:17:423:3:45:0,-1.97054,-32.9038 q 3262 . T A 1.20251e-05 . AB=0.176471;ABP=18.4661;AC=1;AF=0.5;AN=2;AO=3;CIGAR=1X;DP=17;DPB=17;DPRA=0;EPP=3.73412;EPPR=8.59409;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=55.6429;NS=1;NUMALT=1;ODDS=12.7971;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=60;QR=389;RO=14;RPL=1;RPP=3.73412;RPPR=5.49198;RPR=2;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=11;SRP=12.937;SRR=3;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:17:14,3:14:389:3:60:-0.482334,0,-29.2113 q 3263 . C A 3.37764e-05 . AB=0.2;ABP=14.7363;AC=1;AF=0.5;AN=2;AO=3;CIGAR=1X;DP=15;DPB=15;DPRA=0;EPP=9.52472;EPPR=9.52472;GTI=0;LEN=1;MEANALT=1;MQM=57.3333;MQMR=55.5833;NS=1;NUMALT=1;ODDS=11.7643;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=64;QR=329;RO=12;RPL=0;RPP=9.52472;RPPR=9.52472;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=10;SRP=14.5915;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:15:12,3:12:329:3:64:-1.45754,0,-24.0037 q 3283 . G A 6.9945e-11 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=22;DPB=22;DPRA=0;EPP=7.35324;EPPR=3.44459;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.6;NS=1;NUMALT=1;ODDS=24.8519;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=41;QR=680;RO=20;RPL=0;RPP=7.35324;RPPR=18.6449;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=9;SRP=3.44459;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:22:20,2:20:680:2:41:0,-2.72784,-57.595 q 3308 . T A 3.30116e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=28;DPB=28;DPRA=0;EPP=7.35324;EPPR=17.6895;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=30.259;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=861;RO=25;RPL=1;RPP=3.0103;RPPR=28.1125;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=15;SRP=5.18177;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:28:25,2:25:861:2:42:0,-4.35469,-73.7788 q 3317 . CAC AAA 1.41487e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X1M1X;DP=32;DPB=32;DPRA=0;EPP=3.0103;EPPR=26.4622;GTI=0;LEN=3;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.6579;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=36;QR=1087;RO=30;RPL=0;RPP=7.35324;RPPR=26.4622;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=20;SRP=10.2485;SRR=10;TYPE=complex;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:1087:2:36:0,-6.21301,-94.6975 q 3323 . AAT AAC,AAG 2.4839e-13 . AB=0,0;ABP=0,0;AC=0,0;AF=0,0;AN=2;AO=3,3;CIGAR=2M1X,2M1X;DP=33;DPB=33;DPRA=0,0;EPP=3.73412,3.73412;EPPR=26.2531;GTI=0;LEN=1,1;MEANALT=2,2;MQM=60,60;MQMR=60;NS=1;NUMALT=2;ODDS=30.7013;PAIRED=1,1;PAIREDR=1;PAO=0,0;PQA=0,0;PQR=0;PRO=0;QA=54,45;QR=958;RO=27;RPL=0,1;RPP=9.52472,3.73412;RPPR=26.2531;RPR=3,2;RUN=1,1;SAF=1,0;SAP=3.73412,9.52472;SAR=2,3;SRF=19;SRP=12.7417;SRR=8;TYPE=snp,snp;technology.ILLUMINA=1,1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:27,3,3:27:958:3,3:54,45:0,-4.15599,-81.4687,-4.99593,-79.2453,-82.2816 q 3667 . G T 1.50676e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=4.03217;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=44.2763;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1222;RO=34;RPL=1;RPP=3.0103;RPPR=3.26577;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=13;SRP=7.09778;SRR=21;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1222:2:30:0,-7.9871,-107.395 q 4010 . C A,T 8.22739e-15 . AB=0,0;ABP=0,0;AC=0,0;AF=0,0;AN=2;AO=2,2;CIGAR=1X,1X;DP=34;DPB=34;DPRA=0,0;EPP=7.35324,7.35324;EPPR=3.29983;GTI=0;LEN=1,1;MEANALT=2,2;MQM=60,60;MQMR=59.9667;NS=1;NUMALT=2;ODDS=38.8141;PAIRED=1,1;PAIREDR=1;PAO=0,0;PQA=0,0;PQR=0;PRO=0;QA=35,39;QR=998;RO=30;RPL=0,0;RPP=7.35324,7.35324;RPPR=4.16842;RPR=2,2;RUN=1,1;SAF=0,0;SAP=7.35324,7.35324;SAR=2,2;SRF=19;SRP=7.64277;SRR=11;TYPE=snp,snp;technology.ILLUMINA=1,1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:30,2,2:30:998:2,2:35,39:0,-6.49301,-86.7391,-6.11307,-84.4419,-86.3779 q 4011 . TTA TTT 1.96858e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=2M1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=5.45321;GTI=0;LEN=1;MEANALT=2;MQM=59.5;MQMR=58.4062;NS=1;NUMALT=1;ODDS=39.5603;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=48;QR=1080;RO=32;RPL=0;RPP=7.35324;RPPR=3.0103;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=19;SRP=5.45321;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:32,2:32:1080:2:48:0,-5.88858,-91.2924 q 4016 . C A 1.99425e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=7.35324;EPPR=4.25114;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=58.1429;NS=1;NUMALT=1;ODDS=38.1527;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=865;RO=28;RPL=0;RPP=7.35324;RPPR=3.32051;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=15;SRP=3.32051;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:28,2:28:865:2:30:0,-6.37092,-74.0393 q 4018 . G T 3.19511e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=9.52472;EPPR=5.02092;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.0741;NS=1;NUMALT=1;ODDS=33.1633;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=940;RO=27;RPL=0;RPP=9.52472;RPPR=3.09072;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=14;SRP=3.09072;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:27,3:27:940:3:51:0,-4.27097,-78.4948 q 4024 . A T 2.08536e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=7.35324;EPPR=6.95112;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=58.1111;NS=1;NUMALT=1;ODDS=35.1163;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=38;QR=849;RO=27;RPL=0;RPP=7.35324;RPPR=3.73412;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=14;SRP=3.09072;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:27,2:27:849:2:38:0,-5.32329,-72.4377 q 4025 . GTACCTTTTTTTTTTTTTTTTTTGAGAC GTTCCTTTTTTTTTTTTTTTTGAGAC,GTCCCTTTTTTTTTTTTTTTTTTGAGAC 0.0160187 . AB=0.111111,0.111111;ABP=26.6552,26.6552;AC=1,0;AF=0.5,0;AN=2;AO=2,2;CIGAR=2M1X2M2D21M,2M1X25M;DP=18;DPB=23.1071;DPRA=0,0;EPP=3.0103,7.35324;EPPR=8.80089;GTI=0;LEN=26,1;MEANALT=10,10;MQM=60,60;MQMR=60;NS=1;NUMALT=2;ODDS=5.60957;PAIRED=1,1;PAIREDR=1;PAO=0,0;PQA=0,0;PQR=332;PRO=9;QA=46,30;QR=205;RO=6;RPL=1,0;RPP=3.0103,7.35324;RPPR=16.0391;RPR=1,2;RUN=1,1;SAF=0,0;SAP=7.35324,7.35324;SAR=2,2;SRF=1;SRP=8.80089;SRR=5;TYPE=complex,snp;technology.ILLUMINA=1,1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:18:6,2,2:6:205:2,2:46,30:-1.72899,0,-16.0548,-1.44829,-14.5701,-17.5011 q 4058 . C T 4.35454e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=3.0103;EPPR=14.1309;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=58.303;NS=1;NUMALT=1;ODDS=43.2926;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=928;RO=33;RPL=1;RPP=3.0103;RPPR=22.0271;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=10;SRP=14.1309;SRR=23;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:33,2:33:928:2:30:0,-7.83607,-79.2782 q 4061 . G T 1.81642e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=3.73412;EPPR=12.7819;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.25;NS=1;NUMALT=1;ODDS=37.42;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=1051;RO=32;RPL=2;RPP=3.73412;RPPR=20.3821;RPR=1;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=10;SRP=12.7819;SRR=22;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:32,3:32:1051:3:51:0,-5.77612,-87.923 q 4066 . G T 6.08002e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=3.0103;EPPR=5.06748;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.5263;NS=1;NUMALT=1;ODDS=49.6079;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1146;RO=38;RPL=1;RPP=3.0103;RPPR=11.239;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=11.239;SRR=25;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1146:2:30:0,-9.19122,-98.3686 q 4073 . A C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=7.35324;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.8684;NS=1;NUMALT=1;ODDS=49.4631;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=37;QR=1250;RO=38;RPL=2;RPP=7.35324;RPPR=6.66752;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=14;SRP=8.7247;SRR=24;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1250:2:37:0,-8.52628,-109.235 q 4078 . A T 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=3.06899;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.8649;NS=1;NUMALT=1;ODDS=48.1281;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=37;QR=1259;RO=37;RPL=2;RPP=7.35324;RPPR=4.47751;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=10.1116;SRR=24;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1259:2:37:0,-8.22525,-110.048 q 4082 . C A 6.98431e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=4.56135;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=59.8571;NS=1;NUMALT=1;ODDS=45.1005;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=34;QR=1179;RO=35;RPL=1;RPP=3.0103;RPPR=6.05036;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=12;SRP=10.5174;SRR=23;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:35,2:35:1179:2:34:0,-8.06815,-103.137 q 4090 . C G 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=4.56135;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=59.8571;NS=1;NUMALT=1;ODDS=44.0081;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=46;QR=1142;RO=35;RPL=2;RPP=7.35324;RPPR=8.03571;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=13;SRP=8.03571;SRR=22;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:35,2:35:1142:2:46:0,-6.99167,-98.6702 q 4108 . C A 1.81047e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=3.0103;EPPR=4.47751;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.4294;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=43;QR=1272;RO=37;RPL=2;RPP=7.35324;RPPR=4.47751;RPR=0;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=13;SRP=10.1116;SRR=24;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:37,2:37:1272:2:43:0,-7.65529,-110.648 q 4123 . G T 2.00423e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=8.03571;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=44.407;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=44;QR=1147;RO=35;RPL=2;RPP=7.35324;RPPR=3.07234;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=9;SRP=20.9405;SRR=26;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:35,2:35:1147:2:44:0,-7.16491,-99.3189 q 4129 . A G 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=7.35324;EPPR=6.8707;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.6625;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=44;QR=1134;RO=36;RPL=2;RPP=7.35324;RPPR=3.9754;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=12;SRP=11.6962;SRR=24;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:36,2:36:1134:2:44:0,-7.43261,-98.1493 q 4142 . G T 1.1768e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=9.52472;EPPR=7.35324;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=39.1875;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=53;QR=1157;RO=32;RPL=3;RPP=9.52472;RPPR=9.79615;RPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=11;SRP=9.79615;SRR=21;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:32,3:32:1157:3:53:0,-5.58949,-99.466 q 4144 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=3.0103;EPPR=4.65535;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=43.4154;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1133;RO=33;RPL=1;RPP=3.0103;RPPR=14.1309;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=14;SRP=4.65535;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:33,2:33:1133:2:30:0,-7.8894,-99.3648 q 4189 . C G 1.387e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=29;DPB=29;DPRA=0;EPP=7.35324;EPPR=6.01695;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=33.4025;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=40;QR=886;RO=26;RPL=2;RPP=7.35324;RPPR=8.35546;RPR=0;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=15;SRP=4.34659;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:29:26,2:26:886:2:40:0,-4.84897,-76.2083 q 4280 . T G 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=6.23461;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=44.3335;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1238;RO=33;RPL=2;RPP=7.35324;RPPR=6.23461;RPR=0;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=20;SRP=6.23461;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:33,2:33:1238:2:30:0,-7.68607,-108.85 q 4449 . G A 298.354 . AB=0.419355;ABP=4.76149;AC=1;AF=0.5;AN=2;AO=13;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=7.18621;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=68.6986;PAIRED=1;PAIREDR=0.944444;PAO=0;PQA=0;PQR=0;PRO=0;QA=496;QR=688;RO=18;RPL=6;RPP=3.17734;RPPR=3.49285;RPR=7;RUN=1;SAF=9;SAP=7.18621;SAR=4;SRF=11;SRP=4.9405;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:31:18,13:18:688:13:496:-35.65,0,-52.9178 q 4491 . T C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=3.0103;EPPR=5.06748;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=44.5776;PAIRED=1;PAIREDR=0.973684;PAO=0;PQA=0;PQR=0;PRO=0;QA=53;QR=1336;RO=38;RPL=0;RPP=7.35324;RPPR=3.23888;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=24;SRP=8.7247;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1336:2:53:0,-7.00657,-115.467 q 4852 . C A,G 0 . AB=0,0;ABP=0,0;AC=0,0;AF=0,0;AN=2;AO=2,2;CIGAR=1X,1X;DP=40;DPB=40;DPRA=0,0;EPP=7.35324,3.0103;EPPR=3.0103;GTI=0;LEN=1,1;MEANALT=2,2;MQM=60,60;MQMR=60;NS=1;NUMALT=2;ODDS=45.391;PAIRED=1,1;PAIREDR=1;PAO=0,0;PQA=0,0;PQR=0;PRO=0;QA=34,39;QR=1298;RO=36;RPL=1,1;RPP=3.0103,3.0103;RPPR=5.18177;RPR=1,1;RUN=1,1;SAF=1,0;SAP=3.0103,7.35324;SAR=1,2;SRF=17;SRP=3.25157;SRR=19;TYPE=snp,snp;technology.ILLUMINA=1,1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:36,2,2:36:1298:2,2:34,39:0,-8.39168,-113.838,-7.91675,-111.541,-113.387 q 5009 . C T 762.203 . AB=0.652174;ABP=12.2627;AC=1;AF=0.5;AN=2;AO=30;CIGAR=1X;DP=46;DPB=46;DPRA=0;EPP=10.2485;EPPR=3.63072;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=56.7052;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=1079;QR=503;RO=14;RPL=18;RPP=5.61607;RPPR=5.49198;RPR=12;RUN=1;SAF=16;SAP=3.29983;SAR=14;SRF=11;SRP=12.937;SRR=3;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:46:14,30:14:503:30:1079:-83.9204,0,-32.1147 q 5045 . C A 9.54557e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=33;DPB=33;DPRA=0;EPP=9.52472;EPPR=5.61607;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.316;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=1067;RO=30;RPL=0;RPP=9.52472;RPPR=13.4334;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=19;SRP=7.64277;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:30,3:30:1067:3:45:0,-5.73403,-92.1056 q 5056 . G A 2.06127e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=3.73412;EPPR=3.68421;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=34.6129;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=46;QR=1076;RO=29;RPL=2;RPP=3.73412;RPPR=12.0706;RPR=1;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=20;SRP=12.0706;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:29,3:29:1076:3:46:0,-5.33967,-92.8325 q 5073 . T A 9.64351e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=3.0103;EPPR=5.61607;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.9703;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1012;RO=30;RPL=1;RPP=3.0103;RPPR=13.4334;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=19;SRP=7.64277;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:1012:2:30:0,-6.78298,-88.4949 q 5080 . A C 1.66123e-05 . AB=0.243243;ABP=24.1968;AC=1;AF=0.5;AN=2;AO=9;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=5.18177;EPPR=3.09072;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=12.4739;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=164;QR=979;RO=27;RPL=3;RPP=5.18177;RPPR=5.02092;RPR=6;RUN=1;SAF=0;SAP=22.5536;SAR=9;SRF=22;SRP=26.2531;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:37:27,9:27:979:9:164:-3.72519,0,-77.1618 q 5088 . T C 2.15768e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=3.73412;EPPR=8.34028;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.7193;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=1057;RO=33;RPL=1;RPP=3.73412;RPPR=3.0761;RPR=2;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=21;SRP=8.34028;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:33,3:33:1057:3:51:0,-6.07715,-90.6182 q 5090 . C G 1.81642e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=3.73412;EPPR=12.7819;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.42;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=944;RO=32;RPL=2;RPP=3.73412;RPPR=3.0103;RPR=1;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=20;SRP=7.35324;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:32,3:32:944:3:51:0,-5.77612,-80.4354 q 5095 . A G 8.19916e-11 . AB=0.205882;ABP=28.557;AC=1;AF=0.5;AN=2;AO=7;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=18.2106;EPPR=3.09072;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=24.6931;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=124;QR=799;RO=27;RPL=0;RPP=18.2106;RPPR=9.52472;RPR=7;RUN=1;SAF=0;SAP=18.2106;SAR=7;SRF=19;SRP=12.7417;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:34:27,7:27:799:7:124:-1.1018,0,-61.9305 q 5101 . T G 2.56926e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=9.52472;EPPR=3.06899;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.229;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=922;RO=37;RPL=1;RPP=3.73412;RPPR=4.47751;RPR=2;RUN=1;SAF=1;SAP=3.73412;SAR=2;SRF=22;SRP=5.88603;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:37,3:37:922:3:45:0,-7.84124,-78.9956 q 5489 . G A 5.18062e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=25;DPB=25;DPRA=0;EPP=3.0103;EPPR=5.3706;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.7826;NS=1;NUMALT=1;ODDS=29.769;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=823;RO=23;RPL=0;RPP=7.35324;RPPR=10.6577;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=11;SRP=3.10471;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:25:23,2:23:823:2:30:0,-4.67577,-71.5218 q 5496 . C A 5.18062e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=25;DPB=25;DPRA=0;EPP=3.0103;EPPR=5.3706;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.4783;NS=1;NUMALT=1;ODDS=29.769;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=699;RO=23;RPL=1;RPP=3.0103;RPPR=3.86001;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=10;SRP=3.86001;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:25:23,2:23:699:2:30:0,-4.67577,-60.321 q 5519 . A C 9.21529e-07 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=16;DPB=16;DPRA=0;EPP=3.0103;EPPR=5.49198;GTI=0;LEN=1;MEANALT=1;MQM=56.5;MQMR=59.6429;NS=1;NUMALT=1;ODDS=15.3658;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=43;QR=507;RO=14;RPL=1;RPP=3.0103;RPPR=8.59409;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=5;SRP=5.49198;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:16:14,2:14:507:2:43:0,-0.731857,-41.8613 q 5546 . G C 1.51912e-06 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=15;DPB=15;DPRA=0;EPP=7.35324;EPPR=14.5915;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=59;NS=1;NUMALT=1;ODDS=14.8659;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=445;RO=12;RPL=0;RPP=7.35324;RPPR=21.1059;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=3;SRP=9.52472;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:15:12,2:12:445:2:42:0,-0.394634,-36.3916 q 5588 . C A 0.000104295 . AB=0.166667;ABP=14.5915;AC=1;AF=0.5;AN=2;AO=2;CIGAR=1X;DP=12;DPB=12;DPRA=0;EPP=3.0103;EPPR=3.87889;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=52.8;NS=1;NUMALT=1;ODDS=10.6368;PAIRED=1;PAIREDR=0.9;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=321;RO=10;RPL=1;RPP=3.0103;RPPR=6.48466;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=5;SRP=3.0103;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:12:10,2:10:321:2:42:-0.377421,0,-25.0829 q 5638 . CATA CA 282.392 . AB=0.566667;ABP=4.16842;AC=1;AF=0.5;AN=2;AO=17;CIGAR=1M2D1M;DP=30;DPB=21.5;DPRA=0;EPP=9.26925;EPPR=7.18621;GTI=0;LEN=2;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=65.0231;PAIRED=1;PAIREDR=0.923077;PAO=0;PQA=0;PQR=0;PRO=0;QA=501;QR=488;RO=13;RPL=2;RPP=24.5973;RPPR=16.5402;RPR=15;RUN=1;SAF=10;SAP=4.1599;SAR=7;SRF=7;SRP=3.17734;SRR=6;TYPE=del;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:30:13,17:13:488:17:501:-36.3303,0,-35.226 q 6322 . T G 2.35377e-10 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=23;DPB=23;DPRA=0;EPP=3.0103;EPPR=4.74748;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=23.6384;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=583;RO=20;RPL=1;RPP=3.0103;RPPR=6.91895;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=11;SRP=3.44459;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:23:20,2:20:583:2:42:0,-2.80287,-48.7535 q 6323 . G A 1.73015e-12 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=23;DPB=23;DPRA=0;EPP=7.35324;EPPR=3.94093;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=28.5531;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=660;RO=21;RPL=0;RPP=7.35324;RPPR=8.07707;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=10;SRP=3.1137;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:23:21,2:21:660:2:30:0,-4.07371,-56.8259 q 6353 . T A 1.25682e-08 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=20;DPB=20;DPRA=0;EPP=7.35324;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=50;MQMR=60;NS=1;NUMALT=1;ODDS=19.6607;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=53;QR=564;RO=18;RPL=0;RPP=7.35324;RPPR=3.0103;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=10;SRP=3.49285;SRR=8;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:20:18,2:18:564:2:53:0,-0.990486,-46.0179 q 6359 . T A 5.48879e-06 . AB=0.210526;ABP=16.8392;AC=1;AF=0.5;AN=2;AO=4;CIGAR=1X;DP=19;DPB=19;DPRA=0;EPP=3.0103;EPPR=4.31318;GTI=0;LEN=1;MEANALT=1;MQM=55;MQMR=60;NS=1;NUMALT=1;ODDS=13.5814;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=65;QR=430;RO=15;RPL=0;RPP=11.6962;RPPR=6.62942;RPR=4;RUN=1;SAF=2;SAP=3.0103;SAR=2;SRF=10;SRP=6.62942;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:19:15,4:15:430:4:65:-0.288936,0,-33.2524 q 6408 . T A 8.23642e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=28;DPB=28;DPRA=0;EPP=9.52472;EPPR=10.0459;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=29.3161;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=57;QR=889;RO=25;RPL=3;RPP=9.52472;RPPR=10.0459;RPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=19;SRP=17.6895;SRR=6;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:28:25,3:25:889:3:57:0,-3.10907,-74.9756 q 6418 . G A 326.813 . AB=0.538462;ABP=3.34437;AC=1;AF=0.5;AN=2;AO=14;CIGAR=1X;DP=26;DPB=26;DPRA=0;EPP=12.937;EPPR=5.9056;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=50.888;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=520;QR=401;RO=12;RPL=4;RPP=8.59409;RPPR=5.9056;RPR=10;RUN=1;SAF=9;SAP=5.49198;SAR=5;SRF=10;SRP=14.5915;SRR=2;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:26:12,14:12:401:14:520:-39.3034,0,-28.5706 q 6460 . T A 6.50945e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=29;DPB=29;DPRA=0;EPP=7.35324;EPPR=3.73412;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=35.0855;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=36;QR=981;RO=27;RPL=2;RPP=7.35324;RPPR=3.73412;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=17;SRP=6.95112;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:29:27,2:27:981:2:36:0,-5.30993,-85.1583 q 6668 . C A 2.46509e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=4;CIGAR=1X;DP=54;DPB=54;DPRA=0;EPP=3.0103;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.128;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=157;QR=1874;RO=50;RPL=0;RPP=11.6962;RPPR=9.26414;RPR=4;RUN=1;SAF=2;SAP=3.0103;SAR=2;SRF=32;SRP=11.5225;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:54:50,4:50:1874:4:157:0,-1.74712,-154.39 q 7152 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=39;DPB=39;DPRA=0;EPP=3.0103;EPPR=3.9754;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=47.2847;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1164;RO=36;RPL=1;RPP=3.0103;RPPR=9.04217;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=21;SRP=5.18177;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:39:36,2:36:1164:2:30:0,-8.73916,-102.158 q 7159 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=7.35324;EPPR=8.7247;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=49.6079;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1240;RO=38;RPL=1;RPP=3.0103;RPPR=3.0103;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=23;SRP=6.66752;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1240:2:30:0,-9.19122,-109.004 q 7161 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=9.04217;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=46.9393;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1127;RO=36;RPL=1;RPP=3.0103;RPPR=3.25157;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=22;SRP=6.8707;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1127:2:30:0,-8.58916,-98.8317 q 7169 . T A 2.59187e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=12.7819;GTI=0;LEN=1;MEANALT=3;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=42.7585;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=33;QR=1060;RO=32;RPL=0;RPP=7.35324;RPPR=4.09604;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=4.09604;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:32,2:32:1060:2:33:0,-7.27755,-92.5168 q 7182 . C A 1.29584e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=9.52472;EPPR=4.76149;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=39.6099;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=1005;RO=31;RPL=0;RPP=9.52472;RPPR=3.08035;RPR=3;RUN=1;SAF=0;SAP=9.52472;SAR=3;SRF=18;SRP=4.76149;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:31,3:31:1005:3:45:0,-6.03506,-86.5187 q 7201 . T G 1.46909e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=9.39698;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.6626;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1039;RO=34;RPL=0;RPP=7.35324;RPPR=9.39698;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=18;SRP=3.26577;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1039:2:30:0,-7.9871,-90.9104 q 7207 . G A 7.48861e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=8.34028;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=42.365;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=39;QR=1016;RO=33;RPL=0;RPP=7.35324;RPPR=10.9724;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=18;SRP=3.60252;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:33,2:33:1016:2:39:0,-6.83117,-87.9913 q 7216 . G C 6.93087e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=7.35324;EPPR=6.23461;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=43.6773;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=33;QR=1108;RO=33;RPL=0;RPP=7.35324;RPPR=14.1309;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=18;SRP=3.60252;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:33,2:33:1108:2:33:0,-7.40109,-96.862 q 7239 . T G 3.55643e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=7.35324;EPPR=4.56135;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=58.4571;NS=1;NUMALT=1;ODDS=46.9933;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1028;RO=35;RPL=0;RPP=7.35324;RPPR=4.56135;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=13;SRP=8.03571;SRR=22;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:37:35,2:35:1028:2:30:0,-8.28813,-89.1384 q 7251 . T G 1.09014e-11 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=5;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=3.44459;EPPR=3.08518;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=58.1379;NS=1;NUMALT=1;ODDS=26.7111;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=81;QR=733;RO=29;RPL=2;RPP=3.44459;RPPR=9.07545;RPR=3;RUN=1;SAF=1;SAP=6.91895;SAR=4;SRF=11;SRP=6.67934;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:29,5:29:733:5:81:0,-2.99345,-55.7544 q 7263 . C A 1.9121e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=4;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=11.6962;EPPR=5.61607;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=57;NS=1;NUMALT=1;ODDS=34.1906;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=71;QR=829;RO=30;RPL=0;RPP=11.6962;RPPR=13.4334;RPR=4;RUN=1;SAF=0;SAP=11.6962;SAR=4;SRF=11;SRP=7.64277;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:30,4:30:829:4:71:0,-3.66769,-65.1422 q 7264 . AAG AAA 3.99445e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=4;CIGAR=2M1X;DP=36;DPB=36;DPRA=0;EPP=5.18177;EPPR=5.45321;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=55.9375;NS=1;NUMALT=1;ODDS=32.4606;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=78;QR=1103;RO=32;RPL=1;RPP=5.18177;RPPR=5.45321;RPR=3;RUN=1;SAF=0;SAP=11.6962;SAR=4;SRF=12;SRP=7.35324;SRR=20;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:32,4:32:1103:4:78:0,-3.6223,-88.6792 q 7275 . TCAAAAAAAAAAAAAAAAAGACAAAGTAGT TCAAAAAAAAAAAAAAAGACAAAGTAGT 6.99873 . AB=0.142857;ABP=26.2761;AC=1;AF=0.5;AN=2;AO=3;CIGAR=2M2D26M;DP=21;DPB=20.6;DPRA=0;EPP=9.52472;EPPR=12.7819;GTI=0;LEN=2;MEANALT=7;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=1.38881;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=97;QR=292;RO=8;RPL=2;RPP=3.73412;RPPR=12.7819;RPR=1;RUN=1;SAF=1;SAP=3.73412;SAR=2;SRF=0;SRP=20.3821;SRR=8;TYPE=del;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:21:8,3:8:292:3:97:-5.45203,0,-23.0425 q 7612 . G T 9.93756e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=3.0103;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.6724;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=77;QR=1368;RO=36;RPL=2;RPP=7.35324;RPPR=5.18177;RPR=0;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=17;SRP=3.25157;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1368:2:77:0,-4.13031,-116.079 q 7812 . C A 8.75099e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=3.0103;EPPR=3.28173;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.4688;NS=1;NUMALT=1;ODDS=41.6197;PAIRED=1;PAIREDR=0.96875;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1178;RO=32;RPL=1;RPP=3.0103;RPPR=5.45321;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=18;SRP=4.09604;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:32,2:32:1178:2:30:0,-7.38504,-103.367 q 7844 . T C 8.35546e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=3.0103;EPPR=3.08035;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=59.3548;NS=1;NUMALT=1;ODDS=38.9203;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=38;QR=1120;RO=31;RPL=1;RPP=3.0103;RPPR=4.76149;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=15;SRP=3.08035;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:31,2:31:1120:2:38:0,-6.48741,-97.4108 q 7925 . A G 7.50367e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=3.0103;EPPR=3.56868;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.7714;NS=1;NUMALT=1;ODDS=42.5449;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=44;QR=1288;RO=35;RPL=1;RPP=3.0103;RPPR=4.56135;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=18;SRP=3.07234;SRR=17;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:37:35,2:35:1288:2:44:0,-6.95824,-112.016 q 7974 . A C 3.55643e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=7.35324;EPPR=3.56868;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.6071;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1299;RO=35;RPL=1;RPP=3.0103;RPPR=10.5174;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=19;SRP=3.56868;SRR=16;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:37:35,2:35:1299:2:30:0,-8.28813,-114.331 q 8106 . A C 1.81343e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=9.52472;EPPR=12.7819;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.8498;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=49;QR=1188;RO=32;RPL=1;RPP=3.73412;RPPR=9.79615;RPR=2;RUN=1;SAF=1;SAP=3.73412;SAR=2;SRF=21;SRP=9.79615;SRR=11;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:35:32,3:32:1188:3:49:0,-5.96277,-102.628 q 8150 . G T 2.24887e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=3.0761;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.5692;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=52;QR=1125;RO=33;RPL=1;RPP=3.0103;RPPR=10.9724;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=19;SRP=4.65535;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:33,2:33:1125:2:52:0,-5.78475,-96.6066 q 8846 . T C 329.36 . AB=0.333333;ABP=13.8677;AC=1;AF=0.5;AN=2;AO=15;CIGAR=1X;DP=45;DPB=45;DPRA=0;EPP=4.31318;EPPR=3.29983;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=75.838;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=582;QR=1123;RO=30;RPL=7;RPP=3.15506;RPPR=3.29983;RPR=8;RUN=1;SAF=7;SAP=3.15506;SAR=8;SRF=16;SRP=3.29983;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:45:30,15:30:1123:15:582:-39.1746,0,-87.8095 q 9251 . GTTCTTTCTTTTTCA GTTCTTTTTCA 362.086 . AB=0.486486;ABP=3.06899;AC=1;AF=0.5;AN=2;AO=18;CIGAR=1M4D10M;DP=37;DPB=31.9333;DPRA=0;EPP=10.7311;EPPR=4.1599;GTI=0;LEN=4;MEANALT=3;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=83.3734;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=586;QR=643;RO=17;RPL=7;RPP=4.9405;RPPR=6.20364;RPR=11;RUN=1;SAF=8;SAP=3.49285;SAR=10;SRF=6;SRP=6.20364;SRR=11;TYPE=del;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:37:17,18:17:643:18:586:-42.2668,0,-47.4262 q 9791 . A C 541.533 . AB=0.45098;ABP=4.07475;AC=1;AF=0.5;AN=2;AO=23;CIGAR=1X;DP=51;DPB=51;DPRA=0;EPP=3.10471;EPPR=3.73412;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=124.693;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=833;QR=1018;RO=27;RPL=13;RPP=3.86001;RPPR=3.73412;RPR=10;RUN=1;SAF=8;SAP=7.63648;SAR=15;SRF=14;SRP=3.09072;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:51:27,23:27:1018:23:833:-60.0624,0,-76.7052 q 10132 . A C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=18.4519;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=46.9393;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1308;RO=36;RPL=1;RPP=3.0103;RPPR=3.9754;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=18;SRP=3.0103;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1308:2:30:0,-8.58916,-115.138 q 10153 . A C 1.39611e-16 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=12.2071;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=45.6626;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1197;RO=34;RPL=0;RPP=7.35324;RPPR=5.30951;RPR=2;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=15;SRP=4.03217;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1197:2:30:0,-7.9871,-105.156 q 10284 . T A 1.23562e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=26;DPB=26;DPRA=0;EPP=7.35324;EPPR=3.86001;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=31.2858;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=31;QR=843;RO=23;RPL=0;RPP=7.35324;RPPR=5.3706;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=9;SRP=5.3706;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:26:23,2:23:843:2:31:0,-4.73244,-73.2227 q 10302 . T A 1.35745e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=26;DPB=26;DPRA=0;EPP=3.0103;EPPR=4.45795;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=31.0753;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=671;RO=24;RPL=1;RPP=3.0103;RPPR=3.0103;RPR=1;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=12;SRP=3.0103;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:26:24,2:24:671:2:30:0,-4.9768,-57.7866 q 10380 . A C 1.48303e-13 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=3.0103;EPPR=3.32051;GTI=0;LEN=1;MEANALT=1;MQM=54;MQMR=60;NS=1;NUMALT=1;ODDS=31;PAIRED=1;PAIREDR=0.964286;PAO=0;PQA=0;PQR=0;PRO=0;QA=55;QR=997;RO=28;RPL=0;RPP=7.35324;RPPR=7.97367;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=15;SRP=3.32051;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:30:28,2:28:997:2:55:0,-3.8666,-84.8508 q 10444 . C A 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=38;DPB=38;DPRA=0;EPP=7.35324;EPPR=3.25157;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.1111;NS=1;NUMALT=1;ODDS=46.9393;PAIRED=1;PAIREDR=0.972222;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1267;RO=36;RPL=1;RPP=3.0103;RPPR=6.8707;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=17;SRP=3.25157;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:38:36,2:36:1267:2:30:0,-8.58916,-111.153 q 10469 . T A 8.16735e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=7.35324;EPPR=13.4334;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=59.6;NS=1;NUMALT=1;ODDS=36.421;PAIRED=1;PAIREDR=0.966667;PAO=0;PQA=0;PQR=0;PRO=0;QA=48;QR=968;RO=30;RPL=0;RPP=7.35324;RPPR=5.61607;RPR=2;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=15;SRP=3.0103;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:968:2:48:0,-5.07379,-82.8316 q 10494 . T A 8.37807e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=33;DPB=33;DPRA=0;EPP=3.0103;EPPR=6.44263;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.3256;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=39;QR=980;RO=31;RPL=0;RPP=7.35324;RPPR=3.08035;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=13;SRP=4.76149;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:31,2:31:980:2:39:0,-6.22911,-84.7558 q 10500 . C A 1.9505e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=34;DPB=34;DPRA=0;EPP=3.0103;EPPR=9.79615;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=39.6512;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=39;QR=967;RO=32;RPL=1;RPP=3.0103;RPPR=3.28173;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=14;SRP=4.09604;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:34:32,2:32:967:2:39:0,-6.53014,-83.5841 q 10506 . G A 9.03704e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=3.0103;EPPR=7.64277;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.6579;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=36;QR=895;RO=30;RPL=0;RPP=7.35324;RPPR=4.16842;RPR=2;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=12;SRP=5.61607;SRR=18;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:895:2:36:0,-6.21302,-77.38 q 10508 . T A 6.41506e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=4;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=11.6962;EPPR=14.1779;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=32.0982;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=69;QR=885;RO=28;RPL=0;RPP=11.6962;RPPR=3.32051;RPR=4;RUN=1;SAF=4;SAP=11.6962;SAR=0;SRF=9;SRP=10.7656;SRR=19;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:28,4:28:885:4:69:0,-3.25056,-73.5337 q 10529 . C A 1.24454e-12 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=26;DPB=26;DPRA=0;EPP=3.0103;EPPR=3.0103;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=28.8881;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=40;QR=629;RO=24;RPL=1;RPP=3.0103;RPPR=4.45795;RPR=1;RUN=1;SAF=0;SAP=7.35324;SAR=2;SRF=12;SRP=3.0103;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:26:24,2:24:629:2:40:0,-4.02692,-53.0437 q 10532 . C A 202.011 . AB=0.407407;ABP=5.02092;AC=1;AF=0.5;AN=2;AO=11;CIGAR=1X;DP=27;DPB=27;DPRA=0;EPP=3.20771;EPPR=3.55317;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=46.5147;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=368;QR=484;RO=16;RPL=6;RPP=3.20771;RPPR=5.18177;RPR=5;RUN=1;SAF=4;SAP=4.78696;SAR=7;SRF=9;SRP=3.55317;SRR=7;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:27:16,11:16:484:11:368:-25.2999,0,-35.7067 q 10541 . G A 7.7546e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=29;DPB=29;DPRA=0;EPP=7.35324;EPPR=5.02092;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=31.8062;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=51;QR=924;RO=27;RPL=2;RPP=7.35324;RPPR=3.09072;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=12;SRP=3.73412;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:29:27,2:27:924:2:51:0,-3.88572,-78.5982 q 10553 . C A 6.22293e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=7.35324;EPPR=9.07545;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=39.0348;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=879;RO=29;RPL=2;RPP=7.35324;RPPR=3.08518;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=14;SRP=3.08518;SRR=15;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:29,2:29:879:2:30:0,-6.48195,-76.518 q 10570 . T A 1.81416e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=31;DPB=31;DPRA=0;EPP=3.73412;EPPR=22.8638;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=33.5399;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=45;QR=854;RO=28;RPL=3;RPP=9.52472;RPPR=4.25114;RPR=0;RUN=1;SAF=2;SAP=3.73412;SAR=1;SRF=14;SRP=3.0103;SRR=14;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:31:28,3:28:854:3:45:0,-5.13197,-72.9214 q 10638 . A G 8.01621e-15 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=9.52472;EPPR=3.26577;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=38.1368;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=70;QR=1247;RO=34;RPL=0;RPP=9.52472;RPPR=9.39698;RPR=3;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=24;SRP=15.5282;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:37:34,3:34:1247:3:70:0,-4.60566,-105.977 q 11080 . A C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=36;DPB=36;DPRA=0;EPP=7.35324;EPPR=5.30951;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=41.6518;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=42;QR=1270;RO=34;RPL=1;RPP=3.0103;RPPR=15.5282;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=24;SRP=15.5282;SRR=10;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:36:34,2:34:1270:2:42:0,-6.8473,-110.587 q 11108 . A G 2.08161e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=33;DPB=33;DPRA=0;EPP=3.0103;EPPR=3.29983;GTI=0;LEN=1;MEANALT=2;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=37.0748;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=41;QR=1060;RO=30;RPL=2;RPP=7.35324;RPPR=13.4334;RPR=0;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=21;SRP=13.4334;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:33:30,2:30:1060:2:41:0,-5.95976,-91.7692 q 11247 . A C 0 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=40;DPB=40;DPRA=0;EPP=7.35324;EPPR=3.23888;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=49.6079;PAIRED=1;PAIREDR=0.947368;PAO=0;PQA=0;PQR=0;PRO=0;QA=30;QR=1255;RO=38;RPL=1;RPP=3.0103;RPPR=3.23888;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=18;SRP=3.23888;SRR=20;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:40:38,2:38:1255:2:30:0,-9.19122,-110.355 q 11261 . T C 466.929 . AB=0.571429;ABP=4.56135;AC=1;AF=0.5;AN=2;AO=20;CIGAR=1X;DP=35;DPB=35;DPRA=0;EPP=3.0103;EPPR=4.31318;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=67.8739;PAIRED=0.95;PAIREDR=0.933333;PAO=0;PQA=0;PQR=0;PRO=0;QA=696;QR=502;RO=15;RPL=7;RPP=6.91895;RPPR=4.31318;RPR=13;RUN=1;SAF=9;SAP=3.44459;SAR=11;SRF=6;SRP=4.31318;SRR=9;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:35:15,20:15:502:20:696:-52.3979,0,-34.9499 q 11334 . G T 1.36138e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=3;CIGAR=1X;DP=42;DPB=42;DPRA=0;EPP=9.52472;EPPR=3.06598;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=39.9619;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=92;QR=1347;RO=39;RPL=3;RPP=9.52472;RPPR=5.73856;RPR=0;RUN=1;SAF=3;SAP=9.52472;SAR=0;SRF=17;SRP=4.40227;SRR=22;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:42:39,3:39:1347:3:92:0,-4.06266,-112.904 q 11492 . C A 1.71924e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=7.35324;EPPR=21.5402;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=34.8974;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=55;QR=1122;RO=30;RPL=2;RPP=7.35324;RPPR=3.29983;RPR=0;RUN=1;SAF=2;SAP=7.35324;SAR=0;SRF=17;SRP=4.16842;SRR=13;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:1122:2:55:0,-4.41208,-96.0481 q 11536 . T C 648.81 . AB=0.648649;ABP=10.1116;AC=1;AF=0.5;AN=2;AO=24;CIGAR=1X;DP=37;DPB=37;DPRA=0;EPP=4.45795;EPPR=3.17734;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=53.8563;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=913;QR=444;RO=13;RPL=11;RPP=3.37221;RPPR=3.17734;RPR=13;RUN=1;SAF=15;SAP=6.26751;SAR=9;SRF=8;SRP=4.51363;SRR=5;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:37:13,24:13:444:24:913:-71.3353,0,-29.1374 q 12125 . T C 270.342 . AB=0.4;ABP=5.61607;AC=1;AF=0.5;AN=2;AO=12;CIGAR=1X;DP=30;DPB=30;DPRA=0;EPP=3.73412;EPPR=7.35324;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=62.2486;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=467;QR=669;RO=18;RPL=5;RPP=3.73412;RPPR=7.35324;RPR=7;RUN=1;SAF=10;SAP=14.5915;SAR=2;SRF=6;SRP=7.35324;SRR=12;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/1:30:18,12:18:669:12:467:-33.3482,0,-51.4981 q 12151 . T A 1.02389e-14 . AB=0;ABP=0;AC=0;AF=0;AN=2;AO=2;CIGAR=1X;DP=32;DPB=32;DPRA=0;EPP=7.35324;EPPR=5.61607;GTI=0;LEN=1;MEANALT=1;MQM=60;MQMR=60;NS=1;NUMALT=1;ODDS=36.783;PAIRED=1;PAIREDR=1;PAO=0;PQA=0;PQR=0;PRO=0;QA=40;QR=1108;RO=30;RPL=1;RPP=3.0103;RPPR=4.16842;RPR=1;RUN=1;SAF=1;SAP=3.0103;SAR=1;SRF=13;SRP=4.16842;SRR=17;TYPE=snp;technology.ILLUMINA=1 GT:DP:AD:RO:QR:AO:QA:GL 0/0:32:30,2:30:1108:2:40:0,-5.83305,-96.2041 freebayes-1.3.6/test/regression/README.md000066400000000000000000000001361417247743000201150ustar00rootroot00000000000000This directory stores output of tests to have them in git and verify there are no regressions freebayes-1.3.6/test/runner.sh000066400000000000000000000004371417247743000163270ustar00rootroot00000000000000#! /bin/sh # # Run tests directly from the test directory without perl-tap/prove # add meson builddir PATH=../builddir:$PATH bash ../test/t/00_region_and_target_handling.t echo $? exit bash ../test/t/01_call_variants.t bash ../test/t/02_multi_bam.t bash ../test/t/03_reference_bases.t freebayes-1.3.6/test/splice/000077500000000000000000000000001417247743000157355ustar00rootroot00000000000000freebayes-1.3.6/test/splice/1:883884-887618.bam000066400000000000000000000540751417247743000201550ustar00rootroot00000000000000BCka_MN "7^}HZh6KrMR]zwDpYp"U@o:9>~o2[]<@e^\Y*,6oqQbS(.,1A0Lj0FO}!3-b1RN)|a1JF`"[s,!agR?!0:9}Lɜ2&`ӛ )LuoN \kS H0XSY[P[i,D sՅr{z]DpnՅS5JCFD<-9P}ȎX3Rgѽn6r+YW%XRam $wx&af I=OA;a+u;aC7 ;pܑN㼥ף4k,w܆͸aagjY kQzYgj, G^;sI^pk;TNo6 C<ϗSNsyJB8oҺ`C&/ڗB xy„y#18uVKVnגF2PytHo;gNk)@k#%x1z.`}AKocZbyJ[ \Qi\qpmh~A1WMJwb ULUjklBCA}{$]t=ٹ߫Se`ޏiAgd6v1(cYapYpF PG(RJ*!3 P" |Gw{Wӫ~>>:٣;}yuޢuayկofgr9Ytt~cJO'Nc'N{)4},yfMo>: QDQ$#x#H՟0)<A$8?IAK'\'Ư_ 5'>׼|ܼ5 we0<߻rd:uJon:O'Ó'O'7sno`֓e[|sۀ T0C(B% i C!? X@R m۰\LfUiƦ!eoLQ2J NAci$D2PP|(B8'@p>0s}?a]x||j <JyOhS%`ABL)臂6Q~ $=i b2_FCghXHFFq x0؄<+}&A !`j:]0J@\ßb| lmhFRSM~\082],[*fZnhUc <.NL#)#@ $P!hZ$EHˆ{<ˆÕLr~/Y^s2OÛeaǗ. RWkP H P!Fp^iL 2 'RLPݦ Kj(,WsGeMBE;YhG'J l$W>$R۠_e74E7J0ơ"H Fb62D *870A=bOA#`( 0 J#xG<I3`2 d0|O9z\:4 « Au07Y`GRpQ  ?VQr%;p#?l\HXϖW#c0ΗM sJqx˄˹PAoqǶ80< 0cU[0&,IhC:JMFfJU|U6 j 6ޝpa{;a `xИ HC"q6NA\/X4Y@y1dzc- 5uk2Č,8Kg@fbT*ѱUdI-~A-aVC)Tƨmaȥ_a- /tjQP™ Ym+ RzTP H-(>BĂCT2ItW! :VCf<][wb%@;]bwwx;ΞOëiH#N!gݫDDaR2'KVYJ9Vr~h9=DHA/Oɬ {0nM ۇD)Gil}іLt7~)ݨ c "%e1: +7+%v)f)0-" =NL؈13 1J) LR.pTd(Q90C#"U@|]UXS`11Br>ʥ!(bպV0ŕ,PTu4EhP/q8t;4s+xa1vcG ?~/9IONGqʎ,I!\>0Q,݈B2Nx?\aɃd}2hUe(ʿ(6l.-,DC81`-+ vUDN$Pt E70XHc|αt`(XO6G!%(3~x5hއF^8;<¼VVgJboγ[M02L1ƚTz`x 0% 9ᗭMiё{.6H }^DCF !6$8HeZ =  *.TKcp-ah~TSN:!j D[IYy41 m$ eBz%Bla7PO6-~P]A,0Ī^*;`3k%p3RҰ}CÃVv 6r6,X#D 9`W (Teh~OXwN[磜>ڷ[0ͬIƮlH<0-{QI\PUj5|l9^'008cZM&Ao:j2$A3@dKH:*h?}m rݾSJ/ usQ,@R95 %R߉?|v:>L\bMÀW-$~f(JC%CCk A@(FQX L^@^ -v~1_Lǭaϡ9Aא!!a]3|%q"md=tq8 Y  eo\ȵ ̺ء8wQ=uqx*dZ W`ŢO\ [H*,m$ i1B=8HB[`TpxW'xyZM#͠9ı`"qI@K4&4D^x;8xjGkJlFLM6)W >b &Vj %(Cz0a&(Bƚ SG,mU'5yL587iGhB“cB(1[``4%Kb8t88&$5^ d<[/6<42v\2Öe|=QީV2|4ɬ3"^5pI(]ĦÑl4QУG,\UJ bMjoqa8?%GQH҈`$Cp塕$ϱ߬!r2kJe27XNp "ѽFpDrHRqTWQb  A 1!$ sq4UFC!\4Ur> z6hc9UReaY"Nja<1*f)u%sycDT}W,0tAAZ8?*D?.oAo8m:ʃ.(lw4ǀJCI`Cz{C/2軻` BC#A*q} yC^J{!pdW]W] 4Z?0-w]@L Vjmip(7ShlE:${ JCL`,k(:*jDJ ߲ex ;%;߭< MaPmP°™R*d 3O1nBI"T .#P  `nr'sՈ۪r/dփ5=̖$\Xz-3j9_`58d**ye`(}M*0l]0|Fl<%  ! )UaH$3<3|` (Pm/ KU㐓]~Df>mC` &b9jtDZGY^c5")ۮx$P^az_1>|H^s[gF 9q0S Tt'ڛu9Vrp`6բ- .#b{};˜zyP 0X6"ͥ`8O|ciL8/JCVac%ScRb"E;hYHx(ѳ4[#-Fՙg^p&ψhGAn<47i4~Ap |xKKvMln6"T6rj vc ?갔qdi.Q\0Q)D/ _i7sg|x^x(HȺWr ̠*(S+?ÜΦg 80o!w"=>a+ݝuA2 x=ǑI,ЁIMRI, dd wռ<|❥f9k+b(V(ȨyA/d?)ڋ*0>#4!բ=P/T>`xC97^-Ϋ4 F=9:{=p0FZWDm2$䅌<>LF.M򉜀^ぇ6ggwuXi}ϧαF>7HnWa^7;iU:v8H8CC2w} :]z\#,įFu`KA J`<'#3Qd-fqga`^@كysNoz_HN rf 'C[++eCt@?@ ^ab9^NV[qRD=5 6'ZpHT_u u0%]לO7Ń!)f%Hli@qzk">vu0= ~^/EA7Uh:rpC  !ZԀOEp uk˶08 `S[%iiRKނB9:6'jg0yQWB:AO(Pf%ݾ5A-ru8`Kif>PJɮ!GA8wwE?c(T1@`+ 8ipm vv\6V*ya~h^& Ao7,Jbq"<`$櫥<}j&;#9ص8Yo(IN\~f{8a9dR&MND, C{@ݧCd>6̂1U{3 lD{('2 !bh8be@[%q$A@DwVeK }}jej+sX;iƤ+G +K/73]<w@Q"%EI#9Wt*0fLJ62̔>0ln=uB9ɸvZYtrRͭy>&r`S[:5/*sf3fd! `h=~컂1;^#{( >cf&,߈(Qף(ZKC Y'sY[((0<7\wd*aS)WUZx >U*,XzFMQq<>\Jef57u߬npڽ?+p)P<ꓥ#sA o^;\!b@\&"{Ûk]À!Nn( ]J q^.j} dʚN ЊdyF$̆&*E/[ղeO!S_ob:z ERuxv9[LEP;s!/qʈ;J9ԡ)nVWp,aXd ԑlK|0c*/Q$a$ސ7%12Izν=s# sFUg'˲jS¶h3e_f#NMsc==PG&}Yԇ@UyFҭbz<>kdRGߝR;,79}9e^jI Q?ߚZi:)I-c`'5 MMêzf\)'Sc$?šp|/]83(S.[>s;=1uNBeꖇ7Rr.egXzQ M8pq\Ԃ{%TlhŅ$s1(?TZPWMfU#LesTz0p> /щЉGmB9 i}̇\Qh_Gli8UJKd0Р斷: U/ aE'Z(WtH{n%gb^^j04։s+Ć 7]p.Ţ;n;!}ww|N>pU̧! 1}/i]FЃkQ#GCA==z >#wdкe߭]}0x:Ht.^4U|1Ilu?1z) :b) qbo9|ܩ_eJb6ZpF0- [)Fs ``rz dÚh"9 3?jMi-aH#1>/DG!G-CPD#7HR5ȅъN57.|[OlcVkr'gN$+{Zc2-ō@=u^Va1PZ]]XP4E64vO(P0~e@poh_\( U*lH5sJG\Ox`h ^vU.v棥yzOTKVcë`=B'BT~iJ"NC̳bv+pוV7pJ>}>uq8&"Zi#㑾_R6G"o8l bnC10cLǔJU0w!+(4kw nzfAirYF8P3x EB(c4RBbm^^ۈ/@/ uI:*@H(Sc}Q"j <l&cL3z;.4b0)jnnծU }R 8ēwh߀TH6# 3  eq,N~8<ֻղA6>q亸 .g`X\-=~IWԈ*?Ƴt,/%nDf]xu%&EWx(/TMw9Y)DhHB2FZ-5#!'R0ܴ졝S\gRDwBb_rHugܝ.t8o+ 1HDdcoKCL3{^筟,ڊe2H=r]&({<*uM@[^|{߷Q sd`h-nWVA\H֔$ YVYH8r 镝joP(fl.Un4[ YIJY'ߩ6@WDpnֈC#vbYVy,j^a QxBmFWfe 5]lR]i~ CpW=j@ v]ƶM0p`5rLB`'>RɂjNQ亇ڀh.-"8 )Y^ qb䅐ZnK*DqP&aL).`(Oq2-qpqՋ6Kr/V1yxGXhyU&3vklq80M=-8ǥ1% *g #%-[Si5qx)$o,3lYq#C-(9ȾQ}oj\-pH9q8P *_ #rpnv!P?] tfGd9YG\Id}u?$w7b2F AC^X>*-Dl5eBr1#z.d}1Ȼ M/4Ds%i œ^<=.Ԍ@ .o+q6.^@oqr"7,͠8z!Å2֏|8(P9ٜ5 5@|%4/KN7U40S~{ϽԾa2C90kZgґ +.vEJm C5oXҰ X] 4!BMPvl}琝^8O=Д!P m2w"k0 yƧf+trJꯝh }m@N7iCMȍL$k`8(ģaRʠ$cI{*kEï o+Ur:`KVd&{r&(4w%sk2t9_\) b#^̨{td}ST(.(WeI*\)&>Cl[3uE3q Q8=>v<+ddHTːdEI֒;qzŶ80SKw烊j4( CPȻe d#8ඖ½r o ys%V=YL$#3ynF-\3Q>dwL0FW{Z|*tqߤO l".9]YTm$٪Y}俻RUp5Z _bL_> e@!nkZuYO3ECQ];k qQnzx%T->vrQl4iߙo6-8 ǖCl'2m3KZ"L\*v 1 pO#ńJ/ |9jp`oxM׫rD:c/|ۧl.JÛ}*9#9cLn 8 -pT5-zΦBz@ \WP:c\ML% )K+(i_m mmV]BZa6x.O<=u LYvFxp#yNI`ܕW1L co6oNy?k]vbOgM} 3cA*\@&yoMƑ/;4 3uvhɾg}ӻSYwcܸYkeBP048\hi6ԞWn_>]|c͏/^A'MtXHpi. pE rv(^xX!y xSz=V 4x z]Bp~/)OQaD[缷/[fs";{wajdCtnTi 1c8c.B\· cϷ9ٔ_}?Ͽ_ncDzX]M+0(NBC)}\Qk?oSzcmUq]֍zfq^#6S9aPM=⩺T%(YIgd( =,'$ KڗY;-yL"YW= #n׻Hq/)({Bctɶ$\ b%̓}zei^3[x' 9xe'KT~dDdT)7Y*-{_>?.bygr<_9%޷Ä`jBNH_N8``OefQ#uD;f8.nHNjE0z<߿nZ^jfA̽͡moL+v }zn{t2y ȗt:McZBΫ|)sU+xqx]3#xo9`|2Հ ^ @K bY'2@`^1OT@ss\ .=i l!%Z:tg MfW\JklջNĆv `:nd p ^%DzqUM(*BL=}:6Ӵ@ـfY@HZsa8y?$^*B!;[b , Sy*5bٳXLL,^o@,2ʂ0XH a@!tV=T#]l9:.auUmW_z!L(2ݐ}7 ĉQc-]F5؜"A 73T8_! 4V)O6N0\4X?\k*} W`cCߗH6=9"4:Xxw]'iK`S&mqeRs_q֗<YMTV#lPOzfܡUP>8|Ჽxd%w \ZIJqAxc}x=%G) nƾml6c"PnPMz< |6.E(U=sb8*3iC+YgqlXL[5 4B9!p9Gr RI -yV_A`z< "r;}olRaX2"dpx>KvrZ/P}2#r,[eˎR ^iӑj / ][nnM6_SC(\ryJ448s/!*P[ÒP*i{p"Y KvyXnNj>:`B9o_X@|%We-;_[# z=Ϧra R1Nt{Y227_Fl]ud;~ϣ"%KwtD)2 Vopy[Fta8 0 Q8sp > ,paQ -T&)KKonv۱jW6ݰ}x78==4k0 D0w`#Ns)ܪI!8|S8`!  yafnBv=%h+CO=*IQl]m߲ÐĜB0ipz8P`DDHޕ.Ѵsv%+yK["U~ }(ms6 P#>ye˞\ ߋI.$>mkx$m0 -qp^"55 J"VU>" h. q\` (s`ۆVoCj6lY j, iaAxGKd NErEaj>{xn0=r]]c=ěs].P]aO 8`DX0d.oXn3j[Wsc o-i=D᩻5`858L-&΀{,=q(!qe)d1 =,Q H"!p+cڙ7(<{7 7^x:tn@2Pͻ!|P[21ţeu[Z€P\&&\,Dtid 򤴞y:~RrKN]^l/kL2&-Ɗa$,=q!Qi oz{V|+oٽq8>ed`hj OO^8+Ud Ade,;!Ui˗I,l+w2W"/!2+XW@[Qei:ǬˤTU~ d1GQiId=)wWȽy|[Td; n~x&g&3bj|}B2oмPm:4m;2iWmnهf3,Օ2(4}T!Jc,6I;pwq- `wCzÐv.|jz;j O$6`Ƅ\q S-CfH'53p;,Vj./Eߦfj:^k~ `C+Δ,Ia~ZtFwq"Y;7n6[&$/auCpP)Čɤr ,QZs^=Bi1Q ICv<7أɃlOqS\>fuf(q! uPaiRj>. xӬ1LB.Ix19DGQ,0﬩W=jn)ծbplL"^)]Rvɾ#j`xw8શTtg4 O#qhMmT<Ehc=? Q@LG"Fs=\Ywn9ܧT7à֛&g9w8Rh!TShIKGDJ|w8g5i%BzKR5R9Bt9OʶS&- =[AN/BC[$Ukgg<'ӻ]U߭nTuU#؇+| >~# N/y .(DŽQ(j5nէ$ HQ| ߭Sl.`MDa%G 8BDAr!d4vq,dLP81s 7s a d3Y=^084_>lpn,!3Z jpt:m-j6#== &} ~ᅁ 8))yg'H°Y°'1<1|ʎ1IGh]B;Rw3);I2, ?吙 9x#C& CkSX4Xv9>xdJwOB_WpB^xcfYx2c* <צ4K`0dHa3kPd4 tA3g%{E3uM#d2gyr- E(3XKona2p[,z"y7s?^:t<ϗhRAZCH\pnnG υer) *V*@%?C2φDJĀ ,@X 1g6?"ˮI);.)HVÅ ayr!HodMgckr(ksKF1@@FD3GJ sX+rs(BH^B|:'x[ax>SX,4~h)/'"] LҶs')X0 䶘,79V2`{-psûQy? 0"W{} d>V*1Amnw,b=e^ڵ(iufv:Sv6ng%sxPakN(2Q 6(4eʸ=Yhdfj2"lٴ|/chc|tKL!Fƾ hqH;}/%]Pt@v:P=;<.+9[@;pX{V!&Una%;+%_HY=Vija42>Pk n=a6EGgee#*_aLqP񥊪|tmH8'8<Ya#s كJ+i"i1CgYY*8lܼ)-z2;5+qO1~}7MMiiP*/8qA&ݢO7Pc}8&Cp/dxX LfKdBSsMO>yگtGB .]q!+IėOIS(JxGaJY>V8Hk&)wvYpk' V #d8cm&;VHq0T G&8Ƥ0{|TȥaR|ภ0P+b+NPuo87kb>.K r iS6Wdq XCQ%,>mK5jPC>|GXtWr* _ Yl<' k '_o1;Nekp=kwWʇ11 slڽq_Svk$tX5+W*πÿ鳋8͓x[ax>-8y2mχeA "WUjIk+Z_`V3&aLCP=K\C"cmYNlZ-"6!lۖi7޹YO؇97kPC4NIk8P(_HK e 'f:C]mǩiwi÷iA:؂;w@pdɅ:l0A6)ZH}C419 eHޗ/.V1.^ c}"yi`laJ yZRsk/6Jx>wCmk`-N,>NC0b>}eTҶ$Kf"A&ץ-0fQ. &l}0˱xڀŮ"ĈRCup|Ĝ+| DWy^4E.ke:c>J+m9ȦcȧQ-(/Z}@.XT t) ٶ!iumG`I/>_=rys\+@R+ъ|p usd89THɁYЮхxᤳ=a ښV9IE܃ xh@ꮉR2Nyna> 27q Ёs /;@pG0zv)fN¦Ah Zڰhq}AٜG6ig)œ(+¥W' rHy~8Ze"Z|5]Te&Re3'YgJKtTkRLm@eʫU(`=}3Y. &w!J'A;Y 8"I丸L˜:[֚`a_1Śv!F9TH<+(H!3JyQV"*5U,Ut/1>X|4'u9Xb:<٤j" R+"0k4W4}P;dJ#R*Z`¥*)%vqk:JzE6!ZLϋC1܏Ƙ)Baf{ LWtOM'ؖ\B S 4'[ s@ XSȜnIk$zۢŴ($ $N5p+ ፊfg+͸x2 Cax1ԕȥ--O_.{ ҮfݸLK[+զyoTLL'P'& 1Rn6I)&=EXi 6lCy-dNHfu1d_Wxr7;۫SvC0sPX&Xi0p%k;ٕNwN` 6m`gaS A1J_A`a|8 5ᖆa6OGdmmȜ)W֠83SU0l0,8ySAe(y"d(&P+U+ߨ08d'k[ Cm A$.DK[oi (7RvN+5t}Us€>^JuVO+ȇ'7,NFS 7?Cݼᰅ:ZP-"PP`| ZJ&n;2H\82= ODH|㯶23yA0rAZF)_C2w`fC|f6]#6Tx% ˭/A|gi~Lïݩi67W/iD@#A!aaY6?8$h 5k$c rNlQsDpyY8SΈp#r1_ֱHmZkݗyfI=PZ9pF[^^. 91V:% 思Wu Q4M'/0(x%`Edr\Ceһu s6pg-d8DƳ {6|o;:6 B63><8]f*T`YRk9|7tu&h%־x0jch7r1 CCTGCAGGTTGACATTGGACAGCTTCAGGATCACGGAGAAGTTGATGGGCTTGGAGCTCA TGCGCCCTGGCTTCCTGTTGAAGTCGACCTGCTGGAACATCTGCCCCAAGGGCCGTGTCA GGCTCTCTCGGCCCCATGCCTGGTCACCCTGGCTTCACCCTGGCTGCACCCTGGTCCCCC TGGTCCCTTTGGCCCTGCACCTGGCTGCACCCTGGTCACCCTGGTCCTCAGGCTTCAGCA CGAGGAGACCCAACCCGAAACAAGAGATAAGCAGCTAGGCACGGTCCCAGCCCCATGGCC CCACACAGCCTGGCGTGTCCCCGAGTGGGGCTCTGATCAGCAGGGAAGGATCAGGAACAC GGGCCCTCTCCCAAAATCCTGGGAAGCACTAAGGACCCACGTCTGGAGACCTAGAGGTCC CTGCCACACAGAGTACCAGGACAGCCCCCATTCCTGACAACATGGCACTGAGGCCCATCC TGGCCCTCAGCACAGCAATGCCACATGGGGCTCCGTCCCGAGCAACCAGAAGACGCAGCA GCAACAGCAAAGAGTGCCAGACACAGGACGGGACAGATGGAGGTCACGGGAGGCCTGGGG GGCCCCTCCCACACCCTCCACAGAAGCCACAGGCCATGCACCTCCGTAGGACATGCCAGG AGGAGCAGAGAAAGAGTCAGCCTGGCCTCTCAGTCTTGTGACCCCTCCCCAACCACTAGG AGCCCTCAGGCTGTGAACCAGAGAGATCCAGGGTACATGCTGGGGCACCAGAGGACAGAA GCAGATTATGGGGGGCCCAAGGGTGGAGGCCCCAGCAAGACACCCCACTCAGCAGGGGTG GCTGCCAGACAGCTGAGCTCAGGTCCAGATGGGAAAACGCCCTGGTACTGATGAACCTCT GGGAGGACACTGCCCTTCTCTAGCCTGGGCCAAAAGTATGGGCAGGCGACTGGCTTCCTG TCCAGGCACCGGGGAAGGGCAGGCACGGCCTACAGCTGAGGGCTTTGTTTTAGCTTTTAG GGTTTGCTTTTTCCGGAGAGGAGAGGCCTGCATCCCTGCGTGAGAGGGGCCTACAGGGTG CGGCTGCAGTGAACCAGGGCAGTGCACAAGTGAAGAAACAGACACTGCAAGAGAGTAAGA AAGCACGTAGCCAAGGAGATTGGACAAGGGAAACAGACACAAAGCATGCCTGGAGCTGGG CAGCAGAGCTGGAGGCCCACAGACACAGGGGCCAGGCCAAGGGCTGGGCAATCAGAGACC ACTGCTGGCTGCCATGGGAGTGAACATGGCTTCCTAAAGATGTTCAGCATCCCTGCCTCA GTGGAAGGGGAATCAGAACGTGCCTGGGGCTTCCATACCTTCTGGACCCAGCAACCTGGG GACCCAGCCCCAAGGACAGCTGTGACACGACTCTGGGCCTTCATGAGGCTGAGAACTCAT TAGATAAACAGGGTGGAGATCGTGAATTCCTAAATTTACAGCGGGGTGGGGCCTAACCCA CCCACTGAAAGTTGAAACTTCGGACTCCAATCTTTCCCTACCTGAGTGGCATGTGCACGT GCAAAGATGCATACACACAGGTACACACAGGCGCACACATGCACAGGCACACACGTAGAC GCACGTACATGCACACAGGTGCACACACGCACAGGCACACACAAGCAGACGTGCATGCAT GCACCCAAGTGTACAGGTACACGCACAGGTACACACGCACAGTACACACATGCAGATGCA AATGCATGCACACAAGTGCACACAGACACGTGTGTATGCACATAGGTGCACACAGGTACA TAGATGCACGCAGACACACATGCATGCACACAGATGCACACATGCAAAGGTTCATGCATG CACAGGTAGACACATGCAGACGCAAATGCATGCACACAGGTGCACACACGCACAGGTACA CACATGCAGACAGGTGCACACAGGTACACACGCATGTGCATGCATACAGGTACACACAGG TACACACTGGTATACAAAGACACATGCACAGGTGCACACACGCAAAGGTACACGCAAAGG TACACACATGCATACACACAGGTGTACACACGCACAGATGCACACACCTGCAGGCACACA GGCATTCATGGATACACGTGCATACACACATACAGATGCACACATGAACTGATATGCACA CACACACAGATTTACAGACCCATGCACCCAGATGGTGCACACACACGCATGCATGCACAG ACAAACGCACCCACCCAGATGTACACACATCCCCCATACAAATGCATACACATGCACACA ACTGTCAGGGCAGGGCACTGTTCAGTGTACAGTTCAGCAATCAGACTTGGGTTTTGGCCC ATCTCGCCTCCTGCCTACTCCAGTCTTGGGCAAGCACCTACAGGGTCAGGTCCCGGCATC CTCAAGCACAGCCCTAGCAGCAGCCGCCTTCATCCCCAGTGGTCCCACGTTCCCCAACAC TGCCCCCAGCACACGGAGGAGCACTGTCCTCGTGACACCCGTGACAAGGAGGCGGCCAGG GCTCCGGGAAGTCGCCGGACAACTCAGCACAGACGCCCGGAGCAGCAGATGCTCCCTACA GGAGCAGGCAGAGGTGCCACACGCCCACCACAGCCTCACTCACCTCCAGGATGAAAGGCA GCACCGGGATGAAGGCCCCCGAGCTCCCCGAGAGCAGCGTCAGGGCACGGATGCAGTGCA TTCGCAGCGGGTAGAAGCGGGCAGTGGGGATGAGCCTGGGGGTGGGAAGGCCGAGTGAGC AGAGGCCCCGGCTCTGGCAGCCCCTGCCCCTCCCCCTGCTGTCTTGGACCTCCTCCCCCA CTCACCGACATCAGACCCCTAAAGCAGGACAAGGCACGTCTGAACCCCAGGGACCTGCAC CCCTTGCCCAGCTATGGGGCTGCAGGTACCTTACCCAGCTTTCAGCTTTATTTCAACACG GTGGCAGGGGTCATCTGTTCCTGCCTGCTCTCCTCCCTGTTCCCGCCTTTCCTACTTCTT CCCTTGGACTTCCCACCTCCCTTCCCAGCCTTGAGTTTCTAAGGCTCAGCCAGACAGATG CCCCCTCCTGGCCAAAGAGGCCACAGTACTGCTCCCACCTTTTCCTGCTGCAGCCCCTAC CGTGCCTGGACCCTCCTAAGCGCTCACACCCAAAATGCAGTTCACTGCATCAGATGTGCT CCACCCAAGAACCCCACGTAATGAACCAAACTCACTGCAAACTGCACACAAGCCCCCAGA ACACACGCTGGGTGGCACCCGAGGCGGCTAAACCGCTGTTGGAGGAGCTCATGTCACAGG TGCCCACCAGCCCTAGCTCTCCAGAATCCAGAGCATCTCCCCGTAGCAGGTACAGGGACC CCAGCCCTTCCTCAGGGACGGCCAGGACACAGACTCAGGCCCCAAGGCCCTGAACGCCAG AGGCACCGCCCACACAGTCCCAGCAAATTTGCTTCTCCTGACCCTCCCGCACAACCCTGC CCACCCCACAACTCACTTGATACAGCCAATGATGACTTGGGCAAGGGGGTAGACCAAGGG CTGGAGGGCTTCGCTGGGGCCCGCAGTGCTCAGGACCCGGCACCACAGGAAGAGGCAGTG CACATACTGCCAGTTGTACACAGACTGGTATGTTTCCTGGTCAGAGAGAACCACGTCAGC TACTGGCCAGGCTGACAAGTCAGGCTGATGCACGTTCCTCCTGGGCCGGCACAGGAATCA TTTCCTCATCTTGCA freebayes-1.3.6/test/splice/1:883884-887618.fa.fai000066400000000000000000000000171417247743000205250ustar00rootroot000000000000001 3735 3 60 61 freebayes-1.3.6/test/t/000077500000000000000000000000001417247743000147215ustar00rootroot00000000000000freebayes-1.3.6/test/t/00_region_and_target_handling.t000066400000000000000000000071001417247743000227220ustar00rootroot00000000000000#!/usr/bin/env bash # vi: set ft=sh : test=$(dirname $0)/.. root=$(dirname $0)/../.. source $test/test-simple-bash/lib/test-simple.bash \ tests 12 PATH=$root/build:$root/../build:$root/bin:$PATH ref=$test/$(basename $0).ref alt=$test/$(basename $0).alt bam=$test/$(basename $0).bam bed=$test/$(basename $0).bed vcf=$test/$(basename $0).vcf trap 'rm -f $ref* $alt $bam* $bed $vcf' EXIT # 01234567890 start # ATCGGCTAAAA ref # GTTAGGTTAAC alt # 12345678901 end cat >$ref <ref ATCGGCTAAAA REF samtools faidx $ref cat >$alt <alt GTTAGGTTAAC ALT samtools view -S -b - >$bam <$bed <$vcf < #CHROM POS ID REF ALT QUAL FILTER INFO ref 1 . A G 1234 PASS NAME=first base ref 2 . T . 1234 PASS NAME=second base ref 3 . C T 1234 PASS NAME=third base ref 4 . G A 1234 PASS NAME=fourth base ref 5 . G . 1234 PASS NAME=fifth base ref 6 . C G 1234 PASS NAME=sixth base ref 7 . T . 1234 PASS NAME=seventh base ref 8 . A T 1234 PASS NAME=eighth base ref 9 . A . 1234 PASS NAME=ninth base ref 10 . A . 1234 PASS NAME=tenth base ref 11 . A C 1234 PASS NAME=eleventh base VCF PS4='\n+ ' function run_freebayes() { (freebayes "$@" \ --haplotype-length 0 --min-alternate-count 1 \ --min-alternate-fraction 0 --pooled-continuous \ --ploidy 1 \ -f $ref $bam \ | grep -vE "^#" | cut -f1-5) } if [[ -n $TEST_DEBUG ]]; then cat $ref >&2 cat $bed >&2 cat $vcf >&2 vcfannotate --bed $bed --key MATCH $vcf >&2 vcfintersect --bed $bed $vcf >&2 bedtools intersect -a $vcf -b $bed >&2 fi output=$(run_freebayes --region ref:4-5 --region ref:6-7) ok [ -z "$output" ] "ref:4-5 ref:6-7 are empty" || echo "$output" output=$(run_freebayes --region ref:4 --region ref:6) ok [ -z "$output" ] "ref:4 ref:6 are empty" || echo "$output" expected=$(cat <&1) [[ $output =~ "ref 1 . A G" ]] ok $? 'ref:0-1' || echo "Output: $output" >&2 output=$(run_freebayes --region ref:1-20 2>&1) [[ $output =~ "Target region coordinates (ref 1 20) outside of reference sequence bounds (ref 11)" ]] ok $? 'region outside of bounds error' || echo "Output: $output" >&2 freebayes-1.3.6/test/t/01_call_variants.t000066400000000000000000000114541417247743000202350ustar00rootroot00000000000000#!/usr/bin/env bash cd ../test # for meson BASH_TAP_ROOT=bash-tap . bash-tap/bash-tap-bootstrap root=$(dirname $0)/../.. PATH=../build:$root/build:$root/../build:$root/bin:$PATH PATH=../scripts:$PATH # for freebayes-parallel plan tests 16 is $(echo "$(comm -12 <(cat tiny/NA12878.chr22.tiny.giab.vcf | grep -v "^#" | cut -f 2 | sort) <(freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f 2 | sort) | wc -l) >= 13" | bc) 1 "variant calling recovers most of the GiAB variants in a test region" by_region=$((for region in \ q:180-191 \ q:1002-1013 \ q:1811-1825 \ q:1911-1922 \ q:2344-2355 \ q:2630-2635 \ q:3250-3268 \ q:4443-4454 \ q:5003-5014 \ q:5074-5085 \ q:5089-5100 \ q:5632-5646 \ q:6412-6423 \ q:8840-8851 \ q:9245-9265 \ q:9785-9796 \ q:10526-10537 \ q:11255-11266 \ q:11530-11541 \ q:12119-12130; do freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam -r $region | grep -v "^#" done) |wc -l) at_once=$(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) is $by_region $at_once "freebayes produces the same number of calls if targeted per site or called without targets" cat >targets.bed <&1 | grep ^alignment: | wc -l) "freebayes processes all alignments in BAM input" is $(freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.bam -d 2>&1 | grep ^alignment: | wc -l) $(freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.cram -d 2>&1 | grep ^alignment: | wc -l) "freebayes processes all alignments in CRAM input" # Add a regression test $(freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.bam 2>&1 |egrep -vi "source|filedate|RPPR=7.64277|11126|10515" > regression/NA12878.chr22.tiny.vcf) # ensure targeting works even when there are no reads is $(freebayes -f tiny/q.fa -l@ tiny/q.vcf.gz tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) 16 "freebayes correctly handles variant input" # ensure that positions at which no variants exist get put in the out vcf is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 3 "freebayes puts required variants in output" is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz tiny/NA12878.chr22.tiny.bam -l | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 3 "freebayes limits calls to input variants correctly" is $(freebayes -f tiny/q.fa -@ tiny/q.vcf.gz -l tiny/1read.bam | grep -v "^#" | wc -l) 16 "freebayes reports all input variants even when there is no input data" # check variant input with region specified is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz -r q:1-10000 tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 2 "freebayes handles region and variant input" is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz -r q:1-10000 tiny/NA12878.chr22.tiny.bam -l | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t1000$)" | wc -l) 2 "freebayes limits to variant input correctly when region is given" # check variant input when reading from stdin is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz --stdin < tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 3 "freebayes handles variant input and reading from stdin" is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz -l --stdin < tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 3 "freebayes limits to variant input when reading from stdin" is $(freebayes -f tiny/q.fa -@ tiny/q_spiked.vcf.gz -r q:1-10000 -l --stdin < tiny/NA12878.chr22.tiny.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t1000$)" | wc -l) 2 "freebayes handles region, stdin, and variant input" gzip -c tiny/q.fa >tiny/q.fa.gz cp tiny/q.fa.fai tiny/q.fa.gz.fai freebayes -f tiny/q.fa.gz -@ tiny/q_spiked.vcf.gz -r q:1-10000 -l - < tiny/NA12878.chr22.tiny.bam >/dev/null 2>/dev/null ok [ ! -z $? ] "freebayes bails out when given a gzipped or corrupted reference" rm tiny/q.fa.gz* freebayes-1.3.6/test/t/01b_call_variants.t000066400000000000000000000056031417247743000203760ustar00rootroot00000000000000#!/usr/bin/env bash cd ../test # for meson BASH_TAP_ROOT=bash-tap . bash-tap/bash-tap-bootstrap root=$(dirname $0)/../.. PATH=../build:$root/build:$root/../build:$root/bin:$PATH PATH=../scripts:$PATH # for freebayes-parallel plan tests 10 is $(freebayes -f tiny/q.fa tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) $(freebayes-parallel tiny/q.regions 2 -f tiny/q.fa tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) "running in parallel makes no difference" is $(freebayes -f 'tiny/q with spaces.fa' tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) $(freebayes-parallel 'tiny/q with spaces.regions' 2 -f 'tiny/q\ with\ spaces.fa' tiny/NA12878.chr22.tiny.bam | grep -v "^#" | wc -l) "freebayes handles spaces in file names" # check input can hand colons in name like the HLA contigs in GRCh38 is $(freebayes -f tiny/hla.fa -@ tiny/hla.vcf.gz -r HLA-DRB1*16:02:01:1-10000 tiny/NA12878.chr22.tiny.hla.bam | grep -v "^#" | cut -f1,2 | grep -P "(\t500$|\t11000$|\t1000$)" | wc -l) 2 "freebayes handles region and variant input even with : in contig names" is $(freebayes -f splice/1:883884-887618.fa splice/1:883884-887618.bam -F 0.05 -C 1 | grep ^1 | wc -l) 3 "freebayes can handle spliced reads" is $(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam --gvcf | grep '<\*>' | wc -l) 20 "freebayes produces the expected number of lines of gVCF output" is $(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam --gvcf --gvcf-chunk 50 | grep '<\*>' | wc -l) 250 "freebayes produces the expected number of lines of gVCF output" is $(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam --gvcf --gvcf-dont-use-chunk true | grep '<\*>' | wc -l) 12250 "freebayes produces the expected number of lines of gVCF output" samtools view -h tiny/NA12878.chr22.tiny.bam | sed s/NA12878D_HiSeqX_R1.fastq.gz/222.NA12878D_HiSeqX_R1.fastq.gz/ | sed s/SM:1/SM:2/ >tiny/x.sam is $(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam tiny/x.sam -A <(echo 1 8; echo 2 13) | grep 'AN=21' | wc -l) 19 "the CNV map may be used to specify per-sample copy numbers" rm -f tiny/x.sam is $(freebayes -f tiny/q.fa --skip-coverage 30 tiny/NA12878.chr22.tiny.bam | grep -v '^#' | wc -l) 22 "freebayes makes the expected number of calls when capping coverage" # is $(freebayes -f tiny/q.fa -g 30 tiny/NA12878.chr22.tiny.bam | vcf2tsv | cut -f 8 | tail -n+2 | awk '$1 <= 30 { print }' | wc -l) 22 "all coverage capped calls are below the coverage threshold" > cnv-map.bed for i in {1..10}; do echo -e "q\t$((i * 2000))\t$((i * 2000 + 2000))\t1\t$((2 + i))" >> cnv-map.bed done is $(freebayes -f tiny/q.fa -F 0.2 tiny/NA12878.chr22.tiny.bam -A cnv-map.bed | grep -v "^#" | cut -f2,10 | cut -f1 -d":" | awk 'BEGIN{errors = 0} {cn = int($1 / 2000) + 2; obs = gsub(/\/|\|/, "", $2) + 1; if (cn != obs) errors += 1 } END {OFS=":"; print errors,NR}') "0:19" \ "freebayes correctly uses CNV map with multiple entries" rm cnv-map.bed freebayes-1.3.6/test/t/02_multi_bam.t000066400000000000000000000055771417247743000173760ustar00rootroot00000000000000#!/usr/bin/env bash cd ../test root=$(dirname $0)/../.. BASH_TAP_ROOT=bash-tap source ./bash-tap/bash-tap-bootstrap PATH=../build:$root/build:$root/../build:$root/bin:$PATH plan tests 7 ref=$(basename $0).ref trap 'rm -f ${ref}* $(basename $0)*.bam*' EXIT cat >${ref} <ref AATCGGCTA REF samtools faidx ${ref} function run_freebayes() { freebayes "$@" \ --haplotype-length 0 --min-alternate-count 1 \ --min-alternate-fraction 0 --pooled-continuous \ --ploidy 1 \ -f $ref $bam \ 2>&1 \ | grep -vE "^#" | cut -f1-5 } function make_bam() { local id=$1 && shift local sm=$1 && shift local pl=$1 && shift local suffix=${1:-} && shift local first_snp=${1:-G} && shift local bam="$(basename $0).${id}.${sm}.${pl}${suffix}.bam" samtools view -S -b - >${bam} <${ref} <ref ${bases} REF samtools faidx ${ref} } samtools view -S -b - >${bam} <&1 \ | grep -vE "^#" | cut -f1-5 } make_ref "AATCGGCTAZ" expected='ERROR\(freebayes\): Found non-DNA character Z at position 9' like "$(run_freebayes)" "${expected}" "freebayes rejects invalid reference" expected=$(cat <Ҧ$?v\>2=H);T.f6sk$32OyxV (._kؠzEJWiVwg@QώE~ ZGHNܧ[BO^V8cSxgf{ 5JOԕQ'#RFYkkd꺷P PM@OA`xB_ƿ$4ûjb?yJmdnĵop9BCEj0eXxPtCw2sBcA! %KHC24iN7!@$:suM@<\\]ӀWk25M{:irɒq<l4Lȫ}iQ)T׵fJ1/kX9H~\ TF+͌"4- 1:]6tvx7)>5^ۊ_K "B bTLd(z4dr<~_nYBCfreebayes-1.3.6/test/tiny/1read.bam.bai000066400000000000000000000001401417247743000176430ustar00rootroot00000000000000BAIIK|JK|Kfreebayes-1.3.6/test/tiny/NA12878.chr22.tiny.bam000066400000000000000000010607551417247743000207510ustar00rootroot00000000000000BCJ}OO0p|MZ a=IȌ2Bi4Kmѝ<4t1&_ˊ xΩ]P>Ҧ$?v\>2=H);T.f6sk$32OyxV (._kؠzEJWiVwg@QώE~ ZGHNܧ[BO^V8cSxgf{ 5JOԕQ'#RFYkkd꺷P PM@OA`xB_ƿ$4ûjb?yJmdnĵop9BC<} kY^^Hm q9ENr RKjT+52~f,/1% c)C(S&X6 KpBQP @2*YչWj ܙyF߿^5=VKw՟}X.{[:|}{k~㓝7Wզ>ϧYޝ볳f1Ͳz1kIe3bt" ?wg\ROdd! d ^ h' zvk7@UeRL+e힜eG=d:~|Dn˵a[_yhrrgu#CIթv0ӝH"},jS%Ar;1rQnjr;al?an퇌;rCloWUkCh콡 oŜd7c4|tk! {4:G^v~LEqmdE\e՚%$-S,R픱~sLMA{qYrmJ)  ~!@AK$$;ESR-FD#W!*ԢJGw(Ao39 ?SOI6o&UTm(uv@XGxѩZO(f7wnÈ}ѡRnOI:o-͖66z<;:zsOetLX1qJc.hi:tr)3Z Ⱦ=bd $ۮyksyy8`%(| vw]{$I͡OtL¡LT$R'JHȬ`O sK+_ofTD2[G4!NAHxC|`VA%ilaS6zY|̑i^.ݑolZ4Lӯ()TߔR0)i?o`WJ-x93*X)h%l02lku/{l?jJ{DfzլLQ1 P4cT%K#`<8)$HR )~ ad#%2ņ܍du HFDtl;ݬeUgs.ꏖ!VOaKXAՁGJt|n嗡_w6 r.iմ"QwD`*Fsѧ *== T6WFB//,^B[@Dٷ š!Q$xCZ4J^E 4JZg iz|5P|+Q{Wjt4e>3"\_\`@Lݱ/!Ò?3,wؓRRh+IL0tOĨ 3w1jV+PkYGL{z (tA6`dg5y?wENc:ՀZY](uZ 2枞rIǔYǠ3kTy̠鵡 > 8h$!9r[B8 ;40--V֚6rO:'"%+nH,<`WݫE'71u1oSiբ}s%Xt^C}yK$j]ɜIfv e5ql\ 9?Ing6Uѩb<5r <ɤw\[~cBUzP;[.Q6[,T6{( )F:EIapr R 2 LIIS]Qg3$kL2)$ G/={Y;U2oexع?jTiTEWu@hZCdm.Bڅvq52\Oܫ3nşA0/7'.qZ ) ;9Wx*[3bʹ@- Ys%-08\}/~Q5Tc+xzW)uT,y<-\oe  Vޕ-˄D9ȳAM4A?IV U 98pCp%\Eta ^["aRuJT0U9f]JUobI o˧Tw2cBGd{?Z{nRv mP\`-SS +$Y}-y`?K$AZKOSSnxQx"YmJsy?-Q# aK^l^UasX'E0&PM18VGf}o9]?yte#FK jaʛDj4;‹J°x-ECKYJKHm(=2N)_RһLTHxֶUB^{mUnZ^wrZ2Ք2xB9o>no%RA4#RF%f텹 ҪnAD55+E-l̈a4eN?l]w,BBaHq"wF6[o{E FrIVr #zu'i?4AMmGBKULL j:ͷJ@kjg KP7@}4Abu$L]a# eRN ^f:q"mwDwҒm>כz<=:9.K +~$7@u4T/+zMF^\-b&l=43}K_Wʗڄ涎yk*X4r%yЅ._]xA=> RgF- 5֯7 /,GJ%syՒ WEqP!2>\%2j_EL]荚G`T-4b+N;r93e2V}vΔ:fH$j"IP5$CBTKPϺ7˽1I(;*/bP?>`deA؅4jX/HohE6LG1Ձ7m"}*+ߠh>"BHi\J)|Uf+U:vJ|AM5GC&%noI.+ q @qb>pZ/IQM c֦FFV%UC -Rۂrb'VTpʓK! 敤BZwl@[fZ~tDc#?SzINo&YkJCr80dIL4G,#^IHB\1?6_ԛ%qo*MJY- ~ŰT2h!τK3b դ6;Ljam7tvvoM;jR%aY`Ab>Ѳ)&bFEr` jbT&N3cӤODDnWDZ@qh}6t>A7~~yZ[RC$QOI]ϳ8bgOAGRxGP1e]zC4!D !R-POmφټp4{*#HXsLTG_X0h~J)ݎ\.[)1ѼR +?pr2*AE< iAe@LIIH\{J:NuO)_<<@E &Bp] n-SmAx;@R(}Z|UG ]Q%_&/aP 1% C2tpO:{A͈6)/, 1/¹7fzUVHwbe #U%|kϝ˸ ]fw"RFJt+k969k6У']^S3k#ni!2+Wh^ӿ: [q <h/c>xWBa'm#pƕdT0=^vI0T径gtAh?r0U 5]sИ #^i<wg°!VȪΑÈ:+大6TQFg7.qh=-0ʼ;kAgspNWGvbWK-1풑[=<z4KcݲVgVnZq#k k5 ȡb8 ܪa;S)J̡OeӲ >A{OG*Q~[uZ  '\Q~ky%0@]!#- ˆ)֐UQI_JEQ60g]Q)T73T2PiY%U?e $\I} gFtM0 QCouHڧ§xSa) aDP6U'YRzD:X9ۂTcc˳Х}JTDZ֧yu4EDBZ0g`rtT`S̄%J\SקϿjߘ*XKcy++!67<;3C71k(ΌJ"i>t+xX Yh)2@ 0S+j`"Ϲ#$PjԆ>)G?X)Tr֢EYي!\^xCDߎEuu{J=1K1Vc +`@U>wVT =H'-"kdV.lI}.zohl9~r/ZR*(7inޏ4?5Se{`܇W4ԅ-m> +h68IS#hc;ɹ=wφz[{Q RnC{ pQRoL0MRbHq eQvN>:VJ|Eqh?M|A"}NW(ؒBZXyO0Qw^0 FLPE%m @s֞p+ש|~ag.s~ofF\/&mkl5yPI*^{PW[ 2'gYurv/XP,)6SMtc4ĠR4y0䭴8kΦ|VZamN uet */$"uE_j͒8'[G-YmGlUjBnQm깨PEzUQQZ|QD{zc?\߅nBQ^pwGL(w*ӵVi_i^V;ʵK̻tb,r:k:aYN (s5eWUorNgrN /-𵴴kq 0D4ߤʛspr1'2!/M;"HLI 9LM XJNG]NxMA(P_5KU7uZ5NJ`U7xW#3Īl8F.>$6,+:+P33K`.̇WҝB"ljvqU$V(bRLnS(yxv) U.0Ӝ &*$~^6rlɝo6[5j4{HF Î?N9#ٖP+E':Q η'oFNkV6kM8i@,֔kR u6x ,\;$`4Μ!(Jay$<0&K $hTM=zOlt>ig<򗠻}@A T& g қ -v(U0Dr+/Q ;J0 PL#a( āH{9Khم7L6Bu{ Gdr:霜w:IK y!dRGLf\.dJ*roDr[CuEZn@ 2AemcXuBS1@r@4c@pk)SvJE; kK^A RJ|iw4W&׺՜3sL`uk%u =A~7@(DjSxA>mHTj [*.LrGd3G Xƕܴ.0S)t>I*$vW MB/^Gd#͏eoMUEn"o#,8R_gu)Υz^IH!KѱH??`_Rq7Gw=M%9xW& EG NO$I`M ړmUk#є0~KQ@LiWh^j;Tg^nRqb_@"ZTs͋pi$[%dt{y@踵;;OΚzc:n xynsp^fJ 5(j4 '8#Ri:l3RHK º3LNZD҄H+\]pw{uu};PK`Mrk);6O^Wd~BS ҭK KhVri-فO\P&hPʤ VpP]Aڥ"ŲXd\R8d@K)q07RVJQC&y|0w' 2ˮ%x,` P B ^Q8UI7459/[-Pm#bʱ<񜝝0Ő* myHV;dek,DJ"Dwp)'ea*,h:oUj;QwFTI2W[C=nq^s- ⣲jooa-O8۟`GV T] =t-˜Ҷ82e][}os.Gl L}R ](J{*{IC@TꞆ?4O&!LbQ`O$azWSIAud PFqS*XHD6*A3f9W:f{mҤZ[B"GH5^!pWwlpo0hM[Gk9^//-U7`w+1fjz69^pW`i6(KQzyys~ώ;^+THX=[y=[{Du|77"8ܟQũF/.}qv>fgѝր{ hC7wu֬Mܸ{:73 ŰLm=}v9[D6`Jc.R9hMS׎ nim=Jxq#ʱE~!܎gA ( cL\Qםkud.=4[Ae- `AE&`{( E#*YY2o4[G~I\J[8ƴdCmmOEyV>y"(TnB#JqV|8uzү{FVaL!  ; [&1ЭI]xRR| 54m寖w*\ Vu!ymє4Q<9|8ԇEhv&MQ*AO8Qo;[)~hvY!o֟?ҶN9pY0 `+E! <E(g֬7&IQ7?ixÕ_p[rV2B)yyJ+Or? _/ ִ'[GS\)91qJBk?}Hg!UZZfwl4#'IγʷbM×b^QDGS,P R|%MZA hvzȦϊsٰg1]C=7|≍:1¾d5HqH`(:+жWyE8gX(ULؙs_$MG%E9x *vl'^vmU)|js-Qt\>ٯaXb7)Tk*i;LǶYXMEKm#RL1 e6$^iY$">RQ[ mDYk'z-#KF=FtOD}Dz%JrV?%D S3 D#nUgX;8hW lK.O(FJ;pk3A?#}Ϗ&Q#sGoiO0&1f@V y M;ksSiwB6(V=i##0E ^dHm%nh>NԘ[IQ B )q,A)t;URygqP6oc׸&GNq&1:[>hma¿AQT\j H# =:#<{M}#{ ԗ1(ڱQeuלmx%+sJ)VL6\pc)I%[u-)^*ܩI-W_j4tmƐ HaSeN&A^;eƯj&uVzpAs̷`U#<*ވ_rVI]wr W\#7^TLy6W4,!ɗFKW:M+!+`ʖn lĕ*pFu~=zAȜR{B?5дIяF 'dgYx 4K1Y:[Yj,ٰOkS-f9Ey6-XbӃKk|5 x`%(WR~͌i=*3ZҲ~h3:);>,VIp3 I9jN85=Z3VOi6_ԍp-Yä a)[Ԝ,E߃aJqa@j)$N=d. vjW{aG4jGQ5oS ٥|~ MӬ5ɳY}:=js,ўТ>$ j`#MN:#(.m;5bs9>6R1>Y`UXQWqKW5jS_7/rdt ##d)jV;,T0|{&ASd7ő\9UOL GVk((W|\^^Q&a=C1fN Lϐ* > !vݦ JS*ln uhn S_m=Ȫ]Kŕ[P&=^ZM=+M/$GR;D r] _L2ҏ1JUIghF>UV:.Z&H^)MPq=d%Hr7 ) F86y$M=Ys>׋=֝ Nw@zC14p Et> 1k%ЊrP_K0 CR @ lf'w~ sx 3Aq7%K#7ץ"ø*kኵ;7{Yl>;DgG8TIJq%P%S&g0+(qCBsiS"-[o'݈~׌nwȋڜ<{lO(iގ?[r.KymI%9e7xaלy/gVY^oj `)֛hg=h(fV*ts$)а:trNUӦ#BQ(l\>&y0|紡"IKKHicʉv].TRʦG=g69*oŠ(M@pb#ᒪnbM)JI;Foє*ժLB*Igۿ Ҫ8| U@Vr%vnR9NjikH- jvy0Ru}mB~y=%oo}JÞEa5n*r# MB>l@q)ߴރ 4vq,>]7GO<]>͈JgD>j-Z.8|G8ڣ[}U/'w^t#w;drދQd ӨJ(HS!z΋XJ!P)8,#a,8gG"B^9:u^84u$_$ԥܜ$AC *~$3yzJ8 BSDOeYs?Rz# hfgysz ¶o4Ig5<=+nv [8/:34zyir* ㇍L Fگ}!U.hs9v^dWDϮ.m,Zcj^%}=?SLAX%'AXP(7 [OӔwRLvyM(lREQ2TCֱ~vIk*nM7 nim6{"^wEהSnߞωpn24m?ojyc-'ɧVKh;60ILp6ݤxGp9LH n`X!%aeLVt8UuQo?qVͱg*허mG}ɀx~R>Cn*t#Q7D|7hpy>(:-/Bu*9Ƹn~ކ(_f+TK>ϴ̉p7F(i엣I~kgV'Z_= 8xQ7rʖ.^iI^ݻ6n>xM3~, TJXīR,䗤U%4Y>큙Ql@ OTfGŹx!lES&*NsrtIW<ql hR;I#_4OvOj샤*y/]eQq3  Lr]d-q؋#i(\c&:(.'uҡMW ܿ,B~ҠƝ ϶&{ W=[\׼U6Yg+I;5˕K Mk< 4,;/\΄擫#T^Q~M+PpDqJ_DM;a5+KߔRyQt>t:Y_H9r/|3 cҷfLZvUʒilZre.U. lIr@)U__ƛ `jQ*bRUhT)TV!Zougߣ'ܑA#ͼd+Y[4g JWkZg/0b`cEdlKO Uݷr5#64'Bm9:|=j.c[gul5ؓ4Pa| jZʛ$Mq ΛPZE ) AL f[%[4i䘻~:揓*v"bRl~S%1}ht@\إ(bw0-JD8'~ѩʷҍ+_ov7ٯ|#Gۇ?xZ2Yq &5$is>wS4Z2Z̛ Z4Zcjj|:5jIk0t&YySهp]tvׇEWvʋ_4I{|tv~7-~V^hӀW~޿^f簇h̹sp]gM#xj-`9#g 4V‡k'x6:_Up|xd1B4:g' 6<~{o+z>p2YiѪ5b2q|ڬ7sqLjAmꍹsz-iԽt4"67(&_PD~D6_QZt? i)`eJTghc'K_ /(->6uKv~r8lC(qOI?<*]A_̋s\(%r|Nsr}EJ!ŠvciFȁt-=_U[o[M U˦{xW)s/"G=Ѹ}Nrzi%J)+V@\ 4I&F2]4P' l3Ofs1MWdeIհ:-\ GN"'R_{4QAi)X"R| WK gΝQ?_(@Sq ^a\QLFcHW *ZmRy1iDa͙G٘k;33d6]Eb A건UEھ_36=aE7q@As[\h\da3qCѨh}=VʿH>? 07:/=AYY #U` f;CZ6 []-@7<cZw'ۻv:~Tu^(YDv-N=g\Ȟv6/XA6#ːj{dS >K`VoB8Io@m&>c4MͣR9Tzp ߎg1V`Il!5ڒ?b4Ÿ*w<րf2t*cS Ć/F8-5@4i3OGJ`%A~{v0u:{iEa}x_8xSa}ra=ku@ADxVv#|~ #d1dɂE@F O((>oDUUEj6ZPiO-?vŏg7Gc47>];++ ڒ{zXrg7j d3$ʲ{9ɪ<å,V,G\긛_zhMAlTw(0̖olO!L O0t}e!P15~]6RjՌG3h~G/JUJ˿Ԃ=Mb>ly&YlKض:+؋]"(N48׈Z>aU!_o i?!$@wI0u&ЂqRkG:4& FHiᡋ)GA",Ml5؜ZAy^~\J2vW`NBiX:vIaAgOV敬s%Fl Wf.B ( FGFTPʶB+Ьwjr<ڐ7çL6>7U`տٯzr..\͹t:6Lmʢ9^K\ z15 l@NKGrzYAm&&_A h!T |UKH )=XE0i5(}e| ' 8Ѝ+P.=cSsXe fD3! Ik!o1RK)X@E7as4*ס/a\1cF),6A?B &V `(Ra]N`XyNnK6G^oR&8v[-r Fw^c-C|F1$X*J (QDMu@} .iT>7<`Z3ibc D^5R8O UՇtqo(w)ӄ\)RJ& ByUD*1{F]C3;㤓&Xw6E/f}>?\.'W?LhV:~')Ӽ %YbQPȿ^`pWLvɐ-ԃA]lRQIW!mϴ3u 942T#2TKV:І䗥ec tT*tL"bCTX7Q$4}yPg^Bq3б^l/^\0XuQ:TTY)/(=wYiϕW[BglBc: TQB(Ue >%wK"ϔlRFȗV>wy.ҧ߿c/rJnKъkzs?eB2s9&5Y]{fR|@FvqE}^TV=6E5|c̝^99#1SNqWk"@r{ 2:Fs&X|Nьܗv(љˈXRB(hZ(LTcѵN謿 {^J?~j/*gJ#ւNlXd+׼ZP Cil{Q_XO}«ҧơ) `fkK0a=H@HbZ'u1**THO̗)9})TǡDKiZ$v7RW W\H^ZD(R$"PU3DT@ fi RuBiXFCE5_,2*7*ش]MHPY i\H;LJ'dgn6qΣ/՞͢|Zb,`l9*OJ2k w/4I,{Ȼ`N hRN.1/UO`I#-Vn^QϹ?AOI/;Cp q{u>b?wMZ0֧<,Et<_ ZT NJ:"Z9+ՐH1JsZ(f:`]rUx22K`ylXQ!Ky^~?V*ͻZwuY OEͫEf203 ´&+ {*vS,Cw5")),zpzET#,שFqvfFFqo0-p+[T)۵k^>,1'%ɠ Q,O凘))H)uж VX8 a34"0Qa6`Ƽ%R^^ xwk :޸K:nrFxcXjr> 9Z8٘;OF i}X[i,R0IQ4k[p0& :Yd ;xw :uHiϾ 0+K~ 3@|Z/BJuA eU(jC?g.o lj(at@cCIcC"*%=NZ=57* ݻnr~~wk#ēz+x/U"VEIEeS\n8!Lrmj|}tq Íg 7"уV*^/Jd:$W$|%|V VCk؆0Iv}}W~'9x-Pn1X-Y٩$l|PJD@G j_(F7j<Ac0IQx>INκZkcz@H`"1a8:Nq{?0 Eĺ lh1CH300I%Rv`~ƕ?,]\2w2oAky|p~9 NLXrl|#Ng[kDe>2@%#fR9/nN ^ȡ( 2*.#[*4ɠ m}2Rq6hxO %4u`< *p ^WKW<5l‹x13Lgs6JoΪ00SL3]PII=') PnyjԢ:"*y)|(]GUh8>?ik~p'_2v.)XG@4)U<7!ga*mAg-l/jciN# H^ѣ' Q%Fl@ǀQe( ǒI`J%.i\n;+tC7l[ѯdD_.]=RkXgkd ptO 넂R΅eŽG_`Xj$Mtg_نd 胩Ïg b21ǽhzt,΄Z|_z7S^ndק>=?/Ч Mı*L/l }o.9ww \Ԭpw!n#^^x ZV캈"$1%bwhZ&܅XBj`rX.L=Y!KO6 Wu#qv4M<+E343"9wD/cEQ_=sI'J-FČMhlqJ 3KUI!8J;|;/[kÙf<6)jDнZ{}霏J$ 5Y[@QNܲ• 3m^ MyG{vG᰽}w)JBEL)eozP҈I* cQ%/X'o.a+o5T ={Þ:bz HHeQEYTVB'(\D4Ѣ$#2c0EPa`CWʤ󀼨 dr >/z_N*\C}Y'XzZl im%@hvѰRE+k~zAgKỊJx41o/6>Io%'0BYE7Q x5ނ54,z;sxĒQPbAK8%EsIFks%1K7E?ּDW{{ rϞ{I݌ZV<أ$,4c"ԯʭqn]um+rdtxI>SW_zE_nw:Ǐ{L˓>#Gv瑣< Zq2&~Lqh1F -! 6\xga< ?z~wxrpWX&L-kE֨ ǜDLH|![ˀf&">m<u:g:_(9t^N*{W|D\?[o_mpDHL\+w޳2\m"EXc.vҝA,@ˤ%N9t,4ZA)&uXuWIAEUT̎Qi@{v<<8v@,W X멇n9v 7Z,7uH`%T)ʲb'B[˯CHg 1o-BBIjOwvhus- rJX#8كdDϰTh*#Up*"֣ p.kR%/2#TP|Y0T ˎC-C݀^CVOdc2Z 2os;v=a^bHMd')F:-Ko'N,%jn*c 2h{@t @;Ol?]jLV^<2TѥcVj7T(O>TJ=R~Tv/O-:hiex.|RrcCJGN/*Oqk w֒<9585ro4#q8OqMJIkN}B(yᯬ:a푥j j[e炄_KA)Eroiä3/ǖQIŨQy;0^xȨĝz+p2;07滂+049N)yRey\0ElFi꺄Qk6o_5P,ܷyp\ xɵЎ/NY-nKKmƞY4)2r`V*P^hoűuuy!5XFkH-#QTX~ s :Rp21pMBNk,hQEd[" Lb_|GCKYlKf˨dr_8&b{fdq=Q:vÄv@-NZMJ1 6񣩑 Sފ[D0anȄzu%WظW֫& y +6XnJ쀚HKYcxe%z!J/ Mb+$=κkUK/ @{PYUmx0դfk0쬱FzZ4a*M6):l'Cg]c}>=4eE+X%A#}JM]K}biFr,rrywyzp)zweպTSW(5*p TMPm3Ve^6T6_ogX6W E 4wJ͠Lԡ6BŞzрOCiEESs-<9#X7ʛG󷕢 agRxuʤ^X]$f%V++]ϝ'-E:E)w>ݏ!W]0k?HP-6Gj/RjJRA2Ifs{63IDa!h;Tn홙mGҙ\S:Y6yYLѶdY`^eI ]AO V֬J;b3tITqFeiR6-\|J dۼl!1Y5XڌSb%zދ mvl(Rc d?|72#)/ q5 g( yǸr~u \>q>FqG048Nj)=9^1E핼9aVH3 e^:V.9wfc2hbR䍅#S-o'"D+IG6J_Y+t)c Ԝ#G׏_^cd4GMm "vGuPh޹qSM]XDi%gmS2njr4p2LE޿G]^HM4ޚlK #ɼ"kM ԠAxEÏ)HTVd> o4WqZ] Wy\ pŘXr3>9QA)crmh/):wff F8J}ߵ%-ҳ/)Qc6̮FU!rE}7AC#u,qe[e =h !_\ πqy3εm'y=y~5^V2q-gtءÃ0hy`t#h\d;c({4d꿲5iWqgOl^gm#ts%yRZ{Xj QL>bؕ:KpVmb RlZ2u./`7"xFoK1iђUNܼ~ VV}'} ::I eRU2/XCGAd|2/>'`)\yo><댏∤ $Y<Ν;R3F kd02h_d77geCeڝ 9}Gi$ˆ]stdz;GS%x^b˫`uͭ g (jԡy&}_%*CLJؤ\z`rhz[hD9Z;v@k)fjhYT4)5biNF8їz:ErLr<JM"YBB?1_st{ sԘ;:xl i1 †o 6iMZ>T$ $Y_v'V!)pp)áe6iX'hh{4ќ_MM89EG1 iNxEےb: vSlx#c4 )p-剧6[770(&`~aYj/ :qc'c89ɕҠcR;sbư=|ռ:,/gku+*}Ixd*=J`[6Gl7k^W)ۆi98oX#SZw ӯE Tffho3E 5p[(^?^T/)0S{^wGɚ)bbY"ɦJ , pc{/$Y <|V o; vAR{a0z!p” 2ٛBk]hE}di\QvH7{aq&,P!;43,Ϗ2i_DZ-{iC)HSkZ؜-+,?];G@ |W_ZznSc>$i!$ILT?ڵ[27\S.7% s$= EY 2nnX?ų{4icZʹI{uUd6zld^?̚zm )pVʸiݭ[d7v%&V6Og.5 Ӭ5f^X׮]-5p܈"A&oi"jhĝ BZ5pF`[BؘЄ!O@YFzJn՚M,s1[ܳdCg(EA7"E K' h[YgyfclyU/--W/[N_ȷf2Nq<8|q #ؔ,I4 E' t"bЍ;*48(6'\Ze3A$Va R.CuZcĕ|_ݟ]'Fw6Sdl.FyLxAd֠1ѕ8wVDAZ+=-3KWy cLu<Z@<5x+]ܶxYu> {f/N;?ݬV}S]:%rjկҚע`?XKx w<")+m$"bto)n>DȘZjaY }pä>3MGn\yRH܍l{a'QTjyMeI!RpLӣqԨa% ᖹ@hBT5@@_h 7VN{. sӺ:mvِQKj) S^e8b9lqW'EfD |Oy0>wu"$ě~_)]49\iAEMeuߙMML(*0Y$f ln0/ZF3P;Z.6y4m V4C(+AOf^Nlq;JNp/]7}GezGhh20ͦ` aaL!2d$xl(JP֤|tJ廘B hMLXWajtg$CȎ#dY_x~7ف7ytT^mՇd:_̚7bSlz]b]:?Eژ(e .Hu<@[#sܞ jU)OYTP#5\*dMזװ(ISu6;!#l':)RA^bV.G,Asr:ɩ^wF,܍@@]P* o4U=N#q0È|NVXTe(2 8kMo(XҤw<{c|hw脁G V.Tk3/ jagSE.ٱ7.8sPb l8O @A3崫~C7؅_6:aۢ(z 4t4;|%^Y@4<w6v)D>]Hd[2f<٣Ze3+N0ji3#>$Ra_K~?Z[ndGڤeL/֥@ aI'lVQK(^f"i^Z6*%?O\,c4&LYÓ^d2@ⁱ::-f%V; Dq1ȾҸ4pDD}}/rh>3oROyrjq IP=WP;$W.tad^h̊uh84)(@6ou@e3ȍ+*M1]` :A^Ƽ!9}(Ӷi? hH8^ѕ݆i$cnm=\ SgPKNzgcژz/gl?>'o~ۤ2/>$i&HkQ\[6IF= Ҏs!T,3Y"J\YW.3jtҸs<>wCp.C^<\j=;~mV{)~/`! w T*>њWDv%1)68R6qAY:|&N-`Wqwo~ pu^pLu޵޻}?G3;R L% b$ي oj]ZsY~Ɩk 6p<'j6C4^QHizDM(J&BQI63X I<O9Bᆌ,oey,)f:%Gk.w x%pZx^?[uB@:qB?GC,9eBZXK)7i6jWxCQC ]oΉ(g)qy^:ffxkdH j{FGZm)2PS>W ˜A|m<&!'Mc$,Yp;5Cg~t|qnESYH\euiCb۞c!YwA _xdːXk[^o]6xKڊpIYp3QobC4OdۻLP~n+JUV*pZitz1 ǰ!Ȝb 9r '؇Ŝ3Uю&RYύE)eD).XLU18 0!'@fU#) n|w|||lJ xk!:j4/>,C@D$M*ORD_CJhyY>"Nf혔7y޻ #4nXѺa>ܔᖬ֎F7~HfDLFD#*k_T+[pۻbZ d[ ęEU;]\)qZ$RxM7@q"RAȟxs-֠5JK #bΔejYݳΈ S(}vp6iG]T#gq \f(_V3Wx%R@y?;J{Xf\Lua0lu2{lWέXz#'C5M}FkGfs/WW-Yte<5b qyuRM]ٌ%TǓ u(߆>ӳ\ף=P*:7|KuOd EXVzA8x!=iCuFE L$3SѴ}æpR 6Y=IfDRrp_ާKhYBCD} cYf֮-0}9WClJrI^^41Hi!\`8!Jxţ ^cy.(Sv^E35q6?Ͻ햺hg{WRw?Vg>Tyk7ʗJ?Gߝկt|ࡗoAuO+fR7d15f|8oT|\&ZsFך q2Wa7һpyg1z筏q8kx5" ?FO>}ӿ)8ڥ<TzdE/Hڝ`k^ezc_Ыw?rm磹GhVf>Cmd8Us>MjFC]zWﺎ/ tE X[{lܪ(v1xn}D|;m=ΑbWcI:$\tG i`DFt~[KHG<0qxb"8""~'V{Go#/4#hWzy@y~uJO7ltƓw7!ӳ "viNӨe>.66BP=- GpsBDHZ? lEHx1& .E%nK:-D tK:W2J5wʎPzbV 7e^ΩUfu蕜1ܘi?  n(j"ؐ]HHp_ GR`?HR{=ˆ_Ez 9KAd1BS1.eRAo, bKIrAрfjv> S,acwd2M4Z ȀbmCf{@qGB#䐭&uO Ƣ?-0PKOg)Nz`hwOZ 3N:cTt/_|?M/,Ƹ[rj(y.ۧՎAR BeGe 6dY[ϕl! X-}ܰ7G n,]n/no} D>K5>U&:ncP5N2."omFmODWF ) J1 :((QYq Qr9J`c)j՘4r<1x=7Ǩ"l8P])$'8ᛈTAnQkgݲ6͘?Q0D@mh.h- R>."8'LEA3j[Q0clwgD.-Ko9 }?hMmjSU}w:FhbS"9Jc d7/ C<2=?|MQ D`w`P tWAfa55AX ?OY1m~xfÝh61Gj c{#P1vWcQ blo6Ozqkr>eV_93@TNfw7ٽE;&L*8Zӑȑ{2%O,Jvl$ фE$ 86,LSV őR*h0tNrtwnXs]m=Iڎ1)*Q2/qK"lxI.RCAnDM 74ZveD%8\~9ˉU<)ΣGA^Hn9{N61#)ՇF ωGtyYGAr.dgT(bn8*ބn`Rxf̓kob59s\r ݫNXFv’x&-kIb$QDs"["2 xLtK%8V3vQUG~ BI򹿲SLJdI888[#yJwx(,uc$hJprBdurKog9h~b-xMI8F M2WNFDDPkG~ j)(]$EbP$Qe~9.L}Dɨ ͶCTOx9gktYT' Jb<;.$KLL`(Zze{95b4]Rgz$v,!Iч =VX+&KԖ3W0;vس'w QQ\ GChZ4?|#^6JH PwEjl E[h8z!k9٧4'hK%Iः633{J,Tcw }_Y0!v &bG 1QH;ujm_ckEeORg#r0%$ú! c.Zÿ\6"96텄YQ^k}6k usp'탄OS7,NBk_j?<MA7af|q,U-ߛ.Ro{9:kgS?Y!MI KUTr<s/aq l9.媈 鳼!-A-p#8t41R5L`&0nYf(o:2 \!rA]mv5{٢tl1G:{rϱK=(A]toXĀS@jS)1c/2-(.xҬE]CxBȂSxYYPB3GIx&:pWnfq3}sD;2эl@[RټZD[jW իɤn(cIr0&a <<( lX\Gn9n'FDTz\k09&%(] $)]#*ZD^ œ[B.&bӼԋ8&ÄLF]C}U<#1og<`VoG\a 1tjٰǜ$:)'cǎ\l <+" 1N,OC`:g(rr:e~S7|ղiAp4W^Ҽ|}qm4/ MD(( 'i)a7HLYK l9B5l˙@qA&juAֳsFJZ ~ypo^Uz!},ǭJ)gR:owxj3>1 |6դAĭAPcd9* wIIH碬&r;I"GngnM&6M9%b`j> pGp?u 9S@E&% ]DI\ Hb)&GBG~t@^2UI.>GȤR~AYFT,_#5Fv!Tw"n`c2Ĉ0WU$UKg78 + @6^9 t/tz\7&G<9nSų9xiى#y$ϓSBDN+6rɢ<}% [5ziU%9pŒ:H X; 5YP}IRT7Y4o'E8G42΄ȋƪAIBVp2e=M rF1^tBDsYڊqrg+Xiqs.0krW|~K!my_BhӻF(Cגڼ>NzǨ"=XɭFXvG 02@YR*:"'ZKrO2&-IF k/d6'JȶK%)Ƹ2WIew47rzztc4& CacY`E"B]Ypc"x`,!в-QSe8T߷\8ALc6;zIԞ'IgB s4_,FXIw0ڣݡSda |́!{9*\"ᘒaPRl}K]ӨL3DC-f:B !/r:37 lG u(Iݙ ʋ-yܬ7N8_9Lg(Fy'o ˤp8'8Sv[~V6=uS_Qa!b ɓ ҪVPs~Ɔ[s6Y:xI5 m :YV|&rʧ"a&&Lw%;!$.^$9핀kܻr4!dnqbҲ#dgȯ+Bl"2tDDܘ%Iw)h?Ah.;DQ n镴te"Sp)Bَ4Jl.d#`f/YC3:K-lL'="6M(p#W] (yl$yL@mf1SQ1Q܆t󒷦 6hSڣ>9_ZX}9~.[}JOlcZ~ܬY0GbNWc7c; L&E!,KR+ኰ:CŁ;DCsCS`#$ ^(8)IwĹհsA3z::٘YqYpl"y DlI8ш-eNKfIΌ\C=tF  ^ "iDmR. dR,c'Ҡu cųb^3MCxYC)x!V.ey@oq}I1bLҕǶQח.gF}ȳ*YMXF"!c=.&B>́oC$.C-]KW'by4jšs/C6!mX5YF 7?4O NJzT f\L! g9ϧ2NNP$O}bHih]x1-C1%06q F%f YMZ&Zl&W4e6=S6iCTPS}Wcłʁԅgs)}Zu983l:sI jIVzV KD0-R FΠg;Sr ̻sS5`69DToL'lZ.bZ4 t4H{ʖzd _;dӲ3WplҟqV iq0)݃zT::ݥLߝ{n.6<ATc;kb=,f2=6;r˧A!}~T vY-Ӊ")XuYcIUym7rވ=0~w3 Ix\E J 2M'G/*M@b+skUh1&*"iЍH#چ8b@{d0:6Y_&vAڕFW JW*a.@,{Y'eq2z49?R 4T^oK+G@l?PzzAj֦'X ڎoSO)ۼ:ԋ^WenKCNuDn݄9tǃH%W@B?PBm c13?|~|2.e\t\,(hBj)Q I8(fcưc''Y$l\eQd(V'io4!N^ ~Z1@s;BN2yZoLǘfGۖ$| 4;WfA rMVYړ35`<݅&\3v%, X»8Oպp>00,ϡ\~EH[M ,K$ܳXPtrY&ڭLj/eTnyEs~rh8#PJ+jI=pvo1W E Ib[zsP Rȼnڡ0WƂ%Xbx4pk!l h.FXQvA[&bM/}샭&ۜLq2mVu$y%Iu? c[MkdZ_$s/rz6311Œ0Bzj%+8 =!*@6 +bSAZ0?!&f7>?>SvOBZ)TjLeWˊ3iw Qvbu[݂Kݨ[j2∆L [f9&j~j*]Ϝ-gd^̇RyA(scT"rRK*C+ArH_Rjbr0Nڝ6' *U_[Fu':^ܒzx3eKvEeOuK%SoкiA)?4_]fWFa9.r%M)nɄs'D4ZyQjlD4cb#(V4`=2Q橩@K;pZ5(t):P^tL*|h Tѻ/nxbtJjvL7ZHAWm]v==;i:L fz6Ʀg8B!LJ&t *AG#sV&lhP?[ AX0N>D',8te&ئ`ŁK\%53WLFEQbvv]yzbt6X5Z\@}yW~X`J nH3ͤQ IicZ`rbGej.0cYR\ MGEf Z[v,eMZAǂ:NegKpvgrEv[]gӓk^⁧_'xJfPh}\Jc?>t<EbO>$0ym`;8QߴB{ @>/;lmZ=k 8kVhuCɿxt#Cp>Sc!.$؄fᐉ0^"iA' cBѣh!&1:҄c+C&x8+i&M،mu>r; ^KG暇{."doZ, [K#٫> +rV?W6VdmИ?hUslqlt0oN`X eo F@qM0f2Nli O8AiVДCq"ș*$F4rÑV K*'I>nNYR2˟Z}y^3XY(8k\~4d"J(BN k QQ d#_q.Nbe:tˊ7 Od7K<ҹ\ޣ^G< ߃OiQvs?ZT_j NݿiNaVH68pg4RؚsXU+V='\!>σ?Q|Y=Ie\%2i!,Bo>8&I3wǪ[逓Ms|(8鸆Uu̙6@ZE8yw@8o vxp{ n*݌Ji8aW"1ԁ $0+"zXKYnrcIGi-ͭgunR &ÅmZǃ*y9B ,+ѥfyaeҟEB Xm3؝!5K)އ(l)bHYr6|ڇs,p]|u Ė<] ?:YЍ)!Q k<[һ >+V4/)dFVӝ .,hg&2 ˑѿykbHu轾/ h`R#f syqB΅N+gq {1_FHL U`yřrjZ!z~nwdS+;h*D4]R!$=FL/]жcV?ɮh, g@yo$W"كTofҊҫ2/Gj[Vԗ ߔI_Lc`V̱Yxl>4- J2\pU) BI(4(S \psҙ:Pgxۈ4ӳ9']ҁy;S:Zy ?kbaM/,&#igr$1:fN"Jkрcmu46]5Hu4Ѹ85t6s987i {s1v1mpz+x#]Fܰ֊HX sN&$ "TVYV8nquѸr9$[!W!Uȗ GnI5i݃Hq'hX71X PB비~/ɼO [m4;$nUӪê+B#fO0N~) XsMڋ%S.f҇䁙kxoі Lܟݳ4&2}2r^M2E5G<4 =A/&S x Ϥԫ'b^ij9r!L#+mFcgcYyxqS:k0'd-%@a#cGAL\^QQєǛimrl:%=H"~x֬gŰr\ue"6ci0w,b™>5؞:[Hu#9\u1>nħu&l% r#4M޳fd .H5P6d'EѨ4Ns*񐢐 -/!64:,v  #1Y],9uע$KU#SVTYTbg -J&TNDP:0Ĭ.NJ6#`ꕩޭ'zs< 7h7y \Q YgJ')\%;L[霢iŅ &rP 5Tڬ{i4Taa?Wg4'},v#&Ys;&oѬBB=H+Z>Ӆ^$D\F:.2 05@z uF^h <jP+kt-L? ~u1t;a969x}CA }odQ,J v~"(3!汤zqIebY,.oX8PkB?@=VTgTgټROsӄRwJN,7~rPqBu.ȶ4 ^-D>Nuf(@9Ψݞ7U 96+VU]惔FuV/*XY)Z^r+諱h롓ǑVh^_q+b+ՁY?I&41@Ɨ9ՇVջPO-0d8G6d&M6\0z#޼h)db2eCLO4ҩGGZ=r(cYٽCVR!rZ/*\AoT{x T> Aʧ6]xҦ ^^x{0'SC<1 ^mV䬫 gR\|O9?X+*F2Ғ{]x}ǧV>EA]2=XuEMh+Km(7b'[|Z s`>#W&k\e<\ 6!LQm8H]F(*Pfj`*Y 2 {-(} dV9>FtzŌJpCtM\a"OdS˪t`:OTvN_ޅ$ENyrzaYjWdoaλ8mRDlg4\NhdnUZw9#C9h>hdEjKeJ痥^yS")RpgOJ^K ytTM5J!OO*dQk'A+@ŸkfvѕiK#(+t+a8'H$#ChJSI}zd~cOݍNIL,s4$/A:I{sK$E:XT9tCJR/(S"ZL u&)5V% NhR_Y(Չ|f y8@IzW0:_S!I^ѯՇ(fۛi %*<2kz콦򸸧UyQ\BrhM-{J9/ɑM_`^ ;YRs nCl3|j5*r~\lF8+@@P@*$sԆ5;"/}i>?,\+|䍸]{/qEvW*Pf]܍ ˩;I$OV37GSw} |hYyO*,Y0=IsqRl1bs$"=k!&60e/p-$҇en_pSqgIF@p##͆\>xw,Xfo,q,`"8Z .[(Efi8ud#oq(>E< ԏRp̥>kqM>X ۟)֭~>xCTS"US5dzrDMPx$`trP6DŽ~H y}ʋ5 iB5BmG7%vҞ@9ފY3Ose{R߉MNJ-!~< N IOrCP=~KDԠe4 /s\'T^ "beZܪE%YnEIP_\ݴ?:!1beURIN1I2Һ;\Ac+MhS(yjЕD2qFjyOvɣAWtRܖYh>VZMK#iϯɻ~{:nթ9qb$o +t|]ʓ%]خ1MF"N,844^SH}(#i#zo4;I7&I}Gۊư6%2shxjeqiťIH9gHwtvQWo CT*[BGkU  D fׁ<~D<,j1RReށk7( ^4/ gehk+ќj8e/]pnڰ UcגJ&Ic1t&͞,)2kU>GcB YfIujb/7A6.\ :jٕn4y,-H)L]k;yd\4j*(攽(S;0!SL惘ؤC+JRNLox1GjIl2HL`Hfc0iYڷw7LZ{yJd_ح+1߻T+v1Z79:e\YܻQij4g]O qTGd$cgx25895s~Lqpq2U.v8d*ܣI`*O9)(?/RSS=`"$kz`dve*gRM>>ME0Bj j+}(65+u R9OzFK;X2:ϲ9μg_qu9Z@ ,\$Ǵt75x-0PY<nTSȔfpʋwiSVN٘뎹9)r 7gY_4W&{Jzhrh@t|$@P3hchU=xś2K#NX-` =4ɢC?buRN:vo*_s_V0zvdlI1[]>p$S-g#tY FB oA-6G;7Iv_;||5!&d-g!紿d '20OO=6;e订2%K~P5CP1Z\& SU 9rgMpSdgi:K1SSF/{ Vn֥r ZFzT',Z㧔J;Oiۊ1qRVb޴vZoT*sr2 PO}iśb^LM](PO|l ({& =S"Ky 6i8m3K>g=j77?vչ ov^VɲժxZd>>uZI> !:sqm=<9jx=+TO31ubZ4j)zQ3/##q]zcC'Fh)`S2BCF} cYfw-^EpR>JrGnu\_;뱀55E`;N!&-2$1@+&C Bû1 $@HʎCS3`&$D?+nvG-]iV/Ro}RﭼM7|=WyK_Wkmzv{ݏ^4t6iVM=HMٯ'95ǃ8n5;NjakӚ֍mm"7Lik5XKjC}#Xё(=TDW~zEWH#AW- lo{xi?gy9/9 im[d*9˄$$q0B1z~,j_/HʬgQUx3|-q/LV8JwN&T:GG7j?tF g:l\?$l?X^kK/N/ѿu%佡s*Хݎt#~@J|1蛰%e!@\& 9 YLXl;/^ia@m}n2W;hR@FоB['YdM %{qڼzfdi@#HX>Y(q Ң1T%_3b!!RmuOJ">jߖKO0mۻGn:Q> j[ plwJ)>k Sd @>\C-ݢ7ײ]_=q L7ao347ny9V8?^fǫU;t[z/|]qߙa{|:aKba=a}ktkY̺q|* :4(HlQDQ, 0 ڛ-'+F<IOVs k~"Y;#xT61<Y,+7o$fO\x7MRi͵9y8yqr>_dxI+.m2"%BE $j6赈ɰXIqeGs_􎐤u}CQˈ.ZP~q]L|8r86}ccoI ;Iik6 8ER8 6ZQ [J+ty?dLD}- wG$L;Qި=#Pw Cy!RTĻtFL25 [Jwqc 8.!~;'EBI@.K4 \FBb`$ ŲZ=_Z\u%u Lo8L?̘~"m_N8v*g xRvՕoz#?&U`.߼9>PG (]*Yk f,&^I&+ˁEII6$G-Ue) +&JD $>H b|!]}l)j\,q-6 1at?͜e-InnH tF)x o:?`4̿ʄߧ}.ϣrtus7쳲ea[M8$"-(~V@$B>sv9"/Cj'acBQ}4.EȄqB*GI _"2@-|&%A{pd6ĽS@O>Vhd/ t %5o`:L-[6$w%bVAg^*aY20`lYAU!;V|5,qqX}q_Pxp2YOͅNC!T5k23usfSpի|^"ϮY2}rvnHod->r3_]=ج W]7aۋ_g$Y@, 6Fˮ1V1鴴};nY<6ZӍ#h2 xX*)۠C$%ܘqeFmF?f'PDJ+Bf a)+WUB`M,8ȴ@ &r}{w0[LJfa+ǴSyݝ+iMogxN}BvuFSI&`\ϷaY0f.j:,g9ͦ[Yl1Qx) `x9gEن8cjõ܈'JgWwRу܋FEV}^as%xvK~U*Jʚ+7=h|~ټ @xIȚXp&"l5(*l%i UJ`W"^Il#y!iZ3?_nJz6OӚމAӘiJ7]lq9''L8f]WVTC0*㈌O8P^Ŋ-H>ٕf}`Q:>uG!,O:W:x{Ŗq}dŸ+ y׬vmkN>ͼl]Lg1)pQ˦%6Kg8 *Eu, > Z'Ew,L*WqڒȄިsD#]v>=ݴ]+PgL~oi,{t -$!2}ۨ5uMMq}6B 1 5|Ej7 TYOZr`,OY_\Ƞ01w ΄ UgB֯aBttwV i5//2@^?ًlL rmI{jku3mPNn7H#cRX; A&^O'sC36\4 >]% 24wqC$źQH"օKJ{iXJ'O6'B R(Rۭ\85IJܯ1N;]l^ y5l:Lm<`K8̅U]7`RH:_"ky_tI{gzxV*Ɏ =IͿT;s8E6I&)&ġUp`2F  [݋"'g[{>@2m,1" d`J{e+ZK Lhk-o z~Xyq=`%4O4]:h(txTP'׭`OF UjnTT3iSt!{XM]K\S'G:pYx"C,z[O^/|˻̂]#"ORO m唠0 zD ,GYnA&Z$g_k\gC޲Lo2sOyB dQ=[\3~//P{ Ӧ8:Kf-m3:yzyOzOoĸؼd҈;VX(2p-A9 SZ) vow8/)j|%q-kb x8٬<1Iiq$|P,:u.QOb"弊hr#i%]º+-[שT(G}hJ`Si|@~=I"YWE"qz5WNJ$Vpþמ͗nZKr:;A9t"_*zB9)/LRIG ):LdPSSqKϯ 3}?ShvC/d6דۨ!dH >/SK~9/rhN@6ZA I 7JFr#F7 ]U̝&})CwAn9R nHzct8~r"gFTXHH4vN1?!9!2KQϐ?ejWܲ&<)Z}=?$)`9R~6U4ArGIsILjTHюvlNJTF!$]@H;kWI!o7e=ޥ%3\'6#.AdĂRQ'6Ru܅qFHm |)r4%7qL} ipymyͮODOܕbt@g43+ B*ZPRIQAsC09nw ꩐758?_)ESRX.Ȣ|nqٚ76hNs%,FM|l'hwCIoo*@sS:becfeY6l1b=(Ejaa2?0j,'$$5j1.*d$dPƅfoJ<(ᨽN%dXZ-$9~g~8g u K-zIo;BKNr7Ê^w!,LZШuQ-8Z*H(q3>Ior6tOQCM8Apd%}{A G敷FFz)OY>x6 .l6ǍqAi{,LHX مe_u.bch~Owd͏ : cBde NRɫ0*c 棥e/ȸ1VߥmT}G" d<v0 G?^ͶCsryh:KS!#P ڙH-?oG6YH6K}ݵk}Oq3-S|M Ut 0si->W@l2JEGĈD( `"O@@qM3qu; xؘ:Nu-ûߴTq vBb`|lf#u%jrf ")% +;,vm,CZf-6%"~#g ,V $G;D]M0GD"_L I{ɴ}p[G۾Tpӱxp#A ]ʐJ{$J$$=a E'hʡgTC\X;N)EKF4̵ +#m{v~7O"){܉:@!3as4NAZ'[Ɉmja'K_~CRى܁S_զ~E-"(~(H2!m ERnj1^Bo ^"<O $ׄǁ UAG#; 1p~펤R3bo7@9. c! gK뚮5Ims琉MEw_Χ]I riaj^-_`TPJƳP]8FT]M{r/tvbb8(6x RXTLVo>5cx'>"H]JE`d o.g^eZ$,HKfײTd2qOFhu:D[+z*pS0HDXxKA0 ]di01٠K$ EbaEH&Ҡ0k%qF{Gx\?a[\#ϸ6XBx5 :.#}f^{lD⚟ƦOYNObȫ=zj\/3̆,@s)M]]˰dt* CW…2pyEdrXm#pɣv{#ͧ`@0' RN<`ԯr&V=%M(i i`R7Ԙ`hv{iP8K!ȳV +G sY Q6igrgYzsNXS.6R/Ά|]*0#0-iW%v<ӝ0-f-Yɴs0꥽Q{-5ۼeNtRr5]$ %2u֒/긞C9nƸO1ݦ,d@kzhgL0~)x љ% F ,81qRByiu•MƖqi7MIiJnAg6[yKjЯ9Oc$Gkv{=@ Wσ~ug̃s''c2 d{q b ozU9M,܂k ^ۇφ.8 V #|yc\1/!ITiaHhBM .FTS`5ydm>,qbuG#2Ro'ܟe]]v@8&& ` fk jFdw2VaaiV] `|e3Gƪ4S0H B@nB#L%(a t9Z~1/:aZݭ4|aA+ #z'0| oD8L)>M 9& ;`[iv^ݤRS-.Lh Ck0KsZJřQ9f+l6LVP,uˈzJWy 8nLS8hu'ƌ'fYrp\7o.f"c Nl$`nkFcQP+!,de-ѝ;T@NdȬF2w7 @}k9#fyt \thJLn p͵ZXsf21yj ݵƲz5s=}ZهjUUʺ9NdNvd}ܲW~u"MÞgc, heh^1kIͬ1/ )S9W#\QWc]˭@F7^y-t̖B.( S'-TӆeHZ{OWl]Kȇ[Ym^X?Nח"^ZA̺*Ɛj&08+n'xcDBDccn椪z/oO}$z޳^_>ɶ 篖϶D/͸eO"[ØyJ>36Wt$LRkwvnsپ\4k-Smvv&`HM*)3h[ qQd \:Suq:7ʏG%0uѬZ҇?$$0fo2T=< Woeo2N8kgÅ23.Tԭި}|ptZE7pO ǥPNsxp; '6ɪ{C ,OF'bp\V3ץT#N{k|).ȍϭHxO籔:w*2HhQ"Ϲ?\0<3n!7z'Sy\ZӞXA6c!r_ zvː[) /eyDzMNJ!6t<6Aj|m6{Q/sp?FK ^wʾVkkm uXLik[vq l1Ja!U~lcLM\^9Z43WIbhgw{0Ȥzk]LtːX(Ym$"IɧK@D|).B6hlߍ]6e Z"*q̓zV1FBhv*;T wߒ~?X۝#|j<'T:ȆGlL4gjBF$]Fx\9jҲkM~C;?᧤̯9~fӋٵ;u5hfA gؒTr{]mf|"*9@ʙ:>aj?n*WZFX=ğ#I;G^BKvpW҃n@WST~t}ԯo`uƭ~,%11nlϦ'OdI 7&ø')ѽ7cFD7OWsaa)u$ &( hЭoA:*qQ-UD" yi|gPo$YWk4qLMӸVkIk X&/:.-V ;nbSGڃNʄBl nzY{b@{u~g_- lgfD~EZd9fQMĉf`F $ff =2J"6tDR|]l_H~F9b0q*zw XIҀj&(XtÛr!Gǟpl]؞*\޼w^lCϓrfkէf}V_&)&ub:@2m];S W *?^ԯ%6Kړ(k5'^{Apl i|]uVl} ΩLeYkWZ׉gZҚ)Seqq@t0TgjSGƱM(8φJBl瑮,,ve霷e}jpB|S/kxqc2؎d2y[%C80!3iA\h bw?n;ސ>RCǸjtOFHX73Ƃi0LݶusP#O) n6 াΎ%69w~GO)/%¼ZV2c\LyWl8 _Jv}CgkN q7cD9!>A ߢ,r){jJv.eSFLL)' 2~P<{,c%?G"_.Bf:uyB:/LNכA~ŕl{4Y?,5{ny6zdS4 ..(-ǫVX<~RS+޿L4Y0\m98/QzPxz4.~R~We9 y.O~"ˈeeSQ5ːa)n^hcT-zXևkr71˃ߜk\ṣިnGV=uZmD|aևzPlIgu \VTL.\gM^gO-FS_3Ym3yL=hWZT*wΑx ͞N6,n 'I};~-҅Ǎ RYsk9ZQlK| c)&tV㦪id \D66Y>F)_LJ6LpָoõY62O+2z*ۗ)"ȩMԒ.t]4wy5ݷ[u'R| hM\>z'Q_TRy9O㏸'@x=l‰sV+@4rF{y/4Wlg27G}AdhrsM4v>7ݻN FUoR~זվ`.) -9'k%@T9KʛGtkq&z<4!RDQQ;VT幯U)2a f.\_S~ʻ8 G #j/ QiPDUU/|^vkۆ2GjNjiPD_LN|Xtf:u߽soknZ{֒vx\FJ2~j5M7/fN BΏi *ۄ.ﰽo6N[p@'e ui]2@I) [[;47]("A @&_bZq{BܖyxOxR'е^<_n~lSJ&C MԹWG Xb1PEE(U7xM9Sn929ڿ]i:`Ɇf}shm7XbE^q rxݤ9*r'bL7eJplnj\eäuID(E Ryôԋ h>o*n!x}#I$aK&hI>2rR,d|q>GP5'09Mixo3R E˱ڻk͍I<U)^EO;v8ҏeJfԇBIg*9.:;%(Ke|w.)wu!LG&ALx.#N+Թjz)))sOY8Iۣ*%9h3ݺָ^OвQc}-ύ,{EH׈S9O }zp]qAK$q# ߯$yuAd)?Ɓi5^ vf68O.?rI9G3{!ʛYxaj1d?cT<?fȴ{$g%- 7FB^reQh Ѫb}qYg9ѷWRbd>`i6Sa x@HOcNv#Db7>m8y>^kkZ{wg7b|NZ{Ii KxvƺQx^L¥&[af}Y t,vrƍ/얩*4]~P5x]d;y1-{Ѩs z A׈E)C/ލ r> ^PܗJ1\hrDT?9 hoK0淮B#g\rmZLPB 8Ӣ;8ZWr]=I6PI#/CO d4J5,\hNT00G9d +B_gfAgԾ>*ׄp05Ҵ@gx. A}KT wPťΥpW=Qνr{O_|敹%YtڿmVPEҁh=hX}m~޸u^o 4/ +3' fq<7$ NӞ2R/"`^B2!hWϰ./yY`btinBo+E_"W꜆e;ix_y5o%Sŗr6Gh>hM< gOןz8yIģU*.1cӺN'P*څ, uT)q3bpL3)Np8yP(0~|MJЅC~>H>7Pb_E޲SxI+)D}Pަ2V:wl:IIai~No,dEI}ki?*O?7Lc> iJ=ʘ=Ic<L֒dPY/wf(/I<0 'UV&u$ UL8L;ĞUpӧ $rxTn>vfUlʙP0{ʹk:'!7\u(=IӃRǏ˻SzC#fq9j #&L.8qEyAu8W[+kδm2Bǣn~&q˹)e]eC+56=?R`,͈_RM]1u G8. ɨ PƏ2ns0'&d8'T)+,E]a-Y(Uah<hf_,Rkܭ癕8*S;'8קa?݋uɖ+VcdvRƇ89A~ G&OU(Gh+DF~/8`ؚ$ȸ;j;kMx:,1>YE[M2R/*1.+`8{{qw[8_k&pu]ާFj;0Wp ILiCp7db(&N~-.dl teu8FG-^> `[1?S?z{צ7 I3;M%?Nmc#I>oZr42QH#{]22bM͸z,{tw^5YOsЍvFA-F͜^J.щ7YQ`XؙZ4<+*wW$@)`PuT^åXHJGM>\`ϖ;b^\]O@[42lJL_jX%w$S-Y@wh:QgW.rnϝzh7 YnSOO|D9 #"EuRO"<=6#͏Ο* BuR2\^<$hQ)_/O4w]4w7A3ry6L{i3[H^!wG][g& !-{DK%_lGnqPR)2=}$=jgt/Q~ٽKBީ|=rEik|49)7!Ή<ɫh/2p߭ЗNY =7 p,G@[S>'8Q QqyN>=vl͑5H̓W樽{NBCA} cYfwvo_>@}wZjZڛg+ lkYp%<$cGp< Og@X6R [@Hv ιJvKnՕz?ϫT*Oz+wU]N>U1ؕ7};Z䉷u|;jv:u:'V*{|>] ҁMzP'YZW`:Y__*  :D ѓc{ZoZҴ4^v6gi`p0mL|7Qgc ks03VFiCX'0<q2wy"~sr?&D "z)z%Z`}azwXb^k]Ry`ߘ@d緟ƷF}bǺXU4n4@\g tЦp~PkD qEyp)0$ *NBp >#%ÂLÓLj|ïGhW/Y!1hijβlK?LGaz6ۄ%>"&d/ӟ5%R F*X(s: fB`*L% AWDR6AA:RQ CEw1|@5*g A<\ÛKJx#-"DhFVԞHx֒NUDLW9uy\eݿV/2Rl+CyEPƳ޵#%44PBVl?bIҴĸկH؄ ̎S`,X*:6I(h4!Cч-^aX:~wa}ኒ(uQv -I)@[H Xo:#DXh% tkPD;iӑW ,\֐T{4W%~kXڳ]L'6H! O;5EQO7R|^TMҬg@6T6'N j}6A q}zPρ"EeI}lA?){ SNX# #%j{jQL<_}#yB,>[x$)'ٛ{Hэ"Ík o ." !d4nyT+]4)gV#$TrZdHtO av<<7A"w_uA/Sʁeꂯ.[uǻ`jF\2HKB,) ^xB(#P( VIS~<.ەRHOoA"pӃ˨HL&4D1U|~K( kb AXE@)fCA&HRf /`ĚVM3==r=ڬ|^^pHQG״kRS[;8`Z]Kx` $oϝ!Xv,>δ E1%%vWxn@BdS?m!7u yӗ.cfP>l1z#7P y?;1DEpƘULoU%Tx+&AulwVY/~NA|wj5+wWҸZTֈ^@Pn  @y0sO\>K4> C$1ưRB9–qa 7@oU/ŕ"'to@[it f!Dɸa@wotM[8ǝU&N^_]^:-v9ЪxftI)|— M&&NP(=B0 Bbg(TGΑ(^́SM&|WQ6V dEa9Uu:D__PqQ@dvc,8I5jVz4epP V'N 7$: * !((Np"p}'H^VtPn~:Z"(fe1ihs%DDP\ 5@ oDc1I'W# `$)Z߲)d j1Age~EN "ʰ k?ꔌ!oFdЫuQo*v'ӻFKU\U.] pU]LR,vpd{->KڑChX|U-4D PCk(8a\ &PSН\OfL~٧b}%X`͂=ֿZI />RiO1KudU;x{Md6:x2g>Hڥ>#⠑ RMhPԀ9%aTqXamo$VLy@QgGo  j٠)>VDHF HAŎ*[Ψ[/b@J%QG)pCD:F/\uY`2Ȏ}e3l1\(]|oiZZ@ e`H6HOvZ!Գ3x"l@E7J8Ojm{Qכa-AKa#{84IΈQ2FD\F^)(NZJ!:ʣ, (LXU$~i .ƻd  Ĵ+*1kģC ++qʊk 5R:AJQRSUqEt։~_AY*,r }0n}(6)àr/aEa3 j(僰Y5 e;|<ӮY`*C6Hk5 yk;2U36qh6 >ﭠ?B?@Ek`)ХUP.. [}'+ʹOʗ~,(z!fD; ?)j}d`hyuZt;{;74+{`:E|ejxjA:AUVo'ak`0595}rj:X`ݓ$dЅB5=g'$mqj$\1<7<)7{=rI萙mABHmZd&%?f'>G)]5唳{]MWYI;P|HK Ě1&=^(.v 4x G?N1,\AG*%KfY?@RWsRyC#2,61lo'Mg.6x~%H,8|c͜_Gh#%E `Ci)LiQ"a?]&7߲QxC 8SJ1qOI] ϟ*T?,W {|lҲx!pO4Y߻097W7w(4%2>V'fc`59;uS\B+j.bNԈT<A/QEE eg3ǃ7H:6ꮔuXƾ՞V~^Zܸ~F4riܠ }HEd)1.3f]E)^ G:W+# hRrE$#,G [%D31-tI-zb${.Iv̍r8(-rЅ TXJ14NySsWIiWziUYPT;Iw*(SSoy C"gW*)%BOT_eprSGp-yr ?_sUI\^@ 3,I- Xg=whrQU %̣RSU;Y(|`2EȪ!_@A0c *e08+j5FB5#,*J+BAB| ॥8TK'#Zm緫v|ҺB6֣?{eUj-Д"|aҍJJX%dCv*\)C5DC*;/;4 PEdo:bD#]%r:E҆R̵9@`B>:a֎oAb[] M4S [$>ؕ?(d;پvf[Xa @+PdB9/,NSB+r5xbfhn£rldNDv{J>)C<4K]E4#X*EX9 uU2:줓%ɹ WGJ+ ٯ,Gry3FANUxTvWY\Q SDZʈVb|)arZs\-Rx9yJh0|-CR5K L$W5pc[7S{+Bۧhrl׸A&e@;3e:}@#;{\r; Ԃ;߻z-G|3 g4[hr0v;X{يdP n2 A"\7u3ic}z "̶ x}d#{EdAJ蕗-k]ɕ4Z, Q9>g*tR+b᥆ ǐˋ;MrmIU4xW8&ZYIz `sDSg%[6RaTahTq^EXLwD:)g^ 4\(' h6%}3 ے]@4͌*GIvR%~ ."3뛥/C6[YX=7i&_J))/ 9߬՞7TN^Ȣ[,_hT@Z%W@ZҺ~q6Q̥8:OE, _,IC81݊{Y\hlz5,g>B/2ˋhUмUoO)ҝڡ*%1e"lvK(O8*H~[ Q?+H PהYt[~Mom*(,C nڀ8grXt\&vbOYPp z Q=j6S;j%5j +*O?vGʕ`ݱ |;x'׫Va cYķya r[܍BX_N 3Zv9*R%(qwsC1&u6'hϪdt/4iv;i,24y +M- R jw#SZ5z_ퟕS*v7A?r;}g@i]Lh%k 8*CK4IQ桂JIcWP guiԡ |)-ᡬ;_cpku.:R9[6:6O%MI( bL09HJYw9Vd5;3šI/^R4߂zڌj*)xJKY0lLVїpы@v0xWp2^̇sSCKRt [ljtտrr`>\7}O&{b]J\򀦝{Uɚ[t3PW4y >Ɉ¨4BA4RRrMOWuy[;rVxޘߚ{{3n 1 aoHޞ!ujJ/6TFdqҢXT#"x=NNWۻ i|}WWq BNydy/kOhڣ`p(j{`֯G,P%lQ!M8֗'Zra{ЀՉ6Yd%t-+Ⱥ4@6?Z!uC_.=??Q]تR@6 <*O ϡBIMGע!Ls \Hb"L8 ,\ALB&Zޣw=|7>/?QD:xwgжVsNBha,neo8NF&vUf=mAmF9/m>gk t[,26:Pٓx~-9.Xf oCx~:~0*@AG—[S2].|ui _NlIhؒVVp#; ]7G i8ݧ ӈE d@ )4 {0-^vAYT2؊ZJqb$m--G W Ԙmcc^}l%-&53t}ef7 ,ugREьqQg(mMj:)^|^Q4CbĝA"zh,ZE0dG?rI)ٔ #7uoc)d{I(BUz}uۥ88 ZOǍإ+WF_ :)ُWo5|~+>{.WirE.},_k^CZABn>k540|Q8Er+U?dkra-WnֹqDv"dŻj!ȸ,h+_7fgh^Zx X*Vp;euQwrahA4+D*-0N*L|WꬢXE~`H5n[VEea|/w2eՎ,Sn,m|!ʁȤ?Vik87BW҆A!vvo(MEOۢ#AsE00oy1]W\?3nv3 ӅgC%|!f~Yʂ%$ݖ+%:RJrY h\[ZfC_C{t"{tfd\V[1wNTsg AZpB>iUXo#72l\o*[lpB 4 m v>/vϩmfd/KqƗFfq٦iNN Ԭz=}mV Ѱ ~s_3ꐸH9o"TI)#Yf"mBo4M[ ^hrV0&U7C$J'o'2jwI p]Pz!e鼉w,ٸCSOnWo!UXެ`g>L?l֨^kη1H;%Օnc#L>ZjPTJCa 4˞^<+qbG'GD-w8L= fPqϖ H:Fe.`n| [l wgk/JHϹ YGk2wž XucH EQ͸Lܣp9y*Vd7a&E{K~w9<:b ";ԫś-DR"7|6a9a2<B*U)hi.TL*֨Ǧ z',T/Wg-3*TȭX|9TꝬ(ķ{ֈy/J?m\i:T?=umRf\Q]%d)H-aіK={"L.L' < _*6E~ܐNl |'޾(. "`i.#EXbVf=huY'9/L)!~0 >"p̪kq~uP\!yZ'#C~VkRijznhGl#B[:X٠y@ڶ! ؂B )M]iAoIu`k!&&`NDؠ}|IFYO@< Ml*V*{󫷨p$MDU Vcm\JlT~0 m{''=}1ӚTCԖD`mV_Fob3hih'ix<-ЬAr޺R:k\q W-DZ'&s׫l UZdm\yl8(D.Ift%<3q=qzE<{oFD9>ƣuAu (~U" Bw uҲLsQЦ]im)7d;Vyj,"+,k9TEzXO.HLJro~s^G0o֩wgw ^p}5^6sN_!Ë]WP ;b8t>hR`~=)GְLǸqe5U]y:M2R#md&KAE,R ;A33K;i{hRDsU%$(a"#}%W.|wȽcPsd 4?O|6.Ц+M/{Wom]@K;3bV{ڃE#&Fy=)pʻb}b,hs@/"ՈC&-5̦i^w2\`߆ݎ+S@9^>?#u ֪j6Ok2*O級%[ p89\/ewrnuj~@ ?/V*d3=9.I{ͅ㣌|\Z ؅!LÂGlWJ TwrNJDtiu bʋ Rɋ*LqGd.] ,yD` Y'HfPk;[2e>"I%xBL|B4TB-ʘ6 {90w!H(}w8휬ә@~3 w(c`Zg@1.&HӼl gåy]OqJRHkgE=O/e)mpE(k_R4\^f笑q1OY؂ǰ52 fE=EGZuʿ( }:(%'RϿ$d삥@]s!y $+tI^od}4u@sT&O[r\w};%I?If <_|!:%~`_A4KxRٷ2W UHJCԛTЬj 7au:kt]`0GH5Dblb3Ygm`~=N]JӤuY,cݿzXWԷ-1սƮK'RZzi׋Of?kkQǡ}`>RVzҮ~Q;ݎ`l9TѱX縊Ut}53 w >FYcwU//)j7)ZU,ASRxOEERI:˒*MUsKfC}bgUNd.vmC[f yCb3r2IDY 8̝ WBLc͉oo7jO ?GxQyf:Xz`n1u,nK-Gq IVᶵMf Xo,uYEu9 :nT&ۘC#%Z XPKͻ{ i.>M:g|)lRRy **Nt,xZ[= pz]]wD"jh+, G~|qHIA:̀covIÏr_κu54.ng,$Hpoi;4J6ŧm~Iެ^`:glٷd\i;K7Ld+rN,]jr֬=]rXTT;+ܛ0z|a=G KCO&DyZ)UPx wS*'%J/AIa V~+_YڥѴfu|N8_X+EP n{$_/"(o(^GlxKWߜ9vwp9rb&-h-хfs]d2~Ҳ&eex(n4*= ~syTz395&{*FkJ^_aӡ1LNjnbڗ >%>`9/҅rjsYXI #k@ӓG6 )9Ik4;{hJ6':?p,s[lFA)E`{&4Dw rəsJ zZO5~Q%.T1('Ž̆K(6%6NA~b<>۴a6dtw>t^.,'4@nF<ϣQh7LK^&lE29fXʻP(v'1YJ [H$Vɰ?/EFM˙WH@(χؿLpGJ|̽;_3XezEpD0Ll9&ȡ;9Z~(݈yb 3W$ $~OmGq֫u]J@*O uΫo@AP@_h~c9n[mHUj" 6؇! S?nY2 REHNV$؄C hV9v34WId}4 h~a9\f㳸wMEX$?ks WBѷn[MYd}y HsU?*onܠ/uv|( ҇# .᠆<4O\_ET.eX[|ՈwbqX㜤f%2`^A ;+mF$; $# ?W.ߊl Mk6s sS~!ufW쬳 %~q$oY}3PƏy~tȏzHqZmï_W4|EiAbG'7b^$;YY=h'Lq]Zݤ<Va؝[Q:\eG uˑ=/Rzc~3>~˥t RZI.B&W(y.3d.,\il֌/oFF&̑ѴM'#򅧓 ;fkŇ/rxxJ`YnXGq"~}YETm{oA xIY l i_,pZhce2Rɛ`hEו[B4g7a[j/՜S܄ 6G5hc@hlnt-R6my2Oj6%cc8Jw?Ý3yQ]ahnM0R!4*$s | CSZ"p@4c@gK)L&e l c9E,jXVlgtALp<a6zBRB|"3/FY#hN6*.yz(~=66L4mAMɠ^w (ac1mu8ʒ_Q;xIk؇JY@׉e|5kZZǓjvq|ۂ4( OnrkY 3P7 EtsʵL|3Zgu܇g\K'4T H#Ss{en/94?rq%2cMe~Q8Y}[<5.uCY5eӈCX.\[.ʛE7nP-MiuB[3Nhӱ"qQhܰRTbA)q3=>IƟK5A{>Ї- ˿{kEEóY㫟h&Unj\MbXfKpF" 'IEU&0miQҜ5(1Z5j1A2*.hcZۀnL¥k4D{{N^M995^x_t{'̾_W گ7jA<~=| ![:8@X[aMUN:y?AsCْC`[|n " n0jqdaMN1KA=CO/.J==c.I u.w_~_c%8/ʕvYm= n@e bHıR _vP@[K Mzc)Zcg^ juP kýYl%dU;H|lZ-ԕԴ`QJ:AN@Pg -d{-a[WA1QETURjx ڀ~/8)4x Y~zO//cu joz4@z2N{y "<O9Ĵӓ1D3?̶Jtć~5=y ;t8*`]/Q`IP˫'Y@źEB"ǹ $EX#># BSYQlYw~K0[I53%< :8);Xw=:~Ƣz@bXk Χ`6nrZh:vu\XX(Du=4^F  C6 I^\WY򸆳WxO9Lf2o= u)FURrZ)̰r&Ѐ Ja9 C!h@+ԓwka*F8r o%=NG$ | p _ D5ni *:FU:jGb2JdOrjs!dIq3TV3wa̯ g(FYń6a7-iϦEkLjSabum.q/گ(.@p5gCкX/ <ݙMuIk&z6t0 dm0Sqcs7pY! vJSqR/"у ZM (dc>QIBw']MFK ;[$3|4JҴc.(ıx8|k$:OB P_R|!vPg;|x gXc9]|:7 _qnjtxh…(Åhg#mgvEBLZQvz4[ѨƌjŌ!H\сT9vkI.Ȓ:vjB Sպ  |xļ{ X5wk[\uYaUwBL1$Hx'edugd/Ĭكӯxs\XԮhas)XL)* 2-e_p\c'uė o/=?Vz~| s޹Ȇ<)! fm >";jԮ&4 Uci (XγBF N.HI \,æ9%0PL!ЈpޝYϦ,ϩB:Wƒ0NTo&xV'H L>UY1~ 5eQ[` HL*+GF, 7MYEY4{ scH&ǭםv{o@Q#պ ]"Ʉ|}( t2R=Z'zdȶIg5[.[Ko_\D'%zi?WoaK$D}ke}; zMnZMj2K^fˏRQon@[wL\ᴺyi Ϩ>QjΰK1?Ctu7nA_@ty]xw"gmiMSt{u𽸨{珃8.+zĖ1$(bn%l#)W g|f'rH]SlBlbEu]ph z4pL1'.{On !hH{&3 fpj8\FE'A5XvɤjxXuVsnHʷȰ&T% dR gx'0[Du_*j1iz:M4 :Z#/.&{H!vS="B@ZVnB epd:ݦ2*P^E*r9a] .a;c@S%之LNXvA7$'|H#yTs+ǃ(@KЫi t|cabEl}pukD3~o7 --a(fAEp^my>!ArV-g3PrI6=VͶN,iM2h{)@,lEN#x@6b 9U`!|EQ@-\:#gDlyweюu, b>P:? UxM^:' -Q^F#L3Q%s& v@_k<+KF\Bȉ/ m9xcAT? | ?W*h\x󏃿'AM[Mέ[A6w6Y EKQJ6(CLkNGb&pG'Ǥ:b,z Rhl Sl/LAJMjZ|3 \[6 [^Qz%1kXqLF$ nѩ')wIɒ[ꅃ DfN¡#곋 ?Tgw=zk#_bqdj)ɱ6=2l1Keur Zړ1PzLSM7+B,/ᆻ='uP8ឯ ;u~y K*D6Jf͌;P-cb"E]{z)|)8f2'Ph|FݢoB dd]A1q(,3R‰jliU-h~bA^:eZTpL0dXDoEg#C8w~r6@f)s |xONvI-tVg  bKFF#QH&l]GeD/fw[q3"fd3(\1TL;ihӢupupx;^@8 J,dZ$--P vt+h,s^ )9{ES%1&d] "eo@̭a*ݲcG6mثtMT^׭X5"05,l"HdN w5Q x1 Ecgf4ҹ $v&1$FG)UqVp4k?Op4|/NS}RO?N߶0+ah1څ0/aUb8Mg!yYO‡5\ʧ/'b kdggaJJ(_R2DPq}ɽ$s!Hb>&l ?l[>Sd,,q|;IQ:j}u (.pecaw+HVOka+ٟ}³KY0$Dт'oԝCߍL"{,Z~4aR$DGL0KNars Uœd4 1oR@Xn6W@s;hRҔ&mBkJSQ-fb6%! XX`c_q1jDŰb,Yb5r.Yժ<%V ]+0uݫVeƞ;#Ζ]I_HuP - YJQkm 3t 4 3xP2Rs♧%vb?S驓;8m'"|3HNLA%㬘am^_ڵgk)u?}F'ZbWI"bʱ\nrld3l`9c2n)!852 ~,Q08^oviB <1_Ά)ii̾g I{ڣc/󘽺ݟO\^] Q[Li5n4lI幀7*78(>6UE8 cN=.n1e}UC#mp8%$bh{ò Sƞh܂+-tKÿ{( ՟);S]&~#˪}TyRZ7D:S/Fi&+ SJ9h# zcӛGhɠ A܀|\{7lA}=}Y\&"JS"`xn]p4ͷRMeSucX.s5+ l5Kl׍ySQD>dB _Fx(t4!42`wCC%h.ӋY6o3/:GSíbOnr-:.g9bゟJ!Ok!͞x4) hN[esȞ́)M(Od]S4j!װmٝb2%):S$c t@"$X"4qfJQKOj+$3o攧Yh8AǴ}-~&rᏧkʕdf' d*u렙94h8db8wݿYp[x_ɉ*~]~o!uR4MpsΝ$9$gxiz"}M9yi Lrrkܤl (B3{ϣ%\A@қ_? Qw=Eהhypّ^T}0kOܡVf#׈Hdc^t*^}Խ#qI"{cgTG5TyT[ըZp׫xϵ9Ys!7ԱITRTR1U[1B=Bpcj6Os ݳpN/ :m_!_\Ym:D~AN;r<rEI*jfω-uLN`c0pIA&U؏mt/)J^L>4<1Q3`:-h!ghw8cw:$90_%` TM 6kU Axo^\JhA jɧ@xH{!T>MK o̩#|y7y- 7\&7xQ|q}Um =̒Uf7s2ESuYAhK?M Ϊ2ڹT&ej*CN`iVrKhL?p5RfߐkKܫTy4,?5^PEfN[%x_Ov*`uqy aw 6jsyq*1-pOb8l6BL*̓L)Yi\>ڴ \~f&:O\`m6V"+qYR3wGpT|י?& @1’XGֿBUl-no"Y])V_uhDRJw+婛Nfuvq1%쁤:wqfc8sȗ ܍DB킦Q?^"|5 +/ٟ*HUVNkД19y9*o/WshkUfr6d\[BdԓR=Ta&N2C 4~^Yx78%h5ό0h#3r/h.ӨRw'RwE?F~4Bk79Ӝr]|6d9)%C iS1b^dݨ3hoD4 5 ųR–7$~y H$F"*^`0@Ĕ5*Oo6aKj{F$&NhE2k-@_+(]2Z4W!?xҁI;E֬ɢu7 ݯ92¯- \@*ٝ;Xݴd {o *mHHkl68ί́tӑ~:q{:RR\(k5^y_ +W𱮀f,N.QʣK>Z&.ЅV+4Sk%#ߘSiA3K \8nf-i}3- =u7gvH j &*MəCsha4#4eb64I>(G.hԜ`:@pVxWJ=F/qrBj+Y' K.[6wcEu}"@.$O6 DϤje!o:]9܈MQO`lJk!j-ʱU})-8M#v xh7ibq7˻1ʝqqLV|hYlEP)KHj1E53}UTLYVG) J7iE?P-$tuX OViuQ]_@֤Z&?2[nB@вThIYgw_zbqB{IP ?ېeB*o-qބJ_7ewIqOMT7xֵh^g\׮FBM%?uӾJ*Y:l74vIS~筡O=g=_`ԝiǨWm-uRpQyzFaSE6g0ct <~n<+-Op@%K h$+OT w< o%k꿹DLVPCؑZ.GbT'F@HU/'RMչ]c}?BrHi J!kK4*QT}ts6xhf@+%߸؋Nbe pPrc6U-5%?IqH+NJ|UwI_AYrsP)ͩ?g̓ VrJYe$f{Py9M]{H)ў>Wv)܀P+rĿ S 9(m$ydKejrͩrB֜cM&WDS" c፣iiΦVb[v^ϔ1ղ ly0lkaQ=MsNPxͳGCPvqOzxFY$l7;]mytv!eF f,.`e-[?>dڞ@g"IByneK#OhUjRao=iң4fxedC9`CQ24|eFw[0W/'ȏj4.݋Bo=B1㙜D#-!@9ԍ{=b /IM~iq^* 4 ͂O5;9ULUIH/mhPaS5T.lu恺M}d'TɝNzpqoѺs %ϣ›@'K Eq:Zvo"^Z& ⹺)$ 2 Y[{7^$ͽ:N(9(umȶ@kYL+xHuG0ChDAqV€o)yFjKK ߔ^f~h˃(Ag}PwԋK\Bv]~hT1zxff ML>4Zl9wJޅq@3MQ_mDNGM?v")'Ur97P g;8OK޿\Ӟhr]T*gdQMBAsT"4s SYyб1UMm ` ^v\,O:δ*է#*m^ʥN aI9.eN ^@yxN7(c T{TYw'~J,?O0]Kdts_`]H^|6/ЋzB>!H-J(.eK\R:Tr@?]rg uf򙛥 [SW5.j{[f4kGt֌Fɻ=-ɺ->Xg{b,Ae -0)qSݭ/_RRο ]!:J`sߴ q n(We<F1x1JcpR%waEחiV?6>hlf-v絬P3?xO20\f6@$3BЍ[Co Qy\8fkp9d~6Ed5?LJqr\lX|K4IFIU`g)f1uRXGRf}umvѿZ펲6nE&$J:=G)侠Ց; ^VhH4rj HR~Qlm "0HRŵt^k= ,dJ)͉ǼZ7Q+-ZeߞxGY"#ˌɺ%{82?;n>Xonxt5a&mpD7GwO&ޞ|T*Fݪ/P-$RI =S%&eJxN?ݭDXۓL?r9iVDJB irO9-3+A}FUxS'>Ru.z˾T7ejkd״9[6 Q,SL2ʬoN3}n17|jl(]dGf/6^7 O[Ff0 b?Fȝi]B."ծWD3ASWJ DH)\NX1F&h/ZXF|$B?'T{sLٴ7iҫ9Ą}o`dWe7i]AvSBp/.ct|o>4Jo"ΦzijH B{>ZѰ8)19p\&`!^-y(684Gڷ xϞa_ lJ; =ZAP%ݣgtle.Y2_n uglɀ>&Vf_=}FKhϥVз2w7뎺;"epqkq>q+Ś2Y77 G~GDjNJVڭ>e[ :4MQEbj\v~m`12릒z{gXKKrɿ΀52WkP^7>{51rd<շ;NVNe5jz\)TS`M܋.WLߗ+*iI˻~k XC5\ԃ{aƞY<ˊJ.jOkHCp IyUTLlK\O4p,bSFǔ<2Iu UBZr 6!mEd՜*"]邢-- i>,ExHZKƋz}-(}-Qcd|.?K鼞Ѻݛ[&7y9?;:^ L=rZȁ.$}~sf: tVmnZ;E%hR!ӈ8S쌼5nN<69$1y?pipnHX0·sXKrWSWz2pf6]BWU7'fCײX:)ke ڸ?;#U~-2f2veţ+/)^j A,S])ΰ!#: ~DD]>Xn%2:ҭ%vć!yg=؜U '0SO8&+ԯY_YVczazp)u1UC5[:cl mB'mrЈN󵚭QHӚ{BC@} k]Wm;-m{v۴9_8|I&Gy= $-wi(}PnKH]IL52]%ʥ( Ze-Q[K`Y 9txogvff57=vFŵ>﬽o}?x<o|ï{k vj_IZ܊f]떎|tjL7n6y7F7z}~|6i &wHH.\TdёRpM%&;kQ7ƒU ϲ o1Fi~ ;Fo|W}~ 7C:{>tƛ N >НMэ]]>ƷDo0@(ko  o[4#8 /hK6>2!Ļix޸G_x݀+8MV8G |is:i':'qF<qk;ks=okz|.zI߶x9?W)$x;P ~>lADї #]Qڻ,~@;gEJ%Q92+M ٱ-ʗ-'[fKnK~FJ3+b+llT8i(@Rwv@R/.B;+|J8&SkHQP;-=[:YEIIw<1| a"?}_9lP5~Z:J'[%†WGvv _"hP7Rfwi3j[vjϧ3/ǭcDyW+=yQd .Zo2`@D#*# z Ƚ^<>Y<` D I>׀z E`nPO8? -W)NJ`USܩ?hr4 ́ٺ)7{S9Ui*\[PM|ٕ#^:]@l^Q[ ":bD'=A'l7.sq^ZJa2pju f 1X-ki<<`d@݀Wb#E{Gý.mv=X?FN}3ة.լG$Q)VC1h0jR{:%K B^5x /1ψdUSQUZ FcױS (7>couc6O'qYtO w(Ŗ>Cn h@6G<5Ϫvvv߻4p48( ҙ["/PJ\Cm+y Guב0?G!ٜ'sOume93W,;k!X.U&{EEQ&AB((8hjM0P? h~v9]M M󋝝;9PQ7-š|< F᳌?p c/|>Do6ysޜ䐃%ؙO#gG̝FǜMv A'$\_ePCHWߡ׋"mtAS.5z? s_b X7ZqfDDR/o;9_+WQr^3A. ZGџ3%OJ&î4~*Avo\bϻxd}mLw-v ϟhwB> oKEЉzEI^B68$ZgPC _dT A嘩ГiޫruPVJwuv{)GsثG.$Qq3g ̲1)Vrqv) 5mgmфՙK,BAo=G^ tqv^%ؚ+UE|+4rB̚«5]җ 7.wW!f |O. Dan;sF6qm<&:|]J*2~F>Mm-DKǿ_i/%sUQ>T_֬d?2_"Y y%zONm,v#@Hmr$f+iB_JҀwQ ih:ɶZ>@5+|ôfusˎ귂@9mŽ=VC7xXߤ,g $&F'Vm-|H$.h${AR:Ѽ/B:Ic#TZY~CT(^1=P$,#e,n-EHVGՂfT_e Ny. KfrɜIfii9@&}Em +FT%L5vX^2% Vz/jusى[ ,,"Kz!GQ,⟙10?GT3yQ™Aœ8;gu)CC4]}n$ýtDT=x^mzTjlAwn !N[=KB24 \Zd=-T Q|dXz%M[ZqXYAsњ ȸ̲}er|!VZXy.JmԲȧ"Y^8Zq7keU@.p*ud{lЮ4M=<Aw{~g3[` ENxةPEg`0 @UѷNNotςF|u3INX.v\=\it@'Y%_c(LrYb~jͽANnlO6Lo#ɋS(S+<_r}${ V;q8`%Eh,XђA4Գln ˸y K8w`,EE#-aJ8c "'t#p4 kX'?Ljte(!>8N/t69ιwLm%sm XE,σl(?=S7%Fi"*,G+@j1 CW3*Aa ߀2Y#ŵ\7!ٛ=/{%rQOLr<6ERxs N{-rΪĶ\ܛ7vж `4FVIv[Qvf2jM q\T4>jIHe"WtjAl!WM\!r4Yq`™<$@ :e86h~ *4.yМh"l0F"OlX*B}\ya' F η}*v3<+Ji*@gbVkWd!vQ+pV>Wô}vu?ʙ Jt0D5;ET>]LV*RM|FP!. hn%`޾7;;潊`Nz,f h*V$wzbH:: X,E ٪u|8^/ xdɄ ,ڤ(D 2;2mVxi-X?41?1nNiGir]9.]r1 ?sE-; JH:H&|'$s%3e Ӆ%L&.i]Z?ٌ"(nF'\SyUt[iꧤًsON<5o?R\ ȝreoǥ!+p:8Feow튚ـϗgف, ;; Amۉƒi.`4:lǕ+6*gsc|H淴h_"깠(\+ΐju9?ɣ׈OB-VZ̹U>i6$ k(G~U4c@'ei<*4 Xx wXKGu&oαE*"mOܽ/P_ڈƜ6ҹ ԫ_x#~[-rShWGMN|-M(f9YM[Y4R Z$x[Tԏ8Eܲ>'GÕ0=>zE.WɸG!iy̙Uf:'kADo4H;J4NWtsBM-y ۬gbIH]EЦ"Vҭk*9kiK?N39ei _ۯ+6WY @)- S|ퟤx) |pڴkj[Z(8I;U6%l͍R8OӨNʘWT (VDȲ*ؐRÿM)ּf^ڪ林좮BRbmbrω[ܟفq8qJ=S2:vK %&PqNqIeLqJdˡƸҜ≓q8'MlCz<|| dTC-T/; %BJ|C=ZlvdyO`{ f3$u%͗]f^ID/PŴͪhʼ 4c t\Ru%qx;@@g7h֢ᬣh+-'f+M|R II'&^@*s .(UQc~![zs=wx#64+9#A;QL]Z\cL2t<,pm܎̓@"@#B{=zLz4^WM5}|oi厡Vg] ;c-C%헻ϵYk]o$si"J%ͥX>ߠJV|uTuF|zP OX'$$NfmYdvLxvJ{9#WK45eCf1*4tZX5inhť2>1FL/u'T2D[8vR`טA[p Sfv4гYxWv)8[ٓl@)#H\]!wlU˂90[dKW&ST.Pٝ'U(2XJ i}(F0RA<0cM<\ڧ$20G<&5[R,$Z'(sվQͦP-2! _PM2̚&Fl q}(dgz:i W_&>e9z6a+,g'%!>q=ىGM,QPI>yh֍K.ȸm?"emC ԰,t:u~߯R#V/Vkb< Eakj„pj&5HWs>eY(շtPm΋s=xJs ~Qg-tYK$8K^3 ^w ~M']k@O@rdݹ86N*n׶Bj<+ۏ.ǶAE%0k] UEjieeRK-Ӄ񢀍ƭv4gxf1UWV{f"W1I3Ӹ8pU(U@eϫ}nɲ2Bqk3U (а <,7fѱa,7{fŽi#[%U^" Mhdt4G[LnIc"+!ߨ^KE5 h) ʣ \֧sJ9AZLN&tj'i=vx >C ;JZU8C͒)>'L'/Zvp1iO N[k3w@~i !/ U\ UݐO'V twyʻAt'" ~_3j\ZqAƝ ʓVU W]Y ⪻ɖB:/WntTԝ(O/=87fm9pO36׉%LP{pCIR&X&H BO B*]Lyһ*At-7A/ )\ E&R9-ʯ~ɒn0zi=~~@qƁQԺζ1A`eR83mOO򌊂0{8rgju\unn8~G利݆8E}~ dzճ X)Bw8V_Z[@AL) c= XtJXDh33h7F*E#Td|Txx*KaSTPX qe3elf?n5O}Gg-x5-J+/9M0գn۫"ۇ2AA)G"ԝX_\$ɝu}Yb)YU2(!7e!O0'lY&_O }Kz]ag|8SӏwzؖiӀsvo! W~H}^AI_j̿rҽzѝaC~|= mkOoˑM}[mJD3LFa%WPIX/~,RڈaouYN`>W zp^?UF`Yw^;Dܿ>""nQp\!"x?MLW4E2~ar q/VZTwhͲn=7|hՔjYI<ǽQF+ Ĺ]e_@>\>]༬?wb1)\$Hj{FZU :> ߁|~<|3I^ۭd-͖)\{)&"V̉kJm]2eRS=Q|Y0o_ ] J,TaC\4׭!I$A-lVZ'9P?]Pۗl+ pꇭg*(.%9*S.=W50^2ՁJݖXj,8.2R[`Wz&T:.++:]W^~lɃHf5tn@ERJӬkq啨kr~4M2E6-4ZX6n O{^ګLu=o 1)X8UzTOnstK=K̐^혗Z{gaPw%sQQ|l'm7}o>%;F _vs:AkPp)Ru&=&h5`> =冉#'2=B4Z1B)Ay|ۛ 0jC%8VZQRY&7M=ViI6|K[og6{NoͿigM7 ~:_/ص!v>IKAxAJd;\Ujdwִ<֢ɂ r㚆{*]"uTO^@Ƕp/up~gUvKCPO{]%Ži eO|I55WG%!h-H 潂|e`~1)Phi!Z r}?nCf/l}SruM+'kȮ.2SWExN%5 .}e9{}zzvq-9dyA5Ay7h6F #xֈK[ƓeIaÒ"'5Ԛ7X|::4p9BŢb]źF@u2K*z[Wc}WW*AJᑒ4SFN^N!5՞*~i>kL_]M:^Q `F32Ѳ5CƓ&ʔQ腵=S`~V)Gc%` =P:_r!~$:r /X k?ÚܾCpy.Kwqb,d[4/tY'ؒt>ٱ0jZ|}RZWȡš$!3*;$TJDk^p%yռ %+rB `HhM8N;;lGktFS[բQpM^{k2O gI`NYp`pP{Np*_JɥbqHh24CSFo5[Qj׃~w2ڭRJHN9kf.td/5m\k8`e&yr UEl OfHgUӜ4̡;XLa={ka}gx~w9]N-fϧ8UhG6ܢ"U̼⪌"B#_]$pŹUλe"Gןn]ltr9(e*-5҆OH ,iJDKR t+Mh\%T:9i.Em&qAww0=t蝐7K BBVUoi#֍icMcC&`k!M Z&c!["4r0G# 3Ve*yTI^7aS\mY"IJfv4~zzn>qD@ny!pW2ە,=u4-`x5u`Gt}Y(itB27$IR9lw6^F 8Cv1!=±!(똯i|s *j@ٵܚEXר({5ek/e1+~2'|e.:͚۸\WZEbۄ8ͳR-OC>Zق h=#G(JUIXbC t,"FK#ZlA9M;:e!P_ԣEP~FPWu4K./dqs WV]?䊽,]?qK󋓝m7ѽ;%c\J睻R$Xe}#Z+4MZj/1@t>\h;tsp`*,EZkPԧa%"kmdpI_`!'k}>S"xߕ7S63IF@gVw16#frC?-r~%TEtv>LGOUŮtK1 ĖS׉ L%}5+ t?&&Dn/+ӛ=R JUę*͜3/b┺*q=K(ۻ@Vd5ml6rVa߳7'@ABYݯ:#//R:dί2-8DʀhBer~DV1.OVN2yʷ\.&3{ƭ jk5`4 귕*Xrtjϕ脦cR ̔-TK\I.Fv(msKU A\rj3P6MsQT|nMVcR譲q3ܺ,I>y3u,pn^٣||`uhBVE4y4bz0m-dGq쯨 gFq$%) -\A8G% 0W\ƅ]uIB;]ɺ 2iJ ]k]{UI})վX8h)M+]aŲą9E\X 9\EN7 rr9``So$k7Sp)E Z: |0B9dfyVAV5vmɥFL@9 7pໍv qLh%TqЌE$iu&-Ub1qW\Ɲ!ZVG\5PƯ|6 **,Uke8{2@m/{^W{Y5uD hn^V_m&оZ]5^hɄJ+EV\ª2uT<e=?DFl2 , Ŭ߸Hq2y^u̹޸:GO-f _rǁW1)]xnO;dB"N\\Vf5u#zNfiMV92cwHZu[jdAqR?B{3Oqc7Fk} Ie}#>cp{M qkEԛH`5&9J^dمb̘rHds795iꚡs^@wo<^ވM T%? ]kZ B'xnGf&<ħ@F畖R ȡ5V._}r4GP1xE#Cȸ37s2oSW%֜bP?yoéxe3rϯFM&Sa}'eDZ_EɦF [yiaRgУ/e{-&)XF\ߦ;ĸÁO8JS EVI37  ^DbܫZHziY*HhàQj z̸ZZ6q9:t|/1(;poY]=m3{ kMϚil @Y@*4kP, p? < 'ɵ$TyCݯʠ8 ~V~;y5])y[.MBJ|d(_Jz3⦰roP&^ Af:O9q}Išՙy@+Nl6 + zanqA i;`pUow}[ړ`V@44jфд&ȷ<Q$5amFH)?iDQ | ?^lA(MKDҜph~&5&T[8tآ`;2[d- **b)xÙf_ąE# :s>/f#R݃dBԋ Q\fs4p|wh,#o{ Vzt+J8G .[xygDwN2kKv/*Ֆ090ׂ)ZbtEVb>I á˥|u*fŅbB5^0d]\.nW <oHMUk2>)BlLQ$#_9f ،7q)ma{}qG!'/uB`mDP보ߡ!**IZU5U X^QEI^?=v&BC~@} #YfZ`W-t_ C @r ᑐ;'$$<%1`rLX`f@&{J.u˩֣ٙ+5:^Ѭ>E/n\=UN~>z ?Uov_O~ x뗽Zg0vtjo~v6-&<'q$i680~kxb dϢÅl$/w[M(ᯆF^7TO31D+<^OǢ(C >/0_9hg#/=y#q{tx4~W|[^G;/|×{ ־D}LW~/BdNZ5w" '<<@TC U="( #HyٗtO C͌ݣwۉ;q'O8xG\p{$yPͅfI2K0~B0,&ď1C?4J.J+s X)iRP{ b-`5Bw%|hlMUD ?S#U^P[a12k}@rW&h`ҥ0=~3, Z1iVBuΨN& Xk=F*ٛ!/,kJ ?$p @=6S"BϚDَNM[V2G*H&MzDͰrk AЀtۄfxS ["0ZWy vDKs0./3=EH+dhuiww_$,`V~a9Ve'\  ϓ,9KnPe2 C +hG̡N|4=VV@,Adne'~+vᠵQ`t#9RZ̫X#%1ȝnOQ #X2mFtH,hmM1Aʠi"ًȉa;jt#qR檁?7uD?y}4y} H^<$G&: ʯh'42]gu*3m۾J ëK.Тπ}Mhn "k ZDS\LR'cWjkdآV,HO:DDT.Dy_ܚp6v*6hbrK3濬㙯EI3Sh1:d3 u;yʹ 4 h/Kд BQҳDlE+$gy$ԖeSIΒwL6_&hsOC#'9UjoV胵Y6A4C6'Vӟ'$n$h8Nn.Sld Qy:8R!|"LxxƐ|Ӄ3{Gc>ks  ?%?R b{bglټz"lɩ,(>"iKgr#.l6(uUgٵ^@&lJO*^lduGGqg4Qb.]`/}РQau`U׵hGSKλ"g{1o u[̙,ZaR868ŐUDA+dY LM񡤴GFFiPA' e@]h X[r< 'MKݚLJJ5!b5J\1I%* PƆJaؼ ^?G7V 13g#z$6h bG_`L"/3۠s5p-y]<:L'j"!I< B~0L; ?6F^Z͛Z_;}-l-P?"sZA;WRͩKqi%(;mg d1ѰTF_d?1g@ũ׊cKkeWH˭lوN(Ig lxyKwxxidShP/?*ENx l /悾$@r\N6TFݥ ]vH0#jR2 +{L CVI$LBLK["TAӏ^y_9 LUlL>*Hg΃(2 Ehm< I(>&~WOjrb^S} y/]9sVapyY7wU<{ht*DL-S*~m˺AK0Dlb|ٰV*} nG8[d*]&LeW~(5kn)x2t/X7|>Sʚ|KH-=<5$Kx18F<|Hq3$[OUF  r&dǢ]+ͧ Wo*_l$j^53&ウhct%ǚT{YG52ϋy[雡F] ?k5F2QE}P\gH:|fxp3:p\~{`_pn-ys89جa*h` Q"l'gRs%$X`I0o/Pxc-0/Fy<=]N$?w ;ƥ7 O?-Xe:.Pf@4C'X%fOs\PZ0"aÙTBcS%yJLPqᒇ oQ3<,ѣRp:jE4 b &:tP+Ix=;QJ KpM ?[.q]kHV G+ #5{N- z֝V3pW%<#;@], 0VaD:5$puDf k(.9'`H0WAE:޴7$Byxr9<7cx}M-I F6~ X/h)R4(W8ْQt4IU~Q$ꫯ+^sZqGKhc6G@c_[@}t<e xޜQ7z;tl$vE!XW:3~n^MeJ[G5 <^@L#OӃQg0T⦶PZZ :>OZ=|$odѳհr$:HYK%mco$4!'IŖj.y" 7 zK.O.jp˱L/P3PaêXTiN ɐTaT?oFq[aC_XX4kpuw_D EGg%L=i L!l/+UGʫz (|LE0`!H9CpVșAn%MvwoP*eVa|fr%\~:([sHOrؠ$z$V**, s[J?\>Uwui&sSF5ǚ -ĉ0֏yq7"K%M(xN& FE)ǗH-711W ,Wf=ư0a !LP:BA9BH40-U@QS67@%%Phkc_AV %MڣѨs28Ո* k~PRmELV(šk+DUir&%Qⷞ;gߖۢ\ ֵ[H.@Xߗ+STR7Άr8dY%Q$,8"h7Oȍ~W8o8Dg̍t&Gm=`* )%}-*wΫ7|vJDȳŌ. 8Ab |fN*}63C属*hJkO6liXJEJEH﬉!/0\5|AōkC^yg=Y{~]MݓW/}իuu:o!ط]~LfI:IK<@Ա(\.la1K)ʵNJ0"9AQWhf)I#  LR`4J@|;AʈWg_%Zr `)FuŊa;uʒ%!@ mIЄ>\\/F (qJ+:p`&yq$[nr7H3su4YGq{ur_̸HQeـKT+˕xXnQr|-LsiRNPGXKmV6i|aAd vKiaN ΀ͱE\Js suM~=F"z#Tِ~¸A0(AC 0؃QF :BD{VD IoFPԔ鳪,jPA8\"%R5nРLIG ̔F _@ md&YNsTJ@Q1 'W).`2U~ Eb 0qFcݸߋ;*ַ |Dar۩}>[$M_i$ͤH @ foL  ,$H % @zG)RTKH̄I%9>|,MQ*!]-0a .M 8ԥUd0vFxԉ;s~`hORcG}O=Fb;nY1nwhګ.=xQ[ ^s3IOq=Fiۣ2jPL/uCj0EVgMMFsyc-|ӈbEd?֭ɾ?C'\rs&j~TQU\FP.sQhlRJI9*ف [q,zf?{o?,X tg ~r5ֹM@MXLB݌C&p*9FcRԃDz<=)H3 \$kU=\Kԅe@d{'ݣi`Y?C#Զ) \ 0kxiA6NlV| 8T xk_J3wAxF8}hhRs#P!D PS;`Mhm,-mQnJ7 P̰7QjR`9մbv%et1=(uZY{^E^d']7Y6!uͳhTE)moIpn82`"Li DQMObl;I`łO8g(W;g✥r+z!)S @{V`-&5ZҺBF$ЪRHabR)x%6ك(J\EX̂ @ԏSr0 urQb 'ཌྷFQ1$bQ ;78Mai&$-3=IRݣ(L4FL#"EP(٨3LF=Pntq i"nזa4rH4j[M4i`/Lޜ!(SLqC&İУQ>-)&tbf%ʘ"(č4B7+e)u}tUD5k"'@4Y'RP3,(sv|e6ʌ :H*Vp6\f_Ed8|Y(50PXLj&lc<0"V+oY@0y_ދ=B T['E[ˎ uaaV)E4j {|a*q,z47<J~ g ?Wqm@*;,Fu̻6-xio. >&RbggV'bmG4( hzpn>G> \*&ȸA,{/PR׫p_}ڻe5gQ0r8\ʓ Z:ȥLYpg;[%ĩy鉳4?PG?!}fxx^x-Vk@e7YƎcTekRJcՓ1 Lt˧L˰*Q5GM w+RVpܫ>X&^H/p|M'@z¿VN.W[x(XԵHt*fW8I~P+ȲtЦ) ʡ=}@K)ƛ# qHd.SK›+dKgkd2cv*l_ZsdY= L%Oyn Vng>XpܯMtk ku/2%3N7#L6a'sE nΓoh?RS.(XΓпr'gI혤v\)zPَ%cѮJR$Ixn*B,E(ahR!EU.]L)IJuFOF.&{TSx 鮒o:{KMbrv5.Bp[owSF&L$;O~("w-SySi|-OGpVpU[e# uLIN8%NڡS2zډ*R_+V֐`m٫K "퇊P-6z&\ڢmR"&;;jzWfa^͉N,^6WIPR^vF:uRou/oۆBvkXM0%&3Nˋԉۖ~L6z`X+/ٞcNJ,^N/(w6 AXT e0 G.]&SImTΟڼI_}Kw"WzbwA}mpЖ- /MpSjևHm}h*%RWFdCƭ3la})(//` <MVr 1KxO^ߡgr4vA%DaE "L@x2yN=V LJqW%vnO1{lM8us3 UEVJd:/ă5hMdXNt>"j&n:IpT ϗ<Td-f6>ޔ'ŏDfjlΑ{M2劝`7)A Tó6z4;H4?!G׸odꝂoONv]jY%S9Tv5Q@TAuTfTDm^.~ܯP/nn+nKYrea5j[%|8" DlockV!/t>!j#W&;ep<pB{sx`H9"s{dww42^J۵~+?R.Ε4ւT7tZür)QYNK$!REp8%0.ê=TG5UzUR6Cvڦv'b1n#GqhzT|sr镽9/Xê[q?5TVLN7$$Re- Kmh'6-OTɰGx89`pRbcGS)5E;)vi#^98ybk$imQSޅ*z9%:Dx ƫhlߕgkx2 v[%3RW.9u*.nV_Gi_m$C'}IaFֱBò UX;mWӣtL%W":3kB$u6\]& _ZNg=&{͈+=)XX87AӖ+h.,U<-@g{qMfpm:=V6*n+6-#m|/ǡܝÓA|Ԟv*++C}Q)貈nK>~TuL9A}uuVJ)7oWe.z.r3ጢ<[N.8Y<4N_'ز ߅rnѫvUJ(a&6/x^bؾRl4Ufw`_݅e\"یKO/w[@En:c^g %n+YN^aG}ܩ Q{Z [;Q3)?ZyZ ߂n+cIu (yRg3j%ޕʶf/(ЫDVh_fihƱo/pؓ\P$4J&W)ٴo  ?wC`g@S\>Hn^Eɼ}dpM?a(p-/t7 :K_ U~v6ۯ(PnKPg.Q,o]̢$+]Rݜ_ͣyۑu8sgXiSL J)&퐃vh}@ChrdkXεI.gXLftUY$ uA9 #Y)*0xZ`~&dl^/MS xþqEL%aN%ShgJ?>Hi2_5d~4ds0Mdj!6ggS\^=7³74bw`)nJ=`4깑F,]Tu kGp=MV?AF_U2taZx Ec1Y#Sdz٣WXkh⠍痢)=[Y$'=( QXHzeSb+v1ϳ*OHu1Cclo//?GK&֨-e3n4N^Eɕ"շ˸?Ev {U+a*IU/(@g:Jߒ\:l^ods!=Rfҧ+ɫ;M{[I=fz? `zyH4JIu2 VrXmmҐSWk"G)xH'<$K_zy䩓x~c7//q󎈊5FaOFӬ޴5S16⬈ue{h,:X}S.G3%=lO M%tYlR *լVe)5 u9b΃OKYu,'0zu fM=S/i@)2kXtփ7FiA5ZUD[4/`Cgm|t+[I8inofK()ǁzҋHFR똥4ҙ n)4Kvģyu4ȲϮƴ<#+BXݽ8<{ԦޑZ@3W={g%ѽ9vve-Ŏh̞?79lqY5ag0d˿@Vt[\~ (I v(ikCqH}XL֮RaadaW)}Eu^՟64qkwzTisn[|.tYd0.&hǨtว4}Th EXUy;LTpu+Kg)WN\M]~IM|'g +uᕥUY,RG5kiVⶺ}q7 ?)5p4XeZ;Mr0iLR*ҹu8ܭ&[\l-P/bĀtAU*.8cyQǛ`*H| 'ڗ4?lqGX? 4gԣ([/ۦNuhXl<*M^^$#8!]*;0:=QkXNn hߗ hq|^@}psppx|kw`\P7M'f50BpP-~1#dLVQy8|< =m@ہ0F3U{'hk2[D*[ N F=N{4VȊ-PRȭNVk"6]`iTdG@*Tm x^K}Ž :gJڪmAi[i4gTjSCV[\nF +JMw"bФ Z66{U:/_C3l~glv٨&T[J9I'u[5o(UN6ӣnܙt^1M*FF$MM[Ho~Drm28'fIzoPpQLL\^ݎ0Yq%us/"TnE[@l9괍 ͋h!׭; e4렺մOy+̺vq}ʯp mk彦V8 ^Ӎy_.D7lp1coFXV ޳ҚfD45F&9 #A\^Wq 9H[RΛgbY`^\ i2Jowqpۋ#vO:~^"_)Hkr~Z:ܽK ^YMa#;^]a^CvHb=ډf)j\GI Tsr5,zW3t)+gxBdHW,b OЂoZ٥!+˳P qIW5n3KL6m 2_ƧJ،r-NLh8VVR$'XSIy$!> NBBXA`:%ʪrV &*H 6H\R//s?;KI.Z83o. \Z@uD_R[ͪ$bǓ~R\0nV9 7kSD4F6 •*ƞV(!֬]TVl`%`[zu4e*FmKE\(lK4M%\ʵL'TrfE-L= ޗ抋uR'&aȷߒZt7Pt ͔KͿZZ& j@So MڥG%(zp?[A)N$2凩^SFRf$^ZZ7:O'^蒵HAD`WZ͌OZy{y01{9Z_]){lGkÅ㝮MiOtbA )v5/}\c AsNTsr6j;`hӜe~D ۋ9M^;d;(e(Zfzc.FV˔S1?Tbp7~|ݽJ-w/wpSRNRX (A`xT ?. 4)'J:-:{.Uy#N z<q¤DNw ?' >J ;<J+gnH\qï (8 | ګ~b<;lBڀv|ԩRgKz6ܽT3VyhGQBX*@tCIS8m0Ģ l ̾t+Vk/,a.zq,^> Rڮ:M[ +i!> g%HL:Gq=ݎ>x/> &Uw hA}Am3R!,OiTǝ(/E3LgkZW -WN%_P(-[g}AMU]-ׅw2{-\+r0"|SqMq#F\DT+Ι)-h9/ c ]炴m vVQ\}j`hmMmҖ-$/beZ+~_^ҟ:sёo ̲iԙ Y`Tðeq\yְSy!ag) o|q"!Wnh~R/c?Agm;hHF)0v/pi̎\ņ V Wrvm| .&}4=+aHvlYtv={RI*Ubvl:I|*W ˥ 鸻E4{%)cBbR|ưTa*QHvKe0@T(}s:"BOFKXOZ @ q@ʑMh\@Mj ?6 oS*n;Ud BY+HA'@4AJV&! ՃJVꟂ|>\>eRڥE?N kLlϖ$-vQ#iICz8H=p=>+TLuhԗFrs;Hq+BWQ&i "5d]L~r )K644/J?1 &}A`Pl_WHfmM<khw|ԇZb4C38e_ܑu7Jy e܌>޷-M?GyOpwJ#t8BCP>} ]W$v}C@ӏ陁b@2M!FbH0( H =4&$Z)A  Ĕ@H ʫβV_|>LwO'wg=EjtQX=ϭߪ|W v֏|d6{Wy_7>A{Tڏdz$Muc\m~f:iC&mGo4MS&Pޟ=w*(!'ɽD'1'ĦQ%EIA|okL$l-Ni7Ĺu:"| EGtȋ awWj% h8 H潣QwoD508W:f>=ԧ-ʀjLf%j*th]:JI;-?(il? hd"`VWRtEt6`gv9;;%lE$Vq[R0[zKl9gftWdX \lVԯH@Rھ27NnMv,Puw)9!5C#"DK`rA'4jovO?FcȞ0V-=ٜm?㨲fc֓c, oK$DsYvEcRA^ o; ϫXO.b}ɔvKRϤDRaK( R0xuIVA#%&+3%dN>M?% #MD[Ds>)ՔE`E ^Nhݡ) ,)f`&JGyJ^z(-f7vN>y+(6~ % MHH YQLb¡'xyK(:J3=S'xz|]ivj Qq9a9Y)psIwvUQKN) Qp `CB»0>X d(Hs0DK2E(Ne$ƃ& ::mwκg>%eYYJY=:DM|x ֓o#'Ԯc\H,oj\0f.B#?XƲGӣFZu4gA,*X%nVM/e<9kDeDQH%~X,dޫ>s'r"eb(%+Z.|#D+ؽ5F}%-9jc*Lq)O I}%SƆE ,?7.dkiWkTQՎphP$WQR3oX/ڊ W ?Q4w*%Ro9Gk8jZ(,["RHSTbSsN-xΤ2ǔ,x:.i).NgXџ -łFүU>S]ް;peq/FQ5!`8H< IM~,RrHv#/S44_Ls#3 &PBL`;ꏺi?4TCC"?2nξ9hm>wBKxmFX)V) r!pٓj=i'S7qEHHޢP\S1K@) V~@+R,.OK.H,5*M@c)c}׍Z_X*4p ?Q2,cWG0{*o\(mDS izFe,VQVCړkyAG#5L5jzc eo>@6Ed5"V#{Oq]\[T <;dH\8^.CUR;'+& ,Q$k;%OTtS}p~wP"'jUT[vM@#9Ra5NJ**c+a.7Ӝ%D\ßa+/B^Ix]ٛ"zpNX&a5^Iʉ?B?dܯA8%U&IS̨JNFK];"1}YNIUH٣|pr9)c&'ft>["ZlO˂/ T 4sFgu#BTl@$}%[~kb+3-X|j yy4d~U^h졬YUz4G5'ZTa5+oGB@+}EƒBJy@p_e]- 8<&4/dgDu~c%OTRwɽE'<>%0w|1u:l@BJ{'O0/ s! S97z3-E jEm*qrpڄg3%gZ. ((6:޿] `3-*I^TH,VNE5Khm&2e=r&˜V^tC16I$% qΨ^FJ]q;0j))Qs/NyX>5Kgfx1PMcC-Т|&2^xi 1UB*i6|匏o;?cf'Ⱦjd;-f^*J 94߲(8=B_*\PC78q[*6߽DJw:4/#&ӕ%(x#ϛv^!7|2+P>yVMIJGbu~cpK/.nTV̖:To.Zo4[fg[ҝ;dId$4owNRIx.NA&Pps Na$Q|%|kfD>޾+%gTFCJ*\TJbIӫ1i\8vǽ&EtQ,S^-+<.LP2?Gý$̜##;0B͓8lFWp Ͻn;H?MF=ʘ%퀍X-v@40[ʘ*-tX6⧈ ů9P]C43Uu_H]fOZ<,g(ah$:[Z.邅RV8WF3j9[.:u6v/bcq4#%7pW͉n 5&SK{#,Z%J$!Ru% .Y6VGҳ~_Um+׉HߪFT6WI M FFvTtKVWTǶbu9 !b>pTR0q2XO&-rہ6v$IDEϸ$ØTc^9=z%2;ڼBNNSHo3YAnN87Qԟ8)DvVYwN?|UÄ罙xۘI ɷV:M$Ѯ2 b tR+#ܽ);6A!GKQ@dPl`F#1.)i܌x0e8;QQ"Q,nx]*ΰP+f.5S޹+Ŧ/l.G,^@VmW l7Oo%uiAn'QĔ.2z~aC S9!4w4s+P_WD >%_H$^= _'s({rQ}5~b{O]&y8C@mwi[i wx@ 'ی,3|` ;hbP3YF)S»),ðZ&i7> $xҐ)f"ɲvڧ\y AjϭվI0KzJSq;w[2ݮ^܁Oyzܐ kɭdMZxh ~3%hP9 ^ : LV "쓒 i()di9HÉfh|YL P5qNb),_':5KR$~W \f+sTwCڋ&nMNv9 HEbpwXkx7 T{|8)ɤ^C&Hܦ*)u,&4KXTnIIi(j%\ƮC)#PK24UB n<B z`tNs;'_j$ -Qt'кy5:ߦ^И9Ihm,-B#hQ1FŒ nFkBT,+-MX? "A%N?=:3eo|~mu/漄VPt5ozSosy ,BV7z}ܷ<3$LMѴ(ӷvjד{U^id:{߯tRv 29φΗ07˔` S-g/憶$P?`)[)W}$P/d']=zSO.I3ba?WCV Rh f24 =NJ''"Q܉ϴ,(Z@qK,- SQ5'f$ [2hd S4c~4r}"w}by@;vCPSh O)JkyDʾ)XM,f4d@퇧bi-% 248il7,Ll)Eve,G[TQMwA~`TDbh))Y);UF}*S!"Y-Q3R[MF6Ո2:a_luUHD T{[.R}Nu!Pe SILnpBB(ѠNBL.D-r"[+$e4 =Kh>uó.Q,9O"$T<zXF[1;s\7[-_G!%&p %"Lpo4@p\jtf*rQ5,s +ib:qYgssXsܯpՖ_@Gp:n/c:>2Hwuc`#ȔP@ߒl4KGb / FcR& E(DQ8y8rqEUe|ZdpIk̿U࿖aNb"fмhf14)Œc$φԒNJ&\aij#)~0j w|"6IGu;)?1 ٻ$՞~M6' uInҶBc41e]Q4y5?̷u,Py0=!/"_EWϩ[{sT0Wg0TEҐx982_[P e5EZ .MR7 0N-L$Qfk 2auV`cHdJ _Jz Ts|-[ H ؋ބWࠪGH ], RT2 \cxXqgFBG)pJ!H 1a]~&b]=jZf]=?:-qq29ȘyRU!U >f:3B )\˘I5?[\WYSS+;u]܈`.tt}uiJ ;;;wᇗs 22;ڨp-IC/Y01b,UpPkFq2sP2Nbd`K+l   g!mިw!\߈dj_ÕYd*Dֱz5K8!_iwhO P|˜QCJ K(a#,[AJqo{[dGQl93Y,MnW-Ӈ&x`5&ZŽU-ۖek1Bɼh9h eʺ094/͏FS6nȓznϡ{Kb4 >/nu((TAog3b| }4gr"N(n.(+V"K(J448ȲA`^翖fw7դq?^ h :)oߵjpm6OD2nJCsvq!i2݄Ƌ:@T9+16he>QuhD!UUf0k(kfkMM!խx[]c &%%O9mʦ30Z+VY7;ЍDa8(N}o#nF-fA:a{č\. {,i6[]kY#}zomSy⥑q.mq2gr8ղ ~K5=xMԺm↦Lq4vm, :xzh]++ʄ?K]f[wo=_f yDP/YdI@B 8q^ʵӎlMor̎@ۇgeXYD =Ts ss}|)VSE,NS\nCQ y^ -ǢZ]˺'W`woJPe9M4qMӰm)bRI"PoU-}1 s=,—[ _'N^tU iEJ%Z >K6J#p94EE'YKFOE\D~^q*8L dz+NE\Lzx,vA} +ld x^O}j1ە%(i,-dO֚7)cHOadyX*L:zgf&/r F0u 4;4>pn<Jy1ŞZ.䌲u_)yͳS4GSҽZB39+.S͂6B+U,lYSq7jѲ!ID@APWωDeWSDC;w$$[H).sWSk뛜J;qo|.wQgkkhR辔6!|,tqY"M'Nٱx.T:iLRܗve Ut/ `RrVf]WOל{7K(j4M@9۹~lXiY2lWJ;Ľr%1lLqMb0YmhZ2SwAy)B}Kk 7N9s/$:3EոMS˹K䓔׼gjtf\9^AM #,)ЮUl(\Z/A6Df9P 101\Ԗ"h=ۧ}lT>]WE$`ՒzW=akvRc眜C\da$jT-8d1W[׹6vhҚOR|j$w,Ki9AINlN)Wx Lvcf{hR>:c4b] OhqVYcDWLtNXxʜu|u38*9SWF7̜޹r h cL0օTLD}9,n-HZP|{J4Gsz!bzk]&F.Ko`TI%q:_V+.wMp~VYrpXh&ͧtu W<²,xCF\ ;;5Yq:.%=qL~~>jR-P\Gdg+weᦠ6vo;4 a JKxADW &^>JTiG4]t1gZmpZ; ,Qq6򿅴8*^ށYBgz+hUk?JX`l֎@I)rs1?0CcR7ܼoLƦ,;H蟵;UN9}j@ 0ߑt˖YW⥼>I}x9iۛSEԔ9t)TS&O7(ʸ379P܊0-ҧt yAD"k-~|CujY5A߷xDDq99O$ʔbNSl-wk~oƒZӵNۼ,;]5_`A%u:5vH.[[u[;kkhMnQd:H=Jā,8V7cܴGh#W7Edd27A-dR%2yXԽV9`Q^mQemFTvX갯y)tQjdGKDy¦ s!Z縉B`ey AsOhͣbn۶!zn МO"@AIh,45D 1DKiC7ߵ6xFf'. cqi:gZpxkZE R|%֕{xd'o{zD7ڸdoDa_!Wo_[~qzM1A'u?puNs-W) 9aq;%{8A!}lEK0»5pCֹ쏖:+yjd9]a (j@ SuJn-eҗ8ApB M,w0b`؎;X[Ź1Y5'|[*о{^BIgU]Z(mh2aZpZo눤>H꿪Ԯx(;t|gA|t ,?vX9x(|/'1uB聶[bk'RNxeq΄5$| 0v~/'Xކk8>6 Z.Q(d1| Xյ4nB)$( eѡ\xdMG"h^ح3.•ElFeV-Jnfqj;ptݹfU[Vj@6po .E_H\p~NȖLbOl[.E谩I'vv8bXMÜWaOә [$e^tV$̋MQ.ex=[ity <7'ủJat!@RO:rj8_$D*ƅafOG2W(~F+~z]4of>-˅mUE$j(H#Gak34M" JB|Cfw>Efِ?A f%}nXqC$~\7ELe1\"[@mFyEINP.6[;쭲g#}s5Jo23T7&uJ b4# B YP4d/ukZeiHdw^tJp$m ;1]Y:N #G$ؒ xr:$16QZ:M-4(>)0 lc7бPt6 u{JfK\W"/l#|D*,-%U S<3%rDF `gZ+-sw}D*ɼR%OꦗSV\A+IE(L6Rm>eJNZ? P_j ksڸ7\>iQ]ǔy* \]qGf0Ykz~"ֱz"==Fsi=z~~|6y޶[+;i6T⡌۹y>(If$qψկ6jg:NpmLNpTeG;u7WH;3pɲN1jሤHj^ə$f9P 6LRq\sΧla$xsj^eTKY;TzbeM73pxĪVp]RC9N? ^Px~R/m@5@C^˿}+>UONaW/~۴(YgԬۓEuh1j'>9yO$ӓ,IKuѪ^Ydqǵ )kꓙ's's;<ߜڙ̳Žmd;5fc1Yyښ< #nĖׄr`lhy״Puh=;p%l/l?WTc{lOP 7&$*,tgӄ^~,K[uƵK /(|I5}Y歳]Y $0E)dr`"m@ʐo-%0n$1"`'UZD8Fġcпu}>>w?GEꤴARw0dagz4d_ZSps;@IyY9ԝyP_BnZXo 6e}O}Cl:2RddUo[JMLCnf0w[_>_!hD~s~J_]4t̔fy|\aw^!<_s";QJ:eVIOY6B= cy|ƝƳS;~^ô\@o-n퐀;mh;NNd>;׭u9̶tcaO[+4,K+gyuٗ$u8l 瞇/"g=.JFWitq|ЉUupK>xfi:s{'ۚFp.AhJeUt0IEңd*":hodpLoEJL,_Y(n7֑hZréV%'h̡Yo83r!5CȄS.&^c't9pB}tE MJ%x' W̒vÃδv`Z3jCըѝ{-AVE1-h,kA1&U*Wn:չ^[v?~w\5g/?lg3dU/.ǜ~mVca .ܜ@bw1U dJo KakO(gΗ7~}`*>l{ Iё 6*EtC M'iJH[wg WP5^?I~{|@qՐUgN~@3T}Wrlj`vvrѺdTŬ0 o?RbމWm}/c6Hޭ"' NxyΥK[.^96tiIvKz_=&t1ik4Kt C9tȹ'+Y/)RR|eC?=::9rڸ>pp=;+Q~Q-QZIOJuiIj%:OI9 U8d]g;: %jgGIC%8ii+Κs(goRh"ruBh8Ié|ZWwJ0 RF C+' r^gag|?_=knֱ߫M!9Uj>T:Uy6k''Q}bGʎRR i(LS'[@$TDA@RE(SLcPzOEZ!Ao6{ %phi!4_}oUBH +mV#'߆Åc})g`C]Z-ѹ>*Qb~BXB YB3J4S@[HVB (`q=N0R*ߔG*U:{6nb u uV;q؀*끥P h>5#麁^Vj7'X)} 7'gg^"L5jkDE-F T^"%P] X[w@uczH1:6cDY~ՅZ :xkZ^ {!`WpѪ D7JՊ,GJe :sk[$?#ID19(B\DuT84Zu5,J.E*=vˮ䯔d!DxٜU$1Hur^0>,nz4oi%]VW?tсWQpkp/ԓmPpj%(VLp"X-o>]lW;4Yf"YnGM]PRXt Ruͅϵ> Vr0h9B+NINg~=}f ;=6iwǯ^ut:GGǺN|ȹ[gf޼I丱 9+.LT"a"0@u%dWSOX5>OH/'1_x t0 &/uRRU 9g;;$fRwx 5U⦮/+y#H``3.+@As*RKh.id=dz \pWȑU:b?9oCN/2W 壘0@PoJ} -{Q6X]Po^WIysPa*X뎶 ~}A!.ط1!1Hɽe:ﵤݏ%,zws|ʡ`34uh84ΪД1_\-[L@oS*v0NWwW}99uCkBƦcW X|5lAC*,2:DYj0΋/JYdyblQ葦!:Pڛn٣ JPG[W%WqPᴉ尔;VCp!EV \7z<6,և:qFԻ\k. 3 pŠ+ǠT /45WmUϡ9F9@SG!UpoR 󊽉i%xK%Q6Mmb}CחQw%*U⢃ =jRAͧ}n9/Hb#c!r=ttN#zZҢR'Z>B5'9.xUʮ<ԤUy)_CP?11KhnAs0[-j6/8}kO`Z`. 0艭gR#{Lhϡ^ {&FfOKЦ 3%%g:|Ȧ9âRyXd&,8 J s0pfNN{9tl%#_J|e R[fݦE I%9\3šPW!N8,ҙ@}Q7yvH+*OOۮϱu8M̹7 R%,I'c$,lgⱁST#htO-^ uʉ7wA{AJ@2^.JW;@R h/(kPV;;782y]h)5@Dµ%lSW -̰Ea!n{~!}!jD9y׏̊@l웜`Tp»WS$TK\RzGmp{&1rOc:IiyMbB *eP\Q}hĴDK|3~^q_ J={ q~"oHE5٣**_at R1)\JE(> F+9x6{>dx.EA"aE,17JL(As~RN9p`Ly!QGC rDt^*vhPA*b+DJQ)%[`;^c0É.DLWiZhB0ώ:Y c. ^]HwGcSzQ?2XKqiZcUz-W ng6}C;ﻪui )܅-ɐ0k'2D 3v?Zs}^uSWzӛbDQ.Pz|[߫[`;D_Z+qL_l5zRo5+M:5=S4*Rr:5$Ms&u*/q[\kЕeKf ř?wڝM\@O/("s-V6yɇܮqnSESRBYI %?{hZ u՟.zO%WߢgɲѩRaHhHx-{ђ _Xl^rۖǶE-gHvd*b Rgiw-v3n֚v#`֞zu˄Ca!4uQT0/3ʓ}d,OHhSIT<~Y)M) |Pޘ$N~=w)f;YG|ٌTJ?"M#AXU4EA V)I&6({LOhUEyVzTjC/x #^P/"RSip8}4sQ?P_?F<Rdt`]j4K_7mn7DߕROVgPey5A.Cz.2k tꀐBK|o fkA"&<[ςqLk*'u~RKa-pGnr hi>FMI Q1QD%j->Eaq9:cd*\V6$&:g+C^15'۱*XԄYD)j7mcbiDž#aHހn;pvnɀC+fájG{HH,P_)[m@RR QY J/f9@SQ BA(Px _%/qSdܵ9'Q-?lK?rh~csNws4-98 |v tnNO&'_% K£R\^@ˠd*CS5&&LT?S`wp ΕB^p?L{:O<XVﭶV[pKT/Y2K :S/QGP<5FM_hc݋,xOQ^}Vr%:x('X?%0j5'Ǟ3i?WF uĵJ~ϿgbQ1HrԪ6W)Q?Tժ@*RLNLwGÞ sj)"HKzSsb>K;4GM:OJ-:w.\̛ƷJ ,El\Ϙs0kVssT/A6i%һs}`6nx $([h|YJ sP fz#Mz p(/:u1UZrIYYb|3"6?/.w;9}MG]ωwmt#暉M+^,:"R޽U&F-;[`pw9P"oFs[k͓m#h-TUY5 E9#ƇeF̖uIC TQ߈w00(/xyf3'o~7Fsn?7hC HXGW.3+c{ث`ȔLnذnbBgG^Up(Tf՟x c>0#mwhHxm,V oOOJ'Yn朦.əK#¥?'CXpḭ,*b Ƈ0J{k}!ݿ dGCj"3GURZcTb(@NQ>HPbUUr4ka%~*ߋ޻B$2OlArNs+sЌAj҅1ia6"S wezg%C9 +  k]p%&dM 5/QXyZ&!}`SH@]BWy>V/[wsDo1e0uzG$:}&h)'WlOH(AC'*W@[-D%ĖyfD^esNbrE?6>*˥e懪9@SDE0=bN] v:X~k*/_ .EN^>2u9 w6|$̆1q:+2KO4A'zO@+s!V$27ɫE>XKXˈR^dEhQ*)u:dC~ yKN{IjmʉҵʻTH|29ic6 ?SYh/u{rbr.RSZ&̕m|OTgSw^soDRp7%+woJXC*hf%l5 ƇGtۉ/*v ׇ_{ j9n@桭-XVlHFH9Ҽs>zN5O,tĀ 56JBa%~F bTI$*hg['BAKowk 'l;sc"LgkV|ucq#xx,z>Kht67ѬSE*-kvX(VSEjZPWجq:n:Gu,jk%OǦ| nݞ' 2Mʥ)EuwBGc#OT"Nc('rXmKC"Iyc:.ZMK*?Lk nJPu!E~:484Je':lذ`<.$OcedKcrm:컜>R- kw=wswoȅj"g.,"h1I!n)&ijיq&n5321[NsfyUb:΋*hZ\Ju66))Ӿlts0't|RD,KL`KW4r$a}kIZE_DSFv4Xye-m;[.+kd$OUBѨ&Ԩ-E'zu=Z⭉^9Xk乗o+]w܉7'/k͆=FNΛs*A%{P-.Bk  e d[tSCsMn zv-9U^]Q{)'Ei$M4'py9gd^meqdt0GKiR_ޒ 5OFӷO]E{uhb,5~F:h5hbSB`"j*FI)]PyLfF@rythbx)ϧZ0gNQȯNEQdZ4E>G0 )hTY OVلK>d&h5HJBv`P B𓰤"O{HA`W&0tW*PFvNr,h2݄r *#pTJƐ&`aQ-q֝eK*Q:’^chvT}f$?WJwrq uR>6t7=uba(]dYep"naw/Z+zҠFe9C 'VlҚ-8J(&< (d Wb~!jD%*\l=i;dڙv+T楹 sY9Ni1e="Dx55>f]B.95Lߏs6MHT!e˯Aդ)ǝ& WrܙR i M `~ÞB=J^5K sU-ְE{k r~ϨaxN|=cSu>;y4CT2! OC9#F|7yP*O&cζh<ڝ1kk $?tGe᪸joc-5ZI_^FzQAi;E;M :4ZAmrY@K E2a7;jаO7ƇXRܭr\ -'{Y62;[f`n0N2y͆Ckͳ; S 8r"oXK΃l3 k"'8B9^qG/O1MfMYLjKgڨ׍!CuT|P{7=߹B=P>ՓA̖͛jdI+Ex@) _3/N}Ҝ LYQSSPnwzú_;v^Q"X9`u*ԎZ\ky2+B"THL 'eߘ$\=R,S =M)lĩX8İZs<)A;>Ø|Cxpqd{[wgge6T$1Rl+{b@.("& K^)b}|NI,;m=Zq ٴa{RSA%CVF 9:-ʮxr@r*yeQ'I9c%-7Ahrɇ#$mWhn$vufl0 )U8ǫ&\]A % $&NE.WFF0n|>ŶɌ'c2QS 9Յh.Ԗe<{~V/O Ez'?]mj?]wz3=fI0m6لBTSJTJ&G7 4@͚oQEO|=d-qnfmdRY:`T_]V3]wBɥIr J(pZ\&LDF3ӊʅl@q¹Rp=vb?)xEܛ:<uZ.|σZ t[ hEPGΊ.sZH*l7E")8 +hA Ud_JxԠcg)PIXϚ w0q]'|}a>(lG0*QiR"|/ySbclGqE2> +$` ObKi/ ӼigO?jOi?q 5@է" = )ɑfTУ  7"h_n !=nɸW R:&Ҧ&Yl1YZoҶY5itny;iMC[̧lqڬk}TħC!8g5 F"ixK܌e5|~( ǃ#g8Ap6t}nmtc=jvlȰE| kc]6lF(_|_dXqmV>MipYA3`%e ,G+UDF.;ļA2[V\`鬕uy@;zx^#£f= &zeaZ> G76ϼ#J#,uOv#Ѭdr2X>bVe0"e i+:k9/@֞n lB+I)B!>t,7kdqв?O=)u4kH!8|>y87[{ڹmKfsI%gm"@54X 3I$ʨDSb# cIdD#P>Uw'!Nf@{Y'%!۝Z5NiSF ^B5vuFHs VdQ^?37lIXߔIfB S_!}*7H:wq^'1]#BCoA} #Y^[!qO+Qrr=s913T5rF6k' cFHZcL>@`QM KGq;yY>Yy>yFF+/~ȫCFl죄6@>/  >bN'z8L(; ܠ Q"P QP U҈aaXNQJQ9G_W"$:s"Eĝ2z{ Z@O*/~3 /ԵFNuWl /a6ɜNM&;/+X Tɡhň%ݫNK&1Q Ѹs( *;=P_vÕ+p¢zlG]φ !*!^0YrZQAjfvT0×v{9K7H ,4Y'͏J۫z 4@p5ʰ6 $uRg2|:@+ UO 2.WMiUN|~eHc(pQ5an/x窨˨O@$pdyBkU}湕J"(D$|2 !\>f؜ _}GP:\Aբ4${lkrNlH2g9|%TiV$E(ןek}<8|\|@` z*v\ڛ2D0S *y pEU!50XJ,-u0Јn l/ <|, n MŚr ^l`6^Z /A>x"b-)9QU̜El1~RC0C#';MF)Y)bx2iVēE-L쎌h\Rv|Fpʶ}Mٸ^|wOO; %Y8;?>W>7c{KNŽa p4#]ۏmfzC;ƍsdR.zS&BvrtUNe9"wN).Ef҉ Rgԟ t\Bx<ǻY(kBhGCӈ/fXHh~_2 Lm-I޲i1 WTɂ5rɑbɮV SjIm(Z\v+3[Hs1Ɯ4ջW:Jբ 4 qm 4hk b$V(##ir)ACpJTL«(TZ@KqD a<"hxA!_Mv6}'pjք/=.\*κv/]~PM¥~=woOnv^ Yr" 2e _^:ykr>mt&证q"tW[T~n4@Ѩ^gG \c8J^EOPd갱 Bs˧J(8bԵqvUze} Oh"1|Vţi6 f<=]Ţ@nwsjNi>$lRݤr&7y2fճO^7M|Yq#&5,mt]g@%; (rr\,Ÿ?)\u4 o=ϡ ͢+D4/X_kOZezgoqFۮ܇ =:ZR u'Tv\]3p y* Ď SEgtx"jPh(Htzg>m Aj+ [FҔ-N:οle 227)|* EKJ %'ӣqKWM9,?_MnYyR8p<'X5R:9tN/=Лr)џA*c$w"yco,)W_X>-8΂b*J)`QȻLl[#'?YT`ww.z y>zp<ћ׉=zZg˦Sl̿SIaSOQR`{&=_6 { btZ?APivfCNYJG]OI=sH;.DR9DQ6g=]4GP/kcOt)jd6dǷ2$-\NYSLiƅI{ 0L4UcDRuR7Q#%w4dFF'8*3 O㣣}XoXYy)JMEK.eJ]9* r%98 +^:*GQv*_2doMzWGŠ`W/ x.\逶\wrdGA6_^(elnˆMҥ;/:3,?̾C.Jr*Kz)Q\+ k)KRU4̧RuQp V=p# J"$>\8Cq6ְFqD2$8vH*ѫR4E%gWNGNk|t|>*ӈ맂VaPVV}6f+l}G3.}/HPJU|'"8N汞p3xʼn2VzzSJz4[җR>TȏkJ_zj 9f b4٥=*q"&6GJ}-q˨q7ንH Xb$P[Nk;\+f~:^7^4:m ̌3όpT*T$MZ' ^(֛%˻wA_.KOpmg}GI<S"(]rTݝr]^6zL.ijb #kmicy)+uuwpW\W@a@B(MyNZsIEHtY&i:snՕGVҿ-ZJb׍$p( 'fo#E6Ť(/>_ Œq5/./nh:-9hG@) ]\4]$# r^&tt4ɦ#ZjS"*-("n\+%LnQԘĽSlw6HκIX -EKimS)1=箦fuQd~Z0L:,0#q(&L`xLa^ɻѫ{t $*UAg\QQnm{d@u3SOX^Cqyųvt9gҵs)?AFȉr& c&@*PE;e<|yLEe K>Tn9!(@Imݑg4gq (5k!pS4e4Z$t-v:TcWrDW{ 2LjKJ| .8ónLX볟Z7ϭT~.\gFO+զUNXd\D P)ZFZ(KJأB}"v01^bJh/aGqs9xː} q9R,;SNNcӘrzwq/޽6fd ZA&&6l xsu -u&t|)^X)&Ep,' D=)c)Am<S(E2H'RuAo|2nwΎY#ۧq*qg|%пR}b ܲV~)ktI8$U$.zJpR)QI aZYZ-`ҐvlȢd[n [t/]5 ĚS>ue ue,[˛pgΛDy!XV)T1z`&\ᤎ`>s?N,YrWf@un duz-5QE).j?[ǧGess>N.ہ]|h94!0CD$dEjtl4NaIBVŃ dBFiLqθuSjyBm8Qlџ+v~93$q)xQ(6{TD(aSul~cN Ny:n6~,g?{ƉU3IO`y 2xK?Xxkڒe\-!ODG^*k;I{s{qeu 4Z0Yj<|FB!9lH b*7HwO )EL~[w,,#ڞ7Pϰm0lPӉ;ǧ={*NKGtrHO*ƗmUYEEv>ph!n8$BL1sr->* 8HRJ]Dnt,UsR <%|WuЪ;c9Z/AtҬh .)e9Z 71Pkb DgѦNVE2ϩBYpu:SܳTۺC`\2S|6-(p>>CUnRq,o/Ns+CXDL5OE=] {6]Xfs42g>=)pr'evIZ0"Sk-)%f1 xP+92JrfПo)֟쩤 P7ɘ 3~;ha1o\wdQo%m7_bczۀa޳C:ul@POh} ˓,%҇!D߮P@6_U(}Grwqao YӃ-bJ1iS*hU]uVM%wZ4\UK B?L?ǖ~].+['>Jo۔,i?Iru+TTT)1rMgRW~vѯu/ם͕u rY[Q pkh| g](02?4T#ٻ &$K-I>a)n9-Wo㣳~愧nB*%]κw9Ax4Ŵ!ՇȢ$.J-̹dƙTY5kLql-oSaӣVƜ=R\.TK?z8w8Ky M| 8TEѾ'Am\-M`MtI=]6xvɋy\,VKi\7g8bHGx3K9h0IJYknk7X=Nl {q'LpMi#R)d^$*q9gy_Pv H|(Gē(KўOBX4Om14.&B/a%H9!2,HǒzgΩA9d?PLS%wt 䔆rsu<2ehckۊ1uGVDwSE+;7"qiЖI25>uoA'e̤K)\D&\2 Ho_EPW]"e&#1e \%^:aeG6:%i/CnO8P0^8fΡs,(4?hʶ3Ɓ1!-R,57GoGU\ )e%k<:'{8&8]=*(JOi5O;'e̽ W/{rS3Ŕ%C` zcl'0.>eĜT:$hzK$<#+z-E-o,.%gwFj%K*/X :6 ]\kKٺAj)%]m&{%[&w I|{UQV\7nrWAu/X <bl;~ڕiJb:wȫRRZEX_}PK*.]іpP#fHiA×n{d1\߻N mʴܿ#F3-D˶i>8p* 'QAo6<|Vz j~,":Qo/^g`TQ{èqW W:~6łWnE k4XJ$ Gbr=M8hTJ(4i$*Wysʪ+ uimyya*E*=v?:v.qeDfr)ċKyD]i Pdz0?8C%DR,3*8۬Xcrh»@5bꂙp1͝5s6WKYuQs@_١u_Žzc*D:>*\*m{ta1pPT H̕2R@nd${LlQ;0e8ЌQw=.SN𼧋X>M uW:\֯v僫:8rI+*4t-GVXiè>*Y(^ZFԦ8i*%Sކ+i[b\ҲJ>m=3{aơ̓W/qc_sC2j[Xƃ(M*I( (y*S[Yfߒ,G[ -g9& 0ni)d@[lБ;64Io4?)Gw<]ܢou:ag܏M3d<8mMm@/~c,(y1!fa l@9;8  Ic:%d EX^tTPca Ua& #RYa}"znuq<θwGv:;<; (U+)ƟZ. sOTmmޜ5tW^S4*SXZ&Id%rLV%FAՍRyyOGJ"ڡs1ђ%cV$y}P])jaU.)9AVȳ57T\̲{x[$xMϰA4X,yaAMl#J'abP/`VӮ ݿӬ AT[,E Řj)kJmfߤbS `;-@RB}P9A CqmbbRWKE> 4_f$UUʬTiES %h/ T%Z#G}ˢnoW BS lBi^ZŶٰ+.j5ohuEu鉨PюƍU [h Ƣ`֍Ln,a,f m%ʻRbsr\?BZٕ6aX _g <[O- eu ]PJ?hh8o (B?Yq6߳+&4|z]"'j& ,S⚀>=e}O$TR>fLpmJm@SE[T 󫚊9ݎ)dUu$U0&+P0<86Ur_#_ b |9n-ɀ:2JxfU'Ūh9YDo$hjDw xSڄ*8JC$XYG =I2(z}{UΊ'd1~?$(%pAm"hfRfv&試Dx.,'t\yrk*Ts=kb&[KѸ%D~}J0$NX D8A(UUMs,pu+Uh_J_\;hhOkAӉ>=t;{?:)U>bek$|"Վ̬j1q@z[ZH;ۮ?jߊTU L|`0|0;@mQuMq MH9ubngg2oJ!LlM\ Km@[(ESU:<Ʀ\ߕ{~uܭ5+  Kc96P*} ZҤqﴃ[t2.vorEYr}=u*_K* PFI0M~C$R)K4F"5q8. UDi=ebޕdvnSɃ+2ZaYFo"T`j0jWsb[W _ZQd>>ZX_M4g)a1=\w9ůeY|&Mc7~jWH|?;,5 +&AD*ѓk:8Sm<%N|. p,M.Iqy Y1hU79-V} 6ð?p!@a戃w\73p$FnD<~4KP"MX,y\J a9{2]TnS9aDu}! Tⴶ9JI"=X^a80HȰښÂ(X`)q-NiDZh %ڨ*HK_p؉K%[9Byڞ>VۇG%C24_rnSy^ʑ·@:Slؓw*ešrĵ,0nŠ>I? !4 bGoI94{_.@߈Mg͛v056k ,C3٤G'7iAR sZW+?rV~ Rm oe7)DWtV7H/ ƯcyͱSIH\iAܟB)IIffR~4ỚMR]KHzҙHb'WX鿛ҿV Wzs%}申#3^a?ټTqxX,\,`BY=R[\xi穤m)#U6XR/F@/E:m{2:e=~ GRHXRݺߊ›ϷΕC,/Qn6|_ͣf;`WRW.*U&I6ˌ/dw?4{GRY\9:gFB—h7=U>+ o hJjQk'PuNLз(#"ŧ0̦|aNFkBNySF7rT "7ia28#$dRT 09`Sь1ϤS6Hn9A;s;mXacެӤtn%q_>&Kv3Fzj0{  {S4WPqx7k~|j|u};d¤3~IqcQ?)CJ1ATQK91XRm&=Iq2Ghh]&ѴӚQϖ_),ûQcg; L%."_c܆r xpDV_ag&b~ Սnk9< ibMre7:n[ơiA~+R/1)"ϒA ws㠸w%H Ŋ'pR&)E5K#e+4<ǜ'mb]t,|]DTLr$huyk^4Pm {ܲ{B?r ZBC=}{d[Y_@Ag7];0gg%+h}Lݧ``pnA@*RGUt5M%:D(P* ?B0F,$& qg2A^{3{iԞ;3}w}k =zW[5x=ߺX,^?կ^>rx{֓ ݹܜݙ؁LbwZ-3n[OgMX[ּkVGkmu⡍|ލQ45#&i5?m"ݵOw365\ ^aU=~[$nZ[7ïK^x~r~x Ξx+_GW^W=_|[/`pZ5yֵ[bpo|JvZ<-NScS;Ҹՙnwfc=mZZOڃI̧3ouFv{:BDѰFg6c E e?߉ %Q)r7-D{Jܗܵ{uv]}>LZ_;LZ{М{4s>JLI1 6&R&Cos^Ԯx_=@4.,z4?+ N$%7n 7*7 Vmhg6{F4wSk~QNT uȞ v.3r9$NzwYg̞%TE `t9mT:Q5 Zx9_Pߓ;Uӿh~GQo9J: ߀nD R x̩,$᪼8e\"=O&[jɸWŊ{I3tT:{S P;9@'U@;i| .t8@v,'H $c_]IHCP0x5MLی Co'gtYl8Cav@> Fd=X/,1+n&o6|2{mCgvuFޠE{lu3 h8rfgJ~ PEx~bI蛼ID-gNW=ŠlA75G 3vQ=$0*syׁys(ٹ BAnQP+sq&xtw{L*HCMF:UGSׁktj%IgnMLwݯ>e+JkK$Itu.̀̒*gX(8'MߔYm  }RES0*[)]j Ȱn۬i/:I%eI/Y8UDuf4>Z>$5)wSGJuK&vLm4wnva8r4qYi*@0C ~K =a% {*HNCr>X,1ᰝ?1fAo!2U.}'¬.*qYpFBRP G]l Ī4"]T:is~Y9'W#`"ʅ4sFů]y6jJ1 :?.EՌ|ښG3v,W@M^}U U?|EtB5BTͯe kC8Gwfq{u Q61M2zFU,&";$ %Fty 7"yV~a(wʃ;DxޮKyo"Â|-wv3[OGx6thw[.itI1%FDwb@4 --4jbBL26ߞh[]-nz/wRϜZSb`3 o1u Q?!av~%{!+P!Fp_؈L%hbkÚ4 ~@_@r@tvTsq:0m6;8uoqƶƏc)ȒTB ޥ&c Y -,d#BT!%GeVK|t䤷~tǿ_aao8xGR1n+Lwn4BG[axB,r0hAW;Ȝ BJc Tq" .'i'vW^nZ"%uY DNn︨@gx瀡VIPGKj]Z{8*12a'uJac Z4S_uKCFS'R:!X{ D\& \• # ;*`mr s(#x!yP ȓd/06nZcw>6b<\. ܞ92ۖh\noKYǦ۶;]=Ζ~nJ`<]U`WX?"-D8k2ȳ@޽v+yGw]ˢnt}]x"쌦.ݬ@6p/(I U8$Q?]*Pq |UiMr#bd* *q)tjjDnFh 4S>\HͫGXa RkmJ'ȑZ9%*Igֿ wgK P U@I +/i:Q+n4n^~y'NIljlVlOIx f5͠,@B=EH.貋"d0؜+4dV۰;3-}MX{g˳zUXX_v}gF ~V3f/n8 [% _=2j80Wޡho4 X WC$|I*Cg\:! Lau3ΌtUkg֯+R YR;;~%(ly! fZq$Q` R,jz"!V+PM'q9M۷ALUi7=5,p K-Q&Ra aSDN_riUZ+(`ros]jvq"q/nuzJ 2ZUhO"Q:.Po),Wd2Nʧ!ԘB"HLK=tXx }5}M P tDPBVcҫ$p@h2rP~/)cBK^D_ĈJ}/'ɎΧXgn$ju UASHPR^ bHV$DC#*T8>ɫ"G߇q#@sƬ;dY~CLPQ78L?])d&ٰ3C=u[Zw5Բ4!bôGUo!c*Q,tV H M@e 4ieDVp4<*ͫW]ptm<' W2_o[rY3Ǿ>֖[;#(h~8udNhCHGBP\A JzTKB젦&W-. S! .D4Ho>9(y_Q)\g?Εֆ&(Q@kYq֋am@EOlXKȡCO6Z&bƀpq(z\YQ2]`&l2B'MLp՛hL64҄iY+4j<$7O|]9$ձ)rano|H;QCQeJ㿐u5#hUQևh2Hu%h)VωqH}*/Bz5UD+(٨qjՈw Pإ,Ҧtnj_#?dVh|U%Q~RJ "(mSIk)X)j)k?^&udgp>nCP$68OU;AQ^C}إDBr\7* ͧGV #V0@%E fHgZU?*p¦Z6,&$:ʰI#4Lof48jh_'*.86$"t1D)mBjBKh>ߡ$*CUv:7.RZ,H!;v; 1Ǝ+n_CFjm qxbPt9p h#Գ2+!N,c<&>wF O(m_sFR3p>ՅÖun:!e[l3#x(,Ѥ.W:}WwŝC9(M+}{ NHLi58؆$ ҂BjU*dbY)Pz"aҙY'5 n99UrJ N+N o7RrW~ U 99}V#"jwb۽z{D9-9%eT4r&!Lp]abC:z(lRT'v;O:7N(%~g{SۡkZBiSee}/%;Pc1^pjl4-hE K(:^ M"|6sWK98E?{^oNy.@k͖_ٳ^N47b;R)VH FIK,5"xUov2rDfښڴ ~7ELL@54bu+ݏTtTB=аjr%k/"FinkX!2ZG?24 9:m&?7\3J-5 KQqkȗ1.GܳUem#ˈ֟qE?/ddP{G?AY;Oj4^Mvҩ@X gNj)o>.=)Hڀb<4 o ] ę?]qo'h8[v9epK嶒 KQ4}'Tv[<ѥtnN2#s "f؆.Q+U͡yƇu8 ,7eVDH٢@)DI*x%Xh2՚dim:^mm97~]'4uv۷7:E$0gxϯ'sBOZz ~>Is ',rNLH 7;-\derKA\A$P m>xbLmlVKc8\6 nǍS8p^!krlO>7X|+Z&y/сBsϿw;WRWu{<`Ke&E>;ҕ$&i%f`"b U^ԝQRˆ'&<i*^f=Rf }gf]7ϑLwę5O\fS4e2עEJ֓`۳H,kܼ kܒ*.jg:+r4p DN]-GOr1O!q:l ]V >h!U&1wL+Í920dpQkT.th8ýє/-G!;^|Nkg^JM2|Q9\a0K! <v|7*a5s. b ˽IəAB 3OobL_Z0}ͷ'=pk"vn:Y݁Ҝ;i{zD:YNwY=r:VNȉp}$m4Wr Q,5" |fBta]fx. |;Ŝw;?qi`;?8!_T8)xPq {٬mmb 56jthJ1) 3&;ƛ[q*9VO[@wV:F[G\OPa]獛{Bf/ Fd: QeOegAVF6Vܞ8@8Qݯnm2}oqQ E@wɨ‘3}~G\a|⡛,]tez=FY/=C{)vva㶳TQx G?[_2EݙGzJ=W:2 %Tvl|4 FL/ B~ /v0MQ4:I< VLu䬫D1 9T9 3 )^{zѱ7 (85xV{4Ba7azn/(#Z,Ma$Y\)zLPX)a{8KܖڗY015jA 4i.zfi~ŋ"6%y*9n+ʼg6t Y0?:n56La9Ea3F*/tC:悀clۍa^Xh}"TKk.(=GsHZq<`i::o3MgmM;4;fh!.rQ iK uĿ<@)T1Sx̰) xi?|{y#W,v` =E(wl(aB΍^gVR}ԃR/"6B| YQ4OOK&t90m4y7+.=H x/f24_C0#'q9"wCWo T|y;W6pu&MR[đ&\;*ZYS>g2R(J- lfohj5:[؉l% 1{с ![w޶wJ=}3x.w:LÛ8\K\hتe=ga؎*qP`(AGG:|/*2!A>'$엘UR)PJѹ0R| K<5 ;⿂fGZf"#b>60nmi-\r_HǨɩ +E Y'Oyv~.xnSkh ea[MCY;ū='7;\,V}6b{!ɏiQ8cQX:F49vi(dEX"0Ɇgpy; $s[?ތKYnk ?hsX&ғ#O q6s^׌ Y[Q*v8ZqT5Am2LMhňfH9a΁ C'`/++I4Z%A0/o|o|ԯ,*P~W9B_Y'PwpMw2(k=lW%*zOr&POkxZϣzxf eǡCVoD\ 5u 5 gnN:udvw-M>!hhDK@ csY>"{D\I:Φi{:JAՊp8oh„6!L~ʜ!sag!,PLޏNfEp|8O-*98֗I|xo|H#3bHDDCc߾t,žxV0JoD0 _ 3+X,w2_ݿO:Zdz|M Ơ+FZNh=8ig@;+Vo5];|,3}^TŝmNE0Q0dTfBfy L㔝=}R:-T F.g1g)"_r~E9Dm?|:r7 n]g f+q꧀ OЫ>.5m=C -6K,Eه̾LbqJ> ];?m8-EE˾Es"폜+?DR<*nZ ' bSQ{\ـpOvS$drDX>H\>*@!qDR(eJT//TN]t'n;юGlXe/([G֜ ˥LYJK amԆƐ5 Mx)ӫǕ>rįֹ;:+:L&K?DJ4>m¶\Np8q;,HqπapV\2' 6gsD3B9 UhX tV(ퟝg5 T<(dj60u\NoB%Wy,"PNp6D)[y0,fi {p.'BXCvfYfGR\T/W䚪RREkq旭hki34;hH$KLޖFԑB" Ș | .e0?>N󽽴RD%_u>Tw|[zЄ4.zV~(Bj0BD51 /c6hRQ%3Kv<;ߠh'rH?Do.L:7n߯vvNPRc&w7^zRKY?LP:B箟x\%IK\"bl؈gl)c|%N 0Gz6zI'妔G6fg/[}4_~yML6AI{_Ô_+JtV3)pxB %__S+ TZF}9/C84^nEpP05 s9d stsB#7o\r"d# tA)*;ZE Žq(%Hi"t-4B G |ϪuY5#<)#vǽ^;Hݳ㳽*/..zi9ΔDyq먪63~=Z(%a-d2s f}"GOh&sx ,W@vj:ICCz M<^liOjRC禹-CXSY}Im?Vy)ЎX2K}ĔG!QIJ#Eٓpkyq4I>7/aONB.]L/Ay@uT_Yûh sXpXOO\f Kycué]fۺN_*ί/|W( Ȥvͺx ੩)ⓩ"-9Pbm&~bD vOH y8JFHӏzIP_W~ƅPO-N8\dEXgygȥnjT].A)vd] 7?pOdiCP:Ml۟MfU`5<m0m O#2X9rnJR3ykvMYz!sJD3ُa;:2:a7'd(}ޟ),cE %(bs Q/s26|Kl~9Ĉnj†Qt2SVGx't>`DQV!%tfc͖K_}Ny?Y o-ݡhr#Fr殘t\(gx3qEhCJ%D3bI+D@=nsIIGRg֓*Hr4'(,*B\8U{3jJeVz^HFsl6l򶱓Gn4>0 ;Vg'Ղx0tx-Ykmӭvɵϗ8cQ`tsb0ٵ 3/Uh8x3SBw$w7DBc&hd`Yv0^.1N.}ci OQMg4;#;pWăN<L[|hF5:KNc MMfqB^2WG<*U-(yq${^J_΋WpלIrկ=/9'Wl#[iGAy5o T"5jZd|D(9[NfW.7]5~ʠli#KsBI+FC_7 R%f\~V 5 "(O]6G xۋx)vx( pHrySԗoi&Qē62-<=% x"Tb״C6^zV+Kw?/'8l4⃆6#08IGm,OҦ-!`@S'$Pcis+DiyO8Yk<8X 2P;AK]XY:oLL6+ M=v= .WZN-GMǂuJw?\? ;aJyENk G ȥPgNhq4zcF_b2U+4-:6GhP )f\Ξ/αθ\:IK޸ PީeǶY 솾kڦCNYJ$ݸy)ո pH^:.4AN(juZڢ 2du;^gihiBC:} ,[]szn@ww{c_p׺C&COW|ٯWsz3[V޹:EWvtMdzS{t;OS]16==;8=Ӯֳ5ʪ6lXu?`'c/F[Gٱ&?[\l/{lo^g/{N_y}^{W}xóM;쿉 8d=Bܦ*`l Jܖ%d6fJ$1ڝkcܾpQF6ffb]vI2w$j7O+k4d5Sf&_Cvx4ҧ<1bH~G 8G=`%rQΧոs>To̡mQCWZF}i.-'_h:ADQ!|DEtNGeFμ |/hv\W+ho ͱB?M`{qQzF3MҞ.Qß8cD]f $@'[`  _ e!THhr0>[or9V#yP琀Kj΀c >dihկ\ ,ܒ+I)R4?šj)G4Q]PuLwS{Pc%ĩP(6v,JF D(#KOxH+sXA7qkIy!П,/tfJJK(yX̶,,>@NF'R".kOn&'R#tPY^%GG/s蓫yU;bGi[KE.aȍ_F(%$hv5мu}ӽhޫ&GfxjiNZe@_̀YE׵M[pr;J{Zy-8eSn:}S;)߂,7MF}i5퓭JlGm\ {M-M˛ qѬ0ZƖ#h0iy/$F ֐6me&|[#+8d'{RGg.z?_-􏈧n8h;[ zÚȬ7e nX^l!cn*Gy4~ jV$Eh9ME*Z7oW0\޿Ρy}wӁ"eTU'9Tw8TsTm*gD[t3DGvjہ}tJ7jp8]e;dJO`QۤX$Et[ ۈa$ sA+4|dO1 ?lt;;`FOI~ 7֧:sv"fء&# *8:? 1ͦRJ\D3>C?] ؐ zvAF&/f/eet-6:tnyks&=1h>PDh )iJvH0dA9e*Ci `~׭\3ܪג0y; ,و>$r 5MχjRoD9<9nNJ@Єxf,pn'e|vsҡ%>QfMŅwj,VsF#ǪζlEb7Tõ܏N՜hscXNO*c3*bᏨ$3ѦrBs c!N=pKĹ~I*FgF^sʃ~TtҽZ_Ѧ=*ifֻC]cIGbx{8?PU+ed g!)=Q:i5ߏpzRKlB΁H(swqRֈ҉I.%0H/,{(G{vQ/HoW"~8 PO]'ڤyмqh^_Gܝ^h&Dy c^@2h/66״i6΀fDIQ<:8|'a݈nj?"ZUzzg_PwSa##𙐫vv5%C s=X:98MƖ\iԦyM],cIר]Ij@b} kt&Q &D34e x( xW gMz4vΐ>\SRݏH'_W~T<Լfv*e2QkXk9<^%$'D4jtFgl~Tx'd 4$|f5CNE +S+@"  MQJCFBfow̭|&#6ɚkQ?th~c5Fsf͏"Fe-@CV60d,J ҟYe<oƓM,]{=xJ<b 5.˂KS:AM\3@ cc_MDG41AQr$"%- X2d=+%Khq|QTp IS|NO/1a|g[ A{xkf08HU Eݚ5O>JJOyO|nNg޽h?7AnV4F!ݔIB'`b# 5&=ˇO*pA>8 ݾ3b Q/F za2i7!?WSL}ZDL `ًxdӺ|jg5iY7klh9cd$ӒmH%*='vP %sfiP'O8![hyv%䤳cWM9l1x2 R9#l1 _ۢFg^#oՀrt>.n]_-f;zp&̼wDz=BnIltR8c{+PVW֗8j]P/Ўkݽɳt&)L_*EC Պ-$ՇiBD%:E U՜Q%&JM :YzCY(Go=Diz]ȈSl?B\V=61v6y #x#;SAubIJX@?Sj%j=)Kj:]̟~fh'#Ea7Vt2<٫> bnSBJ$QKA1dKa5g"(ZOR3?촩_M X*.}[~ʗQL20אDf h]Œ:&(9R$&01tp897G~gjp~x hliᆄ>˧uy_?h&Z+Õ~ް!)JwR3L]$7/Hx VsEBR%ϔg%ދ꿎0-b09 ꐨ?+R nQEG% ;;W ]Am23"*A,3^ e -$½P㤍49L*wG90ƴBbLVmÀvO,z*:t=< ӡ} " P?hb#ﭤ!15 ]ZΖx%Y"6%Ө` HM)?{J5IƬ|DsNC_ĀG\'O8@Pp7=uѻ^iJTn#th$ u mxn<k%g<6*D𧵐'z&p "?9p?ZSs9Ez|u/D{͉м tcND%,#B@"Y7)94zΒj<ӥ~RsG/BT̖f)SHW§<^"ŠzƀHA\8N&DɄK2 4o>`zC$zsdo' S$Jy&C<9Rjڮ(0 FhY=sG삀8 H? D_jf:?M- P܀Qgid,$?i> &E"FI]3 (LS4a tCd[JA#bzN#'M5 n iR텎-jݞzZ#4>ܠTV3MvG͸ބ+jNǐO3ZSY_1F?Հr -y*4jA-\*,iy/⧢~\"}Yģ!g_*< vEr#wj 6xLN ! = / 'XqӢ~*^]O"Ĩ^'*{<7hzFC@[v;OXE&ާ~eз;@RrQ^X,Em+mE0KJLrAU {* ]iUp5 pSxx:ֿceAp/Pɛ\nj%\n>Aˆ| ? y>ZiZ L,W,M!Tk4Ē, nDNjJ$ڈ`"'_W)`jh;2`BȐ'J_vx!bT&TL 6 EV׉Mٜ`SH¼`3nq@Cb5 LD~mN PyJ?*zύ V_̷LIy(Nqg7eșj$U6/NF}]=rԧW%g5n6h$auP".eXp?W؜kN҃=g351DoW(LMth !X-Dc3t5UjMA";xH!P嫉E/oEhzGSi\# }ۀb2@lLdeQG҂P)HcF~גK/f@1<}[P.Đmήaǧm $@+x@YC-˨6WSiL:P&taI]9z r$W\$]?;م\L7EՌtԂmݺ"9< : ɪ3yX*J!a.ˡ~/VfJ/Y)[NN= c"^VU*7|1 }ܙ۴;goy H&qnmwfN9H˜q(OK3':qD7s@y/)Յb_VwDԯ,>ݲZ_4i{ۧVHJcC'TW8ŗS%JNU|#Yׂ;|R ͘9)>D7! OGo;eFtOW0Rm&hG8WD _F,[ qed[_U)ങ}}>/ h2TM}(~V a|}5ݜf4 Y#:}KΕ@zt{˘0%I5.߀2 j)yVS,2L▆iС%ҞXv+5OJ4) 3{I bQ)+:+W4|*M&r82n|tt%GQ69C_WmqLfûSl8:( Zh“1 \DI9%+MU>,/]u#DhEnVJ)r9ȅN[Ir^x1 N4!, ! ٱU;8P4h!b(ID- !;t.X"zpp28`Sk;#rtflD* ~H-OVb3LL܉|SX.DkrC J9Ẅ́B+n *zGV:3Aˀt1Hi8ddѿ¡iljx<8D 5- ( /VN2'4kW4s'=w^d{*|Oۏb"3YC,Lr,_Tw`3t+!m;qi+k#\!%d?p7qxޤwx?q% ";gJV)VvbbEWSt8׬aj#’^&=Q(G !$C}bةVAl : $i !::Yo0~HMs};P5gÆfv0C*3Gŝze |zEe8۷aC 7f`HM涣9,.7aNHY$`wxs;[܃>y&.G/d0NWӝ֫5uLodd/T8x޸][\oWlYZtpM} e[1]6g;m([FAvrըNt[l6$298{'#I,et R˚G~eTITnG?=W9o m߁ %kp2cٓ`j@s&I`l*Ȥ*q/?|:%͇mN+ilWU۵Um}27FLp?{6C #IhenkXB s%,ܩ<jnOGQgGM (E{8XOϰ9E}NbP8I'6Tu+?A߈5W>/ xwW~dgW۩ηݲŗԡ ˾3enA}r 7 Ày@/b 6 đtnjB4 lF/l;'`W9) 09 h2: 'ngܛ 2Tԑ޿ WX'}}y hp! ƲI$HQW*%NU8%IbY/ƛq2hlF j/.lWze&>az&] BoJJMDLa@d3K89b6#')?.YLpCU> BpetmM$ dIHpBPMO&UωIřwma wNi^0FSB\rtF"0QGWLw紨MAvJ _`j'UcDZ{H4Tuh7#h>TU Ng 3u]}:w2U/7ozş҈v(;j3l]V#~S 2QVC +'𔑭DDyNyzG5Gs}w1dAW;SIM%w=2>;zu[xB[{=O(fHUA妼4ՐSB?>8Fz~|ߎPG۪vI|J|NJD/Nd,bѪ9oQL%_T5e5DtADt}]QirHy'MOK< Dɴf0H!NzB(OF8 U.L}i$dW⫛U[[!(*cP46Y~Z(Jz7D&\O_#ڱNi7Oލ=q$,cܬ- X !' F7qT -|:n!#$NA=V $!II2*F9Gބd%laFazsɄ>4aƨRJ&Hswq~e97װ—4&4s;}ģHZq ui5-+KFFDBG*#&?:V0 MI靏QbAhH0yAo=_ A:}ٌyV|긁Eup,([Q^$e[Ϫ PG ,MeE\1*V&\79y"}|EV)a~ֲ>V'דjN|x},t{; ь 7q`HsmA}Rga0/t t"^;@#2әϏT[2@Cb+dlϗ`|NDWY0mD.RU8FH`9Di0$ҽ_ #dO;>,ݢC+UWx̬%(N }A10u;#6x̂nSw+59^ͣm߫41MPMFz /چPC *וfѯ(“!Hyc8Qa .NxY4_h?J4N fs7 bK>M1V83:P)0tށ"܁d ;w8iu%)3-VIx|t2< u g-{ Չ\ĠR"]aMdR$C@)Ƽߔi(3Zoqc<$W lEI2Ѓ3n qNg#Skwx8%Mpcӝv|D=`+ƿp F4M{#֦n)8_v^s="yv{:!)^'%Is# 67as 0cuc-A% &LK"3{x;_@s"ThW=%m؛8k,Z[r^bJא9/?s^ ܍a]\079wí +":_sJ' Cv/mE%͎c1; '{XND6ꃻ0ͽM ,F7F3gH;> ~4zT #h_5AN!9y}5Ļ^,E;KgUhl&@螒t;&80Ӥe"BZi*o0|K(426%ZƳJU7Pu<[[Ah *5&:VPQc[@w2jbY\or!7DW\K :F9$IVzccf{Wg5;WyT:Muh~yDPw{$$:띫x~q*C ӑy6 RYՁQ [Ney*=߿&}cJ6g#j3zxrD%TV'~ 9M]zOIk!khqv.knD!bZj4I}XمK>ͧATL\VW`$C~ M929$,#Z$fK@S7(>a5VC(Db@?֞ПE$RӦ9TrK-y;}SJruVQw5z`k2l !79EcL9-(S rL6r< :fF$:ў3G1ɠVL~SD|G/&AzZCg%:^<]8j|>6Kgt{v~w<~G Icl1\cQ d@ BF`" A"5+HjC- :<8ۯ7G(,Dʹ4z܌Ds,HsCbw CKPg/%sVLo2>lȕTiW,}Q?V5^LRbVAMoEM|Ǚeh4U56e8Q8FEjRydHΰ],NIW(@)vECR 8I&N?Ou;%Cj;XMՋNw>i5Kz{`04i9@ybEΠQ笻nˠGm,[FM7 OsLV3Uʐb u:NoQEs-)%e n|9a"|z ݂Ӥnou0-9bevUۉS#,BS'C ZjC7sd95ȓYm/9Jq'U}4;݅On>ssܝ[m/,]mS_&?bk\ G@$t]if8 (e8 d^'7&Փ'$wD9;դK6d-kDDXl'_{3R,=GFͣ>rG|o˝{eހ/0WИ6<[JF"GI^V ap) ~>`N kuf!7Ϯ  ?őS]խ U7FQ JL}wەa6gA7&Ň5#RQn|Tf2=b=wLAs^@b+&~0TcM`vlnO3ԭmvUM΁Ř斅0'$ f#&INvtzޯstt|cxo?jc;֋WdY"dRal{kCk(QIx/A׶A #:Ѡ hS; xj1xRls%qW-. E ,L6a4Lo')[=- aiT /AN'f cb+*e3.FVaf+Au/t@(@;{P\˪Yb"fEF rzGlZB!g;Gդz#ܙ޲ܩ0ė]1~SƟ7-B.HKQkBUR^2%zMߋ sj=5`-m"ṉ'lD !󒄼Y'*@< :͍$b`FX MNdpR+eX21 {խJ)ƱYօӮs7aѦN ;]j q>0je_܍BC?;} l[Y 6Wt49k8 *yѳ5-1 (\hŤjc'51"Q4XJDCԼ %Dcsr)IzkZpfo~oƳ;OxwK/{~c ֯;|k_KqlNؘOϦn;?nNgim^{t:MvgVHvo"gnl*RZ6[x3ydd+GÍxԇN^?8<8ӷou_7oWW1a۟Cldlwlr|~.O\Ohc5d;׳I{jf e[wzYcΚMeX7%CkK?D? 2 Le"lw{~%>~/wcIx!MQE`D\#6 Y͍K|5S4d4O5_>ssܛ߸)eT`S(8 !@UD $Ӳh푴Q_o'^Ѿ(;IE;8Diw5,֦ʵ=9^k% :T +c!=^p*ue!Km31bA ;錄ȶ.AE}^Z!ty2uә<5zz:Nzv+gqi 򯄗hk2 `=Kߛí0of2̫4]eftkZd ?#g]#׭){Hﯤwgc럶qeWr&(Y~ʭcȅE| ›Q]KG+4e&Z j.ipQݾOμȘIԺIjkTKVK:'3 cNfhSH+m$CYhߤ*#ܙA|5mCgNz82/@j٧\죌Ӯ/*O~)dwY5;L9 ,&l; VM:iﬕefI"\\,Pae,,R\l+~DʗVo0HJ(roDxTÎ;㝑Qؠ;,GA~ /a?3"$GNoܸ|n33k7s m#Qn"WA( D`D21C֜%, (ݽ:ޘm? ׷06mG#z; Yګ?00 A}蹢3,9[B 8 g.6 Chʤ7^CJYYQ>3bhɚ Ik*KnE0cP%_<\RkY eA H_Ðn^aH? 4ٹVOxgaz>SjL91) Re2 !SRPZȖ f틅h#~s/Fg\+de G};+'9SR݂J֕:Iq\_;C|Յr8הڗ1uі7:֨dAΫjz)Ldb?Hۀ?Sxw;F&sκ ͬri)Uj*T`t ,Ov,e zPuzmԣwb𻱱_JYY,qA #H\.K*рe%1|5*52|lWAArݫ."/Edr 1D +%z=ݢʕ Ea}xC+AYV>/b4>*8b. ,dJε|x)B\nOá__|xH?!my>ޫgڝMڕ,]k]J.IZYl058 0 Ԕ~DVOM>kS7E+Xz`:23ypH`EQlԓU|.[6 v&a$XBpqqWDK@5(%`T䐫3)Xn q+Xkrp 2JRʠ*P,ʫЀI_Y?aVO~h^{:-z嗰{s,şe M.'F3繲= L[fKj~_qf2]=$4S#Uli.nֶ6%Y*Y{͌"/{ꝩ‡Rs;U)Yk:pV/ܟNGJvg+Y{G5Ŷ$C1YJJʠi fVxzZ=/&Ce\:1ErW6%X* J6]PD,>TMp%0e(Cu0 *xyzHzSF^KyD5ia^}97Fp)f)Q!"gAA 9ӧrH~Zsq< K0h>h~Eć t<`5`^ܞ@z*f,s&IZW=[sADJVUƍ\ z[Fb?RRu#)fzD5vЛM{a;&xUE놬7MR:\'j`t@'4TK"h%#Ե䚋!B XaN|8<ȍ g@k1D-# P:sv4, KcRAP]\ҥcFx)D>v:iu}'T+o, ɁH<"$ Ȭ]V%@Blke9+*GuU_ø>ɘ>l45p` !VBNw wPN'$=#=sydt2͌']SiclY Y2hss?L VN:=YlXJ`ќ9аL+R/+=?p gT /8a·*b [tS o &停4g DKj8R;`p2N ҮP)XqLE~X YA>OwYz!GSw8W痹W|; VMk:B.°iaT~)U߁E4GȺ.M2rs*;zϯasDw)e`A> dylY4PX'#)Mzv&1o6;nr)ɥjݞ&rv^#Qnky>Kz!se/E< eGHzV=9x<*e^dP Q$N#^TdekofqEXBږ6jRPƷ,0~Jٿgnb푬[ _\^FmgP U!#AD|Ҷ3G bt9?(Yoȁh^D4-@qgڰ^#~HTfgl|]Yz-Ģ) lDO(+9\?LѺK6(R˱jhC#o;}sԜ?6I@cPeZ5Uи:Tp_Q6;bӟm\']>5Li3)ѥ@$]WL*-ک Us4'"c?;]rCn !i%3=`! u# (kt.&(x@ $jDrd! ʉHeE$6Q.s)c9wKlʴlJoηeztk QrD] N߾ 8,'M^%Qզlw+̍*I 52,!=ϦMjNh6+^mn||R\S9i B]LpvDI6:43am͎9Օ~ll>}]$h>˄աRc= Bkv ᨿsP)aF-M6Qd= {k6i6 bnٌ,0GNejRŁZO iI?0ZFR ]ozIJBH٥ˡ/+6|DnJ'?X\6Hd`:g7C_QU8z{#Fq>X,#rOFQhĉ ~uPBEpEsOLHxake4yfNHs?Ov=62|2im]??ɵI8ڰ?Jcb,6v Rc_0Oj~4Vi4-LBUW=!wHsc{6f8B(^$96\@(2{'uf <4$5.s>ظS4S|? -t 5"O@ EqQkzN!hƟ:aCuUlﯸK=xkc}_y۝w,)[}09ݻL;8Vq>='x~eӇr~&!wc3ce@A%թʟ X̱%3 Yãux4 a:#cxqx Rv%Uw' ЪwkYZ T^:͌t%cL/% PV`+|˱Lkjf48dЦ ɑ[ˑhA\z fuj ƆjΥ0y(OXP}}: 3 x_@5# */B|2q콑3tƅlٽxF~'-X`=2%YH7hIyDg\+  UU|'ipwIHn%9ɥ]F#51Z$tiDDZ?`]iik=-`+MMd$ǜkmTBk"6/T5h9&օOu?Տ/i2l-P;y[kSUB[][vumvN9p2,j^RAe=+쾋\׀..*p90QxÎ@D݀iP[.=\ÀJQk.)o\â+ r{Q('+# *С?h|Я_GTYLtp mЉ+N} yNaDT O.~ѸsސBk?C YvzA#T3s=RV&ty\zɨ߽=U9٤sNK+.~+s&!{74{23S_IT<RK1S9%^ʿ.'S7DoWW%}(4ߒT,+ۦyݓYgrjݞnCX[XG|3&g+XDwҵr]dbp~4;Rq9UOry8rCpCJb9>]Hn<#-m>ڹ1OO[)]$#p忹*RV񟊬7|~C-Z)}x2&My=&sR?WB 2ژS$ yر'}(Yvy<L+;Pr:5?3.%Wd}nE1BֵZovs(ل-7S}`3o4<\Ѕ{bV!yž߳cBX{Et~Z,| 4ZISڑ#"[Uv5KqDǗl;9=KtӅ%ߛȥc# AMжؖu >sѩliZ:Ɯ`5PWd8(M{}^sZttԶQuHK`V=M!9)jf/>}7ܩtgMk7il-3K7TߍWynH뿖Nѐy_5F:+́8sMݤ[JB%Ӽʌ-[[@H~)>LZ:_l@,+RM"?A i4XsI2;k\itr:"[V 뛛;f$myQ Jrv EʵW3㺢ߩEV*vY&N-L/)Lǣ>J?>U_؜f,;Nch%9m'L:XEdFF_q:4'o)ꧧ3w!#rXL`|*W}ADRktMМfO:7Uk 9ܫ'LnG)ҜݠO\oy>?G 4$%xd*(RHezw<`/2s3u,dORQ|E8 ,x < dۅ5oazɑ"m ж(z@ 3+@ޤL"vc˃^Jg#Fw~4 R:ɮiW&Y3?YҬ=9W֟mC٦rLijK>ʏUIy͋{Yw 9414p ;恽mp1D"\nBn@qv/mp^:|%Q@Kg]B{T.1ҢNlݱѦ?NqA~vM[CW ʿDyw32Q,X\jvc+G Luƨehy ZѨL0@lUWPx {0hAG4ǣ5":% aQW;wTǯz-y3b?jlVE%L]Su'a4S6Ua/%r}L3t?D 5N>ʁ.nNsۥl3™&Ó~d:3k8t:pc>>E,3To9 sQd^6͍u;iτ, 7Z%س5Q$njWo3~ M.nS76wu{DNMu3&m^0͸[6s"|Q,=Ѡ(hMqKb0k7]vQ)sƊޔv𧀃0|_}(cP';'&yDy;9&-^Vt$(ũ<:gNS^2*yc(" ijY}v۾zHpj)`aY\WX]wăLo{)#z+\}l)i zAl;.2j>ܷ IFFv65!'Κ@d.(EBgv&Qf0 4u%N8UvvF&%[ w5(n'V%LVE^+++F|Kv-yk[4u>+ԧ43xT>Z4֎$GȨ`їqMh_^冯۰-60}Y_7++ uc/U+V}% Ԫ) Rc ř -4p&F&FD0 "M8ӶS!/)OpxI"lsg/.p>5xO9lY|>0ӏg&ҬF4HnIYdw*p"Ė?0G-z`QN(X򈐪o므.nѲđegȖ]U2cQK=U_'mK`+F\|# ҈ȨjMLU"Ԋe&Wə }#HCcK mBhO񬀂dA8LgQ6 ]Dk` .:'*` 2JSOOc$?5aݎAGAhW R|n"3<al?=V=<9B#fCg5#xi}13,Wku{*NUt*xֲd5с2p1vv/kP?9<7loF7|8.-^kg9_j.}DVF JJ-9);w0DM j&V[_A4GM suwuvl=fo]±r @\dBBa*ժ6V3X( k^[o7h~S:wmݽ:7 }8kJ43CBͼ\;,5P. g ,)Xx%y+ɸַاZd|^Ur#Ou٥+G F>:g.Ϝ5 [ז/K`QMYY` }\ePl7k">K(w8u=+^Oip fNگ u5R89(X83j*O%puQxxODf}Oٽ5" wEL;E8 !m*-fXb9JdN]`q?#t %m/*EPW3|:c;`*^YŬKg\+Y~|j:u%iC~_7yM?| 0ݻaEN.Knx+VG{[N4bU #!G#zt6>([uIg<bD,6L8cezcUjMM潍$~Tl<ۑelC{X8UF dFPjA> ٴ[#Y|RęέZ9>T!Vcȗyx VpZɹrA bzRâ^4 `Yڿ'K;P m=HchNAQ%>ԁ-<. mA*܄o pD/mԚ4{Sv@2 q32mY2qa613(@I{sVL1"4طҐȯ耻FNO>P^cΒɰ^0eKKVGR'Dz)`oX/Ē9}nZ74!)^:98ɅqA?Ah[bL.F4|( < " OͽYE!'K ZE 8>>31՗M|_%Ithm7c xf4uVIOzSLh\AnpTTT^+zϴ >f_ǟ+*``xФ#̌x~^Z<)|D9хF; Cwd$|{X'`=+kmˆ\c͊港|O.;|صBz&qgyQeo$\)I<[f rݐHrb@ hD.g4/aK Et>^W&ԜU_GszFأ"I6Az1pGE W@tvt6O?(W]5a=iA) ?';˜PaTT^w_w#fyJv6*R\2x8-W|DyN3'[#>ed -u7HS^Sj'8̕p#[|Y,YY> Rzp{B{gKNXhƃZ{Y[eyRċ&{t2m2jג^}/-r_fzs*+%iE*l^2ޟ$6]vA)Qv G(mgi@y2cԻ sCd ;lm)M|Ć6,Dr*xo%톇a1o2T?d+}Mn6.r^ogpfBЌ#nXr7Md$ >AY4} U0 Pٓzz:t)F=wg˲Q̝>l|w$}=rWI?=ǝqYͧΔmt  ,ፚYo7Ѥy+hj|Xf@[Dˈs@F5->ca5h}'[?21y%|yÃ:+ގDDWIM>kdp7{řI?C!FB4m2 ^T {Z'IU:Č 1ra\~@.ew,:UPU嫞"1[7nw/W)zaܗ`KQQowTX"䯖z0CYF^Bn|Y*BrQ|8&oG(4<|M|ڻ#*Fί {lQM!&M4k9\k'l6`MTrM|[' vY'61K_eBS貇, sJ]+#_!M0O_ZMϊB>, "%O-χI+wi)*<p`)ye^wBC@} cYֻWIj>Pn%cmݱDz6`1 *)D0;@1+PU! ^3PIuҽ{vGR>xch|gPu[u_u 0|_nax3Y{ܦdьgV^4Ӵc[wygN󠝦ql:m"=hiŢپ־--m?6s?t\UÓo<[z<5_׿_s/Û^oix>x P4h}k>_崠 QZ34<(w'2:x>x)z<x7F]PV9+wvs_+ \XvEY:ZZavΚsIٌrеtl:mż ON|DAn#H{$6 pYyKޕg MgU|%=}ה| >@Jͺ?JQ5qp]Q*#9'{Aw |@ip" `# ^hQhQz4vc GvX4V-+RQD :tiQ] cPr?ЄĽ9tUE= {<wz>po2?oM=ĭ>3"{ |~[Ld!YX$ 4E _+DI_I3|lxty>x _7 R)A<ekǶ]Q "+2B;́0&l*QW@ C3޼AMI7=Bl ?%Mq|5mz7; ^~ ]ZS9o]X,;:ǡ}ȩGÁ'|ElUf/o VkD\&Q#Q~v+d>/Y{BV͘FO!fLF#;9XԠ]5 ik|$aӒ*FHE{_Cܭ&x}T|fQ&d%Hvw}pVѴb >[(M\,Gv':9JJMȞ0lmpW Ohͣuh~e)}KO916NFB/jXn}sK2^#zOݓ*󤆒&Oz6 Qn޼s w/Ht85MTVbLo ́l+"R'Q`5s2'&27oT̪zδVUt t?S^Y٭]..ZD S%$ܣtH&&|A$.1 (Tr􋏓S^@2 a\?';GDOS(OQ4J8z3bf宯h+BH>Bnc@SRxfbs.4}niԧi7H:c”ʾ9ElYyY?7*` QrrR0TEjAA$F삨eR~MG S?^.TLCZNf#m((sP%D )%*TBplbD2&Tb8$DOTA.K'iR}_D_ K_U*ʢPjuBQt'Ba<λr8k5"k|{&UZ*~a1buꥌϜXyFu;;WCy?r^?ڃ?|KA}ΒHB.\ ˛\#+ɲ{7#r;RyeoLZaċiݼDk7>*(TLP^Gʵ_ϴ_ޢ.l$ jԲJߒ_''g8_yL^}pvK2Z9l> K)8/^iE7, Kharp O 'J*StyJI2%٥^w܂^\Ve17K" ~k\6D.V@?p؎zP vˣTa%k8qŖFC!FIĠ&Րb s2b `"nNtilN ,:Ƶ4^h )dP+$#~^LN~4Rf4ȫ68Ŕ_)YmQ>RYm4.#N{&vHeKK|m[MĘYB*yBˮr9(`V  S0h4P }/t}AL'qw#OXx<@!z8Y_ΝĻhf1A^>YJţhZHZ(r?KT^Q84]&eV;B~C4j-kXzW'5Z!bhdƐ 7 rzɥ mb5aM-h8kvXKܴ\0%Jr1#Pbu%hv&iJ 2F gҏyz8>Y&_k+-Z^k|}uѯ.PsyTO#M@D蒵V_f-(%RSJ'_Vߡr4Oxz[&(͖3Jq+Y{Ų=oHjUzq$~bM&Y'T@L䂫ЃHWa*# s ~w|ܫ#_Q uyr[ uf3kI̚0@(63q /ddo@pt_)GsU$=S}^w좷 ,虹M)ApkHsWɀ o(HPf`m6۝ys_4/6'CpO.""BY&d-ęבuV6ED k䑎Nj(I@BJ=,W;7˻K,A?wq {v?/n0ANs!!)Zj$TS_.u_d~oN_v%Px#paDa8i$~Qd [WE(;# v UN-a'b$8 )QߓIz֭"?.՗;{Y%ª"hN{D>Pr X5TXbq(::YwO* FvOj, 1p&t6M= (B">Ux+b[Ô Z]63TfNQթ}gNwHX9~BL?-Q6HZeط4Ѵ*AAF?^R}a?{bۤl,F3vr Γ*$2?_q kD -Va Y]1G'Gxr9Ml>h%P;B8?DmkpXV,DIx-~%7eZcHf o84, Q N"zغy*Y-/ YIє_x94S5mۺ -1:MD41.rA#S.`1`P C$ޥI`D:U ʒ@EwBAQ>RۄDvO+Mxߕh[D.bFsmL4UB'] t)|He؉u<}t-IZulƳ>h72FM^7ёx@0 K?/i_ ?[&$_nMI+[NF]s2ZhslΉE_=yЗ}U=g`AsiÐ*\Amζ>^n[539]sz/{Eak%[hwf1'\;fiiWDyق2DF1kϚ)UOKn*L-+*+:~I'1󫀉`Q#(pDG̲ly2qm)'\ tuVs"f&UlWY!_,orr=I]_/뺵龦 DDBB;h.byRWSh"_RܳAIth`EY'R_rՓ;ڑG&ש2QhӺq'_-Dw|ލkwqoyy/CGE[tBXY!7#R 9zT)PH7uaYe^ԡr4|LD6TIJԈO2ȫ}3/hǣᓓ3 4.X4m7hCbд("KalU*,23Yi2j-S -tv&ƠFq7(t@" wx5;ω.,?il׳ ׊=_h^tǷǞN%M7 X颞p &58g,CI5 X(j4o$N%EXî @@PxzIzqw_#aNϏϻGgUJR_!Atq]בP9|aR,XbvވB ^L55uIAyG('jV Z<8LI]Ԍ?)?}+GR'Kz 6Mb(Y?4&f18mpJ6Sf5S^ƇFGE:_rJ񤝶`4ű#̶Hi/,C% f(®'xlP7@yo˯@ _)A5},{nVM+?]HQ.Mߍ\67 i*n|&j67U_i&!NЇQcBp:Xaiۇgjξ*4~YF6( }!G}ɣh~*GӢb,Wm`yޗuP 'eV8v ٱ,g#@KRH@ஸWAF#,0ԥjx",眤cKv$wE rk aL?fhKC/ha J y7$FRtx3<)]–6^<)A3 VaJ:yNl5 m)4Շ63C_+Gt| k!/FE_h-jZkQpax9*, G͉^>4lsz4&;os6,X>,^:XV˧e闐g ;f=qHPdz-7k+D;ޗZ?w:4V&1Jհji央h3o%T y'C(4xڝ<~%9hL-hOt{%N%F2<P͙ѬG iHȖI KrAVcݮ`5j xdrP6F^GGIeGf/>Ht@M'KAU3R\Rӿ2+)| z aJTWbSW1UgXLGڨ!h~f| ML 78hEJ 3v)u~E; +9:+L^+{t-uLd;"㷖^qYD)ۑ\h/%!B́څ.um#LXG%1ڣ*`KCoC+[N6_Y޺#Mj>_]Ȧ=&2Xb LlEFH wD (QFe7I^33tby͙[Fz|`ug1og ܡnf_B :Q.x\g;Ō^4sZr4mG!],TY+Y!E S_Arir36Xvag d7s|瘓-6|cCek l84U9|.8ѓE0x/FyGgձ xK΂% 73@I4@_,<78  .wv:!¾rvzu86Mp ^+i<ww`!%Ϯ(_Uց1tUQu7.{ ċsmvT˄C^xd ~o=w]`Ogio|4m;5xSA?UUvDvsѷ=m;9@=&S\ȵy3anM7kmƳTW:7땗vklo`IkIb8Im$"r;)]g:ZE"tZ8M{MaD5M!}MN(_3>r"VTKI|yJysa: W@b'#XJ , e#ܦX{'F-+x2l+F[_h:˧|d4ywebz!b:)TG&,l2oDL6 Ž[ipmr@E5@qNvy-*Ea{*#D ! X>'ŧ!0>']\)azRŃ=p}v&C0P (0CJ n´r~ _T܂*$I("'i[i0 O Eo}s]M(h邮bAnGv F<&~w i-`k]:tD ANέp$|U$S u` pDf}(l7׶y.ŨW cW< d7xB-3X\*],D1DID@Cr+P( w{ Dy.x)l '_=Fg; ]p©=%ɸ0yZ [|,Wjp |]-o/RKǡr4Swuv쬩{("Gc =[fћsXKh[)xh(>l; *bZ+\OBPQ ,* =9\4Pi-ΨrJ-_i\ys} T^c,prh~4!@GWVx5[`<87{ #c|rԟ:On4د𫦢@0Sv7H+dzϻ0 @H* H.k/0'}6b)ĕW7u< dwlKE:+YeJ#x-(ÉI&+i՛׼t ^f(cOlc. Q[iË&.SR _.BBQzYr%e~/{b2{=,'#\cpɖUR¥'L&w_TX4<ͮD۱nkVJ7 uhM^YK4Hx<rtlcbZ0jBRu&3UMZtƯFyi{ݎ5/Am?H[f{ߙ@pNj&E`a|4]BDHHj8И izB&$QA q9֥KN|ǃ({i;o*Zs?}as:m:I\ϒLki6jET9`!S#pTUY8 hpE*d ƥ)p2’3B8I NΪeD?IGѴ{tVgV"&]N?\.VvQQBp EBy_NrT~ 2AB9| JCH< 1IC9 :#ߛ(L8p206'P;Fh g(@L3ugYmji_>W3$,6n:+>p e #L->)0IR}^,I!D4/vr͋ߍI 8LҊʠ6E43Y-d/ƜZu3/)H94O]~Ϗ@ݼsH )Ev쾆MaDDz. mM !mx3QM/0/ (NӤ{9tVgh[ۚZ1Vcز,HaJp<Sg &JB`ʜAN~)ʟ1?myEAJiݲkإ RRz<݆wodfIsNe(< ֨(mx%h<"lh$F‚dH /WDp|\!@?TRʛY-(nWxrGAd=Í߉k#t,3,+Y\'1DSa̛RGG`7_1horO9W=@`6˱%CPJEu3AxQ4JIB:oQaB? `Mw_b N!K*l1.1e}\CKSCΖJR"9| Ktȍ]fm7 2C63B z9 ʞԵSЀK|jאMO1W8S_nϗ{#&z4Z;}r.9=ce6|gC d Xr ;)S07ŵ=o`4 hbe@{4$ЍP<+$ |_1k>vh S,jV>YI5S-zQfX'5zj?jy[PӴi$`a$ OB]˫;0K'T=!b=O3y:w`~i\գ cuV'$0D$hm(0E- ڟ\ƏU 4jhkO5Qy=Rs'n=/srSf^)@H -N$Hb=p5cF(tV)mݸ`*B 5-Th55;$QHJ`Z9B]h븄Ri\Jђ_L,ul?Qǧno=D~=c3,xv̿&=j/̏?/ȩr]<ޞu6QpbщGJfo8'SS4r<5D98 B~oLgqF ~i+!9{Yy(}nlyt3hӀ:Ri΢6A[1#?.O'}s$0Ȍo"#>PG'=p aK^a- ߲dNsb\&CQ<u`O\;vxzVr/^9wKʍjZAM$^2AxiВf)׋WTs^MZuI&p3-7.p!M.|:\\ǡE؂j08A<XP(`Q:%aqg~,"Ƒ!A߶ zt8eJy]| 7Km /+TNr2+ ^ 똞.` JإD/AΕ((–1DP q# gt*hH>Qa󜧙D̓w ҝ7;q}Vy;Q Ul?k8 8܈Yvޠ SEg){-]Eeur3</dLWX\/2`J]q`Jc2 ݔҝ}LpcWLua&&`aGC`Hh*Ut|Iö R<>gnucܖ@ol/`CWBKVb*.VW  !8*0,~v3LaU{tJ-[fZw}oCT>y_T{ʻ蝇c}W=}[{vvܭh24Ѻ:֫j֓:|&M7US]j_kc(m~ikonF¿Vû# /`Ld ^ jFP;[=w3{{/[θnwC|Wypg'vlћ^_%~y۾7|CK'G?HJiJ^zRi:OqTU|@?UkIx.@5Ml6&}o5ƀ(BEJ#(|gcKwY&6`51\2Zzxj%/H~Q1^ vǽo#O >Ty~COs\[VNP| 7&=RwhVo61U@$ZIuTPtQrY`Ac K@OȲw]~<|Ez"{>t wл9 7^hKVϪAuSżʳR`[cVԒdYG2!42q _#C"xj崈{+cOl ~ NA!3Q#a檑5WpN =ML>P5Hä>☔!݀z@k')"en.^OAv˨׿!_Ozz~VȾh>44:T­'Q(~tIQQJcM_mWҊk"faGiE"&>M\#N٬qwx:<;k}W} ۪|J`X<j:+eΪl %JE9'1 ""iOAzL-3Bٚ XBӑZDƤ'֧?{[xZoS/t^jݰpet-1fN=*ޔh>){hj){ TAh^J!! :P`wJ%RU OiH&upP?@:ڌ'Q3=҆ћbz1'c1@.&Xt(e9f81"C7YqOo%]p:ޘDӯt3Gt~^W.Aw@Y(*#ȊqUƊL0={?+ޓ{@~4uҚS-@$7:0eK3JqH3E">" uFnĢj6@#Nv;ik8Sx4G/2@bqB#vNl+ :s{t1#;H-ZWb@,:z@Q "6+Fl1h,˖Cp *И |}D8e8Ƒ*1BINv"A<{zCY*_bUtg Mgi2~9͊n^*2Ho(bH pX~MQ|9|^8~h\ C ϲ̢A*H;'óa>.<_@}٫wz!H`sAjеAX8llꣀ@0\]CA>i!NDT> DEEz( Q}B2+r~MQ@AlXJ],Ŏ&K5 H"nh@VmZؒu⃏ Bcj(qx "-#P;9@kUn4B ,^}B`AH `oR`UF%Qk̞%y#Hr%p?`I$Hmc QCOfd6"6Qfè8i PK[r4y](%) ~@y{ eُ#ۓ4Tg˨Vj2/PMl>/8:K8?3la"ZuADvp4drn54 Ȟ'o{s }'--|4@! R95:gMˢ:2AmL iULPXM)j ѠLZ 8ap/}. l^&%X8\$uTO)oMGЖ3N:" G߁;9jtd)( atF&_ި<^t@? n^vnx<NMn+o)M|yN87~vY# B\GcU*xzn-W#',%kr\Kp,Ǻ8bpZmn,UL (I 5v5/UKv)=Cw9!^Q=` |V$ǧe?sWxO;\͑/:y e2ZՍշ2yo)L{HtF7DslxV* 9>ygcۭC w n:VbjKFXS2_e1p9D!D$ Đ p9T"gB>"> r$ RY6{R 채s^vp[h~4'9_R&Ep!ALAbifL%OG=C%.ŒNETJp ؄"=` ЎEhY [&5 ?s='@.ֆ*A6+²U˓m3a6̹o͉|:6|8ltG.+琲+㏮|Bfa&Ūh# Z +ڤHuCs9}o27bWlFbq^KyQ#ET#l\^9&a"eAeu9[ٟ)tNg˵ fr;+C=$n2-~P*(<% @f#& Jp?덱q8;j/;3 4Z4\Ꭶ[hI9!Wu7)AASlQjBn d:&EdZSJ;u08K9 &RIuD+izu T7E`l$yb/IHw^|[fU{W`ܳR!0_3'>;rҸ5Ч5elEF%"4YPX_(~:PƦ<T/dKg:Ϩ:_J 3)du]^t䍐EGZؒ.>Lwa'H`(e|2ވs} ei7bXm zy\gsX5ɲА.'d1AVp-GCdQ̽uY͔jn?NQ@|3E`hI0+bؖ@=$Xoѧ;cӬOwf9\[Q j" <zXUnRnF1%Y5sYKXbG,Ǯr 7]ns'` l?R\ ijIѼ\]h.9ǂsKZ2F|F*>-IKT*XĭB˱i)BQIbM8F"ǚ;?1vƧ~{u?S5'j @/]nG{h[6%T̞ey?Ĕ 6Rz`t=$[\!LGiO܍EMxwNtA~gN=V Lѽ 5~ oHjlp%n+ yHmnS@C3BScf2kmH%dUpKc|\mQ]?ɛ|i1in]BD}ˀ Gbjr޺j=ADZK&ԀEl@lM:hh^=zTb;e}YvשUsWq|C=9h^ єΰlKe݄:(}6 ℩gqR^Gz4wfg?3>ql{q?UhJ\th +֏faST,k5jP`,?Sf{hrωS8Cwi덼0GanarJ*xD69互3_q33'!UqR3TxIJܓfT|]ZEh̐jDnL}3^;Wg4E{Wt7D^̔XwA>Iշ K)Xak#+{nXWM IXBw x/v-$`6ļ; LXjaex@jUmƒ\;?s2[)N85zdPR@{JMrFHNs+Jr=U!JDžlƭ~Nҧۣz!9"TycFi3l9dᎽ!_$Qg')w0qi!=dGHi暉2Q3Zcjw,hpRbˬ"m)PC)P'u% H t`>(8Ŵ%XMHF|feoDq<?sZ!)&*ǡ&AYPbdٍߍmJ_Mޅe6mlؕ<VQ"ĝ!ùj7ep'd7hiٰP{Ԫc8鬭d>\#܉oJ0sJZ,wp\YsZGS۬G;N:"G:X:4G40-"aYIiUe@,M aUpk3M9ӿdd%tn_]Co~cڐ3?{D 梞SQmM֗E?TLZR7j!0ߋ:l RSֳ.>]|t]IOrZ5FY?k5E[O(ӯeX2mZjm:M/޺% <"}{x#EFi!p7ET_1beSdcK$g {H[5>y*ON0?qu'%5K>\z|RJ:1>DhowJMM{xޭ''7(0svqu{_+Lnbu>ƕ-"L; nX3=KrJ(՗#M@h܆<{e3nr(OXLƛ448?Wr WRB*-vYBeڜU,qY'LmyK {ݳW3<b?.ݰC9'@N_P,˽JÕʲNEuƢZQ' I5 f^K\DlrC}Q*`@CdCw0EwhPrRXfPOԱi OBML5Ux :  O{.Cwq'3|/P &H(-5NMf4i\PW1&9KNQPL=4/kwg͑5'6Qpe(*xq/lK^f#g!;9}@ =xDn_=e!+a-5 !nJΡbDEv|6 XqH3Iqt#64>̒@НRSz@.}U|_G{Uɱ˜hIj㷲W@H L?<D1nז螳F-}6bU{FC$)\i nKuȿ{UVKւ[ wszPeQ4^hK-qy(7*4]vm$A*%Ȗu5NT%/ii(BQ5+*gv㵀n(%>[.0k'U\qUAycؿT7wfZP>ug1&[q5.هWdoٌ dΞdf[l-ܩם>|- ,1LTI[ܓL; 크Q(xR47a4#+߁'$k2o4H4b4|'`.&Ǖ(-V4[quʎ 1pP<>T- >ӬKEDB y!OX !F70~؍)Y"xt5{[=U*GݥSr;੟TNh2SoGѠvDI}5n/~^ڨG^HW<ߐ 1959-a3flg<ל<#i![a6:sX'y4wJ+v\ sU)D?%!ͥ+Uq̃r.ĸ!PGO?7G4&t#BtnTkNEE9_Vpʻ.U?u8#)0}0̻SLqYEo ʛ-h'BVD 1QyO`=8u8N̟ڴF1`E8uVbe5c5d^UZYƆ6JҜ^Ac̤?w{k:ye|{94Lz/P(Vv*,) hi 6jD=)6<+aݢuO6TS:F ~ ܀^xP o*9c^M$GttN*L5XhE5}T+i7e J~EnW#nX!6;4/rB%7V(՚Փ-SF+§Wl韲aUr<+w'W> +F]gHCBP&~HJkx]![fkۡXZ;voXDN#ʧ}'9J3; Q,FNuIq.I~r#(`=S݉{m!t 90G`Nׁs~FQ1Qw8r3te(1^;1Xl[hr$4ZJc_{zsӤ韜7cndt~a_@!(*7$kݑ]Rxy#+1>}QN@'TCŽ4כFu06.yi\$4'"Uەd;k:ac=t? iK769Ic*QEg:}LA&eEK aUVjmI}o>8f*睁 k#Xݠt)JgC ]EdܻF/͑_b*ʦ~i1ӵ`TMoCP8y R(S4FH`PVlvci"n W@;W:瘩mNz>8Gg>g;? Fu<Wc|2 KK.7dtAg*-rN ljOɰI8L_韮[:RyIut8%_4":^2{41ӊK[cF:=\qS9 U%$b@u'1>AJxj X6:nOȩSHP ޅ_:%:V,_&?Y(o Fud֣e81 }m:؝V$B>B%SJ$ʣ"9՗8CVNg$1]25ȵq9~84G׍֖%7Y$Vb=?kP:4kV9D3ŋ2rMcd,6Ǜ ev'*gkfhʲwN`MQ^kTkΎF>6XL*%enSMª4ĉpJ6w8Tο)mLH`ehN{o@EKUW|V;͋Bќ8Ѽ yuXfrTF..EAh6؝(fb[!"NHEn9Fu?m&q-|J!HA @#6]wְ}i/^ŻnX=xrPEX<Ƴ=JS]xIVyRybCIK>quIs8^F]W^tPHLO >5eYJq w_vMo n 3$fhY6߹zWV\Sn܀ZM.%1 iJ,tK`eY*Q^-2}-w`LIWޤNB6y"WHGÊƄɹweR'޺Uָ6f{hJ;)<| zPrcjevJ?,ķ̈́S2R#R))ЛS79)[پ^c}tL}I*#+fM&i /|$?Ob;uZO.bLvlNlբ٪*Hl`>jR֤I=̓<Њ4OgP2\798{ J<sƊ쾑j?vg89eG)թ/9QeqPu5V7+cKL2;EJ!j )pAދT4ޗX- ŊPN7RC$bVzU{]7®2&; I}aDj&Bゃ8Àd5[25l@_R>hYH܆X0dSlS/E׊Hpx1TTײx?CR hjITeН܊3y$DϰU^fťNNS"F\s#<ک͛w/.$nn!ѵ)({q6G5Djjh "{d͓:M͓c~ -<-Nngq,#?vWTXk Xu2Fkr ~w.%Twp<)6h?ݤqgdtVh6]Ld:ډ5z̷Z4dk&, ɬ ~k[)0K_=QCKE#С?RCeE !_[;AGȲh0 ?r\#7jH{At6X+vu{a7С4l|Fb?Mr#~vq2|?-4tu.xf K)>X&8`^ƿ:4?X#mi]0٠6 !Ce҇Վ4&MGCSh2r]W*1UT{E%eC9Q(亪23,&wN_}Ej)_![RKvWA:oΊ'K8YY,*Asd{A6;yjt}.mZ(GfdFdgrc3c`3{Lu`lii)5RI=XR7l2q2 {6ְnN`?Xz-};fM;ē E,i/JAp$R`&@Lx;&. ce8 )v&_U<ҍONvn‽Rc?ݱ@v)9|^meZxCeW唐?8]~up./ry4z%\Fs1 eJ"ҡ>,MԀ3W!e(3K*i n(O!iU6ro#+}q?ߕ9%  LaZ,26ffvms}H^Vn)rNva`3"^v-`8`-qg6j2>*yhm@uXAc~IXSn[E1-)NMyhM{V1z-ӡS_؞n,iOIw|6%d8FI{?b}3Xgi|fm.p6zЕsLν nLv'7 o;FM /8)Yb5 iǪ/!Z @ĭ8Pq  ]c6T*"ʦhoPpeFk&N*)9qY1\u<*9K icMOkr"YAE7*S#$cDhbj b4UF%ӡ6qNpm?cxat'~fp:hx&{|'6c.Yo԰oC1KHS3읒ꆙs:$i1=I:fԟ$K?~+Dt@Nמe93Kld7"2baI=f*F7l6ښu^J^dSgEFΎD. !]i]jQ6Yq8o)FS =$=I fXztP"`M)(5 i}KtIphns1JA ʼn/e^ֺT삈㦼qomo[c!xk~!x[=7=ʩEV6 bz2JIՈ_THC˨eSe4cAR1m Zxj"֘Zt$Ck4 ܥn砝Pu'i'ɸI@"I-hθ]:PyΪxvXw'桜*8Y5S,gIͰStu2ZQ;d[[ycw䅏K*h;F%) [|hb-!i\򱀺H{8b~ij_ Yz /L= Duf8͉]汴__6%X!^~yQ'MfvrJΓdɑՏ_ -7M;S='5= W0>b(f @q0+`AC4_JVmϤh֫AsZzc6aO_U` v} ٕ ȅ,7PȸLjjo,gM苖|<%+7B4qۘ?:>:EVh X3@@Ec"ApO7!NSAh.dSWmsRT|}nz|d_gAMN '#rcJK}h+N$"RV>hviNLtR㽅oA@ rސJ ?ߨHR C Η5hh^ @.a1*P,uuT*1zTszy-IpR<=𪧀?Wƌ]H[Em:Y/ˇASJV6a7r@Et΍ts4ʐ$3dL0'(ʅ!VLDz.0ZMTn%I[9y2|jcFOop1iszS Z {4\5/H HD()غ$JZ:˵-lk'R^- A(䦵 Uc$!mTuYxfB Ⱦ烙~Q t)_HD3 ᔱ3ڶ{7'_1u11 HqGNj(B6DY>̓y R1',/!Wf#IRFmlЌc};K<~!i&jn:|cM8M`&ԃ[Re8g2oSDld1)I}ٯ#D̕On͟e ePQv~{KXSà_N+NP NٴQFG`C[gўӻ\)swMrP%=j$ֆ_NidyYD(Uh $)hE/5>9-_kKkAٚٚٚ 5&R9dB]^-!z<.Ehխ.@<~)3̗#(͟x"{epxXBCk?} cY^mNK72>p(δ/ݍ[epX DZ 1 h)2ȼC NT(Ip ^Hp>]&!`:{tnnδ۟?_{m oo~?ŭgm;驵=~o~ ˿?zu[5gxw;[f;i#L4]wvwNm ]טawzO̴=q7U2mRXeZYc3WY3?T73fůj[|7Zx o9Uk`ymz~/?^zܸ}y/{ o|/ݻw_fa~V}+`֦qӣqGP(7/BPnƣT*<-3OX1V*a> eV qG\ i Pg_qogw^AힿczN\w2)wzH q>;LkM'͉3?mz=ɧuK6 љaa=ZCy@2_ʖe֚ e܃o/`k5\`P3F^<hgL_ʘ~czmg:S5vG@6=G-/g̓`, c4B@|y&>Nkg5=g3?냐"S^HZHw= ;;9i{P' =_[']7?-? (ޜg"P'd ^j7Ӡ æ]|pKAzuG04((qثbaԃ>$gS;Wj5z:&j{,ON ֑̍NεZC@n3 &8JN` [eЁmpGЁkTo-C~~3|1_?`ȑ]QoNԖw~C+=ovZOQTk(*>-Vt0K<ƈo^%fSxp;F h}ZicQw>f6^7[k>ˑ# .|R%P#B^9 zĕ@/U `ɷヽ:>w%MV㹏x^ͯXvZ-홸ޓ3]}3=Hho9*{ob8  k4)vht ^ABL*CEᔦKAQm#]-PF l~4V&xKXDIE2@/(kF5T"z[ (0C`D_R6jVjrF 47t&[M@G;m$,F:8RjW}hl3i:h[[Jb3Nz# y0PD=lvsԠ^2fzO"}נ2M z9nZi&ڛB&j$mpx'KefKxPpIN& }FiK9GIDgPo&eC*L30#mH5%P  .uZɻA4ck<;@n<Ϻy z@QS:Ij ] aLECڑzUoQw1k/neyCQk:s0̰36=؝8oϚf Ӭ43xѸL+0juN>`C/iʻVR9=q~ [4b\F9?8˅ﻘ y"{ݒ5QBÐ =D7)KS9Qmŋ6h!%0uO&\QWJ|qK1^z-Z,/wF`e4]Ԡ-ElBX 닫MW8터r{`ₒEz䙴#,cubH씘qC6i}W݊v(3?rʸNP-P7^&GRV7`u#w 'A6adӞH1d5gRgPC5"9U~i) |ps}bF|={}ثQQ{( PpLDCz?7=GDdGR'hU,:}KPs1z@;e$U /$++=} *s~sث (Ftno"hT`R [ұ,hP,!R5Th&;L=_ jiG-J+'U\ *^yy_.gxqjq qLg&?ZךP@. @v UU4MA*& eO 4MF޿q B%_,|,wROh~o5ί`ʂj66b ZE'r2gdױL,!S]y'ɂrXx4a "lwީr"ا\s'̰,xv.=G.sξ\ 'G WIhń)T rR*uzCjr!gݣn$rf)cϬLʞ H OQђS} Q %qX)vx.E@ߟ8?o>T_3B@/;r{u*t2 !t!D4qrb @<&n8\wr濖JRl{;!ġ^FJO>3xo#x)!D9g1 yj8WR4T+Zq7@aJLP[tw}k/@kWVkTP]; 7pmSx&!z>D9X42~S&H`P7E0C`=) `0o-g`ׯCY%OC O %0j ]yH5XJ A#%?@݌XT473b %H|b O޾JsxDA!%uh^P1) ԩК@wtוd~7S2h+,3 ZգHF%|GhRֹª:߸V zslOgЛ%q7#N.E6J{Bt䉕~z?s F2)lZ티]cR djed_.PWէ>j7z-Eӭ3YN+4vi3CA & 2,fRq0V6EQ):Aeg"ud*O{>dZ4Ho<*fkes< ok'E#ɖBs3(pơ^`Q6[EM`Ib!ӢX q`甏/m$ 7Ts|.ĶGlMH;%j&>aLA(r tDPQ-WJT3ڏf^+?V",;f) 5v/Ac2:k5@q#m1(9ADBbh0+Rc145Ip>\{ɍ:W5tx ܙcO }WinTkVJ#{YWl4I䒮F,ce693>|<|OLl*`5Iṭl3ficaeμs?Ѽ86V$9F0ϟ J (3g(E_*-Q ,TJQ*MUJaflEcfit{F鍄EzoSҡ:rʌ}f8dT=2(ZQ#1s>%eҤ vHiȳ2%ܼpHУI^hnظ4Y 4lȧHaΎq vL=Qߝf“&#nry؆ >|M݄7xNC Vbcn%*NNd]1 )/N JϽkף&(YhRi5Pz=le/<璙Rِ8ɼ('/^>L$Y&N=ps)~j#AAKOң~zB 6e`Whl0H-fC:?c쁀k!儃⦑:j #rߏGhNo$c/WjXQj6vs`soR&P$M%_lwI"ǫԓ*][3LN67 >@n)zRSN@ZS5 h܁VhF q"t5.fohZ5[htOK89Xu +=.1@WE&S%LgC.0aIS*(gGCj%A{aH,2uLE²qEB-8Nz+ K ?7R}Z#/*h~n"|ؑƼJ[ӓu@FWT^$eGv(Yr&Љ|JMFNlg55xҚnjl(Ϝ٠"rssZ'YVA1GOV)p[&,Aҗ'(>y$.wOIsQ=1=3dyT}gu0Ho[4/ 4lH Bl(V냧}w 2/e/=ȜdXb6ePߣ9`o^ϯLXzG(%9^]κt4[k qNe8P8X8ZG:R whN_)`:$<2Yt)ل qs&d/^0Tm.>A%6@&z-Gu$yNl1f&-y ֖a4UH\檑fd`."?+j;#Z6=Fr>~F-Bilo/AnB2[e@T¥t%m9[$+"T8 DW. ?Ϟ֥*_μC0v9Ϸ*0/"p3QI4+0Z1XXM(ޒPwzJ%]O+A IgSP\:-[ţ `s~v;%Ej0Zb"mdoHZxg8])AKT Ϩ>@rCFd]M}3-5 ~ -:@3 e}/9n i5!c-c$V'储p1nbtɴe6iʓPPEN8[=+h29]NzK @-!?Je"@4^YC'S!6h1 oAãǬGG} KeR; ;]Mryee`3e9 uI !`ԯE}W'@+4ݦjā.0c% ֹGbɈeuo> Iŗ>7Ls֜5āD~G8+>e)-y{"wVW$.uCyxC @9X1ۉ;Pvq?+Ŋ)cK! \8Y:_IKN>=Xܫ9:kQ`B'{"*32Ć1e?4^ ϱP BA6opk $gl(a)ڷ?wmBX t'-DLZn۫ӓ]gZ3wt~~Ұah Œ7 nP@> u`HpG8b.|Uϟ)pL#w=!#JAGhPKYK腯PoWCMb|Ij&Sch66?Oh+2|OH=T-jGQ dڭf$Hy)X-ݻ OL If5|kdL.8''Y%Nu~paoq#9 ]~kp4X*"'W*E>ѦV(o t.<ҸԬÇ,‚+#C3lɇ Ag7Z䋬ZͫeoFNgLFPv HnE2T%Y YZa${RTe'VI.8 (>8\4H >hd%H۝~' U2'Y1P Lt4@.UK$W`CDV CdnlWmivY:9B8{]j|ξl(`BVղz[zLJ^ݍ aN]7ff+;O[>p~[mhL AJFFcbA{JY^ҭP7z"O\/՝6RJq3sn1%D|G!}݉I@!L8%uˌ}*kL rU@28@;SxWFy#>)9_6TUv` A[T"'."Ps_pjj87 5M;DS7R'2OUΌ*#': P ,{åߺx>2m 0'- c3c/!RQ3yNA-7zp/^tJq'F-(%j|d;}׾;ݡi0.oT\3&>Egixc N|&?>9R%Ss&sX(K8 Y/S0\v!mG-)}dq'/`+ut3ifjڬL"DU|'G]酾Bv*;8n?`Gi|$/_Q&Y0厘1ȡUci+4z<*X/J]Kgp&]nP/Li#jdx8GR9ny5ӝMaa}8Тy2--ɬO$/C*~l%q_0=ަHHOkmk3-I^ޤt6[߇zIjI=uO+Х7˻] m^fGOqORSw7A)4{|*[D{EnnZGV|@uXb޳ 8F6iK>$J 4Oȓ=q%Cb  UeŻa޾G0`K߱#pfå5 -G͉["hw&W{aX7PmOFs産e<Ve1I)*ye|r`S ndYR; *O'\*On>]rHPJ^U]V+:X U)%;̞)ihFUh },ѻ%c{P1DHlgd`ͫU>083 4GPO֨~ 'Ih"r!yAh+y4 ͟͏ ZV2@wl:CJ Y$ϰx{5|KB6Z6yGlFk Dm)k>[]jfJJxpKR6B%nV5N󼓇]Z !"sϜ4{+GΕ)uQM>8RV2h~w ܅<]&mQ"Z1ݖ%* 2 n܂Ȱ'Vp ߣV4W0aߑz{)ONG%6Qhǣj*.ͥ3^[޹yI[;i7ɺpu^ I5GeW K Xa+( o P@1",)!hK7|0##3a6`gHJOf W@t#)&…D #PsqyUb<5IU$QP.Q{WBR_|vgX$Q/a'U]H!]ܠXf_|++}#V$з^";lH&MICx^ܩ7z% 4>D!]L޷y4_SA`s9[(9JgK;r|9x*b}֧.  RBԚ3HM]Ӵs~ +M_`T y%F/eV5(_iFy Q=|蕢Yd@Yop?2M^top?;,39tc>uQ Sq3w*MLiO͎䜁JD>S+D{q-sz,aT1) 'P'(#t?.S~_OM]%Ɲ3蓲⦒؇'?: H?pBiK?YWx~V7nAau95HMwwX`)Zߢ`xQhDr4faYYǨ8t3PKè(e^^p~?c?9Ypiܵț:tYrRCus:Ʉ+Arvԝ-DECp A,N3LLR65kyQ6l CmEĜǻ |ͯNro%6&ݖzTۭJo3^"(4kd<. ŵ*Cلl8Q8')b0Dqp-M٦|!{Vk+'cymVoz<,i?[ W"zc<h'L5аq:2!ʼ44(6q4)sZX$$_󾷓Z&}xHcro8H~eO87nϠ{B!&9D+%L Q(_:kXeph( ǵ"Ym(A`r3Ey/98}VoSDuu)Nek\y4BZYHכ3G@يGf"%J7IN(їy}g3ou`BD9$bs=c.A麽<0M1TȻ/a׮/zղ1MdݢO:2BgQKѷ*9 eJј@(݆a&pٔL[U%֊Y>dǥL]hjdy}4}$XJ4 9wC 3\!16{QPYU{DBw+~0C(ΛV,wYKg!;HBq9JXiCZ)n__L6b^(ݸqu.#0b7 [}eBRvahTd1K.bOXM`j?E>>j(xsnP>N %X7\X9WTՕ2qSrl&ף+䎑Q{dӥnu9#lmD25z|[5;r^yfJe'w[$GP4PQ1H 6OC\nE6AiCV|: &PdLra8| J)G ^%iJjǤV)UQLuU*s U&UU cg^džg۝aKOپ^k~*Ϯ zW>2vUy}GДl Mf8XĵQsG(D 1<}^7th-#DvS W# Pԁ+½/)Rŝntg_=_tQQݽ{א3zY27UY?vm;,J(8 gDَ,*`f K Ɲp\c敯V 2oNF"7#/c+lZf>sUl?rOTg[ge|4wh>\KoChzz-Adˤdz$d֨5jxԜ+r M9ңZ8E<DO;k}PA0J2RB)Hd}=t-6YVo" W؎ "J+àA 團 ^UR8p:\fdXȸOE&0Y 7ʯ+)wPYW5M9Y}a(9NΔ#DwDY޼~jU0j8csT!Awߟ!wreW8oknpN`J UKn\?wO -c7r4Śh^.kr?ov%41WPF:}2{,-:3뤬Uޢ|!4_QQ煱TQGUJ&֔:â>R>.A*{4%sP鯁 ,AznpU\ޏ$F熨 5QQ7 >$DPkRA ydk$jT=gT$*:ˤ`a!KD2%aga!Gmcv:'r|AB-UYOp.o^\OPO|D/UQ3'HKf-w\~ȵ10RX4*#.V)CiޑlU˪2g*7eyZQ``8ܮLC}jscX#@oI+ TC$NP v|su y<= U"WJF_?-\ IRߑo-Q9O 7)rHK_su]HiO' =U}<7aġnCU \&n@JzʪtX>~v>ndVx*TM-(zH^RUn#'O(RgtFۉ&`)qiZtE* C{2 5D Fa "*Pt>sf%s uoҟ$g Se "We+إb"=>e/`5_C)X@;~|} MtJ}mNXH덓*bHDR #)r6ͨ),k 4["]6l>I O\j&p(MDI2#LG VH?Hǐ>\ &_$It)#B} Ɋ#Fک-Jj ŚczR2 vD6?PKb=oZ[9d?X\f,~."n,i>)EmC?ͷsFR~ мQw+/;82ٽCڼl^ ֓a#UqHʌ0gآfitm_U*V$MoĦtR4qKz+Ld0Bf ٩HN,)J$EM$8?!hҗk$&mq硴$`맾N4bϻ_y,C2t;ԣ2)~Hk2O4:2'RUO*h4OrҤO?[hm7o@iwy|M2񤥟HauW>+.uq'PpEA3,A`ʆ45T ͛[~~!S zQ/oL:ϘXH%W6f8P#D$WR`4?=wo٭#8v>312e树308S[LYAѝ}%XnVNļ'5i/ Pڧvϟc;$@pմ]y-!?`+: tø3lŇ>JPr_8U xrr/}wryIs֘ 3+MF"':*$divd`f_Q/b4YX{6R '()_*t"[AavFof)rtpmZTم'ObL97;c)gWWObosy1&:7dV1|#i%y[R[:GVj%pj@R NM"Jf*#rq~":" 9&H(d[X'F˱m5MxS;ys"#VyhUsȫu d p֜Izr1wh”h~%BV;%26̩dhδ/S4nNLz i`Y`zs+DڌOI)}(Sj^m&U%R!g1r+_40h aݚvRV￾NT)F\h-kʖLS~s3.>XʗyT2LRjo {ٹxp zI?'SS拡޿{犕ɔʂy `e> ׼$cupSeCiJR&+%eR2hi%Rr04J2fiJjboJ6h zmyZ[V)3*mޣ?S䇭;wW* 1T l^@6V;,ҏ0u J1r/:~L<&朼n@ɞ( |d{v)iJ$ń4g "氜MrZTٷK*A"D*DGIm$dX$${ÓRM^F+rK|r$ignj;Yz~8'((SU< r(A#ݴixc~ ɑ)\S\C8.(5[Z1>=:z΋iwiI>/f5vZgm R\4cG]8/Gɔ!P̾ d\dGrߜ9[bvOk`F>X2jtW:wS\)<,Kp?;M[moR4Ǘbd-m'xv|dH;3-W0#OS\! L|f?ϗkS< r?SFwS`*Jڈ68}:P2ޙ5vRi"HiEԩ{oOWەwwTvwjQY7jdŢ7E=O9r=yc{N`Oec~ H XJG|KN_5?&*={{ܞG3;G0)y's(Nޮחw.Ml0ZbG¨RZ탴wyt]eS])s=t}}V vkv->$e)8]p%ހsd1эd.'s=J T*p^.s8{۵@VG0}uֽJu5mǴB~˵xg~[s_st/gI b2tBz>RmQcXFN 4guwhmKcfDFn_d'S@c.Kfʘygi0TF ,fBCfreebayes-1.3.6/test/tiny/NA12878.chr22.tiny.bam.bai000066400000000000000000000001401417247743000214600ustar00rootroot00000000000000BAIIKaJKa Kfreebayes-1.3.6/test/tiny/NA12878.chr22.tiny.cram000066400000000000000000004577371417247743000211450ustar00rootroot00000000000000CRAM-X~}Ao@ֿbϕ؅ Hbɱ[ R`aͲ M~}vڜzi}_ďkW2`>)lCkYM@2% ^IElEDV;9:_5@-Y3ŋkR47ۮ 2ZOyM]UwvRKˠtE*>ɔ-tΘHJ xG!/ ?99Ozņ?H%r?H@%1oIJƺ^ |!H,J, ]ﳱL d쑛3ek_67qo|` |C|bHIr/R2f ڭ\Ā] ǫ_,TDSMRNAPBFCFRLAPRGMFNSNPTSTLFNFCFPBSIN DLBABB*%MQRN QS RISCHC$611  $ܚ,=h] / F=ӬQw&# rjNjJSoy{uKoc||ϯ_q;_$}`/*aJz]5[z8zOk~Ӛ|nWv(3jhƯ @ A}Zgkǯ4f-ɰ A6~!9 c'~sD{G:mW5(z',KNd Zch9q5X)DGӛKʨ~p?kBPhgJqᆖ,jDu^L*wC5C< nW 옜mo?ckg?O_>3z3Xi!K#B m[_W7C4f~qFɯ/xlI1UFCre\@A C-bO ֡.i-4:C5]2|>S>P6,dLғL8EI)Zg癪&AƿкsSړѮQN5S6:\c5gdLQtR/zJ=ZRD^MoE2IQ!cjKlJ8SrS$| S'SBo5wLo bkcjyz2q1~2,ZgYrUgD`ЎrF Bq%H.5F&j G)Ki4K-ڽ%, K RT-fjۥzd)zMSM엔fiw%-)J=ɹm3~WGfiʉV$MKK $^'F ,& qd,NX^hXjH%_RE%}Էbzk;jTjYDVsr9V r!@[;'[5`k,ٔXF"S:oB_!I8!|k-mϖrng7}>NVMmHqXŒ- 2km.zoWg`pHvN"7iDc_,`ɪ 0[KL 罎8_abM/-:U,gt!vR{zo3FƒY և;*4gIݪ6١`eR-oTlګ?Z^8MraHuTGkfaFijڣ=:Ҥ#!9#j3N2T:siG*vף>hXPJ磳GQQGhW ̨zsGyr9U] C!=7,U%[IqpU9x(^;j_M4D>Z/12׉'Òq1PQځsr“tba) _b@^R2quJrP6֏"Rn*%EQG A&d\WgjW!}Vd}dq6vh(EvJTM~jA-\a:@CgjɘԨmҟ+ŹfbtuXi@P ۝ 2ʉꊻV1d dȫ/A(; ZlsUc 39ZhT> 2U4$£!C!h 9uG{b7ڥhhxaeWT'rG 4ͩ`FCU'Q Nq<'QdQMrB&B!启pȊ<r-}&gȣ` NwGÏBE1h_C],C^ѰPdIqQD8GG_ '& X,?䎕"kq@.:^]!"5]rץNJX@&ص,@GǦw8 }NY|C>v2_6FBnU_8U$:ѧXDT%B?d*uj`0r|yWwa<}/ C1 dC)J&2ڥv{GW%u`Xw Ŷ`9%KŐ`+ń3p:x%M{ȍ5|a& g^a "ta@ -'T] IɄ<di/N +M yć S<Ē. )='uCjRBF!?!J_1]5 YK1?V%*= {g>zc*6  )e:Y][!熘Z} I@p  d<i&B1v1ʱvQsx!bS̴}ګ}jN-Aʼ?9!tA>+ A>"BAE$ KG6dK*kq'ۥ팅!nY.!{X*JT:>=Fz8T^8W2P(_l)ඏψ3vh ZAv9m}Zq?nb8صNWǴ +{5iNu`VLh;-k'Y拶 t@:/B"b|lA/>s 6%Nз%V0d},Տr7,d+_=o` rڏMU9]\.ZN7fS'⮌CGh0%q7} I*cȈ$xuhW2twlLV}+r/]+xNgR]fr} 8~]Z⁦2J!x3o^J5ydP 'GkrGCqtXG6c2J )Ge;ȴpԫ4>d~Gu C{-lוl>s'd USQ$ xR#őWe]&WCmQ CdH.C])*U RY~H&tKA]"Clpn;F/vi~nq:ܥC!2+yf+%Hy1W\}mE #H!Y"O\?wc#A}-VA/A͉ry"ONa\a$e&(ud2܏TK#HkT>0J#*}}G )uQ= ΊvY[R#`xT<g*4W@ZF"A8TR49jLΎvAXRPW\_>.M}+5qC,?}5>1eEWzvn>t/ GWe+aJ~;3s׹?PG$3"wd^^"B4A.S|=2H aVn/] Wuޫ)DZ!#uM\-p3Tc66*9Eï[-\ܕ_@u0:qY Yd2Twm۬>sø=>++",l>IYb^t1 PlZR[R |I{ ̰lX#0P|dA6IiQ SF0(ٰP鬀Cg؅@ Ȑ%l( W~UGvt;KԐyR4Jr/B5_ )lRV)Wl2E8!l8^`ս٩8Jy]ń⤌SF-Ezs;D%2Ҩ O]HuGюbDYdL&zJbm7Kj]Aϧ..Xi=ͩA:/ ;%Cp,sh!EE.>`w'bl1QG!J 8GK8@T|:!9k;D"w{xݤ6۩DzgLۿa;' ,Zk^Ԣ ELK{KCM`Adm)THA9ՒMoR)KC9b2Yl Hզ@&RJF~2qδQeHdpI?oR ԶˏXJ Fr%i pZyV]%:@k$^'cWH?v)SПj UÙԌDu"EErw22$OاS)_xO\ ^,XHuI TM~+y!Cm@6`W1|.-PvV^PaڭuK!!} &2Tl֎&E]ʶ\sktEA2mFZm&DlW'L{Qe0Hg2} Z>2/ʒ I=ZӺAyh S)ovӇ.ȣ3p2qD'N,CE:aI5~8ˏg˺+GJ9N dP+#Z#s=惼"?j2O[ /^D]Y,%l Jqu%,2"ϯV72we6WM j9Jdma j9A:ϙj/N3J^y>4/'8 rQBaQeca:Js!{n)9 - .M/3J?j*B1n[6픻۰yN:J] @ nC~e~i7/) s~VnC\Y_߆n6PrM 3}TIoH}]&'(znV +k3{2ā+D2H +}],/"I BL锱4T EZ@I޷aʰ0I{W 5zԺiD@\3Thԓ"v+{K(`QR@,@DCѮ\6SXr".H .)]9puߣ+"QKrPWWW6W>ϷS"'2tW׷2t=C1 8 ~J%󃰔@qʖvcWvnWg|]kpKw(*<'j Xjj^G#o+o+B 82/2ſr/< R?o؀r.Ɗ$A|p= Z38R9;W s6{KrrgC+;ԟڹzHi\N;j=J;f\099" Ā#,8zD!tV\rVFaZ ǫ__%(d!%(hE!%(AQ1!L%q(L7r!`%(!+7!{%k(h%i!%((R)n!%(jPkStUh@x\ЃFQ@|U3WGW P`ba׸d%N$*Xҏ[YdF]p$A\o{t8opXasR4lϠuM,&h2;cx3o*Iv3Mkvg$zޖst8ŤL3tiKIMۺb94n:_jd Y!Xx2EL2~mQw?(5o7ưD& H6fu$ !tLԗqma䟭q꺴-۬aWYoCH&\9-Ϩ+$wh"2 :1.zۻsx×mE 8Cg\,\1. >ȋХ˗଺Po&:>\q*7ׯ}ҵ['QΝ7u.%Ns$K~'ɽɝ4a鑁V1Jm*^H& 4IgVipXh I=u&>;6u7oGǕs4iᥴ$fq1rI;Sx_Z?RT`\|ձӻĕgZu =޴dך^!9rn ԙ.jmde"|F"l0Bi4Q;)>ƅ.+gXՏ/EA,@]l\8}-/I-rD`Ved~ dvh상q'!KR+Mʹs=0aҭ= NHV{wj1 g@O&,?D!)^%FO?+]u { b 1CklA{K 5ݰk<LlQmOz^0Ug)\,!:&;lT@(WG%4K1̍ixoKY#p8u#3PEQ\th\و55;Wm+d>{+O YK,9LW!#J YO\MDnC9R]lY] ڵДԃM9sR8|*\b BDZ'{'ܡ3lոk!# qqz )n@%Li, R X..6HVAT]ZsoFi|CSn -h:)RksdÈk}|Jx!﯒WnodqI! #0^l;%3:(i5m,F5QH}x%+AebkŌmv'wFfC ;+VV>:VIi & zA:"H"ojО-1&j+\(Z@Z}R2D^DhQ3,@ ) U TO4b Y]:Z VX 1A \Sݓl`-;݀K=ΔSCjp.рm'-B܁<4)fG˘(ɀDrc뢂En.]Mk=OqH3l{aGju&$_([Sdj)Bn6˞hEjlI O˜h^xzGRF{UBMu;㻰ӣF/Cne`)BXNj ,a@\;˱^uK;9ǥZ7n!K`SB>Y[/~ODE.J\2 ^k+rUdtSY^=RF]zꁎAq7xg4쟘;C@#&E$x/hh͝" GLOpi&YY,Č_QUdGh8qX7=dpҠ+ݮ= ;H=cQͽQGJ?Frs8_:g\zҼjwc<dn[;|Y !xϧOuYs#H34&e5'; = _8xKJLNuЖ B1~"2:PL++C9=af1r^4צ7GV03˨h #mx8v~&cֆӘs/.}ކ& |yPGJ{:S'PܚA/ߗkaXb0>raH߂X-vu&2|Qa&Xڧ{<~hi_=[inàm796&Cgths]זus1GvgޡđPnsQ;߼>&B!iS\.aPm7OKk5Gv_6D_/Ϲ|߲@%pT.v@g8v oqJ(VpD=m_y~M?R(#VVC.K+XІmeV+ qm}ah ]JLn!A9}X\a g(W=}uڧ&kLpi nnvmJ]!-э)/iF%^o7W)jw:D|Jo%2CE_@oh?_PTZo0.#k ثA7#Y粖#L&&4krm % <3Ifq,kVJ,!OX]ח4jN`Z8̴mi*HIz1g-@w>ʊ5nR\KX{ FBuD.HBm+ dCr q)P4I(VOii B0CLuߗF:\ H@{B1ˆ$|頯-|5AѸ;d8F=]X+p.Hʭs&mHG<Uu+>\S Ϛ&E6c7n7x.I%eRٸT%4 3©DOu ٖ/}-1gWCA39_pŸRB:Ogbm(ur =R΃do[e[ 4a]apc.6f2é}e8 ؚ:c)<ҹ+IfI 3A)}D&ȹQe=40g3uRcܼ\?mV0ubW#ó-94(Kxx]V .$qE^SCWёu@BDnNے?V(=P4×ס F3HXRwZ?x=wqK,o^! H,Nc8lB(„,)҉ld4a '|7lZ'Ib{"y[LxAx ަSAWb/(oSpʼnLEK8>wVJŻb-Iii*N炇q)۔OfiHH>?t,ïeޫH 2lsֺ4(|fAks͔,pj i9⇿&yofJ=L*n12USS ˆQiSCN XREƘ%SW~fJ_LÅiS/*j63|SASx@s6F4^ŠσyfRxZR?CqZhl* ̇h,Fq.RW6}:0^Y{\K+4LH py*.Q Q|y T8O:ʘiuƩEinCia/Zruv:`h (a֚O0 ɅE%3:r{<4&Ht%0 Gf5cbMdӾA`;d#J*m?e%&ҴË\~F>_G,y gd4# &bgx)?sxN T@B( |L,t$EV48e7m`Kt!})j s aKX"<,l38(1Whq )VGD XGJ69iַ{h{ s(=b=j^f0`LhqͰ4;/ˈf/o^ i`Fz?eӅK+r&^`o)D]0֫"46 V[3ax*ܦ"1.L.W?լe*S* ] i,Z/Kj*ԐyPfx{ Q *@(\,ŬpGI.ߑ2$Kg|Fr"%+:|*+__y: =O޿)ZWj=ktnHGW\yuKE!(V{Mܿiۉ%TqrIX(sg ά^h_1' xS:燤xT|$YCЬEE~b)V|UG7jD2V8RՑ@ ?N%k53H0Ɗ.y\nCGO j.g6$xJ "9Z8/w*rKAŪé4q2l:j 0o_zo{*55N+?k~:8.|?}S`XtTw~\eJ]_tx?S6-MNJMev%d$:Ӕj?GFUR {?]E}>˸8zpI&XaWAMâU6밺FCj[*9u|H>tX(=+Ow ۲,s Cwp1th拵;Ɉ@rѠ&mŔB`w9ׇr9Ig-_$w賈M| #޴̰_:ĵ6(M$H˨Pד<#ޥ.d Ij+4 ÙMM}{{J\,0*蟮@VS`}s#HsKDIxe.6ɑ!\?n&RqlmJ{OD,~~KB1I=mr9 =WF,K,+_] ӈ!VënF$-&b,ϮUASŧ<V:=~Wcnk?(i>\Q<-gX~]9P_0OV--w-*8M `YSӁ~b]=o c{ZнGJԦQB[ֽFI1kZ ?Cc@|?&V2b!?yj|6qbω މ(ly=l /KEUD<ͻh$r%"ډAdw(zG{z"9Q]eoWbt9yJi=[y0j2.7>1(m^XKDc2(*eҫ9T@ qTA 9BtW+/k4@/%'{h^Pi WKkCd<|3"?cg|w3. g;1dIE`>S0e* g{5gw8U)XA, r/fڗSs} , $@DVHE*l/\!mٛ Wڀ"TF, z1̖DTNm t" 7+0O hambLzOົMĺ0:\j_n"IX*6+~Ræ"N[e͂XGCdA#ũG"pQ-ћ9/']~E]HM++niR0M5 *̳tePD֑Yui.9.#tR%(b%{K7d)Yt֕ ҩ{F=%/.]+~ME\Vn݃⣇#hoMȤ' 斶yNqͳcZՙX,q}8k:otǛM\)=٦K%|&hUFcVŔ3L9#/_lUs]ZKw)ަF葑Ry I,l__6;5 'hsJ'I5QTb| w?䓮nKvx+ ^ g#M; QKlnڗsldvbA1&XKnƮX{mn9~##y{sm;16r񗌐 &.ݏa~W}?q&@y0JH-+':-HE0;c"Gv̨mW6Qݘbm'R \s%Z0ab6ŭ7Fj_7E| (?ep+ɴtё#uJLRj [+^ۈ'cS'd \,kV1m! Nxp Wf@qy 2%FHvak-iL[8i4zƗwSyEJPGg[''n,&9)6.yD?pOoM9P7j/̣}ԨK#ghS~%vJ힚NڊE@s2 nGF!6ͻ~>3TF/,Mˇ DfU 2_M]D+h>YvȪ;52WZ|Ԝ15hXДl+wGAVHu:45QFWcdn}Ǿ tŏxxK/C01-pi)`!pa z/|.5^\v֫uj~ VM}c&\bYV$N?qv^2nhoǪ0 *g1O]=ͫwfǖ]j25sra9Az>q7/p Hr$mn-un V#5ZW|4@S H4|͋WNL$'O Z2~D,{ܼ!6"G0fwESw~KAVFe I^Y.[d?\EGFBVx/$3~x X"y*_qtR qڒ\ 5YUbgzO'&קUЬ)B= JSlr`@v^7RNjX4#d%X%dxa'!ٳyrߔ%.W$6[T1 gUbR(y|q:fu2.w#'+i^0,q.ܡxӔ[gdvPkKBIU-ӝ\ݹ D\x[j-^P Ռ1A۫jH@t0DY*nh h0H[ ]FGt53a ;wc8psXF؜g+mDOG %QAx;ٿ|O*@ٖhQ%QUD}A/θq6ZJF'&ԋ ͱ#Aا| YvjVbO'pڒ$s"NsQsƲF. ~!u58ΙwM֢ 1n {gʭe!n ۋ@{N}_v>&nHy!mZC8hwfUڽ a G)6a0Cj/GvY4'QL|!m5I XeTHsY}ZP?9ˢY7S'܊hYEC dc>?R9 ..Tz/AF\vG.^p)<A6;lWC@j0:9Ni1jhi}n=/]嚹ԢyOj/AdL*7VD8'A8L /?zmSv<+hkTƑQZE) .[kF1LGYOw`|v%Z̅q!6o`x+qLYkD#bJ75t(%e:Nh+m} Y}A\ԏ%|% SЏ240:O5o$t ߂[NȲ091p #i4)!(.ζ$ %dLLhošp8b ƃ ,C)# M?\BdR>1r^4e0gUw G!8@GDw }8@\xƢn{:Y81]n7^U G%qv(\1 Ӳp~Ozn+W{Sܝ`^]AN>x)_~'_Y9K2wsV)4ޘɘ=X8G{[ _mrBԸ-Ȉvcz2hӚ*;S|* ț\iтMDLس G3Jy]K]tN(~ޣZ .\S>ɔg"rfO*M2zz&Q֮tEn%<|ufrw07Ӷ-p9LAo҇ne~I~B@pRU $B03$a!DIpO;*i{DҝUJF0wIΞ7MMn|L6!sV{N?YZ[1yX[wثU$*Z9D]O*U![[|J N-BPѳ g~Z̈́mcb+n(:ÉƖ༏ r\e^Z|W+!0XZ{ߊ ǒ尝Cٍҫp38- Ej( 1k/f2ӊ7Qu 'N0r{(q/ F N~lM:0FCrY>TiUMW)e.᭶?6`f*iD"~Fd|lÛJ`h2*>^wkςQQ bm{ga`uJGK8W!IuV+{ /8I CLt&8q[l-'ԾaWoxF(vxS nV',:́/걲!CgsF }6ҋ۬vi(!ӳNw?͆ud͊J3\BhjI\}bz}-:qMLܯCQ3#gi{DUf[F8juz1xhF'U_ipμrO)[~~TTbuʹ~-1T,iXR378 jKB" ؈|k]'ROȠIk)kIgxPA*Tl/_tK*+x4pbӽE<jM'YC F)hvZ@Q- :`n1Ԯ$U ^hsFdc1$$H$Q4ޥQqVReFeTPrRl,?7VC&?;=^|x˪BzF Xx:4&D | l0`ask𔤈I3A wvqסu7a ![iH3ImBЊYX&jO{Bl~6А*Dk+~ȷBi[_ "Pj``sz2=Qy)x䨔]+ ]ST_¨ܕVBuh/|6q++s`z쇴pt7i0ʌzˏɈ,8Fj;2[i-qEuܻO4uȃs0őiYbbb,D@gg7?-hIjD#y6ul5.~ᛃa Bpf!:Q[ʴȽ Wb؝; VqL k 0a+-Tp <5Lb|f#=Juᔮ-2'Z>Έt+1ICf lsefRwW\Dp!ٽ}~iI7DBSS֏Ō1@n<4(;V-\O+ܪ-Us X&{*$2-ԳPO Ž&srDLL:uWڷtwܟ8_O}]d5*=αiEU78XI#of3-T}3  t.:}Tk!0'‰QC@-ޱNȅpYs%AN5M|{v7qkFao;FM S&ls5D$Sk$NLaZ_ˆiC}3DoO9Z = 1.0CZY9_b(fܺAZ˴6Gեa4JQ>Psg<>8P|Cby 61%h 8cb ufoD͋-Rt,j_[F5?llCTRqshM I'l!_4TJC@е hWD0⡓u_f!,_ZKg\!ttw\`9Vcd6uV ^&r =Opxav8_xv#ʈ&*%MiGߟ[hgre eJV`=0-6ֽ .blzFr}sНb %kt´O k\ F|wS gY|(cAqx)R.(;nrL ep ~F8gyG3'.w6[cP&-ֲ$ %2zqIKǗ߿^g:rg܂:m 0ß`=P{-x\ ~D-/q~v(3 C?0"^\z:ӕ :UlpW$V]CS 7 ,տY!U+%&8[VY#/B-CxCb_(~@Hۤ@`xSb$ELd:e:bu&'m+K7{'ݒo{VKP5ӏ1-)z@)wx9nd , ™{Ww-U-!A|pMR1vEAUUy7j<, iФsI$K-5Lg@L,2v Ï?r;Aװ,H߲ Cu U}&3i=z9iL` ^Mq%.Pl?/KPXDPVR~F&7ⅵ_rT a8o;kۦi~(]ZŇSQȥm=)g$pGy#!GެP~c:F\GW{NuZAGy hc(3p5c):h `VB?VS($L:e*پCM-ٿڳ?X8n1 N2Apr7v}gVVL92< )cvĄ2ƻ=u5M~u,4S\&EHo! PG4JtԌ:ԸKNhUK뫩LI1l $#~:_" 1]_U p}F.hQ`am1Y'*4^mfp]H83u^?=#巜7@ɻ? R6>9 }0q d _IƦTl YFğ^k!#Gg/e=q@Z5ct9r^{R'L$`x#Vʉk Вs)sw-ޖGEbxxdQc~85|tG:8 vƦr|RKf ̎#!B˳DOY+nb§CiT2X3Aho|jn@#!]ɗȆ"AHUz\D>֡SqD̵̰Oż([5bޟ^ QKr ߬9dʈ|w澖#%Y+J<;[WY?wnJ WO協z?iD.p~oJdzU^zhoC:M>%JҰϻy(*َw{+͙|T4ol95zn˄+a )wai[U xVq?EOoJ9UxJ]^nUuT/ìtFTh;`5>:|"z7OJ )H)gaAY1WjL> h?~@R&Hcl9\{{%]+X옕)Wc8f~2"Wz^x}ڰqͽ*@x`m.پi)HW3*Cig~"RıBETɸHPi+͋(ѡ տ&A 䪲L`5T2GvCک2V?$C govlAA$ ‘j 39VfYOxSq<fȁV xd[77k-I {NL51qC H׿_,Čy9 AOV|Mm=hXDR_jy2PQpmvJnDi?V9@S\ 21Jb6m+yA'+ _T,MjJ)2s䡕o&ceA=_~K9g?. ۝P.E) ;6D] W,3i{:pLhPNqٜ[6po3 UF(`h2P_2nqR( tJ럼}CJ)Cee?7Vc/2PG]B(gjKz+k|8[vEӦC̮:G'ѥ(Pl-?b{8fCx3(z@Xe5L2#]} q7WlWTaY,xwY^pCV0 .ֹ}OzYxw^ AqLX9'gDɗfJ2KyAeus=鎎KeϊA҆<>0.0fJ&*n&+ GfUm4?a+2N'W!KdCD8ߣtv$/vEԏNj/I?D_/CpvRlYc9O?C%<P&&L0 ?^9fq3G*s- J}j),3%CB2'OE|v5[aJيDwY21DCؼ0n |~JAáYBu5GWqf,Xr$\]`մHu/,jtUEGAŀ,GMTVX w",PPԋMwA b ]Ȏ= y\m!=8u)E&`ReӸml%o^,0Rnfo=Egi@ X?l jYJqp\JiZF#mmҵ3`s/y)ݮ@㝩ܢOfGV/qSPh TfaH>PB&|1"tAo7vدƺSGKb?'FDs(leq V,Vϛ]FpKy!6(dDsl@-Nj""2sPZ0t$Or+jgQJsr|c҇=c`[uźL&_<mtB;Z>žrrK)yʆQoxDvumsje8zB~L'\7=[`s` P_7UAA&|wi.:g6=> C?ր[LYRZ Pˈ)=o'r-5]O{VLJ}" 7!z! B V|xʺ̣:V}a>DYSETze~?Os[&0H%^4.:m8%R&?;BT"0H|{4)K:2G@pmG:L?KneOdN_ hlʸ vĚ )ɕ: R7fO5z \+Q쪸G x]+ O"Wߑ0*#ly}HxA؃hJ3fgZfYhrAw"cMpW}4>b7/zT*^fZɱ*@2Ѭk̀?:/AJ;s3 RFEUF|X>YE,MBҝ//WRL$w6*&D *8@$^긤dTKL0c# vnԡ}9ԽR?] k/lz'QxCjqu< nly ڠ pJFAa]9Jx#ps0Mj:USưb$-Tf,'-R~, thid&2+R<_F)Pꯍ6dMzbY(Ql}jZdD,1]oQFQ?a)$T?MVFh+.[1TLQ*FrlcFW @u|LNs" w%uD~T_L9(LÔçw=BS˜ ո oh^pok}&u51|aBM\ޟ'/ *$dB]dξ|OZ)Ueǩ"ȓc=>j Eb3KMB DF}iEf13jU!HM-#dRΰθys m  q8q]%_ !ĉnBxBܲ΃$@5JhgX*ûɘx 1FpW٪EnqlRvH݀??ky(7;++&ٱeLAat2}#bLP"- aV,oz5U0AUYD8t Cf}Z9D%ɻwǛCkY'%,C&OVm=ݪbe:ΰ8sbٞjr.bJ ~4`[22V8g]W@S V.^R7M~Gc/o d!iMOjٓJ|/p~N@<$sĜm,gzӔt挀Ԟ7h\|.oꅛd-UC_羓Ο+ԷSQ25;ī uϛ`^{tWO0|.ɴyU(Nl.P1D(Pl& -Finip4"fkKˡigt?ഷgStV_DH)V~DC;_ A#yfs2Bp k3#%( 4a湨}m.#yfy)D(e+*> Rw dWA>kE:fu=oA^7JǖJq5W&`s$ka mwQQ4&4e=yS-D(0F(.}RC5iZC=է۝`T.ܱe5[̀{+XILn}?_ȯ+} @k#J=s -u.^Yί\ UYNG-vo`գ w{hUlٳҔ1<\=% ?E4lq'*(.7WA\c!t4i&`4Ou CGۙXH{XqHY(,&5hP`jq0MSUn YhlA$ #?H‹aXX }oo#לHq,IiN7ddWT y^#?lڳKFj E4VXC׏))4jeՁiAw Zb wm98<M<E>7x6Jݕp5 |[Q,zʵaT 5hV6ۜpUh#@O2{ < >J/&7)FdA<fj3G45rVvcNI,"^W}җQO(3w3zjHJ{rn zT/QZV+ Ѕ)y9ͣpɆxw֨Yb3}6ڔ_bb~UZ8k}mT'7%QU'N8 KA>' As\}}T\7If;jUN4W:0A_woǺ@ N5-^?)>͈[%7^;=!&{wT|g]AAU"V/ a!ZhZx1N356KkVcrYu M`vЋ[v|F2R:0K,ak1d7*'xRs(> ͋iZN;OlzJG0o z6EC9`>Nʊ BOe0̸Jŀ ttHO5 ٌ27{xcK}6˫45[LK;HmoPN C9?(gqtkЄaO}vţyPkH5rM=lp~qanjaZ"za3ߟmv9|B׏t+|-nhdAXCL 5rOmRTVLҰݮ)7`RvK@tL/')5`8߹z׮eetBBLFIw岛0721rj:7֍hr]pbP=ύ E {At Ը'*&N>ԝkɎx2NRe;+7Qu@3Yuk+(Ubt0Ƞ݌A Db^Twvmb){ܹ'`RQ|?SDt$J"G`z1 }C|R95PW p^ͱ.sc\)Vt$•޹קImj gk&˅H]QT$]fc>[&u 8S$tu>I-U4 d)|CGms@'lPhlbܔYpZb7_\@ 3nwD /E )*܆0># Jj(/0ѓgl|.QKNˉ]n#iF5ѵE|)Y7/K{-"218)?Ȓ\:9Z5J.+yR9q7C(HhgsjDyGH@8lC* 7H%K凥f Ebb4omdBGmaT繲u+ {#رSRV SϠWe$StFNdF0*@o1@l)0n$9V"qD:#ouoj0EHnw(A=/HP{u\SRyj@iDpF SE.Jٵt.}#A?cZD1~!ptcōǁQ^AG#m~vy^\4td,E?6nQH=ޫO%4֢rZSXM/ Ye ׸Pfȉ#]cz1í-0!6ԵW޳Q^5i_ܸ:}5Nk7ЈזF6zg?+{ 2NhU+瀿*05w(Al.xi6-/ϵ(<=%M cy搟+ie_TCA!ÒP2PG&q*}{B.YdOITZkgo2"a;e;j#|Ɓ&} tT/5!@r+ y <슥^Q_> pHj0*W ="O{\A#%j^pX9аqͰQ.~)9ޥ J3:'NoW 'Yka-&@ÉX xt{A fK{)]7VjsF ue8DKH6)}mUqkkU0c"cER9V~Ejr޾c4.魯^H#s >z,QqRcpMl pwTeVsNCIQwndUb[> )ΛL=PM)U-Ȗ3MM=zQ ; p+A8h`i)?V_S?Xc\El4Ț ڄ3UсWYbeuOjj'MZLuDcNhʴ񃫽A荡]_UI~:etX++ EI))-S( u]S2^*0p#]RTC7!ZreZǞ7SؕZmޮ ae-0!X, ҾW?ԡ OWGJ)5@52L"kGaH ?sl@ye]RKz$|jEvh5z,g*XG@A a\JjH!_;aDbJwN!N4\%Ro*t^.vZӿBB~s{uadFhRۈS8Ot=l*k 9OD/ "ۭ"^z V7.[!($W(fIaXn8pCZK䊆lup?ifޢ(KR)dy>0Bp3,Z`U{ož6_W?wĄi r&gTnHG%@az{DV]Cfd ϐp!jCa\qadKm':neoNZ#DKZmXݼjU׺&g7fnκZT0xsU +Obv R]-dvgIqNH˝d2{ 8$@ AEԝC #bNYˎihG}C5 GlKbnoƑح g϶ !N֯9E[s<"⅒w&Ǽ/xbPOɎp M0g2;Ɖ$+::Jjo-,G귚"fB9,HjʼnUukD^JvhNq3e6. 7¦{~ڨ Cb ! kUu`o/$kYјK@pcNxp2@li^x’h4ە)9De |.D 2_т{zAԭ)0HY[\%u\@Zx& ilF0-OQܓWbmYO/9.$T1~6m4O GY34ʛ5ßa3 ?1vRCRLݘhVO{xoB{okx j4ADY,~aAAa(Ed 2Wi- |z ZCm2 РāeypkU;#j{r J(u? wL[5*Ssj]Ivywr\` *쩁]޽:phn+N#cRYkR]yi9 &Il3m4Iބ?lJf&\Uj6V],`]ӻAH/9zC91-) dKB4ť \ Gd= d~|V垯Q& ld9@DW=IV|{6-kѴ{>6df4̙vڰ?=KTNew/x<*xCUL*ॊw- E%-#x) 8)t8 UЀ\2 Ga"2aXmubO0.4>@Φ~mt#ӗ\]OCu4BF8 QR #x%~~rŸΧ_Ռ;nuS2wܯ2hGEN‰Ŋ]Pg鞖LvfÖœyTep< 4|!%zN;ET AW7TYj"PD ]XhK Y1\Lz=OEF0brBda}sԍ+ ޠ6r`E"@-Ξ1@ZZֳU?Ve2ףu^GNP6]\gbHǗ=xJ=4g 'E eȘ }bJ5dhCMƠ wF,|K;STr# >t7 8e7!sʹ -R#]sHbQBJD2י6tȝ7CUwB80gw(|'Cw74zQnC7bhEm9aڍS"D"`ffOQIRO=b=hmo]JaK&ѱ]#nJH_xى|UJ_Yԥ09>y\6} {! ENΙP~:~Pa[pR-i8/am[SΦ^>˹INƄ"j.cI$YƷO<µc`Rt2 _c 6kb0 l7˸Fz I؜ۊ5KVآ.t䒟٥^z&k,=6s=R¢YI<3{}|@zyWRm>ALp24[wbF@uk]u3<bƇ ̟Ia7 M=F3;P v%q^5爑p䑊rI:G =9)eN@S‚d~*HCRvR+hOLi :\?s5 '}.=7uX,7Za` uAHg(+5)u!m7ӑN}+SeC7nD0 tى8vo*}= +kxv u&E\K;3τYъ'hR D 9$D[8g?ߣaɭ ;*8Socܢq`P S[[Po!;ZH, ϯB/`3W6(51 6ۼ$!aiP):lBZ˿Xj >Q Տ34ߢXS5YEfAX$p,ǫ-l}jD?Ct+M_*V tˮCԥQvvUs„ =ʽćH) rzV97055F͕;>ATmބ#c5,ܨ %ߜ0 (g [e~Gy@ӻ1db&+1 _j)vkcJ[V8ʉסp{.ř2S3t(,yt|$e \i U+hՓBޕOQl&68IQXy/4hqqe!%K⥓hY%K#o8 +_˝{Ma$6_YL1&hnIpPjt[Cjc*Q,1XW" ĸENz䶢f;.D`PE'_@UI!UJ0HHQuW>TR 90_r9$ y3 r0? ENk*Rf֠K`ã~(@D/Q"x-|KW k ~HqR)+<]KY4^ Bsj w0+yf v$JnoͲ,F kaAW4툏+]Yu(*r^8w&=CVh_\j#7*tV)=Dļ@ۺG+WHyL&>= D]+"wB5w@1բǞq/Xf]~n12t.g$Q|f@M@m _[A Up9:yilG-mQt1䕴z$@pb* wctKΓ68@<3 >d©/u}2n2JbunaW)L.2u)J Xz) ֽOICt{lۂ~?q67ܖzz`ZTbv:ce|*cQP!^Մ?44bc8A>皧TIfdߥΥ{>ĠࢨeZ !QJ.ϖV׆S' ~v{ƶJI{l8\gT,Pp1 H2L䆃@vR J5dt?4@m ޜDhC&MӣӊoaoA)5yN ~J{h{Ζ2/IؖuD&l o (cWa3,^W{XU%ڔcbwQHkRB}`ڭΚy|?,I]}S.Ms)=X+YJe&C 8J')Aǘ*"kD4\FxL(BtoxbL5ϨYdw!?cȧuZs̤V_4ڲ}E6K7$6ڑ~N]Ac:&Jɏ!}161i$%U-/BXGړKhZC?z]+*:Jt|[OK"QMH#}"2:Df~Pi lq BIY/)Qq3䂣;W[-7( ~osᥜ(0:]=} ͉@C/c5/}^#s14]{ ecRw4Ov ʲЛFC/VjM*TGWEdobHOi[d]!hcU)ƒ&-Lr-1DkqC]$t,`܆^ФmB_gӅܻJe: w짠/u FubRGԼh>x=m꥟)@٘+VC2R^KYE<5&ѱJ'UT] "`­5~_C5n&vq ϯ3qE) 15zJTGc69sYuuD66OUl!Ro"@m3ț +63?f#UnIOW,>zCM†U{s?/"F8i.ЦL\;pBVRٙS dq214ip\ k mHC+O%dJ:9eQۣ;}J}N?9vq0Q[[&Ǧ@#&~6մ |~Dk(7@m| O `B%7&ntȹ6 )r!n@H ]RC^j&lU"/u{4C_E%*O(Sq|#oQ;0Ø,k:CzSj(:ٞHpLX6[E]s7LGX6EϱC`&ܽ7W}>&ހK*ddyzpu|ۙkgɝߜ "Vui3j?Xj&;"(~D8 LKR꩏ǑDJ|31o/+ Z朵^$18lMMOp]:F!KEļџښ@.z][s8~&ZzK|_-^o|?d! fC1G_co{B@xɁi?A'f;=J :*Sp8)Q\=M~(D]8ڞɋtE:sgd&#H6O`h!ߏyb |(-Kp#HB|PRY``wmi6gc0:Woer3}L. V "FfXփtjZ+k ˫@*>eoJu2#ƴM @6tk/{5;P()1 %\:(ù6(! Kt0cS[ mtҿNZ=׶mYXcie[k'l2Kn? %{-PCWAt52:Bcz.;Zvt3EEpTqMjM; QN㮎#kEu>V*̵gJݚ TmdSp㨽ג[> A щ_<2E#A";i:߅*IǗ ż aRDVYfU[yyY.(4 כR0?/] (R=Z4_}y 8 O0&HW+J{ 0P.$mT>W3:kt}r_#iJ&^i!U'{O#w!a8 FGk{Q=s5=/n*2S )h\ƵڅHh⩩҆QG=|imG׆q8?{Elg%@vM+Pz7;Jtsb^*{'Q+狥ٯɽM~a,ʦw$+m2;ޑRr!L:O owH=HD< [ ؜#``!m*L*dOu}wW^[*ZG #0{IaKNs/YY('>Y+k0Hܓ g |Mfϫ}C+fbӋ^GQwCg[zwynэ WaZ41ǀՄѰ^WGw$M ۫IMm`1 &n8HDjImލ͹Lj}GʸFHc '[{jL:Q޲۳n@rt1M"\/8lO]-;s>ib -A.СfCJ1+&HV? 돨uAaYy Sw5i}AU~A} b p}7 t[]6QBiQ$z h2E{3V"4K~unՕ))OiW:2%}u77aTls6MCT3I gҢ]iHm iEX 2^Y~50fI*ਹnнR^Q Hq2h\~&@%BXj9$Y yOqo%[Q4+b_cTMS1rvJCoA Lfc igmg&r=aC^bN?v^xnD2't); |oœaX >A{A\5h>F pN-^pJs GeLKlr_9epҖpY_:pBb3T xQ5/R3u,ytb&z|]!3_b/WQY&sa~XyXÑ;wG+SYT}%feҨ}p6"ZڶO-$!z(ŚX"N'I#0RdU^B_4F{-&Kbg]xe{7E]C&LңtNi Ј4[F[m2$ng,'Pg^AS-/_tޛt],K]4rBVam?m L2dz~.93gE/K"t p#÷i4iر#uDPH^ 2}} NgX`籮5[3dn$}=]8u*XeŒ-eHh"1;yXw+_--gTIxѽW!n"4ydRU4"fU]H5W]5X]XBxF80+a}NrE4"+>{HHGfp$};ʞVWT,9.^CSRPiM-G$j%8@;??AocVnf[B*/Pw_z5hYkheGq[JIZ>ia= 23jCdl鵚l8 rW*8qvviEgtw~Xzwjљ}TK LFA9o@7M.bF4,}i ,~kVk(ȥ+t 0*du=F6\83fj7+zJDpB-M;UW6FX5^]=|32(CzeV] tJP5pYF^Cq  ͣa-$E'n-FG&"攡erWS)_fS,Kb1/J]U0pQN[K" J؄ @393$C Bɧj z`DSne9:t7 RUi;zpA3+ `W*sgyI WԆyy[t9$\ \f QkIk vL¢eSbۛ\GGvYK.ςΡ$fQw6V+5x,Sz_'ƄRMX`0S*)Б{S/iқhZ0I_bw;/N`S7+eiZ\5QR`NH /*yN6RLjS2o2˚s8eWYCVg ةrqs]jѸ2 %:ypWK|ۙqC6`ž |ES)TꄌtRL7Г]@ȻJ|42'_1 nlUf.P65q!21h i,Zf2¹1 dPhX <'`;: v6 B^SI3Cд\E:sDqg1z(g8һ4haGI*ʢߟc4M o\*@$^{3yWrDJeڋɨ1~~KMv4-uAҫv%t$X],rFǽD_EPDcEdvI< RXBv˫ָ~6B 0CQ0f%%Mdߖԉbcw?]gssvj&æ RkwL-RoH&w -nj W+!+8PNJ#D?#)i\7kي]H~nvS4FSf]n&yah@5Ծ_o>P÷R3\퓝jUn6#Y."S o䴽g8R@ȡN$W 7u"I(`jK&.,rHFMuɿ/| 9{IShtc`fǮCվ#KHcv*vc~ATuօ..q+5op<%*5;Ewٷ7.0s+,σg[0qU-}nDQ-"W<_<ȶ\ > BEۄdxE5'X5`[d.,#Z1ONk=d-Rɤrbް>/TMz)HWT]og/?/ 4G)MTZ]W[XAH $cO0 ͤi[4ּ7*x$5ݷ1}(=(c5.G]52W_qhlNwSmT,S鷍4BFl-Տ c=$ljs-\UOM\ǐZϪ:iN;oC*IZ^$S R߽ 4Wu\Br]oc <-  5@^I|ֳQEɲh'XW7][?^k"p58/v|FSw}+Hu); _&(^vX< ہ5 yB-< 29 ]% gϚn[9ƺ9]AMU㇆,]E%\n!fK!ij66$`YѐUAUjP?q"6Wi?kVXþz%\`AIos6Rzپu ;& j:#*p xPs^}_gӊ8y "܆js;[F3:b{/ yz¤?F^oE ϲ^f] %5Wt/5}bԴvjIv!& 9{;[ݡ_34{zN0V=' /VK7<}ݱkcL|h%5kU/NpXM@]w^d'Fb r:<'άҦ*j6a6z  U͏j#T嗼zUCDq^{u2=FI}K)0~JfOF5zT+*fofRS[܋Deܟu+r*JA3[|%FۡP]RQfJ*/$_^7߿0VoPӐc\+'c`@$`>h"l;qڦPIHsvz{yW)p8`k%DZ- O)V&ݽkRdu^B3І{:0vYNt|GDiu)!MdYp}JuRJ[ ȋ% l8 dpl ,eɟ全R{z_0[ +1\Sbxi3'ɳ@at'e">a:9f?g <GʎDtzNE^ r>ne[4!ٗ?r7h4܃jWYtgukQ#֔YuDhį˓7~UpOM8D>u6͈p:e@Dʣ( 5Y)1 PMfW^Te0ĝUW?̒c/^VW#ma%8N'/tCHv[7;::dL&3i.Oy|P*}'C}ث'o_4\|*<;PKP;Vs79Uw^| O[vVBo #OPKPaFt?SfHK4" ߃N56jN&E8S5ւS:R`yqXb w&,ڧſBq``;M[Os ˺R )fs/;k;q7iV$X^cfbf?#mYH7E~Ri|ΫP8x>f*Ӧg"'՟&Xјګu"$T/9Qfw]iq<[1e߰>_kWe,= ]kBU-1g8 dVUXҬ}-tUE_D; vg7g !.ۑ^jQ{ Ә2[+[(k 1j!FFI1;OqL",:rf_uSC2C] Kަ^yBQg.V6ذǒIx"9O!I2`1fTFzn +â"pH4%;qb\w4'Q>l[Kgh\@eW>6bϣ"- z$[ nXTs S B+t`7c'Y̲{,G@^?a˽.f"N:9|2eluRN_﬉Y(9 Ӄoŷ;skh[*Ш[`&tTr]WDt1 LgZ& w/oXzӐ.Y8wR( k\j"^D|HY%<HB>Z b9go)vSrPN{+ vQD+xYB.6H _zR7Y G$]2t)|LIJeƔ+WK QޫYÎcYu7]f0BܞϏ=zp@_'ȏ-y@XM{pKd& *c^T"p5#l̘I7 "=Lt2EG=i"Vs'k<"`iQbw0ӴAG(, p+_e2XM@| rYи ]U*83:ғ-@oe7x; i 74OMrj7 غ΂0{*%7e͗(JfPKm}i^FH^4|NՏXysmH"PkW2e7~hH]E %?ּ=f[ցBܼK٣1vCE|,ˆ-?W@~"B-뎦g֒(z§ = . ehr<~ ޴}ݱu |U]S,YF[iB.Ў[}ySy-]b&,7{RB"sNt¾.-7 ؆p3=+90@ݒ]ԼʇFW!0%Y1d=u}Wy%ud}Z/! Rwj(+L6<6+4m7qTl~sà$6{Zwu݋Lr&Z9 U"A0lA6MLVB, i SqC=ո<^E s=o OzBa#cnVo_<~IG]cOGNlg.27 :ⅇ"ȩ*MUfsP`f@s3aJ!|\jtCM҇Ay q,Mӟ?W6X5~T04 Ňzpĕ9N%fru%jE7U&~ןs'%4,% ;ܓo9:=Ԋ`5*R#g 3h}QZpP8JoI7|O3ybhdX=Z'$nz._Am4bc]dI,8E_Ru[f<,k>>GS\wٓ Siհ6\>Ux(~fÛ%ܥ m8_cJm=IȭN'S*QT. kg6Y h(VJ)[?.E,g!N蠛u3x]tbV4Ju|7rN,X]4 ?t_Z!m SE}r6 >no>|&,XBZ+jނOwM#;(P]ɹ'hu45SA(Xa=Re4(%U3)_=d$G*(h[ 91alʹ Oju~aWn;pPz>m7ZPzh;|RSc/{glۛ{S=;d솞k_I'xTw+?'']CNk܍𳰀%AdjALqzh$ `;:ƁG74Sػ}(wqBEKh:E–a0f겲A.W="P} hi'l·.ai:Lp##,HUSQ~FXJ-|,O=1\'nQ_-Nސ>QkڭK%'6xLgXW*ϱ&;;Ĩ:6Y-@4yGEog 6y- )\T+_? ;_ihWwU-o D}I0bѫxvZ)BA񽭄@+cw&Rf&qF(cSxEFʖ8O(^Cbt .C Ok}[C~v_#0" L` x+J'$6}&{JM:<3ܕnM' pЗy./K%H`$ pLn]/C29ȫ/nʟDm4(x; ;H[ ԍۗ5jXM3PE UC-Ɣ딾l32rcK& qwc!\Ŷ#L+PYݎZ6S~BD\Z]B>u{Qi&{V͏\/k$D" ~3GxNS*/^͵q cHӀQP3z ߑ}U+OU_AV3lxT]!PɁ 1v8b''TP/gkr^c \vj2`v\tUKh.Ef3F{~bKegUBSގzFR#,.}_=b u FQhat}c1E#eG%ժ.O nHtR}sVG'X z'-<Ƕ;JZ29%ҢcnetNO1E })=$-mm3Mt2hd\|[([dzYLXg*5Af`*(%O"_hC m#둹Ys \,RV!QMS$7DtZzI^w3ppV%\AA|ؑNL(6'`d1"m7 PKqe>x Nic-}=Ost$['Q(ʣNU#xG;0j[@`=v#V)V:5|As񖾣Lr@BV>Z;t #yt#T2 lzнŘgdz ^"uyD@:*[!ʠ3h$8%zׄ|{biD v-A('"(lـl /ŵJ"ܑHK~?m )&ko%mp=30PGɃ|V?+FE̢/Y( .tBܒy6R 0i4 \:i#]^S;^xծ;|#"^ ?ۆmڻdb E=ʙkqJ*Ts 9ٴZlu9!}INTi$QݻC+%C/|r~["Ĺq dbQ3Hs - }x(!mfcپ~ DoQZu_vY,^):3J/E rp;;6ੳd3>IӐ3į^gI٧%DN7>[&~bX/ƹ(\C.w jxB9..ԍ)Wؽ~X;-R` t=^E\{^?;J,Ej¼'IBIdM][zM&Vr6,0~չDC,)ȾLym_H|:gRƵ5,)"|>d?N'l-d6cNS ٳWxǎEq͠'_ɚ$*19MnB s=2!d"mCa}=^ic:%k`viÔy ՃmxǞ=:!kѺ3(+S Y| v RῐNǾHvb$MsnwX %h<4baޣ-Z~nFo$||I}by$ln-DDo5i+w>kV$V#éz|ۥl'4p2Z҆:U8pgᲃw*ay{1DxlMr5wc)@c}YXwwHS4WDzEבqsNJ1pRygYo=lC.Hmn"AÜ% f~fnJ,ϮuUJ@?iQdBW-AEKF\B22G鮨z_@Sm[CJ<˛Ҕ;MWVḢJɑFB?:'Ml7qV2wa_7f̜=U8`wb%5` ?LO#Ahmw-ds4WcW>pZlvL #s7iω>Rdnػh$9Ir3; Gw2Y⼑(/{PD=[?^8O9"WZdӇ,5MNu$)o}wI4Y8E,pXfe ˭Fp,J*JM~ݩ4Ӌ!MrPNU|-;F y v6 nj ҘbY%"jsm*+imZ;DѶ[*܀ہET"Z7U➦<_$fr3DI[{ }ړ0&y*^ DFFGZ-H-v$]3f\-c/gqS>~vC-^as6`z+3u4AF¢kq^c~V܅*e}ytwz,v YX.~e)b G-a?Π ҐPӝxL\S_; &F $Sv32 8=lOS@Z_G?SK"ro$,(S3@0eQ}M}%d @+WHl-QzFrB`-F|wJq;x9}p4Y4GB's^WM_?L#<~TVPܰs}%ǚvvYljimems:epq=sɫ jBO@$nHH q܉ƺF0^Tp*1*D)" WZSAOǭN}4,ی"?|P6< mCr%˥Aqԓ}'8I qOL7"G {m&r#Ƞ:wznp`otE;Ԙ̒*'PlGѝ.9lH岂uHW?[` ' 6NwArܭ4 PzUEHB__n HQuJX : cqc̼h_Pr#v(WeO5$ghb}١y#hn.2l.fN$4uW 4 0ETw/5B=hNSFow[7X~o*"X\zڟ{:kjBH0u:%_D̿VPcWh!2}J߆"-nQX>(.dXJQ̖iInSf07?'жdޚH#  $4Dwˤ/ rkJ ޑIEZ_~@O(4ZZj^Qɑ_v-Wa 6U\nEжe!lrG/J0 I kȇcYfI;$@#L6T,Ҟg?]J&cϱ̽LM9bܩDSKA+[LㆨN$2ףC1Cd+!CiV* Euj㨫9+luc]HGjJs(s0@A;MUBISMH׵oi7Sk礨CHj -A:_LԚCLCv?&oG,.bGB@mR>10qƴ'M~+æE?>9Gqu?<Vdz"N Q?'Ƃm<TK\ pP;!.DH1w엽JaݧӄO:ҟKߖ=(˴?I~*oCk&aLz|eT nZ?d%G3v@ %qWvRIL,_vNK1$mA E@jr(Y0H*ebOV65ֺLi~R^ضڬfʏ]lfD_BX)xƞB2""J ȑ "g7>jMgLY)9#[4EE4!l d{L6Ϲ 5[4 ?^WוV- ʌ5-!*n3n@B&uM4s 0GZ*bD챩Wq ߰pºX6`F9n]Pv)^ [[M_)B=9NJvR~,wj5GA mlJ[(mg': 18m2e['qH)>l``ʡPOի`7.0nr3jRAb<XݒwmK֞f-H4ȾcCXzh=a!Gf6Csx߁8}&čz>N2H-}`p*lg乌oqD[b8K/(#JrhK>4fZWkLUۗaLk aĂ?+ɠQ ff5]³n=F%I5h6zM="1q5v;~ JP`dJe[h9- /;h"i zvRId)hTx\qiJ߉ 3o5=4hC$ڭ:fVVPS3fHe lrWq;w5 842b6b`$Rs^Y9'svnW`{bae/U:t> &MmߏpL\3[b!wp׃|Z2o}Z fHj; >ɐT_~L[Oqdt.ךvW lI~k agA%!]_ۮ|JU"JRlϻ=/d*FUQ1vMX[Ay=9Σ{y3lkۜBkQ*v?! .vYK\'ɕF'/i^ݘaU?{t`1iG /x)&$$'$N, e=yX1@{/_O3^lo^ N%۩k@$&$M\O$Q!/nzQ o/6$:а 64XDWXRIB$;9a%&|`ma)ZA ׎;rv4x)$ϸl}xpk9b6%gk 6bqƃR6MV$_%>JG(]FaCT6eeXt0{L0.2$O{/& m[Ucr"Jl6O).nK5C`. 0pӪ;pyZtԊ^E`ܓ[mB $9Y* Ia;V_ ˓R4a(m6k`{:xVsF"D9z#|zKOwABh.jhNDAV` j67FXy'MkօSKYmBR+进JW)I7Y\܈t>VЗTҿ,@txD!x[y*l/=15x|nOrCL%_ P\ңP\kaI_3_ LrjW Z)J$OkuD˯qsmhRw3>Q !a#"Htp4t/#1BqҵM5FfԽK[WWVC 'f3/;2f/ CL7FQJR|+7x3- X&[o;Y׈N!czx ik'k+Vh4}4Ab7FVKuܜ[]0m*/Zx~Wij_.R8 @s=r(ȸrd@ۥ IbQ4IJUhE>mi1)6Aܔ}!5m Q!ה|D2m&^3D2l+ET'xOt(>಴ݔGW Ŭ<+Chv6#=1劗y-wM{Q@ +4 վ+ܥ|kl;&G/8S s{1a vvȤ)L ;%aKjϻyRpwV%v,pBVC;HKѪ>'fB8ZFGfc>z7 Bmt$45򇨠)fiT$m(R`FŐBaghr рs*Kq ޥdӁn5FOݟ&'FO܋oN.[2eJ7IS:<;ZdOYbBT2@Eco0CR$uN)LOfrX;-; G :3QJR)qW% rٺc32Z"fq*|(?@uJ.iC!E AIg{Π\%bl$fdUѼ00qKwI+.sΨgS[y_\+Ҧy}3%ڕ}d (a4QI`hwխ f& J{)xF2EwhEƀ5ڂOš5÷.*$w!aƲC:B v5?|V͛O>LL#Ni`tŽx`lgX+g,ڜ#NAs4=CHwh?:E^5@N2z%:g*5BcK8KtwD%4؄txv kjf=_sBz“<O˘Ϻp·CJVPD.!h))&ˤR/*Nɜ噠(Gibjn0ATnwLuv.y9$Z<םvn8DtJ;tLйMGbEͳL&x&:!Hst=|d|M+z{O?,lݎ4CjR‰!W"&ntTSNq|8FdsQW]?/kIj$U̴RdE`k4zwR^ЕT!_2d;TtߚyƛzwzZ$*7*2,av'P3(#ݿ^2F ~J] Cl.<}9>no)iTd4<0L [*${1l#e8Y'e/f1+EH;U: TxGW쮱8Ћ`*^\Szz&DANw=+PXOt0Y,2d^ *)AE_Ո=e.663t٨e"jd-"kx(6'7y +wX* 0}uN$vR‰ yyҚ< \lqz=]ojvr0˙Ҡ3RH iv b!-iptiCM .&aIG>6F8/fص[ӛ Pne=Oh푹o1-՟*d/ċ!8(ZjRH0Mp\MN 霺'{fpva>qZ2YJ;O=I琐9bgER%IE+*3J 9z!Hp9z y zf2<|D]ǫ-dԬKWxM)J#\]@tM[*2Bp(nR \Nc6TY}ܻ`qu+1`A5@r1w{%yJ7ap1Ώ[sedang~S!G*]BdUєlN)VSq$`n/>-4mPF-=J7Qz`\+CMLO`U1"\ 8ѽ1o?]Cg/^ z'DD=||Wѱ8 JYG%nGē_)}T6}Ix&YSguCxHrxA]lT.p"G4l'L* ӁWF,kkm1 Ac>E?Va5ŝ{'*y * nxL?q6S/jʂ׾;0 ƘY.gyZL%S* dwS'AҤ\j'z/uN{.\6ʳ6) Yϐek$r s.) \d `-Z)gK vt 9j#Z^盅D&Tu4AdפAshyh(F^a,ڌ0[MLN5g>-1;b-֊@Sz[x8L:(oR^NZд肌~vRFMSG,Mx}>SYP0K]">K4&Z{EH\"ڎvZ" zI`}^$R=PC``n9Fxz ?a_+;`KNpbR0L /KPy S-jYi(IԾjb#"fXhKOybn~Qk2nX=ïNk2ghoŧ@QRN.A7sQpQbg)/"x.av٦Eni$tY9SDhk#K"Zal ?a'tc NEX4:tOȨ,d*Sb\w]lmKvΨ_|˘K #{(^ۤ"P~A ٓܟH,%f$-ϸ׸NUM.~) tMX;G(MOsݒ;mʃLt#QSJc2E ƫ?&9j:rBQ2DcLbZkhZ| ۟tHJX8HV?÷ϋZanXP  M1)2 %X14JIc+ m?;MXF(~Ś*rݢMK4ȞvOG-1XVo2a`%\{t>l$_j;]C =E;zΠ seOH\QYQEI?x8=6ȃ@)P$hÐFGQIބT T fL8HO`(j5T,>fpBqfB7l>׏ݮpñt- ^ QZ#R;c|JS"f`'mbk{^75ہg !m`nhpbý%fSr2fՕV^/$ v^쇒bA g|o'U5d3g dWnEW$:[,7YDтE/"?o0u;%l@8m?'%D}@xF)Zv-HOz_V . @"X2 Lt}V\lO&B!gǟȵawӫ{"[wDX{Ăl_)ϿOiN0V訥ut<: )uf@mɹIw+TrBZGӥ%nƹe j4vQONq)W6٥{]'lO/ۚ-աF2ɼ w@We3VծVT|`wQ8%,gQGԠyH(#EEmf3~}E#8 0fNeڱy+(.?qa!^O1"f{YF,c͙(q&{O(+^i_T,?SB7"l9:7$j&ątsRVZ* jAQ͛k_e9jecg )Yxl@dXPc!SD<Y'Ɇ=scvj{pӰxZuH#̭0i歯PY}оs FCu!Mn-D~F>wwa+R 익wvK3=1Ƹ?D*6;Ky'ӫe'쾮3q"NGiBq_g+8 :ww&1鸼0op9|!wZ$toσ+On,H(mGn&F(bG+aWpf6CŞh.5Es%X?42).ԗS OI ,T>x!oO9e'Z}ya~Z|*ʘ !ɠ1&q:u;5׼3 Ds;#?+sQ:6bøBjn=XE:Pws^ɫiqn4ƫRָ-B Y? ='ǐ6[H|5*}U4e)$\Kai82l*(&;s ]6BJG gp ztD{Po;YeZ" {g w}?ܮy^yyxN}!anWG_ Dm _l_]Y9:Ͽ V缮Ni[2H<2R}E.dC5's߲w FRß@nfMtV310*z>is2Ε][Gᤞ]l$ 5JNސ,nyb 餇eΡ4EeTB$Z:@!&<]N")z'%p6,7pR^"9W# (TW;=&I?~ߔ\^kO?Ћ[O"|u|,!,ww.'6ASv/moe܈A 8bc];3STDsRt_l[10=փN _|)}7Y./B*6Lo~v8nPO!pZm3jP?(OT`է\OOzbnI._MY"GFxzy2!SNJ|{4 Zcq &@4;/yNhw ґ yb{Ѻcjt= =I-$l62b)ay}fJՎ3Vl=Y\"n,!Ph ;17q`a%ʑ]2P.X8q > YoW\: (;(G.5STnF8zdbII?LT{pO{,M?.<Hkl$ @&|Dt!`v@$=. $ˊf|jEfz)ve8y/K#HKF \O'2a9N@wxf-^!$%%lGWHu<.^7Oof_}!Ջ(cYpo?"9x`ev$k't5Ph'RsN5 S|}Qcp[+T UxGkU+18`̰( -|c5ҌDboh(W M~gNeIRU|w]PAm"ޖbЖi/an;8^]$WrXR%_}~ΧiWTzۇM,=4H3IIp$3`xdFꀷa6\W8Tg_֚,en%Ҵ-/C4Χ7)u>WBB@B%i3bS-1~XU/̲ȃs!ċ,*؍Btf}cEf$\M?^ +S*^iYm r~o_[rDׅJ 4-n8B2 ls> Ln?np /i9s,7HReRkC̏M9le@Iz#L0N훝 x#e=c0M6<ξ W.A#S1te/G, m5)`dp^$ aK8vLg:PZքOEkV)mg+NNYfPp1R# K9HƁG3JNԟ~h~ޅxq UVf313PhJ`Lr$j^rlE^6h8'Y$Hд6ϢMUt*K Z]'!&$8,VW"R,lpd:u*˯깆9zɤD|ӯr^!#xC̛'(Wb[}fݚg GNoɛl/LA# SaCؑcPK zvSʴ1tMxݝ'Uq fB= 0g]YUrPSPpOQM [gPD8F 9"y3HE/#bz;3Nw&ILמtΧ;vx]ԢF`?4WcpZSȸb>'_f]]3~-jXY5h#"Ա1^. VM\q {O7jE}1w b#ңC݌‘Dgnt&C"BZ f ̃9WCņT\;BtxIo\9AXpӔc/6h/Ë.VҳpB#Wϸ[]p^!x5=([]S-nD9;D7ajI8io$@׮*m׻h_t0'c7'Pb; ޫGSvYT1$^s\/$|F;)̀K*o,UvxrpOj ^V܌ð<|7RdcV-BW_~$vs^f.G%`807{b[y7T6 &F98zZֹĺnC!ldrZ Jv1k#CPzP=d!29NbQʟt\tܩٛw?F`$RmӁ}]o)Q[?FW0n: :9t<[ϖVͳ*P;`_N`T^*+Ex2m@<\bLJ?;JDJ́mx*SIkea(0 IծyT7w$KL0w᧓'z#~(t ?ОdmRѪR 9tXf>z m,`j&MjyK4%= XrvwwR u :eݤI"h u&7F\-rx;ׂ ZcOm9PCNj/:GSʊ늺ƾxߒhkբ՟("-YhzxTg6+-R1Nji;!+5/IR9$A,(TyPMId=À_bƺ F~Y2y-)BPOC_<fNNL>wqޖI<Ս.8|c[nQLyR}.#G4*hC8K ֯KQ4q́V&OMUCXȂ5h^VpRU|}a$-"h+ZTNi@ r=oӽ{dBwY3Yј8{h6ylOa;RLUͣhPа s~DIȘr,12 8Z&^g,Wf^xݝkp+,g]&u&;$͞iDdk&n$h#n^t+gX#nT[BW[PfJA?iq<܂"  C]7(.dZ`/B09ҏ4RCԓx8%{bsܪwl٣Rs _F)q]+pFYu|ᇄ<%0ۍ9 K]->"= Qv=q;)+i7a끭"<çpH̸ K.hҗi3[c[C\1ඁyr;7n087IpF>l"1xbҘ\cX:xyNQA{ml@}|M}X aC=ٳ"CTd/N~}=Ͳ4UWg4˲#Võʏڳ hya|=a6)6%e7(n̋`rZ0dL/aM*ב>.?ps@))P"c܆?/o՝R\AMPt(:\'\4c.eFObĊ< ,#Cs+MsC{MP :\^I8`/=:@"jCftrn.GGj H?*(z@I,ˈm9EY!"Jzb%UDO(I@T d._u(coEw_xH'/Jy5p@gP4Q>ŌՐ^kԙnFw6'"[N}Bad(~f*rHXjfI={~Cz^Qyi򓿡_vDDW~WfE7z roujSKjf * NhVN,&sWi><o81 ֬=,5r<$s &'>ni6qm8`IĂ~P=H8RϲRG7:J6cM}'*HnL oّ$ɽO+4Ln( VKS0^GaXWUAE!7黴 LBL88>j?9x .kKi}?R4z}8L].s /]gձZ0u0_cU&4˜Y'Lv5\$wz>FU`%oį#N> nVeCϐD ܚ$10Su`ܐjr`T.?B\ɹ~$ ]<9Gi#&9Z!U DAry* -W9 aNKqcgZD$ T4_9N]~ 'fruwvZh۩_m,ގa^#\uǜ4Ѽ\l HL~~tشy@FS(dLjⰡ4WWa4@2z1 h(V+P-q+U2Ƭ 2=NM&Є7RkN8rfT,:ջ aҠ>7;P eNۄtCݐ H9nħvbo}rr詇.ֱg@jI lILRDpӤ  pC(]m="(< ox1JߡqgDp'NbU$ar#cDm"Õ_Q1>m1Z?EX VzSrē<oNxؤM "fIP\+9H鋾y\Y]Xv8^^,y煲vTv)Aq{P#F[\]9j!VAXYsH.VGN BV8-tJzx"F2r꘶T? rL1۫(>Pe_ ̌ K@`Ã:l|$TXevV՟B/SAzUXqO8'XQ9阍8ܰt^?608q/OP,2qMC)%D kTsWBg^=XMmN=~tR,6"\ARE$;pTWUG;g!s5llC3I:2Hy =K JγYWfrKg9đ!7Jv| `-l~i1[.zcl*; R.M=p䢹XNlAIK_;2+IyEۼ@jYj̚,S#FsaC껔{Y. M2T(b)mP?mq Ӈ?Z$rsr$!“MN{4\R5>?í$tAByϱ~D;jRO74NSڥ(;gެxt||)&oSk#eJ:ƍ/gk?JWny>X),POuxJ*%aZ7ʎZXBmxEOd `J]GhZmqޤ}f?hpz|^8 _I`?!2;AQ۫fsx$~Vk<ԅ<>_Ҿ\bR{ TPnLn4#)"|؋r3dy`k wyFW<)*& ] RŹIh 6d=@ 1zAr}Vr+[`zYoŸ\lӳ\w|SN:*r{\V6W{v3') י@`%뱬faHD ZH^>1j#'s>8ݹlBD?7Oa(zv^H c"~ʐ4+O XwN1<hL#ǢnD{YsC ɭd<njU+"W{ djڤ\w,$]Y9 #ae( h%9Efv9i1[dQΞ}6yЯ|~p5dsq.wnlmM Crp.{f*:놿+[*u:֘:nIp Fa_q5cY@fC+׵ n+@G1hG;^\֙8S-TU0d&ŗHG?<;I .ՃH!0j HV/cVБr'kHBJ_;WK3uY?( x˶Qd. & 5' ]˓g~1ƒZPIcf8,do1ч:æwq&e"B0^un6qGyݙj{lw<# !QqCIDs#=9O1JXѣ[dc&sv]#cVїQFh'>I>ҋ4(ZRLwתC sUIF/!U:Yn gZ2eXdWaW_=7zZc,L"U`AɕVH=-$~ӻ|AZOʑ,mqA26Fzg`ﺔjV6*5݂uK1dGϦ /ܐZ Sl{C/8k!V"+}SJ{ͦ{NM q"Cvb1;+8! Gj!f#$|˻l\Pj5TPGxF!"L-Il텞?A N`t6t~ϱfi}/Lk&b$wX$O I*7'ޮ*ǀe׭&K \3iX&|#1R85^.(@!.TE{Z(& D.׎/kDe W1qx̰<_(q@YLNm~5LJ @țAߙũ>( #R'fpt]. t(q:wf&\<>1Oj]0{e+d ,wjX4Aʔ< 7Pt]$BU0_P-Kx_CDm?[ FW#3-; #>2_;I¦%3N\Xb8h _<1rUͼsIyZV Wj%LqU[FA8Gv;skF'>`ڏUymsbRsl9~1HAh;I*$SYu ؔ85 8UFM!}rM0^!e6.#VjUq=:E3 -Tg{Q-]y+bnyzP3X4tdkiBD}ILid=FȖPѯ$Z+lʼ<3UVUBLu#G]|>o?z:r\oʳ=~]8K)7{?}+p?MJڋOHd'+1Oc/-J!*.!_x%)| Q4L9O,)Ș]C֛V?SU>zԣ@zOz~ .j#(uhr&BLXE'bfmFk멠f˨ mPm+5 R6Yh _80F?ٰx)K/!:x:Ic_GɟF8ی:jw1qOGHX+HUSrk\1esYu4t9քKg̍oqYSn&8V0m?gsœIdk y)2w#T^;Ԙ]t=odqЦ 5>vf,12fD&/ۨMch1\bpN} ⧳aOS{5p?lCaY΢.ki2 ijSs(B78F:brH<("ak#ϐ<̱i"am>js䕔eLk>QI ֖c KVg-~N5+>6NSzh g{{5fI}$FQkL:GlREwS@[ʩ:D k7=i?+ ct|jD0WBh eI!~V0 %k`)g~{<#>ϋ#EW zxUG5@zk} wbi:gEBTP-488t26U *7ob5^W[ 䒔LFNp:m|趖jաN<hCl+I% wƲcG`S. Y=د(_P<;̬qH}ёbB3xK J]m[ŚSE+gj$ -X5/+ JH &FgM҂j#dE PW \=NYW*KhλᎱ&%yYgI"˯>f[JzQ`#M֜7%P3Jqْ^Fm >fK]`k!zɄMf^Eb cV_]sV&HoS|9+txtg!\_\:2OJ/jEC}g{p rn"S[![p0ߍ(>.(H%x2"$Un&vAsO˶I֣lױ3T/tjfe]FNIp aDz o:*]Ngd^SгPnSzi,#*BkQHKMb.֛tY9x=;&b~9J7ؐs7&ҫ{FoĠ7/+ex8[wwR(.ŮuRAv V'Uੲ >U f_vuX qPMu2=:DM =[Yv?֢0. \>5mmh ;I7iz_Yh}ӂj}aVƩTmh$ouz%c 87(g; lYEA&=,(K4`k 7CQNsx!mmҼxp.Xq vB1_eôT~Č);XүiCL)JZe%}s ' Q)sBu+pu.>"wTNmtEeXh.C+U5y+>OrЉߝL#S9Of;àQmq5xmMUmD-:STHcF!~W&}K7n41\a55ךD ʊN%ɵRzQ'x"[1iaz38ȺTz^cEѸ.(qGPȌsO;RnNק</{YVKpk#Wuo jrG`颅s-% MZSLniuÅ(<.y y+XR-✽ y22ȚNeHa:kH :n?<\!0L$B`S-]՟/_Ig$Ri]%BgB5e!X6d|VfM/GjN dH+SZpE=X[^UA%Rcs橂'l:Nxh(U@|!wMuwfw*ȗt%Ȇ/2lǔ44齏Vrpv3>0 HvbQFCD;`yoI;?zTƬSCI9y쥥5(( M ]mG$ ؝@)`8rC.ڃT4tVR#6'$.(We[`c?ۄQ"wyL_2y ¸6c"k=sT_\דIXraƸ>kQb'2T~fJƱsj)٘b`+0L})zҝ~s㊙1XLZnmѸGQvNӴ$ ^S$$Z[/A\~V zK.17^Z IW ʀJ enno\>mLS, "0unuY1gAe=' ~"W_sƢsi ֛2ۮ 6R\Bj\Ï N~0*"f{]{񹌠-yͿW_6(.bƐʘatPPG#m4RK ,CI_O` NwHǣx¾ga"Np"TKww b;MFJtd[JIPQ5 37DEc gV ۜ%˂vD coo/3`KLi5ŴU fU;Q<pCJE B@l3XCVH{oGȈi>jC]A]NG}'F& N;U~tDh)uU)f{tujS L(WIK8pk穬RpQf\֭u?26wLƝ~.X݅]9;8B / %lƞ<Hoócz^A;G@4pLW-+=T/y253OUg Z-f'tjSv{.?6}M4%ƤlQpUx!/݇vO`XGzw޾Bt(ow/RE{!\}S#z0Yd ?@zXC|엂a=ƚqֺ6EF~ p$'ogo1T!@b)&>$AS쉹lӇ=nxW-P"04ԗ#-0Ÿ2? <)EϣffPgoc lʧfBܭe}}-!b9&vntjUeb*enHk(=.c܍fum^V4K^'jT_WDprfVW0Wfw_!Q^_+-XB -? tf+E\-RG^?"Z&\wMX7Cft8cXI?!5ybl}@JT6&Y@}0kRWGJWkqg>* pj(mhDFhK^E~gv{>ua7&T |٩GxDG%Jc5dt)#@`Ц/_\*6F I5 z7P؊Y!/p+,j MSx *6n.ŭ>캆hNnU (tnٓO%N(*Jqi2HMU ?-ޫ1r(p_  zv^sy(3)y+ζ-0ʺ^t*(Dҹ7UUq1y3[wՕ;tORFT2)cErgZL: #_g!5OJowp2א,kWY\T"w >O1o!uvM(kN÷&LQU*=j: @ - X ((Ȍc=='kлy* O:@ƣϪńrS|% `Fَ) PNi%z:X@`?\|<|o8R!`1g_ X Z5'"*q+%8J>&~31b& ޺ZYQ 6x0~WǝJiE ȧ* ?;R@{r ςu!8(f(_|17%G˪^ciIx4KR+/=8U9 ղeY82ںĪ^ 'dڲL>:"nS؞  f."unqP$<~AF Jt" >$7#|| &IIFqim0@Epb^+)5J=&$YG _vd-N cˠn(o_:jh{IiuA #w4C_?cU"g݂k%00DGXv;bʘaǂF)i(l:^eu^*xAՖ S fj(X.zI_ݚ H!C0 ?aOv7pM6KХjv}QhԮ %G=aj&c/ ։!p{N2;ImiYO{Pnsgr 6Sb % Ѷ݋B7ܒvybA7Fh}4HGI/,tj۽6_d.?NBG|E Y0u;W[N9#>#G (5z6˝x_{t> #7)&d@R" <:A[LxiW A}p]A1}(( U"] .Z*OAa'PKbD>|KW+ؖEx.6= FRm\e4×dxhŴ:%k..ksA4]r s+礙V48F2CY3vLS߆)H??emJĕG#uMMI>ozoՙJFc'yw]m[緶XXHad_^ ;rms3gNгR425fh<}khcsyJzB sbUS,<H1WzXc_d#,SS ׳][XrE>n00ups }yϞ7~ B91[$#7!澸/{Q]LJԢ 6 mSO(Fs\X4ȧlmG@6$h;Xjk_6^uxzg0UKEy(?JCh@VB?}2l.(AUS~hB:h@$Pu%aDʫ&l!Nv^6twn{>frt>'bfe0M{Hx $?+l]ps'fWa8M _ʣWi)'b^і%:͜^i/'t-#"\FGAQdɠ|Șy8,O@C7 )I]kh.$<~ 3?? Cąp|XH :/ġ6Y _Raӧ_aIl~;Y|%qU0wυ;ov\ݬ*Y&[#_ I<_O,qdws@Mg1rzV;a|D{P=R%9TwcQN j5(߿j i,m:瓮OqfNV'|A8@A0.?SQ׀F9r(7$J:p"PH"#.H),$\ ,, z6$kmcZk´tsv3>`+,2aժ'ѓ}_n)E{piB'ꥴX0at3TtrMjhs-KW*UGbਈ-4BYFUcz3rQe4&&Cj;p+.?Ļ\\BT |tO2K_pNN>LTaS_(wYcl }v)SFVM]7kՆ p;)OɆU=Vh-НQ|iXʧz M LݜOw{ F@3VY#šO z;2K7P)sgLky[ԛw@3_du@M tsSL1e"#^-/F= 49f#+ 05% /L0| T G|܇Kw4 TܹcRmBiz~$6HsC5ೃ>VMYc!ԍsҷVZ 9} R9E{I׆_:e Y/AE1d?VUJXn,\v9WvWt=蜓VaE)3f˧9 g;$DE x@*0rse. P]yRY9!S%m 0焳7RϢW}qr~& 9gºEDAy ͟02C8SsF KA,pdq/^TpVɎUm!޹SlnW ǮGQɊSEF(# 5+9 ó)K`FY'EϮrcta9}Ia;0ހG 0[kGpȃ]?w{cڜݭV=&5g{=bh+ @U.򗪳2 iv-~+0O{+c`u#Ky,@&_!V$_/Vh%z/z0};ܿ܈/<Ȃ~@=-ֵ7ng[٩Rx~%o}4IaQ '~z}xGӗJ[g(ҫ~#DbDlD:^ co-sތFw>&l*Px˫-DbdS/'4WZHVԽXQn.Լ`t>ՃXzv[/]0JFDcfx6Sb-I : ˊ֛&&CuqWHoa}\*Fڬ"&?ZVxך?ÉqpY?dsSˁ/HW܃;LڭԫuA;/ *ZI|#rC: ʴG~]!ںw kλ)Z9 Ĭ\v1[Jf龜|`If3$* n ^D]t4 ;e5HrlXa}8"u- IE1`XJDB~B02qM!ixљH&P< /j&iWڐ4`6勿][:o9"xHR|!G5TiclѓژoxFڿv~OÑ XS0NaS7Hfyy)vXV6m3ì{S}),rm[0LmD~mz: D sGM:s-q8QXZtWSYaUս"}VuFI@\+xgV ݷC@BvD[/u`p̖X8።8HXt^CBje/UfL|Hҝ~P6,[6~@t维-߽`x,kJzd }%{˧jZPgaubS c~ M>mrS>4)Vs=ux-.Pm:c"݄R&nRPlmt/u=Z&& z<~Vv  Zlx~`4K{!bRp.Z/Q 2uZb:7hz4BCRXn_r:J1t_9(P'%Zܲ1 0[6O\6/$^sp0:6aP?uX)8:n56!~lk[)n[rU-OyiA5FK4/D$/FwvNdrkEu b~wF|S+ɵ 0#[o!~ҋH Zu?^l@i\թQOX S!Kf띟-#i[|FF M;z^ yGUPK qomaEċ0ffJ^D9*dDo;ı-.qhm9 BY&Dnj.֗ 6rdAQ!عə5!)Z5&t {.Rg FG88PXnP#Wv]"k7wp]ÿ_K>!#-GvuU^˜׳@(ˇSr@Dq+8Քhyk{D䬯l)r-1ͲBڬ ] M{)w 82`L;؆Y+b=|#2,&T6jPՐѫ.5GBe䩜ůȩ9*Z*nPˢv*|9;jxU,Jl:lGHBs &6aoxSe6ӤMRoՌrI8ƥ0H +QA"6lHc5~ tbXǾΆOag8=n´ Ӂ1 A:;6?w xtaX3XX%v`=$i"f@_~0m,c~8_wx>mTW8݆/BF@+c/+-5^z-L̀-_JN*oC2fs> Tm2 D&.h,Me\njש#ͅk,ց?~uYKAcv*..3k1Ew54EFAt6&yjкD>mz{OЌ )\7-W :1u(9v)-ZaJVAUw$cyhX¸\V*o5mu=orMV&o׿Aףl/@n_B3h)vPNP\UPky/9?iUVф+F_gn.ஃŗ=(}ђBg(<2|g?D7F^(C'8Y iXF:@LS_DڢS0kD\a=QgL%SM޽I vOKEPqnw*,joUIr6 ovq׳6#ӳQ@j&nULr/WX¨,FlR8,al'wt9qAOj` VwkZ7I"&|8l"&QQ]e`%û9mA;Si4?Kke:_.uW vښd ٔ6A?:ろ-xe{\ߥ k>k5OІDD30p-DWHz}c*EP6)UҬ*`_+yJ5\ H,=|M @wA^+^qdko".O:.cS }LU _cF)Tϙ.~^yJ+oSk+%y؋uY|z o,QEKA;ӆ!0#T0ܚ\(ԃ5ih#a~bn# OK~l+G:A{|vt* +xH@ijJf*_ oK<\IQ "LșF)`;\*Kqr 9#"M;>h20ku=A C% w0QCLx_:]b/񌌕mǺZmf*)d]l1I@/J_4IxM ?mfC*!..u mxf:˯v4STED9/7SsI@:<ǤYq<\֥yg:%VЈj[_eH%v5H%{RCfj0S"R]5CuARP@I4h sd@3mmYHT\vbUãloII5gt5tfnݩ ѳFX@AY+m~*B}_P=[$\ZDR.tQ[C'0kL Y1L _kA ݓ]#|+3-e\d!P$LzΗV?D]H?:h-4}':>tW;'ҝxq!,,| D 1U|J3V6|;`+U ZX}_%S 6sO&[(~~䅭JQp.v?hQ+z3 6ˤTcZ%$G%5iѠ;쀴`keKWnxn4tn¹n;Iq?D+>Ɣ^|7n c`: Ξ X'3X2DNbxA .N"mhw8f*yb(OOZ&`C̆9o c2XVNau3.u^,8<13g>٢ &s8@2ci6gUljB?fAT8W#~,vըY VAC ,3HKsɛ1^~ŻQLO-`M~P{LJ-56|O *8Ћ8:LJIA}q{+Q& dH#NtFyS:%ܰ\XKsШ6h"QP4cX oŊ%,[BBz'+İE8[,#rI8o;[ni9_#r \N3\HuiO;z4B.Wq ]- >t+_#vXuJaѲR_ lV#M1#wοm ?G;t4V8 yӗOLJ3@`r2K]- P#"臝XnS?fb%ebK;i`ʹr!XyȀNaɏGc-gAABcNB7ɛqU6)]/ E_ʌUvۼB2<JX2.EN4B~e4.K\Ak]MGmtq%*f?oHvZZ E079jlȚq\T0x= A:#!0 O!ᎈ_&ed?`RՂ٠jp]gߖ$]b w@0z}_~M-dg cz7dE蔇'0T]Fӡ)&=zQ='FFq6' 7 hReBw 27INl'BNg~l!xmKW$B) [!@xgH8@Nᬅ·D7Ю/A Z@ܨ"BcZ>Ai^`L坄>S*") k5>ցuޖL!f^$~0VjQƪ' *8HbRO?A8QqU >=Lh;(6H_LU#Y%&\L_Jb($?0[yZ) 3TA}76EZz=ƙw;;:T+3:3(2a:*TX?`7DmݹT=k^Sf:"MT9 5(!|`cUM(rEMv^U< 4 ,bL9>eAžUt'LÆ7\dbYN\n/@?(ÎC]][XTgT0~1Gp/{gxPeQ!t r\[ŭ+ hL 4L^\Οc`uHv0"[0IP#Q./-)- BɘBF|*eZW.}YAGZ{_`9-|ʘlN8_h'v 6^*ܨ ܏k;~!܌a"1#<$;e cc{poG; jI2*([lvA̕>g¼wKAfV/20{û$JMP)4`k6'*m2"K~A6׎N?Pnj>;żx}TGk_0: PeHP8YWᆵk,Q\q!^?qu54VĪJ4x׺w_(^!h-,ʃn{&oUCy}~?Eן٧pJVZs%20x,Z֣W(\puJ03cCeԤZ@W./SY6Dijo_<0$t$˼6e\V` X jj`ncupj*9Ǔ=n͞Fb4ߪr8S)_L&? n^^ mi50QZ5hkʳ8!=fnկe euoa*2**tN 6_|#;KE$4yV9P𩯉JξÄp?,=d b; rc]B%{m3칾P<7 =Ig0}!,KvDqUxJvU9wThr0i\ IA(SK$K3C0Z+,"*4fE^xRƭz"龙N<6ES,iT:BaoI(crsKr;ըxF\w jӪK.-&~CgX ~ /j6>LzdFˠT ˣr`W,ZQYH^m uG# e\!FVu#>ˍ/&\9\/T6t+:cc΃X$/k;uo٫xy tgfd[{m9:VQL`VN_>,hMَkyd޾m?W@Y85HA)hSq?Pl( kRԪC=n1;us{}Ҝ`^x_C<4ֽsn2$rvXiE+c~e@YF九h&jU%%vu/yq?HZj~ FRÚaS{g5*5:p JXקLacQ~{"SH#j!_M➪[/Jz7]L w#P)6u_@D =}Q-v 淬c~یžA48giFfTj+Ȟ^E4IY}3[De.鑒8<][JE\F2Xw('&:|l_C$0c3K8量B5TXZߦR*`qD/*1k0^-^l;Ck7KI+ۛY :F|LBųjp[b~$5&";F%a7KQc}Lj,A?E"_waǝOL4{۸"׮s4=J? ^Es~Q){M m 9$-~jrINN9#Tywy%ue2c 060r+Oa46)Bϳn3E>QQQ>([-OJ  FDS) k%"lL6PHV ^%rvX?'1HZq}G=1a<םC5U 'PA 0fd&ArTO|Vwы,< , ]QJFU ]dXsgQ#]<^Ld)U/q.!9TO-ACtWJϫdGgD_8TjVH hɗYPڵ!=1D__z|S~`֢4h'JMdeFJkV+\{|OQO{άsI-R5f{E?Gϒs5K\_dmp=~Mt)[5K݊* 'o m6*Hu)46z7"#Msu0{J`tW~(um2,k|"9nB 99ǨC)nD1HV37ass3~^P8P7 ƖWg ? 2a4yyDR42!Tr4\~r93P!ƺV% "|[Pl.I3Ј[,sALapkSz&ZW;|>In`HV/sqjD#Qr8C W-#:2-^Ǐr +i8!,q.KkhH#Ot# _Oo[ު6{`ͤ~a5-=S xoA}<7b "_) MoXbчOy}k>! ФEXlcc & +VfQe $IS %N_ket4ؓ=u067a)\ˬU!3 *:y|[N=šцij2wʌ u3f{[砭ɉCaL61^fA 6tp{]}!3쨻a k$z`pA=x̀{Wtx3]%"D^9e(1> u%"8TN8XMR6T6#-1kp婚:i/_ .EC~|NL J3; fQf♨ȡÚ)fi9tQ9.<~=& H25w5NP˺DM\烈.Ŀ>!;N%G@5AJؔ ׳Br2" |#Vuw;M`ϢN;6."ۄǝ2382TS-{jqedŽ$X?HLhn)[2e8 8.]+t{5U, 5Ӎ?(ȇ~!"5!i/d yg´Ek} 4jO6՚ :VBqrGyY8wTpM'/)f涩nYY`u|RaZ~dr0qØR >t$o2%2siɅxٕ՜X X9GOkM`YׇmrdfrAZ8j1R%!!" dN#񎊧sC^K PI&xw.ܳD~FG ;;"3F<<<lƼ^ B,.@żRzKBx57qauCݷdf`eއB+]EέjGukC(2ZW[4a,"# k J mY*̺9T mȲZr&i3i H( Wߡv.TZܜI S TrJ $brpeRgplЗvNg#;h#V(צ{r=PKSV+ٙ,\+qLJ  kh>I#]7-i@!v5a/QH!/rz+. XnMbpp"m|hVLK^eէK._N(#`Z1 QN^ ֏3?CZ{m5yr;+& ~5l % b<2iv9fhOHsrX*ʛcAwpb>0[7q"W; 7 ԃ:?Zles2q+䂰Ya!xwdkDKzt"Ϊ?jtUFkJan6h5P ќF}Aۋٝ]qDns1jXO7F)>R!!Qmb!uo@o'ત w:zi9J~A' vjFU*pt9Yg\( ZlIyH^u+3!bo'( õ]|'WfE̴ NQ!Wҥ66R2ayk"8weZ ;{ޚaΎZ%gѓJB`9]9aT?pEŷt ,xmO%?3x vD'<574Z~.bQ܁" 1^fzix@D6F"jrd#SH(ЫLGu@Qi<.r{?lB4m{|BCZb)7ob!>k΅;b]-$C1l() #MŐ sU4`i;w B2SC*3)HoevqP6;A) OG*}(@ i$p~Ԡ2iuHՏkl M`nC1li }ݯ="2 E~M0Kjl߳:ҭt,QLd!{!^4jI0 2&-k-^?%(6S.:oe7\vB%M=nk;KX#̱ѷe@a_V#_P)j܃\4@~ߴ6 Uq*oAl|%p؜84D-+,r"~ J<9/M+)6Ysu=0)\e^Qh +O+BCbiwz iid^kS ^{k ʔzW kRns(ɰvi.sV;/4aTɀ[c{NgpH&}W,Fg4wS 5"@}QvGA",z+lh.[Qɻ&k3Qp}ANА"g ,!r 7vxU|rAo{W!ѾBmjL%[WㄠQW4P;2Kbv߮70T{DƹGuCQU7hwH!pz]:'|.<4 g)F2A[['<8 ݟbyQc)w"ɂ\E`Ne"ֵZZIZ/3m8s^_Kxȝ}ܺNu&Ң&p; u$Ußpu{ֻ59f.7"s"UqP''"J6 \$C*dMFd?#4Y"4,8(!_P$׬6lE^Ȟ5qx򿩆yEd/h}E˞yPMcغNu@ȝ ]sM,$4+ꡱ4g61 AlN¯ Z:6ߵѿ(IV-vKyj2Zϐ9{>U0w:ײ(~_Fזږjb(-[O4N%ZT>yYQxME=|Ud$"X |/halijykv(Jk8He;l7s5dF?T5 qdyQ_hM qhۋ[Q6Tzo[ǤX4&r-i&i5#KW9#zQLd8kSV&_mul{QJBqaVTr{u1אb3ٳ42]Jor}#Vd㋷݈AvIӦJ7]:}@&މ.P5˄ g"Uᯬw{I e؀LQq,Ω}ZO ̋WNjSxH-y RCѸ~#.C4/t3e*l&#K3rjJ\qqY1B?'h+Z-qOb2Ed 354Ju7Hi&hiRN(]|BX:]41x-&?͋J&r7hj(KS5"`7@^v@jOsҢߦ=W;r8 4Ky!I%:dAa?צK~)3c.إ{Έ-+(p4j8`p hl?\D/³Դ V2nc\0^|T2-ٓ['NqhSH?jXP+fu<8;;^N YL܅!^1' Bߨ+87*GYą As,C`'b"W%q/+Ě׸yr Hd(@\_5xy퓧i. ^}QY'.oˡNz}آDj,Lr~1 ;-W"C~Ӄa0M6k1B:Ju&Ɂȧz:rr哛ռfw E1Q.H0 rxXxҀ_R2Q9<ڱDe!.q"qpIb{57 ;= 2[ UB%= XPGXQSx_PNUlO[Ҝ7.S|ՔqϦ[эq΂OYZ\нbI/nhӌxقYvČڙk2eX"-'a߈Ԯ| #s 4k&`R&LtCk@Ͱ5woE$1,ii{s(IuI |_TBEXbxN~;OYsfiХѺ<htDjvʭ!}jeՐ`Xoi6\䐖h)(cIZSՅķ:+ 1h[6 YZ>8bS)E-uFfUT4^${Hˏ[-|ЄюU\HYT)ZeReEB|J K-bqRYY1=B6n@׸&Os<:h`5TfgipzBޱIHKX^))6ܪH…sT- g#NU4*B1[=/S4owo"oܴkxx,^DE_3$bM$@ ?{0]b(+)=<9o3FКq H7P_Yzˀ7k+uh"0NxU؍UQW̳;O/R׎cF] >`6Z&uwT`,-yPIBz.`4}ٓS|`B:,y!sYo( <!'ZS=̨+@Y#sP`OJ9_BI33-c#NpS^/N )|T1d24P GE+C̶3~  P]&.zr'3.}w99@t03TnUXc9\`[1R"| rDN1"Uk+pi*W .E͊}-IK0i)Wvl'uH*؃|UDE|Y$&Bʉ6M$N#&¸Xΰr+!E%2=7-ưe&MR ^|>,o+ik"m#劍Z+^'Cq;-r"&;3n:? LFe3ƣϞFQߒWӱdZ o K"u_=N tp^w.<7ۃ "N]sT]@܅Wz ?~)'wJͫ87y ?qx'WjjnÎ׻M8,L?tnQ1 T;wZi|.e\t'{:ss^iajkq>A= r)pzoIX9trE(;S< 0=a3ypx1dԖ`~y+ (W sqao.[H>:+癁їqKB]}3m <^KD 8.kt#u"LzS?a%3G%RpK/~2YIٝ+/qDsĕv)mvF>(r՚hWN7|}'sC)!oSSd^&_=0=xr^YXd~;}S#uѤB010([ oy  ⪅L\#~a썠wǕ ЍA t%>jJlhuCx }}Eu4 Sc6ZU7J1{>D]nM[DCƤ |րBe8>jZQS:fnjscGrb=V pI-ϵY\V4[dއ-¥bxav Ev )J7uG`b+rZlxΎbJȷh,O@[y/h08p*TrdH)r3RA\^Vʙ`s<^-܄`xp_7kzr͒ۄVTmmpa?u&ƶ"@U%b*<\t5p2E6_%qoA3 !{^\i \%Jk9F`Bͅ@bzG 5_6u~.]Ymv`[:pq`+?RK) [Sef"cې_:`5d3 Q pxO٦mE;NpዋQ)܍~VhmFE-T=+0ioH4NSFoیP`CIŸ"r Bʺ4I#|,%+ͱr+A| mfݏ7>,1ٌYej$ɷ).XT8B)],Rn(P= )>>Mcl2qJe%`T ")X:AHBE_UtCܲ)[y+ k;s5%'8å:iCN?d[rwЁT<'10޻TyW&Rl{ !ei5'ًgV} ޴,(ROӔZQ eaSL26l :5^'ȍ[UK\pŚ g?-lNN7*#}TE:ZG6\GBӾ/M}4 3.wՓL cK7ptYOp^:wR#a_Ξ!A6-C`GO7Hn;ql .54:pPj.θPɀ^F-Z0 c8} j."t aWA>gSK5ᩉRJIŴb7Q) 깛@%4 hN¾=m XkN߬&]PhHAmAJjBA?EéfEYg ׭T HykzB wi9e_ӱ`HqncV] ܁V ؐ*ؙ'оq$zeQ?t˧m?+=Vr^xFRhY)O*OvPdIHxǫږO)(p)3hX/h[]Mu]SyH,*+A9'BUk)֦WUDNEUkl%{5h.y^S#Tڶeu!n3VsԁCXl^Tʤ1p S'DoǭIb{RDŽ'[ Px5=Y PcB߄y+㚬|1O؇ ׫h3kF#Ϧ71/$ch$蹚szkm (zۂu{c{}T{[4O>OeݷC5n) >S(gE%2چqwmb;RS4LKqQǷ{"=r(A۪3sK.5F,>j$dZtp=WVپ[0I*[)+j8A 2AG Yܩ 9ʿ+u{e@_LI8ʾV6/{O϶~F.S`HPtd+qxW#hkD?Tc`go8X,ac,8_9 K ˒TLE_nEZNQ#3D(-.2ȵV~,{]E `j'Y-i 0*~+6=T=MYVټG( ݟ:}e3fadK~BBŔ>1la$\f`l݈ޑ¦G~>ff7ɳ 4Dbfשn6xdBHiW (Y}*>6mϔvմa =٨l<H/qwr5#yg(| ~՜۽$hq 7#5.ڈysRQ0!^WIN+MܨYRUn3,|Φo۸m)^xPij{ Jb.WwZms*G7j#fZZBD=\+{L3&֚8lE魻Xl-Ѭ/#}qlJ0i6ql"* ɋ'2YR-u+.t^95bτN@)UgA/O Pxros 3f2Să*P0 O?yW>K)߼<1IT5kln Avk?Ui@b%~*bB6Ԙas{gn^,=o5YZI ,M="mG9л7w9 7KȀj>,[`Hx,$zO5{%џeĠƒȦVE~ҽ!_IX(՝+\I Rk'4%Y9'H OOu;^9FP/(, 6e<- }ʁUÄ:\]ÉAU^RH-Bz|I{4X 0wCbO]v Y!QMڈk[ 0 Đ3$xӧ햎I,beW$ /zg o7sYeU킭4o+.CI.YY8a\zwtIf^κJ8oLQ9hKwbI>N'TܢĬ(vW^`_C1[Qs1-?Mk$&WUz,?^1Ti[@"\-QҁziB9HTVuvx C픯̭Qt0 bxiRqx ҢgpUUO}(SW13b\-S[^FUO`+1$QA+Vjukܽ T^)co,c7Ȝ3V #,}#hn@ lpyp[ib M]I/BtC@kliO3rzѝ" a-q|B9V9&w- S2O=/Ow=3) RZp Ƕp]?}KH`uJK N_xSl!B%,kD"6tx"HMˡn ?4^0Ө⊮1L=џ_qg+0 LfߓuD X ˋi|]Gô9ni?'s 77NƘK@ZvZ:5#_~ rhz!VE=xVk)_ʍ.#5wg R8Z8'V/s%wwL9tO9$꽉<ZKd/RqQϤh۠8&]3v3M+$[--ӽRļ,aJҹ%hm=~Y|R3\̣4=D[Ouv\:R7ZlT'lVO~(Nw |r_Fт 9jza& PE0US!a4dqKf8F۞zzQQՊǹ z j{}(=n)^ <[8n >T83p3'Ȅ? ^_6QObK`Pg#%|Ξ,bQSGoA93ivcvDcݕ6N4*w<2{FM/ƒ$ <%6dո@O;=Ւ3g?r WK)Jt tϪoiwN.Y@nX:yg#l!l&#_ZR_nSv# ;7L 6Zκ^19]NME (\~>6$[D!|b0)#T;Mӥ[ O] Mk1wM;nDڪ4[k>WtKtr0ULK ++)܁'Ⱦ*\ҎDosX7ڮMm| _+xTя(11#;r(¶~<[2da.n.wWbm=IPGKeo%)<ܺze.$]=)*I6U( Бp5Tkwhv[&yPΫHYȱ1=m lT_wyB~[lTjC N!i-AU!*@=읨6F֭`yWMr_vK9P x⸪N=Ć}@Dal+Z %qE<݋ɡ+ĪlQ#7RiR'0JGpz>{϶m7xJÌþSьב  /'n-7~8jϥAaVƧ=_η V<^Ƴ%U k͑$~nJYLAZ[YӰSQWhLt^r0wW?m^ #*LG`fl;CqqJ\ӷch #Ȗ)>6IjQ/wDm\yU fSk @b-4oY)r qセ.c[FDI.J_ASXMݡۀiȴXm'=Y`L'2H/4QICf+p69ewlCSap\An8aAeǮI_貒>ж[X OZDMo`I^s2@V-):'7=-wnk)Os`b6 Z] `._^Yk,{C gW:$ۋ:x~# 6 xG|:J1(ftY_4KD}9C\&7N:>mnIq;u-EMu}Tom6\n(lf'qMQ+ d;zAFLNJCA~%M =d ]Y6p(K{a,R Z&~>L$逆W @ 4F.w1c^"ZuKBX`- ~Ax[jRmH6@Bķ|̡寮qMZ_]2PՍ]O#Wyuʂrxo[6'%蓦0Vr6iqPcC/"{q jROH cQ Q g=ey*2$e:+N`4ն.tOO[9Q34"59s~Q[ְ\^\'O9M&6g /lmؾѶ_1YY0D,Mh%yp;ɩ\_i=^~HwP5[*-1?BšoJ?axWs;zPqU~@Q$&PsOw$&=dGXh`ZHOu]&BZ`Ưnf!*nxH'T:~ϡ^,\+!Q MiAFmɔŒ tX{4ڡ7V$ +]̃ݥ",)qLHAFtTjUܹ* 94ٶZZ]K/Gq?W%rmyˋG'AT+PI4fJ45g9$eo&#͍5>s Mz`KA.Ҋ#|,UInr{:t`&DȈu(HcYd˒]P28^zm ۠k `{!7)JY~@I.aʄֈl HT Zqt3r^]#5Ri ,~"ցb(Ie'+\ *q9&bSiBOX!,Fv9Ftpq;Iʐ82-\p[nC/^^OFXhOdY /<&+0k2(A)/D VѱPgӈZ(#`̻P*=he//kK#ni'fe\)x  2˽JH%$+wNbɳݏ5f?yY~J %K?u!>>ɺkd&gK`+̣ߞe_h}x#ġ dR ?)WfI0͙X ۀ*၂}g;[`+ g2ם%BTUdK h7RsmNOGտ G;B3&fCb#ܺ9>ۦ*\,s6Rfw8?ow@{z#r=7a(_?t@(EwK#`0 -OŝjWM4Jw9<[j?q@Qɱ8S\2D? ꂳlbOP>4?Fi1kT|Z<2#Sj4S,QNDTi:R({ҠԟuWHC6:5{gq)uå@X58/{:e;$쵿؆[POVgE$MB ?DԠ+bc "4*ˠX2Eox$@a9o23\xOpI 0c #I})f?QZ ;6><M9k'.:n e}!UŬ+EX9+Rb)Y{"ɦc:^ư|tզ='=pkOb3˄w8_ \{_b'9DGxIi0- >*$o*ЇaNɧ?BfIil$AhK!:9?>v\"?C=!]w)Ts2G\GCU {Ht$S=[pVB"/-QE5Qm⚤g'zn*$R4/`b>\NͰK1{,$:EFdnj ;.Eq: rVAyPYvM[iXZuJqh2mͬzYJ2ivz_7K W~|MCE8@(l^8kR&1BU!Xbx4'kW i ]}cm_5O-硭,3˗+2i:M!QcNA_iZU`QN Lfpa+TOZVV5)TE 7HRs;scNvpeK(O"zf}}dwv!ư#\.#Qh26` 骪HZu>29\hcv#BFb8f ^$l^k`j7WsV  vv^s+`뢔'&|] =UHG>k} 4aA0q]z > EW**@c[1t,Otv\ ZkT6HE@t9_JrQkh\9Smd\4T±l{ڠ:4?mY 00)SX[TM%#*.z3:)[${4F+Xb^ q~:tm4ճ"! BtHyx~,8/?,!ƷLS,D"wk:i:Kc=>/P%څbFܧƢ[no d#2*|vu_݂xθwp-@{h(ckJ>)bi~WށGH *RM\^7*`'?Sɝo1s0+X!fCd@?2y3X\qw05GG[9|4R|@bsNx}esFs9mzAC󊑵"gh24n5eQ`J{RD˄z@@5 V߄-/; <`*Iɓ_ "2 Q;(1v/ٝ2 XqW3ϔҳ$\hf흆\Iβ9(vj3 K -Ryn|.lW;L-CJj.P{" ˜os?֨ocf*du\ "ĥ,DGjt/=kP8î9-#U8_QHCXdN)Ii?x9uTOKRٻK=FڴA uf4>_9rlԒq%'̥8嬱lzYjT|zf2&6 W0Ԕ|m*%"{Q'#+J Og% ,`5NLzթ ARIyyy5GR V ??̛9Ȝ2xl6jJHfz nO*cC.$*S ;\3$C#Kn_ '$5|~ti%0&] czD5_B Ñn߸8l6S 03X%2.8**H{vw{)g>)UF~gfzM1b@٠)5=r(*Ob L)TJ٭kfZ%^+փL_|B\Τ1؋a$YwD@:yc|.岮S<PtC9#Ӹ۝*Ď9D|UG_ U'מgp d!r8EnAJcN(,z" ŮR=C;@=4pe:z4qHC^pGZGSOJst-J\.\+w%g"}RxOO[fՔx3yDGTx ؙT;9ljģ=`c1:VnnHh:5uEC"81gU#aĔ82^Q +5i Y,ajT2< q[8 Ie1HNȕ㺘e̚j@_j|ix\wJqҙN-?9!]g%</ DtecN [u!Y*~C:nMIH,쇵AW+zz"-NtW{ʲdO96nf灈GK敕)q(NxQ9H'wG0Uʭ<:{f+af9VwK=<]$O獫){>_T|A8ބX1դ~Sta@I1]G+^y{jA1rogv3`T=$0%֕J;K\Tf*h]xXXcE:*n)KFm]]}V|^OGV /ԯ8sA1&Zhӕe-v"hEPGSIQScSIQS>cq acQS@cyЁqSUcUUy 1QScǀǁǓǡǣScISc4qy Sۀ$I Q SacSUf uw CF8&0") nQl'֙kNLD%+ Ɣey_ .|.U1_[)f3!,]`p$ǥV(@6 Ի{x w OkblY~TgyU[0\{ʉHPEK XI$g>Du4R謗"yRF,| <'VST Gu|>QzXG`w5U3ǯ(ҷAN  q]d3>}urDOU9uC(~yclb (-@3 _ط=KI} C8e4u``\zXQf b"t)Ͷ N,8GvByR;{$hNNMtt \"z Uxp lLnYYIJ~c{&/ms'{%E| Nsh\0 e+79G eX9|̄x[+MDr 6DrNͭR47B+}ݏpiʷ^A\IR˰3M{Ǔ{gm_Tu*NMn@N8׃FR(hN>)n; կyDP%0%54ko O_R }[#$<5FqI͓[\h}NKT|#6-$IR="#ޞf s`6KH&ʏ{K|BqN-'7V74.7e6F(dX}^Ά:VǒoA5:\73cǶDo|riwpQ uH>Ua ~d-* u*pb$oֺ跎J.Kr㾶(fY\>r=/ĎZ '>cj>|JCnܻ?_Hqʅ|.(y +HT_[8VVy"x{s\d#B^RT(xc-wCK eyQ[QͦxYv0ru?"ƔZq-ܫĚ:hl T[sr q/M*Wc7?8úiUig|Ǻ].II^qœcv(]Pѳe%Tjg^ƀkUiKb2[\~dZNi0;v1H.Yj+V 3?c!PZw)tK(u݃0KX$BZ@RG2XP#@|["`:SQX Ǻ$;B5(ցiX48#wo !dDF2v=KRkQ seKbhT8"L#_n !ChEJq::?MP,}V~3މA#~${PSxZoKҳ3f(دݪ›RGzjKUXJP>}mi?\N2Lխ8~?j2r ᭵§&k,oZubsHXeQ$ )- E+Ek4sU7 GBH#,l1 Ip9 ^0\u,R] p+ ր JXf"A0:qGJ`F喺s,+vl.Y}!V-k w2s,},1{C[rTR4WȢ $$lq Z~|^7 FyhLUl{#b-oSWX/a59AsڲLATJ!ksRSiQK붖4?aztIЯwg P63OцՂ'hTE~a鑖| 7ȝ^Z=c$t@4Z 2ƴ/=%kޅ!KkͧB[Rw!3xfIUTT@'0mg%o)G%Vڳ]rwP|U,2u~X>p&&ΎK_n  (" PE;*4+A'LQR*J)) 3õ݀ _@,"af $yIc)Ɛg.9z#Z0rSxHh""bԈK ,b Uղ fhILUCU 3Hh dhyK 0@^39~'kݞ<,c})ʍ sҳ~?[n]:wHbVY*H4 IseDΈZߊƊ즃2^k2H-.)HZJ"CR }W@'Uj[l0#'pO3V> EKjϏ`=(';èy+v}5rJM᠍6uUnFp~;ɟj04KrIVnoyDnar.vܔ XNhbuC.êU/Wacs~G5ka2lGp4E5a'gF4?ո*-ԭG9 ipsQQQ`9Sse.U q777Ǧ- 8IJj /qȣQٔ 8`~!A^W⠏F<UFº;p895kz[Fy2|.\8g0örun˭5A,_̍y6ڹ4bfgc1b`(<.p͍jռjP.ss:2`5q&8cƲ&f9a2V sl؎pN1aG5@5@5r^j&XMp-~u:`ȧs6<~U;?A>>Qi&<,rN gk>}w(|u a3q?/'8ܒ)c85'Q7򄜓sr6-(| .D^S=T<m3硞}lyۨy&l&y"=,z78aºu q(O|y^Wma*wWtPu^{nnc1S3lXPwri.b=ȃPa;&Fnfâ9y|̳\X㸗b-_.f X\.f(Eu Ml8h⸟꣞ajSü 'm,'+XwK,N;+ !bjV[lyi.ͥ8L<1yBlB6lXubKK7o7b'&fu STmްby nb3f\>j[i8ΣU7זӨ"obS$rw~|| l)VMXs]\P 1_VoaQG\Un彨ic5sT9c7nդ|||*Ⰳz8⤋.iag-6Ӽ+o/`9B5f b^;a;)8ve 6V3rur{IyTrn9m<:V|"7<>8yX!:Ʀ ،sn./U%o X`v`Bșb7Ϡjr,zމj¢E; up0fb1AǪrVĢ 6 T.7tQ>V],XsvH֍܈6In㰋.Xwr-9(A5KlpVN-||6[F2oŹ8x.l'Xjo\gsy^VM#1.1yyr_>6fN.{װ饋u <mF8좚ja7²(/E5U wnฏj )V$凱`3$漱|8-56c=u<>ܻ/qXͱn96^Vvg_q<ȃPMW؟d4a9r_NdsT}Nqz p4z <,h`=Ǻ{jyyDB=Ŧk3ɤs>imTdY#>z4< NZXwrN.zM6lymV3ϊecɳ&>spQ;g⸋.`-[[FK3?m\Tfgyb^]>Fc.ֳQ~GT\ ,8be/?a9cOPʧ܀E'êU~^6Sts&MsA~#z3j|a9yb~%/:Tʗ M7b6Vsu|}Խ<8OĪͨj?n=sMT=TmPw_?!׸וE9E:~'3pC8zYܞ/8~a9?O ֓փ<4Q U ^N^ը܅eM+,FAzZVXc3A v.a3A,]&v˝GyJ./b_qz8WV;:y 3.;V}fyygVn0،y ]9Ʒ8Y}FcSPf9+gc5-cqwa5 'Z8cƪ)1Xwa=,jZJ.%Gc3æ*WsV~|'giqmyZӍF:V/a]l93%XpƦMv^YyLi:P&8hyo^ cVX ȼ!g__/&ݼ ըr3v}q !?m'{s^~AI'\j9iϙN~;/`ª/`5I!{e~sYb]jS}%F͙؟b ܈j!V]X4>XO]v\[ӹ0p+bUC9^{=l؟bZ۰jXw9XN%tּ6A~1|9?V>\>۸X6pCb 6Q~]$հ6IY،Qr~sq.Ź܅jj4발R弜pfVc#a7a<91Yp QQQQQ77pj& 9#g`)ncTNuQOq7g:Xw<u?/n8j⨉8ʹqy$$X(TrX?|c<6oƶQ^_A=CbƦVܜs3VT<uwqs<ü$FG#sv Pqyi+)Lra.@5}Q yMn4oroM`9rRG,gXX,{Zu Vދ;Ml's66 ,%kQQlgi٢c¶M8o۱kᨙy}^ySޔ7aE5y7]lXv˩yH9U'Xϱkaƺ;icCМ].X4lu9i)XobͫR]؟摨&<<;PQsEӼ&g6qĢ&y`18c7ɍezz nxzz8gQ5\=_bϳc6A^XR>_>M sϱiX <6PrY.͛pM4s<9s]p<ykfhUcA7̰梼IɍyV3̱-܊]F-(6<NVC`EKjc=Ƀ#Xncqcz|V9y4na,oĺY:o+<7͏1ĺr[+j9g`ĪU?3,y1l!7`=se.vrO9r697,(GQpmشa9r1#,f)7a;)M,yF&y18JC5{FXQObE=²|9*.Ϲ97-yb?-p_ϯh۱!؛be'~qU+ `P7jaͽ_<Z>S>S>S>fYfXtmc7<>N8iँF3?)v]usVnDzba.A)2m1FfuYNMYnzPsvj*yB.Qq2.,,ĺr=]x2,:yt8pn^e#cr[ޙ|<y3l /V\~9ƺi)y8))e?n4<y8ja5-+T-,#,ڹ)X< ̰aoIq+X6oq8Ʈg{]uBT3,yZ>V}lZv&廨GOhc΃8yTn9ky]9]U9l;Xui,'u`7ºX N`7Ź|/wB۸m cԍ\Y^eU;a5ϻm8ajm;/K*,9+%7~,K]u7'XsE}Pup8Ea#,uJe^>K^t+s c=)3,f3)7xV>e ]ƲVmgUރ]Af1N8l|7b5Ūf~=䡹.ԭ򱼺ܝyc9έ؛üVvC^nfwng؟b;²h|J-~Z$a9Ԝ Rp=! :'I$p% Nٙ;ݙ%ZԼt']IsutJ^ҵt%Jҽte XWK\ +W&$psJLI`}~Y_tH`/>Z(]+kt?*ݏJ@ϒ}t IU5&}%p6^ %t,t%ޒƥo+Ut.ݷKa LI`~X#ݿW> IwMH$:+ .|ZJpD#/{_WIp k$x$xM;H{-$tΖ:[BHw$4KB$7CzvW}$4_BI m*M 5Az#gHzԤ9ABwKsn%t\'[H")IOF_IRzv~tIOtIs7 )% $ԒPKBiEz|.?%LBˤgHzϑnJz3-w.%һRz#\+Ε mHOZ"K }Bz%-OJ2 ]&I* -_%WPBH$;IN:UB7H߷,%ZB%Zz?cK Mn*}Iҷ%4,}!{L~*{$JS $TPKB;IR o(H3OzPDΔޣ%#WHx-]&$T)'K_C‹M]-FkH;#}XE$ _( 6}X$|#ᒄw]{->Z~&w%X‹%X.$ϑpBgHbKޜ]&ᗥ:]G~_&}H8%$7;A^ XוBnU*}/I ^_H#H>RGJ [__J?&sfL3>XJx]{M$c-KSFo_OE~S.wWd` \$_I_$' / ?){NJK2p! \$$$Tַd"P?ҿj_!Ih Wk(I52p | I~27*^u!IXOGlҿL/H'_K2 #;e./ 2x |"2_92xO2p l$*Z_[dXW"eNls2xD6~%rD!2D֐2DWX"oI-l/CgId !CoI24!C$L$D^I24O<IY&eh ͑9yH"9XИ <X?HDO2HD"!2 -%rD*%Dwȵ R|"CehD>-]$K .цD#%zDJw (%zD^}FE$#%zhD$Dז$'CJt Z{K dJ^O%fKK-'[( }$C^bPI֓=XbKd%ЀĶr'e2 )e{NPJI C *ѭ%[)$ U%[!%zDoXRb$W$D $@bSbCRJEHlZ;K!+HOWH ^!Ѭ o$ѬDXE>VHY$zޔc{[bod- H=e4ĖK#M$vw$vv>2 J~[bK(~]ߖ e8-WexTqᨌl& +M~Mb+$Lߖp^/e@+#;s22Oexk"#Ja^(exWJ)^(#2TFJ%}({N2 ){2Tdd<.2| /7du2ܖed .w?e$-#c2'#E鑑H|k~Ck2Red;NpJHZsCF2XpKF&d-JS?D?$ϗ eh"#>2r+_R9W2TFJ7$ H\byFF2rߗxD]2KC%I1Ć2rtK<#5$Ŀ I%#+$ߓ,$M%$vxSK|I+$$_!%I|GHhI,%~O?V%$JXGے8[?ď$~$.ՒK?[!IHb\]*I'x\Hs.%I<"$xQ=$JKI)%$ϖ䖒/H)/VRHr$+$y$\I&)IA'Hb}Id$$eX[oJbI^!3$y$'$9!oKMIΗrI"$mI<-$֔ą[JjoI/+%$?xNR[HfINKr$ϔcx^WHj-IӒHH$ Y38K;Kr6IJ[R$YD֒%yI"-ɵ$NԹBHrI].%Z%DTs%ԁ-(٫%{dlCސkHI_ Kn;'%dgd{FrKzdwelF%w62%cKv/Β,Β/%6>'e./%)ce"Ւ䮔]WrӒw%dܯ$I."Jn])%{’]KrIn3SHT~Kߒ%we%{侔ܗ[r1/I%ٖ䂒\KZ=&c%ܿ%K G$$זK]&cJ:_(^Hvd!KvTlDI~ɟخs#w%d&٢䞕lVJX'oH5$콒d֒?O-XK6.%cNr %DrK$o^'I!Od$֔$%nlXa$5$%yJrKnB/In^R8]Kas)l.-OJ>)[K~aFr7I2ɽ'%SºZrK'1{B H.'[oIn'~,%n^@ {Ia_),),),WJZ),%nRE WI:SKz_$URN?}?C]'yRJf,%+ߓ{OI=)*)k$|SRǒoJ(1)^)%ߔ>+H,RK _K)n!5xf8r)J HKq})n(+x|IJqK)n)R;V%RFKD 7JD)$äpR|S WKqR|O J!$RBߒ[2]w3R,Hq)%ŨVIa?S_J(nBJexOK)<#ņ_(GHaDƯe)ΒR_J!)ň$e|x"F2Ku/֪F2~b) gR)VxO2+W,ŇxL'5)%2Ll!KB&6j(~Yģ2M)6xL(2->_&~ DY/rxA#e4?\&>dbMxHƿdE?I&db@&d<A&NdJxCbGƣ2єes)],5)m&d2Ll&ĴnRZ, eb _!=;)'dRK.?R^_\(n${爋|/BXX2l!!$-妔?n)U-)פ\<#Ϥ?!(T#RUK9!erVTN8(No51&ĚT֒ZR@ R9M*HRR^O*ωI1)}RB)&.)壥TBR>VJR^*HRyKJyCn+YR% r%eT;IyJy_ʫRT RFH/RVJfc)&ʠT+/zTURY-寥:[I)RYQ,TWR9N*Ic$K)? TJuW^*KRJߓ!RT*Hr\.CzTOR]K*WR9^ʋ\rDJ9+zTߕgR\oH%"TRTTRAKeT-RyP )%oI_+;vTK <(ՀfK%$czTuR}E*_KY͓jKIR}Z* !SrnJCjjIjgHjRbդz*RMIRTR K5,Ք>RGR]"K5$~TNR_CjR?Aj?RP?O-o$c6FRjLjJP,}vT^RvvԎQR_(S+&HmnzZjK[RuRNARR/H Hr_.k?$DjwJN-er-U2yԔdr=K#\K&oVRJ)gerL-drwM_K5C&H}ԟ?2LR_Sk*#5>[&;;}.륾7drL>+AO&WJPJ2]邴ҾQ?liϖwLOI{?i.SڇKYi*/OJ{iǥ;i_" i=)'ut֕Y_ZjI[Z i&'KkL?%nPZ{HgW|G:H'5_:?VYZ;H{MiU=KZE$3_:I>i$q&i,ҹN:I_ZK{[i/ΝY!'tNλyD:KstaҾW̮wKxtzefg<" i?(Io>G-Eˤ]ӔHNH 흥]ο}%I]GfiY!iH&;'.Kgk鬔J%9Z:HJA)i*Seql)dn9GLfda@fs\fJ2s̬Ts̴tfI y}A:>y-y#l)g|"_SNDfKg̑ΠtjAVϊ˷٦rmP 5Mn眿o8" !E_ tON4LǕ l2c(Mv߭8 UTZ“ $ )b0wNT3_/?o u;a@w [L*-˄7*|9MHBA2^h`sI|zW&=]F3-wˈy>3on).h7U kj e%7:Xtؿ4u4nٖΘZ qi/Yiɣc / ]ai9&5 m ֣N[dQ ҦqA)xVhL]E d1hVrO)~uѷZ%; j/f VJZ.Qڗhl[ ᗬ'_b_b70m\[eD0MF]$|ܘU\ KϱьU,P{@N JK[V"(`"~&G(]N90ƕ,L K @MXz!xqp+b1-,9Ց#ar>{@>uZsZB,DQ3mɗ БI ^YcmYpZwpWiĝ+(絮ѭ| -'f ׾ 鬢߿],HB>&ץ0rsC5`\AJ#o҈6jxDdnӳ[a(pA߈B>ͼޢ=mmNnuumv*;CyA ((ؘB ܺp,+{ AӇM]n 2E*ƾ-t6A֧:BĆӮX3|]`0qAϚ#F:0 z[k'\XclyNN|'̀㑻Ec^YLoE,a=9(hƗBȜJp~!6nvVe_ő JF8'Yhnd(ÜMD YeƣGZ9:λ'MWn* ݄NC ž}=j{%o$,3_|>_glRN[18%- *!!Z#\olʇDN#ECOt{9-յkZU'w8:[@( arV9 `|6f>N{w{9{u1Lu1 u:2VbJպtBʅaU:C)1=(}hE^νj=L|랸 (Yl&޺&ܺ:2*b[ G0=yL?1i/L/BQho5C>&ιp"v<'JR7(ۇzbica͆W& `"JŦFc]LsN^Q. S.Ff'nZg=ҼL0K:}Tb&(MJ6jաE\ 8wqLx ?L<}_`{PEׅ~L>xLJֺxO; `OFK `⇽iߙ>qj`kQ5W( ɔ-5ge %'A,o]l׺YDk}/ `i:2\&҄RH$@8m ٵQp/6l] b Ċ3;' &`.˧׭m0p1 /0qy{˷od?xA.^o7>Y&҄:2+ `RRNeF1W+ŀ@b@i+Z7u|W #SFw/Q2].#RкккYX.v?C6j))'ސB^9k%.} "b*+!J4X ŌX m- QD (BY^U>RDÕgY(*C㪜Ν]jZS/nOX7+┲+AcPz6]rʡx# |L%պ`?s,d7\P3YQQ⡰:r2?qY~ZE]bJ!0(ESGecCC# (2nLJXU=pBd͵ഉb@qcM^  |9l}iE0PIOc_[yooCWD\CuhkX$"b@Y.5}~/i$0ԑi8J$lGX.t!}fHraM~6LﰬKDYYM ` EQ| ..4oƭ0vw\,bhOLQ9v&NRn `Y -%k]L9:2eqX~4u1 ude1[~L<ߺ`υ:2%7?#/^xC10++ c.ܖul.\W2e~UO&⃍ @~ͺH5$}̷d>\#8wW<L|:A_.Fd+&Nv˥/&lO(Yc[ZҼLWy ud:2E9{ Y"RXL[#{$"V3VNԕ#S$I.&>8:2}u1ԑi"J0P00q61`OSG#4OP7I! x%KsVBSW#0ŀŀ; ʱ:IȦ #SG/_Gl0gSovV45QZ߹`h6,ʪе]=Y5ŀ (D\ ؼ&W oI/&`1.zyk^4_|L-&EDreTã]lUl'ucf<{+!bXoū\QQ <:u*Y7gV ­! { 7] sb@I!S\l^$!V\ ķ/..LGpiȴu1u1~.ey_ `SGbteo\K@  (t<.?J}`-FG9d|龳u6ཕ0)"&˦&.FvBӜO eVȔ,%%k] 8d%u4}wjPDL={V] h] Ho Qؓ2 UbxaX>涋 `닿(w YpT㰷&&4S(Ǣ֮ F12%+{(Ǿ|`Fx8XY3ʠ#UÚu1n'O>:2,&rlJ:2e*w{d'#ӟ75{X{jٛ׺&:2M `hGɮ xz&&΅Rt1}_.4KILݗ(xg4okJ}}_ 7xQ]bsK3gv]>E9:2%K>ܿԑib@Tb&/ðfYLL*?T_LSG?lLSGS]S.g] 嘒y8:2ʉ0ΡdW#&r>_ga(dJG"W=zmz_O'ν=^%[ efW] ]|MX@l%u16^JWyK[L΄mdF#ԑX}^Z^ LiRGi&>sj<\ Hs,udzg udںKqIwsG/o[!eb4_1pZ㿮Q#0qRGi `(, Gnߡd?(YJW_r1N*z;#_x!o?XtC2M{Np'9:2LYI+J+J!B7g57sD"POo{CEZ&ՅLӿ[#[ =q/]jO4oLU:2Ez1/f8,x , %k] NΌFj l-M&bغ񽶎RxW4N]82=,z6 i]mƣŀԑyu1 `(4liu' dJL0#\ sUQ͂Okk<20]d6LcxΞ wVf@s*+L|oփq,3qy4_~uB˽L0#л3ub@#&~5%KLSG9#Sԥzaԑ1ajl|vLslwG#V7RG;{Ute\%t6(&U}L|^ M7L0s;vIj,B[b@b@:2mx>ud:@<ݼϖɴLu1`zWO~&>]VoLfOh] x:2BSyKef" `⭋7VH)h#Q h] HkZ.Z$Pz\O(&rMv?|^}u1regC] l=*yj8Za_g1 _(iM#5_ӄTe.HgK.* UjogԒ I)J;gFRfLvP^zL`]h؜T|Z_~W_>&4`\ٓUN\qq|eRG~U^esFȱ ٹ@eFaSaXc#ꃰk"/#;Zq#UbŧclQtePЇ #24(3-ڣ\m@꼻W;2Z#!蜰H~#J{Var~3W4&ojU,bjBMX+ȖcRµLTY s|7A1PM|=aD>zďlf/Ť4#= ބ`{@hx72Ɠ"?11.fk-.2dXSx4_]d1*ЯԼZCR H֔2GpUP+b\yƘ|1v|cKf!m<,njR`1'+;w6vc GrUYl62UھEv;kmBz_Sҳʂ]EmHI.2h,0[seS!p gtUvwYU'8hܿ5J|SUϩ"NʼKJ>L"qwIPsWF^{]*t h`3,U[]^M^=xv@ ;8R ^_Gi@b(=/ eSհ"ss‷}mLu><W!!df4k^R䛚9-(ͪr)xࢇDo?F1r!$ sV TNˬ4 KEOFOcKfreebayes-1.3.6/test/tiny/NA12878.chr22.tiny.giab.vcf000066400000000000000000000376631417247743000216720ustar00rootroot00000000000000##fileformat=VCFv4.1 ##FILTER= ##FORMAT= ##FORMAT= ##FORMAT= ##FORMAT= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= 20 for a genotype different from the called genotype"> ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= ##INFO= 20 for the called genotype"> ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##contig= ##fileDate=20130719 ##phasing=none ##reference=human_g1k_v37.fasta ##variants_justified=left ##INFO= ##INFO= #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NA12878 q 186 . T C 11488 PASS DPSum=824;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=353,0,389;PLCG=698,0,750;PLHSWG=1303,0,1514;PLILL250=694,0,744;PLILLCLIA=1984,0,1727;PLILLWG=652,0,578;PLIllPCRFree=749,0,1617;PLNCIIonWG=67,0,116;PLPlatGen=4041,0,4291;PLXIll=515,0,763;PLXPSolWGLS=432,0,608;PLminsum=11488;PLminsumOverDP=13.94;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=11;allalts=C;datasetcalls=11;geno=2;genoMapGood=11;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:824:11488:11488,0,13097 q 1008 . C T 6462 PASS DPSum=569;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=112,0,152;PLCG=471,0,330;PLHSWG=579,0,778;PLILL250=335,0,178;PLILLCLIA=1013,0,1657;PLILLWG=173,0,294;PLIllPCRFree=781,0,698;PLPlatGen=2598,0,2675;PLXIll=303,0,376;PLXPSolWGLS=97,0,57;PLminsum=6462;PLminsumOverDP=11.36;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=10;allalts=T;datasetcalls=10;geno=2;genoMapGood=10;platformbias=none;platformnames=ill,454,sol,cg;platforms=4;varType=SNP GT:DP:GQ:PL 0/1:569:6462:6462,0,7195 q 1817 . G A 3061 PASS DPSum=361;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=98,0,24;PLCG=125,0,138;PLHSWG=164,0,80;PLILL250=325,0,792;PLILLCLIA=316,0,212;PLILLWG=65,0,27;PLIllPCRFree=546,0,489;PLPlatGen=1422,0,2430;PLminsum=3061;PLminsumOverDP=8.48;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=8;allalts=A;datasetcalls=8;geno=2;genoMapGood=8;platformbias=none;platformnames=ill,454,cg;platforms=3;varType=SNP GT:DP:GQ:PL 0/1:361:3061:3061,0,4192 q 1820 . C T 3594 PASS DPSum=358;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=97,0,20;PLCG=140,0,160;PLHSWG=165,0,106;PLILL250=332,0,821;PLILLCLIA=317,0,191;PLILLWG=63,0,62;PLIllPCRFree=695,0,582;PLPlatGen=1785,0,2767;PLminsum=3594;PLminsumOverDP=10.04;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=7;allalts=T;datasetcalls=8;geno=2;genoMapGood=7;platformbias=none;platformnames=ill,cg;platforms=2;varType=SNP GT:DP:GQ:PL 0/1:358:3594:3594,0,4709 q 1917 . A G 5718 PASS DPSum=430;HRun=0;HapNoVar=0;NoPLTot=0;PLCG=175,0,339;PLHSWG=231,0,186;PLILL250=450,0,787;PLILLCLIA=697,0,510;PLILLWG=76,0,179;PLIllPCRFree=776,0,547;PLNCIIonWG=44,0,22;PLPlatGen=3171,0,2815;PLXIll=98,0,94;PLminsum=5479;PLminsumOverDP=12.74;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=9;allalts=G;datasetcalls=9;geno=2;genoMapGood=9;platformbias=none;platformnames=ill,cg,ion;platforms=3;varType=SNP GT:DP:GQ:PL 0/1:430:5479:5718,0,5479 q 4449 . G A 11413 PASS DPSum=725;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=242,0,405;PLCG=685,0,483;PLHSWG=1176,0,998;PLILL250=967,0,487;PLILLCLIA=956,0,1221;PLILLWG=615,0,542;PLIllPCRFree=1346,0,1143;PLNCIIonWG=1,0,192;PLPlatGen=4726,0,3765;PLXIll=699,0,761;PLminsum=9997;PLminsumOverDP=13.79;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=9;allalts=A;datasetcalls=10;geno=2;genoMapGood=9;platformbias=none;platformnames=ill,454,cg;platforms=3;varType=SNP GT:DP:GQ:PL 0/1:725:9997:11413,0,9997 q 5009 . C T 8517 PASS DPSum=639;HRun=0;HapNoVar=0;NoPLTot=0;PL454WG=205,0,204;PLCG=744,0,686;PLHSWG=932,0,971;PLILL250=315,0,370;PLILLCLIA=774,0,943;PLILLWG=273,0,298;PLIllPCRFree=878,0,1020;PLNCIIonWG=28,0,82;PLPlatGen=3611,0,4445;PLXIll=567,0,492;PLXPSolWGLS=190,0,302;PLminsum=8517;PLminsumOverDP=13.33;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=11;allalts=T;datasetcalls=11;geno=2;genoMapGood=11;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:639:8517:8517,0,9813 q 6418 . G A 9700 PASS DPSum=777;HRun=1;HapNoVar=0;NoPLTot=0;PL454WG=117,0,141;PLCG=519,0,688;PLHSWG=1193,0,1365;PLILL250=760,0,399;PLILLCLIA=1473,0,1473;PLILLWG=477,0,680;PLIllPCRFree=743,0,1372;PLPlatGen=3923,0,3639;PLXIll=382,0,826;PLXPSolWGLS=113,0,198;PLminsum=9700;PLminsumOverDP=12.48;RPA=16,17;RU=A;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=10;allalts=A;datasetcalls=10;geno=2;genoMapGood=10;platformbias=none;platformnames=ill,454,sol,cg;platforms=4;varType=SNP GT:DP:GQ:PL 0/1:777:9700:9700,0,10781 q 8846 . T C 9797 PASS DPSum=727;HRun=1;HapNoVar=0;NoPLTot=0;PLCG=470,0,525;PLHSWG=1228,0,1675;PLILL250=516,0,649;PLILLCLIA=1506,0,1304;PLILLWG=541,0,453;PLIllPCRFree=1022,0,801;PLNCIIonWG=36,0,132;PLPlatGen=3724,0,4719;PLXIll=623,0,669;PLXPSolWGLS=131,0,408;PLminsum=9797;PLminsumOverDP=13.48;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=10;allalts=C;datasetcalls=10;geno=2;genoMapGood=10;platformbias=none;platformnames=ill,sol,cg,ion;platforms=4;varType=SNP GT:DP:GQ:PL 0/1:727:9797:9797,0,11335 q 9791 . A C 10272 PASS DPSum=777;HRun=1;HapNoVar=0;NoPLTot=0;PL454WG=239,0,213;PLCG=839,0,825;PLHSWG=1051,0,1286;PLILL250=337,0,490;PLILLCLIA=1591,0,1298;PLILLWG=458,0,844;PLIllPCRFree=716,0,1064;PLNCIIonWG=254,0,57;PLPlatGen=3778,0,4302;PLXIll=513,0,812;PLXPSolWGLS=496,0,558;PLminsum=10272;PLminsumOverDP=13.22;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=11;allalts=C;datasetcalls=11;geno=2;genoMapGood=11;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:777:10272:10272,0,11749 q 10532 . C A 8913 PASS DPSum=705;HRun=2;HapNoVar=0;NoPLTot=0;PLCG=653,0,743;PLHSWG=1626,0,1610;PLILL250=501,0,624;PLILLCLIA=896,0,1250;PLILLWG=320,0,420;PLIllPCRFree=908,0,1146;PLPlatGen=3625,0,4125;PLXIll=384,0,581;PLminsum=8913;PLminsumOverDP=12.64;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=8;allalts=A;datasetcalls=8;geno=2;genoMapGood=8;platformbias=none;platformnames=ill,cg;platforms=2;varType=SNP GT:DP:GQ:PL 0/1:705:8913:8913,0,10499 q 11261 . T C 9848 PASS DPSum=709;HRun=1;HapNoVar=0;NoPLTot=0;PL454WG=106,0,86;PLCG=471,0,482;PLHSWG=1029,0,914;PLILL250=632,0,656;PLILLCLIA=1189,0,1776;PLILLWG=315,0,760;PLIllPCRFree=987,0,701;PLNCIIonWG=91,0,94;PLPlatGen=4150,0,4008;PLXIll=829,0,904;PLXPSolWGLS=49,0,135;PLminsum=9848;PLminsumOverDP=13.89;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=11;allalts=C;datasetcalls=11;geno=2;genoMapGood=11;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:709:9848:9848,0,10516 q 11536 . T C 11666 PASS DPSum=841;HRun=1;HapNoVar=0;NoPLTot=0;PL454WG=172,0,410;PLCG=652,0,960;PLHSWEx=31,0,32;PLHSWG=1156,0,1240;PLILL250=818,0,685;PLILLCLIA=1490,0,1870;PLILLWG=807,0,626;PLIllPCRFree=1042,0,1136;PLNCIIonWG=303,0,116;PLPlatGen=4105,0,3971;PLXIll=795,0,850;PLXPSolWGLS=295,0,414;PLminsum=11666;PLminsumOverDP=13.87;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=12;allalts=C;datasetcalls=12;geno=2;genoMapGood=12;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:841:11666:11666,0,12310 q 12125 . T C 11323 PASS DPSum=806;HRun=1;HapNoVar=0;NoPLTot=0;PL454WG=254,0,312;PLCG=512,0,595;PLHSWG=1073,0,1401;PLILL250=603,0,978;PLILLCLIA=1833,0,1747;PLILLWG=597,0,727;PLIllPCRFree=1219,0,658;PLNCIIonWG=256,0,148;PLPlatGen=4169,0,3563;PLXIll=641,0,783;PLXPSolWGLS=166,0,106;PLminsum=11018;PLminsumOverDP=13.67;TrancheABQDmin2=0;TrancheAlignmin2=0;TrancheMapmin2=0;TrancheSSEmin2=0;YesPLtot=11;allalts=C;datasetcalls=11;geno=2;genoMapGood=11;platformbias=none;platformnames=ill,454,sol,cg,ion;platforms=5;varType=SNP GT:DP:GQ:PL 0/1:806:11018:11323,0,11018 freebayes-1.3.6/test/tiny/NA12878.chr22.tiny.hla.bam000066400000000000000000010607741417247743000215150ustar00rootroot00000000000000BCY}j0`{/X͕vZ)J4fV6Ֆc+ v/dϑeEϧYޝ볳f1Ͳz1kIe3bt" ?wg\ROdd! d ^ h' zvk7@UeRL+e힜eG=d:~|Dn˵a[_yhrrgu#CIթv0ӝH"},jS%Ar;1rQnjr;al?an퇌;rCloWUkCh콡 oŜd7c4|tk! {4:G^v~LEqmdE\e՚%$-S,R픱~sLMA{qYrmJ)  ~!@AK$$;ESR-FD#W!*ԢJGw(Ao39 ?SOI6o&UTm(uv@XGxѩZO(f7wnÈ}ѡRnOI:o-͖66z<;:zsOetLX1qJc.hi:tr)3Z Ⱦ=bd $ۮyksyy8`%(| vw]{$I͡OtL¡LT$R'JHȬ`O sK+_ofTD2[G4!NAHxC|`VA%ilaS6zY|̑i^.ݑolZ4Lӯ()TߔR0)i?o`WJ-x93*X)h%l02lku/{l?jJ{DfzլLQ1 P4cT%K#`<8)$HR )~ ad#%2ņ܍du HFDtl;ݬeUgs.ꏖ!VOaKXAՁGJt|n嗡_w6 r.iմ"QwD`*Fsѧ *== T6WFB//,^B[@Dٷ š!Q$xCZ4J^E 4JZg iz|5P|+Q{Wjt4e>3"\_\`@Lݱ/!Ò?3,wؓRRh+IL0tOĨ 3w1jV+PkYGL{z (tA6`dg5y?wENc:ՀZY](uZ 2枞rIǔYǠ3kTy̠鵡 > 8h$!9r[B8 ;40--V֚6rO:'"%+nH,<`WݫE'71u1oSiբ}s%Xt^C}yK$j]ɜIfv e5ql\ 9?Ing6Uѩb<5r <ɤw\[~cBUzP;[.Q6[,T6{( )F:EIapr R 2 LIIS]Qg3$kL2)$ G/={Y;U2oexع?jTiTEWu@hZCdm.Bڅvq52\Oܫ3nşA0/7'.qZ ) ;9Wx*[3bʹ@- Ys%-08\}/~Q5Tc+xzW)uT,y<-\oe  Vޕ-˄D9ȳAM4A?IV U 98pCp%\Eta ^["aRuJT0U9f]JUobI o˧Tw2cBGd{?Z{nRv mP\`-SS +$Y}-y`?K$AZKOSSnxQx"YmJsy?-Q# aK^l^UasX'E0&PM18VGf}o9]?yte#FK jaʛDj4;‹J°x-ECKYJKHm(=2N)_RһLTHxֶUB^{mUnZ^wrZ2Ք2xB9o>no%RA4#RF%f텹 ҪnAD55+E-l̈a4eN?l]w,BBaHq"wF6[o{E FrIVr #zu'i?4AMmGBKULL j:ͷJ@kjg KP7@}4Abu$L]a# eRN ^f:q"mwDwҒm>כz<=:9.K +~$7@u4T/+zMF^\-b&l=43}K_Wʗڄ涎yk*X4r%yЅ._]xA=> RgF- 5֯7 /,GJ%syՒ WEqP!2>\%2j_EL]荚G`T-4b+N;r93e2V}vΔ:fH$j"IP5$CBTKPϺ7˽1I(;*/bP?>`deA؅4jX/HohE6LG1Ձ7m"}*+ߠh>"BHi\J)|Uf+U:vJ|AM5GC&%noI.+ q @qb>pZ/IQM c֦FFV%UC -Rۂrb'VTpʓK! 敤BZwl@[fZ~tDc#?SzINo&YkJCr80dIL4G,#^IHB\1?6_ԛ%qo*MJY- ~ŰT2h!τK3b դ6;Ljam7tvvoM;jR%aY`Ab>Ѳ)&bFEr` jbT&N3cӤODDnWDZ@qh}6t>A7~~yZ[RC$QOI]ϳ8bgOAGRxGP1e]zC4!D !R-POmφټp4{*#HXsLTG_X0h~J)ݎ\.[)1ѼR +?pr2*AE< iAe@LIIH\{J:NuO)_<<@E &Bp] n-SmAx;@R(}Z|UG ]Q%_&/aP 1% C2tpO:{A͈6)/, 1/¹7fzUVHwbe #U%|kϝ˸ ]fw"RFJt+k969k6У']^S3k#ni!2+Wh^ӿ: [q <h/c>xWBa'm#pƕdT0=^vI0T径gtAh?r0U 5]sИ #^i<wg°!VȪΑÈ:+大6TQFg7.qh=-0ʼ;kAgspNWGvbWK-1풑[=<z4KcݲVgVnZq#k k5 ȡb8 ܪa;S)J̡OeӲ >A{OG*Q~[uZ  '\Q~ky%0@]!#- ˆ)֐UQI_JEQ60g]Q)T73T2PiY%U?e $\I} gFtM0 QCouHڧ§xSa) aDP6U'YRzD:X9ۂTcc˳Х}JTDZ֧yu4EDBZ0g`rtT`S̄%J\SקϿjߘ*XKcy++!67<;3C71k(ΌJ"i>t+xX Yh)2@ 0S+j`"Ϲ#$PjԆ>)G?X)Tr֢EYي!\^xCDߎEuu{J=1K1Vc +`@U>wVT =H'-"kdV.lI}.zohl9~r/ZR*(7inޏ4?5Se{`܇W4ԅ-m> +h68IS#hc;ɹ=wφz[{Q RnC{ pQRoL0MRbHq eQvN>:VJ|Eqh?M|A"}NW(ؒBZXyO0Qw^0 FLPE%m @s֞p+ש|~ag.s~ofF\/&mkl5yPI*^{PW[ 2'gYurv/XP,)6SMtc4ĠR4y0䭴8kΦ|VZamN uet */$"uE_j͒8'[G-YmGlUjBnQm깨PEzUQQZ|QD{zc?\߅nBQ^pwGL(w*ӵVi_i^V;ʵK̻tb,r:k:aYN (s5eWUorNgrN /-𵴴kq 0D4ߤʛspr1'2!/M;"HLI 9LM XJNG]NxMA(P_5KU7uZ5NJ`U7xW#3Īl8F.>$6,+:+P33K`.̇WҝB"ljvqU$V(bRLnS(yxv) U.0Ӝ &*$~^6rlɝo6[5j4{HF Î?N9#ٖP+E':Q η'oFNkV6kM8i@,֔kR u6x ,\;$`4Μ!(Jay$<0&K $hTM=zOlt>ig<򗠻}@A T& g қ -v(U0Dr+/Q ;J0 PL#a( āH{9Khم7L6Bu{ Gdr:霜w:IK y!dRGLf\.dJ*roDr[CuEZn@ 2AemcXuBS1@r@4c@pk)SvJE; kK^A RJ|iw4W&׺՜3sL`uk%u =A~7@(DjSxA>mHTj [*.LrGd3G Xƕܴ.0S)t>I*$vW MB/^Gd#͏eoMUEn"o#,8R_gu)Υz^IH!KѱH??`_Rq7Gw=M%9xW& EG NO$I`M ړmUk#є0~KQ@LiWh^j;Tg^nRqb_@"ZTs͋pi$[%dt{y@踵;;OΚzc:n xynsp^fJ 5(j4 '8#Ri:l3RHK º3LNZD҄H+\]pw{uu};PK`Mrk);6O^Wd~BS ҭK KhVri-فO\P&hPʤ VpP]Aڥ"ŲXd\R8d@K)q07RVJQC&y|0w' 2ˮ%x,` P B ^Q8UI7459/[-Pm#bʱ<񜝝0Ő* myHV;dek,DJ"Dwp)'ea*,h:oUj;QwFTI2W[C=nq^s- ⣲jooa-O8۟`GV T] =t-˜Ҷ82e][}os.Gl L}R ](J{*{IC@TꞆ?4O&!LbQ`O$azWSIAud PFqS*XHD6*A3f9W:f{mҤZ[B"GH5^!pWwlpo0hM[Gk9^//-U7`w+1fjz69^pW`i6(KQzyys~ώ;^+THX=[y=[{Du|77"8ܟQũF/.}qv>fgѝր{ hC7wu֬Mܸ{:73 ŰLm=}v9[D6`Jc.R9hMS׎ nim=Jxq#ʱE~!܎gA ( cL\Qםkud.=4[Ae- `AE&`{( E#*YY2o4[G~I\J[8ƴdCmmOEyV>y"(TnB#JqV|8uzү{FVaL!  ; [&1ЭI]xRR| 54m寖w*\ Vu!ymє4Q<9|8ԇEhv&MQ*AO8Qo;[)~hvY!o֟?ҶN9pY0 `+E! <E(g֬7&IQ7?ixÕ_p[rV2B)yyJ+Or? _/ ִ'[GS\)91qJBk?}Hg!UZZfwl4#'IγʷbM×b^QDGS,P R|%MZA hvzȦϊsٰg1]C=7|≍:1¾d5HqH`(:+жWyE8gX(ULؙs_$MG%E9x *vl'^vmU)|js-Qt\>ٯaXb7)Tk*i;LǶYXMEKm#RL1 e6$^iY$">RQ[ mDYk'z-#KF=FtOD}Dz%JrV?%D S3 D#nUgX;8hW lK.O(FJ;pk3A?#}Ϗ&Q#sGoiO0&1f@V y M;ksSiwB6(V=i##0E ^dHm%nh>NԘ[IQ B )q,A)t;URygqP6oc׸&GNq&1:[>hma¿AQT\j H# =:#<{M}#{ ԗ1(ڱQeuלmx%+sJ)VL6\pc)I%[u-)^*ܩI-W_j4tmƐ HaSeN&A^;eƯj&uVzpAs̷`U#<*ވ_rVI]wr W\#7^TLy6W4,!ɗFKW:M+!+`ʖn lĕ*pFu~=zAȜR{B?5дIяF 'dgYx 4K1Y:[Yj,ٰOkS-f9Ey6-XbӃKk|5 x`%(WR~͌i=*3ZҲ~h3:);>,VIp3 I9jN85=Z3VOi6_ԍp-Yä a)[Ԝ,E߃aJqa@j)$N=d. vjW{aG4jGQ5oS ٥|~ MӬ5ɳY}:=js,ўТ>$ j`#MN:#(.m;5bs9>6R1>Y`UXQWqKW5jS_7/rdt ##d)jV;,T0|{&ASd7ő\9UOL GVk((W|\^^Q&a=C1fN Lϐ* > !vݦ JS*ln uhn S_m=Ȫ]Kŕ[P&=^ZM=+M/$GR;D r] _L2ҏ1JUIghF>UV:.Z&H^)MPq=d%Hr7 ) F86y$M=Ys>׋=֝ Nw@zC14p Et> 1k%ЊrP_K0 CR @ lf'w~ sx 3Aq7%K#7ץ"ø*kኵ;7{Yl>;DgG8TIJq%P%S&g0+(qCBsiS"-[o'݈~׌nwȋڜ<{lO(iގ?[r.KymI%9e7xaלy/gVY^oj `)֛hg=h(fV*ts$)а:trNUӦ#BQ(l\>&y0|紡"IKKHicʉv].TRʦG=g69*oŠ(M@pb#ᒪnbM)JI;Foє*ժLB*Igۿ Ҫ8| U@Vr%vnR9NjikH- jvy0Ru}mB~y=%oo}JÞEa5n*r# MB>l@q)ߴރ 4vq,>]7GO<]>͈JgD>j-Z.8|G8ڣ[}U/'w^t#w;drދQd ӨJ(HS!z΋XJ!P)8,#a,8gG"B^9:u^84u$_$ԥܜ$AC *~$3yzJ8 BSDOeYs?Rz# hfgysz ¶o4Ig5<=+nv [8/:34zyir* ㇍L Fگ}!U.hs9v^dWDϮ.m,Zcj^%}=?SLAX%'AXP(7 [OӔwRLvyM(lREQ2TCֱ~vIk*nM7 nim6{"^wEהSnߞωpn24m?ojyc-'ɧVKh;60ILp6ݤxGp9LH n`X!%aeLVt8UuQo?qVͱg*허mG}ɀx~R>Cn*t#Q7D|7hpy>(:-/Bu*9Ƹn~ކ(_f+TK>ϴ̉p7F(i엣I~kgV'Z_= 8xQ7rʖ.^iI^ݻ6n>xM3~, TJXīR,䗤U%4Y>큙Ql@ OTfGŹx!lES&*NsrtIW<ql hR;I#_4OvOj샤*y/]eQq3  Lr]d-q؋#i(\c&:(.'uҡMW ܿ,B~ҠƝ ϶&{ W=[\׼U6Yg+I;5˕K Mk< 4,;/\΄擫#T^Q~M+PpDqJ_DM;a5+KߔRyQt>t:Y_H9r/|3 cҷfLZvUʒilZre.U. lIr@)U__ƛ `jQ*bRUhT)TV!Zougߣ'ܑA#ͼd+Y[4g JWkZg/0b`cEdlKO Uݷr5#64'Bm9:|=j.c[gul5ؓ4Pa| jZʛ$Mq ΛPZE ) AL f[%[4i䘻~:揓*v"bRl~S%1}ht@\إ(bw0-JD8'~ѩʷҍ+_ov7ٯ|#Gۇ?xZ2Yq &5$is>wS4Z2Z̛ Z4Zcjj|:5jIk0t&YySهp]tvׇEWvʋ_4I{|tv~7-~V^hӀW~޿^f簇h̹sp]gM#xj-`9#g 4V‡k'x6:_Up|xd1B4:g' 6<~{o+z>p2YiѪ5b2q|ڬ7sqLjAmꍹsz-iԽt4"67(&_PD~D6_QZt? i)`eJTghc'K_ /(->6uKv~r8lC(qOI?<*]A_̋s\(%r|Nsr}EJ!ŠvciFȁt-=_U[o[M U˦{xW)s/"G=Ѹ}Nrzi%J)+V@\ 4I&F2]4P' l3Ofs1MWdeIհ:-\ GN"'R_{4QAi)X"R| WK gΝQ?_(@Sq ^a\QLFcHW *ZmRy1iDa͙G٘k;33d6]Eb A건UEھ_36=aE7q@As[\h\da3qCѨh}=VʿH>? 07:/=AYY #U` f;CZ6 []-@7<cZw'ۻv:~Tu^(YDv-N=g\Ȟv6/XA6#ːj{dS >K`VoB8Io@m&>c4MͣR9Tzp ߎg1V`Il!5ڒ?b4Ÿ*w<րf2t*cS Ć/F8-5@4i3OGJ`%A~{v0u:{iEa}x_8xSa}ra=ku@ADxVv#|~ #d1dɂE@F O((>oDUUEj6ZPiO-?vŏg7Gc47>];++ ڒ{zXrg7j d3$ʲ{9ɪ<å,V,G\긛_zhMAlTw(0̖olO!L O0t}e!P15~]6RjՌG3h~G/JUJ˿Ԃ=Mb>ly&YlKض:+؋]"(N48׈Z>aU!_o i?!$@wI0u&ЂqRkG:4& FHiᡋ)GA",Ml5؜ZAy^~\J2vW`NBiX:vIaAgOV敬s%Fl Wf.B ( FGFTPʶB+Ьwjr<ڐ7çL6>7U`տٯzr..\͹t:6Lmʢ9^K\ z15 l@NKGrzYAm&&_A h!T |UKH )=XE0i5(}e| ' 8Ѝ+P.=cSsXe fD3! Ik!o1RK)X@E7as4*ס/a\1cF),6A?B &V `(Ra]N`XyNnK6G^oR&8v[-r Fw^c-C|F1$X*J (QDMu@} .iT>7<`Z3ibc D^5R8O UՇtqo(w)ӄ\)RJ& ByUD*1{F]C3;㤓&Xw6E/f}>?\.'W?LhV:~')Ӽ %YbQPȿ^`pWLvɐ-ԃA]lRQIW!mϴ3u 942T#2TKV:І䗥ec tT*tL"bCTX7Q$4}yPg^Bq3б^l/^\0XuQ:TTY)/(=wYiϕW[BglBc: TQB(Ue >%wK"ϔlRFȗV>wy.ҧ߿c/rJnKъkzs?eB2s9&5Y]{fR|@FvqE}^TV=6E5|c̝^99#1SNqWk"@r{ 2:Fs&X|Nьܗv(љˈXRB(hZ(LTcѵN謿 {^J?~j/*gJ#ւNlXd+׼ZP Cil{Q_XO}«ҧơ) `fkK0a=H@HbZ'u1**THO̗)9})TǡDKiZ$v7RW W\H^ZD(R$"PU3DT@ fi RuBiXFCE5_,2*7*ش]MHPY i\H;LJ'dgn6qΣ/՞͢|Zb,`l9*OJ2k w/4I,{Ȼ`N hRN.1/UO`I#-Vn^QϹ?AOI/;Cp q{u>b?wMZ0֧<,Et<_ ZT NJ:"Z9+ՐH1JsZ(f:`]rUx22K`ylXQ!Ky^~?V*ͻZwuY OEͫEf203 ´&+ {*vS,Cw5")),zpzET#,שFqvfFFqo0-p+[T)۵k^>,1'%ɠ Q,O凘))H)uж VX8 a34"0Qa6`Ƽ%R^^ xwk :޸K:nrFxcXjr> 9Z8٘;OF i}X[i,R0IQ4k[p0& :Yd ;xw :uHiϾ 0+K~ 3@|Z/BJuA eU(jC?g.o lj(at@cCIcC"*%=NZ=57* ݻnr~~wk#ēz+x/U"VEIEeS\n8!Lrmj|}tq Íg 7"уV*^/Jd:$W$|%|V VCk؆0Iv}}W~'9x-Pn1X-Y٩$l|PJD@G j_(F7j<Ac0IQx>INκZkcz@H`"1a8:Nq{?0 Eĺ lh1CH300I%Rv`~ƕ?,]\2w2oAky|p~9 NLXrl|#Ng[kDe>2@%#fR9/nN ^ȡ( 2*.#[*4ɠ m}2Rq6hxO %4u`< *p ^WKW<5l‹x13Lgs6JoΪ00SL3]PII=') PnyjԢ:"*y)|(]GUh8>?ik~p'_2v.)XG@4)U<7!ga*mAg-l/jciN# H^ѣ' Q%Fl@ǀQe( ǒI`J%.i\n;+tC7l[ѯdD_.]=RkXgkd ptO 넂R΅eŽG_`Xj$Mtg_نd 胩Ïg b21ǽhzt,΄Z|_z7S^ndק>=?/Ч Mı*L/l }o.9ww \Ԭpw!n#^^x ZV캈"$1%bwhZ&܅XBj`rX.L=Y!KO6 Wu#qv4M<+E343"9wD/cEQ_=sI'J-FČMhlqJ 3KUI!8J;|;/[kÙf<6)jDнZ{}霏J$ 5Y[@QNܲ• 3m^ MyG{vG᰽}w)JBEL)eozP҈I* cQ%/X'o.a+o5T ={Þ:bz HHeQEYTVB'(\D4Ѣ$#2c0EPa`CWʤ󀼨 dr >/z_N*\C}Y'XzZl im%@hvѰRE+k~zAgKỊJx41o/6>Io%'0BYE7Q x5ނ54,z;sxĒQPbAK8%EsIFks%1K7E?ּDW{{ rϞ{I݌ZV<أ$,4c"ԯʭqn]um+rdtxI>SW_zE_nw:Ǐ{L˓>#Gv瑣< Zq2&~Lqh1F -! 6\xga< ?z~wxrpWX&L-kE֨ ǜDLH|![ˀf&">m<u:g:_(9t^N*{W|D\?[o_mpDHL\+w޳2\m"EXc.vҝA,@ˤ%N9t,4ZA)&uXuWIAEUT̎Qi@{v<<8v@,W X멇n9v 7Z,7uH`%T)ʲb'B[˯CHg 1o-BBIjOwvhus- rJX#8كdDϰTh*#Up*"֣ p.kR%/2#TP|Y0T ˎC-C݀^CVOdc2Z 2os;v=a^bHMd')F:-Ko'N,%jn*c 2h{@t @;Ol?]jLV^<2TѥcVj7T(O>TJ=R~Tv/O-:hiex.|RrcCJGN/*Oqk w֒<9585ro4#q8OqMJIkN}B(yᯬ:a푥j j[e炄_KA)Eroiä3/ǖQIŨQy;0^xȨĝz+p2;07滂+049N)yRey\0ElFi꺄Qk6o_5P,ܷyp\ xɵЎ/NY-nKKmƞY4)2r`V*P^hoűuuy!5XFkH-#QTX~ s :Rp21pMBNk,hQEd[" Lb_|GCKYlKf˨dr_8&b{fdq=Q:vÄv@-NZMJ1 6񣩑 Sފ[D0anȄzu%WظW֫& y +6XnJ쀚HKYcxe%z!J/ Mb+$=κkUK/ @{PYUmx0դfk0쬱FzZ4a*M6):l'Cg]c}>=4eE+X%A#}JM]K}biFr,rrywyzp)zweպTSW(5*p TMPm3Ve^6T6_ogX6W E 4wJ͠Lԡ6BŞzрOCiEESs-<9#X7ʛG󷕢 agRxuʤ^X]$f%V++]ϝ'-E:E)w>ݏ!W]0k?HP-6Gj/RjJRA2Ifs{63IDa!h;Tn홙mGҙ\S:Y6yYLѶdY`^eI ]AO V֬J;b3tITqFeiR6-\|J dۼl!1Y5XڌSb%zދ mvl(Rc d?|72#)/ q5 g( yǸr~u \>q>FqG048Nj)=9^1E핼9aVH3 e^:V.9wfc2hbR䍅#S-o'"D+IG6J_Y+t)c Ԝ#G׏_^cd4GMm "vGuPh޹qSM]XDi%gmS2njr4p2LE޿G]^HM4ޚlK #ɼ"kM ԠAxEÏ)HTVd> o4WqZ] Wy\ pŘXr3>9QA)crmh/):wff F8J}ߵ%-ҳ/)Qc6̮FU!rE}7AC#u,qe[e =h !_\ πqy3εm'y=y~5^V2q-gtءÃ0hy`t#h\d;c({4d꿲5iWqgOl^gm#ts%yRZ{Xj QL>bؕ:KpVmb RlZ2u./`7"xFoK1iђUNܼ~ VV}'} ::I eRU2/XCGAd|2/>'`)\yo><댏∤ $Y<Ν;R3F kd02h_d77geCeڝ 9}Gi$ˆ]stdz;GS%x^b˫`uͭ g (jԡy&}_%*CLJؤ\z`rhz[hD9Z;v@k)fjhYT4)5biNF8їz:ErLr<JM"YBB?1_st{ sԘ;:xl i1 †o 6iMZ>T$ $Y_v'V!)pp)áe6iX'hh{4ќ_MM89EG1 iNxEےb: vSlx#c4 )p-剧6[770(&`~aYj/ :qc'c89ɕҠcR;sbư=|ռ:,/gku+*}Ixd*=J`[6Gl7k^W)ۆi98oX#SZw ӯE Tffho3E 5p[(^?^T/)0S{^wGɚ)bbY"ɦJ , pc{/$Y <|V o; vAR{a0z!p” 2ٛBk]hE}di\QvH7{aq&,P!;43,Ϗ2i_DZ-{iC)HSkZ؜-+,?];G@ |W_ZznSc>$i!$ILT?ڵ[27\S.7% s$= EY 2nnX?ų{4icZʹI{uUd6zld^?̚zm )pVʸiݭ[d7v%&V6Og.5 Ӭ5f^X׮]-5p܈"A&oi"jhĝ BZ5pF`[BؘЄ!O@YFzJn՚M,s1[ܳdCg(EA7"E K' h[YgyfclyU/--W/[N_ȷf2Nq<8|q #ؔ,I4 E' t"bЍ;*48(6'\Ze3A$Va R.CuZcĕ|_ݟ]'Fw6Sdl.FyLxAd֠1ѕ8wVDAZ+=-3KWy cLu<Z@<5x+]ܶxYu> {f/N;?ݬV}S]:%rjկҚע`?XKx w<")+m$"bto)n>DȘZjaY }pä>3MGn\yRH܍l{a'QTjyMeI!RpLӣqԨa% ᖹ@hBT5@@_h 7VN{. sӺ:mvِQKj) S^e8b9lqW'EfD |Oy0>wu"$ě~_)]49\iAEMeuߙMML(*0Y$f ln0/ZF3P;Z.6y4m V4C(+AOf^Nlq;JNp/]7}GezGhh20ͦ` aaL!2d$xl(JP֤|tJ廘B hMLXWajtg$CȎ#dY_x~7ف7ytT^mՇd:_̚7bSlz]b]:?Eژ(e .Hu<@[#sܞ jU)OYTP#5\*dMזװ(ISu6;!#l':)RA^bV.G,Asr:ɩ^wF,܍@@]P* o4U=N#q0È|NVXTe(2 8kMo(XҤw<{c|hw脁G V.Tk3/ jagSE.ٱ7.8sPb l8O @A3崫~C7؅_6:aۢ(z 4t4;|%^Y@4<w6v)D>]Hd[2f<٣Ze3+N0ji3#>$Ra_K~?Z[ndGڤeL/֥@ aI'lVQK(^f"i^Z6*%?O\,c4&LYÓ^d2@ⁱ::-f%V; Dq1ȾҸ4pDD}}/rh>3oROyrjq IP=WP;$W.tad^h̊uh84)(@6ou@e3ȍ+*M1]` :A^Ƽ!9}(Ӷi? hH8^ѕ݆i$cnm=\ SgPKNzgcژz/gl?>'o~ۤ2/>$i&HkQ\[6IF= Ҏs!T,3Y"J\YW.3jtҸs<>wCp.C^<\j=;~mV{)~/`! w T*>њWDv%1)68R6qAY:|&N-`Wqwo~ pu^pLu޵޻}?G3;R L% b$ي oj]ZsY~Ɩk 6p<'j6C4^QHizDM(J&BQI63X I<O9Bᆌ,oey,)f:%Gk.w x%pZx^?[uB@:qB?GC,9eBZXK)7i6jWxCQC ]oΉ(g)qy^:ffxkdH j{FGZm)2PS>W ˜A|m<&!'Mc$,Yp;5Cg~t|qnESYH\euiCb۞c!YwA _xdːXk[^o]6xKڊpIYp3QobC4OdۻLP~n+JUV*pZitz1 ǰ!Ȝb 9r '؇Ŝ3Uю&RYύE)eD).XLU18 0!'@fU#) n|w|||lJ xk!:j4/>,C@D$M*ORD_CJhyY>"Nf혔7y޻ #4nXѺa>ܔᖬ֎F7~HfDLFD#*k_T+[pۻbZ d[ ęEU;]\)qZ$RxM7@q"RAȟxs-֠5JK #bΔejYݳΈ S(}vp6iG]T#gq \f(_V3Wx%R@y?;J{Xf\Lua0lu2{lWέXz#'C5M}FkGfs/WW-Yte<5b qyuRM]ٌ%TǓ u(߆>ӳ\ף=P*:7|KuOd EXVzA8x!=iCuFE L$3SѴ}æpR 6Y=IfDRrp_ާKhYBCD} cYf֮-0}9WClJrI^^41Hi!\`8!Jxţ ^cy.(Sv^E35q6?Ͻ햺hg{WRw?Vg>Tyk7ʗJ?Gߝկt|ࡗoAuO+fR7d15f|8oT|\&ZsFך q2Wa7һpyg1z筏q8kx5" ?FO>}ӿ)8ڥ<TzdE/Hڝ`k^ezc_Ыw?rm磹GhVf>Cmd8Us>MjFC]zWﺎ/ tE X[{lܪ(v1xn}D|;m=ΑbWcI:$\tG i`DFt~[KHG<0qxb"8""~'V{Go#/4#hWzy@y~uJO7ltƓw7!ӳ "viNӨe>.66BP=- GpsBDHZ? lEHx1& .E%nK:-D tK:W2J5wʎPzbV 7e^ΩUfu蕜1ܘi?  n(j"ؐ]HHp_ GR`?HR{=ˆ_Ez 9KAd1BS1.eRAo, bKIrAрfjv> S,acwd2M4Z ȀbmCf{@qGB#䐭&uO Ƣ?-0PKOg)Nz`hwOZ 3N:cTt/_|?M/,Ƹ[rj(y.ۧՎAR BeGe 6dY[ϕl! X-}ܰ7G n,]n/no} D>K5>U&:ncP5N2."omFmODWF ) J1 :((QYq Qr9J`c)j՘4r<1x=7Ǩ"l8P])$'8ᛈTAnQkgݲ6͘?Q0D@mh.h- R>."8'LEA3j[Q0clwgD.-Ko9 }?hMmjSU}w:FhbS"9Jc d7/ C<2=?|MQ D`w`P tWAfa55AX ?OY1m~xfÝh61Gj c{#P1vWcQ blo6Ozqkr>eV_93@TNfw7ٽE;&L*8Zӑȑ{2%O,Jvl$ фE$ 86,LSV őR*h0tNrtwnXs]m=Iڎ1)*Q2/qK"lxI.RCAnDM 74ZveD%8\~9ˉU<)ΣGA^Hn9{N61#)ՇF ωGtyYGAr.dgT(bn8*ބn`Rxf̓kob59s\r ݫNXFv’x&-kIb$QDs"["2 xLtK%8V3vQUG~ BI򹿲SLJdI888[#yJwx(,uc$hJprBdurKog9h~b-xMI8F M2WNFDDPkG~ j)(]$EbP$Qe~9.L}Dɨ ͶCTOx9gktYT' Jb<;.$KLL`(Zze{95b4]Rgz$v,!Iч =VX+&KԖ3W0;vس'w QQ\ GChZ4?|#^6JH PwEjl E[h8z!k9٧4'hK%Iः633{J,Tcw }_Y0!v &bG 1QH;ujm_ckEeORg#r0%$ú! c.Zÿ\6"96텄YQ^k}6k usp'탄OS7,NBk_j?<MA7af|q,U-ߛ.Ro{9:kgS?Y!MI KUTr<s/aq l9.媈 鳼!-A-p#8t41R5L`&0nYf(o:2 \!rA]mv5{٢tl1G:{rϱK=(A]toXĀS@jS)1c/2-(.xҬE]CxBȂSxYYPB3GIx&:pWnfq3}sD;2эl@[RټZD[jW իɤn(cIr0&a <<( lX\Gn9n'FDTz\k09&%(] $)]#*ZD^ œ[B.&bӼԋ8&ÄLF]C}U<#1og<`VoG\a 1tjٰǜ$:)'cǎ\l <+" 1N,OC`:g(rr:e~S7|ղiAp4W^Ҽ|}qm4/ MD(( 'i)a7HLYK l9B5l˙@qA&juAֳsFJZ ~ypo^Uz!},ǭJ)gR:owxj3>1 |6դAĭAPcd9* wIIH碬&r;I"GngnM&6M9%b`j> pGp?u 9S@E&% ]DI\ Hb)&GBG~t@^2UI.>GȤR~AYFT,_#5Fv!Tw"n`c2Ĉ0WU$UKg78 + @6^9 t/tz\7&G<9nSų9xiى#y$ϓSBDN+6rɢ<}% [5ziU%9pŒ:H X; 5YP}IRT7Y4o'E8G42΄ȋƪAIBVp2e=M rF1^tBDsYڊqrg+Xiqs.0krW|~K!my_BhӻF(Cגڼ>NzǨ"=XɭFXvG 02@YR*:"'ZKrO2&-IF k/d6'JȶK%)Ƹ2WIew47rzztc4& CacY`E"B]Ypc"x`,!в-QSe8T߷\8ALc6;zIԞ'IgB s4_,FXIw0ڣݡSda |́!{9*\"ᘒaPRl}K]ӨL3DC-f:B !/r:37 lG u(Iݙ ʋ-yܬ7N8_9Lg(Fy'o ˤp8'8Sv[~V6=uS_Qa!b ɓ ҪVPs~Ɔ[s6Y:xI5 m :YV|&rʧ"a&&Lw%;!$.^$9핀kܻr4!dnqbҲ#dgȯ+Bl"2tDDܘ%Iw)h?Ah.;DQ n镴te"Sp)Bَ4Jl.d#`f/YC3:K-lL'="6M(p#W] (yl$yL@mf1SQ1Q܆t󒷦 6hSڣ>9_ZX}9~.[}JOlcZ~ܬY0GbNWc7c; L&E!,KR+ኰ:CŁ;DCsCS`#$ ^(8)IwĹհsA3z::٘YqYpl"y DlI8ш-eNKfIΌ\C=tF  ^ "iDmR. dR,c'Ҡu cųb^3MCxYC)x!V.ey@oq}I1bLҕǶQח.gF}ȳ*YMXF"!c=.&B>́oC$.C-]KW'by4jšs/C6!mX5YF 7?4O NJzT f\L! g9ϧ2NNP$O}bHih]x1-C1%06q F%f YMZ&Zl&W4e6=S6iCTPS}Wcłʁԅgs)}Zu983l:sI jIVzV KD0-R FΠg;Sr ̻sS5`69DToL'lZ.bZ4 t4H{ʖzd _;dӲ3WplҟqV iq0)݃zT::ݥLߝ{n.6<ATc;kb=,f2=6;r˧A!}~T vY-Ӊ")XuYcIUym7rވ=0~w3 Ix\E J 2M'G/*M@b+skUh1&*"iЍH#چ8b@{d0:6Y_&vAڕFW JW*a.@,{Y'eq2z49?R 4T^oK+G@l?PzzAj֦'X ڎoSO)ۼ:ԋ^WenKCNuDn݄9tǃH%W@B?PBm c13?|~|2.e\t\,(hBj)Q I8(fcưc''Y$l\eQd(V'io4!N^ ~Z1@s;BN2yZoLǘfGۖ$| 4;WfA rMVYړ35`<݅&\3v%, X»8Oպp>00,ϡ\~EH[M ,K$ܳXPtrY&ڭLj/eTnyEs~rh8#PJ+jI=pvo1W E Ib[zsP Rȼnڡ0WƂ%Xbx4pk!l h.FXQvA[&bM/}샭&ۜLq2mVu$y%Iu? c[MkdZ_$s/rz6311Œ0Bzj%+8 =!*@6 +bSAZ0?!&f7>?>SvOBZ)TjLeWˊ3iw Qvbu[݂Kݨ[j2∆L [f9&j~j*]Ϝ-gd^̇RyA(scT"rRK*C+ArH_Rjbr0Nڝ6' *U_[Fu':^ܒzx3eKvEeOuK%SoкiA)?4_]fWFa9.r%M)nɄs'D4ZyQjlD4cb#(V4`=2Q橩@K;pZ5(t):P^tL*|h Tѻ/nxbtJjvL7ZHAWm]v==;i:L fz6Ʀg8B!LJ&t *AG#sV&lhP?[ AX0N>D',8te&ئ`ŁK\%53WLFEQbvv]yzbt6X5Z\@}yW~X`J nH3ͤQ IicZ`rbGej.0cYR\ MGEf Z[v,eMZAǂ:NegKpvgrEv[]gӓk^⁧_'xJfPh}\Jc?>t<EbO>$0ym`;8QߴB{ @>/;lmZ=k 8kVhuCɿxt#Cp>Sc!.$؄fᐉ0^"iA' cBѣh!&1:҄c+C&x8+i&M،mu>r; ^KG暇{."doZ, [K#٫> +rV?W6VdmИ?hUslqlt0oN`X eo F@qM0f2Nli O8AiVДCq"ș*$F4rÑV K*'I>nNYR2˟Z}y^3XY(8k\~4d"J(BN k QQ d#_q.Nbe:tˊ7 Od7K<ҹ\ޣ^G< ߃OiQvs?ZT_j NݿiNaVH68pg4RؚsXU+V='\!>σ?Q|Y=Ie\%2i!,Bo>8&I3wǪ[逓Ms|(8鸆Uu̙6@ZE8yw@8o vxp{ n*݌Ji8aW"1ԁ $0+"zXKYnrcIGi-ͭgunR &ÅmZǃ*y9B ,+ѥfyaeҟEB Xm3؝!5K)އ(l)bHYr6|ڇs,p]|u Ė<] ?:YЍ)!Q k<[һ >+V4/)dFVӝ .,hg&2 ˑѿykbHu轾/ h`R#f syqB΅N+gq {1_FHL U`yřrjZ!z~nwdS+;h*D4]R!$=FL/]жcV?ɮh, g@yo$W"كTofҊҫ2/Gj[Vԗ ߔI_Lc`V̱Yxl>4- J2\pU) BI(4(S \psҙ:Pgxۈ4ӳ9']ҁy;S:Zy ?kbaM/,&#igr$1:fN"Jkрcmu46]5Hu4Ѹ85t6s987i {s1v1mpz+x#]Fܰ֊HX sN&$ "TVYV8nquѸr9$[!W!Uȗ GnI5i݃Hq'hX71X PB비~/ɼO [m4;$nUӪê+B#fO0N~) XsMڋ%S.f҇䁙kxoі Lܟݳ4&2}2r^M2E5G<4 =A/&S x Ϥԫ'b^ij9r!L#+mFcgcYyxqS:k0'd-%@a#cGAL\^QQєǛimrl:%=H"~x֬gŰr\ue"6ci0w,b™>5؞:[Hu#9\u1>nħu&l% r#4M޳fd .H5P6d'EѨ4Ns*񐢐 -/!64:,v  #1Y],9uע$KU#SVTYTbg -J&TNDP:0Ĭ.NJ6#`ꕩޭ'zs< 7h7y \Q YgJ')\%;L[霢iŅ &rP 5Tڬ{i4Taa?Wg4'},v#&Ys;&oѬBB=H+Z>Ӆ^$D\F:.2 05@z uF^h <jP+kt-L? ~u1t;a969x}CA }odQ,J v~"(3!汤zqIebY,.oX8PkB?@=VTgTgټROsӄRwJN,7~rPqBu.ȶ4 ^-D>Nuf(@9Ψݞ7U 96+VU]惔FuV/*XY)Z^r+諱h롓ǑVh^_q+b+ՁY?I&41@Ɨ9ՇVջPO-0d8G6d&M6\0z#޼h)db2eCLO4ҩGGZ=r(cYٽCVR!rZ/*\AoT{x T> Aʧ6]xҦ ^^x{0'SC<1 ^mV䬫 gR\|O9?X+*F2Ғ{]x}ǧV>EA]2=XuEMh+Km(7b'[|Z s`>#W&k\e<\ 6!LQm8H]F(*Pfj`*Y 2 {-(} dV9>FtzŌJpCtM\a"OdS˪t`:OTvN_ޅ$ENyrzaYjWdoaλ8mRDlg4\NhdnUZw9#C9h>hdEjKeJ痥^yS")RpgOJ^K ytTM5J!OO*dQk'A+@ŸkfvѕiK#(+t+a8'H$#ChJSI}zd~cOݍNIL,s4$/A:I{sK$E:XT9tCJR/(S"ZL u&)5V% NhR_Y(Չ|f y8@IzW0:_S!I^ѯՇ(fۛi %*<2kz콦򸸧UyQ\BrhM-{J9/ɑM_`^ ;YRs nCl3|j5*r~\lF8+@@P@*$sԆ5;"/}i>?,\+|䍸]{/qEvW*Pf]܍ ˩;I$OV37GSw} |hYyO*,Y0=IsqRl1bs$"=k!&60e/p-$҇en_pSqgIF@p##͆\>xw,Xfo,q,`"8Z .[(Efi8ud#oq(>E< ԏRp̥>kqM>X ۟)֭~>xCTS"US5dzrDMPx$`trP6DŽ~H y}ʋ5 iB5BmG7%vҞ@9ފY3Ose{R߉MNJ-!~< N IOrCP=~KDԠe4 /s\'T^ "beZܪE%YnEIP_\ݴ?:!1beURIN1I2Һ;\Ac+MhS(yjЕD2qFjyOvɣAWtRܖYh>VZMK#iϯɻ~{:nթ9qb$o +t|]ʓ%]خ1MF"N,844^SH}(#i#zo4;I7&I}Gۊư6%2shxjeqiťIH9gHwtvQWo CT*[BGkU  D fׁ<~D<,j1RReށk7( ^4/ gehk+ќj8e/]pnڰ UcגJ&Ic1t&͞,)2kU>GcB YfIujb/7A6.\ :jٕn4y,-H)L]k;yd\4j*(攽(S;0!SL惘ؤC+JRNLox1GjIl2HL`Hfc0iYڷw7LZ{yJd_ح+1߻T+v1Z79:e\YܻQij4g]O qTGd$cgx25895s~Lqpq2U.v8d*ܣI`*O9)(?/RSS=`"$kz`dve*gRM>>ME0Bj j+}(65+u R9OzFK;X2:ϲ9μg_qu9Z@ ,\$Ǵt75x-0PY<nTSȔfpʋwiSVN٘뎹9)r 7gY_4W&{Jzhrh@t|$@P3hchU=xś2K#NX-` =4ɢC?buRN:vo*_s_V0zvdlI1[]>p$S-g#tY FB oA-6G;7Iv_;||5!&d-g!紿d '20OO=6;e订2%K~P5CP1Z\& SU 9rgMpSdgi:K1SSF/{ Vn֥r ZFzT',Z㧔J;Oiۊ1qRVb޴vZoT*sr2 PO}iśb^LM](PO|l ({& =S"Ky 6i8m3K>g=j77?vչ ov^VɲժxZd>>uZI> !:sqm=<9jx=+TO31ubZ4j)zQ3/##q]zcC'Fh)`S2BCF} cYfw-^EpR>JrGnu\_;뱀55E`;N!&-2$1@+&C Bû1 $@HʎCS3`&$D?+nvG-]iV/Ro}RﭼM7|=WyK_Wkmzv{ݏ^4t6iVM=HMٯ'95ǃ8n5;NjakӚ֍mm"7Lik5XKjC}#Xё(=TDW~zEWH#AW- lo{xi?gy9/9 im[d*9˄$$q0B1z~,j_/HʬgQUx3|-q/LV8JwN&T:GG7j?tF g:l\?$l?X^kK/N/ѿu%佡s*Хݎt#~@J|1蛰%e!@\& 9 YLXl;/^ia@m}n2W;hR@FоB['YdM %{qڼzfdi@#HX>Y(q Ң1T%_3b!!RmuOJ">jߖKO0mۻGn:Q> j[ plwJ)>k Sd @>\C-ݢ7ײ]_=q L7ao347ny9V8?^fǫU;t[z/|]qߙa{|:aKba=a}ktkY̺q|* :4(HlQDQ, 0 ڛ-'+F<IOVs k~"Y;#xT61<Y,+7o$fO\x7MRi͵9y8yqr>_dxI+.m2"%BE $j6赈ɰXIqeGs_􎐤u}CQˈ.ZP~q]L|8r86}ccoI ;Iik6 8ER8 6ZQ [J+ty?dLD}- wG$L;Qި=#Pw Cy!RTĻtFL25 [Jwqc 8.!~;'EBI@.K4 \FBb`$ ŲZ=_Z\u%u Lo8L?̘~"m_N8v*g xRvՕoz#?&U`.߼9>PG (]*Yk f,&^I&+ˁEII6$G-Ue) +&JD $>H b|!]}l)j\,q-6 1at?͜e-InnH tF)x o:?`4̿ʄߧ}.ϣrtus7쳲ea[M8$"-(~V@$B>sv9"/Cj'acBQ}4.EȄqB*GI _"2@-|&%A{pd6ĽS@O>Vhd/ t %5o`:L-[6$w%bVAg^*aY20`lYAU!;V|5,qqX}q_Pxp2YOͅNC!T5k23usfSpի|^"ϮY2}rvnHod->r3_]=ج W]7aۋ_g$Y@, 6Fˮ1V1鴴};nY<6ZӍ#h2 xX*)۠C$%ܘqeFmF?f'PDJ+Bf a)+WUB`M,8ȴ@ &r}{w0[LJfa+ǴSyݝ+iMogxN}BvuFSI&`\ϷaY0f.j:,g9ͦ[Yl1Qx) `x9gEن8cjõ܈'JgWwRу܋FEV}^as%xvK~U*Jʚ+7=h|~ټ @xIȚXp&"l5(*l%i UJ`W"^Il#y!iZ3?_nJz6OӚމAӘiJ7]lq9''L8f]WVTC0*㈌O8P^Ŋ-H>ٕf}`Q:>uG!,O:W:x{Ŗq}dŸ+ y׬vmkN>ͼl]Lg1)pQ˦%6Kg8 *Eu, > Z'Ew,L*WqڒȄިsD#]v>=ݴ]+PgL~oi,{t -$!2}ۨ5uMMq}6B 1 5|Ej7 TYOZr`,OY_\Ƞ01w ΄ UgB֯aBttwV i5//2@^?ًlL rmI{jku3mPNn7H#cRX; A&^O'sC36\4 >]% 24wqC$źQH"օKJ{iXJ'O6'B R(Rۭ\85IJܯ1N;]l^ y5l:Lm<`K8̅U]7`RH:_"ky_tI{gzxV*Ɏ =IͿT;s8E6I&)&ġUp`2F  [݋"'g[{>@2m,1" d`J{e+ZK Lhk-o z~Xyq=`%4O4]:h(txTP'׭`OF UjnTT3iSt!{XM]K\S'G:pYx"C,z[O^/|˻̂]#"ORO m唠0 zD ,GYnA&Z$g_k\gC޲Lo2sOyB dQ=[\3~//P{ Ӧ8:Kf-m3:yzyOzOoĸؼd҈;VX(2p-A9 SZ) vow8/)j|%q-kb x8٬<1Iiq$|P,:u.QOb"弊hr#i%]º+-[שT(G}hJ`Si|@~=I"YWE"qz5WNJ$Vpþמ͗nZKr:;A9t"_*zB9)/LRIG ):LdPSSqKϯ 3}?ShvC/d6דۨ!dH >/SK~9/rhN@6ZA I 7JFr#F7 ]U̝&})CwAn9R nHzct8~r"gFTXHH4vN1?!9!2KQϐ?ejWܲ&<)Z}=?$)`9R~6U4ArGIsILjTHюvlNJTF!$]@H;kWI!o7e=ޥ%3\'6#.AdĂRQ'6Ru܅qFHm |)r4%7qL} ipymyͮODOܕbt@g43+ B*ZPRIQAsC09nw ꩐758?_)ESRX.Ȣ|nqٚ76hNs%,FM|l'hwCIoo*@sS:becfeY6l1b=(Ejaa2?0j,'$$5j1.*d$dPƅfoJ<(ᨽN%dXZ-$9~g~8g u K-zIo;BKNr7Ê^w!,LZШuQ-8Z*H(q3>Ior6tOQCM8Apd%}{A G敷FFz)OY>x6 .l6ǍqAi{,LHX مe_u.bch~Owd͏ : cBde NRɫ0*c 棥e/ȸ1VߥmT}G" d<v0 G?^ͶCsryh:KS!#P ڙH-?oG6YH6K}ݵk}Oq3-S|M Ut 0si->W@l2JEGĈD( `"O@@qM3qu; xؘ:Nu-ûߴTq vBb`|lf#u%jrf ")% +;,vm,CZf-6%"~#g ,V $G;D]M0GD"_L I{ɴ}p[G۾Tpӱxp#A ]ʐJ{$J$$=a E'hʡgTC\X;N)EKF4̵ +#m{v~7O"){܉:@!3as4NAZ'[Ɉmja'K_~CRى܁S_զ~E-"(~(H2!m ERnj1^Bo ^"<O $ׄǁ UAG#; 1p~펤R3bo7@9. c! gK뚮5Ims琉MEw_Χ]I riaj^-_`TPJƳP]8FT]M{r/tvbb8(6x RXTLVo>5cx'>"H]JE`d o.g^eZ$,HKfײTd2qOFhu:D[+z*pS0HDXxKA0 ]di01٠K$ EbaEH&Ҡ0k%qF{Gx\?a[\#ϸ6XBx5 :.#}f^{lD⚟ƦOYNObȫ=zj\/3̆,@s)M]]˰dt* CW…2pyEdrXm#pɣv{#ͧ`@0' RN<`ԯr&V=%M(i i`R7Ԙ`hv{iP8K!ȳV +G sY Q6igrgYzsNXS.6R/Ά|]*0#0-iW%v<ӝ0-f-Yɴs0꥽Q{-5ۼeNtRr5]$ %2u֒/긞C9nƸO1ݦ,d@kzhgL0~)x љ% F ,81qRByiu•MƖqi7MIiJnAg6[yKjЯ9Oc$Gkv{=@ Wσ~ug̃s''c2 d{q b ozU9M,܂k ^ۇφ.8 V #|yc\1/!ITiaHhBM .FTS`5ydm>,qbuG#2Ro'ܟe]]v@8&& ` fk jFdw2VaaiV] `|e3Gƪ4S0H B@nB#L%(a t9Z~1/:aZݭ4|aA+ #z'0| oD8L)>M 9& ;`[iv^ݤRS-.Lh Ck0KsZJřQ9f+l6LVP,uˈzJWy 8nLS8hu'ƌ'fYrp\7o.f"c Nl$`nkFcQP+!,de-ѝ;T@NdȬF2w7 @}k9#fyt \thJLn p͵ZXsf21yj ݵƲz5s=}ZهjUUʺ9NdNvd}ܲW~u"MÞgc, heh^1kIͬ1/ )S9W#\QWc]˭@F7^y-t̖B.( S'-TӆeHZ{OWl]Kȇ[Ym^X?Nח"^ZA̺*Ɛj&08+n'xcDBDccn椪z/oO}$z޳^_>ɶ 篖϶D/͸eO"[ØyJ>36Wt$LRkwvnsپ\4k-Smvv&`HM*)3h[ qQd \:Suq:7ʏG%0uѬZ҇?$$0fo2T=< Woeo2N8kgÅ23.Tԭި}|ptZE7pO ǥPNsxp; '6ɪ{C ,OF'bp\V3ץT#N{k|).ȍϭHxO籔:w*2HhQ"Ϲ?\0<3n!7z'Sy\ZӞXA6c!r_ zvː[) /eyDzMNJ!6t<6Aj|m6{Q/sp?FK ^wʾVkkm uXLik[vq l1Ja!U~lcLM\^9Z43WIbhgw{0Ȥzk]LtːX(Ym$"IɧK@D|).B6hlߍ]6e Z"*q̓zV1FBhv*;T wߒ~?X۝#|j<'T:ȆGlL4gjBF$]Fx\9jҲkM~C;?᧤̯9~fӋٵ;u5hfA gؒTr{]mf|"*9@ʙ:>aj?n*WZFX=ğ#I;G^BKvpW҃n@WST~t}ԯo`uƭ~,%11nlϦ'OdI 7&ø')ѽ7cFD7OWsaa)u$ &( hЭoA:*qQ-UD" yi|gPo$YWk4qLMӸVkIk X&/:.-V ;nbSGڃNʄBl nzY{b@{u~g_- lgfD~EZd9fQMĉf`F $ff =2J"6tDR|]l_H~F9b0q*zw XIҀj&(XtÛr!Gǟpl]؞*\޼w^lCϓrfkէf}V_&)&ub:@2m];S W *?^ԯ%6Kړ(k5'^{Apl i|]uVl} ΩLeYkWZ׉gZҚ)Seqq@t0TgjSGƱM(8φJBl瑮,,ve霷e}jpB|S/kxqc2؎d2y[%C80!3iA\h bw?n;ސ>RCǸjtOFHX73Ƃi0LݶusP#O) n6 াΎ%69w~GO)/%¼ZV2c\LyWl8 _Jv}CgkN q7cD9!>A ߢ,r){jJv.eSFLL)' 2~P<{,c%?G"_.Bf:uyB:/LNכA~ŕl{4Y?,5{ny6zdS4 ..(-ǫVX<~RS+޿L4Y0\m98/QzPxz4.~R~We9 y.O~"ˈeeSQ5ːa)n^hcT-zXևkr71˃ߜk\ṣިnGV=uZmD|aևzPlIgu \VTL.\gM^gO-FS_3Ym3yL=hWZT*wΑx ͞N6,n 'I};~-҅Ǎ RYsk9ZQlK| c)&tV㦪id \D66Y>F)_LJ6LpָoõY62O+2z*ۗ)"ȩMԒ.t]4wy5ݷ[u'R| hM\>z'Q_TRy9O㏸'@x=l‰sV+@4rF{y/4Wlg27G}AdhrsM4v>7ݻN FUoR~זվ`.) -9'k%@T9KʛGtkq&z<4!RDQQ;VT幯U)2a f.\_S~ʻ8 G #j/ QiPDUU/|^vkۆ2GjNjiPD_LN|Xtf:u߽soknZ{֒vx\FJ2~j5M7/fN BΏi *ۄ.ﰽo6N[p@'e ui]2@I) [[;47]("A @&_bZq{BܖyxOxR'е^<_n~lSJ&C MԹWG Xb1PEE(U7xM9Sn929ڿ]i:`Ɇf}shm7XbE^q rxݤ9*r'bL7eJplnj\eäuID(E Ryôԋ h>o*n!x}#I$aK&hI>2rR,d|q>GP5'09Mixo3R E˱ڻk͍I<U)^EO;v8ҏeJfԇBIg*9.:;%(Ke|w.)wu!LG&ALx.#N+Թjz)))sOY8Iۣ*%9h3ݺָ^OвQc}-ύ,{EH׈S9O }zp]qAK$q# ߯$yuAd)?Ɓi5^ vf68O.?rI9G3{!ʛYxaj1d?cT<?fȴ{$g%- 7FB^reQh Ѫb}qYg9ѷWRbd>`i6Sa x@HOcNv#Db7>m8y>^kkZ{wg7b|NZ{Ii KxvƺQx^L¥&[af}Y t,vrƍ/얩*4]~P5x]d;y1-{Ѩs z A׈E)C/ލ r> ^PܗJ1\hrDT?9 hoK0淮B#g\rmZLPB 8Ӣ;8ZWr]=I6PI#/CO d4J5,\hNT00G9d +B_gfAgԾ>*ׄp05Ҵ@gx. A}KT wPťΥpW=Qνr{O_|敹%YtڿmVPEҁh=hX}m~޸u^o 4/ +3' fq<7$ NӞ2R/"`^B2!hWϰ./yY`btinBo+E_"W꜆e;ix_y5o%Sŗr6Gh>hM< gOןz8yIģU*.1cӺN'P*څ, uT)q3bpL3)Np8yP(0~|MJЅC~>H>7Pb_E޲SxI+)D}Pަ2V:wl:IIai~No,dEI}ki?*O?7Lc> iJ=ʘ=Ic<L֒dPY/wf(/I<0 'UV&u$ UL8L;ĞUpӧ $rxTn>vfUlʙP0{ʹk:'!7\u(=IӃRǏ˻SzC#fq9j #&L.8qEyAu8W[+kδm2Bǣn~&q˹)e]eC+56=?R`,͈_RM]1u G8. ɨ PƏ2ns0'&d8'T)+,E]a-Y(Uah<hf_,Rkܭ癕8*S;'8קa?݋uɖ+VcdvRƇ89A~ G&OU(Gh+DF~/8`ؚ$ȸ;j;kMx:,1>YE[M2R/*1.+`8{{qw[8_k&pu]ާFj;0Wp ILiCp7db(&N~-.dl teu8FG-^> `[1?S?z{צ7 I3;M%?Nmc#I>oZr42QH#{]22bM͸z,{tw^5YOsЍvFA-F͜^J.щ7YQ`XؙZ4<+*wW$@)`PuT^åXHJGM>\`ϖ;b^\]O@[42lJL_jX%w$S-Y@wh:QgW.rnϝzh7 YnSOO|D9 #"EuRO"<=6#͏Ο* BuR2\^<$hQ)_/O4w]4w7A3ry6L{i3[H^!wG][g& !-{DK%_lGnqPR)2=}$=jgt/Q~ٽKBީ|=rEik|49)7!Ή<ɫh/2p߭ЗNY =7 p,G@[S>'8Q QqyN>=vl͑5H̓W樽{NBCA} cYfwvo_>@}wZjZڛg+ lkYp%<$cGp< Og@X6R [@Hv ιJvKnՕz?ϫT*Oz+wU]N>U1ؕ7};Z䉷u|;jv:u:'V*{|>] ҁMzP'YZW`:Y__*  :D ѓc{ZoZҴ4^v6gi`p0mL|7Qgc ks03VFiCX'0<q2wy"~sr?&D "z)z%Z`}azwXb^k]Ry`ߘ@d緟ƷF}bǺXU4n4@\g tЦp~PkD qEyp)0$ *NBp >#%ÂLÓLj|ïGhW/Y!1hijβlK?LGaz6ۄ%>"&d/ӟ5%R F*X(s: fB`*L% AWDR6AA:RQ CEw1|@5*g A<\ÛKJx#-"DhFVԞHx֒NUDLW9uy\eݿV/2Rl+CyEPƳ޵#%44PBVl?bIҴĸկH؄ ̎S`,X*:6I(h4!Cч-^aX:~wa}ኒ(uQv -I)@[H Xo:#DXh% tkPD;iӑW ,\֐T{4W%~kXڳ]L'6H! O;5EQO7R|^TMҬg@6T6'N j}6A q}zPρ"EeI}lA?){ SNX# #%j{jQL<_}#yB,>[x$)'ٛ{Hэ"Ík o ." !d4nyT+]4)gV#$TrZdHtO av<<7A"w_uA/Sʁeꂯ.[uǻ`jF\2HKB,) ^xB(#P( VIS~<.ەRHOoA"pӃ˨HL&4D1U|~K( kb AXE@)fCA&HRf /`ĚVM3==r=ڬ|^^pHQG״kRS[;8`Z]Kx` $oϝ!Xv,>δ E1%%vWxn@BdS?m!7u yӗ.cfP>l1z#7P y?;1DEpƘULoU%Tx+&AulwVY/~NA|wj5+wWҸZTֈ^@Pn  @y0sO\>K4> C$1ưRB9–qa 7@oU/ŕ"'to@[it f!Dɸa@wotM[8ǝU&N^_]^:-v9ЪxftI)|— M&&NP(=B0 Bbg(TGΑ(^́SM&|WQ6V dEa9Uu:D__PqQ@dvc,8I5jVz4epP V'N 7$: * !((Np"p}'H^VtPn~:Z"(fe1ihs%DDP\ 5@ oDc1I'W# `$)Z߲)d j1Age~EN "ʰ k?ꔌ!oFdЫuQo*v'ӻFKU\U.] pU]LR,vpd{->KڑChX|U-4D PCk(8a\ &PSН\OfL~٧b}%X`͂=ֿZI />RiO1KudU;x{Md6:x2g>Hڥ>#⠑ RMhPԀ9%aTqXamo$VLy@QgGo  j٠)>VDHF HAŎ*[Ψ[/b@J%QG)pCD:F/\uY`2Ȏ}e3l1\(]|oiZZ@ e`H6HOvZ!Գ3x"l@E7J8Ojm{Qכa-AKa#{84IΈQ2FD\F^)(NZJ!:ʣ, (LXU$~i .ƻd  Ĵ+*1kģC ++qʊk 5R:AJQRSUqEt։~_AY*,r }0n}(6)àr/aEa3 j(僰Y5 e;|<ӮY`*C6Hk5 yk;2U36qh6 >ﭠ?B?@Ek`)ХUP.. [}'+ʹOʗ~,(z!fD; ?)j}d`hyuZt;{;74+{`:E|ejxjA:AUVo'ak`0595}rj:X`ݓ$dЅB5=g'$mqj$\1<7<)7{=rI萙mABHmZd&%?f'>G)]5唳{]MWYI;P|HK Ě1&=^(.v 4x G?N1,\AG*%KfY?@RWsRyC#2,61lo'Mg.6x~%H,8|c͜_Gh#%E `Ci)LiQ"a?]&7߲QxC 8SJ1qOI] ϟ*T?,W {|lҲx!pO4Y߻097W7w(4%2>V'fc`59;uS\B+j.bNԈT<A/QEE eg3ǃ7H:6ꮔuXƾ՞V~^Zܸ~F4riܠ }HEd)1.3f]E)^ G:W+# hRrE$#,G [%D31-tI-zb${.Iv̍r8(-rЅ TXJ14NySsWIiWziUYPT;Iw*(SSoy C"gW*)%BOT_eprSGp-yr ?_sUI\^@ 3,I- Xg=whrQU %̣RSU;Y(|`2EȪ!_@A0c *e08+j5FB5#,*J+BAB| ॥8TK'#Zm緫v|ҺB6֣?{eUj-Д"|aҍJJX%dCv*\)C5DC*;/;4 PEdo:bD#]%r:E҆R̵9@`B>:a֎oAb[] M4S [$>ؕ?(d;پvf[Xa @+PdB9/,NSB+r5xbfhn£rldNDv{J>)C<4K]E4#X*EX9 uU2:줓%ɹ WGJ+ ٯ,Gry3FANUxTvWY\Q SDZʈVb|)arZs\-Rx9yJh0|-CR5K L$W5pc[7S{+Bۧhrl׸A&e@;3e:}@#;{\r; Ԃ;߻z-G|3 g4[hr0v;X{يdP n2 A"\7u3ic}z "̶ x}d#{EdAJ蕗-k]ɕ4Z, Q9>g*tR+b᥆ ǐˋ;MrmIU4xW8&ZYIz `sDSg%[6RaTahTq^EXLwD:)g^ 4\(' h6%}3 ے]@4͌*GIvR%~ ."3뛥/C6[YX=7i&_J))/ 9߬՞7TN^Ȣ[,_hT@Z%W@ZҺ~q6Q̥8:OE, _,IC81݊{Y\hlz5,g>B/2ˋhUмUoO)ҝڡ*%1e"lvK(O8*H~[ Q?+H PהYt[~Mom*(,C nڀ8grXt\&vbOYPp z Q=j6S;j%5j +*O?vGʕ`ݱ |;x'׫Va cYķya r[܍BX_N 3Zv9*R%(qwsC1&u6'hϪdt/4iv;i,24y +M- R jw#SZ5z_ퟕS*v7A?r;}g@i]Lh%k 8*CK4IQ桂JIcWP guiԡ |)-ᡬ;_cpku.:R9[6:6O%MI( bL09HJYw9Vd5;3šI/^R4߂zڌj*)xJKY0lLVїpы@v0xWp2^̇sSCKRt [ljtտrr`>\7}O&{b]J\򀦝{Uɚ[t3PW4y >Ɉ¨4BA4RRrMOWuy[;rVxޘߚ{{3n 1 aoHޞ!ujJ/6TFdqҢXT#"x=NNWۻ i|}WWq BNydy/kOhڣ`p(j{`֯G,P%lQ!M8֗'Zra{ЀՉ6Yd%t-+Ⱥ4@6?Z!uC_.=??Q]تR@6 <*O ϡBIMGע!Ls \Hb"L8 ,\ALB&Zޣw=|7>/?QD:xwgжVsNBha,neo8NF&vUf=mAmF9/m>gk t[,26:Pٓx~-9.Xf oCx~:~0*@AG—[S2].|ui _NlIhؒVVp#; ]7G i8ݧ ӈE d@ )4 {0-^vAYT2؊ZJqb$m--G W Ԙmcc^}l%-&53t}ef7 ,ugREьqQg(mMj:)^|^Q4CbĝA"zh,ZE0dG?rI)ٔ #7uoc)d{I(BUz}uۥ88 ZOǍإ+WF_ :)ُWo5|~+>{.WirE.},_k^CZABn>k540|Q8Er+U?dkra-WnֹqDv"dŻj!ȸ,h+_7fgh^Zx X*Vp;euQwrahA4+D*-0N*L|WꬢXE~`H5n[VEea|/w2eՎ,Sn,m|!ʁȤ?Vik87BW҆A!vvo(MEOۢ#AsE00oy1]W\?3nv3 ӅgC%|!f~Yʂ%$ݖ+%:RJrY h\[ZfC_C{t"{tfd\V[1wNTsg AZpB>iUXo#72l\o*[lpB 4 m v>/vϩmfd/KqƗFfq٦iNN Ԭz=}mV Ѱ ~s_3ꐸH9o"TI)#Yf"mBo4M[ ^hrV0&U7C$J'o'2jwI p]Pz!e鼉w,ٸCSOnWo!UXެ`g>L?l֨^kη1H;%Օnc#L>ZjPTJCa 4˞^<+qbG'GD-w8L= fPqϖ H:Fe.`n| [l wgk/JHϹ YGk2wž XucH EQ͸Lܣp9y*Vd7a&E{K~w9<:b ";ԫś-DR"7|6a9a2<B*U)hi.TL*֨Ǧ z',T/Wg-3*TȭX|9TꝬ(ķ{ֈy/J?m\i:T?=umRf\Q]%d)H-aіK={"L.L' < _*6E~ܐNl |'޾(. "`i.#EXbVf=huY'9/L)!~0 >"p̪kq~uP\!yZ'#C~VkRijznhGl#B[:X٠y@ڶ! ؂B )M]iAoIu`k!&&`NDؠ}|IFYO@< Ml*V*{󫷨p$MDU Vcm\JlT~0 m{''=}1ӚTCԖD`mV_Fob3hih'ix<-ЬAr޺R:k\q W-DZ'&s׫l UZdm\yl8(D.Ift%<3q=qzE<{oFD9>ƣuAu (~U" Bw uҲLsQЦ]im)7d;Vyj,"+,k9TEzXO.HLJro~s^G0o֩wgw ^p}5^6sN_!Ë]WP ;b8t>hR`~=)GְLǸqe5U]y:M2R#md&KAE,R ;A33K;i{hRDsU%$(a"#}%W.|wȽcPsd 4?O|6.Ц+M/{Wom]@K;3bV{ڃE#&Fy=)pʻb}b,hs@/"ՈC&-5̦i^w2\`߆ݎ+S@9^>?#u ֪j6Ok2*O級%[ p89\/ewrnuj~@ ?/V*d3=9.I{ͅ㣌|\Z ؅!LÂGlWJ TwrNJDtiu bʋ Rɋ*LqGd.] ,yD` Y'HfPk;[2e>"I%xBL|B4TB-ʘ6 {90w!H(}w8휬ә@~3 w(c`Zg@1.&HӼl gåy]OqJRHkgE=O/e)mpE(k_R4\^f笑q1OY؂ǰ52 fE=EGZuʿ( }:(%'RϿ$d삥@]s!y $+tI^od}4u@sT&O[r\w};%I?If <_|!:%~`_A4KxRٷ2W UHJCԛTЬj 7au:kt]`0GH5Dblb3Ygm`~=N]JӤuY,cݿzXWԷ-1սƮK'RZzi׋Of?kkQǡ}`>RVzҮ~Q;ݎ`l9TѱX縊Ut}53 w >FYcwU//)j7)ZU,ASRxOEERI:˒*MUsKfC}bgUNd.vmC[f yCb3r2IDY 8̝ WBLc͉oo7jO ?GxQyf:Xz`n1u,nK-Gq IVᶵMf Xo,uYEu9 :nT&ۘC#%Z XPKͻ{ i.>M:g|)lRRy **Nt,xZ[= pz]]wD"jh+, G~|qHIA:̀covIÏr_κu54.ng,$Hpoi;4J6ŧm~Iެ^`:glٷd\i;K7Ld+rN,]jr֬=]rXTT;+ܛ0z|a=G KCO&DyZ)UPx wS*'%J/AIa V~+_YڥѴfu|N8_X+EP n{$_/"(o(^GlxKWߜ9vwp9rb&-h-хfs]d2~Ҳ&eex(n4*= ~syTz395&{*FkJ^_aӡ1LNjnbڗ >%>`9/҅rjsYXI #k@ӓG6 )9Ik4;{hJ6':?p,s[lFA)E`{&4Dw rəsJ zZO5~Q%.T1('Ž̆K(6%6NA~b<>۴a6dtw>t^.,'4@nF<ϣQh7LK^&lE29fXʻP(v'1YJ [H$Vɰ?/EFM˙WH@(χؿLpGJ|̽;_3XezEpD0Ll9&ȡ;9Z~(݈yb 3W$ $~OmGq֫u]J@*O uΫo@AP@_h~c9n[mHUj" 6؇! S?nY2 REHNV$؄C hV9v34WId}4 h~a9\f㳸wMEX$?ks WBѷn[MYd}y HsU?*onܠ/uv|( ҇# .᠆<4O\_ET.eX[|ՈwbqX㜤f%2`^A ;+mF$; $# ?W.ߊl Mk6s sS~!ufW쬳 %~q$oY}3PƏy~tȏzHqZmï_W4|EiAbG'7b^$;YY=h'Lq]Zݤ<Va؝[Q:\eG uˑ=/Rzc~3>~˥t RZI.B&W(y.3d.,\il֌/oFF&̑ѴM'#򅧓 ;fkŇ/rxxJ`YnXGq"~}YETm{oA xIY l i_,pZhce2Rɛ`hEו[B4g7a[j/՜S܄ 6G5hc@hlnt-R6my2Oj6%cc8Jw?Ý3yQ]ahnM0R!4*$s | CSZ"p@4c@gK)L&e l c9E,jXVlgtALp<a6zBRB|"3/FY#hN6*.yz(~=66L4mAMɠ^w (ac1mu8ʒ_Q;xIk؇JY@׉e|5kZZǓjvq|ۂ4( OnrkY 3P7 EtsʵL|3Zgu܇g\K'4T H#Ss{en/94?rq%2cMe~Q8Y}[<5.uCY5eӈCX.\[.ʛE7nP-MiuB[3Nhӱ"qQhܰRTbA)q3=>IƟK5A{>Ї- ˿{kEEóY㫟h&Unj\MbXfKpF" 'IEU&0miQҜ5(1Z5j1A2*.hcZۀnL¥k4D{{N^M995^x_t{'̾_W گ7jA<~=| ![:8@X[aMUN:y?AsCْC`[|n " n0jqdaMN1KA=CO/.J==c.I u.w_~_c%8/ʕvYm= n@e bHıR _vP@[K Mzc)Zcg^ juP kýYl%dU;H|lZ-ԕԴ`QJ:AN@Pg -d{-a[WA1QETURjx ڀ~/8)4x Y~zO//cu joz4@z2N{y "<O9Ĵӓ1D3?̶Jtć~5=y ;t8*`]/Q`IP˫'Y@źEB"ǹ $EX#># BSYQlYw~K0[I53%< :8);Xw=:~Ƣz@bXk Χ`6nrZh:vu\XX(Du=4^F  C6 I^\WY򸆳WxO9Lf2o= u)FURrZ)̰r&Ѐ Ja9 C!h@+ԓwka*F8r o%=NG$ | p _ D5ni *:FU:jGb2JdOrjs!dIq3TV3wa̯ g(FYń6a7-iϦEkLjSabum.q/گ(.@p5gCкX/ <ݙMuIk&z6t0 dm0Sqcs7pY! vJSqR/"у ZM (dc>QIBw']MFK ;[$3|4JҴc.(ıx8|k$:OB P_R|!vPg;|x gXc9]|:7 _qnjtxh…(Åhg#mgvEBLZQvz4[ѨƌjŌ!H\сT9vkI.Ȓ:vjB Sպ  |xļ{ X5wk[\uYaUwBL1$Hx'edugd/Ĭكӯxs\XԮhas)XL)* 2-e_p\c'uė o/=?Vz~| s޹Ȇ<)! fm >";jԮ&4 Uci (XγBF N.HI \,æ9%0PL!ЈpޝYϦ,ϩB:Wƒ0NTo&xV'H L>UY1~ 5eQ[` HL*+GF, 7MYEY4{ scH&ǭםv{o@Q#պ ]"Ʉ|}( t2R=Z'zdȶIg5[.[Ko_\D'%zi?WoaK$D}ke}; zMnZMj2K^fˏRQon@[wL\ᴺyi Ϩ>QjΰK1?Ctu7nA_@ty]xw"gmiMSt{u𽸨{珃8.+zĖ1$(bn%l#)W g|f'rH]SlBlbEu]ph z4pL1'.{On !hH{&3 fpj8\FE'A5XvɤjxXuVsnHʷȰ&T% dR gx'0[Du_*j1iz:M4 :Z#/.&{H!vS="B@ZVnB epd:ݦ2*P^E*r9a] .a;c@S%之LNXvA7$'|H#yTs+ǃ(@KЫi t|cabEl}pukD3~o7 --a(fAEp^my>!ArV-g3PrI6=VͶN,iM2h{)@,lEN#x@6b 9U`!|EQ@-\:#gDlyweюu, b>P:? UxM^:' -Q^F#L3Q%s& v@_k<+KF\Bȉ/ m9xcAT? | ?W*h\x󏃿'AM[Mέ[A6w6Y EKQJ6(CLkNGb&pG'Ǥ:b,z Rhl Sl/LAJMjZ|3 \[6 [^Qz%1kXqLF$ nѩ')wIɒ[ꅃ DfN¡#곋 ?Tgw=zk#_bqdj)ɱ6=2l1Keur Zړ1PzLSM7+B,/ᆻ='uP8ឯ ;u~y K*D6Jf͌;P-cb"E]{z)|)8f2'Ph|FݢoB dd]A1q(,3R‰jliU-h~bA^:eZTpL0dXDoEg#C8w~r6@f)s |xONvI-tVg  bKFF#QH&l]GeD/fw[q3"fd3(\1TL;ihӢupupx;^@8 J,dZ$--P vt+h,s^ )9{ES%1&d] "eo@̭a*ݲcG6mثtMT^׭X5"05,l"HdN w5Q x1 Ecgf4ҹ $v&1$FG)UqVp4k?Op4|/NS}RO?N߶0+ah1څ0/aUb8Mg!yYO‡5\ʧ/'b kdggaJJ(_R2DPq}ɽ$s!Hb>&l ?l[>Sd,,q|;IQ:j}u (.pecaw+HVOka+ٟ}³KY0$Dт'oԝCߍL"{,Z~4aR$DGL0KNars Uœd4 1oR@Xn6W@s;hRҔ&mBkJSQ-fb6%! XX`c_q1jDŰb,Yb5r.Yժ<%V ]+0uݫVeƞ;#Ζ]I_HuP - YJQkm 3t 4 3xP2Rs♧%vb?S驓;8m'"|3HNLA%㬘am^_ڵgk)u?}F'ZbWI"bʱ\nrld3l`9c2n)!852 ~,Q08^oviB <1_Ά)ii̾g I{ڣc/󘽺ݟO\^] Q[Li5n4lI幀7*78(>6UE8 cN=.n1e}UC#mp8%$bh{ò Sƞh܂+-tKÿ{( ՟);S]&~#˪}TyRZ7D:S/Fi&+ SJ9h# zcӛGhɠ A܀|\{7lA}=}Y\&"JS"`xn]p4ͷRMeSucX.s5+ l5Kl׍ySQD>dB _Fx(t4!42`wCC%h.ӋY6o3/:GSíbOnr-:.g9bゟJ!Ok!͞x4) hN[esȞ́)M(Od]S4j!װmٝb2%):S$c t@"$X"4qfJQKOj+$3o攧Yh8AǴ}-~&rᏧkʕdf' d*u렙94h8db8wݿYp[x_ɉ*~]~o!uR4MpsΝ$9$gxiz"}M9yi Lrrkܤl (B3{ϣ%\A@қ_? Qw=Eהhypّ^T}0kOܡVf#׈Hdc^t*^}Խ#qI"{cgTG5TyT[ըZp׫xϵ9Ys!7ԱITRTR1U[1B=Bpcj6Os ݳpN/ :m_!_\Ym:D~AN;r<rEI*jfω-uLN`c0pIA&U؏mt/)J^L>4<1Q3`:-h!ghw8cw:$90_%` TM 6kU Axo^\JhA jɧ@xH{!T>MK o̩#|y7y- 7\&7xQ|q}Um =̒Uf7s2ESuYAhK?M Ϊ2ڹT&ej*CN`iVrKhL?p5RfߐkKܫTy4,?5^PEfN[%x_Ov*`uqy aw 6jsyq*1-pOb8l6BL*̓L)Yi\>ڴ \~f&:O\`m6V"+qYR3wGpT|י?& @1’XGֿBUl-no"Y])V_uhDRJw+婛Nfuvq1%쁤:wqfc8sȗ ܍DB킦Q?^"|5 +/ٟ*HUVNkД19y9*o/WshkUfr6d\[BdԓR=Ta&N2C 4~^Yx78%h5ό0h#3r/h.ӨRw'RwE?F~4Bk79Ӝr]|6d9)%C iS1b^dݨ3hoD4 5 ųR–7$~y H$F"*^`0@Ĕ5*Oo6aKj{F$&NhE2k-@_+(]2Z4W!?xҁI;E֬ɢu7 ݯ92¯- \@*ٝ;Xݴd {o *mHHkl68ί́tӑ~:q{:RR\(k5^y_ +W𱮀f,N.QʣK>Z&.ЅV+4Sk%#ߘSiA3K \8nf-i}3- =u7gvH j &*MəCsha4#4eb64I>(G.hԜ`:@pVxWJ=F/qrBj+Y' K.[6wcEu}"@.$O6 DϤje!o:]9܈MQO`lJk!j-ʱU})-8M#v xh7ibq7˻1ʝqqLV|hYlEP)KHj1E53}UTLYVG) J7iE?P-$tuX OViuQ]_@֤Z&?2[nB@вThIYgw_zbqB{IP ?ېeB*o-qބJ_7ewIqOMT7xֵh^g\׮FBM%?uӾJ*Y:l74vIS~筡O=g=_`ԝiǨWm-uRpQyzFaSE6g0ct <~n<+-Op@%K h$+OT w< o%k꿹DLVPCؑZ.GbT'F@HU/'RMչ]c}?BrHi J!kK4*QT}ts6xhf@+%߸؋Nbe pPrc6U-5%?IqH+NJ|UwI_AYrsP)ͩ?g̓ VrJYe$f{Py9M]{H)ў>Wv)܀P+rĿ S 9(m$ydKejrͩrB֜cM&WDS" c፣iiΦVb[v^ϔ1ղ ly0lkaQ=MsNPxͳGCPvqOzxFY$l7;]mytv!eF f,.`e-[?>dڞ@g"IByneK#OhUjRao=iң4fxedC9`CQ24|eFw[0W/'ȏj4.݋Bo=B1㙜D#-!@9ԍ{=b /IM~iq^* 4 ͂O5;9ULUIH/mhPaS5T.lu恺M}d'TɝNzpqoѺs %ϣ›@'K Eq:Zvo"^Z& ⹺)$ 2 Y[{7^$ͽ:N(9(umȶ@kYL+xHuG0ChDAqV€o)yFjKK ߔ^f~h˃(Ag}PwԋK\Bv]~hT1zxff ML>4Zl9wJޅq@3MQ_mDNGM?v")'Ur97P g;8OK޿\Ӟhr]T*gdQMBAsT"4s SYyб1UMm ` ^v\,O:δ*է#*m^ʥN aI9.eN ^@yxN7(c T{TYw'~J,?O0]Kdts_`]H^|6/ЋzB>!H-J(.eK\R:Tr@?]rg uf򙛥 [SW5.j{[f4kGt֌Fɻ=-ɺ->Xg{b,Ae -0)qSݭ/_RRο ]!:J`sߴ q n(We<F1x1JcpR%waEחiV?6>hlf-v絬P3?xO20\f6@$3BЍ[Co Qy\8fkp9d~6Ed5?LJqr\lX|K4IFIU`g)f1uRXGRf}umvѿZ펲6nE&$J:=G)侠Ց; ^VhH4rj HR~Qlm "0HRŵt^k= ,dJ)͉ǼZ7Q+-ZeߞxGY"#ˌɺ%{82?;n>Xonxt5a&mpD7GwO&ޞ|T*Fݪ/P-$RI =S%&eJxN?ݭDXۓL?r9iVDJB irO9-3+A}FUxS'>Ru.z˾T7ejkd״9[6 Q,SL2ʬoN3}n17|jl(]dGf/6^7 O[Ff0 b?Fȝi]B."ծWD3ASWJ DH)\NX1F&h/ZXF|$B?'T{sLٴ7iҫ9Ą}o`dWe7i]AvSBp/.ct|o>4Jo"ΦzijH B{>ZѰ8)19p\&`!^-y(684Gڷ xϞa_ lJ; =ZAP%ݣgtle.Y2_n uglɀ>&Vf_=}FKhϥVз2w7뎺;"epqkq>q+Ś2Y77 G~GDjNJVڭ>e[ :4MQEbj\v~m`12릒z{gXKKrɿ΀52WkP^7>{51rd<շ;NVNe5jz\)TS`M܋.WLߗ+*iI˻~k XC5\ԃ{aƞY<ˊJ.jOkHCp IyUTLlK\O4p,bSFǔ<2Iu UBZr 6!mEd՜*"]邢-- i>,ExHZKƋz}-(}-Qcd|.?K鼞Ѻݛ[&7y9?;:^ L=rZȁ.$}~sf: tVmnZ;E%hR!ӈ8S쌼5nN<69$1y?pipnHX0·sXKrWSWz2pf6]BWU7'fCײX:)ke ڸ?;#U~-2f2veţ+/)^j A,S])ΰ!#: ~DD]>Xn%2:ҭ%vć!yg=؜U '0SO8&+ԯY_YVczazp)u1UC5[:cl mB'mrЈN󵚭QHӚ{BC@} k]Wm;-m{v۴9_8|I&Gy= $-wi(}PnKH]IL52]%ʥ( Ze-Q[K`Y 9txogvff57=vFŵ>﬽o}?x<o|ï{k vj_IZ܊f]떎|tjL7n6y7F7z}~|6i &wHH.\TdёRpM%&;kQ7ƒU ϲ o1Fi~ ;Fo|W}~ 7C:{>tƛ N >НMэ]]>ƷDo0@(ko  o[4#8 /hK6>2!Ļix޸G_x݀+8MV8G |is:i':'qF<qk;ks=okz|.zI߶x9?W)$x;P ~>lADї #]Qڻ,~@;gEJ%Q92+M ٱ-ʗ-'[fKnK~FJ3+b+llT8i(@Rwv@R/.B;+|J8&SkHQP;-=[:YEIIw<1| a"?}_9lP5~Z:J'[%†WGvv _"hP7Rfwi3j[vjϧ3/ǭcDyW+=yQd .Zo2`@D#*# z Ƚ^<>Y<` D I>׀z E`nPO8? -W)NJ`USܩ?hr4 ́ٺ)7{S9Ui*\[PM|ٕ#^:]@l^Q[ ":bD'=A'l7.sq^ZJa2pju f 1X-ki<<`d@݀Wb#E{Gý.mv=X?FN}3ة.լG$Q)VC1h0jR{:%K B^5x /1ψdUSQUZ FcױS (7>couc6O'qYtO w(Ŗ>Cn h@6G<5Ϫvvv߻4p48( ҙ["/PJ\Cm+y Guב0?G!ٜ'sOume93W,;k!X.U&{EEQ&AB((8hjM0P? h~v9]M M󋝝;9PQ7-š|< F᳌?p c/|>Do6ysޜ䐃%ؙO#gG̝FǜMv A'$\_ePCHWߡ׋"mtAS.5z? s_b X7ZqfDDR/o;9_+WQr^3A. ZGџ3%OJ&î4~*Avo\bϻxd}mLw-v ϟhwB> oKEЉzEI^B68$ZgPC _dT A嘩ГiޫruPVJwuv{)GsثG.$Qq3g ̲1)Vrqv) 5mgmфՙK,BAo=G^ tqv^%ؚ+UE|+4rB̚«5]җ 7.wW!f |O. Dan;sF6qm<&:|]J*2~F>Mm-DKǿ_i/%sUQ>T_֬d?2_"Y y%zONm,v#@Hmr$f+iB_JҀwQ ih:ɶZ>@5+|ôfusˎ귂@9mŽ=VC7xXߤ,g $&F'Vm-|H$.h${AR:Ѽ/B:Ic#TZY~CT(^1=P$,#e,n-EHVGՂfT_e Ny. KfrɜIfii9@&}Em +FT%L5vX^2% Vz/jusى[ ,,"Kz!GQ,⟙10?GT3yQ™Aœ8;gu)CC4]}n$ýtDT=x^mzTjlAwn !N[=KB24 \Zd=-T Q|dXz%M[ZqXYAsњ ȸ̲}er|!VZXy.JmԲȧ"Y^8Zq7keU@.p*ud{lЮ4M=<Aw{~g3[` ENxةPEg`0 @UѷNNotςF|u3INX.v\=\it@'Y%_c(LrYb~jͽANnlO6Lo#ɋS(S+<_r}${ V;q8`%Eh,XђA4Գln ˸y K8w`,EE#-aJ8c "'t#p4 kX'?Ljte(!>8N/t69ιwLm%sm XE,σl(?=S7%Fi"*,G+@j1 CW3*Aa ߀2Y#ŵ\7!ٛ=/{%rQOLr<6ERxs N{-rΪĶ\ܛ7vж `4FVIv[Qvf2jM q\T4>jIHe"WtjAl!WM\!r4Yq`™<$@ :e86h~ *4.yМh"l0F"OlX*B}\ya' F η}*v3<+Ji*@gbVkWd!vQ+pV>Wô}vu?ʙ Jt0D5;ET>]LV*RM|FP!. hn%`޾7;;潊`Nz,f h*V$wzbH:: X,E ٪u|8^/ xdɄ ,ڤ(D 2;2mVxi-X?41?1nNiGir]9.]r1 ?sE-; JH:H&|'$s%3e Ӆ%L&.i]Z?ٌ"(nF'\SyUt[iꧤًsON<5o?R\ ȝreoǥ!+p:8Feow튚ـϗgف, ;; Amۉƒi.`4:lǕ+6*gsc|H淴h_"깠(\+ΐju9?ɣ׈OB-VZ̹U>i6$ k(G~U4c@'ei<*4 Xx wXKGu&oαE*"mOܽ/P_ڈƜ6ҹ ԫ_x#~[-rShWGMN|-M(f9YM[Y4R Z$x[Tԏ8Eܲ>'GÕ0=>zE.WɸG!iy̙Uf:'kADo4H;J4NWtsBM-y ۬gbIH]EЦ"Vҭk*9kiK?N39ei _ۯ+6WY @)- S|ퟤx) |pڴkj[Z(8I;U6%l͍R8OӨNʘWT (VDȲ*ؐRÿM)ּf^ڪ林좮BRbmbrω[ܟفq8qJ=S2:vK %&PqNqIeLqJdˡƸҜ≓q8'MlCz<|| dTC-T/; %BJ|C=ZlvdyO`{ f3$u%͗]f^ID/PŴͪhʼ 4c t\Ru%qx;@@g7h֢ᬣh+-'f+M|R II'&^@*s .(UQc~![zs=wx#64+9#A;QL]Z\cL2t<,pm܎̓@"@#B{=zLz4^WM5}|oi厡Vg] ;c-C%헻ϵYk]o$si"J%ͥX>ߠJV|uTuF|zP OX'$$NfmYdvLxvJ{9#WK45eCf1*4tZX5inhť2>1FL/u'T2D[8vR`טA[p Sfv4гYxWv)8[ٓl@)#H\]!wlU˂90[dKW&ST.Pٝ'U(2XJ i}(F0RA<0cM<\ڧ$20G<&5[R,$Z'(sվQͦP-2! _PM2̚&Fl q}(dgz:i W_&>e9z6a+,g'%!>q=ىGM,QPI>yh֍K.ȸm?"emC ԰,t:u~߯R#V/Vkb< Eakj„pj&5HWs>eY(շtPm΋s=xJs ~Qg-tYK$8K^3 ^w ~M']k@O@rdݹ86N*n׶Bj<+ۏ.ǶAE%0k] UEjieeRK-Ӄ񢀍ƭv4gxf1UWV{f"W1I3Ӹ8pU(U@eϫ}nɲ2Bqk3U (а <,7fѱa,7{fŽi#[%U^" Mhdt4G[LnIc"+!ߨ^KE5 h) ʣ \֧sJ9AZLN&tj'i=vx >C ;JZU8C͒)>'L'/Zvp1iO N[k3w@~i !/ U\ UݐO'V twyʻAt'" ~_3j\ZqAƝ ʓVU W]Y ⪻ɖB:/WntTԝ(O/=87fm9pO36׉%LP{pCIR&X&H BO B*]Lyһ*At-7A/ )\ E&R9-ʯ~ɒn0zi=~~@qƁQԺζ1A`eR83mOO򌊂0{8rgju\unn8~G利݆8E}~ dzճ X)Bw8V_Z[@AL) c= XtJXDh33h7F*E#Td|Txx*KaSTPX qe3elf?n5O}Gg-x5-J+/9M0գn۫"ۇ2AA)G"ԝX_\$ɝu}Yb)YU2(!7e!O0'lY&_O }Kz]ag|8SӏwzؖiӀsvo! W~H}^AI_j̿rҽzѝaC~|= mkOoˑM}[mJD3LFa%WPIX/~,RڈaouYN`>W zp^?UF`Yw^;Dܿ>""nQp\!"x?MLW4E2~ar q/VZTwhͲn=7|hՔjYI<ǽQF+ Ĺ]e_@>\>]༬?wb1)\$Hj{FZU :> ߁|~<|3I^ۭd-͖)\{)&"V̉kJm]2eRS=Q|Y0o_ ] J,TaC\4׭!I$A-lVZ'9P?]Pۗl+ pꇭg*(.%9*S.=W50^2ՁJݖXj,8.2R[`Wz&T:.++:]W^~lɃHf5tn@ERJӬkq啨kr~4M2E6-4ZX6n O{^ګLu=o 1)X8UzTOnstK=K̐^혗Z{gaPw%sQQ|l'm7}o>%;F _vs:AkPp)Ru&=&h5`> =冉#'2=B4Z1B)Ay|ۛ 0jC%8VZQRY&7M=ViI6|K[og6{NoͿigM7 ~:_/ص!v>IKAxAJd;\Ujdwִ<֢ɂ r㚆{*]"uTO^@Ƕp/up~gUvKCPO{]%Ži eO|I55WG%!h-H 潂|e`~1)Phi!Z r}?nCf/l}SruM+'kȮ.2SWExN%5 .}e9{}zzvq-9dyA5Ay7h6F #xֈK[ƓeIaÒ"'5Ԛ7X|::4p9BŢb]źF@u2K*z[Wc}WW*AJᑒ4SFN^N!5՞*~i>kL_]M:^Q `F32Ѳ5CƓ&ʔQ腵=S`~V)Gc%` =P:_r!~$:r /X k?ÚܾCpy.Kwqb,d[4/tY'ؒt>ٱ0jZ|}RZWȡš$!3*;$TJDk^p%yռ %+rB `HhM8N;;lGktFS[բQpM^{k2O gI`NYp`pP{Np*_JɥbqHh24CSFo5[Qj׃~w2ڭRJHN9kf.td/5m\k8`e&yr UEl OfHgUӜ4̡;XLa={ka}gx~w9]N-fϧ8UhG6ܢ"U̼⪌"B#_]$pŹUλe"Gןn]ltr9(e*-5҆OH ,iJDKR t+Mh\%T:9i.Em&qAww0=t蝐7K BBVUoi#֍icMcC&`k!M Z&c!["4r0G# 3Ve*yTI^7aS\mY"IJfv4~zzn>qD@ny!pW2ە,=u4-`x5u`Gt}Y(itB27$IR9lw6^F 8Cv1!=±!(똯i|s *j@ٵܚEXר({5ek/e1+~2'|e.:͚۸\WZEbۄ8ͳR-OC>Zق h=#G(JUIXbC t,"FK#ZlA9M;:e!P_ԣEP~FPWu4K./dqs WV]?䊽,]?qK󋓝m7ѽ;%c\J睻R$Xe}#Z+4MZj/1@t>\h;tsp`*,EZkPԧa%"kmdpI_`!'k}>S"xߕ7S63IF@gVw16#frC?-r~%TEtv>LGOUŮtK1 ĖS׉ L%}5+ t?&&Dn/+ӛ=R JUę*͜3/b┺*q=K(ۻ@Vd5ml6rVa߳7'@ABYݯ:#//R:dί2-8DʀhBer~DV1.OVN2yʷ\.&3{ƭ jk5`4 귕*Xrtjϕ脦cR ̔-TK\I.Fv(msKU A\rj3P6MsQT|nMVcR譲q3ܺ,I>y3u,pn^٣||`uhBVE4y4bz0m-dGq쯨 gFq$%) -\A8G% 0W\ƅ]uIB;]ɺ 2iJ ]k]{UI})վX8h)M+]aŲą9E\X 9\EN7 rr9``So$k7Sp)E Z: |0B9dfyVAV5vmɥFL@9 7pໍv qLh%TqЌE$iu&-Ub1qW\Ɲ!ZVG\5PƯ|6 **,Uke8{2@m/{^W{Y5uD hn^V_m&оZ]5^hɄJ+EV\ª2uT<e=?DFl2 , Ŭ߸Hq2y^u̹޸:GO-f _rǁW1)]xnO;dB"N\\Vf5u#zNfiMV92cwHZu[jdAqR?B{3Oqc7Fk} Ie}#>cp{M qkEԛH`5&9J^dمb̘rHds795iꚡs^@wo<^ވM T%? ]kZ B'xnGf&<ħ@F畖R ȡ5V._}r4GP1xE#Cȸ37s2oSW%֜bP?yoéxe3rϯFM&Sa}'eDZ_EɦF [yiaRgУ/e{-&)XF\ߦ;ĸÁO8JS EVI37  ^DbܫZHziY*HhàQj z̸ZZ6q9:t|/1(;poY]=m3{ kMϚil @Y@*4kP, p? < 'ɵ$TyCݯʠ8 ~V~;y5])y[.MBJ|d(_Jz3⦰roP&^ Af:O9q}Išՙy@+Nl6 + zanqA i;`pUow}[ړ`V@44jфд&ȷ<Q$5amFH)?iDQ | ?^lA(MKDҜph~&5&T[8tآ`;2[d- **b)xÙf_ąE# :s>/f#R݃dBԋ Q\fs4p|wh,#o{ Vzt+J8G .[xygDwN2kKv/*Ֆ090ׂ)ZbtEVb>I á˥|u*fŅbB5^0d]\.nW <oHMUk2>)BlLQ$#_9f ،7q)ma{}qG!'/uB`mDP보ߡ!**IZU5U X^QEI^?=v&BC~@} #YfZ`W-t_ C @r ᑐ;'$$<%1`rLX`f@&{J.u˩֣ٙ+5:^Ѭ>E/n\=UN~>z ?Uov_O~ x뗽Zg0vtjo~v6-&<'q$i680~kxb dϢÅl$/w[M(ᯆF^7TO31D+<^OǢ(C >/0_9hg#/=y#q{tx4~W|[^G;/|×{ ־D}LW~/BdNZ5w" '<<@TC U="( #HyٗtO C͌ݣwۉ;q'O8xG\p{$yPͅfI2K0~B0,&ď1C?4J.J+s X)iRP{ b-`5Bw%|hlMUD ?S#U^P[a12k}@rW&h`ҥ0=~3, Z1iVBuΨN& Xk=F*ٛ!/,kJ ?$p @=6S"BϚDَNM[V2G*H&MzDͰrk AЀtۄfxS ["0ZWy vDKs0./3=EH+dhuiww_$,`V~a9Ve'\  ϓ,9KnPe2 C +hG̡N|4=VV@,Adne'~+vᠵQ`t#9RZ̫X#%1ȝnOQ #X2mFtH,hmM1Aʠi"ًȉa;jt#qR檁?7uD?y}4y} H^<$G&: ʯh'42]gu*3m۾J ëK.Тπ}Mhn "k ZDS\LR'cWjkdآV,HO:DDT.Dy_ܚp6v*6hbrK3濬㙯EI3Sh1:d3 u;yʹ 4 h/Kд BQҳDlE+$gy$ԖeSIΒwL6_&hsOC#'9UjoV胵Y6A4C6'Vӟ'$n$h8Nn.Sld Qy:8R!|"LxxƐ|Ӄ3{Gc>ks  ?%?R b{bglټz"lɩ,(>"iKgr#.l6(uUgٵ^@&lJO*^lduGGqg4Qb.]`/}РQau`U׵hGSKλ"g{1o u[̙,ZaR868ŐUDA+dY LM񡤴GFFiPA' e@]h X[r< 'MKݚLJJ5!b5J\1I%* PƆJaؼ ^?G7V 13g#z$6h bG_`L"/3۠s5p-y]<:L'j"!I< B~0L; ?6F^Z͛Z_;}-l-P?"sZA;WRͩKqi%(;mg d1ѰTF_d?1g@ũ׊cKkeWH˭lوN(Ig lxyKwxxidShP/?*ENx l /悾$@r\N6TFݥ ]vH0#jR2 +{L CVI$LBLK["TAӏ^y_9 LUlL>*Hg΃(2 Ehm< I(>&~WOjrb^S} y/]9sVapyY7wU<{ht*DL-S*~m˺AK0Dlb|ٰV*} nG8[d*]&LeW~(5kn)x2t/X7|>Sʚ|KH-=<5$Kx18F<|Hq3$[OUF  r&dǢ]+ͧ Wo*_l$j^53&ウhct%ǚT{YG52ϋy[雡F] ?k5F2QE}P\gH:|fxp3:p\~{`_pn-ys89جa*h` Q"l'gRs%$X`I0o/Pxc-0/Fy<=]N$?w ;ƥ7 O?-Xe:.Pf@4C'X%fOs\PZ0"aÙTBcS%yJLPqᒇ oQ3<,ѣRp:jE4 b &:tP+Ix=;QJ KpM ?[.q]kHV G+ #5{N- z֝V3pW%<#;@], 0VaD:5$puDf k(.9'`H0WAE:޴7$Byxr9<7cx}M-I F6~ X/h)R4(W8ْQt4IU~Q$ꫯ+^sZqGKhc6G@c_[@}t<e xޜQ7z;tl$vE!XW:3~n^MeJ[G5 <^@L#OӃQg0T⦶PZZ :>OZ=|$odѳհr$:HYK%mco$4!'IŖj.y" 7 zK.O.jp˱L/P3PaêXTiN ɐTaT?oFq[aC_XX4kpuw_D EGg%L=i L!l/+UGʫz (|LE0`!H9CpVșAn%MvwoP*eVa|fr%\~:([sHOrؠ$z$V**, s[J?\>Uwui&sSF5ǚ -ĉ0֏yq7"K%M(xN& FE)ǗH-711W ,Wf=ư0a !LP:BA9BH40-U@QS67@%%Phkc_AV %MڣѨs28Ո* k~PRmELV(šk+DUir&%Qⷞ;gߖۢ\ ֵ[H.@Xߗ+STR7Άr8dY%Q$,8"h7Oȍ~W8o8Dg̍t&Gm=`* )%}-*wΫ7|vJDȳŌ. 8Ab |fN*}63C属*hJkO6liXJEJEH﬉!/0\5|AōkC^yg=Y{~]MݓW/}իuu:o!ط]~LfI:IK<@Ա(\.la1K)ʵNJ0"9AQWhf)I#  LR`4J@|;AʈWg_%Zr `)FuŊa;uʒ%!@ mIЄ>\\/F (qJ+:p`&yq$[nr7H3su4YGq{ur_̸HQeـKT+˕xXnQr|-LsiRNPGXKmV6i|aAd vKiaN ΀ͱE\Js suM~=F"z#Tِ~¸A0(AC 0؃QF :BD{VD IoFPԔ鳪,jPA8\"%R5nРLIG ̔F _@ md&YNsTJ@Q1 'W).`2U~ Eb 0qFcݸߋ;*ַ |Dar۩}>[$M_i$ͤH @ foL  ,$H % @zG)RTKH̄I%9>|,MQ*!]-0a .M 8ԥUd0vFxԉ;s~`hORcG}O=Fb;nY1nwhګ.=xQ[ ^s3IOq=Fiۣ2jPL/uCj0EVgMMFsyc-|ӈbEd?֭ɾ?C'\rs&j~TQU\FP.sQhlRJI9*ف [q,zf?{o?,X tg ~r5ֹM@MXLB݌C&p*9FcRԃDz<=)H3 \$kU=\Kԅe@d{'ݣi`Y?C#Զ) \ 0kxiA6NlV| 8T xk_J3wAxF8}hhRs#P!D PS;`Mhm,-mQnJ7 P̰7QjR`9մbv%et1=(uZY{^E^d']7Y6!uͳhTE)moIpn82`"Li DQMObl;I`łO8g(W;g✥r+z!)S @{V`-&5ZҺBF$ЪRHabR)x%6ك(J\EX̂ @ԏSr0 urQb 'ཌྷFQ1$bQ ;78Mai&$-3=IRݣ(L4FL#"EP(٨3LF=Pntq i"nזa4rH4j[M4i`/Lޜ!(SLqC&İУQ>-)&tbf%ʘ"(č4B7+e)u}tUD5k"'@4Y'RP3,(sv|e6ʌ :H*Vp6\f_Ed8|Y(50PXLj&lc<0"V+oY@0y_ދ=B T['E[ˎ uaaV)E4j {|a*q,z47<J~ g ?Wqm@*;,Fu̻6-xio. >&RbggV'bmG4( hzpn>G> \*&ȸA,{/PR׫p_}ڻe5gQ0r8\ʓ Z:ȥLYpg;[%ĩy鉳4?PG?!}fxx^x-Vk@e7YƎcTekRJcՓ1 Lt˧L˰*Q5GM w+RVpܫ>X&^H/p|M'@z¿VN.W[x(XԵHt*fW8I~P+ȲtЦ) ʡ=}@K)ƛ# qHd.SK›+dKgkd2cv*l_ZsdY= L%Oyn Vng>XpܯMtk ku/2%3N7#L6a'sE nΓoh?RS.(XΓпr'gI혤v\)zPَ%cѮJR$Ixn*B,E(ahR!EU.]L)IJuFOF.&{TSx 鮒o:{KMbrv5.Bp[owSF&L$;O~("w-SySi|-OGpVpU[e# uLIN8%NڡS2zډ*R_+V֐`m٫K "퇊P-6z&\ڢmR"&;;jzWfa^͉N,^6WIPR^vF:uRou/oۆBvkXM0%&3Nˋԉۖ~L6z`X+/ٞcNJ,^N/(w6 AXT e0 G.]&SImTΟڼI_}Kw"WzbwA}mpЖ- /MpSjևHm}h*%RWFdCƭ3la})(//` <MVr 1KxO^ߡgr4vA%DaE "L@x2yN=V LJqW%vnO1{lM8us3 UEVJd:/ă5hMdXNt>"j&n:IpT ϗ<Td-f6>ޔ'ŏDfjlΑ{M2劝`7)A Tó6z4;H4?!G׸odꝂoONv]jY%S9Tv5Q@TAuTfTDm^.~ܯP/nn+nKYrea5j[%|8" DlockV!/t>!j#W&;ep<pB{sx`H9"s{dww42^J۵~+?R.Ε4ւT7tZür)QYNK$!REp8%0.ê=TG5UzUR6Cvڦv'b1n#GqhzT|sr镽9/Xê[q?5TVLN7$$Re- Kmh'6-OTɰGx89`pRbcGS)5E;)vi#^98ybk$imQSޅ*z9%:Dx ƫhlߕgkx2 v[%3RW.9u*.nV_Gi_m$C'}IaFֱBò UX;mWӣtL%W":3kB$u6\]& _ZNg=&{͈+=)XX87AӖ+h.,U<-@g{qMfpm:=V6*n+6-#m|/ǡܝÓA|Ԟv*++C}Q)貈nK>~TuL9A}uuVJ)7oWe.z.r3ጢ<[N.8Y<4N_'ز ߅rnѫvUJ(a&6/x^bؾRl4Ufw`_݅e\"یKO/w[@En:c^g %n+YN^aG}ܩ Q{Z [;Q3)?ZyZ ߂n+cIu (yRg3j%ޕʶf/(ЫDVh_fihƱo/pؓ\P$4J&W)ٴo  ?wC`g@S\>Hn^Eɼ}dpM?a(p-/t7 :K_ U~v6ۯ(PnKPg.Q,o]̢$+]Rݜ_ͣyۑu8sgXiSL J)&퐃vh}@ChrdkXεI.gXLftUY$ uA9 #Y)*0xZ`~&dl^/MS xþqEL%aN%ShgJ?>Hi2_5d~4ds0Mdj!6ggS\^=7³74bw`)nJ=`4깑F,]Tu kGp=MV?AF_U2taZx Ec1Y#Sdz٣WXkh⠍痢)=[Y$'=( QXHzeSb+v1ϳ*OHu1Cclo//?GK&֨-e3n4N^Eɕ"շ˸?Ev {U+a*IU/(@g:Jߒ\:l^ods!=Rfҧ+ɫ;M{[I=fz? `zyH4JIu2 VrXmmҐSWk"G)xH'<$K_zy䩓x~c7//q󎈊5FaOFӬ޴5S16⬈ue{h,:X}S.G3%=lO M%tYlR *լVe)5 u9b΃OKYu,'0zu fM=S/i@)2kXtփ7FiA5ZUD[4/`Cgm|t+[I8inofK()ǁzҋHFR똥4ҙ n)4Kvģyu4ȲϮƴ<#+BXݽ8<{ԦޑZ@3W={g%ѽ9vve-Ŏh̞?79lqY5ag0d˿@Vt[\~ (I v(ikCqH}XL֮RaadaW)}Eu^՟64qkwzTisn[|.tYd0.&hǨtว4}Th EXUy;LTpu+Kg)WN\M]~IM|'g +uᕥUY,RG5kiVⶺ}q7 ?)5p4XeZ;Mr0iLR*ҹu8ܭ&[\l-P/bĀtAU*.8cyQǛ`*H| 'ڗ4?lqGX? 4gԣ([/ۦNuhXl<*M^^$#8!]*;0:=QkXNn hߗ hq|^@}psppx|kw`\P7M'f50BpP-~1#dLVQy8|< =m@ہ0F3U{'hk2[D*[ N F=N{4VȊ-PRȭNVk"6]`iTdG@*Tm x^K}Ž :gJڪmAi[i4gTjSCV[\nF +JMw"bФ Z66{U:/_C3l~glv٨&T[J9I'u[5o(UN6ӣnܙt^1M*FF$MM[Ho~Drm28'fIzoPpQLL\^ݎ0Yq%us/"TnE[@l9괍 ͋h!׭; e4렺մOy+̺vq}ʯp mk彦V8 ^Ӎy_.D7lp1coFXV ޳ҚfD45F&9 #A\^Wq 9H[RΛgbY`^\ i2Jowqpۋ#vO:~^"_)Hkr~Z:ܽK ^YMa#;^]a^CvHb=ډf)j\GI Tsr5,zW3t)+gxBdHW,b OЂoZ٥!+˳P qIW5n3KL6m 2_ƧJ،r-NLh8VVR$'XSIy$!> NBBXA`:%ʪrV &*H 6H\R//s?;KI.Z83o. \Z@uD_R[ͪ$bǓ~R\0nV9 7kSD4F6 •*ƞV(!֬]TVl`%`[zu4e*FmKE\(lK4M%\ʵL'TrfE-L= ޗ抋uR'&aȷߒZt7Pt ͔KͿZZ& j@So MڥG%(zp?[A)N$2凩^SFRf$^ZZ7:O'^蒵HAD`WZ͌OZy{y01{9Z_]){lGkÅ㝮MiOtbA )v5/}\c AsNTsr6j;`hӜe~D ۋ9M^;d;(e(Zfzc.FV˔S1?Tbp7~|ݽJ-w/wpSRNRX (A`xT ?. 4)'J:-:{.Uy#N z<q¤DNw ?' >J ;<J+gnH\qï (8 | ګ~b<;lBڀv|ԩRgKz6ܽT3VyhGQBX*@tCIS8m0Ģ l ̾t+Vk/,a.zq,^> Rڮ:M[ +i!> g%HL:Gq=ݎ>x/> &Uw hA}Am3R!,OiTǝ(/E3LgkZW -WN%_P(-[g}AMU]-ׅw2{-\+r0"|SqMq#F\DT+Ι)-h9/ c ]炴m vVQ\}j`hmMmҖ-$/beZ+~_^ҟ:sёo ̲iԙ Y`Tðeq\yְSy!ag) o|q"!Wnh~R/c?Agm;hHF)0v/pi̎\ņ V Wrvm| .&}4=+aHvlYtv={RI*Ubvl:I|*W ˥ 鸻E4{%)cBbR|ưTa*QHvKe0@T(}s:"BOFKXOZ @ q@ʑMh\@Mj ?6 oS*n;Ud BY+HA'@4AJV&! ՃJVꟂ|>\>eRڥE?N kLlϖ$-vQ#iICz8H=p=>+TLuhԗFrs;Hq+BWQ&i "5d]L~r )K644/J?1 &}A`Pl_WHfmM<khw|ԇZb4C38e_ܑu7Jy e܌>޷-M?GyOpwJ#t8BCP>} ]W$v}C@ӏ陁b@2M!FbH0( H =4&$Z)A  Ĕ@H ʫβV_|>LwO'wg=EjtQX=ϭߪ|W v֏|d6{Wy_7>A{Tڏdz$Muc\m~f:iC&mGo4MS&Pޟ=w*(!'ɽD'1'ĦQ%EIA|okL$l-Ni7Ĺu:"| EGtȋ awWj% h8 H潣QwoD508W:f>=ԧ-ʀjLf%j*th]:JI;-?(il? hd"`VWRtEt6`gv9;;%lE$Vq[R0[zKl9gftWdX \lVԯH@Rھ27NnMv,Puw)9!5C#"DK`rA'4jovO?FcȞ0V-=ٜm?㨲fc֓c, oK$DsYvEcRA^ o; ϫXO.b}ɔvKRϤDRaK( R0xuIVA#%&+3%dN>M?% #MD[Ds>)ՔE`E ^Nhݡ) ,)f`&JGyJ^z(-f7vN>y+(6~ % MHH YQLb¡'xyK(:J3=S'xz|]ivj Qq9a9Y)psIwvUQKN) Qp `CB»0>X d(Hs0DK2E(Ne$ƃ& ::mwκg>%eYYJY=:DM|x ֓o#'Ԯc\H,oj\0f.B#?XƲGӣFZu4gA,*X%nVM/e<9kDeDQH%~X,dޫ>s'r"eb(%+Z.|#D+ؽ5F}%-9jc*Lq)O I}%SƆE ,?7.dkiWkTQՎphP$WQR3oX/ڊ W ?Q4w*%Ro9Gk8jZ(,["RHSTbSsN-xΤ2ǔ,x:.i).NgXџ -łFүU>S]ް;peq/FQ5!`8H< IM~,RrHv#/S44_Ls#3 &PBL`;ꏺi?4TCC"?2nξ9hm>wBKxmFX)V) r!pٓj=i'S7qEHHޢP\S1K@) V~@+R,.OK.H,5*M@c)c}׍Z_X*4p ?Q2,cWG0{*o\(mDS izFe,VQVCړkyAG#5L5jzc eo>@6Ed5"V#{Oq]\[T <;dH\8^.CUR;'+& ,Q$k;%OTtS}p~wP"'jUT[vM@#9Ra5NJ**c+a.7Ӝ%D\ßa+/B^Ix]ٛ"zpNX&a5^Iʉ?B?dܯA8%U&IS̨JNFK];"1}YNIUH٣|pr9)c&'ft>["ZlO˂/ T 4sFgu#BTl@$}%[~kb+3-X|j yy4d~U^h졬YUz4G5'ZTa5+oGB@+}EƒBJy@p_e]- 8<&4/dgDu~c%OTRwɽE'<>%0w|1u:l@BJ{'O0/ s! S97z3-E jEm*qrpڄg3%gZ. ((6:޿] `3-*I^TH,VNE5Khm&2e=r&˜V^tC16I$% qΨ^FJ]q;0j))Qs/NyX>5Kgfx1PMcC-Т|&2^xi 1UB*i6|匏o;?cf'Ⱦjd;-f^*J 94߲(8=B_*\PC78q[*6߽DJw:4/#&ӕ%(x#ϛv^!7|2+P>yVMIJGbu~cpK/.nTV̖:To.Zo4[fg[ҝ;dId$4owNRIx.NA&Pps Na$Q|%|kfD>޾+%gTFCJ*\TJbIӫ1i\8vǽ&EtQ,S^-+<.LP2?Gý$̜##;0B͓8lFWp Ͻn;H?MF=ʘ%퀍X-v@40[ʘ*-tX6⧈ ů9P]C43Uu_H]fOZ<,g(ah$:[Z.邅RV8WF3j9[.:u6v/bcq4#%7pW͉n 5&SK{#,Z%J$!Ru% .Y6VGҳ~_Um+׉HߪFT6WI M FFvTtKVWTǶbu9 !b>pTR0q2XO&-rہ6v$IDEϸ$ØTc^9=z%2;ڼBNNSHo3YAnN87Qԟ8)DvVYwN?|UÄ罙xۘI ɷV:M$Ѯ2 b tR+#ܽ);6A!GKQ@dPl`F#1.)i܌x0e8;QQ"Q,nx]*ΰP+f.5S޹+Ŧ/l.G,^@VmW l7Oo%uiAn'QĔ.2z~aC S9!4w4s+P_WD >%_H$^= _'s({rQ}5~b{O]&y8C@mwi[i wx@ 'ی,3|` ;hbP3YF)S»),ðZ&i7> $xҐ)f"ɲvڧ\y AjϭվI0KzJSq;w[2ݮ^܁Oyzܐ kɭdMZxh ~3%hP9 ^ : LV "쓒 i()di9HÉfh|YL P5qNb),_':5KR$~W \f+sTwCڋ&nMNv9 HEbpwXkx7 T{|8)ɤ^C&Hܦ*)u,&4KXTnIIi(j%\ƮC)#PK24UB n<B z`tNs;'_j$ -Qt'кy5:ߦ^И9Ihm,-B#hQ1FŒ nFkBT,+-MX? "A%N?=:3eo|~mu/漄VPt5ozSosy ,BV7z}ܷ<3$LMѴ(ӷvjד{U^id:{߯tRv 29φΗ07˔` S-g/憶$P?`)[)W}$P/d']=zSO.I3ba?WCV Rh f24 =NJ''"Q܉ϴ,(Z@qK,- SQ5'f$ [2hd S4c~4r}"w}by@;vCPSh O)JkyDʾ)XM,f4d@퇧bi-% 248il7,Ll)Eve,G[TQMwA~`TDbh))Y);UF}*S!"Y-Q3R[MF6Ո2:a_luUHD T{[.R}Nu!Pe SILnpBB(ѠNBL.D-r"[+$e4 =Kh>uó.Q,9O"$T<zXF[1;s\7[-_G!%&p %"Lpo4@p\jtf*rQ5,s +ib:qYgssXsܯpՖ_@Gp:n/c:>2Hwuc`#ȔP@ߒl4KGb / FcR& E(DQ8y8rqEUe|ZdpIk̿U࿖aNb"fмhf14)Œc$φԒNJ&\aij#)~0j w|"6IGu;)?1 ٻ$՞~M6' uInҶBc41e]Q4y5?̷u,Py0=!/"_EWϩ[{sT0Wg0TEҐx982_[P e5EZ .MR7 0N-L$Qfk 2auV`cHdJ _Jz Ts|-[ H ؋ބWࠪGH ], RT2 \cxXqgFBG)pJ!H 1a]~&b]=jZf]=?:-qq29ȘyRU!U >f:3B )\˘I5?[\WYSS+;u]܈`.tt}uiJ ;;;wᇗs 22;ڨp-IC/Y01b,UpPkFq2sP2Nbd`K+l   g!mިw!\߈dj_ÕYd*Dֱz5K8!_iwhO P|˜QCJ K(a#,[AJqo{[dGQl93Y,MnW-Ӈ&x`5&ZŽU-ۖek1Bɼh9h eʺ094/͏FS6nȓznϡ{Kb4 >/nu((TAog3b| }4gr"N(n.(+V"K(J448ȲA`^翖fw7դq?^ h :)oߵjpm6OD2nJCsvq!i2݄Ƌ:@T9+16he>QuhD!UUf0k(kfkMM!խx[]c &%%O9mʦ30Z+VY7;ЍDa8(N}o#nF-fA:a{č\. {,i6[]kY#}zomSy⥑q.mq2gr8ղ ~K5=xMԺm↦Lq4vm, :xzh]++ʄ?K]f[wo=_f yDP/YdI@B 8q^ʵӎlMor̎@ۇgeXYD =Ts ss}|)VSE,NS\nCQ y^ -ǢZ]˺'W`woJPe9M4qMӰm)bRI"PoU-}1 s=,—[ _'N^tU iEJ%Z >K6J#p94EE'YKFOE\D~^q*8L dz+NE\Lzx,vA} +ld x^O}j1ە%(i,-dO֚7)cHOadyX*L:zgf&/r F0u 4;4>pn<Jy1ŞZ.䌲u_)yͳS4GSҽZB39+.S͂6B+U,lYSq7jѲ!ID@APWωDeWSDC;w$$[H).sWSk뛜J;qo|.wQgkkhR辔6!|,tqY"M'Nٱx.T:iLRܗve Ut/ `RrVf]WOל{7K(j4M@9۹~lXiY2lWJ;Ľr%1lLqMb0YmhZ2SwAy)B}Kk 7N9s/$:3EոMS˹K䓔׼gjtf\9^AM #,)ЮUl(\Z/A6Df9P 101\Ԗ"h=ۧ}lT>]WE$`ՒzW=akvRc眜C\da$jT-8d1W[׹6vhҚOR|j$w,Ki9AINlN)Wx Lvcf{hR>:c4b] OhqVYcDWLtNXxʜu|u38*9SWF7̜޹r h cL0օTLD}9,n-HZP|{J4Gsz!bzk]&F.Ko`TI%q:_V+.wMp~VYrpXh&ͧtu W<²,xCF\ ;;5Yq:.%=qL~~>jR-P\Gdg+weᦠ6vo;4 a JKxADW &^>JTiG4]t1gZmpZ; ,Qq6򿅴8*^ށYBgz+hUk?JX`l֎@I)rs1?0CcR7ܼoLƦ,;H蟵;UN9}j@ 0ߑt˖YW⥼>I}x9iۛSEԔ9t)TS&O7(ʸ379P܊0-ҧt yAD"k-~|CujY5A߷xDDq99O$ʔbNSl-wk~oƒZӵNۼ,;]5_`A%u:5vH.[[u[;kkhMnQd:H=Jā,8V7cܴGh#W7Edd27A-dR%2yXԽV9`Q^mQemFTvX갯y)tQjdGKDy¦ s!Z縉B`ey AsOhͣbn۶!zn МO"@AIh,45D 1DKiC7ߵ6xFf'. cqi:gZpxkZE R|%֕{xd'o{zD7ڸdoDa_!Wo_[~qzM1A'u?puNs-W) 9aq;%{8A!}lEK0»5pCֹ쏖:+yjd9]a (j@ SuJn-eҗ8ApB M,w0b`؎;X[Ź1Y5'|[*о{^BIgU]Z(mh2aZpZo눤>H꿪Ԯx(;t|gA|t ,?vX9x(|/'1uB聶[bk'RNxeq΄5$| 0v~/'Xކk8>6 Z.Q(d1| Xյ4nB)$( eѡ\xdMG"h^ح3.•ElFeV-Jnfqj;ptݹfU[Vj@6po .E_H\p~NȖLbOl[.E谩I'vv8bXMÜWaOә [$e^tV$̋MQ.ex=[ity <7'ủJat!@RO:rj8_$D*ƅafOG2W(~F+~z]4of>-˅mUE$j(H#Gak34M" JB|Cfw>Efِ?A f%}nXqC$~\7ELe1\"[@mFyEINP.6[;쭲g#}s5Jo23T7&uJ b4# B YP4d/ukZeiHdw^tJp$m ;1]Y:N #G$ؒ xr:$16QZ:M-4(>)0 lc7бPt6 u{JfK\W"/l#|D*,-%U S<3%rDF `gZ+-sw}D*ɼR%OꦗSV\A+IE(L6Rm>eJNZ? P_j ksڸ7\>iQ]ǔy* \]qGf0Ykz~"ֱz"==Fsi=z~~|6y޶[+;i6T⡌۹y>(If$qψկ6jg:NpmLNpTeG;u7WH;3pɲN1jሤHj^ə$f9P 6LRq\sΧla$xsj^eTKY;TzbeM73pxĪVp]RC9N? ^Px~R/m@5@C^˿}+>UONaW/~۴(YgԬۓEuh1j'>9yO$ӓ,IKuѪ^Ydqǵ )kꓙ's's;<ߜڙ̳Žmd;5fc1Yyښ< #nĖׄr`lhy״Puh=;p%l/l?WTc{lOP 7&$*,tgӄ^~,K[uƵK /(|I5}Y歳]Y $0E)dr`"m@ʐo-%0n$1"`'UZD8Fġcпu}>>w?GEꤴARw0dagz4d_ZSps;@IyY9ԝyP_BnZXo 6e}O}Cl:2RddUo[JMLCnf0w[_>_!hD~s~J_]4t̔fy|\aw^!<_s";QJ:eVIOY6B= cy|ƝƳS;~^ô\@o-n퐀;mh;NNd>;׭u9̶tcaO[+4,K+gyuٗ$u8l 瞇/"g=.JFWitq|ЉUupK>xfi:s{'ۚFp.AhJeUt0IEңd*":hodpLoEJL,_Y(n7֑hZréV%'h̡Yo83r!5CȄS.&^c't9pB}tE MJ%x' W̒vÃδv`Z3jCըѝ{-AVE1-h,kA1&U*Wn:չ^[v?~w\5g/?lg3dU/.ǜ~mVca .ܜ@bw1U dJo KakO(gΗ7~}`*>l{ Iё 6*EtC M'iJH[wg WP5^?I~{|@qՐUgN~@3T}Wrlj`vvrѺdTŬ0 o?RbމWm}/c6Hޭ"' NxyΥK[.^96tiIvKz_=&t1ik4Kt C9tȹ'+Y/)RR|eC?=::9rڸ>pp=;+Q~Q-QZIOJuiIj%:OI9 U8d]g;: %jgGIC%8ii+Κs(goRh"ruBh8Ié|ZWwJ0 RF C+' r^gag|?_=knֱ߫M!9Uj>T:Uy6k''Q}bGʎRR i(LS'[@$TDA@RE(SLcPzOEZ!Ao6{ %phi!4_}oUBH +mV#'߆Åc})g`C]Z-ѹ>*Qb~BXB YB3J4S@[HVB (`q=N0R*ߔG*U:{6nb u uV;q؀*끥P h>5#麁^Vj7'X)} 7'gg^"L5jkDE-F T^"%P] X[w@uczH1:6cDY~ՅZ :xkZ^ {!`WpѪ D7JՊ,GJe :sk[$?#ID19(B\DuT84Zu5,J.E*=vˮ䯔d!DxٜU$1Hur^0>,nz4oi%]VW?tсWQpkp/ԓmPpj%(VLp"X-o>]lW;4Yf"YnGM]PRXt Ruͅϵ> Vr0h9B+NINg~=}f ;=6iwǯ^ut:GGǺN|ȹ[gf޼I丱 9+.LT"a"0@u%dWSOX5>OH/'1_x t0 &/uRRU 9g;;$fRwx 5U⦮/+y#H``3.+@As*RKh.id=dz \pWȑU:b?9oCN/2W 壘0@PoJ} -{Q6X]Po^WIysPa*X뎶 ~}A!.ط1!1Hɽe:ﵤݏ%,zws|ʡ`34uh84ΪД1_\-[L@oS*v0NWwW}99uCkBƦcW X|5lAC*,2:DYj0΋/JYdyblQ葦!:Pڛn٣ JPG[W%WqPᴉ尔;VCp!EV \7z<6,և:qFԻ\k. 3 pŠ+ǠT /45WmUϡ9F9@SG!UpoR 󊽉i%xK%Q6Mmb}CחQw%*U⢃ =jRAͧ}n9/Hb#c!r=ttN#zZҢR'Z>B5'9.xUʮ<ԤUy)_CP?11KhnAs0[-j6/8}kO`Z`. 0艭gR#{Lhϡ^ {&FfOKЦ 3%%g:|Ȧ9âRyXd&,8 J s0pfNN{9tl%#_J|e R[fݦE I%9\3šPW!N8,ҙ@}Q7yvH+*OOۮϱu8M̹7 R%,I'c$,lgⱁST#htO-^ uʉ7wA{AJ@2^.JW;@R h/(kPV;;782y]h)5@Dµ%lSW -̰Ea!n{~!}!jD9y׏̊@l웜`Tp»WS$TK\RzGmp{&1rOc:IiyMbB *eP\Q}hĴDK|3~^q_ J={ q~"oHE5٣**_at R1)\JE(> F+9x6{>dx.EA"aE,17JL(As~RN9p`Ly!QGC rDt^*vhPA*b+DJQ)%[`;^c0É.DLWiZhB0ώ:Y c. ^]HwGcSzQ?2XKqiZcUz-W ng6}C;ﻪui )܅-ɐ0k'2D 3v?Zs}^uSWzӛbDQ.Pz|[߫[`;D_Z+qL_l5zRo5+M:5=S4*Rr:5$Ms&u*/q[\kЕeKf ř?wڝM\@O/("s-V6yɇܮqnSESRBYI %?{hZ u՟.zO%WߢgɲѩRaHhHx-{ђ _Xl^rۖǶE-gHvd*b Rgiw-v3n֚v#`֞zu˄Ca!4uQT0/3ʓ}d,OHhSIT<~Y)M) |Pޘ$N~=w)f;YG|ٌTJ?"M#AXU4EA V)I&6({LOhUEyVzTjC/x #^P/"RSip8}4sQ?P_?F<Rdt`]j4K_7mn7DߕROVgPey5A.Cz.2k tꀐBK|o fkA"&<[ςqLk*'u~RKa-pGnr hi>FMI Q1QD%j->Eaq9:cd*\V6$&:g+C^15'۱*XԄYD)j7mcbiDž#aHހn;pvnɀC+fájG{HH,P_)[m@RR QY J/f9@SQ BA(Px _%/qSdܵ9'Q-?lK?rh~csNws4-98 |v tnNO&'_% K£R\^@ˠd*CS5&&LT?S`wp ΕB^p?L{:O<XVﭶV[pKT/Y2K :S/QGP<5FM_hc݋,xOQ^}Vr%:x('X?%0j5'Ǟ3i?WF uĵJ~ϿgbQ1HrԪ6W)Q?Tժ@*RLNLwGÞ sj)"HKzSsb>K;4GM:OJ-:w.\̛ƷJ ,El\Ϙs0kVssT/A6i%һs}`6nx $([h|YJ sP fz#Mz p(/:u1UZrIYYb|3"6?/.w;9}MG]ωwmt#暉M+^,:"R޽U&F-;[`pw9P"oFs[k͓m#h-TUY5 E9#ƇeF̖uIC TQ߈w00(/xyf3'o~7Fsn?7hC HXGW.3+c{ث`ȔLnذnbBgG^Up(Tf՟x c>0#mwhHxm,V oOOJ'Yn朦.əK#¥?'CXpḭ,*b Ƈ0J{k}!ݿ dGCj"3GURZcTb(@NQ>HPbUUr4ka%~*ߋ޻B$2OlArNs+sЌAj҅1ia6"S wezg%C9 +  k]p%&dM 5/QXyZ&!}`SH@]BWy>V/[wsDo1e0uzG$:}&h)'WlOH(AC'*W@[-D%ĖyfD^esNbrE?6>*˥e懪9@SDE0=bN] v:X~k*/_ .EN^>2u9 w6|$̆1q:+2KO4A'zO@+s!V$27ɫE>XKXˈR^dEhQ*)u:dC~ yKN{IjmʉҵʻTH|29ic6 ?SYh/u{rbr.RSZ&̕m|OTgSw^soDRp7%+woJXC*hf%l5 ƇGtۉ/*v ׇ_{ j9n@桭-XVlHFH9Ҽs>zN5O,tĀ 56JBa%~F bTI$*hg['BAKowk 'l;sc"LgkV|ucq#xx,z>Kht67ѬSE*-kvX(VSEjZPWجq:n:Gu,jk%OǦ| nݞ' 2Mʥ)EuwBGc#OT"Nc('rXmKC"Iyc:.ZMK*?Lk nJPu!E~:484Je':lذ`<.$OcedKcrm:컜>R- kw=wswoȅj"g.,"h1I!n)&ijיq&n5321[NsfyUb:΋*hZ\Ju66))Ӿlts0't|RD,KL`KW4r$a}kIZE_DSFv4Xye-m;[.+kd$OUBѨ&Ԩ-E'zu=Z⭉^9Xk乗o+]w܉7'/k͆=FNΛs*A%{P-.Bk  e d[tSCsMn zv-9U^]Q{)'Ei$M4'py9gd^meqdt0GKiR_ޒ 5OFӷO]E{uhb,5~F:h5hbSB`"j*FI)]PyLfF@rythbx)ϧZ0gNQȯNEQdZ4E>G0 )hTY OVلK>d&h5HJBv`P B𓰤"O{HA`W&0tW*PFvNr,h2݄r *#pTJƐ&`aQ-q֝eK*Q:’^chvT}f$?WJwrq uR>6t7=uba(]dYep"naw/Z+zҠFe9C 'VlҚ-8J(&< (d Wb~!jD%*\l=i;dڙv+T楹 sY9Ni1e="Dx55>f]B.95Lߏs6MHT!e˯Aդ)ǝ& WrܙR i M `~ÞB=J^5K sU-ְE{k r~ϨaxN|=cSu>;y4CT2! OC9#F|7yP*O&cζh<ڝ1kk $?tGe᪸joc-5ZI_^FzQAi;E;M :4ZAmrY@K E2a7;jаO7ƇXRܭr\ -'{Y62;[f`n0N2y͆Ckͳ; S 8r"oXK΃l3 k"'8B9^qG/O1MfMYLjKgڨ׍!CuT|P{7=߹B=P>ՓA̖͛jdI+Ex@) _3/N}Ҝ LYQSSPnwzú_;v^Q"X9`u*ԎZ\ky2+B"THL 'eߘ$\=R,S =M)lĩX8İZs<)A;>Ø|Cxpqd{[wgge6T$1Rl+{b@.("& K^)b}|NI,;m=Zq ٴa{RSA%CVF 9:-ʮxr@r*yeQ'I9c%-7Ahrɇ#$mWhn$vufl0 )U8ǫ&\]A % $&NE.WFF0n|>ŶɌ'c2QS 9Յh.Ԗe<{~V/O Ez'?]mj?]wz3=fI0m6لBTSJTJ&G7 4@͚oQEO|=d-qnfmdRY:`T_]V3]wBɥIr J(pZ\&LDF3ӊʅl@q¹Rp=vb?)xEܛ:<uZ.|σZ t[ hEPGΊ.sZH*l7E")8 +hA Ud_JxԠcg)PIXϚ w0q]'|}a>(lG0*QiR"|/ySbclGqE2> +$` ObKi/ ӼigO?jOi?q 5@է" = )ɑfTУ  7"h_n !=nɸW R:&Ҧ&Yl1YZoҶY5itny;iMC[̧lqڬk}TħC!8g5 F"ixK܌e5|~( ǃ#g8Ap6t}nmtc=jvlȰE| kc]6lF(_|_dXqmV>MipYA3`%e ,G+UDF.;ļA2[V\`鬕uy@;zx^#£f= &zeaZ> G76ϼ#J#,uOv#Ѭdr2X>bVe0"e i+:k9/@֞n lB+I)B!>t,7kdqв?O=)u4kH!8|>y87[{ڹmKfsI%gm"@54X 3I$ʨDSb# cIdD#P>Uw'!Nf@{Y'%!۝Z5NiSF ^B5vuFHs VdQ^?37lIXߔIfB S_!}*7H:wq^'1]#BCoA} #Y^[!qO+Qrr=s913T5rF6k' cFHZcL>@`QM KGq;yY>Yy>yFF+/~ȫCFl죄6@>/  >bN'z8L(; ܠ Q"P QP U҈aaXNQJQ9G_W"$:s"Eĝ2z{ Z@O*/~3 /ԵFNuWl /a6ɜNM&;/+X Tɡhň%ݫNK&1Q Ѹs( *;=P_vÕ+p¢zlG]φ !*!^0YrZQAjfvT0×v{9K7H ,4Y'͏J۫z 4@p5ʰ6 $uRg2|:@+ UO 2.WMiUN|~eHc(pQ5an/x窨˨O@$pdyBkU}湕J"(D$|2 !\>f؜ _}GP:\Aբ4${lkrNlH2g9|%TiV$E(ןek}<8|\|@` z*v\ڛ2D0S *y pEU!50XJ,-u0Јn l/ <|, n MŚr ^l`6^Z /A>x"b-)9QU̜El1~RC0C#';MF)Y)bx2iVēE-L쎌h\Rv|Fpʶ}Mٸ^|wOO; %Y8;?>W>7c{KNŽa p4#]ۏmfzC;ƍsdR.zS&BvrtUNe9"wN).Ef҉ Rgԟ t\Bx<ǻY(kBhGCӈ/fXHh~_2 Lm-I޲i1 WTɂ5rɑbɮV SjIm(Z\v+3[Hs1Ɯ4ջW:Jբ 4 qm 4hk b$V(##ir)ACpJTL«(TZ@KqD a<"hxA!_Mv6}'pjք/=.\*κv/]~PM¥~=woOnv^ Yr" 2e _^:ykr>mt&证q"tW[T~n4@Ѩ^gG \c8J^EOPd갱 Bs˧J(8bԵqvUze} Oh"1|Vţi6 f<=]Ţ@nwsjNi>$lRݤr&7y2fճO^7M|Yq#&5,mt]g@%; (rr\,Ÿ?)\u4 o=ϡ ͢+D4/X_kOZezgoqFۮ܇ =:ZR u'Tv\]3p y* Ď SEgtx"jPh(Htzg>m Aj+ [FҔ-N:οle 227)|* EKJ %'ӣqKWM9,?_MnYyR8p<'X5R:9tN/=Лr)џA*c$w"yco,)W_X>-8΂b*J)`QȻLl[#'?YT`ww.z y>zp<ћ׉=zZg˦Sl̿SIaSOQR`{&=_6 { btZ?APivfCNYJG]OI=sH;.DR9DQ6g=]4GP/kcOt)jd6dǷ2$-\NYSLiƅI{ 0L4UcDRuR7Q#%w4dFF'8*3 O㣣}XoXYy)JMEK.eJ]9* r%98 +^:*GQv*_2doMzWGŠ`W/ x.\逶\wrdGA6_^(elnˆMҥ;/:3,?̾C.Jr*Kz)Q\+ k)KRU4̧RuQp V=p# J"$>\8Cq6ְFqD2$8vH*ѫR4E%gWNGNk|t|>*ӈ맂VaPVV}6f+l}G3.}/HPJU|'"8N汞p3xʼn2VzzSJz4[җR>TȏkJ_zj 9f b4٥=*q"&6GJ}-q˨q7ንH Xb$P[Nk;\+f~:^7^4:m ̌3όpT*T$MZ' ^(֛%˻wA_.KOpmg}GI<S"(]rTݝr]^6zL.ijb #kmicy)+uuwpW\W@a@B(MyNZsIEHtY&i:snՕGVҿ-ZJb׍$p( 'fo#E6Ť(/>_ Œq5/./nh:-9hG@) ]\4]$# r^&tt4ɦ#ZjS"*-("n\+%LnQԘĽSlw6HκIX -EKimS)1=箦fuQd~Z0L:,0#q(&L`xLa^ɻѫ{t $*UAg\QQnm{d@u3SOX^Cqyųvt9gҵs)?AFȉr& c&@*PE;e<|yLEe K>Tn9!(@Imݑg4gq (5k!pS4e4Z$t-v:TcWrDW{ 2LjKJ| .8ónLX볟Z7ϭT~.\gFO+զUNXd\D P)ZFZ(KJأB}"v01^bJh/aGqs9xː} q9R,;SNNcӘrzwq/޽6fd ZA&&6l xsu -u&t|)^X)&Ep,' D=)c)Am<S(E2H'RuAo|2nwΎY#ۧq*qg|%пR}b ܲV~)ktI8$U$.zJpR)QI aZYZ-`ҐvlȢd[n [t/]5 ĚS>ue ue,[˛pgΛDy!XV)T1z`&\ᤎ`>s?N,YrWf@un duz-5QE).j?[ǧGess>N.ہ]|h94!0CD$dEjtl4NaIBVŃ dBFiLqθuSjyBm8Qlџ+v~93$q)xQ(6{TD(aSul~cN Ny:n6~,g?{ƉU3IO`y 2xK?Xxkڒe\-!ODG^*k;I{s{qeu 4Z0Yj<|FB!9lH b*7HwO )EL~[w,,#ڞ7Pϰm0lPӉ;ǧ={*NKGtrHO*ƗmUYEEv>ph!n8$BL1sr->* 8HRJ]Dnt,UsR <%|WuЪ;c9Z/AtҬh .)e9Z 71Pkb DgѦNVE2ϩBYpu:SܳTۺC`\2S|6-(p>>CUnRq,o/Ns+CXDL5OE=] {6]Xfs42g>=)pr'evIZ0"Sk-)%f1 xP+92JrfПo)֟쩤 P7ɘ 3~;ha1o\wdQo%m7_bczۀa޳C:ul@POh} ˓,%҇!D߮P@6_U(}Grwqao YӃ-bJ1iS*hU]uVM%wZ4\UK B?L?ǖ~].+['>Jo۔,i?Iru+TTT)1rMgRW~vѯu/ם͕u rY[Q pkh| g](02?4T#ٻ &$K-I>a)n9-Wo㣳~愧nB*%]κw9Ax4Ŵ!ՇȢ$.J-̹dƙTY5kLql-oSaӣVƜ=R\.TK?z8w8Ky M| 8TEѾ'Am\-M`MtI=]6xvɋy\,VKi\7g8bHGx3K9h0IJYknk7X=Nl {q'LpMi#R)d^$*q9gy_Pv H|(Gē(KўOBX4Om14.&B/a%H9!2,HǒzgΩA9d?PLS%wt 䔆rsu<2ehckۊ1uGVDwSE+;7"qiЖI25>uoA'e̤K)\D&\2 Ho_EPW]"e&#1e \%^:aeG6:%i/CnO8P0^8fΡs,(4?hʶ3Ɓ1!-R,57GoGU\ )e%k<:'{8&8]=*(JOi5O;'e̽ W/{rS3Ŕ%C` zcl'0.>eĜT:$hzK$<#+z-E-o,.%gwFj%K*/X :6 ]\kKٺAj)%]m&{%[&w I|{UQV\7nrWAu/X <bl;~ڕiJb:wȫRRZEX_}PK*.]іpP#fHiA×n{d1\߻N mʴܿ#F3-D˶i>8p* 'QAo6<|Vz j~,":Qo/^g`TQ{èqW W:~6łWnE k4XJ$ Gbr=M8hTJ(4i$*Wysʪ+ uimyya*E*=v?:v.qeDfr)ċKyD]i Pdz0?8C%DR,3*8۬Xcrh»@5bꂙp1͝5s6WKYuQs@_١u_Žzc*D:>*\*m{ta1pPT H̕2R@nd${LlQ;0e8ЌQw=.SN𼧋X>M uW:\֯v僫:8rI+*4t-GVXiè>*Y(^ZFԦ8i*%Sކ+i[b\ҲJ>m=3{aơ̓W/qc_sC2j[Xƃ(M*I( (y*S[Yfߒ,G[ -g9& 0ni)d@[lБ;64Io4?)Gw<]ܢou:ag܏M3d<8mMm@/~c,(y1!fa l@9;8  Ic:%d EX^tTPca Ua& #RYa}"znuq<θwGv:;<; (U+)ƟZ. sOTmmޜ5tW^S4*SXZ&Id%rLV%FAՍRyyOGJ"ڡs1ђ%cV$y}P])jaU.)9AVȳ57T\̲{x[$xMϰA4X,yaAMl#J'abP/`VӮ ݿӬ AT[,E Řj)kJmfߤbS `;-@RB}P9A CqmbbRWKE> 4_f$UUʬTiES %h/ T%Z#G}ˢnoW BS lBi^ZŶٰ+.j5ohuEu鉨PюƍU [h Ƣ`֍Ln,a,f m%ʻRbsr\?BZٕ6aX _g <[O- eu ]PJ?hh8o (B?Yq6߳+&4|z]"'j& ,S⚀>=e}O$TR>fLpmJm@SE[T 󫚊9ݎ)dUu$U0&+P0<86Ur_#_ b |9n-ɀ:2JxfU'Ūh9YDo$hjDw xSڄ*8JC$XYG =I2(z}{UΊ'd1~?$(%pAm"hfRfv&試Dx.,'t\yrk*Ts=kb&[KѸ%D~}J0$NX D8A(UUMs,pu+Uh_J_\;hhOkAӉ>=t;{?:)U>bek$|"Վ̬j1q@z[ZH;ۮ?jߊTU L|`0|0;@mQuMq MH9ubngg2oJ!LlM\ Km@[(ESU:<Ʀ\ߕ{~uܭ5+  Kc96P*} ZҤqﴃ[t2.vorEYr}=u*_K* PFI0M~C$R)K4F"5q8. UDi=ebޕdvnSɃ+2ZaYFo"T`j0jWsb[W _ZQd>>ZX_M4g)a1=\w9ůeY|&Mc7~jWH|?;,5 +&AD*ѓk:8Sm<%N|. p,M.Iqy Y1hU79-V} 6ð?p!@a戃w\73p$FnD<~4KP"MX,y\J a9{2]TnS9aDu}! Tⴶ9JI"=X^a80HȰښÂ(X`)q-NiDZh %ڨ*HK_p؉K%[9Byڞ>VۇG%C24_rnSy^ʑ·@:Slؓw*ešrĵ,0nŠ>I? !4 bGoI94{_.@߈Mg͛v056k ,C3٤G'7iAR sZW+?rV~ Rm oe7)DWtV7H/ ƯcyͱSIH\iAܟB)IIffR~4ỚMR]KHzҙHb'WX鿛ҿV Wzs%}申#3^a?ټTqxX,\,`BY=R[\xi穤m)#U6XR/F@/E:m{2:e=~ GRHXRݺߊ›ϷΕC,/Qn6|_ͣf;`WRW.*U&I6ˌ/dw?4{GRY\9:gFB—h7=U>+ o hJjQk'PuNLз(#"ŧ0̦|aNFkBNySF7rT "7ia28#$dRT 09`Sь1ϤS6Hn9A;s;mXacެӤtn%q_>&Kv3Fzj0{  {S4WPqx7k~|j|u};d¤3~IqcQ?)CJ1ATQK91XRm&=Iq2Ghh]&ѴӚQϖ_),ûQcg; L%."_c܆r xpDV_ag&b~ Սnk9< ibMre7:n[ơiA~+R/1)"ϒA ws㠸w%H Ŋ'pR&)E5K#e+4<ǜ'mb]t,|]DTLr$huyk^4Pm {ܲ{B?r ZBC=}{d[Y_@Ag7];0gg%+h}Lݧ``pnA@*RGUt5M%:D(P* ?B0F,$& qg2A^{3{iԞ;3}w}k =zW[5x=ߺX,^?կ^>rx{֓ ݹܜݙ؁LbwZ-3n[OgMX[ּkVGkmu⡍|ލQ45#&i5?m"ݵOw365\ ^aU=~[$nZ[7ïK^x~r~x Ξx+_GW^W=_|[/`pZ5yֵ[bpo|JvZ<-NScS;Ҹՙnwfc=mZZOڃI̧3ouFv{:BDѰFg6c E e?߉ %Q)r7-D{Jܗܵ{uv]}>LZ_;LZ{М{4s>JLI1 6&R&Cos^Ԯx_=@4.,z4?+ N$%7n 7*7 Vmhg6{F4wSk~QNT uȞ v.3r9$NzwYg̞%TE `t9mT:Q5 Zx9_Pߓ;Uӿh~GQo9J: ߀nD R x̩,$᪼8e\"=O&[jɸWŊ{I3tT:{S P;9@'U@;i| .t8@v,'H $c_]IHCP0x5MLی Co'gtYl8Cav@> Fd=X/,1+n&o6|2{mCgvuFޠE{lu3 h8rfgJ~ PEx~bI蛼ID-gNW=ŠlA75G 3vQ=$0*syׁys(ٹ BAnQP+sq&xtw{L*HCMF:UGSׁktj%IgnMLwݯ>e+JkK$Itu.̀̒*gX(8'MߔYm  }RES0*[)]j Ȱn۬i/:I%eI/Y8UDuf4>Z>$5)wSGJuK&vLm4wnva8r4qYi*@0C ~K =a% {*HNCr>X,1ᰝ?1fAo!2U.}'¬.*qYpFBRP G]l Ī4"]T:is~Y9'W#`"ʅ4sFů]y6jJ1 :?.EՌ|ښG3v,W@M^}U U?|EtB5BTͯe kC8Gwfq{u Q61M2zFU,&";$ %Fty 7"yV~a(wʃ;DxޮKyo"Â|-wv3[OGx6thw[.itI1%FDwb@4 --4jbBL26ߞh[]-nz/wRϜZSb`3 o1u Q?!av~%{!+P!Fp_؈L%hbkÚ4 ~@_@r@tvTsq:0m6;8uoqƶƏc)ȒTB ޥ&c Y -,d#BT!%GeVK|t䤷~tǿ_aao8xGR1n+Lwn4BG[axB,r0hAW;Ȝ BJc Tq" .'i'vW^nZ"%uY DNn︨@gx瀡VIPGKj]Z{8*12a'uJac Z4S_uKCFS'R:!X{ D\& \• # ;*`mr s(#x!yP ȓd/06nZcw>6b<\. ܞ92ۖh\noKYǦ۶;]=Ζ~nJ`<]U`WX?"-D8k2ȳ@޽v+yGw]ˢnt}]x"쌦.ݬ@6p/(I U8$Q?]*Pq |UiMr#bd* *q)tjjDnFh 4S>\HͫGXa RkmJ'ȑZ9%*Igֿ wgK P U@I +/i:Q+n4n^~y'NIljlVlOIx f5͠,@B=EH.貋"d0؜+4dV۰;3-}MX{g˳zUXX_v}gF ~V3f/n8 [% _=2j80Wޡho4 X WC$|I*Cg\:! Lau3ΌtUkg֯+R YR;;~%(ly! fZq$Q` R,jz"!V+PM'q9M۷ALUi7=5,p K-Q&Ra aSDN_riUZ+(`ros]jvq"q/nuzJ 2ZUhO"Q:.Po),Wd2Nʧ!ԘB"HLK=tXx }5}M P tDPBVcҫ$p@h2rP~/)cBK^D_ĈJ}/'ɎΧXgn$ju UASHPR^ bHV$DC#*T8>ɫ"G߇q#@sƬ;dY~CLPQ78L?])d&ٰ3C=u[Zw5Բ4!bôGUo!c*Q,tV H M@e 4ieDVp4<*ͫW]ptm<' W2_o[rY3Ǿ>֖[;#(h~8udNhCHGBP\A JzTKB젦&W-. S! .D4Ho>9(y_Q)\g?Εֆ&(Q@kYq֋am@EOlXKȡCO6Z&bƀpq(z\YQ2]`&l2B'MLp՛hL64҄iY+4j<$7O|]9$ձ)rano|H;QCQeJ㿐u5#hUQևh2Hu%h)VωqH}*/Bz5UD+(٨qjՈw Pإ,Ҧtnj_#?dVh|U%Q~RJ "(mSIk)X)j)k?^&udgp>nCP$68OU;AQ^C}إDBr\7* ͧGV #V0@%E fHgZU?*p¦Z6,&$:ʰI#4Lof48jh_'*.86$"t1D)mBjBKh>ߡ$*CUv:7.RZ,H!;v; 1Ǝ+n_CFjm qxbPt9p h#Գ2+!N,c<&>wF O(m_sFR3p>ՅÖun:!e[l3#x(,Ѥ.W:}WwŝC9(M+}{ NHLi58؆$ ҂BjU*dbY)Pz"aҙY'5 n99UrJ N+N o7RrW~ U 99}V#"jwb۽z{D9-9%eT4r&!Lp]abC:z(lRT'v;O:7N(%~g{SۡkZBiSee}/%;Pc1^pjl4-hE K(:^ M"|6sWK98E?{^oNy.@k͖_ٳ^N47b;R)VH FIK,5"xUov2rDfښڴ ~7ELL@54bu+ݏTtTB=аjr%k/"FinkX!2ZG?24 9:m&?7\3J-5 KQqkȗ1.GܳUem#ˈ֟qE?/ddP{G?AY;Oj4^Mvҩ@X gNj)o>.=)Hڀb<4 o ] ę?]qo'h8[v9epK嶒 KQ4}'Tv[<ѥtnN2#s "f؆.Q+U͡yƇu8 ,7eVDH٢@)DI*x%Xh2՚dim:^mm97~]'4uv۷7:E$0gxϯ'sBOZz ~>Is ',rNLH 7;-\derKA\A$P m>xbLmlVKc8\6 nǍS8p^!krlO>7X|+Z&y/сBsϿw;WRWu{<`Ke&E>;ҕ$&i%f`"b U^ԝQRˆ'&<i*^f=Rf }gf]7ϑLwę5O\fS4e2עEJ֓`۳H,kܼ kܒ*.jg:+r4p DN]-GOr1O!q:l ]V >h!U&1wL+Í920dpQkT.th8ýє/-G!;^|Nkg^JM2|Q9\a0K! <v|7*a5s. b ˽IəAB 3OobL_Z0}ͷ'=pk"vn:Y݁Ҝ;i{zD:YNwY=r:VNȉp}$m4Wr Q,5" |fBta]fx. |;Ŝw;?qi`;?8!_T8)xPq {٬mmb 56jthJ1) 3&;ƛ[q*9VO[@wV:F[G\OPa]獛{Bf/ Fd: QeOegAVF6Vܞ8@8Qݯnm2}oqQ E@wɨ‘3}~G\a|⡛,]tez=FY/=C{)vva㶳TQx G?[_2EݙGzJ=W:2 %Tvl|4 FL/ B~ /v0MQ4:I< VLu䬫D1 9T9 3 )^{zѱ7 (85xV{4Ba7azn/(#Z,Ma$Y\)zLPX)a{8KܖڗY015jA 4i.zfi~ŋ"6%y*9n+ʼg6t Y0?:n56La9Ea3F*/tC:悀clۍa^Xh}"TKk.(=GsHZq<`i::o3MgmM;4;fh!.rQ iK uĿ<@)T1Sx̰) xi?|{y#W,v` =E(wl(aB΍^gVR}ԃR/"6B| YQ4OOK&t90m4y7+.=H x/f24_C0#'q9"wCWo T|y;W6pu&MR[đ&\;*ZYS>g2R(J- lfohj5:[؉l% 1{с ![w޶wJ=}3x.w:LÛ8\K\hتe=ga؎*qP`(AGG:|/*2!A>'$엘UR)PJѹ0R| K<5 ;⿂fGZf"#b>60nmi-\r_HǨɩ +E Y'Oyv~.xnSkh ea[MCY;ū='7;\,V}6b{!ɏiQ8cQX:F49vi(dEX"0Ɇgpy; $s[?ތKYnk ?hsX&ғ#O q6s^׌ Y[Q*v8ZqT5Am2LMhňfH9a΁ C'`/++I4Z%A0/o|o|ԯ,*P~W9B_Y'PwpMw2(k=lW%*zOr&POkxZϣzxf eǡCVoD\ 5u 5 gnN:udvw-M>!hhDK@ csY>"{D\I:Φi{:JAՊp8oh„6!L~ʜ!sag!,PLޏNfEp|8O-*98֗I|xo|H#3bHDDCc߾t,žxV0JoD0 _ 3+X,w2_ݿO:Zdz|M Ơ+FZNh=8ig@;+Vo5];|,3}^TŝmNE0Q0dTfBfy L㔝=}R:-T F.g1g)"_r~E9Dm?|:r7 n]g f+q꧀ OЫ>.5m=C -6K,Eه̾LbqJ> ];?m8-EE˾Es"폜+?DR<*nZ ' bSQ{\ـpOvS$drDX>H\>*@!qDR(eJT//TN]t'n;юGlXe/([G֜ ˥LYJK amԆƐ5 Mx)ӫǕ>rįֹ;:+:L&K?DJ4>m¶\Np8q;,HqπapV\2' 6gsD3B9 UhX tV(ퟝg5 T<(dj60u\NoB%Wy,"PNp6D)[y0,fi {p.'BXCvfYfGR\T/W䚪RREkq旭hki34;hH$KLޖFԑB" Ș | .e0?>N󽽴RD%_u>Tw|[zЄ4.zV~(Bj0BD51 /c6hRQ%3Kv<;ߠh'rH?Do.L:7n߯vvNPRc&w7^zRKY?LP:B箟x\%IK\"bl؈gl)c|%N 0Gz6zI'妔G6fg/[}4_~yML6AI{_Ô_+JtV3)pxB %__S+ TZF}9/C84^nEpP05 s9d stsB#7o\r"d# tA)*;ZE Žq(%Hi"t-4B G |ϪuY5#<)#vǽ^;Hݳ㳽*/..zi9ΔDyq먪63~=Z(%a-d2s f}"GOh&sx ,W@vj:ICCz M<^liOjRC禹-CXSY}Im?Vy)ЎX2K}ĔG!QIJ#Eٓpkyq4I>7/aONB.]L/Ay@uT_Yûh sXpXOO\f Kycué]fۺN_*ί/|W( Ȥvͺx ੩)ⓩ"-9Pbm&~bD vOH y8JFHӏzIP_W~ƅPO-N8\dEXgygȥnjT].A)vd] 7?pOdiCP:Ml۟MfU`5<m0m O#2X9rnJR3ykvMYz!sJD3ُa;:2:a7'd(}ޟ),cE %(bs Q/s26|Kl~9Ĉnj†Qt2SVGx't>`DQV!%tfc͖K_}Ny?Y o-ݡhr#Fr殘t\(gx3qEhCJ%D3bI+D@=nsIIGRg֓*Hr4'(,*B\8U{3jJeVz^HFsl6l򶱓Gn4>0 ;Vg'Ղx0tx-Ykmӭvɵϗ8cQ`tsb0ٵ 3/Uh8x3SBw$w7DBc&hd`Yv0^.1N.}ci OQMg4;#;pWăN<L[|hF5:KNc MMfqB^2WG<*U-(yq${^J_΋WpלIrկ=/9'Wl#[iGAy5o T"5jZd|D(9[NfW.7]5~ʠli#KsBI+FC_7 R%f\~V 5 "(O]6G xۋx)vx( pHrySԗoi&Qē62-<=% x"Tb״C6^zV+Kw?/'8l4⃆6#08IGm,OҦ-!`@S'$Pcis+DiyO8Yk<8X 2P;AK]XY:oLL6+ M=v= .WZN-GMǂuJw?\? ;aJyENk G ȥPgNhq4zcF_b2U+4-:6GhP )f\Ξ/αθ\:IK޸ PީeǶY 솾kڦCNYJ$ݸy)ո pH^:.4AN(juZڢ 2du;^gihiBC:} ,[]szn@ww{c_p׺C&COW|ٯWsz3[V޹:EWvtMdzS{t;OS]16==;8=Ӯֳ5ʪ6lXu?`'c/F[Gٱ&?[\l/{lo^g/{N_y}^{W}xóM;쿉 8d=Bܦ*`l Jܖ%d6fJ$1ڝkcܾpQF6ffb]vI2w$j7O+k4d5Sf&_Cvx4ҧ<1bH~G 8G=`%rQΧոs>To̡mQCWZF}i.-'_h:ADQ!|DEtNGeFμ |/hv\W+ho ͱB?M`{qQzF3MҞ.Qß8cD]f $@'[`  _ e!THhr0>[or9V#yP琀Kj΀c >dihկ\ ,ܒ+I)R4?šj)G4Q]PuLwS{Pc%ĩP(6v,JF D(#KOxH+sXA7qkIy!П,/tfJJK(yX̶,,>@NF'R".kOn&'R#tPY^%GG/s蓫yU;bGi[KE.aȍ_F(%$hv5мu}ӽhޫ&GfxjiNZe@_̀YE׵M[pr;J{Zy-8eSn:}S;)߂,7MF}i5퓭JlGm\ {M-M˛ qѬ0ZƖ#h0iy/$F ֐6me&|[#+8d'{RGg.z?_-􏈧n8h;[ zÚȬ7e nX^l!cn*Gy4~ jV$Eh9ME*Z7oW0\޿Ρy}wӁ"eTU'9Tw8TsTm*gD[t3DGvjہ}tJ7jp8]e;dJO`QۤX$Et[ ۈa$ sA+4|dO1 ?lt;;`FOI~ 7֧:sv"fء&# *8:? 1ͦRJ\D3>C?] ؐ zvAF&/f/eet-6:tnyks&=1h>PDh )iJvH0dA9e*Ci `~׭\3ܪג0y; ,و>$r 5MχjRoD9<9nNJ@Єxf,pn'e|vsҡ%>QfMŅwj,VsF#ǪζlEb7Tõ܏N՜hscXNO*c3*bᏨ$3ѦrBs c!N=pKĹ~I*FgF^sʃ~TtҽZ_Ѧ=*ifֻC]cIGbx{8?PU+ed g!)=Q:i5ߏpzRKlB΁H(swqRֈ҉I.%0H/,{(G{vQ/HoW"~8 PO]'ڤyмqh^_Gܝ^h&Dy c^@2h/66״i6΀fDIQ<:8|'a݈nj?"ZUzzg_PwSa##𙐫vv5%C s=X:98MƖ\iԦyM],cIר]Ij@b} kt&Q &D34e x( xW gMz4vΐ>\SRݏH'_W~T<Լfv*e2QkXk9<^%$'D4jtFgl~Tx'd 4$|f5CNE +S+@"  MQJCFBfow̭|&#6ɚkQ?th~c5Fsf͏"Fe-@CV60d,J ҟYe<oƓM,]{=xJ<b 5.˂KS:AM\3@ cc_MDG41AQr$"%- X2d=+%Khq|QTp IS|NO/1a|g[ A{xkf08HU Eݚ5O>JJOyO|nNg޽h?7AnV4F!ݔIB'`b# 5&=ˇO*pA>8 ݾ3b Q/F za2i7!?WSL}ZDL `ًxdӺ|jg5iY7klh9cd$ӒmH%*='vP %sfiP'O8![hyv%䤳cWM9l1x2 R9#l1 _ۢFg^#oՀrt>.n]_-f;zp&̼wDz=BnIltR8c{+PVW֗8j]P/Ўkݽɳt&)L_*EC Պ-$ՇiBD%:E U՜Q%&JM :YzCY(Go=Diz]ȈSl?B\V=61v6y #x#;SAubIJX@?Sj%j=)Kj:]̟~fh'#Ea7Vt2<٫> bnSBJ$QKA1dKa5g"(ZOR3?촩_M X*.}[~ʗQL20אDf h]Œ:&(9R$&01tp897G~gjp~x hliᆄ>˧uy_?h&Z+Õ~ް!)JwR3L]$7/Hx VsEBR%ϔg%ދ꿎0-b09 ꐨ?+R nQEG% ;;W ]Am23"*A,3^ e -$½P㤍49L*wG90ƴBbLVmÀvO,z*:t=< ӡ} " P?hb#ﭤ!15 ]ZΖx%Y"6%Ө` HM)?{J5IƬ|DsNC_ĀG\'O8@Pp7=uѻ^iJTn#th$ u mxn<k%g<6*D𧵐'z&p "?9p?ZSs9Ez|u/D{͉м tcND%,#B@"Y7)94zΒj<ӥ~RsG/BT̖f)SHW§<^"ŠzƀHA\8N&DɄK2 4o>`zC$zsdo' S$Jy&C<9Rjڮ(0 FhY=sG삀8 H? D_jf:?M- P܀Qgid,$?i> &E"FI]3 (LS4a tCd[JA#bzN#'M5 n iR텎-jݞzZ#4>ܠTV3MvG͸ބ+jNǐO3ZSY_1F?Հr -y*4jA-\*,iy/⧢~\"}Yģ!g_*< vEr#wj 6xLN ! = / 'XqӢ~*^]O"Ĩ^'*{<7hzFC@[v;OXE&ާ~eз;@RrQ^X,Em+mE0KJLrAU {* ]iUp5 pSxx:ֿceAp/Pɛ\nj%\n>Aˆ| ? y>ZiZ L,W,M!Tk4Ē, nDNjJ$ڈ`"'_W)`jh;2`BȐ'J_vx!bT&TL 6 EV׉Mٜ`SH¼`3nq@Cb5 LD~mN PyJ?*zύ V_̷LIy(Nqg7eșj$U6/NF}]=rԧW%g5n6h$auP".eXp?W؜kN҃=g351DoW(LMth !X-Dc3t5UjMA";xH!P嫉E/oEhzGSi\# }ۀb2@lLdeQG҂P)HcF~גK/f@1<}[P.Đmήaǧm $@+x@YC-˨6WSiL:P&taI]9z r$W\$]?;م\L7EՌtԂmݺ"9< : ɪ3yX*J!a.ˡ~/VfJ/Y)[NN= c"^VU*7|1 }ܙ۴;goy H&qnmwfN9H˜q(OK3':qD7s@y/)Յb_VwDԯ,>ݲZ_4i{ۧVHJcC'TW8ŗS%JNU|#Yׂ;|R ͘9)>D7! OGo;eFtOW0Rm&hG8WD _F,[ qed[_U)ങ}}>/ h2TM}(~V a|}5ݜf4 Y#:}KΕ@zt{˘0%I5.߀2 j)yVS,2L▆iС%ҞXv+5OJ4) 3{I bQ)+:+W4|*M&r82n|tt%GQ69C_WmqLfûSl8:( Zh“1 \DI9%+MU>,/]u#DhEnVJ)r9ȅN[Ir^x1 N4!, ! ٱU;8P4h!b(ID- !;t.X"zpp28`Sk;#rtflD* ~H-OVb3LL܉|SX.DkrC J9Ẅ́B+n *zGV:3Aˀt1Hi8ddѿ¡iljx<8D 5- ( /VN2'4kW4s'=w^d{*|Oۏb"3YC,Lr,_Tw`3t+!m;qi+k#\!%d?p7qxޤwx?q% ";gJV)VvbbEWSt8׬aj#’^&=Q(G !$C}bةVAl : $i !::Yo0~HMs};P5gÆfv0C*3Gŝze |zEe8۷aC 7f`HM涣9,.7aNHY$`wxs;[܃>y&.G/d0NWӝ֫5uLodd/T8x޸][\oWlYZtpM} e[1]6g;m([FAvrըNt[l6$298{'#I,et R˚G~eTITnG?=W9o m߁ %kp2cٓ`j@s&I`l*Ȥ*q/?|:%͇mN+ilWU۵Um}27FLp?{6C #IhenkXB s%,ܩ<jnOGQgGM (E{8XOϰ9E}NbP8I'6Tu+?A߈5W>/ xwW~dgW۩ηݲŗԡ ˾3enA}r 7 Ày@/b 6 đtnjB4 lF/l;'`W9) 09 h2: 'ngܛ 2Tԑ޿ WX'}}y hp! ƲI$HQW*%NU8%IbY/ƛq2hlF j/.lWze&>az&] BoJJMDLa@d3K89b6#')?.YLpCU> BpetmM$ dIHpBPMO&UωIřwma wNi^0FSB\rtF"0QGWLw紨MAvJ _`j'UcDZ{H4Tuh7#h>TU Ng 3u]}:w2U/7ozş҈v(;j3l]V#~S 2QVC +'𔑭DDyNyzG5Gs}w1dAW;SIM%w=2>;zu[xB[{=O(fHUA妼4ՐSB?>8Fz~|ߎPG۪vI|J|NJD/Nd,bѪ9oQL%_T5e5DtADt}]QirHy'MOK< Dɴf0H!NzB(OF8 U.L}i$dW⫛U[[!(*cP46Y~Z(Jz7D&\O_#ڱNi7Oލ=q$,cܬ- X !' F7qT -|:n!#$NA=V $!II2*F9Gބd%laFazsɄ>4aƨRJ&Hswq~e97װ—4&4s;}ģHZq ui5-+KFFDBG*#&?:V0 MI靏QbAhH0yAo=_ A:}ٌyV|긁Eup,([Q^$e[Ϫ PG ,MeE\1*V&\79y"}|EV)a~ֲ>V'דjN|x},t{; ь 7q`HsmA}Rga0/t t"^;@#2әϏT[2@Cb+dlϗ`|NDWY0mD.RU8FH`9Di0$ҽ_ #dO;>,ݢC+UWx̬%(N }A10u;#6x̂nSw+59^ͣm߫41MPMFz /چPC *וfѯ(“!Hyc8Qa .NxY4_h?J4N fs7 bK>M1V83:P)0tށ"܁d ;w8iu%)3-VIx|t2< u g-{ Չ\ĠR"]aMdR$C@)Ƽߔi(3Zoqc<$W lEI2Ѓ3n qNg#Skwx8%Mpcӝv|D=`+ƿp F4M{#֦n)8_v^s="yv{:!)^'%Is# 67as 0cuc-A% &LK"3{x;_@s"ThW=%m؛8k,Z[r^bJא9/?s^ ܍a]\079wí +":_sJ' Cv/mE%͎c1; '{XND6ꃻ0ͽM ,F7F3gH;> ~4zT #h_5AN!9y}5Ļ^,E;KgUhl&@螒t;&80Ӥe"BZi*o0|K(426%ZƳJU7Pu<[[Ah *5&:VPQc[@w2jbY\or!7DW\K :F9$IVzccf{Wg5;WyT:Muh~yDPw{$$:띫x~q*C ӑy6 RYՁQ [Ney*=߿&}cJ6g#j3zxrD%TV'~ 9M]zOIk!khqv.knD!bZj4I}XمK>ͧATL\VW`$C~ M929$,#Z$fK@S7(>a5VC(Db@?֞ПE$RӦ9TrK-y;}SJruVQw5z`k2l !79EcL9-(S rL6r< :fF$:ў3G1ɠVL~SD|G/&AzZCg%:^<]8j|>6Kgt{v~w<~G Icl1\cQ d@ BF`" A"5+HjC- :<8ۯ7G(,Dʹ4z܌Ds,HsCbw CKPg/%sVLo2>lȕTiW,}Q?V5^LRbVAMoEM|Ǚeh4U56e8Q8FEjRydHΰ],NIW(@)vECR 8I&N?Ou;%Cj;XMՋNw>i5Kz{`04i9@ybEΠQ笻nˠGm,[FM7 OsLV3Uʐb u:NoQEs-)%e n|9a"|z ݂Ӥnou0-9bevUۉS#,BS'C ZjC7sd95ȓYm/9Jq'U}4;݅On>ssܝ[m/,]mS_&?bk\ G@$t]if8 (e8 d^'7&Փ'$wD9;դK6d-kDDXl'_{3R,=GFͣ>rG|o˝{eހ/0WИ6<[JF"GI^V ap) ~>`N kuf!7Ϯ  ?őS]խ U7FQ JL}wەa6gA7&Ň5#RQn|Tf2=b=wLAs^@b+&~0TcM`vlnO3ԭmvUM΁Ř斅0'$ f#&INvtzޯstt|cxo?jc;֋WdY"dRal{kCk(QIx/A׶A #:Ѡ hS; xj1xRls%qW-. E ,L6a4Lo')[=- aiT /AN'f cb+*e3.FVaf+Au/t@(@;{P\˪Yb"fEF rzGlZB!g;Gդz#ܙ޲ܩ0ė]1~SƟ7-B.HKQkBUR^2%zMߋ sj=5`-m"ṉ'lD !󒄼Y'*@< :͍$b`FX MNdpR+eX21 {խJ)ƱYօӮs7aѦN ;]j q>0je_܍BC?;} l[Y 6Wt49k8 *yѳ5-1 (\hŤjc'51"Q4XJDCԼ %Dcsr)IzkZpfo~oƳ;OxwK/{~c ֯;|k_KqlNؘOϦn;?nNgim^{t:MvgVHvo"gnl*RZ6[x3ydd+GÍxԇN^?8<8ӷou_7oWW1a۟Cldlwlr|~.O\Ohc5d;׳I{jf e[wzYcΚMeX7%CkK?D? 2 Le"lw{~%>~/wcIx!MQE`D\#6 Y͍K|5S4d4O5_>ssܛ߸)eT`S(8 !@UD $Ӳh푴Q_o'^Ѿ(;IE;8Diw5,֦ʵ=9^k% :T +c!=^p*ue!Km31bA ;錄ȶ.AE}^Z!ty2uә<5zz:Nzv+gqi 򯄗hk2 `=Kߛí0of2̫4]eftkZd ?#g]#׭){Hﯤwgc럶qeWr&(Y~ʭcȅE| ›Q]KG+4e&Z j.ipQݾOμȘIԺIjkTKVK:'3 cNfhSH+m$CYhߤ*#ܙA|5mCgNz82/@j٧\죌Ӯ/*O~)dwY5;L9 ,&l; VM:iﬕefI"\\,Pae,,R\l+~DʗVo0HJ(roDxTÎ;㝑Qؠ;,GA~ /a?3"$GNoܸ|n33k7s m#Qn"WA( D`D21C֜%, (ݽ:ޘm? ׷06mG#z; Yګ?00 A}蹢3,9[B 8 g.6 Chʤ7^CJYYQ>3bhɚ Ik*KnE0cP%_<\RkY eA H_Ðn^aH? 4ٹVOxgaz>SjL91) Re2 !SRPZȖ f틅h#~s/Fg\+de G};+'9SR݂J֕:Iq\_;C|Յr8הڗ1uі7:֨dAΫjz)Ldb?Hۀ?Sxw;F&sκ ͬri)Uj*T`t ,Ov,e zPuzmԣwb𻱱_JYY,qA #H\.K*рe%1|5*52|lWAArݫ."/Edr 1D +%z=ݢʕ Ea}xC+AYV>/b4>*8b. ,dJε|x)B\nOá__|xH?!my>ޫgڝMڕ,]k]J.IZYl058 0 Ԕ~DVOM>kS7E+Xz`:23ypH`EQlԓU|.[6 v&a$XBpqqWDK@5(%`T䐫3)Xn q+Xkrp 2JRʠ*P,ʫЀI_Y?aVO~h^{:-z嗰{s,şe M.'F3繲= L[fKj~_qf2]=$4S#Uli.nֶ6%Y*Y{͌"/{ꝩ‡Rs;U)Yk:pV/ܟNGJvg+Y{G5Ŷ$C1YJJʠi fVxzZ=/&Ce\:1ErW6%X* J6]PD,>TMp%0e(Cu0 *xyzHzSF^KyD5ia^}97Fp)f)Q!"gAA 9ӧrH~Zsq< K0h>h~Eć t<`5`^ܞ@z*f,s&IZW=[sADJVUƍ\ z[Fb?RRu#)fzD5vЛM{a;&xUE놬7MR:\'j`t@'4TK"h%#Ե䚋!B XaN|8<ȍ g@k1D-# P:sv4, KcRAP]\ҥcFx)D>v:iu}'T+o, ɁH<"$ Ȭ]V%@Blke9+*GuU_ø>ɘ>l45p` !VBNw wPN'$=#=sydt2͌']SiclY Y2hss?L VN:=YlXJ`ќ9аL+R/+=?p gT /8a·*b [tS o &停4g DKj8R;`p2N ҮP)XqLE~X YA>OwYz!GSw8W痹W|; VMk:B.°iaT~)U߁E4GȺ.M2rs*;zϯasDw)e`A> dylY4PX'#)Mzv&1o6;nr)ɥjݞ&rv^#Qnky>Kz!se/E< eGHzV=9x<*e^dP Q$N#^TdekofqEXBږ6jRPƷ,0~Jٿgnb푬[ _\^FmgP U!#AD|Ҷ3G bt9?(Yoȁh^D4-@qgڰ^#~HTfgl|]Yz-Ģ) lDO(+9\?LѺK6(R˱jhC#o;}sԜ?6I@cPeZ5Uи:Tp_Q6;bӟm\']>5Li3)ѥ@$]WL*-ک Us4'"c?;]rCn !i%3=`! u# (kt.&(x@ $jDrd! ʉHeE$6Q.s)c9wKlʴlJoηeztk QrD] N߾ 8,'M^%Qզlw+̍*I 52,!=ϦMjNh6+^mn||R\S9i B]LpvDI6:43am͎9Օ~ll>}]$h>˄աRc= Bkv ᨿsP)aF-M6Qd= {k6i6 bnٌ,0GNejRŁZO iI?0ZFR ]ozIJBH٥ˡ/+6|DnJ'?X\6Hd`:g7C_QU8z{#Fq>X,#rOFQhĉ ~uPBEpEsOLHxake4yfNHs?Ov=62|2im]??ɵI8ڰ?Jcb,6v Rc_0Oj~4Vi4-LBUW=!wHsc{6f8B(^$96\@(2{'uf <4$5.s>ظS4S|? -t 5"O@ EqQkzN!hƟ:aCuUlﯸK=xkc}_y۝w,)[}09ݻL;8Vq>='x~eӇr~&!wc3ce@A%թʟ X̱%3 Yãux4 a:#cxqx Rv%Uw' ЪwkYZ T^:͌t%cL/% PV`+|˱Lkjf48dЦ ɑ[ˑhA\z fuj ƆjΥ0y(OXP}}: 3 x_@5# */B|2q콑3tƅlٽxF~'-X`=2%YH7hIyDg\+  UU|'ipwIHn%9ɥ]F#51Z$tiDDZ?`]iik=-`+MMd$ǜkmTBk"6/T5h9&օOu?Տ/i2l-P;y[kSUB[][vumvN9p2,j^RAe=+쾋\׀..*p90QxÎ@D݀iP[.=\ÀJQk.)o\â+ r{Q('+# *С?h|Я_GTYLtp mЉ+N} yNaDT O.~ѸsސBk?C YvzA#T3s=RV&ty\zɨ߽=U9٤sNK+.~+s&!{74{23S_IT<RK1S9%^ʿ.'S7DoWW%}(4ߒT,+ۦyݓYgrjݞnCX[XG|3&g+XDwҵr]dbp~4;Rq9UOry8rCpCJb9>]Hn<#-m>ڹ1OO[)]$#p忹*RV񟊬7|~C-Z)}x2&My=&sR?WB 2ژS$ yر'}(Yvy<L+;Pr:5?3.%Wd}nE1BֵZovs(ل-7S}`3o4<\Ѕ{bV!yž߳cBX{Et~Z,| 4ZISڑ#"[Uv5KqDǗl;9=KtӅ%ߛȥc# AMжؖu >sѩliZ:Ɯ`5PWd8(M{}^sZttԶQuHK`V=M!9)jf/>}7ܩtgMk7il-3K7TߍWynH뿖Nѐy_5F:+́8sMݤ[JB%Ӽʌ-[[@H~)>LZ:_l@,+RM"?A i4XsI2;k\itr:"[V 뛛;f$myQ Jrv EʵW3㺢ߩEV*vY&N-L/)Lǣ>J?>U_؜f,;Nch%9m'L:XEdFF_q:4'o)ꧧ3w!#rXL`|*W}ADRktMМfO:7Uk 9ܫ'LnG)ҜݠO\oy>?G 4$%xd*(RHezw<`/2s3u,dORQ|E8 ,x < dۅ5oazɑ"m ж(z@ 3+@ޤL"vc˃^Jg#Fw~4 R:ɮiW&Y3?YҬ=9W֟mC٦rLijK>ʏUIy͋{Yw 9414p ;恽mp1D"\nBn@qv/mp^:|%Q@Kg]B{T.1ҢNlݱѦ?NqA~vM[CW ʿDyw32Q,X\jvc+G Luƨehy ZѨL0@lUWPx {0hAG4ǣ5":% aQW;wTǯz-y3b?jlVE%L]Su'a4S6Ua/%r}L3t?D 5N>ʁ.nNsۥl3™&Ó~d:3k8t:pc>>E,3To9 sQd^6͍u;iτ, 7Z%س5Q$njWo3~ M.nS76wu{DNMu3&m^0͸[6s"|Q,=Ѡ(hMqKb0k7]vQ)sƊޔv𧀃0|_}(cP';'&yDy;9&-^Vt$(ũ<:gNS^2*yc(" ijY}v۾zHpj)`aY\WX]wăLo{)#z+\}l)i zAl;.2j>ܷ IFFv65!'Κ@d.(EBgv&Qf0 4u%N8UvvF&%[ w5(n'V%LVE^+++F|Kv-yk[4u>+ԧ43xT>Z4֎$GȨ`їqMh_^冯۰-60}Y_7++ uc/U+V}% Ԫ) Rc ř -4p&F&FD0 "M8ӶS!/)OpxI"lsg/.p>5xO9lY|>0ӏg&ҬF4HnIYdw*p"Ė?0G-z`QN(X򈐪o므.nѲđegȖ]U2cQK=U_'mK`+F\|# ҈ȨjMLU"Ԋe&Wə }#HCcK mBhO񬀂dA8LgQ6 ]Dk` .:'*` 2JSOOc$?5aݎAGAhW R|n"3<al?=V=<9B#fCg5#xi}13,Wku{*NUt*xֲd5с2p1vv/kP?9<7loF7|8.-^kg9_j.}DVF JJ-9);w0DM j&V[_A4GM suwuvl=fo]±r @\dBBa*ժ6V3X( k^[o7h~S:wmݽ:7 }8kJ43CBͼ\;,5P. g ,)Xx%y+ɸַاZd|^Ur#Ou٥+G F>:g.Ϝ5 [ז/K`QMYY` }\ePl7k">K(w8u=+^Oip fNگ u5R89(X83j*O%puQxxODf}Oٽ5" wEL;E8 !m*-fXb9JdN]`q?#t %m/*EPW3|:c;`*^YŬKg\+Y~|j:u%iC~_7yM?| 0ݻaEN.Knx+VG{[N4bU #!G#zt6>([uIg<bD,6L8cezcUjMM潍$~Tl<ۑelC{X8UF dFPjA> ٴ[#Y|RęέZ9>T!Vcȗyx VpZɹrA bzRâ^4 `Yڿ'K;P m=HchNAQ%>ԁ-<. mA*܄o pD/mԚ4{Sv@2 q32mY2qa613(@I{sVL1"4طҐȯ耻FNO>P^cΒɰ^0eKKVGR'Dz)`oX/Ē9}nZ74!)^:98ɅqA?Ah[bL.F4|( < " OͽYE!'K ZE 8>>31՗M|_%Ithm7c xf4uVIOzSLh\AnpTTT^+zϴ >f_ǟ+*``xФ#̌x~^Z<)|D9хF; Cwd$|{X'`=+kmˆ\c͊港|O.;|صBz&qgyQeo$\)I<[f rݐHrb@ hD.g4/aK Et>^W&ԜU_GszFأ"I6Az1pGE W@tvt6O?(W]5a=iA) ?';˜PaTT^w_w#fyJv6*R\2x8-W|DyN3'[#>ed -u7HS^Sj'8̕p#[|Y,YY> Rzp{B{gKNXhƃZ{Y[eyRċ&{t2m2jג^}/-r_fzs*+%iE*l^2ޟ$6]vA)Qv G(mgi@y2cԻ sCd ;lm)M|Ć6,Dr*xo%톇a1o2T?d+}Mn6.r^ogpfBЌ#nXr7Md$ >AY4} U0 Pٓzz:t)F=wg˲Q̝>l|w$}=rWI?=ǝqYͧΔmt  ,ፚYo7Ѥy+hj|Xf@[Dˈs@F5->ca5h}'[?21y%|yÃ:+ގDDWIM>kdp7{řI?C!FB4m2 ^T {Z'IU:Č 1ra\~@.ew,:UPU嫞"1[7nw/W)zaܗ`KQQowTX"䯖z0CYF^Bn|Y*BrQ|8&oG(4<|M|ڻ#*Fί {lQM!&M4k9\k'l6`MTrM|[' vY'61K_eBS貇, sJ]+#_!M0O_ZMϊB>, "%O-χI+wi)*<p`)ye^wBC@} cYֻWIj>Pn%cmݱDz6`1 *)D0;@1+PU! ^3PIuҽ{vGR>xch|gPu[u_u 0|_nax3Y{ܦdьgV^4Ӵc[wygN󠝦ql:m"=hiŢپ־--m?6s?t\UÓo<[z<5_׿_s/Û^oix>x P4h}k>_崠 QZ34<(w'2:x>x)z<x7F]PV9+wvs_+ \XvEY:ZZavΚsIٌrеtl:mż ON|DAn#H{$6 pYyKޕg MgU|%=}ה| >@Jͺ?JQ5qp]Q*#9'{Aw |@ip" `# ^hQhQz4vc GvX4V-+RQD :tiQ] cPr?ЄĽ9tUE= {<wz>po2?oM=ĭ>3"{ |~[Ld!YX$ 4E _+DI_I3|lxty>x _7 R)A<ekǶ]Q "+2B;́0&l*QW@ C3޼AMI7=Bl ?%Mq|5mz7; ^~ ]ZS9o]X,;:ǡ}ȩGÁ'|ElUf/o VkD\&Q#Q~v+d>/Y{BV͘FO!fLF#;9XԠ]5 ik|$aӒ*FHE{_Cܭ&x}T|fQ&d%Hvw}pVѴb >[(M\,Gv':9JJMȞ0lmpW Ohͣuh~e)}KO916NFB/jXn}sK2^#zOݓ*󤆒&Oz6 Qn޼s w/Ht85MTVbLo ́l+"R'Q`5s2'&27oT̪zδVUt t?S^Y٭]..ZD S%$ܣtH&&|A$.1 (Tr􋏓S^@2 a\?';GDOS(OQ4J8z3bf宯h+BH>Bnc@SRxfbs.4}niԧi7H:c”ʾ9ElYyY?7*` QrrR0TEjAA$F삨eR~MG S?^.TLCZNf#m((sP%D )%*TBplbD2&Tb8$DOTA.K'iR}_D_ K_U*ʢPjuBQt'Ba<λr8k5"k|{&UZ*~a1buꥌϜXyFu;;WCy?r^?ڃ?|KA}ΒHB.\ ˛\#+ɲ{7#r;RyeoLZaċiݼDk7>*(TLP^Gʵ_ϴ_ޢ.l$ jԲJߒ_''g8_yL^}pvK2Z9l> K)8/^iE7, Kharp O 'J*StyJI2%٥^w܂^\Ve17K" ~k\6D.V@?p؎zP vˣTa%k8qŖFC!FIĠ&Րb s2b `"nNtilN ,:Ƶ4^h )dP+$#~^LN~4Rf4ȫ68Ŕ_)YmQ>RYm4.#N{&vHeKK|m[MĘYB*yBˮr9(`V  S0h4P }/t}AL'qw#OXx<@!z8Y_ΝĻhf1A^>YJţhZHZ(r?KT^Q84]&eV;B~C4j-kXzW'5Z!bhdƐ 7 rzɥ mb5aM-h8kvXKܴ\0%Jr1#Pbu%hv&iJ 2F gҏyz8>Y&_k+-Z^k|}uѯ.PsyTO#M@D蒵V_f-(%RSJ'_Vߡr4Oxz[&(͖3Jq+Y{Ų=oHjUzq$~bM&Y'T@L䂫ЃHWa*# s ~w|ܫ#_Q uyr[ uf3kI̚0@(63q /ddo@pt_)GsU$=S}^w좷 ,虹M)ApkHsWɀ o(HPf`m6۝ys_4/6'CpO.""BY&d-ęבuV6ED k䑎Nj(I@BJ=,W;7˻K,A?wq {v?/n0ANs!!)Zj$TS_.u_d~oN_v%Px#paDa8i$~Qd [WE(;# v UN-a'b$8 )QߓIz֭"?.՗;{Y%ª"hN{D>Pr X5TXbq(::YwO* FvOj, 1p&t6M= (B">Ux+b[Ô Z]63TfNQթ}gNwHX9~BL?-Q6HZeط4Ѵ*AAF?^R}a?{bۤl,F3vr Γ*$2?_q kD -Va Y]1G'Gxr9Ml>h%P;B8?DmkpXV,DIx-~%7eZcHf o84, Q N"zغy*Y-/ YIє_x94S5mۺ -1:MD41.rA#S.`1`P C$ޥI`D:U ʒ@EwBAQ>RۄDvO+Mxߕh[D.bFsmL4UB'] t)|He؉u<}t-IZulƳ>h72FM^7ёx@0 K?/i_ ?[&$_nMI+[NF]s2ZhslΉE_=yЗ}U=g`AsiÐ*\Amζ>^n[539]sz/{Eak%[hwf1'\;fiiWDyق2DF1kϚ)UOKn*L-+*+:~I'1󫀉`Q#(pDG̲ly2qm)'\ tuVs"f&UlWY!_,orr=I]_/뺵龦 DDBB;h.byRWSh"_RܳAIth`EY'R_rՓ;ڑG&ש2QhӺq'_-Dw|ލkwqoyy/CGE[tBXY!7#R 9zT)PH7uaYe^ԡr4|LD6TIJԈO2ȫ}3/hǣᓓ3 4.X4m7hCbд("KalU*,23Yi2j-S -tv&ƠFq7(t@" wx5;ω.,?il׳ ׊=_h^tǷǞN%M7 X颞p &58g,CI5 X(j4o$N%EXî @@PxzIzqw_#aNϏϻGgUJR_!Atq]בP9|aR,XbvވB ^L55uIAyG('jV Z<8LI]Ԍ?)?}+GR'Kz 6Mb(Y?4&f18mpJ6Sf5S^ƇFGE:_rJ񤝶`4ű#̶Hi/,C% f(®'xlP7@yo˯@ _)A5},{nVM+?]HQ.Mߍ\67 i*n|&j67U_i&!NЇQcBp:Xaiۇgjξ*4~YF6( }!G}ɣh~*GӢb,Wm`yޗuP 'eV8v ٱ,g#@KRH@ஸWAF#,0ԥjx",眤cKv$wE rk aL?fhKC/ha J y7$FRtx3<)]–6^<)A3 VaJ:yNl5 m)4Շ63C_+Gt| k!/FE_h-jZkQpax9*, G͉^>4lsz4&;os6,X>,^:XV˧e闐g ;f=qHPdz-7k+D;ޗZ?w:4V&1Jհji央h3o%T y'C(4xڝ<~%9hL-hOt{%N%F2<P͙ѬG iHȖI KrAVcݮ`5j xdrP6F^GGIeGf/>Ht@M'KAU3R\Rӿ2+)| z aJTWbSW1UgXLGڨ!h~f| ML 78hEJ 3v)u~E; +9:+L^+{t-uLd;"㷖^qYD)ۑ\h/%!B́څ.um#LXG%1ڣ*`KCoC+[N6_Y޺#Mj>_]Ȧ=&2Xb LlEFH wD (QFe7I^33tby͙[Fz|`ug1og ܡnf_B :Q.x\g;Ō^4sZr4mG!],TY+Y!E S_Arir36Xvag d7s|瘓-6|cCek l84U9|.8ѓE0x/FyGgձ xK΂% 73@I4@_,<78  .wv:!¾rvzu86Mp ^+i<ww`!%Ϯ(_Uց1tUQu7.{ ċsmvT˄C^xd ~o=w]`Ogio|4m;5xSA?UUvDvsѷ=m;9@=&S\ȵy3anM7kmƳTW:7땗vklo`IkIb8Im$"r;)]g:ZE"tZ8M{MaD5M!}MN(_3>r"VTKI|yJysa: W@b'#XJ , e#ܦX{'F-+x2l+F[_h:˧|d4ywebz!b:)TG&,l2oDL6 Ž[ipmr@E5@qNvy-*Ea{*#D ! X>'ŧ!0>']\)azRŃ=p}v&C0P (0CJ n´r~ _T܂*$I("'i[i0 O Eo}s]M(h邮bAnGv F<&~w i-`k]:tD ANέp$|U$S u` pDf}(l7׶y.ŨW cW< d7xB-3X\*],D1DID@Cr+P( w{ Dy.x)l '_=Fg; ]p©=%ɸ0yZ [|,Wjp |]-o/RKǡr4Swuv쬩{("Gc =[fћsXKh[)xh(>l; *bZ+\OBPQ ,* =9\4Pi-ΨrJ-_i\ys} T^c,prh~4!@GWVx5[`<87{ #c|rԟ:On4د𫦢@0Sv7H+dzϻ0 @H* H.k/0'}6b)ĕW7u< dwlKE:+YeJ#x-(ÉI&+i՛׼t ^f(cOlc. Q[iË&.SR _.BBQzYr%e~/{b2{=,'#\cpɖUR¥'L&w_TX4<ͮD۱nkVJ7 uhM^YK4Hx<rtlcbZ0jBRu&3UMZtƯFyi{ݎ5/Am?H[f{ߙ@pNj&E`a|4]BDHHj8И izB&$QA q9֥KN|ǃ({i;o*Zs?}as:m:I\ϒLki6jET9`!S#pTUY8 hpE*d ƥ)p2’3B8I NΪeD?IGѴ{tVgV"&]N?\.VvQQBp EBy_NrT~ 2AB9| JCH< 1IC9 :#ߛ(L8p206'P;Fh g(@L3ugYmji_>W3$,6n:+>p e #L->)0IR}^,I!D4/vr͋ߍI 8LҊʠ6E43Y-d/ƜZu3/)H94O]~Ϗ@ݼsH )Ev쾆MaDDz. mM !mx3QM/0/ (NӤ{9tVgh[ۚZ1Vcز,HaJp<Sg &JB`ʜAN~)ʟ1?myEAJiݲkإ RRz<݆wodfIsNe(< ֨(mx%h<"lh$F‚dH /WDp|\!@?TRʛY-(nWxrGAd=Í߉k#t,3,+Y\'1DSa̛RGG`7_1horO9W=@`6˱%CPJEu3AxQ4JIB:oQaB? `Mw_b N!K*l1.1e}\CKSCΖJR"9| Ktȍ]fm7 2C63B z9 ʞԵSЀK|jאMO1W8S_nϗ{#&z4Z;}r.9=ce6|gC d Xr ;)S07ŵ=o`4 hbe@{4$ЍP<+$ |_1k>vh S,jV>YI5S-zQfX'5zj?jy[PӴi$`a$ OB]˫;0K'T=!b=O3y:w`~i\գ cuV'$0D$hm(0E- ڟ\ƏU 4jhkO5Qy=Rs'n=/srSf^)@H -N$Hb=p5cF(tV)mݸ`*B 5-Th55;$QHJ`Z9B]h븄Ri\Jђ_L,ul?Qǧno=D~=c3,xv̿&=j/̏?/ȩr]<ޞu6QpbщGJfo8'SS4r<5D98 B~oLgqF ~i+!9{Yy(}nlyt3hӀ:Ri΢6A[1#?.O'}s$0Ȍo"#>PG'=p aK^a- ߲dNsb\&CQ<u`O\;vxzVr/^9wKʍjZAM$^2AxiВf)׋WTs^MZuI&p3-7.p!M.|:\\ǡE؂j08A<XP(`Q:%aqg~,"Ƒ!A߶ zt8eJy]| 7Km /+TNr2+ ^ 똞.` JإD/AΕ((–1DP q# gt*hH>Qa󜧙D̓w ҝ7;q}Vy;Q Ul?k8 8܈Yvޠ SEg){-]Eeur3</dLWX\/2`J]q`Jc2 ݔҝ}LpcWLua&&`aGC`Hh*Ut|Iö R<>gnucܖ@ol/`CWBKVb*.VW  !8*0,~v3LaU{tJ-[fZw}oCT>y_T{ʻ蝇c}W=}[{vvܭh24Ѻ:֫j֓:|&M7US]j_kc(m~ikonF¿Vû# /`Ld ^ jFP;[=w3{{/[θnwC|Wypg'vlћ^_%~y۾7|CK'G?HJiJ^zRi:OqTU|@?UkIx.@5Ml6&}o5ƀ(BEJ#(|gcKwY&6`51\2Zzxj%/H~Q1^ vǽo#O >Ty~COs\[VNP| 7&=RwhVo61U@$ZIuTPtQrY`Ac K@OȲw]~<|Ez"{>t wл9 7^hKVϪAuSżʳR`[cVԒdYG2!42q _#C"xj崈{+cOl ~ NA!3Q#a檑5WpN =ML>P5Hä>☔!݀z@k')"en.^OAv˨׿!_Ozz~VȾh>44:T­'Q(~tIQQJcM_mWҊk"faGiE"&>M\#N٬qwx:<;k}W} ۪|J`X<j:+eΪl %JE9'1 ""iOAzL-3Bٚ XBӑZDƤ'֧?{[xZoS/t^jݰpet-1fN=*ޔh>){hj){ TAh^J!! :P`wJ%RU OiH&upP?@:ڌ'Q3=҆ћbz1'c1@.&Xt(e9f81"C7YqOo%]p:ޘDӯt3Gt~^W.Aw@Y(*#ȊqUƊL0={?+ޓ{@~4uҚS-@$7:0eK3JqH3E">" uFnĢj6@#Nv;ik8Sx4G/2@bqB#vNl+ :s{t1#;H-ZWb@,:z@Q "6+Fl1h,˖Cp *И |}D8e8Ƒ*1BINv"A<{zCY*_bUtg Mgi2~9͊n^*2Ho(bH pX~MQ|9|^8~h\ C ϲ̢A*H;'óa>.<_@}٫wz!H`sAjеAX8llꣀ@0\]CA>i!NDT> DEEz( Q}B2+r~MQ@AlXJ],Ŏ&K5 H"nh@VmZؒu⃏ Bcj(qx "-#P;9@kUn4B ,^}B`AH `oR`UF%Qk̞%y#Hr%p?`I$Hmc QCOfd6"6Qfè8i PK[r4y](%) ~@y{ eُ#ۓ4Tg˨Vj2/PMl>/8:K8?3la"ZuADvp4drn54 Ȟ'o{s }'--|4@! R95:gMˢ:2AmL iULPXM)j ѠLZ 8ap/}. l^&%X8\$uTO)oMGЖ3N:" G߁;9jtd)( atF&_ި<^t@? n^vnx<NMn+o)M|yN87~vY# B\GcU*xzn-W#',%kr\Kp,Ǻ8bpZmn,UL (I 5v5/UKv)=Cw9!^Q=` |V$ǧe?sWxO;\͑/:y e2ZՍշ2yo)L{HtF7DslxV* 9>ygcۭC w n:VbjKFXS2_e1p9D!D$ Đ p9T"gB>"> r$ RY6{R 채s^vp[h~4'9_R&Ep!ALAbifL%OG=C%.ŒNETJp ؄"=` ЎEhY [&5 ?s='@.ֆ*A6+²U˓m3a6̹o͉|:6|8ltG.+琲+㏮|Bfa&Ūh# Z +ڤHuCs9}o27bWlFbq^KyQ#ET#l\^9&a"eAeu9[ٟ)tNg˵ fr;+C=$n2-~P*(<% @f#& Jp?덱q8;j/;3 4Z4\Ꭶ[hI9!Wu7)AASlQjBn d:&EdZSJ;u08K9 &RIuD+izu T7E`l$yb/IHw^|[fU{W`ܳR!0_3'>;rҸ5Ч5elEF%"4YPX_(~:PƦ<T/dKg:Ϩ:_J 3)du]^t䍐EGZؒ.>Lwa'H`(e|2ވs} ei7bXm zy\gsX5ɲА.'d1AVp-GCdQ̽uY͔jn?NQ@|3E`hI0+bؖ@=$Xoѧ;cӬOwf9\[Q j" <zXUnRnF1%Y5sYKXbG,Ǯr 7]ns'` l?R\ ijIѼ\]h.9ǂsKZ2F|F*>-IKT*XĭB˱i)BQIbM8F"ǚ;?1vƧ~{u?S5'j @/]nG{h[6%T̞ey?Ĕ 6Rz`t=$[\!LGiO܍EMxwNtA~gN=V Lѽ 5~ oHjlp%n+ yHmnS@C3BScf2kmH%dUpKc|\mQ]?ɛ|i1in]BD}ˀ Gbjr޺j=ADZK&ԀEl@lM:hh^=zTb;e}YvשUsWq|C=9h^ єΰlKe݄:(}6 ℩gqR^Gz4wfg?3>ql{q?UhJ\th +֏faST,k5jP`,?Sf{hrωS8Cwi덼0GanarJ*xD69互3_q33'!UqR3TxIJܓfT|]ZEh̐jDnL}3^;Wg4E{Wt7D^̔XwA>Iշ K)Xak#+{nXWM IXBw x/v-$`6ļ; LXjaex@jUmƒ\;?s2[)N85zdPR@{JMrFHNs+Jr=U!JDžlƭ~Nҧۣz!9"TycFi3l9dᎽ!_$Qg')w0qi!=dGHi暉2Q3Zcjw,hpRbˬ"m)PC)P'u% H t`>(8Ŵ%XMHF|feoDq<?sZ!)&*ǡ&AYPbdٍߍmJ_Mޅe6mlؕ<VQ"ĝ!ùj7ep'd7hiٰP{Ԫc8鬭d>\#܉oJ0sJZ,wp\YsZGS۬G;N:"G:X:4G40-"aYIiUe@,M aUpk3M9ӿdd%tn_]Co~cڐ3?{D 梞SQmM֗E?TLZR7j!0ߋ:l RSֳ.>]|t]IOrZ5FY?k5E[O(ӯeX2mZjm:M/޺% <"}{x#EFi!p7ET_1beSdcK$g {H[5>y*ON0?qu'%5K>\z|RJ:1>DhowJMM{xޭ''7(0svqu{_+Lnbu>ƕ-"L; nX3=KrJ(՗#M@h܆<{e3nr(OXLƛ448?Wr WRB*-vYBeڜU,qY'LmyK {ݳW3<b?.ݰC9'@N_P,˽JÕʲNEuƢZQ' I5 f^K\DlrC}Q*`@CdCw0EwhPrRXfPOԱi OBML5Ux :  O{.Cwq'3|/P &H(-5NMf4i\PW1&9KNQPL=4/kwg͑5'6Qpe(*xq/lK^f#g!;9}@ =xDn_=e!+a-5 !nJΡbDEv|6 XqH3Iqt#64>̒@НRSz@.}U|_G{Uɱ˜hIj㷲W@H L?<D1nז螳F-}6bU{FC$)\i nKuȿ{UVKւ[ wszPeQ4^hK-qy(7*4]vm$A*%Ȗu5NT%/ii(BQ5+*gv㵀n(%>[.0k'U\qUAycؿT7wfZP>ug1&[q5.هWdoٌ dΞdf[l-ܩם>|- ,1LTI[ܓL; 크Q(xR47a4#+߁'$k2o4H4b4|'`.&Ǖ(-V4[quʎ 1pP<>T- >ӬKEDB y!OX !F70~؍)Y"xt5{[=U*GݥSr;੟TNh2SoGѠvDI}5n/~^ڨG^HW<ߐ 1959-a3flg<ל<#i![a6:sX'y4wJ+v\ sU)D?%!ͥ+Uq̃r.ĸ!PGO?7G4&t#BtnTkNEE9_Vpʻ.U?u8#)0}0̻SLqYEo ʛ-h'BVD 1QyO`=8u8N̟ڴF1`E8uVbe5c5d^UZYƆ6JҜ^Ac̤?w{k:ye|{94Lz/P(Vv*,) hi 6jD=)6<+aݢuO6TS:F ~ ܀^xP o*9c^M$GttN*L5XhE5}T+i7e J~EnW#nX!6;4/rB%7V(՚Փ-SF+§Wl韲aUr<+w'W> +F]gHCBP&~HJkx]![fkۡXZ;voXDN#ʧ}'9J3; Q,FNuIq.I~r#(`=S݉{m!t 90G`Nׁs~FQ1Qw8r3te(1^;1Xl[hr$4ZJc_{zsӤ韜7cndt~a_@!(*7$kݑ]Rxy#+1>}QN@'TCŽ4כFu06.yi\$4'"Uەd;k:ac=t? iK769Ic*QEg:}LA&eEK aUVjmI}o>8f*睁 k#Xݠt)JgC ]EdܻF/͑_b*ʦ~i1ӵ`TMoCP8y R(S4FH`PVlvci"n W@;W:瘩mNz>8Gg>g;? Fu<Wc|2 KK.7dtAg*-rN ljOɰI8L_韮[:RyIut8%_4":^2{41ӊK[cF:=\qS9 U%$b@u'1>AJxj X6:nOȩSHP ޅ_:%:V,_&?Y(o Fud֣e81 }m:؝V$B>B%SJ$ʣ"9՗8CVNg$1]25ȵq9~84G׍֖%7Y$Vb=?kP:4kV9D3ŋ2rMcd,6Ǜ ev'*gkfhʲwN`MQ^kTkΎF>6XL*%enSMª4ĉpJ6w8Tο)mLH`ehN{o@EKUW|V;͋Bќ8Ѽ yuXfrTF..EAh6؝(fb[!"NHEn9Fu?m&q-|J!HA @#6]wְ}i/^ŻnX=xrPEX<Ƴ=JS]xIVyRybCIK>quIs8^F]W^tPHLO >5eYJq w_vMo n 3$fhY6߹zWV\Sn܀ZM.%1 iJ,tK`eY*Q^-2}-w`LIWޤNB6y"WHGÊƄɹweR'޺Uָ6f{hJ;)<| zPrcjevJ?,ķ̈́S2R#R))ЛS79)[پ^c}tL}I*#+fM&i /|$?Ob;uZO.bLvlNlբ٪*Hl`>jR֤I=̓<Њ4OgP2\798{ J<sƊ쾑j?vg89eG)թ/9QeqPu5V7+cKL2;EJ!j )pAދT4ޗX- ŊPN7RC$bVzU{]7®2&; I}aDj&Bゃ8Àd5[25l@_R>hYH܆X0dSlS/E׊Hpx1TTײx?CR hjITeН܊3y$DϰU^fťNNS"F\s#<ک͛w/.$nn!ѵ)({q6G5Djjh "{d͓:M͓c~ -<-Nngq,#?vWTXk Xu2Fkr ~w.%Twp<)6h?ݤqgdtVh6]Ld:ډ5z̷Z4dk&, ɬ ~k[)0K_=QCKE#С?RCeE !_[;AGȲh0 ?r\#7jH{At6X+vu{a7С4l|Fb?Mr#~vq2|?-4tu.xf K)>X&8`^ƿ:4?X#mi]0٠6 !Ce҇Վ4&MGCSh2r]W*1UT{E%eC9Q(亪23,&wN_}Ej)_![RKvWA:oΊ'K8YY,*Asd{A6;yjt}.mZ(GfdFdgrc3c`3{Lu`lii)5RI=XR7l2q2 {6ְnN`?Xz-};fM;ē E,i/JAp$R`&@Lx;&. ce8 )v&_U<ҍONvn‽Rc?ݱ@v)9|^meZxCeW唐?8]~up./ry4z%\Fs1 eJ"ҡ>,MԀ3W!e(3K*i n(O!iU6ro#+}q?ߕ9%  LaZ,26ffvms}H^Vn)rNva`3"^v-`8`-qg6j2>*yhm@uXAc~IXSn[E1-)NMyhM{V1z-ӡS_؞n,iOIw|6%d8FI{?b}3Xgi|fm.p6zЕsLν nLv'7 o;FM /8)Yb5 iǪ/!Z @ĭ8Pq  ]c6T*"ʦhoPpeFk&N*)9qY1\u<*9K icMOkr"YAE7*S#$cDhbj b4UF%ӡ6qNpm?cxat'~fp:hx&{|'6c.Yo԰oC1KHS3읒ꆙs:$i1=I:fԟ$K?~+Dt@Nמe93Kld7"2baI=f*F7l6ښu^J^dSgEFΎD. !]i]jQ6Yq8o)FS =$=I fXztP"`M)(5 i}KtIphns1JA ʼn/e^ֺT삈㦼qomo[c!xk~!x[=7=ʩEV6 bz2JIՈ_THC˨eSe4cAR1m Zxj"֘Zt$Ck4 ܥn砝Pu'i'ɸI@"I-hθ]:PyΪxvXw'桜*8Y5S,gIͰStu2ZQ;d[[ycw䅏K*h;F%) [|hb-!i\򱀺H{8b~ij_ Yz /L= Duf8͉]汴__6%X!^~yQ'MfvrJΓdɑՏ_ -7M;S='5= W0>b(f @q0+`AC4_JVmϤh֫AsZzc6aO_U` v} ٕ ȅ,7PȸLjjo,gM苖|<%+7B4qۘ?:>:EVh X3@@Ec"ApO7!NSAh.dSWmsRT|}nz|d_gAMN '#rcJK}h+N$"RV>hviNLtR㽅oA@ rސJ ?ߨHR C Η5hh^ @.a1*P,uuT*1zTszy-IpR<=𪧀?Wƌ]H[Em:Y/ˇASJV6a7r@Et΍ts4ʐ$3dL0'(ʅ!VLDz.0ZMTn%I[9y2|jcFOop1iszS Z {4\5/H HD()غ$JZ:˵-lk'R^- A(䦵 Uc$!mTuYxfB Ⱦ烙~Q t)_HD3 ᔱ3ڶ{7'_1u11 HqGNj(B6DY>̓y R1',/!Wf#IRFmlЌc};K<~!i&jn:|cM8M`&ԃ[Re8g2oSDld1)I}ٯ#D̕On͟e ePQv~{KXSà_N+NP NٴQFG`C[gўӻ\)swMrP%=j$ֆ_NidyYD(Uh $)hE/5>9-_kKkAٚٚٚ 5&R9dB]^-!z<.Ehխ.@<~)3̗#(͟x"{epxXBCk?} cY^mNK72>p(δ/ݍ[epX DZ 1 h)2ȼC NT(Ip ^Hp>]&!`:{tnnδ۟?_{m oo~?ŭgm;驵=~o~ ˿?zu[5gxw;[f;i#L4]wvwNm ]טawzO̴=q7U2mRXeZYc3WY3?T73fůj[|7Zx o9Uk`ymz~/?^zܸ}y/{ o|/ݻw_fa~V}+`֦qӣqGP(7/BPnƣT*<-3OX1V*a> eV qG\ i Pg_qogw^AힿczN\w2)wzH q>;LkM'͉3?mz=ɧuK6 љaa=ZCy@2_ʖe֚ e܃o/`k5\`P3F^<hgL_ʘ~czmg:S5vG@6=G-/g̓`, c4B@|y&>Nkg5=g3?냐"S^HZHw= ;;9i{P' =_[']7?-? (ޜg"P'd ^j7Ӡ æ]|pKAzuG04((qثbaԃ>$gS;Wj5z:&j{,ON ֑̍NεZC@n3 &8JN` [eЁmpGЁkTo-C~~3|1_?`ȑ]QoNԖw~C+=ovZOQTk(*>-Vt0K<ƈo^%fSxp;F h}ZicQw>f6^7[k>ˑ# .|R%P#B^9 zĕ@/U `ɷヽ:>w%MV㹏x^ͯXvZ-홸ޓ3]}3=Hho9*{ob8  k4)vht ^ABL*CEᔦKAQm#]-PF l~4V&xKXDIE2@/(kF5T"z[ (0C`D_R6jVjrF 47t&[M@G;m$,F:8RjW}hl3i:h[[Jb3Nz# y0PD=lvsԠ^2fzO"}נ2M z9nZi&ڛB&j$mpx'KefKxPpIN& }FiK9GIDgPo&eC*L30#mH5%P  .uZɻA4ck<;@n<Ϻy z@QS:Ij ] aLECڑzUoQw1k/neyCQk:s0̰36=؝8oϚf Ӭ43xѸL+0juN>`C/iʻVR9=q~ [4b\F9?8˅ﻘ y"{ݒ5QBÐ =D7)KS9Qmŋ6h!%0uO&\QWJ|qK1^z-Z,/wF`e4]Ԡ-ElBX 닫MW8터r{`ₒEz䙴#,cubH씘qC6i}W݊v(3?rʸNP-P7^&GRV7`u#w 'A6adӞH1d5gRgPC5"9U~i) |ps}bF|={}ثQQ{( PpLDCz?7=GDdGR'hU,:}KPs1z@;e$U /$++=} *s~sث (Ftno"hT`R [ұ,hP,!R5Th&;L=_ jiG-J+'U\ *^yy_.gxqjq qLg&?ZךP@. @v UU4MA*& eO 4MF޿q B%_,|,wROh~o5ί`ʂj66b ZE'r2gdױL,!S]y'ɂrXx4a "lwީr"ا\s'̰,xv.=G.sξ\ 'G WIhń)T rR*uzCjr!gݣn$rf)cϬLʞ H OQђS} Q %qX)vx.E@ߟ8?o>T_3B@/;r{u*t2 !t!D4qrb @<&n8\wr濖JRl{;!ġ^FJO>3xo#x)!D9g1 yj8WR4T+Zq7@aJLP[tw}k/@kWVkTP]; 7pmSx&!z>D9X42~S&H`P7E0C`=) `0o-g`ׯCY%OC O %0j ]yH5XJ A#%?@݌XT473b %H|b O޾JsxDA!%uh^P1) ԩК@wtוd~7S2h+,3 ZգHF%|GhRֹª:߸V zslOgЛ%q7#N.E6J{Bt䉕~z?s F2)lZ티]cR djed_.PWէ>j7z-Eӭ3YN+4vi3CA & 2,fRq0V6EQ):Aeg"ud*O{>dZ4Ho<*fkes< ok'E#ɖBs3(pơ^`Q6[EM`Ib!ӢX q`甏/m$ 7Ts|.ĶGlMH;%j&>aLA(r tDPQ-WJT3ڏf^+?V",;f) 5v/Ac2:k5@q#m1(9ADBbh0+Rc145Ip>\{ɍ:W5tx ܙcO }WinTkVJ#{YWl4I䒮F,ce693>|<|OLl*`5Iṭl3ficaeμs?Ѽ86V$9F0ϟ J (3g(E_*-Q ,TJQ*MUJaflEcfit{F鍄EzoSҡ:rʌ}f8dT=2(ZQ#1s>%eҤ vHiȳ2%ܼpHУI^hnظ4Y 4lȧHaΎq vL=Qߝf“&#nry؆ >|M݄7xNC Vbcn%*NNd]1 )/N JϽkף&(YhRi5Pz=le/<璙Rِ8ɼ('/^>L$Y&N=ps)~j#AAKOң~zB 6e`Whl0H-fC:?c쁀k!儃⦑:j #rߏGhNo$c/WjXQj6vs`soR&P$M%_lwI"ǫԓ*][3LN67 >@n)zRSN@ZS5 h܁VhF q"t5.fohZ5[htOK89Xu +=.1@WE&S%LgC.0aIS*(gGCj%A{aH,2uLE²qEB-8Nz+ K ?7R}Z#/*h~n"|ؑƼJ[ӓu@FWT^$eGv(Yr&Љ|JMFNlg55xҚnjl(Ϝ٠"rssZ'YVA1GOV)p[&,Aҗ'(>y$.wOIsQ=1=3dyT}gu0Ho[4/ 4lH Bl(V냧}w 2/e/=ȜdXb6ePߣ9`o^ϯLXzG(%9^]κt4[k qNe8P8X8ZG:R whN_)`:$<2Yt)ل qs&d/^0Tm.>A%6@&z-Gu$yNl1f&-y ֖a4UH\檑fd`."?+j;#Z6=Fr>~F-Bilo/AnB2[e@T¥t%m9[$+"T8 DW. ?Ϟ֥*_μC0v9Ϸ*0/"p3QI4+0Z1XXM(ޒPwzJ%]O+A IgSP\:-[ţ `s~v;%Ej0Zb"mdoHZxg8])AKT Ϩ>@rCFd]M}3-5 ~ -:@3 e}/9n i5!c-c$V'储p1nbtɴe6iʓPPEN8[=+h29]NzK @-!?Je"@4^YC'S!6h1 oAãǬGG} KeR; ;]Mryee`3e9 uI !`ԯE}W'@+4ݦjā.0c% ֹGbɈeuo> Iŗ>7Ls֜5āD~G8+>e)-y{"wVW$.uCyxC @9X1ۉ;Pvq?+Ŋ)cK! \8Y:_IKN>=Xܫ9:kQ`B'{"*32Ć1e?4^ ϱP BA6opk $gl(a)ڷ?wmBX t'-DLZn۫ӓ]gZ3wt~~Ұah Œ7 nP@> u`HpG8b.|Uϟ)pL#w=!#JAGhPKYK腯PoWCMb|Ij&Sch66?Oh+2|OH=T-jGQ dڭf$Hy)X-ݻ OL If5|kdL.8''Y%Nu~paoq#9 ]~kp4X*"'W*E>ѦV(o t.<ҸԬÇ,‚+#C3lɇ Ag7Z䋬ZͫeoFNgLFPv HnE2T%Y YZa${RTe'VI.8 (>8\4H >hd%H۝~' U2'Y1P Lt4@.UK$W`CDV CdnlWmivY:9B8{]j|ξl(`BVղz[zLJ^ݍ aN]7ff+;O[>p~[mhL AJFFcbA{JY^ҭP7z"O\/՝6RJq3sn1%D|G!}݉I@!L8%uˌ}*kL rU@28@;SxWFy#>)9_6TUv` A[T"'."Ps_pjj87 5M;DS7R'2OUΌ*#': P ,{åߺx>2m 0'- c3c/!RQ3yNA-7zp/^tJq'F-(%j|d;}׾;ݡi0.oT\3&>Egixc N|&?>9R%Ss&sX(K8 Y/S0\v!mG-)}dq'/`+ut3ifjڬL"DU|'G]酾Bv*;8n?`Gi|$/_Q&Y0厘1ȡUci+4z<*X/J]Kgp&]nP/Li#jdx8GR9ny5ӝMaa}8Тy2--ɬO$/C*~l%q_0=ަHHOkmk3-I^ޤt6[߇zIjI=uO+Х7˻] m^fGOqORSw7A)4{|*[D{EnnZGV|@uXb޳ 8F6iK>$J 4Oȓ=q%Cb  UeŻa޾G0`K߱#pfå5 -G͉["hw&W{aX7PmOFs産e<Ve1I)*ye|r`S ndYR; *O'\*On>]rHPJ^U]V+:X U)%;̞)ihFUh },ѻ%c{P1DHlgd`ͫU>083 4GPO֨~ 'Ih"r!yAh+y4 ͟͏ ZV2@wl:CJ Y$ϰx{5|KB6Z6yGlFk Dm)k>[]jfJJxpKR6B%nV5N󼓇]Z !"sϜ4{+GΕ)uQM>8RV2h~w ܅<]&mQ"Z1ݖ%* 2 n܂Ȱ'Vp ߣV4W0aߑz{)ONG%6Qhǣj*.ͥ3^[޹yI[;i7ɺpu^ I5GeW K Xa+( o P@1",)!hK7|0##3a6`gHJOf W@t#)&…D #PsqyUb<5IU$QP.Q{WBR_|vgX$Q/a'U]H!]ܠXf_|++}#V$з^";lH&MICx^ܩ7z% 4>D!]L޷y4_SA`s9[(9JgK;r|9x*b}֧.  RBԚ3HM]Ӵs~ +M_`T y%F/eV5(_iFy Q=|蕢Yd@Yop?2M^top?;,39tc>uQ Sq3w*MLiO͎䜁JD>S+D{q-sz,aT1) 'P'(#t?.S~_OM]%Ɲ3蓲⦒؇'?: H?pBiK?YWx~V7nAau95HMwwX`)Zߢ`xQhDr4faYYǨ8t3PKè(e^^p~?c?9Ypiܵț:tYrRCus:Ʉ+Arvԝ-DECp A,N3LLR65kyQ6l CmEĜǻ |ͯNro%6&ݖzTۭJo3^"(4kd<. ŵ*Cلl8Q8')b0Dqp-M٦|!{Vk+'cymVoz<,i?[ W"zc<h'L5аq:2!ʼ44(6q4)sZX$$_󾷓Z&}xHcro8H~eO87nϠ{B!&9D+%L Q(_:kXeph( ǵ"Ym(A`r3Ey/98}VoSDuu)Nek\y4BZYHכ3G@يGf"%J7IN(їy}g3ou`BD9$bs=c.A麽<0M1TȻ/a׮/zղ1MdݢO:2BgQKѷ*9 eJј@(݆a&pٔL[U%֊Y>dǥL]hjdy}4}$XJ4 9wC 3\!16{QPYU{DBw+~0C(ΛV,wYKg!;HBq9JXiCZ)n__L6b^(ݸqu.#0b7 [}eBRvahTd1K.bOXM`j?E>>j(xsnP>N %X7\X9WTՕ2qSrl&ף+䎑Q{dӥnu9#lmD25z|[5;r^yfJe'w[$GP4PQ1H 6OC\nE6AiCV|: &PdLra8| J)G ^%iJjǤV)UQLuU*s U&UU cg^džg۝aKOپ^k~*Ϯ zW>2vUy}GДl Mf8XĵQsG(D 1<}^7th-#DvS W# Pԁ+½/)Rŝntg_=_tQQݽ{א3zY27UY?vm;,J(8 gDَ,*`f K Ɲp\c敯V 2oNF"7#/c+lZf>sUl?rOTg[ge|4wh>\KoChzz-Adˤdz$d֨5jxԜ+r M9ңZ8E<DO;k}PA0J2RB)Hd}=t-6YVo" W؎ "J+àA 團 ^UR8p:\fdXȸOE&0Y 7ʯ+)wPYW5M9Y}a(9NΔ#DwDY޼~jU0j8csT!Awߟ!wreW8oknpN`J UKn\?wO -c7r4Śh^.kr?ov%41WPF:}2{,-:3뤬Uޢ|!4_QQ煱TQGUJ&֔:â>R>.A*{4%sP鯁 ,AznpU\ޏ$F熨 5QQ7 >$DPkRA ydk$jT=gT$*:ˤ`a!KD2%aga!Gmcv:'r|AB-UYOp.o^\OPO|D/UQ3'HKf-w\~ȵ10RX4*#.V)CiޑlU˪2g*7eyZQ``8ܮLC}jscX#@oI+ TC$NP v|su y<= U"WJF_?-\ IRߑo-Q9O 7)rHK_su]HiO' =U}<7aġnCU \&n@JzʪtX>~v>ndVx*TM-(zH^RUn#'O(RgtFۉ&`)qiZtE* C{2 5D Fa "*Pt>sf%s uoҟ$g Se "We+إb"=>e/`5_C)X@;~|} MtJ}mNXH덓*bHDR #)r6ͨ),k 4["]6l>I O\j&p(MDI2#LG VH?Hǐ>\ &_$It)#B} Ɋ#Fک-Jj ŚczR2 vD6?PKb=oZ[9d?X\f,~."n,i>)EmC?ͷsFR~ мQw+/;82ٽCڼl^ ֓a#UqHʌ0gآfitm_U*V$MoĦtR4qKz+Ld0Bf ٩HN,)J$EM$8?!hҗk$&mq硴$`맾N4bϻ_y,C2t;ԣ2)~Hk2O4:2'RUO*h4OrҤO?[hm7o@iwy|M2񤥟HauW>+.uq'PpEA3,A`ʆ45T ͛[~~!S zQ/oL:ϘXH%W6f8P#D$WR`4?=wo٭#8v>312e树308S[LYAѝ}%XnVNļ'5i/ Pڧvϟc;$@pմ]y-!?`+: tø3lŇ>JPr_8U xrr/}wryIs֘ 3+MF"':*$divd`f_Q/b4YX{6R '()_*t"[AavFof)rtpmZTم'ObL97;c)gWWObosy1&:7dV1|#i%y[R[:GVj%pj@R NM"Jf*#rq~":" 9&H(d[X'F˱m5MxS;ys"#VyhUsȫu d p֜Izr1wh”h~%BV;%26̩dhδ/S4nNLz i`Y`zs+DڌOI)}(Sj^m&U%R!g1r+_40h aݚvRV￾NT)F\h-kʖLS~s3.>XʗyT2LRjo {ٹxp zI?'SS拡޿{犕ɔʂy `e> ׼$cupSeCiJR&+%eR2hi%Rr04J2fiJjboJ6h zmyZ[V)3*mޣ?S䇭;wW* 1T l^@6V;,ҏ0u J1r/:~L<&朼n@ɞ( |d{v)iJ$ń4g "氜MrZTٷK*A"D*DGIm$dX$${ÓRM^F+rK|r$ignj;Yz~8'((SU< r(A#ݴixc~ ɑ)\S\C8.(5[Z1>=:z΋iwiI>/f5vZgm R\4cG]8/Gɔ!P̾ d\dGrߜ9[bvOk`F>X2jtW:wS\)<,Kp?;M[moR4Ǘbd-m'xv|dH;3-W0#OS\! L|f?ϗkS< r?SFwS`*Jڈ68}:P2ޙ5vRi"HiEԩ{oOWەwwTvwjQY7jdŢ7E=O9r=yc{N`Oec~ H XJG|KN_5?&*={{ܞG3;G0)y's(Nޮחw.Ml0ZbG¨RZ탴wyt]eS])s=t}}V vkv->$e)8]p%ހsd1эd.'s=J T*p^.s8{۵@VG0}uֽJu5mǴB~˵xg~[s_st/gI b2tBz>RmQcXFN 4guwhmKcfDFn_d'S@c.Kfʘygi0TF ,fBCfreebayes-1.3.6/test/tiny/NA12878.chr22.tiny.hla.bam.bai000066400000000000000000000001401417247743000222230ustar00rootroot00000000000000BAIIZaJZa Zfreebayes-1.3.6/test/tiny/hla.fa000066400000000000000000000304451417247743000165230ustar00rootroot00000000000000>HLA-DRB1*16:02:01 GATTCAACAAATATTTACTGAGTACCTACTATGTGCAATGTGTATACTAGGTGCTGGGGA TACAGCAGAGAACAAAGTCCCCACTCTCAATGAAAGGGGCCAGTCTTTTTATTCATCTTT AGTTAATTTTAAGCACACAACAGCTATCTCAAACTTTCTTCACACTTTCCAAGCCCCTGA TCCCTTATGTACTCTTGGCAGATGCCCCACCTTATCTCTTACCAGAACCTAAGGCCAACT AGCATAAAATCCCTTGAGCACACTTAGATTGGCATGCTTTTACTGTGACATCTGTTCCTA CAGCACCCTTACTTTCTTCTCTTGAGCTGAGGGTGAAGATCTCTTTCTTTCCCATCTGTA ATCTCACAATATGCACAACTACACCAGAGACAATGGAGGCACAATACAGGCCAGAGGTCT GTTCCTCATTCCTTCTGCGGGGCCTTCCTCCAGTGAATATCTCTTCTAACATTGTCAATC ATATCCAACAGAAAAAGAGATCTCTCCATTGGTACAAAAACCTACAGCTCCTAAGAAGAT TTTGACTCTCACTGCTCAACTTCTCAAATAAAAATTCCTCCACTTTAGTTCTAATTATCA CTCAAATGCTGTTAGACCTGTGGGCAGGTCACTATATCCCTGCCTAGGTCTGTTTCCCCA TCTGCGTAACAGAGAAATAATTGTGCTTTATCTGTCCTACAGAAGTGTGAAGAGGTTTGA TGTGACAGCAGTGAAAGCAATTTAAAAAGTACAAAGTGCTGTATAAAAGAAGACGTTTTC ATAATTATTCTGTTTTCACATGCTATCTTTATTCCAATGATCTCAAAGTACCTACCCAAG CACAGTTCTAACTCTAGTATATGTAAGCAAACGTGCAAGTCTGTCACCTTCCACACAAAG AGTCCCCCCACCCCCGCCAAACACACCACTCCCTCTCCCTCTCCTTCTCCCTCTCCCTCT CTCCTTCTCCCGCTTTCCACGGTCTCCCTCTGTTGCCGAAGCTGGACCGTACCGCCGTGA TCTCCGCTCGCTGCAACCTTCCTGCCTGTTTCTCCTGCCTCAGCCTGCCGAGTGCCTGGG ATTGCAGGCGCGCGCCGCCACGCCTGACTGGTTTTTGTATTTTTTGGAGACGGGGTTTCG CCATGTTGGATCGGCTGGTCTCCAGCTCCTAACCGCGAGTGATCTGCCTGCCTCGGCTTC CCGAGGTGCCGGGATTGCAGACGGAGTCTCGCTCACTCAGTGCTCAATGTTGCCCAGGCT GGAGTGCAGTGGCGTGATCTTGGCTCGCTACAACCTCCACCTCCCAGCCACCTGCCTTGG CCTCCTAAAGTGCCGAGATTGCAGCCTCTGCCTGGCTGCCACCCCGTCTGGGAAGTGAGG AGCGTCTCTGCCTGGCCGCCCATTGTCTGGGATGTGAAGAGCCCCTCTGCCTGGCCGCCC AGTCTGGGAAGTGAGGAGCGTCTCTGCCCAGCCGCCCATCGTCTGGGATGTGGGGAGCGC CTCTGCCCCGCCGCCCCGTCTGGGATGTGAGGAGCGCCTCTACCCGGCCGCGACCCCGTC TGGGAACTGAGGAGCGTCTCTGCCCGGCCGCCACCCCATCTGGGAGGTGAGGAGCGTCTC TGCCCAGCCGCCCCGTCTGAGAAGTAAGGAGCCCCTCCGCCCGGCAGCCGCCCCGTCTGG GAAGTGAGGAGCGTCTCCGCCCGGCAGCCAGCCCGTCTGGGAGGTGGGGGGCAGCCCCCG CCCGGCCAGCCGCCCCGTCCAGGAGGTGGGGGGCACCCCCCGCCCGGCAGCTGCCCCGTC GGTGGGGGGCGCCTCCGCCCGGCCGCCCCGTCTGGGAAGTGAGGAGCCCCTCTGCCGGGC CGCCACCCCGTCTGGGAGGTGTGCCCGGCAGCTCATTGAGAGCGGGCCATGATGACAATG GCGGTTTTGTCGAATAGAGGGGGGAAATGTGGGGAGAGGAGAGAGATCAGATTGTTACTG TGTCTGTGTGGAGGGAGGTGGACATGGGAGACTCCATTTTGTTCTGTACTGGGAAAAATT CTTCCGCCTTGGGATGCTGTTGATCTATGACCTTACCCCCAACCCCGTGCTCTCTGAAAC ATGTGCTGTGTCCACTCAGGGTTAAATGGATTAAGGGCAGTACAAGATGTGCTTTGTTAA ACAGATGCTTGAAGGCAGCATGCTAGTTAAGAGTCATCACCACTCCCTAATCTCAAGTAC CCAGGGACACGAACACTGAGGAAGGCCGCAGGGTCCTCCTCTGCCTAGGAAAACCAGAGA CCTTTGTTCACATGTTTATCTACTGACCTTCCCTCCACTATTGTCCTATGACCCTGCCAA ATCCCCCTCTCCGAGAAACACCCAAGAATGATCAATAAATACTAAAAAAAAAAAAAAAAA AAAAGGAATATTTTCACGTGCAAATGAAAAAGCCCTAAACAAATCTTAAAATATATAAAG TGGTTCAAAAAATGTTTATTGTTATTATTTTAATAGAGGCCTATACATGGAGCATTTATT TGGGAAAGTTTTAAATGAATGTTTTCCCCTGTTTTGGTTGTTATCAATCTACACTTTACC AATTTTCAATAATGATCATGCCTAATTAATTCAAATTAAAAGGTGTGTAATACAAAAAAA AAAAAAAAACTGCAACCAACCCTCGAATCAGCTCAATCTCTCACTGAATTATGGTTATCT GTCACCACTGTATCTGCCTATCAGTGATTAGGGAGAGCTCTCTCTGGAGAAAAATGTCAC CTAGAGCATCAACAATTTTCATACACAGTATCCAGCATTCACTTGAACGTTACCAAGCAT ACAAGGAAACAGAAACGAGAAAAAAGAGACAACATATCCACATATCCACAGTGACCCAGT TACTAGTTACTGAAGATGATCTTTAAAATAGCTGTAATTCGGCCGGGCGCAGTGGCTCAC GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCTGAGGTCAGGAGTTCGAGACCAGCCTA GCCAACATGGTGAAATCCCGTCTCTAAAAATACAAAAATTAGCTGGGCGTGGTGGGGCGT GCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCACTTGAACCTAGGAAGCA GAGGTTGCAGTGAGCCTAGGGTGTGGTGGGGCGTGCCTGTAATCCCAGCTACTTGGGAGG CTGAGGCAGGAGAATCACTTGAACCTAGGAAGCAGAGATTGCACCATTGCACTCCAGCCT GGGCGACAAATTGCGACTGTATCAAAAAAAAAAAAAAAAAAAGAGGTAACTCTTGGAAAG GAGAAAATATCTGCAGCACATGAATCTAAAAAAAGACTCATCAAAATCTACAAAGAACTC CTATAATTTAATGAAACAAAAATCTCCACAGAAAAATTTGCAAAATAACCCTTAAATACT TCACGAGATAGCCGAATGTCATAAACATACAAAAAAGAGTTAACCACCAAAAAAGAGCTA AAATATCAGAGAAATGCAAACAAAACCCACAATGCATACCACTTCATACCCACTAGAGAG GCTAAAAATGATACCAAGTGTTGTTGAGAATATGCACTGGTCTGAACTCTAATACACTGC TAATGGAAATATTTTACCACTTTGGAAAACAGTTTGGCACATCTACTAAAATGGAATCTA TGCACAGACTGACACAGTCATTCTGCTACTAAATATATACCCAGCAGGACAATGTGGCTC ACGTCTATAATCAGCCCAGGCTGGTCTTGAACTCCTGAGCTCAAAGTGATCCTCTCACCT TGGCTTCCTAAAGTGTTGGGATTACAGGCATGAGCCACCACATCTGGCCACTTTTCTTTA TGTATATTATACATCAATAAAAGTAAAGAATAAAAAGGGAGAAGAGTCTGAAAAGAACAA TTATCACAAAATTAAGGAACGTACTCAACTCTTAAAGATTTGAGAAGGCGTTTCTAAGGT ACTAGCAATGTTCCATTTTGCAATCTGCACAGTGATGACAAGTATTTAACTTATTCTGTA AACAGTACCTTTTTTTTTTTTTTTTTTGAGACAGAGTCTTGCTCTGTCGCCCAGGATAGA GCACAGTGGCGCGATCTCAGCTCACGGCAGCCTCTGCCTCCTGGGGTGACGTGATTCTCA TGCCTCAGCCTCTGGAGTAGCTAGGATTACAGGCAGGCGCCACCACGCCCAGCTAATTTT TGTATTTTTAGTAGAGACAAGATTTTGCCATGTTGGCCAGGCTGGTCTTGAACTCCTGAC CTCAAGTGATCTGCCCGCCTTGGCCTTCCAAAGTGCTAGGATTACAGGCATGAGCCACTG TGCCCAGCCACAAACAGTACTTATATCTTACCTATGTTTAAATGGATATTCAAAATAAGA TTAAAAGAGGTAAGAAAATACAATACTCTAGTAAATGTAAAAATAAGTGAGAAGAATAAA TGCCAAGAGAAATATAATTACCAAGAAGAAATTCAAAGTAGGAACAGTCGTATAACCATT TTTAAAATAATTTTGAATCAGCTTAACATGTTTTCAACAAAAAACCAAACACATACCAAA ACCAAAAAACCACCCAGGTCCAGACTTGTACAGGCAAGTTCTACCAAACTTTGAAGGAAT CATTCTAATTTTACAGAAATAAAAACAGAAGAATAGGAAAAGAAACACTTGCCAATTCAT TTTGTAAGGGTAGTCTAATTTTCATACCAAACCACATGAGAAAAACCCTATTATTTATTA ACAAGCCAAATCCAGCAATATATAATAATAATACATCATGACCAAGTTGGGTTTAATCCC AGGAATGCAAAATTGATTCAATATTAGAAAATCTATTAGGGTAACATGAAACTTAAAGAA AAAAAACAAGAAAATTTCTATACATGCAATTAAAAAGCATCTGTAGAAATTCAATCATTC AGGATTCTTTTTTTCTTTAAGTTTAAAAAAACTTGACAAAGAAAGCTTTATGAAGCCAGG TGCTGTGGCATGTGCCTGTAATCCCAGCCATTCAGGAGGGTAAAGTGGGATGATCACTTG AGCCCAGGAGTTTGAGACCAGTCTGAGCAACATAGCAAGACCCTGTTTCCGGGGAGGGGG TGGGTGGGAAGTAAGCCTTATGAAAAACCAGTAGCCCCTATCACTCAATAAAAGCTTTCC TTTTAACATCAGAACAAGTCAGGGATGCCCTCTGTATCACCACTGCTCTTCAACTTTGTA ATGGAGAGTCCGGCCAGCACAGTTAAGACAAGATAAAATATATCTAAGTCATGAAAAGAA ACAAAATATCATGATTTTCAGATGATATGTTTGTCCTTAAAAAATTTAAAGAGGGATTAC TGGAATAAGAGTTTGTTGGACAATCTTTTTATTCCAGTAATTCATCAGTTTACAAAAGTC AAATGCATTTCTATAAACCATCTACAGATATCTCTTAGAATATAGCCGGGCATGGTGGTG GGCGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAG GCGGAGCTTGCAATGAGCTGAGATCGCCACTGCACTCCAGCCTGGGCCACAGAGCGAGAC TCTGTCTCAAAAAAAAAAAAAAAAAAAAAAGATATCACTTAGAATAGCAACAACAAACAT AAAGTATCAAGGAATCAATTAAACACATGATGTGCAATAATAATAACACAAAACTTTACT GGGAAAACAACTTAGGAAAACAATGTGGAATACCCGGTGAATGTACATATGCCCTACCAT CCAGCAATTCCACTACTGGGGAATCTGTCTAAAGATCTGTGAAACTCTTGTGTATCAGGA GAAATGTGCAAGGTTACTTGCAGGAACACTGTAATAACAACAAACCTAATGTCCATTAAT ACTAGAATGGATAAATTGTGGTATATTTATACAATGGTATATAAAGCAGTGAAAACAAGT AACTATACTATACTCAAAAACATAATGATGAATGAAAAAAGCTAGTTGAAGAATACACAC AGTATGATTTCACTTATATGAAATTCAAAACCAGGAAATACTAAGTACTGTATTGTTTAA TAGAAAGATAATAGTCCAGCCCGGGTGCGGCGGCTCAAGCCTGTAATCCCAGCACTTTGG GAGGCTGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGACCAACATGG AGAAACCCCATCTCTACTAAAAATACAAAACTACCTGGGCGTAGTGGCACATGCCTGTAA TTCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAATCTGGGAGGTGGAGGTTGC AGTGAGTCAAGATTGCACCATTGCACTCCAGCCTGGGCAACAAGAGCAAAACTTCATCTC AAAAAAACAAAAAAAAAAACAACAGAAAAACAAGAAAAAAACAAGAATAAACACATCGAG CCGTGATCATGCCACTGCACTCAAGCCTGAGTGAGAGAGTGACACCCTGTCTCAAAGAAA ACAAAAGACAAAAATACATAACAGGCTGGGCTCAGTGGCTCACACCTATAATCCCAGGAT TTTGGGAGGTAGAGGTGGGTGGATCACTTGAGGTCAGGAGTTAGAGACCACCCTGGCCAA GGTGATGAAACCCTGTCTCTACTAAAAATACAAAAATTAGCCAGATGTGGTAGCGCACAC CTGTAATCCCAGCTACTTGGGAGGCTGAGGCTGGAGAACTGCTTGAACCCGGGAGGTGGA GGTTGGATTCAAGTGACAGCGCCACTGCAGTCCAGCCTGGGCGACAGTGAGACTTTGTAT CAAAACAACAAAACACATAACAGTCATTAATTACCACACATAAAGGTGCTTAATGGATAA TAAGTGCTCAAGGAAATGGCAGTCATGGTGGTGGTTGCAGAGAACAACTGGAGGGGATTA AGAGTGGTGGTAGAAACCAAGCAGAAACCAGTCTAAGAAAACCAAAAAAATACCAGGCAA ATAGTTTCAAAGGAAAATTATACCATTTTAAGATAAGGTAGACTGGTGGCTGGCGCCTGT AATCCCAGCACTTTGGGAGGCCGAGGTGGGTAGATCACCTGAGGTCAGGAGTTTGAGACC AGTCTGGCCAACATAGTGAAACCCCATCTCTACTAAAAATATAAAAATTAGTTACACGTG GTGGTGTGCACCTGTAGTCCCAACTTCTTGGGAGGCTGAGGCAGGAGAATCACTTGAACC TGGGAGGAAGAGGTTGCAGTCAGCCGAGATCATGCCACTGCATTCCAGCCTGGGTGACAG AGCAAGACTCTGTGTCAAAAAAAAAAAAAAAAAGACAAAGTAGTCTTAATGCTATTTCAG AACACAGAAAAGGAAAGAAAACTTCCACACTCATTTTATGAAGCAAGTGTAATGGTAACC CCAACCTGACAAAGACTGCACAAAAGATACTACAGTTGAATACTACTTACGAATATCAAC ACAAAATCTCTGAATATTAGCAAACAGAATCCAATGGCACATTATAAAAAGGAATACAAA TAAACAAGCACAGTTTATTCCAGGTATGAGAGATTCCATATAAGGAAATCTATTGACATG ATCTTCACATTAACAATGTTAAATGTGATGAAATCATATCATCTTCACGGAGGCAGTAAA GACATCTGACAGCTGGGTGCGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAA GGCGGGTGGATTGCCTGAGCTCAGGAGTTCACGACCAGCATGGGCAACAGGGTGAAACCC TGTCTCTACTAAAATACAAAAAATTACCTGGGGGTGGCAATACGCGCTTGTAGTCCCAGC TACTTGGGAGGCTGAGGCAGGAGAATTGCTTGAAACCAGGAGGTGGAGGTTGCAGTGAGC TGAGATGGCACCACTGCACTCCAGCCTGAGAGACAGAGCAAGACTCCATCTCAAAAAACA AACAAACAAAAAGAAACAAAAAACTAAAATAGGAAATGATGGATACTGCCTTAAGTAAAC AAAATACACCTCGGTCCAAAGCCAGCATCTGACTTCATGTGAAAACATTAGAGACTTCCC TGCTAACATCACACACCACATAAGGCTAAAATATTTTCCAATTTACATTTTTAGAGGTAA GCATTAAATTCTATGATGCCAGACAAACATTTACCAGATTTTTTTTTTTGAGATAGAGTT TCACTCTTGTTGCTCAGGCTGGAGTGTAATGGCGCACAATCTCGGCTCGCCACAAGCTCC GCCTCCCAGGTTCAAGCGACTCTCCTGCCTCGGCCTCCCGAGTAGCTGGGATTACAGGCA TGTGCCACCACACCCAGCTAATTTTGTATTTTTTGTAGAGACGGGGTTTCTCCATGTTGG TCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCTGCCTCGGCCTCCCAAAGTGC TGGGATTACAGGTGTGAGCCACCGCGTCTGGCCAAAATTTACCAGTTCTTGAATGCTGAA TCCTGCTGGGATAACTGGAAACACTCCTAATGTTACTATAAACTCTCACACTGCCTTGTT GGCAATAATTAAATAGCTCTTTCTAGCAGTTGTGTTCAAGTGGACAGATAATCACAAATG TCTTTTCTTTCTAGCTCCCTTTGGACGAAAGAAAGAAAGAATTTACAACACGTCTAAAGA TTGTCACTTTTATCATCCCTTTGAATGATAAGTGATCAGGGCTGTCCCAAAAGAATGCCT GAAAACATTACAAAATGTTATCATAAGCAGAATGGCTCACTAAGGGGATGAACATTCTGG CAAGTCTTAATCTAGCATCACTACCAACTGTTTTTTCACTGGTCTAAAACATAACATCTA ATATTTTTATTTGCCTATATAGCCCTGCAGTAATAATTAACTTGTGAAAGGTCTACACTG ATTTTTTTCTTTATAAAGTATTTGCTTCAACCATGGAACAGAAACAAAGTTGATTTAATG GGAAAAATGTAAATTTATTTGAGGATAGGTTCAGCACTGCTAAATTGAAAAGGGAAAGAA AATTTCAAACAAACCCCAAAAAGAAACATTTTCACATCTGTAGTGAAAAAGCTAAATAGC AGTACACTAAACTTGGTTACTGACAAAATAAATCCTTGTGGCCAAGGTGAGGCAAAGATA TTACTCTCTACTTTGCTAGCCTACCTTGTGTTCAGTGAATTCAAACATTAATTGGGGCAA TGTATTGTTTTTGCTTCATTTTCTTTAGCTGTGCAGTAAAGTCTTTGCTTTCATAGAAAG ATTGTGCCAAGTTCTTTCTTTTTCAGAATTGCTTTTAAATCAGTTCTATTTAAGTATTTC TCTCTCTCTCAAACTTGACATTTTTCATTACACCTTTTTTTTCCAATGCCAAAATAGCAG CATTAACATTCATTCCAGTCACTAGGTAAAAACTCTCTTCAGTCAAACACACATGAATAA TCTAATTCGTGAGGTAAACGACTACTGTCATACAGTATTACGAAGTTCCAACCTTACTTG CAGAGCAAAAAATAAAAAATAAAAATAGTCATTTTCCTCAAGGGTTTAATTGTGGGCTTT TAATGTTGAAGTAAATCAATTTACTAGTTTTTAACCTCAAGTTTTTCCCTATTTCATTAT ATCTCAATAATGATTATCCAGAGATTTCTGAGGTAAATTACATTAAAGACAGCGCTAGTA ACTGGGAAACAATCCACACATGAATCTTAATATATTGCATATATGCTAATTTCATGTAAT GTTCCTGAGGGCGGTGACAATATTAGAGCTGTACGAGACCCTAGAGACCATCCCAATCCC TTAACTCCACAGATGAGAAACACAAAAACTTGCAGAAGCAGAGTGACGAGCACATGCCCA TGTGACATGTCATCAGAAGCAGGGACCAAGACTCAGGTCTCTTGCCTTCCAGGCCAGTCC TCTTTTGGTAGGCTAAAAGCTGCCTTTCACAGCTTCCCACAAATTTCAACACATCCTCAC TCAAGTACGTTTCTGAAAGGGACTCACCGACAACTCTTTAGAGAAAAGGAACTATATCTC AAACCATAGGAAAAGTTCTATATCTAGCTTATCAAACTTTTAGTCTCTGAAGCATGTGAG AGTAAGTTTGCCAGTATTTCTTTCTCATTATCCCCCAATACTTTAGTGACTATTTCCAAC AAACAAAACTAGACTATTCTCCCATACAAACAAAATGCTACCATCAAAATCGTCAACGCT CACCTGTCAGATTATGACCAAAGGCCTCTAAGTCAGAATCCCGCCCAGGCAAAATGACAT GGCAGCCAACTGTGGAGCCTCGGTTGGCCTCGGATAGCTGGTCCCCCCTTCATTCACACC ACATATCTGAGGACCAGATATGGAAAGCCTCTCATGCTGGAAAACTTGGCACAGTAGAAA GGCGGCCACACTTTTGCCCGTCACACAATGCACATTCACGGGGGACCTGTGCTAAACCAT TCACAGACAACCTGTTTCTGGGTCAGGGTTTCGTATACAGCAGAGCAGTCAGCTATCGAC ACAAGGGTTTGTAACAAAAAACAAAAAACAACAAAAAAAAGGAAGGACAAACCAAAACAA AAAAGAAAATACCAAAAAAAAGAAGAGTTAAAAAAAAAAGAAGATAAAAATAAAATCATT AACACAGATACACGACTACAATCTAATTTTCAGACATTCTAGTTTTGCCAATCATGCCGA TTCAGAATCATGAACCACATGGAGTTGCCATGTTTCTGCACACTTCTTTAGTGTGGAACA ATTCCTCAGTGTTTTCTTGGTTCCATGATCTTGACTTAATTTTGAGGTTTACAGGCCAGT TATTTTGCAGAATATCCCTAAACTCGGGTTACCTTGATGTTGCCTCCTGAAGATTTGGAT TATGCATGAAACACTTGACTGTCCCTATTCTAACTATATAAAGATGCTCCTTGACTTACT ATGGACTTACATCCCAATAAACCCTTCATAAATGGAAAACCTCATAAGGTGAAATGCTTG TTTTTTTTGGGAAAGTTTCTTGCTCTGTTGCCAGGCGGGAATGCGGTGACACGACGACGG CTCACTGTAGCCTTGACCACTCAGGTTCAAGCGATCCTCAGCCCCAGGCTCCCAAGTAGC TGGGACTATAGGCACGTACCACCACACCTGGCTAATTTTTTTTTTTTTTAATTTTTAGTA CCTTTAGTACAGAAAAGGCCTCACTATGTTGCCTAGATTGGTCTCAAACTCCTAAGCTCA AGGAATCCTCATGCCTCGGTCTCCCAAAGTCCTGGGATTATAGGCATGAGTCCTGCACCC AGCCTAGCTGAAAATACATTTAATACACCTAACTTACCAAACATCACAGCTTAGCTTAGC CTACCTTAAACATGTTCAGAGCACTTACATTAGCCTACAGTTGGGCAAAATCATCTAACG CAAAGCCCATTTTATAATAAAAGTGTTGAGTAACTCATATGATGTATGAAATACTATACT GAAAATGAAAAACAGAACAGTTGCGTGGGTACTCGGAAGTAAGGTTTCTACTGCATGTGT ATCACTTCCATACCATTGTAAAGTCATCTGACCACCAAGCCAAATATTTGTACTTCTGCA CATGCTGCTTTACATAGAGACCGAGACAAAGGGGGATTCACATCTTGTCAACCCTGTTTA CTTCAAAGGAATAACAGAGCATTAACTAGGTACCAAGTGCTCAGGACTTCAAGTATACTG TTTTATTTAATACTCATGACAATCCTTTGACCCCTTACTTGTGACTGGCAAGTTACCCAA CTTTTGTTTCATTTTCCTCATCTGTAAAAACCGGAGAGTGATACACACTCCCTGGAGAAT GACAGGGAAAACAGTACCAAGAACTTTAACCTAACAAGTCAGAAATCAATGAGACCCCTT TTGACAATTCCCACCTTGCCCTTTAGACATTCCGAGATATGCAGCTTTATTTAATAAATG ACCCCACCTTGGGCCTCAGCTGACTAGACCAGAGGCAGACACTCTCCCAGGCTGGAAAGG CCAGGTGGAGTGAGCTGTTCTGTGCAGAATGATCTCCCTAACAGTGTTTTTACACATTCT GTTCCACTTGGAATTGGATTCAGAGTGTTCTCAGCCTCTGGTCATCAAAAAACCTGAAGA CACATACCTTCAGGGAGCTAGGGTCAGCTCTCCTCTGCTGAGTGCATGGGGAAGTGACAA AAGAGAAAAGAGGGGGGAAAATCCAGCTGCTGAGAGATGTAGGGTACAAGAAGCTTTTGT AACTGTAAAGAGGGAGGGAGGTAGCTACGTTGGTCTATTTTCCAGTTCCTGGTTCCAACT ATACCTAAAGCTTTAACTGCACTTTCTATCCTTGCAGTAATATGACAAAGGCCCCC freebayes-1.3.6/test/tiny/hla.fa.fai000066400000000000000000000000411417247743000172460ustar00rootroot00000000000000HLA-DRB1*16:02:01 12356 19 60 61 freebayes-1.3.6/test/tiny/hla.vcf.gz000066400000000000000000000045321417247743000173300ustar00rootroot00000000000000BC= YsJvdn)Tp*5c1$>J"0>߾t#* Lvkg|u˗EjJ>9p3f*2dMa.6ɜKwR$Kms-[d[8ׄ}ۋUJ 㕛 يxn~!]CI@Hb$更LDqDn Gdd S=$pK.+7 a]İ^U,,KBp ,8ȒOIakZ߂00|o "-G&nd\nwnH} ,yrq̣M5nz ͣ;) -iy[-wJ`XnR|7ٖ5\JW"l '".2Qi2ò*u0z{gs9(NG"g7HAVʬj_U gIf{>7V+YP+\P+oh8f!x;AlV gCl @adyGq!=*`E="_XXHؓ3sD&J`bsCEl`t]z0D"!ց!,0CXu;;@bvvmRK 2 KYtKP19X*g,‘ E,L}T>`SX$-=P25-nz$iY.PRa[7uiqZ'8,\f+o6dfn,G cW.Ǝ]s;pl E)?Ǟp{0wAk/)sQu?ŤG&lP5Jw<=+,ɹv%-W.կ{Lp?9oוpX'z?x_{wN.qayQMz3 l-X"%y'Xl}t=erToM&Ky;n^ v,] hؽl(Pkw%;5lIq<EB}?hjU+n_%A4d lYbw5>9Nď|ӾOvAe#| Y,@XA;tf 7ے3s1~q1qr@"nBHy` Z>c wdM~[="f"s+\6}&?'^( [徵L\ 4@$Кr007<()?!pub䆱$dX]̙MMmnȮ'=aR4u^/"^ցvgrpډ]"qX*e B:/*cUAbJf; D{~]/(Xs)(e&oX*R []t`'Uq޶l s_2zw5 .%DWߜۛ}{pԀ׸{&x0t&Bmb%v Y1dd!5T_.MYj벢}6R[^ߺ2iַҷnMo?T)ZSև6):zG1%Ytx1=t2DOcj{gd -] e"5q` lù5Âe\O5Tj(RlT9*M궥ҫ9 JPTns UI[az PiöD= V u܋ ʒ] f:jB,uNH*QMϡlBPREá8:@+Ry3mݠ]4ISRH:U*(s,W )zfuh[S>S`j)_ ڴM{oƲ1`Y/m#8!NMV8"4NใSylKpbn⩿N͠Bl>ζ*骮抯p"BCfreebayes-1.3.6/test/tiny/hla.vcf.gz.tbi000066400000000000000000000001701417247743000200770ustar00rootroot00000000000000BC[ qddd```b PZ=|u] ͬ < :eJ8A$) U/4.ZBCfreebayes-1.3.6/test/tiny/q with spaces.fa000066400000000000000000000304251417247743000204100ustar00rootroot00000000000000>q GATTCAACAAATATTTACTGAGTACCTACTATGTGCAATGTGTATACTAGGTGCTGGGGA TACAGCAGAGAACAAAGTCCCCACTCTCAATGAAAGGGGCCAGTCTTTTTATTCATCTTT AGTTAATTTTAAGCACACAACAGCTATCTCAAACTTTCTTCACACTTTCCAAGCCCCTGA TCCCTTATGTACTCTTGGCAGATGCCCCACCTTATCTCTTACCAGAACCTAAGGCCAACT AGCATAAAATCCCTTGAGCACACTTAGATTGGCATGCTTTTACTGTGACATCTGTTCCTA CAGCACCCTTACTTTCTTCTCTTGAGCTGAGGGTGAAGATCTCTTTCTTTCCCATCTGTA ATCTCACAATATGCACAACTACACCAGAGACAATGGAGGCACAATACAGGCCAGAGGTCT GTTCCTCATTCCTTCTGCGGGGCCTTCCTCCAGTGAATATCTCTTCTAACATTGTCAATC ATATCCAACAGAAAAAGAGATCTCTCCATTGGTACAAAAACCTACAGCTCCTAAGAAGAT TTTGACTCTCACTGCTCAACTTCTCAAATAAAAATTCCTCCACTTTAGTTCTAATTATCA CTCAAATGCTGTTAGACCTGTGGGCAGGTCACTATATCCCTGCCTAGGTCTGTTTCCCCA TCTGCGTAACAGAGAAATAATTGTGCTTTATCTGTCCTACAGAAGTGTGAAGAGGTTTGA TGTGACAGCAGTGAAAGCAATTTAAAAAGTACAAAGTGCTGTATAAAAGAAGACGTTTTC ATAATTATTCTGTTTTCACATGCTATCTTTATTCCAATGATCTCAAAGTACCTACCCAAG CACAGTTCTAACTCTAGTATATGTAAGCAAACGTGCAAGTCTGTCACCTTCCACACAAAG AGTCCCCCCACCCCCGCCAAACACACCACTCCCTCTCCCTCTCCTTCTCCCTCTCCCTCT CTCCTTCTCCCGCTTTCCACGGTCTCCCTCTGTTGCCGAAGCTGGACCGTACCGCCGTGA TCTCCGCTCGCTGCAACCTTCCTGCCTGTTTCTCCTGCCTCAGCCTGCCGAGTGCCTGGG ATTGCAGGCGCGCGCCGCCACGCCTGACTGGTTTTTGTATTTTTTGGAGACGGGGTTTCG CCATGTTGGATCGGCTGGTCTCCAGCTCCTAACCGCGAGTGATCTGCCTGCCTCGGCTTC CCGAGGTGCCGGGATTGCAGACGGAGTCTCGCTCACTCAGTGCTCAATGTTGCCCAGGCT GGAGTGCAGTGGCGTGATCTTGGCTCGCTACAACCTCCACCTCCCAGCCACCTGCCTTGG CCTCCTAAAGTGCCGAGATTGCAGCCTCTGCCTGGCTGCCACCCCGTCTGGGAAGTGAGG AGCGTCTCTGCCTGGCCGCCCATTGTCTGGGATGTGAAGAGCCCCTCTGCCTGGCCGCCC AGTCTGGGAAGTGAGGAGCGTCTCTGCCCAGCCGCCCATCGTCTGGGATGTGGGGAGCGC CTCTGCCCCGCCGCCCCGTCTGGGATGTGAGGAGCGCCTCTACCCGGCCGCGACCCCGTC TGGGAACTGAGGAGCGTCTCTGCCCGGCCGCCACCCCATCTGGGAGGTGAGGAGCGTCTC TGCCCAGCCGCCCCGTCTGAGAAGTAAGGAGCCCCTCCGCCCGGCAGCCGCCCCGTCTGG GAAGTGAGGAGCGTCTCCGCCCGGCAGCCAGCCCGTCTGGGAGGTGGGGGGCAGCCCCCG CCCGGCCAGCCGCCCCGTCCAGGAGGTGGGGGGCACCCCCCGCCCGGCAGCTGCCCCGTC GGTGGGGGGCGCCTCCGCCCGGCCGCCCCGTCTGGGAAGTGAGGAGCCCCTCTGCCGGGC CGCCACCCCGTCTGGGAGGTGTGCCCGGCAGCTCATTGAGAGCGGGCCATGATGACAATG GCGGTTTTGTCGAATAGAGGGGGGAAATGTGGGGAGAGGAGAGAGATCAGATTGTTACTG TGTCTGTGTGGAGGGAGGTGGACATGGGAGACTCCATTTTGTTCTGTACTGGGAAAAATT CTTCCGCCTTGGGATGCTGTTGATCTATGACCTTACCCCCAACCCCGTGCTCTCTGAAAC ATGTGCTGTGTCCACTCAGGGTTAAATGGATTAAGGGCAGTACAAGATGTGCTTTGTTAA ACAGATGCTTGAAGGCAGCATGCTAGTTAAGAGTCATCACCACTCCCTAATCTCAAGTAC CCAGGGACACGAACACTGAGGAAGGCCGCAGGGTCCTCCTCTGCCTAGGAAAACCAGAGA CCTTTGTTCACATGTTTATCTACTGACCTTCCCTCCACTATTGTCCTATGACCCTGCCAA ATCCCCCTCTCCGAGAAACACCCAAGAATGATCAATAAATACTAAAAAAAAAAAAAAAAA AAAAGGAATATTTTCACGTGCAAATGAAAAAGCCCTAAACAAATCTTAAAATATATAAAG TGGTTCAAAAAATGTTTATTGTTATTATTTTAATAGAGGCCTATACATGGAGCATTTATT TGGGAAAGTTTTAAATGAATGTTTTCCCCTGTTTTGGTTGTTATCAATCTACACTTTACC AATTTTCAATAATGATCATGCCTAATTAATTCAAATTAAAAGGTGTGTAATACAAAAAAA AAAAAAAAACTGCAACCAACCCTCGAATCAGCTCAATCTCTCACTGAATTATGGTTATCT GTCACCACTGTATCTGCCTATCAGTGATTAGGGAGAGCTCTCTCTGGAGAAAAATGTCAC CTAGAGCATCAACAATTTTCATACACAGTATCCAGCATTCACTTGAACGTTACCAAGCAT ACAAGGAAACAGAAACGAGAAAAAAGAGACAACATATCCACATATCCACAGTGACCCAGT TACTAGTTACTGAAGATGATCTTTAAAATAGCTGTAATTCGGCCGGGCGCAGTGGCTCAC GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCTGAGGTCAGGAGTTCGAGACCAGCCTA GCCAACATGGTGAAATCCCGTCTCTAAAAATACAAAAATTAGCTGGGCGTGGTGGGGCGT GCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCACTTGAACCTAGGAAGCA GAGGTTGCAGTGAGCCTAGGGTGTGGTGGGGCGTGCCTGTAATCCCAGCTACTTGGGAGG CTGAGGCAGGAGAATCACTTGAACCTAGGAAGCAGAGATTGCACCATTGCACTCCAGCCT GGGCGACAAATTGCGACTGTATCAAAAAAAAAAAAAAAAAAAGAGGTAACTCTTGGAAAG GAGAAAATATCTGCAGCACATGAATCTAAAAAAAGACTCATCAAAATCTACAAAGAACTC CTATAATTTAATGAAACAAAAATCTCCACAGAAAAATTTGCAAAATAACCCTTAAATACT TCACGAGATAGCCGAATGTCATAAACATACAAAAAAGAGTTAACCACCAAAAAAGAGCTA AAATATCAGAGAAATGCAAACAAAACCCACAATGCATACCACTTCATACCCACTAGAGAG GCTAAAAATGATACCAAGTGTTGTTGAGAATATGCACTGGTCTGAACTCTAATACACTGC TAATGGAAATATTTTACCACTTTGGAAAACAGTTTGGCACATCTACTAAAATGGAATCTA TGCACAGACTGACACAGTCATTCTGCTACTAAATATATACCCAGCAGGACAATGTGGCTC ACGTCTATAATCAGCCCAGGCTGGTCTTGAACTCCTGAGCTCAAAGTGATCCTCTCACCT TGGCTTCCTAAAGTGTTGGGATTACAGGCATGAGCCACCACATCTGGCCACTTTTCTTTA TGTATATTATACATCAATAAAAGTAAAGAATAAAAAGGGAGAAGAGTCTGAAAAGAACAA TTATCACAAAATTAAGGAACGTACTCAACTCTTAAAGATTTGAGAAGGCGTTTCTAAGGT ACTAGCAATGTTCCATTTTGCAATCTGCACAGTGATGACAAGTATTTAACTTATTCTGTA AACAGTACCTTTTTTTTTTTTTTTTTTGAGACAGAGTCTTGCTCTGTCGCCCAGGATAGA GCACAGTGGCGCGATCTCAGCTCACGGCAGCCTCTGCCTCCTGGGGTGACGTGATTCTCA TGCCTCAGCCTCTGGAGTAGCTAGGATTACAGGCAGGCGCCACCACGCCCAGCTAATTTT TGTATTTTTAGTAGAGACAAGATTTTGCCATGTTGGCCAGGCTGGTCTTGAACTCCTGAC CTCAAGTGATCTGCCCGCCTTGGCCTTCCAAAGTGCTAGGATTACAGGCATGAGCCACTG TGCCCAGCCACAAACAGTACTTATATCTTACCTATGTTTAAATGGATATTCAAAATAAGA TTAAAAGAGGTAAGAAAATACAATACTCTAGTAAATGTAAAAATAAGTGAGAAGAATAAA TGCCAAGAGAAATATAATTACCAAGAAGAAATTCAAAGTAGGAACAGTCGTATAACCATT TTTAAAATAATTTTGAATCAGCTTAACATGTTTTCAACAAAAAACCAAACACATACCAAA ACCAAAAAACCACCCAGGTCCAGACTTGTACAGGCAAGTTCTACCAAACTTTGAAGGAAT CATTCTAATTTTACAGAAATAAAAACAGAAGAATAGGAAAAGAAACACTTGCCAATTCAT TTTGTAAGGGTAGTCTAATTTTCATACCAAACCACATGAGAAAAACCCTATTATTTATTA ACAAGCCAAATCCAGCAATATATAATAATAATACATCATGACCAAGTTGGGTTTAATCCC AGGAATGCAAAATTGATTCAATATTAGAAAATCTATTAGGGTAACATGAAACTTAAAGAA AAAAAACAAGAAAATTTCTATACATGCAATTAAAAAGCATCTGTAGAAATTCAATCATTC AGGATTCTTTTTTTCTTTAAGTTTAAAAAAACTTGACAAAGAAAGCTTTATGAAGCCAGG TGCTGTGGCATGTGCCTGTAATCCCAGCCATTCAGGAGGGTAAAGTGGGATGATCACTTG AGCCCAGGAGTTTGAGACCAGTCTGAGCAACATAGCAAGACCCTGTTTCCGGGGAGGGGG TGGGTGGGAAGTAAGCCTTATGAAAAACCAGTAGCCCCTATCACTCAATAAAAGCTTTCC TTTTAACATCAGAACAAGTCAGGGATGCCCTCTGTATCACCACTGCTCTTCAACTTTGTA ATGGAGAGTCCGGCCAGCACAGTTAAGACAAGATAAAATATATCTAAGTCATGAAAAGAA ACAAAATATCATGATTTTCAGATGATATGTTTGTCCTTAAAAAATTTAAAGAGGGATTAC TGGAATAAGAGTTTGTTGGACAATCTTTTTATTCCAGTAATTCATCAGTTTACAAAAGTC AAATGCATTTCTATAAACCATCTACAGATATCTCTTAGAATATAGCCGGGCATGGTGGTG GGCGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAG GCGGAGCTTGCAATGAGCTGAGATCGCCACTGCACTCCAGCCTGGGCCACAGAGCGAGAC TCTGTCTCAAAAAAAAAAAAAAAAAAAAAAGATATCACTTAGAATAGCAACAACAAACAT AAAGTATCAAGGAATCAATTAAACACATGATGTGCAATAATAATAACACAAAACTTTACT GGGAAAACAACTTAGGAAAACAATGTGGAATACCCGGTGAATGTACATATGCCCTACCAT CCAGCAATTCCACTACTGGGGAATCTGTCTAAAGATCTGTGAAACTCTTGTGTATCAGGA GAAATGTGCAAGGTTACTTGCAGGAACACTGTAATAACAACAAACCTAATGTCCATTAAT ACTAGAATGGATAAATTGTGGTATATTTATACAATGGTATATAAAGCAGTGAAAACAAGT AACTATACTATACTCAAAAACATAATGATGAATGAAAAAAGCTAGTTGAAGAATACACAC AGTATGATTTCACTTATATGAAATTCAAAACCAGGAAATACTAAGTACTGTATTGTTTAA TAGAAAGATAATAGTCCAGCCCGGGTGCGGCGGCTCAAGCCTGTAATCCCAGCACTTTGG GAGGCTGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGACCAACATGG AGAAACCCCATCTCTACTAAAAATACAAAACTACCTGGGCGTAGTGGCACATGCCTGTAA TTCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAATCTGGGAGGTGGAGGTTGC AGTGAGTCAAGATTGCACCATTGCACTCCAGCCTGGGCAACAAGAGCAAAACTTCATCTC AAAAAAACAAAAAAAAAAACAACAGAAAAACAAGAAAAAAACAAGAATAAACACATCGAG CCGTGATCATGCCACTGCACTCAAGCCTGAGTGAGAGAGTGACACCCTGTCTCAAAGAAA ACAAAAGACAAAAATACATAACAGGCTGGGCTCAGTGGCTCACACCTATAATCCCAGGAT TTTGGGAGGTAGAGGTGGGTGGATCACTTGAGGTCAGGAGTTAGAGACCACCCTGGCCAA GGTGATGAAACCCTGTCTCTACTAAAAATACAAAAATTAGCCAGATGTGGTAGCGCACAC CTGTAATCCCAGCTACTTGGGAGGCTGAGGCTGGAGAACTGCTTGAACCCGGGAGGTGGA GGTTGGATTCAAGTGACAGCGCCACTGCAGTCCAGCCTGGGCGACAGTGAGACTTTGTAT CAAAACAACAAAACACATAACAGTCATTAATTACCACACATAAAGGTGCTTAATGGATAA TAAGTGCTCAAGGAAATGGCAGTCATGGTGGTGGTTGCAGAGAACAACTGGAGGGGATTA AGAGTGGTGGTAGAAACCAAGCAGAAACCAGTCTAAGAAAACCAAAAAAATACCAGGCAA ATAGTTTCAAAGGAAAATTATACCATTTTAAGATAAGGTAGACTGGTGGCTGGCGCCTGT AATCCCAGCACTTTGGGAGGCCGAGGTGGGTAGATCACCTGAGGTCAGGAGTTTGAGACC AGTCTGGCCAACATAGTGAAACCCCATCTCTACTAAAAATATAAAAATTAGTTACACGTG GTGGTGTGCACCTGTAGTCCCAACTTCTTGGGAGGCTGAGGCAGGAGAATCACTTGAACC TGGGAGGAAGAGGTTGCAGTCAGCCGAGATCATGCCACTGCATTCCAGCCTGGGTGACAG AGCAAGACTCTGTGTCAAAAAAAAAAAAAAAAAGACAAAGTAGTCTTAATGCTATTTCAG AACACAGAAAAGGAAAGAAAACTTCCACACTCATTTTATGAAGCAAGTGTAATGGTAACC CCAACCTGACAAAGACTGCACAAAAGATACTACAGTTGAATACTACTTACGAATATCAAC ACAAAATCTCTGAATATTAGCAAACAGAATCCAATGGCACATTATAAAAAGGAATACAAA TAAACAAGCACAGTTTATTCCAGGTATGAGAGATTCCATATAAGGAAATCTATTGACATG ATCTTCACATTAACAATGTTAAATGTGATGAAATCATATCATCTTCACGGAGGCAGTAAA GACATCTGACAGCTGGGTGCGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAA GGCGGGTGGATTGCCTGAGCTCAGGAGTTCACGACCAGCATGGGCAACAGGGTGAAACCC TGTCTCTACTAAAATACAAAAAATTACCTGGGGGTGGCAATACGCGCTTGTAGTCCCAGC TACTTGGGAGGCTGAGGCAGGAGAATTGCTTGAAACCAGGAGGTGGAGGTTGCAGTGAGC TGAGATGGCACCACTGCACTCCAGCCTGAGAGACAGAGCAAGACTCCATCTCAAAAAACA AACAAACAAAAAGAAACAAAAAACTAAAATAGGAAATGATGGATACTGCCTTAAGTAAAC AAAATACACCTCGGTCCAAAGCCAGCATCTGACTTCATGTGAAAACATTAGAGACTTCCC TGCTAACATCACACACCACATAAGGCTAAAATATTTTCCAATTTACATTTTTAGAGGTAA GCATTAAATTCTATGATGCCAGACAAACATTTACCAGATTTTTTTTTTTGAGATAGAGTT TCACTCTTGTTGCTCAGGCTGGAGTGTAATGGCGCACAATCTCGGCTCGCCACAAGCTCC GCCTCCCAGGTTCAAGCGACTCTCCTGCCTCGGCCTCCCGAGTAGCTGGGATTACAGGCA TGTGCCACCACACCCAGCTAATTTTGTATTTTTTGTAGAGACGGGGTTTCTCCATGTTGG TCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCTGCCTCGGCCTCCCAAAGTGC TGGGATTACAGGTGTGAGCCACCGCGTCTGGCCAAAATTTACCAGTTCTTGAATGCTGAA TCCTGCTGGGATAACTGGAAACACTCCTAATGTTACTATAAACTCTCACACTGCCTTGTT GGCAATAATTAAATAGCTCTTTCTAGCAGTTGTGTTCAAGTGGACAGATAATCACAAATG TCTTTTCTTTCTAGCTCCCTTTGGACGAAAGAAAGAAAGAATTTACAACACGTCTAAAGA TTGTCACTTTTATCATCCCTTTGAATGATAAGTGATCAGGGCTGTCCCAAAAGAATGCCT GAAAACATTACAAAATGTTATCATAAGCAGAATGGCTCACTAAGGGGATGAACATTCTGG CAAGTCTTAATCTAGCATCACTACCAACTGTTTTTTCACTGGTCTAAAACATAACATCTA ATATTTTTATTTGCCTATATAGCCCTGCAGTAATAATTAACTTGTGAAAGGTCTACACTG ATTTTTTTCTTTATAAAGTATTTGCTTCAACCATGGAACAGAAACAAAGTTGATTTAATG GGAAAAATGTAAATTTATTTGAGGATAGGTTCAGCACTGCTAAATTGAAAAGGGAAAGAA AATTTCAAACAAACCCCAAAAAGAAACATTTTCACATCTGTAGTGAAAAAGCTAAATAGC AGTACACTAAACTTGGTTACTGACAAAATAAATCCTTGTGGCCAAGGTGAGGCAAAGATA TTACTCTCTACTTTGCTAGCCTACCTTGTGTTCAGTGAATTCAAACATTAATTGGGGCAA TGTATTGTTTTTGCTTCATTTTCTTTAGCTGTGCAGTAAAGTCTTTGCTTTCATAGAAAG ATTGTGCCAAGTTCTTTCTTTTTCAGAATTGCTTTTAAATCAGTTCTATTTAAGTATTTC TCTCTCTCTCAAACTTGACATTTTTCATTACACCTTTTTTTTCCAATGCCAAAATAGCAG CATTAACATTCATTCCAGTCACTAGGTAAAAACTCTCTTCAGTCAAACACACATGAATAA TCTAATTCGTGAGGTAAACGACTACTGTCATACAGTATTACGAAGTTCCAACCTTACTTG CAGAGCAAAAAATAAAAAATAAAAATAGTCATTTTCCTCAAGGGTTTAATTGTGGGCTTT TAATGTTGAAGTAAATCAATTTACTAGTTTTTAACCTCAAGTTTTTCCCTATTTCATTAT ATCTCAATAATGATTATCCAGAGATTTCTGAGGTAAATTACATTAAAGACAGCGCTAGTA ACTGGGAAACAATCCACACATGAATCTTAATATATTGCATATATGCTAATTTCATGTAAT GTTCCTGAGGGCGGTGACAATATTAGAGCTGTACGAGACCCTAGAGACCATCCCAATCCC TTAACTCCACAGATGAGAAACACAAAAACTTGCAGAAGCAGAGTGACGAGCACATGCCCA TGTGACATGTCATCAGAAGCAGGGACCAAGACTCAGGTCTCTTGCCTTCCAGGCCAGTCC TCTTTTGGTAGGCTAAAAGCTGCCTTTCACAGCTTCCCACAAATTTCAACACATCCTCAC TCAAGTACGTTTCTGAAAGGGACTCACCGACAACTCTTTAGAGAAAAGGAACTATATCTC AAACCATAGGAAAAGTTCTATATCTAGCTTATCAAACTTTTAGTCTCTGAAGCATGTGAG AGTAAGTTTGCCAGTATTTCTTTCTCATTATCCCCCAATACTTTAGTGACTATTTCCAAC AAACAAAACTAGACTATTCTCCCATACAAACAAAATGCTACCATCAAAATCGTCAACGCT CACCTGTCAGATTATGACCAAAGGCCTCTAAGTCAGAATCCCGCCCAGGCAAAATGACAT GGCAGCCAACTGTGGAGCCTCGGTTGGCCTCGGATAGCTGGTCCCCCCTTCATTCACACC ACATATCTGAGGACCAGATATGGAAAGCCTCTCATGCTGGAAAACTTGGCACAGTAGAAA GGCGGCCACACTTTTGCCCGTCACACAATGCACATTCACGGGGGACCTGTGCTAAACCAT TCACAGACAACCTGTTTCTGGGTCAGGGTTTCGTATACAGCAGAGCAGTCAGCTATCGAC ACAAGGGTTTGTAACAAAAAACAAAAAACAACAAAAAAAAGGAAGGACAAACCAAAACAA AAAAGAAAATACCAAAAAAAAGAAGAGTTAAAAAAAAAAGAAGATAAAAATAAAATCATT AACACAGATACACGACTACAATCTAATTTTCAGACATTCTAGTTTTGCCAATCATGCCGA TTCAGAATCATGAACCACATGGAGTTGCCATGTTTCTGCACACTTCTTTAGTGTGGAACA ATTCCTCAGTGTTTTCTTGGTTCCATGATCTTGACTTAATTTTGAGGTTTACAGGCCAGT TATTTTGCAGAATATCCCTAAACTCGGGTTACCTTGATGTTGCCTCCTGAAGATTTGGAT TATGCATGAAACACTTGACTGTCCCTATTCTAACTATATAAAGATGCTCCTTGACTTACT ATGGACTTACATCCCAATAAACCCTTCATAAATGGAAAACCTCATAAGGTGAAATGCTTG TTTTTTTTGGGAAAGTTTCTTGCTCTGTTGCCAGGCGGGAATGCGGTGACACGACGACGG CTCACTGTAGCCTTGACCACTCAGGTTCAAGCGATCCTCAGCCCCAGGCTCCCAAGTAGC TGGGACTATAGGCACGTACCACCACACCTGGCTAATTTTTTTTTTTTTTAATTTTTAGTA CCTTTAGTACAGAAAAGGCCTCACTATGTTGCCTAGATTGGTCTCAAACTCCTAAGCTCA AGGAATCCTCATGCCTCGGTCTCCCAAAGTCCTGGGATTATAGGCATGAGTCCTGCACCC AGCCTAGCTGAAAATACATTTAATACACCTAACTTACCAAACATCACAGCTTAGCTTAGC CTACCTTAAACATGTTCAGAGCACTTACATTAGCCTACAGTTGGGCAAAATCATCTAACG CAAAGCCCATTTTATAATAAAAGTGTTGAGTAACTCATATGATGTATGAAATACTATACT GAAAATGAAAAACAGAACAGTTGCGTGGGTACTCGGAAGTAAGGTTTCTACTGCATGTGT ATCACTTCCATACCATTGTAAAGTCATCTGACCACCAAGCCAAATATTTGTACTTCTGCA CATGCTGCTTTACATAGAGACCGAGACAAAGGGGGATTCACATCTTGTCAACCCTGTTTA CTTCAAAGGAATAACAGAGCATTAACTAGGTACCAAGTGCTCAGGACTTCAAGTATACTG TTTTATTTAATACTCATGACAATCCTTTGACCCCTTACTTGTGACTGGCAAGTTACCCAA CTTTTGTTTCATTTTCCTCATCTGTAAAAACCGGAGAGTGATACACACTCCCTGGAGAAT GACAGGGAAAACAGTACCAAGAACTTTAACCTAACAAGTCAGAAATCAATGAGACCCCTT TTGACAATTCCCACCTTGCCCTTTAGACATTCCGAGATATGCAGCTTTATTTAATAAATG ACCCCACCTTGGGCCTCAGCTGACTAGACCAGAGGCAGACACTCTCCCAGGCTGGAAAGG CCAGGTGGAGTGAGCTGTTCTGTGCAGAATGATCTCCCTAACAGTGTTTTTACACATTCT GTTCCACTTGGAATTGGATTCAGAGTGTTCTCAGCCTCTGGTCATCAAAAAACCTGAAGA CACATACCTTCAGGGAGCTAGGGTCAGCTCTCCTCTGCTGAGTGCATGGGGAAGTGACAA AAGAGAAAAGAGGGGGGAAAATCCAGCTGCTGAGAGATGTAGGGTACAAGAAGCTTTTGT AACTGTAAAGAGGGAGGGAGGTAGCTACGTTGGTCTATTTTCCAGTTCCTGGTTCCAACT ATACCTAAAGCTTTAACTGCACTTTCTATCCTTGCAGTAATATGACAAAGGCCCCC freebayes-1.3.6/test/tiny/q with spaces.fa.fai000066400000000000000000000000201417247743000211320ustar00rootroot00000000000000q 12356 3 60 61 freebayes-1.3.6/test/tiny/q with spaces.regions000066400000000000000000000000441417247743000214620ustar00rootroot00000000000000q:0-5000 q:5000-10000 q:10000-12356 freebayes-1.3.6/test/tiny/q.fa000066400000000000000000000304251417247743000162150ustar00rootroot00000000000000>q GATTCAACAAATATTTACTGAGTACCTACTATGTGCAATGTGTATACTAGGTGCTGGGGA TACAGCAGAGAACAAAGTCCCCACTCTCAATGAAAGGGGCCAGTCTTTTTATTCATCTTT AGTTAATTTTAAGCACACAACAGCTATCTCAAACTTTCTTCACACTTTCCAAGCCCCTGA TCCCTTATGTACTCTTGGCAGATGCCCCACCTTATCTCTTACCAGAACCTAAGGCCAACT AGCATAAAATCCCTTGAGCACACTTAGATTGGCATGCTTTTACTGTGACATCTGTTCCTA CAGCACCCTTACTTTCTTCTCTTGAGCTGAGGGTGAAGATCTCTTTCTTTCCCATCTGTA ATCTCACAATATGCACAACTACACCAGAGACAATGGAGGCACAATACAGGCCAGAGGTCT GTTCCTCATTCCTTCTGCGGGGCCTTCCTCCAGTGAATATCTCTTCTAACATTGTCAATC ATATCCAACAGAAAAAGAGATCTCTCCATTGGTACAAAAACCTACAGCTCCTAAGAAGAT TTTGACTCTCACTGCTCAACTTCTCAAATAAAAATTCCTCCACTTTAGTTCTAATTATCA CTCAAATGCTGTTAGACCTGTGGGCAGGTCACTATATCCCTGCCTAGGTCTGTTTCCCCA TCTGCGTAACAGAGAAATAATTGTGCTTTATCTGTCCTACAGAAGTGTGAAGAGGTTTGA TGTGACAGCAGTGAAAGCAATTTAAAAAGTACAAAGTGCTGTATAAAAGAAGACGTTTTC ATAATTATTCTGTTTTCACATGCTATCTTTATTCCAATGATCTCAAAGTACCTACCCAAG CACAGTTCTAACTCTAGTATATGTAAGCAAACGTGCAAGTCTGTCACCTTCCACACAAAG AGTCCCCCCACCCCCGCCAAACACACCACTCCCTCTCCCTCTCCTTCTCCCTCTCCCTCT CTCCTTCTCCCGCTTTCCACGGTCTCCCTCTGTTGCCGAAGCTGGACCGTACCGCCGTGA TCTCCGCTCGCTGCAACCTTCCTGCCTGTTTCTCCTGCCTCAGCCTGCCGAGTGCCTGGG ATTGCAGGCGCGCGCCGCCACGCCTGACTGGTTTTTGTATTTTTTGGAGACGGGGTTTCG CCATGTTGGATCGGCTGGTCTCCAGCTCCTAACCGCGAGTGATCTGCCTGCCTCGGCTTC CCGAGGTGCCGGGATTGCAGACGGAGTCTCGCTCACTCAGTGCTCAATGTTGCCCAGGCT GGAGTGCAGTGGCGTGATCTTGGCTCGCTACAACCTCCACCTCCCAGCCACCTGCCTTGG CCTCCTAAAGTGCCGAGATTGCAGCCTCTGCCTGGCTGCCACCCCGTCTGGGAAGTGAGG AGCGTCTCTGCCTGGCCGCCCATTGTCTGGGATGTGAAGAGCCCCTCTGCCTGGCCGCCC AGTCTGGGAAGTGAGGAGCGTCTCTGCCCAGCCGCCCATCGTCTGGGATGTGGGGAGCGC CTCTGCCCCGCCGCCCCGTCTGGGATGTGAGGAGCGCCTCTACCCGGCCGCGACCCCGTC TGGGAACTGAGGAGCGTCTCTGCCCGGCCGCCACCCCATCTGGGAGGTGAGGAGCGTCTC TGCCCAGCCGCCCCGTCTGAGAAGTAAGGAGCCCCTCCGCCCGGCAGCCGCCCCGTCTGG GAAGTGAGGAGCGTCTCCGCCCGGCAGCCAGCCCGTCTGGGAGGTGGGGGGCAGCCCCCG CCCGGCCAGCCGCCCCGTCCAGGAGGTGGGGGGCACCCCCCGCCCGGCAGCTGCCCCGTC GGTGGGGGGCGCCTCCGCCCGGCCGCCCCGTCTGGGAAGTGAGGAGCCCCTCTGCCGGGC CGCCACCCCGTCTGGGAGGTGTGCCCGGCAGCTCATTGAGAGCGGGCCATGATGACAATG GCGGTTTTGTCGAATAGAGGGGGGAAATGTGGGGAGAGGAGAGAGATCAGATTGTTACTG TGTCTGTGTGGAGGGAGGTGGACATGGGAGACTCCATTTTGTTCTGTACTGGGAAAAATT CTTCCGCCTTGGGATGCTGTTGATCTATGACCTTACCCCCAACCCCGTGCTCTCTGAAAC ATGTGCTGTGTCCACTCAGGGTTAAATGGATTAAGGGCAGTACAAGATGTGCTTTGTTAA ACAGATGCTTGAAGGCAGCATGCTAGTTAAGAGTCATCACCACTCCCTAATCTCAAGTAC CCAGGGACACGAACACTGAGGAAGGCCGCAGGGTCCTCCTCTGCCTAGGAAAACCAGAGA CCTTTGTTCACATGTTTATCTACTGACCTTCCCTCCACTATTGTCCTATGACCCTGCCAA ATCCCCCTCTCCGAGAAACACCCAAGAATGATCAATAAATACTAAAAAAAAAAAAAAAAA AAAAGGAATATTTTCACGTGCAAATGAAAAAGCCCTAAACAAATCTTAAAATATATAAAG TGGTTCAAAAAATGTTTATTGTTATTATTTTAATAGAGGCCTATACATGGAGCATTTATT TGGGAAAGTTTTAAATGAATGTTTTCCCCTGTTTTGGTTGTTATCAATCTACACTTTACC AATTTTCAATAATGATCATGCCTAATTAATTCAAATTAAAAGGTGTGTAATACAAAAAAA AAAAAAAAACTGCAACCAACCCTCGAATCAGCTCAATCTCTCACTGAATTATGGTTATCT GTCACCACTGTATCTGCCTATCAGTGATTAGGGAGAGCTCTCTCTGGAGAAAAATGTCAC CTAGAGCATCAACAATTTTCATACACAGTATCCAGCATTCACTTGAACGTTACCAAGCAT ACAAGGAAACAGAAACGAGAAAAAAGAGACAACATATCCACATATCCACAGTGACCCAGT TACTAGTTACTGAAGATGATCTTTAAAATAGCTGTAATTCGGCCGGGCGCAGTGGCTCAC GCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCTGAGGTCAGGAGTTCGAGACCAGCCTA GCCAACATGGTGAAATCCCGTCTCTAAAAATACAAAAATTAGCTGGGCGTGGTGGGGCGT GCCTGTAATCCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCACTTGAACCTAGGAAGCA GAGGTTGCAGTGAGCCTAGGGTGTGGTGGGGCGTGCCTGTAATCCCAGCTACTTGGGAGG CTGAGGCAGGAGAATCACTTGAACCTAGGAAGCAGAGATTGCACCATTGCACTCCAGCCT GGGCGACAAATTGCGACTGTATCAAAAAAAAAAAAAAAAAAAGAGGTAACTCTTGGAAAG GAGAAAATATCTGCAGCACATGAATCTAAAAAAAGACTCATCAAAATCTACAAAGAACTC CTATAATTTAATGAAACAAAAATCTCCACAGAAAAATTTGCAAAATAACCCTTAAATACT TCACGAGATAGCCGAATGTCATAAACATACAAAAAAGAGTTAACCACCAAAAAAGAGCTA AAATATCAGAGAAATGCAAACAAAACCCACAATGCATACCACTTCATACCCACTAGAGAG GCTAAAAATGATACCAAGTGTTGTTGAGAATATGCACTGGTCTGAACTCTAATACACTGC TAATGGAAATATTTTACCACTTTGGAAAACAGTTTGGCACATCTACTAAAATGGAATCTA TGCACAGACTGACACAGTCATTCTGCTACTAAATATATACCCAGCAGGACAATGTGGCTC ACGTCTATAATCAGCCCAGGCTGGTCTTGAACTCCTGAGCTCAAAGTGATCCTCTCACCT TGGCTTCCTAAAGTGTTGGGATTACAGGCATGAGCCACCACATCTGGCCACTTTTCTTTA TGTATATTATACATCAATAAAAGTAAAGAATAAAAAGGGAGAAGAGTCTGAAAAGAACAA TTATCACAAAATTAAGGAACGTACTCAACTCTTAAAGATTTGAGAAGGCGTTTCTAAGGT ACTAGCAATGTTCCATTTTGCAATCTGCACAGTGATGACAAGTATTTAACTTATTCTGTA AACAGTACCTTTTTTTTTTTTTTTTTTGAGACAGAGTCTTGCTCTGTCGCCCAGGATAGA GCACAGTGGCGCGATCTCAGCTCACGGCAGCCTCTGCCTCCTGGGGTGACGTGATTCTCA TGCCTCAGCCTCTGGAGTAGCTAGGATTACAGGCAGGCGCCACCACGCCCAGCTAATTTT TGTATTTTTAGTAGAGACAAGATTTTGCCATGTTGGCCAGGCTGGTCTTGAACTCCTGAC CTCAAGTGATCTGCCCGCCTTGGCCTTCCAAAGTGCTAGGATTACAGGCATGAGCCACTG TGCCCAGCCACAAACAGTACTTATATCTTACCTATGTTTAAATGGATATTCAAAATAAGA TTAAAAGAGGTAAGAAAATACAATACTCTAGTAAATGTAAAAATAAGTGAGAAGAATAAA TGCCAAGAGAAATATAATTACCAAGAAGAAATTCAAAGTAGGAACAGTCGTATAACCATT TTTAAAATAATTTTGAATCAGCTTAACATGTTTTCAACAAAAAACCAAACACATACCAAA ACCAAAAAACCACCCAGGTCCAGACTTGTACAGGCAAGTTCTACCAAACTTTGAAGGAAT CATTCTAATTTTACAGAAATAAAAACAGAAGAATAGGAAAAGAAACACTTGCCAATTCAT TTTGTAAGGGTAGTCTAATTTTCATACCAAACCACATGAGAAAAACCCTATTATTTATTA ACAAGCCAAATCCAGCAATATATAATAATAATACATCATGACCAAGTTGGGTTTAATCCC AGGAATGCAAAATTGATTCAATATTAGAAAATCTATTAGGGTAACATGAAACTTAAAGAA AAAAAACAAGAAAATTTCTATACATGCAATTAAAAAGCATCTGTAGAAATTCAATCATTC AGGATTCTTTTTTTCTTTAAGTTTAAAAAAACTTGACAAAGAAAGCTTTATGAAGCCAGG TGCTGTGGCATGTGCCTGTAATCCCAGCCATTCAGGAGGGTAAAGTGGGATGATCACTTG AGCCCAGGAGTTTGAGACCAGTCTGAGCAACATAGCAAGACCCTGTTTCCGGGGAGGGGG TGGGTGGGAAGTAAGCCTTATGAAAAACCAGTAGCCCCTATCACTCAATAAAAGCTTTCC TTTTAACATCAGAACAAGTCAGGGATGCCCTCTGTATCACCACTGCTCTTCAACTTTGTA ATGGAGAGTCCGGCCAGCACAGTTAAGACAAGATAAAATATATCTAAGTCATGAAAAGAA ACAAAATATCATGATTTTCAGATGATATGTTTGTCCTTAAAAAATTTAAAGAGGGATTAC TGGAATAAGAGTTTGTTGGACAATCTTTTTATTCCAGTAATTCATCAGTTTACAAAAGTC AAATGCATTTCTATAAACCATCTACAGATATCTCTTAGAATATAGCCGGGCATGGTGGTG GGCGCCTGTAATCCCAGCTACTAGGGAGGCTGAGGCAGGAGAATGGCGTGAACCCAGGAG GCGGAGCTTGCAATGAGCTGAGATCGCCACTGCACTCCAGCCTGGGCCACAGAGCGAGAC TCTGTCTCAAAAAAAAAAAAAAAAAAAAAAGATATCACTTAGAATAGCAACAACAAACAT AAAGTATCAAGGAATCAATTAAACACATGATGTGCAATAATAATAACACAAAACTTTACT GGGAAAACAACTTAGGAAAACAATGTGGAATACCCGGTGAATGTACATATGCCCTACCAT CCAGCAATTCCACTACTGGGGAATCTGTCTAAAGATCTGTGAAACTCTTGTGTATCAGGA GAAATGTGCAAGGTTACTTGCAGGAACACTGTAATAACAACAAACCTAATGTCCATTAAT ACTAGAATGGATAAATTGTGGTATATTTATACAATGGTATATAAAGCAGTGAAAACAAGT AACTATACTATACTCAAAAACATAATGATGAATGAAAAAAGCTAGTTGAAGAATACACAC AGTATGATTTCACTTATATGAAATTCAAAACCAGGAAATACTAAGTACTGTATTGTTTAA TAGAAAGATAATAGTCCAGCCCGGGTGCGGCGGCTCAAGCCTGTAATCCCAGCACTTTGG GAGGCTGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGACCAACATGG AGAAACCCCATCTCTACTAAAAATACAAAACTACCTGGGCGTAGTGGCACATGCCTGTAA TTCCAGCTACTTGGGAGGCTGAGGCAGGAGAATCGCTTGAATCTGGGAGGTGGAGGTTGC AGTGAGTCAAGATTGCACCATTGCACTCCAGCCTGGGCAACAAGAGCAAAACTTCATCTC AAAAAAACAAAAAAAAAAACAACAGAAAAACAAGAAAAAAACAAGAATAAACACATCGAG CCGTGATCATGCCACTGCACTCAAGCCTGAGTGAGAGAGTGACACCCTGTCTCAAAGAAA ACAAAAGACAAAAATACATAACAGGCTGGGCTCAGTGGCTCACACCTATAATCCCAGGAT TTTGGGAGGTAGAGGTGGGTGGATCACTTGAGGTCAGGAGTTAGAGACCACCCTGGCCAA GGTGATGAAACCCTGTCTCTACTAAAAATACAAAAATTAGCCAGATGTGGTAGCGCACAC CTGTAATCCCAGCTACTTGGGAGGCTGAGGCTGGAGAACTGCTTGAACCCGGGAGGTGGA GGTTGGATTCAAGTGACAGCGCCACTGCAGTCCAGCCTGGGCGACAGTGAGACTTTGTAT CAAAACAACAAAACACATAACAGTCATTAATTACCACACATAAAGGTGCTTAATGGATAA TAAGTGCTCAAGGAAATGGCAGTCATGGTGGTGGTTGCAGAGAACAACTGGAGGGGATTA AGAGTGGTGGTAGAAACCAAGCAGAAACCAGTCTAAGAAAACCAAAAAAATACCAGGCAA ATAGTTTCAAAGGAAAATTATACCATTTTAAGATAAGGTAGACTGGTGGCTGGCGCCTGT AATCCCAGCACTTTGGGAGGCCGAGGTGGGTAGATCACCTGAGGTCAGGAGTTTGAGACC AGTCTGGCCAACATAGTGAAACCCCATCTCTACTAAAAATATAAAAATTAGTTACACGTG GTGGTGTGCACCTGTAGTCCCAACTTCTTGGGAGGCTGAGGCAGGAGAATCACTTGAACC TGGGAGGAAGAGGTTGCAGTCAGCCGAGATCATGCCACTGCATTCCAGCCTGGGTGACAG AGCAAGACTCTGTGTCAAAAAAAAAAAAAAAAAGACAAAGTAGTCTTAATGCTATTTCAG AACACAGAAAAGGAAAGAAAACTTCCACACTCATTTTATGAAGCAAGTGTAATGGTAACC CCAACCTGACAAAGACTGCACAAAAGATACTACAGTTGAATACTACTTACGAATATCAAC ACAAAATCTCTGAATATTAGCAAACAGAATCCAATGGCACATTATAAAAAGGAATACAAA TAAACAAGCACAGTTTATTCCAGGTATGAGAGATTCCATATAAGGAAATCTATTGACATG ATCTTCACATTAACAATGTTAAATGTGATGAAATCATATCATCTTCACGGAGGCAGTAAA GACATCTGACAGCTGGGTGCGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCAA GGCGGGTGGATTGCCTGAGCTCAGGAGTTCACGACCAGCATGGGCAACAGGGTGAAACCC TGTCTCTACTAAAATACAAAAAATTACCTGGGGGTGGCAATACGCGCTTGTAGTCCCAGC TACTTGGGAGGCTGAGGCAGGAGAATTGCTTGAAACCAGGAGGTGGAGGTTGCAGTGAGC TGAGATGGCACCACTGCACTCCAGCCTGAGAGACAGAGCAAGACTCCATCTCAAAAAACA AACAAACAAAAAGAAACAAAAAACTAAAATAGGAAATGATGGATACTGCCTTAAGTAAAC AAAATACACCTCGGTCCAAAGCCAGCATCTGACTTCATGTGAAAACATTAGAGACTTCCC TGCTAACATCACACACCACATAAGGCTAAAATATTTTCCAATTTACATTTTTAGAGGTAA GCATTAAATTCTATGATGCCAGACAAACATTTACCAGATTTTTTTTTTTGAGATAGAGTT TCACTCTTGTTGCTCAGGCTGGAGTGTAATGGCGCACAATCTCGGCTCGCCACAAGCTCC GCCTCCCAGGTTCAAGCGACTCTCCTGCCTCGGCCTCCCGAGTAGCTGGGATTACAGGCA TGTGCCACCACACCCAGCTAATTTTGTATTTTTTGTAGAGACGGGGTTTCTCCATGTTGG TCAGGCTGGTCTCGAACTCCTGACCTCAGGTGATCCGCCTGCCTCGGCCTCCCAAAGTGC TGGGATTACAGGTGTGAGCCACCGCGTCTGGCCAAAATTTACCAGTTCTTGAATGCTGAA TCCTGCTGGGATAACTGGAAACACTCCTAATGTTACTATAAACTCTCACACTGCCTTGTT GGCAATAATTAAATAGCTCTTTCTAGCAGTTGTGTTCAAGTGGACAGATAATCACAAATG TCTTTTCTTTCTAGCTCCCTTTGGACGAAAGAAAGAAAGAATTTACAACACGTCTAAAGA TTGTCACTTTTATCATCCCTTTGAATGATAAGTGATCAGGGCTGTCCCAAAAGAATGCCT GAAAACATTACAAAATGTTATCATAAGCAGAATGGCTCACTAAGGGGATGAACATTCTGG CAAGTCTTAATCTAGCATCACTACCAACTGTTTTTTCACTGGTCTAAAACATAACATCTA ATATTTTTATTTGCCTATATAGCCCTGCAGTAATAATTAACTTGTGAAAGGTCTACACTG ATTTTTTTCTTTATAAAGTATTTGCTTCAACCATGGAACAGAAACAAAGTTGATTTAATG GGAAAAATGTAAATTTATTTGAGGATAGGTTCAGCACTGCTAAATTGAAAAGGGAAAGAA AATTTCAAACAAACCCCAAAAAGAAACATTTTCACATCTGTAGTGAAAAAGCTAAATAGC AGTACACTAAACTTGGTTACTGACAAAATAAATCCTTGTGGCCAAGGTGAGGCAAAGATA TTACTCTCTACTTTGCTAGCCTACCTTGTGTTCAGTGAATTCAAACATTAATTGGGGCAA TGTATTGTTTTTGCTTCATTTTCTTTAGCTGTGCAGTAAAGTCTTTGCTTTCATAGAAAG ATTGTGCCAAGTTCTTTCTTTTTCAGAATTGCTTTTAAATCAGTTCTATTTAAGTATTTC TCTCTCTCTCAAACTTGACATTTTTCATTACACCTTTTTTTTCCAATGCCAAAATAGCAG CATTAACATTCATTCCAGTCACTAGGTAAAAACTCTCTTCAGTCAAACACACATGAATAA TCTAATTCGTGAGGTAAACGACTACTGTCATACAGTATTACGAAGTTCCAACCTTACTTG CAGAGCAAAAAATAAAAAATAAAAATAGTCATTTTCCTCAAGGGTTTAATTGTGGGCTTT TAATGTTGAAGTAAATCAATTTACTAGTTTTTAACCTCAAGTTTTTCCCTATTTCATTAT ATCTCAATAATGATTATCCAGAGATTTCTGAGGTAAATTACATTAAAGACAGCGCTAGTA ACTGGGAAACAATCCACACATGAATCTTAATATATTGCATATATGCTAATTTCATGTAAT GTTCCTGAGGGCGGTGACAATATTAGAGCTGTACGAGACCCTAGAGACCATCCCAATCCC TTAACTCCACAGATGAGAAACACAAAAACTTGCAGAAGCAGAGTGACGAGCACATGCCCA TGTGACATGTCATCAGAAGCAGGGACCAAGACTCAGGTCTCTTGCCTTCCAGGCCAGTCC TCTTTTGGTAGGCTAAAAGCTGCCTTTCACAGCTTCCCACAAATTTCAACACATCCTCAC TCAAGTACGTTTCTGAAAGGGACTCACCGACAACTCTTTAGAGAAAAGGAACTATATCTC AAACCATAGGAAAAGTTCTATATCTAGCTTATCAAACTTTTAGTCTCTGAAGCATGTGAG AGTAAGTTTGCCAGTATTTCTTTCTCATTATCCCCCAATACTTTAGTGACTATTTCCAAC AAACAAAACTAGACTATTCTCCCATACAAACAAAATGCTACCATCAAAATCGTCAACGCT CACCTGTCAGATTATGACCAAAGGCCTCTAAGTCAGAATCCCGCCCAGGCAAAATGACAT GGCAGCCAACTGTGGAGCCTCGGTTGGCCTCGGATAGCTGGTCCCCCCTTCATTCACACC ACATATCTGAGGACCAGATATGGAAAGCCTCTCATGCTGGAAAACTTGGCACAGTAGAAA GGCGGCCACACTTTTGCCCGTCACACAATGCACATTCACGGGGGACCTGTGCTAAACCAT TCACAGACAACCTGTTTCTGGGTCAGGGTTTCGTATACAGCAGAGCAGTCAGCTATCGAC ACAAGGGTTTGTAACAAAAAACAAAAAACAACAAAAAAAAGGAAGGACAAACCAAAACAA AAAAGAAAATACCAAAAAAAAGAAGAGTTAAAAAAAAAAGAAGATAAAAATAAAATCATT AACACAGATACACGACTACAATCTAATTTTCAGACATTCTAGTTTTGCCAATCATGCCGA TTCAGAATCATGAACCACATGGAGTTGCCATGTTTCTGCACACTTCTTTAGTGTGGAACA ATTCCTCAGTGTTTTCTTGGTTCCATGATCTTGACTTAATTTTGAGGTTTACAGGCCAGT TATTTTGCAGAATATCCCTAAACTCGGGTTACCTTGATGTTGCCTCCTGAAGATTTGGAT TATGCATGAAACACTTGACTGTCCCTATTCTAACTATATAAAGATGCTCCTTGACTTACT ATGGACTTACATCCCAATAAACCCTTCATAAATGGAAAACCTCATAAGGTGAAATGCTTG TTTTTTTTGGGAAAGTTTCTTGCTCTGTTGCCAGGCGGGAATGCGGTGACACGACGACGG CTCACTGTAGCCTTGACCACTCAGGTTCAAGCGATCCTCAGCCCCAGGCTCCCAAGTAGC TGGGACTATAGGCACGTACCACCACACCTGGCTAATTTTTTTTTTTTTTAATTTTTAGTA CCTTTAGTACAGAAAAGGCCTCACTATGTTGCCTAGATTGGTCTCAAACTCCTAAGCTCA AGGAATCCTCATGCCTCGGTCTCCCAAAGTCCTGGGATTATAGGCATGAGTCCTGCACCC AGCCTAGCTGAAAATACATTTAATACACCTAACTTACCAAACATCACAGCTTAGCTTAGC CTACCTTAAACATGTTCAGAGCACTTACATTAGCCTACAGTTGGGCAAAATCATCTAACG CAAAGCCCATTTTATAATAAAAGTGTTGAGTAACTCATATGATGTATGAAATACTATACT GAAAATGAAAAACAGAACAGTTGCGTGGGTACTCGGAAGTAAGGTTTCTACTGCATGTGT ATCACTTCCATACCATTGTAAAGTCATCTGACCACCAAGCCAAATATTTGTACTTCTGCA CATGCTGCTTTACATAGAGACCGAGACAAAGGGGGATTCACATCTTGTCAACCCTGTTTA CTTCAAAGGAATAACAGAGCATTAACTAGGTACCAAGTGCTCAGGACTTCAAGTATACTG TTTTATTTAATACTCATGACAATCCTTTGACCCCTTACTTGTGACTGGCAAGTTACCCAA CTTTTGTTTCATTTTCCTCATCTGTAAAAACCGGAGAGTGATACACACTCCCTGGAGAAT GACAGGGAAAACAGTACCAAGAACTTTAACCTAACAAGTCAGAAATCAATGAGACCCCTT TTGACAATTCCCACCTTGCCCTTTAGACATTCCGAGATATGCAGCTTTATTTAATAAATG ACCCCACCTTGGGCCTCAGCTGACTAGACCAGAGGCAGACACTCTCCCAGGCTGGAAAGG CCAGGTGGAGTGAGCTGTTCTGTGCAGAATGATCTCCCTAACAGTGTTTTTACACATTCT GTTCCACTTGGAATTGGATTCAGAGTGTTCTCAGCCTCTGGTCATCAAAAAACCTGAAGA CACATACCTTCAGGGAGCTAGGGTCAGCTCTCCTCTGCTGAGTGCATGGGGAAGTGACAA AAGAGAAAAGAGGGGGGAAAATCCAGCTGCTGAGAGATGTAGGGTACAAGAAGCTTTTGT AACTGTAAAGAGGGAGGGAGGTAGCTACGTTGGTCTATTTTCCAGTTCCTGGTTCCAACT ATACCTAAAGCTTTAACTGCACTTTCTATCCTTGCAGTAATATGACAAAGGCCCCC freebayes-1.3.6/test/tiny/q.fa.fai000066400000000000000000000000201417247743000167370ustar00rootroot00000000000000q 12356 3 60 61 freebayes-1.3.6/test/tiny/q.regions000066400000000000000000000000441417247743000172670ustar00rootroot00000000000000q:0-5000 q:5000-10000 q:10000-12356 freebayes-1.3.6/test/tiny/q.vcf.gz000066400000000000000000000101101417247743000170110ustar00rootroot00000000000000BC+Y]oH} "f7Ze(3p%"V}8p&)b܋`$ԩ:Ul>䳧dY?ݿ\vm4fthOB" }8 r6H4sfu\3ulggC:K'x|M^ "{Ԗ|obQ.m9%l؝T?Llv?Оz΃Uhuz3^G\oF3!le'OIpߢK믖ٍ6}|}2ME6dk{[^k G2Z>o[Ry{,V+TQ+zq(G<7}Ã"b37 >ELg̏YNQ:8(ri˼n#Psf} e9z̞q g-f65'ؗċ<}x##tDT8"ZsDGD8"$[Qf<˹5$,ؗNE䨤[2)ħ̍ pIh }B`Y+DF {GFa߁u.]}q кLZ8)GgUYbA!ݗ'󾘭W/կgC ONS {Mӛߓg⥷ Q`5"޳׻G).Ŷeź$Fϐ7F-i2Uj1ʡ;|571Ϯ)J&'jtMg am}~w񶮡؆@MUe63̜_HG>=I6>{5x+ѪIJJIX4Ld@qͿj۝\oKH'p/t+ ѧC] FC55x&?NΨF]XQXQ[95S6``DKB~2@>H>0}HE[OtDLg6u19"pՋ׌O4ر!g Wrxg>w(޷5/{bQC~jxb2Z&#̷6iP^e 8"~] 2qRF9t;D' =e~%Tv{_`?寲I|ZUGȪºw}dI) ƨfYdFž4gsނ{_Bnl-Mg7UtWԵw"l}!R~jnHdB<>"-'T33\WF:lf-*Q?q6a4gMꃪ_ uC̳qTXf],^S8φ/6#N GUǍՁZ uoػ75^wJd~>b<Q|]Wޟ1nrjJFgD-~տm]Y E?/-ڼe}oqm٭IQvE_v&<0&ˏ3|8n=ֲ~|J/-`ױrG1Pk^u]Fo1_➑^3;p=T-*~5;2@9Ǹ%qܿJ\AXLy837r:_6%\tP]: Oat78-vCCksC\#jvslO=K+9s4|ҖLo'|Bl|O29/,.K EW""P 4ExB: At5J@(8D'! qÎ^ k\HMAV AD` d 2"~P(%E{At@4zJj2F 1W\V) ]~#g wr,5!`w 7S\)XA?\[+\J2I<^O\+hh8c\n>̣+ցc}59^C⪂\C.w.Ф@;W‡hs}$y:o:㐞IJdry#tZJuWUrvR9((جy)UuzZa)T,}<̑ZsRP ms\-UBFaY-:D=%[r%N]l.nzKEZUWU-Gj[#ՠ̺辤̺Rdwp2s]t45T&@㨜R ;@V%Ϡr |}Q^knD F \Q :\1'OlߚHFC;N[HuH Ƈ*GW(!q*4\"{ygMF % L7T%:dR;n6)e[>)ɪX/)鱎c7݇ARk87TB&d;BCfreebayes-1.3.6/test/tiny/q.vcf.gz.tbi000066400000000000000000000001461417247743000175760ustar00rootroot00000000000000BCI qddd```b P/BbP)5 ]\LK(g~BCfreebayes-1.3.6/test/tiny/q_spiked.vcf.gz000066400000000000000000000045121417247743000203610ustar00rootroot00000000000000BC- YsZ~vS3T) .[EZe>Z\۷DE22dv >}N}[]Do/ }&nFMY4QEKM2"Ҕ.RKRZ˹FT[d[x9ۄ~۫galrS?\aRGzR+ʝ1)>⣉%NWYpJ b4NͿ9٬g416(&>Mg~_+$Z]({Cq}(sP#AlEI7iYuI0쌼#=2sSŔD/4 8ǒÕQqX7;Y[n$Q@ac,i &=xaɎ ẇ!\,{@TnQ>z4q%%bSױxgZhŧdm¬,vC@>D?#*P|w lKC.^%+ y :U%P*WVX6GP .EP&I3 ^YU-J(V:lgTsO[e9Rr"8؇P='̝,<0"5JZ@lbd(4O=SУ/>W3R/p{_`fp sWpEDAkW <֐"Xx0F.>Jj8\?V8#:ق初 ZQ0;s6)IqwJ,qBSf;4/OUZ<*g, E,L}4^`KX$-=025-nzly(~Hn4k9Ժ a ?4|MH.[E7E;ˋh \ZcǮ͹s"ޕȀc_0wakorQu?Ÿ)Gtᘧ05J|!{W^>'b\s#\*u꬞A_</} Wˠyͺn{:~~J@J$xUQYШlA߉FL8F9GCU'/xj. ^B@Y{6_(Pk{%շ5jI=} _ EB}?聾dZL+N_'QMƋhMT>n(ݞl'GhnѾO~ 2>c4$0/ym q; 7@"l4ȏ}|'< Eו@,>h*.M5iοofno;ksq BQ*GgaG,59bnxPR~xKz<1V+cD]+OzFi8q[E{޶vxdCsۉ]"qX*10 P @et #H[a4?ݍ&5*0?ˣީ08gÝJi8uǼ.T'o{y%< Qkv%\BF߄X|~YzQN@yPc4WQ5JSP<(vra:)V+ ,G0 Nu?Z{=yecmϔU[(˭wFYsαkN[4|o u^L5L17%qdq40M48幡bChX %AEeUY׶Q=Ɣzj=kb=kjJ+^6U DZLS4M:8v@n+zDx dGwf['0Ǜ`WkvV{?ѧ+?iҐE }2lGGUU]i8"BCfreebayes-1.3.6/test/tiny/q_spiked.vcf.gz.tbi000066400000000000000000000001331417247743000211310ustar00rootroot00000000000000BC> qddd```b P/x ATpB8P)kCNBCfreebayes-1.3.6/ttmath/000077500000000000000000000000001417247743000150005ustar00rootroot00000000000000freebayes-1.3.6/ttmath/COPYRIGHT000066400000000000000000000027771417247743000163100ustar00rootroot00000000000000Copyright (c) 2006-2012, Tomasz Sowa All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * 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. * Neither the name Tomasz Sowa nor the names of contributors to this project 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 OWNER 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. freebayes-1.3.6/ttmath/ttmath.h000066400000000000000000001521271417247743000164620ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2012, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathmathtt #define headerfilettmathmathtt /*! \file ttmath.h \brief Mathematics functions. */ #ifdef _MSC_VER //warning C4127: conditional expression is constant #pragma warning( disable: 4127 ) //warning C4702: unreachable code #pragma warning( disable: 4702 ) //warning C4800: forcing value to bool 'true' or 'false' (performance warning) #pragma warning( disable: 4800 ) #endif #include "ttmathbig.h" #include "ttmathobjects.h" namespace ttmath { /* * * functions defined here are used only with Big<> types * * */ /* * * functions for rounding * * */ /*! this function skips the fraction from x e.g 2.2 = 2 2.7 = 2 -2.2 = 2 -2.7 = 2 */ template ValueType SkipFraction(const ValueType & x) { ValueType result( x ); result.SkipFraction(); return result; } /*! this function rounds to the nearest integer value e.g 2.2 = 2 2.7 = 3 -2.2 = -2 -2.7 = -3 */ template ValueType Round(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType result( x ); uint c = result.Round(); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function returns a value representing the smallest integer that is greater than or equal to x Ceil(-3.7) = -3 Ceil(-3.1) = -3 Ceil(-3.0) = -3 Ceil(4.0) = 4 Ceil(4.2) = 5 Ceil(4.8) = 5 */ template ValueType Ceil(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType result(x); uint c = 0; result.SkipFraction(); if( result != x ) { // x is with fraction // if x is negative we don't have to do anything if( !x.IsSign() ) { ValueType one; one.SetOne(); c += result.Add(one); } } if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function returns a value representing the largest integer that is less than or equal to x Floor(-3.6) = -4 Floor(-3.1) = -4 Floor(-3) = -3 Floor(2) = 2 Floor(2.3) = 2 Floor(2.8) = 2 */ template ValueType Floor(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType result(x); uint c = 0; result.SkipFraction(); if( result != x ) { // x is with fraction // if x is positive we don't have to do anything if( x.IsSign() ) { ValueType one; one.SetOne(); c += result.Sub(one); } } if( err ) *err = c ? err_overflow : err_ok; return result; } /* * * logarithms and the exponent * * */ /*! this function calculates the natural logarithm (logarithm with the base 'e') */ template ValueType Ln(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType result; uint state = result.Ln(x); if( err ) { switch( state ) { case 0: *err = err_ok; break; case 1: *err = err_overflow; break; case 2: *err = err_improper_argument; break; default: *err = err_internal_error; break; } } return result; } /*! this function calculates the logarithm */ template ValueType Log(const ValueType & x, const ValueType & base, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } if( base.IsNan() ) { if( err ) *err = err_improper_argument; return base; } ValueType result; uint state = result.Log(x, base); if( err ) { switch( state ) { case 0: *err = err_ok; break; case 1: *err = err_overflow; break; case 2: case 3: *err = err_improper_argument; break; default: *err = err_internal_error; break; } } return result; } /*! this function calculates the expression e^x */ template ValueType Exp(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType result; uint c = result.Exp(x); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! * * trigonometric functions * */ /* this namespace consists of auxiliary functions (something like 'private' in a class) */ namespace auxiliaryfunctions { /*! an auxiliary function for calculating the Sine (you don't have to call this function) */ template uint PrepareSin(ValueType & x, bool & change_sign) { ValueType temp; change_sign = false; if( x.IsSign() ) { // we're using the formula 'sin(-x) = -sin(x)' change_sign = !change_sign; x.ChangeSign(); } // we're reducing the period 2*PI // (for big values there'll always be zero) temp.Set2Pi(); if( x.Mod(temp) ) return 1; // we're setting 'x' as being in the range of <0, 0.5PI> temp.SetPi(); if( x > temp ) { // x is in (pi, 2*pi> x.Sub( temp ); change_sign = !change_sign; } temp.Set05Pi(); if( x > temp ) { // x is in (0.5pi, pi> x.Sub( temp ); x = temp - x; } return 0; } /*! an auxiliary function for calculating the Sine (you don't have to call this function) it returns Sin(x) where 'x' is from <0, PI/2> we're calculating the Sin with using Taylor series in zero or PI/2 (depending on which point of these two points is nearer to the 'x') Taylor series: sin(x) = sin(a) + cos(a)*(x-a)/(1!) - sin(a)*((x-a)^2)/(2!) - cos(a)*((x-a)^3)/(3!) + sin(a)*((x-a)^4)/(4!) + ... when a=0 it'll be: sin(x) = (x)/(1!) - (x^3)/(3!) + (x^5)/(5!) - (x^7)/(7!) + (x^9)/(9!) ... and when a=PI/2: sin(x) = 1 - ((x-PI/2)^2)/(2!) + ((x-PI/2)^4)/(4!) - ((x-PI/2)^6)/(6!) ... */ template ValueType Sin0pi05(const ValueType & x) { ValueType result; ValueType numerator, denominator; ValueType d_numerator, d_denominator; ValueType one, temp, old_result; // temp = pi/4 temp.Set05Pi(); temp.exponent.SubOne(); one.SetOne(); if( x < temp ) { // we're using the Taylor series with a=0 result = x; numerator = x; denominator = one; // d_numerator = x^2 d_numerator = x; d_numerator.Mul(x); d_denominator = 2; } else { // we're using the Taylor series with a=PI/2 result = one; numerator = one; denominator = one; // d_numerator = (x-pi/2)^2 ValueType pi05; pi05.Set05Pi(); temp = x; temp.Sub( pi05 ); d_numerator = temp; d_numerator.Mul( temp ); d_denominator = one; } uint c = 0; bool addition = false; old_result = result; for(uint i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) { // we're starting from a second part of the formula c += numerator. Mul( d_numerator ); c += denominator. Mul( d_denominator ); c += d_denominator.Add( one ); c += denominator. Mul( d_denominator ); c += d_denominator.Add( one ); temp = numerator; c += temp.Div(denominator); if( c ) // Sin is from <-1,1> and cannot make an overflow // but the carry can be from the Taylor series // (then we only break our calculations) break; if( addition ) result.Add( temp ); else result.Sub( temp ); addition = !addition; // we're testing whether the result has changed after adding // the next part of the Taylor formula, if not we end the loop // (it means 'x' is zero or 'x' is PI/2 or this part of the formula // is too small) if( result == old_result ) break; old_result = result; } return result; } } // namespace auxiliaryfunctions /*! this function calculates the Sine */ template ValueType Sin(ValueType x, ErrorCode * err = 0) { using namespace auxiliaryfunctions; ValueType one, result; bool change_sign; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } if( err ) *err = err_ok; if( PrepareSin( x, change_sign ) ) { // x is too big, we cannnot reduce the 2*PI period // prior to version 0.8.5 the result was zero // result has NaN flag set by default if( err ) *err = err_overflow; // maybe another error code? err_improper_argument? return result; // NaN is set by default } result = Sin0pi05( x ); one.SetOne(); // after calculations there can be small distortions in the result if( result > one ) result = one; else if( result.IsSign() ) // we've calculated the sin from <0, pi/2> and the result // should be positive result.SetZero(); if( change_sign ) result.ChangeSign(); return result; } /*! this function calulates the Cosine we're using the formula cos(x) = sin(x + PI/2) */ template ValueType Cos(ValueType x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType pi05; pi05.Set05Pi(); uint c = x.Add( pi05 ); if( c ) { if( err ) *err = err_overflow; return ValueType(); // result is undefined (NaN is set by default) } return Sin(x, err); } /*! this function calulates the Tangent we're using the formula tan(x) = sin(x) / cos(x) it takes more time than calculating the Tan directly from for example Taylor series but should be a bit preciser because Tan receives its values from -infinity to +infinity and when we calculate it from any series then we can make a greater mistake than calculating 'sin/cos' */ template ValueType Tan(const ValueType & x, ErrorCode * err = 0) { ValueType result = Cos(x, err); if( err && *err != err_ok ) return result; if( result.IsZero() ) { if( err ) *err = err_improper_argument; result.SetNan(); return result; } return Sin(x, err) / result; } /*! this function calulates the Tangent look at the description of Tan(...) (the abbreviation of Tangent can be 'tg' as well) */ template ValueType Tg(const ValueType & x, ErrorCode * err = 0) { return Tan(x, err); } /*! this function calulates the Cotangent we're using the formula tan(x) = cos(x) / sin(x) (why do we make it in this way? look at information in Tan() function) */ template ValueType Cot(const ValueType & x, ErrorCode * err = 0) { ValueType result = Sin(x, err); if( err && *err != err_ok ) return result; if( result.IsZero() ) { if( err ) *err = err_improper_argument; result.SetNan(); return result; } return Cos(x, err) / result; } /*! this function calulates the Cotangent look at the description of Cot(...) (the abbreviation of Cotangent can be 'ctg' as well) */ template ValueType Ctg(const ValueType & x, ErrorCode * err = 0) { return Cot(x, err); } /* * * inverse trigonometric functions * * */ namespace auxiliaryfunctions { /*! an auxiliary function for calculating the Arc Sine we're calculating asin from the following formula: asin(x) = x + (1*x^3)/(2*3) + (1*3*x^5)/(2*4*5) + (1*3*5*x^7)/(2*4*6*7) + ... where abs(x) <= 1 we're using this formula when x is from <0, 1/2> */ template ValueType ASin_0(const ValueType & x) { ValueType nominator, denominator, nominator_add, nominator_x, denominator_add, denominator_x; ValueType two, result(x), x2(x); ValueType nominator_temp, denominator_temp, old_result = result; uint c = 0; x2.Mul(x); two = 2; nominator.SetOne(); denominator = two; nominator_add = nominator; denominator_add = denominator; nominator_x = x; denominator_x = 3; for(uint i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) { c += nominator_x.Mul(x2); nominator_temp = nominator_x; c += nominator_temp.Mul(nominator); denominator_temp = denominator; c += denominator_temp.Mul(denominator_x); c += nominator_temp.Div(denominator_temp); // if there is a carry somewhere we only break the calculating // the result should be ok -- it's from <-pi/2, pi/2> if( c ) break; result.Add(nominator_temp); if( result == old_result ) // there's no sense to calculate more break; old_result = result; c += nominator_add.Add(two); c += denominator_add.Add(two); c += nominator.Mul(nominator_add); c += denominator.Mul(denominator_add); c += denominator_x.Add(two); } return result; } /*! an auxiliary function for calculating the Arc Sine we're calculating asin from the following formula: asin(x) = pi/2 - sqrt(2)*sqrt(1-x) * asin_temp asin_temp = 1 + (1*(1-x))/((2*3)*(2)) + (1*3*(1-x)^2)/((2*4*5)*(4)) + (1*3*5*(1-x)^3)/((2*4*6*7)*(8)) + ... where abs(x) <= 1 we're using this formula when x is from (1/2, 1> */ template ValueType ASin_1(const ValueType & x) { ValueType nominator, denominator, nominator_add, nominator_x, nominator_x_add, denominator_add, denominator_x; ValueType denominator2; ValueType one, two, result; ValueType nominator_temp, denominator_temp, old_result; uint c = 0; two = 2; one.SetOne(); nominator = one; result = one; old_result = result; denominator = two; nominator_add = nominator; denominator_add = denominator; nominator_x = one; nominator_x.Sub(x); nominator_x_add = nominator_x; denominator_x = 3; denominator2 = two; for(uint i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) { nominator_temp = nominator_x; c += nominator_temp.Mul(nominator); denominator_temp = denominator; c += denominator_temp.Mul(denominator_x); c += denominator_temp.Mul(denominator2); c += nominator_temp.Div(denominator_temp); // if there is a carry somewhere we only break the calculating // the result should be ok -- it's from <-pi/2, pi/2> if( c ) break; result.Add(nominator_temp); if( result == old_result ) // there's no sense to calculate more break; old_result = result; c += nominator_x.Mul(nominator_x_add); c += nominator_add.Add(two); c += denominator_add.Add(two); c += nominator.Mul(nominator_add); c += denominator.Mul(denominator_add); c += denominator_x.Add(two); c += denominator2.Mul(two); } nominator_x_add.exponent.AddOne(); // *2 one.exponent.SubOne(); // =0.5 nominator_x_add.Pow(one); // =sqrt(nominator_x_add) result.Mul(nominator_x_add); one.Set05Pi(); one.Sub(result); return one; } } // namespace auxiliaryfunctions /*! this function calculates the Arc Sine x is from <-1,1> */ template ValueType ASin(ValueType x, ErrorCode * err = 0) { using namespace auxiliaryfunctions; ValueType result, one; one.SetOne(); bool change_sign = false; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } if( x.GreaterWithoutSignThan(one) ) { if( err ) *err = err_improper_argument; return result; // NaN is set by default } if( x.IsSign() ) { change_sign = true; x.Abs(); } one.exponent.SubOne(); // =0.5 // asin(-x) = -asin(x) if( x.GreaterWithoutSignThan(one) ) result = ASin_1(x); else result = ASin_0(x); if( change_sign ) result.ChangeSign(); if( err ) *err = err_ok; return result; } /*! this function calculates the Arc Cosine we're using the formula: acos(x) = pi/2 - asin(x) */ template ValueType ACos(const ValueType & x, ErrorCode * err = 0) { ValueType temp; temp.Set05Pi(); temp.Sub(ASin(x, err)); return temp; } namespace auxiliaryfunctions { /*! an auxiliary function for calculating the Arc Tangent arc tan (x) where x is in <0; 0.5) (x can be in (-0.5 ; 0.5) too) we're using the Taylor series expanded in zero: atan(x) = x - (x^3)/3 + (x^5)/5 - (x^7)/7 + ... */ template ValueType ATan0(const ValueType & x) { ValueType nominator, denominator, nominator_add, denominator_add, temp; ValueType result, old_result; bool adding = false; uint c = 0; result = x; old_result = result; nominator = x; nominator_add = x; nominator_add.Mul(x); denominator.SetOne(); denominator_add = 2; for(uint i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) { c += nominator.Mul(nominator_add); c += denominator.Add(denominator_add); temp = nominator; c += temp.Div(denominator); if( c ) // the result should be ok break; if( adding ) result.Add(temp); else result.Sub(temp); if( result == old_result ) // there's no sense to calculate more break; old_result = result; adding = !adding; } return result; } /*! an auxiliary function for calculating the Arc Tangent where x is in <0 ; 1> */ template ValueType ATan01(const ValueType & x) { ValueType half; half.Set05(); /* it would be better if we chose about sqrt(2)-1=0.41... instead of 0.5 here because as you can see below: when x = sqrt(2)-1 abs(x) = abs( (x-1)/(1+x) ) so when we're calculating values around x then they will be better converged to each other for example if we have x=0.4999 then during calculating ATan0(0.4999) we have to make about 141 iterations but when we have x=0.5 then during calculating ATan0( (x-1)/(1+x) ) we have to make only about 89 iterations (both for Big<3,9>) in the future this 0.5 can be changed */ if( x.SmallerWithoutSignThan(half) ) return ATan0(x); /* x>=0.5 and x<=1 (x can be even smaller than 0.5) y = atac(x) x = tan(y) tan(y-b) = (tan(y)-tab(b)) / (1+tan(y)*tan(b)) y-b = atan( (tan(y)-tab(b)) / (1+tan(y)*tan(b)) ) y = b + atan( (x-tab(b)) / (1+x*tan(b)) ) let b = pi/4 tan(b) = tan(pi/4) = 1 y = pi/4 + atan( (x-1)/(1+x) ) so atac(x) = pi/4 + atan( (x-1)/(1+x) ) when x->1 (x converges to 1) the (x-1)/(1+x) -> 0 and we can use ATan0() function here */ ValueType n(x),d(x),one,result; one.SetOne(); n.Sub(one); d.Add(one); n.Div(d); result = ATan0(n); n.Set05Pi(); n.exponent.SubOne(); // =pi/4 result.Add(n); return result; } /*! an auxiliary function for calculating the Arc Tangent where x > 1 we're using the formula: atan(x) = pi/2 - atan(1/x) for x>0 */ template ValueType ATanGreaterThanPlusOne(const ValueType & x) { ValueType temp, atan; temp.SetOne(); if( temp.Div(x) ) { // if there was a carry here that means x is very big // and atan(1/x) fast converged to 0 atan.SetZero(); } else atan = ATan01(temp); temp.Set05Pi(); temp.Sub(atan); return temp; } } // namespace auxiliaryfunctions /*! this function calculates the Arc Tangent */ template ValueType ATan(ValueType x) { using namespace auxiliaryfunctions; ValueType one, result; one.SetOne(); bool change_sign = false; if( x.IsNan() ) return x; // if x is negative we're using the formula: // atan(-x) = -atan(x) if( x.IsSign() ) { change_sign = true; x.Abs(); } if( x.GreaterWithoutSignThan(one) ) result = ATanGreaterThanPlusOne(x); else result = ATan01(x); if( change_sign ) result.ChangeSign(); return result; } /*! this function calculates the Arc Tangent look at the description of ATan(...) (the abbreviation of Arc Tangent can be 'atg' as well) */ template ValueType ATg(const ValueType & x) { return ATan(x); } /*! this function calculates the Arc Cotangent we're using the formula: actan(x) = pi/2 - atan(x) */ template ValueType ACot(const ValueType & x) { ValueType result; result.Set05Pi(); result.Sub(ATan(x)); return result; } /*! this function calculates the Arc Cotangent look at the description of ACot(...) (the abbreviation of Arc Cotangent can be 'actg' as well) */ template ValueType ACtg(const ValueType & x) { return ACot(x); } /* * * hyperbolic functions * * */ /*! this function calculates the Hyperbolic Sine we're using the formula sinh(x)= ( e^x - e^(-x) ) / 2 */ template ValueType Sinh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType ex, emx; uint c = 0; c += ex.Exp(x); c += emx.Exp(-x); c += ex.Sub(emx); c += ex.exponent.SubOne(); if( err ) *err = c ? err_overflow : err_ok; return ex; } /*! this function calculates the Hyperbolic Cosine we're using the formula cosh(x)= ( e^x + e^(-x) ) / 2 */ template ValueType Cosh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType ex, emx; uint c = 0; c += ex.Exp(x); c += emx.Exp(-x); c += ex.Add(emx); c += ex.exponent.SubOne(); if( err ) *err = c ? err_overflow : err_ok; return ex; } /*! this function calculates the Hyperbolic Tangent we're using the formula tanh(x)= ( e^x - e^(-x) ) / ( e^x + e^(-x) ) */ template ValueType Tanh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType ex, emx, nominator, denominator; uint c = 0; c += ex.Exp(x); c += emx.Exp(-x); nominator = ex; c += nominator.Sub(emx); denominator = ex; c += denominator.Add(emx); c += nominator.Div(denominator); if( err ) *err = c ? err_overflow : err_ok; return nominator; } /*! this function calculates the Hyperbolic Tangent look at the description of Tanh(...) (the abbreviation of Hyperbolic Tangent can be 'tgh' as well) */ template ValueType Tgh(const ValueType & x, ErrorCode * err = 0) { return Tanh(x, err); } /*! this function calculates the Hyperbolic Cotangent we're using the formula coth(x)= ( e^x + e^(-x) ) / ( e^x - e^(-x) ) */ template ValueType Coth(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } if( x.IsZero() ) { if( err ) *err = err_improper_argument; return ValueType(); // NaN is set by default } ValueType ex, emx, nominator, denominator; uint c = 0; c += ex.Exp(x); c += emx.Exp(-x); nominator = ex; c += nominator.Add(emx); denominator = ex; c += denominator.Sub(emx); c += nominator.Div(denominator); if( err ) *err = c ? err_overflow : err_ok; return nominator; } /*! this function calculates the Hyperbolic Cotangent look at the description of Coth(...) (the abbreviation of Hyperbolic Cotangent can be 'ctgh' as well) */ template ValueType Ctgh(const ValueType & x, ErrorCode * err = 0) { return Coth(x, err); } /* * * inverse hyperbolic functions * * */ /*! inverse hyperbolic sine asinh(x) = ln( x + sqrt(x^2 + 1) ) */ template ValueType ASinh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType xx(x), one, result; uint c = 0; one.SetOne(); c += xx.Mul(x); c += xx.Add(one); one.exponent.SubOne(); // one=0.5 // xx is >= 1 c += xx.PowFrac(one); // xx=sqrt(xx) c += xx.Add(x); c += result.Ln(xx); // xx > 0 // here can only be a carry if( err ) *err = c ? err_overflow : err_ok; return result; } /*! inverse hyperbolic cosine acosh(x) = ln( x + sqrt(x^2 - 1) ) x in <1, infinity) */ template ValueType ACosh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType xx(x), one, result; uint c = 0; one.SetOne(); if( x < one ) { if( err ) *err = err_improper_argument; return result; // NaN is set by default } c += xx.Mul(x); c += xx.Sub(one); // xx is >= 0 // we can't call a PowFrac when the 'x' is zero // if x is 0 the sqrt(0) is 0 if( !xx.IsZero() ) { one.exponent.SubOne(); // one=0.5 c += xx.PowFrac(one); // xx=sqrt(xx) } c += xx.Add(x); c += result.Ln(xx); // xx >= 1 // here can only be a carry if( err ) *err = c ? err_overflow : err_ok; return result; } /*! inverse hyperbolic tangent atanh(x) = 0.5 * ln( (1+x) / (1-x) ) x in (-1, 1) */ template ValueType ATanh(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType nominator(x), denominator, one, result; uint c = 0; one.SetOne(); if( !x.SmallerWithoutSignThan(one) ) { if( err ) *err = err_improper_argument; return result; // NaN is set by default } c += nominator.Add(one); denominator = one; c += denominator.Sub(x); c += nominator.Div(denominator); c += result.Ln(nominator); c += result.exponent.SubOne(); // here can only be a carry if( err ) *err = c ? err_overflow : err_ok; return result; } /*! inverse hyperbolic tantent */ template ValueType ATgh(const ValueType & x, ErrorCode * err = 0) { return ATanh(x, err); } /*! inverse hyperbolic cotangent acoth(x) = 0.5 * ln( (x+1) / (x-1) ) x in (-infinity, -1) or (1, infinity) */ template ValueType ACoth(const ValueType & x, ErrorCode * err = 0) { if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; // NaN } ValueType nominator(x), denominator(x), one, result; uint c = 0; one.SetOne(); if( !x.GreaterWithoutSignThan(one) ) { if( err ) *err = err_improper_argument; return result; // NaN is set by default } c += nominator.Add(one); c += denominator.Sub(one); c += nominator.Div(denominator); c += result.Ln(nominator); c += result.exponent.SubOne(); // here can only be a carry if( err ) *err = c ? err_overflow : err_ok; return result; } /*! inverse hyperbolic cotantent */ template ValueType ACtgh(const ValueType & x, ErrorCode * err = 0) { return ACoth(x, err); } /* * * functions for converting between degrees, radians and gradians * * */ /*! this function converts degrees to radians it returns: x * pi / 180 */ template ValueType DegToRad(const ValueType & x, ErrorCode * err = 0) { ValueType result, temp; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = x; // it is better to make division first and then multiplication // the result is more accurate especially when x is: 90,180,270 or 360 temp = 180; c += result.Div(temp); temp.SetPi(); c += result.Mul(temp); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function converts radians to degrees it returns: x * 180 / pi */ template ValueType RadToDeg(const ValueType & x, ErrorCode * err = 0) { ValueType result, delimiter; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = 180; c += result.Mul(x); delimiter.SetPi(); c += result.Div(delimiter); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function converts degrees in the long format into one value long format: (degrees, minutes, seconds) minutes and seconds must be greater than or equal zero result: if d>=0 : result= d + ((s/60)+m)/60 if d<0 : result= d - ((s/60)+m)/60 ((s/60)+m)/60 = (s+60*m)/3600 (second version is faster because there's only one division) for example: DegToDeg(10, 30, 0) = 10.5 DegToDeg(10, 24, 35.6)=10.4098(8) */ template ValueType DegToDeg( const ValueType & d, const ValueType & m, const ValueType & s, ErrorCode * err = 0) { ValueType delimiter, multipler; uint c = 0; if( d.IsNan() || m.IsNan() || s.IsNan() || m.IsSign() || s.IsSign() ) { if( err ) *err = err_improper_argument; delimiter.SetZeroNan(); // not needed, only to get rid of GCC warning about an uninitialized variable return delimiter; } multipler = 60; delimiter = 3600; c += multipler.Mul(m); c += multipler.Add(s); c += multipler.Div(delimiter); if( d.IsSign() ) multipler.ChangeSign(); c += multipler.Add(d); if( err ) *err = c ? err_overflow : err_ok; return multipler; } /*! this function converts degrees in the long format to radians */ template ValueType DegToRad( const ValueType & d, const ValueType & m, const ValueType & s, ErrorCode * err = 0) { ValueType temp_deg = DegToDeg(d,m,s,err); if( err && *err!=err_ok ) return temp_deg; return DegToRad(temp_deg, err); } /*! this function converts gradians to radians it returns: x * pi / 200 */ template ValueType GradToRad(const ValueType & x, ErrorCode * err = 0) { ValueType result, temp; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = x; // it is better to make division first and then multiplication // the result is more accurate especially when x is: 100,200,300 or 400 temp = 200; c += result.Div(temp); temp.SetPi(); c += result.Mul(temp); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function converts radians to gradians it returns: x * 200 / pi */ template ValueType RadToGrad(const ValueType & x, ErrorCode * err = 0) { ValueType result, delimiter; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = 200; c += result.Mul(x); delimiter.SetPi(); c += result.Div(delimiter); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function converts degrees to gradians it returns: x * 200 / 180 */ template ValueType DegToGrad(const ValueType & x, ErrorCode * err = 0) { ValueType result, temp; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = x; temp = 200; c += result.Mul(temp); temp = 180; c += result.Div(temp); if( err ) *err = c ? err_overflow : err_ok; return result; } /*! this function converts degrees in the long format to gradians */ template ValueType DegToGrad( const ValueType & d, const ValueType & m, const ValueType & s, ErrorCode * err = 0) { ValueType temp_deg = DegToDeg(d,m,s,err); if( err && *err!=err_ok ) return temp_deg; return DegToGrad(temp_deg, err); } /*! this function converts degrees to gradians it returns: x * 180 / 200 */ template ValueType GradToDeg(const ValueType & x, ErrorCode * err = 0) { ValueType result, temp; uint c = 0; if( x.IsNan() ) { if( err ) *err = err_improper_argument; return x; } result = x; temp = 180; c += result.Mul(temp); temp = 200; c += result.Div(temp); if( err ) *err = c ? err_overflow : err_ok; return result; } /* * * another functions * * */ /*! this function calculates the square root Sqrt(9) = 3 */ template ValueType Sqrt(ValueType x, ErrorCode * err = 0) { if( x.IsNan() || x.IsSign() ) { if( err ) *err = err_improper_argument; x.SetNan(); return x; } uint c = x.Sqrt(); if( err ) *err = c ? err_overflow : err_ok; return x; } namespace auxiliaryfunctions { template bool RootCheckIndexSign(ValueType & x, const ValueType & index, ErrorCode * err) { if( index.IsSign() ) { // index cannot be negative if( err ) *err = err_improper_argument; x.SetNan(); return true; } return false; } template bool RootCheckIndexZero(ValueType & x, const ValueType & index, ErrorCode * err) { if( index.IsZero() ) { if( x.IsZero() ) { // there isn't root(0;0) - we assume it's not defined if( err ) *err = err_improper_argument; x.SetNan(); return true; } // root(x;0) is 1 (if x!=0) x.SetOne(); if( err ) *err = err_ok; return true; } return false; } template bool RootCheckIndexOne(const ValueType & index, ErrorCode * err) { ValueType one; one.SetOne(); if( index == one ) { //root(x;1) is x // we do it because if we used the PowFrac function // we would lose the precision if( err ) *err = err_ok; return true; } return false; } template bool RootCheckIndexTwo(ValueType & x, const ValueType & index, ErrorCode * err) { if( index == 2 ) { x = Sqrt(x, err); return true; } return false; } template bool RootCheckIndexFrac(ValueType & x, const ValueType & index, ErrorCode * err) { if( !index.IsInteger() ) { // index must be integer if( err ) *err = err_improper_argument; x.SetNan(); return true; } return false; } template bool RootCheckXZero(ValueType & x, ErrorCode * err) { if( x.IsZero() ) { // root(0;index) is zero (if index!=0) // RootCheckIndexZero() must be called beforehand x.SetZero(); if( err ) *err = err_ok; return true; } return false; } template bool RootCheckIndex(ValueType & x, const ValueType & index, ErrorCode * err, bool * change_sign) { *change_sign = false; if( index.Mod2() ) { // index is odd (1,3,5...) if( x.IsSign() ) { *change_sign = true; x.Abs(); } } else { // index is even // x cannot be negative if( x.IsSign() ) { if( err ) *err = err_improper_argument; x.SetNan(); return true; } } return false; } template uint RootCorrectInteger(ValueType & old_x, ValueType & x, const ValueType & index) { if( !old_x.IsInteger() || x.IsInteger() || !index.exponent.IsSign() ) return 0; // old_x is integer, // x is not integer, // index is relatively small (index.exponent<0 or index.exponent<=0) // (because we're using a special powering algorithm Big::PowUInt()) uint c = 0; ValueType temp(x); c += temp.Round(); ValueType temp_round(temp); c += temp.PowUInt(index); if( temp == old_x ) x = temp_round; return (c==0)? 0 : 1; } } // namespace auxiliaryfunctions /*! indexth Root of x index must be integer and not negative <0;1;2;3....) if index==0 the result is one if x==0 the result is zero and we assume root(0;0) is not defined if index is even (2;4;6...) the result is x^(1/index) and x>0 if index is odd (1;2;3;...) the result is either -(abs(x)^(1/index)) if x<0 or x^(1/index)) if x>0 (for index==1 the result is equal x) */ template ValueType Root(ValueType x, const ValueType & index, ErrorCode * err = 0) { using namespace auxiliaryfunctions; if( x.IsNan() || index.IsNan() ) { if( err ) *err = err_improper_argument; x.SetNan(); return x; } if( RootCheckIndexSign(x, index, err) ) return x; if( RootCheckIndexZero(x, index, err) ) return x; if( RootCheckIndexOne ( index, err) ) return x; if( RootCheckIndexTwo (x, index, err) ) return x; if( RootCheckIndexFrac(x, index, err) ) return x; if( RootCheckXZero (x, err) ) return x; // index integer and index!=0 // x!=0 ValueType old_x(x); bool change_sign; if( RootCheckIndex(x, index, err, &change_sign ) ) return x; ValueType temp; uint c = 0; // we're using the formula: root(x ; n) = exp( ln(x) / n ) c += temp.Ln(x); c += temp.Div(index); c += x.Exp(temp); if( change_sign ) { // x is different from zero x.SetSign(); } c += RootCorrectInteger(old_x, x, index); if( err ) *err = c ? err_overflow : err_ok; return x; } /*! absolute value of x e.g. -2 = 2 2 = 2 */ template ValueType Abs(const ValueType & x) { ValueType result( x ); result.Abs(); return result; } /*! it returns the sign of the value e.g. -2 = -1 0 = 0 10 = 1 */ template ValueType Sgn(ValueType x) { x.Sgn(); return x; } /*! the remainder from a division e.g. mod( 12.6 ; 3) = 0.6 because 12.6 = 3*4 + 0.6 mod(-12.6 ; 3) = -0.6 bacause -12.6 = 3*(-4) + (-0.6) mod( 12.6 ; -3) = 0.6 mod(-12.6 ; -3) = -0.6 */ template ValueType Mod(ValueType a, const ValueType & b, ErrorCode * err = 0) { if( a.IsNan() || b.IsNan() ) { if( err ) *err = err_improper_argument; a.SetNan(); return a; } uint c = a.Mod(b); if( err ) *err = c ? err_overflow : err_ok; return a; } namespace auxiliaryfunctions { /*! this function is used to store factorials in a given container 'more' means how many values should be added at the end e.g. std::vector fact; SetFactorialSequence(fact, 3); // now the container has three values: 1 1 2 SetFactorialSequence(fact, 2); // now the container has five values: 1 1 2 6 24 */ template void SetFactorialSequence(std::vector & fact, uint more = 20) { if( more == 0 ) more = 1; uint start = static_cast(fact.size()); fact.resize(fact.size() + more); if( start == 0 ) { fact[0] = 1; ++start; } for(uint i=start ; i ValueType SetBernoulliNumbersSum(CGamma & cgamma, const ValueType & n_, uint m, const volatile StopCalculating * stop = 0) { ValueType k_, temp, temp2, temp3, sum; sum.SetZero(); for(uint k=0 ; kWasStopSignal() ) return ValueType(); // NaN if( k>1 && (k & 1) == 1 ) // for that k the Bernoulli number is zero continue; k_ = k; temp = n_; // n_ is equal 2 temp.Pow(k_); // temp = 2^k temp2 = cgamma.fact[m]; temp3 = cgamma.fact[k]; temp3.Mul(cgamma.fact[m-k]); temp2.Div(temp3); // temp2 = (m k) = m! / ( k! * (m-k)! ) temp.Mul(temp2); temp.Mul(cgamma.bern[k]); sum.Add(temp); // sum += 2^k * (m k) * B(k) if( sum.IsNan() ) break; } return sum; } /*! an auxiliary function used to calculate Bernoulli numbers start is >= 2 we use the recurrence formula: B(m) = 1 / (2*(1 - 2^m)) * sum(m) where sum(m) is calculated by SetBernoulliNumbersSum() */ template bool SetBernoulliNumbersMore(CGamma & cgamma, uint start, const volatile StopCalculating * stop = 0) { ValueType denominator, temp, temp2, temp3, m_, sum, sum2, n_, k_; const uint n = 2; n_ = n; // start is >= 2 for(uint m=start ; mWasStopSignal() ) { cgamma.bern.resize(m); // valid numbers are in [0, m-1] return false; } cgamma.bern[m].Div(denominator); } } return true; } /*! this function is used to calculate Bernoulli numbers, returns false if there was a stop signal, 'more' means how many values should be added at the end e.g. typedef Big<1,2> MyBig; CGamma cgamma; SetBernoulliNumbers(cgamma, 3); // now we have three first Bernoulli numbers: 1 -0.5 0.16667 SetBernoulliNumbers(cgamma, 4); // now we have 7 Bernoulli numbers: 1 -0.5 0.16667 0 -0.0333 0 0.0238 */ template bool SetBernoulliNumbers(CGamma & cgamma, uint more = 20, const volatile StopCalculating * stop = 0) { if( more == 0 ) more = 1; uint start = static_cast(cgamma.bern.size()); cgamma.bern.resize(cgamma.bern.size() + more); if( start == 0 ) { cgamma.bern[0].SetOne(); ++start; } if( cgamma.bern.size() == 1 ) return true; if( start == 1 ) { cgamma.bern[1].Set05(); cgamma.bern[1].ChangeSign(); ++start; } // we should have sufficient factorials in cgamma.fact if( cgamma.fact.size() < cgamma.bern.size() ) SetFactorialSequence(cgamma.fact, static_cast(cgamma.bern.size() - cgamma.fact.size())); return SetBernoulliNumbersMore(cgamma, start, stop); } /*! an auxiliary function used to calculate the Gamma() function we calculate a sum: sum(n) = sum_{m=2} { B(m) / ( (m^2 - m) * n^(m-1) ) } = 1/(12*n) - 1/(360*n^3) + 1/(1260*n^5) + ... B(m) means a mth Bernoulli number the sum starts from m=2, we calculate as long as the value will not change after adding a next part */ template ValueType GammaFactorialHighSum(const ValueType & n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { ValueType temp, temp2, denominator, sum, oldsum; sum.SetZero(); for(uint m=2 ; mWasStopSignal() ) { err = err_interrupt; return ValueType(); // NaN } temp = (m-1); denominator = n; denominator.Pow(temp); // denominator = n ^ (m-1) temp = m; temp2 = temp; temp.Mul(temp2); temp.Sub(temp2); // temp = m^2 - m denominator.Mul(temp); // denominator = (m^2 - m) * n ^ (m-1) if( m >= cgamma.bern.size() ) { if( !SetBernoulliNumbers(cgamma, m - cgamma.bern.size() + 1 + 3, stop) ) // 3 more than needed { // there was the stop signal err = err_interrupt; return ValueType(); // NaN } } temp = cgamma.bern[m]; temp.Div(denominator); oldsum = sum; sum.Add(temp); if( sum.IsNan() || oldsum==sum ) break; } return sum; } /*! an auxiliary function used to calculate the Gamma() function we calculate a helper function GammaFactorialHigh() by using Stirling's series: n! = (n/e)^n * sqrt(2*pi*n) * exp( sum(n) ) where n is a real number (not only an integer) and is sufficient large (greater than TTMATH_GAMMA_BOUNDARY) and sum(n) is calculated by GammaFactorialHighSum() */ template ValueType GammaFactorialHigh(const ValueType & n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { ValueType temp, temp2, temp3, denominator, sum; temp.Set2Pi(); temp.Mul(n); temp2 = Sqrt(temp); // temp2 = sqrt(2*pi*n) temp = n; temp3.SetE(); temp.Div(temp3); temp.Pow(n); // temp = (n/e)^n sum = GammaFactorialHighSum(n, cgamma, err, stop); temp3.Exp(sum); // temp3 = exp(sum) temp.Mul(temp2); temp.Mul(temp3); return temp; } /*! an auxiliary function used to calculate the Gamma() function Gamma(x) = GammaFactorialHigh(x-1) */ template ValueType GammaPlusHigh(ValueType n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { ValueType one; one.SetOne(); n.Sub(one); return GammaFactorialHigh(n, cgamma, err, stop); } /*! an auxiliary function used to calculate the Gamma() function we use this function when n is integer and a small value (from 0 to TTMATH_GAMMA_BOUNDARY] we use the formula: gamma(n) = (n-1)! = 1 * 2 * 3 * ... * (n-1) */ template ValueType GammaPlusLowIntegerInt(uint n, CGamma & cgamma) { TTMATH_ASSERT( n > 0 ) if( n - 1 < static_cast(cgamma.fact.size()) ) return cgamma.fact[n - 1]; ValueType res; uint start = 2; if( cgamma.fact.size() < 2 ) { res.SetOne(); } else { start = static_cast(cgamma.fact.size()); res = cgamma.fact[start-1]; } for(uint i=start ; i ValueType GammaPlusLowInteger(const ValueType & n, CGamma & cgamma) { sint n_; n.ToInt(n_); return GammaPlusLowIntegerInt(n_, cgamma); } /*! an auxiliary function used to calculate the Gamma() function we use this function when n is a small value (from 0 to TTMATH_GAMMA_BOUNDARY] we use a recurrence formula: gamma(z+1) = z * gamma(z) then: gamma(z) = gamma(z+1) / z e.g. gamma(3.89) = gamma(2001.89) / ( 3.89 * 4.89 * 5.89 * ... * 1999.89 * 2000.89 ) */ template ValueType GammaPlusLow(ValueType n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { ValueType one, denominator, temp, boundary; if( n.IsInteger() ) return GammaPlusLowInteger(n, cgamma); one.SetOne(); denominator = n; boundary = TTMATH_GAMMA_BOUNDARY; while( n < boundary ) { n.Add(one); denominator.Mul(n); } n.Add(one); // now n is sufficient big temp = GammaPlusHigh(n, cgamma, err, stop); temp.Div(denominator); return temp; } /*! an auxiliary function used to calculate the Gamma() function */ template ValueType GammaPlus(const ValueType & n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { if( n > TTMATH_GAMMA_BOUNDARY ) return GammaPlusHigh(n, cgamma, err, stop); return GammaPlusLow(n, cgamma, err, stop); } /*! an auxiliary function used to calculate the Gamma() function this function is used when n is negative we use the reflection formula: gamma(1-z) * gamma(z) = pi / sin(pi*z) then: gamma(z) = pi / (sin(pi*z) * gamma(1-z)) */ template ValueType GammaMinus(const ValueType & n, CGamma & cgamma, ErrorCode & err, const volatile StopCalculating * stop) { ValueType pi, denominator, temp, temp2; if( n.IsInteger() ) { // gamma function is not defined when n is negative and integer err = err_improper_argument; return temp; // NaN } pi.SetPi(); temp = pi; temp.Mul(n); temp2 = Sin(temp); // temp2 = sin(pi * n) temp.SetOne(); temp.Sub(n); temp = GammaPlus(temp, cgamma, err, stop); // temp = gamma(1 - n) temp.Mul(temp2); pi.Div(temp); return pi; } } // namespace auxiliaryfunctions /*! this function calculates the Gamma function it's multithread safe, you should create a CGamma<> object and use it whenever you call the Gamma() e.g. typedef Big<1,2> MyBig; MyBig x=234, y=345.53; CGamma cgamma; std::cout << Gamma(x, cgamma) << std::endl; std::cout << Gamma(y, cgamma) << std::endl; in the CGamma<> object the function stores some coefficients (factorials, Bernoulli numbers), and they will be reused in next calls to the function each thread should have its own CGamma<> object, and you can use these objects with Factorial() function too */ template ValueType Gamma(const ValueType & n, CGamma & cgamma, ErrorCode * err = 0, const volatile StopCalculating * stop = 0) { using namespace auxiliaryfunctions; ValueType result; ErrorCode err_tmp; if( n.IsNan() ) { if( err ) *err = err_improper_argument; return n; } if( cgamma.history.Get(n, result, err_tmp) ) { if( err ) *err = err_tmp; return result; } err_tmp = err_ok; if( n.IsSign() ) { result = GammaMinus(n, cgamma, err_tmp, stop); } else if( n.IsZero() ) { err_tmp = err_improper_argument; result.SetNan(); } else { result = GammaPlus(n, cgamma, err_tmp, stop); } if( result.IsNan() && err_tmp==err_ok ) err_tmp = err_overflow; if( err ) *err = err_tmp; if( stop && !stop->WasStopSignal() ) cgamma.history.Add(n, result, err_tmp); return result; } /*! this function calculates the Gamma function note: this function should be used only in a single-thread environment */ template ValueType Gamma(const ValueType & n, ErrorCode * err = 0) { // warning: this static object is not thread safe static CGamma cgamma; return Gamma(n, cgamma, err); } namespace auxiliaryfunctions { /*! an auxiliary function for calculating the factorial function we use the formula: x! = gamma(x+1) */ template ValueType Factorial2(ValueType x, CGamma * cgamma = 0, ErrorCode * err = 0, const volatile StopCalculating * stop = 0) { ValueType result, one; if( x.IsNan() || x.IsSign() || !x.IsInteger() ) { if( err ) *err = err_improper_argument; x.SetNan(); return x; } one.SetOne(); x.Add(one); if( cgamma ) return Gamma(x, *cgamma, err, stop); return Gamma(x, err); } } // namespace auxiliaryfunctions /*! the factorial from given 'x' e.g. Factorial(4) = 4! = 1*2*3*4 it's multithread safe, you should create a CGamma<> object and use it whenever you call the Factorial() e.g. typedef Big<1,2> MyBig; MyBig x=234, y=54345; CGamma cgamma; std::cout << Factorial(x, cgamma) << std::endl; std::cout << Factorial(y, cgamma) << std::endl; in the CGamma<> object the function stores some coefficients (factorials, Bernoulli numbers), and they will be reused in next calls to the function each thread should have its own CGamma<> object, and you can use these objects with Gamma() function too */ template ValueType Factorial(const ValueType & x, CGamma & cgamma, ErrorCode * err = 0, const volatile StopCalculating * stop = 0) { return auxiliaryfunctions::Factorial2(x, &cgamma, err, stop); } /*! the factorial from given 'x' e.g. Factorial(4) = 4! = 1*2*3*4 note: this function should be used only in a single-thread environment */ template ValueType Factorial(const ValueType & x, ErrorCode * err = 0) { return auxiliaryfunctions::Factorial2(x, (CGamma*)0, err, 0); } /*! this method prepares some coefficients: factorials and Bernoulli numbers stored in 'fact' and 'bern' objects we're defining the method here because we're using Gamma() function which is not available in ttmathobjects.h read the doc info in ttmathobjects.h file where CGamma<> struct is declared */ template void CGamma::InitAll() { ValueType x = TTMATH_GAMMA_BOUNDARY + 1; // history.Remove(x) removes only one object // we must be sure that there are not others objects with the key 'x' while( history.Remove(x) ) { } // the simplest way to initialize is to call the Gamma function with (TTMATH_GAMMA_BOUNDARY + 1) // when x is larger then fewer coefficients we need Gamma(x, *this); } } // namespace /*! this is for convenience for the user he can only use '#include ' */ #include "ttmathparser.h" // Dec is not finished yet //#include "ttmathdec.h" #ifdef _MSC_VER //warning C4127: conditional expression is constant #pragma warning( default: 4127 ) //warning C4702: unreachable code #pragma warning( default: 4702 ) //warning C4800: forcing value to bool 'true' or 'false' (performance warning) #pragma warning( default: 4800 ) #endif #endif freebayes-1.3.6/ttmath/ttmathbig.h000066400000000000000000004100641417247743000171410ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2012, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathbig #define headerfilettmathbig /*! \file ttmathbig.h \brief A Class for representing floating point numbers */ #include "ttmathint.h" #include "ttmaththreads.h" #include #ifdef TTMATH_MULTITHREADS #include #endif namespace ttmath { /*! \brief Big implements the floating point numbers */ template class Big { /* value = mantissa * 2^exponent exponent - an integer value with a sign mantissa - an integer value without a sing mantissa must be pushed into the left side that is the highest bit from mantissa must be one (of course if there's another value than zero) -- this job (pushing bits into the left side) making Standardizing() method for example: if we want to store value one (1) into our Big object we must: set mantissa to 1 set exponent to 0 set info to 0 and call method Standardizing() */ public: Int exponent; UInt mantissa; unsigned char info; /*! Sign the mask of a bit from 'info' which means that there is a sign (when the bit is set) */ #define TTMATH_BIG_SIGN 128 /*! Not a number if this bit is set that there is not a valid number */ #define TTMATH_BIG_NAN 64 /*! Zero if this bit is set that there is value zero mantissa should be zero and exponent should be zero too (the Standardizing() method does this) */ #define TTMATH_BIG_ZERO 32 /*! this method sets NaN if there was a carry (and returns 1 in such a case) c can be 0, 1 or other value different from zero */ uint CheckCarry(uint c) { if( c != 0 ) { SetNan(); return 1; } return 0; } public: /*! returning the string represents the currect type of the library we have following types: asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits) asm_gcc_32 - with asm code designed for GCC (32 bits) asm_vc_64 - with asm for VC (64 bit) asm_gcc_64 - with asm for GCC (64 bit) no_asm_32 - pure C++ version (32 bit) - without any asm code no_asm_64 - pure C++ version (64 bit) - without any asm code */ static const char * LibTypeStr() { return UInt::LibTypeStr(); } /*! returning the currect type of the library */ static LibTypeCode LibType() { return UInt::LibType(); } /*! this method moves all bits from mantissa into its left side (suitably changes the exponent) or if the mantissa is zero it sets the exponent to zero as well (and clears the sign bit and sets the zero bit) it can return a carry the carry will be when we don't have enough space in the exponent you don't have to use this method if you don't change the mantissa and exponent directly */ uint Standardizing() { if( mantissa.IsTheHighestBitSet() ) { ClearInfoBit(TTMATH_BIG_ZERO); return 0; } if( CorrectZero() ) return 0; uint comp = mantissa.CompensationToLeft(); return exponent.Sub( comp ); } private: /*! if the mantissa is equal zero this method sets exponent to zero and info without the sign it returns true if there was the correction */ bool CorrectZero() { if( mantissa.IsZero() ) { SetInfoBit(TTMATH_BIG_ZERO); ClearInfoBit(TTMATH_BIG_SIGN); exponent.SetZero(); return true; } else { ClearInfoBit(TTMATH_BIG_ZERO); } return false; } public: /*! this method clears a specific bit in the 'info' variable bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc. */ void ClearInfoBit(unsigned char bit) { info = info & (~bit); } /*! this method sets a specific bit in the 'info' variable bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc. */ void SetInfoBit(unsigned char bit) { info = info | bit; } /*! this method returns true if a specific bit in the 'info' variable is set bit is one of: TTMATH_BIG_SIGN, TTMATH_BIG_NAN etc. */ bool IsInfoBit(unsigned char bit) const { return (info & bit) != 0; } /*! this method sets zero */ void SetZero() { info = TTMATH_BIG_ZERO; exponent.SetZero(); mantissa.SetZero(); /* we don't have to compensate zero */ } /*! this method sets one */ void SetOne() { info = 0; mantissa.SetZero(); mantissa.table[man-1] = TTMATH_UINT_HIGHEST_BIT; exponent = -sint(man * TTMATH_BITS_PER_UINT - 1); // don't have to Standardize() - the last bit from mantissa is set } /*! this method sets value 0.5 */ void Set05() { SetOne(); exponent.SubOne(); } /*! this method sets NaN flag (Not a Number) when this flag is set that means there is no a valid number */ void SetNan() { SetInfoBit(TTMATH_BIG_NAN); } /*! this method sets NaN flag (Not a Number) also clears the mantissa and exponent (similarly as it would be a zero value) */ void SetZeroNan() { SetZero(); SetNan(); } /*! this method swappes this for an argument */ void Swap(Big & ss2) { unsigned char info_temp = info; info = ss2.info; ss2.info = info_temp; exponent.Swap(ss2.exponent); mantissa.Swap(ss2.mantissa); } private: /*! this method sets the mantissa of the value of pi */ void SetMantissaPi() { // this is a static table which represents the value of Pi (mantissa of it) // (first is the highest word) // we must define this table as 'unsigned int' because // both on 32bit and 64bit platforms this table is 32bit static const unsigned int temp_table[] = { 0xc90fdaa2, 0x2168c234, 0xc4c6628b, 0x80dc1cd1, 0x29024e08, 0x8a67cc74, 0x020bbea6, 0x3b139b22, 0x514a0879, 0x8e3404dd, 0xef9519b3, 0xcd3a431b, 0x302b0a6d, 0xf25f1437, 0x4fe1356d, 0x6d51c245, 0xe485b576, 0x625e7ec6, 0xf44c42e9, 0xa637ed6b, 0x0bff5cb6, 0xf406b7ed, 0xee386bfb, 0x5a899fa5, 0xae9f2411, 0x7c4b1fe6, 0x49286651, 0xece45b3d, 0xc2007cb8, 0xa163bf05, 0x98da4836, 0x1c55d39a, 0x69163fa8, 0xfd24cf5f, 0x83655d23, 0xdca3ad96, 0x1c62f356, 0x208552bb, 0x9ed52907, 0x7096966d, 0x670c354e, 0x4abc9804, 0xf1746c08, 0xca18217c, 0x32905e46, 0x2e36ce3b, 0xe39e772c, 0x180e8603, 0x9b2783a2, 0xec07a28f, 0xb5c55df0, 0x6f4c52c9, 0xde2bcbf6, 0x95581718, 0x3995497c, 0xea956ae5, 0x15d22618, 0x98fa0510, 0x15728e5a, 0x8aaac42d, 0xad33170d, 0x04507a33, 0xa85521ab, 0xdf1cba64, 0xecfb8504, 0x58dbef0a, 0x8aea7157, 0x5d060c7d, 0xb3970f85, 0xa6e1e4c7, 0xabf5ae8c, 0xdb0933d7, 0x1e8c94e0, 0x4a25619d, 0xcee3d226, 0x1ad2ee6b, 0xf12ffa06, 0xd98a0864, 0xd8760273, 0x3ec86a64, 0x521f2b18, 0x177b200c, 0xbbe11757, 0x7a615d6c, 0x770988c0, 0xbad946e2, 0x08e24fa0, 0x74e5ab31, 0x43db5bfc, 0xe0fd108e, 0x4b82d120, 0xa9210801, 0x1a723c12, 0xa787e6d7, 0x88719a10, 0xbdba5b26, 0x99c32718, 0x6af4e23c, 0x1a946834, 0xb6150bda, 0x2583e9ca, 0x2ad44ce8, 0xdbbbc2db, 0x04de8ef9, 0x2e8efc14, 0x1fbecaa6, 0x287c5947, 0x4e6bc05d, 0x99b2964f, 0xa090c3a2, 0x233ba186, 0x515be7ed, 0x1f612970, 0xcee2d7af, 0xb81bdd76, 0x2170481c, 0xd0069127, 0xd5b05aa9, 0x93b4ea98, 0x8d8fddc1, 0x86ffb7dc, 0x90a6c08f, 0x4df435c9, 0x34028492, 0x36c3fab4, 0xd27c7026, 0xc1d4dcb2, 0x602646de, 0xc9751e76, 0x3dba37bd, 0xf8ff9406, 0xad9e530e, 0xe5db382f, 0x413001ae, 0xb06a53ed, 0x9027d831, 0x179727b0, 0x865a8918, 0xda3edbeb, 0xcf9b14ed, 0x44ce6cba, 0xced4bb1b, 0xdb7f1447, 0xe6cc254b, 0x33205151, 0x2bd7af42, 0x6fb8f401, 0x378cd2bf, 0x5983ca01, 0xc64b92ec, 0xf032ea15, 0xd1721d03, 0xf482d7ce, 0x6e74fef6, 0xd55e702f, 0x46980c82, 0xb5a84031, 0x900b1c9e, 0x59e7c97f, 0xbec7e8f3, 0x23a97a7e, 0x36cc88be, 0x0f1d45b7, 0xff585ac5, 0x4bd407b2, 0x2b4154aa, 0xcc8f6d7e, 0xbf48e1d8, 0x14cc5ed2, 0x0f8037e0, 0xa79715ee, 0xf29be328, 0x06a1d58b, 0xb7c5da76, 0xf550aa3d, 0x8a1fbff0, 0xeb19ccb1, 0xa313d55c, 0xda56c9ec, 0x2ef29632, 0x387fe8d7, 0x6e3c0468, 0x043e8f66, 0x3f4860ee, 0x12bf2d5b, 0x0b7474d6, 0xe694f91e, 0x6dbe1159, 0x74a3926f, 0x12fee5e4, 0x38777cb6, 0xa932df8c, 0xd8bec4d0, 0x73b931ba, 0x3bc832b6, 0x8d9dd300, 0x741fa7bf, 0x8afc47ed, 0x2576f693, 0x6ba42466, 0x3aab639c, 0x5ae4f568, 0x3423b474, 0x2bf1c978, 0x238f16cb, 0xe39d652d, 0xe3fdb8be, 0xfc848ad9, 0x22222e04, 0xa4037c07, 0x13eb57a8, 0x1a23f0c7, 0x3473fc64, 0x6cea306b, 0x4bcbc886, 0x2f8385dd, 0xfa9d4b7f, 0xa2c087e8, 0x79683303, 0xed5bdd3a, 0x062b3cf5, 0xb3a278a6, 0x6d2a13f8, 0x3f44f82d, 0xdf310ee0, 0x74ab6a36, 0x4597e899, 0xa0255dc1, 0x64f31cc5, 0x0846851d, 0xf9ab4819, 0x5ded7ea1, 0xb1d510bd, 0x7ee74d73, 0xfaf36bc3, 0x1ecfa268, 0x359046f4, 0xeb879f92, 0x4009438b, 0x481c6cd7, 0x889a002e, 0xd5ee382b, 0xc9190da6, 0xfc026e47, 0x9558e447, 0x5677e9aa, 0x9e3050e2, 0x765694df, 0xc81f56e8, 0x80b96e71, 0x60c980dd, 0x98a573ea, 0x4472065a, 0x139cd290, 0x6cd1cb72, 0x9ec52a53 // last one was: 0x9ec52a52 //0x86d44014, ... // (the last word 0x9ec52a52 was rounded up because the next one is 0x86d44014 -- first bit is one 0x8..) // 256 32bit words for the mantissa -- about 2464 valid decimal digits }; // the value of PI is comming from the website http://zenwerx.com/pi.php // 3101 digits were taken from this website // (later the digits were compared with: // http://www.eveandersson.com/pi/digits/1000000 and http://www.geom.uiuc.edu/~huberty/math5337/groupe/digits.html ) // and they were set into Big<1,400> type (using operator=(const char*) on a 32bit platform) // and then the first 256 words were taken into this table // (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256, // and on 64bit platform value 128 (256/2=128)) mantissa.SetFromTable(temp_table, sizeof(temp_table) / sizeof(int)); } public: /*! this method sets the value of pi */ void SetPi() { SetMantissaPi(); info = 0; exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT) + 2; } /*! this method sets the value of 0.5 * pi */ void Set05Pi() { SetMantissaPi(); info = 0; exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT) + 1; } /*! this method sets the value of 2 * pi */ void Set2Pi() { SetMantissaPi(); info = 0; exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT) + 3; } /*! this method sets the value of e (the base of the natural logarithm) */ void SetE() { static const unsigned int temp_table[] = { 0xadf85458, 0xa2bb4a9a, 0xafdc5620, 0x273d3cf1, 0xd8b9c583, 0xce2d3695, 0xa9e13641, 0x146433fb, 0xcc939dce, 0x249b3ef9, 0x7d2fe363, 0x630c75d8, 0xf681b202, 0xaec4617a, 0xd3df1ed5, 0xd5fd6561, 0x2433f51f, 0x5f066ed0, 0x85636555, 0x3ded1af3, 0xb557135e, 0x7f57c935, 0x984f0c70, 0xe0e68b77, 0xe2a689da, 0xf3efe872, 0x1df158a1, 0x36ade735, 0x30acca4f, 0x483a797a, 0xbc0ab182, 0xb324fb61, 0xd108a94b, 0xb2c8e3fb, 0xb96adab7, 0x60d7f468, 0x1d4f42a3, 0xde394df4, 0xae56ede7, 0x6372bb19, 0x0b07a7c8, 0xee0a6d70, 0x9e02fce1, 0xcdf7e2ec, 0xc03404cd, 0x28342f61, 0x9172fe9c, 0xe98583ff, 0x8e4f1232, 0xeef28183, 0xc3fe3b1b, 0x4c6fad73, 0x3bb5fcbc, 0x2ec22005, 0xc58ef183, 0x7d1683b2, 0xc6f34a26, 0xc1b2effa, 0x886b4238, 0x611fcfdc, 0xde355b3b, 0x6519035b, 0xbc34f4de, 0xf99c0238, 0x61b46fc9, 0xd6e6c907, 0x7ad91d26, 0x91f7f7ee, 0x598cb0fa, 0xc186d91c, 0xaefe1309, 0x85139270, 0xb4130c93, 0xbc437944, 0xf4fd4452, 0xe2d74dd3, 0x64f2e21e, 0x71f54bff, 0x5cae82ab, 0x9c9df69e, 0xe86d2bc5, 0x22363a0d, 0xabc52197, 0x9b0deada, 0x1dbf9a42, 0xd5c4484e, 0x0abcd06b, 0xfa53ddef, 0x3c1b20ee, 0x3fd59d7c, 0x25e41d2b, 0x669e1ef1, 0x6e6f52c3, 0x164df4fb, 0x7930e9e4, 0xe58857b6, 0xac7d5f42, 0xd69f6d18, 0x7763cf1d, 0x55034004, 0x87f55ba5, 0x7e31cc7a, 0x7135c886, 0xefb4318a, 0xed6a1e01, 0x2d9e6832, 0xa907600a, 0x918130c4, 0x6dc778f9, 0x71ad0038, 0x092999a3, 0x33cb8b7a, 0x1a1db93d, 0x7140003c, 0x2a4ecea9, 0xf98d0acc, 0x0a8291cd, 0xcec97dcf, 0x8ec9b55a, 0x7f88a46b, 0x4db5a851, 0xf44182e1, 0xc68a007e, 0x5e0dd902, 0x0bfd64b6, 0x45036c7a, 0x4e677d2c, 0x38532a3a, 0x23ba4442, 0xcaf53ea6, 0x3bb45432, 0x9b7624c8, 0x917bdd64, 0xb1c0fd4c, 0xb38e8c33, 0x4c701c3a, 0xcdad0657, 0xfccfec71, 0x9b1f5c3e, 0x4e46041f, 0x388147fb, 0x4cfdb477, 0xa52471f7, 0xa9a96910, 0xb855322e, 0xdb6340d8, 0xa00ef092, 0x350511e3, 0x0abec1ff, 0xf9e3a26e, 0x7fb29f8c, 0x183023c3, 0x587e38da, 0x0077d9b4, 0x763e4e4b, 0x94b2bbc1, 0x94c6651e, 0x77caf992, 0xeeaac023, 0x2a281bf6, 0xb3a739c1, 0x22611682, 0x0ae8db58, 0x47a67cbe, 0xf9c9091b, 0x462d538c, 0xd72b0374, 0x6ae77f5e, 0x62292c31, 0x1562a846, 0x505dc82d, 0xb854338a, 0xe49f5235, 0xc95b9117, 0x8ccf2dd5, 0xcacef403, 0xec9d1810, 0xc6272b04, 0x5b3b71f9, 0xdc6b80d6, 0x3fdd4a8e, 0x9adb1e69, 0x62a69526, 0xd43161c1, 0xa41d570d, 0x7938dad4, 0xa40e329c, 0xcff46aaa, 0x36ad004c, 0xf600c838, 0x1e425a31, 0xd951ae64, 0xfdb23fce, 0xc9509d43, 0x687feb69, 0xedd1cc5e, 0x0b8cc3bd, 0xf64b10ef, 0x86b63142, 0xa3ab8829, 0x555b2f74, 0x7c932665, 0xcb2c0f1c, 0xc01bd702, 0x29388839, 0xd2af05e4, 0x54504ac7, 0x8b758282, 0x2846c0ba, 0x35c35f5c, 0x59160cc0, 0x46fd8251, 0x541fc68c, 0x9c86b022, 0xbb709987, 0x6a460e74, 0x51a8a931, 0x09703fee, 0x1c217e6c, 0x3826e52c, 0x51aa691e, 0x0e423cfc, 0x99e9e316, 0x50c1217b, 0x624816cd, 0xad9a95f9, 0xd5b80194, 0x88d9c0a0, 0xa1fe3075, 0xa577e231, 0x83f81d4a, 0x3f2fa457, 0x1efc8ce0, 0xba8a4fe8, 0xb6855dfe, 0x72b0a66e, 0xded2fbab, 0xfbe58a30, 0xfafabe1c, 0x5d71a87e, 0x2f741ef8, 0xc1fe86fe, 0xa6bbfde5, 0x30677f0d, 0x97d11d49, 0xf7a8443d, 0x0822e506, 0xa9f4614e, 0x011e2a94, 0x838ff88c, 0xd68c8bb7, 0xc51eef6d, 0x49ea8ab4, 0xf2c3df5b, 0xb4e0735a, 0xb0d68749 // 0x2fe26dd4, ... // 256 32bit words for the mantissa -- about 2464 valid decimal digits }; // above value was calculated using Big<1,400> type on a 32bit platform // and then the first 256 words were taken, // the calculating was made by using ExpSurrounding0(1) method // which took 1420 iterations // (the result was compared with e taken from http://antwrp.gsfc.nasa.gov/htmltest/gifcity/e.2mil) // (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256, // and on 64bit platform value 128 (256/2=128)) mantissa.SetFromTable(temp_table, sizeof(temp_table) / sizeof(int)); exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT) + 2; info = 0; } /*! this method sets the value of ln(2) the natural logarithm from 2 */ void SetLn2() { static const unsigned int temp_table[] = { 0xb17217f7, 0xd1cf79ab, 0xc9e3b398, 0x03f2f6af, 0x40f34326, 0x7298b62d, 0x8a0d175b, 0x8baafa2b, 0xe7b87620, 0x6debac98, 0x559552fb, 0x4afa1b10, 0xed2eae35, 0xc1382144, 0x27573b29, 0x1169b825, 0x3e96ca16, 0x224ae8c5, 0x1acbda11, 0x317c387e, 0xb9ea9bc3, 0xb136603b, 0x256fa0ec, 0x7657f74b, 0x72ce87b1, 0x9d6548ca, 0xf5dfa6bd, 0x38303248, 0x655fa187, 0x2f20e3a2, 0xda2d97c5, 0x0f3fd5c6, 0x07f4ca11, 0xfb5bfb90, 0x610d30f8, 0x8fe551a2, 0xee569d6d, 0xfc1efa15, 0x7d2e23de, 0x1400b396, 0x17460775, 0xdb8990e5, 0xc943e732, 0xb479cd33, 0xcccc4e65, 0x9393514c, 0x4c1a1e0b, 0xd1d6095d, 0x25669b33, 0x3564a337, 0x6a9c7f8a, 0x5e148e82, 0x074db601, 0x5cfe7aa3, 0x0c480a54, 0x17350d2c, 0x955d5179, 0xb1e17b9d, 0xae313cdb, 0x6c606cb1, 0x078f735d, 0x1b2db31b, 0x5f50b518, 0x5064c18b, 0x4d162db3, 0xb365853d, 0x7598a195, 0x1ae273ee, 0x5570b6c6, 0x8f969834, 0x96d4e6d3, 0x30af889b, 0x44a02554, 0x731cdc8e, 0xa17293d1, 0x228a4ef9, 0x8d6f5177, 0xfbcf0755, 0x268a5c1f, 0x9538b982, 0x61affd44, 0x6b1ca3cf, 0x5e9222b8, 0x8c66d3c5, 0x422183ed, 0xc9942109, 0x0bbb16fa, 0xf3d949f2, 0x36e02b20, 0xcee886b9, 0x05c128d5, 0x3d0bd2f9, 0x62136319, 0x6af50302, 0x0060e499, 0x08391a0c, 0x57339ba2, 0xbeba7d05, 0x2ac5b61c, 0xc4e9207c, 0xef2f0ce2, 0xd7373958, 0xd7622658, 0x901e646a, 0x95184460, 0xdc4e7487, 0x156e0c29, 0x2413d5e3, 0x61c1696d, 0xd24aaebd, 0x473826fd, 0xa0c238b9, 0x0ab111bb, 0xbd67c724, 0x972cd18b, 0xfbbd9d42, 0x6c472096, 0xe76115c0, 0x5f6f7ceb, 0xac9f45ae, 0xcecb72f1, 0x9c38339d, 0x8f682625, 0x0dea891e, 0xf07afff3, 0xa892374e, 0x175eb4af, 0xc8daadd8, 0x85db6ab0, 0x3a49bd0d, 0xc0b1b31d, 0x8a0e23fa, 0xc5e5767d, 0xf95884e0, 0x6425a415, 0x26fac51c, 0x3ea8449f, 0xe8f70edd, 0x062b1a63, 0xa6c4c60c, 0x52ab3316, 0x1e238438, 0x897a39ce, 0x78b63c9f, 0x364f5b8a, 0xef22ec2f, 0xee6e0850, 0xeca42d06, 0xfb0c75df, 0x5497e00c, 0x554b03d7, 0xd2874a00, 0x0ca8f58d, 0x94f0341c, 0xbe2ec921, 0x56c9f949, 0xdb4a9316, 0xf281501e, 0x53daec3f, 0x64f1b783, 0x154c6032, 0x0e2ff793, 0x33ce3573, 0xfacc5fdc, 0xf1178590, 0x3155bbd9, 0x0f023b22, 0x0224fcd8, 0x471bf4f4, 0x45f0a88a, 0x14f0cd97, 0x6ea354bb, 0x20cdb5cc, 0xb3db2392, 0x88d58655, 0x4e2a0e8a, 0x6fe51a8c, 0xfaa72ef2, 0xad8a43dc, 0x4212b210, 0xb779dfe4, 0x9d7307cc, 0x846532e4, 0xb9694eda, 0xd162af05, 0x3b1751f3, 0xa3d091f6, 0x56658154, 0x12b5e8c2, 0x02461069, 0xac14b958, 0x784934b8, 0xd6cce1da, 0xa5053701, 0x1aa4fb42, 0xb9a3def4, 0x1bda1f85, 0xef6fdbf2, 0xf2d89d2a, 0x4b183527, 0x8fd94057, 0x89f45681, 0x2b552879, 0xa6168695, 0xc12963b0, 0xff01eaab, 0x73e5b5c1, 0x585318e7, 0x624f14a5, 0x1a4a026b, 0x68082920, 0x57fd99b6, 0x6dc085a9, 0x8ac8d8ca, 0xf9eeeea9, 0x8a2400ca, 0xc95f260f, 0xd10036f9, 0xf91096ac, 0x3195220a, 0x1a356b2a, 0x73b7eaad, 0xaf6d6058, 0x71ef7afb, 0x80bc4234, 0x33562e94, 0xb12dfab4, 0x14451579, 0xdf59eae0, 0x51707062, 0x4012a829, 0x62c59cab, 0x347f8304, 0xd889659e, 0x5a9139db, 0x14efcc30, 0x852be3e8, 0xfc99f14d, 0x1d822dd6, 0xe2f76797, 0xe30219c8, 0xaa9ce884, 0x8a886eb3, 0xc87b7295, 0x988012e8, 0x314186ed, 0xbaf86856, 0xccd3c3b6, 0xee94e62f, 0x110a6783, 0xd2aae89c, 0xcc3b76fc, 0x435a0ce1, 0x34c2838f, 0xd571ec6c, 0x1366a993 // last one was: 0x1366a992 //0xcbb9ac40, ... // (the last word 0x1366a992 was rounded up because the next one is 0xcbb9ac40 -- first bit is one 0xc..) // 256 32bit words for the mantissa -- about 2464 valid decimal digits }; // above value was calculated using Big<1,400> type on a 32bit platform // and then the first 256 words were taken, // the calculating was made by using LnSurrounding1(2) method // which took 4035 iterations // (the result was compared with ln(2) taken from http://ja0hxv.calico.jp/pai/estart.html) // (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256, // and on 64bit platform value 128 (256/2=128)) mantissa.SetFromTable(temp_table, sizeof(temp_table) / sizeof(int)); exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT); info = 0; } /*! this method sets the value of ln(10) the natural logarithm from 10 I introduced this constant especially to make the conversion ToString() being faster. In fact the method ToString() is keeping values of logarithms it has calculated but it must calculate the logarithm at least once. If a program, which uses this library, is running for a long time this would be ok, but for programs which are running shorter, for example for CGI applications which only once are printing values, this would be much inconvenience. Then if we're printing with base (radix) 10 and the mantissa of our value is smaller than or equal to TTMATH_BUILTIN_VARIABLES_SIZE we don't calculate the logarithm but take it from this constant. */ void SetLn10() { static const unsigned int temp_table[] = { 0x935d8ddd, 0xaaa8ac16, 0xea56d62b, 0x82d30a28, 0xe28fecf9, 0xda5df90e, 0x83c61e82, 0x01f02d72, 0x962f02d7, 0xb1a8105c, 0xcc70cbc0, 0x2c5f0d68, 0x2c622418, 0x410be2da, 0xfb8f7884, 0x02e516d6, 0x782cf8a2, 0x8a8c911e, 0x765aa6c3, 0xb0d831fb, 0xef66ceb0, 0x4ab3c6fa, 0x5161bb49, 0xd219c7bb, 0xca67b35b, 0x23605085, 0x8e93368d, 0x44789c4f, 0x5b08b057, 0xd5ede20f, 0x469ea58e, 0x9305e981, 0xe2478fca, 0xad3aee98, 0x9cd5b42e, 0x6a271619, 0xa47ecb26, 0x978c5d4f, 0xdb1d28ea, 0x57d4fdc0, 0xe40bf3cc, 0x1e14126a, 0x45765cde, 0x268339db, 0xf47fa96d, 0xeb271060, 0xaf88486e, 0xa9b7401e, 0x3dfd3c51, 0x748e6d6e, 0x3848c8d2, 0x5faf1bca, 0xe88047f1, 0x7b0d9b50, 0xa949eaaa, 0xdf69e8a5, 0xf77e3760, 0x4e943960, 0xe38a5700, 0xffde2db1, 0xad6bfbff, 0xd821ba0a, 0x4cb0466d, 0x61ba648e, 0xef99c8e5, 0xf6974f36, 0x3982a78c, 0xa45ddfc8, 0x09426178, 0x19127a6e, 0x3b70fcda, 0x2d732d47, 0xb5e4b1c8, 0xc0e5a10a, 0xaa6604a5, 0x324ec3dc, 0xbc64ea80, 0x6e198566, 0x1f1d366c, 0x20663834, 0x4d5e843f, 0x20642b97, 0x0a62d18e, 0x478f7bd5, 0x8fcd0832, 0x4a7b32a6, 0xdef85a05, 0xeb56323a, 0x421ef5e0, 0xb00410a0, 0xa0d9c260, 0x794a976f, 0xf6ff363d, 0xb00b6b33, 0xf42c58de, 0xf8a3c52d, 0xed69b13d, 0xc1a03730, 0xb6524dc1, 0x8c167e86, 0x99d6d20e, 0xa2defd2b, 0xd006f8b4, 0xbe145a2a, 0xdf3ccbb3, 0x189da49d, 0xbc1261c8, 0xb3e4daad, 0x6a36cecc, 0xb2d5ae5b, 0x89bf752f, 0xb5dfb353, 0xff3065c4, 0x0cfceec8, 0x1be5a9a9, 0x67fddc57, 0xc4b83301, 0x006bf062, 0x4b40ed7a, 0x56c6cdcd, 0xa2d6fe91, 0x388e9e3e, 0x48a93f5f, 0x5e3b6eb4, 0xb81c4a5b, 0x53d49ea6, 0x8e668aea, 0xba83c7f8, 0xfb5f06c3, 0x58ac8f70, 0xfa9d8c59, 0x8c574502, 0xbaf54c96, 0xc84911f0, 0x0482d095, 0x1a0af022, 0xabbab080, 0xec97efd3, 0x671e4e0e, 0x52f166b6, 0xcd5cd226, 0x0dc67795, 0x2e1e34a3, 0xf799677f, 0x2c1d48f1, 0x2944b6c5, 0x2ba1307e, 0x704d67f9, 0x1c1035e4, 0x4e927c63, 0x03cf12bf, 0xe2cd2e31, 0xf8ee4843, 0x344d51b0, 0xf37da42b, 0x9f0b0fd9, 0x134fb2d9, 0xf815e490, 0xd966283f, 0x23962766, 0xeceab1e4, 0xf3b5fc86, 0x468127e2, 0xb606d10d, 0x3a45f4b6, 0xb776102d, 0x2fdbb420, 0x80c8fa84, 0xd0ff9f45, 0xc58aef38, 0xdb2410fd, 0x1f1cebad, 0x733b2281, 0x52ca5f36, 0xddf29daa, 0x544334b8, 0xdeeaf659, 0x4e462713, 0x1ed485b4, 0x6a0822e1, 0x28db471c, 0xa53938a8, 0x44c3bef7, 0xf35215c8, 0xb382bc4e, 0x3e4c6f15, 0x6285f54c, 0x17ab408e, 0xccbf7f5e, 0xd16ab3f6, 0xced2846d, 0xf457e14f, 0xbb45d9c5, 0x646ad497, 0xac697494, 0x145de32e, 0x93907128, 0xd263d521, 0x79efb424, 0xd64651d6, 0xebc0c9f0, 0xbb583a44, 0xc6412c84, 0x85bb29a6, 0x4d31a2cd, 0x92954469, 0xa32b1abd, 0xf7f5202c, 0xa4aa6c93, 0x2e9b53cf, 0x385ab136, 0x2741f356, 0x5de9c065, 0x6009901c, 0x88abbdd8, 0x74efcf73, 0x3f761ad4, 0x35f3c083, 0xfd6b8ee0, 0x0bef11c7, 0xc552a89d, 0x58ce4a21, 0xd71e54f2, 0x4157f6c7, 0xd4622316, 0xe98956d7, 0x450027de, 0xcbd398d8, 0x4b98b36a, 0x0724c25c, 0xdb237760, 0xe9324b68, 0x7523e506, 0x8edad933, 0x92197f00, 0xb853a326, 0xb330c444, 0x65129296, 0x34bc0670, 0xe177806d, 0xe338dac4, 0x5537492a, 0xe19add83, 0xcf45000f, 0x5b423bce, 0x6497d209, 0xe30e18a1, 0x3cbf0687, 0x67973103, 0xd9485366, 0x81506bba, 0x2e93a9a4, 0x7dd59d3f, 0xf17cd746, 0x8c2075be, 0x552a4348 // last one was: 0x552a4347 // 0xb4a638ef, ... //(the last word 0x552a4347 was rounded up because the next one is 0xb4a638ef -- first bit is one 0xb..) // 256 32bit words for the mantissa -- about 2464 valid digits (decimal) }; // above value was calculated using Big<1,400> type on a 32bit platform // and then the first 256 32bit words were taken, // the calculating was made by using LnSurrounding1(10) method // which took 22080 iterations // (the result was compared with ln(10) taken from http://ja0hxv.calico.jp/pai/estart.html) // (the formula used in LnSurrounding1(x) converges badly when // the x is greater than one but in fact we can use it, only the // number of iterations will be greater) // (TTMATH_BUILTIN_VARIABLES_SIZE on 32bit platform should have the value 256, // and on 64bit platform value 128 (256/2=128)) mantissa.SetFromTable(temp_table, sizeof(temp_table) / sizeof(int)); exponent = -sint(man)*sint(TTMATH_BITS_PER_UINT) + 2; info = 0; } /*! this method sets the maximum value which can be held in this type */ void SetMax() { info = 0; mantissa.SetMax(); exponent.SetMax(); // we don't have to use 'Standardizing()' because the last bit from // the mantissa is set } /*! this method sets the minimum value which can be held in this type */ void SetMin() { info = 0; mantissa.SetMax(); exponent.SetMax(); SetSign(); // we don't have to use 'Standardizing()' because the last bit from // the mantissa is set } /*! testing whether there is a value zero or not */ bool IsZero() const { return IsInfoBit(TTMATH_BIG_ZERO); } /*! this method returns true when there's the sign set also we don't check the NaN flag */ bool IsSign() const { return IsInfoBit(TTMATH_BIG_SIGN); } /*! this method returns true when there is not a valid number */ bool IsNan() const { return IsInfoBit(TTMATH_BIG_NAN); } /*! this method clears the sign (there'll be an absolute value) e.g. -1 -> 1 2 -> 2 */ void Abs() { ClearInfoBit(TTMATH_BIG_SIGN); } /*! this method remains the 'sign' of the value e.g. -2 = -1 0 = 0 10 = 1 */ void Sgn() { // we have to check the NaN flag, because the next SetOne() method would clear it if( IsNan() ) return; if( IsSign() ) { SetOne(); SetSign(); } else if( IsZero() ) SetZero(); // !! is nedeed here? else SetOne(); } /*! this method sets the sign e.g. -1 -> -1 2 -> -2 we do not check whether there is a zero or not, if you're using this method you must be sure that the value is (or will be afterwards) different from zero */ void SetSign() { SetInfoBit(TTMATH_BIG_SIGN); } /*! this method changes the sign when there is a value of zero then the sign is not changed e.g. -1 -> 1 2 -> -2 */ void ChangeSign() { // we don't have to check the NaN flag here if( IsZero() ) return; if( IsSign() ) ClearInfoBit(TTMATH_BIG_SIGN); else SetInfoBit(TTMATH_BIG_SIGN); } private: /*! this method does the half-to-even rounding (banker's rounding) if is_half is: true - that means the rest was equal the half (0.5 decimal) false - that means the rest was greater than a half (greater than 0.5 decimal) if the rest was less than a half then don't call this method (the rounding should does nothing then) */ uint RoundHalfToEven(bool is_half, bool rounding_up = true) { uint c = 0; if( !is_half || mantissa.IsTheLowestBitSet() ) { if( rounding_up ) { if( mantissa.AddOne() ) { mantissa.Rcr(1, 1); c = exponent.AddOne(); } } else { #ifdef TTMATH_DEBUG uint c_from_zero = #endif mantissa.SubOne(); // we're using rounding_up=false in Add() when the mantissas have different signs // mantissa can be zero only when previous mantissa was equal to ss2.mantissa // but in such a case 'last_bit_set' will not be set and consequently 'do_rounding' will be false TTMATH_ASSERT( c_from_zero == 0 ) } } return c; } /*! * * basic mathematic functions * */ /*! this method adds one to the existing value */ uint AddOne() { Big one; one.SetOne(); return Add(one); } /*! this method subtracts one from the existing value */ uint SubOne() { Big one; one.SetOne(); return Sub(one); } private: /*! an auxiliary method for adding */ void AddCheckExponents( Big & ss2, Int & exp_offset, bool & last_bit_set, bool & rest_zero, bool & do_adding, bool & do_rounding) { Int mantissa_size_in_bits( man * TTMATH_BITS_PER_UINT ); if( exp_offset == mantissa_size_in_bits ) { last_bit_set = ss2.mantissa.IsTheHighestBitSet(); rest_zero = ss2.mantissa.AreFirstBitsZero(man*TTMATH_BITS_PER_UINT - 1); do_rounding = true; // we'are only rounding } else if( exp_offset < mantissa_size_in_bits ) { uint moved = exp_offset.ToInt(); // how many times we must move ss2.mantissa rest_zero = true; if( moved > 0 ) { last_bit_set = static_cast( ss2.mantissa.GetBit(moved-1) ); if( moved > 1 ) rest_zero = ss2.mantissa.AreFirstBitsZero(moved - 1); // (2) moving 'exp_offset' times ss2.mantissa.Rcr(moved, 0); } do_adding = true; do_rounding = true; } // if exp_offset is greater than mantissa_size_in_bits then we do nothing // ss2 is too small for taking into consideration in the sum } /*! an auxiliary method for adding */ uint AddMantissas( Big & ss2, bool & last_bit_set, bool & rest_zero) { uint c = 0; if( IsSign() == ss2.IsSign() ) { // values have the same signs if( mantissa.Add(ss2.mantissa) ) { // we have one bit more from addition (carry) // now rest_zero means the old rest_zero with the old last_bit_set rest_zero = (!last_bit_set && rest_zero); last_bit_set = mantissa.Rcr(1,1); c += exponent.AddOne(); } } else { // values have different signs // there shouldn't be a carry here because // (1) (2) guarantee that the mantissa of this // is greater than or equal to the mantissa of the ss2 #ifdef TTMATH_DEBUG uint c_temp = #endif mantissa.Sub(ss2.mantissa); TTMATH_ASSERT( c_temp == 0 ) } return c; } public: /*! Addition this = this + ss2 it returns carry if the sum is too big */ uint Add(Big ss2, bool round = true, bool adding = true) { bool last_bit_set, rest_zero, do_adding, do_rounding, rounding_up; Int exp_offset( exponent ); uint c = 0; if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( !adding ) ss2.ChangeSign(); // subtracting exp_offset.Sub( ss2.exponent ); exp_offset.Abs(); // (1) abs(this) will be >= abs(ss2) if( SmallerWithoutSignThan(ss2) ) Swap(ss2); if( ss2.IsZero() ) return 0; last_bit_set = rest_zero = do_adding = do_rounding = false; rounding_up = (IsSign() == ss2.IsSign()); AddCheckExponents(ss2, exp_offset, last_bit_set, rest_zero, do_adding, do_rounding); if( do_adding ) c += AddMantissas(ss2, last_bit_set, rest_zero); if( !round || !last_bit_set ) do_rounding = false; if( do_rounding ) c += RoundHalfToEven(rest_zero, rounding_up); if( do_adding || do_rounding ) c += Standardizing(); return CheckCarry(c); } /*! Subtraction this = this - ss2 it returns carry if the result is too big */ uint Sub(const Big & ss2, bool round = true) { return Add(ss2, round, false); } /*! bitwise AND this and ss2 must be >= 0 return values: 0 - ok 1 - carry 2 - this or ss2 was negative */ uint BitAnd(Big ss2) { if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( IsSign() || ss2.IsSign() ) { SetNan(); return 2; } if( IsZero() ) return 0; if( ss2.IsZero() ) { SetZero(); return 0; } Int exp_offset( exponent ); Int mantissa_size_in_bits( man * TTMATH_BITS_PER_UINT ); uint c = 0; exp_offset.Sub( ss2.exponent ); exp_offset.Abs(); // abs(this) will be >= abs(ss2) if( SmallerWithoutSignThan(ss2) ) Swap(ss2); if( exp_offset >= mantissa_size_in_bits ) { // the second value is too small SetZero(); return 0; } // exp_offset < mantissa_size_in_bits, moving 'exp_offset' times ss2.mantissa.Rcr( exp_offset.ToInt(), 0 ); mantissa.BitAnd(ss2.mantissa); c += Standardizing(); return CheckCarry(c); } /*! bitwise OR this and ss2 must be >= 0 return values: 0 - ok 1 - carry 2 - this or ss2 was negative */ uint BitOr(Big ss2) { if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( IsSign() || ss2.IsSign() ) { SetNan(); return 2; } if( IsZero() ) { *this = ss2; return 0; } if( ss2.IsZero() ) return 0; Int exp_offset( exponent ); Int mantissa_size_in_bits( man * TTMATH_BITS_PER_UINT ); uint c = 0; exp_offset.Sub( ss2.exponent ); exp_offset.Abs(); // abs(this) will be >= abs(ss2) if( SmallerWithoutSignThan(ss2) ) Swap(ss2); if( exp_offset >= mantissa_size_in_bits ) // the second value is too small return 0; // exp_offset < mantissa_size_in_bits, moving 'exp_offset' times ss2.mantissa.Rcr( exp_offset.ToInt(), 0 ); mantissa.BitOr(ss2.mantissa); c += Standardizing(); return CheckCarry(c); } /*! bitwise XOR this and ss2 must be >= 0 return values: 0 - ok 1 - carry 2 - this or ss2 was negative */ uint BitXor(Big ss2) { if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( IsSign() || ss2.IsSign() ) { SetNan(); return 2; } if( ss2.IsZero() ) return 0; if( IsZero() ) { *this = ss2; return 0; } Int exp_offset( exponent ); Int mantissa_size_in_bits( man * TTMATH_BITS_PER_UINT ); uint c = 0; exp_offset.Sub( ss2.exponent ); exp_offset.Abs(); // abs(this) will be >= abs(ss2) if( SmallerWithoutSignThan(ss2) ) Swap(ss2); if( exp_offset >= mantissa_size_in_bits ) // the second value is too small return 0; // exp_offset < mantissa_size_in_bits, moving 'exp_offset' times ss2.mantissa.Rcr( exp_offset.ToInt(), 0 ); mantissa.BitXor(ss2.mantissa); c += Standardizing(); return CheckCarry(c); } /*! Multiplication this = this * ss2 (ss2 is uint) ss2 without a sign */ uint MulUInt(uint ss2) { UInt man_result; uint i,c = 0; if( IsNan() ) return 1; if( IsZero() ) return 0; if( ss2 == 0 ) { SetZero(); return 0; } // man_result = mantissa * ss2.mantissa mantissa.MulInt(ss2, man_result); sint bit = UInt::FindLeadingBitInWord(man_result.table[man]); // man - last word if( bit!=-1 && uint(bit) > (TTMATH_BITS_PER_UINT/2) ) { // 'i' will be from 0 to TTMATH_BITS_PER_UINT i = man_result.CompensationToLeft(); c = exponent.Add( TTMATH_BITS_PER_UINT - i ); for(i=0 ; i0 && (tab[len-1] & TTMATH_UINT_HIGHEST_BIT)!=0 ) for(i=0 ; i & ss2, bool round = true) { TTMATH_REFERENCE_ASSERT( ss2 ) UInt man_result; uint c = 0; uint i; if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( IsZero() ) return 0; if( ss2.IsZero() ) { SetZero(); return 0; } // man_result = mantissa * ss2.mantissa mantissa.MulBig(ss2.mantissa, man_result); // 'i' will be from 0 to man*TTMATH_BITS_PER_UINT // because mantissa and ss2.mantissa are standardized // (the highest bit in man_result is set to 1 or // if there is a zero value in man_result the method CompensationToLeft() // returns 0 but we'll correct this at the end in Standardizing() method) i = man_result.CompensationToLeft(); uint exp_add = man * TTMATH_BITS_PER_UINT - i; if( exp_add ) c += exponent.Add( exp_add ); c += exponent.Add( ss2.exponent ); for(i=0 ; i & ss2, bool round = true) { if( this == &ss2 ) { Big copy_ss2(ss2); return MulRef(copy_ss2, round); } else { return MulRef(ss2, round); } } private: /*! division this = this / ss2 return value: 0 - ok 1 - carry (in a division carry can be as well) 2 - improper argument (ss2 is zero) */ uint DivRef(const Big & ss2, bool round = true) { TTMATH_REFERENCE_ASSERT( ss2 ) UInt man1; UInt man2; uint i,c = 0; if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( ss2.IsZero() ) { SetNan(); return 2; } if( IsZero() ) return 0; // !! this two loops can be joined together for(i=0 ; i & ss2, bool round = true) { if( this == &ss2 ) { Big copy_ss2(ss2); return DivRef(copy_ss2, round); } else { return DivRef(ss2, round); } } private: /*! the remainder from a division */ uint ModRef(const Big & ss2) { TTMATH_REFERENCE_ASSERT( ss2 ) uint c = 0; if( IsNan() || ss2.IsNan() ) return CheckCarry(1); if( ss2.IsZero() ) { SetNan(); return 2; } if( !SmallerWithoutSignThan(ss2) ) { Big temp(*this); c = temp.Div(ss2); temp.SkipFraction(); c += temp.Mul(ss2); c += Sub(temp); if( !SmallerWithoutSignThan( ss2 ) ) c += 1; } return CheckCarry(c); } public: /*! the remainder from a division e.g. 12.6 mod 3 = 0.6 because 12.6 = 3*4 + 0.6 -12.6 mod 3 = -0.6 bacause -12.6 = 3*(-4) + (-0.6) 12.6 mod -3 = 0.6 -12.6 mod -3 = -0.6 it means: in other words: this(old) = ss2 * q + this(new) return value: 0 - ok 1 - carry 2 - improper argument (ss2 is zero) */ uint Mod(const Big & ss2) { if( this == &ss2 ) { Big copy_ss2(ss2); return ModRef(copy_ss2); } else { return ModRef(ss2); } } /*! this method returns: 'this' mod 2 (either zero or one) this method is much faster than using Mod( object_with_value_two ) */ uint Mod2() const { if( exponent>sint(0) || exponent<=-sint(man*TTMATH_BITS_PER_UINT) ) return 0; sint exp_int = exponent.ToInt(); // 'exp_int' is negative (or zero), we set it as positive exp_int = -exp_int; return mantissa.GetBit(exp_int); } /*! power this = this ^ pow (pow without a sign) binary algorithm (r-to-l) return values: 0 - ok 1 - carry 2 - incorrect arguments (0^0) */ template uint Pow(UInt pow) { if( IsNan() ) return 1; if( IsZero() ) { if( pow.IsZero() ) { // we don't define zero^zero SetNan(); return 2; } // 0^(+something) is zero return 0; } Big start(*this); Big result; result.SetOne(); uint c = 0; while( !c ) { if( pow.table[0] & 1 ) c += result.Mul(start); pow.Rcr(1); if( pow.IsZero() ) break; c += start.Mul(start); } *this = result; return CheckCarry(c); } /*! power this = this ^ pow p can be negative return values: 0 - ok 1 - carry 2 - incorrect arguments 0^0 or 0^(-something) */ template uint Pow(Int pow) { if( IsNan() ) return 1; if( !pow.IsSign() ) return Pow( UInt(pow) ); if( IsZero() ) { // if 'p' is negative then // 'this' must be different from zero SetNan(); return 2; } uint c = pow.ChangeSign(); Big t(*this); c += t.Pow( UInt(pow) ); // here can only be a carry (return:1) SetOne(); c += Div(t); return CheckCarry(c); } /*! power this = this ^ abs([pow]) pow is treated as a value without a sign and without a fraction if pow has a sign then the method pow.Abs() is used if pow has a fraction the fraction is skipped (not used in calculation) return values: 0 - ok 1 - carry 2 - incorrect arguments (0^0) */ uint PowUInt(Big pow) { if( IsNan() || pow.IsNan() ) return CheckCarry(1); if( IsZero() ) { if( pow.IsZero() ) { SetNan(); return 2; } // 0^(+something) is zero return 0; } if( pow.IsSign() ) pow.Abs(); Big start(*this); Big result; Big one; uint c = 0; one.SetOne(); result = one; while( !c ) { if( pow.Mod2() ) c += result.Mul(start); c += pow.exponent.SubOne(); if( pow < one ) break; c += start.Mul(start); } *this = result; return CheckCarry(c); } /*! power this = this ^ [pow] pow is treated as a value without a fraction pow can be negative return values: 0 - ok 1 - carry 2 - incorrect arguments 0^0 or 0^(-something) */ uint PowInt(const Big & pow) { if( IsNan() || pow.IsNan() ) return CheckCarry(1); if( !pow.IsSign() ) return PowUInt(pow); if( IsZero() ) { // if 'pow' is negative then // 'this' must be different from zero SetNan(); return 2; } Big temp(*this); uint c = temp.PowUInt(pow); // here can only be a carry (result:1) SetOne(); c += Div(temp); return CheckCarry(c); } /*! power this = this ^ pow this must be greater than zero (this > 0) pow can be negative and with fraction return values: 0 - ok 1 - carry 2 - incorrect argument ('this' <= 0) */ uint PowFrac(const Big & pow) { if( IsNan() || pow.IsNan() ) return CheckCarry(1); Big temp; uint c = temp.Ln(*this); if( c != 0 ) // can be 2 from Ln() { SetNan(); return c; } c += temp.Mul(pow); c += Exp(temp); return CheckCarry(c); } /*! power this = this ^ pow pow can be negative and with fraction return values: 0 - ok 1 - carry 2 - incorrect argument ('this' or 'pow') */ uint Pow(const Big & pow) { if( IsNan() || pow.IsNan() ) return CheckCarry(1); if( IsZero() ) { // 0^pow will be 0 only for pow>0 if( pow.IsSign() || pow.IsZero() ) { SetNan(); return 2; } SetZero(); return 0; } if( pow.exponent>-sint(man*TTMATH_BITS_PER_UINT) && pow.exponent<=0 ) { if( pow.IsInteger() ) return PowInt( pow ); } return PowFrac(pow); } /*! this function calculates the square root e.g. let this=9 then this.Sqrt() gives 3 return: 0 - ok 1 - carry 2 - improper argument (this<0 or NaN) */ uint Sqrt() { if( IsNan() || IsSign() ) { SetNan(); return 2; } if( IsZero() ) return 0; Big old(*this); Big ln; uint c = 0; // we're using the formula: sqrt(x) = e ^ (ln(x) / 2) c += ln.Ln(*this); c += ln.exponent.SubOne(); // ln = ln / 2 c += Exp(ln); // above formula doesn't give accurate results for some integers // e.g. Sqrt(81) would not be 9 but a value very closed to 9 // we're rounding the result, calculating result*result and comparing // with the old value, if they are equal then the result is an integer too if( !c && old.IsInteger() && !IsInteger() ) { Big temp(*this); c += temp.Round(); Big temp2(temp); c += temp.Mul(temp2); if( temp == old ) *this = temp2; } return CheckCarry(c); } private: #ifdef TTMATH_CONSTANTSGENERATOR public: #endif /*! Exponent this = exp(x) = e^x where x is in (-1,1) we're using the formula exp(x) = 1 + (x)/(1!) + (x^2)/(2!) + (x^3)/(3!) + ... */ void ExpSurrounding0(const Big & x, uint * steps = 0) { TTMATH_REFERENCE_ASSERT( x ) Big denominator, denominator_i; Big one, old_value, next_part; Big numerator = x; SetOne(); one.SetOne(); denominator.SetOne(); denominator_i.SetOne(); uint i; old_value = *this; // we begin from 1 in order to not test at the beginning #ifdef TTMATH_CONSTANTSGENERATOR for(i=1 ; true ; ++i) #else for(i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) #endif { bool testing = ((i & 3) == 0); // it means '(i % 4) == 0' next_part = numerator; if( next_part.Div( denominator ) ) // if there is a carry here we only break the loop // however the result we return as good // it means there are too many parts of the formula break; // there shouldn't be a carry here Add( next_part ); if( testing ) { if( old_value == *this ) // we've added next few parts of the formula but the result // is still the same then we break the loop break; else old_value = *this; } // we set the denominator and the numerator for a next part of the formula if( denominator_i.Add(one) ) // if there is a carry here the result we return as good break; if( denominator.Mul(denominator_i) ) break; if( numerator.Mul(x) ) break; } if( steps ) *steps = i; } public: /*! Exponent this = exp(x) = e^x we're using the fact that our value is stored in form of: x = mantissa * 2^exponent then e^x = e^(mantissa* 2^exponent) or e^x = (e^mantissa)^(2^exponent) 'Exp' returns a carry if we can't count the result ('x' is too big) */ uint Exp(const Big & x) { uint c = 0; if( x.IsNan() ) return CheckCarry(1); if( x.IsZero() ) { SetOne(); return 0; } // m will be the value of the mantissa in range (-1,1) Big m(x); m.exponent = -sint(man*TTMATH_BITS_PER_UINT); // 'e_' will be the value of '2^exponent' // e_.mantissa.table[man-1] = TTMATH_UINT_HIGHEST_BIT; and // e_.exponent.Add(1) mean: // e_.mantissa.table[0] = 1; // e_.Standardizing(); // e_.exponent.Add(man*TTMATH_BITS_PER_UINT) // (we must add 'man*TTMATH_BITS_PER_UINT' because we've taken it from the mantissa) Big e_(x); e_.mantissa.SetZero(); e_.mantissa.table[man-1] = TTMATH_UINT_HIGHEST_BIT; c += e_.exponent.Add(1); e_.Abs(); /* now we've got: m - the value of the mantissa in range (-1,1) e_ - 2^exponent e_ can be as: ...2^-2, 2^-1, 2^0, 2^1, 2^2 ... ...1/4 , 1/2 , 1 , 2 , 4 ... above one e_ is integer if e_ is greater than 1 we calculate the exponent as: e^(m * e_) = ExpSurrounding0(m) ^ e_ and if e_ is smaller or equal one we calculate the exponent in this way: e^(m * e_) = ExpSurrounding0(m* e_) because if e_ is smaller or equal 1 then the product of m*e_ is smaller or equal m */ if( e_ <= 1 ) { m.Mul(e_); ExpSurrounding0(m); } else { ExpSurrounding0(m); c += PowUInt(e_); } return CheckCarry(c); } private: #ifdef TTMATH_CONSTANTSGENERATOR public: #endif /*! Natural logarithm this = ln(x) where x in range <1,2) we're using the formula: ln x = 2 * [ (x-1)/(x+1) + (1/3)((x-1)/(x+1))^3 + (1/5)((x-1)/(x+1))^5 + ... ] */ void LnSurrounding1(const Big & x, uint * steps = 0) { Big old_value, next_part, denominator, one, two, x1(x), x2(x); one.SetOne(); if( x == one ) { // LnSurrounding1(1) is 0 SetZero(); return; } two = 2; x1.Sub(one); x2.Add(one); x1.Div(x2); x2 = x1; x2.Mul(x1); denominator.SetOne(); SetZero(); old_value = *this; uint i; #ifdef TTMATH_CONSTANTSGENERATOR for(i=1 ; true ; ++i) #else // we begin from 1 in order to not test at the beginning for(i=1 ; i<=TTMATH_ARITHMETIC_MAX_LOOP ; ++i) #endif { bool testing = ((i & 3) == 0); // it means '(i % 4) == 0' next_part = x1; if( next_part.Div(denominator) ) // if there is a carry here we only break the loop // however the result we return as good // it means there are too many parts of the formula break; // there shouldn't be a carry here Add(next_part); if( testing ) { if( old_value == *this ) // we've added next (step_test) parts of the formula but the result // is still the same then we break the loop break; else old_value = *this; } if( x1.Mul(x2) ) // if there is a carry here the result we return as good break; if( denominator.Add(two) ) break; } // this = this * 2 // ( there can't be a carry here because we calculate the logarithm between <1,2) ) exponent.AddOne(); if( steps ) *steps = i; } public: /*! Natural logarithm this = ln(x) (a logarithm with the base equal 'e') we're using the fact that our value is stored in form of: x = mantissa * 2^exponent then ln(x) = ln (mantissa * 2^exponent) = ln (mantissa) + (exponent * ln (2)) the mantissa we'll show as a value from range <1,2) because the logarithm is decreasing too fast when 'x' is going to 0 return values: 0 - ok 1 - overflow (carry) 2 - incorrect argument (x<=0) */ uint Ln(const Big & x) { if( x.IsNan() ) return CheckCarry(1); if( x.IsSign() || x.IsZero() ) { SetNan(); return 2; } Big exponent_temp; exponent_temp.FromInt( x.exponent ); // m will be the value of the mantissa in range <1,2) Big m(x); m.exponent = -sint(man*TTMATH_BITS_PER_UINT - 1); // we must add 'man*TTMATH_BITS_PER_UINT-1' because we've taken it from the mantissa uint c = exponent_temp.Add(man*TTMATH_BITS_PER_UINT-1); LnSurrounding1(m); Big ln2; ln2.SetLn2(); c += exponent_temp.Mul(ln2); c += Add(exponent_temp); return CheckCarry(c); } /*! Logarithm from 'x' with a 'base' we're using the formula: Log(x) with 'base' = ln(x) / ln(base) return values: 0 - ok 1 - overflow 2 - incorrect argument (x<=0) 3 - incorrect base (a<=0 lub a=1) */ uint Log(const Big & x, const Big & base) { if( x.IsNan() || base.IsNan() ) return CheckCarry(1); if( x.IsSign() || x.IsZero() ) { SetNan(); return 2; } Big denominator;; denominator.SetOne(); if( base.IsSign() || base.IsZero() || base==denominator ) { SetNan(); return 3; } if( x == denominator ) // (this is: if x == 1) { // log(1) is 0 SetZero(); return 0; } // another error values we've tested at the beginning // there can only be a carry uint c = Ln(x); c += denominator.Ln(base); c += Div(denominator); return CheckCarry(c); } /*! * * converting methods * */ /*! converting from another type of a Big object */ template uint FromBig(const Big & another) { info = another.info; if( IsNan() ) return 1; if( exponent.FromInt(another.exponent) ) { SetNan(); return 1; } uint man_len_min = (man < another_man)? man : another_man; uint i; uint c = 0; for( i = 0 ; i another_man )' and 'if( man < another_man )' and there'll be no such situation here #ifdef _MSC_VER #pragma warning( disable: 4307 ) #endif if( man > another_man ) { uint man_diff = (man - another_man) * TTMATH_BITS_PER_UINT; c += exponent.SubInt(man_diff, 0); } else if( man < another_man ) { uint man_diff = (another_man - man) * TTMATH_BITS_PER_UINT; c += exponent.AddInt(man_diff, 0); } #ifdef _MSC_VER #pragma warning( default: 4307 ) #endif // mantissa doesn't have to be standardized (either the highest bit is set or all bits are equal zero) CorrectZero(); return CheckCarry(c); } private: /*! an auxiliary method for converting 'this' into 'result' if the value is too big this method returns a carry (1) */ uint ToUIntOrInt(uint & result) const { result = 0; if( IsZero() ) return 0; sint maxbit = -sint(man*TTMATH_BITS_PER_UINT); if( exponent > maxbit + sint(TTMATH_BITS_PER_UINT) ) // if exponent > (maxbit + sint(TTMATH_BITS_PER_UINT)) the value can't be passed // into the 'sint' type (it's too big) return 1; if( exponent <= maxbit ) // our value is from the range of (-1,1) and we return zero return 0; // exponent is from a range of (maxbit, maxbit + sint(TTMATH_BITS_PER_UINT) > // and [maxbit + sint(TTMATH_BITS_PER_UINT] <= 0 sint how_many_bits = exponent.ToInt(); // how_many_bits is negative, we'll make it positive how_many_bits = -how_many_bits; result = (mantissa.table[man-1] >> (how_many_bits % TTMATH_BITS_PER_UINT)); return 0; } public: /*! this method converts 'this' into uint */ uint ToUInt() const { uint result; ToUInt(result); return result; } /*! this method converts 'this' into 'result' if the value is too big this method returns a carry (1) */ uint ToUInt(uint & result) const { if( ToUIntOrInt(result) ) return 1; if( IsSign() ) return 1; return 0; } /*! this method converts 'this' into sint */ sint ToInt() const { sint result; ToInt(result); return result; } /*! this method converts 'this' into 'result' if the value is too big this method returns a carry (1) */ uint ToInt(uint & result) const { return ToUInt(result); } /*! this method converts 'this' into 'result' if the value is too big this method returns a carry (1) */ uint ToInt(sint & result) const { uint result_uint; uint c = ToUIntOrInt(result_uint); result = sint(result_uint); if( c ) return 1; uint mask = 0; if( IsSign() ) { mask = TTMATH_UINT_MAX_VALUE; result = -result; } return ((result & TTMATH_UINT_HIGHEST_BIT) == (mask & TTMATH_UINT_HIGHEST_BIT)) ? 0 : 1; } private: /*! an auxiliary method for converting 'this' into 'result' if the value is too big this method returns a carry (1) */ template uint ToUIntOrInt(UInt & result) const { result.SetZero(); if( IsZero() ) return 0; sint maxbit = -sint(man*TTMATH_BITS_PER_UINT); if( exponent > maxbit + sint(int_size*TTMATH_BITS_PER_UINT) ) // if exponent > (maxbit + sint(int_size*TTMATH_BITS_PER_UINT)) the value can't be passed // into the 'UInt' type (it's too big) return 1; if( exponent <= maxbit ) // our value is from range (-1,1) and we return zero return 0; sint how_many_bits = exponent.ToInt(); if( how_many_bits < 0 ) { how_many_bits = -how_many_bits; uint index = how_many_bits / TTMATH_BITS_PER_UINT; UInt mantissa_temp(mantissa); mantissa_temp.Rcr( how_many_bits % TTMATH_BITS_PER_UINT, 0 ); for(uint i=index, a=0 ; i maxbit + sint(int_size*TTMATH_BITS_PER_UINT) )" // but gcc doesn't understand our types - exponent is Int<> for(uint i=0 ; i uint ToUInt(UInt & result) const { uint c = ToUIntOrInt(result); if( c ) return 1; if( IsSign() ) return 1; return 0; } /*! this method converts 'this' into 'result' if the value is too big this method returns a carry (1) */ template uint ToInt(UInt & result) const { return ToUInt(result); } /*! this method converts 'this' into 'result' if the value is too big this method returns a carry (1) */ template uint ToInt(Int & result) const { uint c = ToUIntOrInt(result); if( c ) return 1; uint mask = 0; if( IsSign() ) { result.ChangeSign(); mask = TTMATH_UINT_MAX_VALUE; } return ((result.table[int_size-1] & TTMATH_UINT_HIGHEST_BIT) == (mask & TTMATH_UINT_HIGHEST_BIT))? 0 : 1; } /*! a method for converting 'uint' to this class */ uint FromUInt(uint value) { if( value == 0 ) { SetZero(); return 0; } info = 0; for(uint i=0 ; i> 20; uint m1 = ((temp.u[1] & 0xFFFFFu) << 11) | (temp.u[0] >> 21); uint m2 = temp.u[0] << 11; if( e == 2047 ) { // If E=2047 and F is nonzero, then V=NaN ("Not a number") // If E=2047 and F is zero and S is 1, then V=-Infinity // If E=2047 and F is zero and S is 0, then V=Infinity // we do not support -Infinity and +Infinity // we assume that there is always NaN SetNan(); } else if( e > 0 ) { // If 0 m; m.table[1] = m1; m.table[0] = m2; uint moved = m.CompensationToLeft(); FromDouble_SetExpAndMan((temp.u[1] & 0x80000000u) != 0, e - 1022 - man*TTMATH_BITS_PER_UINT + 1 - moved, 0, m.table[1], m.table[0]); } else { // If E=0 and F is zero and S is 1, then V=-0 // If E=0 and F is zero and S is 0, then V=0 // we do not support -0 or 0, only is one 0 SetZero(); } } return 0; // never be a carry } private: void FromDouble_SetExpAndMan(bool is_sign, int e, uint mhighest, uint m1, uint m2) { exponent = e; if( man > 1 ) { mantissa.table[man-1] = m1 | mhighest; mantissa.table[sint(man-2)] = m2; // although man>1 we're using casting into sint // to get rid from a warning which generates Microsoft Visual: // warning C4307: '*' : integral constant overflow for(uint i=0 ; i> 52; uint m = (temp.u & 0xFFFFFFFFFFFFFul) << 11; if( e == 2047 ) { // If E=2047 and F is nonzero, then V=NaN ("Not a number") // If E=2047 and F is zero and S is 1, then V=-Infinity // If E=2047 and F is zero and S is 0, then V=Infinity // we do not support -Infinity and +Infinity // we assume that there is always NaN SetNan(); } else if( e > 0 ) { // If 0> 23) & 0xff) == 0xff ) { if( (temp.u & 0x7FFFFF) == 0 ) return true; // +/- infinity } return false; } public: /*! this method converts from this class into the 'float' if the value is too big: 'result' will be +/-infinity (depending on the sign) if the value is too small: 'result' will be 0 */ float ToFloat() const { float result; ToFloat(result); return result; } /*! this method converts from this class into the 'float' if the value is too big: 'result' will be +/-infinity (depending on the sign) and the method returns 1 if the value is too small: 'result' will be 0 and the method returns 1 */ uint ToFloat(float & result) const { double result_double; uint c = ToDouble(result_double); result = float(result_double); if( result == -0.0f ) result = 0.0f; if( c ) return 1; // although the result_double can have a correct value // but after converting to float there can be infinity if( IsInf(result) ) return 1; if( result == 0.0f && result_double != 0.0 ) // result_double was too small for float return 1; return 0; } /*! this method converts from this class into the 'double' if the value is too big: 'result' will be +/-infinity (depending on the sign) and the method returns 1 if the value is too small: 'result' will be 0 and the method returns 1 */ uint ToDouble(double & result) const { if( IsZero() ) { result = 0.0; return 0; } if( IsNan() ) { result = ToDouble_SetDouble( false, 2047, 0, false, true); return 0; } sint e_correction = sint(man*TTMATH_BITS_PER_UINT) - 1; if( exponent >= 1024 - e_correction ) { // +/- infinity result = ToDouble_SetDouble( IsSign(), 2047, 0, true); return 1; } else if( exponent <= -1023 - 52 - e_correction ) { // too small value - we assume that there'll be a zero result = 0; // and return a carry return 1; } sint e = exponent.ToInt() + e_correction; if( e <= -1023 ) { // -1023-52 < e <= -1023 (unnormalized value) result = ToDouble_SetDouble( IsSign(), 0, -(e + 1023)); } else { // -1023 < e < 1024 result = ToDouble_SetDouble( IsSign(), e + 1023, -1); } return 0; } private: #ifdef TTMATH_PLATFORM32 // 32bit platforms double ToDouble_SetDouble(bool is_sign, uint e, sint move, bool infinity = false, bool nan = false) const { union { double d; uint u[2]; // two 32bit words } temp; temp.u[0] = temp.u[1] = 0; if( is_sign ) temp.u[1] |= 0x80000000u; temp.u[1] |= (e << 20) & 0x7FF00000u; if( nan ) { temp.u[0] |= 1; return temp.d; } if( infinity ) return temp.d; UInt<2> m; m.table[1] = mantissa.table[man-1]; m.table[0] = ( man > 1 ) ? mantissa.table[sint(man-2)] : 0; // although man>1 we're using casting into sint // to get rid from a warning which generates Microsoft Visual: // warning C4307: '*' : integral constant overflow m.Rcr( 12 + move ); m.table[1] &= 0xFFFFFu; // cutting the 20 bit (when 'move' was -1) temp.u[1] |= m.table[1]; temp.u[0] |= m.table[0]; return temp.d; } #else // 64bit platforms double ToDouble_SetDouble(bool is_sign, uint e, sint move, bool infinity = false, bool nan = false) const { union { double d; uint u; // 64bit word } temp; temp.u = 0; if( is_sign ) temp.u |= 0x8000000000000000ul; temp.u |= (e << 52) & 0x7FF0000000000000ul; if( nan ) { temp.u |= 1; return temp.d; } if( infinity ) return temp.d; uint m = mantissa.table[man-1]; m >>= ( 12 + move ); m &= 0xFFFFFFFFFFFFFul; // cutting the 20 bit (when 'move' was -1) temp.u |= m; return temp.d; } #endif public: /*! an operator= for converting 'sint' to this class */ Big & operator=(sint value) { FromInt(value); return *this; } /*! an operator= for converting 'uint' to this class */ Big & operator=(uint value) { FromUInt(value); return *this; } /*! an operator= for converting 'float' to this class */ Big & operator=(float value) { FromFloat(value); return *this; } /*! an operator= for converting 'double' to this class */ Big & operator=(double value) { FromDouble(value); return *this; } /*! a constructor for converting 'sint' to this class */ Big(sint value) { FromInt(value); } /*! a constructor for converting 'uint' to this class */ Big(uint value) { FromUInt(value); } /*! a constructor for converting 'double' to this class */ Big(double value) { FromDouble(value); } /*! a constructor for converting 'float' to this class */ Big(float value) { FromFloat(value); } #ifdef TTMATH_PLATFORM32 /*! this method converts 'this' into 'result' (64 bit unsigned integer) if the value is too big this method returns a carry (1) */ uint ToUInt(ulint & result) const { UInt<2> temp; // 64 bits container uint c = ToUInt(temp); temp.ToUInt(result); return c; } /*! this method converts 'this' into 'result' (64 bit unsigned integer) if the value is too big this method returns a carry (1) */ uint ToInt(ulint & result) const { return ToUInt(result); } /*! this method converts 'this' into 'result' (64 bit unsigned integer) if the value is too big this method returns a carry (1) */ uint ToInt(slint & result) const { Int<2> temp; // 64 bits container uint c = ToInt(temp); temp.ToInt(result); return c; } /*! a method for converting 'ulint' (64bit unsigned integer) to this class */ uint FromUInt(ulint value) { if( value == 0 ) { SetZero(); return 0; } info = 0; if( man == 1 ) { sint bit = mantissa.FindLeadingBitInWord(uint(value >> TTMATH_BITS_PER_UINT)); if( bit != -1 ) { // the highest word from value is different from zero bit += 1; value >>= bit; exponent = bit; } else { exponent.SetZero(); } mantissa.table[0] = uint(value); } else { #ifdef _MSC_VER //warning C4307: '*' : integral constant overflow #pragma warning( disable: 4307 ) #endif // man >= 2 mantissa.table[man-1] = uint(value >> TTMATH_BITS_PER_UINT); mantissa.table[man-2] = uint(value); #ifdef _MSC_VER //warning C4307: '*' : integral constant overflow #pragma warning( default: 4307 ) #endif exponent = -sint(man-2) * sint(TTMATH_BITS_PER_UINT); for(uint i=0 ; i & operator=(ulint value) { FromUInt(value); return *this; } /*! a constructor for converting 'slint' (64bit signed integer) to this class */ Big(slint value) { FromInt(value); } /*! an operator for converting 'slint' (64bit signed integer) to this class */ Big & operator=(slint value) { FromInt(value); return *this; } #endif #ifdef TTMATH_PLATFORM64 /*! this method converts 'this' into 'result' (32 bit unsigned integer) ***this method is created only on a 64bit platform*** if the value is too big this method returns a carry (1) */ uint ToUInt(unsigned int & result) const { uint result_uint; uint c = ToUInt(result_uint); result = (unsigned int)result_uint; if( c || result_uint != uint(result) ) return 1; return 0; } /*! this method converts 'this' into 'result' (32 bit unsigned integer) ***this method is created only on a 64bit platform*** if the value is too big this method returns a carry (1) */ uint ToInt(unsigned int & result) const { return ToUInt(result); } /*! this method converts 'this' into 'result' (32 bit signed integer) ***this method is created only on a 64bit platform*** if the value is too big this method returns a carry (1) */ uint ToInt(signed int & result) const { sint result_sint; uint c = ToInt(result_sint); result = (signed int)result_sint; if( c || result_sint != sint(result) ) return 1; return 0; } /* this method converts 32 bit unsigned int to this class ***this method is created only on a 64bit platform*** */ uint FromUInt(unsigned int value) { return FromUInt(uint(value)); } /* this method converts 32 bit unsigned int to this class ***this method is created only on a 64bit platform*** */ uint FromInt(unsigned int value) { return FromUInt(uint(value)); } /* this method converts 32 bit signed int to this class ***this method is created only on a 64bit platform*** */ uint FromInt(signed int value) { return FromInt(sint(value)); } /*! an operator= for converting 32 bit unsigned int to this class ***this operator is created only on a 64bit platform*** */ Big & operator=(unsigned int value) { FromUInt(value); return *this; } /*! a constructor for converting 32 bit unsigned int to this class ***this constructor is created only on a 64bit platform*** */ Big(unsigned int value) { FromUInt(value); } /*! an operator for converting 32 bit signed int to this class ***this operator is created only on a 64bit platform*** */ Big & operator=(signed int value) { FromInt(value); return *this; } /*! a constructor for converting 32 bit signed int to this class ***this constructor is created only on a 64bit platform*** */ Big(signed int value) { FromInt(value); } #endif private: /*! an auxiliary method for converting from UInt and Int we assume that there'll never be a carry here (we have an exponent and the value in Big can be bigger than that one from the UInt) */ template uint FromUIntOrInt(const UInt & value, sint compensation) { uint minimum_size = (int_size < man)? int_size : man; exponent = (sint(int_size)-sint(man)) * sint(TTMATH_BITS_PER_UINT) - compensation; // copying the highest words uint i; for(i=1 ; i<=minimum_size ; ++i) mantissa.table[man-i] = value.table[int_size-i]; // setting the rest of mantissa.table into zero (if some has left) for( ; i<=man ; ++i) mantissa.table[man-i] = 0; // the highest bit is either one or zero (when the whole mantissa is zero) // we can only call CorrectZero() CorrectZero(); return 0; } public: /*! a method for converting from 'UInt' to this class */ template uint FromUInt(UInt value) { info = 0; sint compensation = (sint)value.CompensationToLeft(); return FromUIntOrInt(value, compensation); } /*! a method for converting from 'UInt' to this class */ template uint FromInt(const UInt & value) { return FromUInt(value); } /*! a method for converting from 'Int' to this class */ template uint FromInt(Int value) { info = 0; bool is_sign = false; if( value.IsSign() ) { value.ChangeSign(); is_sign = true; } sint compensation = (sint)value.CompensationToLeft(); FromUIntOrInt(value, compensation); if( is_sign ) SetSign(); return 0; } /*! an operator= for converting from 'Int' to this class */ template Big & operator=(const Int & value) { FromInt(value); return *this; } /*! a constructor for converting from 'Int' to this class */ template Big(const Int & value) { FromInt(value); } /*! an operator= for converting from 'UInt' to this class */ template Big & operator=(const UInt & value) { FromUInt(value); return *this; } /*! a constructor for converting from 'UInt' to this class */ template Big(const UInt & value) { FromUInt(value); } /*! an operator= for converting from 'Big' to this class */ template Big & operator=(const Big & value) { FromBig(value); return *this; } /*! a constructor for converting from 'Big' to this class */ template Big(const Big & value) { FromBig(value); } /*! a default constructor by default we don't set any of the members to zero only NaN flag is set if you want the mantissa and exponent to be set to zero define TTMATH_BIG_DEFAULT_CLEAR macro (useful for debug purposes) */ Big() { #ifdef TTMATH_BIG_DEFAULT_CLEAR SetZeroNan(); #else info = TTMATH_BIG_NAN; // we're directly setting 'info' (instead of calling SetNan()) // in order to get rid of a warning saying that 'info' is uninitialized #endif } /*! a destructor */ ~Big() { } /*! the default assignment operator */ Big & operator=(const Big & value) { info = value.info; exponent = value.exponent; mantissa = value.mantissa; return *this; } /*! a constructor for copying from another object of this class */ Big(const Big & value) { operator=(value); } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters output: return value: 0 - ok and 'result' will be an object of type std::string (or std::wstring) which holds the value 1 - if there is a carry (it shoudn't be in a normal situation - if it is that means there is somewhere an error in the library) */ uint ToString( std::string & result, uint base = 10, bool scient = false, sint scient_from = 15, sint round = -1, bool trim_zeroes = true, char comma = '.' ) const { Conv conv; conv.base = base; conv.scient = scient; conv.scient_from = scient_from; conv.round = round; conv.trim_zeroes = trim_zeroes; conv.comma = static_cast(comma); return ToStringBase(result, conv); } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ uint ToString(std::string & result, const Conv & conv) const { return ToStringBase(result, conv); } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ std::string ToString(const Conv & conv) const { std::string result; ToStringBase(result, conv); return result; } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ std::string ToString(uint base = 10) const { Conv conv; conv.base = base; return ToString(conv); } #ifndef TTMATH_DONT_USE_WCHAR /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ uint ToString( std::wstring & result, uint base = 10, bool scient = false, sint scient_from = 15, sint round = -1, bool trim_zeroes = true, wchar_t comma = '.' ) const { Conv conv; conv.base = base; conv.scient = scient; conv.scient_from = scient_from; conv.round = round; conv.trim_zeroes = trim_zeroes; conv.comma = static_cast(comma); return ToStringBase(result, conv); } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ uint ToString(std::wstring & result, const Conv & conv) const { return ToStringBase(result, conv); } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ std::wstring ToWString(const Conv & conv) const { std::wstring result; ToStringBase(result, conv); return result; } /*! a method for converting into a string struct Conv is defined in ttmathtypes.h, look there for more information about parameters */ std::wstring ToWString(uint base = 10) const { Conv conv; conv.base = base; return ToWString(conv); } #endif private: /*! an auxiliary method for converting into the string */ template uint ToStringBase(string_type & result, const Conv & conv) const { static char error_overflow_msg[] = "overflow"; static char error_nan_msg[] = "NaN"; result.erase(); if( IsNan() ) { Misc::AssignString(result, error_nan_msg); return 0; } if( conv.base<2 || conv.base>16 ) { Misc::AssignString(result, error_overflow_msg); return 1; } if( IsZero() ) { result = '0'; return 0; } /* since 'base' is greater or equal 2 that 'new_exp' of type 'Int' should hold the new value of exponent but we're using 'Int' because if the value for example would be 'max()' then we couldn't show it max() -> 11111111 * 2 ^ 11111111111 (bin)(the mantissa and exponent have all bits set) if we were using 'Int' we couldn't show it in this format: 1,1111111 * 2 ^ 11111111111 (bin) because we have to add something to the mantissa and because mantissa is full we can't do it and it'll be a carry (look at ToString_SetCommaAndExponent(...)) when the base would be greater than two (for example 10) we could use 'Int' here */ Int new_exp; if( ToString_CreateNewMantissaAndExponent(result, conv, new_exp) ) { Misc::AssignString(result, error_overflow_msg); return 1; } if( ToString_SetCommaAndExponent(result, conv, new_exp) ) { Misc::AssignString(result, error_overflow_msg); return 1; } if( IsSign() ) result.insert(result.begin(), '-'); // converted successfully return 0; } /*! in the method 'ToString_CreateNewMantissaAndExponent()' we're using type 'Big' and we should have the ability to use some necessary methods from that class (methods which are private here) */ friend class Big; /*! an auxiliary method for converting into the string input: base - the base in range <2,16> output: return values: 0 - ok 1 - if there was a carry new_man - the new mantissa for 'base' new_exp - the new exponent for 'base' mathematic part: the value is stored as: value = mantissa * 2^exponent we want to show 'value' as: value = new_man * base^new_exp then 'new_man' we'll print using the standard method from UInt<> type for printing and 'new_exp' is the offset of the comma operator in a system of a base 'base' value = mantissa * 2^exponent value = mantissa * 2^exponent * (base^new_exp / base^new_exp) value = mantissa * (2^exponent / base^new_exp) * base^new_exp look at the part (2^exponent / base^new_exp), there'll be good if we take a 'new_exp' equal that value when the (2^exponent / base^new_exp) will be equal one on account of the 'base' is not as power of 2 (can be from 2 to 16), this formula will not be true for integer 'new_exp' then in our case we take 'base^new_exp' _greater_ than '2^exponent' if 'base^new_exp' were smaller than '2^exponent' the new mantissa could be greater than the max value of the container UInt value = mantissa * (2^exponent / base^new_exp) * base^new_exp let M = mantissa * (2^exponent / base^new_exp) then value = M * base^new_exp in our calculation we treat M as floating value showing it as: M = mm * 2^ee where ee will be <= 0 next we'll move all bits of mm into the right when ee is equal zero abs(ee) must not be too big that only few bits from mm we can leave then we'll have: M = mmm * 2^0 'mmm' is the new_man which we're looking for new_exp we calculate in this way: 2^exponent <= base^new_exp new_exp >= log base (2^exponent) <- logarithm with the base 'base' from (2^exponent) but we need new_exp as integer then we test: if new_exp is greater than zero and with fraction we add one to new_exp new_exp = new_exp + 1 (if new_exp>0 and with fraction) and at the end we take the integer part: new_exp = int(new_exp) */ template uint ToString_CreateNewMantissaAndExponent( string_type & new_man, const Conv & conv, Int & new_exp) const { uint c = 0; if( conv.base<2 || conv.base>16 ) return 1; // special method for base equal 2 if( conv.base == 2 ) return ToString_CreateNewMantissaAndExponent_Base2(new_man, new_exp); // special method for base equal 4 if( conv.base == 4 ) return ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 2); // special method for base equal 8 if( conv.base == 8 ) return ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 3); // special method for base equal 16 if( conv.base == 16 ) return ToString_CreateNewMantissaAndExponent_BasePow2(new_man, new_exp, 4); // this = mantissa * 2^exponent // temp = +1 * 2^exponent // we're using a bigger type than 'big' (look below) Big temp; temp.info = 0; temp.exponent = exponent; temp.mantissa.SetOne(); c += temp.Standardizing(); // new_exp_ = log base (2^exponent) // if new_exp_ is positive and with fraction then we add one Big new_exp_; c += new_exp_.ToString_Log(temp, conv.base); // this logarithm isn't very complicated // rounding up to the nearest integer if( !new_exp_.IsInteger() ) { if( !new_exp_.IsSign() ) c += new_exp_.AddOne(); // new_exp_ > 0 and with fraction new_exp_.SkipFraction(); } if( ToString_CreateNewMantissaTryExponent(new_man, conv, new_exp_, new_exp) ) { // in very rare cases there can be an overflow from ToString_CreateNewMantissaTryExponent // it means that new_exp_ was too small (the problem comes from floating point numbers precision) // so we increse new_exp_ and try again new_exp_.AddOne(); c += ToString_CreateNewMantissaTryExponent(new_man, conv, new_exp_, new_exp); } return (c==0)? 0 : 1; } /*! an auxiliary method for converting into the string trying to calculate new_man for given exponent (new_exp_) if there is a carry it can mean that new_exp_ is too small */ template uint ToString_CreateNewMantissaTryExponent( string_type & new_man, const Conv & conv, const Big & new_exp_, Int & new_exp) const { uint c = 0; // because 'base^new_exp' is >= '2^exponent' then // because base is >= 2 then we've got: // 'new_exp_' must be smaller or equal 'new_exp' // and we can pass it into the Int type // (in fact we're using a greater type then it'll be ok) c += new_exp_.ToInt(new_exp); // base_ = base Big base_(conv.base); // base_ = base_ ^ new_exp_ c += base_.Pow( new_exp_ ); // use new_exp_ so Pow(Big<> &) version will be used // if we hadn't used a bigger type than 'Big' then the result // of this formula 'Pow(...)' would have been with an overflow // temp = mantissa * 2^exponent / base_^new_exp_ Big temp; temp.info = 0; temp.mantissa = mantissa; temp.exponent = exponent; c += temp.Div(base_); // moving all bits of the mantissa into the right // (how many times to move depend on the exponent) c += temp.ToString_MoveMantissaIntoRight(); // because we took 'new_exp' as small as it was // possible ([log base (2^exponent)] + 1) that after the division // (temp.Div( base_ )) the value of exponent should be equal zero or // minimum smaller than zero then we've got the mantissa which has // maximum valid bits temp.mantissa.ToString(new_man, conv.base); if( IsInteger() ) { // making sure the new mantissa will be without fraction (integer) ToString_CheckMantissaInteger(new_man, new_exp); } else if( conv.base_round ) { c += ToString_BaseRound(new_man, conv, new_exp); } return (c==0)? 0 : 1; } /*! this method calculates the logarithm it is used by ToString_CreateNewMantissaAndExponent() method it's not too complicated because x=+1*2^exponent (mantissa is one) then during the calculation the Ln(x) will not be making the long formula from LnSurrounding1() and only we have to calculate 'Ln(base)' but it'll be calculated only once, the next time we will get it from the 'history' x is greater than 0 base is in <2,16> range */ uint ToString_Log(const Big & x, uint base) { TTMATH_REFERENCE_ASSERT( x ) TTMATH_ASSERT( base>=2 && base<=16 ) Big temp; temp.SetOne(); if( x == temp ) { // log(1) is 0 SetZero(); return 0; } // there can be only a carry // because the 'x' is in '1+2*exponent' form then // the long formula from LnSurrounding1() will not be calculated // (LnSurrounding1() will return one immediately) uint c = Ln(x); if( base==10 && man<=TTMATH_BUILTIN_VARIABLES_SIZE ) { // for the base equal 10 we're using SetLn10() instead of calculating it // (only if we have the constant sufficient big) temp.SetLn10(); } else { c += ToString_LogBase(base, temp); } c += Div( temp ); return (c==0)? 0 : 1; } #ifndef TTMATH_MULTITHREADS /*! this method calculates the logarithm of 'base' it's used in single thread environment */ uint ToString_LogBase(uint base, Big & result) { TTMATH_ASSERT( base>=2 && base<=16 ) // this guardians are initialized before the program runs (static POD types) static int guardians[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; static Big log_history[15]; uint index = base - 2; uint c = 0; if( guardians[index] == 0 ) { Big base_(base); c += log_history[index].Ln(base_); guardians[index] = 1; } result = log_history[index]; return (c==0)? 0 : 1; } #else /*! this method calculates the logarithm of 'base' it's used in multi-thread environment */ uint ToString_LogBase(uint base, Big & result) { TTMATH_ASSERT( base>=2 && base<=16 ) // this guardians are initialized before the program runs (static POD types) volatile static sig_atomic_t guardians[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; static Big * plog_history; uint index = base - 2; uint c = 0; // double-checked locking if( guardians[index] == 0 ) { ThreadLock thread_lock; // locking if( thread_lock.Lock() ) { static Big log_history[15]; if( guardians[index] == 0 ) { plog_history = log_history; Big base_(base); c += log_history[index].Ln(base_); guardians[index] = 1; } } else { // there was a problem with locking, we store the result directly in 'result' object Big base_(base); c += result.Ln(base_); return (c==0)? 0 : 1; } // automatically unlocking } result = plog_history[index]; return (c==0)? 0 : 1; } #endif /*! an auxiliary method for converting into the string (private) this method moving all bits from mantissa into the right side the exponent tell us how many times moving (the exponent is <=0) */ uint ToString_MoveMantissaIntoRight() { if( exponent.IsZero() ) return 0; // exponent can't be greater than zero // because we would cat the highest bits of the mantissa if( !exponent.IsSign() ) return 1; if( exponent <= -sint(man*TTMATH_BITS_PER_UINT) ) // if 'exponent' is <= than '-sint(man*TTMATH_BITS_PER_UINT)' // it means that we must cut the whole mantissa // (there'll not be any of the valid bits) return 1; // e will be from (-man*TTMATH_BITS_PER_UINT, 0> sint e = -( exponent.ToInt() ); mantissa.Rcr(e,0); return 0; } /*! a special method similar to the 'ToString_CreateNewMantissaAndExponent' when the 'base' is equal 2 we use it because if base is equal 2 we don't have to make those complicated calculations and the output is directly from the source (there will not be any small distortions) */ template uint ToString_CreateNewMantissaAndExponent_Base2( string_type & new_man, Int & new_exp ) const { for( sint i=man-1 ; i>=0 ; --i ) { uint value = mantissa.table[i]; for( uint bit=0 ; bit uint ToString_CreateNewMantissaAndExponent_BasePow2( string_type & new_man, Int & new_exp, uint bits) const { sint move; // how many times move the mantissa UInt man_temp(mantissa); // man+1 for moving new_exp = exponent; new_exp.DivInt((sint)bits, move); if( move != 0 ) { // we're moving the man_temp to left-hand side if( move < 0 ) { move = sint(bits) + move; new_exp.SubOne(); // when move is < than 0 then new_exp is < 0 too } man_temp.Rcl(move); } if( bits == 3 ) { // base 8 // now 'move' is greater than or equal 0 uint len = man*TTMATH_BITS_PER_UINT + move; return ToString_CreateNewMantissaAndExponent_Base8(new_man, man_temp, len, bits); } else { // base 4 or 16 return ToString_CreateNewMantissaAndExponent_Base4or16(new_man, man_temp, bits); } } /*! a special method used to calculate the new mantissa when the 'base' is equal 8 bits is always 3 we can use this algorithm when the base is 4 or 16 too but we have a faster method ToString_CreateNewMantissaAndExponent_Base4or16() */ template uint ToString_CreateNewMantissaAndExponent_Base8( string_type & new_man, UInt & man_temp, uint len, uint bits) const { uint shift = TTMATH_BITS_PER_UINT - bits; uint mask = TTMATH_UINT_MAX_VALUE >> shift; uint i; for( i=0 ; i(Misc::DigitToChar(digit))); man_temp.Rcr(bits); } TTMATH_ASSERT( man_temp.IsZero() ) return 0; } /*! a special method used to calculate the new mantissa when the 'base' is equal 4 or 16 when the base is equal 4 or 16 the bits is 2 or 4 and because TTMATH_BITS_PER_UINT (32 or 64) is divisible by 2 (or 4) then we can get digits from the end of our mantissa */ template uint ToString_CreateNewMantissaAndExponent_Base4or16( string_type & new_man, UInt & man_temp, uint bits) const { TTMATH_ASSERT( TTMATH_BITS_PER_UINT % 2 == 0 ) TTMATH_ASSERT( TTMATH_BITS_PER_UINT % 4 == 0 ) uint shift = TTMATH_BITS_PER_UINT - bits; uint mask = TTMATH_UINT_MAX_VALUE << shift; uint digit; // table[man] - last word - is different from zero if we moved man_temp digit = man_temp.table[man]; if( digit != 0 ) new_man += static_cast(Misc::DigitToChar(digit)); for( int i=man-1 ; i>=0 ; --i ) { uint shift_local = shift; uint mask_local = mask; while( mask_local != 0 ) { digit = man_temp.table[i] & mask_local; if( shift_local != 0 ) digit = digit >> shift_local; new_man += static_cast(Misc::DigitToChar(digit)); mask_local = mask_local >> bits; shift_local = shift_local - bits; } } return 0; } /*! an auxiliary method for converting into the string */ template bool ToString_RoundMantissaWouldBeInteger(string_type & new_man, const Conv & conv, Int & new_exp) const { // if new_exp is greater or equal to zero then we have an integer value, // if new_exp is equal -1 then we have only one digit after the comma // and after rounding it would be an integer value if( !new_exp.IsSign() || new_exp == -1 ) return true; if( new_man.size() >= TTMATH_UINT_HIGHEST_BIT || new_man.size() < 2 ) return true; // oops, the mantissa is too large for calculating (or too small) - we are not doing the base rounding uint i = 0; char_type digit; if( new_exp >= -sint(new_man.size()) ) { uint new_exp_abs = -new_exp.ToInt(); i = new_man.size() - new_exp_abs; // start from the first digit after the comma operator } if( Misc::CharToDigit(new_man[new_man.size()-1]) >= conv.base/2 ) { if( new_exp < -sint(new_man.size()) ) { // there are some zeroes after the comma operator // (between the comma and the first digit from the mantissa) // and the result value will never be an integer return false; } digit = static_cast( Misc::DigitToChar(conv.base-1) ); } else { digit = '0'; } for( ; i < new_man.size()-1 ; ++i) if( new_man[i] != digit ) return false; // it will not be an integer return true; // it will be integer after rounding } /*! an auxiliary method for converting into the string (when this is integer) after floating point calculating the new mantissa can consist of some fraction so if our value is integer we should check the new mantissa (after the decimal point there should be only zeroes) often this is a last digit different from zero ToString_BaseRound would not get rid of it because the method make a test against an integer value (ToString_RoundMantissaWouldBeInteger) and returns immediately */ template void ToString_CheckMantissaInteger(string_type & new_man, const Int & new_exp) const { if( !new_exp.IsSign() ) return; // return if new_exp >= 0 uint i = 0; uint man_size = new_man.size(); if( man_size >= TTMATH_UINT_HIGHEST_BIT ) return; // ops, the mantissa is too long sint sman_size = -sint(man_size); if( new_exp >= sman_size ) { sint e = new_exp.ToInt(); e = -e; // now e means how many last digits from the mantissa should be equal zero i = man_size - uint(e); } for( ; i uint ToString_BaseRound(string_type & new_man, const Conv & conv, Int & new_exp) const { // we must have minimum two characters if( new_man.size() < 2 ) return 0; // assert that there will not be an integer after rounding if( ToString_RoundMantissaWouldBeInteger(new_man, conv, new_exp) ) return 0; typename string_type::size_type i = new_man.length() - 1; // we're erasing the last character uint digit = Misc::CharToDigit( new_man[i] ); new_man.erase(i, 1); uint c = new_exp.AddOne(); // if the last character is greater or equal 'base/2' // we are adding one into the new mantissa if( digit >= conv.base / 2 ) ToString_RoundMantissa_AddOneIntoMantissa(new_man, conv); return c; } /*! an auxiliary method for converting into the string this method addes one into the new mantissa */ template void ToString_RoundMantissa_AddOneIntoMantissa(string_type & new_man, const Conv & conv) const { if( new_man.empty() ) return; sint i = sint( new_man.length() ) - 1; bool was_carry = true; for( ; i>=0 && was_carry ; --i ) { // we can have the comma as well because // we're using this method later in ToString_CorrectDigitsAfterComma_Round() // (we're only ignoring it) if( new_man[i] == static_cast(conv.comma) ) continue; // we're adding one uint digit = Misc::CharToDigit( new_man[i] ) + 1; if( digit == conv.base ) digit = 0; else was_carry = false; new_man[i] = static_cast( Misc::DigitToChar(digit) ); } if( i<0 && was_carry ) new_man.insert( new_man.begin() , '1' ); } /*! an auxiliary method for converting into the string this method sets the comma operator and/or puts the exponent into the string */ template uint ToString_SetCommaAndExponent(string_type & new_man, const Conv & conv, Int & new_exp) const { uint carry = 0; if( new_man.empty() ) return carry; Int scientific_exp( new_exp ); // 'new_exp' depends on the 'new_man' which is stored like this e.g: // 32342343234 (the comma is at the end) // we'd like to show it in this way: // 3.2342343234 (the 'scientific_exp' is connected with this example) sint offset = sint( new_man.length() ) - 1; carry += scientific_exp.Add( offset ); // there shouldn't have been a carry because we're using // a greater type -- 'Int' instead of 'Int' bool print_scientific = conv.scient; if( !print_scientific ) { if( scientific_exp > conv.scient_from || scientific_exp < -sint(conv.scient_from) ) print_scientific = true; } if( !print_scientific ) ToString_SetCommaAndExponent_Normal(new_man, conv, new_exp); else // we're passing the 'scientific_exp' instead of 'new_exp' here ToString_SetCommaAndExponent_Scientific(new_man, conv, scientific_exp); return (carry==0)? 0 : 1; } /*! an auxiliary method for converting into the string */ template void ToString_SetCommaAndExponent_Normal(string_type & new_man, const Conv & conv, Int & new_exp ) const { if( !new_exp.IsSign() ) // it means: if( new_exp >= 0 ) ToString_SetCommaAndExponent_Normal_AddingZero(new_man, new_exp); else ToString_SetCommaAndExponent_Normal_SetCommaInside(new_man, conv, new_exp); ToString_Group_man(new_man, conv); } /*! an auxiliary method for converting into the string */ template void ToString_SetCommaAndExponent_Normal_AddingZero(string_type & new_man, Int & new_exp) const { // we're adding zero characters at the end // 'i' will be smaller than 'when_scientific' (or equal) uint i = new_exp.ToInt(); if( new_man.length() + i > new_man.capacity() ) // about 6 characters more (we'll need it for the comma or something) new_man.reserve( new_man.length() + i + 6 ); for( ; i>0 ; --i) new_man += '0'; } /*! an auxiliary method for converting into the string */ template void ToString_SetCommaAndExponent_Normal_SetCommaInside( string_type & new_man, const Conv & conv, Int & new_exp ) const { // new_exp is < 0 sint new_man_len = sint(new_man.length()); // 'new_man_len' with a sign sint e = -( new_exp.ToInt() ); // 'e' will be positive if( new_exp > -new_man_len ) { // we're setting the comma within the mantissa sint index = new_man_len - e; new_man.insert( new_man.begin() + index, static_cast(conv.comma)); } else { // we're adding zero characters before the mantissa uint how_many = e - new_man_len; string_type man_temp(how_many+1, '0'); man_temp.insert( man_temp.begin()+1, static_cast(conv.comma)); new_man.insert(0, man_temp); } ToString_CorrectDigitsAfterComma(new_man, conv); } /*! an auxiliary method for converting into the string */ template void ToString_SetCommaAndExponent_Scientific( string_type & new_man, const Conv & conv, Int & scientific_exp ) const { if( new_man.empty() ) return; if( new_man.size() > 1 ) { new_man.insert( new_man.begin()+1, static_cast(conv.comma) ); ToString_CorrectDigitsAfterComma(new_man, conv); } ToString_Group_man(new_man, conv); if( conv.base == 10 ) { new_man += 'e'; if( !scientific_exp.IsSign() ) new_man += '+'; } else { // the 10 here is meant as the base 'base' // (no matter which 'base' we're using there'll always be 10 here) Misc::AddString(new_man, "*10^"); } string_type temp_exp; scientific_exp.ToString( temp_exp, conv.base ); new_man += temp_exp; } /*! an auxiliary method for converting into the string */ template void ToString_Group_man(string_type & new_man, const Conv & conv) const { typedef typename string_type::size_type StrSize; if( conv.group == 0 ) return; // first we're looking for the comma operator StrSize index = new_man.find(static_cast(conv.comma), 0); if( index == string_type::npos ) index = new_man.size(); ToString_Group_man_before_comma(new_man, conv, index); ToString_Group_man_after_comma(new_man, conv, index+1); } /*! an auxiliary method for converting into the string */ template void ToString_Group_man_before_comma( string_type & new_man, const Conv & conv, typename string_type::size_type & index) const { typedef typename string_type::size_type StrSize; uint group = 0; StrSize i = index; uint group_digits = conv.group_digits; if( group_digits < 1 ) group_digits = 1; // adding group characters before the comma operator // i>0 because on the first position we don't put any additional grouping characters for( ; i>0 ; --i, ++group) { if( group >= group_digits ) { group = 0; new_man.insert(i, 1, static_cast(conv.group)); ++index; } } } /*! an auxiliary method for converting into the string */ template void ToString_Group_man_after_comma(string_type & new_man, const Conv & conv, typename string_type::size_type index) const { uint group = 0; uint group_digits = conv.group_digits; if( group_digits < 1 ) group_digits = 1; for( ; index= group_digits ) { group = 0; new_man.insert(index, 1, static_cast(conv.group)); ++index; } } } /*! an auxiliary method for converting into the string */ template void ToString_CorrectDigitsAfterComma( string_type & new_man, const Conv & conv ) const { if( conv.round >= 0 ) ToString_CorrectDigitsAfterComma_Round(new_man, conv); if( conv.trim_zeroes ) ToString_CorrectDigitsAfterComma_CutOffZeroCharacters(new_man, conv); } /*! an auxiliary method for converting into the string */ template void ToString_CorrectDigitsAfterComma_CutOffZeroCharacters( string_type & new_man, const Conv & conv) const { // minimum two characters if( new_man.length() < 2 ) return; // we're looking for the index of the last character which is not zero uint i = uint( new_man.length() ) - 1; for( ; i>0 && new_man[i]=='0' ; --i ); // if there is another character than zero at the end // we're finishing if( i == new_man.length() - 1 ) return; // we must have a comma // (the comma can be removed by ToString_CorrectDigitsAfterComma_Round // which is called before) if( new_man.find_last_of(static_cast(conv.comma), i) == string_type::npos ) return; // if directly before the first zero is the comma operator // we're cutting it as well if( i>0 && new_man[i]==static_cast(conv.comma) ) --i; new_man.erase(i+1, new_man.length()-i-1); } /*! an auxiliary method for converting into the string */ template void ToString_CorrectDigitsAfterComma_Round( string_type & new_man, const Conv & conv ) const { typedef typename string_type::size_type StrSize; // first we're looking for the comma operator StrSize index = new_man.find(static_cast(conv.comma), 0); if( index == string_type::npos ) // nothing was found (actually there can't be this situation) return; // we're calculating how many digits there are at the end (after the comma) // 'after_comma' will be greater than zero because at the end // we have at least one digit StrSize after_comma = new_man.length() - index - 1; // if 'max_digit_after_comma' is greater than 'after_comma' (or equal) // we don't have anything for cutting if( static_cast(conv.round) >= after_comma ) return; uint last_digit = Misc::CharToDigit( new_man[ index + conv.round + 1 ], conv.base ); // we're cutting the rest of the string new_man.erase(index + conv.round + 1, after_comma - conv.round); if( conv.round == 0 ) { // we're cutting the comma operator as well // (it's not needed now because we've cut the whole rest after the comma) new_man.erase(index, 1); } if( last_digit >= conv.base / 2 ) // we must round here ToString_RoundMantissa_AddOneIntoMantissa(new_man, conv); } public: /*! a method for converting a string into its value it returns 1 if the value is too big -- we cannot pass it into the range of our class Big (or if the base is incorrect) that means only digits before the comma operator can make this value too big, all digits after the comma we can ignore 'source' - pointer to the string for parsing if 'after_source' is set that when this method finishes it sets the pointer to the new first character after parsed value 'value_read' - if the pointer is provided that means the value_read will be true only when a value has been actually read, there can be situation where only such a string '-' or '+' will be parsed -- 'after_source' will be different from 'source' but no value has been read (there are no digits) on other words if 'value_read' is true -- there is at least one digit in the string */ uint FromString(const char * source, uint base = 10, const char ** after_source = 0, bool * value_read = 0) { Conv conv; conv.base = base; return FromStringBase(source, conv, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const char * source, const Conv & conv, const char ** after_source = 0, bool * value_read = 0) { return FromStringBase(source, conv, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const std::string & string, uint base = 10, const char ** after_source = 0, bool * value_read = 0) { return FromString(string.c_str(), base, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const std::string & string, const Conv & conv, const char ** after_source = 0, bool * value_read = 0) { return FromString(string.c_str(), conv, after_source, value_read); } #ifndef TTMATH_DONT_USE_WCHAR /*! a method for converting a string into its value */ uint FromString(const wchar_t * source, uint base = 10, const wchar_t ** after_source = 0, bool * value_read = 0) { Conv conv; conv.base = base; return FromStringBase(source, conv, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const wchar_t * source, const Conv & conv, const wchar_t ** after_source = 0, bool * value_read = 0) { return FromStringBase(source, conv, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const std::wstring & string, uint base = 10, const wchar_t ** after_source = 0, bool * value_read = 0) { return FromString(string.c_str(), base, after_source, value_read); } /*! a method for converting a string into its value */ uint FromString(const std::wstring & string, const Conv & conv, const wchar_t ** after_source = 0, bool * value_read = 0) { return FromString(string.c_str(), conv, after_source, value_read); } #endif private: /*! an auxiliary method for converting from a string */ template uint FromStringBase(const char_type * source, const Conv & conv, const char_type ** after_source = 0, bool * value_read = 0) { bool is_sign; bool value_read_temp = false; if( conv.base<2 || conv.base>16 ) { SetNan(); if( after_source ) *after_source = source; if( value_read ) *value_read = value_read_temp; return 1; } SetZero(); FromString_TestSign( source, is_sign ); uint c = FromString_ReadPartBeforeComma( source, conv, value_read_temp ); if( FromString_TestCommaOperator(source, conv) ) c += FromString_ReadPartAfterComma( source, conv, value_read_temp ); if( value_read_temp && conv.base == 10 ) c += FromString_ReadScientificIfExists( source ); if( is_sign && !IsZero() ) ChangeSign(); if( after_source ) *after_source = source; if( value_read ) *value_read = value_read_temp; return CheckCarry(c); } /*! we're testing whether the value is with the sign (this method is used from 'FromString_ReadPartScientific' too) */ template void FromString_TestSign( const char_type * & source, bool & is_sign ) { Misc::SkipWhiteCharacters(source); is_sign = false; if( *source == '-' ) { is_sign = true; ++source; } else if( *source == '+' ) { ++source; } } /*! we're testing whether there's a comma operator */ template bool FromString_TestCommaOperator(const char_type * & source, const Conv & conv) { if( (*source == static_cast(conv.comma)) || (*source == static_cast(conv.comma2) && conv.comma2 != 0 ) ) { ++source; return true; } return false; } /*! this method reads the first part of a string (before the comma operator) */ template uint FromString_ReadPartBeforeComma( const char_type * & source, const Conv & conv, bool & value_read ) { sint character; Big temp; Big base_( conv.base ); Misc::SkipWhiteCharacters( source ); for( ; true ; ++source ) { if( conv.group!=0 && *source==static_cast(conv.group) ) continue; character = Misc::CharToDigit(*source, conv.base); if( character == -1 ) break; value_read = true; temp = character; if( Mul(base_) ) return 1; if( Add(temp) ) return 1; } return 0; } /*! this method reads the second part of a string (after the comma operator) */ template uint FromString_ReadPartAfterComma( const char_type * & source, const Conv & conv, bool & value_read ) { sint character; uint c = 0, power = 0; UInt<1> power_; Big sum, base_(conv.base); // we don't remove any white characters here sum.SetZero(); for( ; sum.exponent.IsSign() || sum.exponent.IsZero() ; ++source ) { if( conv.group!=0 && *source==static_cast(conv.group) ) continue; character = Misc::CharToDigit(*source, conv.base); if( character == -1 ) break; value_read = true; // there actually shouldn't be a carry here c += sum.Mul(base_); c += sum.Add(character); power += 1; if( power == 0 ) c += 1; } // we could break the parsing somewhere in the middle of the string, // but the result (value) still can be good // we should set a correct value of 'source' now for( ; Misc::CharToDigit(*source, conv.base) != -1 ; ++source ); power_ = power; c += base_.Pow(power_); c += sum.Div(base_); c += Add(sum); return (c==0)? 0 : 1; } /*! this method checks whether there is a scientific part: [e|E][-|+]value it is called when the base is 10 and some digits were read before */ template uint FromString_ReadScientificIfExists(const char_type * & source) { uint c = 0; bool scientific_read = false; const char_type * before_scientific = source; if( FromString_TestScientific(source) ) c += FromString_ReadPartScientific( source, scientific_read ); if( !scientific_read ) source = before_scientific; return (c==0)? 0 : 1; } /*! we're testing whether is there the character 'e' this character is only allowed when we're using the base equals 10 */ template bool FromString_TestScientific(const char_type * & source) { Misc::SkipWhiteCharacters(source); if( *source=='e' || *source=='E' ) { ++source; return true; } return false; } /*! this method reads the exponent (after 'e' character) when there's a scientific format of value and only when we're using the base equals 10 */ template uint FromString_ReadPartScientific( const char_type * & source, bool & scientific_read ) { uint c = 0; Big new_exponent, temp; bool was_sign = false; FromString_TestSign( source, was_sign ); c += FromString_ReadPartScientific_ReadExponent( source, new_exponent, scientific_read ); if( scientific_read ) { if( was_sign ) new_exponent.ChangeSign(); temp = 10; c += temp.Pow( new_exponent ); c += Mul(temp); } return (c==0)? 0 : 1; } /*! this method reads the value of the extra exponent when scientific format is used (only when base == 10) */ template uint FromString_ReadPartScientific_ReadExponent( const char_type * & source, Big & new_exponent, bool & scientific_read ) { sint character; Big base, temp; Misc::SkipWhiteCharacters(source); new_exponent.SetZero(); base = 10; for( ; (character=Misc::CharToDigit(*source, 10)) != -1 ; ++source ) { scientific_read = true; temp = character; if( new_exponent.Mul(base) ) return 1; if( new_exponent.Add(temp) ) return 1; } return 0; } public: /*! a constructor for converting a string into this class */ Big(const char * string) { FromString( string ); } /*! a constructor for converting a string into this class */ Big(const std::string & string) { FromString( string.c_str() ); } /*! an operator= for converting a string into its value */ Big & operator=(const char * string) { FromString( string ); return *this; } /*! an operator= for converting a string into its value */ Big & operator=(const std::string & string) { FromString( string.c_str() ); return *this; } #ifndef TTMATH_DONT_USE_WCHAR /*! a constructor for converting a string into this class */ Big(const wchar_t * string) { FromString( string ); } /*! a constructor for converting a string into this class */ Big(const std::wstring & string) { FromString( string.c_str() ); } /*! an operator= for converting a string into its value */ Big & operator=(const wchar_t * string) { FromString( string ); return *this; } /*! an operator= for converting a string into its value */ Big & operator=(const std::wstring & string) { FromString( string.c_str() ); return *this; } #endif /*! * * methods for comparing * */ /*! this method performs the formula 'abs(this) < abs(ss2)' and returns the result (in other words it treats 'this' and 'ss2' as values without a sign) we don't check the NaN flag */ bool SmallerWithoutSignThan(const Big & ss2) const { if( IsZero() ) { if( ss2.IsZero() ) // we've got two zeroes return false; else // this==0 and ss2!=0 return true; } if( ss2.IsZero() ) // this!=0 and ss2==0 return false; // we're using the fact that all bits in mantissa are pushed // into the left side -- Standardizing() if( exponent == ss2.exponent ) return mantissa < ss2.mantissa; return exponent < ss2.exponent; } /*! this method performs the formula 'abs(this) > abs(ss2)' and returns the result (in other words it treats 'this' and 'ss2' as values without a sign) we don't check the NaN flag */ bool GreaterWithoutSignThan(const Big & ss2) const { if( IsZero() ) { if( ss2.IsZero() ) // we've got two zeroes return false; else // this==0 and ss2!=0 return false; } if( ss2.IsZero() ) // this!=0 and ss2==0 return true; // we're using the fact that all bits in mantissa are pushed // into the left side -- Standardizing() if( exponent == ss2.exponent ) return mantissa > ss2.mantissa; return exponent > ss2.exponent; } /*! this method performs the formula 'abs(this) == abs(ss2)' and returns the result (in other words it treats 'this' and 'ss2' as values without a sign) we don't check the NaN flag */ bool EqualWithoutSign(const Big & ss2) const { if( IsZero() ) { if( ss2.IsZero() ) // we've got two zeroes return true; else // this==0 and ss2!=0 return false; } if( ss2.IsZero() ) // this!=0 and ss2==0 return false; if( exponent==ss2.exponent && mantissa==ss2.mantissa ) return true; return false; } bool operator<(const Big & ss2) const { if( IsSign() && !ss2.IsSign() ) // this<0 and ss2>=0 return true; if( !IsSign() && ss2.IsSign() ) // this>=0 and ss2<0 return false; // both signs are the same if( IsSign() ) return ss2.SmallerWithoutSignThan( *this ); return SmallerWithoutSignThan( ss2 ); } bool operator==(const Big & ss2) const { if( IsSign() != ss2.IsSign() ) return false; return EqualWithoutSign( ss2 ); } bool operator>(const Big & ss2) const { if( IsSign() && !ss2.IsSign() ) // this<0 and ss2>=0 return false; if( !IsSign() && ss2.IsSign() ) // this>=0 and ss2<0 return true; // both signs are the same if( IsSign() ) return ss2.GreaterWithoutSignThan( *this ); return GreaterWithoutSignThan( ss2 ); } bool operator>=(const Big & ss2) const { return !operator<( ss2 ); } bool operator<=(const Big & ss2) const { return !operator>( ss2 ); } bool operator!=(const Big & ss2) const { return !operator==(ss2); } /*! * * standard mathematical operators * */ /*! an operator for changing the sign this method is not changing 'this' but the changed value is returned */ Big operator-() const { Big temp(*this); temp.ChangeSign(); return temp; } Big operator-(const Big & ss2) const { Big temp(*this); temp.Sub(ss2); return temp; } Big & operator-=(const Big & ss2) { Sub(ss2); return *this; } Big operator+(const Big & ss2) const { Big temp(*this); temp.Add(ss2); return temp; } Big & operator+=(const Big & ss2) { Add(ss2); return *this; } Big operator*(const Big & ss2) const { Big temp(*this); temp.Mul(ss2); return temp; } Big & operator*=(const Big & ss2) { Mul(ss2); return *this; } Big operator/(const Big & ss2) const { Big temp(*this); temp.Div(ss2); return temp; } Big & operator/=(const Big & ss2) { Div(ss2); return *this; } /*! Prefix operator e.g ++variable */ Big & operator++() { AddOne(); return *this; } /*! Postfix operator e.g variable++ */ Big operator++(int) { Big temp( *this ); AddOne(); return temp; } Big & operator--() { SubOne(); return *this; } Big operator--(int) { Big temp( *this ); SubOne(); return temp; } /*! * * bitwise operators * (we do not define bitwise not) */ Big operator&(const Big & p2) const { Big temp( *this ); temp.BitAnd(p2); return temp; } Big & operator&=(const Big & p2) { BitAnd(p2); return *this; } Big operator|(const Big & p2) const { Big temp( *this ); temp.BitOr(p2); return temp; } Big & operator|=(const Big & p2) { BitOr(p2); return *this; } Big operator^(const Big & p2) const { Big temp( *this ); temp.BitXor(p2); return temp; } Big & operator^=(const Big & p2) { BitXor(p2); return *this; } /*! this method makes an integer value by skipping any fractions for example: 10.7 will be 10 12.1 -- 12 -20.2 -- 20 -20.9 -- 20 -0.7 -- 0 0.8 -- 0 */ void SkipFraction() { if( IsNan() || IsZero() ) return; if( !exponent.IsSign() ) // exponent >=0 -- the value don't have any fractions return; if( exponent <= -sint(man*TTMATH_BITS_PER_UINT) ) { // the value is from (-1,1), we return zero SetZero(); return; } // exponent is in range (-man*TTMATH_BITS_PER_UINT, 0) sint e = exponent.ToInt(); mantissa.ClearFirstBits( -e ); // we don't have to standardize 'Standardizing()' the value because // there's at least one bit in the mantissa // (the highest bit which we didn't touch) } /*! this method remains only a fraction from the value for example: 30.56 will be 0.56 -12.67 -- -0.67 */ void RemainFraction() { if( IsNan() || IsZero() ) return; if( !exponent.IsSign() ) { // exponent >= 0 -- the value doesn't have any fractions // we return zero SetZero(); return; } if( exponent <= -sint(man*TTMATH_BITS_PER_UINT) ) { // the value is from (-1,1) // we don't make anything with the value return; } // e will be from (-man*TTMATH_BITS_PER_UINT, 0) sint e = exponent.ToInt(); sint how_many_bits_leave = sint(man*TTMATH_BITS_PER_UINT) + e; // there'll be a subtraction -- e is negative mantissa.Rcl( how_many_bits_leave, 0); // there'll not be a carry because the exponent is too small exponent.Sub( how_many_bits_leave ); // we must call Standardizing() here Standardizing(); } /*! this method returns true if the value is integer (there is no a fraction) (we don't check nan) */ bool IsInteger() const { if( IsZero() ) return true; if( !exponent.IsSign() ) // exponent >=0 -- the value don't have any fractions return true; if( exponent <= -sint(man*TTMATH_BITS_PER_UINT) ) // the value is from (-1,1) return false; // exponent is in range (-man*TTMATH_BITS_PER_UINT, 0) sint e = exponent.ToInt(); e = -e; // e means how many bits we must check uint len = e / TTMATH_BITS_PER_UINT; uint rest = e % TTMATH_BITS_PER_UINT; uint i = 0; for( ; i 0 ) { uint rest_mask = TTMATH_UINT_MAX_VALUE >> (TTMATH_BITS_PER_UINT - rest); if( (mantissa.table[i] & rest_mask) != 0 ) return false; } return true; } /*! this method rounds to the nearest integer value (it returns a carry if it was) for example: 2.3 = 2 2.8 = 3 -2.3 = -2 -2.8 = 3 */ uint Round() { Big half; uint c; if( IsNan() ) return 1; if( IsZero() ) return 0; half.Set05(); if( IsSign() ) { // 'this' is < 0 c = Sub( half ); } else { // 'this' is > 0 c = Add( half ); } SkipFraction(); return CheckCarry(c); } /*! * * input/output operators for standard streams * */ private: /*! an auxiliary method for outputing to standard streams */ template static ostream_type & OutputToStream(ostream_type & s, const Big & l) { string_type ss; l.ToString(ss); s << ss; return s; } public: /*! output to standard streams */ friend std::ostream & operator<<(std::ostream & s, const Big & l) { return OutputToStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! output to standard streams */ friend std::wostream & operator<<(std::wostream & s, const Big & l) { return OutputToStream(s, l); } #endif private: /*! an auxiliary method for converting from a string */ template static istream_type & InputFromStream(istream_type & s, Big & l) { string_type ss; // char or wchar_t for operator>> char_type z, old_z; bool was_comma = false; bool was_e = false; // operator>> omits white characters if they're set for ommiting s >> z; if( z=='-' || z=='+' ) { ss += z; s >> z; // we're reading a next character (white characters can be ommited) } old_z = 0; // we're reading only digits (base=10) and only one comma operator for( ; s.good() ; z=static_cast(s.get()) ) { if( z=='.' || z==',' ) { if( was_comma || was_e ) // second comma operator or comma operator after 'e' character break; was_comma = true; } else if( z == 'e' || z == 'E' ) { if( was_e ) // second 'e' character break; was_e = true; } else if( z == '+' || z == '-' ) { if( old_z != 'e' && old_z != 'E' ) // '+' or '-' is allowed only after 'e' character break; } else if( Misc::CharToDigit(z, 10) < 0 ) break; ss += z; old_z = z; } // we're leaving the last read character // (it's not belonging to the value) s.unget(); l.FromString( ss ); return s; } public: /*! input from standard streams */ friend std::istream & operator>>(std::istream & s, Big & l) { return InputFromStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! input from standard streams */ friend std::wistream & operator>>(std::wistream & s, Big & l) { return InputFromStream(s, l); } #endif }; } // namespace #endif freebayes-1.3.6/ttmath/ttmathdec.h000066400000000000000000000163511417247743000171340ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2012, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathdec #define headerfilettmathdec #include "ttmathtypes.h" #include "ttmaththreads.h" #include "ttmathuint.h" namespace ttmath { template class Dec { public: UInt value; unsigned char info; /*! Sign the mask of a bit from 'info' which means that there is a sign (when the bit is set) */ #define TTMATH_DEC_SIGN 128 /*! Not a number if this bit is set that there is not a valid number */ #define TTMATH_DEC_NAN 64 Dec() { info = TTMATH_DEC_NAN; } Dec(const char * s) { info = TTMATH_DEC_NAN; FromString(s); } Dec & operator=(const char * s) { FromString(s); return *this; } uint FromString(const char * s, const char ** after_source = 0, bool * value_read = 0) { return FromStringBase(s, after_source, value_read); } void ToString(std::string & result) const { ToStringBase(result); } /*! this method clears a specific bit in the 'info' variable bit is one of: */ void ClearInfoBit(unsigned char bit) { info = info & (~bit); } /*! this method sets a specific bit in the 'info' variable bit is one of: */ void SetInfoBit(unsigned char bit) { info = info | bit; } /*! this method returns true if a specific bit in the 'info' variable is set bit is one of: */ bool IsInfoBit(unsigned char bit) const { return (info & bit) != 0; } bool IsNan() const { return IsInfoBit(TTMATH_DEC_NAN); } bool IsSign() const { return IsInfoBit(TTMATH_DEC_SIGN); } /*! this method sets the sign e.g. -1 -> -1 2 -> -2 we do not check whether there is a zero or not, if you're using this method you must be sure that the value is (or will be afterwards) different from zero */ void SetSign() { SetInfoBit(TTMATH_DEC_SIGN); } void SetNaN() { SetInfoBit(TTMATH_DEC_NAN); } void Abs() { ClearInfoBit(TTMATH_DEC_SIGN); } uint Add(const Dec & arg) { uint c = 0; if( IsSign() == arg.IsSign() ) { c += value.Add(arg.value); } else { bool is_sign; if( value > arg.value ) { is_sign = IsSign(); value.Sub(arg.value); } else { is_sign = arg.IsSign(); UInt temp(this->value); value = arg.value; value.Sub(temp); } is_sign ? SetSign() : Abs(); } if( c ) SetNaN(); return (c==0)? 0 : 1; } /* uint Sub(const Dec & arg) { } */ private: #ifndef TTMATH_MULTITHREADS /*! */ void SetMultipler(UInt & result) { // this guardian is initialized before the program runs (static POD type) static int guardian = 0; static UInt multipler; if( guardian == 0 ) { multipler = 10; multipler.Pow(dec_digits); guardian = 1; } result = multipler; } #else /*! */ void SetMultipler(UInt & result) { // this guardian is initialized before the program runs (static POD type) volatile static sig_atomic_t guardian = 0; static UInt * pmultipler; // double-checked locking if( guardian == 0 ) { ThreadLock thread_lock; // locking if( thread_lock.Lock() ) { static UInt multipler; if( guardian == 0 ) { pmultipler = &multipler; multipler = 10; multipler.Pow(dec_digits); guardian = 1; } } else { // there was a problem with locking, we store the result directly in 'result' object result = 10; result.Pow(dec_digits); return; } // automatically unlocking } result = *pmultipler; } #endif /*! an auxiliary method for converting from a string */ template uint FromStringBase(const char_type * s, const char_type ** after_source = 0, bool * value_read = 0) { UInt multipler; const char_type * after; uint c = 0; info = 0; Misc::SkipWhiteCharacters(s); if( *s == '-' ) { s += 1; SetSign(); } else if( *s == '+' ) { s += 1; } c += value.FromString(s, 10, &after, value_read); if( after_source ) *after_source = after; SetMultipler(multipler); c += value.Mul(multipler); if( *after == '.' ) c += FromStringBaseAfterComma(after+1, after_source); if( c ) SetInfoBit(TTMATH_DEC_NAN); return (c==0)? 0 : 1; } template uint FromStringBaseAfterComma(const char_type * s, const char_type ** after_source = 0, bool * value_read = 0) { UInt temp; UInt multipler; sint z; uint c = 0; size_t i = dec_digits; SetMultipler(multipler); for( ; i>0 && (z=Misc::CharToDigit(*s, 10)) != -1 ; --i, ++s ) { multipler.DivInt(10); temp.SetZero(); if( value_read ) *value_read = true; if( c == 0 ) { temp.table[0] = z; c += temp.Mul(multipler); c += value.Add(temp); } } if( i == 0 && (z=Misc::CharToDigit(*s, 10)) != -1 && z >= 5 ) c += value.AddOne(); if( after_source ) { while( (z=Misc::CharToDigit(*s, 10)) != -1 ) s += 1; *after_source = s; } return c; } template void ToStringBase(string_type & result) const { if( IsNan() ) { result = "NaN"; return; } value.ToStringBase(result, 10, IsSign()); if( dec_digits > 0 ) { size_t size = result.size(); if( IsSign() && size > 0 ) size -= 1; if( dec_digits >= size ) { size_t zeroes = dec_digits - size + 1; size_t start = IsSign() ? 1 : 0; result.insert(start, zeroes, '0'); } result.insert(result.end() - dec_digits, '.'); } } }; } // namespace #endif freebayes-1.3.6/ttmath/ttmathint.h000066400000000000000000001053031417247743000171670ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2011, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathint #define headerfilettmathint /*! \file ttmathint.h \brief template class Int */ #include "ttmathuint.h" namespace ttmath { /*! \brief Int implements a big integer value with a sign value_size - how many bytes specify our value on 32bit platforms: value_size=1 -> 4 bytes -> 32 bits on 64bit platforms: value_size=1 -> 8 bytes -> 64 bits value_size = 1,2,3,4,5,6.... */ template class Int : public UInt { public: /*! this method sets the max value which this class can hold (all bits will be one besides the last one) */ void SetMax() { UInt::SetMax(); UInt::table[value_size-1] = ~ TTMATH_UINT_HIGHEST_BIT; } /*! this method sets the min value which this class can hold (all bits will be zero besides the last one which is one) */ void SetMin() { UInt::SetZero(); UInt::table[value_size-1] = TTMATH_UINT_HIGHEST_BIT; } /*! this method sets -1 as the value (-1 is equal the max value in an unsigned type) */ void SetSignOne() { UInt::SetMax(); } /*! we change the sign of the value if it isn't possible to change the sign this method returns 1 else return 0 and changing the sign */ uint ChangeSign() { /* if the value is equal that one which has been returned from SetMin (only the highest bit is set) that means we can't change sign because the value is too big (bigger about one) e.g. when value_size = 1 and value is -2147483648 we can't change it to the 2147483648 because the max value which can be held is 2147483647 we don't change the value and we're using this fact somewhere in some methods (if we look on our value without the sign we get the correct value eg. -2147483648 in Int<1> will be 2147483648 on the UInt<1> type) */ if( UInt::IsOnlyTheHighestBitSet() ) return 1; UInt temp(*this); UInt::SetZero(); UInt::Sub(temp); return 0; } /*! this method sets the sign e.g. 1 -> -1 -2 -> -2 from a positive value we make a negative value, if the value is negative we do nothing */ void SetSign() { if( IsSign() ) return; ChangeSign(); } /*! this method returns true if there's the sign (the highest bit will be converted to the bool) */ bool IsSign() const { return UInt::IsTheHighestBitSet(); } /*! it sets an absolute value it can return carry (1) (look on ChangeSign() for details) */ uint Abs() { if( !IsSign() ) return 0; return ChangeSign(); } /*! * * basic mathematic functions * */ private: uint CorrectCarryAfterAdding(bool p1_is_sign, bool p2_is_sign) { if( !p1_is_sign && !p2_is_sign ) { if( UInt::IsTheHighestBitSet() ) return 1; } if( p1_is_sign && p2_is_sign ) { if( ! UInt::IsTheHighestBitSet() ) return 1; } return 0; } public: /*! this method adds two value with a sign and returns a carry we're using methods from the base class because values are stored with U2 we must only make the carry correction this = p1(=this) + p2 when p1>=0 i p2>=0 carry is set when the highest bit of value is set when p1<0 i p2<0 carry is set when the highest bit of value is clear when p1>=0 i p2<0 carry will never be set when p1<0 i p2>=0 carry will never be set */ uint Add(const Int & ss2) { bool p1_is_sign = IsSign(); bool p2_is_sign = ss2.IsSign(); UInt::Add(ss2); return CorrectCarryAfterAdding(p1_is_sign, p2_is_sign); } /*! this method adds one *unsigned* word (at a specific position) and returns a carry (if it was) look at a description in UInt<>::AddInt(...) */ uint AddInt(uint value, uint index = 0) { bool p1_is_sign = IsSign(); UInt::AddInt(value, index); return CorrectCarryAfterAdding(p1_is_sign, false); } /*! this method adds two *unsigned* words to the existing value and these words begin on the 'index' position index should be equal or smaller than value_size-2 (index <= value_size-2) x1 - lower word, x2 - higher word look at a description in UInt<>::AddTwoInts(...) */ uint AddTwoInts(uint x2, uint x1, uint index) { bool p1_is_sign = IsSign(); UInt::AddTwoInts(x2, x1, index); return CorrectCarryAfterAdding(p1_is_sign, false); } private: uint CorrectCarryAfterSubtracting(bool p1_is_sign, bool p2_is_sign) { if( !p1_is_sign && p2_is_sign ) { if( UInt::IsTheHighestBitSet() ) return 1; } if( p1_is_sign && !p2_is_sign ) { if( ! UInt::IsTheHighestBitSet() ) return 1; } return 0; } public: /*! this method subtracts two values with a sign we don't use the previous Add because the method ChangeSign can sometimes return carry this = p1(=this) - p2 when p1>=0 i p2>=0 carry will never be set when p1<0 i p2<0 carry will never be set when p1>=0 i p2<0 carry is set when the highest bit of value is set when p1<0 i p2>=0 carry is set when the highest bit of value is clear */ uint Sub(const Int & ss2) { bool p1_is_sign = IsSign(); bool p2_is_sign = ss2.IsSign(); UInt::Sub(ss2); return CorrectCarryAfterSubtracting(p1_is_sign, p2_is_sign); } /*! this method subtracts one *unsigned* word (at a specific position) and returns a carry (if it was) */ uint SubInt(uint value, uint index = 0) { bool p1_is_sign = IsSign(); UInt::SubInt(value, index); return CorrectCarryAfterSubtracting(p1_is_sign, false); } /*! this method adds one to the value and returns carry */ uint AddOne() { bool p1_is_sign = IsSign(); UInt::AddOne(); return CorrectCarryAfterAdding(p1_is_sign, false); } /*! this method subtracts one from the value and returns carry */ uint SubOne() { bool p1_is_sign = IsSign(); UInt::SubOne(); return CorrectCarryAfterSubtracting(p1_is_sign, false); } private: uint CheckMinCarry(bool ss1_is_sign, bool ss2_is_sign) { /* we have to examine the sign of the result now but if the result is with the sign then: 1. if the signs were the same that means the result is too big (the result must be without a sign) 2. if the signs were different that means if the result is different from that one which has been returned from SetMin() that is carry (result too big) but if the result is equal SetMin() there'll be ok (and the next SetSign will has no effect because the value is actually negative -- look at description of that case in ChangeSign()) */ if( IsSign() ) { if( ss1_is_sign != ss2_is_sign ) { /* there can be one case where signs are different and the result will be equal the value from SetMin() (only the highest bit is set) (this situation is ok) */ if( !UInt::IsOnlyTheHighestBitSet() ) return 1; } else { // signs were the same return 1; } } return 0; } public: /*! multiplication: this = this * ss2 it can return a carry */ uint MulInt(sint ss2) { bool ss1_is_sign, ss2_is_sign; uint c; ss1_is_sign = IsSign(); /* we don't have to check the carry from Abs (values will be correct because next we're using the method MulInt from the base class UInt which is without a sign) */ Abs(); if( ss2 < 0 ) { ss2 = -ss2; ss2_is_sign = true; } else { ss2_is_sign = false; } c = UInt::MulInt((uint)ss2); c += CheckMinCarry(ss1_is_sign, ss2_is_sign); if( ss1_is_sign != ss2_is_sign ) SetSign(); return c; } /*! multiplication this = this * ss2 it returns carry if the result is too big (we're using the method from the base class but we have to make one correction in account of signs) */ uint Mul(Int ss2) { bool ss1_is_sign, ss2_is_sign; uint c; ss1_is_sign = IsSign(); ss2_is_sign = ss2.IsSign(); /* we don't have to check the carry from Abs (values will be correct because next we're using the method Mul from the base class UInt which is without a sign) */ Abs(); ss2.Abs(); c = UInt::Mul(ss2); c += CheckMinCarry(ss1_is_sign, ss2_is_sign); if( ss1_is_sign != ss2_is_sign ) SetSign(); return c; } /*! division this = this / ss2 returned values: 0 - ok 1 - division by zero for example: (result means 'this') 20 / 3 --> result: 6 remainder: 2 -20 / 3 --> result: -6 remainder: -2 20 / -3 --> result: -6 remainder: 2 -20 / -3 --> result: 6 remainder: -2 in other words: this(old) = ss2 * this(new)(result) + remainder */ uint Div(Int ss2, Int * remainder = 0) { bool ss1_is_sign, ss2_is_sign; ss1_is_sign = IsSign(); ss2_is_sign = ss2.IsSign(); /* we don't have to test the carry from Abs as well as in Mul */ Abs(); ss2.Abs(); uint c = UInt::Div(ss2, remainder); if( ss1_is_sign != ss2_is_sign ) SetSign(); if( ss1_is_sign && remainder ) remainder->SetSign(); return c; } uint Div(const Int & ss2, Int & remainder) { return Div(ss2, &remainder); } /*! division this = this / ss2 (ss2 is int) returned values: 0 - ok 1 - division by zero for example: (result means 'this') 20 / 3 --> result: 6 remainder: 2 -20 / 3 --> result: -6 remainder: -2 20 / -3 --> result: -6 remainder: 2 -20 / -3 --> result: 6 remainder: -2 in other words: this(old) = ss2 * this(new)(result) + remainder */ uint DivInt(sint ss2, sint * remainder = 0) { bool ss1_is_sign, ss2_is_sign; ss1_is_sign = IsSign(); /* we don't have to test the carry from Abs as well as in Mul */ Abs(); if( ss2 < 0 ) { ss2 = -ss2; ss2_is_sign = true; } else { ss2_is_sign = false; } uint rem; uint c = UInt::DivInt((uint)ss2, &rem); if( ss1_is_sign != ss2_is_sign ) SetSign(); if( remainder ) { if( ss1_is_sign ) *remainder = -sint(rem); else *remainder = sint(rem); } return c; } uint DivInt(sint ss2, sint & remainder) { return DivInt(ss2, &remainder); } private: /*! power this = this ^ pow this can be negative pow is >= 0 */ uint Pow2(const Int & pow) { bool was_sign = IsSign(); uint c = 0; if( was_sign ) c += Abs(); uint c_temp = UInt::Pow(pow); if( c_temp > 0 ) return c_temp; // c_temp can be: 0, 1 or 2 if( was_sign && (pow.table[0] & 1) == 1 ) // negative value to the power of odd number is negative c += ChangeSign(); return (c==0)? 0 : 1; } public: /*! power this = this ^ pow return values: 0 - ok 1 - carry 2 - incorrect arguments 0^0 or 0^(-something) */ uint Pow(Int pow) { if( !pow.IsSign() ) return Pow2(pow); if( UInt::IsZero() ) // if 'pow' is negative then // 'this' must be different from zero return 2; if( pow.ChangeSign() ) return 1; Int t(*this); uint c_temp = t.Pow2(pow); if( c_temp > 0 ) return c_temp; UInt::SetOne(); if( Div(t) ) return 1; return 0; } /*! * * convertion methods * */ private: /*! an auxiliary method for converting both from UInt and Int */ template uint FromUIntOrInt(const UInt & p, bool UInt_type) { uint min_size = (value_size < argument_size)? value_size : argument_size; uint i; for(i=0 ; i::table[i] = p.table[i]; if( value_size > argument_size ) { uint fill; if( UInt_type ) fill = 0; else fill = (p.table[argument_size-1] & TTMATH_UINT_HIGHEST_BIT)? TTMATH_UINT_MAX_VALUE : 0; // 'this' is longer than 'p' for( ; i::table[i] = fill; } else { uint test = (UInt::table[value_size-1] & TTMATH_UINT_HIGHEST_BIT)? TTMATH_UINT_MAX_VALUE : 0; if( UInt_type && test!=0 ) return 1; for( ; i type into this class this operation has mainly sense if the value from p can be held in this type it returns a carry if the value 'p' is too big */ template uint FromInt(const Int & p) { return FromUIntOrInt(p, false); } /*! this method converts the sint type into this class */ uint FromInt(sint value) { uint fill = ( value<0 ) ? TTMATH_UINT_MAX_VALUE : 0; for(uint i=1 ; i::table[i] = fill; UInt::table[0] = uint(value); // there'll never be a carry here return 0; } /*! this method converts UInt into this class */ template uint FromUInt(const UInt & p) { return FromUIntOrInt(p, true); } /*! this method converts UInt into this class */ template uint FromInt(const UInt & p) { return FromUIntOrInt(p, true); } /*! this method converts the uint type into this class */ uint FromUInt(uint value) { for(uint i=1 ; i::table[i] = 0; UInt::table[0] = value; // there can be a carry here when the size of this value is equal one word // and the 'value' has the highest bit set if( value_size==1 && (value & TTMATH_UINT_HIGHEST_BIT)!=0 ) return 1; return 0; } /*! this method converts the uint type into this class */ uint FromInt(uint value) { return FromUInt(value); } /*! the default assignment operator */ Int & operator=(const Int & p) { FromInt(p); return *this; } /*! this operator converts an Int type to this class it doesn't return a carry */ template Int & operator=(const Int & p) { FromInt(p); return *this; } /*! this method converts the sint type to this class */ Int & operator=(sint i) { FromInt(i); return *this; } /*! a constructor for converting the uint to this class */ Int(sint i) { FromInt(i); } /*! a copy constructor */ Int(const Int & u) { FromInt(u); } /*! a constructor for copying from another types */ template Int(const Int & u) { // look that 'size' we still set as 'value_size' and not as u.value_size FromInt(u); } /*! this operator converts an UInt type to this class it doesn't return a carry */ template Int & operator=(const UInt & p) { FromUInt(p); return *this; } /*! this method converts the Uint type to this class */ Int & operator=(uint i) { FromUInt(i); return *this; } /*! a constructor for converting the uint to this class */ Int(uint i) { FromUInt(i); } /*! a constructor for copying from another types */ template Int(const UInt & u) { // look that 'size' we still set as 'value_size' and not as u.value_size FromUInt(u); } #ifdef TTMATH_PLATFORM32 /*! this method converts unsigned 64 bit int type to this class ***this method is created only on a 32bit platform*** */ uint FromUInt(ulint n) { uint c = UInt::FromUInt(n); if( c ) return 1; if( value_size == 1 ) return ((UInt::table[0] & TTMATH_UINT_HIGHEST_BIT) == 0) ? 0 : 1; if( value_size == 2 ) return ((UInt::table[1] & TTMATH_UINT_HIGHEST_BIT) == 0) ? 0 : 1; return 0; } /*! this method converts unsigned 64 bit int type to this class ***this method is created only on a 32bit platform*** */ uint FromInt(ulint n) { return FromUInt(n); } /*! this method converts signed 64 bit int type to this class ***this method is created only on a 32bit platform*** */ uint FromInt(slint n) { uint mask = (n < 0) ? TTMATH_UINT_MAX_VALUE : 0; UInt::table[0] = (uint)(ulint)n; if( value_size == 1 ) { if( uint(ulint(n) >> 32) != mask ) return 1; return ((UInt::table[0] & TTMATH_UINT_HIGHEST_BIT) == (mask & TTMATH_UINT_HIGHEST_BIT)) ? 0 : 1; } UInt::table[1] = (uint)(ulint(n) >> 32); for(uint i=2 ; i::table[i] = mask; return 0; } /*! this operator converts unsigned 64 bit int type to this class ***this operator is created only on a 32bit platform*** */ Int & operator=(ulint n) { FromUInt(n); return *this; } /*! a constructor for converting unsigned 64 bit int to this class ***this constructor is created only on a 32bit platform*** */ Int(ulint n) { FromUInt(n); } /*! this operator converts signed 64 bit int type to this class ***this operator is created only on a 32bit platform*** */ Int & operator=(slint n) { FromInt(n); return *this; } /*! a constructor for converting signed 64 bit int to this class ***this constructor is created only on a 32bit platform*** */ Int(slint n) { FromInt(n); } #endif #ifdef TTMATH_PLATFORM64 /*! this method converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ uint FromUInt(unsigned int i) { return FromUInt(uint(i)); } /*! this method converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ uint FromInt(unsigned int i) { return FromUInt(i); } /*! this method converts 32 bit signed int type to this class ***this operator is created only on a 64bit platform*** */ uint FromInt(signed int i) { return FromInt(sint(i)); } /*! this method converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ Int & operator=(unsigned int i) { FromUInt(i); return *this; } /*! a constructor for converting 32 bit unsigned int to this class ***this constructor is created only on a 64bit platform*** */ Int(unsigned int i) { FromUInt(i); } /*! this operator converts 32 bit signed int type to this class ***this operator is created only on a 64bit platform*** */ Int & operator=(signed int i) { FromInt(i); return *this; } /*! a constructor for converting 32 bit signed int to this class ***this constructor is created only on a 64bit platform*** */ Int(signed int i) { FromInt(i); } #endif /*! a constructor for converting string to this class (with the base=10) */ Int(const char * s) { FromString(s); } /*! a constructor for converting a string to this class (with the base=10) */ Int(const std::string & s) { FromString( s.c_str() ); } #ifndef TTMATH_DONT_USE_WCHAR /*! a constructor for converting string to this class (with the base=10) */ Int(const wchar_t * s) { FromString(s); } /*! a constructor for converting a string to this class (with the base=10) */ Int(const std::wstring & s) { FromString( s.c_str() ); } #endif /*! a default constructor we don't clear table etc. */ Int() { } /*! the destructor */ ~Int() { } /*! this method returns the lowest value from table with a sign we must be sure when we using this method whether the value will hold in an sint type or not (the rest value from table must be zero or -1) */ sint ToInt() const { return sint( UInt::table[0] ); } /*! this method converts the value to uint type can return a carry if the value is too long to store it in uint type */ uint ToUInt(uint & result) const { uint c = UInt::ToUInt(result); if( value_size == 1 ) return (result & TTMATH_UINT_HIGHEST_BIT) == 0 ? 0 : 1; return c; } /*! this method converts the value to uint type can return a carry if the value is too long to store it in uint type */ uint ToInt(uint & result) const { return ToUInt(result); } /*! this method converts the value to sint type can return a carry if the value is too long to store it in sint type */ uint ToInt(sint & result) const { result = sint( UInt::table[0] ); uint mask = IsSign() ? TTMATH_UINT_MAX_VALUE : 0; if( (result & TTMATH_UINT_HIGHEST_BIT) != (mask & TTMATH_UINT_HIGHEST_BIT) ) return 1; for(uint i=1 ; i::table[i] != mask ) return 1; return 0; } #ifdef TTMATH_PLATFORM32 /*! this method converts the value to ulint type (64 bit unsigned integer) can return a carry if the value is too long to store it in ulint type *** this method is created only on a 32 bit platform *** */ uint ToUInt(ulint & result) const { uint c = UInt::ToUInt(result); if( value_size == 1 ) return (UInt::table[0] & TTMATH_UINT_HIGHEST_BIT) == 0 ? 0 : 1; if( value_size == 2 ) return (UInt::table[1] & TTMATH_UINT_HIGHEST_BIT) == 0 ? 0 : 1; return c; } /*! this method converts the value to ulint type (64 bit unsigned integer) can return a carry if the value is too long to store it in ulint type *** this method is created only on a 32 bit platform *** */ uint ToInt(ulint & result) const { return ToUInt(result); } /*! this method converts the value to slint type (64 bit signed integer) can return a carry if the value is too long to store it in slint type *** this method is created only on a 32 bit platform *** */ uint ToInt(slint & result) const { if( value_size == 1 ) { result = slint(sint(UInt::table[0])); } else { uint low = UInt::table[0]; uint high = UInt::table[1]; result = low; result |= (ulint(high) << TTMATH_BITS_PER_UINT); uint mask = IsSign() ? TTMATH_UINT_MAX_VALUE : 0; if( (high & TTMATH_UINT_HIGHEST_BIT) != (mask & TTMATH_UINT_HIGHEST_BIT) ) return 1; for(uint i=2 ; i::table[i] != mask ) return 1; } return 0; } #endif #ifdef TTMATH_PLATFORM64 /*! this method converts the value to a 32 bit unsigned integer can return a carry if the value is too long to store it in this type *** this method is created only on a 64 bit platform *** */ uint ToUInt(unsigned int & result) const { uint c = UInt::ToUInt(result); if( c || IsSign() ) return 1; return 0; } /*! this method converts the value to a 32 bit unsigned integer can return a carry if the value is too long to store it in this type *** this method is created only on a 64 bit platform *** */ uint ToInt(unsigned int & result) const { return ToUInt(result); } /*! this method converts the value to a 32 bit signed integer can return a carry if the value is too long to store it in this type *** this method is created only on a 64 bit platform *** */ uint ToInt(int & result) const { uint first = UInt::table[0]; result = int(first); uint mask = IsSign() ? TTMATH_UINT_MAX_VALUE : 0; if( (first >> 31) != (mask >> 31) ) return 1; for(uint i=1 ; i::table[i] != mask ) return 1; return 0; } #endif private: /*! an auxiliary method for converting to a string */ template void ToStringBase(string_type & result, uint b = 10) const { if( IsSign() ) { Int temp(*this); temp.Abs(); temp.UInt::ToStringBase(result, b, true); } else { UInt::ToStringBase(result, b, false); } } public: /*! this method converts the value to a string with a base equal 'b' */ void ToString(std::string & result, uint b = 10) const { return ToStringBase(result, b); } /*! this method converts the value to a string with a base equal 'b' */ std::string ToString(uint b = 10) const { std::string result; ToStringBase(result, b); return result; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method converts the value to a string with a base equal 'b' */ void ToString(std::wstring & result, uint b = 10) const { return ToStringBase(result, b); } /*! this method converts the value to a string with a base equal 'b' */ std::wstring ToWString(uint b = 10) const { std::wstring result; ToStringBase(result, b); return result; } #endif private: /*! an auxiliary method for converting from a string */ template uint FromStringBase(const char_type * s, uint b = 10, const char_type ** after_source = 0, bool * value_read = 0) { bool is_sign = false; Misc::SkipWhiteCharacters(s); if( *s == '-' ) { is_sign = true; Misc::SkipWhiteCharacters(++s); } else if( *s == '+' ) { Misc::SkipWhiteCharacters(++s); } if( UInt::FromString(s,b,after_source,value_read) ) return 1; if( is_sign ) { Int mmin; mmin.SetMin(); /* the reference to mmin will be automatically converted to the reference to UInt type (this value can be equal mmin -- look at a description in ChangeSign()) */ if( UInt::operator>( mmin ) ) return 1; /* if the value is equal mmin the method ChangeSign() does nothing (only returns 1 but we ignore it) */ ChangeSign(); } else { Int mmax; mmax.SetMax(); if( UInt::operator>( mmax ) ) return 1; } return 0; } public: /*! this method converts a string into its value it returns carry=1 if the value will be too big or an incorrect base 'b' is given string is ended with a non-digit value, for example: "-12" will be translated to -12 as well as: "- 12foo" will be translated to -12 too existing first white characters will be ommited (between '-' and a first digit can be white characters too) after_source (if exists) is pointing at the end of the parsed string value_read (if exists) tells whether something has actually been read (at least one digit) */ uint FromString(const char * s, uint b = 10, const char ** after_source = 0, bool * value_read = 0) { return FromStringBase(s, b, after_source, value_read); } /*! this method converts a string into its value */ uint FromString(const wchar_t * s, uint b = 10, const wchar_t ** after_source = 0, bool * value_read = 0) { return FromStringBase(s, b, after_source, value_read); } /*! this method converts a string into its value it returns carry=1 if the value will be too big or an incorrect base 'b' is given */ uint FromString(const std::string & s, uint b = 10) { return FromString( s.c_str(), b ); } /*! this operator converts a string into its value (with base = 10) */ Int & operator=(const char * s) { FromString(s); return *this; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method converts a string into its value it returns carry=1 if the value will be too big or an incorrect base 'b' is given */ uint FromString(const std::wstring & s, uint b = 10) { return FromString( s.c_str(), b ); } /*! this operator converts a string into its value (with base = 10) */ Int & operator=(const wchar_t * s) { FromString(s); return *this; } /*! this operator converts a string into its value (with base = 10) */ Int & operator=(const std::wstring & s) { FromString( s.c_str() ); return *this; } #endif /*! this operator converts a string into its value (with base = 10) */ Int & operator=(const std::string & s) { FromString( s.c_str() ); return *this; } /*! * * methods for comparing * * */ bool operator==(const Int & l) const { return UInt::operator==(l); } bool operator!=(const Int & l) const { return UInt::operator!=(l); } bool operator<(const Int & l) const { sint i=value_size-1; sint a1 = sint(UInt::table[i]); sint a2 = sint(l.table[i]); if( a1 != a2 ) return a1 < a2; for(--i ; i>=0 ; --i) { if( UInt::table[i] != l.table[i] ) // comparison as unsigned int return UInt::table[i] < l.table[i]; } // they're equal return false; } bool operator>(const Int & l) const { sint i=value_size-1; sint a1 = sint(UInt::table[i]); sint a2 = sint(l.table[i]); if( a1 != a2 ) return a1 > a2; for(--i ; i>=0 ; --i) { if( UInt::table[i] != l.table[i] ) // comparison as unsigned int return UInt::table[i] > l.table[i]; } // they're equal return false; } bool operator<=(const Int & l) const { sint i=value_size-1; sint a1 = sint(UInt::table[i]); sint a2 = sint(l.table[i]); if( a1 != a2 ) return a1 < a2; for(--i ; i>=0 ; --i) { if( UInt::table[i] != l.table[i] ) // comparison as unsigned int return UInt::table[i] < l.table[i]; } // they're equal return true; } bool operator>=(const Int & l) const { sint i=value_size-1; sint a1 = sint(UInt::table[i]); sint a2 = sint(l.table[i]); if( a1 != a2 ) return a1 > a2; for(--i ; i>=0 ; --i) { if( UInt::table[i] != l.table[i] ) // comparison as unsigned int return UInt::table[i] > l.table[i]; } // they're equal return true; } /*! * * standard mathematical operators * */ /*! an operator for changing the sign it's not changing 'this' but the changed value will be returned */ Int operator-() const { Int temp(*this); temp.ChangeSign(); return temp; } Int operator-(const Int & p2) const { Int temp(*this); temp.Sub(p2); return temp; } Int & operator-=(const Int & p2) { Sub(p2); return *this; } Int operator+(const Int & p2) const { Int temp(*this); temp.Add(p2); return temp; } Int & operator+=(const Int & p2) { Add(p2); return *this; } Int operator*(const Int & p2) const { Int temp(*this); temp.Mul(p2); return temp; } Int & operator*=(const Int & p2) { Mul(p2); return *this; } Int operator/(const Int & p2) const { Int temp(*this); temp.Div(p2); return temp; } Int & operator/=(const Int & p2) { Div(p2); return *this; } Int operator%(const Int & p2) const { Int temp(*this); Int remainder; temp.Div(p2, remainder); return remainder; } Int & operator%=(const Int & p2) { Int remainder; Div(p2, remainder); operator=(remainder); return *this; } /*! Prefix operator e.g. ++variable */ UInt & operator++() { AddOne(); return *this; } /*! Postfix operator e.g. variable++ */ UInt operator++(int) { UInt temp( *this ); AddOne(); return temp; } UInt & operator--() { SubOne(); return *this; } UInt operator--(int) { UInt temp( *this ); SubOne(); return temp; } /*! * * input/output operators for standard streams * */ private: /*! an auxiliary method for outputing to standard streams */ template static ostream_type & OutputToStream(ostream_type & s, const Int & l) { string_type ss; l.ToString(ss); s << ss; return s; } public: /*! output to standard streams */ friend std::ostream & operator<<(std::ostream & s, const Int & l) { return OutputToStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! output to standard streams */ friend std::wostream & operator<<(std::wostream & s, const Int & l) { return OutputToStream(s, l); } #endif private: /*! an auxiliary method for converting from a string */ template static istream_type & InputFromStream(istream_type & s, Int & l) { string_type ss; // char or wchar_t for operator>> char_type z; // operator>> omits white characters if they're set for ommiting s >> z; if( z=='-' || z=='+' ) { ss += z; s >> z; // we're reading a next character (white characters can be ommited) } // we're reading only digits (base=10) while( s.good() && Misc::CharToDigit(z, 10)>=0 ) { ss += z; z = static_cast(s.get()); } // we're leaving the last readed character // (it's not belonging to the value) s.unget(); l.FromString(ss); return s; } public: /*! input from standard streams */ friend std::istream & operator>>(std::istream & s, Int & l) { return InputFromStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! input from standard streams */ friend std::wistream & operator>>(std::wistream & s, Int & l) { return InputFromStream(s, l); } #endif }; } // namespace #endif freebayes-1.3.6/ttmath/ttmathmisc.h000066400000000000000000000106251417247743000173320ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2010, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathmisc #define headerfilettmathmisc /*! \file ttmathmisc.h \brief some helpful functions */ #include namespace ttmath { /*! some helpful functions */ class Misc { public: /* * * AssignString(result, str) * result = str * */ /*! result = str */ static void AssignString(std::string & result, const char * str) { result = str; } #ifndef TTMATH_DONT_USE_WCHAR /*! result = str */ static void AssignString(std::wstring & result, const char * str) { result.clear(); for( ; *str ; ++str ) result += *str; } /*! result = str */ static void AssignString(std::wstring & result, const std::string & str) { return AssignString(result, str.c_str()); } /*! result = str */ static void AssignString(std::string & result, const wchar_t * str) { result.clear(); for( ; *str ; ++str ) result += static_cast(*str); } /*! result = str */ static void AssignString(std::string & result, const std::wstring & str) { return AssignString(result, str.c_str()); } #endif /* * * AddString(result, str) * result += str * */ /*! result += str */ static void AddString(std::string & result, const char * str) { result += str; } #ifndef TTMATH_DONT_USE_WCHAR /*! result += str */ static void AddString(std::wstring & result, const char * str) { for( ; *str ; ++str ) result += *str; } #endif /* this method omits any white characters from the string char_type is char or wchar_t */ template static void SkipWhiteCharacters(const char_type * & c) { // 13 is at the end in a DOS text file (\r\n) while( (*c==' ' ) || (*c=='\t') || (*c==13 ) || (*c=='\n') ) ++c; } /*! this static method converts one character into its value for example: 1 -> 1 8 -> 8 A -> 10 f -> 15 this method don't check whether c is correct or not */ static uint CharToDigit(uint c) { if(c>='0' && c<='9') return c-'0'; if(c>='a' && c<='z') return c-'a'+10; return c-'A'+10; } /*! this method changes a character 'c' into its value (if there can't be a correct value it returns -1) for example: c=2, base=10 -> function returns 2 c=A, base=10 -> function returns -1 c=A, base=16 -> function returns 10 */ static sint CharToDigit(uint c, uint base) { if( c>='0' && c<='9' ) c=c-'0'; else if( c>='a' && c<='z' ) c=c-'a'+10; else if( c>='A' && c<='Z' ) c=c-'A'+10; else return -1; if( c >= base ) return -1; return sint(c); } /*! this method converts a digit into a char digit should be from <0,F> (we don't have to get a base) for example: 1 -> 1 8 -> 8 10 -> A 15 -> F */ static uint DigitToChar(uint digit) { if( digit < 10 ) return digit + '0'; return digit - 10 + 'A'; } }; // struct Misc } #endif freebayes-1.3.6/ttmath/ttmathobjects.h000066400000000000000000000422341417247743000200310ustar00rootroot00000000000000/* * This file is a part of TTMath Mathematical Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2010, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathobject #define headerfilettmathobject /*! \file ttmathobjects.h \brief Mathematic functions. */ #include #include #include #include #include "ttmathtypes.h" #include "ttmathmisc.h" namespace ttmath { /*! objects of this class are used with the mathematical parser they hold variables or functions defined by a user each object has its own table in which we're keeping variables or functions */ class Objects { public: /*! one item (variable or function) 'items' will be on the table */ struct Item { // name of a variable of a function // internally we store variables and funcions as std::string (not std::wstring even when wide characters are used) std::string value; // number of parameters required by the function // (if there's a variable this 'param' is ignored) int param; Item() {} Item(const std::string & v, int p) : value(v), param(p) {} }; // 'Table' is the type of our table typedef std::map Table; typedef Table::iterator Iterator; typedef Table::const_iterator CIterator; /*! this method returns true if a character 'c' is a character which can be in a name if 'can_be_digit' is true that means when the 'c' is a digit this method returns true otherwise it returns false */ static bool CorrectCharacter(int c, bool can_be_digit) { if( (c>='a' && c<='z') || (c>='A' && c<='Z') ) return true; if( can_be_digit && ((c>='0' && c<='9') || c=='_') ) return true; return false; } /*! this method returns true if the name can be as a name of an object */ template static bool IsNameCorrect(const string_type & name) { if( name.empty() ) return false; if( !CorrectCharacter(name[0], false) ) return false; typename string_type::const_iterator i = name.begin(); for(++i ; i!=name.end() ; ++i) if( !CorrectCharacter(*i, true) ) return false; return true; } /*! this method returns true if such an object is defined (name exists) */ bool IsDefined(const std::string & name) { Iterator i = table.find(name); if( i != table.end() ) // we have this object in our table return true; return false; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method returns true if such an object is defined (name exists) */ bool IsDefined(const std::wstring & name) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return false; Misc::AssignString(str_tmp1, name); return IsDefined(str_tmp1); } #endif /*! this method adds one object (variable of function) into the table */ ErrorCode Add(const std::string & name, const std::string & value, int param = 0) { if( !IsNameCorrect(name) ) return err_incorrect_name; Iterator i = table.find(name); if( i != table.end() ) // we have this object in our table return err_object_exists; table.insert( std::make_pair(name, Item(value, param)) ); return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method adds one object (variable of function) into the table */ ErrorCode Add(const std::wstring & name, const std::wstring & value, int param = 0) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); Misc::AssignString(str_tmp2, value); return Add(str_tmp1, str_tmp2, param); } #endif /*! this method returns 'true' if the table is empty */ bool Empty() const { return table.empty(); } /*! this method clears the table */ void Clear() { return table.clear(); } /*! this method returns 'const_iterator' on the first item on the table */ CIterator Begin() const { return table.begin(); } /*! this method returns 'const_iterator' pointing at the space after last item (returns table.end()) */ CIterator End() const { return table.end(); } /*! this method changes the value and the number of parameters for a specific object */ ErrorCode EditValue(const std::string & name, const std::string & value, int param = 0) { if( !IsNameCorrect(name) ) return err_incorrect_name; Iterator i = table.find(name); if( i == table.end() ) return err_unknown_object; i->second.value = value; i->second.param = param; return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method changes the value and the number of parameters for a specific object */ ErrorCode EditValue(const std::wstring & name, const std::wstring & value, int param = 0) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); Misc::AssignString(str_tmp2, value); return EditValue(str_tmp1, str_tmp2, param); } #endif /*! this method changes the name of a specific object */ ErrorCode EditName(const std::string & old_name, const std::string & new_name) { if( !IsNameCorrect(old_name) || !IsNameCorrect(new_name) ) return err_incorrect_name; Iterator old_i = table.find(old_name); if( old_i == table.end() ) return err_unknown_object; if( old_name == new_name ) // the new name is the same as the old one // we treat it as a normal situation return err_ok; ErrorCode err = Add(new_name, old_i->second.value, old_i->second.param); if( err == err_ok ) { old_i = table.find(old_name); TTMATH_ASSERT( old_i != table.end() ) table.erase(old_i); } return err; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method changes the name of a specific object */ ErrorCode EditName(const std::wstring & old_name, const std::wstring & new_name) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(old_name) || !IsNameCorrect(new_name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, old_name); Misc::AssignString(str_tmp2, new_name); return EditName(str_tmp1, str_tmp2); } #endif /*! this method deletes an object */ ErrorCode Delete(const std::string & name) { if( !IsNameCorrect(name) ) return err_incorrect_name; Iterator i = table.find(name); if( i == table.end() ) return err_unknown_object; table.erase( i ); return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method deletes an object */ ErrorCode Delete(const std::wstring & name) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); return Delete(str_tmp1); } #endif /*! this method gets the value of a specific object */ ErrorCode GetValue(const std::string & name, std::string & value) const { if( !IsNameCorrect(name) ) return err_incorrect_name; CIterator i = table.find(name); if( i == table.end() ) { value.clear(); return err_unknown_object; } value = i->second.value; return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method gets the value of a specific object */ ErrorCode GetValue(const std::wstring & name, std::wstring & value) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); ErrorCode err = GetValue(str_tmp1, str_tmp2); Misc::AssignString(value, str_tmp2); return err; } #endif /*! this method gets the value of a specific object (this version is used for not copying the whole string) */ ErrorCode GetValue(const std::string & name, const char ** value) const { if( !IsNameCorrect(name) ) return err_incorrect_name; CIterator i = table.find(name); if( i == table.end() ) { *value = 0; return err_unknown_object; } *value = i->second.value.c_str(); return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method gets the value of a specific object (this version is used for not copying the whole string) */ ErrorCode GetValue(const std::wstring & name, const char ** value) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); return GetValue(str_tmp1, value); } #endif /*! this method gets the value and the number of parameters of a specific object */ ErrorCode GetValueAndParam(const std::string & name, std::string & value, int * param) const { if( !IsNameCorrect(name) ) return err_incorrect_name; CIterator i = table.find(name); if( i == table.end() ) { value.empty(); *param = 0; return err_unknown_object; } value = i->second.value; *param = i->second.param; return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method gets the value and the number of parameters of a specific object */ ErrorCode GetValueAndParam(const std::wstring & name, std::wstring & value, int * param) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); ErrorCode err = GetValueAndParam(str_tmp1, str_tmp2, param); Misc::AssignString(value, str_tmp2); return err; } #endif /*! this method sets the value and the number of parameters of a specific object (this version is used for not copying the whole string) */ ErrorCode GetValueAndParam(const std::string & name, const char ** value, int * param) const { if( !IsNameCorrect(name) ) return err_incorrect_name; CIterator i = table.find(name); if( i == table.end() ) { *value = 0; *param = 0; return err_unknown_object; } *value = i->second.value.c_str(); *param = i->second.param; return err_ok; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method sets the value and the number of parameters of a specific object (this version is used for not copying the whole string but in fact we make one copying during AssignString()) */ ErrorCode GetValueAndParam(const std::wstring & name, const char ** value, int * param) { // we should check whether the name (in wide characters) are correct // before calling AssignString() function if( !IsNameCorrect(name) ) return err_incorrect_name; Misc::AssignString(str_tmp1, name); return GetValueAndParam(str_tmp1, value, param); } #endif /*! this method returns a pointer into the table */ Table * GetTable() { return &table; } private: Table table; std::string str_tmp1, str_tmp2; }; // end of class Objects /*! objects of the class History are used to keep values in functions which take a lot of time during calculating, for instance in the function Factorial(x) it means that when we're calculating e.g. Factorial(1000) and the Factorial finds that we have calculated it before, the value (result) is taken from the history */ template class History { /*! one item in the History's object holds a key, a value for the key and a corresponding error code */ struct Item { ValueType key, value; ErrorCode err; }; /*! we use std::list for simply deleting the first item but because we're searching through the whole container (in the method Get) the container should not be too big (linear time of searching) */ typedef std::list buffer_type; buffer_type buffer; typename buffer_type::size_type buffer_max_size; public: /*! default constructor default max size of the History's container is 15 items */ History() { buffer_max_size = 15; } /*! a constructor which takes another value of the max size of the History's container */ History(typename buffer_type::size_type new_size) { buffer_max_size = new_size; } /*! this method adds one item into the History if the size of the container is greater than buffer_max_size the first item will be removed */ void Add(const ValueType & key, const ValueType & value, ErrorCode err) { Item item; item.key = key; item.value = value; item.err = err; buffer.insert( buffer.end(), item ); if( buffer.size() > buffer_max_size ) buffer.erase(buffer.begin()); } /*! this method checks whether we have an item which has the key equal 'key' if there's such item the method sets the 'value' and the 'err' and returns true otherwise it returns false and 'value' and 'err' remain unchanged */ bool Get(const ValueType & key, ValueType & value, ErrorCode & err) { typename buffer_type::iterator i = buffer.begin(); for( ; i != buffer.end() ; ++i ) { if( i->key == key ) { value = i->value; err = i->err; return true; } } return false; } /*! this methods deletes an item we assume that there is only one item with the 'key' (this methods removes the first one) */ bool Remove(const ValueType & key) { typename buffer_type::iterator i = buffer.begin(); for( ; i != buffer.end() ; ++i ) { if( i->key == key ) { buffer.erase(i); return true; } } return false; } }; // end of class History /*! this is an auxiliary class used when calculating Gamma() or Factorial() in multithreaded environment you can provide an object of this class to the Gamma() or Factorial() function, e.g; typedef Big<1, 3> MyBig; MyBig x = 123456; CGamma cgamma; std::cout << Gamma(x, cgamma); each thread should have its own CGamma<> object in a single-thread environment a CGamma<> object is a static variable in a second version of Gamma() and you don't have to explicitly use it, e.g. typedef Big<1, 3> MyBig; MyBig x = 123456; std::cout << Gamma(x); */ template struct CGamma { /*! this table holds factorials 1 1 2 6 24 120 720 ....... */ std::vector fact; /*! this table holds Bernoulli numbers 1 -0.5 0.166666666666666666666666667 0 -0.0333333333333333333333333333 0 0.0238095238095238095238095238 0 -0.0333333333333333333333333333 0 0.075757575757575757575757576 ..... */ std::vector bern; /*! here we store some calculated values (this is for speeding up, if the next argument of Gamma() or Factorial() is in the 'history' then the result we are not calculating but simply return from the 'history' object) */ History history; /*! this method prepares some coefficients: factorials and Bernoulli numbers stored in 'fact' and 'bern' objects how many values should be depends on the size of the mantissa - if the mantissa is larger then we must calculate more values for a mantissa which consists of 256 bits (8 words on a 32bit platform) we have to calculate about 30 values (the size of fact and bern will be 30), and for a 2048 bits mantissa we have to calculate 306 coefficients you don't have to call this method, these coefficients will be automatically calculated when they are needed you must note that calculating these coefficients is a little time-consuming operation, (especially when the mantissa is large) and first call to Gamma() or Factorial() can take more time than next calls, and in the end this is the point when InitAll() comes in handy: you can call this method somewhere at the beginning of your program */ void InitAll(); // definition is in ttmath.h }; } // namespace #endif freebayes-1.3.6/ttmath/ttmathparser.h000066400000000000000000001633121417247743000176750ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2010, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathparser #define headerfilettmathparser /*! \file ttmathparser.h \brief A mathematical parser */ #include #include #include #include #include "ttmath.h" #include "ttmathobjects.h" #include "ttmathmisc.h" namespace ttmath { /*! \brief Mathematical parser let x will be an input string meaning an expression for converting: x = [+|-]Value[operator[+|-]Value][operator[+|-]Value]... where: an operator can be: ^ (pow) (the heighest priority) * (mul) (or multiplication without an operator -- short mul) / (div) (* and / have the same priority) + (add) - (sub) (+ and - have the same priority) < (lower than) > (greater than) <= (lower or equal than) >= (greater or equal than) == (equal) != (not equal) (all above logical operators have the same priority) && (logical and) || (logical or) (the lowest priority) short mul: if the second Value (Var below) is either a variable or function there might not be an operator between them, e.g. "[+|-]Value Var" is treated as "[+|-]Value * Var" and the multiplication has the same priority as a normal multiplication: 4x = 4 * x 2^3m = (2^3)* m 6h^3 = 6 * (h^3) 2sin(pi) = 2 * sin(pi) etc. Value can be: constant e.g. 100, can be preceded by operators for changing the base (radix): [#|&] # - hex & - bin sample: #10 = 16 &10 = 2 variable e.g. pi another expression between brackets e.g (x) function e.g. sin(x) for example a correct input string can be: "1" "2.1234" "2,1234" (they are the same, by default we can either use a comma or a dot) "1 + 2" "(1 + 2) * 3" "pi" "sin(pi)" "(1+2)*(2+3)" "log(2;1234)" there's a semicolon here (not a comma), we use it in functions for separating parameters "1 < 2" (the result will be: 1) "4 < 3" (the result will be: 0) "2+x" (of course if the variable 'x' is defined) "4x+10" "#20+10" = 32 + 10 = 42 "10 ^ -&101" = 10 ^ -5 = 0.00001 "8 * -&10" = 8 * -2 = -16 etc. we can also use a semicolon for separating any 'x' input strings for example: "1+2;4+5" the result will be on the stack as follows: stack[0].value=3 stack[1].value=9 */ template class Parser { private: /*! there are 5 mathematical operators as follows (with their standard priorities): add (+) sub (-) mul (*) div (/) pow (^) and 'shortmul' used when there is no any operators between a first parameter and a variable or function (the 'shortmul' has the same priority as the normal multiplication ) */ class MatOperator { public: enum Type { none,add,sub,mul,div,pow,lt,gt,let,get,eq,neq,lor,land,shortmul }; enum Assoc { right, // right-associative non_right // associative or left-associative }; Type GetType() const { return type; } int GetPriority() const { return priority; } Assoc GetAssoc() const { return assoc; } void SetType(Type t) { type = t; assoc = non_right; switch( type ) { case lor: priority = 4; break; case land: priority = 5; break; case eq: case neq: case lt: case gt: case let: case get: priority = 7; break; case add: case sub: priority = 10; break; case mul: case shortmul: case div: priority = 12; break; case pow: priority = 14; assoc = right; break; default: Error( err_internal_error ); break; } } MatOperator(): type(none), priority(0), assoc(non_right) { } private: Type type; int priority; Assoc assoc; }; // end of MatOperator class public: /*! Objects of type 'Item' we are keeping on our stack */ struct Item { enum Type { none, numerical_value, mat_operator, first_bracket, last_bracket, variable, semicolon }; // The kind of type which we're keeping Type type; // if type == numerical_value ValueType value; // if type == mat_operator MatOperator moperator; /* if type == first_bracket if 'function' is set to true it means that the first recognized bracket was the bracket from function in other words we must call a function when we'll find the 'last' bracket */ bool function; // if function is true std::string function_name; /* the sign of value it can be for type==numerical_value or type==first_bracket when it's true it means e.g. that value is equal -value */ bool sign; Item(): type(none), function(false), sign(false) { } }; // end of Item struct /*! stack on which we're keeping the Items at the end of parsing we'll have the result here the result don't have to be one value, it can be more than one if we have used a semicolon in the global space e.g. such input string "1+2;3+4" will generate a result: stack[0].value=3 stack[1].value=7 you should check if the stack is not empty, because if there was a syntax error in the input string then we do not have any results on the stack */ std::vector stack; private: /*! size of the stack when we're starting parsing of the string if it's to small while parsing the stack will be automatically resized */ const int default_stack_size; /*! index of an object in our stack it's pointing on the place behind the last element for example at the beginning of parsing its value is zero */ unsigned int stack_index; /*! code of the last error */ ErrorCode error; /*! pointer to the currently reading char when an error has occured it may be used to count the index of the wrong character */ const char * pstring; /*! the base (radix) of the mathematic system (for example it may be '10') */ int base; /*! the unit of angles used in: sin,cos,tan,cot,asin,acos,atan,acot 0 - deg 1 - rad (default) 2 - grad */ int deg_rad_grad; /*! a pointer to an object which tell us whether we should stop calculating or not */ const volatile StopCalculating * pstop_calculating; /*! a pointer to the user-defined variables' table */ const Objects * puser_variables; /*! a pointer to the user-defined functions' table */ const Objects * puser_functions; typedef std::map FunctionLocalVariables; /*! a pointer to the local variables of a function */ const FunctionLocalVariables * pfunction_local_variables; /*! a temporary set using during parsing user defined variables */ std::set visited_variables; /*! a temporary set using during parsing user defined functions */ std::set visited_functions; /*! pfunction is the type of pointer to a mathematic function these mathematic functions are private members of this class, they are the wrappers for standard mathematics function 'pstack' is the pointer to the first argument on our stack 'amount_of_arg' tell us how many argument there are in our stack 'result' is the reference for result of function */ typedef void (Parser::*pfunction)(int pstack, int amount_of_arg, ValueType & result); /*! pfunction is the type of pointer to a method which returns value of variable */ typedef void (ValueType::*pfunction_var)(); /*! table of mathematic functions this map consists of: std::string - function's name pfunction - pointer to specific function */ typedef std::map FunctionsTable; FunctionsTable functions_table; /*! table of mathematic operators this map consists of: std::string - operators's name MatOperator::Type - type of the operator */ typedef std::map OperatorsTable; OperatorsTable operators_table; /*! table of mathematic variables this map consists of: std::string - variable's name pfunction_var - pointer to specific function which returns value of variable */ typedef std::map VariablesTable; VariablesTable variables_table; /*! some coefficients used when calculating the gamma (or factorial) function */ CGamma cgamma; /*! temporary object for a whole string when Parse(std::wstring) is used */ std::string wide_to_ansi; /*! group character (used when parsing) default zero (not used) */ int group; /*! characters used as a comma default: '.' and ',' comma2 can be zero (it means it is not used) */ int comma, comma2; /*! an additional character used as a separator between function parameters (semicolon is used always) */ int param_sep; /*! true if something was calculated (at least one mathematical operator was used or a function or a variable) */ bool calculated; /*! we're using this method for reporting an error */ static void Error(ErrorCode code) { throw code; } /*! this method skips the white character from the string it's moving the 'pstring' to the first no-white character */ void SkipWhiteCharacters() { while( (*pstring==' ' ) || (*pstring=='\t') ) ++pstring; } /*! an auxiliary method for RecurrenceParsingVariablesOrFunction(...) */ void RecurrenceParsingVariablesOrFunction_CheckStopCondition(bool variable, const std::string & name) { if( variable ) { if( visited_variables.find(name) != visited_variables.end() ) Error( err_variable_loop ); } else { if( visited_functions.find(name) != visited_functions.end() ) Error( err_functions_loop ); } } /*! an auxiliary method for RecurrenceParsingVariablesOrFunction(...) */ void RecurrenceParsingVariablesOrFunction_AddName(bool variable, const std::string & name) { if( variable ) visited_variables.insert( name ); else visited_functions.insert( name ); } /*! an auxiliary method for RecurrenceParsingVariablesOrFunction(...) */ void RecurrenceParsingVariablesOrFunction_DeleteName(bool variable, const std::string & name) { if( variable ) visited_variables.erase( name ); else visited_functions.erase( name ); } /*! this method returns the value of a variable or function by creating a new instance of the mathematical parser and making the standard parsing algorithm on the given string this method is used only during parsing user defined variables or functions (there can be a recurrence here therefore we're using 'visited_variables' and 'visited_functions' sets to make a stop condition) */ ValueType RecurrenceParsingVariablesOrFunction(bool variable, const std::string & name, const char * new_string, FunctionLocalVariables * local_variables = 0) { RecurrenceParsingVariablesOrFunction_CheckStopCondition(variable, name); RecurrenceParsingVariablesOrFunction_AddName(variable, name); Parser NewParser(*this); ErrorCode err; NewParser.pfunction_local_variables = local_variables; try { err = NewParser.Parse(new_string); } catch(...) { RecurrenceParsingVariablesOrFunction_DeleteName(variable, name); throw; } RecurrenceParsingVariablesOrFunction_DeleteName(variable, name); if( err != err_ok ) Error( err ); if( NewParser.stack.size() != 1 ) Error( err_must_be_only_one_value ); if( NewParser.stack[0].type != Item::numerical_value ) // I think there shouldn't be this error here Error( err_incorrect_value ); return NewParser.stack[0].value; } public: /*! this method returns the user-defined value of a variable */ bool GetValueOfUserDefinedVariable(const std::string & variable_name,ValueType & result) { if( !puser_variables ) return false; const char * string_value; if( puser_variables->GetValue(variable_name, &string_value) != err_ok ) return false; result = RecurrenceParsingVariablesOrFunction(true, variable_name, string_value); calculated = true; return true; } /*! this method returns the value of a local variable of a function */ bool GetValueOfFunctionLocalVariable(const std::string & variable_name, ValueType & result) { if( !pfunction_local_variables ) return false; typename FunctionLocalVariables::const_iterator i = pfunction_local_variables->find(variable_name); if( i == pfunction_local_variables->end() ) return false; result = i->second; return true; } /*! this method returns the value of a variable from variables' table we make an object of type ValueType then call a method which sets the correct value in it and finally we'll return the object */ ValueType GetValueOfVariable(const std::string & variable_name) { ValueType result; if( GetValueOfFunctionLocalVariable(variable_name, result) ) return result; if( GetValueOfUserDefinedVariable(variable_name, result) ) return result; typename std::map::iterator i = variables_table.find(variable_name); if( i == variables_table.end() ) Error( err_unknown_variable ); (result.*(i->second))(); calculated = true; return result; } private: /*! wrappers for mathematic functions 'sindex' is pointing on the first argument on our stack (the second argument has 'sindex+2' because 'sindex+1' is guaranted for the 'semicolon' operator) the third artument has of course 'sindex+4' etc. 'result' will be the result of the function (we're using exceptions here for example when function gets an improper argument) */ /*! used by: sin,cos,tan,cot */ ValueType ConvertAngleToRad(const ValueType & input) { if( deg_rad_grad == 1 ) // rad return input; ValueType result; ErrorCode err; if( deg_rad_grad == 0 ) // deg result = ttmath::DegToRad(input, &err); else // grad result = ttmath::GradToRad(input, &err); if( err != err_ok ) Error( err ); return result; } /*! used by: asin,acos,atan,acot */ ValueType ConvertRadToAngle(const ValueType & input) { if( deg_rad_grad == 1 ) // rad return input; ValueType result; ErrorCode err; if( deg_rad_grad == 0 ) // deg result = ttmath::RadToDeg(input, &err); else // grad result = ttmath::RadToGrad(input, &err); if( err != err_ok ) Error( err ); return result; } void Gamma(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Gamma(stack[sindex].value, cgamma, &err, pstop_calculating); if(err != err_ok) Error( err ); } /*! factorial result = 1 * 2 * 3 * 4 * .... * x */ void Factorial(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Factorial(stack[sindex].value, cgamma, &err, pstop_calculating); if(err != err_ok) Error( err ); } void Abs(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = ttmath::Abs(stack[sindex].value); } void Sin(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Sin( ConvertAngleToRad(stack[sindex].value), &err ); if(err != err_ok) Error( err ); } void Cos(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Cos( ConvertAngleToRad(stack[sindex].value), &err ); if(err != err_ok) Error( err ); } void Tan(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Tan(ConvertAngleToRad(stack[sindex].value), &err); if(err != err_ok) Error( err ); } void Cot(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Cot(ConvertAngleToRad(stack[sindex].value), &err); if(err != err_ok) Error( err ); } void Int(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = ttmath::SkipFraction(stack[sindex].value); } void Round(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = stack[sindex].value; if( result.Round() ) Error( err_overflow ); } void Ln(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Ln(stack[sindex].value, &err); if(err != err_ok) Error( err ); } void Log(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 2 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Log(stack[sindex].value, stack[sindex+2].value, &err); if(err != err_ok) Error( err ); } void Exp(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; result = ttmath::Exp(stack[sindex].value, &err); if(err != err_ok) Error( err ); } void Max(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args == 0 ) { result.SetMax(); return; } result = stack[sindex].value; for(int i=1 ; i stack[sindex + i*2].value ) result = stack[sindex + i*2].value; } } void ASin(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; ValueType temp = ttmath::ASin(stack[sindex].value, &err); if(err != err_ok) Error( err ); result = ConvertRadToAngle(temp); } void ACos(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); ErrorCode err; ValueType temp = ttmath::ACos(stack[sindex].value, &err); if(err != err_ok) Error( err ); result = ConvertRadToAngle(temp); } void ATan(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = ConvertRadToAngle(ttmath::ATan(stack[sindex].value)); } void ACot(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = ConvertRadToAngle(ttmath::ACot(stack[sindex].value)); } void Sgn(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 1 ) Error( err_improper_amount_of_arguments ); result = ttmath::Sgn(stack[sindex].value); } void Mod(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 2 ) Error( err_improper_amount_of_arguments ); if( stack[sindex+2].value.IsZero() ) Error( err_improper_argument ); result = stack[sindex].value; uint c = result.Mod(stack[sindex+2].value); if( c ) Error( err_overflow ); } void If(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args != 3 ) Error( err_improper_amount_of_arguments ); if( !stack[sindex].value.IsZero() ) result = stack[sindex+2].value; else result = stack[sindex+4].value; } void Or(int sindex, int amount_of_args, ValueType & result) { if( amount_of_args < 2 ) Error( err_improper_amount_of_arguments ); for(int i=0 ; iGetValueAndParam(function_name, &string_value, ¶m) != err_ok ) return false; if( param != amount_of_args ) Error( err_improper_amount_of_arguments ); FunctionLocalVariables local_variables; if( amount_of_args > 0 ) { char buffer[30]; // x = x1 buffer[0] = 'x'; buffer[1] = 0; local_variables.insert( std::make_pair(buffer, stack[sindex].value) ); for(int i=0 ; i*(i->second))(sindex, amount_of_args, stack[sindex-1].value); calculated = true; } /*! inserting a function to the functions' table function_name - name of the function pf - pointer to the function (to the wrapper) */ void InsertFunctionToTable(const char * function_name, pfunction pf) { std::string str; Misc::AssignString(str, function_name); functions_table.insert( std::make_pair(str, pf) ); } /*! inserting a function to the variables' table (this function returns value of variable) variable_name - name of the function pf - pointer to the function */ void InsertVariableToTable(const char * variable_name, pfunction_var pf) { std::string str; Misc::AssignString(str, variable_name); variables_table.insert( std::make_pair(str, pf) ); } /*! this method creates the table of functions */ void CreateFunctionsTable() { InsertFunctionToTable("gamma", &Parser::Gamma); InsertFunctionToTable("factorial", &Parser::Factorial); InsertFunctionToTable("abs", &Parser::Abs); InsertFunctionToTable("sin", &Parser::Sin); InsertFunctionToTable("cos", &Parser::Cos); InsertFunctionToTable("tan", &Parser::Tan); InsertFunctionToTable("tg", &Parser::Tan); InsertFunctionToTable("cot", &Parser::Cot); InsertFunctionToTable("ctg", &Parser::Cot); InsertFunctionToTable("int", &Parser::Int); InsertFunctionToTable("round", &Parser::Round); InsertFunctionToTable("ln", &Parser::Ln); InsertFunctionToTable("log", &Parser::Log); InsertFunctionToTable("exp", &Parser::Exp); InsertFunctionToTable("max", &Parser::Max); InsertFunctionToTable("min", &Parser::Min); InsertFunctionToTable("asin", &Parser::ASin); InsertFunctionToTable("acos", &Parser::ACos); InsertFunctionToTable("atan", &Parser::ATan); InsertFunctionToTable("atg", &Parser::ATan); InsertFunctionToTable("acot", &Parser::ACot); InsertFunctionToTable("actg", &Parser::ACot); InsertFunctionToTable("sgn", &Parser::Sgn); InsertFunctionToTable("mod", &Parser::Mod); InsertFunctionToTable("if", &Parser::If); InsertFunctionToTable("or", &Parser::Or); InsertFunctionToTable("and", &Parser::And); InsertFunctionToTable("not", &Parser::Not); InsertFunctionToTable("degtorad", &Parser::DegToRad); InsertFunctionToTable("radtodeg", &Parser::RadToDeg); InsertFunctionToTable("degtodeg", &Parser::DegToDeg); InsertFunctionToTable("gradtorad", &Parser::GradToRad); InsertFunctionToTable("radtograd", &Parser::RadToGrad); InsertFunctionToTable("degtograd", &Parser::DegToGrad); InsertFunctionToTable("gradtodeg", &Parser::GradToDeg); InsertFunctionToTable("ceil", &Parser::Ceil); InsertFunctionToTable("floor", &Parser::Floor); InsertFunctionToTable("sqrt", &Parser::Sqrt); InsertFunctionToTable("sinh", &Parser::Sinh); InsertFunctionToTable("cosh", &Parser::Cosh); InsertFunctionToTable("tanh", &Parser::Tanh); InsertFunctionToTable("tgh", &Parser::Tanh); InsertFunctionToTable("coth", &Parser::Coth); InsertFunctionToTable("ctgh", &Parser::Coth); InsertFunctionToTable("root", &Parser::Root); InsertFunctionToTable("asinh", &Parser::ASinh); InsertFunctionToTable("acosh", &Parser::ACosh); InsertFunctionToTable("atanh", &Parser::ATanh); InsertFunctionToTable("atgh", &Parser::ATanh); InsertFunctionToTable("acoth", &Parser::ACoth); InsertFunctionToTable("actgh", &Parser::ACoth); InsertFunctionToTable("bitand", &Parser::BitAnd); InsertFunctionToTable("bitor", &Parser::BitOr); InsertFunctionToTable("bitxor", &Parser::BitXor); InsertFunctionToTable("band", &Parser::BitAnd); InsertFunctionToTable("bor", &Parser::BitOr); InsertFunctionToTable("bxor", &Parser::BitXor); InsertFunctionToTable("sum", &Parser::Sum); InsertFunctionToTable("avg", &Parser::Avg); InsertFunctionToTable("frac", &Parser::Frac); } /*! this method creates the table of variables */ void CreateVariablesTable() { InsertVariableToTable("pi", &ValueType::SetPi); InsertVariableToTable("e", &ValueType::SetE); } /*! converting from a big letter to a small one */ int ToLowerCase(int c) { if( c>='A' && c<='Z' ) return c - 'A' + 'a'; return c; } /*! this method read the name of a variable or a function 'result' will be the name of a variable or a function function return 'false' if this name is the name of a variable or function return 'true' if this name is the name of a function what should be returned is tested just by a '(' character that means if there's a '(' character after a name that function returns 'true' */ bool ReadName(std::string & result) { int character; result.erase(); character = *pstring; /* the first letter must be from range 'a' - 'z' or 'A' - 'Z' */ if( ! (( character>='a' && character<='z' ) || ( character>='A' && character<='Z' )) ) Error( err_unknown_character ); do { result += static_cast( character ); character = * ++pstring; } while( (character>='a' && character<='z') || (character>='A' && character<='Z') || (character>='0' && character<='9') || character=='_' ); SkipWhiteCharacters(); /* if there's a character '(' that means this name is a name of a function */ if( *pstring == '(' ) { ++pstring; return true; } return false; } /*! we're checking whether the first character is '-' or '+' if it is we'll return 'true' and if it is equally '-' we'll set the 'sign' member of 'result' */ bool TestSign(Item & result) { SkipWhiteCharacters(); result.sign = false; if( *pstring == '-' || *pstring == '+' ) { if( *pstring == '-' ) result.sign = true; ++pstring; return true; } return false; } /*! we're reading the name of a variable or a function if is there a function we'll return 'true' */ bool ReadVariableOrFunction(Item & result) { std::string name; bool is_it_name_of_function = ReadName(name); if( is_it_name_of_function ) { /* we've read the name of a function */ result.function_name = name; result.type = Item::first_bracket; result.function = true; } else { /* we've read the name of a variable and we're getting its value now */ result.value = GetValueOfVariable( name ); } return is_it_name_of_function; } /*! we're reading a numerical value directly from the string */ void ReadValue(Item & result, int reading_base) { const char * new_stack_pointer; bool value_read; Conv conv; conv.base = reading_base; conv.comma = comma; conv.comma2 = comma2; conv.group = group; uint carry = result.value.FromString(pstring, conv, &new_stack_pointer, &value_read); pstring = new_stack_pointer; if( carry ) Error( err_overflow ); if( !value_read ) Error( err_unknown_character ); } /*! this method returns true if 'character' is a proper first digit for the value (or a comma -- can be first too) */ bool ValueStarts(int character, int base) { if( character == comma ) return true; if( comma2!=0 && character==comma2 ) return true; if( Misc::CharToDigit(character, base) != -1 ) return true; return false; } /*! we're reading the item return values: 0 - all ok, the item is successfully read 1 - the end of the string (the item is not read) 2 - the final bracket ')' */ int ReadValueVariableOrFunction(Item & result) { bool it_was_sign = false; int character; if( TestSign(result) ) // 'result.sign' was set as well it_was_sign = true; SkipWhiteCharacters(); character = ToLowerCase( *pstring ); if( character == 0 ) { if( it_was_sign ) // at the end of the string a character like '-' or '+' has left Error( err_unexpected_end ); // there's the end of the string here return 1; } else if( character == '(' ) { // we've got a normal bracket (not a function) result.type = Item::first_bracket; result.function = false; ++pstring; return 0; } else if( character == ')' ) { // we've got a final bracket // (in this place we can find a final bracket only when there are empty brackets // without any values inside or with a sign '-' or '+' inside) if( it_was_sign ) Error( err_unexpected_final_bracket ); result.type = Item::last_bracket; // we don't increment 'pstring', this final bracket will be read next by the // 'ReadOperatorAndCheckFinalBracket(...)' method return 2; } else if( character == '#' ) { ++pstring; SkipWhiteCharacters(); // after '#' character we do not allow '-' or '+' (can be white characters) if( ValueStarts(*pstring, 16) ) ReadValue( result, 16 ); else Error( err_unknown_character ); } else if( character == '&' ) { ++pstring; SkipWhiteCharacters(); // after '&' character we do not allow '-' or '+' (can be white characters) if( ValueStarts(*pstring, 2) ) ReadValue( result, 2 ); else Error( err_unknown_character ); } else if( ValueStarts(character, base) ) { ReadValue( result, base ); } else if( character>='a' && character<='z' ) { if( ReadVariableOrFunction(result) ) // we've read the name of a function return 0; } else Error( err_unknown_character ); /* we've got a value in the 'result' this value is from a variable or directly from the string */ result.type = Item::numerical_value; if( result.sign ) { result.value.ChangeSign(); result.sign = false; } return 0; } void InsertOperatorToTable(const char * name, typename MatOperator::Type type) { operators_table.insert( std::make_pair(std::string(name), type) ); } /*! this method creates the table of operators */ void CreateMathematicalOperatorsTable() { InsertOperatorToTable("||", MatOperator::lor); InsertOperatorToTable("&&", MatOperator::land); InsertOperatorToTable("!=", MatOperator::neq); InsertOperatorToTable("==", MatOperator::eq); InsertOperatorToTable(">=", MatOperator::get); InsertOperatorToTable("<=", MatOperator::let); InsertOperatorToTable(">", MatOperator::gt); InsertOperatorToTable("<", MatOperator::lt); InsertOperatorToTable("-", MatOperator::sub); InsertOperatorToTable("+", MatOperator::add); InsertOperatorToTable("/", MatOperator::div); InsertOperatorToTable("*", MatOperator::mul); InsertOperatorToTable("^", MatOperator::pow); } /*! returns true if 'str2' is the substring of str1 e.g. true when str1="test" and str2="te" */ bool IsSubstring(const std::string & str1, const std::string & str2) { if( str2.length() > str1.length() ) return false; for(typename std::string::size_type i=0 ; ifirst, oper) ) { oper.erase( --oper.end() ); // we've got mininum one element if( iter_old != operators_table.end() && iter_old->first == oper ) { result.type = Item::mat_operator; result.moperator.SetType( iter_old->second ); break; } Error( err_unknown_operator ); } iter_old = iter_new; } } /*! this method makes a calculation for the percentage operator e.g. 1000-50% = 1000-(1000*0,5) = 500 */ void OperatorPercentage() { if( stack_index < 3 || stack[stack_index-1].type != Item::numerical_value || stack[stack_index-2].type != Item::mat_operator || stack[stack_index-3].type != Item::numerical_value ) Error(err_percent_from); ++pstring; SkipWhiteCharacters(); uint c = 0; c += stack[stack_index-1].value.Div(100); c += stack[stack_index-1].value.Mul(stack[stack_index-3].value); if( c ) Error(err_overflow); } /*! this method reads a mathematic operators or the final bracket or the semicolon operator return values: 0 - ok 1 - the string is finished */ int ReadOperator(Item & result) { SkipWhiteCharacters(); if( *pstring == '%' ) OperatorPercentage(); if( *pstring == 0 ) return 1; else if( *pstring == ')' ) { result.type = Item::last_bracket; ++pstring; } else if( *pstring == ';' || (param_sep!=0 && *pstring==param_sep) ) { result.type = Item::semicolon; ++pstring; } else if( (*pstring>='a' && *pstring<='z') || (*pstring>='A' && *pstring<='Z') ) { // short mul (without any operators) result.type = Item::mat_operator; result.moperator.SetType( MatOperator::shortmul ); } else ReadMathematicalOperator(result); return 0; } /*! this method is making the standard mathematic operation like '-' '+' '*' '/' and '^' the operation is made between 'value1' and 'value2' the result of this operation is stored in the 'value1' */ void MakeStandardMathematicOperation(ValueType & value1, typename MatOperator::Type mat_operator, const ValueType & value2) { uint res; calculated = true; switch( mat_operator ) { case MatOperator::land: (!value1.IsZero() && !value2.IsZero()) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::lor: (!value1.IsZero() || !value2.IsZero()) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::eq: (value1 == value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::neq: (value1 != value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::lt: (value1 < value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::gt: (value1 > value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::let: (value1 <= value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::get: (value1 >= value2) ? value1.SetOne() : value1.SetZero(); break; case MatOperator::sub: if( value1.Sub(value2) ) Error( err_overflow ); break; case MatOperator::add: if( value1.Add(value2) ) Error( err_overflow ); break; case MatOperator::mul: case MatOperator::shortmul: if( value1.Mul(value2) ) Error( err_overflow ); break; case MatOperator::div: if( value2.IsZero() ) Error( err_division_by_zero ); if( value1.Div(value2) ) Error( err_overflow ); break; case MatOperator::pow: res = value1.Pow( value2 ); if( res == 1 ) Error( err_overflow ); else if( res == 2 ) Error( err_improper_argument ); break; default: /* on the stack left an unknown operator but we had to recognize its before that means there's an error in our algorithm */ Error( err_internal_error ); } } /*! this method is trying to roll the stack up with the operator's priority for example if there are: "1 - 2 +" we can subtract "1-2" and the result store on the place where is '1' and copy the last operator '+', that means there'll be '-1+' on our stack but if there are: "1 - 2 *" we can't roll the stack up because the operator '*' has greater priority than '-' */ void TryRollingUpStackWithOperatorPriority() { while( stack_index>=4 && stack[stack_index-4].type == Item::numerical_value && stack[stack_index-3].type == Item::mat_operator && stack[stack_index-2].type == Item::numerical_value && stack[stack_index-1].type == Item::mat_operator && ( ( // the first operator has greater priority stack[stack_index-3].moperator.GetPriority() > stack[stack_index-1].moperator.GetPriority() ) || ( // or both operators have the same priority and the first operator is not right associative stack[stack_index-3].moperator.GetPriority() == stack[stack_index-1].moperator.GetPriority() && stack[stack_index-3].moperator.GetAssoc() == MatOperator::non_right ) ) ) { MakeStandardMathematicOperation(stack[stack_index-4].value, stack[stack_index-3].moperator.GetType(), stack[stack_index-2].value); /* copying the last operator and setting the stack pointer to the correct value */ stack[stack_index-3] = stack[stack_index-1]; stack_index -= 2; } } /*! this method is trying to roll the stack up without testing any operators for example if there are: "1 - 2" there'll be "-1" on our stack */ void TryRollingUpStack() { while( stack_index >= 3 && stack[stack_index-3].type == Item::numerical_value && stack[stack_index-2].type == Item::mat_operator && stack[stack_index-1].type == Item::numerical_value ) { MakeStandardMathematicOperation( stack[stack_index-3].value, stack[stack_index-2].moperator.GetType(), stack[stack_index-1].value ); stack_index -= 2; } } /*! this method is reading a value or a variable or a function (the normal first bracket as well) and push it into the stack */ int ReadValueVariableOrFunctionAndPushItIntoStack(Item & temp) { int code = ReadValueVariableOrFunction( temp ); if( code == 0 ) { if( stack_index < stack.size() ) stack[stack_index] = temp; else stack.push_back( temp ); ++stack_index; } if( code == 2 ) // there was a final bracket, we didn't push it into the stack // (it'll be read by the 'ReadOperatorAndCheckFinalBracket' method next) code = 0; return code; } /*! this method calculate how many parameters there are on the stack and the index of the first parameter if there aren't any parameters on the stack this method returns 'size' equals zero and 'index' pointing after the first bracket (on non-existend element) */ void HowManyParameters(int & size, int & index) { size = 0; index = stack_index; if( index == 0 ) // we haven't put a first bracket on the stack Error( err_unexpected_final_bracket ); if( stack[index-1].type == Item::first_bracket ) // empty brackets return; for( --index ; index>=1 ; index-=2 ) { if( stack[index].type != Item::numerical_value ) { /* this element must be 'numerical_value', if not that means there's an error in our algorithm */ Error( err_internal_error ); } ++size; if( stack[index-1].type != Item::semicolon ) break; } if( index<1 || stack[index-1].type != Item::first_bracket ) { /* we haven't put a first bracket on the stack */ Error( err_unexpected_final_bracket ); } } /*! this method is being called when the final bracket ')' is being found this method's rolling the stack up, counting how many parameters there are on the stack and if there was a function it's calling the function */ void RollingUpFinalBracket() { int amount_of_parameters; int index; if( stack_index<1 || (stack[stack_index-1].type != Item::numerical_value && stack[stack_index-1].type != Item::first_bracket) ) Error( err_unexpected_final_bracket ); TryRollingUpStack(); HowManyParameters(amount_of_parameters, index); // 'index' will be greater than zero // 'amount_of_parameters' can be zero if( amount_of_parameters==0 && !stack[index-1].function ) Error( err_unexpected_final_bracket ); bool was_sign = stack[index-1].sign; if( stack[index-1].function ) { // the result of a function will be on 'stack[index-1]' // and then at the end we'll set the correct type (numerical value) of this element CallFunction(stack[index-1].function_name, amount_of_parameters, index); } else { /* there was a normal bracket (not a funcion) */ if( amount_of_parameters != 1 ) Error( err_unexpected_semicolon_operator ); /* in the place where is the bracket we put the result */ stack[index-1] = stack[index]; } /* if there was a '-' character before the first bracket we change the sign of the expression */ stack[index-1].sign = false; if( was_sign ) stack[index-1].value.ChangeSign(); stack[index-1].type = Item::numerical_value; /* the pointer of the stack will be pointing on the next (non-existing now) element */ stack_index = index; } /*! this method is putting the operator on the stack */ void PushOperatorIntoStack(Item & temp) { if( stack_index < stack.size() ) stack[stack_index] = temp; else stack.push_back( temp ); ++stack_index; } /*! this method is reading a operator and if it's a final bracket it's calling RollingUpFinalBracket() and reading a operator again */ int ReadOperatorAndCheckFinalBracket(Item & temp) { do { if( ReadOperator(temp) == 1 ) { /* the string is finished */ return 1; } if( temp.type == Item::last_bracket ) RollingUpFinalBracket(); } while( temp.type == Item::last_bracket ); return 0; } /*! we check wheter there are only numerical value's or 'semicolon' operators on the stack */ void CheckIntegrityOfStack() { for(unsigned int i=0 ; iWasStopSignal() ) Error( err_interrupt ); result_code = ReadValueVariableOrFunctionAndPushItIntoStack( item ); if( result_code == 0 ) { if( item.type == Item::first_bracket ) continue; result_code = ReadOperatorAndCheckFinalBracket( item ); } if( result_code==1 || item.type==Item::semicolon ) { /* the string is finished or the 'semicolon' operator has appeared */ if( stack_index == 0 ) Error( err_nothing_has_read ); TryRollingUpStack(); if( result_code == 1 ) { CheckIntegrityOfStack(); return; } } PushOperatorIntoStack( item ); TryRollingUpStackWithOperatorPriority(); } } /*! this method is called at the end of the parsing process on our stack we can have another value than 'numerical_values' for example when someone use the operator ';' in the global scope or there was an error during parsing and the parser hasn't finished its job if there was an error the stack is cleaned up now otherwise we resize stack and leave on it only 'numerical_value' items */ void NormalizeStack() { if( error!=err_ok || stack_index==0 ) { stack.clear(); return; } /* 'stack_index' tell us how many elements there are on the stack, we must resize the stack now because 'stack_index' is using only for parsing and stack has more (or equal) elements than value of 'stack_index' */ stack.resize( stack_index ); for(uint i=stack_index-1 ; i!=uint(-1) ; --i) { if( stack[i].type != Item::numerical_value ) stack.erase( stack.begin() + i ); } } public: /*! the default constructor */ Parser(): default_stack_size(100) { pstop_calculating = 0; puser_variables = 0; puser_functions = 0; pfunction_local_variables = 0; base = 10; deg_rad_grad = 1; error = err_ok; group = 0; comma = '.'; comma2 = ','; param_sep = 0; CreateFunctionsTable(); CreateVariablesTable(); CreateMathematicalOperatorsTable(); } /*! the assignment operator */ Parser & operator=(const Parser & p) { pstop_calculating = p.pstop_calculating; puser_variables = p.puser_variables; puser_functions = p.puser_functions; pfunction_local_variables = 0; base = p.base; deg_rad_grad = p.deg_rad_grad; error = p.error; group = p.group; comma = p.comma; comma2 = p.comma2; param_sep = p.param_sep; /* we don't have to call 'CreateFunctionsTable()' etc. we can only copy these tables */ functions_table = p.functions_table; variables_table = p.variables_table; operators_table = p.operators_table; visited_variables = p.visited_variables; visited_functions = p.visited_functions; return *this; } /*! the copying constructor */ Parser(const Parser & p): default_stack_size(p.default_stack_size) { operator=(p); } /*! the new base of mathematic system default is 10 */ void SetBase(int b) { if( b>=2 && b<=16 ) base = b; } /*! the unit of angles used in: sin,cos,tan,cot,asin,acos,atan,acot 0 - deg 1 - rad (default) 2 - grad */ void SetDegRadGrad(int angle) { if( angle >= 0 || angle <= 2 ) deg_rad_grad = angle; } /*! this method sets a pointer to the object which tell us whether we should stop calculations */ void SetStopObject(const volatile StopCalculating * ps) { pstop_calculating = ps; } /*! this method sets the new table of user-defined variables if you don't want any other variables just put zero value into the 'puser_variables' variable (you can have only one table at the same time) */ void SetVariables(const Objects * pv) { puser_variables = pv; } /*! this method sets the new table of user-defined functions if you don't want any other functions just put zero value into the 'puser_functions' variable (you can have only one table at the same time) */ void SetFunctions(const Objects * pf) { puser_functions = pf; } /*! setting the group character default zero (not used) */ void SetGroup(int g) { group = g; } /*! setting the main comma operator and the additional comma operator the additional operator can be zero (which means it is not used) default are: '.' and ',' */ void SetComma(int c, int c2 = 0) { comma = c; comma2 = c2; } /*! setting an additional character which is used as a parameters separator the main parameters separator is a semicolon (is used always) this character is used also as a global separator */ void SetParamSep(int s) { param_sep = s; } /*! the main method using for parsing string */ ErrorCode Parse(const char * str) { stack_index = 0; pstring = str; error = err_ok; calculated = false; stack.resize( default_stack_size ); try { Parse(); } catch(ErrorCode c) { error = c; calculated = false; } NormalizeStack(); return error; } /*! the main method using for parsing string */ ErrorCode Parse(const std::string & str) { return Parse(str.c_str()); } #ifndef TTMATH_DONT_USE_WCHAR /*! the main method using for parsing string */ ErrorCode Parse(const wchar_t * str) { Misc::AssignString(wide_to_ansi, str); return Parse(wide_to_ansi.c_str()); // !! wide_to_ansi clearing can be added here } /*! the main method using for parsing string */ ErrorCode Parse(const std::wstring & str) { return Parse(str.c_str()); } #endif /*! this method returns true is something was calculated (at least one mathematical operator was used or a function or variable) e.g. true if the string to Parse() looked like this: "1+1" "2*3" "sin(5)" if the string was e.g. "678" the result is false */ bool Calculated() { return calculated; } /*! initializing coefficients used when calculating the gamma (or factorial) function this speed up the next calculations you don't have to call this method explicitly these coefficients will be calculated when needed */ void InitCGamma() { cgamma.InitAll(); } }; } // namespace #endif freebayes-1.3.6/ttmath/ttmaththreads.h000066400000000000000000000116611417247743000200320ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2009, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmaththreads #define headerfilettmaththreads #include "ttmathtypes.h" #ifdef TTMATH_WIN32_THREADS #include #include #endif #ifdef TTMATH_POSIX_THREADS #include #endif /*! \file ttmaththreads.h \brief Some objects used in multithreads environment */ /* this is a simple skeleton of a program in multithreads environment: #define TTMATH_MULTITHREADS #include TTMATH_MULTITHREADS_HELPER int main() { [...] } make sure that macro TTMATH_MULTITHREADS is defined and (somewhere in *.cpp file) use TTMATH_MULTITHREADS_HELPER macro (outside of any classes/functions/namespaces scope) */ namespace ttmath { #ifdef TTMATH_WIN32_THREADS /* we use win32 threads */ /*! in multithreads environment you should use TTMATH_MULTITHREADS_HELPER macro somewhere in *.cpp file (at the moment in win32 this macro does nothing) */ #define TTMATH_MULTITHREADS_HELPER /*! objects of this class are used to synchronize */ class ThreadLock { HANDLE mutex_handle; void CreateName(char * buffer) const { #ifdef _MSC_VER #pragma warning (disable : 4996) // warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. #endif sprintf(buffer, "TTMATH_LOCK_%ul", (unsigned long)GetCurrentProcessId()); #ifdef _MSC_VER #pragma warning (default : 4996) #endif } public: bool Lock() { char buffer[50]; CreateName(buffer); mutex_handle = CreateMutexA(0, false, buffer); if( mutex_handle == 0 ) return false; WaitForSingleObject(mutex_handle, INFINITE); return true; } ThreadLock() { mutex_handle = 0; } ~ThreadLock() { if( mutex_handle != 0 ) { ReleaseMutex(mutex_handle); CloseHandle(mutex_handle); } } }; #endif // #ifdef TTMATH_WIN32_THREADS #ifdef TTMATH_POSIX_THREADS /* we use posix threads */ /*! in multithreads environment you should use TTMATH_MULTITHREADS_HELPER macro somewhere in *.cpp file (this macro defines a pthread_mutex_t object used by TTMath library) */ #define TTMATH_MULTITHREADS_HELPER \ namespace ttmath \ { \ pthread_mutex_t ttmath_mutex = PTHREAD_MUTEX_INITIALIZER; \ } /*! ttmath_mutex will be defined by TTMATH_MULTITHREADS_HELPER macro */ extern pthread_mutex_t ttmath_mutex; /*! objects of this class are used to synchronize */ class ThreadLock { public: bool Lock() { if( pthread_mutex_lock(&ttmath_mutex) != 0 ) return false; return true; } ~ThreadLock() { pthread_mutex_unlock(&ttmath_mutex); } }; #endif // #ifdef TTMATH_POSIX_THREADS #if !defined(TTMATH_POSIX_THREADS) && !defined(TTMATH_WIN32_THREADS) /*! we don't use win32 and pthreads */ /*! */ #define TTMATH_MULTITHREADS_HELPER /*! objects of this class are used to synchronize actually we don't synchronize, the method Lock() returns always 'false' */ class ThreadLock { public: bool Lock() { return false; } }; #endif // #if !defined(TTMATH_POSIX_THREADS) && !defined(TTMATH_WIN32_THREADS) } // namespace #endif freebayes-1.3.6/ttmath/ttmathtypes.h000066400000000000000000000403531417247743000175440ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2012, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathtypes #define headerfilettmathtypes /*! \file ttmathtypes.h \brief constants used in the library As our library is written in header files (templates) we cannot use constants like 'const int' etc. because we should have some source files *.cpp to define this variables. Only what we can have are constants defined by #define preprocessor macros. All macros are preceded by TTMATH_ prefix */ #include #include #include #ifndef _MSC_VER #include // for uint64_t and int64_t on a 32 bit platform #endif /*! the version of the library TTMATH_PRERELEASE_VER is either zero or one zero means that this is the release version of the library (one means something like beta) */ #define TTMATH_MAJOR_VER 0 #define TTMATH_MINOR_VER 9 #define TTMATH_REVISION_VER 3 #define TTMATH_PRERELEASE_VER 0 /*! you can define a platform explicitly by defining either TTMATH_PLATFORM32 or TTMATH_PLATFORM64 macro */ #if !defined TTMATH_PLATFORM32 && !defined TTMATH_PLATFORM64 #if !defined _M_X64 && !defined __x86_64__ /* other platforms than x86 and amd64 are not recognized at the moment so you should set TTMATH_PLATFORMxx manually */ // we're using a 32bit platform #define TTMATH_PLATFORM32 #else // we're using a 64bit platform #define TTMATH_PLATFORM64 #endif #endif /*! asm version of the library is available by default only for: x86 and amd64 platforms and for Microsoft Visual and GCC compilers but you can force using asm version (the same asm as for Microsoft Visual) by defining TTMATH_FORCEASM macro you have to be sure that your compiler accept such an asm format */ #ifndef TTMATH_FORCEASM #if !defined __i386__ && !defined _X86_ && !defined _M_IX86 && !defined __x86_64__ && !defined _M_X64 /*! x86 architecture: __i386__ defined by GNU C _X86_ defined by MinGW32 _M_IX86 defined by Visual Studio, Intel C/C++, Digital Mars and Watcom C/C++ amd64 architecture: __x86_64__ defined by GNU C, CLANG (LLVM) and Sun Studio _M_X64 defined by Visual Studio asm version is available only for x86 or amd64 platforms */ #define TTMATH_NOASM #endif #if !defined _MSC_VER && !defined __GNUC__ /*! another compilers than MS VC or GCC or CLANG (LLVM) by default use no asm version (CLANG defines __GNUC__ too) */ #define TTMATH_NOASM #endif #endif namespace ttmath { #ifdef TTMATH_PLATFORM32 /*! on 32bit platforms one word (uint, sint) will be equal 32bits */ typedef unsigned int uint; typedef signed int sint; /*! on 32 bit platform ulint and slint will be equal 64 bits */ #ifdef _MSC_VER // long long on MS Windows (Visual and GCC mingw compilers) have 64 bits // stdint.h is not available on Visual Studio prior to VS 2010 version typedef unsigned long long int ulint; typedef signed long long int slint; #else // we do not use 'long' here because there is a difference in unix and windows // environments: in unix 'long' has 64 bits but in windows it has only 32 bits typedef uint64_t ulint; typedef int64_t slint; #endif /*! how many bits there are in the uint type */ #define TTMATH_BITS_PER_UINT 32u /*! the mask for the highest bit in the unsigned 32bit word (2^31) */ #define TTMATH_UINT_HIGHEST_BIT 2147483648u /*! the max value of the unsigned 32bit word (2^32 - 1) (all bits equal one) */ #define TTMATH_UINT_MAX_VALUE 4294967295u /*! the number of words (32bit words on 32bit platform) which are kept in built-in variables for a Big<> type (these variables are defined in ttmathbig.h) */ #define TTMATH_BUILTIN_VARIABLES_SIZE 256u /*! this macro returns the number of machine words capable to hold min_bits bits e.g. TTMATH_BITS(128) returns 4 */ #define TTMATH_BITS(min_bits) ((min_bits-1)/32 + 1) #else /*! on 64bit platforms one word (uint, sint) will be equal 64bits */ #ifdef _MSC_VER /* in VC 'long' type has 32 bits, __int64 is VC extension */ typedef unsigned __int64 uint; typedef signed __int64 sint; #else typedef unsigned long uint; typedef signed long sint; #endif /*! on 64bit platforms we do not define ulint and slint */ /*! how many bits there are in the uint type */ #define TTMATH_BITS_PER_UINT 64ul /*! the mask for the highest bit in the unsigned 64bit word (2^63) */ #define TTMATH_UINT_HIGHEST_BIT 9223372036854775808ul /*! the max value of the unsigned 64bit word (2^64 - 1) (all bits equal one) */ #define TTMATH_UINT_MAX_VALUE 18446744073709551615ul /*! the number of words (64bit words on 64bit platforms) which are kept in built-in variables for a Big<> type (these variables are defined in ttmathbig.h) */ #define TTMATH_BUILTIN_VARIABLES_SIZE 128ul /*! this macro returns the number of machine words capable to hold min_bits bits e.g. TTMATH_BITS(128) returns 2 */ #define TTMATH_BITS(min_bits) ((min_bits-1)/64 + 1) #endif } #if defined(TTMATH_MULTITHREADS) && !defined(TTMATH_MULTITHREADS_NOSYNC) #if !defined(TTMATH_POSIX_THREADS) && !defined(TTMATH_WIN32_THREADS) #if defined(_WIN32) #define TTMATH_WIN32_THREADS #elif defined(unix) || defined(__unix__) || defined(__unix) #define TTMATH_POSIX_THREADS #endif #endif #endif /*! this variable defines how many iterations are performed during some kind of calculating when we're making any long formulas (for example Taylor series) it's used in ExpSurrounding0(...), LnSurrounding1(...), Sin0pi05(...), etc. note! there'll not be so many iterations, iterations are stopped when there is no sense to continue calculating (for example when the result still remains unchanged after adding next series and we know that the next series are smaller than previous ones) */ #define TTMATH_ARITHMETIC_MAX_LOOP 10000 /*! this is a limit when calculating Karatsuba multiplication if the size of a vector is smaller than TTMATH_USE_KARATSUBA_MULTIPLICATION_FROM_SIZE the Karatsuba algorithm will use standard schoolbook multiplication */ #ifdef TTMATH_DEBUG_LOG // if TTMATH_DEBUG_LOG is defined then we should use the same size regardless of the compiler #define TTMATH_USE_KARATSUBA_MULTIPLICATION_FROM_SIZE 3 #else #ifdef __GNUC__ #define TTMATH_USE_KARATSUBA_MULTIPLICATION_FROM_SIZE 3 #else #define TTMATH_USE_KARATSUBA_MULTIPLICATION_FROM_SIZE 5 #endif #endif /*! this is a special value used when calculating the Gamma(x) function if x is greater than this value then the Gamma(x) will be calculated using some kind of series don't use smaller values than about 100 */ #define TTMATH_GAMMA_BOUNDARY 2000 namespace ttmath { /*! lib type codes: asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits) asm_gcc_32 - with asm code designed for GCC (32 bits) asm_vc_64 - with asm for VC (64 bit) asm_gcc_64 - with asm for GCC (64 bit) no_asm_32 - pure C++ version (32 bit) - without any asm code no_asm_64 - pure C++ version (64 bit) - without any asm code */ enum LibTypeCode { asm_vc_32 = 0, asm_gcc_32, asm_vc_64, asm_gcc_64, no_asm_32, no_asm_64 }; /*! error codes */ enum ErrorCode { err_ok = 0, err_nothing_has_read, err_unknown_character, err_unexpected_final_bracket, err_stack_not_clear, err_unknown_variable, err_division_by_zero, err_interrupt, err_overflow, err_unknown_function, err_unknown_operator, err_unexpected_semicolon_operator, err_improper_amount_of_arguments, err_improper_argument, err_unexpected_end, err_internal_error, err_incorrect_name, err_incorrect_value, err_variable_exists, err_variable_loop, err_functions_loop, err_must_be_only_one_value, err_object_exists, err_unknown_object, err_still_calculating, err_in_short_form_used_function, err_percent_from }; /*! this struct is used when converting to/from a string /temporarily only in Big::ToString() and Big::FromString()/ */ struct Conv { /*! base (radix) on which the value will be shown (or read) default: 10 */ uint base; /*! used only in Big::ToString() if true the value will be always shown in the scientific mode, e.g: 123e+30 default: false */ bool scient; /*! used only in Big::ToString() if scient is false then the value will be printed in the scientific mode only if the exponent is greater than scien_from default: 15 */ sint scient_from; /*! if 'base_round' is true and 'base' is different from 2, 4, 8, or 16 and the result value is not an integer then we make an additional rounding (after converting the last digit from the result is skipped) default: true e.g. Conv c; c.base_round = false; Big<1, 1> a = "0.1"; // decimal input std::cout << a.ToString(c) << std::endl; // the result is: 0.099999999 */ bool base_round; /*! used only in Big::ToString() tells how many digits after comma are possible default: -1 which means all digits are printed set it to zero if you want integer value only for example when the value is: 12.345678 and 'round' is 4 then the result will be 12.3457 (the last digit was rounded) */ sint round; /*! if true that not mattered digits in the mantissa will be cut off (zero characters at the end -- after the comma operator) e.g. 1234,78000 will be: 1234,78 default: true */ bool trim_zeroes; /*! the main comma operator (used when reading and writing) default is a dot '.' */ uint comma; /*! additional comma operator (used only when reading) if you don't want it just set it to zero default is a comma ',' this allowes you to convert from a value: 123.45 as well as from 123,45 */ uint comma2; /*! it sets the character which is used for grouping if group=' ' then: 1234,56789 will be printed as: 1 234,567 89 if you don't want grouping just set it to zero (which is default) */ uint group; /*! how many digits should be grouped (it is used if 'group' is non zero) default: 3 */ uint group_digits; /*! */ uint group_exp; // not implemented yet Conv() { // default values base = 10; scient = false; scient_from = 15; base_round = true; round = -1; trim_zeroes = true; comma = '.'; comma2 = ','; group = 0; group_digits = 3; group_exp = 0; } }; /*! this simple class can be used in multithreading model (you can write your own class derived from this one) for example: in some functions like Factorial() /at the moment only Factorial/ you can give a pointer to the 'stop object', if the method WasStopSignal() of this object returns true that means we should break the calculating and return */ class StopCalculating { public: virtual bool WasStopSignal() const volatile { return false; } virtual ~StopCalculating(){} }; /*! a small class which is useful when compiling with gcc object of this type holds the name and the line of a file in which the macro TTMATH_ASSERT or TTMATH_REFERENCE_ASSERT was used */ class ExceptionInfo { const char * file; int line; public: ExceptionInfo() : file(0), line(0) {} ExceptionInfo(const char * f, int l) : file(f), line(l) {} std::string Where() const { if( !file ) return "unknown"; std::ostringstream result; result << file << ":" << line; return result.str(); } }; /*! A small class used for reporting 'reference' errors In the library is used macro TTMATH_REFERENCE_ASSERT which can throw an exception of this type ** from version 0.9.2 this macro is removed from all methods in public interface so you don't have to worry about it ** If you compile with gcc you can get a small benefit from using method Where() (it returns std::string) with the name and the line of a file where the macro TTMATH_REFERENCE_ASSERT was used) */ class ReferenceError : public std::logic_error, public ExceptionInfo { public: ReferenceError() : std::logic_error("reference error") { } ReferenceError(const char * f, int l) : std::logic_error("reference error"), ExceptionInfo(f,l) { } std::string Where() const { return ExceptionInfo::Where(); } }; /*! a small class used for reporting errors in the library is used macro TTMATH_ASSERT which (if the condition in it is false) throw an exception of this type if you compile with gcc you can get a small benefit from using method Where() (it returns std::string) with the name and the line of a file where the macro TTMATH_ASSERT was used) */ class RuntimeError : public std::runtime_error, public ExceptionInfo { public: RuntimeError() : std::runtime_error("internal error") { } RuntimeError(const char * f, int l) : std::runtime_error("internal error"), ExceptionInfo(f,l) { } std::string Where() const { return ExceptionInfo::Where(); } }; /*! TTMATH_DEBUG this macro enables further testing during writing your code you don't have to define it in a release mode if this macro is set then macros TTMATH_ASSERT and TTMATH_REFERENCE_ASSERT are set as well and these macros can throw an exception if a condition in it is not fulfilled (look at the definition of TTMATH_ASSERT and TTMATH_REFERENCE_ASSERT) TTMATH_DEBUG is set automatically if DEBUG or _DEBUG are defined */ #if defined DEBUG || defined _DEBUG #define TTMATH_DEBUG #endif #ifdef TTMATH_DEBUG #if defined(__FILE__) && defined(__LINE__) #define TTMATH_REFERENCE_ASSERT(expression) \ if( &(expression) == this ) throw ttmath::ReferenceError(__FILE__, __LINE__); #define TTMATH_ASSERT(expression) \ if( !(expression) ) throw ttmath::RuntimeError(__FILE__, __LINE__); #else #define TTMATH_REFERENCE_ASSERT(expression) \ if( &(expression) == this ) throw ReferenceError(); #define TTMATH_ASSERT(expression) \ if( !(expression) ) throw RuntimeError(); #endif #else #define TTMATH_REFERENCE_ASSERT(expression) #define TTMATH_ASSERT(expression) #endif #ifdef TTMATH_DEBUG_LOG #define TTMATH_LOG(msg) PrintLog(msg, std::cout); #define TTMATH_LOGC(msg, carry) PrintLog(msg, carry, std::cout); #define TTMATH_VECTOR_LOG(msg, vector, len) PrintVectorLog(msg, std::cout, vector, len); #define TTMATH_VECTOR_LOGC(msg, carry, vector, len) PrintVectorLog(msg, carry, std::cout, vector, len); #else #define TTMATH_LOG(msg) #define TTMATH_LOGC(msg, carry) #define TTMATH_VECTOR_LOG(msg, vector, len) #define TTMATH_VECTOR_LOGC(msg, carry, vector, len) #endif } // namespace #endif freebayes-1.3.6/ttmath/ttmathuint.h000066400000000000000000002307611417247743000173630ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2011, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathuint #define headerfilettmathuint /*! \file ttmathuint.h \brief template class UInt */ #include #include #include "ttmathtypes.h" #include "ttmathmisc.h" /*! \brief a namespace for the TTMath library */ namespace ttmath { /*! \brief UInt implements a big integer value without a sign value_size - how many bytes specify our value on 32bit platforms: value_size=1 -> 4 bytes -> 32 bits on 64bit platforms: value_size=1 -> 8 bytes -> 64 bits value_size = 1,2,3,4,5,6.... */ template class UInt { public: /*! buffer for the integer value table[0] - the lowest word of the value */ uint table[value_size]; /*! some methods used for debugging purposes */ /*! this method is only for debugging purposes or when we want to make a table of a variable (constant) in ttmathbig.h it prints the table in a nice form of several columns */ template void PrintTable(ostream_type & output) const { // how many columns there'll be const int columns = 8; int c = 1; for(int i=value_size-1 ; i>=0 ; --i) { output << "0x" << std::setfill('0'); #ifdef TTMATH_PLATFORM32 output << std::setw(8); #else output << std::setw(16); #endif output << std::hex << table[i]; if( i>0 ) { output << ", "; if( ++c > columns ) { output << std::endl; c = 1; } } } output << std::dec << std::endl; } /*! this method is used when macro TTMATH_DEBUG_LOG is defined */ template static void PrintVectorLog(const char_type * msg, ostream_type & output, const uint * vector, uint vector_len) { output << msg << std::endl; for(uint i=0 ; i static void PrintVectorLog(const char_type * msg, uint carry, ostream_type & output, const uint * vector, uint vector_len) { PrintVectorLog(msg, output, vector, vector_len); output << " carry: " << carry << std::endl; } /*! this method is used when macro TTMATH_DEBUG_LOG is defined */ template void PrintLog(const char_type * msg, ostream_type & output) const { PrintVectorLog(msg, output, table, value_size); } /*! this method is used when macro TTMATH_DEBUG_LOG is defined */ template void PrintLog(const char_type * msg, uint carry, ostream_type & output) const { PrintVectorLog(msg, output, table, value_size); output << " carry: " << carry << std::endl; } /*! this method returns the size of the table */ uint Size() const { return value_size; } /*! this method sets zero */ void SetZero() { // in the future here can be 'memset' for(uint i=0 ; i & ss2) { for(uint i=0 ; i=0 && temp_table_index=0 ; --i) table[i] = 0; TTMATH_LOG("UInt::SetFromTable") } #endif #ifdef TTMATH_PLATFORM64 /*! this method copies the value stored in an another table (warning: first values in temp_table are the highest words -- it's different from our table) ***this method is created only on a 64bit platform*** we copy as many words as it is possible if temp_table_len is bigger than value_size we'll try to round the lowest word from table depending on the last not used bit in temp_table (this rounding isn't a perfect rounding -- look at the description below) and if temp_table_len is smaller than value_size we'll clear the rest words in the table warning: we're using 'temp_table' as a pointer at 32bit words */ void SetFromTable(const unsigned int * temp_table, uint temp_table_len) { uint temp_table_index = 0; sint i; // 'i' with a sign for(i=value_size-1 ; i>=0 && temp_table_index= 0 ; --i) table[i] = 0; TTMATH_LOG("UInt::SetFromTable") } #endif /*! * * basic mathematic functions * */ /*! this method adds one to the existing value */ uint AddOne() { return AddInt(1); } /*! this method subtracts one from the existing value */ uint SubOne() { return SubInt(1); } private: /*! an auxiliary method for moving bits into the left hand side this method moves only words */ void RclMoveAllWords(uint & rest_bits, uint & last_c, uint bits, uint c) { rest_bits = bits % TTMATH_BITS_PER_UINT; uint all_words = bits / TTMATH_BITS_PER_UINT; uint mask = ( c ) ? TTMATH_UINT_MAX_VALUE : 0; if( all_words >= value_size ) { if( all_words == value_size && rest_bits == 0 ) last_c = table[0] & 1; // else: last_c is default set to 0 // clearing for(uint i = 0 ; i 0 ) { // 0 < all_words < value_size sint first, second; last_c = table[value_size - all_words] & 1; // all_words is greater than 0 // copying the first part of the value for(first = value_size-1, second=first-all_words ; second>=0 ; --first, --second) table[first] = table[second]; // setting the rest to 'c' for( ; first>=0 ; --first ) table[first] = mask; } TTMATH_LOG("UInt::RclMoveAllWords") } public: /*! moving all bits into the left side 'bits' times return value <- this <- C bits is from a range of <0, man * TTMATH_BITS_PER_UINT> or it can be even bigger then all bits will be set to 'c' the value c will be set into the lowest bits and the method returns state of the last moved bit */ uint Rcl(uint bits, uint c=0) { uint last_c = 0; uint rest_bits = bits; if( bits == 0 ) return 0; if( bits >= TTMATH_BITS_PER_UINT ) RclMoveAllWords(rest_bits, last_c, bits, c); if( rest_bits == 0 ) { TTMATH_LOG("UInt::Rcl") return last_c; } // rest_bits is from 1 to TTMATH_BITS_PER_UINT-1 now if( rest_bits == 1 ) { last_c = Rcl2_one(c); } else if( rest_bits == 2 ) { // performance tests showed that for rest_bits==2 it's better to use Rcl2_one twice instead of Rcl2(2,c) Rcl2_one(c); last_c = Rcl2_one(c); } else { last_c = Rcl2(rest_bits, c); } TTMATH_LOGC("UInt::Rcl", last_c) return last_c; } private: /*! an auxiliary method for moving bits into the right hand side this method moves only words */ void RcrMoveAllWords(uint & rest_bits, uint & last_c, uint bits, uint c) { rest_bits = bits % TTMATH_BITS_PER_UINT; uint all_words = bits / TTMATH_BITS_PER_UINT; uint mask = ( c ) ? TTMATH_UINT_MAX_VALUE : 0; if( all_words >= value_size ) { if( all_words == value_size && rest_bits == 0 ) last_c = (table[value_size-1] & TTMATH_UINT_HIGHEST_BIT) ? 1 : 0; // else: last_c is default set to 0 // clearing for(uint i = 0 ; i 0 ) { // 0 < all_words < value_size uint first, second; last_c = (table[all_words - 1] & TTMATH_UINT_HIGHEST_BIT) ? 1 : 0; // all_words is > 0 // copying the first part of the value for(first=0, second=all_words ; second this -> return value bits is from a range of <0, man * TTMATH_BITS_PER_UINT> or it can be even bigger then all bits will be set to 'c' the value c will be set into the highest bits and the method returns state of the last moved bit */ uint Rcr(uint bits, uint c=0) { uint last_c = 0; uint rest_bits = bits; if( bits == 0 ) return 0; if( bits >= TTMATH_BITS_PER_UINT ) RcrMoveAllWords(rest_bits, last_c, bits, c); if( rest_bits == 0 ) { TTMATH_LOG("UInt::Rcr") return last_c; } // rest_bits is from 1 to TTMATH_BITS_PER_UINT-1 now if( rest_bits == 1 ) { last_c = Rcr2_one(c); } else if( rest_bits == 2 ) { // performance tests showed that for rest_bits==2 it's better to use Rcr2_one twice instead of Rcr2(2,c) Rcr2_one(c); last_c = Rcr2_one(c); } else { last_c = Rcr2(rest_bits, c); } TTMATH_LOGC("UInt::Rcr", last_c) return last_c; } /*! this method moves all bits into the left side (it returns value how many bits have been moved) */ uint CompensationToLeft() { uint moving = 0; // a - index a last word which is different from zero sint a; for(a=value_size-1 ; a>=0 && table[a]==0 ; --a); if( a < 0 ) return moving; // all words in table have zero if( a != value_size-1 ) { moving += ( value_size-1 - a ) * TTMATH_BITS_PER_UINT; // moving all words sint i; for(i=value_size-1 ; a>=0 ; --i, --a) table[i] = table[a]; // setting the rest word to zero for(; i>=0 ; --i) table[i] = 0; } uint moving2 = FindLeadingBitInWord( table[value_size-1] ); // moving2 is different from -1 because the value table[value_size-1] // is not zero moving2 = TTMATH_BITS_PER_UINT - moving2 - 1; Rcl(moving2); TTMATH_LOG("UInt::CompensationToLeft") return moving + moving2; } /*! this method looks for the highest set bit result: if 'this' is not zero: return value - true 'table_id' - the index of a word <0..value_size-1> 'index' - the index of this set bit in the word <0..TTMATH_BITS_PER_UINT) if 'this' is zero: return value - false both 'table_id' and 'index' are zero */ bool FindLeadingBit(uint & table_id, uint & index) const { for(table_id=value_size-1 ; table_id!=0 && table[table_id]==0 ; --table_id); if( table_id==0 && table[table_id]==0 ) { // is zero index = 0; return false; } // table[table_id] is different from 0 index = FindLeadingBitInWord( table[table_id] ); return true; } /*! this method looks for the smallest set bit result: if 'this' is not zero: return value - true 'table_id' - the index of a word <0..value_size-1> 'index' - the index of this set bit in the word <0..TTMATH_BITS_PER_UINT) if 'this' is zero: return value - false both 'table_id' and 'index' are zero */ bool FindLowestBit(uint & table_id, uint & index) const { for(table_id=0 ; table_id= value_size ) { // is zero index = 0; table_id = 0; return false; } // table[table_id] is different from 0 index = FindLowestBitInWord( table[table_id] ); return true; } /*! getting the 'bit_index' bit bit_index bigger or equal zero */ uint GetBit(uint bit_index) const { TTMATH_ASSERT( bit_index < value_size * TTMATH_BITS_PER_UINT ) uint index = bit_index / TTMATH_BITS_PER_UINT; uint bit = bit_index % TTMATH_BITS_PER_UINT; uint temp = table[index]; uint res = SetBitInWord(temp, bit); return res; } /*! setting the 'bit_index' bit and returning the last state of the bit bit_index bigger or equal zero */ uint SetBit(uint bit_index) { TTMATH_ASSERT( bit_index < value_size * TTMATH_BITS_PER_UINT ) uint index = bit_index / TTMATH_BITS_PER_UINT; uint bit = bit_index % TTMATH_BITS_PER_UINT; uint res = SetBitInWord(table[index], bit); TTMATH_LOG("UInt::SetBit") return res; } /*! this method performs a bitwise operation AND */ void BitAnd(const UInt & ss2) { for(uint x=0 ; x & ss2) { for(uint x=0 ; x & ss2) { for(uint x=0 ; x for example: BitNot2(8) = BitNot2( 1000(bin) ) = 111(bin) = 7 */ void BitNot2() { uint table_id, index; if( FindLeadingBit(table_id, index) ) { for(uint x=0 ; x>= shift; table[table_id] ^= mask; } else table[0] = 1; TTMATH_LOG("UInt::BitNot2") } /*! * * Multiplication * * */ public: /*! multiplication: this = this * ss2 it can return a carry */ uint MulInt(uint ss2) { uint r1, r2, x1; uint c = 0; UInt u(*this); SetZero(); if( ss2 == 0 ) { TTMATH_LOGC("UInt::MulInt(uint)", 0) return 0; } for(x1=0 ; x1 void MulInt(uint ss2, UInt & result) const { TTMATH_ASSERT( result_size > value_size ) uint r2,r1; uint x1size=value_size; uint x1start=0; result.SetZero(); if( ss2 == 0 ) { TTMATH_VECTOR_LOG("UInt::MulInt(uint, UInt<>)", result.table, result_size) return; } if( value_size > 2 ) { // if the value_size is smaller than or equal to 2 // there is no sense to set x1size and x1start to another values for(x1size=value_size ; x1size>0 && table[x1size-1]==0 ; --x1size); if( x1size == 0 ) { TTMATH_VECTOR_LOG("UInt::MulInt(uint, UInt<>)", result.table, result_size) return; } for(x1start=0 ; x1start)", result.table, result_size) return; } /*! the multiplication 'this' = 'this' * ss2 algorithm: 100 - means automatically choose the fastest algorithm */ uint Mul(const UInt & ss2, uint algorithm = 100) { switch( algorithm ) { case 1: return Mul1(ss2); case 2: return Mul2(ss2); case 3: return Mul3(ss2); case 100: default: return MulFastest(ss2); } } /*! the multiplication 'result' = 'this' * ss2 since the 'result' is twice bigger than 'this' and 'ss2' this method never returns a carry algorithm: 100 - means automatically choose the fastest algorithm */ void MulBig(const UInt & ss2, UInt & result, uint algorithm = 100) { switch( algorithm ) { case 1: return Mul1Big(ss2, result); case 2: return Mul2Big(ss2, result); case 3: return Mul3Big(ss2, result); case 100: default: return MulFastestBig(ss2, result); } } /*! the first version of the multiplication algorithm */ private: /*! multiplication: this = this * ss2 it returns carry if it has been */ uint Mul1Ref(const UInt & ss2) { TTMATH_REFERENCE_ASSERT( ss2 ) UInt ss1( *this ); SetZero(); for(uint i=0; i < value_size*TTMATH_BITS_PER_UINT ; ++i) { if( Add(*this) ) { TTMATH_LOGC("UInt::Mul1", 1) return 1; } if( ss1.Rcl(1) ) if( Add(ss2) ) { TTMATH_LOGC("UInt::Mul1", 1) return 1; } } TTMATH_LOGC("UInt::Mul1", 0) return 0; } public: /*! multiplication: this = this * ss2 can return carry */ uint Mul1(const UInt & ss2) { if( this == &ss2 ) { UInt copy_ss2(ss2); return Mul1Ref(copy_ss2); } else { return Mul1Ref(ss2); } } /*! multiplication: result = this * ss2 result is twice bigger than 'this' and 'ss2' this method never returns carry */ void Mul1Big(const UInt & ss2_, UInt & result) { UInt ss2; uint i; // copying *this into result and ss2_ into ss2 for(i=0 ; i & ss2) { UInt result; uint i, c = 0; Mul2Big(ss2, result); // copying result for(i=0 ; i & ss2, UInt & result) { Mul2Big2(table, ss2.table, result); TTMATH_LOG("UInt::Mul2Big") } private: /*! an auxiliary method for calculating the multiplication arguments we're taking as pointers (this is to improve the Mul3Big2()- avoiding unnecessary copying objects), the result should be taken as a pointer too, but at the moment there is no method AddTwoInts() which can operate on pointers */ template void Mul2Big2(const uint * ss1, const uint * ss2, UInt & result) { uint x1size = ss_size, x2size = ss_size; uint x1start = 0, x2start = 0; if( ss_size > 2 ) { // if the ss_size is smaller than or equal to 2 // there is no sense to set x1size (and others) to another values for(x1size=ss_size ; x1size>0 && ss1[x1size-1]==0 ; --x1size); for(x2size=ss_size ; x2size>0 && ss2[x2size-1]==0 ; --x2size); for(x1start=0 ; x1start(ss1, ss2, result, x1start, x1size, x2start, x2size); } /*! an auxiliary method for calculating the multiplication */ template void Mul2Big3(const uint * ss1, const uint * ss2, UInt & result, uint x1start, uint x1size, uint x2start, uint x2size) { uint r2, r1; result.SetZero(); if( x1size==0 || x2size==0 ) return; for(uint x1=x1start ; x1 & ss2) { UInt result; uint i, c = 0; Mul3Big(ss2, result); // copying result for(i=0 ; i & ss2, UInt & result) { Mul3Big2(table, ss2.table, result.table); TTMATH_LOG("UInt::Mul3Big") } private: /*! an auxiliary method for calculating the Karatsuba multiplication result_size is equal ss_size*2 */ template void Mul3Big2(const uint * ss1, const uint * ss2, uint * result) { const uint * x1, * x0, * y1, * y0; if( ss_size>1 && ss_size res; Mul2Big2(ss1, ss2, res); #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-compare" #endif for(uint i=0 ; i(x1, x0, y1, y0, result); } else { // ss_size is even x0 = ss1; y0 = ss2; x1 = ss1 + ss_size / 2; y1 = ss2 + ss_size / 2; // all four vectors (x0 x1 y0 y1) are equal in size Mul3Big3(x1, x0, y1, y0, result); } } #ifdef _MSC_VER #pragma warning (disable : 4717) //warning C4717: recursive on all control paths, function will cause runtime stack overflow //we have the stop point in Mul3Big2() method #endif /*! an auxiliary method for calculating the Karatsuba multiplication x = x1*B^m + x0 y = y1*B^m + y0 first_size - is the size of vectors: x0 and y0 second_size - is the size of vectors: x1 and y1 (can be either equal first_size or smaller about one from first_size) x*y = (x1*B^m + x0)(y1*B^m + y0) = z2*B^(2m) + z1*B^m + z0 where z0 = x0*y0 z2 = x1*y1 z1 = (x1 + x0)*(y1 + y0) - z2 - z0 */ template void Mul3Big3(const uint * x1, const uint * x0, const uint * y1, const uint * y0, uint * result) { uint i, c, xc, yc; UInt temp, temp2; UInt z1; // z0 and z2 we store directly in the result (we don't use any temporary variables) Mul3Big2(x0, y0, result); // z0 Mul3Big2(x1, y1, result+first_size*2); // z2 // now we calculate z1 // temp = (x0 + x1) // temp2 = (y0 + y1) // we're using temp and temp2 with UInt, although there can be a carry but // we simple remember it in xc and yc (xc and yc can be either 0 or 1), // and (x0 + x1)*(y0 + y1) we calculate in this way (schoolbook algorithm): // // xc | temp // yc | temp2 // -------------------- // (temp * temp2) // xc*temp2 | // yc*temp | // xc*yc | // ---------- z1 -------- // // and the result is never larger in size than 3*first_size xc = AddVector(x0, x1, first_size, second_size, temp.table); yc = AddVector(y0, y1, first_size, second_size, temp2.table); Mul3Big2(temp.table, temp2.table, z1.table); #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-compare" #endif // clearing the rest of z1 for(i=first_size*2 ; i second_size ) { uint z1_size = result_size - first_size; TTMATH_ASSERT( z1_size <= first_size*3 ) #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-compare" #endif for(i=z1_size ; i & ss2) { UInt result; uint i, c = 0; MulFastestBig(ss2, result); // copying result for(i=0 ; i & ss2, UInt & result) { if( value_size < TTMATH_USE_KARATSUBA_MULTIPLICATION_FROM_SIZE ) return Mul2Big(ss2, result); uint x1size = value_size, x2size = value_size; uint x1start = 0, x2start = 0; for(x1size=value_size ; x1size>0 && table[x1size-1]==0 ; --x1size); for(x2size=value_size ; x2size>0 && ss2.table[x2size-1]==0 ; --x2size); if( x1size==0 || x2size==0 ) { // either 'this' or 'ss2' is equal zero - the result is zero too result.SetZero(); return; } for(x1start=0 ; x1start(table, ss2.table, result, x1start, x1size, x2start, x2size); // Karatsuba multiplication Mul3Big(ss2, result); TTMATH_LOG("UInt::MulFastestBig") } /*! * * Division * * */ public: /*! division by one unsigned word returns 1 when divisor is zero */ uint DivInt(uint divisor, uint * remainder = 0) { if( divisor == 0 ) { if( remainder ) *remainder = 0; // this is for convenience, without it the compiler can report that 'remainder' is uninitialized TTMATH_LOG("UInt::DivInt") return 1; } if( divisor == 1 ) { if( remainder ) *remainder = 0; TTMATH_LOG("UInt::DivInt") return 0; } UInt dividend(*this); SetZero(); sint i; // i must be with a sign uint r = 0; // we're looking for the last word in ss1 for(i=value_size-1 ; i>0 && dividend.table[i]==0 ; --i); for( ; i>=0 ; --i) DivTwoWords(r, dividend.table[i], divisor, &table[i], &r); if( remainder ) *remainder = r; TTMATH_LOG("UInt::DivInt") return 0; } uint DivInt(uint divisor, uint & remainder) { return DivInt(divisor, &remainder); } /*! division this = this / ss2 return values: 0 - ok 1 - division by zero 'this' will be the quotient 'remainder' - remainder */ uint Div( const UInt & divisor, UInt * remainder = 0, uint algorithm = 3) { switch( algorithm ) { case 1: return Div1(divisor, remainder); case 2: return Div2(divisor, remainder); case 3: default: return Div3(divisor, remainder); } } uint Div(const UInt & divisor, UInt & remainder, uint algorithm = 3) { return Div(divisor, &remainder, algorithm); } private: /*! return values: 0 - none has to be done 1 - division by zero 2 - division should be made */ uint Div_StandardTest( const UInt & v, uint & m, uint & n, UInt * remainder = 0) { switch( Div_CalculatingSize(v, m, n) ) { case 4: // 'this' is equal v if( remainder ) remainder->SetZero(); SetOne(); TTMATH_LOG("UInt::Div_StandardTest") return 0; case 3: // 'this' is smaller than v if( remainder ) *remainder = *this; SetZero(); TTMATH_LOG("UInt::Div_StandardTest") return 0; case 2: // 'this' is zero if( remainder ) remainder->SetZero(); SetZero(); TTMATH_LOG("UInt::Div_StandardTest") return 0; case 1: // v is zero TTMATH_LOG("UInt::Div_StandardTest") return 1; } TTMATH_LOG("UInt::Div_StandardTest") return 2; } /*! return values: 0 - ok 'm' - is the index (from 0) of last non-zero word in table ('this') 'n' - is the index (from 0) of last non-zero word in v.table 1 - v is zero 2 - 'this' is zero 3 - 'this' is smaller than v 4 - 'this' is equal v if the return value is different than zero the 'm' and 'n' are undefined */ uint Div_CalculatingSize(const UInt & v, uint & m, uint & n) { m = n = value_size-1; for( ; n!=0 && v.table[n]==0 ; --n); if( n==0 && v.table[n]==0 ) return 1; for( ; m!=0 && table[m]==0 ; --m); if( m==0 && table[m]==0 ) return 2; if( m < n ) return 3; else if( m == n ) { uint i; for(i = n ; i!=0 && table[i]==v.table[i] ; --i); if( table[i] < v.table[i] ) return 3; else if (table[i] == v.table[i] ) return 4; } return 0; } public: /*! the first division algorithm radix 2 */ uint Div1(const UInt & divisor, UInt * remainder = 0) { uint m,n, test; test = Div_StandardTest(divisor, m, n, remainder); if( test < 2 ) return test; if( !remainder ) { UInt rem; return Div1_Calculate(divisor, rem); } return Div1_Calculate(divisor, *remainder); } /*! the first division algorithm radix 2 */ uint Div1(const UInt & divisor, UInt & remainder) { return Div1(divisor, &remainder); } private: uint Div1_Calculate(const UInt & divisor, UInt & rest) { if( this == &divisor ) { UInt divisor_copy(divisor); return Div1_CalculateRef(divisor_copy, rest); } else { return Div1_CalculateRef(divisor, rest); } } uint Div1_CalculateRef(const UInt & divisor, UInt & rest) { TTMATH_REFERENCE_ASSERT( divisor ) sint loop; sint c; rest.SetZero(); loop = value_size * TTMATH_BITS_PER_UINT; c = 0; div_a: c = Rcl(1, c); c = rest.Add(rest,c); c = rest.Sub(divisor,c); c = !c; if(!c) goto div_d; div_b: --loop; if(loop) goto div_a; c = Rcl(1, c); TTMATH_LOG("UInt::Div1_Calculate") return 0; div_c: c = Rcl(1, c); c = rest.Add(rest,c); c = rest.Add(divisor); if(c) goto div_b; div_d: --loop; if(loop) goto div_c; c = Rcl(1, c); c = rest.Add(divisor); TTMATH_LOG("UInt::Div1_Calculate") return 0; } public: /*! the second division algorithm return values: 0 - ok 1 - division by zero */ uint Div2(const UInt & divisor, UInt * remainder = 0) { if( this == &divisor ) { UInt divisor_copy(divisor); return Div2Ref(divisor_copy, remainder); } else { return Div2Ref(divisor, remainder); } } /*! the second division algorithm return values: 0 - ok 1 - division by zero */ uint Div2(const UInt & divisor, UInt & remainder) { return Div2(divisor, &remainder); } private: /*! the second division algorithm return values: 0 - ok 1 - division by zero */ uint Div2Ref(const UInt & divisor, UInt * remainder = 0) { uint bits_diff; uint status = Div2_Calculate(divisor, remainder, bits_diff); if( status < 2 ) return status; if( CmpBiggerEqual(divisor) ) { Div2(divisor, remainder); SetBit(bits_diff); } else { if( remainder ) *remainder = *this; SetZero(); SetBit(bits_diff); } TTMATH_LOG("UInt::Div2") return 0; } /*! return values: 0 - we've calculated the division 1 - division by zero 2 - we have to still calculate */ uint Div2_Calculate(const UInt & divisor, UInt * remainder, uint & bits_diff) { uint table_id, index; uint divisor_table_id, divisor_index; uint status = Div2_FindLeadingBitsAndCheck( divisor, remainder, table_id, index, divisor_table_id, divisor_index); if( status < 2 ) { TTMATH_LOG("UInt::Div2_Calculate") return status; } // here we know that 'this' is greater than divisor // then 'index' is greater or equal 'divisor_index' bits_diff = index - divisor_index; UInt divisor_copy(divisor); divisor_copy.Rcl(bits_diff, 0); if( CmpSmaller(divisor_copy, table_id) ) { divisor_copy.Rcr(1); --bits_diff; } Sub(divisor_copy, 0); TTMATH_LOG("UInt::Div2_Calculate") return 2; } /*! return values: 0 - we've calculated the division 1 - division by zero 2 - we have to still calculate */ uint Div2_FindLeadingBitsAndCheck( const UInt & divisor, UInt * remainder, uint & table_id, uint & index, uint & divisor_table_id, uint & divisor_index) { if( !divisor.FindLeadingBit(divisor_table_id, divisor_index) ) { // division by zero TTMATH_LOG("UInt::Div2_FindLeadingBitsAndCheck") return 1; } if( !FindLeadingBit(table_id, index) ) { // zero is divided by something SetZero(); if( remainder ) remainder->SetZero(); TTMATH_LOG("UInt::Div2_FindLeadingBitsAndCheck") return 0; } divisor_index += divisor_table_id * TTMATH_BITS_PER_UINT; index += table_id * TTMATH_BITS_PER_UINT; if( divisor_table_id == 0 ) { // dividor has only one 32-bit word uint r; DivInt(divisor.table[0], &r); if( remainder ) { remainder->SetZero(); remainder->table[0] = r; } TTMATH_LOG("UInt::Div2_FindLeadingBitsAndCheck") return 0; } if( Div2_DivisorGreaterOrEqual( divisor, remainder, table_id, index, divisor_index) ) { TTMATH_LOG("UInt::Div2_FindLeadingBitsAndCheck") return 0; } TTMATH_LOG("UInt::Div2_FindLeadingBitsAndCheck") return 2; } /*! return values: true if divisor is equal or greater than 'this' */ bool Div2_DivisorGreaterOrEqual( const UInt & divisor, UInt * remainder, uint table_id, uint index, uint divisor_index ) { if( divisor_index > index ) { // divisor is greater than this if( remainder ) *remainder = *this; SetZero(); TTMATH_LOG("UInt::Div2_DivisorGreaterOrEqual") return true; } if( divisor_index == index ) { // table_id == divisor_table_id as well uint i; for(i = table_id ; i!=0 && table[i]==divisor.table[i] ; --i); if( table[i] < divisor.table[i] ) { // divisor is greater than 'this' if( remainder ) *remainder = *this; SetZero(); TTMATH_LOG("UInt::Div2_DivisorGreaterOrEqual") return true; } else if( table[i] == divisor.table[i] ) { // divisor is equal 'this' if( remainder ) remainder->SetZero(); SetOne(); TTMATH_LOG("UInt::Div2_DivisorGreaterOrEqual") return true; } } TTMATH_LOG("UInt::Div2_DivisorGreaterOrEqual") return false; } public: /*! the third division algorithm */ uint Div3(const UInt & ss2, UInt * remainder = 0) { if( this == &ss2 ) { UInt copy_ss2(ss2); return Div3Ref(copy_ss2, remainder); } else { return Div3Ref(ss2, remainder); } } /*! the third division algorithm */ uint Div3(const UInt & ss2, UInt & remainder) { return Div3(ss2, &remainder); } private: /*! the third division algorithm this algorithm is described in the following book: "The art of computer programming 2" (4.3.1 page 272) Donald E. Knuth !! give the description here (from the book) */ uint Div3Ref(const UInt & v, UInt * remainder = 0) { uint m,n, test; test = Div_StandardTest(v, m, n, remainder); if( test < 2 ) return test; if( n == 0 ) { uint r; DivInt( v.table[0], &r ); if( remainder ) { remainder->SetZero(); remainder->table[0] = r; } TTMATH_LOG("UInt::Div3") return 0; } // we can only use the third division algorithm when // the divisor is greater or equal 2^32 (has more than one 32-bit word) ++m; ++n; m = m - n; Div3_Division(v, remainder, m, n); TTMATH_LOG("UInt::Div3") return 0; } private: void Div3_Division(UInt v, UInt * remainder, uint m, uint n) { TTMATH_ASSERT( n>=2 ) UInt uu, vv; UInt q; uint d, u_value_size, u0, u1, u2, v1, v0, j=m; u_value_size = Div3_Normalize(v, n, d); if( j+n == value_size ) u2 = u_value_size; else u2 = table[j+n]; Div3_MakeBiggerV(v, vv); for(uint i = j+1 ; i & uu, uint j, uint n, uint u_max) { uint i; for(i=0 ; i so and 'i' is from <0..value_size> // then table[i] is always correct (look at the declaration of 'uu') uu.table[i] = u_max; for( ++i ; i & uu, uint j, uint n) { uint i; for(i=0 ; i & v, UInt & vv) { for(uint i=0 ; i & v, uint n, uint & d) { // v.table[n-1] is != 0 uint bit = (uint)FindLeadingBitInWord(v.table[n-1]); uint move = (TTMATH_BITS_PER_UINT - bit - 1); uint res = table[value_size-1]; d = move; if( move > 0 ) { v.Rcl(move, 0); Rcl(move, 0); res = res >> (bit + 1); } else { res = 0; } TTMATH_LOG("UInt::Div3_Normalize") return res; } void Div3_Unnormalize(UInt * remainder, uint n, uint d) { for(uint i=n ; i u_temp; uint rp; bool next_test; TTMATH_ASSERT( v1 != 0 ) u_temp.table[1] = u2; u_temp.table[0] = u1; u_temp.DivInt(v1, &rp); TTMATH_ASSERT( u_temp.table[1]==0 || u_temp.table[1]==1 ) do { bool decrease = false; if( u_temp.table[1] == 1 ) decrease = true; else { UInt<2> temp1, temp2; UInt<2>::MulTwoWords(u_temp.table[0], v0, temp1.table+1, temp1.table); temp2.table[1] = rp; temp2.table[0] = u0; if( temp1 > temp2 ) decrease = true; } next_test = false; if( decrease ) { u_temp.SubOne(); rp += v1; if( rp >= v1 ) // it means that there wasn't a carry (r & uu, const UInt & vv, uint & qp) { // D4 (in the book) UInt vv_temp(vv); vv_temp.MulInt(qp); if( uu.Sub(vv_temp) ) { // there was a carry // // !!! this part of code was not tested // --qp; uu.Add(vv); // can be a carry from this additions but it should be ignored // because it cancels with the borrow from uu.Sub(vv_temp) } TTMATH_LOG("UInt::Div3_MultiplySubtract") } public: /*! power this = this ^ pow binary algorithm (r-to-l) return values: 0 - ok 1 - carry 2 - incorrect argument (0^0) */ uint Pow(UInt pow) { if(pow.IsZero() && IsZero()) // we don't define zero^zero return 2; UInt start(*this); UInt result; result.SetOne(); uint c = 0; while( !c ) { if( pow.table[0] & 1 ) c += result.Mul(start); pow.Rcr2_one(0); if( pow.IsZero() ) break; c += start.Mul(start); } *this = result; TTMATH_LOGC("UInt::Pow(UInt<>)", c) return (c==0)? 0 : 1; } /*! square root e.g. Sqrt(9) = 3 ('digit-by-digit' algorithm) */ void Sqrt() { UInt bit, temp; if( IsZero() ) return; UInt value(*this); SetZero(); bit.SetZero(); bit.table[value_size-1] = (TTMATH_UINT_HIGHEST_BIT >> 1); while( bit > value ) bit.Rcr(2); while( !bit.IsZero() ) { temp = *this; temp.Add(bit); if( value >= temp ) { value.Sub(temp); Rcr(1); Add(bit); } else { Rcr(1); } bit.Rcr(2); } TTMATH_LOG("UInt::Sqrt") } /*! this method sets n first bits to value zero For example: let n=2 then if there's a value 111 (bin) there'll be '100' (bin) */ void ClearFirstBits(uint n) { if( n >= value_size*TTMATH_BITS_PER_UINT ) { SetZero(); TTMATH_LOG("UInt::ClearFirstBits") return; } uint * p = table; // first we're clearing the whole words while( n >= TTMATH_BITS_PER_UINT ) { *p++ = 0; n -= TTMATH_BITS_PER_UINT; } if( n == 0 ) { TTMATH_LOG("UInt::ClearFirstBits") return; } // and then we're clearing one word which has left // mask -- all bits are set to one uint mask = TTMATH_UINT_MAX_VALUE; mask = mask << n; (*p) &= mask; TTMATH_LOG("UInt::ClearFirstBits") } /*! this method returns true if the highest bit of the value is set */ bool IsTheHighestBitSet() const { return (table[value_size-1] & TTMATH_UINT_HIGHEST_BIT) != 0; } /*! this method returns true if the lowest bit of the value is set */ bool IsTheLowestBitSet() const { return (*table & 1) != 0; } /*! returning true if only the highest bit is set */ bool IsOnlyTheHighestBitSet() const { #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wtautological-compare" #endif for(uint i=0 ; i> (TTMATH_BITS_PER_UINT - rest); return (table[i] & mask) == 0; } /*! * * conversion methods * */ /*! this method converts an UInt type to this class this operation has mainly sense if the value from p is equal or smaller than that one which is returned from UInt::SetMax() it returns a carry if the value 'p' is too big */ template uint FromUInt(const UInt & p) { uint min_size = (value_size < argument_size)? value_size : argument_size; uint i; for(i=0 ; i argument_size ) { // 'this' is longer than 'p' for( ; i)", 1) return 1; } } TTMATH_LOGC("UInt::FromUInt(UInt<>)", 0) return 0; } /*! this method converts an UInt type to this class this operation has mainly sense if the value from p is equal or smaller than that one which is returned from UInt::SetMax() it returns a carry if the value 'p' is too big */ template uint FromInt(const UInt & p) { return FromUInt(p); } /*! this method converts the uint type to this class */ uint FromUInt(uint value) { for(uint i=1 ; i type to this class it doesn't return a carry */ template UInt & operator=(const UInt & p) { FromUInt(p); return *this; } /*! the assignment operator */ UInt & operator=(const UInt & p) { for(uint i=0 ; i)") return *this; } /*! this method converts the uint type to this class */ UInt & operator=(uint i) { FromUInt(i); return *this; } /*! a constructor for converting the uint to this class */ UInt(uint i) { FromUInt(i); } /*! this method converts the sint type to this class */ UInt & operator=(sint i) { FromInt(i); return *this; } /*! a constructor for converting the sint to this class look at the description of UInt::operator=(sint) */ UInt(sint i) { FromInt(i); } #ifdef TTMATH_PLATFORM32 /*! this method converts unsigned 64 bit int type to this class ***this method is created only on a 32bit platform*** */ uint FromUInt(ulint n) { table[0] = (uint)n; if( value_size == 1 ) { uint c = ((n >> TTMATH_BITS_PER_UINT) == 0) ? 0 : 1; TTMATH_LOGC("UInt::FromUInt(ulint)", c) return c; } table[1] = (uint)(n >> TTMATH_BITS_PER_UINT); for(uint i=2 ; i & operator=(ulint n) { FromUInt(n); return *this; } /*! a constructor for converting unsigned 64 bit int to this class ***this constructor is created only on a 32bit platform*** */ UInt(ulint n) { FromUInt(n); } /*! this operator converts signed 64 bit int type to this class ***this operator is created only on a 32bit platform*** */ UInt & operator=(slint n) { FromInt(n); return *this; } /*! a constructor for converting signed 64 bit int to this class ***this constructor is created only on a 32bit platform*** */ UInt(slint n) { FromInt(n); } #endif #ifdef TTMATH_PLATFORM64 /*! this method converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ uint FromUInt(unsigned int i) { return FromUInt(uint(i)); } /*! this method converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ uint FromInt(unsigned int i) { return FromUInt(uint(i)); } /*! this method converts 32 bit signed int type to this class ***this operator is created only on a 64bit platform*** */ uint FromInt(signed int i) { return FromInt(sint(i)); } /*! this operator converts 32 bit unsigned int type to this class ***this operator is created only on a 64bit platform*** */ UInt & operator=(unsigned int i) { FromUInt(i); return *this; } /*! a constructor for converting 32 bit unsigned int to this class ***this constructor is created only on a 64bit platform*** */ UInt(unsigned int i) { FromUInt(i); } /*! an operator for converting 32 bit signed int to this class ***this constructor is created only on a 64bit platform*** */ UInt & operator=(signed int i) { FromInt(i); return *this; } /*! a constructor for converting 32 bit signed int to this class ***this constructor is created only on a 64bit platform*** */ UInt(signed int i) { FromInt(i); } #endif /*! a constructor for converting a string to this class (with the base=10) */ UInt(const char * s) { FromString(s); } /*! a constructor for converting a string to this class (with the base=10) */ UInt(const std::string & s) { FromString( s.c_str() ); } #ifndef TTMATH_DONT_USE_WCHAR /*! a constructor for converting a string to this class (with the base=10) */ UInt(const wchar_t * s) { FromString(s); } /*! a constructor for converting a string to this class (with the base=10) */ UInt(const std::wstring & s) { FromString( s.c_str() ); } #endif /*! a default constructor we don't clear the table */ UInt() { // when macro TTMATH_DEBUG_LOG is defined // we set special values to the table // in order to be everywhere the same value of the UInt object // without this it would be difficult to analyse the log file #ifdef TTMATH_DEBUG_LOG #ifdef TTMATH_PLATFORM32 for(uint i=0 ; i & u) { for(uint i=0 ; i)") } /*! a template for producting constructors for copying from another types */ template UInt(const UInt & u) { // look that 'size' we still set as 'value_size' and not as u.value_size FromUInt(u); } /*! a destructor */ ~UInt() { } /*! this method returns the lowest value from table we must be sure when we using this method whether the value will hold in an uint type or not (the rest value from the table must be zero) */ uint ToUInt() const { return table[0]; } /*! this method converts the value to uint type can return a carry if the value is too long to store it in uint type */ uint ToUInt(uint & result) const { result = table[0]; for(uint i=1 ; i> 32) != 0 ) return 1; for(uint i=1 ; i */ double ToStringLog2(uint x) const { static double log_tab[] = { 1.000000000000000000, 0.630929753571457437, 0.500000000000000000, 0.430676558073393050, 0.386852807234541586, 0.356207187108022176, 0.333333333333333333, 0.315464876785728718, 0.301029995663981195, 0.289064826317887859, 0.278942945651129843, 0.270238154427319741, 0.262649535037193547, 0.255958024809815489, 0.250000000000000000 }; if( x<2 || x>16 ) return 0; return log_tab[x-2]; } public: /*! an auxiliary method for converting to a string it's used from Int::ToString() too (negative is set true then) */ template void ToStringBase(string_type & result, uint b = 10, bool negative = false) const { UInt temp(*this); uint rest, table_id, index, digits; double digits_d; char character; result.clear(); if( b<2 || b>16 ) return; if( !FindLeadingBit(table_id, index) ) { result = '0'; return; } if( negative ) result = '-'; digits_d = table_id; // for not making an overflow in uint type digits_d *= TTMATH_BITS_PER_UINT; digits_d += index + 1; digits_d *= ToStringLog2(b); digits = static_cast(digits_d) + 3; // plus some epsilon if( result.capacity() < digits ) result.reserve(digits); do { temp.DivInt(b, &rest); character = static_cast(Misc::DigitToChar(rest)); result.insert(result.end(), character); } while( !temp.IsZero() ); size_t i1 = negative ? 1 : 0; // the first is a hyphen (when negative is true) size_t i2 = result.size() - 1; for( ; i1 < i2 ; ++i1, --i2 ) { char tempc = static_cast(result[i1]); result[i1] = result[i2]; result[i2] = tempc; } } /*! this method converts the value to a string with a base equal 'b' */ void ToString(std::string & result, uint b = 10) const { return ToStringBase(result, b); } std::string ToString(uint b = 10) const { std::string result; ToStringBase(result, b); return result; } #ifndef TTMATH_DONT_USE_WCHAR void ToString(std::wstring & result, uint b = 10) const { return ToStringBase(result, b); } std::wstring ToWString(uint b = 10) const { std::wstring result; ToStringBase(result, b); return result; } #endif private: /*! an auxiliary method for converting from a string */ template uint FromStringBase(const char_type * s, uint b = 10, const char_type ** after_source = 0, bool * value_read = 0) { UInt base( b ); UInt temp; sint z; uint c = 0; SetZero(); temp.SetZero(); Misc::SkipWhiteCharacters(s); if( after_source ) *after_source = s; if( value_read ) *value_read = false; if( b<2 || b>16 ) return 1; for( ; (z=Misc::CharToDigit(*s, b)) != -1 ; ++s) { if( value_read ) *value_read = true; if( c == 0 ) { temp.table[0] = z; c += Mul(base); // !! IMPROVE ME: there can be used MulInt here c += Add(temp); } } if( after_source ) *after_source = s; TTMATH_LOGC("UInt::FromString", c) return (c==0)? 0 : 1; } public: /*! this method converts a string into its value it returns carry=1 if the value will be too big or an incorrect base 'b' is given string is ended with a non-digit value, for example: "12" will be translated to 12 as well as: "12foo" will be translated to 12 too existing first white characters will be ommited if the value from s is too large the rest digits will be skipped after_source (if exists) is pointing at the end of the parsed string value_read (if exists) tells whether something has actually been read (at least one digit) */ uint FromString(const char * s, uint b = 10, const char ** after_source = 0, bool * value_read = 0) { return FromStringBase(s, b, after_source, value_read); } /*! this method converts a string into its value (it returns carry=1 if the value will be too big or an incorrect base 'b' is given) */ uint FromString(const std::string & s, uint b = 10) { return FromString( s.c_str(), b ); } /*! this operator converts a string into its value (with base = 10) */ UInt & operator=(const char * s) { FromString(s); return *this; } /*! this operator converts a string into its value (with base = 10) */ UInt & operator=(const std::string & s) { FromString( s.c_str() ); return *this; } #ifndef TTMATH_DONT_USE_WCHAR /*! this method converts a string into its value */ uint FromString(const wchar_t * s, uint b = 10, const wchar_t ** after_source = 0, bool * value_read = 0) { return FromStringBase(s, b, after_source, value_read); } /*! this method converts a string into its value (it returns carry=1 if the value will be too big or an incorrect base 'b' is given) */ uint FromString(const std::wstring & s, uint b = 10) { return FromString( s.c_str(), b ); } /*! this operator converts a string into its value (with base = 10) */ UInt & operator=(const wchar_t * s) { FromString(s); return *this; } /*! this operator converts a string into its value (with base = 10) */ UInt & operator=(const std::wstring & s) { FromString( s.c_str() ); return *this; } #endif /*! * * methods for comparing * */ /*! this method returns true if 'this' is smaller than 'l' 'index' is an index of the first word from will be the comparison performed (note: we start the comparison from back - from the last word, when index is -1 /default/ it is automatically set into the last word) I introduced it for some kind of optimization made in the second division algorithm (Div2) */ bool CmpSmaller(const UInt & l, sint index = -1) const { sint i; if( index==-1 || index>=sint(value_size) ) i = value_size - 1; else i = index; for( ; i>=0 ; --i) { if( table[i] != l.table[i] ) return table[i] < l.table[i]; } // they're equal return false; } /*! this method returns true if 'this' is bigger than 'l' 'index' is an index of the first word from will be the comparison performed (note: we start the comparison from back - from the last word, when index is -1 /default/ it is automatically set into the last word) I introduced it for some kind of optimization made in the second division algorithm (Div2) */ bool CmpBigger(const UInt & l, sint index = -1) const { sint i; if( index==-1 || index>=sint(value_size) ) i = value_size - 1; else i = index; for( ; i>=0 ; --i) { if( table[i] != l.table[i] ) return table[i] > l.table[i]; } // they're equal return false; } /*! this method returns true if 'this' is equal 'l' 'index' is an index of the first word from will be the comparison performed (note: we start the comparison from back - from the last word, when index is -1 /default/ it is automatically set into the last word) */ bool CmpEqual(const UInt & l, sint index = -1) const { sint i; if( index==-1 || index>=sint(value_size) ) i = value_size - 1; else i = index; for( ; i>=0 ; --i) if( table[i] != l.table[i] ) return false; return true; } /*! this method returns true if 'this' is smaller than or equal 'l' 'index' is an index of the first word from will be the comparison performed (note: we start the comparison from back - from the last word, when index is -1 /default/ it is automatically set into the last word) */ bool CmpSmallerEqual(const UInt & l, sint index=-1) const { sint i; if( index==-1 || index>=sint(value_size) ) i = value_size - 1; else i = index; for( ; i>=0 ; --i) { if( table[i] != l.table[i] ) return table[i] < l.table[i]; } // they're equal return true; } /*! this method returns true if 'this' is bigger than or equal 'l' 'index' is an index of the first word from will be the comparison performed (note: we start the comparison from back - from the last word, when index is -1 /default/ it is automatically set into the last word) */ bool CmpBiggerEqual(const UInt & l, sint index=-1) const { sint i; if( index==-1 || index>=sint(value_size) ) i = value_size - 1; else i = index; for( ; i>=0 ; --i) { if( table[i] != l.table[i] ) return table[i] > l.table[i]; } // they're equal return true; } /* operators for comparising */ bool operator<(const UInt & l) const { return CmpSmaller(l); } bool operator>(const UInt & l) const { return CmpBigger(l); } bool operator==(const UInt & l) const { return CmpEqual(l); } bool operator!=(const UInt & l) const { return !operator==(l); } bool operator<=(const UInt & l) const { return CmpSmallerEqual(l); } bool operator>=(const UInt & l) const { return CmpBiggerEqual(l); } /*! * * standard mathematical operators * */ UInt operator-(const UInt & p2) const { UInt temp(*this); temp.Sub(p2); return temp; } UInt & operator-=(const UInt & p2) { Sub(p2); return *this; } UInt operator+(const UInt & p2) const { UInt temp(*this); temp.Add(p2); return temp; } UInt & operator+=(const UInt & p2) { Add(p2); return *this; } UInt operator*(const UInt & p2) const { UInt temp(*this); temp.Mul(p2); return temp; } UInt & operator*=(const UInt & p2) { Mul(p2); return *this; } UInt operator/(const UInt & p2) const { UInt temp(*this); temp.Div(p2); return temp; } UInt & operator/=(const UInt & p2) { Div(p2); return *this; } UInt operator%(const UInt & p2) const { UInt temp(*this); UInt remainder; temp.Div( p2, remainder ); return remainder; } UInt & operator%=(const UInt & p2) { UInt remainder; Div( p2, remainder ); operator=(remainder); return *this; } /*! Prefix operator e.g ++variable */ UInt & operator++() { AddOne(); return *this; } /*! Postfix operator e.g variable++ */ UInt operator++(int) { UInt temp( *this ); AddOne(); return temp; } UInt & operator--() { SubOne(); return *this; } UInt operator--(int) { UInt temp( *this ); SubOne(); return temp; } /*! * * bitwise operators * */ UInt operator~() const { UInt temp( *this ); temp.BitNot(); return temp; } UInt operator&(const UInt & p2) const { UInt temp( *this ); temp.BitAnd(p2); return temp; } UInt & operator&=(const UInt & p2) { BitAnd(p2); return *this; } UInt operator|(const UInt & p2) const { UInt temp( *this ); temp.BitOr(p2); return temp; } UInt & operator|=(const UInt & p2) { BitOr(p2); return *this; } UInt operator^(const UInt & p2) const { UInt temp( *this ); temp.BitXor(p2); return temp; } UInt & operator^=(const UInt & p2) { BitXor(p2); return *this; } UInt operator>>(int move) const { UInt temp( *this ); temp.Rcr(move); return temp; } UInt & operator>>=(int move) { Rcr(move); return *this; } UInt operator<<(int move) const { UInt temp( *this ); temp.Rcl(move); return temp; } UInt & operator<<=(int move) { Rcl(move); return *this; } /*! * * input/output operators for standard streams * * (they are very simple, in the future they should be changed) * */ private: /*! an auxiliary method for outputing to standard streams */ template static ostream_type & OutputToStream(ostream_type & s, const UInt & l) { string_type ss; l.ToString(ss); s << ss; return s; } public: /*! output to standard streams */ friend std::ostream & operator<<(std::ostream & s, const UInt & l) { return OutputToStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! output to standard streams */ friend std::wostream & operator<<(std::wostream & s, const UInt & l) { return OutputToStream(s, l); } #endif private: /*! an auxiliary method for reading from standard streams */ template static istream_type & InputFromStream(istream_type & s, UInt & l) { string_type ss; // char or wchar_t for operator>> char_type z; // operator>> omits white characters if they're set for ommiting s >> z; // we're reading only digits (base=10) while( s.good() && Misc::CharToDigit(z, 10)>=0 ) { ss += z; z = static_cast(s.get()); } // we're leaving the last read character // (it's not belonging to the value) s.unget(); l.FromString(ss); return s; } public: /*! input from standard streams */ friend std::istream & operator>>(std::istream & s, UInt & l) { return InputFromStream(s, l); } #ifndef TTMATH_DONT_USE_WCHAR /*! input from standard streams */ friend std::wistream & operator>>(std::wistream & s, UInt & l) { return InputFromStream(s, l); } #endif /* Following methods are defined in: ttmathuint_x86.h ttmathuint_x86_64.h ttmathuint_noasm.h */ #ifdef TTMATH_NOASM static uint AddTwoWords(uint a, uint b, uint carry, uint * result); static uint SubTwoWords(uint a, uint b, uint carry, uint * result); #ifdef TTMATH_PLATFORM64 union uint_ { struct { unsigned int low; // 32 bit unsigned int high; // 32 bit } u_; uint u; // 64 bit }; static void DivTwoWords2(uint a,uint b, uint c, uint * r, uint * rest); static uint DivTwoWordsNormalize(uint_ & a_, uint_ & b_, uint_ & c_); static uint DivTwoWordsUnnormalize(uint u, uint d); static unsigned int DivTwoWordsCalculate(uint_ u_, unsigned int u3, uint_ v_); static void MultiplySubtract(uint_ & u_, unsigned int & u3, unsigned int & q, uint_ v_); #endif // TTMATH_PLATFORM64 #endif // TTMATH_NOASM private: uint Rcl2_one(uint c); uint Rcr2_one(uint c); uint Rcl2(uint bits, uint c); uint Rcr2(uint bits, uint c); public: static const char * LibTypeStr(); static LibTypeCode LibType(); uint Add(const UInt & ss2, uint c=0); uint AddInt(uint value, uint index = 0); uint AddTwoInts(uint x2, uint x1, uint index); static uint AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result); uint Sub(const UInt & ss2, uint c=0); uint SubInt(uint value, uint index = 0); static uint SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result); static sint FindLeadingBitInWord(uint x); static sint FindLowestBitInWord(uint x); static uint SetBitInWord(uint & value, uint bit); static void MulTwoWords(uint a, uint b, uint * result_high, uint * result_low); static void DivTwoWords(uint a,uint b, uint c, uint * r, uint * rest); }; /*! this specialization is needed in order to not confused the compiler "error: ISO C++ forbids zero-size array" when compiling Mul3Big2() method */ template<> class UInt<0> { public: uint table[1]; void Mul2Big(const UInt<0> &, UInt<0> &) { TTMATH_ASSERT(false) }; void SetZero() { TTMATH_ASSERT(false) }; uint AddTwoInts(uint, uint, uint) { TTMATH_ASSERT(false) return 0; }; }; } //namespace #include "ttmathuint_x86.h" #include "ttmathuint_x86_64.h" #include "ttmathuint_noasm.h" #endif freebayes-1.3.6/ttmath/ttmathuint_noasm.h000066400000000000000000000522151417247743000205540ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2010, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathuint_noasm #define headerfilettmathuint_noasm #ifdef TTMATH_NOASM /*! \file ttmathuint_noasm.h \brief template class UInt with methods without any assembler code this file is included at the end of ttmathuint.h */ namespace ttmath { /*! returning the string represents the currect type of the library we have following types: asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits) asm_gcc_32 - with asm code designed for GCC (32 bits) asm_vc_64 - with asm for VC (64 bit) asm_gcc_64 - with asm for GCC (64 bit) no_asm_32 - pure C++ version (32 bit) - without any asm code no_asm_64 - pure C++ version (64 bit) - without any asm code */ template const char * UInt::LibTypeStr() { #ifdef TTMATH_PLATFORM32 static const char info[] = "no_asm_32"; #endif #ifdef TTMATH_PLATFORM64 static const char info[] = "no_asm_64"; #endif return info; } /*! returning the currect type of the library */ template LibTypeCode UInt::LibType() { #ifdef TTMATH_PLATFORM32 LibTypeCode info = no_asm_32; #endif #ifdef TTMATH_PLATFORM64 LibTypeCode info = no_asm_64; #endif return info; } /*! this method adds two words together returns carry this method is created only when TTMATH_NOASM macro is defined */ template uint UInt::AddTwoWords(uint a, uint b, uint carry, uint * result) { uint temp; if( carry == 0 ) { temp = a + b; if( temp < a ) carry = 1; } else { carry = 1; temp = a + b + carry; if( temp > a ) // !(temp<=a) carry = 0; } *result = temp; return carry; } /*! this method adding ss2 to the this and adding carry if it's defined (this = this + ss2 + c) c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it was) */ template uint UInt::Add(const UInt & ss2, uint c) { uint i; for(i=0 ; i uint UInt::AddInt(uint value, uint index) { uint i, c; TTMATH_ASSERT( index < value_size ) c = AddTwoWords(table[index], value, 0, &table[index]); for(i=index+1 ; i uint UInt::AddTwoInts(uint x2, uint x1, uint index) { uint i, c; TTMATH_ASSERT( index < value_size - 1 ) c = AddTwoWords(table[index], x1, 0, &table[index]); c = AddTwoWords(table[index+1], x2, c, &table[index+1]); for(i=index+2 ; i uint UInt::AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { uint i, c = 0; TTMATH_ASSERT( ss1_size >= ss2_size ) for(i=0 ; i uint UInt::SubTwoWords(uint a, uint b, uint carry, uint * result) { if( carry == 0 ) { *result = a - b; if( a < b ) carry = 1; } else { carry = 1; *result = a - b - carry; if( a > b ) // !(a <= b ) carry = 0; } return carry; } /*! this method's subtracting ss2 from the 'this' and subtracting carry if it has been defined (this = this - ss2 - c) c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it was) */ template uint UInt::Sub(const UInt & ss2, uint c) { uint i; for(i=0 ; i uint UInt::SubInt(uint value, uint index) { uint i, c; TTMATH_ASSERT( index < value_size ) c = SubTwoWords(table[index], value, 0, &table[index]); for(i=index+1 ; i uint UInt::SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { uint i, c = 0; TTMATH_ASSERT( ss1_size >= ss2_size ) for(i=0 ; i uint UInt::Rcl2_one(uint c) { uint i, new_c; if( c != 0 ) c = 1; for(i=0 ; i this -> return value the highest *bit* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2_one(1) there'll be 100000001 and Rcr2_one returns 0 */ template uint UInt::Rcr2_one(uint c) { sint i; // signed i uint new_c; if( c != 0 ) c = TTMATH_UINT_HIGHEST_BIT; for(i=sint(value_size)-1 ; i>=0 ; --i) { new_c = (table[i] & 1) ? TTMATH_UINT_HIGHEST_BIT : 0; table[i] = (table[i] >> 1) | c; c = new_c; } c = (c != 0)? 1 : 0; TTMATH_LOGC("UInt::Rcr2_one", c) return c; } /*! this method moves all bits into the left hand side return value <- this <- c the lowest *bits* will be held the 'c' and the state of one additional bit (on the left hand side) will be returned for example: let this is 001010000 after Rcl2(3, 1) there'll be 010000111 and Rcl2 returns 1 */ template uint UInt::Rcl2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits> move; for(i=0 ; i> move; table[i] = (table[i] << bits) | c; c = new_c; } TTMATH_LOGC("UInt::Rcl2", (c & 1)) return (c & 1); } /*! this method moves all bits into the right hand side C -> this -> return value the highest *bits* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2(2, 1) there'll be 110000000 and Rcr2 returns 1 */ template uint UInt::Rcr2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits=0 ; --i) { new_c = table[i] << move; table[i] = (table[i] >> bits) | c; c = new_c; } c = (c & TTMATH_UINT_HIGHEST_BIT) ? 1 : 0; TTMATH_LOGC("UInt::Rcr2", c) return c; } /*! this method returns the number of the highest set bit in x if the 'x' is zero this method returns '-1' */ template sint UInt::FindLeadingBitInWord(uint x) { if( x == 0 ) return -1; uint bit = TTMATH_BITS_PER_UINT - 1; while( (x & TTMATH_UINT_HIGHEST_BIT) == 0 ) { x = x << 1; --bit; } return bit; } /*! this method returns the number of the highest set bit in x if the 'x' is zero this method returns '-1' */ template sint UInt::FindLowestBitInWord(uint x) { if( x == 0 ) return -1; uint bit = 0; while( (x & 1) == 0 ) { x = x >> 1; ++bit; } return bit; } /*! this method sets a special bit in the 'value' and returns the last state of the bit (zero or one) bit is from <0,TTMATH_BITS_PER_UINT-1> e.g. uint x = 100; uint bit = SetBitInWord(x, 3); now: x = 108 and bit = 0 */ template uint UInt::SetBitInWord(uint & value, uint bit) { TTMATH_ASSERT( bit < TTMATH_BITS_PER_UINT ) uint mask = 1; if( bit > 0 ) mask = mask << bit; uint last = value & mask; value = value | mask; return (last != 0) ? 1 : 0; } /*! * * Multiplication * * */ /*! multiplication: result_high:result_low = a * b result_high - higher word of the result result_low - lower word of the result this methos never returns a carry this method is used in the second version of the multiplication algorithms */ template void UInt::MulTwoWords(uint a, uint b, uint * result_high, uint * result_low) { #ifdef TTMATH_PLATFORM32 /* on 32bit platforms we have defined 'unsigned long long int' type known as 'ulint' in ttmath namespace this type has 64 bits, then we're using only one multiplication: 32bit * 32bit = 64bit */ union uint_ { struct { uint low; // 32 bits uint high; // 32 bits } u_; ulint u; // 64 bits } res; res.u = ulint(a) * ulint(b); // multiply two 32bit words, the result has 64 bits *result_high = res.u_.high; *result_low = res.u_.low; #else /* 64 bits platforms we don't have a native type which has 128 bits then we're splitting 'a' and 'b' to 4 parts (high and low halves) and using 4 multiplications (with additions and carry correctness) */ uint_ a_; uint_ b_; uint_ res_high1, res_high2; uint_ res_low1, res_low2; a_.u = a; b_.u = b; /* the multiplication is as follows (schoolbook algorithm with O(n^2) ): 32 bits 32 bits +--------------------------------+ | a_.u_.high | a_.u_.low | +--------------------------------+ | b_.u_.high | b_.u_.low | +--------------------------------+--------------------------------+ | res_high1.u | res_low1.u | +--------------------------------+--------------------------------+ | res_high2.u | res_low2.u | +--------------------------------+--------------------------------+ 64 bits 64 bits */ uint_ temp; res_low1.u = uint(b_.u_.low) * uint(a_.u_.low); temp.u = uint(res_low1.u_.high) + uint(b_.u_.low) * uint(a_.u_.high); res_low1.u_.high = temp.u_.low; res_high1.u_.low = temp.u_.high; res_high1.u_.high = 0; res_low2.u_.low = 0; temp.u = uint(b_.u_.high) * uint(a_.u_.low); res_low2.u_.high = temp.u_.low; res_high2.u = uint(b_.u_.high) * uint(a_.u_.high) + uint(temp.u_.high); uint c = AddTwoWords(res_low1.u, res_low2.u, 0, &res_low2.u); AddTwoWords(res_high1.u, res_high2.u, c, &res_high2.u); // there is no carry from here *result_high = res_high2.u; *result_low = res_low2.u; #endif } /*! * * Division * * */ /*! this method calculates 64bits word a:b / 32bits c (a higher, b lower word) r = a:b / c and rest - remainder * * WARNING: * the c has to be suitably large for the result being keeped in one word, * if c is equal zero there'll be a hardware interruption (0) * and probably the end of your program * */ template void UInt::DivTwoWords(uint a, uint b, uint c, uint * r, uint * rest) { // (a < c ) for the result to be one word TTMATH_ASSERT( c != 0 && a < c ) #ifdef TTMATH_PLATFORM32 union { struct { uint low; // 32 bits uint high; // 32 bits } u_; ulint u; // 64 bits } ab; ab.u_.high = a; ab.u_.low = b; *r = uint(ab.u / c); *rest = uint(ab.u % c); #else uint_ c_; c_.u = c; if( a == 0 ) { *r = b / c; *rest = b % c; } else if( c_.u_.high == 0 ) { // higher half of 'c' is zero // then higher half of 'a' is zero too (look at the asserts at the beginning - 'a' is smaller than 'c') uint_ a_, b_, res_, temp1, temp2; a_.u = a; b_.u = b; temp1.u_.high = a_.u_.low; temp1.u_.low = b_.u_.high; res_.u_.high = (unsigned int)(temp1.u / c); temp2.u_.high = (unsigned int)(temp1.u % c); temp2.u_.low = b_.u_.low; res_.u_.low = (unsigned int)(temp2.u / c); *rest = temp2.u % c; *r = res_.u; } else { return DivTwoWords2(a, b, c, r, rest); } #endif } #ifdef TTMATH_PLATFORM64 /*! this method is available only on 64bit platforms the same algorithm like the third division algorithm in ttmathuint.h but now with the radix=2^32 */ template void UInt::DivTwoWords2(uint a, uint b, uint c, uint * r, uint * rest) { // a is not zero // c_.u_.high is not zero uint_ a_, b_, c_, u_, q_; unsigned int u3; // 32 bit a_.u = a; b_.u = b; c_.u = c; // normalizing uint d = DivTwoWordsNormalize(a_, b_, c_); // loop from j=1 to j=0 // the first step (for j=2) is skipped because our result is only in one word, // (first 'q' were 0 and nothing would be changed) u_.u_.high = a_.u_.high; u_.u_.low = a_.u_.low; u3 = b_.u_.high; q_.u_.high = DivTwoWordsCalculate(u_, u3, c_); MultiplySubtract(u_, u3, q_.u_.high, c_); u_.u_.high = u_.u_.low; u_.u_.low = u3; u3 = b_.u_.low; q_.u_.low = DivTwoWordsCalculate(u_, u3, c_); MultiplySubtract(u_, u3, q_.u_.low, c_); *r = q_.u; // unnormalizing for the remainder u_.u_.high = u_.u_.low; u_.u_.low = u3; *rest = DivTwoWordsUnnormalize(u_.u, d); } template uint UInt::DivTwoWordsNormalize(uint_ & a_, uint_ & b_, uint_ & c_) { uint d = 0; for( ; (c_.u & TTMATH_UINT_HIGHEST_BIT) == 0 ; ++d ) { c_.u = c_.u << 1; uint bc = b_.u & TTMATH_UINT_HIGHEST_BIT; // carry from 'b' b_.u = b_.u << 1; a_.u = a_.u << 1; // carry bits from 'a' are simply skipped if( bc ) a_.u = a_.u | 1; } return d; } template uint UInt::DivTwoWordsUnnormalize(uint u, uint d) { if( d == 0 ) return u; u = u >> d; return u; } template unsigned int UInt::DivTwoWordsCalculate(uint_ u_, unsigned int u3, uint_ v_) { bool next_test; uint_ qp_, rp_, temp_; qp_.u = u_.u / uint(v_.u_.high); rp_.u = u_.u % uint(v_.u_.high); TTMATH_ASSERT( qp_.u_.high==0 || qp_.u_.high==1 ) do { bool decrease = false; if( qp_.u_.high == 1 ) decrease = true; else { temp_.u_.high = rp_.u_.low; temp_.u_.low = u3; if( qp_.u * uint(v_.u_.low) > temp_.u ) decrease = true; } next_test = false; if( decrease ) { --qp_.u; rp_.u += v_.u_.high; if( rp_.u_.high == 0 ) next_test = true; } } while( next_test ); return qp_.u_.low; } template void UInt::MultiplySubtract(uint_ & u_, unsigned int & u3, unsigned int & q, uint_ v_) { uint_ temp_; uint res_high; uint res_low; MulTwoWords(v_.u, q, &res_high, &res_low); uint_ sub_res_high_; uint_ sub_res_low_; temp_.u_.high = u_.u_.low; temp_.u_.low = u3; uint c = SubTwoWords(temp_.u, res_low, 0, &sub_res_low_.u); temp_.u_.high = 0; temp_.u_.low = u_.u_.high; c = SubTwoWords(temp_.u, res_high, c, &sub_res_high_.u); if( c ) { --q; c = AddTwoWords(sub_res_low_.u, v_.u, 0, &sub_res_low_.u); AddTwoWords(sub_res_high_.u, 0, c, &sub_res_high_.u); } u_.u_.high = sub_res_high_.u_.low; u_.u_.low = sub_res_low_.u_.high; u3 = sub_res_low_.u_.low; } #endif // #ifdef TTMATH_PLATFORM64 } //namespace #endif //ifdef TTMATH_NOASM #endif freebayes-1.3.6/ttmath/ttmathuint_x86.h000066400000000000000000000717411417247743000200710ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2009, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathuint_x86 #define headerfilettmathuint_x86 #ifndef TTMATH_NOASM #ifdef TTMATH_PLATFORM32 /*! \file ttmathuint_x86.h \brief template class UInt with assembler code for 32bit x86 processors this file is included at the end of ttmathuint.h */ /*! \brief a namespace for the TTMath library */ namespace ttmath { /*! returning the string represents the currect type of the library we have following types: asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits) asm_gcc_32 - with asm code designed for GCC (32 bits) asm_vc_64 - with asm for VC (64 bit) asm_gcc_64 - with asm for GCC (64 bit) no_asm_32 - pure C++ version (32 bit) - without any asm code no_asm_64 - pure C++ version (64 bit) - without any asm code */ template const char * UInt::LibTypeStr() { #ifndef __GNUC__ static const char info[] = "asm_vc_32"; #endif #ifdef __GNUC__ static const char info[] = "asm_gcc_32"; #endif return info; } /*! returning the currect type of the library */ template LibTypeCode UInt::LibType() { #ifndef __GNUC__ LibTypeCode info = asm_vc_32; #endif #ifdef __GNUC__ LibTypeCode info = asm_gcc_32; #endif return info; } /*! * * basic mathematic functions * */ /*! adding ss2 to the this and adding carry if it's defined (this = this + ss2 + c) c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it has been) */ template uint UInt::Add(const UInt & ss2, uint c) { uint b = value_size; uint * p1 = table; uint * p2 = const_cast(ss2.table); // we don't have to use TTMATH_REFERENCE_ASSERT here // this algorithm doesn't require it #ifndef __GNUC__ // this part might be compiled with for example visual c __asm { push eax push ebx push ecx push edx push esi mov ecx,[b] mov ebx,[p1] mov esi,[p2] xor edx,edx // edx=0 mov eax,[c] neg eax // CF=1 if rax!=0 , CF=0 if rax==0 ttmath_loop: mov eax,[esi+edx*4] adc [ebx+edx*4],eax inc edx dec ecx jnz ttmath_loop adc ecx, ecx mov [c], ecx pop esi pop edx pop ecx pop ebx pop eax } #endif #ifdef __GNUC__ uint dummy, dummy2; // this part should be compiled with gcc __asm__ __volatile__( "xorl %%edx, %%edx \n" "negl %%eax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "movl (%%esi,%%edx,4), %%eax \n" "adcl %%eax, (%%ebx,%%edx,4) \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "adc %%ecx, %%ecx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1), "S" (p2) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Add", c) return c; } /*! adding one word (at a specific position) and returning a carry (if it has been) e.g. if we've got (value_size=3): table[0] = 10; table[1] = 30; table[2] = 5; and we call: AddInt(2,1) then it'll be: table[0] = 10; table[1] = 30 + 2; table[2] = 5; of course if there was a carry from table[2] it would be returned */ template uint UInt::AddInt(uint value, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size ) #ifndef __GNUC__ __asm { push eax push ebx push ecx push edx mov ecx, [b] sub ecx, [index] mov edx, [index] mov ebx, [p1] mov eax, [value] ttmath_loop: add [ebx+edx*4], eax jnc ttmath_end mov eax, 1 inc edx dec ecx jnz ttmath_loop ttmath_end: setc al movzx edx, al mov [c], edx pop edx pop ecx pop ebx pop eax } #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subl %%edx, %%ecx \n" "1: \n" "addl %%eax, (%%ebx,%%edx,4) \n" "jnc 2f \n" "movl $1, %%eax \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%edx \n" : "=d" (c), "=a" (dummy), "=c" (dummy2) : "0" (index), "1" (value), "2" (b), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::AddInt", c) return c; } /*! adding only two unsigned words to the existing value and these words begin on the 'index' position (it's used in the multiplication algorithm 2) index should be equal or smaller than value_size-2 (index <= value_size-2) x1 - lower word, x2 - higher word for example if we've got value_size equal 4 and: table[0] = 3 table[1] = 4 table[2] = 5 table[3] = 6 then let x1 = 10 x2 = 20 and index = 1 the result of this method will be: table[0] = 3 table[1] = 4 + x1 = 14 table[2] = 5 + x2 = 25 table[3] = 6 and no carry at the end of table[3] (of course if there was a carry in table[2](5+20) then this carry would be passed to the table[3] etc.) */ template uint UInt::AddTwoInts(uint x2, uint x1, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size - 1 ) #ifndef __GNUC__ __asm { push eax push ebx push ecx push edx mov ecx, [b] sub ecx, [index] mov ebx, [p1] mov edx, [index] mov eax, [x1] add [ebx+edx*4], eax inc edx dec ecx mov eax, [x2] ttmath_loop: adc [ebx+edx*4], eax jnc ttmath_end mov eax, 0 inc edx dec ecx jnz ttmath_loop ttmath_end: setc al movzx edx, al mov [c], edx pop edx pop ecx pop ebx pop eax } #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subl %%edx, %%ecx \n" "addl %%esi, (%%ebx,%%edx,4) \n" "incl %%edx \n" "decl %%ecx \n" "1: \n" "adcl %%eax, (%%ebx,%%edx,4) \n" "jnc 2f \n" "mov $0, %%eax \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%eax \n" : "=a" (c), "=c" (dummy), "=d" (dummy2) : "0" (x2), "1" (b), "2" (index), "b" (p1), "S" (x1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::AddTwoInts", c) return c; } /*! this static method addes one vector to the other 'ss1' is larger in size or equal to 'ss2' ss1 points to the first (larger) vector ss2 points to the second vector ss1_size - size of the ss1 (and size of the result too) ss2_size - size of the ss2 result - is the result vector (which has size the same as ss1: ss1_size) Example: ss1_size is 5, ss2_size is 3 ss1: ss2: result (output): 5 1 5+1 4 3 4+3 2 7 2+7 6 6 9 9 of course the carry is propagated and will be returned from the last item (this method is used by the Karatsuba multiplication algorithm) */ template uint UInt::AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { TTMATH_ASSERT( ss1_size >= ss2_size ) uint rest = ss1_size - ss2_size; uint c; #ifndef __GNUC__ // this part might be compiled with for example visual c __asm { pushad mov ecx, [ss2_size] xor edx, edx // edx = 0, cf = 0 mov esi, [ss1] mov ebx, [ss2] mov edi, [result] ttmath_loop: mov eax, [esi+edx*4] adc eax, [ebx+edx*4] mov [edi+edx*4], eax inc edx dec ecx jnz ttmath_loop adc ecx, ecx // ecx has the cf state mov ebx, [rest] or ebx, ebx jz ttmath_end xor ebx, ebx // ebx = 0 neg ecx // setting cf from ecx mov ecx, [rest] // ecx is != 0 ttmath_loop2: mov eax, [esi+edx*4] adc eax, ebx mov [edi+edx*4], eax inc edx dec ecx jnz ttmath_loop2 adc ecx, ecx ttmath_end: mov [c], ecx popad } #endif #ifdef __GNUC__ // this part should be compiled with gcc uint dummy1, dummy2, dummy3; __asm__ __volatile__( "push %%edx \n" "xor %%edx, %%edx \n" // edx = 0, cf = 0 "1: \n" "mov (%%esi,%%edx,4), %%eax \n" "adc (%%ebx,%%edx,4), %%eax \n" "mov %%eax, (%%edi,%%edx,4) \n" "inc %%edx \n" "dec %%ecx \n" "jnz 1b \n" "adc %%ecx, %%ecx \n" // ecx has the cf state "pop %%eax \n" // eax = rest "or %%eax, %%eax \n" "jz 3f \n" "xor %%ebx, %%ebx \n" // ebx = 0 "neg %%ecx \n" // setting cf from ecx "mov %%eax, %%ecx \n" // ecx=rest and is != 0 "2: \n" "mov (%%esi, %%edx, 4), %%eax \n" "adc %%ebx, %%eax \n" "mov %%eax, (%%edi, %%edx, 4) \n" "inc %%edx \n" "dec %%ecx \n" "jnz 2b \n" "adc %%ecx, %%ecx \n" "3: \n" : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3) : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result) : "cc", "memory" ); #endif TTMATH_VECTOR_LOGC("UInt::AddVector", c, result, ss1_size) return c; } /*! subtracting ss2 from the 'this' and subtracting carry if it has been defined (this = this - ss2 - c) c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it has been) */ template uint UInt::Sub(const UInt & ss2, uint c) { uint b = value_size; uint * p1 = table; uint * p2 = const_cast(ss2.table); // we don't have to use TTMATH_REFERENCE_ASSERT here // this algorithm doesn't require it #ifndef __GNUC__ __asm { push eax push ebx push ecx push edx push esi mov ecx,[b] mov ebx,[p1] mov esi,[p2] xor edx,edx // edx=0 mov eax,[c] neg eax // CF=1 if rax!=0 , CF=0 if rax==0 ttmath_loop: mov eax,[esi+edx*4] sbb [ebx+edx*4],eax inc edx dec ecx jnz ttmath_loop adc ecx, ecx mov [c], ecx pop esi pop edx pop ecx pop ebx pop eax } #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "xorl %%edx, %%edx \n" "negl %%eax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "movl (%%esi,%%edx,4), %%eax \n" "sbbl %%eax, (%%ebx,%%edx,4) \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "adc %%ecx, %%ecx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1), "S" (p2) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Sub", c) return c; } /*! this method subtracts one word (at a specific position) and returns a carry (if it was) e.g. if we've got (value_size=3): table[0] = 10; table[1] = 30; table[2] = 5; and we call: SubInt(2,1) then it'll be: table[0] = 10; table[1] = 30 - 2; table[2] = 5; of course if there was a carry from table[2] it would be returned */ template uint UInt::SubInt(uint value, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size ) #ifndef __GNUC__ __asm { push eax push ebx push ecx push edx mov ecx, [b] sub ecx, [index] mov edx, [index] mov ebx, [p1] mov eax, [value] ttmath_loop: sub [ebx+edx*4], eax jnc ttmath_end mov eax, 1 inc edx dec ecx jnz ttmath_loop ttmath_end: setc al movzx edx, al mov [c], edx pop edx pop ecx pop ebx pop eax } #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subl %%edx, %%ecx \n" "1: \n" "subl %%eax, (%%ebx,%%edx,4) \n" "jnc 2f \n" "movl $1, %%eax \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%edx \n" : "=d" (c), "=a" (dummy), "=c" (dummy2) : "0" (index), "1" (value), "2" (b), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::SubInt", c) return c; } /*! this static method subtractes one vector from the other 'ss1' is larger in size or equal to 'ss2' ss1 points to the first (larger) vector ss2 points to the second vector ss1_size - size of the ss1 (and size of the result too) ss2_size - size of the ss2 result - is the result vector (which has size the same as ss1: ss1_size) Example: ss1_size is 5, ss2_size is 3 ss1: ss2: result (output): 5 1 5-1 4 3 4-3 2 7 2-7 6 6-1 (the borrow from previous item) 9 9 return (carry): 0 of course the carry (borrow) is propagated and will be returned from the last item (this method is used by the Karatsuba multiplication algorithm) */ template uint UInt::SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { TTMATH_ASSERT( ss1_size >= ss2_size ) uint rest = ss1_size - ss2_size; uint c; #ifndef __GNUC__ // this part might be compiled with for example visual c /* the asm code is nearly the same as in AddVector only two instructions 'adc' are changed to 'sbb' */ __asm { pushad mov ecx, [ss2_size] xor edx, edx // edx = 0, cf = 0 mov esi, [ss1] mov ebx, [ss2] mov edi, [result] ttmath_loop: mov eax, [esi+edx*4] sbb eax, [ebx+edx*4] mov [edi+edx*4], eax inc edx dec ecx jnz ttmath_loop adc ecx, ecx // ecx has the cf state mov ebx, [rest] or ebx, ebx jz ttmath_end xor ebx, ebx // ebx = 0 neg ecx // setting cf from ecx mov ecx, [rest] // ecx is != 0 ttmath_loop2: mov eax, [esi+edx*4] sbb eax, ebx mov [edi+edx*4], eax inc edx dec ecx jnz ttmath_loop2 adc ecx, ecx ttmath_end: mov [c], ecx popad } #endif #ifdef __GNUC__ // this part should be compiled with gcc uint dummy1, dummy2, dummy3; __asm__ __volatile__( "push %%edx \n" "xor %%edx, %%edx \n" // edx = 0, cf = 0 "1: \n" "mov (%%esi,%%edx,4), %%eax \n" "sbb (%%ebx,%%edx,4), %%eax \n" "mov %%eax, (%%edi,%%edx,4) \n" "inc %%edx \n" "dec %%ecx \n" "jnz 1b \n" "adc %%ecx, %%ecx \n" // ecx has the cf state "pop %%eax \n" // eax = rest "or %%eax, %%eax \n" "jz 3f \n" "xor %%ebx, %%ebx \n" // ebx = 0 "neg %%ecx \n" // setting cf from ecx "mov %%eax, %%ecx \n" // ecx=rest and is != 0 "2: \n" "mov (%%esi, %%edx, 4), %%eax \n" "sbb %%ebx, %%eax \n" "mov %%eax, (%%edi, %%edx, 4) \n" "inc %%edx \n" "dec %%ecx \n" "jnz 2b \n" "adc %%ecx, %%ecx \n" "3: \n" : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3) : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result) : "cc", "memory" ); #endif TTMATH_VECTOR_LOGC("UInt::SubVector", c, result, ss1_size) return c; } /*! this method moves all bits into the left hand side return value <- this <- c the lowest *bit* will be held the 'c' and the state of one additional bit (on the left hand side) will be returned for example: let this is 001010000 after Rcl2_one(1) there'll be 010100001 and Rcl2_one returns 0 */ template uint UInt::Rcl2_one(uint c) { uint b = value_size; uint * p1 = table; #ifndef __GNUC__ __asm { push ebx push ecx push edx mov ebx, [p1] xor edx, edx mov ecx, [c] neg ecx mov ecx, [b] ttmath_loop: rcl dword ptr [ebx+edx*4], 1 inc edx dec ecx jnz ttmath_loop adc ecx, ecx mov [c], ecx pop edx pop ecx pop ebx } #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "xorl %%edx, %%edx \n" // edx=0 "negl %%eax \n" // CF=1 if eax!=0 , CF=0 if eax==0 "1: \n" "rcll $1, (%%ebx, %%edx, 4) \n" "incl %%edx \n" "decl %%ecx \n" "jnz 1b \n" "adcl %%ecx, %%ecx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Rcl2_one", c) return c; } /*! this method moves all bits into the right hand side c -> this -> return value the highest *bit* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2_one(1) there'll be 100000001 and Rcr2_one returns 0 */ template uint UInt::Rcr2_one(uint c) { uint b = value_size; uint * p1 = table; #ifndef __GNUC__ __asm { push ebx push ecx mov ebx, [p1] mov ecx, [c] neg ecx mov ecx, [b] ttmath_loop: rcr dword ptr [ebx+ecx*4-4], 1 dec ecx jnz ttmath_loop adc ecx, ecx mov [c], ecx pop ecx pop ebx } #endif #ifdef __GNUC__ uint dummy; __asm__ __volatile__( "negl %%eax \n" // CF=1 if eax!=0 , CF=0 if eax==0 "1: \n" "rcrl $1, -4(%%ebx, %%ecx, 4) \n" "decl %%ecx \n" "jnz 1b \n" "adcl %%ecx, %%ecx \n" : "=c" (c), "=a" (dummy) : "0" (b), "1" (c), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Rcr2_one", c) return c; } #ifdef _MSC_VER #pragma warning (disable : 4731) //warning C4731: frame pointer register 'ebp' modified by inline assembly code #endif /*! this method moves all bits into the left hand side return value <- this <- c the lowest *bits* will be held the 'c' and the state of one additional bit (on the left hand side) will be returned for example: let this is 001010000 after Rcl2(3, 1) there'll be 010000111 and Rcl2 returns 1 */ template uint UInt::Rcl2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits edx -> cf) (cl times) "movl %%edx, %%ebp \n" // ebp = edx = mask "movl %%esi, %%ecx \n" "xorl %%edx, %%edx \n" "movl %%edx, %%esi \n" "orl %%eax, %%eax \n" "cmovnz %%ebp, %%esi \n" // if(c) esi=mask else esi=0 "1: \n" "roll %%cl, (%%ebx,%%edx,4) \n" "movl (%%ebx,%%edx,4), %%eax \n" "andl %%ebp, %%eax \n" "xorl %%eax, (%%ebx,%%edx,4) \n" "orl %%esi, (%%ebx,%%edx,4) \n" "movl %%eax, %%esi \n" "incl %%edx \n" "decl %%edi \n" "jnz 1b \n" "and $1, %%eax \n" "pop %%ebp \n" : "=a" (c), "=D" (dummy), "=S" (dummy2), "=d" (dummy3) : "0" (c), "1" (b), "b" (p1), "c" (bits) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Rcl2", c) return c; } /*! this method moves all bits into the right hand side C -> this -> return value the highest *bits* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2(2, 1) there'll be 110000000 and Rcr2 returns 1 */ template uint UInt::Rcr2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits sint UInt::FindLeadingBitInWord(uint x) { sint result; #ifndef __GNUC__ __asm { push eax push edx mov edx,-1 bsr eax,[x] cmovz eax,edx mov [result], eax pop edx pop eax } #endif #ifdef __GNUC__ uint dummy; __asm__ ( "movl $-1, %1 \n" "bsrl %2, %0 \n" "cmovz %1, %0 \n" : "=r" (result), "=&r" (dummy) : "r" (x) : "cc" ); #endif return result; } /* this method returns the number of the smallest set bit in one 32-bit word if the 'x' is zero this method returns '-1' */ template sint UInt::FindLowestBitInWord(uint x) { sint result; #ifndef __GNUC__ __asm { push eax push edx mov edx,-1 bsf eax,[x] cmovz eax,edx mov [result], eax pop edx pop eax } #endif #ifdef __GNUC__ uint dummy; __asm__ ( "movl $-1, %1 \n" "bsfl %2, %0 \n" "cmovz %1, %0 \n" : "=r" (result), "=&r" (dummy) : "r" (x) : "cc" ); #endif return result; } /*! this method sets a special bit in the 'value' and returns the last state of the bit (zero or one) bit is from <0,31> e.g. uint x = 100; uint bit = SetBitInWord(x, 3); now: x = 108 and bit = 0 */ template uint UInt::SetBitInWord(uint & value, uint bit) { TTMATH_ASSERT( bit < TTMATH_BITS_PER_UINT ) uint old_bit; uint v = value; #ifndef __GNUC__ __asm { push ebx push eax mov eax, [v] mov ebx, [bit] bts eax, ebx mov [v], eax setc bl movzx ebx, bl mov [old_bit], ebx pop eax pop ebx } #endif #ifdef __GNUC__ __asm__ ( "btsl %%ebx, %%eax \n" "setc %%bl \n" "movzx %%bl, %%ebx \n" : "=a" (v), "=b" (old_bit) : "0" (v), "1" (bit) : "cc" ); #endif value = v; return old_bit; } /*! multiplication: result_high:result_low = a * b result_high - higher word of the result result_low - lower word of the result this methos never returns a carry this method is used in the second version of the multiplication algorithms */ template void UInt::MulTwoWords(uint a, uint b, uint * result_high, uint * result_low) { /* we must use these temporary variables in order to inform the compilator that value pointed with result1 and result2 has changed this has no effect in visual studio but it's useful when using gcc and options like -Ox */ uint result1_; uint result2_; #ifndef __GNUC__ __asm { push eax push edx mov eax, [a] mul dword ptr [b] mov [result2_], edx mov [result1_], eax pop edx pop eax } #endif #ifdef __GNUC__ __asm__ ( "mull %%edx \n" : "=a" (result1_), "=d" (result2_) : "0" (a), "1" (b) : "cc" ); #endif *result_low = result1_; *result_high = result2_; } /*! * * Division * * */ /*! this method calculates 64bits word a:b / 32bits c (a higher, b lower word) r = a:b / c and rest - remainder * * WARNING: * if r (one word) is too small for the result or c is equal zero * there'll be a hardware interruption (0) * and probably the end of your program * */ template void UInt::DivTwoWords(uint a, uint b, uint c, uint * r, uint * rest) { uint r_; uint rest_; /* these variables have similar meaning like those in the multiplication algorithm MulTwoWords */ TTMATH_ASSERT( c != 0 ) #ifndef __GNUC__ __asm { push eax push edx mov edx, [a] mov eax, [b] div dword ptr [c] mov [r_], eax mov [rest_], edx pop edx pop eax } #endif #ifdef __GNUC__ __asm__ ( "divl %%ecx \n" : "=a" (r_), "=d" (rest_) : "0" (b), "1" (a), "c" (c) : "cc" ); #endif *r = r_; *rest = rest_; } } //namespace #endif //ifdef TTMATH_PLATFORM32 #endif //ifndef TTMATH_NOASM #endif freebayes-1.3.6/ttmath/ttmathuint_x86_64.h000066400000000000000000000600031417247743000203670ustar00rootroot00000000000000/* * This file is a part of TTMath Bignum Library * and is distributed under the (new) BSD licence. * Author: Tomasz Sowa */ /* * Copyright (c) 2006-2010, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * 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. * * * Neither the name Tomasz Sowa nor the names of contributors to this * project 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 OWNER 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. */ #ifndef headerfilettmathuint_x86_64 #define headerfilettmathuint_x86_64 #ifndef TTMATH_NOASM #ifdef TTMATH_PLATFORM64 /*! \file ttmathuint_x86_64.h \brief template class UInt with assembler code for 64bit x86_64 processors this file is included at the end of ttmathuint.h */ #ifndef __GNUC__ #include #endif namespace ttmath { #ifndef __GNUC__ extern "C" { uint __fastcall ttmath_adc_x64(uint* p1, const uint* p2, uint nSize, uint c); uint __fastcall ttmath_addindexed_x64(uint* p1, uint nSize, uint nPos, uint nValue); uint __fastcall ttmath_addindexed2_x64(uint* p1, uint nSize, uint nPos, uint nValue1, uint nValue2); uint __fastcall ttmath_addvector_x64(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result); uint __fastcall ttmath_sbb_x64(uint* p1, const uint* p2, uint nSize, uint c); uint __fastcall ttmath_subindexed_x64(uint* p1, uint nSize, uint nPos, uint nValue); uint __fastcall ttmath_subvector_x64(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result); uint __fastcall ttmath_rcl_x64(uint* p1, uint nSize, uint nLowestBit); uint __fastcall ttmath_rcr_x64(uint* p1, uint nSize, uint nLowestBit); uint __fastcall ttmath_div_x64(uint* pnValHi, uint* pnValLo, uint nDiv); uint __fastcall ttmath_rcl2_x64(uint* p1, uint nSize, uint nBits, uint c); uint __fastcall ttmath_rcr2_x64(uint* p1, uint nSize, uint nBits, uint c); }; #endif /*! returning the string represents the currect type of the library we have following types: asm_vc_32 - with asm code designed for Microsoft Visual C++ (32 bits) asm_gcc_32 - with asm code designed for GCC (32 bits) asm_vc_64 - with asm for VC (64 bit) asm_gcc_64 - with asm for GCC (64 bit) no_asm_32 - pure C++ version (32 bit) - without any asm code no_asm_64 - pure C++ version (64 bit) - without any asm code */ template const char * UInt::LibTypeStr() { #ifndef __GNUC__ static const char info[] = "asm_vc_64"; #endif #ifdef __GNUC__ static const char info[] = "asm_gcc_64"; #endif return info; } /*! returning the currect type of the library */ template LibTypeCode UInt::LibType() { #ifndef __GNUC__ LibTypeCode info = asm_vc_64; #endif #ifdef __GNUC__ LibTypeCode info = asm_gcc_64; #endif return info; } /*! * * basic mathematic functions * */ /*! this method adding ss2 to the this and adding carry if it's defined (this = this + ss2 + c) ***this method is created only on a 64bit platform*** c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it was) */ template uint UInt::Add(const UInt & ss2, uint c) { uint b = value_size; uint * p1 = table; const uint * p2 = ss2.table; // we don't have to use TTMATH_REFERENCE_ASSERT here // this algorithm doesn't require it #ifndef __GNUC__ c = ttmath_adc_x64(p1,p2,b,c); #endif #ifdef __GNUC__ uint dummy, dummy2; /* this part should be compiled with gcc */ __asm__ __volatile__( "xorq %%rdx, %%rdx \n" "negq %%rax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "movq (%%rsi,%%rdx,8), %%rax \n" "adcq %%rax, (%%rbx,%%rdx,8) \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "adcq %%rcx, %%rcx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1), "S" (p2) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Add", c) return c; } /*! this method adds one word (at a specific position) and returns a carry (if it was) ***this method is created only on a 64bit platform*** if we've got (value_size=3): table[0] = 10; table[1] = 30; table[2] = 5; and we call: AddInt(2,1) then it'll be: table[0] = 10; table[1] = 30 + 2; table[2] = 5; of course if there was a carry from table[2] it would be returned */ template uint UInt::AddInt(uint value, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size ) #ifndef __GNUC__ c = ttmath_addindexed_x64(p1,b,index,value); #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subq %%rdx, %%rcx \n" "1: \n" "addq %%rax, (%%rbx,%%rdx,8) \n" "jnc 2f \n" "movq $1, %%rax \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%rdx \n" : "=d" (c), "=a" (dummy), "=c" (dummy2) : "0" (index), "1" (value), "2" (b), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::AddInt", c) return c; } /*! this method adds only two unsigned words to the existing value and these words begin on the 'index' position (it's used in the multiplication algorithm 2) ***this method is created only on a 64bit platform*** index should be equal or smaller than value_size-2 (index <= value_size-2) x1 - lower word, x2 - higher word for example if we've got value_size equal 4 and: table[0] = 3 table[1] = 4 table[2] = 5 table[3] = 6 then let x1 = 10 x2 = 20 and index = 1 the result of this method will be: table[0] = 3 table[1] = 4 + x1 = 14 table[2] = 5 + x2 = 25 table[3] = 6 and no carry at the end of table[3] (of course if there was a carry in table[2](5+20) then this carry would be passed to the table[3] etc.) */ template uint UInt::AddTwoInts(uint x2, uint x1, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size - 1 ) #ifndef __GNUC__ c = ttmath_addindexed2_x64(p1,b,index,x1,x2); #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subq %%rdx, %%rcx \n" "addq %%rsi, (%%rbx,%%rdx,8) \n" "incq %%rdx \n" "decq %%rcx \n" "1: \n" "adcq %%rax, (%%rbx,%%rdx,8) \n" "jnc 2f \n" "mov $0, %%rax \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%rax \n" : "=a" (c), "=c" (dummy), "=d" (dummy2) : "0" (x2), "1" (b), "2" (index), "b" (p1), "S" (x1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::AddTwoInts", c) return c; } /*! this static method addes one vector to the other 'ss1' is larger in size or equal to 'ss2' ss1 points to the first (larger) vector ss2 points to the second vector ss1_size - size of the ss1 (and size of the result too) ss2_size - size of the ss2 result - is the result vector (which has size the same as ss1: ss1_size) Example: ss1_size is 5, ss2_size is 3 ss1: ss2: result (output): 5 1 5+1 4 3 4+3 2 7 2+7 6 6 9 9 of course the carry is propagated and will be returned from the last item (this method is used by the Karatsuba multiplication algorithm) */ template uint UInt::AddVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { TTMATH_ASSERT( ss1_size >= ss2_size ) uint c; #ifndef __GNUC__ c = ttmath_addvector_x64(ss1, ss2, ss1_size, ss2_size, result); #endif #ifdef __GNUC__ uint dummy1, dummy2, dummy3; uint rest = ss1_size - ss2_size; // this part should be compiled with gcc __asm__ __volatile__( "mov %%rdx, %%r8 \n" "xor %%rdx, %%rdx \n" // rdx = 0, cf = 0 "1: \n" "mov (%%rsi,%%rdx,8), %%rax \n" "adc (%%rbx,%%rdx,8), %%rax \n" "mov %%rax, (%%rdi,%%rdx,8) \n" "inc %%rdx \n" "dec %%rcx \n" "jnz 1b \n" "adc %%rcx, %%rcx \n" // rcx has the cf state "or %%r8, %%r8 \n" "jz 3f \n" "xor %%rbx, %%rbx \n" // ebx = 0 "neg %%rcx \n" // setting cf from rcx "mov %%r8, %%rcx \n" // rcx=rest and is != 0 "2: \n" "mov (%%rsi, %%rdx, 8), %%rax \n" "adc %%rbx, %%rax \n" "mov %%rax, (%%rdi, %%rdx, 8) \n" "inc %%rdx \n" "dec %%rcx \n" "jnz 2b \n" "adc %%rcx, %%rcx \n" "3: \n" : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3) : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result) : "%r8", "cc", "memory" ); #endif TTMATH_VECTOR_LOGC("UInt::AddVector", c, result, ss1_size) return c; } /*! this method's subtracting ss2 from the 'this' and subtracting carry if it has been defined (this = this - ss2 - c) ***this method is created only on a 64bit platform*** c must be zero or one (might be a bigger value than 1) function returns carry (1) (if it was) */ template uint UInt::Sub(const UInt & ss2, uint c) { uint b = value_size; uint * p1 = table; const uint * p2 = ss2.table; // we don't have to use TTMATH_REFERENCE_ASSERT here // this algorithm doesn't require it #ifndef __GNUC__ c = ttmath_sbb_x64(p1,p2,b,c); #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "xorq %%rdx, %%rdx \n" "negq %%rax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "movq (%%rsi,%%rdx,8), %%rax \n" "sbbq %%rax, (%%rbx,%%rdx,8) \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "adcq %%rcx, %%rcx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1), "S" (p2) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Sub", c) return c; } /*! this method subtracts one word (at a specific position) and returns a carry (if it was) ***this method is created only on a 64bit platform*** if we've got (value_size=3): table[0] = 10; table[1] = 30; table[2] = 5; and we call: SubInt(2,1) then it'll be: table[0] = 10; table[1] = 30 - 2; table[2] = 5; of course if there was a carry from table[2] it would be returned */ template uint UInt::SubInt(uint value, uint index) { uint b = value_size; uint * p1 = table; uint c; TTMATH_ASSERT( index < value_size ) #ifndef __GNUC__ c = ttmath_subindexed_x64(p1,b,index,value); #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "subq %%rdx, %%rcx \n" "1: \n" "subq %%rax, (%%rbx,%%rdx,8) \n" "jnc 2f \n" "movq $1, %%rax \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "2: \n" "setc %%al \n" "movzx %%al, %%rdx \n" : "=d" (c), "=a" (dummy), "=c" (dummy2) : "0" (index), "1" (value), "2" (b), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::SubInt", c) return c; } /*! this static method subtractes one vector from the other 'ss1' is larger in size or equal to 'ss2' ss1 points to the first (larger) vector ss2 points to the second vector ss1_size - size of the ss1 (and size of the result too) ss2_size - size of the ss2 result - is the result vector (which has size the same as ss1: ss1_size) Example: ss1_size is 5, ss2_size is 3 ss1: ss2: result (output): 5 1 5-1 4 3 4-3 2 7 2-7 6 6-1 (the borrow from previous item) 9 9 return (carry): 0 of course the carry (borrow) is propagated and will be returned from the last item (this method is used by the Karatsuba multiplication algorithm) */ template uint UInt::SubVector(const uint * ss1, const uint * ss2, uint ss1_size, uint ss2_size, uint * result) { TTMATH_ASSERT( ss1_size >= ss2_size ) uint c; #ifndef __GNUC__ c = ttmath_subvector_x64(ss1, ss2, ss1_size, ss2_size, result); #endif #ifdef __GNUC__ // the asm code is nearly the same as in AddVector // only two instructions 'adc' are changed to 'sbb' uint dummy1, dummy2, dummy3; uint rest = ss1_size - ss2_size; __asm__ __volatile__( "mov %%rdx, %%r8 \n" "xor %%rdx, %%rdx \n" // rdx = 0, cf = 0 "1: \n" "mov (%%rsi,%%rdx,8), %%rax \n" "sbb (%%rbx,%%rdx,8), %%rax \n" "mov %%rax, (%%rdi,%%rdx,8) \n" "inc %%rdx \n" "dec %%rcx \n" "jnz 1b \n" "adc %%rcx, %%rcx \n" // rcx has the cf state "or %%r8, %%r8 \n" "jz 3f \n" "xor %%rbx, %%rbx \n" // ebx = 0 "neg %%rcx \n" // setting cf from rcx "mov %%r8, %%rcx \n" // rcx=rest and is != 0 "2: \n" "mov (%%rsi, %%rdx, 8), %%rax \n" "sbb %%rbx, %%rax \n" "mov %%rax, (%%rdi, %%rdx, 8) \n" "inc %%rdx \n" "dec %%rcx \n" "jnz 2b \n" "adc %%rcx, %%rcx \n" "3: \n" : "=a" (dummy1), "=b" (dummy2), "=c" (c), "=d" (dummy3) : "1" (ss2), "2" (ss2_size), "3" (rest), "S" (ss1), "D" (result) : "%r8", "cc", "memory" ); #endif TTMATH_VECTOR_LOGC("UInt::SubVector", c, result, ss1_size) return c; } /*! this method moves all bits into the left hand side return value <- this <- c the lowest *bit* will be held the 'c' and the state of one additional bit (on the left hand side) will be returned for example: let this is 001010000 after Rcl2_one(1) there'll be 010100001 and Rcl2_one returns 0 ***this method is created only on a 64bit platform*** */ template uint UInt::Rcl2_one(uint c) { sint b = value_size; uint * p1 = table; #ifndef __GNUC__ c = ttmath_rcl_x64(p1,b,c); #endif #ifdef __GNUC__ uint dummy, dummy2; __asm__ __volatile__( "xorq %%rdx, %%rdx \n" // rdx=0 "negq %%rax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "rclq $1, (%%rbx, %%rdx, 8) \n" "incq %%rdx \n" "decq %%rcx \n" "jnz 1b \n" "adcq %%rcx, %%rcx \n" : "=c" (c), "=a" (dummy), "=d" (dummy2) : "0" (b), "1" (c), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Rcl2_one", c) return c; } /*! this method moves all bits into the right hand side c -> this -> return value the highest *bit* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2_one(1) there'll be 100000001 and Rcr2_one returns 0 ***this method is created only on a 64bit platform*** */ template uint UInt::Rcr2_one(uint c) { sint b = value_size; uint * p1 = table; #ifndef __GNUC__ c = ttmath_rcr_x64(p1,b,c); #endif #ifdef __GNUC__ uint dummy; __asm__ __volatile__( "negq %%rax \n" // CF=1 if rax!=0 , CF=0 if rax==0 "1: \n" "rcrq $1, -8(%%rbx, %%rcx, 8) \n" "decq %%rcx \n" "jnz 1b \n" "adcq %%rcx, %%rcx \n" : "=c" (c), "=a" (dummy) : "0" (b), "1" (c), "b" (p1) : "cc", "memory" ); #endif TTMATH_LOGC("UInt::Rcr2_one", c) return c; } /*! this method moves all bits into the left hand side return value <- this <- c the lowest *bits* will be held the 'c' and the state of one additional bit (on the left hand side) will be returned for example: let this is 001010000 after Rcl2(3, 1) there'll be 010000111 and Rcl2 returns 1 ***this method is created only on a 64bit platform*** */ template uint UInt::Rcl2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits this -> return value the highest *bits* will be held the 'c' and the state of one additional bit (on the right hand side) will be returned for example: let this is 000000010 after Rcr2(2, 1) there'll be 110000000 and Rcr2 returns 1 ***this method is created only on a 64bit platform*** */ template uint UInt::Rcr2(uint bits, uint c) { TTMATH_ASSERT( bits>0 && bits sint UInt::FindLeadingBitInWord(uint x) { sint result; #ifndef __GNUC__ unsigned long nIndex = 0; if( _BitScanReverse64(&nIndex,x) == 0 ) result = -1; else result = nIndex; #endif #ifdef __GNUC__ uint dummy; __asm__ ( "movq $-1, %1 \n" "bsrq %2, %0 \n" "cmovz %1, %0 \n" : "=r" (result), "=&r" (dummy) : "r" (x) : "cc" ); #endif return result; } /* this method returns the number of the highest set bit in one 64-bit word if the 'x' is zero this method returns '-1' ***this method is created only on a 64bit platform*** */ template sint UInt::FindLowestBitInWord(uint x) { sint result; #ifndef __GNUC__ unsigned long nIndex = 0; if( _BitScanForward64(&nIndex,x) == 0 ) result = -1; else result = nIndex; #endif #ifdef __GNUC__ uint dummy; __asm__ ( "movq $-1, %1 \n" "bsfq %2, %0 \n" "cmovz %1, %0 \n" : "=r" (result), "=&r" (dummy) : "r" (x) : "cc" ); #endif return result; } /*! this method sets a special bit in the 'value' and returns the last state of the bit (zero or one) ***this method is created only on a 64bit platform*** bit is from <0,63> e.g. uint x = 100; uint bit = SetBitInWord(x, 3); now: x = 108 and bit = 0 */ template uint UInt::SetBitInWord(uint & value, uint bit) { TTMATH_ASSERT( bit < TTMATH_BITS_PER_UINT ) uint old_bit; uint v = value; #ifndef __GNUC__ old_bit = _bittestandset64((__int64*)&value,bit) != 0; #endif #ifdef __GNUC__ __asm__ ( "btsq %%rbx, %%rax \n" "setc %%bl \n" "movzx %%bl, %%rbx \n" : "=a" (v), "=b" (old_bit) : "0" (v), "1" (bit) : "cc" ); #endif value = v; return old_bit; } /*! * * Multiplication * * */ /*! multiplication: result_high:result_low = a * b result_high - higher word of the result result_low - lower word of the result this methos never returns a carry this method is used in the second version of the multiplication algorithms ***this method is created only on a 64bit platform*** */ template void UInt::MulTwoWords(uint a, uint b, uint * result_high, uint * result_low) { /* we must use these temporary variables in order to inform the compilator that value pointed with result1 and result2 has changed this has no effect in visual studio but it's usefull when using gcc and options like -O */ uint result1_; uint result2_; #ifndef __GNUC__ result1_ = _umul128(a,b,&result2_); #endif #ifdef __GNUC__ __asm__ ( "mulq %%rdx \n" : "=a" (result1_), "=d" (result2_) : "0" (a), "1" (b) : "cc" ); #endif *result_low = result1_; *result_high = result2_; } /*! * * Division * * */ /*! this method calculates 64bits word a:b / 32bits c (a higher, b lower word) r = a:b / c and rest - remainder ***this method is created only on a 64bit platform*** * * WARNING: * if r (one word) is too small for the result or c is equal zero * there'll be a hardware interruption (0) * and probably the end of your program * */ template void UInt::DivTwoWords(uint a,uint b, uint c, uint * r, uint * rest) { uint r_; uint rest_; /* these variables have similar meaning like those in the multiplication algorithm MulTwoWords */ TTMATH_ASSERT( c != 0 ) #ifndef __GNUC__ ttmath_div_x64(&a,&b,c); r_ = a; rest_ = b; #endif #ifdef __GNUC__ __asm__ ( "divq %%rcx \n" : "=a" (r_), "=d" (rest_) : "d" (a), "a" (b), "c" (c) : "cc" ); #endif *r = r_; *rest = rest_; } } //namespace #endif //ifdef TTMATH_PLATFORM64 #endif //ifndef TTMATH_NOASM #endif freebayes-1.3.6/ttmath/ttmathuint_x86_64_msvc.asm000066400000000000000000000236001417247743000217520ustar00rootroot00000000000000; ; This file is a part of TTMath Bignum Library ; and is distributed under the (new) BSD licence. ; Author: Christian Kaiser ; ; ; Copyright (c) 2009, Christian Kaiser ; All rights reserved. ; ; Redistribution and use in source and binary forms, with or without ; modification, are permitted provided that the following conditions are met: ; ; * Redistributions of source code must retain the above copyright notice, ; this list of conditions and the following disclaimer. ; ; * 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. ; ; * Neither the name Christian Kaiser nor the names of contributors to this ; project 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 OWNER 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. ; ; ; compile with debug info: ml64.exe /c /Zd /Zi ttmathuint_x86_64_msvc.asm ; compile without debug info: ml64.exe /c ttmathuint_x86_64_msvc.asm ; this creates ttmathuint_x86_64_msvc.obj file which can be linked with your program ; PUBLIC ttmath_adc_x64 PUBLIC ttmath_addindexed_x64 PUBLIC ttmath_addindexed2_x64 PUBLIC ttmath_addvector_x64 PUBLIC ttmath_sbb_x64 PUBLIC ttmath_subindexed_x64 PUBLIC ttmath_subvector_x64 PUBLIC ttmath_rcl_x64 PUBLIC ttmath_rcr_x64 PUBLIC ttmath_rcl2_x64 PUBLIC ttmath_rcr2_x64 PUBLIC ttmath_div_x64 ; ; Microsoft x86_64 convention: http://msdn.microsoft.com/en-us/library/9b372w95.aspx ; ; "rax, rcx, rdx, r8-r11 are volatile." ; "rbx, rbp, rdi, rsi, r12-r15 are nonvolatile." ; .CODE ALIGN 8 ;---------------------------------------- ttmath_adc_x64 PROC ; rcx = p1 ; rdx = p2 ; r8 = nSize ; r9 = nCarry xor rax, rax xor r11, r11 sub rax, r9 ; sets CARRY if r9 != 0 ALIGN 16 loop1: mov rax,qword ptr [rdx + r11 * 8] adc qword ptr [rcx + r11 * 8], rax lea r11, [r11+1] dec r8 jnz loop1 setc al movzx rax, al ret ttmath_adc_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_addindexed_x64 PROC ; rcx = p1 ; rdx = nSize ; r8 = nPos ; r9 = nValue xor rax, rax ; rax = result sub rdx, r8 ; rdx = remaining count of uints add qword ptr [rcx + r8 * 8], r9 jc next1 ret next1: mov r9, 1 ALIGN 16 loop1: dec rdx jz done_with_cy lea r8, [r8+1] add qword ptr [rcx + r8 * 8], r9 jc loop1 ret done_with_cy: lea rax, [rax+1] ; rax = 1 ret ttmath_addindexed_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_addindexed2_x64 PROC ; rcx = p1 (pointer) ; rdx = b (value size) ; r8 = nPos ; r9 = nValue1 ; [esp+0x28] = nValue2 xor rax, rax ; return value mov r11, rcx ; table sub rdx, r8 ; rdx = remaining count of uints mov r10, [esp+028h] ; r10 = nValue2 add qword ptr [r11 + r8 * 8], r9 lea r8, [r8+1] lea rdx, [rdx-1] adc qword ptr [r11 + r8 * 8], r10 jc next ret ALIGN 16 loop1: lea r8, [r8+1] add qword ptr [r11 + r8 * 8], 1 jc next ret next: dec rdx ; does not modify CY too... jnz loop1 lea rax, [rax+1] ret ttmath_addindexed2_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_addvector_x64 PROC ; rcx = ss1 ; rdx = ss2 ; r8 = ss1_size ; r9 = ss2_size ; [esp+0x28] = result mov r10, [esp+028h] sub r8, r9 xor r11, r11 ; r11=0, cf=0 ALIGN 16 loop1: mov rax, qword ptr [rcx + r11 * 8] adc rax, qword ptr [rdx + r11 * 8] mov qword ptr [r10 + r11 * 8], rax inc r11 dec r9 jnz loop1 adc r9, r9 ; r9 has the cf state or r8, r8 jz done neg r9 ; setting cf from r9 mov r9, 0 ; don't use xor here (cf is used) loop2: mov rax, qword ptr [rcx + r11 * 8] adc rax, r9 mov qword ptr [r10 + r11 * 8], rax inc r11 dec r8 jnz loop2 adc r8, r8 mov rax, r8 ret done: mov rax, r9 ret ttmath_addvector_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_sbb_x64 PROC ; rcx = p1 ; rdx = p2 ; r8 = nCount ; r9 = nCarry xor rax, rax xor r11, r11 sub rax, r9 ; sets CARRY if r9 != 0 ALIGN 16 loop1: mov rax,qword ptr [rdx + r11 * 8] sbb qword ptr [rcx + r11 * 8], rax lea r11, [r11+1] dec r8 jnz loop1 setc al movzx rax, al ret ttmath_sbb_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_subindexed_x64 PROC ; rcx = p1 ; rdx = nSize ; r8 = nPos ; r9 = nValue sub rdx, r8 ; rdx = remaining count of uints ALIGN 16 loop1: sub qword ptr [rcx + r8 * 8], r9 jnc done lea r8, [r8+1] mov r9, 1 dec rdx jnz loop1 mov rax, 1 ret done: xor rax, rax ret ttmath_subindexed_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ; the same asm code as in addvector_x64 only two instructions 'adc' changed to 'sbb' ttmath_subvector_x64 PROC ; rcx = ss1 ; rdx = ss2 ; r8 = ss1_size ; r9 = ss2_size ; [esp+0x28] = result mov r10, [esp+028h] sub r8, r9 xor r11, r11 ; r11=0, cf=0 ALIGN 16 loop1: mov rax, qword ptr [rcx + r11 * 8] sbb rax, qword ptr [rdx + r11 * 8] mov qword ptr [r10 + r11 * 8], rax inc r11 dec r9 jnz loop1 adc r9, r9 ; r9 has the cf state or r8, r8 jz done neg r9 ; setting cf from r9 mov r9, 0 ; don't use xor here (cf is used) loop2: mov rax, qword ptr [rcx + r11 * 8] sbb rax, r9 mov qword ptr [r10 + r11 * 8], rax inc r11 dec r8 jnz loop2 adc r8, r8 mov rax, r8 ret done: mov rax, r9 ret ttmath_subvector_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_rcl_x64 PROC ; rcx = p1 ; rdx = b ; r8 = nLowestBit mov r11, rcx ; table xor r10, r10 neg r8 ; CY set if r8 <> 0 ALIGN 16 loop1: rcl qword ptr [r11 + r10 * 8], 1 lea r10, [r10+1] dec rdx jnz loop1 setc al movzx rax, al ret ttmath_rcl_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_rcr_x64 PROC ; rcx = p1 ; rdx = nSize ; r8 = nLowestBit xor r10, r10 neg r8 ; CY set if r8 <> 0 ALIGN 16 loop1: rcr qword ptr -8[rcx + rdx * 8], 1 dec rdx jnz loop1 setc al movzx rax, al ret ttmath_rcr_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_div_x64 PROC ; rcx = &Hi ; rdx = &Lo ; r8 = nDiv mov r11, rcx mov r10, rdx mov rdx, qword ptr [r11] mov rax, qword ptr [r10] div r8 mov qword ptr [r10], rdx ; remainder mov qword ptr [r11], rax ; value ret ttmath_div_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_rcl2_x64 PROC ; rcx = p1 ; rdx = nSize ; r8 = bits ; r9 = c push rbx mov r10, rcx ; r10 = p1 xor rax, rax mov rcx, 64 sub rcx, r8 mov r11, -1 shr r11, cl ; r11 = mask mov rcx, r8 ; rcx = count of bits mov rbx, rax ; rbx = old value = 0 or r9, r9 cmovnz rbx, r11 ; if (c) then old value = mask mov r9, rax ; r9 = index (0..nSize-1) ALIGN 16 loop1: rol qword ptr [r10+r9*8], cl mov rax, qword ptr [r10+r9*8] and rax, r11 xor qword ptr [r10+r9*8], rax or qword ptr [r10+r9*8], rbx mov rbx, rax lea r9, [r9+1] dec rdx jnz loop1 and rax, 1 pop rbx ret ttmath_rcl2_x64 ENDP ;---------------------------------------- ALIGN 8 ;---------------------------------------- ttmath_rcr2_x64 PROC ; rcx = p1 ; rdx = nSize ; r8 = bits ; r9 = c push rbx mov r10, rcx ; r10 = p1 xor rax, rax mov rcx, 64 sub rcx, r8 mov r11, -1 shl r11, cl ; r11 = mask mov rcx, r8 ; rcx = count of bits mov rbx, rax ; rbx = old value = 0 or r9, r9 cmovnz rbx, r11 ; if (c) then old value = mask mov r9, rdx ; r9 = index (0..nSize-1) lea r9, [r9-1] ALIGN 16 loop1: ror qword ptr [r10+r9*8], cl mov rax, qword ptr [r10+r9*8] and rax, r11 xor qword ptr [r10+r9*8], rax or qword ptr [r10+r9*8], rbx mov rbx, rax lea r9, [r9-1] dec rdx jnz loop1 rol rax, 1 and rax, 1 pop rbx ret ttmath_rcr2_x64 ENDP END freebayes-1.3.6/vcflib/000077500000000000000000000000001417247743000147445ustar00rootroot00000000000000