diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000..2ee57a7c8 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +java/src/json/ext/Parser.java linguist-generated=true diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..6778b0493 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'daily' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..1d8d18e21 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,82 @@ +name: CI + +on: +- push +- pull_request +- workflow_dispatch + +jobs: + ruby-versions: + uses: ruby/actions/.github/workflows/ruby_versions.yml@master + with: + engine: cruby-jruby + min_version: 2.7 + + host: + needs: ruby-versions + name: ${{ matrix.os }} ${{ matrix.ruby }} ${{ matrix.env }} + runs-on: ${{ matrix.os }} + env: + BUNDLE_WITHOUT: release + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + - windows-latest + ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }} + env: + - "" + include: + - { os: ubuntu-latest , ruby: debug } + - { os: ubuntu-latest , ruby: asan } + - { os: ubuntu-24.04-arm, ruby: 3.4 } + - { os: ubuntu-latest , ruby: 3.4, env: "JSON_DISABLE_SIMD=1" } + - { os: ubuntu-latest , ruby: 3.4, env: "JSON_DEBUG=1" } + - { os: macos-15, ruby: 3.4 } + - { os: windows-latest , ruby: mswin } # ruby/ruby windows CI + - { os: macos-latest , ruby: jruby-9.4 } # Ruby 3.1 + - { os: ubuntu-latest , ruby: jruby-9.4 } # Ruby 3.1 + - { os: macos-latest , ruby: truffleruby } + - { os: ubuntu-latest , ruby: truffleruby } + exclude: + - { os: windows-latest, ruby: jruby } + + steps: + - uses: actions/checkout@v7 + + - name: Set up Ruby + uses: ruby/setup-ruby-pkgs@v1 + with: + bundler-cache: true + ruby-version: ${{ matrix.ruby }} + + - run: bundle exec rake compile ${{ matrix.env }} + + - run: bundle exec rake test JSON_COMPACT=1 ${{ matrix.env }} + + - run: bundle exec rake build + + - run: gem install pkg/*.gem + if: ${{ matrix.ruby != '3.2' }} + + valgrind: + name: Ruby memcheck + runs-on: ubuntu-latest + strategy: + fail-fast: false + + steps: + - uses: actions/checkout@v7 + + - name: Set up Ruby + uses: ruby/setup-ruby-pkgs@v1 + with: + bundler-cache: true + ruby-version: "3.3" + apt-get: valgrind + + - run: bundle exec rake compile + + - run: bundle exec rake valgrind JSON_COMPACT=1 diff --git a/.github/workflows/sync-ruby.yml b/.github/workflows/sync-ruby.yml new file mode 100644 index 000000000..d6d95946a --- /dev/null +++ b/.github/workflows/sync-ruby.yml @@ -0,0 +1,33 @@ +name: Sync ruby +on: + push: + branches: [master] +jobs: + sync: + name: Sync ruby + runs-on: ubuntu-latest + if: ${{ github.repository_owner == 'ruby' }} + steps: + - uses: actions/checkout@v7 + + - name: Create GitHub App token + id: app-token + uses: actions/create-github-app-token@v3 + with: + app-id: 2060836 + private-key: ${{ secrets.RUBY_SYNC_DEFAULT_GEMS_PRIVATE_KEY }} + owner: ruby + repositories: ruby + + - name: Sync to ruby/ruby + uses: convictional/trigger-workflow-and-wait@v1.6.5 + with: + owner: ruby + repo: ruby + workflow_file_name: sync_default_gems.yml + github_token: ${{ steps.app-token.outputs.token }} + ref: master + client_payload: | + {"gem":"${{ github.event.repository.name }}","before":"${{ github.event.before }}","after":"${{ github.event.after }}"} + propagate_failure: true + wait_interval: 10 diff --git a/.gitignore b/.gitignore index 69b608db7..5865b9834 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,9 @@ .*.sw[pon] *.bundle +*.bundle.dSYM +*.so coverage +.coverage tags pkg .nfs.* @@ -14,4 +17,9 @@ Gemfile.lock .DS_Store */**/Makefile */**/*.o +*/**/*.class +*/**/*.jar .byebug_history +*.log +/tmp +/doc/ diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 1ac58d828..000000000 --- a/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -# Passes arguments to bundle install (http://gembundler.com/man/bundle-install.1.html) -#bundler_args: --binstubs -language: ruby - -# Specify which ruby versions you wish to run your tests on, each version will be used -rvm: - - 1.9.3 - - 2.0.0 - - 2.1 - - 2.2 - - 2.3 - - 2.4 - - 2.5 - - 2.6 - - ruby-head - - jruby -matrix: - allow_failures: - - rvm: 1.9.3 - - rvm: ruby-head - - rvm: jruby -script: "bundle exec rake" -sudo: false diff --git a/BSDL b/BSDL new file mode 100644 index 000000000..66d93598a --- /dev/null +++ b/BSDL @@ -0,0 +1,22 @@ +Copyright (C) 1993-2013 Yukihiro Matsumoto. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. diff --git a/CHANGES.md b/CHANGES.md index 92a192529..2bad52aed 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,487 @@ # Changes +### Unreleased + +* Fix `JSON::ParserError#json_path` raising `NoMethodError` when the document was parsed with `symbolize_names: true`. +* Fix `JSON.generate` not detecting duplicate keys such as `{ "1" => 1, 1 => 2 }`. +* JRuby: raise `TypeError` when a String subclass used as a Hash key has a `to_s` that doesn't return a String, like the C extension. + +### 2026-10-13 (3.1.0) + +* Added `rfc8785` generator option to canonicalize the output. Replaces the `json-canonicalization` with numerous correctness fixes. +* Use the `rb_len_t` type introduced in Ruby 4.1 to allow for proper 64bit support on LP64 platforms (Windows). +* JRuby: parser errors now include the position (`line`, `column` and the message suffix) as well as `json_path`, matching the C extension. +* Improved the accuracy of parser error's `line`, `column` and snipets in presence of multibyte characters. +* Fix `JSON.load` to work correctly when provided a `Zlib::GzipReader` as IO source. +* Reject non-ASCII BINARY strings during JSON generation. This was deprecated since a long time and scheduled to be removed for 3.0. + +### 2026-09-09 (3.0.2) + +* Fix `JSON.load_file` and `JSON.load_file!` to load on Ruby 2.7.0 through 2.7.2, which cannot parse a leading parameter before `...`. + +### 2026-09-08 (3.0.1) + +* Restore the `limit` positional argument of `JSON.dump`. + +### 2026-09-07 (3.0.0) + +* Add `JSON::ParserError#json_path` to locate parse errors in the document as a JSONPath-style string (e.g. `$.foo[0].bar`). For duplicate key errors it points at the duplicated key itself. +* Fix the parser to also reject lone trailing UTF-16 surrogates (`\uDCxx` with no leading partner), symmetric to the leading-surrogate case. The Java parser already rejected these; this closes the CRuby/JRuby parity gap. + +### 2026-08-11 (3.0.0.rc1) + +With the removal of the insecure `create_additions` option, `JSON.load` and `JSON.dump` are +now safe to use. Them being unsafe by default caused multiple security vulnerabilites in the past. + +If you did depend on `create_additions`, the recommended migration is to [implement a custom serializer using +`JSON::Coder`](https://byroot.github.io/ruby/json/2025/08/02/whats-wrong-with-the-json-gem-api.html#the-create_additions-option). + +All the mutable default options, such as `JSON.load_default_options` have been removed. +They were preventing Ractor compatiblity, and causing bug in libraries using JSON expecting the default behavior. +`JSON` methods now always behave the same unless monkey patched. + +All methods options are now either keyword arguments or checked like keyword arguments, meaning +unknown options such as typos raise `ArgumentError`. + +Duplicated keys are now rejected by default. + +JavaScript comments in documents are no longer supported by default. + +Numerous rarely used aliases have been removed. + +* `JSON.load` defaults are now safe to use. +* All unknown options will now cause an `ArgumentError` rather than to be ignored. +* The `allow_comments` parsing option now defaults to `false`. +* The `allow_duplicate_key` option now defaults to `false`, for both parsing and generating JSON. +* Removed the `limit` positional argument of `JSON.dump`. +* Removed the `escape_slash` alias of `script_safe`. +* Removed `Kernel#j` and `Kernel#jj`. +* Removed `JSON.load_default_options`. +* Removed `JSON.unsafe_load_default_options`. +* Removed `JSON.dump_default_options`. +* Removed `JSON::State#[]` and `JSON::State#[]=`. +* Removed `JSON.unparse`. +* Removed `JSON.fast_generate`. +* Removed `JSON.fast_unparse`. +* Removed `JSON.pretty_unparse`. +* Removed `JSON.restore`. +* Removed `JSON::PRETTY_STATE_PROTOTYPE`. +* Removed the insecure `create_additions` option. +* Removed `JSON::GenericObject`. + +### 2026-07-31 (2.21.2) + +* Fix a use-after-free bug in `JSON::ResumableParser`. [GHSA-9hj4-r449-hfvc][CVE-2026-71847]. + +### 2026-07-13 (2.21.1) + +* Fix a compilation issue on Window and Microsoft Visual C++. + +### 2026-07-12 (2.21.0) + +* `JSON.generate` now accept a `sort_keys` option, which takes either a boolean or a block. +* Added `#empty?` and `#partial_value?` methods on `JSON::ResumableParser`. +* Numerous correctness and performance fixes for `JSON::ResumableParser`. +* Avoid triggering Ruby's `float out of range` warning when parsing out of range numbers. +* Declare C types with Ruby 4.1 `RUBY_TYPED_THREAD_SAFE_FREE`. + +### 2026-06-23 (2.20.0) + +* Both C and Java parsers are no longer recursive, so parsing very deep documents with `max_nesting: false` will no longer + result in `SystemStackError stack level too deep` errors. + * The `:max_nesting` option still defaults to `100`. +* Optimized floating point number parsing further by replacing the ryu algorithm by a port of Eisel-Lemire Fast Float. +* Added `JSON::ResumableParser` to parse streams of JSON documents. Not yet available on JRuby. +* Deprecate default support of JavaScript comments in the parser and add `allow_comments: true` parsing option. +* Integrate with Ruby 4.1 `ruby_sized_xfree`. + +### 2026-06-11 (2.19.9) + +* Fix buffer overflow that could lead to a crash when writing JSON directly into an IO + with `JSON.generate(object, io)`. [CVE-2026-54696]. + +### 2026-06-03 (2.19.8) + +* Fix 1-byte buffer overread on EOS errors. +* Handle invalid types passed as `max_nesting` option. + +### 2026-05-28 (2.19.7) + +* Fix some more edge cases with out of range floats. +* Ensure the string provided to `JSON.parse` can't be mutated during parsing. +* Add missing write barriers in `State#dup`. +* Further validate generator `depth` config. + +### 2026-05-28 (2.19.6) + +* Cleanly handle overly large `depth` generator argument. +* Add missing write barrier in `ParserConfig`. + +### 2026-05-04 (2.19.5) + +* Cap the parser to emit a maximum of 5 deprecation warnings per document. Emitting more is not helpful. + +### 2026-04-19 (2.19.4) + +* Fix parsing of out of range floats (very large exponents that lead to either `0.0` or `Inf`). + +### 2026-03-25 (2.19.3) + +* Fix handling of unescaped control characters preceeded by a backslash. + +### 2026-03-18 (2.19.2) + +* Fix a format string injection vulnerability in `JSON.parse(doc, allow_duplicate_key: false)`. `CVE-2026-33210`. + +### 2026-03-08 (2.19.1) + +* Fix a compiler dependent GC bug introduced in `2.18.0`. + +### 2026-03-06 (2.19.0) + +* Fix `allow_blank` parsing option to no longer allow invalid types (e.g. `load([], allow_blank: true)` now raise a type error). +* Add `allow_invalid_escape` parsing option to ignore backslashes that aren't followed by one of the valid escape characters. + +### 2026-11-02 (2.18.2) + +* Backport handling of unescaped control characters preceeded by a backslash from 2.19.3. + GHSA-cjpr-jw2g-fw99. + +### 2026-02-03 (2.18.1) + +* Fix a potential crash in very specific circumstance if GC triggers during a call to `to_json` + without first invoking a user defined `#to_json` method. + +### 2025-12-11 (2.18.0) + +* Add `:allow_control_characters` parser options, to allow JSON strings containing unescaped ASCII control characters (e.g. newlines). + +### 2026-03-18 (2.17.1.2) - Security Backport + +* Fix a format string injection vulnerability in `JSON.parse(doc, allow_duplicate_key: false)`. `CVE-2026-33210`. + +### 2025-12-04 (2.17.1) + +* Fix a regression in parsing of unicode surogate pairs (`\uXX\uXX`) that could cause an invalid string to be returned. + +### 2025-12-03 (2.17.0) + +* Improve `JSON.load` and `JSON.unsafe_load` to allow passing options as second argument. +* Fix the parser to no longer ignore invalid escapes in strings. + Only `\"`, `\\`, `\b`, `\f`, `\n`, `\r`, `\t` and `\u` are valid JSON escapes. +* Fixed `JSON::Coder` to use the depth it was initialized with. +* On TruffleRuby, fix the generator to not call `to_json` on the return value of `as_json` for `Float::NAN`. +* Fixed handling of `state.depth`: when `to_json` changes `state.depth` but does not restore it, it is reset + automatically to its initial value. + In particular, when a `NestingError` is raised, `depth` is no longer equal to `max_nesting` after the call to + generate, and is reset to its initial value. Similarly when `to_json` raises an exception. + +### 2025-11-07 (2.16.0) + +* Deprecate `JSON::State#[]` and `JSON::State#[]=`. Consider using `JSON::Coder` instead. +* `JSON::Coder` now also yields to the block when encountering strings with invalid encoding. +* Fix GeneratorError messages to be UTF-8 encoded. +* Fix memory leak when `Exception` is raised, or `throw` is used during JSON generation. +* Optimized floating point number parsing by integrating the ryu algorithm (thanks to Josef Šimánek). +* Optimized numbers parsing using SWAR (thanks to Scott Myron). +* Optimized parsing of pretty printed documents using SWAR (thanks to Scott Myron). + +### 2026-03-18 (2.15.2.1) - Security Backport + +* Fix a format string injection vulnerability in `JSON.parse(doc, allow_duplicate_key: false)`. `CVE-2026-33210`. + +### 2025-10-25 (2.15.2) + +* Fix `JSON::Coder` to have one dedicated depth counter per invocation. + After encountering a circular reference in `JSON::Coder#dump`, any further `#dump` call would raise `JSON::NestingError`. + +### 2025-10-07 (2.15.1) + +* Fix incorrect escaping in the JRuby extension when encoding shared strings. + +### 2025-09-22 (2.15.0) + +* `JSON::Coder` callback now receive a second argument to convey whether the object is a hash key. +* Tuned the floating point number generator to not use scientific notation as aggressively. + +### 2025-09-18 (2.14.1) + +* Fix `IndexOutOfBoundsException` in the JRuby extension when encoding shared strings. + +### 2025-09-18 (2.14.0) + +* Add new `allow_duplicate_key` generator options. By default a warning is now emitted when a duplicated key is encountered. + In `json 3.0` an error will be raised. + ```ruby + >> Warning[:deprecated] = true + >> puts JSON.generate({ foo: 1, "foo" => 2 }) + (irb):2: warning: detected duplicate key "foo" in {foo: 1, "foo" => 2}. + This will raise an error in json 3.0 unless enabled via `allow_duplicate_key: true` + {"foo":1,"foo":2} + >> JSON.generate({ foo: 1, "foo" => 2 }, allow_duplicate_key: false) + detected duplicate key "foo" in {foo: 1, "foo" => 2} (JSON::GeneratorError) + ``` +* Fix `JSON.generate` `strict: true` mode to also restrict hash keys. +* Fix `JSON::Coder` to also invoke block for hash keys that aren't strings nor symbols. +* Fix `JSON.unsafe_load` usage with proc +* Fix the parser to more consistently reject invalid UTF-16 surogate pairs. +* Stop defining `String.json_create`, `String#to_json_raw`, `String#to_json_raw_object` when `json/add` isn't loaded. + +### 2025-07-28 (2.13.2) + +* Improve duplicate key warning and errors to include the key name and point to the right caller. + +### 2025-07-24 (2.13.1) + +* Fix support for older compilers without `__builtin_cpu_supports`. + +### 2025-07-17 (2.13.0) + +* Add new `allow_duplicate_key` parsing options. By default a warning is now emitted when a duplicated key is encountered. + In `json 3.0` an error will be raised. +* Optimize parsing further using SIMD to scan strings. + +### 2025-05-23 (2.12.2) + +* Fix compiler optimization level. + +### 2025-05-23 (2.12.1) + +* Fix a potential crash in large negative floating point number generation. +* Fix for JSON.pretty_generate to use passed state object's generate instead of state class as the required parameters aren't available. + +### 2025-05-12 (2.12.0) + +* Improve floating point generation to not use scientific notation as much. +* Include line and column in parser errors. Both in the message and as exception attributes. +* Handle non-string hash keys with broken `to_s` implementations. +* `JSON.generate` now uses SSE2 (x86) or NEON (arm64) instructions when available to escape strings. + +### 2025-04-25 (2.11.3) + +* Fix a regression in `JSON.pretty_generate` that could cause indentation to be off once some `#to_json` has been called. + +### 2025-04-24 (2.11.2) + +* Add back `JSON::PRETTY_STATE_PROTOTYPE`. This constant was private API but is used by popular gems like `multi_json`. + It now emits a deprecation warning. + +### 2025-04-24 (2.11.1) + +* Add back `JSON.restore`, `JSON.unparse`, `JSON.fast_unparse` and `JSON.pretty_unparse`. + These were deprecated 16 years ago, but never emitted warnings, only undocumented, so are + still used by a few gems. + +### 2025-04-24 (2.11.0) + +* Optimize Integer generation to be ~1.8x faster. +* Optimize Float generation to be ~10x faster. +* Fix `JSON.load` proc argument to substitute the parsed object with the return value. + This better match `Marshal.load` behavior. +* Deprecate `JSON.fast_generate` (it's not any faster, so pointless). +* Deprecate `JSON.load_default_options`. +* Deprecate `JSON.unsafe_load_default_options`. +* Deprecate `JSON.dump_default_options`. +* Deprecate `Kernel#j` +* Deprecate `Kernel#jj` +* Remove outdated `JSON.iconv`. +* Remove `Class#json_creatable?` monkey patch. +* Remove deprecated `JSON.restore` method. +* Remove deprecated `JSON.unparse` method. +* Remove deprecated `JSON.fast_unparse` method. +* Remove deprecated `JSON.pretty_unparse` method. +* Remove deprecated `JSON::UnparserError` constant. +* Remove outdated `JSON::MissingUnicodeSupport` constant. + +### 2025-03-12 (2.10.2) + +* Fix a potential crash in the C extension parser. +* Raise a ParserError on all incomplete unicode escape sequence. This was the behavior until `2.10.0` inadvertently changed it. +* Ensure document snippets that are included in parser errors don't include truncated multibyte characters. +* Ensure parser error snippets are valid UTF-8. +* Fix `JSON::GeneratorError#detailed_message` on Ruby < 3.2 + +### 2025-02-10 (2.10.1) + +* Fix a compatibility issue with `MultiJson.dump(obj, pretty: true)`: `no implicit conversion of false into Proc (TypeError)`. + +### 2025-02-10 (2.10.0) + +* `strict: true` now accept symbols as values. Previously they'd only be accepted as hash keys. +* The C extension Parser has been entirely reimplemented from scratch. +* Introduced `JSON::Coder` as a new API allowing to customize how non native types are serialized in a non-global way. +* Introduced `JSON::Fragment` to allow assembling cached fragments in a safe way. +* The Java implementation of the generator received many optimizations. + +### 2024-12-18 (2.9.1) + +* Fix support for Solaris 10. + +### 2024-12-03 (2.9.0) + +* Fix C implementation of `script_safe` escaping to not confuse some other 3 wide characters with `\u2028` and `\u2029`. + e.g. `JSON.generate(["倩", "瀨"], script_safe: true)` would generate the wrong JSON. +* `JSON.dump(object, some_io)` now write into the IO in chunks while previously it would buffer the entire JSON before writing. +* `JSON::GeneratorError` now has a `#invalid_object` attribute, making it easier to understand why an object tree cannot be serialized. +* Numerous improvements to the JRuby extension. + +### 2024-11-14 (2.8.2) + +* `JSON.load_file` explicitly read the file as UTF-8. + +### 2024-11-06 (2.8.1) + +* Fix the java packages to include the extension. + +### 2024-11-06 (2.8.0) + +* Emit a deprecation warning when `JSON.load` create custom types without the `create_additions` option being explicitly enabled. + * Prefer to use `JSON.unsafe_load(string)` or `JSON.load(string, create_additions: true)`. +* Emit a deprecation warning when serializing valid UTF-8 strings encoded in `ASCII_8BIT` aka `BINARY`. +* Bump required Ruby version to 2.7. +* Add support for optionally parsing trailing commas, via `allow_trailing_comma: true`, which in cunjunction with the + pre-existing support for comments, make it suitable to parse `jsonc` documents. +* Many performance improvements to `JSON.parse` and `JSON.load`, up to `1.7x` faster on real world documents. +* Some minor performance improvements to `JSON.dump` and `JSON.generate`. +* `JSON.pretty_generate` no longer includes newlines inside empty object and arrays. + +### 2024-11-04 (2.7.6) + +* Fix a regression in JSON.generate when dealing with Hash keys that are string subclasses, call `to_json` on them. + +### 2024-10-25 (2.7.5) + +* Fix a memory leak when `#to_json` methods raise an exception. +* Gracefully handle formatting configs being set to `nil` instead of `""`. +* Workaround another issue caused by conflicting versions of both `json_pure` and `json` being loaded. + +### 2024-10-25 (2.7.4) + +* Workaround a bug in 3.4.8 and older https://github.com/rubygems/rubygems/pull/6490. + This bug would cause some gems with native extension to fail during compilation. +* Workaround different versions of `json` and `json_pure` being loaded (not officially supported). +* Make `json_pure` Ractor compatible. + +### 2024-10-24 (2.7.3) + +* Numerous performance optimizations in `JSON.generate` and `JSON.dump` (up to 2 times faster). +* Limit the size of ParserError exception messages, only include up to 32 bytes of the unparsable source. +* Fix json-pure's `Object#to_json` to accept non-state arguments. +* Fix multiline comment support in `json-pure`. +* Fix `JSON.parse` to no longer mutate the argument encoding when passed an ASCII-8BIT string. +* Fix `String#to_json` to raise on invalid encoding in `json-pure`. +* Delete code that was based on CVTUTF. +* Use the pure-Ruby generator on TruffleRuby. +* Fix `strict` mode in `json-pure` to not break on Integer. + +### 2024-04-04 (2.7.2) + +* Use rb_sym2str instead of SYM2ID #561 +* Fix memory leak when exception is raised during JSON generation #574 +* Remove references to "19" methods in JRuby #576 +* Make OpenStruct support as optional by @hsbt in #565 +* Autoload JSON::GenericObject to avoid require ostruct warning in Ruby 3.4 #577 +* Warn to install ostruct if json couldn't load it by @hsbt #578 + +### 2023-12-05 (2.7.1) + +* JSON.dump: handle unenclosed hashes regression #554 +* Overload kwargs in JSON.dump #556 +* [DOC] RDoc for additions #557 +* Fix JSON.dump overload combination #558 + +### 2023-12-01 (2.7.0) + +* Add a strict option to Generator #519 +* `escape_slash` option was renamed as `script_safe` and now also escape U+2028 and U+2029. `escape_slash` is now an alias of `script_safe` #525 +* Remove unnecessary initialization of create_id in JSON.parse() #454 +* Improvements to Hash#to_json in pure implementation generator #203 +* Use ruby_xfree to free buffers #518 +* Fix "unexpected token" offset for Infinity #507 +* Avoid using deprecated BigDecimal.new on JRuby #546 +* Removed code for Ruby 1.8 #540 +* Rename JSON::ParseError to JSON:ParserError #530 +* Call super in included hook #486 +* JRuby requires a minimum of Java 8 #516 +* Always indent even if empty #517 + +### 2022-11-30 (2.6.3) + +* bugfix json/pure mixing escaped with literal unicode raises Encoding::CompatibilityError #483 +* Stop including the parser source __LINE__ in exceptions #470 + +### 2022-11-17 (2.6.2) + +* Remove unknown keyword arg from DateTime.parse #488 +* Ignore java artifacts by @hsbt #489 +* Fix parser bug for empty string allocation #496 + +### 2021-10-24 (2.6.1) + +* Restore version.rb with 2.6.1 + +### 2021-10-14 (2.6.0) + +* Use `rb_enc_interned_str` if available to reduce allocations in `freeze: true` mode. #451. +* Bump required_ruby_version to 2.3. +* Fix compatibility with `GC.compact`. +* Fix some compilation warnings. #469 + +## 2020-12-22 (2.5.1) + +* Restore the compatibility for constants of JSON class. + +## 2020-12-22 (2.5.0) + +* Ready to Ractor-safe at Ruby 3.0. + +## 2020-12-17 (2.4.1) + +* Restore version.rb with 2.4.1 + +## 2020-12-15 (2.4.0) + +* Implement a freeze: parser option #447 +* Fix an issue with generate_pretty and empty objects in the Ruby and Java implementations #449 +* Fix JSON.load_file doc #448 +* Fix pure parser with unclosed arrays / objects #425 +* bundle the LICENSE file in the gem #444 +* Add an option to escape forward slash character #405 +* RDoc for JSON #439 #446 #442 #434 #433 #430 + +## 2020-06-30 (2.3.1) + +* Spelling and grammar fixes for comments. Pull request #191 by Josh + Kline. +* Enhance generic JSON and #generate docs. Pull request #347 by Victor + Shepelev. +* Add :nodoc: for GeneratorMethods. Pull request #349 by Victor Shepelev. +* Baseline changes to help (JRuby) development. Pull request #371 by Karol + Bucek. +* Add metadata for rubygems.org. Pull request #379 by Alexandre ZANNI. +* Remove invalid JSON.generate description from JSON module rdoc. Pull + request #384 by Jeremy Evans. +* Test with TruffleRuby in CI. Pull request #402 by Benoit Daloze. +* Rdoc enhancements. Pull request #413 by Burdette Lamar. +* Fixtures/ are not being tested... Pull request #416 by Marc-André + Lafortune. +* Use frozen string for hash key. Pull request #420 by Marc-André + Lafortune. +* Added :call-seq: to RDoc for some methods. Pull request #422 by Burdette + Lamar. +* Small typo fix. Pull request #423 by Marc-André Lafortune. + +## 2019-12-11 (2.3.0) + * Fix default of `create_additions` to always be `false` for `JSON(user_input)` + and `JSON.parse(user_input, nil)`. + Note that `JSON.load` remains with default `true` and is meant for internal + serialization of trusted data. [CVE-2020-10663] + * Fix passing args all #to_json in json/add/*. + * Fix encoding issues + * Fix issues of keyword vs positional parameter + * Fix JSON::Parser against bigdecimal updates + * Bug fixes to JRuby port + ## 2019-02-21 (2.2.0) * Adds support for 2.6 BigDecimal and ruby standard library Set datetype. @@ -28,7 +510,8 @@ ## 2015-09-11 (2.0.0) * Now complies to newest JSON RFC 7159. - * Implements compatibiliy to ruby 2.4 integer unification. + * Implements compatibility to ruby 2.4 integer unification. + * Removed support for `quirks_mode` option. * Drops support for old rubies whose life has ended, that is rubies < 2.0. Also see https://www.ruby-lang.org/en/news/2014/07/01/eol-for-1-8-7-and-1-9-2/ * There were still some mentions of dual GPL licensing in the source, but JSON @@ -39,6 +522,19 @@ I changed these mentions to be consistent with the Ruby license setting in the gemspec files which were already correct now. +## 2017-01-13 (1.8.6) + * Be compatible with ancient ruby 1.8 (maybe?) + +## 2015-09-11 (1.8.5) + * Be compatible with ruby 2.4.0 + * There were still some mentions of dual GPL licensing in the source, but JSON + has just the Ruby license that itself includes an explicit dual-licensing + clause that allows covered software to be distributed under the terms of + the Simplified BSD License instead for all ruby versions >= 1.9.3. This is + however a GPL compatible license according to the Free Software Foundation. + I changed these mentions to be consistent with the Ruby license setting in + the gemspec files which were already correct now. + ## 2015-06-01 (1.8.3) * Fix potential memory leak, thx to nobu. @@ -56,7 +552,7 @@ * Remove Rubinius exception since transcoding should be working now. ## 2013-05-13 (1.8.0) - * Fix https://github.com/flori/json/issues/162 reported by Marc-Andre + * Fix https://github.com/ruby/json/issues/162 reported by Marc-Andre Lafortune . Thanks! * Applied patches by Yui NARUSE to suppress warning with -Wchar-subscripts and better validate UTF-8 strings. @@ -69,14 +565,14 @@ ## 2013-02-04 (1.7.7) * Security fix for JSON create_additions default value and `JSON::GenericObject`. It should not be possible to create additions unless - explicitely requested by setting the create_additions argument to true or + explicitly requested by setting the create_additions argument to true or using the JSON.load/dump interface. If `JSON::GenericObject` is supposed to - be automatically deserialised, this has to be explicitely enabled by + be automatically deserialised, this has to be explicitly enabled by setting JSON::GenericObject.json_creatable = true as well. * Remove useless assert in fbuffer implementation. - * Apply patch attached to https://github.com/flori/json/issues#issue/155 + * Apply patch attached to https://github.com/ruby/json/issues#issue/155 provided by John Shahid , Thx! * Add license information to rubygems spec data, reported by Jordi Massaguer Pla . * Improve documentation, thx to Zachary Scott . @@ -90,7 +586,7 @@ * Fix compilation of extension on older rubies. ## 2012-07-26 (1.7.4) - * Fix compilation problem on AIX, see https://github.com/flori/json/issues/142 + * Fix compilation problem on AIX, see https://github.com/ruby/json/issues/142 ## 2012-05-12 (1.7.3) * Work around Rubinius encoding issues using iconv for conversion instead. @@ -112,9 +608,9 @@ * Propagate src encoding to values made from it (fixes 1.9 mode converting everything to ascii-8bit; harmless for 1.8 mode too) (Thomas E. Enebo ), should fix - https://github.com/flori/json/issues#issue/119. - * Fix https://github.com/flori/json/issues#issue/124 Thx to Jason Hutchens. - * Fix https://github.com/flori/json/issues#issue/117 + https://github.com/ruby/json/issues#issue/119. + * Fix https://github.com/ruby/json/issues#issue/124 Thx to Jason Hutchens. + * Fix https://github.com/ruby/json/issues#issue/117 ## 2012-01-15 (1.6.5) * Vit Ondruch reported a bug that shows up when using @@ -141,7 +637,7 @@ patch go to Josh Partlow (jpartlow@github). * Improve parsing speed for JSON numbers (integers and floats) in a similar way to what Evan Phoenix suggested in: - https://github.com/flori/json/pull/103 + https://github.com/ruby/json/pull/103 ## 2011-09-18 (1.6.1) * Using -target 1.5 to force Java bits to compile with 1.5. @@ -154,15 +650,14 @@ * Fix memory leak when used from multiple JRuby. (Patch by jfirebaugh@github). * Apply patch by Eric Wong that fixes garbage collection problem - reported in https://github.com/flori/json/issues/46. + reported in https://github.com/ruby/json/issues/46. * Add :quirks_mode option to parser and generator. * Add support for Rational and Complex number additions via json/add/complex and json/add/rational requires. ## 2011-06-20 (1.5.3) * Alias State#configure method as State#merge to increase duck type synonymy with Hash. - * Add `as_json` methods in json/add/core, so rails can create its json objects - the new way. + * Add `as_json` methods in json/add/core, so rails can create its json objects the new way. ## 2011-05-11 (1.5.2) * Apply documentation patch by Cory Monty . @@ -173,7 +668,7 @@ ## 2011-01-24 (1.5.1) * Made rake-compiler build a fat binary gem. This should fix issue - https://github.com/flori/json/issues#issue/54. + https://github.com/ruby/json/issues#issue/54. ## 2011-01-22 (1.5.0) * Included Java source codes for the Jruby extension made by Daniel Luz @@ -183,7 +678,7 @@ reported by Riley Goodside. ## 2010-08-09 (1.4.6) - * Fixed oversight reported in http://github.com/flori/json/issues/closed#issue/23, + * Fixed oversight reported in http://github.com/ruby/json/issues/closed#issue/23, always create a new object from the state prototype. * Made pure and ext api more similar again. @@ -193,12 +688,12 @@ argument. * Some fixes in the state objects and additional tests. ## 2010-08-06 (1.4.4) - * Fixes build problem for rubinius under OS X, http://github.com/flori/json/issues/closed#issue/25 - * Fixes crashes described in http://github.com/flori/json/issues/closed#issue/21 and - http://github.com/flori/json/issues/closed#issue/23 + * Fixes build problem for rubinius under OS X, http://github.com/ruby/json/issues/closed#issue/25 + * Fixes crashes described in http://github.com/ruby/json/issues/closed#issue/21 and + http://github.com/ruby/json/issues/closed#issue/23 ## 2010-05-05 (1.4.3) * Fixed some test assertions, from Ruby r27587 and r27590, patch by nobu. - * Fixed issue http://github.com/flori/json/issues/#issue/20 reported by + * Fixed issue http://github.com/ruby/json/issues/#issue/20 reported by electronicwhisper@github. Thx! ## 2010-04-26 (1.4.2) @@ -217,10 +712,10 @@ ## 2010-04-23 (1.4.0) * Major speed improvements and building with simplified directory/file-structure. - * Extension should at least be comapatible with MRI, YARV and Rubinius. + * Extension should at least be compatible with MRI, YARV and Rubinius. ## 2010-04-07 (1.2.4) - * Triger const_missing callback to make Rails' dynamic class loading work. + * Trigger const_missing callback to make Rails' dynamic class loading work. ## 2010-03-11 (1.2.3) * Added a `State#[]` method which returns an attribute's value in order to @@ -235,7 +730,7 @@ strings in object names/keys. ## 2009-10-01 (1.2.0) - * `fast_generate` now raises an exeception for nan and infinite floats. + * `fast_generate` now raises an exception for nan and infinite floats. * On Ruby 1.8 json supports parsing of UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE JSON documents now. Under Ruby 1.9 the M17n conversion functions are used to convert from all supported encodings. ASCII-8BIT diff --git a/LICENSE b/COPYING similarity index 100% rename from LICENSE rename to COPYING diff --git a/Gemfile b/Gemfile index 8fe591e03..407a3f9b0 100644 --- a/Gemfile +++ b/Gemfile @@ -1,14 +1,31 @@ -# vim: set ft=ruby: - source 'https://rubygems.org' -case ENV['JSON'] -when 'ext', nil - if ENV['RUBY_ENGINE'] == 'jruby' - gemspec :name => 'json-java' - else - gemspec :name => 'json' +gemspec + +group :development do + gem "ruby_memcheck" if RUBY_PLATFORM =~ /linux/i + gem "bigdecimal" + gem "rake" + gem "rake-compiler" + gem "test-unit" + gem "test-unit-ruby-core" + gem "simplecov", require: false + + if RUBY_VERSION < "3.1." + # Ref: https://github.com/test-unit/test-unit/pull/329 + gem 'power_assert', '< 3.0.0' + end +end + +group :release do + gem "net-http" + gem "uri" +end + +if ENV['BENCHMARK'] + gem "benchmark-ips" + unless RUBY_PLATFORM =~ /java/ + gem "oj" + gem "rapidjson" end -when 'pure' - gemspec :name => 'json_pure' end diff --git a/LEGAL b/LEGAL new file mode 100644 index 000000000..3d3e0935a --- /dev/null +++ b/LEGAL @@ -0,0 +1,20 @@ +# -*- rdoc -*- + += LEGAL NOTICE INFORMATION +-------------------------- + +All the files in this distribution are covered under either the Ruby's +license (see the file COPYING) or public-domain except some files +mentioned below. + +ext/json/ext/vendor/fpconv.h:: + This file is adapted from https://github.com/night-shift/fpconv + It is licensed under Boost Software License 1.0. + +ext/json/ext/vendor/jeaiii-ltoa.h:: + This file is adapted from https://github.com/jeaiii/itoa + It is licensed under the MIT License + +ext/json/ext/vendor/fast_float_parser.h:: + This file is adapted from the Fast Float C++ library by The fast_float authors https://github.com/fastfloat/fast_float + It is licensed under the MIT License diff --git a/README-json-jruby.md b/README-json-jruby.md deleted file mode 100644 index 13368378d..000000000 --- a/README-json-jruby.md +++ /dev/null @@ -1,33 +0,0 @@ -JSON-JRuby -========== - -JSON-JRuby is a port of Florian Frank's native -[`json` library](http://json.rubyforge.org/) to JRuby. -It aims to be a perfect drop-in replacement for `json_pure`. - - -Development version -=================== - -The latest version is available from the -[Git repository](http://github.com/mernen/json-jruby/tree): - - git clone git://github.com/mernen/json-jruby.git - - -Compiling -========= - -You'll need JRuby version 1.2 or greater to build JSON-JRuby. -Its path must be set on the `jruby.dir` property of -`nbproject/project.properties` (defaults to `../jruby`). - -Additionally, you'll need [Ant](http://ant.apache.org/), and -[Ragel](http://www.cs.queensu.ca/~thurston/ragel/) 6.4 or greater. - -Then, from the folder where the sources are located, type: - - ant clean jar - -to clean any leftovers from previous builds and generate the `.jar` files. -To generate a RubyGem, specify the `gem` action rather than `jar`. diff --git a/README.md b/README.md index 5923cfb82..ab550ad7c 100644 --- a/README.md +++ b/README.md @@ -1,80 +1,32 @@ # JSON implementation for Ruby -[![Travis Widget](http://travis-ci.org/flori/json.svg?branch=master)](https://travis-ci.org/flori/json) +[![CI](https://github.com/ruby/json/actions/workflows/ci.yml/badge.svg)](https://github.com/ruby/json/actions/workflows/ci.yml) ## Description -This is a implementation of the JSON specification according to RFC 7159 -http://www.ietf.org/rfc/rfc7159.txt . Starting from version 1.0.0 on there -will be two variants available: +This is an implementation of the JSON specification according to RFC 7159 +http://www.ietf.org/rfc/rfc7159.txt . -* A pure ruby variant, that relies on the iconv and the stringscan - extensions, which are both part of the ruby standard library. -* The quite a bit faster native extension variant, which is in parts - implemented in C or Java and comes with its own unicode conversion - functions and a parser generated by the ragel state machine compiler - http://www.complang.org/ragel/ . - -Both variants of the JSON generator generate UTF-8 character sequences by -default. If an :ascii\_only option with a true value is given, they escape all +The JSON generator generate UTF-8 character sequences by default. +If an :ascii\_only option with a true value is given, they escape all non-ASCII and control characters with \uXXXX escape sequences, and support UTF-16 surrogate pairs in order to be able to generate the whole range of unicode code points. All strings, that are to be encoded as JSON strings, should be UTF-8 byte -sequences on the Ruby side. To encode raw binary strings, that aren't UTF-8 -encoded, please use the to\_json\_raw\_object method of String (which produces -an object, that contains a byte array) and decode the result on the receiving -endpoint. +sequences on the Ruby side. ## Installation -It's recommended to use the extension variant of JSON, because it's faster than -the pure ruby variant. If you cannot build it on your system, you can settle -for the latter. - -Just type into the command line as root: - -``` -# rake install -``` - -The above command will build the extensions and install them on your system. - -``` -# rake install_pure -``` - -or - -``` -# ruby install.rb -``` - -will just install the pure ruby implementation of JSON. +Install the gem and add to the application's Gemfile by executing: -If you use Rubygems you can type + $ bundle add json -``` -# gem install json -``` +If bundler is not being used to manage dependencies, install the gem by executing: -instead, to install the newest JSON version. + $ gem install json -There is also a pure ruby json only variant of the gem, that can be installed -with: - -``` -# gem install json_pure -``` - -## Compiling the extensions yourself - -If you want to create the `parser.c` file from its `parser.rl` file or draw nice -graphviz images of the state machines, you need ragel from: -http://www.complang.org/ragel/ - -## Usage +## Basic Usage To use JSON you can @@ -82,20 +34,6 @@ To use JSON you can require 'json' ``` -to load the installed variant (either the extension `'json'` or the pure -variant `'json_pure'`). If you have installed the extension variant, you can -pick either the extension variant or the pure variant by typing - -```ruby -require 'json/ext' -``` - -or - -```ruby -require 'json/pure' -``` - Now you can parse a JSON document into a ruby data structure by calling ```ruby @@ -108,135 +46,105 @@ JSON.generate(data) ``` You can also use the `pretty_generate` method (which formats the output more -verbosely and nicely) or `fast_generate` (which doesn't do any of the security -checks generate performs, e. g. nesting deepness checks). +verbosely and nicely). -There are also the JSON and JSON[] methods which use parse on a String or -generate a JSON document from an array or hash: +## Casting non native types -```ruby -document = JSON 'test' => 23 # => "{\"test\":23}" -document = JSON['test' => 23] # => "{\"test\":23}" -``` +JSON documents can only support Hashes, Arrays, Strings, Integers and Floats. -and +By default if you attempt to serialize something else, `JSON.generate` will +search for a `#to_json` method on that object: ```ruby -data = JSON '{"test":23}' # => {"test"=>23} -data = JSON['{"test":23}'] # => {"test"=>23} -``` - -You can choose to load a set of common additions to ruby core's objects if -you +Position = Struct.new(:latitude, :longitude) do + def to_json(state = nil, *) + JSON::State.from_state(state).generate({ + latitude: latitude, + longitude: longitude, + }) + end +end -```ruby -require 'json/add/core' +JSON.generate([ + Position.new(12323.234, 435345.233), + Position.new(23434.676, 159435.324), +]) # => [{"latitude":12323.234,"longitude":435345.233},{"latitude":23434.676,"longitude":159435.324}] ``` -After requiring this you can, e. g., serialise/deserialise Ruby ranges: +If a `#to_json` method isn't defined on the object, `JSON.generate` will fallback to call `#to_s`: ```ruby -JSON JSON(1..10) # => 1..10 +JSON.generate(Object.new) # => "#" ``` -To find out how to add JSON support to other or your own classes, read the -section "More Examples" below. - -To get the best compatibility to rails' JSON implementation, you can +Both of these behavior can be disabled using the `strict: true` option: ```ruby -require 'json/add/rails' +JSON.generate(Object.new, strict: true) # => Object not allowed in JSON (JSON::GeneratorError) +JSON.generate(Position.new(1, 2), strict: true) # => Position not allowed in JSON (JSON::GeneratorError) ``` -Both of the additions attempt to require `'json'` (like above) first, if it has -not been required yet. - -## Serializing exceptions +## JSON::Coder -The JSON module doesn't extend `Exception` by default. If you convert an `Exception` -object to JSON, it will by default only include the exception message. +Since `#to_json` methods are global, it can sometimes be problematic if you need a given type to be +serialized in different ways in different locations. -To include the full details, you must either load the `json/add/core` mentioned -above, or specifically load the exception addition: +Instead it is recommended to use the newer `JSON::Coder` API: ```ruby -require 'json/add/exception' -``` - -## More Examples - -To create a JSON document from a ruby data structure, you can call -`JSON.generate` like that: - -```ruby -json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] -# => "[1,2,{\"a\":3.141},false,true,null,\"4..10\"]" -``` - -To get back a ruby data structure from a JSON document, you have to call -JSON.parse on it: +module MyApp + API_JSON_CODER = JSON::Coder.new do |object, is_object_key| + case object + when Time + object.iso8601(3) + else + object + end + end +end -```ruby -JSON.parse json -# => [1, 2, {"a"=>3.141}, false, true, nil, "4..10"] +puts MyApp::API_JSON_CODER.dump(Time.now.utc) # => "2025-01-21T08:41:44.286Z" ``` -Note, that the range from the original data structure is a simple -string now. The reason for this is, that JSON doesn't support ranges -or arbitrary classes. In this case the json library falls back to call -`Object#to_json`, which is the same as `#to_s.to_json`. +The provided block is called for all objects that don't have a native JSON equivalent, and +must return a Ruby object that has a native JSON equivalent. -It's possible to add JSON support serialization to arbitrary classes by -simply implementing a more specialized version of the `#to_json method`, that -should return a JSON object (a hash converted to JSON with `#to_json`) like -this (don't forget the `*a` for all the arguments): +It is also called for objects that do have a JSON equivalent, but are used as Hash keys, for instance `{ 1 => 2}`, +as well as for strings that aren't valid UTF-8: ```ruby -class Range - def to_json(*a) - { - 'json_class' => self.class.name, # = 'Range' - 'data' => [ first, last, exclude_end? ] - }.to_json(*a) +coder = JSON::Coder.new do |object, is_object_key| + case object + when String + if !object.valid_encoding? || object.encoding != Encoding::UTF_8 + Base64.encode64(object) + else + object + end + else + object end end ``` -The hash key `json_class` is the class, that will be asked to deserialise the -JSON representation later. In this case it's `Range`, but any namespace of -the form `A::B` or `::A::B` will do. All other keys are arbitrary and can be -used to store the necessary data to configure the object to be deserialised. +## Combining JSON fragments -If the key `json_class` is found in a JSON object, the JSON parser checks -if the given class responds to the `json_create` class method. If so, it is -called with the JSON object converted to a Ruby hash. So a range can -be deserialised by implementing `Range.json_create` like this: +To combine JSON fragments into a bigger JSON document, you can use `JSON::Fragment`: ```ruby -class Range - def self.json_create(o) - new(*o['data']) - end +posts_json = cache.fetch_multi(post_ids) do |post_id| + JSON.generate(Post.find(post_id)) end +posts_json.map! { |post_json| JSON::Fragment.new(post_json) } +JSON.generate({ posts: posts_json, count: posts_json.count }) ``` -Now it possible to serialise/deserialise ranges as well: - -```ruby -json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] -# => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" -JSON.parse json -# => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] -json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] -# => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" -JSON.parse json, :create_additions => true -# => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] -``` +## Pretty Printing `JSON.generate` always creates the shortest possible string representation of a ruby data structure in one line. This is good for data storage or network protocols, but not so good for humans to read. Fortunately there's also -`JSON.pretty_generate` (or `JSON.pretty_generate`) that creates a more readable +`JSON.pretty_generate` that creates a more readable output: ```ruby @@ -261,133 +169,44 @@ output: ] ``` -There are also the methods `Kernel#j` for generate, and `Kernel#jj` for -`pretty_generate` output to the console, that work analogous to Core Ruby's `p` and -the `pp` library's `pp` methods. +## Security -The script `tools/server.rb` contains a small example if you want to test, how -receiving a JSON object from a webrick server in your browser with the -javasript prototype library http://www.prototypejs.org works. +When parsing or serializing untrusted input, parser and generator options should never be user controlled. -## Speed Comparisons +```ruby +# Dangerous, DO NOT DO THIS. +JSON.generate(params[:data], params[:options]) +``` -I have created some benchmark results (see the benchmarks/data-p4-3Ghz -subdir of the package) for the JSON-parser to estimate the speed up in the C -extension: +Security vulnerability reports relying on attacker controlled parsing or generator options will be handled as regular bug fixes. -``` - Comparing times (call_time_mean): - 1 ParserBenchmarkExt#parser 900 repeats: - 553.922304770 ( real) -> 21.500x - 0.001805307 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 224.513358139 ( real) -> 8.714x - 0.004454078 - 3 ParserBenchmarkPure#parser 1000 repeats: - 26.755020642 ( real) -> 1.038x - 0.037376163 - 4 ParserBenchmarkRails#parser 1000 repeats: - 25.763381731 ( real) -> 1.000x - 0.038814780 - calls/sec ( time) -> speed covers - secs/call -``` +## Development -In the table above 1 is `JSON::Ext::Parser`, 2 is `YAML.load` with YAML -compatbile JSON document, 3 is is `JSON::Pure::Parser`, and 4 is -`ActiveSupport::JSON.decode`. The ActiveSupport JSON-decoder converts the -input first to YAML and then uses the YAML-parser, the conversion seems to -slow it down so much that it is only as fast as the `JSON::Pure::Parser`! +### Prerequisites -If you look at the benchmark data you can see that this is mostly caused by -the frequent high outliers - the median of the Rails-parser runs is still -overall smaller than the median of the `JSON::Pure::Parser` runs: +1. Clone the repository +2. Install dependencies with `bundle install` -``` - Comparing times (call_time_median): - 1 ParserBenchmarkExt#parser 900 repeats: - 800.592479481 ( real) -> 26.936x - 0.001249075 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 271.002390644 ( real) -> 9.118x - 0.003690004 - 3 ParserBenchmarkRails#parser 1000 repeats: - 30.227910865 ( real) -> 1.017x - 0.033082008 - 4 ParserBenchmarkPure#parser 1000 repeats: - 29.722384421 ( real) -> 1.000x - 0.033644676 - calls/sec ( time) -> speed covers - secs/call -``` +### Testing -I have benchmarked the `JSON-Generator` as well. This generated a few more -values, because there are different modes that also influence the achieved -speed: +The full test suite can be run with: +```bash +bundle exec rake test ``` - Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 15.090x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 12.240x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 10.341x - 0.002665923 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 38.531868759 ( real) -> 1.062x - 0.025952543 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 7 (>=3859) - 0.027079979 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 6 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call -``` - -In the table above 1-3 are `JSON::Ext::Generator` methods. 4, 6, and 7 are -`JSON::Pure::Generator` methods and 5 is the Rails JSON generator. It is now a -bit faster than the `generator_safe` and `generator_pretty` methods of the pure -variant but slower than the others. -To achieve the fastest JSON document output, you can use the `fast_generate` -method. Beware, that this will disable the checking for circular Ruby data -structures, which may cause JSON to go into an infinite loop. +### Release -Here are the median comparisons for completeness' sake: +Update the `lib/json/version.rb` file. ``` - Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 16.547x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 13.296x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 11.280x - 0.002071142 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 43.965681162 ( real) -> 1.027x - 0.022745013 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 7 (>=3859) - 0.022763968 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 6 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call +rbenv shell 2.6.5 +rake build +gem push pkg/json-2.3.0.gem + +rbenv shell jruby-9.2.9.0 +rake build +gem push pkg/json-2.3.0-java.gem ``` ## Author diff --git a/Rakefile b/Rakefile index ce390952d..db8ea3ac4 100644 --- a/Rakefile +++ b/Rakefile @@ -1,210 +1,103 @@ -begin - require 'rubygems/package_task' -rescue LoadError -end +require "bundler/gem_tasks" require 'rbconfig' -include\ - begin - RbConfig - rescue NameError - Config - end - -require 'rake/clean' -CLOBBER.include 'doc', 'Gemfile.lock' -CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp', - FileList["ext/**/{Makefile,mkmf.log}"], 'build', 'dist', FileList['**/*.rbc'], - FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def,jar,class,dSYM}"], - FileList['java/src/**/*.class'] +include RbConfig require 'rake/testtask' class UndocumentedTestTask < Rake::TestTask def desc(*) end -end - -which = lambda { |c| - w = `which #{c}` - break w.chomp unless w.empty? -} - -MAKE = ENV['MAKE'] || %w[gmake make].find(&which) -BUNDLE = ENV['BUNDLE'] || %w[bundle].find(&which) -PKG_NAME = 'json' -PKG_TITLE = 'JSON Implementation for Ruby' -PKG_VERSION = File.read('VERSION').chomp -PKG_FILES = FileList[`git ls-files`.split(/\n/)] - -EXT_ROOT_DIR = 'ext/json/ext' -EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser" -EXT_PARSER_DL = "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}" -RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl" -EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c" -EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator" -EXT_GENERATOR_DL = "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}" -EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c" - -JAVA_DIR = "java/src/json/ext" -JAVA_RAGEL_PATH = "#{JAVA_DIR}/Parser.rl" -JAVA_PARSER_SRC = "#{JAVA_DIR}/Parser.java" -JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"] -JAVA_CLASSES = [] -JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar") -JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar") -RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find(&which) -RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find(&which) - -desc "Installing library (pure)" -task :install_pure => :version do - ruby 'install.rb' -end - -task :install_ext_really do - sitearchdir = CONFIG["sitearchdir"] - cd 'ext' do - for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"] - d = File.join(sitearchdir, file) - mkdir_p File.dirname(d) - install(file, d) + if RUBY_ENGINE != "jruby" + def ruby(...) + env_was = ENV["JSON_COVERAGE"] + ENV["JSON_COVERAGE"] = "1" + ret = super + ENV["JSON_COVERAGE"] = env_was + ret end - warn " *** Installed EXT ruby library." end end -desc "Installing library (extension)" -task :install_ext => [ :compile, :install_pure, :install_ext_really ] - -desc "Installing library (extension)" -task :install => :install_ext - -if defined?(Gem) and defined?(Gem::PackageTask) - spec_pure = Gem::Specification.new do |s| - s.name = 'json_pure' - s.version = PKG_VERSION - s.summary = PKG_TITLE - s.description = "This is a JSON implementation in pure Ruby." +PKG_VERSION = File.foreach(File.join(__dir__, "lib/json/version.rb")) do |line| + /^\s*VERSION\s*=\s*'(.*)'/ =~ line and break $1 +end rescue nil - s.files = PKG_FILES +module CI + extend self - s.require_path = 'lib' - s.add_development_dependency 'rake' - s.add_development_dependency 'test-unit', '~> 2.0' - - s.extra_rdoc_files << 'README.md' - s.rdoc_options << - '--title' << 'JSON implemention for ruby' << '--main' << 'README.md' - s.test_files.concat Dir['./tests/test_*.rb'] - - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://flori.github.com/#{PKG_NAME}" - s.license = 'Ruby' - s.required_ruby_version = '>= 1.9' + def gem_published?(name, version) + require 'net/https' + require 'uri' + uri = URI.parse("https://rubygems.org/api/v2/rubygems/#{name}/versions/#{version}.json") + Net::HTTP.get_response(uri).is_a?(Net::HTTPSuccess) end - desc 'Creates a json_pure.gemspec file' - task :gemspec_pure => :version do - File.open('json_pure.gemspec', 'w') do |gemspec| - gemspec.write spec_pure.to_ruby + def changelog(version) + changelog_lines = File.readlines(File.expand_path("CHANGES.md", __dir__)) + changelog_lines = changelog_lines.drop_while { |line| !(line.start_with?("### ") && line.include?("(#{version})")) } + if changelog_lines.empty? + return false end + changelog_lines.shift + changelog_lines = changelog_lines.take_while { |line| !(line.start_with?("### ") ) } + changelog_lines.join end - Gem::PackageTask.new(spec_pure) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES + def prerelease?(version) + !version.match?(/\A[\d.]+\z/) end +end - spec_ext = Gem::Specification.new do |s| - s.name = 'json' - s.version = PKG_VERSION - s.summary = PKG_TITLE - s.description = "This is a JSON implementation as a Ruby extension in C." - - s.files = PKG_FILES - - s.extensions = FileList['ext/**/extconf.rb'] - - s.require_path = 'lib' - s.add_development_dependency 'rake' - s.add_development_dependency 'test-unit', '~> 2.0' - - s.extra_rdoc_files << 'README.md' - s.rdoc_options << - '--title' << 'JSON implemention for Ruby' << '--main' << 'README.md' - s.test_files.concat Dir['./tests/test_*.rb'] +namespace :ci do + task :check_release do + unless PKG_VERSION + abort("Gem version couldn't be read") + end - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://flori.github.com/#{PKG_NAME}" - s.license = 'Ruby' - s.required_ruby_version = '>= 1.9' - end + if CI.gem_published?("json", PKG_VERSION) + $stderr.puts "Version #{PKG_VERSION} was already released. Nothing to do." + exit 0 + end - desc 'Creates a json.gemspec file' - task :gemspec_ext => :version do - File.open('json.gemspec', 'w') do |gemspec| - gemspec.write spec_ext.to_ruby + if changelog = CI.changelog(PKG_VERSION) + puts "Changelog:" + puts changelog + else + abort("Could not find version #{PKG_VERSION} in CHANGES.md") end - end - Gem::PackageTask.new(spec_ext) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES + if ENV["GITHUB_OUTPUT"] + $stderr.puts "Triggering release" + File.open(ENV["GITHUB_OUTPUT"], "a+") do |f| + f.puts "run_publish=true" + end + end end - - desc 'Create all gemspec files' - task :gemspec => [ :gemspec_pure, :gemspec_ext ] -end - -desc m = "Writing version information for #{PKG_VERSION}" -task :version do - puts m - File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v| - v.puts < [ :clean, :check_env, :do_test_pure ] - -UndocumentedTestTask.new do |t| - t.name = 'do_test_pure' - t.libs << 'lib' << 'tests' - t.test_files = FileList['tests/*_test.rb'] - t.verbose = true - t.options = '-v' -end - -desc "Testing library (pure ruby and extension)" -task :test do - sh "env JSON=pure #{BUNDLE} exec rake test_pure" or exit 1 - sh "env JSON=ext #{BUNDLE} exec rake test_ext" or exit 1 -end +JAVA_DIR = "java/src/json/ext" +JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"].exclude("#{JAVA_DIR}/Vectorized*.java") +JAVA_VEC_SOURCES = FileList["#{JAVA_DIR}/Vectorized*.java"] +JAVA_CLASSES = [] +JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar") +JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar") -namespace :gems do - desc 'Install all development gems' - task :install do - sh "#{BUNDLE}" - end -end +CLEAN.concat FileList["java/src/**/*.class"] +CLEAN << JRUBY_PARSER_JAR +CLEAN << JRUBY_GENERATOR_JAR if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby' + path_separator = File::PATH_SEPARATOR ENV['JAVA_HOME'] ||= [ '/usr/local/java/jdk', '/usr/lib/jvm/java-6-openjdk', @@ -212,38 +105,38 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby' ].find { |c| File.directory?(c) } if ENV['JAVA_HOME'] warn " *** JAVA_HOME is set to #{ENV['JAVA_HOME'].inspect}" - ENV['PATH'] = ENV['PATH'].split(/:/).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * ':' + ENV['PATH'] = ENV['PATH'].split(path_separator).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * path_separator warn " *** java binaries are assumed to be in #{java_path.inspect}" else warn " *** JAVA_HOME was not set or could not be guessed!" exit 1 end - file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do - cd JAVA_DIR do - if RAGEL_CODEGEN == 'ragel' - sh "ragel Parser.rl -J -o Parser.java" - else - sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J" - end - end - end - - desc "Generate parser for java with ragel" - task :ragel => JAVA_PARSER_SRC - - desc "Delete the ragel generated Java source" - task :ragel_clean do - rm_rf JAVA_PARSER_SRC - end - JRUBY_JAR = File.join(CONFIG["libdir"], "jruby.jar") if File.exist?(JRUBY_JAR) + classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * path_separator JAVA_SOURCES.each do |src| - classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':' obj = src.sub(/\.java\Z/, '.class') file obj => src do - sh 'javac', '-classpath', classpath, '-source', '1.6', '-target', '1.6', src + if File.exist?(File.join(ENV['JAVA_HOME'], "lib", "modules")) + sh 'javac', '-classpath', classpath, '--release', '8', src + else + sh 'javac', '-classpath', classpath, '-source', '1.8', '-target', '1.8', src + end + end + JAVA_CLASSES << obj + end + + JAVA_VEC_SOURCES.each do |src| + obj = src.sub(/\.java\Z/, '.class') + file obj => src do + sh 'javac', '--add-modules', 'jdk.incubator.vector', '-classpath', classpath, '--release', '16', src do |success, status| + if success + puts "*** 'jdk.incubator.vector' support enabled ***" + else + puts "*** 'jdk.incubator.vector' support disabled ***" + end + end end JAVA_CLASSES << obj end @@ -252,34 +145,33 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby' end desc "Compiling jruby extension" - task :compile => JAVA_CLASSES + task compile: JAVA_CLASSES desc "Package the jruby gem" - task :jruby_gem => :create_jar do - sh 'gem build json-java.gemspec' + task jruby_gem: :create_jar do mkdir_p 'pkg' - mv "json-#{PKG_VERSION}-java.gem", 'pkg' + sh "gem build -o pkg/json-#{PKG_VERSION}-java.gem json.gemspec" end - desc "Testing library (jruby)" - task :test_ext => [ :check_env, :create_jar, :do_test_ext ] - UndocumentedTestTask.new do |t| - t.name = 'do_test_ext' - t.libs << 'lib' << 'tests' - t.test_files = FileList['tests/*_test.rb'] + t.name = :test + t.test_files = FileList['test/json/*_test.rb'] t.verbose = true t.options = '-v' end + desc "Testing library (jruby)" + task test: [:create_jar ] file JRUBY_PARSER_JAR => :compile do cd 'java/src' do parser_classes = FileList[ - "json/ext/ByteListTranscoder*.class", + "json/ext/ByteList*.class", "json/ext/OptionsReader*.class", "json/ext/Parser*.class", + "json/ext/Ryu*.class", "json/ext/RuntimeInfo*.class", "json/ext/StringDecoder*.class", + "json/ext/*StringScanner*.class", "json/ext/Utils*.class" ] sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes @@ -288,70 +180,62 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby' end desc "Create parser jar" - task :create_parser_jar => JRUBY_PARSER_JAR + task create_parser_jar: JRUBY_PARSER_JAR file JRUBY_GENERATOR_JAR => :compile do cd 'java/src' do generator_classes = FileList[ - "json/ext/ByteListTranscoder*.class", + "json/ext/*ByteList*.class", "json/ext/OptionsReader*.class", + "json/ext/EscapeScanner*.class", "json/ext/Generator*.class", "json/ext/RuntimeInfo*.class", - "json/ext/StringEncoder*.class", + "json/ext/*StringEncoder*.class", "json/ext/Utils*.class" ] + puts "Creating generator jar with classes: #{generator_classes.join(', ')}" sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR) end end desc "Create generator jar" - task :create_generator_jar => JRUBY_GENERATOR_JAR + task create_generator_jar: JRUBY_GENERATOR_JAR desc "Create parser and generator jars" - task :create_jar => [ :create_parser_jar, :create_generator_jar ] + task create_jar: [ :create_parser_jar, :create_generator_jar ] desc "Build all gems and archives for a new release of the jruby extension." - task :build => [ :clean, :version, :jruby_gem ] + task build: [ :clean, :jruby_gem ] - task :release => :build + task release: :build else - desc "Compiling extension" - task :compile => [ EXT_PARSER_DL, EXT_GENERATOR_DL ] + require 'rake/extensiontask' - file EXT_PARSER_DL => EXT_PARSER_SRC do - cd EXT_PARSER_DIR do - ruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR + unless RUBY_ENGINE == 'truffleruby' + Rake::ExtensionTask.new("json/ext/generator") end - file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do - cd EXT_GENERATOR_DIR do - ruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR - end - - desc "Testing library (extension)" - task :test_ext => [ :check_env, :compile, :do_test_ext ] + Rake::ExtensionTask.new("json/ext/parser") UndocumentedTestTask.new do |t| - t.name = 'do_test_ext' - t.libs << 'ext' << 'lib' << 'tests' - t.test_files = FileList['tests/*_test.rb'] + t.name = :test + t.test_files = FileList['test/json/*_test.rb'] t.verbose = true t.options = '-v' end - desc "Generate parser with ragel" - task :ragel => EXT_PARSER_SRC + desc "Testing library (extension)" + task test: [ :compile ] - desc "Delete the ragel generated C source" - task :ragel_clean do - rm_rf EXT_PARSER_SRC + begin + require "ruby_memcheck" + RubyMemcheck::TestTask.new(valgrind: [ :compile, :test ]) do |t| + t.test_files = FileList['test/json/*_test.rb'] + t.verbose = true + t.options = '-v' + end + rescue LoadError end desc "Update the tags file" @@ -359,55 +243,18 @@ else system 'ctags', *Dir['**/*.{rb,c,h,java}'] end - file EXT_PARSER_SRC => RAGEL_PATH do - cd EXT_PARSER_DIR do - if RAGEL_CODEGEN == 'ragel' - sh "ragel parser.rl -G2 -o parser.c" - else - sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2" - end - src = File.read("parser.c").gsub(/[ \t]+$/, '') - src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};') - File.open("parser.c", "w") {|f| f.print src} - end - end - - desc "Generate diagrams of ragel parser (ps)" - task :ragel_dot_ps do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps" - end - end - end - - desc "Generate diagrams of ragel parser (png)" - task :ragel_dot_png do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png" - end - end + desc "Create the gem packages" + task :package do + sh "gem build json.gemspec" + mkdir_p 'pkg' + mv "json-#{PKG_VERSION}.gem", 'pkg' end - desc "Generate diagrams of ragel parser" - task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ] - - desc "Build all gems and archives for a new release of json and json_pure." - task :build => [ :clean, :gemspec, :package ] + desc "Build all gems and archives for a new release of json" + task build: [ :clean, :package ] - task :release => :build + task release: :build end desc "Compile in the the source directory" -task :default => [ :clean, :gemspec, :test ] +task default: [ :clean, :test ] diff --git a/VERSION b/VERSION deleted file mode 100644 index ccbccc3dc..000000000 --- a/VERSION +++ /dev/null @@ -1 +0,0 @@ -2.2.0 diff --git a/benchmark/data/activitypub.json b/benchmark/data/activitypub.json new file mode 100644 index 000000000..cd1d7bb3a --- /dev/null +++ b/benchmark/data/activitypub.json @@ -0,0 +1 @@ +{"@context":["https://www.w3.org/ns/activitystreams",{"ostatus":"http://ostatus.org#","atomUri":"ostatus:atomUri","inReplyToAtomUri":"ostatus:inReplyToAtomUri","conversation":"ostatus:conversation","sensitive":"as:sensitive","toot":"http://joinmastodon.org/ns#","votersCount":"toot:votersCount","blurhash":"toot:blurhash","focalPoint":{"@container":"@list","@id":"toot:focalPoint"},"Hashtag":"as:Hashtag"}],"id":"https://ruby.social/users/byroot/outbox?page=true","type":"OrderedCollectionPage","next":"https://ruby.social/users/byroot/outbox?max_id=112610149145350336\u0026page=true","prev":"https://ruby.social/users/byroot/outbox?min_id=113395951825326098\u0026page=true","partOf":"https://ruby.social/users/byroot/outbox","orderedItems":[{"id":"https://ruby.social/users/byroot/statuses/113395951825326098/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-30T10:41:49Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"object":{"id":"https://ruby.social/users/byroot/statuses/113395951825326098","type":"Note","summary":null,"inReplyTo":null,"published":"2024-10-30T10:41:49Z","url":"https://ruby.social/@byroot/113395951825326098","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113395951825326098","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-10-30:objectId=57644998:objectType=Conversation","content":"\u003cp\u003eHere\u0026#39;s the post I teased last week.\u003c/p\u003e\u003cp\u003eTL;DR; Average latency: -5%, p99 latency -10%\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://railsatscale.com/2024-10-23-next-generation-oob-gc/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003erailsatscale.com/2024-10-23-ne\u003c/span\u003e\u003cspan class=\"invisible\"\u003ext-generation-oob-gc/\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e","contentMap":{"en":"\u003cp\u003eHere\u0026#39;s the post I teased last week.\u003c/p\u003e\u003cp\u003eTL;DR; Average latency: -5%, p99 latency -10%\u003c/p\u003e\u003cp\u003e\u003ca href=\"https://railsatscale.com/2024-10-23-next-generation-oob-gc/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003erailsatscale.com/2024-10-23-ne\u003c/span\u003e\u003cspan class=\"invisible\"\u003ext-generation-oob-gc/\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e"},"attachment":[],"tag":[],"replies":{"id":"https://ruby.social/users/byroot/statuses/113395951825326098/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113395951825326098/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113395951825326098/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113395951825326098/likes","type":"Collection","totalItems":7},"shares":{"id":"https://ruby.social/users/byroot/statuses/113395951825326098/shares","type":"Collection","totalItems":5}}},{"id":"https://ruby.social/users/byroot/statuses/113364382912445498/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-24T20:53:26Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://oisaur.com/users/renchap"],"object":{"id":"https://ruby.social/users/byroot/statuses/113364382912445498","type":"Note","summary":null,"inReplyTo":"https://oisaur.com/users/renchap/statuses/113364257424669603","published":"2024-10-24T20:53:26Z","url":"https://ruby.social/@byroot/113364382912445498","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://oisaur.com/users/renchap"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113364382912445498","inReplyToAtomUri":"https://oisaur.com/users/renchap/statuses/113364257424669603","conversation":"tag:ruby.social,2024-10-24:objectId=57167969:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://oisaur.com/@renchap\" class=\"u-url mention\"\u003e@\u003cspan\u003erenchap\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e for JSON generation yes.\u003c/p\u003e\u003cp\u003eIf you can turn that into an easy to run benchmark of some sort and somehow Oj is faster, I\u0026#39;m happy to take a look.\u003c/p\u003e\u003cp\u003eAnd even if it\u0026#39;s not faster, I\u0026#39;d also be happy to see if I can squeeze some more perf out of `json`.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://oisaur.com/@renchap\" class=\"u-url mention\"\u003e@\u003cspan\u003erenchap\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e for JSON generation yes.\u003c/p\u003e\u003cp\u003eIf you can turn that into an easy to run benchmark of some sort and somehow Oj is faster, I\u0026#39;m happy to take a look.\u003c/p\u003e\u003cp\u003eAnd even if it\u0026#39;s not faster, I\u0026#39;d also be happy to see if I can squeeze some more perf out of `json`.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://oisaur.com/users/renchap","name":"@renchap@oisaur.com"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113364382912445498/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113364382912445498/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113364382912445498/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113364382912445498/likes","type":"Collection","totalItems":2},"shares":{"id":"https://ruby.social/users/byroot/statuses/113364382912445498/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113361790648929484/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-24T09:54:11Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"object":{"id":"https://ruby.social/users/byroot/statuses/113361790648929484","type":"Note","summary":null,"inReplyTo":null,"published":"2024-10-24T09:54:11Z","url":"https://ruby.social/@byroot/113361790648929484","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113361790648929484","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-10-24:objectId=57167969:objectType=Conversation","content":"\u003cp\u003eI\u0026#39;ve just released json 2.7.3 with some bug fixes and lots of performance improvements: \u003ca href=\"https://github.com/ruby/json/releases/tag/v2.7.3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/ruby/json/releases/\u003c/span\u003e\u003cspan class=\"invisible\"\u003etag/v2.7.3\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThis is my first release after being made maintainer two weeks ago.\u003c/p\u003e\u003cp\u003eIf you got some realistic benchmarks in which JSON.dump is significantly slower than an alternative gem, please let me know.\u003c/p\u003e\u003cp\u003eAs long as it\u0026#39;s not the result of the alternative doing something incorrect, I\u0026#39;ll consider it as a bug.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003eI\u0026#39;ve just released json 2.7.3 with some bug fixes and lots of performance improvements: \u003ca href=\"https://github.com/ruby/json/releases/tag/v2.7.3\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/ruby/json/releases/\u003c/span\u003e\u003cspan class=\"invisible\"\u003etag/v2.7.3\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eThis is my first release after being made maintainer two weeks ago.\u003c/p\u003e\u003cp\u003eIf you got some realistic benchmarks in which JSON.dump is significantly slower than an alternative gem, please let me know.\u003c/p\u003e\u003cp\u003eAs long as it\u0026#39;s not the result of the alternative doing something incorrect, I\u0026#39;ll consider it as a bug.\u003c/p\u003e"},"attachment":[{"type":"Document","mediaType":"image/png","url":"https://cdn.masto.host/rubysocial/media_attachments/files/113/361/788/681/127/110/original/5f0931fc4b8fe796.png","name":null,"blurhash":"UASF-ENLo#xY_4RkM_xu9Yoea#V@_MITWB%g","width":1870,"height":960}],"tag":[],"replies":{"id":"https://ruby.social/users/byroot/statuses/113361790648929484/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113361790648929484/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113361790648929484/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113361790648929484/likes","type":"Collection","totalItems":36},"shares":{"id":"https://ruby.social/users/byroot/statuses/113361790648929484/shares","type":"Collection","totalItems":16}}},{"id":"https://ruby.social/users/byroot/statuses/113356365626792579/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-23T10:54:31Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"object":{"id":"https://ruby.social/users/byroot/statuses/113356365626792579","type":"Note","summary":null,"inReplyTo":null,"published":"2024-10-23T10:54:31Z","url":"https://ruby.social/@byroot/113356365626792579","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113356365626792579","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-10-23:objectId=57090061:objectType=Conversation","content":"\u003cp\u003eI\u0026#39;m working on a blog post about our new out of band GC. Sneak peak:\u003c/p\u003e","contentMap":{"en":"\u003cp\u003eI\u0026#39;m working on a blog post about our new out of band GC. Sneak peak:\u003c/p\u003e"},"attachment":[{"type":"Document","mediaType":"image/png","url":"https://cdn.masto.host/rubysocial/media_attachments/files/113/356/364/818/271/017/original/9df7ff5c6469cfbd.png","name":null,"blurhash":"UJRfqJ-=xct5yXjEayWV-rIoRjoL~Wt7oLkC","width":4096,"height":988}],"tag":[],"replies":{"id":"https://ruby.social/users/byroot/statuses/113356365626792579/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113356365626792579/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113356365626792579/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113356365626792579/likes","type":"Collection","totalItems":8},"shares":{"id":"https://ruby.social/users/byroot/statuses/113356365626792579/shares","type":"Collection","totalItems":3}}},{"id":"https://ruby.social/users/byroot/statuses/113350171031468562/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-22T08:39:09Z","to":["https://ruby.social/users/byroot/followers"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://hachyderm.io/users/baweaver"],"object":{"id":"https://ruby.social/users/byroot/statuses/113350171031468562","type":"Note","summary":null,"inReplyTo":"https://hachyderm.io/users/baweaver/statuses/113350162298585353","published":"2024-10-22T08:39:09Z","url":"https://ruby.social/@byroot/113350171031468562","attributedTo":"https://ruby.social/users/byroot","to":["https://ruby.social/users/byroot/followers"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://hachyderm.io/users/baweaver"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113350171031468562","inReplyToAtomUri":"https://hachyderm.io/users/baweaver/statuses/113350162298585353","conversation":"tag:hachyderm.io,2024-10-22:objectId=202069168:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e how would that have been different without CD? \u003c/p\u003e\u003cp\u003eWhatever bug that caused the outage would have been deployed just the same, just as part of a bigger batch.\u003c/p\u003e\u003cp\u003eYou take make 0 sense to me.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e how would that have been different without CD? \u003c/p\u003e\u003cp\u003eWhatever bug that caused the outage would have been deployed just the same, just as part of a bigger batch.\u003c/p\u003e\u003cp\u003eYou take make 0 sense to me.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://hachyderm.io/users/baweaver","name":"@baweaver@hachyderm.io"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113350171031468562/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113350171031468562/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113350171031468562/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113350171031468562/likes","type":"Collection","totalItems":0},"shares":{"id":"https://ruby.social/users/byroot/statuses/113350171031468562/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113350159628598017/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-22T08:36:15Z","to":["https://ruby.social/users/byroot/followers"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://hachyderm.io/users/baweaver"],"object":{"id":"https://ruby.social/users/byroot/statuses/113350159628598017","type":"Note","summary":null,"inReplyTo":"https://hachyderm.io/users/baweaver/statuses/113350151359487275","published":"2024-10-22T08:36:15Z","url":"https://ruby.social/@byroot/113350159628598017","attributedTo":"https://ruby.social/users/byroot","to":["https://ruby.social/users/byroot/followers"],"cc":["https://www.w3.org/ns/activitystreams#Public","https://hachyderm.io/users/baweaver"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113350159628598017","inReplyToAtomUri":"https://hachyderm.io/users/baweaver/statuses/113350151359487275","conversation":"tag:hachyderm.io,2024-10-22:objectId=202069168:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e that doesn\u0026#39;t answer my point.\u003c/p\u003e\u003cp\u003eWhy do you think (all things being equal) releasing less often is better?\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e that doesn\u0026#39;t answer my point.\u003c/p\u003e\u003cp\u003eWhy do you think (all things being equal) releasing less often is better?\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://hachyderm.io/users/baweaver","name":"@baweaver@hachyderm.io"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113350159628598017/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113350159628598017/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113350159628598017/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113350159628598017/likes","type":"Collection","totalItems":0},"shares":{"id":"https://ruby.social/users/byroot/statuses/113350159628598017/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113350126777528742/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-22T08:27:54Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://hachyderm.io/users/baweaver"],"object":{"id":"https://ruby.social/users/byroot/statuses/113350126777528742","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/byroot/statuses/113350126084035477","published":"2024-10-22T08:27:54Z","url":"https://ruby.social/@byroot/113350126777528742","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://hachyderm.io/users/baweaver"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113350126777528742","inReplyToAtomUri":"https://ruby.social/users/byroot/statuses/113350126084035477","conversation":"tag:hachyderm.io,2024-10-22:objectId=202069168:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003c/p\u003e\u003cp\u003eI get the monitoring etc argument, but CD doesn\u0026#39;t necessarily means merge and go get a coffee, while things deploy automatically.\u003c/p\u003e\u003cp\u003eIf you don\u0026#39;t trust your monitoring and don\u0026#39;t have automatic rollbacks when an anomaly is detected, you can perfectly enforce that whoever has a change deploying must be around and check everything is going well.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003c/p\u003e\u003cp\u003eI get the monitoring etc argument, but CD doesn\u0026#39;t necessarily means merge and go get a coffee, while things deploy automatically.\u003c/p\u003e\u003cp\u003eIf you don\u0026#39;t trust your monitoring and don\u0026#39;t have automatic rollbacks when an anomaly is detected, you can perfectly enforce that whoever has a change deploying must be around and check everything is going well.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://hachyderm.io/users/baweaver","name":"@baweaver@hachyderm.io"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113350126777528742/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113350126777528742/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113350126777528742/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113350126777528742/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/113350126777528742/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113350126084035477/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-22T08:27:44Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://hachyderm.io/users/baweaver"],"object":{"id":"https://ruby.social/users/byroot/statuses/113350126084035477","type":"Note","summary":null,"inReplyTo":"https://hachyderm.io/users/baweaver/statuses/113348847094225477","published":"2024-10-22T08:27:44Z","url":"https://ruby.social/@byroot/113350126084035477","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://hachyderm.io/users/baweaver"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113350126084035477","inReplyToAtomUri":"https://hachyderm.io/users/baweaver/statuses/113348847094225477","conversation":"tag:hachyderm.io,2024-10-22:objectId=202069168:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003c/p\u003e\u003cp\u003eCan\u0026#39;t disagree more. All things equal, CD reduce the turn around time to deal with a bad release.\u003c/p\u003e\u003cp\u003eAssuming your devs ship 100 PR per week, and 1% of these have a bug, if you ship say, once a day when you hit that bug you need to figure out which of the 20 PRs in the batch is responsible.\u003c/p\u003e\u003cp\u003eIf you ship 20 times a day, so each PR independently, it becomes extremely obvious which PR need to be rolled back and reverted.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://hachyderm.io/@baweaver\" class=\"u-url mention\"\u003e@\u003cspan\u003ebaweaver\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003c/p\u003e\u003cp\u003eCan\u0026#39;t disagree more. All things equal, CD reduce the turn around time to deal with a bad release.\u003c/p\u003e\u003cp\u003eAssuming your devs ship 100 PR per week, and 1% of these have a bug, if you ship say, once a day when you hit that bug you need to figure out which of the 20 PRs in the batch is responsible.\u003c/p\u003e\u003cp\u003eIf you ship 20 times a day, so each PR independently, it becomes extremely obvious which PR need to be rolled back and reverted.\u003c/p\u003e"},"updated":"2024-10-22T08:28:50Z","attachment":[],"tag":[{"type":"Mention","href":"https://hachyderm.io/users/baweaver","name":"@baweaver@hachyderm.io"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113350126084035477/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113350126084035477/replies?min_id=113350126777528742\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113350126084035477/replies","items":["https://ruby.social/users/byroot/statuses/113350126777528742"]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113350126084035477/likes","type":"Collection","totalItems":2},"shares":{"id":"https://ruby.social/users/byroot/statuses/113350126084035477/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113287895679614930/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-10-11T08:41:43Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/postmodern"],"object":{"id":"https://ruby.social/users/byroot/statuses/113287895679614930","type":"Note","summary":null,"inReplyTo":null,"published":"2024-10-11T08:41:43Z","url":"https://ruby.social/@byroot/113287895679614930","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/postmodern"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113287895679614930","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-10-11:objectId=56178826:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@postmodern\" class=\"u-url mention\"\u003e@\u003cspan\u003epostmodern\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e it\u0026#39;s a big company, so the experience can vary a ton depending on where in the the org you are.\u003c/p\u003e\u003cp\u003eFeel free to DM details and questions if you want a more targeted answer.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@postmodern\" class=\"u-url mention\"\u003e@\u003cspan\u003epostmodern\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e it\u0026#39;s a big company, so the experience can vary a ton depending on where in the the org you are.\u003c/p\u003e\u003cp\u003eFeel free to DM details and questions if you want a more targeted answer.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/postmodern","name":"@postmodern"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113287895679614930/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113287895679614930/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113287895679614930/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113287895679614930/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/113287895679614930/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113057980213460794/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-08-31T18:11:11Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/flavorjones"],"object":{"id":"https://ruby.social/users/byroot/statuses/113057980213460794","type":"Note","summary":null,"inReplyTo":null,"published":"2024-08-31T18:11:11Z","url":"https://ruby.social/@byroot/113057980213460794","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/flavorjones"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/113057980213460794","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-08-31:objectId=53204977:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@flavorjones\" class=\"u-url mention\"\u003e@\u003cspan\u003eflavorjones\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Exceptionally, I was listening.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@flavorjones\" class=\"u-url mention\"\u003e@\u003cspan\u003eflavorjones\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Exceptionally, I was listening.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/flavorjones","name":"@flavorjones"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/113057980213460794/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/113057980213460794/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/113057980213460794/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/113057980213460794/likes","type":"Collection","totalItems":2},"shares":{"id":"https://ruby.social/users/byroot/statuses/113057980213460794/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/113032547130202524/activity","type":"Announce","actor":"https://ruby.social/users/byroot","published":"2024-08-27T06:23:13Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/pushcx","https://ruby.social/users/byroot/followers"],"object":"https://ruby.social/users/pushcx/statuses/113030799240706907"},{"id":"https://ruby.social/users/byroot/statuses/112929088810252037/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-08-08T23:52:25Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://sfba.social/users/soaproot","https://ruby.social/users/flavorjones"],"object":{"id":"https://ruby.social/users/byroot/statuses/112929088810252037","type":"Note","summary":null,"inReplyTo":"https://sfba.social/users/soaproot/statuses/112928555487199451","published":"2024-08-08T23:52:25Z","url":"https://ruby.social/@byroot/112929088810252037","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://sfba.social/users/soaproot","https://ruby.social/users/flavorjones"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112929088810252037","inReplyToAtomUri":"https://sfba.social/users/soaproot/statuses/112928555487199451","conversation":"tag:ruby.social,2024-08-08:objectId=51576086:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://sfba.social/@soaproot\" class=\"u-url mention\"\u003e@\u003cspan\u003esoaproot\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@flavorjones\" class=\"u-url mention\"\u003e@\u003cspan\u003eflavorjones\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e this is open source. Your dependencies are your code too.\u003c/p\u003e\u003cp\u003eWhich means open a PR to fix it there if there isn\u0026#39;t one yet, or at the very least ensure there is an open issue.\u003c/p\u003e\u003cp\u003eThen there are mechanisms to silence specific warnings, such as \u003ca href=\"https://rubygems.org/gems/warning\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"\"\u003erubygems.org/gems/warning\u003c/span\u003e\u003cspan class=\"invisible\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://sfba.social/@soaproot\" class=\"u-url mention\"\u003e@\u003cspan\u003esoaproot\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@flavorjones\" class=\"u-url mention\"\u003e@\u003cspan\u003eflavorjones\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e this is open source. Your dependencies are your code too.\u003c/p\u003e\u003cp\u003eWhich means open a PR to fix it there if there isn\u0026#39;t one yet, or at the very least ensure there is an open issue.\u003c/p\u003e\u003cp\u003eThen there are mechanisms to silence specific warnings, such as \u003ca href=\"https://rubygems.org/gems/warning\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"\"\u003erubygems.org/gems/warning\u003c/span\u003e\u003cspan class=\"invisible\"\u003e\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://sfba.social/users/soaproot","name":"@soaproot@sfba.social"},{"type":"Mention","href":"https://ruby.social/users/flavorjones","name":"@flavorjones"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112929088810252037/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112929088810252037/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112929088810252037/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112929088810252037/likes","type":"Collection","totalItems":4},"shares":{"id":"https://ruby.social/users/byroot/statuses/112929088810252037/shares","type":"Collection","totalItems":1}}},{"id":"https://ruby.social/users/byroot/statuses/112733460786406967/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-07-05T10:41:38Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/floehopper"],"object":{"id":"https://ruby.social/users/byroot/statuses/112733460786406967","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/floehopper/statuses/112732960288445318","published":"2024-07-05T10:41:38Z","url":"https://ruby.social/@byroot/112733460786406967","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/floehopper"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112733460786406967","inReplyToAtomUri":"https://ruby.social/users/floehopper/statuses/112732960288445318","conversation":"tag:ruby.social,2024-07-05:objectId=49065856:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@floehopper\" class=\"u-url mention\"\u003e@\u003cspan\u003efloehopper\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e while the French system isn\u0026#39;t strictly FPTP, in practice it is similar enough that historically it almost always gave an absolute majority to minority formations.\u003c/p\u003e\u003cp\u003eIt only failed to do so the last two years.\u003c/p\u003e\u003cp\u003eIt\u0026#39;s was designed this way on purpose for the sake of \u0026quot;stability\u0026quot;...\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@floehopper\" class=\"u-url mention\"\u003e@\u003cspan\u003efloehopper\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e while the French system isn\u0026#39;t strictly FPTP, in practice it is similar enough that historically it almost always gave an absolute majority to minority formations.\u003c/p\u003e\u003cp\u003eIt only failed to do so the last two years.\u003c/p\u003e\u003cp\u003eIt\u0026#39;s was designed this way on purpose for the sake of \u0026quot;stability\u0026quot;...\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/floehopper","name":"@floehopper"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112733460786406967/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112733460786406967/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112733460786406967/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112733460786406967/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/112733460786406967/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112682265852412256/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-26T09:42:05Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://status.pointless.one/users/pointlessone","https://ruby.social/users/codefolio"],"object":{"id":"https://ruby.social/users/byroot/statuses/112682265852412256","type":"Note","summary":null,"inReplyTo":"https://status.pointless.one/users/pointlessone/statuses/112682262345182185","published":"2024-06-26T09:42:05Z","url":"https://ruby.social/@byroot/112682265852412256","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://status.pointless.one/users/pointlessone","https://ruby.social/users/codefolio"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112682265852412256","inReplyToAtomUri":"https://status.pointless.one/users/pointlessone/statuses/112682262345182185","conversation":"tag:ruby.social,2024-06-26:objectId=48431832:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://status.pointless.one/@pointlessone\" class=\"u-url mention\"\u003e@\u003cspan\u003epointlessone\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e the trailing comma is the number one reason I can\u0026#39;t agree with standardrb.\u003c/p\u003e\u003cp\u003eTotally agree on minimizing diff noise.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://status.pointless.one/@pointlessone\" class=\"u-url mention\"\u003e@\u003cspan\u003epointlessone\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e the trailing comma is the number one reason I can\u0026#39;t agree with standardrb.\u003c/p\u003e\u003cp\u003eTotally agree on minimizing diff noise.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://status.pointless.one/users/pointlessone","name":"@pointlessone@status.pointless.one"},{"type":"Mention","href":"https://ruby.social/users/codefolio","name":"@codefolio"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112682265852412256/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112682265852412256/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112682265852412256/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112682265852412256/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/112682265852412256/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112682089780639728/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-26T08:57:19Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/codefolio"],"object":{"id":"https://ruby.social/users/byroot/statuses/112682089780639728","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/codefolio/statuses/112682077769593093","published":"2024-06-26T08:57:19Z","url":"https://ruby.social/@byroot/112682089780639728","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/codefolio"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112682089780639728","inReplyToAtomUri":"https://ruby.social/users/codefolio/statuses/112682077769593093","conversation":"tag:ruby.social,2024-06-26:objectId=48431832:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e I still do, because I think there is a baseline of cops that save a lot of time during review when people submit PRs.\u003c/p\u003e\u003cp\u003eBut the default config is really puzzling, always have to disable tons of cops: \u003ca href=\"https://github.com/redis-rb/redis-client/blob/master/.rubocop.yml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/redis-rb/redis-clie\u003c/span\u003e\u003cspan class=\"invisible\"\u003ent/blob/master/.rubocop.yml\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eWish I could use `standard`, but while it\u0026#39;s less annoying, I just plain can\u0026#39;t agree with some of the choices they made, and they don\u0026#39;t allow to deviate so...\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e I still do, because I think there is a baseline of cops that save a lot of time during review when people submit PRs.\u003c/p\u003e\u003cp\u003eBut the default config is really puzzling, always have to disable tons of cops: \u003ca href=\"https://github.com/redis-rb/redis-client/blob/master/.rubocop.yml\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/redis-rb/redis-clie\u003c/span\u003e\u003cspan class=\"invisible\"\u003ent/blob/master/.rubocop.yml\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eWish I could use `standard`, but while it\u0026#39;s less annoying, I just plain can\u0026#39;t agree with some of the choices they made, and they don\u0026#39;t allow to deviate so...\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/codefolio","name":"@codefolio"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112682089780639728/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112682089780639728/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112682089780639728/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112682089780639728/likes","type":"Collection","totalItems":4},"shares":{"id":"https://ruby.social/users/byroot/statuses/112682089780639728/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112682075988473643/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-26T08:53:48Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/codefolio"],"object":{"id":"https://ruby.social/users/byroot/statuses/112682075988473643","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/codefolio/statuses/112682069742608695","published":"2024-06-26T08:53:48Z","url":"https://ruby.social/@byroot/112682075988473643","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/codefolio"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112682075988473643","inReplyToAtomUri":"https://ruby.social/users/codefolio/statuses/112682069742608695","conversation":"tag:ruby.social,2024-06-26:objectId=48431832:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Yeah. I started a project a few hours ago, already had to disable 6 cops that I consider plain wrong.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@codefolio\" class=\"u-url mention\"\u003e@\u003cspan\u003ecodefolio\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Yeah. I started a project a few hours ago, already had to disable 6 cops that I consider plain wrong.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/codefolio","name":"@codefolio"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112682075988473643/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112682075988473643/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112682075988473643/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112682075988473643/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/112682075988473643/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112682051957106547/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-26T08:47:41Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"object":{"id":"https://ruby.social/users/byroot/statuses/112682051957106547","type":"Note","summary":null,"inReplyTo":null,"published":"2024-06-26T08:47:41Z","url":"https://ruby.social/@byroot/112682051957106547","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112682051957106547","inReplyToAtomUri":null,"conversation":"tag:ruby.social,2024-06-26:objectId=48431832:objectType=Conversation","content":"\u003cp\u003eI just discovered this rubocop rule while working on a new project \u003ca href=\"https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/RescuedExceptionsVariableName\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://www.\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003erubydoc.info/gems/rubocop/Rubo\u003c/span\u003e\u003cspan class=\"invisible\"\u003eCop/Cop/Naming/RescuedExceptionsVariableName\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eI mean seriously? Why should a single name be enforced for all rescued exceptions? If in context there\u0026#39;s something more meaningful than `error`, then I\u0026#39;m gonna use it.\u003c/p\u003e\u003cp\u003eAlso why on earth would you enforce a single letter as variable name? \u003ca href=\"https://ruby.social/tags/notmyruby\" class=\"mention hashtag\" rel=\"tag\"\u003e#\u003cspan\u003enotmyruby\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e","contentMap":{"en":"\u003cp\u003eI just discovered this rubocop rule while working on a new project \u003ca href=\"https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/Naming/RescuedExceptionsVariableName\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://www.\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003erubydoc.info/gems/rubocop/Rubo\u003c/span\u003e\u003cspan class=\"invisible\"\u003eCop/Cop/Naming/RescuedExceptionsVariableName\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e\u003cp\u003eI mean seriously? Why should a single name be enforced for all rescued exceptions? If in context there\u0026#39;s something more meaningful than `error`, then I\u0026#39;m gonna use it.\u003c/p\u003e\u003cp\u003eAlso why on earth would you enforce a single letter as variable name? \u003ca href=\"https://ruby.social/tags/notmyruby\" class=\"mention hashtag\" rel=\"tag\"\u003e#\u003cspan\u003enotmyruby\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e"},"updated":"2024-06-26T08:54:27Z","attachment":[],"tag":[{"type":"Hashtag","href":"https://ruby.social/tags/notmyruby","name":"#notmyruby"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112682051957106547/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112682051957106547/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112682051957106547/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112682051957106547/likes","type":"Collection","totalItems":8},"shares":{"id":"https://ruby.social/users/byroot/statuses/112682051957106547/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112671530887629815/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-24T12:12:03Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/nony","https://ruby.social/users/eileencodes"],"object":{"id":"https://ruby.social/users/byroot/statuses/112671530887629815","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/nony/statuses/112671249287497537","published":"2024-06-24T12:12:03Z","url":"https://ruby.social/@byroot/112671530887629815","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/nony","https://ruby.social/users/eileencodes"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112671530887629815","inReplyToAtomUri":"https://ruby.social/users/nony/statuses/112671249287497537","conversation":"tag:ruby.social,2024-06-24:objectId=48293543:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@nony\" class=\"u-url mention\"\u003e@\u003cspan\u003enony\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@eileencodes\" class=\"u-url mention\"\u003e@\u003cspan\u003eeileencodes\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e no particular feeling no.\u003c/p\u003e\u003cp\u003eAlso I don\u0026#39;t think Eileen is very active around here, so best to discuss this on GitHub or something.\u003c/p\u003e\u003cp\u003eIf your planned refactoring isn\u0026#39;t a ton of work, the simpler is to discuss over a PR. Otherwise you can start a GitHub discussion and tag Eileen: \u003ca href=\"https://github.com/rails/rails/discussions\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/rails/rails/discuss\u003c/span\u003e\u003cspan class=\"invisible\"\u003eions\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@nony\" class=\"u-url mention\"\u003e@\u003cspan\u003enony\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@eileencodes\" class=\"u-url mention\"\u003e@\u003cspan\u003eeileencodes\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e no particular feeling no.\u003c/p\u003e\u003cp\u003eAlso I don\u0026#39;t think Eileen is very active around here, so best to discuss this on GitHub or something.\u003c/p\u003e\u003cp\u003eIf your planned refactoring isn\u0026#39;t a ton of work, the simpler is to discuss over a PR. Otherwise you can start a GitHub discussion and tag Eileen: \u003ca href=\"https://github.com/rails/rails/discussions\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" translate=\"no\"\u003e\u003cspan class=\"invisible\"\u003ehttps://\u003c/span\u003e\u003cspan class=\"ellipsis\"\u003egithub.com/rails/rails/discuss\u003c/span\u003e\u003cspan class=\"invisible\"\u003eions\u003c/span\u003e\u003c/a\u003e\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/nony","name":"@nony"},{"type":"Mention","href":"https://ruby.social/users/eileencodes","name":"@eileencodes"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112671530887629815/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112671530887629815/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112671530887629815/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112671530887629815/likes","type":"Collection","totalItems":0},"shares":{"id":"https://ruby.social/users/byroot/statuses/112671530887629815/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112671245079603460/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-24T10:59:22Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/nony","https://ruby.social/users/eileencodes"],"object":{"id":"https://ruby.social/users/byroot/statuses/112671245079603460","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/nony/statuses/112671240096770145","published":"2024-06-24T10:59:22Z","url":"https://ruby.social/@byroot/112671245079603460","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/nony","https://ruby.social/users/eileencodes"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112671245079603460","inReplyToAtomUri":"https://ruby.social/users/nony/statuses/112671240096770145","conversation":"tag:ruby.social,2024-06-24:objectId=48293543:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@nony\" class=\"u-url mention\"\u003e@\u003cspan\u003enony\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e That\u0026#39;s more \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@eileencodes\" class=\"u-url mention\"\u003e@\u003cspan\u003eeileencodes\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u0026#39;s area of expertise.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@nony\" class=\"u-url mention\"\u003e@\u003cspan\u003enony\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e That\u0026#39;s more \u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@eileencodes\" class=\"u-url mention\"\u003e@\u003cspan\u003eeileencodes\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e \u0026#39;s area of expertise.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/nony","name":"@nony"},{"type":"Mention","href":"https://ruby.social/users/eileencodes","name":"@eileencodes"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112671245079603460/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112671245079603460/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112671245079603460/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112671245079603460/likes","type":"Collection","totalItems":0},"shares":{"id":"https://ruby.social/users/byroot/statuses/112671245079603460/shares","type":"Collection","totalItems":0}}},{"id":"https://ruby.social/users/byroot/statuses/112610149145350336/activity","type":"Create","actor":"https://ruby.social/users/byroot","published":"2024-06-13T16:01:52Z","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/samsaffron"],"object":{"id":"https://ruby.social/users/byroot/statuses/112610149145350336","type":"Note","summary":null,"inReplyTo":"https://ruby.social/users/byroot/statuses/112608230956169882","published":"2024-06-13T16:01:52Z","url":"https://ruby.social/@byroot/112610149145350336","attributedTo":"https://ruby.social/users/byroot","to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://ruby.social/users/byroot/followers","https://ruby.social/users/samsaffron"],"sensitive":false,"atomUri":"https://ruby.social/users/byroot/statuses/112610149145350336","inReplyToAtomUri":"https://ruby.social/users/byroot/statuses/112608230956169882","conversation":"tag:ruby.social,2024-06-13:objectId=47554849:objectType=Conversation","content":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@samsaffron\" class=\"u-url mention\"\u003e@\u003cspan\u003esamsaffron\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Thanks for the repro. It\u0026#39;s fixed an backported to 7.1.\u003c/p\u003e","contentMap":{"en":"\u003cp\u003e\u003cspan class=\"h-card\" translate=\"no\"\u003e\u003ca href=\"https://ruby.social/@samsaffron\" class=\"u-url mention\"\u003e@\u003cspan\u003esamsaffron\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e Thanks for the repro. It\u0026#39;s fixed an backported to 7.1.\u003c/p\u003e"},"attachment":[],"tag":[{"type":"Mention","href":"https://ruby.social/users/samsaffron","name":"@samsaffron"}],"replies":{"id":"https://ruby.social/users/byroot/statuses/112610149145350336/replies","type":"Collection","first":{"type":"CollectionPage","next":"https://ruby.social/users/byroot/statuses/112610149145350336/replies?only_other_accounts=true\u0026page=true","partOf":"https://ruby.social/users/byroot/statuses/112610149145350336/replies","items":[]}},"likes":{"id":"https://ruby.social/users/byroot/statuses/112610149145350336/likes","type":"Collection","totalItems":1},"shares":{"id":"https://ruby.social/users/byroot/statuses/112610149145350336/shares","type":"Collection","totalItems":0}}}]} \ No newline at end of file diff --git a/benchmark/data/canada.json b/benchmark/data/canada.json new file mode 100644 index 000000000..04f63b405 --- /dev/null +++ b/benchmark/data/canada.json @@ -0,0 +1,9 @@ +{ "type": "FeatureCollection", + "features": [ +{ + "type": "Feature", +"properties": { "name": "Canada" }, +"geometry": {"type":"Polygon","coordinates":[[[-65.613616999999977,43.420273000000009],[-65.619720000000029,43.418052999999986],[-65.625,43.421379000000059],[-65.636123999999882,43.449714999999969],[-65.633056999999951,43.474709000000132],[-65.611389000000031,43.513054000000068],[-65.605835000000013,43.516105999999979],[-65.598343,43.515830999999935],[-65.566101000000003,43.508331000000055],[-65.561935000000005,43.504439999999988],[-65.55999799999995,43.499718000000087],[-65.573333999999988,43.476379000000065],[-65.593612999999948,43.444153000000028],[-65.613616999999977,43.420273000000009]],[[-59.816947999999911,43.928328999999962],[-59.841667000000029,43.918602000000021],[-59.866393999999957,43.909987999999998],[-59.879722999999956,43.906654000000003],[-59.895835999999974,43.904160000000047],[-59.919448999999929,43.901099999999985],[-59.953330999999991,43.898604999999975],[-60.013617999999951,43.903320000000008],[-60.028609999999958,43.905548000000124],[-60.078338999999914,43.917496000000028],[-60.103888999999981,43.926659000000029],[-60.121666000000005,43.934990000000084],[-60.129997000000003,43.941933000000063],[-60.124167999999997,43.945267000000058],[-60.095000999999968,43.939430000000129],[-60.017776000000026,43.925827000000083],[-59.975554999999986,43.921936000000017],[-59.966942000000017,43.921936000000017],[-59.915000999999961,43.925552000000096],[-59.861945999999989,43.934433000000013],[-59.841385000000002,43.938880999999981],[-59.80972300000002,43.950828999999999],[-59.793334999999956,43.959435000000099],[-59.777221999999938,43.968048000000067],[-59.755279999999971,43.979431000000091],[-59.724716000000001,43.991104000000121],[-59.727775999999949,43.986382000000049],[-59.736389000000031,43.979156000000103],[-59.753615999999965,43.964995999999985],[-59.762504999999919,43.957771000000093],[-59.782501000000025,43.944434999999999],[-59.793059999999969,43.93832400000008],[-59.816947999999911,43.928328999999962]],[[-66.282775999999956,44.289719000000105],[-66.314437999999996,44.250548999999978],[-66.322234999999978,44.252777000000094],[-66.324448000000018,44.25750000000005],[-66.323897999999986,44.263329000000113],[-66.310271999999998,44.289993000000038],[-66.303054999999915,44.300545000000056],[-66.294723999999917,44.310271999999998],[-66.228333000000021,44.385826000000009],[-66.21945199999999,44.394713999999965],[-66.214447000000007,44.397774000000027],[-66.206389999999942,44.395271000000037],[-66.204726999999934,44.384995000000004],[-66.205275999999969,44.379433000000063],[-66.208053999999947,44.372765000000072],[-66.214721999999938,44.36360900000011],[-66.249725000000012,44.327217000000132],[-66.282775999999956,44.289719000000105]],[[-66.886123999999995,44.614440999999999],[-66.900283999999999,44.61332699999997],[-66.904174999999952,44.618049999999982],[-66.904449,44.622489999999971],[-66.884734999999978,44.68332700000002],[-66.858611999999937,44.743050000000039],[-66.837783999999942,44.770827999999995],[-66.833327999999938,44.774994000000049],[-66.803329000000019,44.798881999999992],[-66.798049999999932,44.802490000000091],[-66.786666999999852,44.808044000000109],[-66.779723999999931,44.809158000000082],[-66.772507000000019,44.809158000000082],[-66.767226999999934,44.805549999999982],[-66.764724999999999,44.801102000000014],[-66.757781999999963,44.792496000000085],[-66.734726000000023,44.729156000000103],[-66.736938000000009,44.717209000000139],[-66.740279999999927,44.70777099999998],[-66.761123999999995,44.676102000000128],[-66.765015000000005,44.671378999999945],[-66.875274999999931,44.619438000000059],[-66.886123999999995,44.614440999999999]],[[-61.199996999999996,45.558327000000077],[-61.204720000000009,45.555267000000072],[-61.212775999999963,45.556656000000032],[-61.219993999999986,45.559990000000028],[-61.224167000000023,45.564156000000139],[-61.222220999999934,45.569443000000035],[-61.21416499999998,45.568886000000134],[-61.208610999999962,45.56721500000009],[-61.202498999999989,45.563324000000023],[-61.199996999999996,45.558327000000077]],[[-60.993889000000024,45.45777099999998],[-61.00028199999997,45.455826000000002],[-61.007781999999963,45.457214000000079],[-61.019446999999957,45.463882000000069],[-61.101943999999946,45.523048000000017],[-61.105835000000013,45.526939000000084],[-61.108337000000006,45.540833000000021],[-61.104445999999939,45.546387000000038],[-61.098609999999951,45.549164000000076],[-61.023612999999955,45.574997000000053],[-61.017220000000009,45.575272000000041],[-60.936942999999985,45.576659999999947],[-60.908051,45.576103000000046],[-60.900275999999906,45.575554000000125],[-60.879996999999946,45.560547000000099],[-60.878608999999869,45.555824000000143],[-60.883888000000013,45.550544999999943],[-60.889167999999984,45.548332000000016],[-60.910277999999948,45.546104000000071],[-60.936110999999983,45.539161999999976],[-60.947495000000004,45.533607000000075],[-60.952498999999932,45.529990999999995],[-60.962501999999915,45.519989000000066],[-60.96305799999999,45.514998999999989],[-60.961669999999913,45.510277000000087],[-60.958611000000019,45.505829000000119],[-60.950553999999954,45.497771999999998],[-60.993889000000024,45.45777099999998]],[[-63.246391000000017,46.435547000000042],[-63.25389100000001,46.435265000000129],[-63.26167299999986,46.436378000000047],[-63.269446999999957,46.439713000000097],[-63.285004000000015,46.450829000000056],[-63.27055399999989,46.450271999999984],[-63.245834000000002,46.442764000000125],[-63.240836999999999,46.438599000000124],[-63.246391000000017,46.435547000000042]],[[-71.111114999999984,46.850548000000003],[-71.118606999999997,46.850273000000016],[-71.127486999999917,46.851662000000033],[-71.130279999999914,46.856102000000021],[-71.128326000000015,46.862213000000111],[-71.121383999999978,46.874161000000129],[-71.098891999999978,46.898048000000017],[-71.078339000000028,46.913605000000075],[-70.936935000000005,46.992493000000024],[-70.896666999999866,47.013329000000056],[-70.87222300000002,47.024162000000047],[-70.860001000000011,47.02777100000003],[-70.845276000000013,47.029160000000047],[-70.836394999999982,47.02777100000003],[-70.818893000000003,47.02276599999999],[-70.81361400000003,47.019440000000145],[-70.809158000000025,47.01527400000009],[-70.807495000000017,47.00999500000006],[-70.809432999999956,47.004439999999988],[-70.814437999999996,46.998329000000126],[-70.877212999999983,46.931107000000111],[-70.887512000000015,46.923607000000004],[-70.904174999999952,46.913605000000075],[-71.009170999999924,46.871101000000067],[-71.033324999999934,46.862494999999967],[-71.040832999999964,46.860549999999989],[-71.082229999999925,46.853325000000098],[-71.111114999999984,46.850548000000003]],[[-60.445273999999984,46.861664000000133],[-60.436942999999985,46.861107000000061],[-60.352782999999988,46.861664000000133],[-60.345832999999857,46.862494999999967],[-60.334441999999967,46.868881000000101],[-60.326110999999969,46.868323999999973],[-60.320838999999978,46.864441000000056],[-60.309440999999936,46.851105000000132],[-60.302223000000026,46.837493999999936],[-60.301392000000021,46.831940000000145],[-60.304442999999935,46.815269000000114],[-60.322776999999917,46.736382000000049],[-60.327224999999885,46.724991000000045],[-60.478881999999942,46.389992000000063],[-60.535277999999948,46.321663000000058],[-60.589438999999857,46.25499700000006],[-60.609169000000009,46.201934999999935],[-60.590331999999933,46.207821000000081],[-60.587001999999984,46.209488000000135],[-60.57150299999995,46.228653000000122],[-60.553329000000019,46.248878000000047],[-60.551391999999964,46.25499700000006],[-60.543335000000013,46.266663000000051],[-60.528053,46.278602999999919],[-60.479720999999984,46.311104000000057],[-60.46805599999999,46.316665999999998],[-60.44388600000002,46.326942000000088],[-60.430557000000022,46.33138299999996],[-60.424171000000001,46.331665000000044],[-60.416388999999867,46.328049000000021],[-60.412216000000001,46.31888600000002],[-60.417777999999942,46.285827999999981],[-60.419997999999964,46.279991000000052],[-60.42472099999992,46.27526899999998],[-60.438048999999921,46.270828000000051],[-60.454719999999952,46.262215000000083],[-60.470550999999944,46.251105999999993],[-60.53583100000003,46.192436000000043],[-60.59027900000001,46.138603000000103],[-60.600280999999939,46.130271999999991],[-60.61611199999993,46.120827000000133],[-60.645836000000031,46.106102000000021],[-60.687774999999874,46.088326000000052],[-60.701110999999912,46.08526599999999],[-60.788895000000025,46.066666000000055],[-60.86333499999995,46.052490000000034],[-60.986114999999927,45.982491000000095],[-61.023887999999943,45.969437000000028],[-61.080283999999949,45.951660000000004],[-61.087776000000019,45.95138500000013],[-61.095832999999971,45.952217000000076],[-61.105003000000011,45.954712000000086],[-61.113059999999905,45.955268999999987],[-61.117774999999938,45.950828999999999],[-61.126944999999978,45.928329000000133],[-61.125556999999958,45.923607000000061],[-61.118332000000009,45.923049999999932],[-61.056999000000019,45.931216999999947],[-61.052834000000018,45.931881000000033],[-61.017497999999989,45.940712000000076],[-61.014835000000005,45.943382000000042],[-60.989165999999955,45.95638300000013],[-60.987777999999935,45.962494000000049],[-60.984168999999952,45.967490999999939],[-60.957221999999945,45.984992999999974],[-60.940551999999911,45.994438000000059],[-60.892776000000026,46.01527400000009],[-60.853057999999976,46.03138000000007],[-60.770835999999917,46.057495000000074],[-60.757506999999919,46.060546999999985],[-60.743056999999965,46.061661000000015],[-60.735557999999912,46.058044000000052],[-60.734169000000009,46.05332199999998],[-60.734169000000009,46.047493000000145],[-60.807502999999997,45.931107000000111],[-60.870276999999987,45.910820000000058],[-60.898055999999997,45.906654000000117],[-60.956947000000014,45.903046000000018],[-61.042888999999946,45.891327000000103],[-61.047053999999946,45.890659000000085],[-61.050555999999972,45.888991999999973],[-61.053390999999976,45.886162000000127],[-61.096663999999976,45.860275000000001],[-61.097777999999948,45.854713000000061],[-61.094718999999998,45.850273000000016],[-61.087776000000019,45.847487999999998],[-61.079726999999991,45.84693900000002],[-61.073059000000001,45.84804500000007],[-61.060829000000012,45.852776000000006],[-61.049445999999989,45.858330000000024],[-61.026107999999965,45.86971299999999],[-60.989997999999957,45.881934999999999],[-60.96805599999999,45.883331000000055],[-60.960281000000009,45.880272000000048],[-60.919448999999986,45.857498000000078],[-60.915833000000021,45.852776000000006],[-60.917777999999942,45.847487999999998],[-60.935271999999941,45.825271999999984],[-60.940551999999911,45.821663000000001],[-60.947495000000004,45.820549000000028],[-61.019446999999957,45.809989999999971],[-61.067504999999983,45.791663999999969],[-61.079169999999976,45.786110000000008],[-61.118057000000022,45.763611000000026],[-61.12777699999998,45.755271999999991],[-61.147223999999994,45.704993999999999],[-61.149170000000026,45.699715000000026],[-61.142501999999922,45.696381000000031],[-61.077498999999932,45.688880999999981],[-61.070838999999978,45.689987000000031],[-61.041945999999996,45.704162999999994],[-61.012778999999966,45.718880000000013],[-60.996391000000017,45.727767999999969],[-60.972771000000023,45.738045],[-60.954719999999952,45.745543999999938],[-60.935829000000012,45.751389000000074],[-60.92222599999991,45.75360900000004],[-60.914443999999946,45.75360900000004],[-60.890556000000004,45.751663000000008],[-60.881942999999922,45.750000000000057],[-60.864165999999898,45.744438000000116],[-60.844161999999983,45.735268000000076],[-60.816665999999998,45.722488000000112],[-60.809998000000007,45.719154000000117],[-60.800835000000006,45.71166199999999],[-60.729438999999957,45.778603000000032],[-60.719718999999998,45.788329999999974],[-60.516944999999964,45.920830000000137],[-60.491942999999878,45.929436000000067],[-60.466942000000017,45.938041999999996],[-60.409163999999976,45.979987999999935],[-60.404166999999973,45.984436000000073],[-60.395835999999974,45.99610100000001],[-60.40166499999998,45.994713000000104],[-60.555000000000007,45.946938000000102],[-60.611671000000001,45.924995000000138],[-60.629722999999899,45.917496000000142],[-60.639998999999989,45.91027100000008],[-60.644721999999945,45.905548000000124],[-60.655272999999966,45.898330999999985],[-60.661110000000008,45.895270999999923],[-60.673331999999903,45.890549000000021],[-60.686110999999926,45.886940000000038],[-60.69388600000002,45.886107999999922],[-60.708892999999875,45.887215000000026],[-60.723327999999981,45.893326000000116],[-60.788337999999953,45.929436000000067],[-60.789725999999973,45.934433000000126],[-60.788895000000025,45.939986999999974],[-60.785278000000005,45.946381000000031],[-60.78055599999999,45.950828999999999],[-60.691382999999973,46.001937999999939],[-60.679168999999945,46.006660000000011],[-60.601395000000025,46.039719000000105],[-60.541114999999991,46.065544000000102],[-60.523612999999955,46.075554000000011],[-60.490836999999942,46.094437000000084],[-60.30999799999995,46.206939999999975],[-60.30499999999995,46.210548000000074],[-60.299994999999967,46.214996000000042],[-60.295279999999934,46.226936000000137],[-60.295279999999934,46.232208000000071],[-60.304169000000002,46.233878999999945],[-60.365554999999972,46.224990999999989],[-60.372771999999998,46.223320000000115],[-60.396111000000019,46.213051000000064],[-60.401938999999913,46.21027399999997],[-60.418335000000013,46.199996999999996],[-60.428054999999915,46.192490000000078],[-60.442497000000003,46.17943600000001],[-60.463332999999921,46.163879000000122],[-60.479163999999912,46.152771000000143],[-60.528053,46.121658000000139],[-60.605835000000013,46.074715000000083],[-60.629997000000003,46.065269000000114],[-60.644164999999987,46.063049000000092],[-60.65193899999997,46.063880999999981],[-60.656104999999968,46.067772000000048],[-60.656386999999938,46.073051000000021],[-60.652495999999985,46.079436999999984],[-60.638335999999867,46.093048000000124],[-60.456107999999972,46.241379000000052],[-60.404998999999975,46.279991000000052],[-60.399726999999984,46.283882000000119],[-60.388892999999996,46.291106999999954],[-60.359725999999966,46.304993000000138],[-60.347778000000005,46.310546999999985],[-60.285278000000005,46.321381000000031],[-60.205558999999994,46.240273000000002],[-60.138054000000011,46.246658000000025],[-60.131942999999922,46.248604000000114],[-60.124167999999997,46.248604000000114],[-60.099997999999971,46.246384000000091],[-60.091666999999916,46.244713000000047],[-59.950553999999897,46.201385000000073],[-59.873054999999965,46.17582699999997],[-59.808608999999876,46.111938000000066],[-59.80972300000002,46.106384000000048],[-59.819449999999961,46.097214000000008],[-59.834166999999979,46.084717000000012],[-59.853888999999924,46.00249500000001],[-59.840553,45.938324000000023],[-59.958610999999962,45.901657000000057],[-60.130279999999971,45.867767000000129],[-60.136115999999959,45.864997999999957],[-60.155272999999966,45.846656999999993],[-60.159438999999963,45.841102999999976],[-60.160552999999936,45.835548000000074],[-60.174445999999989,45.76388500000013],[-60.229163999999969,45.705551000000128],[-60.233886999999925,45.701102999999932],[-60.245834000000002,45.69499200000007],[-60.379723000000013,45.644997000000046],[-60.392226999999991,45.641105999999979],[-60.411666999999966,45.636940000000095],[-60.49888599999997,45.620269999999948],[-60.513061999999934,45.618880999999988],[-60.55750299999994,45.618049999999982],[-60.765556000000004,45.594994000000099],[-60.960830999999928,45.599433999999917],[-61.101669000000015,45.564437999999996],[-61.14833799999991,45.555267000000072],[-61.168334999999956,45.551384000000098],[-61.196917999999982,45.583740000000091],[-61.218696999999963,45.580788000000098],[-61.237521999999956,45.581528000000048],[-61.273055999999997,45.561935000000005],[-61.336945000000014,45.573326000000009],[-61.37557599999991,45.622131000000138],[-61.430556999999965,45.665543000000071],[-61.454719999999952,45.705551000000128],[-61.457503999999972,45.71527100000003],[-61.478049999999996,45.803879000000109],[-61.494720000000029,45.846381999999949],[-61.527495999999985,45.98943300000002],[-61.455558999999994,46.137497000000053],[-61.447776999999974,46.149436999999978],[-61.438888999999961,46.159430999999984],[-61.412772999999959,46.178329000000076],[-61.390839000000028,46.191376000000105],[-61.37388599999997,46.200829000000113],[-61.343329999999924,46.212493999999992],[-61.305557000000022,46.224990999999989],[-61.293892000000028,46.230819999999994],[-61.283332999999971,46.238884000000041],[-61.09722099999999,46.44609800000012],[-61.089438999999913,46.458046000000138],[-61.035278000000005,46.555549999999982],[-61.033057999999926,46.561661000000072],[-61.031113000000005,46.572769000000051],[-61.032501000000025,46.577492000000063],[-60.996947999999918,46.634720000000073],[-60.892226999999991,46.77388000000002],[-60.873610999999869,46.793052999999929],[-60.86361699999992,46.801384000000041],[-60.84027900000001,46.813605999999993],[-60.833884999999896,46.815543999999932],[-60.805557000000022,46.820273999999984],[-60.793892000000028,46.825271999999984],[-60.724716000000001,46.874992000000134],[-60.714721999999995,46.88249200000007],[-60.704444999999907,46.891380000000026],[-60.695273999999927,46.901657],[-60.686660999999958,46.912491000000045],[-60.678336999999942,46.930824000000143],[-60.670554999999979,46.953606000000036],[-60.664444000000003,46.966103000000032],[-60.65694400000001,46.978600000000029],[-60.640282000000013,47],[-60.609169000000009,47.024437000000091],[-60.597777999999892,47.031105000000025],[-60.591942000000017,47.033333000000027],[-60.583327999999938,47.031661999999926],[-60.460830999999871,46.999161000000015],[-60.427498000000014,46.965827999999988],[-60.493889000000024,46.902214000000072],[-60.498055000000022,46.896660000000111],[-60.452224999999942,46.864441000000056],[-60.445273999999984,46.861664000000133]],[[-64.039718999999991,46.743324000000086],[-64.031677000000002,46.742767000000015],[-64.016402999999912,46.743607000000054],[-64.009170999999981,46.744156000000032],[-64.005004999999983,46.749718000000144],[-63.999999999999943,46.75360900000004],[-63.991668999999945,46.753052000000139],[-63.979163999999912,46.746383999999978],[-63.974715999999944,46.742493000000081],[-63.832503999999972,46.617210000000057],[-63.831673000000023,46.611938000000123],[-63.865004999999883,46.537498000000085],[-63.868888999999967,46.531937000000084],[-63.840836000000024,46.464438999999913],[-63.828339000000028,46.458046000000138],[-63.780281000000002,46.44499200000007],[-63.742226000000016,46.439430000000129],[-63.733054999999979,46.438881000000038],[-63.709442000000024,46.43749200000002],[-63.703888000000006,46.440544000000102],[-63.698050999999964,46.456383000000073],[-63.698607999999979,46.461662000000047],[-63.700279000000023,46.466385000000002],[-63.722771000000023,46.48054500000012],[-63.738051999999982,46.491378999999995],[-63.739998000000014,46.496101000000067],[-63.723327999999924,46.543610000000058],[-63.716110000000015,46.553879000000109],[-63.709723999999994,46.556099000000131],[-63.676391999999964,46.564156000000082],[-63.662216000000001,46.566382999999973],[-63.647223999999881,46.56721500000009],[-63.618889000000024,46.561104],[-63.497779999999977,46.527771000000143],[-63.315001999999936,46.488602000000071],[-63.271979999999928,46.426926000000094],[-63.240661999999986,46.420456000000001],[-63.216392999999982,46.412209000000132],[-62.942771999999877,46.426941000000113],[-62.862777999999935,46.434715000000097],[-62.698607999999979,46.452492000000007],[-62.692497000000003,46.456100000000106],[-62.686385999999914,46.457497000000046],[-62.665833000000021,46.461104999999975],[-62.595001000000025,46.470825000000048],[-62.477218999999991,46.477768000000026],[-62.455558999999994,46.478600000000142],[-62.182502999999997,46.485824999999977],[-62.166388999999981,46.486107000000061],[-62.133330999999941,46.482764999999915],[-62.058051999999975,46.472762999999986],[-62.014724999999942,46.46527100000003],[-61.979720999999984,46.45915999999994],[-61.970551,46.456940000000145],[-61.965003999999965,46.453323000000012],[-61.968886999999995,46.447768999999994],[-61.973609999999951,46.443047000000092],[-62.013061999999991,46.421104000000128],[-62.101112000000001,46.379715000000033],[-62.173331999999959,46.349433999999974],[-62.215552999999943,46.343605000000139],[-62.279723999999931,46.338043000000027],[-62.309166000000005,46.349998000000085],[-62.326392999999996,46.354996000000085],[-62.342773000000022,46.356102000000135],[-62.357779999999934,46.35582700000009],[-62.355834999999956,46.35083000000003],[-62.348052999999993,46.332214000000022],[-62.334723999999994,46.311935000000062],[-62.361945999999932,46.276657000000057],[-62.419448999999986,46.219986000000119],[-62.424720999999977,46.215546000000074],[-62.453888000000006,46.21443899999997],[-62.507506999999919,46.214157000000114],[-62.603888999999924,46.182495000000131],[-62.603888999999924,46.177215999999987],[-62.54222900000002,46.122490000000028],[-62.507506999999919,46.118881000000044],[-62.5,46.119156000000089],[-62.478333000000021,46.120827000000133],[-62.477218999999991,46.126380999999924],[-62.478881999999999,46.131935000000112],[-62.481667000000016,46.13638300000008],[-62.489998000000014,46.138328999999999],[-62.497222999999963,46.138046000000031],[-62.506110999999976,46.139717000000076],[-62.513892999999996,46.142220000000066],[-62.509726999999998,46.148605000000032],[-62.504448000000025,46.150825999999995],[-62.489166000000012,46.151382000000126],[-62.473052999999993,46.150269000000094],[-62.468886999999995,46.146102999999982],[-62.449164999999937,46.100548000000003],[-62.447494999999947,46.095543000000134],[-62.446945000000028,46.090546000000018],[-62.454720000000009,46.018883000000073],[-62.459166999999979,46.006386000000077],[-62.473609999999951,45.994713000000104],[-62.496947999999975,45.983879000000002],[-62.510001999999929,45.979156000000046],[-62.541671999999949,45.970543000000077],[-62.548614999999927,45.969437000000028],[-62.591667000000029,45.964996000000099],[-62.613891999999964,45.962769000000037],[-62.650276000000019,45.960274000000027],[-62.761115999999959,45.954162999999937],[-62.837776000000019,45.967490999999939],[-62.856667000000016,45.977486000000056],[-62.882773999999984,45.995544000000109],[-62.930283000000031,46.037215999999944],[-62.970832999999971,46.07416500000005],[-62.922500999999954,46.092491000000052],[-62.917220999999984,46.096382000000119],[-62.875274999999931,46.134995000000004],[-62.871940999999936,46.143607999999972],[-62.885276999999974,46.155823000000055],[-62.890839000000028,46.159430999999984],[-63.025276000000019,46.189156000000082],[-63.103614999999991,46.201934999999935],[-63.112777999999992,46.204163000000108],[-63.119445999999868,46.207214000000135],[-63.12222300000002,46.211662000000103],[-63.120276999999987,46.217766000000097],[-63.115836999999942,46.222487999999998],[-63.038895000000025,46.280273000000079],[-63.02416999999997,46.290275999999949],[-63.017776000000026,46.292496000000142],[-63.010284000000013,46.292770000000075],[-63.002228000000002,46.289992999999981],[-62.99610899999999,46.292220999999984],[-62.979438999999957,46.301658999999972],[-62.969161999999983,46.309432999999956],[-62.964721999999881,46.314156000000139],[-62.962775999999963,46.319992000000013],[-62.969443999999953,46.31888600000002],[-63.035277999999892,46.301658999999972],[-63.041388999999981,46.299721000000034],[-63.052779999999927,46.293884000000048],[-63.058608999999933,46.290833000000021],[-63.090836000000024,46.26915699999995],[-63.165001000000018,46.210548000000074],[-63.143332999999984,46.201660000000118],[-63.139167999999984,46.197769000000051],[-63.138610999999912,46.192490000000078],[-63.140556000000004,46.186378000000104],[-63.22444200000001,46.139717000000076],[-63.23860899999994,46.138046000000031],[-63.253615999999965,46.137497000000053],[-63.26167299999986,46.138046000000031],[-63.289169000000015,46.14388299999996],[-63.409163999999919,46.176940999999999],[-63.519722000000002,46.206099999999935],[-63.591942000000017,46.211937000000091],[-63.642775999999913,46.224990999999989],[-63.649726999999928,46.228043000000071],[-63.699722000000008,46.259437999999989],[-63.700553999999954,46.269989000000066],[-63.702224999999999,46.27526899999998],[-63.70666499999993,46.278602999999919],[-63.741942999999935,46.304436000000067],[-63.754447999999968,46.310822000000144],[-63.811110999999926,46.32749200000012],[-63.772223999999937,46.360825000000091],[-63.736945999999932,46.353882000000112],[-63.729163999999969,46.352776000000063],[-63.714721999999995,46.354164000000026],[-63.739166000000012,46.391106000000036],[-63.745002999999997,46.394714000000135],[-63.754447999999968,46.396385000000009],[-63.761672999999917,46.396659999999997],[-63.841109999999958,46.39888000000002],[-63.963615000000004,46.401100000000042],[-63.981941000000006,46.39388300000013],[-63.989165999999898,46.393608000000086],[-64.121933000000013,46.404709000000025],[-64.129989999999964,46.407211000000132],[-64.133057000000008,46.4116590000001],[-64.135009999999909,46.416382000000056],[-64.133057000000008,46.43332700000002],[-64.115828999999962,46.523048000000017],[-64.11332699999997,46.53472099999999],[-64.110000999999954,46.541107000000125],[-64.105559999999969,46.54583000000008],[-64.100280999999882,46.549720999999977],[-64.094161999999926,46.551659000000086],[-64.105559999999969,46.618050000000096],[-64.273894999999982,46.62332200000003],[-64.387511999999958,46.62082700000002],[-64.391952999999944,46.624709999999936],[-64.413895000000025,46.665825000000098],[-64.415558000000033,46.670546999999999],[-64.416655999999932,46.68110699999994],[-64.414718999999991,46.697769000000108],[-64.410277999999948,46.711105000000089],[-64.400283999999942,46.727486000000113],[-64.382492000000013,46.746658000000082],[-64.346953999999982,46.773605000000032],[-64.323897999999929,46.786384999999996],[-64.296386999999982,46.801659000000029],[-64.286117999999931,46.80943300000007],[-64.27305599999994,46.823607999999979],[-64.249724999999955,46.868050000000039],[-64.247771999999941,46.874161000000129],[-64.247222999999906,46.879714999999976],[-64.243880999999988,46.886108000000092],[-64.236389000000031,46.897491000000116],[-64.226943999999946,46.906097000000045],[-64.182770000000005,46.945541000000105],[-64.168610000000001,46.956657000000064],[-64.020844000000011,47.038605000000132],[-63.99500299999994,46.984161000000086],[-63.969993999999986,46.901657],[-63.967498999999862,46.891662999999994],[-64.041381999999999,46.82249500000006],[-64.066100999999946,46.804436000000123],[-64.076401000000033,46.798881999999992],[-64.091674999999952,46.778603000000032],[-64.077498999999932,46.756386000000134],[-64.074448000000018,46.752220000000023],[-64.067504999999926,46.749161000000072],[-64.039718999999991,46.743324000000086]],[[-55.876105999999993,47.260551000000021],[-55.968329999999867,47.257773999999927],[-55.946388000000013,47.273323000000062],[-55.934440999999936,47.279434000000094],[-55.895003999999972,47.290833000000021],[-55.888053999999954,47.292496000000142],[-55.881110999999976,47.293326999999977],[-55.872771999999998,47.292221000000097],[-55.865836999999885,47.287773000000129],[-55.855003000000011,47.269714000000022],[-55.876105999999993,47.260551000000021]],[[-61.380554000000018,47.620270000000119],[-61.493057000000022,47.552490000000091],[-61.498610999999926,47.550270000000069],[-61.535560999999973,47.54583000000008],[-61.54222900000002,47.545547000000113],[-61.547782999999868,47.549164000000076],[-61.549445999999989,47.553879000000109],[-61.545279999999991,47.55943300000007],[-61.520279000000016,47.569160000000011],[-61.513892999999939,47.572495000000117],[-61.477492999999924,47.60054800000006],[-61.473610000000008,47.6055530000001],[-61.471382000000006,47.611382000000106],[-61.470551,47.616936000000123],[-61.479163999999969,47.618599000000017],[-61.534447,47.618881000000101],[-61.541945999999996,47.617210000000057],[-61.559440999999993,47.609161000000029],[-61.653610000000015,47.549995000000081],[-61.855559999999969,47.417213000000061],[-61.849723999999981,47.413605000000132],[-61.841667000000029,47.410820000000115],[-61.833611000000019,47.409987999999998],[-61.789169000000015,47.425827000000083],[-61.777221999999995,47.431664000000069],[-61.766662999999937,47.439156000000025],[-61.714447000000007,47.489989999999977],[-61.691382999999973,47.515548999999965],[-61.701392999999939,47.491936000000067],[-61.740836999999942,47.44499200000007],[-61.843329999999924,47.388603000000046],[-61.90589099999994,47.354935000000012],[-61.925277999999992,47.343605000000139],[-61.93332700000002,47.333327999999938],[-61.962776000000019,47.281662000000097],[-61.965003999999965,47.275551000000007],[-61.964721999999995,47.270271000000093],[-61.961945000000014,47.266106000000093],[-61.957503999999972,47.261940000000038],[-61.938605999999993,47.257217000000026],[-61.827782000000013,47.234161000000029],[-61.819450000000018,47.233330000000024],[-61.807776999999987,47.239159000000029],[-61.799445999999989,47.250274999999931],[-61.794723999999917,47.254714999999976],[-61.783057999999869,47.260551000000021],[-61.782775999999956,47.255272000000048],[-61.789725999999916,47.242493000000024],[-61.793892000000028,47.236938000000123],[-61.799445999999989,47.232764999999972],[-61.810279999999977,47.226654000000053],[-61.816948000000025,47.224709000000075],[-61.84444400000001,47.219436999999971],[-61.859443999999883,47.218047999999953],[-61.955276000000026,47.211662000000047],[-61.979995999999971,47.213608000000136],[-61.996390999999903,47.214996000000042],[-62.004722999999956,47.217766000000097],[-62.010001999999872,47.22137500000008],[-62.013061999999991,47.225821999999994],[-62.014724999999942,47.23054500000012],[-62.015006999999912,47.235825000000034],[-62.013061999999991,47.241661000000079],[-61.948607999999979,47.379432999999949],[-61.941665999999941,47.392219999999952],[-61.937499999999943,47.39777400000014],[-61.928054999999972,47.407211000000075],[-61.922225999999966,47.409987999999998],[-61.908889999999928,47.413879000000065],[-61.736114999999984,47.507216999999969],[-61.705832999999984,47.532494000000099],[-61.684440999999936,47.547492999999974],[-61.662216000000001,47.561661000000072],[-61.616942999999992,47.588042999999914],[-61.571114000000023,47.613608999999997],[-61.553611999999987,47.623046999999985],[-61.53583500000002,47.631659999999954],[-61.529167000000029,47.633606000000043],[-61.521110999999962,47.634437999999989],[-61.425277999999992,47.642769000000044],[-61.407775999999956,47.641105999999922],[-61.388892999999996,47.637771999999984],[-61.381942999999922,47.634437999999989],[-61.377776999999924,47.631103999999993],[-61.376105999999993,47.626380999999981],[-61.380554000000018,47.620270000000119]],[[-54.261391000000003,47.39027400000009],[-54.268889999999999,47.389717000000019],[-54.293059999999969,47.391663000000051],[-54.341385000000002,47.398048000000074],[-54.358054999999979,47.403046000000074],[-54.364448999999979,47.406654000000003],[-54.365554999999915,47.411659000000043],[-54.359726000000023,47.416664000000083],[-54.326392999999996,47.436653000000035],[-54.295279999999991,47.44999700000011],[-54.278053,47.460823000000062],[-54.267220000000009,47.469437000000084],[-54.262222000000008,47.474709000000018],[-54.257781999999963,47.480820000000108],[-54.230552999999986,47.523605000000032],[-54.229996000000028,47.550270000000069],[-54.204719999999952,47.593605000000082],[-54.13527699999986,47.668053000000043],[-54.128882999999973,47.670546999999999],[-54.122771999999998,47.66693900000007],[-54.121940999999993,47.661934000000031],[-54.122222999999963,47.656937000000084],[-54.124999999999943,47.640831000000105],[-54.160827999999981,47.534996000000035],[-54.238892000000021,47.40387700000008],[-54.243331999999953,47.399437000000091],[-54.255004999999983,47.392769000000101],[-54.261391000000003,47.39027400000009]],[[-54.077498999999989,47.479431000000091],[-54.08306099999993,47.474991000000102],[-54.093055999999933,47.483046999999999],[-54.096663999999976,47.487213000000054],[-54.101112000000001,47.496384000000035],[-54.101944000000003,47.501389000000074],[-54.099723999999924,47.558883999999978],[-54.09833500000002,47.589714000000015],[-54.097220999999934,47.605270000000132],[-54.09332999999998,47.631659999999954],[-54.083610999999962,47.679717999999923],[-54.078612999999962,47.684990000000028],[-54.071388000000013,47.685546999999929],[-54.067504999999983,47.681107000000111],[-54.060555000000022,47.651099999999985],[-54.078056000000004,47.563881000000038],[-54.05972300000002,47.532211000000132],[-54.058891000000017,47.527214000000072],[-54.077498999999989,47.479431000000091]],[[-55.901938999999857,47.602493000000038],[-55.923057999999912,47.599434000000088],[-55.947220000000016,47.601936000000137],[-56.013335999999981,47.611664000000019],[-56.097778000000005,47.627487000000031],[-56.105559999999855,47.630821000000026],[-56.109169000000009,47.63499500000006],[-56.113616999999977,47.644714000000022],[-56.112220999999977,47.649719000000118],[-56.106666999999959,47.654709000000139],[-56.100280999999939,47.657211000000018],[-56.005835999999988,47.680274999999995],[-55.941108999999983,47.689156000000139],[-55.933883999999978,47.688324000000023],[-55.92861199999993,47.684432999999956],[-55.927498000000014,47.676658999999972],[-55.934440999999936,47.658882000000119],[-55.934440999999936,47.653877000000023],[-55.932502999999997,47.643883000000017],[-55.930000000000007,47.639435000000049],[-55.926392000000021,47.635268999999994],[-55.914161999999976,47.628326000000015],[-55.889442000000031,47.618881000000101],[-55.876388999999961,47.611664000000019],[-55.882499999999936,47.607773000000122],[-55.901938999999857,47.602493000000038]],[[-64.482773000000009,47.917770000000019],[-64.50167799999997,47.856384000000048],[-64.503615999999909,47.850273000000016],[-64.514724999999999,47.832497000000046],[-64.523055999999997,47.822220000000016],[-64.541106999999954,47.80332199999998],[-64.604995999999971,47.748329000000126],[-64.610549999999989,47.745270000000005],[-64.635833999999988,47.735825000000091],[-64.647507000000019,47.733879000000002],[-64.690551999999968,47.753052000000139],[-64.693328999999949,47.758049000000028],[-64.702788999999939,47.823607999999979],[-64.697768999999994,47.836104999999918],[-64.685546999999985,47.852219000000048],[-64.667496000000028,47.866936000000067],[-64.662215999999944,47.870827000000133],[-64.624160999999958,47.884719999999959],[-64.617767000000015,47.886658000000125],[-64.609160999999972,47.886939999999981],[-64.584166999999923,47.884995000000004],[-64.508057000000008,47.903877000000023],[-64.482773000000009,47.917770000000019]],[[-64.567504999999926,47.899436999999978],[-64.574448000000018,47.89804799999996],[-64.583617999999888,47.899436999999978],[-64.589447000000007,47.902771000000143],[-64.593886999999995,47.90665400000006],[-64.594451999999933,47.911933999999974],[-64.593612999999891,47.918052999999986],[-64.531677000000002,48.016105999999979],[-64.52694699999995,48.02165999999994],[-64.522780999999952,48.025551000000007],[-64.516952999999944,48.028602999999976],[-64.509734999999921,48.029991000000052],[-64.50111400000003,48.027488999999946],[-64.495543999999938,48.023880000000133],[-64.490828999999906,48.019989000000066],[-64.48582499999992,48.013054000000011],[-64.482773000000009,48.008606000000043],[-64.469726999999978,47.969711000000132],[-64.469161999999869,47.96443899999997],[-64.470550999999944,47.953323000000069],[-64.47444200000001,47.947769000000051],[-64.496383999999978,47.933875999999998],[-64.513901000000033,47.924712999999997],[-64.567504999999926,47.899436999999978]],[[-53.712775999999963,48.14888000000002],[-53.689720000000023,48.147217000000126],[-53.682502999999997,48.147774000000027],[-53.667503000000011,48.150542999999971],[-53.647781000000009,48.155265999999926],[-53.615554999999915,48.167496000000028],[-53.583327999999995,48.18082400000003],[-53.571113999999909,48.186104000000114],[-53.564162999999951,48.190543999999932],[-53.553054999999972,48.199158000000011],[-53.539444000000003,48.202217000000132],[-53.53167000000002,48.202774000000034],[-53.516395999999986,48.201935000000105],[-53.509726999999941,48.198326000000066],[-53.509170999999867,48.193321000000026],[-53.510833999999988,48.150826000000109],[-53.512504999999919,48.145271000000037],[-53.530829999999924,48.097771000000023],[-53.536391999999978,48.093323000000055],[-53.549445999999989,48.088600000000099],[-53.56361400000003,48.084991000000116],[-53.598884999999996,48.079437000000098],[-53.634170999999924,48.075272000000098],[-53.823333999999932,48.092765999999983],[-53.83943899999997,48.094437000000084],[-53.856110000000001,48.098044999999956],[-53.871940999999936,48.104713000000118],[-53.876663000000008,48.108604000000014],[-53.93250299999994,48.172767999999962],[-53.935829000000012,48.182495000000131],[-53.932776999999987,48.198326000000066],[-53.929168999999945,48.209434999999985],[-53.922225999999966,48.212493999999936],[-53.906386999999938,48.21027400000014],[-53.898887999999943,48.206657000000007],[-53.860000999999954,48.174438000000123],[-53.855559999999969,48.169991000000095],[-53.712775999999963,48.14888000000002]],[[-123.47444200000001,48.709160000000054],[-123.48277300000001,48.708328000000108],[-123.48999000000003,48.709435000000042],[-123.51306199999993,48.716385000000116],[-123.52471899999989,48.722488000000055],[-123.54943800000001,48.746658000000082],[-123.551941,48.752220000000023],[-123.59277299999991,48.898331000000098],[-123.595551,48.909714000000122],[-123.59612299999998,48.928329000000076],[-123.59665699999994,48.946938000000046],[-123.59361299999995,48.947211999999979],[-123.58056599999992,48.935547000000042],[-123.57721699999996,48.929161000000136],[-123.53611799999999,48.914993000000095],[-123.53028899999998,48.911933999999974],[-123.45749699999993,48.863052000000039],[-123.43388400000003,48.844437000000084],[-123.37027,48.768326000000002],[-123.36888099999993,48.762771999999984],[-123.37165800000002,48.75750000000005],[-123.37638900000002,48.753608999999983],[-123.43195300000002,48.721099999999979],[-123.47444200000001,48.709160000000054]],[[-58.342223999999987,49.066101000000117],[-58.349166999999966,49.064437999999996],[-58.356109999999944,49.065826000000129],[-58.351943999999889,49.071938000000102],[-58.341385000000002,49.07638500000013],[-58.333611000000019,49.077773999999977],[-58.330558999999994,49.073326000000009],[-58.335830999999928,49.068885999999964],[-58.342223999999987,49.066101000000117]],[[-123.32277699999997,48.861107000000004],[-123.3705369999999,48.856384000000048],[-123.37888299999997,48.85694100000012],[-123.38474299999996,48.859993000000031],[-123.54055799999998,48.944992000000127],[-123.66251399999999,49.03527100000008],[-123.70388800000001,49.095268000000033],[-123.70527599999997,49.100273000000072],[-123.70249899999999,49.105552999999986],[-123.695831,49.108047000000113],[-123.68639400000001,49.106659000000036],[-123.68055700000002,49.103607000000068],[-123.674713,49.093048000000067],[-123.65943900000002,49.073608000000036],[-123.60444599999994,49.014717000000132],[-123.58640300000002,49.000549000000092],[-123.52166699999998,48.96027400000014],[-123.49916099999996,48.947211999999979],[-123.487503,48.94110100000006],[-123.45973200000003,48.930549999999982],[-123.43639399999995,48.924438000000009],[-123.42027299999995,48.920547000000113],[-123.38194299999992,48.910819999999944],[-123.32833900000003,48.895827999999938],[-123.32250999999991,48.892768999999987],[-123.31777999999997,48.88888500000013],[-123.31276700000001,48.872765000000072],[-123.3125,48.868050000000039],[-123.31639100000001,48.863327000000027],[-123.32277699999997,48.861107000000004]],[[-125.816101,49.125824000000136],[-125.82028200000002,49.124709999999993],[-125.86028299999998,49.134438000000046],[-125.906387,49.160820000000115],[-125.91027800000001,49.165543000000071],[-125.92582699999991,49.190826000000015],[-125.93360899999993,49.211104999999918],[-125.93306000000001,49.218048000000124],[-125.93055700000002,49.219986000000063],[-125.92610200000001,49.223320000000058],[-125.87888299999992,49.235824999999977],[-125.86749299999997,49.233330000000137],[-125.82917800000001,49.226379000000009],[-125.81806899999987,49.220543000000134],[-125.79915599999998,49.208328000000051],[-125.78888699999993,49.172768000000133],[-125.79583699999995,49.151932000000102],[-125.79833999999994,49.146385000000009],[-125.81249999999994,49.129158000000132],[-125.816101,49.125824000000136]],[[-126.13194299999992,49.393325999999945],[-126.126938,49.390274000000034],[-126.12470999999999,49.390274000000034],[-126.12053699999996,49.388602999999989],[-126.11054999999999,49.382210000000043],[-126.10665899999992,49.378601000000003],[-126.09612300000003,49.368599000000074],[-126.08640300000002,49.358604000000128],[-126.07277699999997,49.34304800000001],[-126.0497279999999,49.265548999999965],[-126.0511019999999,49.260550999999964],[-126.05583200000001,49.256104000000107],[-126.06471299999987,49.250832000000003],[-126.07112100000001,49.248329000000012],[-126.07972699999999,49.246658000000139],[-126.08917199999991,49.246101000000067],[-126.09638999999999,49.24721500000004],[-126.18666100000002,49.263328999999999],[-126.19167299999992,49.265548999999965],[-126.22332799999992,49.279716000000121],[-126.22944599999994,49.282493999999929],[-126.23916600000001,49.289718999999991],[-126.23473399999995,49.374161000000015],[-126.22917200000001,49.378601000000003],[-126.22138999999999,49.380547000000092],[-126.14138800000001,49.39415699999995],[-126.13194299999992,49.393325999999945]],[[-123.37943999999999,49.326941999999974],[-123.39222699999999,49.326103000000046],[-123.41027799999995,49.334159999999997],[-123.42194399999994,49.339714000000015],[-123.42666600000001,49.344154000000003],[-123.42804699999999,49.348877000000016],[-123.42027299999995,49.381660000000011],[-123.41332999999997,49.386107999999979],[-123.3600009999999,49.411658999999986],[-123.35472099999998,49.413322000000107],[-123.327789,49.416664000000083],[-123.31696299999999,49.417496000000142],[-123.31220999999999,49.414992999999981],[-123.30943300000001,49.41137700000013],[-123.31027199999994,49.40526600000004],[-123.31194299999993,49.401932000000045],[-123.327789,49.363052000000096],[-123.33112299999999,49.354996000000028],[-123.34472699999998,49.341934000000037],[-123.36833199999995,49.330275999999969],[-123.37943999999999,49.326941999999974]],[[-54.705276000000026,49.400543000000084],[-54.712776000000019,49.398330999999985],[-54.730277999999998,49.403046000000018],[-54.735557999999969,49.407211000000018],[-54.759726999999941,49.432495000000017],[-54.759170999999981,49.437766999999951],[-54.754723000000013,49.443878000000041],[-54.749442999999928,49.449158000000125],[-54.73833499999995,49.457771000000093],[-54.680556999999908,49.49193600000001],[-54.673057999999912,49.492493000000081],[-54.665001000000018,49.489159000000086],[-54.644164999999987,49.473320000000001],[-54.640281999999956,49.46915400000006],[-54.640838999999971,49.463881999999955],[-54.654716000000008,49.460823000000005],[-54.684440999999993,49.420546999999999],[-54.699164999999994,49.40387700000008],[-54.705276000000026,49.400543000000084]],[[-124.179169,49.441101000000117],[-124.18554699999999,49.439986999999974],[-124.31360599999999,49.456099999999992],[-124.32668299999995,49.460823000000005],[-124.36000099999995,49.474433999999974],[-124.36609599999997,49.477486000000056],[-124.37082699999996,49.481102000000135],[-124.37165799999997,49.483047000000113],[-124.38054699999998,49.506943000000035],[-124.38110399999994,49.511940000000095],[-124.37832599999996,49.515830999999991],[-124.37165799999997,49.518326000000002],[-124.361107,49.519157000000064],[-124.35500299999995,49.517494000000113],[-124.34889199999998,49.514442000000031],[-124.30471799999992,49.512214999999969],[-124.24471999999997,49.501389000000017],[-124.23750299999995,49.498329000000126],[-124.22138999999993,49.491379000000109],[-124.1875,49.474433999999974],[-124.18167099999999,49.471375000000023],[-124.17388900000003,49.45638299999996],[-124.17194399999994,49.446655000000135],[-124.17223399999989,49.444153000000085],[-124.179169,49.441101000000117]],[[-123.33277899999996,49.441101000000117],[-123.36028299999987,49.433051999999918],[-123.37499999999994,49.433327000000133],[-123.442207,49.438599000000067],[-123.448036,49.441658000000018],[-123.45944199999997,49.467209000000082],[-123.45973200000003,49.470543000000077],[-123.45305599999995,49.495544000000109],[-123.44526699999994,49.51527400000009],[-123.43666100000002,49.522217000000069],[-123.38082899999995,49.536110000000122],[-123.37000299999994,49.536110000000122],[-123.360817,49.534995999999978],[-123.3550029999999,49.531936999999971],[-123.33833300000003,49.50610400000005],[-123.33167999999995,49.500832000000116],[-123.32805599999995,49.496383999999978],[-123.32389799999993,49.488602000000014],[-123.319458,49.474708999999962],[-123.31777999999997,49.464157],[-123.319458,49.451934999999992],[-123.32224300000001,49.448043999999925],[-123.32695000000001,49.444153000000085],[-123.33277899999996,49.441101000000117]],[[-55.695548999999971,49.506943000000035],[-55.725829999999974,49.505554000000018],[-55.732497999999964,49.509163000000001],[-55.735001000000011,49.513610999999969],[-55.736114999999984,49.518599999999935],[-55.735832000000016,49.52388000000002],[-55.730277999999942,49.545547000000056],[-55.722771000000023,49.557770000000119],[-55.716110000000015,49.560271999999998],[-55.684998000000007,49.561104000000114],[-55.676948999999979,49.561104000000114],[-55.658332999999971,49.559158000000025],[-55.653052999999886,49.555267000000129],[-55.652221999999938,49.550270000000069],[-55.653885000000002,49.544716000000051],[-55.661384999999939,49.529716000000064],[-55.664444000000003,49.52388000000002],[-55.68111399999998,49.510826000000122],[-55.687499999999943,49.508049000000028],[-55.695548999999971,49.506943000000035]],[[-124.68943799999994,49.480270000000019],[-124.69611399999997,49.477767999999969],[-124.70221700000002,49.478042999999957],[-124.74137899999994,49.488045000000113],[-124.75361599999991,49.491379000000109],[-124.82362399999994,49.539435999999966],[-124.83666999999997,49.554993000000024],[-124.84111000000001,49.562767000000008],[-124.84249899999992,49.578605999999979],[-124.84194899999989,49.58415999999994],[-124.83416699999992,49.607773000000066],[-124.83168000000001,49.610549999999989],[-124.82749899999993,49.608887000000038],[-124.81054699999993,49.589714000000129],[-124.80888400000003,49.586655000000007],[-124.80583200000001,49.585823000000062],[-124.77887699999997,49.568886000000077],[-124.68804899999986,49.483604000000014],[-124.68943799999994,49.480270000000019]],[[-55.693053999999961,49.56749700000006],[-55.709166999999979,49.566383000000087],[-55.716659999999933,49.567214999999976],[-55.720832999999971,49.571381000000088],[-55.723052999999993,49.576102999999989],[-55.722771000000023,49.581383000000073],[-55.705832999999927,49.613883999999985],[-55.684998000000007,49.624992000000134],[-55.673888999999974,49.630547000000035],[-55.659720999999934,49.635551000000021],[-55.653052999999886,49.63638300000008],[-55.572776999999974,49.603881999999999],[-55.567504999999926,49.599998000000141],[-55.573058999999944,49.595543000000134],[-55.586387999999943,49.59137700000008],[-55.608054999999979,49.586104999999975],[-55.671669000000009,49.571381000000088],[-55.693053999999961,49.56749700000006]],[[-54.576667999999984,49.558601000000124],[-54.77305599999994,49.493880999999988],[-54.809440999999993,49.488045000000113],[-54.83916499999998,49.48443600000013],[-54.855835000000013,49.48443600000013],[-54.863060000000019,49.485268000000019],[-54.871940999999936,49.487495000000081],[-54.873055000000022,49.492218000000094],[-54.893616000000009,49.580551000000128],[-54.894447000000014,49.58526599999999],[-54.891945000000021,49.590546000000074],[-54.885276999999974,49.593048000000124],[-54.805556999999965,49.595825000000048],[-54.792228999999963,49.572768999999994],[-54.793335000000013,49.566939999999988],[-54.791671999999892,49.56249200000002],[-54.78833800000001,49.557770000000119],[-54.784172000000012,49.554161000000136],[-54.768607999999972,49.546661000000029],[-54.760001999999986,49.545547000000056],[-54.743889000000024,49.544998000000135],[-54.729720999999984,49.548050000000046],[-54.708611000000019,49.554436000000123],[-54.614722999999969,49.606102000000021],[-54.574722000000008,49.635269000000108],[-54.561942999999928,49.653603000000089],[-54.548889000000031,49.659988000000055],[-54.536117999999931,49.664153999999996],[-54.529723999999987,49.633881000000031],[-54.531669999999963,49.62221500000004],[-54.538054999999986,49.587494000000106],[-54.543334999999956,49.582497000000046],[-54.570557000000008,49.562209999999936],[-54.576667999999984,49.558601000000124]],[[-54.004448000000025,49.647491000000116],[-54.257781999999963,49.566666000000055],[-54.265839000000028,49.566939999999988],[-54.274719000000005,49.569160000000011],[-54.289444000000003,49.576102999999989],[-54.293335000000013,49.580551000000128],[-54.298888999999917,49.609993000000088],[-54.297782999999981,49.651100000000099],[-54.288054999999929,49.71138000000002],[-54.282775999999956,49.716660000000104],[-54.269996999999989,49.722487999999998],[-54.141945000000021,49.75],[-54.102225999999973,49.750274999999988],[-54.093886999999938,49.748878000000047],[-54.085830999999985,49.745544000000052],[-54.081115999999952,49.736381999999935],[-54.040000999999961,49.689987000000087],[-54.003058999999951,49.659988000000055],[-54.004448000000025,49.647491000000116]],[[-124.129707,49.650825999999995],[-124.139183,49.650543000000027],[-124.15361000000001,49.655548000000067],[-124.18694299999993,49.668883999999991],[-124.196663,49.676940999999999],[-124.20195000000001,49.701934999999992],[-124.19943199999989,49.706099999999992],[-124.14750699999996,49.746658000000025],[-124.14277600000003,49.75],[-124.13722199999995,49.752219999999966],[-124.09166699999997,49.767769000000101],[-124.03611799999999,49.777214000000129],[-124.029449,49.778328000000101],[-124.021118,49.77777100000003],[-124.01611299999996,49.775551000000007],[-124.01862299999999,49.77165999999994],[-124.02555799999993,49.767769000000101],[-124.04611199999999,49.756386000000077],[-124.06054699999999,49.744995000000131],[-124.07472200000001,49.733330000000024],[-124.09084300000001,49.715546000000131],[-124.10109699999992,49.700272000000041],[-124.10555999999991,49.689430000000016],[-124.10722399999992,49.677215999999987],[-124.11081699999994,49.664992999999924],[-124.11361699999998,49.659713999999951],[-124.12304699999993,49.651931999999988],[-124.129707,49.650825999999995]],[[-56.80361199999993,49.763329000000056],[-56.827498999999989,49.761107999999979],[-56.83555599999994,49.762771999999984],[-56.83805099999995,49.767494000000056],[-56.832779000000016,49.771934999999985],[-56.826667999999984,49.77526899999998],[-56.792503000000011,49.785552999999993],[-56.782218999999998,49.78694200000001],[-56.78194400000001,49.780822999999941],[-56.790840000000003,49.768326000000002],[-56.796669000000009,49.764999000000046],[-56.80361199999993,49.763329000000056]],[[-124.44611399999991,49.723320000000115],[-124.43749999999994,49.723045000000127],[-124.42887899999994,49.723877000000016],[-124.41000400000001,49.723045000000127],[-124.38137799999998,49.713326000000109],[-124.35138699999999,49.698044000000095],[-124.33277900000002,49.683327000000077],[-124.13474300000001,49.525269000000037],[-124.13221699999991,49.520271000000037],[-124.12416100000002,49.499161000000072],[-124.122772,49.493607000000054],[-124.12748699999997,49.489715999999987],[-124.13417099999992,49.487495000000081],[-124.14167799999996,49.485825000000091],[-124.14916999999997,49.486107000000004],[-124.15527299999985,49.488602000000014],[-124.281387,49.546661000000029],[-124.40583800000002,49.605826999999977],[-124.43804899999998,49.628875999999991],[-124.44220699999994,49.638046000000031],[-124.47666900000002,49.67193600000013],[-124.5396649999999,49.692768000000001],[-124.55249799999996,49.697105000000022],[-124.56167599999998,49.699935999999923],[-124.61416600000001,49.713607999999965],[-124.62721299999993,49.71915400000006],[-124.65416699999997,49.736107000000118],[-124.66082799999992,49.742767000000129],[-124.65666199999993,49.796943999999939],[-124.65110800000002,49.799995000000138],[-124.61945300000002,49.797218000000044],[-124.604446,49.789436000000137],[-124.59944199999995,49.78443900000002],[-124.59028599999999,49.77165999999994],[-124.56234000000001,49.753326000000015],[-124.55933399999998,49.751495000000034],[-124.49472000000003,49.733330000000024],[-124.44611399999991,49.723320000000115]],[[-126.67610199999996,49.583603000000039],[-126.68138099999993,49.583054000000118],[-126.68888899999996,49.583878000000084],[-126.69722000000002,49.585548000000074],[-126.78971899999999,49.612213000000111],[-126.80803699999996,49.61971299999999],[-126.81416299999995,49.622765000000072],[-126.90556300000003,49.685547000000099],[-126.96528599999999,49.726935999999966],[-126.96945199999999,49.731102000000078],[-126.97416699999991,49.740273000000002],[-126.97556299999997,49.75],[-126.94055200000003,49.831383000000017],[-126.890556,49.84777100000008],[-126.79915599999993,49.876099000000011],[-126.77749599999993,49.87971500000009],[-126.76872299999997,49.878616000000079],[-126.74944299999999,49.85694100000012],[-126.73416099999997,49.848045000000013],[-126.67804699999994,49.825272000000098],[-126.64472999999992,49.774162000000047],[-126.636124,49.759437999999989],[-126.63445300000001,49.753883000000087],[-126.61332699999997,49.648330999999985],[-126.61609599999997,49.624435000000062],[-126.62053699999996,49.606102000000021],[-126.62416099999996,49.601386999999988],[-126.63305700000001,49.596100000000035],[-126.66861,49.585548000000074],[-126.67610199999996,49.583603000000039]],[[-62.089721999999881,49.386383000000137],[-62.081389999999999,49.385551000000078],[-62.051665999999955,49.390274000000034],[-62.043616999999927,49.390549000000078],[-62.025276000000019,49.38749700000011],[-61.892226999999934,49.351387000000045],[-61.875557000000015,49.344994000000042],[-61.825835999999924,49.312209999999993],[-61.821114000000023,49.308883999999978],[-61.663329999999917,49.149162000000047],[-61.661666999999966,49.144439999999975],[-61.670837000000006,49.134163000000001],[-61.702224999999942,49.111107000000004],[-61.735557999999969,49.096099999999979],[-61.796111999999937,49.078048999999965],[-62.019996999999989,49.069443000000035],[-62.029167000000029,49.069443000000035],[-62.195549000000028,49.074997000000053],[-62.368057000000022,49.0991590000001],[-62.726105000000018,49.154709000000025],[-62.782218999999884,49.165824999999984],[-62.946662999999944,49.198874999999987],[-63.089995999999985,49.228043000000014],[-63.097778000000005,49.23054500000012],[-63.209442000000024,49.270827999999995],[-63.23082699999992,49.280273000000022],[-63.242774999999938,49.287498000000085],[-63.253059000000007,49.294997999999964],[-63.269996999999989,49.311104],[-63.275832999999977,49.314712999999983],[-63.283332999999914,49.317771999999934],[-63.387221999999952,49.34388000000007],[-63.416945999999882,49.350829999999974],[-63.501296999999965,49.370384000000115],[-63.537223999999867,49.379714999999976],[-63.573058999999944,49.396660000000111],[-63.61611199999993,49.446938000000102],[-63.621940999999879,49.455551000000071],[-63.620833999999945,49.461105000000089],[-63.616660999999908,49.46665999999999],[-63.61333499999995,49.473044999999956],[-63.612502999999947,49.478873999999962],[-63.61611199999993,49.488327000000027],[-63.619720000000029,49.492767000000015],[-63.662772999999959,49.533051],[-63.67888599999992,49.544716000000051],[-63.714446999999893,49.566383000000087],[-63.84194199999996,49.639160000000004],[-63.881942999999978,49.65915700000005],[-63.918334999999956,49.674438000000009],[-64.01556399999987,49.702492000000063],[-64.306945999999925,49.777489000000003],[-64.382216999999969,49.789436000000137],[-64.389998999999932,49.789719000000105],[-64.418335000000013,49.801658999999972],[-64.511123999999995,49.858604000000014],[-64.513901000000033,49.863609000000054],[-64.510283999999956,49.868599000000131],[-64.50111400000003,49.878043999999989],[-64.496108999999876,49.883049000000085],[-64.490828999999906,49.886939999999925],[-64.472778000000005,49.895828000000108],[-64.458618000000001,49.900826000000109],[-64.445540999999992,49.904434000000037],[-64.226943999999946,49.948326000000066],[-64.203613000000018,49.950271999999984],[-64.142775999999969,49.948044000000039],[-64.133057000000008,49.947212000000093],[-64.12388599999997,49.945267000000115],[-64.029175000000009,49.924438000000123],[-63.958892999999932,49.898048000000131],[-63.615836999999942,49.849158999999986],[-63.545006000000001,49.843323000000112],[-63.49222599999996,49.840828000000045],[-63.475272999999959,49.840546000000018],[-63.346946999999943,49.820274000000097],[-63.309722999999963,49.813880999999981],[-63.136115999999959,49.780822999999941],[-63.074447999999961,49.764160000000061],[-62.99610899999999,49.736656000000096],[-62.786667000000023,49.676384000000098],[-62.71055599999994,49.660820000000001],[-62.545554999999979,49.599998000000141],[-62.443610999999919,49.5472180000001],[-62.340553,49.486938000000009],[-62.212218999999948,49.41443600000008],[-62.205832999999984,49.41137700000013],[-62.188889000000017,49.405823000000112],[-62.169166999999959,49.401099999999985],[-62.099167000000023,49.387771999999984],[-62.089721999999881,49.386383000000137]],[[-124.92415599999998,50.05860100000001],[-124.96861299999995,50.035827999999981],[-125.00055699999996,50.056656000000032],[-125.06304899999998,50.103324999999984],[-125.06696299999999,50.107498000000135],[-125.066101,50.113884000000041],[-125.0625,50.118324000000086],[-125.03971899999999,50.130546999999922],[-124.991669,50.168327000000033],[-124.98222399999992,50.176102000000128],[-124.98055999999991,50.18221299999999],[-124.98332199999999,50.225548000000003],[-124.93138099999993,50.171104000000128],[-124.92859599999997,50.166100000000142],[-124.91528299999999,50.141380000000083],[-124.89778100000001,50.077492000000063],[-124.92415599999998,50.05860100000001]],[[-63.859443999999996,50.197768999999937],[-63.873610999999983,50.194434999999999],[-63.890282000000013,50.194709999999986],[-63.899993999999936,50.196098000000063],[-63.908607000000018,50.198601000000053],[-63.916107000000011,50.201660000000004],[-63.920837000000006,50.205551000000071],[-63.930557000000022,50.218597000000045],[-63.931389000000024,50.223877000000073],[-63.930557000000022,50.229431000000091],[-63.926948999999922,50.236107000000004],[-63.922774999999888,50.241661000000022],[-63.916663999999969,50.244713000000104],[-63.909995999999921,50.246658000000139],[-63.90193899999997,50.24721500000004],[-63.889724999999999,50.242218000000094],[-63.865554999999915,50.228325000000041],[-63.859443999999996,50.224709000000018],[-63.854720999999927,50.220824999999991],[-63.852782999999988,50.216103000000089],[-63.853614999999991,50.210548000000017],[-63.855835000000013,50.204437000000098],[-63.859443999999996,50.197768999999937]],[[-125.16777000000002,49.980819999999937],[-125.16999800000002,49.980819999999937],[-125.17111199999994,49.981659000000093],[-125.18582199999997,50.004165999999998],[-125.20722999999998,50.044998000000021],[-125.21417199999996,50.069992000000013],[-125.28167699999989,50.11332700000014],[-125.31777999999986,50.136107999999979],[-125.32362399999994,50.143326000000002],[-125.33999599999993,50.203049000000021],[-125.34916699999997,50.242493000000138],[-125.34973100000002,50.25777400000004],[-125.348343,50.261665000000107],[-125.34554299999996,50.263901000000033],[-125.33999599999993,50.26888300000013],[-125.31082200000003,50.281380000000127],[-125.26334400000002,50.293883999999991],[-125.25472999999988,50.293610000000058],[-125.24638399999998,50.290549999999996],[-125.24333199999995,50.288329999999974],[-125.16722099999987,50.213608000000079],[-125.16111799999999,50.200272000000098],[-125.16000400000001,50.190544000000102],[-125.18666100000002,50.141663000000051],[-125.1536099999999,50.006103999999937],[-125.15416699999997,50.000832000000003],[-125.16416900000002,49.985268000000133],[-125.16777000000002,49.980819999999937]],[[-124.8125,50.111381999999992],[-124.82112100000001,50.111107000000118],[-124.82749899999993,50.111937999999952],[-124.83361799999989,50.114441000000113],[-124.86110699999989,50.136383000000023],[-124.93916299999995,50.207771000000093],[-124.96305799999999,50.236382000000049],[-124.96610999999996,50.246941000000106],[-124.96556099999992,50.251663000000008],[-124.92304999999993,50.296386999999982],[-124.91832699999986,50.29972099999992],[-124.91082799999998,50.299995000000081],[-124.90249599999999,50.29833200000013],[-124.89862099999999,50.293883999999991],[-124.87581599999993,50.28472099999999],[-124.82167099999992,50.239716000000044],[-124.75666799999999,50.178328999999962],[-124.75250199999999,50.167770000000132],[-124.752228,50.161376999999959],[-124.75499699999995,50.156097000000102],[-124.80695300000002,50.113884000000041],[-124.8125,50.111381999999992]],[[-124.73082699999992,50.302215999999987],[-124.72693599999997,50.299164000000019],[-124.72471599999994,50.299164000000019],[-124.69554099999999,50.289436000000023],[-124.68331899999993,50.283333000000084],[-124.67250100000001,50.276100000000042],[-124.66860999999994,50.272491000000059],[-124.66111799999993,50.263054000000125],[-124.65943900000002,50.258330999999941],[-124.65750099999997,50.247772000000111],[-124.65611299999989,50.231377000000009],[-124.65834000000001,50.212212000000022],[-124.66000399999996,50.207496999999989],[-124.66251399999999,50.203323000000125],[-124.695831,50.157494000000042],[-124.70195000000001,50.158600000000092],[-124.70805399999995,50.161376999999959],[-124.79222099999993,50.22526600000009],[-124.79499800000002,50.228874000000019],[-124.78083800000002,50.269440000000031],[-124.77778599999999,50.27748900000006],[-124.74500299999994,50.299437999999952],[-124.74054699999994,50.30193300000002],[-124.73082699999992,50.302215999999987]],[[-125.54387700000001,50.393883000000017],[-125.63583399999999,50.379714999999976],[-125.69360399999999,50.383330999999998],[-125.70333899999991,50.384163000000115],[-125.75527999999997,50.391662999999994],[-125.762787,50.394157000000121],[-125.76363400000002,50.397491000000116],[-125.75527999999997,50.405548000000067],[-125.74416399999996,50.40776800000009],[-125.59528399999999,50.433052000000089],[-125.58640300000002,50.434158000000139],[-125.52390300000002,50.434433000000126],[-125.51889,50.431381000000044],[-125.51806599999998,50.428604000000121],[-125.51777600000003,50.409431000000041],[-125.520554,50.403320000000122],[-125.52500899999995,50.400825999999995],[-125.53639199999998,50.395827999999995],[-125.54387700000001,50.393883000000017]],[[-125.16555800000003,50.374435000000062],[-125.06139400000001,50.240547000000049],[-125.05194099999989,50.226653999999996],[-125.05027799999993,50.221657000000107],[-125.048607,50.207771000000093],[-125.04915599999993,50.193320999999969],[-125.05166599999995,50.190826000000129],[-125.11638599999998,50.136658000000011],[-125.12917299999998,50.126098999999954],[-125.13390400000003,50.122764999999958],[-125.14028899999994,50.121658000000025],[-125.14472999999987,50.12193300000007],[-125.15083299999998,50.12499200000002],[-125.15416699999997,50.133331000000055],[-125.13971699999996,50.159431000000097],[-125.15611299999995,50.239158999999972],[-125.21083099999993,50.313048999999921],[-125.21362299999993,50.316666000000055],[-125.22000099999991,50.318329000000006],[-125.26363400000002,50.323607999999979],[-125.27194199999997,50.323883000000023],[-125.31555199999997,50.318054000000018],[-125.32112099999989,50.316939999999988],[-125.32695000000001,50.313881000000038],[-125.33306900000002,50.304435999999953],[-125.33473200000003,50.29972099999992],[-125.33944699999989,50.29583000000008],[-125.35610999999994,50.290276000000063],[-125.37222300000002,50.289436000000023],[-125.38527699999997,50.289993000000095],[-125.390289,50.29222100000004],[-125.39306599999998,50.29583000000008],[-125.39917000000003,50.311104000000114],[-125.400284,50.320831000000055],[-125.39943699999998,50.331108000000086],[-125.39806399999998,50.333878000000084],[-125.391953,50.340546000000074],[-125.291946,50.433876000000055],[-125.28443899999996,50.435822000000144],[-125.27500900000001,50.433327000000133],[-125.27306399999992,50.431107000000111],[-125.23665599999993,50.415825000000098],[-125.21640000000002,50.404709000000139],[-125.16555800000003,50.374435000000062]],[[-125.42610200000001,50.3555530000001],[-125.45777899999996,50.349434000000088],[-125.46749899999998,50.350273000000016],[-125.52610800000002,50.378875999999991],[-125.52806099999998,50.381660000000124],[-125.51862299999993,50.390274000000034],[-125.47749299999998,50.424164000000133],[-125.47165699999999,50.427489999999977],[-125.465012,50.429993000000138],[-125.37998999999996,50.460823000000005],[-125.37165799999997,50.457771000000037],[-125.37082699999996,50.455826000000059],[-125.36665299999993,50.454162999999937],[-125.34306300000003,50.441658000000018],[-125.33194700000001,50.435547000000099],[-125.33000199999998,50.430824000000143],[-125.33056599999986,50.425270000000125],[-125.33693700000003,50.416664000000026],[-125.38583399999999,50.36971299999999],[-125.39835399999998,50.364159000000029],[-125.42610200000001,50.3555530000001]],[[-125.80721999999997,50.413605000000075],[-125.90695199999993,50.409714000000008],[-125.92194399999988,50.41027100000008],[-125.92804699999999,50.411658999999986],[-125.93110699999988,50.413879000000009],[-125.95111099999997,50.433876000000055],[-125.93943799999988,50.443047000000035],[-125.90583799999996,50.45638300000013],[-125.81416299999995,50.46804800000001],[-125.80777,50.467765999999983],[-125.80359599999997,50.465546000000131],[-125.79055799999998,50.456940000000031],[-125.74109599999997,50.431664000000012],[-125.73805199999998,50.428047000000049],[-125.73805199999998,50.426658999999972],[-125.74276700000001,50.424164000000133],[-125.75834700000001,50.419990999999982],[-125.79110700000001,50.414992999999981],[-125.80721999999997,50.413605000000075]],[[-126.22582999999997,50.555267000000129],[-126.30888399999998,50.528327999999988],[-126.33640299999996,50.521659999999997],[-126.35056299999997,50.52027099999998],[-126.486107,50.515549000000078],[-126.58805799999999,50.521378000000084],[-126.60417199999995,50.52526899999998],[-126.62389400000001,50.533881999999949],[-126.60417199999995,50.539719000000105],[-126.57444800000002,50.546387000000095],[-126.55695300000002,50.548607000000118],[-126.54194599999994,50.549438000000123],[-126.52667200000002,50.548882000000106],[-126.48860200000001,50.553321999999923],[-126.38110399999999,50.574715000000026],[-126.28611799999999,50.598327999999981],[-126.28278399999999,50.597488000000112],[-126.22609699999998,50.564156000000025],[-126.22305299999999,50.560546999999985],[-126.224716,50.556655999999919],[-126.22582999999997,50.555267000000129]],[[-126.46639999999996,50.575829000000056],[-126.47501399999993,50.575554000000011],[-126.47917199999995,50.576385000000016],[-126.53555299999999,50.590546000000018],[-126.54915599999998,50.596382000000062],[-126.55222300000003,50.598602000000085],[-126.554169,50.602776000000119],[-126.55248999999998,50.607498000000021],[-126.55027799999999,50.608604000000071],[-126.54360999999994,50.611382000000049],[-126.52916699999997,50.614998000000128],[-126.45361299999996,50.626937999999996],[-126.40499899999992,50.626099000000067],[-126.385559,50.625549000000035],[-126.37721299999993,50.623877999999934],[-126.364441,50.619438000000116],[-126.36138900000003,50.615829000000133],[-126.36165599999998,50.613052000000039],[-126.36971999999992,50.605826999999977],[-126.38027999999997,50.598602000000085],[-126.38474300000001,50.596100000000035],[-126.39138799999995,50.59276600000004],[-126.39806399999998,50.591103000000089],[-126.46639999999996,50.575829000000056]],[[-59.345832999999971,50.533881999999949],[-59.353888999999924,50.533881999999949],[-59.358337000000006,50.537773000000016],[-59.384170999999924,50.633049000000085],[-59.384170999999924,50.638328999999999],[-59.382773999999984,50.64388300000013],[-59.378051999999911,50.649161999999933],[-59.371940999999993,50.652771000000143],[-59.364448999999979,50.653876999999966],[-59.355003000000011,50.652214000000072],[-59.337775999999906,50.640831000000048],[-59.333610999999905,50.636108000000036],[-59.321670999999981,50.618881000000044],[-59.305556999999965,50.59165999999999],[-59.300277999999992,50.581940000000088],[-59.298339999999939,50.57249500000006],[-59.298339999999939,50.561935000000119],[-59.308891000000017,50.553047000000106],[-59.320557000000008,50.545830000000024],[-59.333060999999873,50.539436000000137],[-59.345832999999971,50.533881999999949]],[[-126.87332200000003,50.663322000000051],[-126.83416699999998,50.634163000000058],[-126.83112299999999,50.629158000000018],[-126.83583099999998,50.625267000000122],[-126.90249599999993,50.613883999999928],[-126.91251399999999,50.61360900000011],[-127.01666299999999,50.638328999999999],[-127.025284,50.639992000000063],[-127.04276999999996,50.637497000000053],[-127.05832700000002,50.632492000000013],[-127.10193600000002,50.627486999999974],[-127.12249800000001,50.62721300000004],[-127.13221699999991,50.628326000000129],[-127.14055599999995,50.62971500000009],[-127.14472999999998,50.633881000000031],[-127.14334100000002,50.63888500000013],[-127.13166799999999,50.652214000000072],[-127.12721299999998,50.656096999999988],[-127.10916099999997,50.665267999999969],[-127.093887,50.669159000000036],[-127.08640300000002,50.669716000000108],[-126.89028899999994,50.667213000000118],[-126.87970699999994,50.666100000000029],[-126.87332200000003,50.663322000000051]],[[-126.64388999999994,50.691933000000006],[-126.65249599999999,50.691376000000105],[-126.65888999999993,50.694435000000055],[-126.662781,50.69860099999994],[-126.66583300000002,50.703323000000012],[-126.69027699999998,50.75499700000006],[-126.68554699999993,50.758888000000127],[-126.66832699999998,50.759163000000115],[-126.60221899999999,50.770828000000051],[-126.58277900000002,50.769714000000022],[-126.54387700000001,50.765831000000105],[-126.53639199999992,50.763611000000083],[-126.53582799999998,50.758606000000043],[-126.63806199999993,50.694992000000127],[-126.64388999999994,50.691933000000006]],[[-55.564720000000023,50.699714999999912],[-55.580001999999922,50.698326000000122],[-55.588889999999992,50.699431999999945],[-55.64527899999996,50.71888000000007],[-55.65166499999998,50.72304500000007],[-55.653052999999886,50.727211000000011],[-55.629439999999931,50.780823000000112],[-55.62471800000003,50.787216000000058],[-55.619163999999955,50.791381999999999],[-55.462775999999963,50.805824000000143],[-55.454444999999964,50.802489999999977],[-55.450554000000011,50.798332000000016],[-55.449722000000008,50.792770000000075],[-55.454720000000009,50.788048000000003],[-55.46694199999996,50.784163999999976],[-55.512504999999976,50.722763000000043],[-55.525001999999972,50.715827999999988],[-55.551392000000021,50.703323000000012],[-55.557502999999997,50.701385000000073],[-55.564720000000023,50.699714999999912]],[[-126.27306399999998,50.652771000000143],[-126.46333300000003,50.641662999999937],[-126.56806899999998,50.648331000000098],[-126.58416699999992,50.650269000000037],[-126.59889199999998,50.654159999999933],[-126.60637699999995,50.657211000000132],[-126.612503,50.659988000000055],[-126.61749299999997,50.664993000000095],[-126.61749299999997,50.667770000000019],[-126.54583700000001,50.726096999999982],[-126.43720999999999,50.783882000000119],[-126.38971699999996,50.806381000000044],[-126.38221699999997,50.808043999999995],[-126.28056299999997,50.828331000000048],[-126.26640299999997,50.827773999999977],[-126.25805699999995,50.824715000000026],[-126.2538909999999,50.821938000000102],[-126.25171699999987,50.818932000000075],[-126.23832699999997,50.811104000000057],[-126.22944599999994,50.803322000000094],[-126.17832900000002,50.750832000000059],[-126.17722299999997,50.748604000000114],[-126.17666600000001,50.743881000000101],[-126.25305200000003,50.699646000000087],[-126.25611900000001,50.661377000000073],[-126.26083399999999,50.657211000000132],[-126.26640299999997,50.654709000000082],[-126.27306399999998,50.652771000000143]],[[-126.73137700000001,50.771934999999985],[-126.79778299999992,50.768883000000017],[-126.807503,50.769989000000066],[-126.85333300000002,50.782767999999919],[-126.86472299999997,50.78943600000008],[-126.90583799999996,50.822769000000108],[-126.90139799999992,50.825272000000098],[-126.88806199999999,50.829162999999994],[-126.88137799999993,50.830276000000026],[-126.64862099999999,50.847214000000122],[-126.64334100000002,50.846939000000134],[-126.63583399999999,50.845268000000033],[-126.62943999999993,50.842490999999995],[-126.58860800000002,50.821381000000031],[-126.56806899999998,50.807770000000062],[-126.56304899999992,50.799995000000138],[-126.56861900000001,50.797493000000088],[-126.73137700000001,50.771934999999985]],[[-127.22693599999991,50.636108000000036],[-126.975281,50.576942000000088],[-126.85472099999993,50.554436000000123],[-126.77639799999997,50.546104000000128],[-126.76806599999998,50.544441000000006],[-126.72138999999999,50.531936999999971],[-126.70527600000003,50.527489000000003],[-126.63999899999999,50.507773999999984],[-126.62332199999992,50.498329000000126],[-126.56388899999996,50.483604000000014],[-126.49388099999993,50.481934000000024],[-126.39472999999998,50.481658999999979],[-126.38694800000002,50.482765000000029],[-126.35582699999998,50.48333000000008],[-126.327789,50.480820000000051],[-126.22112299999998,50.468596999999988],[-126.20500199999992,50.466660000000104],[-126.15471600000001,50.459435000000042],[-126.06916799999999,50.438599000000067],[-126.04611199999994,50.432495000000017],[-126.031387,50.427773000000116],[-126.01889,50.42193600000013],[-125.97609699999992,50.394996999999989],[-125.96250900000001,50.388885000000016],[-125.94776899999994,50.38499500000006],[-125.92859599999997,50.382209999999986],[-125.81696299999999,50.378044000000102],[-125.58000199999987,50.365828999999962],[-125.56416300000001,50.363883999999985],[-125.54860699999989,50.359161000000029],[-125.46305799999993,50.329719999999952],[-125.44972200000001,50.323607999999979],[-125.44055200000003,50.318329000000006],[-125.43554699999999,50.314712999999983],[-125.43167099999999,50.310547000000042],[-125.42887899999994,50.305549999999982],[-125.42722300000003,50.299995000000081],[-125.42666599999995,50.293883999999991],[-125.42722300000003,50.287498000000085],[-125.41500899999994,50.261665000000107],[-125.39362299999999,50.215546000000018],[-125.37777699999998,50.17971799999998],[-125.36277799999993,50.138046000000088],[-125.33084099999996,50.113884000000041],[-125.28694199999995,50.08138300000013],[-125.229446,50.026657],[-125.22165699999999,50.018051000000071],[-125.21611000000001,50.001389000000074],[-125.21417199999996,49.976379000000065],[-125.212784,49.970825000000048],[-125.20722999999998,49.961662000000047],[-125.16860999999994,49.912766000000033],[-125.11221299999994,49.868324000000086],[-124.99305699999991,49.788330000000087],[-124.89806399999998,49.731658999999979],[-124.89138799999989,49.664711000000068],[-124.91639700000002,49.631660000000124],[-124.86028299999992,49.541663999999969],[-124.85305800000003,49.532494000000099],[-124.83306900000002,49.510826000000122],[-124.78943599999991,49.464157],[-124.579453,49.38749700000011],[-124.55110200000001,49.378044000000102],[-124.53555299999999,49.373878000000047],[-124.51917300000002,49.370270000000119],[-124.26083399999993,49.315269000000001],[-124.12193299999996,49.270271000000093],[-123.94304699999992,49.211104999999918],[-123.85637699999995,49.149162000000047],[-123.86028299999992,49.153046000000074],[-123.86638599999998,49.160820000000115],[-123.86805700000002,49.164436000000137],[-123.87110899999988,49.173607000000118],[-123.87138399999998,49.181106999999997],[-123.86638599999998,49.186378000000047],[-123.86165599999993,49.188880999999981],[-123.84999099999999,49.191658000000075],[-123.82444800000002,49.192764000000125],[-123.82055699999995,49.190544000000102],[-123.80722000000003,49.180275000000051],[-123.79444899999993,49.173325000000034],[-123.78859699999998,49.170273000000122],[-123.76944700000001,49.16304800000006],[-123.73805199999993,49.154433999999981],[-123.71112099999999,49.149993999999992],[-123.70417800000001,49.147491000000002],[-123.699432,49.143883000000073],[-123.696663,49.14027400000009],[-123.69638099999997,49.135551000000078],[-123.69915799999995,49.130272000000105],[-123.70388800000001,49.126381000000038],[-123.73137700000001,49.117493000000081],[-123.74166899999989,49.118049999999982],[-123.83750899999995,49.14138000000014],[-123.85056299999997,49.145546000000024],[-123.81027199999994,49.115829000000076],[-123.75195300000001,49.040833000000021],[-123.74944299999999,49.03527100000008],[-123.75028999999989,49.02915999999999],[-123.75695799999994,48.986938000000123],[-123.75862099999989,48.980819999999994],[-123.76334399999996,48.976936000000137],[-123.69193999999993,48.908325000000104],[-123.68222000000003,48.902214000000072],[-123.5911099999999,48.839989000000116],[-123.58277900000002,48.831940000000088],[-123.56555199999997,48.789719000000105],[-123.56304899999998,48.778327999999988],[-123.56471299999993,48.749718000000087],[-123.50945300000001,48.587493999999992],[-123.47666899999996,48.631660000000124],[-123.47083999999995,48.673324999999977],[-123.46916199999993,48.67943600000001],[-123.46444700000001,48.683327000000077],[-123.45973200000003,48.685822000000144],[-123.45140100000003,48.686652999999978],[-123.44193999999999,48.686652999999978],[-123.41639699999996,48.684433000000126],[-123.40110800000002,48.681381000000044],[-123.39639299999999,48.677773000000116],[-123.34973099999996,48.547775000000058],[-123.34834299999994,48.535828000000095],[-123.29527300000001,48.484718000000044],[-123.29167200000001,48.480820000000108],[-123.27861000000001,48.456100000000049],[-123.27610800000002,48.451103000000103],[-123.27694700000001,48.445540999999992],[-123.28694200000001,48.418602000000021],[-123.28971899999999,48.413321999999937],[-123.29444899999993,48.409714000000065],[-123.30082699999997,48.406654000000003],[-123.32055699999989,48.399437000000034],[-123.33640299999996,48.396942000000024],[-123.36028299999987,48.397217000000069],[-123.41665599999999,48.423882000000106],[-123.42138699999992,48.427490000000034],[-123.425003,48.431938000000002],[-123.45973200000003,48.411934000000031],[-123.51334400000002,48.374709999999993],[-123.53694200000001,48.338326000000109],[-123.54250300000001,48.312492000000077],[-123.54611199999999,48.307770000000005],[-123.55166600000001,48.304710000000114],[-123.55915800000002,48.303047000000049],[-123.58332799999994,48.301102000000014],[-123.598343,48.311661000000072],[-123.71444699999995,48.348045000000127],[-123.76251199999996,48.361664000000019],[-123.77166699999998,48.361664000000019],[-123.77999899999998,48.360550000000046],[-123.79499799999996,48.357498000000135],[-123.80888400000003,48.353324999999984],[-123.817497,48.352493000000095],[-123.823624,48.352776000000063],[-123.91610699999995,48.364159000000029],[-123.92415599999998,48.366104000000064],[-123.97609699999998,48.381934999999999],[-124.26363399999997,48.468880000000013],[-124.423607,48.516937000000041],[-124.609444,48.560547000000042],[-124.6885989999999,48.578330999999991],[-124.72083999999995,48.586655000000007],[-124.75917099999998,48.6055530000001],[-124.77111799999994,48.611663999999962],[-124.79499800000002,48.629989999999964],[-124.81777999999997,48.648880000000133],[-124.82277699999997,48.652489000000116],[-124.9225009999999,48.679993000000138],[-125.02887699999997,48.708885000000009],[-125.0625,48.714996000000099],[-125.09500100000002,48.721930999999984],[-125.10221899999993,48.724433999999917],[-125.11389199999996,48.731102000000078],[-125.18443299999996,48.796104000000128],[-125.18499800000001,48.800827000000083],[-125.01722699999999,48.920547000000113],[-124.90862300000003,48.969154000000003],[-124.90306099999998,48.97137500000008],[-124.84750399999996,49.011664999999994],[-124.84277299999985,49.015549000000021],[-124.83556399999998,49.02416199999999],[-124.78083800000002,49.131377999999984],[-124.77944899999994,49.144439999999975],[-124.78083800000002,49.150542999999914],[-124.79695099999998,49.215828000000101],[-124.79972799999996,49.22693600000008],[-124.80499299999997,49.236938000000066],[-124.80776999999995,49.240547000000049],[-124.81555199999997,49.238045],[-124.818893,49.234718000000044],[-124.82444800000002,49.224158999999986],[-124.82501199999996,49.217209000000139],[-124.82333399999993,49.205551000000128],[-124.81723,49.18332700000002],[-124.81610099999995,49.164711000000011],[-124.81806899999998,49.146103000000096],[-124.82611099999997,49.122489999999971],[-124.83139,49.112495000000081],[-124.87832599999996,49.025268999999923],[-124.88194299999998,49.020546000000138],[-124.89472999999998,49.008888000000127],[-124.90055799999993,49.00499700000006],[-124.906113,49.001938000000052],[-124.93694299999999,48.988045000000056],[-124.94999699999994,48.983330000000024],[-124.96278399999994,48.981102000000021],[-125.06916799999999,48.984436000000017],[-125.126938,48.991104000000007],[-125.19888300000002,48.96276899999998],[-125.21000699999996,48.955826000000002],[-125.21665999999988,48.953323000000012],[-125.22416699999991,48.951660000000118],[-125.23137699999995,48.951103000000046],[-125.24194299999988,48.951660000000118],[-125.318893,48.96443899999997],[-125.32721699999996,48.966102999999976],[-125.45722999999992,48.918052999999986],[-125.46472199999988,48.916382000000112],[-125.48361199999999,48.915825000000041],[-125.502228,48.917770000000019],[-125.50723299999999,48.920273000000009],[-125.75110599999994,49.055267000000072],[-125.76806599999998,49.098602000000028],[-125.73805199999998,49.105552999999986],[-125.69304699999992,49.12860100000006],[-125.64167800000001,49.16304800000006],[-125.63722200000001,49.166939000000127],[-125.60888699999998,49.198043999999982],[-125.60582699999992,49.210274000000084],[-125.60749800000002,49.215828000000101],[-125.611107,49.220267999999919],[-125.61638599999998,49.219711000000018],[-125.66443599999991,49.189987000000031],[-125.72083999999995,49.157767999999976],[-125.74694799999997,49.148604999999975],[-125.75334199999998,49.147491000000002],[-125.75611899999996,49.151657000000114],[-125.779449,49.241661000000022],[-125.79666099999992,49.310272000000055],[-125.86609599999991,49.274436999999978],[-125.952789,49.230270000000075],[-125.96501199999989,49.22526599999992],[-125.97028399999999,49.224709000000018],[-125.97444199999995,49.224991000000102],[-125.98137700000001,49.227211000000125],[-125.98750299999989,49.230270000000075],[-126.020554,49.263054000000125],[-126.02333099999993,49.268051000000071],[-126.02223200000003,49.280823000000055],[-126.01862299999993,49.285553000000107],[-126.01306199999999,49.288887000000102],[-126.00666799999993,49.290549999999996],[-125.98029300000002,49.292496000000085],[-125.97361799999999,49.294997999999964],[-125.96916199999998,49.297493000000031],[-125.950287,49.311935000000005],[-125.94554099999999,49.316666000000112],[-125.89750699999996,49.41027100000008],[-125.89584399999995,49.416381999999999],[-125.89695699999993,49.428047000000049],[-125.89972699999998,49.433601000000067],[-125.90471599999995,49.435822000000144],[-125.90915699999988,49.431938000000116],[-125.94722000000002,49.395546000000138],[-125.96250900000001,49.377487000000031],[-125.96501199999989,49.373604000000114],[-125.96528599999999,49.367493000000024],[-125.962219,49.3555530000001],[-125.962784,49.350273000000072],[-125.96610999999996,49.345543000000021],[-125.99527,49.324440000000095],[-126.00195300000001,49.321938000000046],[-126.00945299999989,49.321663000000001],[-126.03916900000002,49.330275999999969],[-126.04638699999987,49.333328000000108],[-126.06111099999998,49.344154000000003],[-126.06500199999999,49.348328000000038],[-126.07556199999999,49.386383000000137],[-126.07389799999999,49.392494000000056],[-126.120003,49.423049999999989],[-126.22556299999991,49.41027100000008],[-126.26390099999998,49.389435000000049],[-126.36527999999998,49.401657000000057],[-126.45916699999998,49.401932000000045],[-126.46167000000003,49.382767000000115],[-126.46611000000001,49.380272000000048],[-126.52667200000002,49.371933000000013],[-126.54222099999993,49.374435000000119],[-126.54723399999995,49.378044000000102],[-126.57778899999988,49.407767999999919],[-126.579453,49.413322000000107],[-126.57917799999996,49.419440999999949],[-126.56973299999999,49.576385000000073],[-126.56610099999995,49.584434999999985],[-126.47028399999999,49.635551000000021],[-126.46167000000003,49.636658000000125],[-126.40416699999997,49.637772000000098],[-126.38417099999992,49.63638300000008],[-126.36749299999997,49.633049000000085],[-126.36028299999998,49.630820999999969],[-126.34137699999997,49.628875999999991],[-126.28472899999997,49.634438000000102],[-126.22389199999998,49.640549000000021],[-126.13417099999998,49.649994000000049],[-126.09445199999988,49.655548000000067],[-126.08693699999998,49.657211000000018],[-126.08750899999995,49.662209000000018],[-126.09028599999999,49.666382000000112],[-126.09416199999993,49.671104000000014],[-126.10305799999998,49.679161000000022],[-126.11028299999992,49.681380999999988],[-126.11972000000003,49.681107000000054],[-126.20944199999991,49.673881999999992],[-126.23444399999994,49.669159000000036],[-126.24638400000003,49.664711000000068],[-126.283073,49.654990999999995],[-126.29833999999994,49.652214000000072],[-126.34084300000001,49.648605000000089],[-126.43110699999994,49.662491000000045],[-126.43831599999993,49.664153999999996],[-126.58500699999996,49.701103000000046],[-126.59028599999994,49.704437000000041],[-126.63027999999997,49.794998000000078],[-126.67971799999998,49.878876000000105],[-126.80444299999988,49.909156999999993],[-126.83917200000002,49.884720000000129],[-126.84555099999989,49.8822100000001],[-126.85221899999993,49.87971500000009],[-126.87609899999995,49.873322000000087],[-126.93943799999994,49.862770000000125],[-126.99416399999996,49.855270000000019],[-127.12111699999997,49.85228699999999],[-127.13249200000001,49.85694100000012],[-127.17749000000003,49.88888500000013],[-127.18554699999999,49.897491000000059],[-127.22444199999995,49.940269000000114],[-127.24137899999999,49.961937000000034],[-127.23889199999996,49.967208999999968],[-127.234444,49.97137500000008],[-127.17999299999991,50.021378000000027],[-127.18277,50.03166200000004],[-127.18360899999999,50.051102000000014],[-127.17666599999995,50.061104],[-127.172234,50.064995000000067],[-127.13027999999997,50.084717000000126],[-127.15833999999995,50.096382000000006],[-127.27055399999995,50.0991590000001],[-127.27500899999995,50.059990000000028],[-127.27749599999993,50.055267000000015],[-127.28388999999999,50.052216000000044],[-127.33000199999998,50.033882000000062],[-127.34500100000002,50.030273000000079],[-127.38054699999998,50.026100000000099],[-127.38999899999993,50.028603000000089],[-127.42331699999994,50.042221000000097],[-127.45195000000001,50.069716999999969],[-127.46916199999993,50.088042999999971],[-127.47193900000002,50.092765999999983],[-127.54804999999993,50.130272000000105],[-127.63276699999994,50.129990000000021],[-127.78028899999993,50.084160000000054],[-127.781387,50.084160000000054],[-127.78362299999998,50.084160000000054],[-127.890556,50.106941000000063],[-127.89584400000001,50.108886999999925],[-127.90083299999998,50.112495000000024],[-127.90695199999999,50.12082700000002],[-127.90666199999998,50.127769000000114],[-127.90334300000001,50.132492000000127],[-127.89222699999988,50.139160000000061],[-127.87917299999998,50.144440000000145],[-127.86805700000002,50.151099999999985],[-127.83721899999995,50.172493000000088],[-127.82833900000003,50.180550000000096],[-127.78888699999999,50.222214000000008],[-127.79915599999993,50.317772000000105],[-127.80444299999994,50.321380999999917],[-127.86389200000002,50.336937000000091],[-127.87138399999998,50.33776899999998],[-127.88110399999999,50.337212000000079],[-127.895554,50.326385000000073],[-127.90778399999999,50.319717000000082],[-127.92166099999997,50.316666000000055],[-127.93138099999993,50.31610100000006],[-127.94833399999993,50.321937999999989],[-127.95249899999993,50.324715000000083],[-127.97860700000001,50.342491000000052],[-127.97944599999994,50.347214000000065],[-127.92610199999996,50.459991000000059],[-127.92388900000003,50.462769000000037],[-127.91722099999993,50.464156999999943],[-127.75666799999993,50.486381999999992],[-127.708054,50.491661000000136],[-127.70028699999995,50.492218000000037],[-127.58416699999998,50.486938000000009],[-127.576683,50.484717999999987],[-127.57140400000003,50.481934000000024],[-127.56331599999999,50.4741590000001],[-127.53278399999999,50.439986999999974],[-127.50750700000003,50.409157000000107],[-127.49527,50.395827999999995],[-127.47444200000001,50.381660000000124],[-127.46193699999998,50.37582400000008],[-127.454453,50.373604000000057],[-127.44695300000001,50.372765000000129],[-127.446663,50.379714999999976],[-127.45249899999988,50.388885000000016],[-127.48665599999993,50.437492000000134],[-127.50583599999999,50.458602999999982],[-127.52027899999996,50.469711000000132],[-127.53083800000002,50.476936000000023],[-127.54750100000001,50.486938000000009],[-127.56388899999996,50.502220000000023],[-127.57000699999998,50.512214999999912],[-127.56749699999995,50.516105999999979],[-127.55027799999999,50.538329999999917],[-127.54472399999997,50.541664000000083],[-127.50361599999997,50.562210000000107],[-127.49694799999992,50.565269000000058],[-127.49027999999993,50.568054000000132],[-127.47501399999999,50.571663000000115],[-127.44360399999999,50.571663000000115],[-127.41972399999992,50.573883000000137],[-127.41416900000002,50.575829000000056],[-127.41166699999997,50.581383000000017],[-127.41139199999992,50.587494000000106],[-127.41944899999999,50.596657000000107],[-127.58168000000001,50.593880000000013],[-127.69138299999997,50.606659000000093],[-127.87332200000003,50.623877999999934],[-127.87666299999995,50.621658000000139],[-127.87361099999993,50.616936000000067],[-127.854446,50.608330000000137],[-127.80055199999998,50.587494000000106],[-127.78666699999997,50.582214000000022],[-127.76834099999996,50.579994000000056],[-127.75110599999999,50.581108000000029],[-127.72501399999993,50.584434999999928],[-127.708618,50.584991000000116],[-127.66251399999999,50.581383000000017],[-127.63445300000001,50.578049000000021],[-127.61028299999998,50.565825999999959],[-127.595551,50.55582400000003],[-127.59166699999997,50.551659000000029],[-127.58972199999999,50.546104000000128],[-127.595551,50.536659000000043],[-127.60109699999998,50.533333000000027],[-127.60888699999987,50.53138000000007],[-128.05142199999995,50.446693000000039],[-128.13363599999997,50.474709000000132],[-128.224152,50.531105000000082],[-128.319458,50.608604000000071],[-128.37527499999993,50.678604000000064],[-128.40695199999999,50.738883999999985],[-128.41473399999995,50.762771999999984],[-128.41665599999999,50.76915699999995],[-128.41305499999993,50.773880000000133],[-128.40863000000002,50.77777100000003],[-128.35583499999996,50.799721000000034],[-128.349152,50.801658999999972],[-128.10693400000002,50.860550000000103],[-128.05306999999999,50.87193300000007],[-127.91832699999998,50.872214999999983],[-127.90972899999991,50.871375999999998],[-127.882767,50.865546999999992],[-127.83332799999999,50.854163999999969],[-127.67749000000003,50.817497000000003],[-127.51471700000002,50.774437000000034],[-127.50723299999993,50.772217000000012],[-127.49582699999996,50.765831000000105],[-127.48750299999995,50.757217000000082],[-127.45916699999992,50.718322999999998],[-127.354446,50.676102000000014],[-127.22693599999991,50.636108000000036]],[[-127.65471599999995,50.837769000000094],[-127.66139199999998,50.834991000000059],[-127.67027300000001,50.835266000000104],[-127.75306699999999,50.852776000000063],[-127.83332799999999,50.879715000000033],[-127.83860799999997,50.881660000000068],[-127.83306899999997,50.884995000000117],[-127.73500100000001,50.909987999999998],[-127.72638699999993,50.908600000000092],[-127.71665999999999,50.90554800000001],[-127.71028099999995,50.901932000000102],[-127.69138299999997,50.887214999999969],[-127.67083699999995,50.86693600000001],[-127.65833999999995,50.854163999999969],[-127.65527299999997,50.849433999999974],[-127.65334299999995,50.843880000000127],[-127.65471599999995,50.837769000000094]],[[-55.555557000000022,50.886383000000023],[-55.563888999999961,50.884995000000117],[-55.571670999999924,50.885826000000122],[-55.581116000000009,50.888046000000145],[-55.604720999999984,50.898048000000074],[-55.615554999999972,50.906097000000102],[-55.619720000000029,50.910271000000137],[-55.636115999999959,50.950829000000056],[-55.635276999999917,50.961380000000133],[-55.629439999999931,50.965546000000018],[-55.565552000000025,50.983046999999999],[-55.558334000000002,50.984436000000017],[-55.550551999999925,50.985268000000076],[-55.54222900000002,50.984993000000088],[-55.535277999999948,50.981377000000009],[-55.531386999999995,50.977211000000125],[-55.529723999999987,50.968323000000112],[-55.549995000000024,50.890830999999991],[-55.555557000000022,50.886383000000023]],[[-55.993889000000024,51.200272000000098],[-55.999999999999943,51.196655000000135],[-56.00111400000003,51.201660000000004],[-55.998055000000022,51.207496999999989],[-55.992774999999995,51.212769000000094],[-55.981383999999935,51.22165700000005],[-55.975554999999986,51.225822000000051],[-55.967772999999966,51.226653999999996],[-55.968329999999867,51.221375000000023],[-55.970550999999944,51.218323000000055],[-55.982498000000021,51.208885000000066],[-55.993889000000024,51.200272000000098]],[[-58.413329999999917,51.238884000000098],[-58.462219000000005,51.216103000000089],[-58.563613999999973,51.228325000000041],[-58.565001999999993,51.23333000000008],[-58.561942999999928,51.239159000000086],[-58.555831999999953,51.242767000000015],[-58.513335999999924,51.264999000000103],[-58.506392999999946,51.268326000000059],[-58.419448999999986,51.274712000000136],[-58.412773000000016,51.267212000000029],[-58.409163999999919,51.256943000000035],[-58.413329999999917,51.238884000000098]],[[-53.756366999999955,48.50326200000012],[-53.997498000000007,48.425552000000039],[-54.011116000000015,48.421660999999972],[-54.025001999999915,48.418602000000021],[-54.048889000000031,48.420546999999999],[-54.057220000000029,48.421936000000017],[-54.072776999999917,48.428604000000007],[-54.081115999999952,48.429992999999968],[-54.094443999999953,48.425827000000083],[-54.100554999999929,48.422493000000088],[-54.147223999999994,48.391380000000083],[-54.138054000000011,48.359161000000029],[-54.134726999999998,48.354438999999957],[-54.12749500000001,48.353324999999984],[-54.118606999999997,48.364998000000014],[-54.088607999999965,48.395545999999968],[-54.075561999999934,48.401932000000102],[-54.069449999999961,48.40387700000008],[-54.054442999999935,48.404160000000047],[-54.045554999999979,48.401932000000102],[-54.029167000000029,48.399437000000034],[-54.021111000000019,48.399162000000047],[-53.998885999999914,48.400826000000052],[-53.99222599999996,48.402489000000003],[-53.97972099999987,48.408042999999964],[-53.913054999999929,48.444153000000085],[-53.756366999999955,48.50326200000012],[-53.674445999999932,48.534164000000089],[-53.647223999999994,48.541107000000068],[-53.631942999999978,48.541382000000056],[-53.623054999999965,48.53916200000009],[-53.586387999999999,48.525269000000037],[-53.574722000000008,48.507216999999969],[-53.558051999999975,48.474709000000018],[-53.588051000000007,48.428047000000106],[-53.562217999999973,48.439155999999969],[-53.533889999999985,48.451935000000049],[-53.48860899999994,48.507216999999969],[-53.461945000000014,48.555266999999958],[-53.46527900000001,48.568603999999993],[-53.465835999999967,48.57416500000005],[-53.465003999999965,48.579436999999984],[-53.437217999999973,48.619987000000094],[-53.424445999999989,48.625549000000035],[-53.345832999999914,48.615828999999962],[-53.33805099999995,48.612494999999967],[-53.313056999999958,48.595267999999976],[-53.305832000000009,48.586655000000007],[-53.303329000000019,48.581940000000145],[-53.226386999999932,48.555549999999926],[-53.216392999999925,48.566939999999988],[-53.153884999999946,48.628601000000003],[-53.079726999999991,48.6988750000001],[-53.072776999999917,48.700272000000041],[-53.067779999999914,48.696380999999974],[-53.02305599999994,48.660820000000001],[-53.018889999999942,48.656380000000013],[-52.978049999999996,48.604439000000127],[-52.976386999999988,48.599159000000043],[-52.976944000000003,48.59388000000007],[-52.987220999999977,48.548050000000046],[-53.053885999999977,48.442764000000068],[-53.075561999999991,48.422493000000088],[-53.097495999999978,48.405266000000097],[-53.1875,48.350829999999974],[-53.194159999999954,48.348602000000028],[-53.201941999999974,48.347488000000055],[-53.209723999999937,48.347771000000023],[-53.218055999999933,48.3491590000001],[-53.24888599999997,48.362770000000069],[-53.261391000000003,48.37082700000002],[-53.266395999999986,48.37499200000002],[-53.345001000000025,48.360275000000058],[-53.388892999999882,48.303879000000109],[-53.615279999999984,48.178046999999935],[-53.621383999999921,48.174712999999997],[-53.634170999999924,48.169991000000095],[-53.662216000000001,48.163321999999994],[-53.668609999999944,48.162490999999989],[-53.676948999999979,48.163879000000065],[-53.694716999999912,48.169158999999979],[-53.71055599999994,48.17582700000014],[-53.892501999999979,48.226936000000137],[-53.901389999999935,48.229156000000103],[-53.934165999999948,48.233330000000137],[-53.940551999999968,48.230819999999937],[-53.945273999999984,48.178879000000052],[-53.944159999999897,48.163879000000065],[-53.917777999999998,48.088043000000027],[-53.912498000000028,48.084160000000054],[-53.904167000000029,48.081940000000088],[-53.823616000000015,48.074439999999981],[-53.793335000000013,48.073608000000092],[-53.77027899999996,48.073326000000009],[-53.733611999999994,48.076103000000103],[-53.718604999999968,48.078049000000021],[-53.696944999999971,48.079162999999994],[-53.689163000000008,48.078880000000026],[-53.692885999999874,48.067993000000001],[-53.688389000000029,48.065989999999999],[-53.685219000000018,48.063660000000141],[-53.683887000000027,48.060822000000144],[-53.684222999999918,48.057822999999985],[-53.687888999999927,48.054825000000108],[-53.691055000000006,48.052658000000065],[-53.698883000000023,48.049328000000003],[-53.736945999999989,48.032767999999976],[-53.763335999999981,48.026382000000012],[-53.799445999999989,48.02165999999994],[-53.836661999999933,48.022217000000012],[-53.852225999999973,48.023048000000074],[-53.876389000000017,48.025826000000052],[-53.893889999999942,48.029991000000052],[-53.90166499999998,48.033607000000075],[-53.909438999999963,48.033882000000119],[-53.916663999999912,48.033332999999971],[-53.923614999999984,48.031662000000097],[-53.924170999999944,48.026657000000057],[-53.919167000000016,48.022490999999945],[-53.911384999999939,48.019157000000007],[-53.893058999999937,48.014442000000145],[-53.794448999999986,47.996384000000091],[-53.779166999999973,47.996658000000025],[-53.695388999999921,48.018218999999988],[-53.69138700000002,48.019215000000145],[-53.668723999999997,48.029880999999989],[-53.650218999999993,48.037884000000133],[-53.607779999999991,48.051102000000071],[-53.605835000000013,48.046387000000038],[-53.619164000000012,47.998878000000047],[-53.622498000000007,47.993050000000096],[-53.723610000000008,47.843880000000013],[-53.737777999999992,47.826660000000061],[-53.787506000000008,47.773048000000074],[-53.793335000000013,47.768599999999935],[-53.801391999999964,47.769989000000123],[-53.807502999999997,47.773604999999975],[-53.825561999999991,47.794998000000078],[-53.852500999999961,47.785271000000137],[-53.850554999999986,47.760551000000135],[-53.837501999999915,47.699432000000058],[-53.760283999999956,47.609993000000145],[-53.631110999999976,47.54332700000009],[-53.550551999999982,47.529159999999933],[-53.545279999999991,47.534439000000134],[-53.542502999999954,47.550270000000069],[-53.541114999999991,47.585266000000047],[-53.497779999999977,47.734717999999987],[-53.495834000000002,47.740273000000059],[-53.461113000000012,47.806655999999975],[-53.434998000000007,47.83776899999998],[-53.30610699999994,47.984161000000029],[-53.290840000000003,47.999435000000119],[-53.274445000000014,48.013329000000056],[-53.170554999999979,48.05360399999995],[-53.110001000000011,48.03943600000008],[-53.101943999999946,48.038048000000003],[-53.095001000000025,48.03943600000008],[-53.053329000000019,48.049721000000034],[-53.041945999999996,48.055824000000143],[-52.996947999999975,48.086380000000077],[-52.974716000000001,48.116385999999977],[-52.959723999999994,48.143051000000014],[-52.956389999999999,48.148605000000032],[-52.926948999999979,48.169991000000095],[-52.919998000000021,48.171379000000002],[-52.902221999999995,48.16304800000006],[-52.886115999999959,48.151100000000042],[-52.881942999999922,48.147491000000059],[-52.83555599999994,48.106383999999991],[-52.831389999999942,48.101661999999919],[-52.832779000000016,48.096939000000134],[-52.838889999999935,48.093605000000139],[-52.871940999999993,48.082214000000022],[-52.880279999999914,48.083327999999995],[-52.898055999999997,48.090546000000018],[-52.904167000000029,48.089714000000072],[-52.911384999999996,48.088043000000027],[-52.917503000000011,48.084716999999955],[-52.928336999999999,48.075553999999954],[-53.058051999999975,47.922493000000031],[-53.05999799999995,47.916939000000013],[-53.059440999999993,47.886658000000125],[-53.075835999999981,47.850830000000087],[-53.158607000000018,47.683052000000089],[-53.178336999999999,47.651382000000012],[-53.183608999999933,47.646385000000123],[-53.201667999999984,47.636383000000137],[-53.221106999999961,47.628601000000003],[-53.240836999999942,47.622489999999914],[-53.259726999999998,47.615829000000019],[-53.265006999999969,47.611664000000019],[-53.267220000000009,47.606102000000078],[-53.261672999999973,47.546386999999982],[-53.175560000000019,47.431381000000101],[-53.128333999999995,47.411102000000142],[-53.121940999999993,47.413321999999994],[-53.111945999999989,47.423607000000118],[-53.083060999999987,47.458327999999995],[-53.065833999999938,47.469986000000063],[-53.013061999999934,47.501389000000074],[-52.995002999999997,47.51138300000008],[-52.951667999999927,47.530823000000055],[-52.919167000000016,47.541663999999969],[-52.907218999999998,47.54833200000013],[-52.896949999999947,47.55860100000001],[-52.849167000000023,47.621101000000124],[-52.842498999999918,47.632767000000115],[-52.840552999999943,47.638329000000056],[-52.837501999999915,47.65415999999999],[-52.838889999999935,47.663879000000009],[-52.841110000000015,47.668602000000021],[-52.841667000000029,47.673324999999977],[-52.840552999999943,47.683876000000055],[-52.798889000000031,47.784164000000033],[-52.791388999999981,47.795547000000056],[-52.78556100000003,47.79972100000009],[-52.779442000000017,47.803047000000106],[-52.770554000000004,47.79972100000009],[-52.704169999999976,47.753882999999973],[-52.700554000000011,47.749435000000005],[-52.657776000000013,47.657493999999986],[-52.614448999999979,47.516662999999937],[-52.620276999999987,47.500275000000101],[-52.625832000000003,47.489158999999972],[-52.653327999999988,47.437767000000008],[-52.718055999999933,47.364998000000014],[-52.787506000000008,47.308043999999938],[-52.818610999999976,47.224159000000043],[-52.849723999999981,47.1616590000001],[-52.845276000000013,47.142493999999942],[-52.843613000000005,47.063880999999981],[-52.844161999999983,47.058601000000067],[-52.852782999999988,47.022491000000002],[-52.884170999999981,46.9741590000001],[-52.909995999999978,46.911658999999986],[-52.92972599999996,46.851662000000033],[-52.932776999999987,46.825554000000068],[-52.934998000000007,46.804993000000024],[-52.938332000000003,46.78916200000009],[-53.090836000000024,46.643326000000002],[-53.102501000000018,46.636658000000011],[-53.161110000000008,46.619986999999981],[-53.169166999999959,46.619713000000047],[-53.192497000000003,46.62332200000003],[-53.207221999999888,46.630272000000105],[-53.213332999999977,46.633881000000088],[-53.315552000000025,46.694709999999986],[-53.354171999999949,46.736938000000009],[-53.361945999999932,46.737495000000081],[-53.384170999999981,46.721375000000023],[-53.410552999999936,46.700828999999999],[-53.426391999999964,46.687210000000107],[-53.451392999999996,46.66137700000013],[-53.463614999999947,46.654160000000047],[-53.521111000000019,46.62082700000002],[-53.532776000000013,46.614159000000029],[-53.561667999999941,46.612770000000069],[-53.569449999999961,46.614159000000029],[-53.577224999999999,46.617493000000024],[-53.607779999999991,46.636107999999979],[-53.613891999999964,46.640274000000034],[-53.617774999999995,46.644157000000007],[-53.635001999999929,46.680823999999973],[-53.643058999999994,46.704437000000098],[-53.64416499999993,46.709160000000111],[-53.648055999999997,46.796661000000029],[-53.647781000000009,46.801932999999963],[-53.645279000000016,46.81249200000002],[-53.639724999999999,46.829163000000051],[-53.636391000000003,46.834717000000069],[-53.594718999999998,46.9447100000001],[-53.64166999999992,46.983879000000002],[-53.633614000000023,47.001105999999993],[-53.577781999999956,47.085265999999933],[-53.55083499999995,47.106659000000036],[-53.539444000000003,47.114158999999972],[-53.591385000000002,47.156096999999988],[-53.646392999999989,47.105270000000075],[-53.703612999999962,47.053047000000106],[-53.823059000000001,46.956657000000064],[-53.894164999999987,46.899994000000106],[-53.945830999999941,46.858887000000038],[-54.053328999999962,46.794998000000135],[-54.097220999999934,46.799438000000123],[-54.17888599999992,46.81610100000006],[-54.187774999999988,46.819160000000011],[-54.18999500000001,46.823607999999979],[-54.190833999999995,46.828605999999979],[-54.196387999999956,46.862494999999967],[-54.196663000000001,46.883330999999998],[-54.193329000000006,46.893607999999972],[-54.160827999999981,46.981934000000024],[-54.131942999999978,47.012496999999996],[-54.11500499999994,47.039719000000105],[-54.092498999999975,47.079437000000098],[-54.066665999999998,47.131104000000107],[-53.993889000000024,47.265274000000034],[-53.964721999999995,47.299721000000034],[-53.928611999999987,47.302773000000116],[-53.921943999999996,47.304161000000022],[-53.879997000000003,47.348045000000127],[-53.875557000000015,47.354163999999969],[-53.867500000000007,47.402771000000087],[-53.879439999999931,47.43082400000003],[-53.900275999999963,47.486107000000061],[-53.891669999999976,47.524711999999965],[-53.885558999999944,47.576941999999974],[-53.894721999999945,47.6055530000001],[-53.896950000000004,47.609993000000145],[-53.983886999999925,47.75777400000004],[-54.003333999999995,47.778877000000136],[-54.033332999999914,47.796661000000029],[-54.195273999999984,47.857498000000021],[-54.194999999999993,47.843048000000124],[-54.197219999999902,47.832214000000079],[-54.212776000000019,47.777771000000087],[-54.219161999999926,47.766106000000036],[-54.223884999999939,47.759995000000117],[-54.259170999999981,47.715271000000143],[-54.337776000000019,47.621658000000025],[-54.435271999999998,47.505554000000075],[-54.468605000000025,47.441658000000075],[-54.477492999999981,47.404991000000052],[-54.472495999999978,47.401099999999985],[-54.477492999999981,47.395828000000051],[-54.482772999999952,47.391663000000051],[-54.511116000000015,47.372765000000015],[-54.517219999999952,47.369438000000059],[-54.601394999999968,47.345268000000033],[-54.611388999999974,47.353049999999996],[-54.613060000000019,47.35833000000008],[-54.61333499999995,47.362770000000069],[-54.606948999999986,47.374434999999949],[-54.601944000000003,47.379715000000033],[-54.596663999999862,47.383880999999917],[-54.559998000000007,47.413879000000065],[-54.529166999999973,47.442214999999976],[-54.489998000000014,47.486382000000049],[-54.417220999999984,47.583603000000096],[-54.410827999999867,47.594994000000042],[-54.413329999999917,47.599715999999944],[-54.418334999999956,47.603607000000011],[-54.430557000000022,47.597771000000137],[-54.440833999999938,47.586937000000091],[-54.508614000000023,47.513328999999999],[-54.53194400000001,47.479987999999992],[-54.539444000000003,47.468048000000124],[-54.563613999999973,47.439987000000031],[-54.578887999999893,47.423882000000106],[-54.604720999999984,47.401932000000102],[-54.621383999999978,47.389992000000007],[-54.700279000000023,47.357773000000009],[-54.719993999999929,47.352218999999991],[-54.727218999999991,47.351387000000045],[-54.818610999999862,47.363609000000054],[-54.819450000000018,47.368599000000074],[-54.803054999999972,47.380546999999979],[-54.793616999999983,47.391936999999984],[-54.786667000000023,47.413879000000065],[-54.787506000000008,47.418884000000105],[-54.796111999999994,47.420830000000024],[-54.856392000000028,47.390549000000078],[-54.980552999999929,47.285552999999936],[-55.039169000000015,47.225821999999994],[-55.043892000000028,47.220825000000048],[-55.045554999999979,47.215271000000087],[-55.043335000000013,47.210548000000074],[-55.05361199999993,47.150826000000109],[-55.065833999999995,47.093323000000112],[-55.069450000000018,47.082214000000022],[-55.100280999999995,47.05471],[-55.149444999999957,47.012215000000083],[-55.154716000000008,47.008049000000028],[-55.193329000000006,46.984993000000145],[-55.225829999999974,46.934433000000126],[-55.230277999999942,46.928329000000076],[-55.236945999999932,46.923607000000004],[-55.246947999999975,46.916939000000013],[-55.258613999999966,46.91027100000008],[-55.358337000000006,46.874161000000129],[-55.384170999999924,46.865829000000133],[-55.399993999999936,46.865829000000133],[-55.456664999999987,46.874710000000107],[-55.463615000000004,46.877486999999974],[-55.468604999999968,46.881660000000124],[-55.471938999999963,46.886383000000137],[-55.626944999999921,46.868881000000101],[-55.634170999999981,46.866661000000079],[-55.689719999999966,46.858329999999967],[-55.803328999999962,46.860549999999989],[-55.845832999999971,46.86971299999999],[-55.915000999999961,46.88749700000011],[-55.923614999999927,46.889717000000076],[-55.931389000000024,46.892769000000044],[-55.946663000000001,46.899436999999978],[-55.966110000000015,46.909988000000112],[-55.98082699999992,46.932213000000104],[-55.982773000000009,46.936652999999978],[-55.984168999999952,46.941658000000018],[-55.983054999999979,46.952492000000063],[-55.980552999999986,46.957771000000037],[-55.96665999999999,46.981377000000123],[-55.952498999999989,46.996383999999921],[-55.886948000000018,47.056099000000017],[-55.87110899999999,47.069160000000124],[-55.865554999999972,47.072768999999937],[-55.775276000000019,47.10193600000008],[-55.768607999999972,47.103325000000041],[-55.745551999999918,47.10443900000007],[-55.738892000000021,47.10443900000007],[-55.723609999999951,47.104164000000026],[-55.715553,47.103050000000053],[-55.698050999999964,47.098045000000013],[-55.68250299999994,47.091377000000023],[-55.674445999999989,47.090270999999973],[-55.586945000000014,47.110275000000115],[-55.573616000000015,47.11360900000011],[-55.493331999999896,47.133880999999974],[-55.487777999999992,47.137214999999969],[-55.329445000000021,47.242493000000024],[-55.298339999999939,47.267211999999972],[-55.290557999999976,47.278328000000101],[-55.285278000000005,47.294998000000021],[-55.28583500000002,47.310272000000111],[-55.286948999999993,47.314995000000067],[-55.286117999999988,47.325554000000125],[-55.269721999999945,47.390830999999991],[-55.266662999999994,47.396659999999997],[-55.262221999999895,47.402771000000087],[-55.256949999999961,47.407211000000075],[-55.202224999999999,47.44609800000012],[-55.179169000000002,47.460548000000017],[-55.172501000000011,47.463882000000012],[-55.107779999999991,47.483604000000071],[-55.100554999999986,47.484160999999972],[-55.083611000000019,47.481101999999964],[-55.075835999999867,47.480820000000108],[-55.040282999999931,47.484993000000031],[-54.951392999999882,47.504997000000003],[-54.868057000000022,47.543883999999991],[-54.845832999999971,47.556938000000059],[-54.841666999999973,47.563324000000136],[-54.841385000000002,47.583603000000096],[-54.845551,47.633881000000088],[-54.949439999999925,47.599715999999944],[-54.956389999999999,47.59804500000007],[-54.970832999999971,47.596656999999993],[-55.019278999999926,47.621101000000124],[-55.028277999999887,47.620766000000117],[-55.033278999999936,47.621601000000112],[-55.036109999999894,47.623936000000015],[-55.037612999999908,47.626601999999991],[-55.037440999999887,47.62977200000006],[-55.03561000000002,47.633269999999982],[-55.029612999999927,47.639598999999976],[-55.013779,47.65310299999993],[-55.00777800000003,47.65943500000003],[-54.956389999999999,47.741379000000109],[-54.947494999999947,47.75360900000004],[-54.938048999999978,47.771103000000096],[-54.936110999999926,47.781661999999983],[-54.943054000000018,47.781105000000082],[-54.948607999999922,47.776657000000114],[-55.011391000000003,47.721374999999966],[-55.021942000000024,47.711661999999933],[-55.025276000000019,47.705268999999987],[-55.027221999999995,47.695267000000058],[-55.03055599999999,47.684158000000139],[-55.033614999999941,47.678329000000133],[-55.119114000000025,47.616936000000123],[-55.122443999999916,47.614269000000093],[-55.126281999999946,47.612774000000002],[-55.130774999999915,47.611938000000123],[-55.135777000000019,47.613605000000007],[-55.262778999999966,47.650543000000084],[-55.349167000000023,47.704437000000098],[-55.34833500000002,47.710274000000027],[-55.357506000000001,47.726097000000095],[-55.365004999999996,47.726379000000122],[-55.379722999999956,47.724991000000045],[-55.427497999999957,47.711661999999933],[-55.432502999999997,47.70638299999996],[-55.461944999999957,47.646103000000039],[-55.464721999999938,47.640274000000034],[-55.467498999999975,47.619155999999919],[-55.46665999999999,47.614159000000029],[-55.461387999999943,47.610275000000001],[-55.454444999999964,47.611107000000118],[-55.446663000000001,47.623046999999985],[-55.436110999999926,47.631659999999954],[-55.430000000000007,47.634163000000115],[-55.423057999999969,47.635826000000066],[-55.415276000000006,47.63249200000007],[-55.407776000000013,47.624161000000015],[-55.400276000000019,47.615547000000106],[-55.398337999999967,47.610275000000001],[-55.389724999999999,47.58638000000002],[-55.400276000000019,47.514717000000076],[-55.406661999999926,47.493050000000039],[-55.40972099999999,47.487213000000054],[-55.414161999999919,47.481101999999964],[-55.429726000000016,47.467209000000139],[-55.43638599999997,47.465546000000018],[-55.498610999999983,47.453880000000026],[-55.505835999999931,47.453322999999955],[-55.526108000000022,47.454436999999928],[-55.555274999999938,47.440269000000058],[-55.560555000000022,47.436104000000057],[-55.565001999999993,47.429993000000024],[-55.587776000000019,47.398604999999975],[-55.625,47.463608000000079],[-55.654167000000029,47.495270000000062],[-55.795279999999991,47.492767000000072],[-55.914443999999946,47.437767000000008],[-55.920279999999934,47.435265000000129],[-55.925560000000019,47.439156000000025],[-55.923889000000031,47.444709999999986],[-55.91972399999986,47.450829000000056],[-55.831673000000023,47.517212000000086],[-55.788895000000025,47.551102000000014],[-55.745834000000002,47.585266000000047],[-55.77305599999994,47.579720000000009],[-55.824172999999973,47.566382999999973],[-55.892226999999991,47.5366590000001],[-55.987777999999992,47.500549000000035],[-56.104172000000005,47.463608000000079],[-56.110557999999855,47.462494000000106],[-56.11860699999994,47.463608000000079],[-56.158889999999928,47.484718000000044],[-56.169167000000016,47.492493000000138],[-56.172500999999897,47.49721500000004],[-56.172500999999897,47.501663000000008],[-56.168059999999969,47.507216999999969],[-56.162498000000028,47.51138300000008],[-56.12027699999993,47.519157000000064],[-56.044448999999986,47.535271000000023],[-55.941939999999931,47.561661000000072],[-55.889998999999932,47.578330999999991],[-55.639998999999989,47.668053000000043],[-55.633330999999998,47.671104000000071],[-55.628333999999995,47.674713000000054],[-55.635001999999986,47.678329000000133],[-55.642501999999979,47.678604000000121],[-55.649993999999992,47.677773000000116],[-55.663886999999932,47.675552000000039],[-55.704169999999976,47.664992999999981],[-55.75,47.649437000000034],[-55.756110999999976,47.646942000000024],[-55.774718999999948,47.638329000000056],[-55.80471799999998,47.624435000000119],[-55.824447999999961,47.618599000000017],[-55.838889999999935,47.617210000000057],[-55.855835000000013,47.620270000000119],[-55.903327999999931,47.645270999999923],[-55.913611999999944,47.653046000000018],[-55.917503000000011,47.657493999999986],[-55.919448999999929,47.667213000000004],[-55.918609999999944,47.673049999999989],[-55.916388999999981,47.678329000000133],[-55.91194200000001,47.684432999999956],[-55.901389999999992,47.693047000000035],[-55.895554000000004,47.696655000000135],[-55.866393999999957,47.713882000000126],[-55.83277899999996,47.742493000000081],[-55.815001999999993,47.772491000000002],[-55.799445999999875,47.799164000000019],[-55.742226000000016,47.923325000000091],[-55.746947999999975,47.93249499999996],[-55.754447999999968,47.94110100000006],[-55.767219999999952,47.953323000000069],[-55.773613000000012,47.956940000000031],[-55.78055599999999,47.95526899999993],[-55.817504999999983,47.886939999999981],[-55.835273999999913,47.850830000000087],[-55.835555999999997,47.845543000000134],[-55.847220999999934,47.806938000000002],[-55.849998000000028,47.801102000000128],[-55.854445999999996,47.794716000000051],[-55.865279999999984,47.786110000000122],[-55.877219999999966,47.778602999999976],[-55.888892999999996,47.773048000000074],[-56.049727999999959,47.699432000000058],[-56.087501999999972,47.736938000000009],[-56.081116000000009,47.739715999999987],[-56.053611999999987,47.77388000000002],[-56.057502999999997,47.778327999999988],[-56.064163000000008,47.776657000000114],[-56.111671000000001,47.763610999999969],[-56.125,47.757216999999969],[-56.185271999999998,47.680274999999995],[-56.160278000000005,47.642220000000123],[-56.154998999999862,47.638329000000056],[-56.161384999999939,47.634163000000115],[-56.173332000000016,47.629714999999976],[-56.187499999999943,47.627213000000097],[-56.358336999999892,47.603324999999984],[-56.394722000000002,47.601105000000132],[-56.410277999999948,47.601387000000045],[-56.418892000000028,47.601936000000137],[-56.443053999999904,47.605827000000033],[-56.546950999999979,47.613883999999985],[-56.615554999999915,47.613327000000083],[-56.644164999999987,47.596100000000092],[-56.641113000000018,47.592216000000064],[-56.639998999999989,47.587212000000079],[-56.644164999999987,47.581108000000086],[-56.65055099999995,47.578330999999991],[-56.774719000000005,47.531937000000028],[-56.840836000000024,47.52137799999997],[-56.902221999999995,47.552490000000091],[-56.924445999999989,47.562209999999993],[-56.956107999999972,47.574996999999996],[-56.96527900000001,47.57777400000009],[-56.992500000000007,47.583878000000141],[-56.999725000000012,47.584717000000069],[-57.014724999999942,47.583878000000141],[-57.096663999999976,47.56610100000006],[-57.118332000000009,47.563881000000038],[-57.126105999999993,47.563881000000038],[-57.134445000000028,47.566382999999973],[-57.150276000000019,47.572769000000051],[-57.163329999999917,47.579720000000009],[-57.204720000000009,47.59304800000001],[-57.530829999999867,47.630821000000026],[-57.657776000000013,47.60305000000011],[-57.779441999999904,47.627487000000031],[-57.882499999999993,47.651382000000012],[-58.027495999999928,47.694153000000028],[-58.036391999999978,47.696098000000063],[-58.359443999999939,47.647217000000012],[-58.690552000000025,47.598877000000016],[-58.771110999999962,47.59137700000008],[-58.861945999999932,47.589157000000114],[-58.885001999999872,47.592766000000097],[-58.894164999999873,47.59388000000007],[-58.937499999999943,47.589989000000003],[-59.076667999999984,47.571663000000001],[-59.102130999999929,47.564251000000127],[-59.11361699999992,47.558327000000077],[-59.118889000000024,47.554710000000114],[-59.135559000000001,47.556380999999988],[-59.161941999999954,47.561661000000072],[-59.297782999999868,47.606658999999979],[-59.304442999999992,47.609993000000145],[-59.305831999999953,47.614998000000014],[-59.309440999999993,47.661102000000085],[-59.309440999999993,47.671379000000059],[-59.30499999999995,47.724991000000045],[-59.3024979999999,47.736107000000004],[-59.325561999999991,47.807213000000047],[-59.329726999999991,47.816383000000087],[-59.369164000000012,47.852775999999949],[-59.40193899999997,47.880271999999991],[-59.40694400000001,47.889717000000076],[-59.404715999999951,47.900269000000094],[-59.400832999999921,47.90665400000006],[-59.39166999999992,47.916664000000026],[-59.378051999999911,47.922493000000031],[-59.365554999999915,47.924995000000081],[-59.328612999999905,47.928879000000109],[-59.321945000000028,47.930549999999982],[-59.31639100000001,47.934158000000082],[-59.31138599999997,47.938881000000094],[-59.267775999999969,47.982208000000071],[-59.265006999999912,47.988045000000056],[-59.262778999999966,47.999435000000119],[-59.246947999999975,48.011940000000038],[-59.230277999999942,48.02276599999999],[-59.218605000000025,48.029160000000047],[-59.091384999999946,48.090271000000143],[-59.053885999999864,48.105552999999986],[-59.041114999999934,48.110275000000058],[-59.020554000000004,48.116385999999977],[-58.958054000000004,48.149993999999992],[-58.75,48.287498000000085],[-58.701392999999996,48.319716999999969],[-58.691108999999983,48.32888000000014],[-58.686385999999914,48.334160000000054],[-58.682502999999997,48.340546000000131],[-58.678336999999999,48.351936000000023],[-58.675835000000006,48.363051999999925],[-58.670279999999991,48.37499200000002],[-58.598884999999939,48.423325000000034],[-58.587775999999963,48.430550000000039],[-58.568892999999889,48.438599000000067],[-58.555831999999953,48.443047000000035],[-58.514724999999999,48.452773999999977],[-58.500556999999958,48.455551000000071],[-58.492774999999995,48.455551000000071],[-58.492774999999995,48.450272000000098],[-58.497779999999977,48.44582400000013],[-58.518889999999999,48.441375999999991],[-58.526108000000022,48.440544000000102],[-58.546394000000021,48.434990000000084],[-58.558891000000017,48.42971799999998],[-58.588889999999935,48.412765999999976],[-58.599998000000028,48.405822999999998],[-58.601112000000001,48.400826000000052],[-58.59194199999996,48.398879999999963],[-58.483611999999994,48.427773000000002],[-58.470832999999971,48.43221299999999],[-58.464721999999995,48.436377999999991],[-58.449439999999925,48.449158000000125],[-58.4183349999999,48.486655999999982],[-58.420279999999991,48.508049000000085],[-58.569449999999961,48.538605000000018],[-58.673614999999984,48.554710000000057],[-58.682502999999997,48.554993000000024],[-58.697219999999959,48.553046999999992],[-58.732215999999994,48.545830000000024],[-58.765556000000004,48.535828000000095],[-58.778052999999886,48.531937000000028],[-58.812499999999943,48.52388000000002],[-58.857506000000001,48.518599999999992],[-58.931389000000024,48.511939999999981],[-58.954720000000009,48.510825999999952],[-58.979163999999969,48.512497000000053],[-58.988335000000006,48.514442000000031],[-59.004722999999956,48.520271000000037],[-59.013335999999924,48.522217000000126],[-59.091667000000029,48.508331000000112],[-59.105559999999969,48.50471500000009],[-59.118889000000024,48.50110600000005],[-59.146392999999875,48.493049999999982],[-59.192771999999991,48.477767999999969],[-59.232497999999964,48.468597000000045],[-59.246947999999975,48.46665999999999],[-59.255279999999971,48.467490999999995],[-59.260558999999944,48.471931000000041],[-59.261115999999959,48.476653999999996],[-59.232773000000009,48.523048000000131],[-59.228881999999999,48.529160000000104],[-59.215003999999965,48.545547000000056],[-59.209998999999925,48.549995000000024],[-59.137504999999976,48.598876999999959],[-59.084166999999866,48.626380999999981],[-59.077782000000013,48.629158000000075],[-59.050277999999935,48.635551000000021],[-59.03055599999999,48.641937000000098],[-59.02416999999997,48.644714000000022],[-58.908889999999985,48.701934999999992],[-58.828888000000006,48.750832000000116],[-58.811667999999941,48.76166500000005],[-58.799727999999959,48.768050999999957],[-58.774719000000005,48.77887700000008],[-58.767775999999969,48.775551000000064],[-58.772498999999982,48.769989000000123],[-58.815001999999936,48.735825000000091],[-58.849723999999867,48.714996000000099],[-58.873885999999914,48.701659999999947],[-58.891113000000018,48.690826000000072],[-58.912773000000016,48.674713000000054],[-58.938605999999879,48.653603000000089],[-58.947776999999917,48.642769000000044],[-58.955832999999984,48.630272000000048],[-58.958610999999962,48.624161000000129],[-58.958610999999962,48.613883999999985],[-58.955832999999984,48.609436000000017],[-58.947494999999947,48.601105000000132],[-58.896950000000004,48.55193300000002],[-58.888335999999924,48.551101999999958],[-58.743057000000022,48.560822000000087],[-58.728332999999964,48.56249200000002],[-58.721381999999949,48.564438000000109],[-58.715003999999965,48.567215000000033],[-58.709442000000024,48.570831000000055],[-58.704445000000021,48.575271999999984],[-58.695549000000028,48.586937000000091],[-58.68332700000002,48.605827000000033],[-58.676666000000012,48.618050000000096],[-58.672501000000011,48.629433000000063],[-58.669998000000021,48.640831000000105],[-58.671386999999925,48.650825999999995],[-58.674171000000001,48.65526600000004],[-58.679442999999992,48.66944100000012],[-58.680832000000009,48.68471500000004],[-58.658051,48.743049999999982],[-58.618331999999896,48.779716000000064],[-58.543892000000028,48.860824999999977],[-58.535834999999963,48.878601000000117],[-58.506667999999934,48.949431999999945],[-58.506667999999934,48.98054499999995],[-58.503333999999995,48.997490000000084],[-58.500838999999928,49.003608999999926],[-58.400832999999864,49.127487000000087],[-58.396110999999962,49.131377999999984],[-58.351943999999889,49.15026899999998],[-58.348884999999996,49.145828000000108],[-58.342967999999985,49.100201000000027],[-58.365634999999997,49.079922000000067],[-58.368019000000004,49.061428000000035],[-58.353702999999939,49.056656000000032],[-58.31075299999992,49.068584000000044],[-58.292857999999967,49.072762000000068],[-58.240554999999972,49.070274000000097],[-58.17832199999998,49.063217000000066],[-58.143726000000015,49.041740000000118],[-58.09833500000002,48.99221799999998],[-58.084723999999937,48.985268000000133],[-58.077781999999956,48.981934000000138],[-58.060279999999921,48.976096999999982],[-58.050551999999982,48.973320000000115],[-57.99610899999999,48.96138000000002],[-57.961387999999999,48.956657000000007],[-57.938605999999993,48.958328000000051],[-57.90166499999998,48.96276899999998],[-57.888054000000011,48.966102999999976],[-57.881667999999991,48.96888000000007],[-57.892226999999934,48.981658999999922],[-57.900551000000007,48.9847180000001],[-57.929442999999992,48.978874000000076],[-57.958611000000019,48.976096999999982],[-57.974716000000001,48.976096999999982],[-58.009223999999961,48.98041500000005],[-58.02777900000001,48.985549999999989],[-58.035834999999963,48.988602000000128],[-58.050551999999982,48.99582700000002],[-58.09332999999998,49.025825999999995],[-58.103888999999924,49.033607000000075],[-58.108054999999922,49.037772999999959],[-58.135276999999974,49.082771000000037],[-58.144447000000014,49.12193300000007],[-58.122612000000004,49.124931000000004],[-58.119281999999998,49.127102000000036],[-58.115608000000009,49.129105000000038],[-58.111110999999994,49.129771999999946],[-58.094775999999968,49.124603000000036],[-58.078776999999945,49.121769000000029],[-58.049445999999932,49.120270000000005],[-57.925559999999962,49.123047000000042],[-57.918610000000001,49.124709999999993],[-57.913329999999974,49.129158000000132],[-57.882773999999927,49.157767999999976],[-57.878882999999973,49.170273000000122],[-57.89805599999994,49.158600000000092],[-57.912215999999944,49.152771000000087],[-57.925834999999893,49.148331000000042],[-57.939437999999996,49.144997000000046],[-57.947494999999947,49.144997000000046],[-58.057220000000029,49.144997000000046],[-58.075558000000001,49.153271000000075],[-58.081054999999992,49.154438000000141],[-58.086055999999928,49.156269000000123],[-58.092555999999945,49.160934000000111],[-58.09589399999993,49.166271000000108],[-58.064055999999994,49.183350000000132],[-58.063057000000015,49.185451999999941],[-58.065455999999983,49.190414000000033],[-58.060622999999964,49.188583000000051],[-58.05495499999995,49.187583999999958],[-58.034957999999904,49.185749000000044],[-58.025459000000012,49.185749000000044],[-58.011292000000026,49.186252999999965],[-58.002456999999993,49.188251000000093],[-57.995621000000028,49.192078000000038],[-57.988785000000007,49.197247000000118],[-57.932219999999973,49.234160999999972],[-57.928054999999972,49.240273000000116],[-57.93638599999997,49.239716000000044],[-57.995162999999991,49.236885000000086],[-58.003330000000005,49.234215000000006],[-58.011662000000001,49.23071299999998],[-58.031001999999944,49.224548000000027],[-58.03566399999994,49.223713000000032],[-58.049331999999936,49.222717000000046],[-58.058829999999944,49.223049000000003],[-58.191939999999931,49.236382000000049],[-58.200835999999867,49.239716000000044],[-58.211945000000014,49.24721500000004],[-58.233886999999982,49.27304799999996],[-58.236663999999905,49.27748900000006],[-58.240836999999942,49.286942000000067],[-58.241942999999992,49.291663999999969],[-58.241942999999992,49.302215999999987],[-58.223327999999924,49.390274000000034],[-58.216392999999982,49.402488999999946],[-58.192497000000003,49.429436000000067],[-58.157776000000013,49.464439000000027],[-58.152221999999995,49.468879999999956],[-58.043892000000028,49.541382000000056],[-58.032218999999941,49.548332000000073],[-58.019164999999873,49.553879000000052],[-57.998336999999992,49.559158000000025],[-57.971107000000018,49.554993000000024],[-57.915112000000022,49.532047000000034],[-57.910609999999963,49.530216000000053],[-57.903445999999974,49.525551000000064],[-57.861445999999944,49.505885999999975],[-57.746947999999918,49.453606000000093],[-57.715004000000022,49.454712000000086],[-57.707503999999915,49.455551000000071],[-57.701110999999969,49.458327999999995],[-57.696388000000013,49.463608000000022],[-57.698883000000023,49.468323000000055],[-57.705832999999984,49.47165700000005],[-57.788895000000025,49.500832000000116],[-57.864222999999981,49.534939000000065],[-57.869389000000012,49.535439000000054],[-57.872719000000018,49.537773000000072],[-57.942223000000013,49.60305000000011],[-57.944716999999969,49.607498000000078],[-57.951110999999912,49.652771000000143],[-57.951110999999912,49.65776800000009],[-57.948333999999932,49.674164000000076],[-57.935271999999998,49.708602999999925],[-57.926391999999964,49.726379000000065],[-57.899993999999992,49.762215000000083],[-57.82916999999992,49.845543000000077],[-57.671111999999937,50.084160000000054],[-57.631667999999934,50.144714000000079],[-57.543334999999956,50.29833200000013],[-57.524445000000014,50.334159999999997],[-57.521384999999952,50.345267999999976],[-57.521111000000019,50.35054800000006],[-57.515555999999947,50.373604000000057],[-57.507224999999949,50.390831000000105],[-57.498336999999992,50.408600000000035],[-57.490836999999999,50.420830000000137],[-57.448607999999979,50.486106999999947],[-57.377220000000023,50.584434999999928],[-57.37249799999995,50.590828000000101],[-57.361114999999927,50.598602000000085],[-57.341667000000029,50.607498000000021],[-57.310059000000024,50.608940000000132],[-57.300220000000024,50.609776000000068],[-57.295559000000026,50.60927200000009],[-57.291224999999997,50.607105000000047],[-57.276222000000018,50.601440000000082],[-57.245276999999987,50.596382000000062],[-57.228049999999939,50.594437000000084],[-57.204444999999964,50.596100000000035],[-57.173614999999927,50.60083000000003],[-57.166945999999996,50.603325000000098],[-57.161384999999996,50.606384000000048],[-57.150832999999921,50.616104000000121],[-57.148055999999997,50.621933000000126],[-57.154715999999951,50.625549000000035],[-57.171943999999996,50.624992000000134],[-57.276442999999915,50.640717000000052],[-57.378608999999926,50.687767000000065],[-57.334166999999923,50.711937000000091],[-57.325004999999919,50.711662000000047],[-57.236945999999989,50.727211000000011],[-57.162498000000028,50.751105999999993],[-57.14833799999991,50.756103999999993],[-57.089438999999913,50.780548000000124],[-57.072501999999986,50.793884000000048],[-56.983054999999979,50.868324000000086],[-56.927498000000014,50.915824999999984],[-56.898055999999997,51.019440000000088],[-56.899170000000026,51.024436999999978],[-56.903327999999988,51.028603000000089],[-56.909995999999978,51.03276800000009],[-56.927223000000026,51.038605000000018],[-56.964721999999995,51.04332700000009],[-56.921669000000009,51.051384000000098],[-56.892226999999991,51.060272000000055],[-56.879996999999946,51.065543999999989],[-56.784446999999943,51.137771999999984],[-56.781386999999995,51.143608000000029],[-56.78194400000001,51.149162000000047],[-56.785278000000005,51.153046000000074],[-56.793334999999956,51.16137700000013],[-56.80972300000002,51.183601000000067],[-56.793892000000028,51.239989999999921],[-56.744164000000012,51.293052999999929],[-56.738608999999997,51.298881999999935],[-56.733330000000024,51.302773000000002],[-56.68250299999994,51.339432000000102],[-56.623885999999914,51.366386000000034],[-56.616942999999935,51.368881000000044],[-56.512504999999976,51.402214000000072],[-56.476661999999919,51.411658999999986],[-56.461945000000014,51.414992999999981],[-56.45416999999992,51.415543000000014],[-56.271384999999952,51.471656999999993],[-56.110557999999855,51.523879999999963],[-56.011391000000003,51.56638300000003],[-55.998336999999992,51.572220000000016],[-55.960281000000009,51.593880000000013],[-55.943329000000006,51.606384000000048],[-55.918609999999944,51.62110100000001],[-55.90555599999999,51.626937999999996],[-55.898055999999997,51.628601000000117],[-55.890282000000013,51.629433000000006],[-55.837775999999963,51.621376000000055],[-55.846389999999928,51.60193600000008],[-55.857779999999991,51.593323000000112],[-55.885001999999929,51.562492000000134],[-55.886664999999937,51.556938000000002],[-55.886948000000018,51.551933000000133],[-55.887222000000008,51.500274999999988],[-55.886116000000015,51.495270000000119],[-55.87777699999998,51.492218000000037],[-55.694442999999978,51.481102000000078],[-55.639998999999989,51.481934000000024],[-55.648612999999955,51.485267999999962],[-55.68360899999999,51.5],[-55.729720999999984,51.543327000000033],[-55.737503000000004,51.552490000000034],[-55.739166000000012,51.556656000000089],[-55.73860899999994,51.567214999999976],[-55.735274999999945,51.573051000000021],[-55.724716000000001,51.583603000000039],[-55.718605000000025,51.587212000000022],[-55.653327999999988,51.590546000000018],[-55.631667999999991,51.569717000000026],[-55.625,51.565544000000102],[-55.598610000000008,51.561377999999991],[-55.589721999999995,51.560271999999941],[-55.581389999999942,51.560271999999941],[-55.574448000000018,51.562767000000008],[-55.547501000000011,51.584991000000116],[-55.515838999999971,51.602219000000048],[-55.458610999999962,51.592216000000008],[-55.411110000000008,51.580826000000116],[-55.40555599999999,51.576942000000088],[-55.404442000000017,51.571938000000102],[-55.405273000000022,51.561661000000129],[-55.40694400000001,51.556099000000017],[-55.454444999999964,51.455268999999987],[-55.492226000000016,51.377769000000058],[-55.508057000000008,51.363327000000083],[-55.597778000000005,51.303604000000064],[-55.612777999999935,51.301102000000128],[-55.62222300000002,51.30332199999998],[-55.702782000000013,51.328049000000078],[-55.820557000000008,51.350830000000087],[-56.030555999999876,51.378600999999946],[-56.078338999999971,51.36971299999999],[-56.085555999999997,51.368323999999973],[-56.096389999999985,51.318329000000006],[-56.025557999999876,51.238327000000027],[-56.012252999999987,51.212337000000048],[-55.992561000000023,51.176575000000128],[-55.959441999999967,51.197487000000081],[-55.851394999999968,51.226936000000023],[-55.837775999999963,51.230545000000063],[-55.769164999999987,51.216934000000094],[-55.760833999999988,51.213881999999955],[-55.726105000000018,51.190544000000045],[-55.712776000000019,51.178047000000049],[-55.709998999999982,51.173607000000061],[-55.719161999999983,51.123047000000042],[-55.732497999999964,51.079994000000113],[-55.735557999999912,51.074165000000107],[-55.751113999999973,51.058327000000077],[-55.756950000000018,51.053879000000109],[-55.796111999999994,51.03916200000009],[-55.805557000000022,51.009163000000058],[-55.859169000000009,50.942490000000021],[-55.999442999999872,50.788605000000075],[-56.068893000000003,50.724434000000088],[-56.092278000000022,50.725716000000091],[-56.097279000000015,50.725880000000018],[-56.101279999999917,50.728045999999949],[-56.125832000000003,50.754166000000055],[-56.130829000000006,50.763329000000056],[-56.133330999999998,50.773048000000017],[-56.128052000000025,50.846382000000062],[-56.12222300000002,50.863884000000098],[-56.119720000000029,50.869156000000032],[-56.116394000000014,50.874992000000077],[-56.107223999999974,50.887214999999969],[-56.103888999999981,50.893326000000002],[-56.103888999999981,50.898331000000042],[-56.107779999999934,50.902771000000087],[-56.12222300000002,50.899437000000091],[-56.143058999999937,50.892494000000113],[-56.155272999999966,50.885551000000135],[-56.172500999999897,50.85582700000009],[-56.157218999999941,50.690826000000072],[-56.141272999999956,50.671047000000101],[-56.135776999999962,50.669884000000138],[-56.163329999999917,50.617767000000072],[-56.258614000000023,50.502777000000094],[-56.323615999999959,50.446380999999974],[-56.423057999999912,50.352776000000006],[-56.421943999999939,50.347771000000137],[-56.422226000000023,50.342491000000052],[-56.423614999999984,50.336937000000091],[-56.426666000000012,50.331108000000086],[-56.462501999999915,50.272217000000126],[-56.501944999999921,50.214439000000084],[-56.511947999999961,50.203606000000093],[-56.555832000000009,50.167496000000028],[-56.635276999999974,50.106383999999991],[-56.743056999999965,50.022766000000104],[-56.767501999999922,49.962212000000079],[-56.778610000000015,49.933875999999998],[-56.78194400000001,49.917496000000028],[-56.775001999999972,49.919158999999979],[-56.726661999999976,49.916100000000029],[-56.759845999999982,49.837275999999974],[-56.82790399999999,49.785000000000082],[-56.866863000000023,49.777602999999999],[-56.90533099999999,49.747520000000122],[-56.820999000000029,49.74209600000006],[-56.784007999999972,49.731243000000006],[-56.782776000000013,49.690826000000072],[-56.815552000000025,49.594994000000042],[-56.818610999999976,49.588882000000012],[-56.848884999999939,49.544441000000006],[-56.843055999999933,49.548050000000046],[-56.826667999999984,49.562767000000008],[-56.782776000000013,49.609993000000088],[-56.763061999999991,49.631378000000041],[-56.749167999999884,49.64916199999999],[-56.735557999999969,49.666939000000013],[-56.712501999999972,49.696380999999974],[-56.677779999999927,49.733604000000128],[-56.598609999999894,49.811935000000062],[-56.56138599999997,49.842215999999951],[-56.477776000000006,49.892220000000009],[-56.464164999999923,49.896385000000009],[-56.431945999999982,49.890549000000135],[-56.412216000000001,49.909714000000122],[-56.388054000000011,49.943047000000092],[-56.385001999999929,49.949158000000011],[-56.330284000000006,50.024994000000106],[-56.324172999999973,50.029990999999995],[-56.237777999999992,50.100273000000072],[-56.220832999999971,50.112495000000024],[-56.208892999999989,50.120270000000119],[-56.160278000000005,50.148048000000074],[-56.153884999999946,50.150543000000084],[-56.132499999999993,50.155548000000124],[-56.12471800000003,50.15638000000007],[-56.116660999999965,50.153046000000074],[-56.067222999999956,50.096382000000006],[-56.065001999999936,50.091377000000136],[-56.005004999999983,50.031380000000013],[-55.938605999999936,50.036385000000053],[-55.905273000000022,50.033882000000062],[-55.896111000000019,50.031937000000084],[-55.881110999999976,50.024994000000106],[-55.853888999999924,50.005554000000075],[-55.846106999999961,49.996940999999936],[-55.845275999999956,49.99221799999998],[-55.845551,49.986938000000066],[-55.844161999999983,49.981934000000138],[-55.840836000000024,49.977211000000125],[-55.830001999999979,49.969154000000003],[-55.755004999999869,49.924164000000019],[-55.746108999999933,49.923050000000046],[-55.587218999999948,49.964157000000057],[-55.55610699999994,49.980270000000132],[-55.543892000000028,49.987213000000111],[-55.527221999999995,50.000275000000101],[-55.491698999999983,50.007309000000021],[-55.463332999999977,49.966933999999981],[-55.460830999999985,49.962212000000079],[-55.459723999999937,49.957497000000046],[-55.460281000000009,49.952216999999962],[-55.465004000000022,49.940826000000015],[-55.475272999999959,49.930275000000108],[-55.492226000000016,49.917213000000061],[-55.511391000000003,49.908882000000006],[-55.659163999999976,49.84777100000008],[-55.843055999999933,49.788330000000087],[-55.98611499999987,49.746940999999993],[-56.115279999999927,49.63999200000012],[-56.124167999999997,49.613327000000083],[-56.050551999999925,49.666382000000112],[-56.044448999999986,49.669990999999925],[-55.963889999999935,49.698600999999996],[-55.957779000000016,49.700272000000041],[-55.893889999999999,49.714157000000114],[-55.833327999999995,49.686652999999922],[-55.880279999999971,49.584990999999945],[-55.935443999999961,49.543991000000119],[-55.945441999999957,49.536159999999995],[-55.953444999999988,49.533660999999995],[-55.971607000000006,49.531826000000024],[-55.980277999999998,49.53049500000003],[-56.035277999999948,49.506660000000068],[-56.080001999999922,49.486938000000009],[-56.12749500000001,49.431107000000111],[-56.129165999999998,49.425552000000039],[-56.122771999999941,49.421379000000115],[-56.073891000000003,49.434432999999956],[-56.06221800000003,49.440544000000045],[-56.025275999999963,49.461105000000089],[-56.02027899999996,49.464995999999928],[-56.005279999999914,49.480820000000051],[-55.999725000000012,49.485268000000019],[-55.96305499999994,49.496155000000044],[-55.91705300000001,49.507496000000117],[-55.874717999999973,49.517212000000029],[-55.827781999999956,49.524162000000103],[-55.783332999999914,49.511940000000095],[-55.775001999999915,49.508605999999929],[-55.724997999999971,49.479431000000091],[-55.720832999999971,49.475822000000051],[-55.725554999999986,49.470543000000077],[-55.722771000000023,49.453880000000026],[-55.678336999999942,49.386940000000038],[-55.673057999999969,49.383049000000142],[-55.664444000000003,49.381934999999999],[-55.656386999999938,49.382210000000043],[-55.650275999999963,49.384162999999944],[-55.639167999999984,49.392769000000044],[-55.636115999999959,49.398604999999918],[-55.637778999999966,49.409157000000107],[-55.637778999999966,49.413605000000075],[-55.636115999999959,49.419159000000093],[-55.589164999999923,49.462494000000049],[-55.560279999999977,49.482490999999925],[-55.55388599999992,49.484993000000031],[-55.546950999999979,49.486381999999992],[-55.53167000000002,49.487770000000125],[-55.523055999999997,49.486655999999925],[-55.522223999999994,49.481934000000024],[-55.566390999999953,49.409157000000107],[-55.572776999999974,49.376656000000025],[-55.573058999999944,49.371658000000025],[-55.570556999999951,49.366936000000123],[-55.566665999999998,49.362770000000012],[-55.559998000000007,49.365273000000002],[-55.554717999999923,49.369713000000047],[-55.539443999999946,49.385551000000078],[-55.529723999999987,49.396942000000024],[-55.528053,49.402488999999946],[-55.528885000000002,49.408043000000134],[-55.529166999999973,49.423324999999977],[-55.526389999999992,49.42860399999995],[-55.49610899999999,49.453880000000026],[-55.441665999999998,49.491104000000064],[-55.430282999999974,49.498878000000104],[-55.37749500000001,49.50360900000004],[-55.369445999999982,49.503326000000072],[-55.349276999999972,49.468159000000014],[-55.332946999999933,49.416489000000126],[-55.33577699999995,49.388161000000025],[-55.333610999999905,49.359161000000029],[-55.338608000000022,49.355270000000132],[-55.336112999999955,49.350829999999974],[-55.315276999999924,49.314437999999939],[-55.310996999999929,49.355937999999981],[-55.306830999999931,49.356772999999976],[-55.274833999999998,49.385605000000055],[-55.267501999999979,49.396603000000027],[-55.264499999999998,49.403435000000059],[-55.264336000000014,49.406441000000086],[-55.266669999999863,49.409103000000073],[-55.269833000000006,49.411438000000032],[-55.280838000000017,49.41443600000008],[-55.28317299999992,49.41693500000008],[-55.310000999999943,49.484772000000021],[-55.310832999999946,49.487770000000125],[-55.305557000000022,49.534439000000077],[-55.261390999999946,49.541107000000068],[-55.149726999999928,49.546387000000095],[-55.141112999999962,49.545273000000122],[-55.137222000000008,49.540833000000134],[-55.123328999999956,49.496941000000049],[-55.124717999999973,49.465271000000143],[-55.221107000000018,49.261939999999981],[-55.231109999999944,49.251389000000074],[-55.237220999999977,49.248046999999929],[-55.296394000000021,49.226379000000009],[-55.315001999999936,49.216933999999924],[-55.365836999999999,49.165268000000083],[-55.369164000000012,49.159431000000097],[-55.369445999999982,49.154160000000047],[-55.360001000000011,49.151382000000069],[-55.347495999999978,49.157211000000075],[-55.339721999999995,49.158600000000092],[-55.331673000000023,49.156654000000003],[-55.323615999999959,49.153602999999976],[-55.319449999999904,49.149162000000047],[-55.307219999999973,49.104996000000085],[-55.307776999999987,49.0991590000001],[-55.317504999999983,49.087769000000037],[-55.323059000000001,49.083327999999938],[-55.383330999999998,49.040833000000021],[-55.345551,49.057770000000062],[-55.272223999999937,49.099998000000085],[-55.277495999999985,49.103882000000112],[-55.282501000000025,49.113051999999982],[-55.283332999999914,49.118049999999982],[-55.288054999999986,49.182495000000074],[-55.288054999999986,49.187210000000107],[-55.285004000000015,49.193047000000092],[-55.280555999999933,49.199157999999954],[-55.275275999999963,49.204436999999984],[-55.148055999999997,49.259995000000004],[-55.081116000000009,49.283882000000062],[-55.081673000000023,49.345825000000104],[-55.081389999999942,49.351105000000132],[-55.078055999999947,49.356941000000006],[-55.069450000000018,49.3555530000001],[-55.010284000000013,49.323883000000023],[-54.989998000000014,49.286942000000067],[-54.990554999999972,49.28166200000004],[-54.824448000000018,49.269157000000064],[-54.817779999999914,49.271660000000054],[-54.787506000000008,49.288605000000018],[-54.78194400000001,49.292770000000019],[-54.67972599999996,49.379990000000021],[-54.658332999999971,49.399162000000047],[-54.648055999999997,49.409431000000041],[-54.641388000000006,49.421104000000071],[-54.643889999999999,49.425827000000083],[-54.579726999999934,49.494713000000104],[-54.541114999999934,49.526657000000114],[-54.528885000000002,49.533333000000027],[-54.521111000000019,49.533882000000006],[-54.474716000000001,49.534995999999978],[-54.431945999999925,49.470824999999991],[-54.430831999999953,49.465828000000045],[-54.450554000000011,49.427773000000116],[-54.483330000000024,49.361938000000123],[-54.49361399999998,49.268051000000071],[-54.492500000000007,49.263611000000026],[-54.486945999999989,49.259719999999959],[-54.480552999999929,49.262215000000026],[-54.474716000000001,49.266662999999994],[-54.406386999999938,49.320831000000112],[-54.400832999999921,49.325272000000041],[-54.399170000000026,49.330551000000014],[-54.410278000000005,49.343605000000082],[-54.412773000000016,49.34804500000007],[-54.413612000000001,49.353049999999939],[-54.407501000000025,49.374710000000107],[-54.404167000000029,49.380547000000092],[-54.395003999999915,49.392769000000044],[-54.380279999999971,49.408882000000119],[-54.36999499999996,49.419159000000093],[-54.364166000000012,49.423607000000061],[-54.358054999999979,49.426941000000056],[-54.325279000000023,49.423882000000049],[-54.24888599999997,49.397490999999945],[-54.186661000000015,49.371101000000124],[-54.17888599999992,49.37082700000002],[-54.166106999999897,49.378044000000102],[-54.161941999999897,49.383606000000043],[-54.15582999999998,49.40526600000004],[-54.153327999999931,49.416100000000085],[-54.151938999999913,49.427216000000044],[-54.148337999999967,49.437492000000134],[-54.145279000000016,49.443320999999969],[-54.139998999999932,49.448601000000053],[-54.133888000000013,49.451934999999992],[-54.048889000000031,49.479431000000091],[-54.041671999999949,49.480820000000051],[-53.919998000000021,49.447769000000108],[-53.775001999999972,49.396103000000039],[-53.673331999999959,49.34304800000001],[-53.511116000000015,49.277214000000072],[-53.48860899999994,49.220543000000134],[-53.588332999999977,49.040833000000021],[-53.593886999999995,49.035552999999993],[-53.66194200000001,49.032211000000018],[-53.714721999999938,49.02915999999999],[-53.804442999999992,49.022217000000012],[-53.785277999999948,49.011107999999922],[-53.731667000000016,49.013329000000056],[-53.725273000000016,49.009720000000016],[-53.736664000000019,49.001105999999993],[-53.742774999999995,48.997771999999998],[-53.749167999999941,48.995270000000119],[-53.77027899999996,48.989433000000133],[-53.803611999999987,48.978043000000071],[-53.813056999999958,48.938881000000038],[-53.974441999999954,48.84777100000008],[-54.021384999999952,48.833327999999995],[-54.096106999999961,48.812210000000107],[-53.920279999999991,48.834991000000116],[-53.899170000000026,48.838043000000027],[-53.875557000000015,48.836937000000034],[-53.829445000000021,48.831383000000017],[-53.820556999999951,48.829436999999928],[-53.800835000000006,48.812767000000008],[-53.802223000000026,48.807770000000062],[-53.845276000000013,48.766936999999984],[-53.867774999999938,48.75],[-53.89055599999989,48.733604000000014],[-53.897223999999937,48.731377000000123],[-53.932219999999973,48.71393599999999],[-53.950554000000011,48.670830000000137],[-53.93250299999994,48.624710000000107],[-53.924445999999989,48.624435000000062],[-53.917220999999927,48.624991999999963],[-53.888610999999969,48.631660000000124],[-53.882773999999927,48.633606000000043],[-53.869163999999955,48.638885000000016],[-53.857223999999974,48.644157000000121],[-53.795554999999922,48.675827000000027],[-53.790001000000018,48.679993000000138],[-53.798889000000031,48.682213000000104],[-53.817779999999971,48.673882000000049],[-53.831389999999999,48.669990999999982],[-53.852782999999931,48.666381999999942],[-53.896950000000004,48.662209000000018],[-53.913054999999929,48.663605000000075],[-53.920836999999949,48.667213000000004],[-53.924445999999989,48.671379000000059],[-53.892058999999904,48.682938000000092],[-53.887225999999941,48.690102000000024],[-53.884051999999997,48.693100000000129],[-53.880554000000018,48.695099000000141],[-53.857558999999981,48.704937000000029],[-53.759170999999981,48.714156999999943],[-53.618056999999965,48.694435000000112],[-53.610001000000011,48.693046999999979],[-53.601943999999946,48.68971300000004],[-53.599723999999924,48.684990000000028],[-53.603888999999924,48.674164000000076],[-53.610001000000011,48.668602000000135],[-53.645835999999974,48.648330999999985],[-53.658607000000018,48.641937000000098],[-53.671943999999939,48.638602999999932],[-53.728881999999942,48.629433000000063],[-53.779998999999975,48.623604000000057],[-53.787780999999995,48.622490000000084],[-53.928336999999942,48.575829000000056],[-53.93332700000002,48.572220000000073],[-53.951392999999996,48.549995000000024],[-53.956107999999915,48.543883999999991],[-53.952498999999932,48.539436000000023],[-53.944159999999897,48.539718999999991],[-53.932219999999973,48.544998000000135],[-53.919998000000021,48.551659000000086],[-53.914444000000003,48.555824000000086],[-53.908332999999914,48.559158000000025],[-53.901389999999935,48.562209999999993],[-53.895003999999858,48.563048999999921],[-53.804169000000002,48.568053999999961],[-53.788054999999929,48.566383000000087],[-53.746391000000017,48.558600999999953],[-53.746947999999918,48.523322999999948],[-53.74888599999997,48.513329000000113],[-53.750838999999985,48.50777400000004],[-53.756366999999955,48.50326200000012]],[[-127.91443599999991,51.410820000000001],[-127.92443799999995,51.41027100000008],[-128.06527700000004,51.464157000000114],[-128.07583599999998,51.470543000000021],[-128.08111599999995,51.474709000000132],[-128.15307599999988,51.601661999999976],[-128.15417499999995,51.605826999999977],[-128.15280199999995,51.638046000000145],[-128.15249600000004,51.641937000000041],[-128.15029899999996,51.647491000000059],[-128.14556900000002,51.653603000000032],[-128.136414,51.6616590000001],[-128.01306199999993,51.72137500000008],[-128.00527999999997,51.723320000000058],[-128,51.720542999999964],[-127.99694799999997,51.714157000000057],[-127.99804699999999,51.711662000000047],[-127.995003,51.705269000000101],[-127.98388699999998,51.682495000000131],[-127.96749899999992,51.651931999999988],[-127.951683,51.633880999999974],[-127.93776699999995,51.621933000000126],[-127.92639199999996,51.608886999999982],[-127.91999800000002,51.600547999999947],[-127.90556300000003,51.55971500000004],[-127.87361099999993,51.464439000000027],[-127.87193300000001,51.451934999999992],[-127.87332200000003,51.447769000000051],[-127.87666299999995,51.443046999999979],[-127.90444899999994,51.414711000000068],[-127.91443599999991,51.410820000000001]],[[-55.367500000000007,51.874161000000015],[-55.37471800000003,51.873878000000047],[-55.382216999999912,51.875267000000065],[-55.428885999999977,51.884163000000001],[-55.430000000000007,51.885826000000122],[-55.431113999999923,51.887771999999984],[-55.430557000000022,51.896659999999997],[-55.42610899999994,51.905822999999998],[-55.423331999999959,51.909431000000097],[-55.387779000000023,51.942764000000125],[-55.353614999999991,51.963608000000079],[-55.301392000000021,51.993050000000039],[-55.283889999999985,52.001389000000074],[-55.277221999999938,52.002495000000067],[-55.269996999999989,52.000549000000035],[-55.268889999999942,51.998604],[-55.267501999999979,51.993881000000044],[-55.274170000000026,51.97693600000008],[-55.274170000000026,51.975548000000003],[-55.28194400000001,51.961937000000034],[-55.295005999999944,51.943321000000026],[-55.302222999999969,51.933326999999963],[-55.332503999999972,51.896384999999952],[-55.342223999999874,51.886383000000023],[-55.354720999999927,51.878043999999989],[-55.360001000000011,51.875824000000136],[-55.367500000000007,51.874161000000015]],[[-128.05389400000001,51.753609000000097],[-128.11972000000003,51.741661000000079],[-128.13192699999996,51.743881000000101],[-128.13613899999996,51.746657999999968],[-128.25445599999995,51.865829000000019],[-128.25308199999995,51.872214999999983],[-128.22222899999997,51.953323000000125],[-128.21749899999998,51.962769000000094],[-128.177795,52.008330999999941],[-128.150848,52.035271000000023],[-128.14529400000004,52.038605000000018],[-128.10775799999999,52.051659000000086],[-128.06082200000003,52.056380999999988],[-127.99582699999996,52.062767000000065],[-127.98332199999993,52.061934999999949],[-127.96028100000001,52.055549999999982],[-127.95472699999999,52.05332199999998],[-127.95121799999998,52.046913000000131],[-127.95140100000003,52.03054800000001],[-127.95472699999999,51.981101999999964],[-128.00723299999993,51.782493999999986],[-128.00945999999999,51.778328000000101],[-128.01306199999993,51.773605000000089],[-128.01861600000001,51.770271000000093],[-128.03582800000004,51.760826000000066],[-128.05389400000001,51.753609000000097]],[[-79.252791999999999,52.071380999999917],[-79.319732999999985,51.969986000000063],[-79.364440999999943,51.942214999999976],[-79.370543999999995,51.938599000000124],[-79.376663000000008,51.936104000000057],[-79.385833999999988,51.935546999999985],[-79.42361499999987,51.936935000000062],[-79.433318999999869,51.93832400000008],[-79.450561999999877,51.942214999999976],[-79.50111400000003,51.942489999999964],[-79.568344000000025,51.935546999999985],[-79.576675000000023,51.934158000000025],[-79.591949,51.922768000000133],[-79.604445999999996,51.916664000000083],[-79.611664000000019,51.914436000000137],[-79.617767000000015,51.917770000000132],[-79.621383999999978,51.9222180000001],[-79.652785999999992,51.981101999999964],[-79.654175000000009,51.986655999999982],[-79.650832999999977,51.991936000000067],[-79.633895999999993,52.017493999999942],[-79.629439999999988,52.022217000000126],[-79.62332200000003,52.025269000000037],[-79.61471599999993,52.023048000000131],[-79.608611999999994,52.01998900000001],[-79.603881999999942,52.016106000000036],[-79.596114999999998,52.013611000000026],[-79.585281000000009,52.012772000000041],[-79.567779999999971,52.014999000000103],[-79.538329999999974,52.023323000000005],[-79.408889999999985,52.071938000000046],[-79.396666999999866,52.077217000000019],[-79.383895999999936,52.090827999999988],[-79.345551,52.108604000000128],[-79.338332999999977,52.110275000000001],[-79.297225999999966,52.091933999999981],[-79.277221999999881,52.090546000000074],[-79.269729999999925,52.08776899999998],[-79.263625999999988,52.083878000000084],[-79.252791999999999,52.071380999999917]],[[-131.01889,51.946098000000063],[-131.02166699999998,51.940825999999959],[-131.02917500000001,51.941375999999991],[-131.03695700000003,51.944434999999999],[-131.04861499999998,51.951385000000016],[-131.07415800000001,51.970543000000134],[-131.09500099999997,51.989989999999977],[-131.10165399999994,52.00277699999998],[-131.120544,52.055549999999982],[-131.12719699999997,52.095543000000021],[-131.126373,52.106941000000006],[-131.12249800000001,52.124710000000107],[-131.11639400000001,52.148048000000017],[-131.11026000000004,52.151099999999929],[-131.10192899999998,52.151932000000045],[-131.08361799999989,52.151382000000012],[-131.07720900000004,52.150268999999923],[-131.00945999999999,52.102776000000006],[-130.99249299999991,52.060822000000087],[-131.00473,52.005829000000062],[-131.01889,51.946098000000063]],[[-127.96278399999989,52.074714999999912],[-128.05111699999992,52.07416500000005],[-128.06222500000001,52.074996999999996],[-128.07638499999996,52.079994000000113],[-128.09387199999998,52.090546000000074],[-128.10583500000001,52.100273000000016],[-128.10888699999992,52.105270000000132],[-128.12081899999998,52.141936999999928],[-128.11471599999987,52.14916199999999],[-128.10693400000002,52.152489000000116],[-128.03167699999995,52.163292000000126],[-128.01583900000003,52.164711000000125],[-127.89111299999996,52.171660999999972],[-127.88110399999999,52.172218000000044],[-127.87917299999998,52.166664000000026],[-127.88971700000002,52.131103999999993],[-127.89334100000002,52.126938000000052],[-127.94360399999999,52.079163000000051],[-127.94721999999996,52.075829000000113],[-127.96278399999989,52.074714999999912]],[[-128.21194499999996,52.015549000000135],[-128.22082499999999,52.014442000000031],[-128.23858599999994,52.014717000000076],[-128.2463679999999,52.016662999999937],[-128.25308199999995,52.019714000000135],[-128.29110699999995,52.101936000000137],[-128.29415899999998,52.113608999999997],[-128.29168700000002,52.118881000000101],[-128.25280799999996,52.171379000000059],[-128.24444600000004,52.179993000000138],[-128.23971599999993,52.184158000000139],[-128.23193399999997,52.187492000000134],[-128.18804899999998,52.193604000000107],[-128.16223100000002,52.196655000000135],[-128.15307599999988,52.195267000000001],[-128.14779699999997,52.191658000000018],[-128.14584399999995,52.186104],[-128.1480709999999,52.183327000000133],[-128.15472399999999,52.159431000000041],[-128.15612799999997,52.153320000000122],[-128.15862999999996,52.11971299999999],[-128.154449,52.108604000000128],[-128.15139799999997,52.103882000000056],[-128.14752199999998,52.092766000000097],[-128.15112299999993,52.081108000000086],[-128.20611600000001,52.01888300000013],[-128.21194499999996,52.015549000000135]],[[-128.42834499999992,52.13749700000011],[-128.44415300000003,52.134163000000115],[-128.44638099999997,52.13499500000006],[-128.50472999999994,52.16027100000008],[-128.50918599999994,52.16443600000008],[-128.51113899999996,52.169990999999982],[-128.50863600000002,52.175552000000039],[-128.50527999999997,52.180274999999995],[-128.50058000000001,52.184158000000139],[-128.45138499999996,52.217209000000082],[-128.448059,52.21915400000006],[-128.43331899999998,52.223320000000001],[-128.41641200000004,52.226379000000122],[-128.40972899999997,52.224991000000045],[-128.40640299999995,52.2227630000001],[-128.40527299999997,52.218596999999988],[-128.4100039999999,52.214714000000072],[-128.40777599999996,52.15277100000003],[-128.408905,52.149437000000034],[-128.41363499999994,52.145270999999923],[-128.42834499999992,52.13749700000011]],[[-128.29998799999998,52.133606000000043],[-128.308044,52.128875999999991],[-128.31362899999999,52.129714999999976],[-128.36499000000003,52.162491000000102],[-128.37304699999999,52.185265000000072],[-128.378601,52.213608000000022],[-128.37832599999996,52.220268000000033],[-128.37719699999991,52.223877000000073],[-128.37027,52.228600000000029],[-128.35665900000004,52.235825000000091],[-128.34527600000001,52.238602000000014],[-128.29724099999999,52.237212999999997],[-128.23721299999994,52.222488000000055],[-128.22943099999998,52.220268000000033],[-128.22720300000003,52.218880000000127],[-128.22610499999996,52.216934000000037],[-128.22747799999996,52.212769000000037],[-128.22997999999995,52.209435000000099],[-128.29998799999998,52.133606000000043]],[[-81.476944000000003,52.249161000000072],[-81.48582499999992,52.248329000000126],[-81.646118000000001,52.251389000000017],[-81.687499999999943,52.254997000000117],[-81.706115999999952,52.258049000000028],[-81.710007000000019,52.262496999999996],[-81.695830999999941,52.267212000000029],[-81.578063999999983,52.294716000000051],[-81.551666000000012,52.298050000000046],[-81.541672000000005,52.296661000000029],[-81.493057000000022,52.283881999999949],[-81.480559999999969,52.277489000000003],[-81.475280999999995,52.27388000000002],[-81.471664000000033,52.268051000000014],[-81.468063000000029,52.263054000000068],[-81.467772999999966,52.256942999999978],[-81.470839999999953,52.252220000000023],[-81.476944000000003,52.249161000000072]],[[-127.924713,52.174164000000133],[-127.93360899999999,52.173049999999932],[-128.036407,52.177489999999977],[-128.05416899999994,52.180550000000039],[-128.07971199999997,52.186377999999934],[-128.08639500000004,52.188599000000067],[-128.09277299999991,52.19221500000009],[-128.16696199999996,52.244713000000104],[-128.17001299999998,52.249718000000144],[-128.15862999999996,52.256386000000077],[-128.06945799999994,52.294716000000051],[-128.0477909999999,52.300545000000056],[-128.04000899999994,52.301659000000029],[-127.97944599999994,52.296661000000029],[-127.97277800000001,52.295273000000122],[-127.96193700000003,52.289436000000137],[-127.95861799999989,52.287498000000028],[-127.95111099999997,52.279716000000064],[-127.90943899999996,52.210274000000027],[-127.90750100000002,52.204712000000086],[-127.90666199999998,52.198600999999996],[-127.91055299999988,52.186377999999934],[-127.91776999999996,52.176940999999999],[-127.924713,52.174164000000133]],[[-128.18444799999992,52.278602999999976],[-128.20361299999996,52.277489000000003],[-128.21026599999993,52.278327999999988],[-128.21362299999998,52.279716000000064],[-128.18917799999986,52.330826000000116],[-128.18307499999997,52.339714000000129],[-128.11471599999987,52.41832700000009],[-128.11111499999998,52.421661000000086],[-128.10443099999992,52.421379000000002],[-128.09997599999991,52.418602000000135],[-128.09359699999999,52.411658999999929],[-128.09249899999998,52.408324999999934],[-128.08526599999999,52.396385000000066],[-128.05917399999998,52.352219000000048],[-128.05694600000004,52.346100000000035],[-128.05526699999996,52.334991000000116],[-128.05667099999994,52.328880000000083],[-128.06140099999999,52.324715000000083],[-128.15194700000001,52.282211000000075],[-128.18444799999992,52.278602999999976]],[[-127.72444199999995,51.97693600000008],[-127.87082699999991,51.944709999999986],[-127.87970699999994,51.94499200000007],[-127.886124,51.947768999999994],[-127.89167800000001,51.951385000000016],[-127.89472999999992,51.956100000000049],[-127.89943700000003,51.973320000000001],[-127.90110799999991,51.985824999999977],[-127.90055799999988,51.999435000000005],[-127.88110399999999,52.078880000000083],[-127.87361099999993,52.094994000000042],[-127.85138699999999,52.141380000000026],[-127.82833900000003,52.175827000000027],[-127.817497,52.191375999999934],[-127.79750100000001,52.213882000000126],[-127.78916899999996,52.221930999999984],[-127.75334199999998,52.245827000000077],[-127.74527,52.247772000000055],[-127.699997,52.257216999999912],[-127.68083199999995,52.258888000000013],[-127.65943900000002,52.259163000000001],[-127.65055799999999,52.260276999999974],[-127.58640300000002,52.281105000000082],[-127.51666299999999,52.304436000000123],[-127.51000999999985,52.306938000000002],[-127.46056399999998,52.345824999999991],[-127.45694700000001,52.350548000000003],[-127.45612299999988,52.362213000000054],[-127.45694700000001,52.368324000000143],[-127.45333900000003,52.373046999999929],[-127.4177699999999,52.385269000000108],[-127.36277799999999,52.403876999999966],[-127.26390100000003,52.436653000000092],[-127.25945300000001,52.435265000000015],[-127.23473399999995,52.416939000000013],[-127.20777899999996,52.344711000000018],[-127.21056399999992,52.33526599999999],[-127.218887,52.325829000000056],[-127.23222399999992,52.313049000000092],[-127.24749800000001,52.301933000000133],[-127.27084399999995,52.288605000000132],[-127.28916899999996,52.279433999999981],[-127.30304699999999,52.274162000000047],[-127.30999800000001,52.271659999999997],[-127.32584400000002,52.268051000000014],[-127.36193800000001,52.264717000000019],[-127.42582699999997,52.24610100000001],[-127.43971299999993,52.240829000000076],[-127.44526699999994,52.23832699999997],[-127.57972699999999,52.177216000000044],[-127.58444199999991,52.173324999999977],[-127.58805799999999,52.167770000000075],[-127.59631300000001,52.151793999999995],[-127.65416700000003,52.123877999999991],[-127.68694299999993,52.074440000000095],[-127.69193999999993,52.06360600000005],[-127.70111099999991,52.041107000000068],[-127.70388800000001,52.028877000000136],[-127.699997,52.017768999999987],[-127.69915799999995,52.01138300000008],[-127.699432,52.00471500000009],[-127.70194999999995,51.998604],[-127.708054,51.988327000000027],[-127.71749899999998,51.980270000000075],[-127.72444199999995,51.97693600000008]],[[-128.66860999999994,52.266388000000063],[-128.67556799999994,52.266388000000063],[-128.72055099999994,52.306938000000002],[-128.724152,52.311378000000047],[-128.72637899999995,52.316101000000003],[-128.74832200000003,52.369156000000089],[-128.76196299999998,52.41832700000009],[-128.76251200000002,52.423325000000091],[-128.76196299999998,52.429160999999965],[-128.759186,52.449432000000002],[-128.75280799999996,52.467766000000097],[-128.74722299999996,52.471656999999993],[-128.68139599999989,52.482208000000071],[-128.67443800000001,52.482208000000071],[-128.65029899999996,52.474434000000088],[-128.63696299999992,52.468597000000102],[-128.624146,52.461662000000103],[-128.61914099999996,52.457771000000037],[-128.615814,52.453606000000036],[-128.61608899999993,52.44860099999994],[-128.61331199999995,52.364441000000056],[-128.61471599999993,52.353325000000098],[-128.61776699999996,52.329994000000056],[-128.61999500000002,52.323883000000137],[-128.62554899999992,52.311378000000047],[-128.62997399999995,52.305550000000096],[-128.66860999999994,52.266388000000063]],[[-128.471924,52.492767000000129],[-128.46777299999991,52.483047000000056],[-128.46499599999993,52.47304500000007],[-128.46417199999996,52.46804800000001],[-128.46499599999993,52.462212000000136],[-128.46722399999999,52.456099999999935],[-128.47082499999993,52.449714999999969],[-128.48055999999991,52.440269000000001],[-128.4869379999999,52.437209999999993],[-128.49414100000001,52.434989999999971],[-128.50945999999999,52.432213000000104],[-128.51806599999998,52.431938000000059],[-128.59553499999998,52.460140000000081],[-128.66314699999987,52.491927999999973],[-128.75500499999998,52.487770000000012],[-128.77557399999995,52.49332400000003],[-128.78472899999991,52.496101000000124],[-128.80944799999997,52.515549000000078],[-128.81304899999992,52.519989000000066],[-128.81390399999998,52.524994000000106],[-128.811127,52.536941999999954],[-128.808899,52.543053000000043],[-128.73889199999996,52.587494000000049],[-128.732483,52.590545999999961],[-128.72470099999998,52.59165999999999],[-128.5781859999999,52.5936430000001],[-128.56750499999998,52.622490000000028],[-128.53527800000001,52.647217000000069],[-128.53167699999995,52.62110100000001],[-128.52890000000002,52.611107000000004],[-128.52194199999997,52.591377000000023],[-128.50085399999995,52.543610000000115],[-128.48889199999991,52.52027099999998],[-128.48526000000004,52.515831000000105],[-128.47970599999996,52.506660000000011],[-128.471924,52.492767000000129]],[[-131.46444700000001,52.627487000000087],[-131.58554099999998,52.585266000000104],[-131.59359699999999,52.585823000000005],[-131.60137900000001,52.588600000000099],[-131.6119379999999,52.596099999999979],[-131.62359600000002,52.608886999999982],[-131.70971700000001,52.705269000000044],[-131.691101,52.724991000000102],[-131.68499799999995,52.728043000000014],[-131.65945399999993,52.730270000000075],[-131.48471099999995,52.736938000000066],[-131.475281,52.736655999999982],[-131.46859699999999,52.733330000000137],[-131.46887200000003,52.73054500000012],[-131.44943199999994,52.714996000000042],[-131.44027699999998,52.706940000000145],[-131.43917799999991,52.701660000000061],[-131.44137599999999,52.684158000000025],[-131.45443699999998,52.636383000000023],[-131.45834399999995,52.630821000000083],[-131.46444700000001,52.627487000000087]],[[-128.43029799999994,52.368050000000039],[-128.44168099999996,52.368050000000039],[-128.45611599999989,52.373046999999929],[-128.46026599999999,52.37721300000004],[-128.46664399999986,52.386939999999981],[-128.46777299999991,52.393051000000071],[-128.43777499999999,52.543610000000115],[-128.44973800000002,52.620827000000077],[-128.45056199999999,52.626937999999996],[-128.44168099999996,52.746941000000106],[-128.43917799999997,52.752220000000079],[-128.43582200000003,52.756943000000092],[-128.39001500000001,52.797493000000031],[-128.383331,52.797493000000031],[-128.37332200000003,52.791107000000125],[-128.36276199999998,52.740272999999945],[-128.35861199999988,52.729156000000103],[-128.32138099999992,52.634720000000129],[-128.275848,52.496101000000124],[-128.27502400000003,52.489990000000034],[-128.28640699999994,52.457771000000037],[-128.31140099999999,52.423881999999992],[-128.365814,52.38220999999993],[-128.37164300000001,52.378875999999991],[-128.386414,52.374992000000134],[-128.40335099999993,52.371658000000139],[-128.43029799999994,52.368050000000039]],[[-128.97442599999999,52.453323000000069],[-128.98275799999999,52.453049000000135],[-129.11471599999993,52.556656000000089],[-129.21081499999997,52.64888000000002],[-129.26333599999998,52.710548000000074],[-129.27056899999997,52.719153999999946],[-129.29196200000001,52.761664999999994],[-129.29278599999998,52.766937000000098],[-129.28140299999995,52.81721500000009],[-129.27722199999988,52.823051000000135],[-129.27084400000001,52.826103000000046],[-129.26223799999997,52.826660000000118],[-129.252228,52.825272000000041],[-129.23111,52.81610100000006],[-129.218323,52.809158000000082],[-129.10415599999999,52.74110399999995],[-129.066101,52.714714000000129],[-128.94695999999993,52.626381000000094],[-128.926941,52.610825000000091],[-128.92333999999994,52.606659000000036],[-128.91973899999999,52.602218999999991],[-128.91861,52.527488999999946],[-128.92251599999997,52.515274000000034],[-128.93640099999999,52.480545000000006],[-128.94360399999999,52.469711000000075],[-128.9491579999999,52.465546000000074],[-128.96166999999997,52.459435000000042],[-128.97442599999999,52.453323000000069]],[[-128.26974499999994,52.596939000000134],[-128.27416999999997,52.595543000000077],[-128.27890000000002,52.595824999999991],[-128.28445399999998,52.598602000000028],[-128.28750600000001,52.602776000000063],[-128.28973399999995,52.60833000000008],[-128.29269399999993,52.661549000000036],[-128.32305899999994,52.74110399999995],[-128.32638499999996,52.771378000000027],[-128.32501199999996,52.776100000000099],[-128.26322900000002,52.784645000000125],[-128.21063200000003,52.798515000000009],[-128.18582199999992,52.826942000000031],[-128.177795,52.826103000000046],[-128.17334,52.823326000000122],[-128.17028799999997,52.817771999999991],[-128.17584199999999,52.787773000000129],[-128.17861899999997,52.776100000000099],[-128.20776399999994,52.704436999999984],[-128.21026599999993,52.698875000000044],[-128.24722299999996,52.620544000000109],[-128.24972500000001,52.616660999999965],[-128.26141399999995,52.604439000000013],[-128.26974499999994,52.596939000000134]],[[-131.63973999999996,52.828049000000135],[-131.64666699999992,52.825829000000113],[-131.64889499999998,52.826103000000046],[-131.66973899999999,52.819160000000068],[-131.70834400000001,52.811378000000104],[-131.72387700000002,52.808327000000077],[-131.73306299999996,52.80860100000001],[-131.81332399999997,52.82027400000004],[-131.82388300000002,52.82777400000009],[-131.83138999999994,52.841934000000037],[-131.83029199999999,52.846656999999993],[-131.82250999999991,52.848045000000127],[-131.74859599999996,52.853324999999984],[-131.72860699999995,52.851387000000045],[-131.644745,52.835548000000131],[-131.636414,52.832497000000103],[-131.63973999999996,52.828049000000135]],[[-128.50527999999997,52.641106000000036],[-128.5125119999999,52.641106000000036],[-128.51611300000002,52.645271000000037],[-128.52029400000004,52.654991000000109],[-128.54000899999994,52.703323000000012],[-128.53500399999996,52.758049000000085],[-128.53362999999996,52.769157000000121],[-128.51391599999999,52.860825000000034],[-128.51028400000001,52.867493000000024],[-128.50613399999992,52.873047000000042],[-128.49887100000001,52.87082700000002],[-128.49194299999994,52.868599000000074],[-128.48553499999997,52.865273000000002],[-128.471924,52.853049999999996],[-128.46832299999994,52.848602000000028],[-128.45083599999992,52.805267000000015],[-128.45361300000002,52.782493999999986],[-128.45443699999998,52.776939000000084],[-128.50167799999991,52.647491000000002],[-128.50527999999997,52.641106000000036]],[[-129.61053500000003,52.954993999999999],[-129.61831699999999,52.953606000000093],[-129.62222299999996,52.958046000000081],[-129.65139799999992,53.013329000000113],[-129.650848,53.01888300000013],[-129.62441999999993,53.02388000000002],[-129.615814,53.024436999999921],[-129.60720800000001,53.022766000000047],[-129.57055699999989,53.013611000000026],[-129.5625,53.010551000000135],[-129.55749499999996,53.006660000000068],[-129.55667099999999,53.001389000000017],[-129.55862400000001,52.997490000000028],[-129.55334500000004,52.984993000000031],[-129.561127,52.970543000000077],[-129.59637499999991,52.959435000000099],[-129.61053500000003,52.954993999999999]],[[-129.531677,53.010551000000135],[-129.53890999999993,53.008049000000085],[-129.546967,53.008888000000013],[-129.58859299999995,53.024162000000103],[-129.64001500000001,53.044158999999979],[-129.63391099999996,53.056099000000074],[-129.56277499999993,53.053046999999992],[-129.52444500000001,53.033606999999961],[-129.51779199999993,53.029991000000109],[-129.51724200000001,53.024993999999992],[-129.52056900000002,53.018326000000059],[-129.531677,53.010551000000135]],[[-55.763061999999991,53.029434000000037],[-55.853333000000021,53.01527399999992],[-55.861945999999989,53.015549000000135],[-55.870834000000002,53.018599999999992],[-55.876388999999961,53.02748900000006],[-55.876105999999993,53.032768000000033],[-55.872771999999998,53.043883999999991],[-55.869719999999973,53.04972100000009],[-55.857779999999991,53.06749700000006],[-55.854445999999996,53.071663000000001],[-55.848609999999951,53.076102999999989],[-55.808333999999945,53.09137700000008],[-55.800551999999982,53.093605000000025],[-55.79222900000002,53.093048000000124],[-55.788612000000001,53.089714000000129],[-55.788337999999953,53.086655000000007],[-55.749167999999997,53.069160000000011],[-55.748885999999914,53.064712999999927],[-55.755004999999869,53.038604999999961],[-55.756667999999991,53.033051],[-55.763061999999991,53.029434000000037]],[[-129.60247799999996,53.057213000000047],[-129.61080899999996,53.056655999999975],[-129.69250499999993,53.075829000000056],[-129.70193499999999,53.078330999999935],[-129.70834399999995,53.08166499999993],[-129.72305299999999,53.099159000000043],[-129.73611500000004,53.12221500000004],[-129.73831200000001,53.12721300000004],[-129.73275799999999,53.131103999999937],[-129.716949,53.133881000000031],[-129.69973800000002,53.134995000000004],[-129.66805999999991,53.136108000000092],[-129.66250600000001,53.135551000000021],[-129.65444899999994,53.132767000000058],[-129.650848,53.130547000000035],[-129.64416499999999,53.12721300000004],[-129.62081899999998,53.112494999999967],[-129.615814,53.108604000000071],[-129.58804299999991,53.084717000000069],[-129.58416699999998,53.08027600000014],[-129.58193999999997,53.075554000000068],[-129.58612099999999,53.069992000000127],[-129.59664900000001,53.061104000000114],[-129.60247799999996,53.057213000000047]],[[-79.909164000000033,53.081940000000145],[-79.919723999999974,53.081940000000145],[-79.926102000000014,53.084991000000002],[-79.92971799999998,53.089432000000102],[-79.932220000000029,53.094436999999971],[-79.938599000000011,53.122490000000084],[-79.938599000000011,53.134995000000004],[-79.93499799999995,53.147774000000084],[-79.930557000000022,53.152489000000116],[-79.906386999999995,53.172768000000076],[-79.897781000000009,53.174438000000009],[-79.887511999999958,53.174438000000009],[-79.877486999999974,53.173050000000103],[-79.866393999999957,53.16944100000012],[-79.858886999999868,53.166939000000013],[-79.846114999999941,53.160545000000013],[-79.795836999999892,53.116386000000034],[-79.789444000000003,53.106941000000006],[-79.787215999999944,53.101936000000137],[-79.789444000000003,53.095825000000048],[-79.796951000000035,53.093605000000025],[-79.835555999999997,53.083878000000084],[-79.843886999999995,53.082214000000079],[-79.909164000000033,53.081940000000145]],[[-129.4324949999999,53.151382000000012],[-129.35278299999993,53.072220000000073],[-129.29000899999988,52.993607000000054],[-129.28750600000001,52.978043000000014],[-129.28945899999985,52.971930999999984],[-129.29583700000001,52.968880000000013],[-129.31222499999996,52.966934000000094],[-129.341095,52.973320000000001],[-129.41418499999997,53.010551000000135],[-129.41915900000004,53.014442000000031],[-129.42138699999998,53.019157000000064],[-129.42471299999994,53.040276000000063],[-129.42916899999994,53.04972100000009],[-129.475281,53.101936000000137],[-129.50527999999997,53.126380999999981],[-129.51196300000004,53.129714999999976],[-129.52194199999985,53.131103999999937],[-129.53750600000001,53.128326000000129],[-129.54473899999994,53.128326000000129],[-129.54724099999993,53.133049000000142],[-129.54806500000001,53.14916199999999],[-129.546967,53.16027100000008],[-129.5386049999999,53.171660999999915],[-129.52166699999992,53.18360100000001],[-129.51446499999997,53.185822000000144],[-129.49859599999996,53.188599000000011],[-129.49026499999997,53.188881000000094],[-129.47997999999995,53.187767000000122],[-129.470551,53.185265000000015],[-129.46276899999992,53.179993000000081],[-129.4324949999999,53.151382000000012]],[[-81.106109999999887,53.199714999999969],[-81.087783999999886,53.17943600000001],[-81.045272999999952,53.148605000000089],[-80.978881999999942,53.113052000000039],[-80.973617999999988,53.109436000000017],[-80.809433000000013,52.97693600000008],[-80.775008999999955,52.944434999999942],[-80.763335999999924,52.931381000000044],[-80.669158999999979,52.776939000000084],[-80.667769999999962,52.771935000000099],[-80.667496000000028,52.759438000000102],[-80.670836999999892,52.745827000000133],[-80.673049999999932,52.740547000000049],[-80.699722000000008,52.69609800000012],[-80.705001999999979,52.692214999999976],[-80.712509000000011,52.689156000000025],[-80.720551,52.688324000000136],[-80.731673999999998,52.688881000000038],[-80.739166000000012,52.691376000000048],[-80.749161000000015,52.698875000000044],[-80.753066999999987,52.703323000000012],[-80.765839000000028,52.709717000000012],[-80.797500999999954,52.719153999999946],[-80.815001999999993,52.723045000000013],[-80.861388999999917,52.731102000000021],[-80.898894999999982,52.737495000000138],[-80.918883999999991,52.740272999999945],[-80.995543999999938,52.746101000000067],[-81.015563999999927,52.748604000000057],[-81.024444999999957,52.750549000000035],[-81.138061999999934,52.788048000000117],[-81.15306099999998,52.793052999999986],[-81.198882999999967,52.814156000000082],[-81.212783999999942,52.819991999999957],[-81.251953000000015,52.832497000000103],[-81.287216000000001,52.83998900000006],[-81.369155999999862,52.856102000000078],[-81.41722099999987,52.863052000000096],[-81.58444199999991,52.889160000000061],[-81.649170000000026,52.907211000000075],[-81.763625999999931,52.937767000000008],[-81.781386999999995,52.941658000000075],[-81.811660999999958,52.945267000000058],[-81.834166999999866,52.946381000000031],[-81.881377999999984,52.954162999999994],[-81.916655999999989,52.96166199999999],[-81.933318999999983,52.965828000000045],[-81.949721999999952,52.971375000000023],[-81.962783999999886,52.97693600000008],[-82.049987999999985,53.014442000000031],[-82.056655999999862,53.017494000000113],[-82.061661000000015,53.021102999999925],[-82.063323999999909,53.026657000000114],[-82.060271999999998,53.031937000000028],[-82.053329000000019,53.041938999999957],[-82.049164000000019,53.046661000000029],[-81.974716000000001,53.113883999999985],[-81.965285999999935,53.12221500000004],[-81.954177999999956,53.129990000000134],[-81.910827999999981,53.158882000000062],[-81.892226999999991,53.168326999999977],[-81.864440999999999,53.178604000000121],[-81.848052999999936,53.181664000000012],[-81.826110999999969,53.181381000000044],[-81.714721999999881,53.188599000000011],[-81.543059999999969,53.209160000000054],[-81.385283999999899,53.224990999999989],[-81.374999999999943,53.224990999999989],[-81.295546999999999,53.217765999999983],[-81.116394000000014,53.200829000000113],[-81.106109999999887,53.199714999999969]],[[-131.76223800000002,53.196655000000078],[-131.6305539999999,53.084159999999997],[-131.595551,53.046103999999957],[-131.59304800000001,53.041382000000056],[-131.59472700000003,53.035271000000023],[-131.60165399999994,53.033051],[-131.61026000000004,53.032211000000132],[-131.62887599999999,53.032494000000099],[-131.63973999999996,53.034439000000077],[-131.73666400000002,53.053879000000052],[-131.75558499999994,53.058601000000124],[-131.77444500000001,53.068886000000077],[-131.78390499999989,53.071381000000088],[-131.79473899999994,53.073051000000078],[-131.81362899999999,53.073607999999979],[-131.82971199999992,53.071381000000088],[-131.94332900000001,53.054993000000024],[-131.96472199999999,53.046386999999925],[-131.91195700000003,53.005271999999991],[-131.90835599999991,53.011108000000036],[-131.89944499999996,53.019714000000135],[-131.88806199999999,53.026939000000027],[-131.87027,53.037498000000028],[-131.85611,53.04222100000004],[-131.84777800000001,53.043052999999929],[-131.83111600000001,53.043052999999929],[-131.81167600000003,53.039718999999991],[-131.662781,53.00777400000004],[-131.644745,53.003882999999973],[-131.62860099999995,52.998328999999956],[-131.61498999999998,52.991661000000022],[-131.609711,52.988045000000113],[-131.59805299999999,52.97526600000009],[-131.59582499999993,52.964714000000072],[-131.59750399999996,52.958602999999982],[-131.61554000000001,52.920273000000066],[-131.662781,52.882210000000043],[-131.66805999999997,52.878043999999932],[-131.68057299999992,52.871658000000025],[-131.68749999999994,52.869155999999975],[-131.70443699999993,52.867767000000129],[-131.80221599999999,52.86471599999993],[-131.80862400000001,52.865829000000019],[-131.833618,52.88499500000006],[-131.849152,52.901932000000102],[-131.87027,52.922768000000076],[-131.88473499999992,52.934433000000013],[-131.89001500000001,52.93832400000008],[-131.898346,52.941100999999946],[-131.906677,52.940269000000058],[-131.93859899999995,52.934990000000084],[-131.94473299999999,52.931664000000012],[-131.982483,52.879715000000033],[-131.97860700000001,52.875549000000092],[-131.96859699999999,52.874435000000119],[-131.95278899999988,52.875267000000065],[-131.94528200000002,52.876938000000109],[-131.93139599999995,52.881660000000011],[-131.85638399999993,52.856102000000078],[-131.77557399999989,52.716660000000047],[-131.767517,52.713882000000012],[-131.73361199999999,52.69860100000011],[-131.72692900000004,52.695541000000048],[-131.72305299999988,52.691101000000003],[-131.683899,52.642220000000009],[-131.68139600000001,52.637496999999996],[-131.65945399999993,52.581665000000044],[-131.57278400000001,52.529991000000052],[-131.56527700000004,52.531662000000097],[-131.55667099999994,52.532211000000018],[-131.54583700000001,52.530273000000079],[-131.48193400000002,52.507773999999984],[-131.46749899999992,52.501389000000131],[-131.42361499999998,52.460823000000119],[-131.42748999999998,52.414993000000095],[-131.39849899999996,52.377827000000025],[-131.39533999999998,52.375492000000122],[-131.39016699999996,52.374660000000006],[-131.36749299999991,52.381827999999985],[-131.36549400000001,52.384491000000025],[-131.36599699999988,52.390986999999996],[-131.36715700000002,52.397160000000042],[-131.357483,52.403320000000065],[-131.35833699999989,52.414153999999996],[-131.35305799999998,52.41832700000009],[-131.32833900000003,52.431107000000054],[-131.31304899999998,52.434158000000082],[-131.27252199999998,52.438881000000038],[-131.25558499999988,52.440269000000001],[-131.23638900000003,52.439156000000082],[-131.23248299999995,52.434714999999983],[-131.24749800000001,52.365829000000133],[-131.25085399999995,52.359160999999972],[-131.25836200000003,52.34777100000008],[-131.26306199999999,52.34276600000004],[-131.30311599999993,52.332100000000025],[-131.31977799999993,52.335106000000053],[-131.33059700000001,52.332770999999923],[-131.33248899999995,52.293610000000001],[-131.32833900000003,52.284995999999978],[-131.32443199999989,52.280822999999998],[-131.27139299999999,52.277771000000087],[-131.259186,52.284164000000033],[-131.25613399999992,52.290833000000077],[-131.24832199999997,52.302216000000101],[-131.17971799999998,52.317772000000048],[-131.17193599999996,52.319442999999922],[-131.136414,52.311378000000047],[-131.09500099999997,52.286110000000122],[-131.01501500000001,52.225548000000117],[-131.00750699999998,52.217209000000082],[-131.00527999999991,52.206657000000064],[-131.01168799999988,52.193604000000107],[-131.01556400000004,52.187767000000122],[-131.024719,52.178047000000049],[-131.030304,52.173882000000049],[-131.036407,52.170830000000137],[-131.04305999999991,52.168326999999977],[-131.11512799999997,52.168289000000016],[-131.16610700000001,52.125549000000092],[-131.18057299999987,52.121658000000025],[-131.26473999999985,52.11971299999999],[-131.29888900000003,52.150268999999923],[-131.36025999999993,52.189156000000139],[-131.36694299999999,52.192490000000134],[-131.38946499999997,52.205826000000059],[-131.41168200000004,52.220543000000077],[-131.55111699999998,52.333878000000084],[-131.57333399999993,52.360824999999977],[-131.58194000000003,52.379990000000134],[-131.582764,52.385269000000108],[-131.58056599999986,52.390548999999965],[-131.57778899999994,52.393607999999972],[-131.57083099999994,52.396102999999982],[-131.54806500000001,52.400543000000027],[-131.53973399999995,52.401100000000099],[-131.52972399999993,52.400269000000094],[-131.52029400000004,52.397774000000027],[-131.56140099999999,52.431664000000126],[-131.66168199999998,52.478324999999984],[-131.67916899999994,52.483604000000128],[-131.70944199999991,52.491104000000007],[-131.76223800000002,52.50499700000006],[-131.77529899999996,52.51166500000005],[-131.89279199999999,52.582771000000093],[-132.01751699999994,52.677490000000034],[-132.08194000000003,52.727485999999942],[-132.08471700000001,52.732208000000014],[-132.060272,52.755272000000048],[-132.01028399999996,52.775269000000094],[-132.00250199999999,52.776939000000084],[-131.993042,52.774436999999978],[-131.97305299999999,52.764717000000076],[-131.96389799999997,52.756660000000124],[-131.94445799999988,52.735549999999989],[-131.93362400000001,52.728043000000014],[-131.92694099999994,52.724709000000075],[-131.91751099999988,52.722487999999942],[-131.91723599999995,52.725822000000107],[-131.93722499999996,52.763611000000083],[-131.93972799999995,52.768326000000116],[-131.95166,52.781105000000139],[-131.96221899999995,52.788605000000018],[-131.96887200000003,52.791939000000013],[-132.03417999999994,52.812767000000122],[-132.06167599999998,52.813881000000094],[-132.05804399999994,52.804161000000022],[-132.05557299999987,52.793610000000058],[-132.10247800000002,52.749435000000062],[-132.11026000000004,52.748046999999985],[-132.12026999999995,52.748877999999991],[-132.12747199999995,52.750832000000003],[-132.21417199999991,52.804710000000114],[-132.21945199999999,52.808327000000077],[-132.22888199999994,52.816382999999973],[-132.31640599999997,52.902214000000129],[-132.34414700000002,52.931664000000012],[-132.34695399999993,52.936377999999991],[-132.34304799999995,52.942214999999976],[-132.32971199999992,52.94582400000013],[-132.31362899999999,52.948043999999982],[-132.25558499999994,52.954711999999915],[-132.24527,52.953880000000026],[-132.23803699999991,52.951935000000049],[-132.16778599999992,52.928047000000106],[-132.15640300000001,52.958885000000066],[-132.11248799999998,52.987770000000125],[-132.11026000000004,52.993049999999982],[-132.11276199999992,52.997772000000055],[-132.11944599999998,53.00110600000005],[-132.25613399999997,53.028877000000136],[-132.26696799999996,53.030823000000055],[-132.29501300000004,53.031105000000082],[-132.41195700000003,53.031937000000028],[-132.47970599999996,53.027214000000015],[-132.49609399999991,53.032768000000033],[-132.50778199999996,53.040549999999996],[-132.51196300000004,53.044716000000051],[-132.55279499999995,53.089714000000129],[-132.55557299999992,53.094436999999971],[-132.56362899999999,53.139160000000004],[-132.56222500000001,53.145271000000093],[-132.55667099999994,53.149436999999978],[-132.54916399999991,53.151100000000099],[-132.53945899999991,53.148880000000077],[-132.52584799999994,53.142220000000066],[-132.50140399999998,53.133881000000031],[-132.48165899999998,53.130820999999969],[-132.45111099999986,53.128044000000102],[-132.41363499999989,53.127486999999974],[-132.378601,53.129433000000063],[-132.21081499999997,53.141662999999994],[-132.07083099999994,53.153877000000023],[-132.06390399999987,53.156380000000013],[-132.05777,53.159714000000008],[-132.03057899999999,53.179993000000081],[-132.00750700000003,53.1947100000001],[-131.92834500000004,53.230545000000006],[-131.92138699999992,53.233047000000056],[-131.811127,53.253608999999983],[-131.80194099999994,53.253326000000015],[-131.794464,53.251388999999961],[-131.79055800000003,53.247214999999926],[-131.76223800000002,53.196655000000078]],[[-55.778052999999943,53.289719000000105],[-55.786667000000023,53.288330000000087],[-55.794448999999929,53.291107000000011],[-55.797226000000023,53.295546999999999],[-55.793334999999956,53.300545],[-55.785003999999958,53.303604000000007],[-55.776108000000022,53.300270000000012],[-55.776389999999992,53.295273000000066],[-55.778052999999943,53.289719000000105]],[[-128.68945299999996,53.16443600000008],[-128.67944299999994,53.163047999999947],[-128.67083700000001,53.163605000000075],[-128.65222199999999,53.16276600000009],[-128.64196799999996,53.161377000000073],[-128.62469499999997,53.155548000000067],[-128.60555999999997,53.145271000000093],[-128.57611099999991,53.105270000000132],[-128.53167699999995,53.021102999999925],[-128.52890000000002,53.011108000000036],[-128.52056900000002,52.959435000000099],[-128.51834099999991,52.943604000000107],[-128.51779199999987,52.927489999999977],[-128.51834099999991,52.911102000000142],[-128.52001999999999,52.899719000000118],[-128.52279699999991,52.888046000000088],[-128.57028199999996,52.691376000000048],[-128.57223499999992,52.685265000000129],[-128.57528699999995,52.679993000000024],[-128.59359699999993,52.659156999999993],[-128.58526599999988,52.659431000000097],[-128.57748400000003,52.65638000000007],[-128.58581499999991,52.6322100000001],[-128.59222399999993,52.613884000000098],[-128.59722899999991,52.609161000000086],[-128.60497999999995,52.607773000000009],[-128.74887099999995,52.597214000000122],[-128.75167799999997,52.60083000000003],[-128.74859600000002,52.748604000000057],[-128.74804699999999,52.754165999999998],[-128.74444600000004,52.760826000000009],[-128.69250499999998,52.856102000000078],[-128.65335099999999,52.892769000000101],[-128.648346,52.89777400000014],[-128.64474499999994,52.904160000000047],[-128.64334099999996,52.915543000000071],[-128.64196799999996,52.948601000000053],[-128.64334099999996,52.958885000000066],[-128.646973,52.963325999999995],[-128.65335099999999,52.96665999999999],[-128.663635,52.968048000000067],[-128.67138699999998,52.96665999999999],[-128.67694099999994,52.962769000000094],[-128.67999299999997,52.957771000000093],[-128.75112899999999,52.835823000000119],[-128.75390600000003,52.830826000000059],[-128.76223800000002,52.810822000000087],[-128.76446499999997,52.804710000000114],[-128.78057899999999,52.739989999999977],[-128.78140299999995,52.734160999999972],[-128.77999899999998,52.72387700000013],[-128.77780200000001,52.718880000000013],[-128.77111799999994,52.704711999999972],[-128.76556400000004,52.695541000000048],[-128.77889999999991,52.66415400000011],[-128.84637499999997,52.653320000000065],[-128.88445999999999,52.648048000000131],[-128.89251699999994,52.64888000000002],[-129,52.697212000000093],[-129.03277600000001,52.719711000000075],[-129.04779099999996,52.731377000000009],[-129.08029199999999,52.772491000000116],[-129.10861199999999,52.812767000000122],[-129.11080899999996,52.817497000000117],[-129.114441,52.821938000000046],[-129.11886600000003,52.83138300000013],[-129.12191799999994,52.852218999999934],[-129.12191799999994,52.863052000000096],[-129.11999500000002,52.869155999999975],[-129.11080899999996,52.877487000000031],[-129.10360699999995,52.879715000000033],[-129.09500100000002,52.880272000000105],[-129.08444199999997,52.878043999999932],[-129.0763849999999,52.87499200000002],[-129.02224699999988,52.905548000000124],[-128.95178199999992,52.973660000000052],[-128.86999499999996,53.021935000000042],[-128.85498000000001,53.025269000000037],[-128.84082000000001,53.029716000000121],[-128.83639499999998,53.03555300000005],[-128.84359699999999,53.044158999999979],[-128.89556899999997,53.08277099999998],[-128.96389799999992,53.121657999999968],[-128.970551,53.124992000000134],[-129.00222799999995,53.136940000000038],[-129.01168799999999,53.139717000000076],[-129.01583900000003,53.133881000000031],[-129.01501499999995,53.128875999999991],[-129.00473,53.109993000000088],[-128.99386599999997,53.097214000000065],[-128.98748799999998,53.095825000000048],[-128.98110999999994,53.09887700000013],[-128.97387700000002,53.101105000000132],[-128.96444699999995,53.100548000000003],[-128.95666499999999,53.097771000000137],[-128.912781,53.073051000000078],[-128.86444099999989,53.038887000000045],[-128.862213,53.034164000000089],[-129.05584699999997,52.909156999999936],[-129.06915299999991,52.90387700000008],[-129.09500100000002,52.902489000000003],[-129.10583500000001,52.904708999999968],[-129.15945399999998,52.919715999999994],[-129.16583299999996,52.923049999999989],[-129.169464,52.927489999999977],[-129.17529300000001,52.936377999999991],[-129.18554700000004,52.955269000000044],[-129.18722499999996,52.965546000000018],[-129.191956,53.00777400000004],[-129.19137599999999,53.013329000000113],[-129.18804899999992,53.024162000000103],[-129.16665599999993,53.06610100000006],[-129.16168200000004,53.0711060000001],[-129.15472399999999,53.073326000000066],[-129.13165300000003,53.078049000000078],[-129.11804199999989,53.079163000000051],[-129.11749299999991,53.073882999999967],[-129.11804199999989,53.068329000000006],[-129.11499000000003,53.064712999999927],[-129.10861199999999,53.067772000000105],[-129.08248899999995,53.089989000000003],[-129.075287,53.10305000000011],[-129.07333399999999,53.109160999999972],[-129.07055700000001,53.131660000000124],[-129.05889899999988,53.231377000000123],[-129.06027199999988,53.241661000000136],[-129.064728,53.251105999999993],[-129.07193000000001,53.25999500000006],[-129.08221400000002,53.267769000000101],[-129.08972199999994,53.287216000000114],[-129.08612099999999,53.293610000000001],[-129.07971199999997,53.296661000000029],[-129.06664999999992,53.300827000000083],[-129.04305999999997,53.30471],[-129.025848,53.305550000000096],[-129.01861600000001,53.305550000000096],[-128.90084799999994,53.290276000000006],[-128.89138799999989,53.287773000000016],[-128.88137800000004,53.279991000000052],[-128.87777699999992,53.275826000000052],[-128.86389199999991,53.263610999999969],[-128.84359699999999,53.248047000000042],[-128.83221399999996,53.240546999999992],[-128.77529900000002,53.208885000000009],[-128.71167000000003,53.173882000000049],[-128.70526099999989,53.170546999999942],[-128.68945299999996,53.16443600000008]],[[-129.15307599999994,53.098328000000038],[-129.16168200000004,53.097771000000137],[-129.25945999999999,53.09804500000007],[-129.28945899999985,53.101936000000137],[-129.31140099999999,53.116936000000067],[-129.32665999999989,53.128601000000003],[-129.33248900000001,53.13749700000011],[-129.33471699999996,53.142493999999999],[-129.33639500000004,53.152770999999973],[-129.33889799999986,53.179161000000022],[-129.3383179999999,53.184990000000028],[-129.33639500000004,53.191101000000117],[-129.32528699999989,53.216103000000032],[-129.27389500000004,53.328049000000021],[-129.26806599999992,53.331940000000088],[-129.26028399999996,53.333327999999995],[-129.250854,53.333054000000061],[-129.22915599999988,53.328880000000026],[-129.22692899999998,53.326102999999932],[-129.20889299999999,53.321937999999932],[-129.19415299999997,53.315544000000102],[-129.18112199999996,53.308601000000067],[-129.17611699999998,53.30471],[-129.16860999999994,53.296104000000128],[-129.14529399999998,53.22165700000005],[-129.13247699999999,53.118599000000017],[-129.13192699999996,53.11360899999994],[-129.1339109999999,53.107498000000078],[-129.13891599999994,53.102493000000038],[-129.15307599999994,53.098328000000038]],[[-79.942764000000011,53.266936999999984],[-80.009170999999924,53.263885000000073],[-80.018065999999862,53.265830999999991],[-80.024445000000014,53.268883000000073],[-80.081679999999949,53.316101000000003],[-80.083892999999989,53.321106000000043],[-80.085281000000009,53.326942000000088],[-80.073333999999988,53.348877000000073],[-80.068892999999946,53.353325000000041],[-80.061385999999914,53.355553000000043],[-79.999724999999955,53.364716000000044],[-79.944716999999969,53.368050000000039],[-79.950561999999934,53.349716000000058],[-79.951949999999954,53.348327999999981],[-79.913054999999986,53.296104000000128],[-79.91194200000001,53.29055000000011],[-79.913329999999917,53.283051000000114],[-79.920836999999949,53.273048000000074],[-79.927215999999987,53.27027099999998],[-79.942764000000011,53.266936999999984]],[[-129.35833700000001,53.304161000000079],[-129.37441999999999,53.301383999999985],[-129.38363600000002,53.301933000000133],[-129.3875119999999,53.306099000000017],[-129.43499799999995,53.378876000000105],[-129.43307500000003,53.384720000000129],[-129.39501999999999,53.410819999999944],[-129.386414,53.40915700000005],[-129.37970000000001,53.40554800000001],[-129.37387100000001,53.400826000000109],[-129.36663799999991,53.398880000000077],[-129.32861300000002,53.377769000000001],[-129.30557299999998,53.335823000000005],[-129.30334499999992,53.331107999999972],[-129.30749500000002,53.31888600000002],[-129.31249999999989,53.313880999999981],[-129.32693499999999,53.309715000000097],[-129.35833700000001,53.304161000000079]],[[-55.787505999999951,53.394157000000064],[-55.793059999999969,53.391663000000108],[-55.801392000000021,53.392493999999942],[-55.949439999999981,53.430275000000108],[-55.958053999999947,53.434158000000082],[-55.971663999999919,53.445824000000016],[-55.978881999999942,53.454712000000029],[-55.979163999999912,53.459159999999997],[-55.976386999999988,53.463051000000064],[-55.958892999999932,53.472487999999998],[-55.945549000000028,53.478600000000142],[-55.931670999999994,53.483879000000115],[-55.923889000000031,53.485549999999989],[-55.916388999999981,53.485825000000034],[-55.883057000000008,53.486382000000106],[-55.878051999999968,53.486656000000039],[-55.811942999999928,53.483879000000115],[-55.757224999999949,53.468322999999998],[-55.740554999999915,53.462212000000079],[-55.729163999999969,53.455269000000101],[-55.729439000000013,53.450271999999984],[-55.787505999999951,53.394157000000064]],[[-128.94250499999998,53.317497000000003],[-129.11138899999997,53.315826000000129],[-129.12222299999996,53.318054000000132],[-129.12582399999991,53.322495000000004],[-129.13891599999994,53.339989000000116],[-129.14334099999996,53.349716000000058],[-129.14416499999993,53.354996000000142],[-129.14306599999986,53.366104000000121],[-129.14083899999997,53.37221500000004],[-129.13445999999993,53.383880999999974],[-129.08270299999998,53.429259999999999],[-129.05406199999999,53.453601999999989],[-129.05883799999998,53.487965000000145],[-129.051941,53.50499700000006],[-129.04779099999996,53.510551000000021],[-129.03778099999988,53.520271000000093],[-129.02194199999997,53.533882000000062],[-129.015289,53.536658999999986],[-128.99941999999987,53.53943600000008],[-128.988586,53.537216000000058],[-128.984711,53.533051000000057],[-128.98416099999997,53.52777100000003],[-128.98553499999997,53.523048000000017],[-128.98611499999998,53.513054000000011],[-128.98611499999998,53.502220000000136],[-128.9844359999999,53.491661000000079],[-128.97555499999987,53.472762999999986],[-128.95361300000002,53.446655000000021],[-128.94137599999993,53.434158000000082],[-128.93612699999994,53.430275000000108],[-128.90335099999993,53.39138000000014],[-128.90112299999998,53.386658000000068],[-128.90029900000002,53.381378000000041],[-128.91805999999997,53.331383000000017],[-128.92251599999997,53.325828999999999],[-128.92806999999999,53.321663000000115],[-128.94250499999998,53.317497000000003]],[[-79.709732000000031,53.508049000000142],[-79.720276000000013,53.507499999999993],[-79.730559999999969,53.508888000000127],[-79.746947999999918,53.513328999999999],[-79.764724999999942,53.523605000000089],[-79.769729999999925,53.527214000000129],[-79.773620999999991,53.531662000000097],[-79.77027899999996,53.536942000000124],[-79.761397999999929,53.546104000000071],[-79.755004999999983,53.543053000000043],[-79.70695499999988,53.515549000000021],[-79.703338999999914,53.511108000000092],[-79.709732000000031,53.508049000000142]],[[-129.93472299999985,53.484161000000029],[-129.94277999999991,53.482764999999972],[-129.95220899999998,53.483047000000056],[-130.01446499999997,53.501938000000052],[-130.02111799999994,53.505272000000048],[-129.98858599999988,53.528603000000089],[-129.94195599999995,53.551102000000071],[-129.93417399999998,53.552489999999977],[-129.92611699999992,53.551658999999972],[-129.89334099999991,53.545546999999999],[-129.88668799999999,53.542221000000097],[-129.88418599999994,53.537216000000058],[-129.88696300000004,53.534163999999976],[-129.894745,53.521934999999928],[-129.89889499999998,53.516388000000006],[-129.913635,53.501938000000052],[-129.92916899999994,53.488327000000083],[-129.93472299999985,53.484161000000029]],[[-129.87942499999991,53.392768999999987],[-129.72915599999993,53.215271000000087],[-129.73028599999992,53.204163000000108],[-129.73220799999996,53.198044000000095],[-129.74249299999997,53.178329000000076],[-129.75085399999989,53.166939000000013],[-129.75585899999993,53.162209000000018],[-129.76223799999997,53.158882000000062],[-129.86416600000001,53.153046000000018],[-129.91223100000002,53.156380000000013],[-129.93167099999999,53.158043000000077],[-129.93695099999997,53.161933999999974],[-130.08804299999991,53.289436000000137],[-130.11111500000004,53.328049000000021],[-130.16500899999988,53.358330000000137],[-130.20333899999997,53.378876000000105],[-130.24249299999997,53.384163000000058],[-130.261414,53.384720000000129],[-130.28695700000003,53.381378000000041],[-130.29638699999998,53.381660000000068],[-130.30584699999997,53.384163000000058],[-130.31640600000003,53.391937000000041],[-130.40194700000001,53.479988000000048],[-130.52722199999999,53.552216000000044],[-130.52999899999998,53.567771999999991],[-130.52944899999994,53.573326000000009],[-130.52224699999994,53.618599000000074],[-130.52029399999998,53.624709999999993],[-130.50836200000003,53.631935000000055],[-130.459991,53.637496999999996],[-130.450287,53.634995000000117],[-130.39584399999995,53.619438000000059],[-130.39111300000002,53.61693600000001],[-130.37554899999992,53.612212999999997],[-130.27529900000002,53.580276000000026],[-130.20220900000004,53.553878999999938],[-130.14083900000003,53.528877000000023],[-129.97720300000003,53.455550999999957],[-129.94415299999991,53.438598999999954],[-129.93222000000003,53.431380999999988],[-129.92056300000002,53.424164000000019],[-129.88418599999994,53.397217000000126],[-129.87942499999991,53.392768999999987]],[[-129.08639500000004,53.446097999999949],[-129.15750099999997,53.392768999999987],[-129.16778599999998,53.593880000000127],[-129.16583299999996,53.610825000000091],[-129.16305499999999,53.622489999999971],[-129.16082799999998,53.62860100000006],[-129.15307599999994,53.638603000000046],[-129.14724699999994,53.642494000000113],[-129.14083899999997,53.645546000000024],[-129.05249000000003,53.681106999999997],[-129.03860499999985,53.686377999999991],[-129.00805699999995,53.693321000000026],[-128.98330699999991,53.696655000000021],[-128.87554899999998,53.709434999999928],[-128.832764,53.712494000000106],[-128.82388299999997,53.713051000000007],[-128.81887800000004,53.709160000000111],[-128.82110599999999,53.703049000000021],[-128.82360799999998,53.700546000000088],[-128.87222299999991,53.661102000000142],[-128.97970599999996,53.58387799999997],[-128.98638900000003,53.580826000000059],[-128.99221799999992,53.576942000000031],[-129.07556199999993,53.514717000000132],[-129.08554100000003,53.50499700000006],[-129.08999599999999,53.499435000000062],[-129.09359699999993,53.492767000000129],[-129.09414699999996,53.487213000000111],[-129.093323,53.481934000000138],[-129.08889799999997,53.472487999999998],[-129.08526599999993,53.468047999999953],[-129.08306899999997,53.463326000000052],[-129.08221400000002,53.458328000000051],[-129.08276399999988,53.452492000000007],[-129.08639500000004,53.446097999999949]],[[-130.09109499999994,53.569443000000035],[-130.09832800000004,53.566940000000102],[-130.10775799999999,53.567497000000003],[-130.14862099999999,53.571938000000102],[-130.21887199999992,53.587212000000136],[-130.22833299999996,53.589431999999988],[-130.32916299999994,53.618049999999982],[-130.34249899999998,53.624709999999993],[-130.39028899999988,53.669991000000039],[-130.40335099999999,53.682495000000074],[-130.39111300000002,53.699432000000058],[-130.29888899999997,53.796944000000053],[-130.2836299999999,53.79833200000013],[-130.27194199999997,53.797775000000058],[-130.26168799999994,53.796386999999982],[-130.24664299999989,53.790276000000063],[-130.23330699999985,53.783607000000018],[-130.11944600000004,53.686653000000035],[-130.11721799999998,53.681938000000002],[-130.09109499999994,53.569443000000035]],[[-56.86721799999998,53.764998999999932],[-56.948607999999979,53.750000000000057],[-56.982773000000009,53.755271999999991],[-57.01139099999989,53.781105000000139],[-57.014450000000011,53.785553000000107],[-57.012222000000008,53.790276000000063],[-57.006667999999991,53.794716000000108],[-57,53.79833200000013],[-56.984726000000023,53.803879000000109],[-56.966942000000017,53.803879000000109],[-56.863060000000019,53.798050000000103],[-56.84444400000001,53.792496000000085],[-56.847518999999977,53.786644000000138],[-56.86721799999998,53.764998999999932]],[[-129.82611099999991,53.724158999999986],[-129.59722899999997,53.550270000000125],[-129.51611300000002,53.488045000000056],[-129.42471299999994,53.411377000000016],[-129.43472299999996,53.401656999999943],[-129.45165999999995,53.379158000000018],[-129.45498699999996,53.372490000000028],[-129.47415199999995,53.289162000000033],[-129.47387700000002,53.239990000000091],[-129.50668299999995,53.216660000000104],[-129.56390399999998,53.207497000000103],[-129.72582999999992,53.340546000000018],[-129.800568,53.380546999999979],[-129.80721999999997,53.384163000000058],[-129.82223499999986,53.401382000000126],[-129.85833700000001,53.456383000000073],[-129.87719699999997,53.50499700000006],[-129.87026999999995,53.518051000000128],[-129.86999500000002,53.534721000000047],[-129.87026999999995,53.545546999999999],[-129.88391100000001,53.579720000000009],[-129.91607699999992,53.601715000000013],[-129.9192349999999,53.604050000000143],[-129.92489599999999,53.605545000000006],[-129.93022199999996,53.605213000000106],[-129.939728,53.603549999999984],[-129.94305399999985,53.601215000000025],[-129.94605999999987,53.598216999999977],[-129.94555700000001,53.59521500000011],[-129.96139500000004,53.594711000000132],[-129.96554600000002,53.589156999999943],[-129.99941999999993,53.574714999999969],[-130.00750699999998,53.573326000000009],[-130.01611300000002,53.572769000000108],[-130.02694699999989,53.574714999999969],[-130.04028299999993,53.58138300000013],[-130.05166600000001,53.594437000000028],[-130.05639599999995,53.603882000000112],[-130.05584699999991,53.609436000000073],[-130.05166600000001,53.615273000000059],[-130.03085299999987,53.622765000000015],[-129.98288000000002,53.641605000000084],[-129.97805799999992,53.642436999999973],[-129.96240199999994,53.643436000000065],[-129.95622300000002,53.642769000000101],[-129.94955400000003,53.641434000000118],[-129.93505900000002,53.636272000000076],[-129.92938199999998,53.634765999999956],[-129.926895,53.636772000000065],[-129.92820699999993,53.639602999999966],[-129.93440199999992,53.644268000000125],[-129.94956999999994,53.646805000000086],[-129.95996100000002,53.649501999999927],[-129.96726999999993,53.650299000000018],[-129.98693799999995,53.658600000000092],[-130.01889,53.653046000000074],[-130.091949,53.677216000000101],[-130.15695199999999,53.721375000000023],[-130.283905,53.83277099999998],[-130.286407,53.837493999999992],[-130.27917499999995,53.856384000000105],[-130.27029400000004,53.875549000000092],[-130.26641799999999,53.881378000000097],[-130.25472999999994,53.889160000000061],[-130.20166,53.912491000000102],[-130.19445799999994,53.914711000000125],[-130.18640099999999,53.916100000000085],[-130.10916099999992,53.885551000000021],[-129.96444699999995,53.805824000000086],[-129.83139,53.728043000000014],[-129.82611099999991,53.724158999999986]],[[-79.864166000000012,53.906380000000013],[-79.873885999999914,53.90415999999999],[-79.906113000000005,53.913879000000009],[-79.918883999999991,53.920273000000066],[-79.922775000000001,53.924713000000054],[-79.925277999999878,53.929717999999923],[-79.926392000000021,53.935265000000072],[-79.915008999999998,53.933876000000055],[-79.867492999999968,53.919715999999994],[-79.862212999999997,53.915825000000098],[-79.860001000000011,53.910820000000058],[-79.864166000000012,53.906380000000013]],[[-130.14974999999998,53.989159000000086],[-130.16805999999997,53.988884000000098],[-130.179169,53.990829000000076],[-130.19415300000003,53.997214999999983],[-130.20306400000004,54.005271999999934],[-130.21499600000004,54.029160000000104],[-130.21694899999994,54.039436000000137],[-130.21640000000002,54.044998000000078],[-130.21304299999997,54.051659000000029],[-130.20278899999994,54.069160000000011],[-130.19360399999999,54.079720000000123],[-130.18640099999999,54.081940000000145],[-130.17834500000004,54.083328000000051],[-130.16861,54.083054000000118],[-130.15917999999994,54.080551000000128],[-130.15557899999999,54.075554000000011],[-130.14889500000004,54.072220000000016],[-130.14361599999995,54.068328999999949],[-130.13973999999996,54.064156000000025],[-130.13247699999999,54.049995000000024],[-130.12249799999995,54.024993999999992],[-130.1213679999999,54.019989000000123],[-130.12249799999995,54.0086060000001],[-130.12441999999999,54.002495000000067],[-130.13528399999996,53.993607000000054],[-130.14974999999998,53.989159000000086]],[[-130.25918599999994,54.004715000000033],[-130.237213,53.984161000000086],[-130.23330699999985,53.979987999999935],[-130.23083499999996,53.975266000000033],[-130.228882,53.964714000000072],[-130.22998000000001,53.953606000000093],[-130.23330699999985,53.946938000000102],[-130.24249299999997,53.936377999999991],[-130.338593,53.839157000000114],[-130.34445199999999,53.835266000000047],[-130.35220299999997,53.833878000000141],[-130.37860099999995,53.831939999999975],[-130.38723800000002,53.831383000000073],[-130.45016499999997,53.864326000000005],[-130.45433000000003,53.866325000000018],[-130.45849599999997,53.882159999999942],[-130.41278099999994,53.958602999999982],[-130.40777600000001,53.963325999999995],[-130.400848,53.965828000000045],[-130.38165300000003,53.965271000000143],[-130.35055499999993,53.961661999999933],[-130.341095,53.961380000000077],[-130.33306899999991,53.962769000000094],[-130.32748400000003,53.966934000000094],[-130.34359699999987,53.984993000000031],[-130.35497999999995,53.993324000000086],[-130.42944299999994,53.983047000000113],[-130.4375,53.981659000000036],[-130.44387800000004,53.978600000000029],[-130.452789,53.968048000000067],[-130.47517400000004,53.944213999999931],[-130.47550999999993,53.940712000000076],[-130.47917199999995,53.926379999999995],[-130.48266599999988,53.915379000000144],[-130.48516799999993,53.912048000000027],[-130.4895019999999,53.910549000000003],[-130.49465900000001,53.910217000000046],[-130.500854,53.910881000000131],[-130.524338,53.914711000000125],[-130.54724099999999,53.903877000000023],[-130.55248999999998,53.907767999999919],[-130.55639599999995,53.911934000000031],[-130.56527699999998,53.925827000000027],[-130.57748400000003,53.93721000000005],[-130.591949,53.949158000000125],[-130.59722899999997,53.953048999999965],[-130.60278299999993,53.956657000000064],[-130.61080900000002,53.959717000000126],[-130.62191799999999,53.961661999999933],[-130.65805099999989,53.964439000000027],[-130.66696200000001,53.963882000000126],[-130.67251599999997,53.959991000000059],[-130.67666600000001,53.954162999999994],[-130.69528200000002,53.91944100000012],[-130.698059,53.914154000000053],[-130.69555700000001,53.909431000000041],[-130.68499799999989,53.901932000000045],[-130.66305499999993,53.892220000000123],[-130.64666699999998,53.886657999999954],[-130.633331,53.879990000000021],[-130.62777700000004,53.876099000000124],[-130.62249799999995,53.872215000000097],[-130.6177669999999,53.862770000000012],[-130.61804199999995,53.857216000000051],[-130.62136799999996,53.85054800000006],[-130.62554899999998,53.844711000000075],[-130.6305539999999,53.839989000000003],[-130.64251699999994,53.83277099999998],[-130.65139799999997,53.834435000000042],[-130.69583099999994,53.844436999999971],[-130.70639,53.851936000000137],[-130.71026599999999,53.856384000000105],[-130.71276899999998,53.861107000000118],[-130.72305299999999,53.917213000000004],[-130.72277799999995,53.922768000000076],[-130.7202759999999,53.93471500000004],[-130.71777299999991,53.939986999999974],[-130.667236,53.986938000000009],[-130.66168200000004,53.990829000000076],[-130.59527600000001,54.026382000000069],[-130.523346,54.059989999999914],[-130.41113300000001,54.100830000000087],[-130.40249600000004,54.101386999999988],[-130.37081899999998,54.087212000000079],[-130.33612099999999,54.06749700000006],[-130.30499299999991,54.045273000000122],[-130.25918599999994,54.004715000000033]],[[-58.518332999999927,54.051659000000029],[-58.526664999999923,54.050545000000056],[-58.536666999999966,54.05082700000014],[-58.545554999999979,54.052216000000101],[-58.556389000000024,54.054710000000057],[-58.56138599999997,54.058044000000052],[-58.56138599999997,54.063880999999981],[-58.55777699999993,54.069160000000011],[-58.552779999999927,54.074440000000038],[-58.53556100000003,54.086654999999951],[-58.503058999999951,54.103050000000053],[-58.468605000000025,54.114716000000044],[-58.450554000000011,54.11721],[-58.437774999999988,54.115547000000049],[-58.378608999999926,54.106659000000093],[-58.373885999999914,54.104164000000083],[-58.378052000000025,54.099998000000141],[-58.407172999999943,54.090561000000037],[-58.426108999999997,54.070831000000055],[-58.43250299999994,54.067214999999976],[-58.440551999999968,54.064713000000097],[-58.456389999999999,54.061661000000015],[-58.518332999999927,54.051659000000029]],[[-132.808044,54.120270000000062],[-132.78890999999999,54.119987000000094],[-132.77999899999998,54.120827000000133],[-132.75723300000004,54.126380999999924],[-132.73580899999996,54.133881000000031],[-132.70306399999993,54.139160000000004],[-132.65835600000003,54.142220000000066],[-132.6480709999999,54.141380000000026],[-132.63946499999997,54.138603000000103],[-132.57528699999995,54.115547000000049],[-132.56973300000004,54.111938000000066],[-132.55777,54.088043000000084],[-132.558899,54.048332000000073],[-132.56054699999999,54.04222100000004],[-132.56664999999992,54.029160000000104],[-132.57583599999998,54.019157000000007],[-132.58139,54.014999000000103],[-132.59387199999998,54.0086060000001],[-132.62554899999992,54.002220000000023],[-132.63275099999993,53.999718000000144],[-132.66418499999997,53.98333000000008],[-132.67999299999997,53.958885000000066],[-132.68167099999999,53.952773999999977],[-132.68029799999999,53.947769000000108],[-132.65890499999989,53.939430000000073],[-132.57223499999992,53.976653999999996],[-132.55584699999997,53.989159000000086],[-132.55029299999995,53.993880999999988],[-132.5477909999999,53.999161000000072],[-132.54888899999997,54.004166000000112],[-132.55306999999999,54.008331000000112],[-132.54833999999994,54.02693899999997],[-132.54528800000003,54.033607000000131],[-132.54055799999998,54.038329999999974],[-132.41665599999999,54.096100000000035],[-132.40972899999997,54.098602000000085],[-132.40167199999985,54.099998000000141],[-132.30111699999998,54.111664000000133],[-132.29055800000003,54.110549999999989],[-132.28582799999998,54.107773000000066],[-132.25280799999996,54.08526599999999],[-132.22833300000002,54.065826000000015],[-132.15029899999996,53.992767000000015],[-132.142517,53.978600000000029],[-132.11111499999998,53.878326000000015],[-132.11721799999992,53.864998000000014],[-132.125,53.853324999999984],[-132.13445999999988,53.843605000000082],[-132.22500600000001,53.780273000000022],[-132.23111,53.776939000000027],[-132.24527,53.772217000000126],[-132.47442599999999,53.707496999999989],[-132.50500499999998,53.700271999999927],[-132.52084399999995,53.697212000000093],[-132.53805499999999,53.695823999999959],[-132.55721999999997,53.695823999999959],[-132.56832899999995,53.697768999999994],[-132.58889799999992,53.699715000000026],[-132.60693399999991,53.698874999999987],[-132.62441999999993,53.697487000000081],[-132.64724699999994,53.69193300000012],[-132.65890499999989,53.684433000000013],[-132.66332999999997,53.679436000000123],[-132.665009,53.673325000000034],[-132.46362299999993,53.612770000000069],[-132.41805999999997,53.606102000000078],[-132.32138099999992,53.663605000000132],[-132.31527699999998,53.666939000000127],[-132.308044,53.669158999999922],[-132.29943799999995,53.669991000000039],[-132.290009,53.669716000000051],[-132.27890000000002,53.6680530000001],[-132.24554399999994,53.662490999999989],[-132.15640300000001,53.716385000000002],[-132.15249600000004,53.812492000000077],[-132.08450299999998,53.872738000000027],[-132.106201,53.917881000000023],[-132.126373,53.979431000000034],[-132.07250999999997,54.022766000000047],[-132.01501499999989,54.021935000000042],[-131.98803699999996,54.023048000000074],[-131.97109999999998,54.025269000000037],[-131.87499999999994,54.052773000000002],[-131.86053500000003,54.057495000000074],[-131.81777999999997,54.071937999999989],[-131.75473,54.094993999999986],[-131.72778299999999,54.106102000000021],[-131.71499599999999,54.112495000000138],[-131.70361299999996,54.120543999999995],[-131.67193599999996,54.146660000000054],[-131.66305499999999,54.152214000000072],[-131.66000399999996,54.131104000000107],[-131.66665599999999,54.079436999999984],[-131.67279099999996,54.044158999999979],[-131.67971799999998,54.019714000000135],[-131.70498699999996,53.966934000000094],[-131.72082499999999,53.943878000000041],[-131.73889199999996,53.923324999999977],[-131.78640699999994,53.874435000000119],[-131.79666099999997,53.865273000000002],[-131.82971199999992,53.841102999999976],[-131.85333300000002,53.816382999999973],[-131.86886600000003,53.79332700000009],[-131.87222299999996,53.786942000000067],[-131.93331899999998,53.615273000000059],[-131.93499800000001,53.609161000000086],[-131.94000199999988,53.519714000000022],[-131.93917799999991,53.508888000000127],[-131.91778599999998,53.399162000000103],[-131.90863000000002,53.357498000000021],[-131.95916699999992,53.276382000000069],[-131.96832299999988,53.266388000000063],[-131.98220799999996,53.251663000000121],[-131.988586,53.248604000000114],[-132.00585899999993,53.247214999999926],[-132.036407,53.25],[-132.0561219999999,53.253326000000015],[-132.08331299999992,53.253052000000082],[-132.17138699999998,53.23832700000014],[-132.19500700000003,53.233879000000002],[-132.21054100000003,53.230545000000006],[-132.21749899999998,53.228324999999984],[-132.27279699999997,53.210274000000027],[-132.27029399999998,53.205551000000014],[-132.26611300000002,53.20138500000013],[-132.25558499999994,53.193877999999984],[-132.23776199999998,53.188881000000094],[-132.22997999999995,53.190544000000045],[-132.21581999999995,53.195267000000001],[-132.20361299999996,53.201659999999947],[-132.19415299999991,53.201659999999947],[-132.14501999999999,53.198325999999952],[-132.13391100000001,53.196655000000078],[-132.12441999999987,53.194153000000028],[-132.12191799999999,53.189430000000016],[-132.158905,53.169990999999982],[-132.18695099999997,53.160545000000013],[-132.19473300000004,53.158882000000062],[-132.390289,53.142769000000044],[-132.40835599999997,53.142220000000066],[-132.44665499999991,53.143607999999972],[-132.45748900000001,53.145271000000093],[-132.506958,53.161102000000085],[-132.53668199999998,53.178879000000109],[-132.56527700000004,53.212769000000037],[-132.57638499999996,53.232208000000128],[-132.58581500000003,53.240273000000059],[-132.59664899999996,53.247489999999971],[-132.61471599999993,53.252777000000094],[-132.64529399999992,53.255553999999961],[-132.66473400000001,53.256386000000077],[-132.68362400000001,53.256660000000011],[-132.67584199999999,53.281661999999926],[-132.61944599999998,53.300270000000012],[-132.55221599999999,53.308043999999995],[-132.54446399999995,53.309433000000013],[-132.53973400000001,53.314438000000052],[-132.53695700000003,53.321106000000043],[-132.53918499999997,53.326385000000016],[-132.54333499999996,53.330551000000071],[-132.54998799999987,53.333878000000027],[-132.55835000000002,53.336655000000121],[-132.56860399999999,53.337494000000106],[-132.67001300000004,53.326942000000088],[-132.72000100000002,53.320830999999998],[-132.73388699999998,53.337212000000022],[-132.709991,53.370270000000005],[-132.70443699999993,53.374435000000005],[-132.69750999999991,53.376937999999996],[-132.52076699999998,53.340160000000026],[-132.51744099999996,53.337990000000104],[-132.41641200000004,53.2972180000001],[-132.41055299999994,53.294715999999994],[-132.406677,53.300545],[-132.40362500000003,53.30721299999999],[-132.40057399999995,53.319443000000092],[-132.40029900000002,53.330826000000116],[-132.40280200000001,53.335548000000017],[-132.406677,53.339714000000072],[-132.41223099999996,53.343604999999968],[-132.52084399999995,53.412209000000132],[-132.54138199999994,53.416382000000112],[-132.73580899999996,53.453323000000012],[-132.85775799999999,53.461104999999975],[-132.86749299999997,53.463608000000136],[-132.87277199999988,53.467209000000025],[-132.97250399999996,53.555824000000143],[-132.991669,53.583054000000004],[-132.9941409999999,53.587769000000037],[-132.98889199999991,53.591934000000037],[-132.96139500000004,53.600273000000072],[-132.95361300000002,53.601936000000023],[-132.94415300000003,53.601936000000023],[-132.93444799999986,53.599716000000001],[-132.91805999999997,53.588600000000042],[-132.90972899999997,53.585823000000005],[-132.89862099999999,53.584160000000054],[-132.89083900000003,53.585548000000131],[-132.88445999999999,53.588882000000126],[-132.88082900000001,53.594711000000132],[-132.8805539999999,53.600273000000072],[-132.88192700000002,53.605552999999986],[-132.8861389999999,53.609717999999987],[-132.92028800000003,53.637214999999912],[-132.935272,53.648604999999975],[-132.95056199999999,53.654709000000025],[-133.00778200000002,53.676383999999985],[-132.95361300000002,53.682770000000119],[-132.95443699999998,53.702774000000034],[-132.9844359999999,53.742767000000072],[-133.02471899999995,53.751389000000074],[-133.03362999999996,53.75277699999998],[-133.09387200000003,53.775551000000121],[-133.10082999999997,53.778603000000032],[-133.10638399999993,53.782494000000099],[-133.10916099999997,53.786942000000067],[-133.13751199999996,53.87499200000002],[-133.13891599999994,53.880272000000048],[-133.14001500000001,53.908043000000134],[-133.13833599999992,53.914154000000053],[-133.13391100000001,53.919159000000093],[-133.11639399999996,53.934158000000139],[-133.09527599999996,53.949432000000058],[-133.09081999999995,53.954162999999994],[-133.04110700000001,54.031661999999983],[-133.03973400000001,54.037773000000072],[-133.04083299999996,54.0430530000001],[-133.05862399999995,54.076102999999989],[-133.07916299999999,54.09777100000008],[-133.08193999999992,54.102492999999981],[-133.07165499999996,54.168883999999991],[-133.06722999999988,54.173881999999992],[-133.04083299999996,54.176102000000014],[-133.03112799999991,54.176102000000014],[-132.94027700000004,54.161377000000073],[-132.93029799999994,54.15915700000005],[-132.92001299999993,54.15248900000006],[-132.90335099999993,54.135826000000009],[-132.82748400000003,54.122490000000084],[-132.808044,54.120270000000062]],[[-130.19555699999995,54.118050000000039],[-130.21166999999997,54.115273000000116],[-130.22109999999998,54.115547000000049],[-130.23220799999996,54.117493000000138],[-130.24581899999993,54.124161000000129],[-130.25112899999999,54.128044000000045],[-130.25500499999998,54.132209999999986],[-130.261414,54.141380000000026],[-130.26364099999995,54.146102999999982],[-130.26473999999996,54.151381999999955],[-130.26306199999993,54.16832700000009],[-130.2611389999999,54.174164000000076],[-130.25778199999996,54.180824000000086],[-130.2528079999999,54.185547000000099],[-130.23971599999999,54.189712999999983],[-130.23083499999996,54.190269000000001],[-130.20944199999985,54.187209999999993],[-130.20999099999989,54.18360100000001],[-130.20166,54.183052000000032],[-130.19223,54.180549999999982],[-130.17861900000003,54.173607000000004],[-130.16113300000001,54.16276600000009],[-130.15585299999992,54.158882000000062],[-130.15194699999995,54.154434000000094],[-130.15112299999998,54.149436999999978],[-130.153076,54.143326000000059],[-130.158051,54.138328999999999],[-130.169464,54.130547000000035],[-130.19555699999995,54.118050000000039]],[[-79.469727000000034,54.167496000000085],[-79.477218999999877,54.165825000000041],[-79.483611999999994,54.169159000000036],[-79.485001000000011,54.174712999999997],[-79.481109999999944,54.187492000000077],[-79.475554999999929,54.191376000000105],[-79.43472300000002,54.200272000000041],[-79.413054999999986,54.191657999999961],[-79.418610000000001,54.187209999999993],[-79.426392000000021,54.183052000000032],[-79.469727000000034,54.167496000000085]],[[-130.64862099999999,54.114441000000056],[-130.67138699999992,54.107773000000066],[-130.69055199999997,54.108330000000137],[-130.69888299999997,54.111107000000061],[-130.77417000000003,54.142220000000066],[-130.78500399999996,54.149994000000049],[-130.79806500000001,54.162208999999962],[-130.800568,54.166939000000013],[-130.79861500000004,54.173050000000103],[-130.78167699999995,54.211662000000103],[-130.77444500000001,54.213882000000069],[-130.76391599999999,54.212769000000037],[-130.75613399999992,54.209159999999997],[-130.74636799999996,54.206657000000064],[-130.72582999999997,54.196655000000078],[-130.64889500000004,54.149719000000061],[-130.64501999999993,54.145271000000093],[-130.64001500000001,54.135826000000009],[-130.63919099999993,54.130820999999969],[-130.63946499999997,54.124992000000134],[-130.64279199999999,54.118599000000017],[-130.64862099999999,54.114441000000056]],[[-130.35555999999991,54.257773999999984],[-130.36663799999991,54.241104000000007],[-130.375,54.244155999999975],[-130.38861099999997,54.250832000000059],[-130.40057400000001,54.258048999999971],[-130.45556599999998,54.295830000000137],[-130.46639999999996,54.303322000000094],[-130.46722399999993,54.308601000000067],[-130.44750999999991,54.325828999999999],[-130.44000199999999,54.328049000000021],[-130.43112199999996,54.328606000000093],[-130.41778599999992,54.326385000000016],[-130.39196799999996,54.312492000000134],[-130.38528400000001,54.308884000000035],[-130.37997399999995,54.305267000000072],[-130.37582399999997,54.300827000000083],[-130.35470599999996,54.269157000000007],[-130.35220299999997,54.264442000000145],[-130.35555999999991,54.257773999999984]],[[-130.26641799999999,54.260551000000078],[-130.32528699999995,54.243050000000096],[-130.33416699999998,54.244713000000047],[-130.33804299999997,54.248878000000047],[-130.355255,54.282211000000075],[-130.35415599999999,54.293326999999977],[-130.350281,54.305550000000039],[-130.34445199999999,54.30971500000004],[-130.29000899999994,54.332214000000022],[-130.27279699999991,54.329720000000066],[-130.26751699999994,54.325828999999999],[-130.25973499999998,54.317497000000003],[-130.25250199999999,54.303047000000049],[-130.25058000000001,54.292770000000075],[-130.25167799999991,54.281380000000013],[-130.255585,54.269440000000145],[-130.25973499999998,54.263610999999912],[-130.26641799999999,54.260551000000078]],[[-130.70416299999994,54.356659000000036],[-130.745544,54.354713000000118],[-130.754456,54.356102000000135],[-130.76391599999999,54.364159000000086],[-130.76724200000001,54.374161000000072],[-130.76834099999991,54.379433000000006],[-130.76779199999987,54.384995000000117],[-130.76446499999992,54.389434999999992],[-130.75805699999995,54.392494000000113],[-130.72943099999986,54.402771000000087],[-130.72222899999991,54.404991000000109],[-130.71417199999996,54.406380000000127],[-130.699432,54.40665400000006],[-130.68890399999998,54.393326000000059],[-130.68331899999998,54.373047000000099],[-130.685272,54.36693600000001],[-130.6894529999999,54.361381999999992],[-130.69610599999999,54.358047000000113],[-130.70416299999994,54.356659000000036]],[[-57.324721999999952,54.498877999999991],[-57.342498999999918,54.498604000000057],[-57.351668999999958,54.500275000000101],[-57.356666999999959,54.502220000000079],[-57.362777999999992,54.506104000000107],[-57.365004999999996,54.511664999999994],[-57.365554999999972,54.516387999999949],[-57.362502999999947,54.527489000000116],[-57.359443999999996,54.533332999999914],[-57.333327999999995,54.565543999999989],[-57.327782000000013,54.570831000000112],[-57.321114000000023,54.574997000000053],[-57.267220000000009,54.585548000000131],[-57.265556000000004,54.580551000000014],[-57.269722000000002,54.574997000000053],[-57.272728000000029,54.572495000000117],[-57.239440999999999,54.522217000000012],[-57.240279999999984,54.517769000000044],[-57.255004999999926,54.513328999999999],[-57.293059999999912,54.503609000000097],[-57.307776999999987,54.500549000000035],[-57.324721999999952,54.498877999999991]],[[-130.95166,54.454711999999972],[-130.95944199999997,54.453323000000012],[-130.96499600000004,54.456940000000145],[-130.96749899999992,54.461662000000047],[-130.96609499999994,54.510826000000009],[-130.96472199999994,54.527771000000143],[-130.96112099999999,54.539992999999981],[-130.93057299999998,54.61471599999993],[-130.92556799999994,54.619438000000059],[-130.88891599999994,54.628876000000048],[-130.88137800000004,54.629158000000132],[-130.754456,54.62943300000012],[-130.74777199999994,54.626099000000124],[-130.74664299999995,54.62082700000002],[-130.74694799999997,54.615273000000059],[-130.7441409999999,54.60166200000009],[-130.745544,54.584717000000126],[-130.74914599999994,54.572769000000051],[-130.75250199999999,54.566101000000117],[-130.75613399999992,54.559433000000126],[-130.76083399999999,54.554710000000114],[-130.76666299999999,54.550545000000113],[-130.84915199999995,54.496941000000106],[-130.85583500000001,54.493881000000044],[-130.93695099999997,54.459434999999985],[-130.95166,54.454711999999972]],[[-79.667220999999927,54.76388500000013],[-79.726944000000003,54.752495000000067],[-79.710281000000009,54.76388500000013],[-79.703613000000018,54.766937000000041],[-79.611114999999984,54.79332700000009],[-79.587218999999948,54.799164000000019],[-79.624435000000005,54.779716000000121],[-79.631103999999993,54.776657000000114],[-79.637786999999946,54.773605000000032],[-79.659728999999913,54.766106000000036],[-79.667220999999927,54.76388500000013]],[[-130.26834099999991,54.714995999999985],[-130.370544,54.692214999999976],[-130.37887599999988,54.695267000000058],[-130.37609899999995,54.700546000000031],[-130.37109399999991,54.705269000000044],[-130.32693499999999,54.739716000000044],[-130.32110599999987,54.743881000000044],[-130.22415199999989,54.803046999999992],[-130.21749899999998,54.806380999999988],[-130.20944199999985,54.807770000000119],[-130.20694000000003,54.803046999999992],[-130.19860800000004,54.783607000000018],[-130.20056199999999,54.77748900000006],[-130.20971699999996,54.760551000000135],[-130.21362299999993,54.748329000000012],[-130.21722399999999,54.741661000000022],[-130.22222899999986,54.736938000000009],[-130.23388699999998,54.728874000000019],[-130.2611389999999,54.717209000000139],[-130.26834099999991,54.714995999999985]],[[-130.51834099999996,54.70249200000012],[-130.52722199999999,54.701935000000049],[-130.5386049999999,54.703880000000026],[-130.56750499999993,54.716934000000094],[-130.57443199999994,54.72026800000009],[-130.58526599999999,54.727767999999969],[-130.60803199999992,54.748329000000012],[-130.61053499999991,54.753052000000139],[-130.61166399999996,54.758049000000085],[-130.60665900000004,54.763054000000125],[-130.48803699999991,54.807495000000131],[-130.47998000000001,54.808883999999921],[-130.46945199999999,54.807770000000119],[-130.458618,54.800270000000069],[-130.44665499999996,54.787216000000001],[-130.44027699999992,54.778327999999988],[-130.43777499999993,54.773605000000032],[-130.43582199999997,54.763329000000113],[-130.43972799999989,54.75110600000005],[-130.45388799999989,54.719154000000117],[-130.45748900000001,54.712769000000094],[-130.46331799999996,54.708603000000039],[-130.51834099999996,54.70249200000012]],[[-57.940833999999938,54.911933999999974],[-57.985832000000016,54.870826999999963],[-57.98860899999994,54.86721],[-57.991942999999935,54.833878000000084],[-57.983886999999868,54.802215999999987],[-57.980277999999942,54.798607000000118],[-57.971663999999976,54.798050000000046],[-57.965553,54.799437999999952],[-57.958892999999989,54.803046999999992],[-57.955558999999994,54.805824000000086],[-57.923888999999974,54.823326000000122],[-57.871666000000005,54.83166499999993],[-57.864723000000026,54.832214000000079],[-57.859726000000023,54.83027600000014],[-57.843613000000005,54.820549000000028],[-57.841110000000015,54.816939999999988],[-57.841667000000029,54.81249200000002],[-57.848334999999963,54.806938000000059],[-57.875,54.79332700000009],[-57.881942999999922,54.790549999999996],[-58.022774000000027,54.755554000000018],[-58.031386999999995,54.753882999999973],[-58.040000999999961,54.75277699999998],[-58.04999499999991,54.753052000000139],[-58.119995000000017,54.755554000000018],[-58.139167999999927,54.757216999999969],[-58.15943900000002,54.76138300000008],[-58.174171000000001,54.767768999999987],[-58.176948999999979,54.770828000000108],[-58.172378999999978,54.797314000000085],[-58.184173999999985,54.808471999999938],[-58.219718999999941,54.825829000000056],[-58.222771000000023,54.83027600000014],[-58.224715999999944,54.83526599999999],[-58.225554999999986,54.850273000000016],[-58.225554999999986,54.862770000000012],[-58.224998000000028,54.866936000000067],[-58.218886999999938,54.875267000000008],[-58.215836000000024,54.878044000000102],[-58.209723999999937,54.877487000000031],[-58.049445999999932,54.893326000000116],[-57.967773000000022,54.919159000000036],[-57.942771999999991,54.924995000000138],[-57.94027699999998,54.923607000000004],[-57.938605999999993,54.918602000000135],[-57.940833999999938,54.911933999999974]],[[-79.125823999999909,54.897217000000012],[-79.134445000000028,54.895827999999995],[-79.235000999999954,54.896660000000111],[-79.515288999999939,54.840546000000074],[-79.660277999999948,54.805549999999926],[-79.763625999999988,54.771660000000054],[-79.774170000000026,54.773048000000131],[-79.776947000000007,54.778046000000131],[-79.773330999999985,54.783333000000084],[-79.768889999999942,54.787773000000072],[-79.725554999999986,54.818886000000077],[-79.714721999999995,54.826385000000073],[-79.686934999999949,54.838326000000052],[-79.656661999999983,54.846656999999993],[-79.467223999999931,54.888328999999999],[-79.458617999999944,54.88999200000012],[-79.430557000000022,54.892769000000044],[-79.419448999999872,54.892769000000044],[-79.339446999999893,54.896941999999967],[-79.164169000000015,54.925552000000039],[-79.053878999999995,54.946655000000078],[-79.041945999999882,54.945824000000073],[-79.015014999999948,54.938324000000023],[-79.015014999999948,54.932213000000104],[-79.027221999999995,54.925270000000125],[-79.05749499999996,54.917770000000075],[-79.102782999999988,54.903877000000023],[-79.125823999999909,54.897217000000012]],[[-58.675277999999992,54.914153999999996],[-58.68360899999999,54.913048000000003],[-58.752501999999993,54.915825000000041],[-58.757225000000005,54.916100000000085],[-58.760558999999887,54.920546999999942],[-58.759170999999981,54.926102000000071],[-58.754723000000013,54.932495000000017],[-58.701667999999927,54.999161000000015],[-58.697495000000004,55.003326000000015],[-58.691108999999983,55.006942999999978],[-58.684722999999906,55.008331000000055],[-58.676391999999908,55.009437999999989],[-58.660277999999948,55.0086060000001],[-58.653609999999901,55.005554000000018],[-58.652778999999953,55.00110600000005],[-58.657500999999968,54.996100999999953],[-58.662772999999902,54.992218000000037],[-58.658332999999971,54.962494000000049],[-58.656661999999983,54.94221500000009],[-58.658607000000018,54.932495000000017],[-58.663054999999986,54.922493000000031],[-58.668892000000028,54.917770000000075],[-58.675277999999992,54.914153999999996]],[[-130.38528400000001,54.769988999999953],[-130.39916999999997,54.764717000000019],[-130.40917999999999,54.767212000000086],[-130.41445899999997,54.770828000000108],[-130.45556599999998,54.813324000000136],[-130.45944199999997,54.81749700000006],[-130.46194499999996,54.822220000000073],[-130.459991,54.828330999999991],[-130.41833499999996,54.853324999999927],[-130.38528400000001,54.868881000000101],[-130.34304800000001,54.894996999999989],[-130.27029400000004,54.950272000000041],[-130.25,54.969711000000132],[-130.22778299999993,54.997214999999983],[-130.2133179999999,55.012496999999996],[-130.20083599999992,55.019714000000079],[-130.18499800000001,55.023323000000119],[-130.17529300000001,55.023048000000074],[-130.16833500000001,55.019714000000079],[-130.16500899999988,55.014160000000118],[-130.16027799999995,55.004439999999988],[-130.146973,54.975822000000051],[-130.14529399999998,54.965271000000143],[-130.14556899999997,54.959717000000126],[-130.14611799999994,54.954163000000108],[-130.14974999999998,54.947487000000024],[-130.16332999999997,54.931381000000044],[-130.27029400000004,54.830826000000002],[-130.38528400000001,54.769988999999953]],[[-82.964721999999995,55.263611000000083],[-82.970000999999968,55.259720000000016],[-83.014450000000011,55.269714000000022],[-83.031951999999876,55.273880000000133],[-83.035278000000005,55.278877000000023],[-83.027495999999928,55.281380000000013],[-83.016953000000001,55.281662000000097],[-82.990279999999984,55.280548000000124],[-82.980835000000013,55.278877000000023],[-82.963332999999977,55.273880000000133],[-82.96166999999997,55.269157000000121],[-82.964721999999995,55.263611000000083]],[[-77.592772999999909,55.435265000000129],[-77.633330999999998,55.424438000000123],[-77.644164999999873,55.425827000000083],[-77.449431999999945,55.533882000000062],[-77.336120999999991,55.604439000000127],[-77.323058999999944,55.610550000000046],[-77.221389999999928,55.653602999999919],[-77.213897999999915,55.65526600000004],[-77.205276000000026,55.65387700000008],[-77.199996999999939,55.65026899999998],[-77.201110999999912,55.64415699999995],[-77.210555999999997,55.639717000000132],[-77.252227999999945,55.618050000000096],[-77.389174999999966,55.546386999999982],[-77.452224999999942,55.512772000000098],[-77.474166999999966,55.498046999999929],[-77.484160999999915,55.489158999999972],[-77.49499499999996,55.481377000000009],[-77.500564999999938,55.478325000000098],[-77.55221599999993,55.453049000000021],[-77.592772999999909,55.435265000000129]],[[-60.970832999999914,55.869437999999946],[-60.98833499999995,55.86721],[-60.998336999999992,55.867767000000072],[-61.008895999999936,55.869156000000089],[-61.016944999999964,55.873046999999985],[-61.051666000000012,55.901100000000099],[-61.056664000000012,55.905823000000055],[-61.059165999999948,55.909988000000055],[-61.070557000000008,55.938599000000011],[-61.065551999999968,55.944153000000028],[-61.047782999999981,55.945541000000105],[-61.036948999999993,55.9447100000001],[-60.96805599999999,55.936652999999922],[-60.948607999999979,55.930549999999982],[-60.908332999999971,55.898330999999985],[-60.906386999999995,55.893326000000116],[-60.911109999999951,55.887772000000098],[-60.917503000000011,55.884163000000115],[-60.970832999999914,55.869437999999946]],[[-60.858611999999994,55.864716000000044],[-60.876105999999993,55.863883999999985],[-60.892501999999979,55.864441000000056],[-60.898612999999955,55.86721],[-60.902221999999995,55.871376000000112],[-60.900551000000007,55.876380999999981],[-60.873610999999869,55.94360400000005],[-60.869995000000017,55.949432000000002],[-60.86500499999994,55.95277400000009],[-60.851944000000003,55.95526899999993],[-60.748336999999935,55.944153000000028],[-60.74138599999992,55.942764000000011],[-60.742500000000007,55.939156000000082],[-60.747498000000007,55.931663999999955],[-60.691939999999875,55.925270000000125],[-60.68638599999997,55.92193600000013],[-60.688048999999978,55.917213000000118],[-60.692771999999991,55.911658999999986],[-60.705001999999979,55.903046000000018],[-60.718604999999911,55.896385000000066],[-60.756393000000003,55.880272000000048],[-60.778610000000015,55.876099000000067],[-60.840836000000024,55.86610399999995],[-60.858611999999994,55.864716000000044]],[[-79.123046999999929,55.789993000000038],[-79.130553999999961,55.788887000000045],[-79.135559000000001,55.789162000000033],[-79.137786999999946,55.790549999999939],[-79.136123999999938,55.794158999999979],[-79.131667999999934,55.799995000000024],[-79.126099000000011,55.803879000000052],[-79.121932999999956,55.808601000000124],[-79.108886999999925,55.823883000000137],[-79.102782999999988,55.833054000000118],[-79.039168999999958,55.952492000000063],[-79.03083799999996,55.968596999999932],[-79.027221999999995,55.976935999999966],[-79.022232000000031,55.996384000000091],[-79.009353999999973,56.063614000000086],[-78.960007000000019,56.083054000000061],[-78.957503999999972,56.083602999999982],[-78.952788999999939,56.080826000000116],[-78.949157999999898,56.071663000000115],[-78.939712999999983,56.02526899999998],[-79.054442999999935,55.865547000000049],[-79.089995999999985,55.816939999999988],[-79.104445999999996,55.80082700000014],[-79.116652999999985,55.792496000000028],[-79.123046999999929,55.789993000000038]],[[-60.943329000000006,56.006660000000011],[-61.040557999999976,56.005272000000105],[-61.0819469999999,56.011382999999967],[-61.141387999999949,56.020545999999968],[-61.17111199999988,56.028602999999976],[-61.18721800000003,56.033882000000119],[-61.215836000000024,56.046387000000038],[-61.220832999999971,56.050827000000083],[-61.228333000000021,56.06332400000008],[-61.232772999999952,56.072769000000108],[-61.233611999999994,56.085548000000017],[-61.232772999999952,56.091103000000089],[-61.226944000000003,56.098045000000013],[-61.217498999999975,56.100547999999947],[-61.211670000000026,56.101387000000102],[-61.08916499999998,56.169991000000095],[-61.059165999999948,56.159714000000122],[-61.045836999999892,56.153877000000136],[-60.944442999999978,56.094993999999986],[-60.943610999999976,56.090271000000143],[-60.934440999999993,56.015830999999935],[-60.934722999999963,56.011382999999967],[-60.943329000000006,56.006660000000011]],[[-61.623610999999983,56.399993999999992],[-61.546668999999952,56.390830999999991],[-61.493057000000022,56.404991000000052],[-61.482773000000009,56.406654000000003],[-61.474716000000001,56.406654000000003],[-61.468329999999924,56.404433999999981],[-61.415275999999949,56.376656000000025],[-61.411667000000023,56.372214999999926],[-61.411109999999951,56.367210000000057],[-61.412216000000001,56.326659999999947],[-61.416106999999954,56.322220000000129],[-61.424171000000001,56.32027400000004],[-61.482773000000009,56.309990000000028],[-61.569449999999904,56.320549000000085],[-61.579726999999991,56.322494999999947],[-61.599723999999924,56.32777399999992],[-61.686385999999857,56.352776000000063],[-61.719993999999986,56.365829000000019],[-61.788895000000025,56.405822999999998],[-61.793335000000013,56.408882000000119],[-61.796111999999937,56.41304800000006],[-61.790557999999919,56.415824999999927],[-61.783889999999872,56.415824999999927],[-61.677779999999927,56.405548000000124],[-61.623610999999983,56.399993999999992]],[[-78.839995999999928,56.129990000000078],[-78.927490000000034,56.113884000000098],[-78.933318999999983,56.115547000000049],[-78.930556999999965,56.128601000000117],[-78.916945999999996,56.172493000000145],[-78.908339999999896,56.182495000000131],[-78.903884999999946,56.187209999999993],[-78.883330999999998,56.201935000000105],[-78.846389999999985,56.2347180000001],[-78.830291999999929,56.253326000000129],[-78.825287000000003,56.262772000000098],[-78.813323999999966,56.304709999999943],[-78.809432999999956,56.338882000000126],[-78.813888999999961,56.343323000000055],[-78.834732000000031,56.345543000000021],[-78.832503999999915,56.350829999999974],[-78.762512000000015,56.424713000000111],[-78.751403999999923,56.432495000000074],[-78.731673999999941,56.440544000000102],[-78.694992000000013,56.443878000000097],[-78.686385999999914,56.443320999999969],[-78.667220999999984,56.439713000000097],[-78.661666999999966,56.436104000000057],[-78.660003999999958,56.430550000000096],[-78.650832999999921,56.289161999999976],[-78.652785999999935,56.241936000000067],[-78.655563000000029,56.223602000000142],[-78.676392000000021,56.181106999999997],[-78.688599000000011,56.172767999999962],[-78.839995999999928,56.129990000000078]],[[-79.626937999999996,56.265273999999977],[-79.635833999999988,56.264998999999989],[-79.636672999999973,56.266388000000006],[-79.636397999999872,56.269157000000121],[-79.609436000000017,56.319716999999969],[-79.538605000000018,56.433051999999975],[-79.53443900000002,56.437491999999963],[-79.523894999999982,56.442764000000068],[-79.511123999999938,56.446381000000031],[-79.496947999999975,56.448601000000053],[-79.492217999999923,56.446937999999932],[-79.490554999999915,56.440826000000129],[-79.510833999999932,56.397491000000002],[-79.557769999999891,56.305267000000015],[-79.561110999999926,56.299164000000076],[-79.565552000000025,56.293884000000048],[-79.569457999999997,56.289992999999981],[-79.619445999999868,56.267211999999972],[-79.626937999999996,56.265273999999977]],[[-79.619995000000017,56.385268999999994],[-79.638061999999991,56.360550000000046],[-79.649444999999957,56.346382000000006],[-79.663329999999974,56.333878000000141],[-79.682495000000017,56.317496999999946],[-79.701110999999969,56.306381000000044],[-79.714447000000007,56.299995000000081],[-79.906661999999926,56.227211000000125],[-79.928328999999962,56.219711000000075],[-79.986114999999984,56.199715000000083],[-80.01916499999993,56.191376000000048],[-80.060546999999985,56.18443300000007],[-80.082503999999915,56.186653000000092],[-80.092223999999987,56.188324000000136],[-80.100554999999986,56.191376000000048],[-80.107497999999907,56.194992000000127],[-80.109726000000023,56.197768999999994],[-80.110275000000001,56.203323000000012],[-80.100280999999995,56.239158999999972],[-80.098617999999874,56.244156000000089],[-80.055267000000015,56.303604000000121],[-80.044448999999929,56.310822000000144],[-80.040558000000033,56.312767000000122],[-80.022506999999962,56.319716999999969],[-79.867492999999968,56.357498000000135],[-79.795546999999942,56.366661000000136],[-79.756667999999991,56.361937999999952],[-79.72444200000001,56.362770000000069],[-79.69888299999991,56.368880999999988],[-79.679169000000002,56.378326000000015],[-79.656386999999995,56.392769000000101],[-79.642501999999979,56.404433999999981],[-79.618880999999931,56.426941000000056],[-79.614440999999999,56.431664000000069],[-79.604171999999949,56.444153000000085],[-79.598052999999936,56.454437000000098],[-79.591384999999946,56.469154000000117],[-79.588333000000034,56.493881000000044],[-79.585281000000009,56.499161000000072],[-79.582503999999915,56.501663000000008],[-79.549728000000016,56.525269000000037],[-79.543334999999956,56.527771000000143],[-79.542770000000019,56.522217000000126],[-79.549438000000009,56.508049000000085],[-79.613891999999964,56.39527099999998],[-79.619995000000017,56.385268999999994]],[[-61.435829000000012,56.541382000000112],[-61.168059999999969,56.474709000000018],[-61.149993999999992,56.445540999999992],[-61.148887999999943,56.441101000000003],[-61.154442000000017,56.438599000000067],[-61.163612000000001,56.436653000000035],[-61.181945999999925,56.435265000000129],[-61.200278999999966,56.435265000000129],[-61.220832999999971,56.435546999999985],[-61.517501999999865,56.446937999999932],[-61.609169000000009,56.46166199999999],[-61.630553999999961,56.465270999999973],[-61.642226999999991,56.486382000000049],[-61.637221999999952,56.489716000000044],[-61.629997000000003,56.490547000000049],[-61.546394000000021,56.488044999999943],[-61.538612000000001,56.485824999999977],[-61.525832999999864,56.478874000000019],[-61.512778999999966,56.474991000000102],[-61.438048999999921,56.476379000000009],[-61.423057999999969,56.479156000000103],[-61.417777999999998,56.483330000000137],[-61.418335000000013,56.488327000000027],[-61.422501000000011,56.490547000000049],[-61.455276000000026,56.496383999999978],[-61.496666000000005,56.500000000000057],[-61.527221999999938,56.501663000000008],[-61.624167999999997,56.503882999999973],[-61.633330999999998,56.506386000000134],[-61.634445000000028,56.512497000000053],[-61.631942999999978,56.51638800000012],[-61.602225999999916,56.552773000000059],[-61.595832999999971,56.556380999999988],[-61.588332999999977,56.558044000000052],[-61.576667999999984,56.557769999999948],[-61.561667999999941,56.554161000000136],[-61.558051999999975,56.55193300000002],[-61.525947999999971,56.550212999999985],[-61.459166999999923,56.54583000000008],[-61.435829000000012,56.541382000000112]],[[-79.021666999999923,56.426941000000056],[-79.009445000000028,56.426383999999985],[-78.98832699999997,56.426941000000056],[-78.949157999999898,56.43082400000003],[-78.943054000000018,56.430550000000096],[-78.93582200000003,56.428878999999995],[-78.928878999999938,56.425827000000083],[-78.92471299999994,56.419441000000006],[-78.922775000000001,56.415268000000026],[-78.921111999999994,56.409714000000065],[-78.920546999999942,56.403320000000008],[-78.923049999999932,56.386940000000095],[-78.93638599999997,56.317496999999946],[-78.943328999999949,56.284996000000035],[-78.949996999999939,56.282493999999986],[-78.955276000000026,56.27915999999999],[-78.961394999999868,56.271378000000027],[-79.029174999999952,56.172493000000145],[-79.06138599999997,56.124435000000005],[-79.071670999999981,56.104996000000085],[-79.085007000000019,56.07749200000012],[-79.094161999999983,56.054993000000138],[-79.129990000000021,55.989432999999963],[-79.175277999999935,55.92332499999992],[-79.195266999999944,55.891937000000098],[-79.203613000000018,55.894157000000121],[-79.166267000000005,55.973881000000006],[-79.122116000000005,56.046715000000006],[-79.061935000000005,56.148605000000032],[-79.022781000000009,56.202492000000007],[-79.008895999999993,56.221656999999936],[-78.990829000000019,56.261664999999994],[-78.985824999999977,56.273605000000089],[-78.972777999999948,56.306656000000032],[-78.970275999999956,56.314156000000082],[-78.967772999999909,56.323608000000036],[-78.966109999999901,56.336105000000032],[-78.970275999999956,56.378043999999989],[-78.97084000000001,56.3836060000001],[-78.977218999999991,56.388602999999989],[-78.983321999999987,56.389716999999962],[-78.998885999999914,56.384163000000001],[-79.043334999999956,56.360550000000046],[-79.055267000000015,56.344437000000028],[-79.062209999999993,56.329720000000009],[-79.089172000000019,56.267769000000044],[-79.091109999999958,56.263054000000011],[-79.093062999999972,56.256943000000092],[-79.092948999999976,56.231716000000006],[-79.095443999999986,56.2190480000001],[-79.093948000000012,56.213717999999972],[-79.092781000000002,56.211551999999983],[-79.089110999999946,56.211884000000111],[-79.083327999999995,56.174164000000019],[-79.212783999999999,55.954163000000108],[-79.236114999999927,55.917496000000085],[-79.259444999999914,55.886108000000092],[-79.275283999999999,55.870270000000062],[-79.283324999999991,55.864441000000056],[-79.286666999999852,55.866661000000079],[-79.286117999999988,55.869987000000094],[-79.278060999999923,55.885551000000021],[-79.267226999999934,55.903046000000018],[-79.226668999999958,55.962493999999992],[-79.183608999999933,56.037497999999971],[-79.139998999999932,56.115273000000116],[-79.133895999999993,56.126656000000082],[-79.132721000000004,56.175770000000057],[-79.138564999999858,56.205269000000101],[-79.139724999999999,56.20776699999999],[-79.143561999999974,56.211266000000137],[-79.15055799999999,56.233046999999999],[-79.160552999999993,56.231377000000066],[-79.170272999999952,56.225548000000003],[-79.205565999999976,56.190826000000015],[-79.243880999999988,56.151100000000042],[-79.256393000000003,56.13110400000005],[-79.270844000000011,56.104712999999947],[-79.277495999999985,56.090828000000045],[-79.284164000000033,56.078049000000021],[-79.299727999999959,56.051658999999972],[-79.309158000000025,56.036385000000109],[-79.323623999999938,56.016936999999984],[-79.358611999999937,55.974434000000088],[-79.452498999999989,55.879990000000134],[-79.479996000000028,55.863883999999985],[-79.493056999999965,55.858887000000038],[-79.500564999999995,55.856659000000093],[-79.510559000000001,55.855553000000043],[-79.520279000000016,55.854713000000004],[-79.532500999999968,55.854996000000142],[-79.567779999999971,55.864716000000044],[-79.593886999999938,55.874435000000062],[-79.604996000000028,55.881660000000124],[-79.78195199999999,55.78804800000006],[-79.763061999999934,55.814156000000025],[-79.598052999999936,55.981658999999979],[-79.486937999999952,56.087212000000022],[-79.474716000000001,56.098327999999981],[-79.470275999999956,56.104439000000013],[-79.470551,56.112770000000125],[-79.472504000000015,56.11693600000001],[-79.478881999999999,56.123322000000087],[-79.497222999999963,56.133605999999986],[-79.513061999999991,56.134995000000117],[-79.523055999999997,56.133880999999974],[-79.537216000000001,56.12971500000009],[-79.550277999999935,56.123322000000087],[-79.567504999999983,56.112770000000125],[-79.59722899999997,56.091377000000023],[-79.645003999999972,56.050545],[-79.819457999999941,55.901100000000099],[-79.831680000000006,55.88999200000012],[-79.846663999999976,55.874161000000129],[-79.858046999999999,55.859993000000088],[-79.863892000000021,55.850830000000087],[-79.865829000000019,55.847214000000008],[-79.909164000000033,55.840546000000074],[-79.985824999999977,55.898048000000017],[-79.961944999999957,55.960274000000027],[-79.774444999999957,56.112213000000054],[-79.668059999999912,56.189987000000031],[-79.648620999999991,56.198326000000066],[-79.642226999999991,56.201385000000073],[-79.587783999999999,56.230270000000132],[-79.536330999999961,56.295052000000055],[-79.526839999999993,56.304214000000115],[-79.516173999999978,56.319881000000066],[-79.494666999999993,56.367214000000047],[-79.48733500000003,56.402714000000117],[-79.458892999999875,56.464157],[-79.458617999999944,56.468323000000112],[-79.458617999999944,56.478600000000085],[-79.466109999999958,56.498878000000104],[-79.474441999999954,56.521102999999982],[-79.471389999999928,56.544441000000063],[-79.466109999999958,56.54833200000013],[-79.456664999999987,56.55332199999998],[-79.448883000000023,56.554435999999953],[-79.445267000000001,56.553604000000064],[-79.441939999999875,56.551384000000041],[-79.438599000000011,56.547775000000058],[-79.418334999999956,56.490829000000076],[-79.419448999999872,56.443603999999937],[-79.443000999999981,56.393436000000008],[-79.474998000000028,56.320438000000138],[-79.531386999999995,56.206940000000145],[-79.514450000000011,56.186378000000047],[-79.461670000000026,56.193321000000026],[-79.438889000000017,56.197212000000093],[-79.427215999999987,56.203049000000078],[-79.416397000000018,56.212212000000079],[-79.413054999999986,56.216660000000047],[-79.309998000000007,56.424163999999962],[-79.301101999999958,56.447212000000036],[-79.298049999999932,56.459435000000099],[-79.293335000000013,56.488044999999943],[-79.291672000000005,56.498878000000104],[-79.286391999999921,56.570273999999984],[-79.139998999999932,56.546386999999982],[-79.133057000000008,56.542770000000019],[-79.129990000000021,56.537773000000072],[-79.125548999999978,56.514159999999947],[-79.121932999999956,56.495543999999938],[-79.119995000000017,56.489989999999977],[-79.111938000000009,56.47526600000009],[-79.099990999999989,56.463051000000007],[-79.091384999999889,56.454437000000098],[-79.075561999999934,56.444153000000085],[-79.055557000000022,56.433876000000112],[-79.038895000000025,56.428878999999995],[-79.021666999999923,56.426941000000056]],[[-79.141952999999944,56.616661000000079],[-79.15194699999995,56.616386000000091],[-79.260009999999966,56.628044000000102],[-79.268889999999999,56.629158000000075],[-79.274719000000005,56.632209999999986],[-79.277495999999985,56.637215000000026],[-79.279998999999975,56.648880000000133],[-79.280288999999982,56.654990999999995],[-79.275009000000011,56.667213000000004],[-79.271941999999967,56.67193600000013],[-79.254729999999881,56.679993000000138],[-79.244155999999919,56.682495000000017],[-79.218886999999938,56.684990000000028],[-79.208892999999989,56.683876000000055],[-79.193603999999937,56.678329000000133],[-79.160004000000015,56.65776800000009],[-79.151108000000022,56.649994000000106],[-79.141678000000013,56.635826000000066],[-79.138061999999991,56.626099000000124],[-79.138901000000033,56.619986999999924],[-79.141952999999944,56.616661000000079]],[[-61.1875,56.586104999999975],[-61.211670000000026,56.581664999999987],[-61.217498999999975,56.58277099999998],[-61.222770999999966,56.588882000000069],[-61.231667000000016,56.611663999999962],[-61.231941000000006,56.61971299999999],[-61.226104999999961,56.626656000000025],[-61.165832999999964,56.684433000000126],[-61.159163999999919,56.688324000000023],[-61.150276000000019,56.689430000000073],[-61.131942999999978,56.68721000000005],[-61.0819469999999,56.678878999999938],[-61.0777819999999,56.674995000000138],[-61.057776999999987,56.628875999999991],[-61.059440999999993,56.626380999999981],[-61.06361400000003,56.624160999999958],[-61.103888999999867,56.606658999999922],[-61.1875,56.586104999999975]],[[-79.560821999999973,56.617767000000129],[-79.567504999999983,56.615273000000002],[-79.573333999999988,56.618881000000101],[-79.583618000000001,56.648048000000017],[-79.583892999999932,56.65277100000003],[-79.589995999999985,56.768326000000002],[-79.587508999999898,56.788886999999988],[-79.581679999999949,56.80721299999999],[-79.578339000000028,56.81249200000002],[-79.57417299999986,56.815825999999959],[-79.567504999999983,56.817772000000048],[-79.516662999999937,56.78555300000005],[-79.496384000000035,56.766936999999984],[-79.476943999999946,56.72165700000005],[-79.474716000000001,56.689156000000139],[-79.486114999999984,56.658043000000134],[-79.488891999999964,56.655548000000067],[-79.560821999999973,56.617767000000129]],[[-79.881942999999978,56.743607000000054],[-79.888610999999969,56.741104000000064],[-79.904723999999987,56.741661000000136],[-79.923889000000031,56.751389000000017],[-79.930831999999953,56.754997000000117],[-79.941101000000003,56.763610999999969],[-79.944442999999922,56.767769000000101],[-79.947494999999947,56.773323000000119],[-79.957229999999925,56.799164000000019],[-79.958892999999932,56.805267000000129],[-79.958618000000001,56.811377999999991],[-79.954726999999934,56.823607999999922],[-79.945830999999998,56.833603000000039],[-79.919158999999922,56.858330000000137],[-79.915008999999998,56.861382000000049],[-79.865829000000019,56.866104000000121],[-79.858046999999999,56.865829000000133],[-79.843886999999995,56.858330000000137],[-79.83444199999991,56.852492999999981],[-79.819457999999941,56.84027100000003],[-79.81639100000001,56.835548000000017],[-79.814712999999927,56.829162999999994],[-79.81361400000003,56.816939999999988],[-79.833892999999989,56.793610000000001],[-79.83805799999999,56.788886999999988],[-79.872222999999906,56.752220000000023],[-79.876663000000008,56.747772000000055],[-79.881942999999978,56.743607000000054]],[[-79.750564999999938,56.905823000000055],[-79.717498999999918,56.813605999999993],[-79.71833799999996,56.80721299999999],[-79.721114999999884,56.802773000000002],[-79.725554999999986,56.798049999999989],[-79.730834999999956,56.794158999999922],[-79.749725000000012,56.783607000000131],[-79.757507000000032,56.781936999999971],[-79.781113000000005,56.784721000000104],[-79.78832999999986,56.785828000000038],[-79.793555999999967,56.795792000000063],[-79.794373000000007,56.832947000000104],[-79.793143999999984,56.859890000000064],[-79.82376899999997,56.895003999999972],[-79.852753000000007,56.885204000000044],[-79.894164999999873,56.881935000000112],[-79.897506999999962,56.884995000000004],[-79.89805599999994,56.891106000000036],[-79.896118000000001,56.897217000000126],[-79.892776000000026,56.90248900000006],[-79.858611999999937,56.938599000000011],[-79.851943999999946,56.940268999999944],[-79.808333999999945,56.948326000000122],[-79.799438000000009,56.949431999999945],[-79.790833000000021,56.947769000000051],[-79.784164000000033,56.940826000000072],[-79.753615999999965,56.910820000000001],[-79.750564999999938,56.905823000000055]],[[-61.429211000000009,56.929707000000008],[-61.397204999999985,56.927715000000035],[-61.37261199999989,56.930972999999994],[-61.354888999999957,56.93639799999994],[-61.343319000000008,56.934227000000078],[-61.340785999999866,56.930248000000006],[-61.355277999999998,56.910820000000001],[-61.400275999999963,56.884720000000129],[-61.404716000000008,56.87971500000009],[-61.399444999999957,56.875824000000023],[-61.378052000000025,56.871658000000139],[-61.360282999999924,56.866104000000121],[-61.352225999999973,56.857773000000066],[-61.355834999999956,56.852776000000119],[-61.361670999999944,56.848045000000013],[-61.375831999999946,56.840546000000018],[-61.443168999999898,56.817719000000125],[-61.48966999999999,56.807549000000108],[-61.563331999999946,56.784721000000104],[-61.570281999999906,56.781661999999983],[-61.576949999999954,56.778046000000074],[-61.585555999999997,56.766388000000063],[-61.584998999999982,56.761383000000023],[-61.58277899999996,56.756660000000011],[-61.575561999999991,56.753052000000082],[-61.564720000000023,56.751663000000121],[-61.555831999999953,56.752777000000094],[-61.540839999999946,56.757773999999984],[-61.526664999999866,56.76527400000009],[-61.515282000000013,56.774712000000079],[-61.497653999999955,56.78694200000001],[-61.488975999999923,56.789295000000038],[-61.476315,56.79019900000003],[-61.434002000000021,56.783688000000097],[-61.393313999999918,56.778988000000027],[-61.386626999999976,56.775913000000003],[-61.382107000000019,56.771393000000103],[-61.373965999999996,56.74390800000009],[-61.368724999999984,56.695988],[-61.368632999999988,56.6857720000001],[-61.370804000000021,56.675282000000038],[-61.378399000000002,56.632607000000007],[-61.379119999999944,56.626820000000066],[-61.39358900000002,56.617779000000041],[-61.409137999999928,56.615608000000009],[-61.444217999999978,56.619587000000081],[-61.484000999999978,56.641647000000091],[-61.521975999999938,56.669857000000093],[-61.561034999999947,56.682513999999969],[-61.588157999999964,56.703853999999978],[-61.605334999999968,56.713798999999995],[-61.635353000000009,56.731518000000051],[-61.644393999999977,56.734775999999954],[-61.644031999999868,56.73802900000004],[-61.634991000000014,56.770938999999998],[-61.624865999999997,56.82591200000013],[-61.632098999999982,56.859547000000077],[-61.588698999999963,56.893539000000089],[-61.534812999999986,56.901859000000002],[-61.522517999999934,56.914879000000099],[-61.5261339999999,56.933323000000087],[-61.523963999999921,56.940193000000079],[-61.499370999999996,56.952849999999955],[-61.473694000000023,56.95900000000006],[-61.460673999999983,56.955021000000045],[-61.446571000000006,56.935131000000126],[-61.429211000000009,56.929707000000008]],[[-76.621108999999933,57.075554000000125],[-76.646956999999986,57.073050999999964],[-76.660278000000005,57.075828999999999],[-76.671386999999925,57.083327999999995],[-76.675551999999925,57.087769000000094],[-76.681106999999997,57.097771000000023],[-76.709732000000031,57.182213000000047],[-76.708617999999944,57.18832400000008],[-76.678329000000019,57.205269000000044],[-76.669998000000021,57.20249199999995],[-76.667496000000028,57.195541000000048],[-76.626099000000011,57.142769000000101],[-76.618880999999988,57.080276000000026],[-76.621108999999933,57.075554000000125]],[[-61.621666000000005,57.335548000000131],[-61.611114999999984,57.334991000000002],[-61.605559999999912,57.335548000000131],[-61.594443999999953,57.334159999999997],[-61.589995999999985,57.330275999999969],[-61.589438999999913,57.325272000000041],[-61.59194199999996,57.321380999999974],[-61.608337000000006,57.308327000000077],[-61.652221999999995,57.290549999999996],[-61.658051,57.290276000000063],[-61.734725999999966,57.290276000000063],[-61.739998000000014,57.291939000000013],[-61.753333999999938,57.302490000000091],[-61.763617999999951,57.311661000000072],[-61.766662999999937,57.315269000000001],[-61.767776000000026,57.319716999999969],[-61.768607999999915,57.324996999999996],[-61.767501999999979,57.328330999999991],[-61.752228000000002,57.360275000000001],[-61.74888599999997,57.365546999999935],[-61.74500299999994,57.369155999999975],[-61.726944000000003,57.374435000000119],[-61.702498999999989,57.372765000000129],[-61.693329000000006,57.368050000000096],[-61.677497999999957,57.357216000000051],[-61.632216999999912,57.337769000000037],[-61.621666000000005,57.335548000000131]],[[-76.715012000000002,57.292770000000019],[-76.72972099999987,57.289718999999991],[-76.734726000000023,57.291382000000112],[-76.740279999999984,57.294441000000063],[-76.744445999999982,57.299438000000009],[-76.793059999999969,57.374709999999936],[-76.821944999999914,57.419715999999994],[-76.823623999999995,57.424713000000111],[-76.821670999999981,57.429436000000067],[-76.812774999999931,57.428329000000133],[-76.78443900000002,57.41693900000007],[-76.761397999999986,57.40387700000008],[-76.735549999999989,57.386383000000137],[-76.731109999999944,57.381934999999999],[-76.725554999999986,57.372765000000129],[-76.721114999999941,57.356658999999979],[-76.708054000000004,57.29583000000008],[-76.715012000000002,57.292770000000019]],[[-61.655273000000022,57.391380000000083],[-61.675003000000004,57.389992000000007],[-61.839721999999995,57.408043000000134],[-61.860000999999954,57.412491000000102],[-61.877494999999954,57.418602000000021],[-61.889998999999989,57.426102000000071],[-61.894446999999957,57.42971799999998],[-61.897780999999952,57.433327000000133],[-61.900275999999963,57.437492000000134],[-61.897498999999982,57.444153000000085],[-61.813003999999921,57.473709000000042],[-61.772738999999945,57.495097999999984],[-61.742774999999995,57.534995999999978],[-61.737220999999977,57.536942000000067],[-61.719993999999986,57.536384999999996],[-61.648055999999997,57.530272999999966],[-61.643889999999999,57.522766000000047],[-61.634726999999998,57.509438000000046],[-61.613616999999977,57.416100000000142],[-61.615279999999984,57.409157000000107],[-61.634170999999924,57.398880000000133],[-61.648337999999967,57.393608000000029],[-61.655273000000022,57.391380000000083]],[[-61.878333999999995,57.46305099999995],[-61.926948999999979,57.45249200000012],[-61.937499999999943,57.453049000000021],[-61.946945000000028,57.454993999999999],[-61.955832999999927,57.458046000000081],[-61.962776000000019,57.462212000000022],[-62.012504999999919,57.508331000000112],[-62.021942000000024,57.521102999999925],[-62.02305599999994,57.534164000000033],[-62.020279000000016,57.540276000000063],[-62.014450000000011,57.549438000000123],[-61.992500000000007,57.569160000000011],[-61.974997999999971,57.581383000000073],[-61.968886999999995,57.584434999999985],[-61.953056000000004,57.59027100000003],[-61.944442999999978,57.590828000000101],[-61.878052000000025,57.584991000000002],[-61.855002999999954,57.580551000000128],[-61.833327999999995,57.574440000000038],[-61.817504999999926,57.567215000000033],[-61.783614999999941,57.550545000000056],[-61.781386999999995,57.548050000000046],[-61.778885000000002,57.543883999999935],[-61.77694699999995,57.52388000000002],[-61.777778999999953,57.518326000000059],[-61.779441999999904,57.513611000000026],[-61.783057999999869,57.508331000000112],[-61.864165999999955,57.466385000000116],[-61.878333999999995,57.46305099999995]],[[-79.797501000000011,57.418884000000048],[-79.801666000000012,57.415825000000098],[-79.805556999999965,57.418053000000043],[-79.835830999999985,57.460274000000084],[-79.826949999999897,57.53804800000006],[-79.808883999999978,57.561661000000015],[-79.792769999999962,57.578880000000083],[-79.749160999999958,57.609718000000044],[-79.740828999999962,57.615547000000106],[-79.734160999999915,57.618881000000044],[-79.727782999999931,57.61721],[-79.723052999999993,57.612770000000012],[-79.706116000000009,57.585548000000074],[-79.70666499999993,57.580826000000002],[-79.704726999999991,57.576660000000061],[-79.698607999999979,57.563324000000136],[-79.695830999999998,57.531661999999983],[-79.698607999999979,57.519989000000123],[-79.705001999999922,57.508605999999929],[-79.712508999999955,57.500548999999978],[-79.797501000000011,57.418884000000048]],[[-61.688605999999936,57.713051000000121],[-61.696105999999929,57.712212000000136],[-61.757506999999976,57.715546000000131],[-61.768889999999999,57.716934000000037],[-61.894164999999987,57.754166000000055],[-61.896950000000004,57.758331000000055],[-61.896110999999962,57.769714000000079],[-61.891669999999976,57.779160000000047],[-61.865836999999999,57.799721000000034],[-61.853614999999934,57.808327000000133],[-61.80889099999996,57.836936999999978],[-61.800551999999925,57.841377000000023],[-61.778885000000002,57.84526800000009],[-61.773055999999997,57.845543000000077],[-61.711113000000012,57.834160000000111],[-61.698607999999922,57.830276000000083],[-61.653610000000015,57.784721000000104],[-61.652221999999995,57.782494000000042],[-61.651664999999923,57.779433999999981],[-61.652495999999928,57.775826000000052],[-61.654166999999916,57.771103000000096],[-61.668609999999887,57.738884000000041],[-61.674171000000001,57.726936000000023],[-61.684440999999936,57.714996000000099],[-61.688605999999936,57.713051000000121]],[[-61.947494999999947,57.787216000000114],[-61.957222000000002,57.78694200000001],[-62.08916499999998,57.808043999999995],[-62.100280999999995,57.816101000000003],[-62.108337000000006,57.824715000000026],[-62.109443999999996,57.829437000000098],[-62.108054999999922,57.837769000000094],[-62.099723999999924,57.846382000000062],[-62.094443999999953,57.850547999999947],[-62.065276999999924,57.870544000000109],[-62.028884999999946,57.892768999999987],[-62.009170999999924,57.904434000000037],[-61.995002999999997,57.90915700000005],[-61.986114999999984,57.910271000000023],[-61.971663999999976,57.911377000000016],[-61.941108999999983,57.909988000000055],[-61.928336999999942,57.908599999999922],[-61.923332000000016,57.906096999999988],[-61.918891999999971,57.90248900000006],[-61.884444999999971,57.86693600000001],[-61.867774999999881,57.84276600000004],[-61.867774999999881,57.838600000000099],[-61.879439999999931,57.816665999999998],[-61.881942999999922,57.812767000000008],[-61.885558999999887,57.809157999999968],[-61.889998999999989,57.806381000000101],[-61.940833999999938,57.788886999999988],[-61.947494999999947,57.787216000000114]],[[-77.678328999999962,58.235549999999932],[-77.687774999999931,58.235268000000076],[-77.702788999999996,58.238884000000098],[-77.761123999999938,58.257499999999936],[-77.946380999999917,58.3211060000001],[-77.950835999999924,58.32416500000005],[-77.947495000000004,58.328605999999979],[-77.940551999999968,58.330551000000014],[-77.932495000000017,58.331383000000073],[-77.917312999999922,58.329369000000042],[-77.829726999999934,58.311378000000047],[-77.80749499999996,58.305267000000015],[-77.801392000000021,58.303046999999992],[-77.702788999999996,58.260277000000031],[-77.689437999999996,58.253882999999973],[-77.670273000000009,58.244156000000032],[-77.668334999999956,58.241936000000067],[-77.668334999999956,58.240547000000049],[-77.678328999999962,58.235549999999932]],[[-67.596114999999998,58.284164000000089],[-67.616394000000014,58.284164000000089],[-67.637786999999946,58.28472099999999],[-67.666106999999954,58.292770000000019],[-67.673888999999917,58.296104000000014],[-67.676666000000012,58.301384000000041],[-67.675827000000027,58.306099000000074],[-67.672775000000001,58.312209999999993],[-67.624435000000005,58.368050000000096],[-67.61999499999996,58.372215000000097],[-67.61082499999992,58.373877999999991],[-67.599166999999909,58.373046999999985],[-67.580565999999976,58.369986999999924],[-67.527221999999995,58.343605000000082],[-67.520844000000011,58.339989000000003],[-67.517501999999979,58.335266000000047],[-67.51916499999993,58.329719999999952],[-67.524445000000014,58.32416500000005],[-67.551102000000014,58.302215999999987],[-67.557220000000029,58.298050000000046],[-67.571670999999867,58.290833000000134],[-67.596114999999998,58.284164000000089]],[[-78.453888000000006,58.539993000000038],[-78.455565999999862,58.537215999999944],[-78.463332999999977,58.537498000000028],[-78.474716000000001,58.541382000000056],[-78.649993999999936,58.601386999999988],[-78.672501000000011,58.610549999999989],[-78.683884000000035,58.620827000000133],[-78.697495000000004,58.678329000000076],[-78.698607999999979,58.688599000000011],[-78.696944999999971,58.690543999999989],[-78.692764000000011,58.691933000000006],[-78.665008999999998,58.674995000000081],[-78.659163999999976,58.669991000000095],[-78.635284000000013,58.618598999999961],[-78.631942999999978,58.616386000000034],[-78.628051999999968,58.614158999999972],[-78.56639100000001,58.586104999999918],[-78.513061999999934,58.563880999999981],[-78.457229999999981,58.542770000000132],[-78.453888000000006,58.539993000000038]],[[-69.194442999999922,59.064712999999983],[-69.18638599999997,59.064437999999996],[-69.180831999999953,59.06721500000009],[-69.178328999999906,59.029715999999951],[-69.227218999999934,58.971931000000041],[-69.320281999999963,58.946381000000088],[-69.327498999999989,58.94499200000007],[-69.338897999999972,58.944434999999999],[-69.350280999999995,58.946381000000088],[-69.355559999999969,58.949715000000083],[-69.360000999999954,58.958603000000039],[-69.357223999999974,58.964714000000129],[-69.318344000000025,59.02555099999995],[-69.319457999999997,59.098045000000127],[-69.353057999999976,59.127213000000097],[-69.357773000000009,59.13499500000006],[-69.357223999999974,59.139717000000132],[-69.345550999999944,59.144714000000079],[-69.339447000000007,59.146103000000039],[-69.282227000000034,59.154433999999981],[-69.275283999999942,59.154991000000052],[-69.198607999999922,59.14527099999998],[-69.18638599999997,59.138329000000056],[-69.18249499999996,59.128601000000003],[-69.194991999999957,59.09415400000006],[-69.199996999999996,59.077217000000019],[-69.200561999999877,59.072495000000117],[-69.198607999999922,59.06721500000009],[-69.194442999999922,59.064712999999983]],[[-80.53443900000002,59.369438000000002],[-80.544158999999979,59.365547000000106],[-80.552215999999873,59.365829000000133],[-80.555832000000009,59.369438000000002],[-80.549437999999952,59.446938000000046],[-80.537506000000008,59.455268999999987],[-80.488051999999982,59.477486000000056],[-80.475554999999929,59.481102000000078],[-80.465011999999945,59.463882000000126],[-80.471389999999928,59.454994000000113],[-80.477218999999934,59.451103000000046],[-80.520844000000011,59.382767000000058],[-80.525283999999942,59.377486999999974],[-80.53443900000002,59.369438000000002]],[[-80.277495999999985,59.618599000000131],[-80.319167999999991,59.612213000000054],[-80.329726999999991,59.612495000000138],[-80.340560999999923,59.614158999999972],[-80.343886999999995,59.619156000000032],[-80.340835999999967,59.625267000000122],[-80.295273000000009,59.678329000000019],[-80.232773000000009,59.725265999999976],[-80.222228999999857,59.723602000000142],[-80.171386999999925,59.715271000000087],[-80.154175000000009,59.709991000000002],[-80.14527899999996,59.705550999999957],[-80.154723999999931,59.682495000000131],[-80.156661999999983,59.678329000000019],[-80.170546999999999,59.673881999999992],[-80.205840999999964,59.665267999999912],[-80.222777999999892,59.660271000000023],[-80.229720999999984,59.656380000000127],[-80.233063000000016,59.651100000000042],[-80.237212999999997,59.639434999999992],[-80.240554999999858,59.634163000000058],[-80.246384000000035,59.629990000000078],[-80.260833999999988,59.623604],[-80.277495999999985,59.618599000000131]],[[-64.019729999999925,59.714713999999958],[-64.124160999999958,59.695267000000115],[-64.134170999999981,59.695541000000048],[-64.146118000000001,59.696655000000021],[-64.157226999999978,59.699715000000083],[-64.16332999999986,59.703605999999979],[-64.204452999999944,59.734436000000017],[-64.192490000000021,59.765549000000021],[-64.121933000000013,59.849433999999974],[-64.115828999999962,59.852776000000063],[-64.107223999999974,59.854996000000085],[-64.067504999999926,59.863884000000041],[-64.061385999999914,59.864440999999943],[-64.052779999999984,59.859992999999974],[-64.049727999999959,59.855270000000019],[-64.047774999999945,59.849433999999974],[-64.055266999999958,59.835266000000104],[-64.054442999999992,59.829437000000041],[-64.042769999999905,59.783882000000062],[-64.020278999999903,59.781104999999968],[-64.002791999999943,59.774712000000022],[-63.959723999999937,59.75638600000002],[-63.959441999999967,59.752220000000136],[-63.99722300000002,59.723602000000142],[-64.011397999999872,59.716385000000059],[-64.019729999999925,59.714713999999958]],[[-80.089721999999938,59.751938000000052],[-80.166945999999996,59.742493000000024],[-80.177779999999984,59.744156000000089],[-80.184158000000025,59.747771999999998],[-80.184722999999963,59.752777000000037],[-80.128875999999991,59.82388300000008],[-80.11500499999994,59.837769000000037],[-80.103057999999976,59.844994000000099],[-80.015015000000005,59.884995000000117],[-80.00778200000002,59.886107999999979],[-79.946944999999914,59.880272000000105],[-79.937774999999931,59.877768999999944],[-79.929992999999911,59.873603999999943],[-79.884170999999924,59.85833000000008],[-79.878875999999991,59.854713000000118],[-79.883621000000005,59.849998000000085],[-79.906661999999926,59.828049000000135],[-79.922226000000023,59.815544000000045],[-79.928054999999972,59.811661000000072],[-80.025283999999942,59.764442000000088],[-80.089721999999938,59.751938000000052]],[[-64.427673000000027,60.372932000000048],[-64.452788999999996,60.357215999999994],[-64.442763999999897,60.309715000000097],[-64.438323999999966,60.305550000000096],[-64.423614999999984,60.282494000000042],[-64.429442999999935,60.281936999999971],[-64.438048999999864,60.282494000000042],[-64.448607999999979,60.284164000000033],[-64.50111400000003,60.301933000000133],[-64.521712999999977,60.310730000000035],[-64.541106999999954,60.324440000000038],[-64.557219999999916,60.331383000000017],[-64.601943999999889,60.350273000000016],[-64.610001000000011,60.353606999999954],[-64.632216999999912,60.357498000000021],[-64.643889999999942,60.357773000000066],[-64.655562999999972,60.357498000000021],[-64.666107000000011,60.356940999999949],[-64.675551999999982,60.355270000000075],[-64.710007000000019,60.358330000000137],[-64.728881999999999,60.363327000000083],[-64.790282999999931,60.391106000000093],[-64.815552000000025,60.406096999999988],[-64.831116000000009,60.419159000000036],[-64.867492999999911,60.450272000000041],[-64.868606999999997,60.453323000000069],[-64.868056999999965,60.458885000000009],[-64.856110000000001,60.473877000000016],[-64.84722899999997,60.478874000000133],[-64.837783999999999,60.482491000000039],[-64.823058999999944,60.485268000000133],[-64.639998999999989,60.4847180000001],[-64.61860699999994,60.477211000000011],[-64.426940999999943,60.401381999999955],[-64.423889000000031,60.397216999999955],[-64.422501000000011,60.391937000000098],[-64.423889000000031,60.383049000000085],[-64.427673000000027,60.372932000000048]],[[-68.25140399999998,60.230820000000051],[-68.310546999999985,60.223045000000127],[-68.340285999999992,60.223320000000001],[-68.361937999999952,60.225822000000051],[-68.376937999999996,60.232491000000095],[-68.387222000000008,60.240829000000076],[-68.393065999999976,60.249161000000072],[-68.394729999999981,60.254440000000045],[-68.395003999999972,60.259995000000117],[-68.393065999999976,60.276100000000042],[-68.384170999999924,60.29972100000009],[-68.37777699999998,60.310271999999998],[-68.314437999999996,60.390273999999977],[-68.175277999999992,60.53443900000002],[-68.129439999999931,60.570549000000085],[-68.119155999999919,60.577217000000076],[-68.092223999999987,60.581665000000044],[-68.081679999999949,60.582496999999989],[-68.035277999999948,60.581107999999972],[-67.999435000000005,60.57749200000012],[-67.956664999999987,60.566100999999946],[-67.948607999999922,60.561377999999991],[-67.887221999999952,60.503883000000087],[-67.862212999999997,60.488045000000056],[-67.839721999999995,60.478043000000071],[-67.831389999999999,60.474990999999989],[-67.821395999999993,60.472487999999998],[-67.808043999999938,60.467209000000025],[-67.803054999999972,60.463051000000064],[-67.79861499999987,60.457497000000103],[-67.794998000000021,60.447769000000051],[-67.795546999999942,60.443877999999984],[-67.79861499999987,60.432213000000104],[-67.806106999999997,60.417496000000085],[-67.815276999999924,60.408043000000077],[-67.836394999999925,60.388603000000103],[-67.841385000000002,60.384438000000102],[-67.853333000000021,60.375266999999951],[-67.885559000000001,60.353606999999954],[-67.898055999999997,60.345267999999919],[-67.934433000000013,60.321662999999944],[-67.965285999999992,60.30832700000002],[-67.97222899999997,60.30582400000003],[-68.167496000000028,60.245544000000109],[-68.17721599999993,60.243049999999982],[-68.205276000000026,60.238045000000113],[-68.25140399999998,60.230820000000051]],[[-64.689986999999917,60.584435000000099],[-64.697220000000016,60.582214000000022],[-64.704452999999944,60.582496999999989],[-64.712783999999942,60.590271000000143],[-64.713897999999915,60.59526800000009],[-64.713057999999876,60.598877000000073],[-64.710830999999985,60.602776000000119],[-64.615554999999858,60.681664000000069],[-64.610274999999945,60.685265000000129],[-64.599166999999966,60.689430000000129],[-64.592772999999909,60.685547000000042],[-64.590835999999967,60.676659000000029],[-64.592498999999975,60.666939000000127],[-64.593886999999995,60.648331000000098],[-64.59584000000001,60.645271000000037],[-64.620543999999995,60.616661000000022],[-64.631667999999991,60.60833000000008],[-64.638061999999934,60.604996000000085],[-64.689986999999917,60.584435000000099]],[[-78.656386999999995,60.702774000000034],[-78.664718999999991,60.702217000000132],[-78.674163999999962,60.704711999999972],[-78.689986999999974,60.712212000000079],[-78.694716999999912,60.716660000000047],[-78.698333999999988,60.721656999999936],[-78.697768999999937,60.724159000000043],[-78.616393999999957,60.771935000000099],[-78.573623999999995,60.784163999999919],[-78.399993999999992,60.809990000000028],[-78.223891999999978,60.830826000000059],[-78.21945199999999,60.823883000000023],[-78.219161999999983,60.817497000000117],[-78.221114999999998,60.814156000000082],[-78.226669000000015,60.808883999999978],[-78.277221999999995,60.769157000000121],[-78.285004000000015,60.766106000000093],[-78.397231999999917,60.743881000000044],[-78.62332200000003,60.705551000000128],[-78.656386999999995,60.702774000000034]],[[-69.977218999999991,60.933051999999975],[-69.983886999999982,60.93110699999994],[-69.995269999999948,60.931381000000101],[-70.003615999999965,60.935265000000072],[-70.007781999999963,60.939155999999969],[-70.026107999999965,60.995827000000077],[-70.025008999999955,61.001937999999996],[-70.021666999999866,61.008605999999986],[-70.016662999999994,61.013611000000026],[-70.009170999999867,61.017768999999987],[-70.003341999999918,61.020828000000108],[-69.982772999999895,61.028327999999988],[-69.964721999999995,61.032768000000033],[-69.954177999999956,61.033882000000006],[-69.943603999999993,61.031380000000127],[-69.931380999999931,61.020271000000037],[-69.929992999999854,61.016663000000108],[-69.929717999999923,61.010825999999952],[-69.930832000000009,61.00471500000009],[-69.933883999999921,60.998047000000099],[-69.977218999999991,60.933051999999975]],[[-64.723891999999921,61.53833000000003],[-64.71665999999999,61.535827999999981],[-64.706954999999994,61.536658999999986],[-64.688323999999909,61.535552999999993],[-64.683318999999869,61.531105000000025],[-64.675277999999992,61.508606000000043],[-64.674164000000019,61.503325999999959],[-64.686935000000005,61.465827999999988],[-64.705276000000026,61.444153000000142],[-64.715012000000002,61.433327000000077],[-64.820557000000008,61.355270000000075],[-64.866942999999992,61.324164999999994],[-64.870833999999945,61.32249500000006],[-64.875274999999988,61.32249500000006],[-64.887222000000008,61.324715000000026],[-64.972503999999958,61.344154000000117],[-64.977492999999924,61.34777100000008],[-64.985000999999954,61.367493000000138],[-65.179168999999945,61.466933999999981],[-65.18582200000003,61.47554800000006],[-65.187499999999943,61.480270000000132],[-65.190552000000025,61.494995000000074],[-65.195267000000001,61.499160999999958],[-65.295272999999895,61.528877000000023],[-65.329453000000001,61.531937000000084],[-65.353333000000021,61.534721000000047],[-65.37249799999995,61.537216000000058],[-65.381103999999993,61.540550000000053],[-65.47444200000001,61.586936999999978],[-65.481109999999887,61.590828000000045],[-65.487777999999935,61.599433999999974],[-65.486938000000009,61.610825000000091],[-65.485000999999954,61.62193300000007],[-65.482223999999974,61.62860100000006],[-65.472228999999857,61.64027400000009],[-65.466400000000021,61.644997000000046],[-65.459441999999854,61.649162000000047],[-65.453063999999983,61.651932000000102],[-65.449158000000011,61.653602999999976],[-65.441375999999934,61.656654000000003],[-65.43582200000003,61.658043000000021],[-65.339721999999938,61.670547000000056],[-65.247498000000007,61.68082400000003],[-65.174438000000009,61.686935000000119],[-65.068343999999968,61.693047000000092],[-65.036391999999921,61.693603999999993],[-65.018889999999885,61.692490000000021],[-65.016112999999962,61.692214999999976],[-64.99499499999996,61.689987000000031],[-64.733062999999959,61.659987999999998],[-64.719161999999983,61.658043000000021],[-64.646392999999932,61.603882000000112],[-64.646118000000001,61.599716000000001],[-64.650833000000034,61.594437000000028],[-64.65972899999997,61.588042999999971],[-64.662780999999995,61.587769000000037],[-64.714172000000019,61.556381000000044],[-64.720275999999956,61.551383999999928],[-64.726104999999961,61.542220999999927],[-64.723891999999921,61.53833000000003]],[[-65.695266999999888,61.776657],[-65.71945199999999,61.754165999999998],[-65.803054999999915,61.755554000000075],[-65.827224999999942,61.758049000000085],[-65.891388000000006,61.76638800000012],[-65.903885000000002,61.768326000000059],[-65.931106999999997,61.778328000000045],[-65.939163000000008,61.782210999999961],[-65.944442999999978,61.785828000000095],[-65.948043999999925,61.790276000000063],[-65.94749499999989,61.796104000000014],[-65.943877999999927,61.799720999999977],[-65.818344000000025,61.860825000000034],[-65.809432999999956,61.86332700000014],[-65.789992999999981,61.865547000000106],[-65.778060999999866,61.865547000000106],[-65.767501999999979,61.862770000000012],[-65.718613000000005,61.841102999999976],[-65.714721999999938,61.836937000000091],[-65.713622999999984,61.824165000000107],[-65.695266999999888,61.776657]],[[-92.963897999999972,61.879158000000075],[-92.995270000000005,61.851105000000132],[-93.00167799999997,61.847214000000065],[-93.051940999999943,61.829437000000041],[-93.07028200000002,61.825272000000041],[-93.079726999999991,61.826941999999974],[-93.086669999999913,61.829437000000041],[-93.115828999999962,61.860275000000001],[-93.120270000000005,61.864441000000113],[-93.126937999999882,61.868599000000074],[-93.135833999999988,61.872489999999914],[-93.14805599999994,61.87582400000008],[-93.179717999999923,61.875549000000092],[-93.189437999999996,61.874161000000015],[-93.211120999999935,61.875267000000008],[-93.218886999999995,61.87943300000012],[-93.223327999999981,61.888329000000056],[-93.226105000000018,61.908325000000048],[-93.223617999999931,61.913048000000003],[-93.218886999999995,61.918884000000048],[-93.20944199999991,61.921104000000071],[-93.072509999999909,61.929993000000138],[-93.062209999999993,61.930550000000039],[-92.96945199999999,61.888329000000056],[-92.962783999999999,61.884162999999944],[-92.963897999999972,61.879158000000075]],[[-64.916106999999954,61.719437000000084],[-64.926940999999943,61.718880000000013],[-64.951950000000011,61.722488000000112],[-65.14805599999994,61.780548000000067],[-65.156661999999926,61.783882000000062],[-65.210555999999883,61.816940000000045],[-65.214721999999881,61.821938000000046],[-65.251953000000015,61.869713000000047],[-65.255843999999968,61.885551000000078],[-65.255004999999926,61.901657000000057],[-65.249435000000005,61.91027100000008],[-65.245270000000005,61.914711000000125],[-65.189712999999983,61.945540999999992],[-65.170273000000009,61.947769000000108],[-65.156951999999876,61.946938000000102],[-65.080291999999929,61.931107000000111],[-65.074448000000018,61.928329000000133],[-65.06806899999998,61.923882000000049],[-65.039169000000015,61.899719000000118],[-64.980834999999956,61.885826000000066],[-64.893341000000021,61.829994000000113],[-64.886948000000018,61.825554000000068],[-64.828887999999893,61.766662999999994],[-64.825835999999981,61.761939999999981],[-64.825287000000003,61.758330999999998],[-64.828887999999893,61.752220000000079],[-64.83555599999994,61.748877999999991],[-64.858046999999942,61.739158999999972],[-64.889449999999954,61.725822000000107],[-64.906112999999948,61.721100000000035],[-64.916106999999954,61.719437000000084]],[[-65.852492999999924,62.084717000000012],[-65.869155999999919,62.079720000000123],[-65.889998999999989,62.080551000000128],[-65.913329999999974,62.084990999999945],[-66.009734999999978,62.116661000000079],[-66.016662999999994,62.120543999999995],[-66.020279000000016,62.124435000000062],[-66.021118000000001,62.128326000000129],[-66.020843999999954,62.131660000000124],[-66.014724999999942,62.136658000000125],[-65.991942999999935,62.141380000000026],[-65.928054999999972,62.151657],[-65.904449,62.152771000000143],[-65.853607000000011,62.131104000000107],[-65.845000999999911,62.124992000000134],[-65.83555599999994,62.115272999999945],[-65.835830999999928,62.099716000000114],[-65.843886999999995,62.088599999999985],[-65.852492999999924,62.084717000000012]],[[-92.223617999999931,62.355552999999986],[-92.306106999999997,62.351661999999919],[-92.339721999999995,62.354712999999947],[-92.34973100000002,62.356659000000036],[-92.371932999999956,62.386939999999925],[-92.372498000000007,62.391937000000041],[-92.354445999999939,62.410820000000115],[-92.347777999999948,62.414436000000023],[-92.319457999999941,62.415268000000083],[-92.308333999999945,62.414436000000023],[-92.162216000000001,62.402214000000015],[-92.139724999999999,62.399719000000005],[-92.141112999999905,62.394714000000135],[-92.15834000000001,62.390549000000135],[-92.223617999999931,62.355552999999986]],[[-79.540558000000033,62.411102000000028],[-79.449996999999939,62.382767000000001],[-79.442764000000011,62.379990000000078],[-79.433883999999978,62.371376000000055],[-79.429168999999945,62.361664000000076],[-79.427215999999987,62.356102000000135],[-79.424438000000009,62.344154000000117],[-79.420546999999942,62.339989000000116],[-79.359160999999972,62.296104000000071],[-79.347228999999913,62.288886999999988],[-79.328613000000018,62.283332999999971],[-79.272780999999952,62.262215000000083],[-79.266112999999962,62.258048999999971],[-79.260833999999988,62.253608999999983],[-79.256393000000003,62.244438000000002],[-79.255568999999923,62.23971599999993],[-79.261397999999929,62.163605000000018],[-79.262222000000008,62.158882000000062],[-79.329726999999991,62.01527400000009],[-79.353881999999999,61.999718000000144],[-79.396392999999932,61.968879999999956],[-79.457229999999925,61.893883000000017],[-79.461944999999957,61.881660000000011],[-79.465560999999923,61.876099000000124],[-79.524445000000014,61.811378000000104],[-79.541320999999925,61.799789000000089],[-79.552779999999927,61.796386999999982],[-79.568344000000025,61.790276000000063],[-79.583618000000001,61.783051],[-79.596664000000033,61.774436999999978],[-79.605269999999962,61.765273999999977],[-79.611114999999984,61.754440000000102],[-79.612777999999992,61.742767000000072],[-79.611938000000009,61.738045],[-79.608336999999949,61.732208000000014],[-79.606110000000001,61.726654000000053],[-79.605559999999969,61.721100000000035],[-79.607498000000021,61.708885000000123],[-79.628875999999934,61.669158999999979],[-79.632216999999969,61.664993000000038],[-79.642226999999991,61.655822999999998],[-79.65695199999999,61.642494000000113],[-79.740828999999962,61.588600000000099],[-79.75389100000001,61.580276000000026],[-79.761397999999929,61.576942000000031],[-79.779449,61.571938000000102],[-79.805831999999896,61.568054000000075],[-79.827788999999939,61.566665999999998],[-79.846114999999941,61.569992000000013],[-79.87110899999999,61.609717999999987],[-79.954178000000013,61.683601000000124],[-80.06806899999998,61.745270000000062],[-80.079453000000001,61.747772000000111],[-80.092223999999987,61.748046999999929],[-80.138610999999912,61.748604000000057],[-80.161941999999954,61.748604000000057],[-80.173324999999977,61.750275000000101],[-80.191665999999884,61.755554000000075],[-80.205276000000026,61.762772000000098],[-80.275283999999999,61.806656000000032],[-80.27806099999998,61.810272000000055],[-80.278884999999946,61.816382999999973],[-80.291381999999942,61.929993000000138],[-80.295273000000009,61.983604000000014],[-80.268616000000009,62.107215999999994],[-80.266662999999994,62.111382000000049],[-80.198607999999979,62.1988750000001],[-80.180283000000031,62.217491000000109],[-80.017501999999979,62.358604000000014],[-80.009445000000028,62.362495000000081],[-79.981383999999935,62.374161000000072],[-79.947220000000016,62.386108000000036],[-79.938048999999978,62.388603000000046],[-79.919723999999974,62.393051000000014],[-79.900283999999999,62.395828000000108],[-79.842772999999909,62.403603000000032],[-79.833617999999944,62.404160000000104],[-79.730834999999956,62.399162000000103],[-79.605559999999969,62.41304800000006],[-79.584166999999979,62.417213000000061],[-79.561934999999892,62.417213000000061],[-79.540558000000033,62.411102000000028]],[[-92.411117999999931,62.39388300000013],[-92.420546999999942,62.391663000000108],[-92.431380999999988,62.391663000000108],[-92.440825999999959,62.393608000000086],[-92.529175000000009,62.378326000000072],[-92.539443999999946,62.377212999999983],[-92.561385999999914,62.377486999999917],[-92.583892999999989,62.379990000000078],[-92.595839999999953,62.382491999999957],[-92.600554999999986,62.386939999999925],[-92.600280999999995,62.392494000000113],[-92.596953999999926,62.397774000000027],[-92.592772999999966,62.40248900000006],[-92.539992999999981,62.428329000000019],[-92.531112999999948,62.431380999999931],[-92.410278000000005,62.408882000000006],[-92.403884999999946,62.404709000000025],[-92.405563000000029,62.399436999999921],[-92.411117999999931,62.39388300000013]],[[-64.653884999999946,62.540833000000021],[-64.580840999999964,62.538605000000075],[-64.559722999999963,62.554161000000022],[-64.559998000000007,62.55860100000001],[-64.555556999999965,62.560822000000144],[-64.549727999999959,62.56221000000005],[-64.397506999999962,62.536385000000053],[-64.389724999999999,62.533882000000062],[-64.385284000000013,62.531105000000139],[-64.382767000000001,62.525825999999995],[-64.382767000000001,62.511383000000137],[-64.39416499999993,62.461379999999963],[-64.477218999999991,62.408043000000021],[-64.528609999999958,62.386658000000068],[-64.59056099999998,62.367210000000114],[-64.598891999999978,62.366385999999977],[-64.653610000000015,62.372490000000028],[-64.772781000000009,62.386383000000023],[-64.87110899999999,62.406380000000127],[-64.926666000000012,62.41832700000009],[-64.937209999999993,62.421103999999957],[-64.945830999999998,62.424438000000123],[-64.952498999999875,62.428329000000019],[-64.953887999999949,62.431380999999931],[-64.965835999999911,62.465827999999931],[-64.846114999999998,62.555267000000015],[-64.815552000000025,62.559714999999983],[-64.797500999999954,62.561378000000104],[-64.766953000000001,62.562767000000122],[-64.753066999999987,62.562492000000077],[-64.741669000000002,62.560822000000144],[-64.653884999999946,62.540833000000021]],[[-78.008347000000015,62.593605000000082],[-77.86721799999998,62.589157000000114],[-77.850554999999986,62.582771000000037],[-77.841674999999952,62.568054000000018],[-77.837783999999999,62.556938000000116],[-77.840835999999911,62.549995000000081],[-77.844726999999978,62.544716000000108],[-77.852782999999988,62.541664000000026],[-77.86221299999994,62.53943600000008],[-77.873046999999985,62.537773000000129],[-77.885009999999966,62.537498000000141],[-77.913054999999929,62.53943600000008],[-78.103333000000021,62.559158000000082],[-78.113051999999925,62.56221000000005],[-78.114440999999943,62.570549000000085],[-78.111664000000019,62.578049000000135],[-78.107772999999952,62.582771000000037],[-78.105835000000013,62.583328000000108],[-78.047500999999897,62.591934000000037],[-78.030838000000017,62.593323000000055],[-78.019164999999987,62.591934000000037],[-78.008347000000015,62.593605000000082]],[[-77.805267000000015,62.592491000000109],[-77.727218999999934,62.585822999999948],[-77.665832999999907,62.586655000000064],[-77.628052000000025,62.588326000000109],[-77.621384000000035,62.584435000000042],[-77.637787000000003,62.570831000000112],[-77.651108000000022,62.563881000000094],[-77.659164000000033,62.560822000000144],[-77.734725999999966,62.535827999999981],[-77.745270000000005,62.534163999999976],[-77.758620999999891,62.535553000000107],[-77.780288999999925,62.539161999999976],[-77.808608999999933,62.546660999999915],[-77.813613999999973,62.551102000000014],[-77.831116000000009,62.590271000000087],[-77.831679999999949,62.595825000000104],[-77.821121000000005,62.596099999999922],[-77.809433000000013,62.59415400000006],[-77.805267000000015,62.592491000000109]],[[-64.983063000000016,62.528046000000018],[-65.007232999999928,62.526382000000012],[-65.096389999999985,62.534996000000035],[-65.119720000000029,62.537498000000141],[-65.131942999999978,62.539719000000048],[-65.138061999999991,62.542770000000075],[-65.141677999999956,62.54694400000011],[-65.137787000000003,62.550544999999943],[-65.022507000000019,62.594994000000099],[-65.00306699999993,62.598877000000016],[-64.972503999999958,62.602493000000095],[-64.909163999999976,62.604438999999957],[-64.892501999999979,62.598877000000016],[-64.884734999999921,62.59415400000006],[-64.843886999999938,62.582771000000037],[-64.839447000000007,62.57777399999992],[-64.860824999999863,62.561378000000104],[-64.866104000000007,62.558044000000109],[-64.874435000000005,62.554709999999943],[-64.965285999999878,62.531380000000013],[-64.972778000000005,62.529716000000008],[-64.983063000000016,62.528046000000018]],[[-91.572783999999956,62.627487000000087],[-91.578612999999962,62.62193300000007],[-91.668059999999912,62.649162000000047],[-91.683059999999955,62.662209000000075],[-91.685546999999985,62.666939000000127],[-91.67582699999997,62.669159000000093],[-91.663329999999974,62.665543000000071],[-91.655272999999909,62.662209000000075],[-91.581954999999994,62.641380000000083],[-91.575561999999934,62.637215000000083],[-91.571121000000005,62.632767000000115],[-91.572783999999956,62.627487000000087]],[[-90.979995999999971,62.657767999999976],[-90.990279999999984,62.656654000000003],[-91.003341999999918,62.657211000000075],[-91.098891999999921,62.654433999999981],[-91.244719999999973,62.669991000000039],[-91.256393000000003,62.671936000000017],[-91.266952999999944,62.675552000000096],[-91.271117999999944,62.679992999999968],[-91.267226999999991,62.685546999999985],[-91.226944000000003,62.691658000000075],[-91.173049999999989,62.691375999999991],[-91.080291999999986,62.686935000000062],[-91.056106999999997,62.681664000000069],[-90.981673999999998,62.661376999999959],[-90.979995999999971,62.657767999999976]],[[-74.347778000000005,62.679436000000067],[-74.309998000000007,62.679161000000079],[-74.285552999999993,62.679992999999968],[-74.25028999999995,62.682495000000074],[-74.216109999999958,62.684990000000084],[-74.181670999999994,62.688880999999981],[-74.158889999999985,62.688880999999981],[-74.145843999999954,62.687767000000008],[-74.015839000000028,62.664993000000038],[-74.009170999999981,62.662490999999932],[-73.959732000000031,62.62082700000002],[-73.958054000000004,62.616661000000136],[-73.958054000000004,62.612495000000024],[-73.962508999999955,62.607772999999952],[-73.969727000000034,62.604163999999969],[-73.988602000000014,62.602218999999991],[-74.128875999999877,62.600829999999974],[-74.154448999999886,62.601105000000018],[-74.169158999999922,62.602218999999991],[-74.183608999999933,62.603882000000056],[-74.333618000000001,62.62943300000012],[-74.541381999999942,62.668327000000033],[-74.551102000000014,62.670829999999967],[-74.586394999999925,62.683051999999975],[-74.617217999999923,62.696098000000063],[-74.639724999999999,62.706383000000017],[-74.64973399999991,62.712769000000094],[-74.651397999999858,62.716934000000094],[-74.645844000000011,62.720824999999991],[-74.537215999999944,62.748878000000104],[-74.526671999999905,62.748878000000104],[-74.519164999999873,62.747772000000111],[-74.482772999999952,62.739716000000044],[-74.392226999999934,62.687210000000107],[-74.379989999999964,62.682495000000074],[-74.374160999999958,62.681381000000101],[-74.347778000000005,62.679436000000067]],[[-70.711670000000026,62.81499500000001],[-70.659728999999913,62.79833200000013],[-70.587783999999999,62.774162000000103],[-70.547500999999954,62.765273999999977],[-70.415557999999976,62.729156000000103],[-70.396956999999986,62.723045000000013],[-70.226104999999961,62.603049999999996],[-70.217772999999966,62.594437000000028],[-70.212218999999948,62.584160000000054],[-70.211120999999991,62.579163000000108],[-70.211945000000014,62.57777399999992],[-70.264724999999999,62.559158000000082],[-70.283324999999991,62.55443600000001],[-70.373610999999926,62.533332999999914],[-70.393065999999976,62.530273000000079],[-70.414444000000003,62.529434000000094],[-70.466659999999933,62.53166200000004],[-70.501113999999973,62.533607000000075],[-70.686385999999914,62.546104000000014],[-70.723891999999978,62.550270000000125],[-70.746383999999978,62.554709999999943],[-70.765015000000005,62.560547000000099],[-70.770844000000011,62.564712999999983],[-70.819732999999985,62.604713000000118],[-70.825011999999958,62.614441000000113],[-70.854445999999939,62.713608000000079],[-70.846663999999976,62.766106000000036],[-70.945540999999935,62.798050000000046],[-71.01916499999993,62.811934999999949],[-71.032500999999968,62.81249200000002],[-71.043334999999956,62.811934999999949],[-71.051665999999955,62.810547000000042],[-71.106383999999935,62.80082700000014],[-71.141113000000018,62.794998000000135],[-71.148620999999935,62.794998000000135],[-71.15834000000001,62.797217999999987],[-71.176101999999958,62.809158000000082],[-71.240554999999972,62.876380999999981],[-71.241378999999995,62.881378000000097],[-71.236389000000031,62.886658000000125],[-71.229445999999882,62.888046000000031],[-71.191100999999946,62.884720000000016],[-71.073897999999929,62.871933000000013],[-70.788054999999929,62.836104999999975],[-70.760283999999956,62.829994000000056],[-70.711670000000026,62.81499500000001]],[[-66.368331999999953,62.83526599999999],[-66.373885999999857,62.833603000000096],[-66.386123999999995,62.834434999999985],[-66.490279999999984,62.855270000000132],[-66.505279999999971,62.861382000000106],[-66.601669000000015,62.906654000000117],[-66.593886999999938,62.911934000000031],[-66.574172999999973,62.913048000000003],[-66.547775000000001,62.910545000000013],[-66.540282999999931,62.907493999999986],[-66.441939999999988,62.871101000000124],[-66.377776999999924,62.843322999999998],[-66.370270000000005,62.839713999999958],[-66.368331999999953,62.83526599999999]],[[-81.87110899999999,62.928329000000133],[-81.865554999999972,62.923324999999977],[-81.864165999999955,62.919990999999982],[-81.90695199999999,62.866386000000091],[-81.926101999999958,62.744156000000032],[-81.924712999999997,62.739158999999972],[-81.923889000000031,62.733046999999942],[-81.924164000000019,62.728325000000041],[-81.926101999999958,62.723602000000085],[-81.929169000000002,62.719437000000084],[-81.938598999999954,62.709991000000116],[-81.958892999999989,62.697768999999937],[-81.973052999999993,62.689713000000097],[-82.102218999999991,62.629158000000132],[-82.1875,62.599433999999917],[-82.277785999999935,62.584160000000054],[-82.286941999999897,62.581664999999987],[-82.315552000000025,62.571663000000058],[-82.369155999999919,62.547493000000031],[-82.381667999999991,62.53943600000008],[-82.387786999999946,62.534721000000047],[-82.40194699999995,62.520546000000138],[-82.40834000000001,62.509720000000016],[-82.408889999999928,62.496657999999968],[-82.414444000000003,62.478043000000071],[-82.425811999999951,62.469986000000063],[-82.442214999999919,62.458603000000096],[-82.449722000000008,62.455269000000101],[-82.499434999999949,62.438599000000124],[-82.533889999999985,62.428604000000064],[-82.551940999999999,62.423881999999992],[-82.583617999999944,62.412766000000033],[-82.621384000000035,62.395271000000037],[-82.641113000000018,62.385269000000051],[-82.647232000000031,62.38110400000005],[-82.670273000000009,62.35943600000013],[-82.688599000000011,62.341103000000089],[-82.713057999999933,62.321381000000031],[-82.731383999999935,62.309990000000084],[-82.743606999999997,62.302489999999977],[-82.769164999999987,62.290276000000006],[-82.985549999999989,62.209717000000126],[-83.001953000000015,62.204437000000041],[-83.087783999999999,62.178879000000109],[-83.121932999999956,62.173050000000103],[-83.136397999999986,62.173050000000103],[-83.143889999999999,62.176659000000086],[-83.150832999999977,62.182770000000005],[-83.15943900000002,62.198600999999996],[-83.168059999999912,62.207497000000103],[-83.176392000000021,62.213051000000064],[-83.198607999999979,62.222214000000065],[-83.249435000000005,62.240829000000019],[-83.275832999999977,62.248604000000114],[-83.308043999999882,62.252777000000037],[-83.322784000000013,62.253052000000082],[-83.337783999999942,62.252219999999966],[-83.359726000000023,62.249718000000087],[-83.405562999999972,62.238884000000041],[-83.471938999999907,62.222763000000043],[-83.480835000000013,62.219986000000119],[-83.498885999999914,62.213326000000109],[-83.513335999999924,62.20638300000013],[-83.539992999999924,62.191933000000006],[-83.57417299999986,62.176384000000098],[-83.639174999999966,62.151100000000099],[-83.653885000000002,62.145827999999995],[-83.672774999999945,62.141106000000093],[-83.683318999999983,62.139717000000076],[-83.703887999999949,62.141662999999994],[-83.709441999999967,62.144440000000088],[-83.713897999999972,62.147216999999955],[-83.71833799999996,62.152214000000072],[-83.722778000000005,62.160271000000023],[-83.722778000000005,62.167213000000118],[-83.718063000000029,62.17943600000001],[-83.711945000000014,62.217209000000025],[-83.711669999999913,62.235825000000034],[-83.721389999999985,62.281662000000097],[-83.722778000000005,62.286385000000109],[-83.725829999999917,62.295273000000066],[-83.731673999999998,62.303604000000007],[-83.738892000000021,62.306937999999946],[-83.756667999999991,62.312492000000134],[-83.783324999999991,62.31888600000002],[-83.806655999999975,62.326385000000016],[-83.824448000000018,62.337212000000022],[-83.902495999999871,62.387497000000053],[-83.918610000000001,62.399162000000103],[-83.933608999999876,62.412209000000132],[-83.942489999999964,62.421661000000029],[-83.945267000000001,62.42721599999993],[-83.946654999999964,62.434158000000025],[-83.946654999999964,62.440269000000114],[-83.945267000000001,62.447212000000093],[-83.939162999999951,62.457497000000046],[-83.914168999999958,62.478600000000142],[-83.908339999999953,62.482764999999972],[-83.869445999999982,62.501105999999936],[-83.853058000000033,62.508049000000142],[-83.814437999999996,62.523880000000077],[-83.741378999999995,62.551658999999916],[-83.704177999999956,62.569443000000035],[-83.698043999999925,62.573051000000135],[-83.570007000000032,62.675270000000012],[-83.559433000000013,62.684157999999968],[-83.550277999999935,62.69999700000011],[-83.545546999999999,62.712212000000022],[-83.545546999999999,62.71776600000004],[-83.551392000000021,62.726653999999996],[-83.555831999999953,62.731659000000036],[-83.558884000000035,62.743881000000044],[-83.533614999999884,62.810272000000055],[-83.527495999999928,62.8211060000001],[-83.523055999999997,62.825271999999984],[-83.516953000000001,62.829994000000056],[-83.400283999999999,62.897491000000116],[-83.374160999999958,62.906937000000084],[-83.31082200000003,62.924438000000066],[-83.298614999999984,62.925827000000027],[-83.211670000000026,62.913605000000075],[-83.204177999999956,62.91027100000008],[-83.198333999999988,62.906654000000117],[-83.193877999999984,62.901932000000045],[-83.182495000000017,62.881378000000097],[-83.178054999999915,62.876380999999981],[-83.156112999999948,62.860549999999989],[-83.142501999999979,62.854439000000127],[-83.124709999999936,62.84804500000007],[-83.108337000000006,62.843322999999998],[-83.087509000000011,62.840271000000087],[-83.061935000000005,62.837493999999992],[-83.041107000000011,62.837212000000079],[-83.021392999999989,62.838599999999985],[-83.001677999999913,62.842491000000052],[-82.982223999999917,62.847771000000137],[-82.857497999999964,62.88999200000012],[-82.825561999999991,62.90277100000003],[-82.793335000000013,62.915543000000014],[-82.759734999999921,62.926940999999999],[-82.751952999999901,62.928878999999938],[-82.694442999999978,62.939430000000073],[-82.652221999999995,62.943878000000041],[-82.62470999999988,62.945540999999935],[-82.606658999999979,62.945540999999935],[-82.573623999999995,62.943878000000041],[-82.540833000000021,62.939430000000073],[-82.507781999999963,62.933601000000067],[-82.461394999999982,62.927489999999977],[-82.436110999999983,62.925270000000125],[-82.420837000000006,62.924995000000138],[-82.398055999999883,62.927489999999977],[-82.381377999999984,62.932770000000005],[-82.378052000000025,62.936377999999934],[-82.376389000000017,62.941101000000117],[-82.379165999999998,62.946655000000135],[-82.383620999999948,62.95138500000013],[-82.379989999999964,62.957497000000103],[-82.37222300000002,62.960274000000027],[-82.292770000000019,62.98333000000008],[-82.266662999999937,62.989159000000086],[-82.239440999999999,62.990273000000059],[-82.185821999999916,62.979988000000105],[-82.121932999999956,62.966660000000104],[-82.008057000000008,62.954993999999942],[-81.94027699999998,62.95387999999997],[-81.911666999999966,62.952217000000076],[-81.905838000000017,62.949997000000053],[-81.87110899999999,62.928329000000133]],[[-66.825561999999991,62.984161000000086],[-66.831389999999999,62.982765000000029],[-66.871384000000035,62.988884000000041],[-66.881942999999978,62.991661000000136],[-66.889450000000011,62.995269999999948],[-67.069457999999997,63.107498000000021],[-67.032776000000013,63.103881999999999],[-66.965285999999992,63.082496999999989],[-66.952224999999999,63.078049000000021],[-66.946105999999872,63.07499700000011],[-66.944442999999922,63.072768999999994],[-66.930557000000022,63.066939999999988],[-66.917496000000028,63.059715000000097],[-66.907501000000025,63.052773000000002],[-66.830001999999922,62.992493000000081],[-66.826950000000011,62.989990000000091],[-66.825011999999958,62.985550000000046],[-66.825561999999991,62.984161000000086]],[[-67.764450000000011,63.162491000000045],[-67.775833000000034,63.1616590000001],[-67.787505999999951,63.163048000000117],[-67.79861499999987,63.165543000000127],[-67.806380999999988,63.168602000000135],[-67.851943999999946,63.191376000000105],[-67.863327000000027,63.199158000000011],[-67.876388999999961,63.211937000000091],[-67.876937999999996,63.216933999999981],[-67.875,63.22304500000007],[-67.866393999999957,63.232491000000039],[-67.852218999999877,63.244438000000002],[-67.84445199999999,63.247215000000097],[-67.839721999999995,63.247215000000097],[-67.831954999999994,63.244155999999919],[-67.821945000000028,63.236656000000039],[-67.822234999999921,63.233330000000024],[-67.816101000000003,63.23054499999995],[-67.791671999999949,63.214996000000042],[-67.769454999999994,63.198326000000122],[-67.746108999999933,63.178879000000109],[-67.744720000000029,63.173050000000103],[-67.746384000000035,63.166939000000013],[-67.764450000000011,63.162491000000045]],[[-67.925003000000004,63.183327000000077],[-67.956116000000009,63.181107000000054],[-67.966949,63.183875999999998],[-68.000838999999985,63.208046000000024],[-68.017226999999991,63.220543000000021],[-68.061385999999914,63.257773999999984],[-68.105834999999956,63.299438000000066],[-68.111663999999962,63.309158000000139],[-68.112212999999997,63.313606000000107],[-68.106383999999991,63.318604000000107],[-68.096953999999926,63.318885999999964],[-68.085555999999997,63.316101000000117],[-68.069167999999877,63.309432999999956],[-68.048889000000031,63.297493000000088],[-68.032227000000034,63.284996000000092],[-68.00028999999995,63.260276999999917],[-67.92582699999997,63.196098000000006],[-67.920546999999999,63.191376000000105],[-67.916945999999939,63.186653000000092],[-67.925003000000004,63.183327000000077]],[[-78.079726999999991,63.469436999999914],[-77.946105999999986,63.468048000000124],[-77.937774999999988,63.471100000000035],[-77.930556999999965,63.474991000000102],[-77.924164000000019,63.47693600000008],[-77.911941999999954,63.476379000000009],[-77.845001000000025,63.472214000000008],[-77.680557000000022,63.434433000000013],[-77.636672999999917,63.402771000000087],[-77.495834000000002,63.274994000000106],[-77.493880999999988,63.269989000000066],[-77.49499499999996,63.265831000000105],[-77.50389100000001,63.252494999999954],[-77.573333999999932,63.200546000000145],[-77.641953000000001,63.171936000000073],[-77.785277999999892,63.121658000000139],[-77.898894999999925,63.09276600000004],[-77.906661999999983,63.09165999999999],[-77.931380999999931,63.090546000000018],[-77.946655000000021,63.091103000000089],[-77.958343999999954,63.093048000000124],[-78.025008999999898,63.11721],[-78.124709999999993,63.165825000000041],[-78.226944000000003,63.221656999999993],[-78.295546999999999,63.25999500000006],[-78.311385999999914,63.272217000000012],[-78.322234999999978,63.281105000000025],[-78.343613000000005,63.29694400000011],[-78.354445999999996,63.303604000000121],[-78.446655000000021,63.350273000000129],[-78.486937999999896,63.364998000000071],[-78.519729999999981,63.370270000000005],[-78.523894999999982,63.372489999999971],[-78.562499999999943,63.395828000000108],[-78.572234999999921,63.434715000000097],[-78.572783999999956,63.440269000000114],[-78.551665999999955,63.44499200000007],[-78.379989999999964,63.476379000000009],[-78.278885000000002,63.489716000000044],[-78.214111000000003,63.496535999999992],[-78.212783999999999,63.496101000000067],[-78.158614999999884,63.482208000000014],[-78.091675000000009,63.470543000000134],[-78.079726999999991,63.469436999999914]],[[-90.653884999999946,63.441101000000003],[-90.697495000000004,63.439713000000097],[-90.708892999999932,63.440544000000102],[-90.719161999999983,63.443603999999993],[-90.72582999999986,63.448043999999982],[-90.755004999999983,63.489716000000044],[-90.757232999999985,63.494438000000116],[-90.748046999999929,63.498329000000012],[-90.737502999999947,63.499161000000129],[-90.645553999999947,63.483330000000137],[-90.620269999999948,63.47693600000008],[-90.602782999999988,63.463882000000012],[-90.598052999999993,63.454436999999984],[-90.602218999999991,63.449158000000011],[-90.611937999999952,63.44609800000012],[-90.621932999999956,63.444153000000142],[-90.653884999999946,63.441101000000003]],[[-78.55749499999996,63.457497000000046],[-78.600554999999929,63.456383000000017],[-78.603333000000021,63.45777099999998],[-78.56138599999997,63.502495000000124],[-78.543334999999956,63.516106000000093],[-78.515839000000028,63.53166200000004],[-78.505004999999869,63.532493999999929],[-78.496108999999933,63.529434000000094],[-78.473327999999981,63.519157000000121],[-78.468063000000029,63.515549000000021],[-78.46166999999997,63.507499999999993],[-78.459166999999979,63.479988000000048],[-78.461945000000014,63.47387700000013],[-78.467223999999987,63.469436999999914],[-78.475554999999986,63.466933999999981],[-78.531113000000005,63.458603000000039],[-78.55749499999996,63.457497000000046]],[[-90.793609999999944,63.494156000000089],[-90.804442999999935,63.493324000000143],[-90.816956000000005,63.495827000000133],[-90.877212999999983,63.514717000000076],[-90.933318999999983,63.534164000000089],[-90.965835999999967,63.54583000000008],[-90.96833799999996,63.550270000000125],[-90.957503999999972,63.551384000000098],[-90.771117999999944,63.55193300000002],[-90.748046999999929,63.550270000000125],[-90.720001000000025,63.543052999999986],[-90.709731999999974,63.539992999999924],[-90.700835999999981,63.536110000000008],[-90.681380999999988,63.52304799999996],[-90.676940999999886,63.518599999999992],[-90.674712999999997,63.513884999999959],[-90.678604000000007,63.508330999999998],[-90.688889000000017,63.50638600000002],[-90.793609999999944,63.494156000000089]],[[-64.851944000000003,63.385826000000122],[-64.856948999999986,63.385826000000122],[-64.882216999999969,63.395546000000024],[-64.904175000000009,63.40638000000007],[-64.918335000000013,63.413879000000065],[-64.942215000000033,63.43082400000003],[-64.950835999999924,63.439156000000025],[-65.026672000000019,63.515549000000021],[-65.035278000000005,63.524436999999978],[-65.053054999999972,63.548331999999959],[-65.051940999999999,63.552215999999987],[-64.977218999999991,63.568329000000062],[-64.967498999999918,63.568329000000062],[-64.954726999999991,63.558883999999978],[-64.954726999999991,63.553879000000109],[-64.93360899999999,63.544716000000108],[-64.912216000000001,63.533333000000084],[-64.909163999999976,63.528603000000089],[-64.867492999999911,63.461662000000047],[-64.860824999999863,63.447212000000093],[-64.847504000000015,63.407494000000042],[-64.844726999999978,63.396942000000081],[-64.847778000000005,63.387496999999996],[-64.851944000000003,63.385826000000122]],[[-72.182495000000017,63.51998900000001],[-72.207503999999972,63.51998900000001],[-72.218886999999995,63.522491000000059],[-72.226943999999946,63.525825999999995],[-72.232772999999895,63.530273000000022],[-72.286666999999909,63.583328000000108],[-72.279174999999952,63.585548000000131],[-72.232223999999917,63.586655000000064],[-72.230285999999978,63.587212000000136],[-72.205276000000026,63.583054000000004],[-72.184432999999956,63.577217000000019],[-72.135559000000001,63.562767000000065],[-72.129165999999998,63.558883999999978],[-72.128052000000025,63.553879000000109],[-72.145003999999972,63.539436000000023],[-72.165833000000021,63.526381999999955],[-72.173614999999984,63.522766000000104],[-72.182495000000017,63.51998900000001]],[[-91.329177999999956,63.559714999999983],[-91.401947000000007,63.549438000000009],[-91.424438000000009,63.550270000000125],[-91.43638599999997,63.55193300000002],[-91.461944999999901,63.558327000000077],[-91.540282999999931,63.601662000000033],[-91.540558000000033,63.606658999999979],[-91.534164000000033,63.611381999999935],[-91.501113999999973,63.611938000000123],[-91.463897999999915,63.6097180000001],[-91.440826000000015,63.608047000000056],[-91.428604000000007,63.606383999999935],[-91.416396999999961,63.603607000000068],[-91.362503000000004,63.590271000000087],[-91.34944200000001,63.586655000000064],[-91.299727999999959,63.567771999999934],[-91.308884000000035,63.563881000000094],[-91.329177999999956,63.559714999999983]],[[-64.092498999999918,63.481659000000093],[-64.101944000000003,63.47943099999992],[-64.109160999999915,63.483046999999999],[-64.169448999999986,63.523605000000089],[-64.180556999999965,63.533051000000057],[-64.184158000000025,63.537216000000058],[-64.209166999999979,63.574996999999996],[-64.216109999999901,63.595268000000033],[-64.216948999999943,63.601105000000132],[-64.215285999999935,63.617493000000024],[-64.212783999999942,63.623604000000114],[-64.199722000000008,63.633331000000055],[-64.191939999999988,63.637215000000083],[-64.182495000000017,63.639435000000105],[-64.17193599999996,63.633606000000043],[-64.09333799999996,63.568329000000062],[-64.078338999999914,63.550545000000113],[-64.077224999999999,63.545273000000009],[-64.077788999999882,63.539718999999991],[-64.086120999999935,63.493050000000039],[-64.087508999999955,63.486655999999982],[-64.092498999999918,63.481659000000093]],[[-68.656386999999938,63.626381000000038],[-68.717772999999909,63.624161000000015],[-68.731109999999944,63.625549000000092],[-68.815552000000025,63.649162000000047],[-68.821670999999981,63.652488999999946],[-68.820007000000032,63.65526600000004],[-68.793059999999969,63.661659000000043],[-68.71444699999995,63.672493000000088],[-68.691665999999941,63.673607000000061],[-68.676940999999999,63.671379000000115],[-68.668883999999935,63.668326999999977],[-68.666397000000018,63.663879000000009],[-68.666259999999966,63.662581999999986],[-68.655272999999966,63.634437999999989],[-68.654449,63.630272000000105],[-68.656386999999938,63.626381000000038]],[[-64.061110999999983,63.270546000000138],[-64.070556999999951,63.268326000000116],[-64.078338999999914,63.268883000000017],[-64.181945999999982,63.29694400000011],[-64.25140399999998,63.320830999999998],[-64.266953000000001,63.326384999999959],[-64.349730999999963,63.392220000000009],[-64.353881999999885,63.395828000000108],[-64.421936000000017,63.471657000000107],[-64.496108999999876,63.6097180000001],[-64.490554999999972,63.620544000000052],[-64.479171999999949,63.636940000000038],[-64.473617999999874,63.640549000000078],[-64.386672999999973,63.675270000000012],[-64.377212999999927,63.677489999999977],[-64.367217999999923,63.675270000000012],[-64.363051999999925,63.671936000000017],[-64.328888000000006,63.644440000000145],[-64.325561999999934,63.637496999999939],[-64.325561999999934,63.59804500000007],[-64.324447999999961,63.588042999999971],[-64.321670999999981,63.577492000000063],[-64.316101000000003,63.562492000000077],[-64.262511999999958,63.421104000000128],[-64.232498000000021,63.388329000000113],[-64.225280999999939,63.384438000000046],[-64.20666499999993,63.384163000000001],[-64.166945999999996,63.369438000000059],[-64.144729999999925,63.355552999999986],[-64.099990999999932,63.322769000000108],[-64.057495000000017,63.278046000000018],[-64.057495000000017,63.273880000000133],[-64.061110999999983,63.270546000000138]],[[-71.799164000000019,63.615546999999935],[-71.806945999999868,63.611938000000123],[-71.845275999999956,63.613608999999997],[-71.855269999999905,63.615829000000019],[-71.863327000000027,63.619438000000002],[-71.865829000000019,63.624435000000119],[-71.865829000000019,63.636383000000137],[-71.864166000000012,63.669440999999949],[-71.830565999999919,63.693878000000041],[-71.821945000000028,63.695267000000058],[-71.789444000000003,63.691375999999991],[-71.779449,63.68832400000008],[-71.775283999999999,63.683051999999918],[-71.777221999999938,63.670830000000137],[-71.791107000000011,63.627213000000097],[-71.799164000000019,63.615546999999935]],[[-76.810546999999985,63.601105000000132],[-76.710555999999997,63.565826000000072],[-76.672225999999966,63.528877000000023],[-76.675551999999925,63.496658000000139],[-76.681609999999978,63.481354000000067],[-76.61332699999997,63.473602000000085],[-76.565551999999911,63.46776600000004],[-76.546111999999994,63.464714000000129],[-76.541945999999939,63.462494000000106],[-76.543883999999991,63.461104999999918],[-76.675002999999947,63.374709999999993],[-76.682219999999973,63.370827000000077],[-76.692214999999976,63.367767000000015],[-76.703338999999971,63.365829000000076],[-76.712783999999942,63.365546999999992],[-76.726105000000018,63.36693600000001],[-76.847778000000005,63.385269000000051],[-76.984160999999915,63.40638000000007],[-77.035277999999948,63.423882000000106],[-77.039443999999946,63.426102000000128],[-77.046111999999994,63.42971799999998],[-77.051391999999964,63.434158000000025],[-77.05360399999995,63.436935000000119],[-77.055556999999965,63.442764000000125],[-77.06138599999997,63.450546000000088],[-77.105834999999956,63.476654000000053],[-77.111663999999962,63.479713000000004],[-77.327788999999996,63.572220000000129],[-77.36721799999998,63.583054000000004],[-77.391388000000006,63.585548000000131],[-77.411666999999966,63.584991000000002],[-77.422226000000023,63.586655000000064],[-77.427779999999984,63.589157000000114],[-77.431945999999982,63.591934000000037],[-77.442215000000033,63.608330000000024],[-77.457229999999981,63.643325999999945],[-77.453887999999949,63.652214000000129],[-77.44027699999998,63.665268000000026],[-77.410277999999948,63.686652999999978],[-77.40055799999999,63.688880999999981],[-77.378051999999968,63.692214999999919],[-77.343338000000017,63.696098000000063],[-77.116942999999935,63.681107000000111],[-77.103332999999964,63.67971799999998],[-77.06138599999997,63.672768000000076],[-77.021392999999932,63.664154000000053],[-76.810546999999985,63.601105000000132]],[[-72.594727000000034,63.642494000000056],[-72.604445999999939,63.641663000000051],[-72.780563000000029,63.659987999999942],[-72.783324999999877,63.66443600000008],[-72.770553999999947,63.669715999999994],[-72.756667999999877,63.672768000000076],[-72.723052999999993,63.67860399999995],[-72.506667999999991,63.707214000000022],[-72.483886999999982,63.708885000000066],[-72.474166999999909,63.705826000000116],[-72.470839999999953,63.702217000000076],[-72.471389999999985,63.700828999999999],[-72.468886999999938,63.699158000000125],[-72.463333000000034,63.689156000000139],[-72.459731999999974,63.679161000000079],[-72.46055599999994,63.672768000000076],[-72.463897999999972,63.668326999999977],[-72.584441999999967,63.644440000000145],[-72.594727000000034,63.642494000000056]],[[-64.032501000000025,63.68971300000004],[-64.161117999999988,63.674438000000066],[-64.181106999999997,63.675827000000083],[-64.200286999999946,63.685546999999985],[-64.208344000000011,63.697487000000081],[-64.21166999999997,63.706383000000017],[-64.212509000000011,63.712212000000022],[-64.208892999999989,63.721930999999984],[-64.180283000000031,63.742218000000094],[-64.17471299999994,63.745270000000005],[-64.166655999999989,63.747772000000055],[-64.083069000000023,63.758331000000112],[-64.078063999999983,63.758331000000112],[-64.075287000000003,63.758049000000028],[-64.073333999999932,63.756386000000134],[-64.054840000000013,63.736595000000079],[-64.043335000000013,63.734161000000086],[-64.030288999999982,63.729713000000118],[-64.025283999999942,63.70249200000012],[-64.025283999999942,63.697487000000081],[-64.026397999999915,63.693878000000041],[-64.032501000000025,63.68971300000004]],[[-72.667769999999962,63.69582400000013],[-72.6949919999999,63.690269000000058],[-72.703613000000018,63.692490000000134],[-72.734160999999972,63.710823000000005],[-72.738891999999908,63.714439000000084],[-72.741669000000002,63.719711000000018],[-72.743880999999874,63.730270000000019],[-72.739989999999977,63.736107000000004],[-72.719727000000034,63.76388500000013],[-72.715560999999923,63.766106000000036],[-72.705841000000021,63.767494000000113],[-72.693877999999984,63.765830999999991],[-72.682495000000017,63.762214999999969],[-72.664718999999934,63.755554000000018],[-72.642226999999934,63.745270000000005],[-72.635833999999988,63.741379000000109],[-72.626663000000008,63.732207999999957],[-72.625823999999966,63.727486000000056],[-72.626389000000017,63.721099999999979],[-72.634170999999981,63.709160000000054],[-72.649993999999992,63.701385000000016],[-72.667769999999962,63.69582400000013]],[[-64.28443900000002,63.708602999999982],[-64.286391999999978,63.708046000000081],[-64.311110999999926,63.709991000000116],[-64.329178000000013,63.71665999999999],[-64.336394999999925,63.719986000000006],[-64.348617999999988,63.728042999999957],[-64.356948999999986,63.736938000000009],[-64.363616999999977,63.746383999999978],[-64.381103999999993,63.807495000000131],[-64.35943599999996,63.803879000000052],[-64.339721999999938,63.796943999999996],[-64.331954999999994,63.791663999999969],[-64.302779999999927,63.78054800000001],[-64.278610000000015,63.770828000000108],[-64.275008999999955,63.766663000000108],[-64.255279999999971,63.729713000000118],[-64.255004999999926,63.72526600000009],[-64.260833999999875,63.719711000000018],[-64.28443900000002,63.708602999999982]],[[-64.170273000000009,63.856384000000105],[-64.180831999999896,63.785270999999966],[-64.195267000000001,63.778603000000032],[-64.203338999999971,63.776382000000126],[-64.234435999999903,63.771378000000141],[-64.245834000000002,63.771378000000141],[-64.256957999999997,63.774162000000103],[-64.325561999999934,63.80582400000003],[-64.398346000000004,63.845543000000134],[-64.39916999999997,63.849434000000031],[-64.397780999999895,63.851386999999988],[-64.396117999999944,63.851936000000137],[-64.353881999999885,63.861107000000061],[-64.334091000000001,63.852081000000055],[-64.325561999999934,63.850273000000016],[-64.31082200000003,63.848328000000038],[-64.268340999999907,63.846100000000035],[-64.215012000000002,63.850273000000016],[-64.208344000000011,63.852776000000006],[-64.200286999999946,63.859718000000044],[-64.186661000000015,63.86721],[-64.179992999999911,63.865547000000106],[-64.175827000000027,63.861938000000066],[-64.170273000000009,63.856384000000105]],[[-92.954178000000013,63.871101000000067],[-92.96055599999994,63.866386000000034],[-92.972778000000005,63.867767000000072],[-92.998610999999983,63.873046999999985],[-93.068619000000012,63.888046000000031],[-93.093886999999995,63.899994000000049],[-93.094451999999933,63.904990999999995],[-93.087783999999999,63.908882000000062],[-93.070007000000032,63.909713999999951],[-93.002791999999943,63.911377000000073],[-92.990829000000019,63.910820000000001],[-92.978333000000021,63.908324999999991],[-92.97444200000001,63.901657],[-92.955275999999969,63.880820999999969],[-92.952498999999989,63.876099000000067],[-92.954178000000013,63.871101000000067]],[[-64.576110999999855,63.780822999999998],[-64.525832999999977,63.771378000000141],[-64.467772999999966,63.771378000000141],[-64.461945000000014,63.774712000000136],[-64.452498999999989,63.777214000000015],[-64.432769999999948,63.779434000000037],[-64.426102000000014,63.777771000000087],[-64.394729999999981,63.745827000000077],[-64.387511999999958,63.737495000000081],[-64.386123999999938,63.73443600000013],[-64.386123999999938,63.701660000000004],[-64.389998999999932,63.696381000000031],[-64.404175000000009,63.687492000000134],[-64.419158999999979,63.67971799999998],[-64.436385999999914,63.673324999999977],[-64.450561999999934,63.671660999999972],[-64.459441999999967,63.672768000000076],[-64.47444200000001,63.679161000000079],[-64.496947999999918,63.690826000000129],[-64.661666999999909,63.754997000000117],[-64.802215999999987,63.764442000000031],[-64.813323999999966,63.767212000000029],[-64.890288999999939,63.789435999999966],[-64.90055799999999,63.793883999999935],[-64.906386999999995,63.797493000000145],[-64.916396999999904,63.806380999999931],[-64.918335000000013,63.815269000000114],[-64.920272999999952,63.824715000000083],[-64.917769999999905,63.831108000000029],[-64.910277999999948,63.837212000000079],[-64.896392999999989,63.845267999999976],[-64.811660999999958,63.87721300000004],[-64.710555999999997,63.908882000000062],[-64.682494999999903,63.91443600000008],[-64.660278000000005,63.916382000000112],[-64.647231999999974,63.916100000000085],[-64.557219999999916,63.909988000000112],[-64.553054999999915,63.906380000000013],[-64.549437999999952,63.895271000000093],[-64.571121000000005,63.870827000000133],[-64.585555999999997,63.844994000000042],[-64.576110999999855,63.780822999999998]],[[-77.743880999999931,63.926658999999916],[-77.753341999999975,63.925551999999982],[-77.948607999999979,63.950829000000113],[-77.956954999999937,63.95388000000014],[-77.966948999999886,63.959160000000054],[-77.978881999999999,63.96915400000006],[-77.982497999999964,63.97554800000006],[-77.982497999999964,63.983047000000056],[-77.976105000000018,63.990273000000059],[-77.957503999999972,64.004715000000033],[-77.950287000000003,64.009155000000021],[-77.943603999999993,64.011107999999979],[-77.923889000000031,64.014999000000046],[-77.889998999999989,64.019989000000066],[-77.774445000000014,64.031662000000097],[-77.753890999999953,64.032761000000107],[-77.648620999999991,64.032486000000063],[-77.591110000000015,64.030272999999966],[-77.557219999999973,64.028046000000074],[-77.549727999999959,64.025543000000084],[-77.544448999999986,64.021927000000062],[-77.545273000000009,64.018600000000106],[-77.623610999999983,63.997214999999926],[-77.623885999999914,63.99582700000002],[-77.628052000000025,63.991104000000064],[-77.639450000000011,63.981934000000024],[-77.68638599999997,63.954437000000041],[-77.728606999999954,63.932213000000104],[-77.737212999999883,63.928329000000076],[-77.743880999999931,63.926658999999916]],[[-89.808884000000035,64.056366000000082],[-89.817229999999938,64.054703000000131],[-89.828887999999893,64.055816999999934],[-89.839447000000007,64.058868000000132],[-89.847778000000005,64.063034000000073],[-89.861114999999984,64.071655000000135],[-89.869995000000017,64.080826000000116],[-89.871933000000013,64.085541000000148],[-89.867767000000015,64.095824999999991],[-89.857498000000021,64.0977630000001],[-89.831679999999892,64.091094999999939],[-89.828063999999927,64.088318000000072],[-89.819732999999928,64.080276000000083],[-89.80471799999998,64.0619200000001],[-89.808884000000035,64.056366000000082]],[[-64.962783999999999,64.110809000000074],[-64.948607999999979,64.109710999999947],[-64.903609999999901,64.111099000000081],[-64.87110899999999,64.099152000000117],[-64.869445999999982,64.096649000000127],[-64.869995000000017,64.093323000000112],[-64.87332200000003,64.090820000000122],[-64.884445000000028,64.086655000000121],[-64.905563000000029,64.082214000000022],[-64.946655000000021,64.078872999999987],[-64.988892000000021,64.081375000000037],[-65.002228000000002,64.083878000000027],[-65.02305599999994,64.089432000000045],[-65.045546999999942,64.099426000000051],[-65.055556999999965,64.108596999999975],[-65.057495000000017,64.11303700000002],[-65.056380999999931,64.117203000000075],[-65.05221599999993,64.121093999999971],[-65.039718999999934,64.124985000000038],[-65.025009000000011,64.127472000000125],[-65.015563999999927,64.126922999999977],[-64.995270000000005,64.12303199999991],[-64.989990000000034,64.118590999999981],[-64.980834999999956,64.115265000000136],[-64.962783999999999,64.110809000000074]],[[-64.491104000000007,64.109146000000123],[-64.499999999999943,64.10803199999998],[-64.511397999999929,64.108321999999987],[-64.587508999999955,64.147491000000059],[-64.592498999999975,64.151931999999988],[-64.595276000000013,64.15498400000007],[-64.59584000000001,64.156647000000021],[-64.567779999999971,64.163605000000018],[-64.554169000000002,64.166931000000034],[-64.524444999999957,64.167206000000022],[-64.518111999999917,64.166214000000025],[-64.50111400000003,64.163314999999955],[-64.453339000000028,64.146942000000081],[-64.450287000000003,64.130264000000011],[-64.491104000000007,64.109146000000123]],[[-73.176940999999999,64.200271999999984],[-73.282776000000013,64.143326000000059],[-73.291945999999939,64.14387499999998],[-73.386397999999872,64.158874999999966],[-73.396956999999986,64.161102000000028],[-73.401672000000019,64.165543000000127],[-73.394729999999925,64.187759000000085],[-73.393065999999919,64.192474000000118],[-73.385559000000001,64.196365000000014],[-73.309433000000013,64.194977000000108],[-73.206664999999987,64.213882000000069],[-73.189986999999917,64.212203999999929],[-73.178054999999972,64.209991000000002],[-73.17332499999992,64.205261000000121],[-73.176940999999999,64.200271999999984]],[[-81.471389999999985,64.188873000000058],[-81.493606999999997,64.188309000000118],[-81.516112999999962,64.190536000000009],[-81.527785999999992,64.194137999999953],[-81.536666999999852,64.208603000000096],[-81.538054999999929,64.218048000000124],[-81.532226999999921,64.223038000000031],[-81.470000999999911,64.239426000000094],[-81.458618000000001,64.238876000000062],[-81.413329999999974,64.233322000000044],[-81.390288999999939,64.229155999999932],[-81.378601000000003,64.22554000000008],[-81.375823999999909,64.220825000000048],[-81.374999999999943,64.215820000000008],[-81.378875999999934,64.211929000000112],[-81.388901000000033,64.204987000000017],[-81.405272999999909,64.19470200000012],[-81.471389999999985,64.188873000000058]],[[-64.52027899999996,64.220261000000107],[-64.576401000000033,64.210541000000035],[-64.601668999999958,64.212493999999992],[-64.611938000000009,64.215820000000008],[-64.619445999999925,64.219711000000075],[-64.646956999999986,64.244141000000127],[-64.647781000000009,64.250000000000114],[-64.643616000000009,64.255829000000119],[-64.637512000000015,64.259995000000004],[-64.629715000000033,64.261658000000125],[-64.571670999999924,64.264998999999989],[-64.557525999999996,64.264862000000051],[-64.553054999999915,64.263321000000076],[-64.55221599999993,64.261658000000125],[-64.552490000000034,64.256653000000085],[-64.468062999999972,64.243316999999934],[-64.464721999999938,64.240814],[-64.462218999999948,64.237487999999928],[-64.464447000000007,64.234420999999998],[-64.471114999999998,64.231659000000093],[-64.52027899999996,64.220261000000107]],[[-75.551392000000021,64.303863999999976],[-75.691939999999988,64.302475000000129],[-75.702224999999999,64.305817000000104],[-75.708892999999989,64.315262000000132],[-75.705840999999964,64.341934000000037],[-75.696655000000021,64.351089000000115],[-75.686385999999914,64.353317000000061],[-75.665008999999998,64.350815000000011],[-75.578887999999949,64.346099999999979],[-75.572784000000013,64.344985999999949],[-75.502501999999936,64.319716999999969],[-75.493606999999997,64.316376000000105],[-75.50111400000003,64.313309000000004],[-75.511123999999938,64.311096000000077],[-75.551392000000021,64.303863999999976]],[[-64.938598999999954,64.235535000000027],[-64.989165999999955,64.209152000000017],[-65.00306699999993,64.21026599999999],[-65.048614999999984,64.218322999999998],[-65.052779999999984,64.219436999999971],[-65.059997999999894,64.223312000000135],[-65.065551999999968,64.227478000000019],[-65.073059000000001,64.240540000000067],[-65.102492999999981,64.296371000000136],[-65.109160999999972,64.310806000000071],[-65.113892000000021,64.323608000000036],[-65.114715999999987,64.329437000000041],[-65.114166000000012,64.334991000000059],[-65.112503000000004,64.339706000000092],[-65.110001000000011,64.343596999999988],[-65.101669000000015,64.346374999999966],[-65.08944699999995,64.349716000000001],[-65.028884999999889,64.361099000000024],[-65.021392999999932,64.362487999999985],[-65.010283999999956,64.361649000000057],[-65.006393000000003,64.360535000000084],[-65.001952999999958,64.356934000000024],[-64.99888599999997,64.354431000000034],[-64.982223999999974,64.333054000000004],[-64.884734999999921,64.28776600000009],[-64.886123999999938,64.283051000000057],[-64.890838999999971,64.276382000000012],[-64.926940999999943,64.242477000000065],[-64.938598999999954,64.235535000000027]],[[-73.876389000000017,64.301376000000005],[-73.883620999999948,64.298874000000069],[-73.951674999999966,64.304977000000008],[-73.96556099999998,64.30664100000007],[-73.972503999999958,64.309707999999944],[-73.97444200000001,64.313309000000004],[-73.960281000000009,64.362197999999978],[-73.95666499999993,64.368317000000047],[-73.952498999999932,64.370819000000097],[-73.942214999999919,64.372757000000036],[-73.932219999999916,64.37359600000002],[-73.918335000000013,64.371918000000051],[-73.909438999999963,64.369980000000112],[-73.889175000000023,64.359711000000118],[-73.879165999999941,64.351928999999984],[-73.874160999999958,64.343323000000055],[-73.87332200000003,64.305252000000053],[-73.876389000000017,64.301376000000005]],[[-73.69776899999988,64.269989000000066],[-73.704726999999934,64.268875000000037],[-73.72084000000001,64.272765999999933],[-73.75389100000001,64.28276100000005],[-73.776671999999962,64.294708000000014],[-73.823333999999988,64.324707000000046],[-73.833618000000001,64.331665000000044],[-73.781386999999995,64.405547999999953],[-73.776108000000022,64.407486000000119],[-73.765563999999983,64.409424000000058],[-73.749161000000015,64.410262999999986],[-73.744445999999982,64.405822999999998],[-73.730835000000013,64.386383000000023],[-73.729172000000005,64.386107999999979],[-73.726944000000003,64.383331000000055],[-73.724441999999954,64.377472000000068],[-73.702498999999989,64.322769000000108],[-73.699157999999954,64.314147999999989],[-73.690552000000025,64.276932000000045],[-73.691665999999998,64.273605000000089],[-73.694442999999922,64.271103000000039],[-73.69776899999988,64.269989000000066]],[[-64.849730999999963,64.307479999999998],[-64.861388999999974,64.307479999999998],[-64.877212999999983,64.313309000000004],[-64.888061999999991,64.321105999999986],[-64.937774999999988,64.361649000000057],[-64.944992000000013,64.37052900000009],[-64.955565999999976,64.383880999999917],[-64.959732000000031,64.397217000000069],[-64.958618000000001,64.405822999999998],[-64.951674999999909,64.411376999999959],[-64.946655000000021,64.413605000000132],[-64.932495000000017,64.417480000000126],[-64.925277999999992,64.418594000000098],[-64.910004000000015,64.416655999999989],[-64.902495999999985,64.412766000000147],[-64.897507000000019,64.408600000000092],[-64.820007000000032,64.379425000000026],[-64.771941999999967,64.348877000000016],[-64.770553999999947,64.345825000000104],[-64.773055999999997,64.34248400000007],[-64.849730999999963,64.307479999999998]],[[-74.27194199999991,64.413605000000132],[-74.285004000000015,64.41304000000008],[-74.357497999999964,64.421097000000088],[-74.377212999999983,64.424423000000104],[-74.423324999999977,64.443863000000079],[-74.437209999999936,64.450271999999927],[-74.439437999999996,64.453323000000125],[-74.338608000000022,64.49470500000001],[-74.331679999999949,64.496933000000126],[-74.31040999999999,64.49884000000003],[-74.285277999999948,64.481659000000036],[-74.228607000000011,64.451096000000064],[-74.205841000000021,64.44747899999993],[-74.183060000000012,64.443039000000113],[-74.17332499999992,64.439148000000046],[-74.174712999999997,64.434981999999991],[-74.178328999999962,64.433867999999961],[-74.27194199999991,64.413605000000132]],[[-73.744995000000017,64.426086000000055],[-73.758346999999958,64.425537000000077],[-73.77806099999998,64.428314],[-73.781386999999995,64.431931000000134],[-73.782776000000013,64.437484999999924],[-73.782500999999968,64.442474000000061],[-73.776108000000022,64.495818999999983],[-73.773894999999982,64.501937999999996],[-73.773330999999928,64.503326000000072],[-73.746917999999937,64.508513999999991],[-73.736664000000019,64.507216999999969],[-73.729172000000005,64.505264000000068],[-73.724166999999852,64.50221300000004],[-73.673049999999989,64.469711000000018],[-73.668610000000001,64.464432000000045],[-73.668334999999956,64.460265999999933],[-73.671936000000017,64.455826000000116],[-73.67971799999998,64.452208999999982],[-73.727218999999934,64.431091000000094],[-73.735001000000011,64.428040000000067],[-73.744995000000017,64.426086000000055]],[[-74.212783999999999,64.483046999999999],[-74.223327999999981,64.480270000000075],[-74.229171999999949,64.481369000000029],[-74.307495000000017,64.516098000000113],[-74.331116000000009,64.526656999999943],[-74.337508999999955,64.531096999999988],[-74.357773000000009,64.546936000000073],[-74.357773000000009,64.551086000000112],[-74.353881999999999,64.553589000000045],[-74.345550999999944,64.555251999999996],[-74.253066999999987,64.548035000000084],[-74.240554999999972,64.546371000000079],[-74.236114999999984,64.545532000000094],[-74.169723999999974,64.523880000000077],[-74.169448999999929,64.519714000000135],[-74.206664999999987,64.486374000000069],[-74.212783999999999,64.483046999999999]],[[-73.557495000000017,64.312758999999971],[-73.577788999999939,64.309982000000105],[-73.601669000000015,64.310257000000092],[-73.626388999999904,64.312758999999971],[-73.650283999999999,64.31721500000009],[-73.655563000000029,64.320267000000001],[-73.658339999999953,64.334991000000059],[-73.669532999999888,64.426849000000118],[-73.610442999999975,64.470489999999984],[-73.68249499999996,64.509720000000129],[-73.679992999999911,64.526093000000003],[-73.677779999999927,64.532211000000132],[-73.666655999999875,64.535538000000088],[-73.577224999999999,64.559982000000048],[-73.537215999999944,64.567764000000011],[-73.527785999999992,64.566940000000045],[-73.521118000000001,64.56303400000013],[-73.509170999999981,64.552475000000072],[-73.504729999999938,64.542480000000012],[-73.50306699999993,64.53414900000007],[-73.489165999999955,64.463318000000072],[-73.488051999999982,64.453598],[-73.48832699999997,64.443863000000079],[-73.490279999999927,64.439148000000046],[-73.555266999999958,64.314697000000137],[-73.557495000000017,64.312758999999971]],[[-65.492767000000015,64.517761000000007],[-65.658339999999953,64.509720000000129],[-65.669448999999929,64.510269000000108],[-65.67971799999998,64.512207000000046],[-65.686110999999926,64.515273999999977],[-65.689712999999983,64.51998900000001],[-65.690276999999924,64.524155000000064],[-65.689712999999983,64.52998400000007],[-65.686935000000005,64.538879000000122],[-65.672500999999954,64.56053200000008],[-65.660278000000005,64.573883000000023],[-65.651108000000022,64.580551000000014],[-65.615829000000019,64.599152000000004],[-65.563323999999909,64.615540000000067],[-65.554442999999992,64.618591000000094],[-65.546951000000035,64.622481999999991],[-65.449158000000011,64.678863999999976],[-65.443877999999927,64.684708000000001],[-65.43582200000003,64.696365000000128],[-65.381942999999922,64.716934000000037],[-65.292495999999971,64.735535000000084],[-65.256957999999941,64.709991000000059],[-65.252501999999936,64.706375000000037],[-65.258057000000008,64.700821000000019],[-65.266402999999912,64.6933140000001],[-65.249999999999886,64.663605000000075],[-65.208054000000004,64.639708999999982],[-65.208618000000001,64.631363000000079],[-65.213897999999915,64.626083000000051],[-65.228057999999919,64.6202550000001],[-65.309433000000013,64.60054000000008],[-65.420272999999952,64.55442800000003],[-65.452788999999939,64.532760999999994],[-65.450835999999924,64.528320000000065],[-65.453613000000018,64.524428999999998],[-65.460555999999997,64.521102999999982],[-65.468886999999995,64.519150000000025],[-65.492767000000015,64.517761000000007]],[[-63.353333000000021,64.994980000000112],[-63.349167000000023,64.991652999999985],[-63.34722099999999,64.991927999999973],[-63.330558999999994,64.986923000000104],[-63.257506999999976,64.92942800000003],[-63.256392999999889,64.926376000000118],[-63.258895999999936,64.921097000000145],[-63.27305599999994,64.918045000000063],[-63.281386999999938,64.918320000000051],[-63.37777699999998,64.940811000000053],[-63.385276999999974,64.944138000000009],[-63.393889999999942,64.951096000000007],[-63.417220999999984,64.97137499999991],[-63.420279999999934,64.976089000000059],[-63.420279999999934,64.978317000000004],[-63.418892000000028,64.982483000000116],[-63.415549999999996,64.986923000000104],[-63.395279000000016,64.995529000000033],[-63.376105999999993,64.998871000000008],[-63.363616999999977,64.997208000000057],[-63.353333000000021,64.994980000000112]],[[-63.243613999999923,65.254990000000134],[-63.251395999999943,65.253875999999991],[-63.256667999999991,65.256104000000107],[-63.310554999999965,65.290542999999957],[-63.313331999999946,65.293869000000029],[-63.311667999999941,65.298035000000084],[-63.306663999999898,65.302475000000129],[-63.257781999999963,65.320831000000112],[-63.244445999999925,65.322769000000051],[-63.236663999999962,65.321655000000078],[-63.227218999999991,65.313873000000115],[-63.166388999999924,65.286102000000085],[-63.165833000000021,65.282486000000006],[-63.166663999999969,65.27915999999999],[-63.235274999999888,65.256943000000092],[-63.243613999999923,65.254990000000134]],[[-66.92471299999994,65.284424000000115],[-66.933883999999978,65.283324999999991],[-66.962509000000011,65.283599999999979],[-66.976943999999946,65.284424000000115],[-66.989166000000012,65.286377000000073],[-66.99110399999995,65.288878999999952],[-67.011123999999938,65.319153000000028],[-67.011948000000018,65.323044000000095],[-67.010559000000001,65.333328000000108],[-67.005004999999926,65.339706000000092],[-66.992217999999923,65.346100000000092],[-66.974441999999954,65.350540000000137],[-66.932494999999903,65.358032000000094],[-66.920273000000009,65.358597000000088],[-66.910827999999867,65.356933999999967],[-66.908614999999998,65.355255],[-66.908050999999944,65.351089000000059],[-66.90943900000002,65.346100000000092],[-66.91194200000001,65.342209000000025],[-66.920273000000009,65.294434000000024],[-66.921386999999982,65.289703000000088],[-66.92471299999994,65.284424000000115]],[[-89.005568999999923,65.385544000000039],[-89.017501999999979,65.385544000000039],[-89.030288999999982,65.387496999999939],[-89.076110999999969,65.394714000000079],[-89.100280999999882,65.400818000000072],[-89.099990999999932,65.405822999999941],[-89.091674999999952,65.408325000000048],[-89.06806899999998,65.408325000000048],[-89.03195199999999,65.407211000000075],[-89.018615999999952,65.403320000000008],[-89.009445000000028,65.399155000000007],[-89.005279999999914,65.395538000000045],[-89.003066999999987,65.390549000000078],[-89.005568999999923,65.385544000000039]],[[-88.430282999999918,65.455261000000064],[-88.465011999999888,65.453597999999943],[-88.489990000000034,65.456650000000081],[-88.503615999999909,65.460541000000148],[-88.510284000000013,65.464995999999985],[-88.512222000000008,65.469711000000018],[-88.507506999999976,65.474991000000045],[-88.496383999999978,65.476928999999984],[-88.485001000000011,65.477767999999969],[-88.461120999999991,65.477478000000133],[-88.424163999999962,65.474426000000051],[-88.398620999999878,65.47026100000005],[-88.39416499999993,65.465820000000122],[-88.399733999999967,65.461380000000077],[-88.421386999999982,65.456940000000088],[-88.430282999999918,65.455261000000064]],[[-62.795005999999887,65.519988999999953],[-62.804442999999992,65.519150000000025],[-62.819450000000018,65.524155000000064],[-62.826950000000011,65.528046000000131],[-62.893889999999942,65.581100000000106],[-62.895553999999947,65.585541000000035],[-62.895553999999947,65.589981000000023],[-62.889724999999942,65.599152000000004],[-62.884444999999971,65.60554500000012],[-62.87471800000003,65.613602000000071],[-62.8663939999999,65.617477000000065],[-62.856392000000028,65.61914100000007],[-62.849723999999981,65.618866000000082],[-62.842773000000022,65.616378999999995],[-62.838051000000007,65.613602000000071],[-62.834998999999925,65.606644000000131],[-62.834998999999925,65.604705999999965],[-62.830001999999979,65.593048000000124],[-62.824448000000018,65.58526599999999],[-62.817504999999926,65.578598],[-62.810279999999977,65.574706999999933],[-62.785560999999973,65.564148000000102],[-62.765006999999969,65.557480000000112],[-62.750838999999985,65.551376000000062],[-62.788894999999968,65.523315000000025],[-62.795005999999887,65.519988999999953]],[[-83.882766999999944,65.666931000000091],[-83.893889999999942,65.664703000000145],[-83.906386999999938,65.666931000000091],[-83.937499999999943,65.677199999999914],[-83.943054000000018,65.681931000000077],[-83.942214999999976,65.686920000000043],[-83.93638599999997,65.691925000000083],[-83.928328999999962,65.69720500000011],[-83.896118000000001,65.710266000000047],[-83.884734999999978,65.712769000000037],[-83.872771999999941,65.712203999999986],[-83.864440999999943,65.707763999999997],[-83.868880999999988,65.696930000000123],[-83.871384000000035,65.686920000000043],[-83.876937999999939,65.672210999999947],[-83.882766999999944,65.666931000000091]],[[-67.472504000000015,65.705261000000007],[-67.55972300000002,65.702209000000096],[-67.584731999999974,65.703598000000113],[-67.640563999999927,65.696091000000138],[-67.691375999999934,65.685806000000014],[-67.701401000000033,65.686096000000077],[-67.706954999999937,65.688034000000016],[-67.713897999999858,65.696640000000116],[-67.715835999999967,65.701659999999947],[-67.713332999999921,65.705551000000014],[-67.695830999999885,65.720825000000104],[-67.658614999999998,65.725266000000033],[-67.577498999999989,65.731658999999979],[-67.529175000000009,65.734985000000052],[-67.499999999999943,65.734985000000052],[-67.48971599999993,65.734985000000052],[-67.424438000000009,65.735260000000039],[-67.446944999999914,65.718596999999988],[-67.472504000000015,65.705261000000007]],[[-62.268332999999984,65.701659999999947],[-62.259445000000028,65.699707000000046],[-62.238051999999982,65.702484000000084],[-62.221107000000018,65.708038000000101],[-62.20416999999992,65.711655000000064],[-62.186385999999914,65.711928999999998],[-62.167777999999942,65.70277399999992],[-62.131667999999934,65.678863999999976],[-62.128333999999938,65.674149000000114],[-62.131942999999978,65.657211000000018],[-62.135276999999974,65.651382000000012],[-62.142226999999991,65.64498900000001],[-62.194999999999993,65.612762000000032],[-62.202498999999989,65.610259999999982],[-62.215004000000022,65.609984999999938],[-62.22444200000001,65.611098999999967],[-62.296950999999979,65.624985000000095],[-62.455001999999979,65.659988000000112],[-62.466109999999958,65.663879000000009],[-62.483886999999925,65.721099999999922],[-62.484443999999939,65.726928999999984],[-62.483611999999994,65.731658999999979],[-62.480552999999873,65.737761999999918],[-62.473609999999951,65.74192800000003],[-62.46832999999998,65.744140999999956],[-62.461944999999957,65.745254999999986],[-62.283889999999928,65.74443100000002],[-62.27194199999991,65.744140999999956],[-62.260283999999956,65.74331699999999],[-62.252501999999993,65.74192800000003],[-62.251396,65.739151000000106],[-62.258613999999909,65.728592000000049],[-62.27027899999996,65.723038000000088],[-62.297501000000011,65.708602999999982],[-62.268332999999984,65.701659999999947]],[[-83.283889999999928,65.834152000000131],[-83.292220999999927,65.828872999999987],[-83.30360399999995,65.826385000000016],[-83.315551999999968,65.826096000000064],[-83.327498999999932,65.82748399999997],[-83.347777999999892,65.832489000000066],[-83.395279000000016,65.8316650000001],[-83.406661999999983,65.830276000000083],[-83.418059999999969,65.827774000000034],[-83.429168999999945,65.824432000000058],[-83.439986999999917,65.819153000000085],[-83.456389999999999,65.808867999999961],[-83.473327999999981,65.800262000000032],[-83.485274999999945,65.800812000000064],[-83.498046999999929,65.804152999999928],[-83.529723999999987,65.817489999999964],[-83.559157999999968,65.831100000000049],[-83.575561999999934,65.839980999999966],[-83.581679999999892,65.844711000000018],[-83.585007000000019,65.849426000000051],[-83.586120999999991,65.854156000000103],[-83.580291999999986,65.859420999999941],[-83.571670999999981,65.862488000000042],[-83.560271999999941,65.864990000000148],[-83.525283999999886,65.868317000000104],[-83.478058000000033,65.870255000000043],[-83.442490000000021,65.870818999999983],[-83.36999499999996,65.866653000000042],[-83.345551,65.863876000000005],[-83.333069000000023,65.860260000000096],[-83.291106999999954,65.843597000000045],[-83.285277999999948,65.838882000000012],[-83.283889999999928,65.834152000000131]],[[-65.645843999999954,65.813034000000073],[-65.656386999999995,65.812759000000028],[-65.660278000000005,65.819717000000026],[-65.654998999999918,65.869431000000077],[-65.651671999999962,65.876647999999989],[-65.647781000000009,65.879974000000004],[-65.636123999999882,65.88638300000008],[-65.623885999999914,65.891373000000101],[-65.583069000000023,65.902771000000143],[-65.542769999999962,65.908035000000098],[-65.531676999999945,65.908874999999966],[-65.516112999999962,65.906371999999976],[-65.511397999999929,65.903046000000131],[-65.512221999999895,65.894440000000031],[-65.513335999999981,65.890548999999965],[-65.52806099999998,65.859420999999941],[-65.559433000000013,65.834717000000012],[-65.645843999999954,65.813034000000073]],[[-85.480559999999969,65.791930999999977],[-85.468062999999972,65.790817000000004],[-85.456389999999942,65.791367000000037],[-85.445266999999944,65.793869000000086],[-85.424164000000019,65.801926000000094],[-85.413895000000025,65.807480000000055],[-85.40834000000001,65.812485000000095],[-85.404998999999975,65.817489999999964],[-85.404175000000009,65.822495000000004],[-85.393065999999862,65.832764000000054],[-85.381942999999978,65.835265999999933],[-85.369995000000017,65.834991000000116],[-85.333327999999995,65.832214000000022],[-85.313613999999916,65.830276000000083],[-85.288605000000018,65.826660000000004],[-85.263061999999991,65.821106000000043],[-85.213622999999984,65.808029000000033],[-85.202788999999939,65.803588999999988],[-85.18582200000003,65.794708000000071],[-85.162505999999894,65.78137200000009],[-85.156386999999938,65.776657000000057],[-85.049164000000019,65.621643000000006],[-85.047774999999945,65.616928000000144],[-85.048614999999984,65.611923000000104],[-85.051666000000012,65.606934000000138],[-85.067504999999926,65.59637500000008],[-85.08805799999999,65.585541000000035],[-85.120270000000005,65.574996999999996],[-85.142226999999934,65.569992000000127],[-85.175827000000027,65.563309000000118],[-85.232223999999917,65.554703000000018],[-85.24360699999994,65.55386400000009],[-85.267776000000026,65.555542000000003],[-85.280563000000029,65.55802900000009],[-85.291945999999882,65.557205000000124],[-85.302490000000034,65.552765000000079],[-85.307770000000005,65.547760000000039],[-85.311110999999926,65.542479999999955],[-85.311935000000005,65.537766000000033],[-85.308043999999995,65.533051],[-85.295836999999949,65.52388000000002],[-85.271118000000001,65.511658000000068],[-85.240829000000019,65.498322000000087],[-85.204178000000013,65.485809000000017],[-85.165557999999976,65.474991000000045],[-85.127776999999924,65.466095000000109],[-85.088608000000022,65.453597999999943],[-85.043609999999944,65.436371000000122],[-85.02694699999995,65.427475000000015],[-85.015015000000005,65.418319999999937],[-85.011123999999938,65.413605000000075],[-85.002791999999943,65.401382000000069],[-85.001403999999923,65.396652000000017],[-85.005004999999983,65.37692300000009],[-85.011672999999973,65.352203000000031],[-84.930557000000022,65.214157000000057],[-84.924712999999997,65.209717000000012],[-84.912216000000001,65.206375000000094],[-84.900283999999942,65.206100000000106],[-84.832503999999972,65.212494000000106],[-84.821395999999879,65.213882000000012],[-84.810271999999998,65.216385000000002],[-84.800277999999992,65.221649000000014],[-84.792496000000028,65.226929000000041],[-84.748046999999985,65.292755000000056],[-84.746947999999975,65.297485000000052],[-84.749724999999899,65.307204999999954],[-84.755004999999869,65.316666000000112],[-84.762221999999952,65.326096000000007],[-84.761123999999995,65.331099999999992],[-84.758056999999951,65.336105000000032],[-84.754729999999938,65.341095000000053],[-84.745834000000002,65.351379000000065],[-84.740279999999984,65.356368999999972],[-84.595839999999953,65.475540000000024],[-84.58555599999994,65.481093999999985],[-84.573623999999995,65.481659000000036],[-84.561934999999949,65.481093999999985],[-84.549437999999952,65.47886699999998],[-84.440276999999924,65.456650000000081],[-84.432220000000029,65.453323000000125],[-84.426392000000021,65.448593000000074],[-84.424712999999997,65.443863000000079],[-84.42582699999997,65.438873000000001],[-84.314437999999996,65.381653000000142],[-84.291945999999996,65.37692300000009],[-84.161391999999921,65.341934000000037],[-84.151107999999908,65.338593000000003],[-84.147507000000019,65.333878000000141],[-84.153060999999923,65.328598000000056],[-84.194153000000028,65.297485000000052],[-84.201950000000011,65.292206000000078],[-84.220839999999953,65.284713999999951],[-84.228881999999999,65.279434000000094],[-84.230834999999956,65.269440000000088],[-84.229720999999984,65.264708999999982],[-84.141388000000006,65.219986000000063],[-84.088333000000034,65.203873000000044],[-83.899993999999992,65.165543000000071],[-83.876098999999954,65.162766000000033],[-83.852782999999931,65.161652000000004],[-83.666945999999939,65.160811999999964],[-83.620543999999938,65.160811999999964],[-83.540282999999931,65.16415400000011],[-83.52806099999998,65.161925999999937],[-83.408614999999998,65.135544000000095],[-83.388061999999934,65.126647999999932],[-83.378875999999991,65.117203000000075],[-83.33805799999999,65.074707000000046],[-83.334732000000031,65.069992000000013],[-83.335830999999928,65.064986999999974],[-83.339447000000007,65.059982000000105],[-83.343063000000029,65.045258000000047],[-83.340835999999967,65.035537999999974],[-83.330840999999964,65.021378000000084],[-83.319457999999941,65.012207000000103],[-83.208053999999947,64.945526000000086],[-83.198043999999868,64.941086000000098],[-83.190552000000025,64.939423000000147],[-83.156386999999995,64.939972000000068],[-83.005004999999926,64.913039999999967],[-82.992766999999901,64.909714000000122],[-82.865828999999962,64.873596000000077],[-82.855834999999956,64.86914100000007],[-82.848052999999993,64.864426000000037],[-82.842498999999918,64.859985000000108],[-82.829726999999991,64.840819999999951],[-82.828613000000018,64.836104999999918],[-82.825287000000003,64.831375000000094],[-82.816390999999953,64.821930000000009],[-82.800277999999992,64.808868000000018],[-82.770003999999972,64.795532000000037],[-82.75778200000002,64.791092000000049],[-82.709166999999979,64.776382000000069],[-82.697220000000016,64.77388000000002],[-82.569732999999928,64.763885000000073],[-82.361388999999974,64.763610999999969],[-82.34944200000001,64.760269000000051],[-82.211944999999957,64.718323000000055],[-82.202224999999885,64.713608000000022],[-82.203339000000028,64.708602999999982],[-82.209166999999979,64.703598000000113],[-82.217498999999975,64.698593000000074],[-82.203612999999962,64.684417999999994],[-82.064437999999996,64.648605000000089],[-81.932495000000017,64.584427000000062],[-81.763061999999991,64.501099000000067],[-81.753890999999953,64.486923000000047],[-81.75140399999998,64.472488000000112],[-81.753066999999987,64.355820000000051],[-81.764174999999966,64.341095000000109],[-81.770003999999972,64.336105000000032],[-81.777221999999995,64.326096000000007],[-81.778885000000002,64.321105999999986],[-81.777221999999995,64.31164600000011],[-81.77416999999997,64.30664100000007],[-81.74888599999997,64.273605000000089],[-81.727218999999934,64.258330999999998],[-81.712783999999999,64.250000000000114],[-81.702788999999996,64.2452550000001],[-81.669723999999974,64.232758000000103],[-81.646118000000001,64.22554000000008],[-81.622498000000007,64.216660000000047],[-81.613051999999982,64.212203999999929],[-81.600280999999939,64.20277400000009],[-81.594451999999933,64.193313999999987],[-81.590835999999967,64.183594000000085],[-81.589995999999928,64.17886400000009],[-81.602492999999981,64.129974000000004],[-81.610824999999977,64.125809000000004],[-81.717772999999966,64.099426000000051],[-81.758621000000005,64.089432000000045],[-81.76916499999993,64.088043000000027],[-81.824447999999961,64.086380000000077],[-81.879165999999941,64.080826000000116],[-81.955840999999964,64.0619200000001],[-81.964171999999962,64.0577550000001],[-81.970000999999968,64.052765000000022],[-81.973617999999931,64.047759999999982],[-81.999160999999958,64.003326000000015],[-81.996384000000035,63.998604000000114],[-81.986938000000009,63.994155999999975],[-81.975005999999951,63.990546999999992],[-81.963897999999972,63.988884000000041],[-81.952498999999932,63.98832700000014],[-81.930556999999965,63.988045000000056],[-81.897507000000019,63.989990000000091],[-81.875823999999909,63.991661000000136],[-81.56082200000003,64.029433999999981],[-81.44027699999998,64.067764000000068],[-81.383620999999948,64.090546000000018],[-81.287780999999882,64.080276000000083],[-81.276397999999972,64.07748399999997],[-81.270003999999915,64.072495000000004],[-81.264174999999966,64.062759000000028],[-81.256957999999997,64.059143000000006],[-81.245543999999995,64.055542000000116],[-80.964721999999938,63.991936000000123],[-80.942489999999964,63.990546999999992],[-80.931670999999994,63.991936000000123],[-80.920837000000006,63.994995000000131],[-80.910277999999892,63.999161000000015],[-80.906661999999926,64.004166000000055],[-80.903335999999967,64.013885000000073],[-80.909163999999976,64.023315000000139],[-80.914168999999958,64.028046000000074],[-80.92582699999997,64.032761000000107],[-80.948607999999979,64.038879000000065],[-80.967498999999918,64.04803499999997],[-80.972778000000005,64.052765000000022],[-80.975554999999986,64.0577550000001],[-80.973891999999978,64.062485000000095],[-80.935821999999973,64.111923000000047],[-80.890838999999971,64.11554000000001],[-80.812209999999993,64.091094999999939],[-80.777495999999871,64.079437000000098],[-80.734726000000023,64.054153000000099],[-80.566100999999946,63.994155999999975],[-80.543335000000013,63.987770000000069],[-80.531677000000002,63.983330000000024],[-80.522507000000019,63.978600000000029],[-80.517501999999979,63.973877000000016],[-80.488327000000027,63.910545000000013],[-80.49221799999998,63.905548000000067],[-80.503066999999987,63.902489000000116],[-80.567504999999926,63.889435000000049],[-80.453063999999927,63.859436000000017],[-80.363051999999925,63.841102999999976],[-80.217223999999987,63.809989999999971],[-80.194480999999996,63.804474000000084],[-80.189986999999974,63.799995000000024],[-80.174712999999883,63.780822999999998],[-80.172225999999966,63.776100000000042],[-80.171660999999972,63.771102999999925],[-80.178878999999881,63.756660000000068],[-80.184998000000007,63.751663000000121],[-80.195830999999885,63.748604],[-80.346953999999982,63.728042999999957],[-80.357772999999952,63.728600000000085],[-80.369155999999975,63.73333000000008],[-80.380279999999971,63.734993000000031],[-80.391387999999949,63.734993000000031],[-80.402221999999995,63.734717999999987],[-80.434433000000013,63.731102000000135],[-80.454178000000013,63.727767999999969],[-80.485275000000001,63.715546000000018],[-80.493606999999997,63.710274000000084],[-80.504729999999995,63.690826000000129],[-80.506393000000003,63.685822000000144],[-80.510009999999966,63.681107000000111],[-80.52194199999991,63.671104000000071],[-80.587783999999999,63.635826000000066],[-80.608886999999982,63.628326000000015],[-80.774445000000014,63.573326000000122],[-80.912216000000001,63.526381999999955],[-80.922501000000011,63.521378000000027],[-80.930557000000022,63.516106000000093],[-80.936385999999914,63.511108000000092],[-80.938048999999864,63.50638600000002],[-80.9375,63.501389000000074],[-80.934433000000013,63.496658000000139],[-80.930557000000022,63.482208000000014],[-80.930282999999974,63.477486000000113],[-80.9375,63.467491000000052],[-80.958053999999947,63.458328000000051],[-80.968613000000005,63.455269000000044],[-80.989440999999999,63.450829000000056],[-81.011123999999995,63.449158000000011],[-81.032775999999956,63.44860100000011],[-81.054442999999992,63.449158000000011],[-81.076401000000033,63.451385000000016],[-81.110000999999954,63.458328000000051],[-81.386123999999938,63.526381999999955],[-81.694153000000028,63.607498000000135],[-81.734160999999972,63.625549000000092],[-81.757232999999985,63.634720000000073],[-81.768889999999999,63.638046000000088],[-81.779998999999975,63.639717000000132],[-81.801940999999943,63.641105999999979],[-81.823623999999995,63.639435000000105],[-81.855270000000019,63.63249200000007],[-81.876662999999951,63.629990000000021],[-81.887512000000015,63.62943300000012],[-81.909728999999913,63.631934999999999],[-81.995270000000005,63.661102000000142],[-82.01167299999986,63.667213000000004],[-82.026397999999972,63.676383999999985],[-82.031386999999938,63.681107000000111],[-82.041107000000011,63.685822000000144],[-82.052490000000034,63.689156000000139],[-82.06361400000003,63.690826000000129],[-82.107772999999952,63.692214999999919],[-82.129439999999988,63.691658000000018],[-82.214172000000019,63.687766999999951],[-82.224715999999887,63.686377999999991],[-82.285552999999993,63.678047000000049],[-82.296111999999937,63.674713000000111],[-82.299437999999952,63.669715999999994],[-82.298889000000031,63.664992999999981],[-82.302215999999987,63.659987999999942],[-82.307769999999948,63.654991000000052],[-82.318344000000025,63.651657000000057],[-82.328887999999949,63.65026899999998],[-82.339995999999871,63.650826000000052],[-82.351395000000025,63.653320000000008],[-82.472228999999913,63.680275000000051],[-82.483886999999982,63.68471500000004],[-82.491103999999893,63.689156000000139],[-82.535278000000005,63.726378999999952],[-82.545836999999949,63.735550000000103],[-82.549728000000016,63.745270000000005],[-82.550827000000027,63.750000000000057],[-82.546951000000035,63.764717000000019],[-82.543334999999956,63.769714000000135],[-82.532226999999978,63.779991000000109],[-82.514450000000011,63.790276000000063],[-82.504456000000005,63.795547000000056],[-82.484160999999972,63.804993000000024],[-82.473617999999931,63.80832700000002],[-82.431945999999982,63.820273999999984],[-82.420837000000006,63.820831000000055],[-82.40972899999997,63.819160000000011],[-82.398055999999883,63.815826000000015],[-82.386672999999973,63.814156000000025],[-82.376389000000017,63.81749700000006],[-82.372771999999998,63.82249500000006],[-82.353881999999942,63.852219000000105],[-82.351395000000025,63.861938000000066],[-82.358336999999949,63.900543000000027],[-82.361388999999974,63.905265999999983],[-82.368880999999988,63.909988000000112],[-82.378325999999959,63.91443600000008],[-82.413894999999968,63.926940999999999],[-82.525833000000034,63.966103000000032],[-82.548888999999974,63.96915400000006],[-82.828613000000018,63.979431000000034],[-82.967223999999987,63.965546000000131],[-82.978058000000033,63.963051000000121],[-83.064162999999951,63.951934999999992],[-83.086944999999957,63.954994000000113],[-83.098891999999921,63.959160000000054],[-83.12388599999997,63.972763000000043],[-83.129165999999941,63.977486000000056],[-83.145279000000016,64.001099000000124],[-83.139724999999999,64.006103999999993],[-83.095550999999887,64.028320000000008],[-83.029449,64.074707000000103],[-83.016113000000018,64.084991000000116],[-82.996947999999975,64.10026600000009],[-82.980285999999978,64.11554000000001],[-82.97084000000001,64.125534000000016],[-82.961944999999901,64.135818000000029],[-82.960555999999997,64.140548999999965],[-82.96166999999997,64.145538000000101],[-82.964721999999995,64.150269000000037],[-83.008346999999958,64.187484999999981],[-83.019729999999981,64.188873000000058],[-83.072783999999956,64.186646000000053],[-83.105269999999962,64.181655999999975],[-83.126388999999961,64.175811999999951],[-83.157227000000034,64.163040000000137],[-83.339447000000007,64.134720000000129],[-83.488327000000027,64.122482000000048],[-83.519729999999981,64.11442599999998],[-83.530288999999925,64.111099000000081],[-83.548339999999996,64.102478000000133],[-83.673324999999977,64.017212000000029],[-83.682220000000029,64.007217000000082],[-83.683318999999983,64.002212999999927],[-83.676666000000012,63.992766999999958],[-83.665833000000021,63.983603999999957],[-83.642501999999979,63.969986000000119],[-83.626099000000011,63.956099999999992],[-83.608611999999994,63.937492000000077],[-83.605559999999969,63.932770000000005],[-83.604171999999949,63.928047000000049],[-83.595839999999896,63.825829000000056],[-83.596664000000033,63.820831000000055],[-83.623046999999929,63.781661999999983],[-83.631942999999865,63.771659999999997],[-83.637222000000008,63.766388000000063],[-83.647507000000019,63.763054000000125],[-83.658614999999941,63.763611000000026],[-83.670272999999952,63.766937000000041],[-83.694442999999978,63.775826000000109],[-83.718613000000005,63.779991000000109],[-83.740554999999972,63.779991000000109],[-83.750838999999985,63.776657000000114],[-83.824172999999973,63.747490000000028],[-84.007232999999985,63.668053000000043],[-84.012786999999889,63.662765999999976],[-84.021117999999944,63.65277100000003],[-84.027495999999928,63.642769000000044],[-84.050277999999935,63.626938000000109],[-84.069457999999997,63.616386000000091],[-84.079453000000001,63.611938000000123],[-84.089447000000007,63.607773000000122],[-84.09973100000002,63.605270000000132],[-84.110000999999954,63.603607000000068],[-84.121383999999978,63.604163999999969],[-84.132767000000001,63.606658999999979],[-84.144729999999925,63.610825000000034],[-84.162216000000001,63.619713000000047],[-84.174164000000019,63.623047000000042],[-84.196380999999917,63.62499200000002],[-84.261123999999995,63.62082700000002],[-84.286117999999988,63.615546999999935],[-84.388061999999991,63.559158000000082],[-84.395279000000016,63.553879000000109],[-84.40055799999999,63.548607000000004],[-84.446380999999974,63.488045],[-84.449431999999888,63.483046999999999],[-84.452224999999942,63.472488000000112],[-84.447220000000016,63.453323000000012],[-84.449157999999954,63.443603999999993],[-84.477492999999981,63.3836060000001],[-84.563323999999966,63.337494000000049],[-84.754456000000005,63.264160000000061],[-84.774170000000026,63.257217000000082],[-84.793883999999991,63.250274999999988],[-84.823059000000001,63.237213000000111],[-84.841949,63.227211000000011],[-84.870834000000002,63.214157000000114],[-84.890563999999983,63.207214000000079],[-85.143341000000021,63.139992000000063],[-85.224166999999966,63.120827000000133],[-85.244995000000017,63.118598999999961],[-85.266402999999968,63.117493000000138],[-85.288054999999986,63.118324000000143],[-85.343338000000017,63.122765000000072],[-85.375823999999909,63.123877999999934],[-85.396956999999929,63.122765000000072],[-85.449158000000011,63.116661000000022],[-85.482223999999974,63.118598999999961],[-85.493331999999953,63.119987000000094],[-85.505004999999983,63.123046999999929],[-85.536391999999921,63.134995000000004],[-85.543883999999935,63.138328999999999],[-85.577788999999939,63.165543000000127],[-85.589171999999962,63.174712999999997],[-85.592498999999975,63.17943600000001],[-85.638061999999934,63.244995000000074],[-85.639175000000023,63.249718000000087],[-85.648345999999947,63.33554799999996],[-85.653884999999946,63.408882000000006],[-85.650833000000034,63.428604000000007],[-85.644454999999994,63.443603999999993],[-85.635833999999988,63.458603000000039],[-85.626098999999897,63.468880000000013],[-85.618057000000022,63.479156000000103],[-85.60722399999986,63.494438000000116],[-85.604995999999971,63.509163000000058],[-85.591110000000015,63.617493000000024],[-85.59333799999996,63.631934999999999],[-85.596114999999941,63.641380000000083],[-85.607497999999964,63.665268000000026],[-85.61332699999997,63.669715999999994],[-85.717498999999975,63.716103000000089],[-85.879439999999988,63.704711999999915],[-85.98582499999992,63.693320999999969],[-86.017226999999934,63.68832400000008],[-86.183608999999933,63.653046000000074],[-86.224441999999954,63.642769000000044],[-86.244995000000017,63.639435000000105],[-86.266952999999944,63.638046000000088],[-86.300277999999935,63.639717000000132],[-86.346114999999998,63.645546000000138],[-86.381377999999984,63.652214000000129],[-86.450286999999889,63.660545000000013],[-86.552779999999871,63.670273000000066],[-86.56361400000003,63.670546999999999],[-86.596114999999941,63.668602000000021],[-86.626937999999996,63.661659000000043],[-86.666397000000018,63.648331000000042],[-86.694442999999922,63.633606000000043],[-86.733886999999982,63.606658999999979],[-86.759170999999981,63.590271000000087],[-86.778060999999923,63.581108000000086],[-86.807495000000017,63.571380999999974],[-86.837783999999999,63.563323999999966],[-86.847778000000005,63.560822000000087],[-86.879165999999998,63.555549999999982],[-86.922225999999966,63.552773000000059],[-87.050551999999982,63.549720999999977],[-87.083618000000001,63.550270000000125],[-87.095275999999956,63.551384000000098],[-87.118606999999997,63.555824000000086],[-87.141388000000006,63.563881000000094],[-87.14973399999991,63.568329000000062],[-87.188048999999864,63.589989000000003],[-87.217223999999987,63.622215000000097],[-87.222778000000005,63.631660000000011],[-87.226394999999968,63.641105999999979],[-87.225280999999995,63.651099999999985],[-87.22193900000002,63.665825000000098],[-87.218886999999938,63.675827000000083],[-87.210830999999985,63.691100999999946],[-87.200835999999867,63.706657000000121],[-87.186661000000015,63.722213999999951],[-87.161117999999931,63.743607000000054],[-86.943877999999927,63.900543000000027],[-86.934432999999956,63.906097000000045],[-86.915282999999988,63.91443600000008],[-86.875823999999966,63.928604000000121],[-86.784163999999976,63.956940000000031],[-86.763625999999988,63.962212000000136],[-86.700287000000003,63.972214000000122],[-86.668609999999887,63.978324999999984],[-86.503890999999896,64.018326000000002],[-86.41361999999998,64.048598999999967],[-86.255004999999926,64.076096000000064],[-86.233611999999994,64.079437000000098],[-86.223327999999981,64.081940000000088],[-86.213333000000034,64.085541000000148],[-86.203888000000006,64.091094999999939],[-86.189437999999882,64.101653999999996],[-86.178328999999962,64.121918000000107],[-86.178878999999995,64.131653000000028],[-86.182220000000029,64.141373000000101],[-86.212219000000005,64.178589000000045],[-86.253066999999987,64.200546000000088],[-86.273894999999982,64.208878000000084],[-86.300551999999982,64.221924000000058],[-86.308884000000035,64.226379000000065],[-86.3125,64.230819999999994],[-86.354720999999984,64.289978000000133],[-86.384170999999981,64.36442599999998],[-86.401672000000019,64.436645999999996],[-86.401107999999965,64.441649999999925],[-86.383620999999948,64.564987000000087],[-86.368880999999988,64.629424999999969],[-86.315552000000025,64.701096000000064],[-86.272506999999962,64.768051000000014],[-86.24888599999997,64.793868999999916],[-86.238891999999964,64.804152999999985],[-86.231383999999935,64.809418000000051],[-86.221114999999998,64.813034000000073],[-86.210280999999952,64.814697000000024],[-86.198607999999922,64.81442300000009],[-86.187209999999993,64.815262000000018],[-86.176665999999955,64.817764000000125],[-86.171660999999915,64.823043999999982],[-86.152495999999928,64.918045000000063],[-86.151947000000007,64.923035000000084],[-86.153335999999911,64.927765000000136],[-86.157226999999978,64.932479999999998],[-86.181106999999997,64.955551000000014],[-86.187209999999993,64.959991000000002],[-86.212509000000011,64.966385000000059],[-86.22084000000001,64.970535000000041],[-86.226394999999968,64.979980000000126],[-86.227782999999988,64.983871000000022],[-86.225829999999974,64.998596000000134],[-86.225006000000008,65.003601000000003],[-86.212219000000005,65.03387500000008],[-86.206389999999885,65.043869000000086],[-86.198333999999988,65.054153000000099],[-86.189986999999917,65.064423000000033],[-86.18472300000002,65.069717000000026],[-86.165282999999931,65.080551000000071],[-86.144729999999981,65.08859300000006],[-86.138335999999924,65.094437000000028],[-86.138061999999991,65.099425999999994],[-86.135558999999944,65.1827550000001],[-86.137221999999952,65.197753999999975],[-86.141953000000001,65.212204000000099],[-86.146118000000001,65.216660000000047],[-86.151397999999972,65.226379000000009],[-86.164168999999958,65.250000000000114],[-86.170546999999942,65.269150000000081],[-86.171660999999915,65.278869999999984],[-86.153335999999911,65.384720000000073],[-86.149733999999967,65.394714000000079],[-86.111937999999952,65.494141000000013],[-86.097777999999948,65.529160000000104],[-86.013900999999976,65.709152000000074],[-86.010009999999909,65.714996000000099],[-85.993880999999988,65.730545000000006],[-85.982773000000009,65.740814000000057],[-85.975280999999882,65.746094000000085],[-85.888335999999981,65.799987999999928],[-85.832503999999915,65.832489000000066],[-85.791381999999999,65.853317000000118],[-85.770554000000004,65.862198000000035],[-85.728333000000021,65.879425000000083],[-85.696654999999907,65.891937000000041],[-85.621108999999933,65.917480000000012],[-85.56527699999998,65.930267000000015],[-85.542496000000028,65.933319000000097],[-85.506667999999991,65.934418000000051],[-85.493880999999988,65.932205000000124],[-85.491013000000009,65.931060999999943],[-85.482773000000009,65.927765000000079],[-85.476944000000003,65.923309000000017],[-85.468886999999938,65.913879000000122],[-85.469726999999978,65.908874999999966],[-85.473891999999978,65.898880000000077],[-85.488892000000021,65.878586000000098],[-85.511123999999995,65.857758000000047],[-85.520554000000004,65.84275800000006],[-85.523620999999991,65.823043999999982],[-85.520554000000004,65.813309000000061],[-85.516662999999994,65.808594000000028],[-85.510559000000001,65.804152999999928],[-85.493331999999953,65.795258000000103],[-85.480559999999969,65.791930999999977]],[[-62.136664999999937,65.851379000000009],[-62.141669999999976,65.849716000000058],[-62.154442000000017,65.850815000000068],[-62.162216000000001,65.854156000000103],[-62.210830999999985,65.880539000000056],[-62.296950999999979,65.927765000000079],[-62.296669000000009,65.938583000000051],[-62.281386999999995,65.946365000000014],[-62.265006999999969,65.946930000000066],[-62.230552999999986,65.943862999999965],[-62.167220999999984,65.932754999999986],[-62.137779000000023,65.925811999999951],[-62.139724999999999,65.913040000000137],[-62.118606999999997,65.881087999999977],[-62.129996999999889,65.859146000000123],[-62.136664999999937,65.851379000000009]],[[-67.138335999999981,65.92692599999998],[-67.145844000000011,65.926376000000118],[-67.154448999999943,65.92886400000009],[-67.161117999999988,65.932205000000124],[-67.185271999999941,65.948317999999972],[-67.209166999999923,65.978867000000037],[-67.211945000000014,65.982758000000103],[-67.208892999999989,65.984421000000054],[-67.199158000000011,65.986373999999955],[-67.181380999999874,65.987198000000092],[-67.166945999999939,65.984984999999995],[-67.153885000000002,65.978591999999992],[-67.152785999999992,65.974990999999989],[-67.152602999999885,65.970733999999993],[-67.134445000000028,65.933044000000052],[-67.134734999999921,65.930267000000015],[-67.138335999999981,65.92692599999998]],[[-83.576950000000011,65.983047000000056],[-83.588607999999965,65.981658999999922],[-83.60082999999986,65.983322000000044],[-83.604445999999996,65.987762000000089],[-83.60082999999986,65.993042000000116],[-83.588897999999972,66.003052000000025],[-83.570007000000032,66.013611000000083],[-83.547500999999954,66.019440000000088],[-83.511397999999986,66.019989000000066],[-83.498885999999914,66.01748699999996],[-83.493056999999965,66.012771999999927],[-83.50140399999998,66.00749200000007],[-83.510009999999966,66.003325999999959],[-83.554442999999935,65.988876000000062],[-83.576950000000011,65.983047000000056]],[[-84.722777999999948,65.546097000000088],[-84.733886999999982,65.544708000000128],[-84.746108999999933,65.545822000000101],[-84.78472899999997,65.556640999999956],[-84.803604000000007,65.565536000000009],[-84.828612999999962,65.578873000000044],[-84.840835999999967,65.588043000000084],[-84.848052999999879,65.597487999999998],[-84.853333000000021,65.606934000000138],[-84.852218999999934,65.611923000000104],[-84.857772999999952,65.645827999999995],[-84.858886999999925,65.650818000000072],[-84.866393999999957,65.659988000000112],[-84.878601000000003,65.669144000000074],[-84.900283999999942,65.67804000000001],[-85.028609999999958,65.711655000000064],[-85.063048999999921,65.723312000000021],[-85.073897999999986,65.727768000000083],[-85.082229999999981,65.732208000000128],[-85.106948999999929,65.750548999999921],[-85.118057000000022,65.764709000000039],[-85.181945999999982,65.945526000000086],[-85.173049999999932,65.994705000000067],[-85.143889999999942,66.021103000000039],[-85.137222000000008,66.023315000000082],[-85.081679999999949,66.026657],[-85.057495000000017,66.02609300000006],[-84.9375,66.010543999999982],[-84.924712999999997,66.008040999999992],[-84.910277999999892,66.000000000000114],[-84.887221999999952,65.945526000000086],[-84.883330999999885,65.940811000000053],[-84.807770000000005,65.895828000000108],[-84.755004999999869,65.853317000000118],[-84.716110000000015,65.817215000000147],[-84.714171999999962,65.807205000000067],[-84.712783999999942,65.802200000000028],[-84.707779000000016,65.792755000000113],[-84.637222000000008,65.712203999999986],[-84.597503999999958,65.696640000000116],[-84.586670000000026,65.692200000000071],[-84.574172999999917,65.639160000000004],[-84.576110999999969,65.629150000000095],[-84.585006999999962,65.61914100000007],[-84.598617999999931,65.608597000000032],[-84.667769999999962,65.560532000000023],[-84.722777999999948,65.546097000000088]],[[-83.608611999999994,66.044144000000074],[-83.642226999999991,66.034988000000112],[-83.652221999999995,66.036652000000117],[-83.653609999999901,66.04136699999998],[-83.647507000000019,66.046646000000123],[-83.644164999999987,66.051650999999993],[-83.626099000000011,66.066940000000102],[-83.618056999999965,66.072220000000129],[-83.607223999999974,66.07748400000014],[-83.597778000000005,66.078873000000101],[-83.583618000000001,66.070540999999935],[-83.577788999999996,66.06581100000011],[-83.570847000000015,66.056366000000025],[-83.574447999999961,66.051376000000005],[-83.58555599999994,66.048035000000141],[-83.59722899999997,66.046646000000123],[-83.608611999999994,66.044144000000074]],[[-85.019164999999987,66.05720500000001],[-85.135558999999944,66.044434000000081],[-85.147781000000009,66.045821999999987],[-85.149170000000026,66.05053700000002],[-85.107773000000009,66.084427000000119],[-85.09973100000002,66.089706000000092],[-85.063323999999966,66.087769000000037],[-85.038604999999961,66.086105000000032],[-85.016112999999905,66.079712000000086],[-85.008620999999948,66.070540999999935],[-85.006957999999941,66.065536000000066],[-85.010283999999956,66.060531999999967],[-85.019164999999987,66.05720500000001]],[[-83.649444999999901,66.083602999999982],[-83.661117999999988,66.081940000000031],[-83.673614999999984,66.083327999999938],[-83.692490000000021,66.091370000000097],[-83.696105999999986,66.096099999999979],[-83.689986999999974,66.111099000000024],[-83.685271999999941,66.121093999999914],[-83.678878999999995,66.125259000000142],[-83.606658999999979,66.124146000000053],[-83.593886999999938,66.121643000000063],[-83.587783999999999,66.117203000000075],[-83.591674999999896,66.112197999999978],[-83.604445999999996,66.105820000000051],[-83.610549999999932,66.10165399999994],[-83.638061999999991,66.086928999999998],[-83.649444999999901,66.083602999999982]],[[-83.921386999999982,66.009720000000016],[-83.730834999999956,65.947754000000032],[-83.705840999999964,65.934143000000063],[-83.694152999999972,65.924697999999978],[-83.683318999999983,65.910538000000088],[-83.680832000000009,65.901093000000003],[-83.689163000000008,65.866653000000042],[-83.699721999999952,65.851379000000009],[-83.713897999999972,65.841094999999939],[-83.724715999999944,65.836929000000055],[-83.73582499999992,65.833603000000039],[-83.727492999999924,65.799713000000111],[-83.525008999999955,65.737761999999918],[-83.360001000000011,65.727478000000076],[-83.348052999999993,65.726928999999984],[-83.25111400000003,65.716934000000037],[-83.226944000000003,65.714157000000114],[-83.214447000000007,65.710541000000092],[-83.210830999999871,65.705826000000059],[-83.25111400000003,65.654709000000139],[-83.259445000000028,65.649429000000055],[-83.288894999999968,65.632750999999985],[-83.299727999999959,65.629424999999969],[-83.311110999999983,65.627196999999967],[-83.345000999999968,65.62081900000004],[-83.379165999999998,65.615540000000067],[-83.391387999999949,65.617203000000131],[-83.399170000000026,65.62081900000004],[-83.406113000000005,65.630264000000068],[-83.41194200000001,65.634720000000016],[-83.419998000000021,65.639435000000049],[-83.430557000000022,65.643875000000037],[-83.443328999999949,65.648041000000148],[-83.468612999999948,65.654984000000127],[-83.493056999999965,65.65776100000005],[-83.505004999999926,65.658324999999991],[-83.528610000000015,65.658324999999991],[-83.598891999999978,65.656372000000033],[-83.660277999999948,65.647217000000012],[-83.829726999999991,65.64498900000001],[-83.842772999999909,65.649155000000121],[-83.846114999999941,65.653869999999984],[-83.84973100000002,65.668320000000108],[-83.846389999999985,65.673309000000074],[-83.840560999999866,65.678589000000102],[-83.794158999999979,65.719437000000028],[-83.785827999999981,65.724700999999982],[-83.775009000000011,65.728043000000127],[-83.740828999999962,65.733322000000101],[-83.695266999999944,65.741089000000045],[-83.684158000000025,65.74443100000002],[-83.682769999999948,65.749419999999986],[-83.688888999999961,65.754166000000055],[-83.785278000000005,65.788879000000065],[-83.797501000000011,65.789429000000098],[-83.808883999999978,65.78804000000008],[-83.84973100000002,65.780548000000124],[-83.90583799999996,65.767487000000017],[-83.927490000000034,65.759720000000073],[-83.938048999999978,65.74443100000002],[-83.948607999999922,65.740265000000079],[-83.960007000000019,65.737761999999918],[-83.971664000000033,65.737198000000149],[-83.983886999999925,65.738586000000055],[-84.071121000000005,65.75],[-84.120543999999938,65.758331000000055],[-84.133330999999941,65.760817999999972],[-84.143615999999952,65.764160000000061],[-84.145003999999972,65.769149999999968],[-84.141388000000006,65.774155000000007],[-84.11721799999998,65.789703000000031],[-84.111388999999974,65.794983000000059],[-84.103333000000021,65.809981999999934],[-84.101105000000018,65.819717000000026],[-84.123610999999926,65.900269000000037],[-84.189437999999996,65.968322999999998],[-84.198043999999925,65.973038000000031],[-84.208617999999888,65.977203000000031],[-84.286391999999978,65.999145999999996],[-84.299438000000009,66.002487000000031],[-84.31138599999997,66.003052000000025],[-84.323333999999988,66.002487000000031],[-84.358046999999999,65.997756999999979],[-84.369995000000017,65.997208000000057],[-84.382766999999944,66.000549000000092],[-84.424163999999962,66.028046000000018],[-84.436110999999926,66.037201000000096],[-84.464447000000007,66.060257000000092],[-84.468062999999972,66.064986999999974],[-84.469161999999983,66.069992000000013],[-84.470001000000025,66.089431999999988],[-84.471114999999998,66.128311000000053],[-84.470275999999956,66.133331000000112],[-84.464447000000007,66.138321000000133],[-84.455841000000021,66.141663000000051],[-84.433060000000012,66.138885000000073],[-84.381103999999993,66.129149999999981],[-84.368056999999908,66.125808999999947],[-84.240279999999927,66.098328000000095],[-84.146392999999875,66.081099999999992],[-84.039443999999946,66.076934999999992],[-84.00167799999997,66.033600000000035],[-83.921386999999982,66.009720000000016]],[[-84.579726999999991,66.141373000000044],[-84.627486999999917,66.139160000000118],[-84.639998999999989,66.140549000000078],[-84.648346000000004,66.144989000000123],[-84.654449,66.149429000000112],[-84.675827000000027,66.173035000000027],[-84.678604000000007,66.182480000000055],[-84.667220999999927,66.184981999999991],[-84.618880999999988,66.176651000000049],[-84.59333799999996,66.171097000000088],[-84.589447000000007,66.166382000000056],[-84.574448000000018,66.147491000000002],[-84.579726999999991,66.141373000000044]],[[-84.265288999999996,66.177765000000022],[-84.276947000000007,66.175262000000089],[-84.289169000000015,66.175537000000077],[-84.301391999999964,66.176926000000094],[-84.313889000000017,66.179428000000144],[-84.353333000000021,66.190262000000018],[-84.361937999999952,66.194702000000063],[-84.364440999999943,66.204436999999928],[-84.363616999999977,66.209427000000005],[-84.360001000000011,66.214432000000045],[-84.348343,66.215820000000122],[-84.335830999999985,66.214432000000045],[-84.30972300000002,66.207764000000054],[-84.299164000000019,66.203322999999955],[-84.27305599999994,66.196640000000002],[-84.264450000000011,66.192199999999957],[-84.258347000000015,66.187759000000085],[-84.256957999999997,66.1827550000001],[-84.265288999999996,66.177765000000022]],[[-62.183883999999864,66.237198000000092],[-62.199164999999994,66.216933999999924],[-62.404998999999862,66.218597000000045],[-62.415276000000006,66.219147000000078],[-62.421668999999952,66.222214000000008],[-62.42999999999995,66.229156000000103],[-62.426665999999898,66.233046999999999],[-62.419167000000016,66.237762000000032],[-62.319450000000018,66.269440000000031],[-62.301940999999999,66.274994000000049],[-62.287223999999924,66.278046000000131],[-62.278336000000024,66.279709000000082],[-62.261672999999973,66.280273000000022],[-62.24888599999997,66.278595000000109],[-62.243057000000022,66.276931999999988],[-62.231383999999935,66.269440000000031],[-62.183883999999864,66.237198000000092]],[[-83.067229999999881,66.255554000000075],[-83.054992999999911,66.254990000000134],[-83.043059999999969,66.255264000000068],[-83.031113000000005,66.256653000000028],[-83.019454999999994,66.259155000000135],[-82.996947999999975,66.265823000000069],[-82.960830999999985,66.272491000000059],[-82.937209999999936,66.275269000000037],[-82.91332999999986,66.276093000000003],[-82.902495999999985,66.271652000000131],[-82.904175000000009,66.266662999999937],[-82.910278000000005,66.261658000000068],[-82.918610000000001,66.257492000000013],[-82.92971799999998,66.25221300000004],[-82.935546999999929,66.251389000000074],[-82.990279999999984,66.203598],[-82.996384000000035,66.19859300000013],[-83.00778200000002,66.195250999999985],[-83.019729999999981,66.194977000000051],[-83.080291999999986,66.196640000000002],[-83.093062999999972,66.198868000000118],[-83.263335999999981,66.247208000000001],[-83.287216000000001,66.256104000000107],[-83.293335000000013,66.260544000000095],[-83.296660999999972,66.265273999999977],[-83.297775000000001,66.270263999999997],[-83.298339999999882,66.313873000000115],[-83.285004000000015,66.329163000000108],[-83.273055999999997,66.339432000000102],[-83.264175000000023,66.343597000000102],[-83.252228000000002,66.344986000000119],[-83.226944000000003,66.33998100000008],[-83.216110000000015,66.335541000000035],[-83.204726999999934,66.316666000000112],[-83.173889000000031,66.288589000000115],[-83.168059999999912,66.283874999999966],[-83.067229999999881,66.255554000000075]],[[-66.62332200000003,66.280823000000055],[-66.641952999999944,66.279434000000037],[-66.656951999999933,66.280273000000022],[-66.667495999999971,66.282760999999994],[-66.678878999999995,66.286925999999994],[-66.701400999999976,66.297760000000039],[-66.741942999999878,66.316376000000105],[-66.843063000000029,66.362487999999985],[-66.905837999999903,66.376648000000046],[-66.916107000000011,66.379974000000118],[-66.944716999999969,66.394989000000066],[-66.956115999999952,66.401932000000045],[-66.958617999999944,66.40637200000009],[-66.958344000000011,66.411926000000051],[-66.955276000000026,66.413605000000075],[-66.944442999999922,66.413879000000009],[-66.851943999999946,66.402205999999978],[-66.829726999999991,66.398330999999985],[-66.823059000000001,66.392761000000121],[-66.820846999999958,66.388046000000088],[-66.801101999999958,66.375534000000073],[-66.782227000000034,66.369141000000127],[-66.726944000000003,66.354980000000126],[-66.705565999999976,66.349715999999944],[-66.678329000000019,66.345535000000041],[-66.662216000000001,66.343597000000102],[-66.650283999999942,66.34304800000001],[-66.639724999999999,66.340546000000074],[-66.62388599999997,66.335266000000047],[-66.584441999999967,66.320541000000105],[-66.575012000000015,66.313873000000115],[-66.573623999999995,66.310806000000014],[-66.591675000000009,66.293593999999985],[-66.605269999999962,66.286652000000061],[-66.62332200000003,66.280823000000055]],[[-66.998336999999935,66.493042000000003],[-66.990279999999984,66.489150999999936],[-66.976104999999961,66.489150999999936],[-66.963332999999977,66.487198000000035],[-66.873321999999973,66.468596999999988],[-66.868880999999988,66.464431999999988],[-66.871384000000035,66.460541000000092],[-66.878052000000025,66.458327999999995],[-66.936110999999926,66.445525999999973],[-66.948883000000023,66.444702000000007],[-66.987212999999997,66.445250999999928],[-67.030288999999925,66.45248400000014],[-67.036666999999966,66.456099999999992],[-67.038329999999974,66.472488000000055],[-67.038054999999986,66.478043000000127],[-67.035278000000005,66.484711000000118],[-67.025008999999955,66.489975000000129],[-67.006957999999884,66.493042000000003],[-66.998336999999935,66.493042000000003]],[[-107.92304999999993,66.850540000000024],[-107.93499799999989,66.849152000000117],[-107.94611399999991,66.851089000000115],[-107.94554099999993,66.856934000000024],[-107.837784,67.003875999999991],[-107.83029199999993,67.008606000000043],[-107.81696299999993,67.009155000000135],[-107.80666400000001,67.005829000000119],[-107.79499800000002,66.997208000000001],[-107.79110699999995,66.988312000000064],[-107.78971899999999,66.985259999999982],[-107.79055800000003,66.979705999999965],[-107.82389799999999,66.901093000000003],[-107.83000199999992,66.895538000000101],[-107.89499699999999,66.860809000000017],[-107.90360999999996,66.856934000000024],[-107.92304999999993,66.850540000000024]],[[-108.01445000000001,66.897766000000047],[-108.025284,66.895538000000101],[-108.03859699999998,66.897217000000126],[-108.04444899999993,66.901382000000126],[-108.09638999999993,66.967484000000013],[-108.09777800000001,66.972762999999986],[-108.10659799999996,67.026001000000065],[-108.06360599999988,67.001099000000067],[-107.93831599999999,66.946930000000066],[-107.95944199999991,66.931655999999975],[-107.96665999999993,66.926651000000106],[-108.00583599999987,66.901931999999931],[-108.01445000000001,66.897766000000047]],[[-63.059166000000005,66.957764000000111],[-63.083327999999995,66.954987000000017],[-63.095550999999944,66.955826000000002],[-63.116942999999992,66.963043000000084],[-63.136391000000003,66.974701000000096],[-63.163054999999929,66.995255000000043],[-63.165549999999996,66.999145999999939],[-63.166106999999954,67.004990000000134],[-63.159163999999976,67.015549000000021],[-63.154166999999973,67.021378000000027],[-63.144446999999957,67.028869999999984],[-63.127494999999954,67.033599999999979],[-63.123055000000022,67.034713999999951],[-63.110831999999903,67.033875000000023],[-63.101668999999902,67.029709000000082],[-63.098052999999936,67.027205999999978],[-63.097778000000005,67.023315000000082],[-63.021111000000019,66.996643000000006],[-63.011672999999973,66.992477000000065],[-63.003890999999953,66.988585999999998],[-62.999999999999886,66.984420999999998],[-62.999442999999985,66.978591999999992],[-63.002228000000002,66.97554000000008],[-63.020835999999974,66.966385000000002],[-63.040000999999961,66.960815000000139],[-63.059166000000005,66.957764000000111]],[[-62.918334999999956,67.009720000000016],[-62.938048999999978,67.005829000000119],[-62.977775999999949,67.006653000000085],[-63.009726999999998,67.009995000000004],[-63.037780999999939,67.015823000000125],[-63.068335999999988,67.025543000000027],[-63.092772999999966,67.035812000000078],[-63.12388599999997,67.049149000000114],[-63.135559000000001,67.054703000000075],[-63.138892999999996,67.059418000000107],[-63.138054000000011,67.065262000000132],[-63.135833999999988,67.069716999999969],[-63.130279999999914,67.074158000000068],[-63.11721799999998,67.078873000000101],[-63.110557999999969,67.080276000000026],[-63.100081999999929,67.079712000000086],[-63.002228000000002,67.069443000000035],[-62.978333000000021,67.062759000000142],[-62.961112999999955,67.054703000000075],[-62.941108999999926,67.043593999999985],[-62.922500999999954,67.031097000000045],[-62.914444000000003,67.023041000000148],[-62.912215999999944,67.014708999999982],[-62.918334999999956,67.009720000000016]],[[-62.64416499999993,67.057479999999998],[-62.646949999999947,67.049988000000042],[-62.65166499999998,67.04693600000013],[-62.752501999999993,67.010543999999982],[-62.764449999999954,67.009155000000135],[-62.782775999999956,67.009430000000009],[-62.813056999999958,67.016937000000098],[-62.832222000000002,67.024429000000055],[-62.899445000000014,67.058318999999983],[-62.894599999999969,67.059113000000082],[-62.865004999999996,67.057479999999998],[-62.82028200000002,67.055817000000047],[-62.810279999999977,67.05693100000002],[-62.806664000000012,67.05914300000012],[-62.702869000000021,67.128685000000075],[-62.652221999999995,67.166091999999992],[-62.641945000000021,67.174149],[-62.631942999999865,67.176926000000037],[-62.547782999999924,67.186096000000134],[-62.533889999999985,67.187195000000088],[-62.425277999999992,67.191085999999984],[-62.418059999999969,67.19081099999994],[-62.37888299999986,67.169708000000071],[-62.375274999999931,67.165817000000004],[-62.376105999999936,67.164429000000098],[-62.388054000000011,67.157486000000063],[-62.443610999999919,67.135817999999972],[-62.451942000000031,67.132751000000042],[-62.472495999999978,67.126083000000051],[-62.504172999999923,67.119430999999963],[-62.538612000000001,67.113876000000062],[-62.569449999999961,67.105819999999994],[-62.580001999999979,67.102203000000088],[-62.596106999999961,67.092209000000025],[-62.631667999999934,67.069991999999957],[-62.638610999999912,67.063873000000115],[-62.64416499999993,67.057479999999998]],[[-107.40778399999999,67.083054000000004],[-107.49054699999999,67.071380999999974],[-107.50639299999995,67.072495000000117],[-107.51750199999987,67.074706999999989],[-107.52778599999999,67.078048999999965],[-107.54972800000002,67.08998100000008],[-107.56500199999999,67.103317000000061],[-107.57444799999996,67.112198000000149],[-107.58389299999988,67.121368000000018],[-107.59110999999996,67.130813999999987],[-107.62917299999992,67.18331900000004],[-107.63054699999992,67.188582999999994],[-107.62970699999988,67.194138000000066],[-107.62666300000001,67.200272000000098],[-107.62053700000001,67.206100000000049],[-107.60833700000001,67.20748900000001],[-107.59777799999995,67.204162999999994],[-107.58168000000001,67.196365000000128],[-107.57584400000002,67.192200000000128],[-107.56194299999987,67.183868000000132],[-107.51000999999991,67.15637200000009],[-107.47778299999993,67.140823000000012],[-107.46193700000003,67.133331000000055],[-107.44360399999999,67.126083000000051],[-107.412781,67.115814000000057],[-107.40055799999993,67.113037000000134],[-107.40778399999999,67.083054000000004]],[[-95.361663999999962,67.197754000000145],[-95.373610999999926,67.196365000000128],[-95.400557999999933,67.197204999999997],[-95.415282999999988,67.199707000000103],[-95.430831999999896,67.202773999999977],[-95.527495999999928,67.223037999999974],[-95.543334999999956,67.226379000000009],[-95.551392000000021,67.230270000000075],[-95.552779999999927,67.235260000000096],[-95.542220999999984,67.238585999999941],[-95.391112999999962,67.263046000000145],[-95.377776999999924,67.262772000000041],[-95.317229999999995,67.255554000000018],[-95.307220000000029,67.252486999999917],[-95.305832000000009,67.247757000000092],[-95.309432999999956,67.242203000000075],[-95.314712999999927,67.238585999999941],[-95.336669999999913,67.212769000000094],[-95.342772999999966,67.206940000000088],[-95.361663999999962,67.197754000000145]],[[-107.66278099999994,67.22026100000005],[-107.675003,67.218872000000033],[-107.73029300000002,67.289978000000076],[-107.73306300000002,67.300261999999918],[-107.73029300000002,67.306366000000139],[-107.72501399999993,67.31303400000013],[-107.71083099999998,67.319153000000142],[-107.67777999999993,67.311919999999986],[-107.66944899999993,67.30802900000009],[-107.66000399999996,67.298874000000012],[-107.64472999999998,67.269150000000025],[-107.64028899999994,67.253601000000117],[-107.63945000000001,67.242752000000053],[-107.64250199999992,67.236649000000114],[-107.64778100000001,67.229980000000012],[-107.65416699999997,67.224426000000051],[-107.66278099999994,67.22026100000005]],[[-63.366393999999957,67.287766000000033],[-63.396111000000019,67.269988999999953],[-63.417777999999998,67.26638800000012],[-63.456107999999972,67.264434999999992],[-63.507506999999976,67.269440000000031],[-63.541945999999939,67.272491000000059],[-63.55972300000002,67.273041000000092],[-63.578339000000028,67.273315000000025],[-63.62027699999993,67.269150000000025],[-63.763618000000008,67.272491000000059],[-63.81361400000003,67.279160000000104],[-63.829726999999878,67.28414900000007],[-63.819449999999961,67.289978000000076],[-63.796668999999952,67.299987999999985],[-63.688331999999889,67.341660000000047],[-63.666663999999969,67.345535000000041],[-63.646110999999962,67.348038000000031],[-63.605559999999969,67.352203000000031],[-63.585830999999871,67.353317000000004],[-63.485001000000011,67.341094999999996],[-63.369164000000012,67.302475000000072],[-63.357779999999991,67.293868999999972],[-63.366393999999957,67.287766000000033]],[[-107.91082799999998,67.310532000000023],[-107.93443300000001,67.306640999999956],[-107.94803599999995,67.308319000000097],[-108.08444199999997,67.381363000000079],[-108.076683,67.424698000000035],[-108.07389799999993,67.430817000000104],[-108.06861899999996,67.437485000000038],[-108.06111099999993,67.442200000000071],[-107.94748700000002,67.479980000000012],[-107.91776999999996,67.48942599999998],[-107.90306099999992,67.489151000000106],[-107.89472999999992,67.485535000000084],[-107.88722200000001,67.476089000000115],[-107.88276699999989,67.462494000000049],[-107.89806399999998,67.319717000000082],[-107.90110799999997,67.313598999999954],[-107.91082799999998,67.310532000000023]],[[-108.36833200000001,67.467209000000082],[-108.38194299999998,67.466660000000104],[-108.39806399999998,67.467758000000003],[-108.43388399999998,67.47665400000011],[-108.44444299999992,67.479980000000012],[-108.45278899999994,67.483871000000079],[-108.45889299999988,67.488037000000134],[-108.49249299999997,67.519714000000079],[-108.49638400000003,67.524429000000112],[-108.49582700000002,67.529984000000013],[-108.49137899999999,67.563034000000073],[-108.48137700000001,67.566375999999991],[-108.45777899999996,67.568054000000132],[-108.33583099999993,67.565810999999997],[-108.29750100000001,67.557205000000067],[-108.28582799999998,67.54304500000012],[-108.28443899999996,67.537766000000147],[-108.29527299999995,67.49693300000007],[-108.30166600000001,67.491089000000045],[-108.35722399999986,67.469437000000028],[-108.36833200000001,67.467209000000082]],[[-108.14111300000002,67.449997000000053],[-108.16944899999993,67.449707000000046],[-108.23665599999993,67.456650000000025],[-108.25167799999997,67.458878000000141],[-108.26222200000001,67.462204000000042],[-108.26806599999992,67.466660000000104],[-108.27194199999991,67.471374999999966],[-108.275284,67.481658999999979],[-108.22556299999997,67.565536000000122],[-108.21916199999987,67.571106000000043],[-108.20638999999994,67.570540999999992],[-108.19833399999999,67.566665999999998],[-108.17360699999995,67.552475000000015],[-108.1661069999999,67.54304500000012],[-108.13137799999993,67.481934000000024],[-108.12970699999994,67.47665400000011],[-108.12888299999997,67.465820000000065],[-108.12943999999999,67.460266000000047],[-108.13249200000001,67.454163000000108],[-108.14111300000002,67.449997000000053]],[[-108.32277699999997,67.589980999999966],[-108.32362399999994,67.586655000000121],[-108.33944700000001,67.587769000000094],[-108.42027300000001,67.599426000000051],[-108.48222399999992,67.631363000000022],[-108.48388699999992,67.636658000000068],[-108.475281,67.640548999999965],[-108.46389799999992,67.643051000000071],[-108.44803599999995,67.641937000000041],[-108.41832699999992,67.63638300000008],[-108.40334299999995,67.634155000000135],[-108.390289,67.631088000000034],[-108.379707,67.627762000000132],[-108.37138400000003,67.62414600000011],[-108.33416699999992,67.604156000000103],[-108.32277699999997,67.589980999999966]],[[-63.881942999999978,67.503326000000015],[-63.935555000000022,67.501938000000109],[-63.979163999999912,67.503052000000082],[-63.99500299999994,67.504166000000055],[-64.005279999999914,67.505263999999954],[-64.025283999999942,67.510544000000039],[-64.029723999999874,67.513885000000073],[-64.031677000000002,67.518600000000106],[-64.034728999999913,67.52887000000004],[-64.038054999999872,67.542755000000113],[-64.034438999999907,67.558594000000028],[-63.981110000000001,67.644150000000025],[-63.976944000000003,67.649428999999998],[-63.969993999999986,67.653595000000109],[-63.962775999999963,67.65554800000001],[-63.952498999999989,67.654434000000037],[-63.945549000000028,67.651382000000126],[-63.93721800000003,67.645263999999997],[-63.926392000000021,67.633330999999941],[-63.922226000000023,67.624985000000038],[-63.915549999999996,67.617203000000131],[-63.904442000000017,67.60803199999998],[-63.875556999999958,67.593048000000067],[-63.853888999999924,67.585541000000148],[-63.815276999999924,67.566665999999998],[-63.787223999999981,67.550537000000077],[-63.769996999999989,67.537766000000147],[-63.763618000000008,67.529709000000025],[-63.758056999999951,67.520538000000045],[-63.760833999999988,67.51527400000009],[-63.769447000000014,67.513321000000133],[-63.818335999999988,67.5086060000001],[-63.842223999999931,67.506377999999984],[-63.881942999999978,67.503326000000015]],[[-108.05999799999995,67.475266000000033],[-108.08972199999994,67.465546000000131],[-108.10333300000002,67.467209000000082],[-108.109444,67.471374999999966],[-108.11332700000003,67.476089000000115],[-108.14389,67.530547999999953],[-108.14277600000003,67.541655999999989],[-108.13362099999989,67.628036000000066],[-108.13221699999997,67.639434999999992],[-108.11776699999996,67.669982999999945],[-108.11361699999998,67.675261999999975],[-108.10109699999992,67.676651000000106],[-108.087219,67.674988000000042],[-108.01418299999995,67.662491000000045],[-108.00361599999997,67.65914900000007],[-107.99553700000001,67.655258000000003],[-107.98944099999994,67.651093000000003],[-107.98332199999999,67.644714000000135],[-107.92832900000002,67.561645999999996],[-107.92304999999993,67.551651000000049],[-107.92138699999992,67.54664600000001],[-107.922234,67.540817000000004],[-107.92749000000003,67.534424000000058],[-108.05999799999995,67.475266000000033]],[[-97.502791999999943,67.624420000000043],[-97.515563999999927,67.623871000000065],[-97.530288999999982,67.624985000000038],[-97.541381999999999,67.628860000000032],[-97.549437999999952,67.638045999999974],[-97.551391999999964,67.642761000000007],[-97.553054999999915,67.647766000000104],[-97.560546999999929,67.692748999999992],[-97.40055799999999,67.731658999999922],[-97.387786999999889,67.732208000000071],[-97.360001000000011,67.731658999999922],[-97.346389999999928,67.728317000000004],[-97.337783999999999,67.724152000000004],[-97.337783999999999,67.721100000000092],[-97.33277899999996,67.70637499999998],[-97.327224999999999,67.681655999999975],[-97.33277899999996,67.675812000000008],[-97.341675000000009,67.670532000000094],[-97.370543999999882,67.657760999999994],[-97.433608999999933,67.637497000000053],[-97.478881999999942,67.627472000000125],[-97.502791999999943,67.624420000000043]],[[-109.11221299999994,67.763321000000076],[-109.12581599999987,67.76249700000011],[-109.14111299999996,67.764998999999989],[-109.195267,67.775543000000027],[-109.20612299999993,67.778869999999984],[-109.20777900000002,67.783875000000023],[-109.16944899999999,67.797759999999926],[-109.15943899999996,67.801085999999998],[-109.135559,67.802764999999965],[-109.0933379999999,67.803863999999976],[-109.07584400000002,67.802199999999971],[-109.06054699999999,67.799713000000054],[-109.03916899999996,67.793320000000108],[-109.04083299999996,67.788315000000068],[-109.05277999999993,67.782486000000063],[-109.08000199999987,67.771103000000039],[-109.08972199999994,67.768051000000128],[-109.11221299999994,67.763321000000076]],[[-96.170546999999999,67.773041000000148],[-96.182769999999948,67.77165199999996],[-96.192490000000021,67.773605000000089],[-96.196380999999917,67.778046000000018],[-96.185821999999973,67.794708000000014],[-96.179992999999968,67.800262000000032],[-96.171386999999925,67.806366000000025],[-96.098617999999988,67.832213999999965],[-96.077224999999942,67.838882000000126],[-96.065552000000025,67.841095000000109],[-96.053328999999962,67.842758000000003],[-96.040282999999931,67.843323000000055],[-96.02806099999998,67.841659999999933],[-95.997498000000007,67.820830999999998],[-95.996384000000035,67.81581100000011],[-96.004729999999995,67.809708000000001],[-96.016113000000018,67.807479999999998],[-96.040832999999964,67.804428000000087],[-96.170546999999999,67.773041000000148]],[[-114.11501299999998,67.883880999999974],[-114.08222999999998,67.883041000000105],[-114.02223200000003,67.884155000000078],[-114.00583599999999,67.8836060000001],[-113.95500199999998,67.881362999999965],[-113.92138699999998,67.878036000000009],[-113.925003,67.874694999999974],[-113.94138299999986,67.875259000000142],[-113.98638899999997,67.874419999999986],[-113.99999999999994,67.873306000000014],[-114.01027699999992,67.871368000000075],[-114.05166600000001,67.870254999999986],[-114.08306900000002,67.87052900000009],[-114.195267,67.872482000000048],[-114.22972099999987,67.874146000000053],[-114.25250199999999,67.879974000000004],[-114.29638699999998,67.892212000000029],[-114.29695100000004,67.895263999999941],[-114.27555799999999,67.900542999999914],[-114.25110599999994,67.904433999999981],[-114.21972700000003,67.904160000000047],[-114.20612299999993,67.901932000000102],[-114.17388899999997,67.892487000000074],[-114.14862099999999,67.887206999999989],[-114.13305700000001,67.885269000000051],[-114.11501299999998,67.883880999999974]],[[-97.856383999999935,67.850539999999967],[-97.866942999999992,67.846939000000134],[-97.924164000000019,67.849991000000045],[-97.954453000000001,67.856368999999972],[-97.963333000000034,67.860260000000039],[-97.970001000000025,67.86442599999998],[-97.974166999999909,67.869141000000013],[-97.973327999999924,67.874146000000053],[-97.976944000000003,67.884155000000078],[-97.97444200000001,67.904984000000013],[-97.961120999999991,67.90554800000001],[-97.933318999999983,67.89888000000002],[-97.920272999999952,67.893600000000106],[-97.91361999999998,67.889160000000118],[-97.895554000000004,67.881362999999965],[-97.86221299999994,67.859985000000052],[-97.858046999999942,67.855255],[-97.856383999999935,67.850539999999967]],[[-108.64695699999999,67.86943100000002],[-108.66082799999998,67.868865999999969],[-108.66915899999998,67.872482000000048],[-108.64666699999998,67.887206999999989],[-108.58500700000002,67.915543000000071],[-108.56610099999989,67.922759999999982],[-108.54472399999997,67.928314],[-108.531113,67.928864000000033],[-108.38027999999997,67.922484999999995],[-108.37082699999996,67.919708000000071],[-108.36444099999994,67.915543000000071],[-108.36110699999989,67.905257999999947],[-108.35944399999994,67.899993999999992],[-108.41221599999994,67.885817999999972],[-108.64695699999999,67.86943100000002]],[[-113.390289,67.897766000000047],[-113.46389799999997,67.895828000000108],[-113.52694699999995,67.896378000000141],[-113.55972300000002,67.897491000000002],[-113.59416199999993,67.899428999999941],[-113.60333299999991,67.903046000000074],[-113.59750399999996,67.906647000000135],[-113.58528100000001,67.908600000000092],[-113.41972399999997,67.925262000000089],[-113.39111300000002,67.926651000000049],[-113.34750400000001,67.928040000000067],[-113.27390299999996,67.929977000000122],[-113.25723299999993,67.929428000000144],[-113.25029000000001,67.925262000000089],[-113.24694799999997,67.914429000000098],[-113.25361599999997,67.909424000000058],[-113.27778599999999,67.905822999999998],[-113.297234,67.904433999999981],[-113.33444199999991,67.901092999999946],[-113.390289,67.897766000000047]],[[-112.93055700000002,67.916655999999989],[-112.98361199999999,67.915268000000083],[-112.99999999999989,67.916092000000049],[-113.06027199999994,67.915268000000083],[-113.13110399999999,67.911652000000004],[-113.14750700000002,67.912200999999982],[-113.14750700000002,67.915817000000004],[-113.13806199999999,67.919144000000131],[-112.94304699999998,67.931091000000094],[-112.89639299999999,67.93081699999999],[-112.88722199999995,67.927200000000028],[-112.890289,67.921921000000054],[-112.90110800000002,67.919144000000131],[-112.93055700000002,67.916655999999989]],[[-111.07167099999998,67.847488000000055],[-111.08666999999997,67.847488000000055],[-111.0911099999999,67.852203000000088],[-111.08693700000003,67.858871000000079],[-111.07028200000002,67.867203000000075],[-110.84889199999998,67.954711999999972],[-110.83917200000002,67.958037999999988],[-110.82668299999995,67.959717000000012],[-110.81388900000002,67.959152000000017],[-110.80722000000003,67.954987000000017],[-110.80943300000001,67.948867999999948],[-110.81696299999999,67.940262000000018],[-110.86221299999994,67.894989000000123],[-110.86945300000002,67.889984000000084],[-110.88027999999991,67.887496999999996],[-111.05943300000001,67.849152000000061],[-111.07167099999998,67.847488000000055]],[[-114.21916199999998,67.945250999999985],[-114.29583699999995,67.944702000000063],[-114.30999799999995,67.945816000000036],[-114.31722999999988,67.949707000000103],[-114.31082200000003,67.954711999999972],[-114.30027799999988,67.957489000000066],[-114.25446299999987,67.963318000000072],[-114.17138699999992,67.969147000000078],[-114.13999899999999,67.96887200000009],[-114.12416099999996,67.967209000000139],[-114.12110899999993,67.961929000000055],[-114.12332199999992,67.958037999999988],[-114.16332999999986,67.949142000000052],[-114.20388800000001,67.945816000000036],[-114.21916199999998,67.945250999999985]],[[-108.13806199999999,67.872482000000048],[-108.15167199999996,67.871918000000107],[-108.24553699999996,67.878036000000009],[-108.25418100000002,67.881927000000076],[-108.25556899999992,67.887206999999989],[-108.23916599999995,67.920258000000103],[-108.236107,67.926376000000062],[-108.23111,67.933044000000052],[-108.22471599999994,67.938873000000058],[-108.198036,67.950821000000076],[-108.14723200000003,67.96665999999999],[-108.12581599999999,67.972214000000008],[-108.114441,67.974426000000051],[-108.10056299999997,67.974991000000102],[-108.08416699999998,67.97387700000013],[-108.07140399999992,67.971100000000035],[-108.06054699999999,67.967758000000117],[-108.05444299999988,67.963318000000072],[-108.05055199999998,67.958603000000039],[-108.048607,67.949142000000052],[-108.05139200000002,67.926651000000049],[-108.06331599999993,67.902206000000035],[-108.06833599999999,67.895538000000045],[-108.07501200000002,67.889709000000039],[-108.08249699999999,67.884995000000117],[-108.09137699999985,67.880814000000044],[-108.11277799999999,67.87553400000013],[-108.13806199999999,67.872482000000048]],[[-113.72000099999997,67.973312000000078],[-113.72778299999993,67.969147000000078],[-113.73998999999998,67.967209000000139],[-113.75361599999997,67.966094999999996],[-113.79750099999995,67.964705999999978],[-113.99305699999996,67.961104999999918],[-113.99109599999997,67.964995999999985],[-113.98249800000002,67.967209000000139],[-113.97250400000001,67.968597000000045],[-113.91639700000002,67.972214000000008],[-113.88639799999999,67.972762999999986],[-113.83833299999998,67.971924000000001],[-113.81111099999993,67.97387700000013],[-113.78527800000001,67.976929000000041],[-113.77223199999997,67.980270000000075],[-113.74082899999996,67.979980000000069],[-113.72501399999999,67.978043000000014],[-113.72000099999997,67.973312000000078]],[[-109.195267,67.989974999999959],[-109.04998799999993,67.958328000000051],[-109.03028899999993,67.966933999999924],[-108.99082900000002,67.976379000000009],[-108.97693599999997,67.976929000000041],[-108.95111099999991,67.973312000000078],[-108.89723199999997,67.956940000000088],[-108.88445300000001,67.94859300000013],[-108.86554699999999,67.905822999999998],[-108.86609599999991,67.90026899999998],[-108.87943999999999,67.875259000000142],[-108.88806199999999,67.871093999999971],[-108.90055799999999,67.869705000000124],[-108.916946,67.87052900000009],[-109.04888900000003,67.90387000000004],[-109.10305799999998,67.920258000000103],[-109.135559,67.930267000000129],[-109.16972399999992,67.945250999999985],[-109.18888899999996,67.957764000000054],[-109.195267,67.962204000000099],[-109.19888299999997,67.972488000000112],[-109.198036,67.983871000000136],[-109.195267,67.989974999999959]],[[-110.33444199999997,68.011658000000125],[-110.39362299999993,68.011108000000092],[-110.41000400000001,68.011932000000058],[-110.42111199999994,68.014998999999932],[-110.42083700000001,68.020827999999995],[-110.41055299999999,68.024704000000042],[-110.32640099999992,68.047760000000096],[-110.317497,68.049712999999997],[-110.31082199999992,68.045532000000094],[-110.30888400000003,68.037491000000045],[-110.316101,68.019150000000025],[-110.32333399999999,68.014160000000004],[-110.33444199999997,68.011658000000125]],[[-98.951401000000033,67.979980000000069],[-98.963622999999927,67.978317000000118],[-98.979445999999939,67.980270000000075],[-99.005004999999983,67.987198000000092],[-99.014450000000011,67.991088999999988],[-99.028335999999911,67.999420000000043],[-99.078612999999905,68.045592999999997],[-99.051392000000021,68.055817000000047],[-98.990554999999858,68.078323000000069],[-98.975554999999986,68.077209000000039],[-98.968886999999995,68.073044000000039],[-98.964721999999995,68.064987000000087],[-98.934432999999956,67.99664300000012],[-98.934998000000007,67.991363999999976],[-98.942763999999954,67.985259999999926],[-98.951401000000033,67.979980000000069]],[[-65.397232000000031,68.039978000000133],[-65.409163999999976,68.039428999999984],[-65.500290000000007,68.046097000000145],[-65.510833999999988,68.04942299999999],[-65.516662999999994,68.05442800000003],[-65.519729999999981,68.067490000000078],[-65.518065999999976,68.072220000000073],[-65.505279999999971,68.076385000000073],[-65.43582200000003,68.088042999999971],[-65.394454999999994,68.08998100000008],[-65.386397999999929,68.088318000000129],[-65.390288999999996,68.078323000000069],[-65.383057000000008,68.053314000000057],[-65.383330999999941,68.048599000000024],[-65.387222000000008,68.043320000000051],[-65.397232000000031,68.039978000000133]],[[-108.50611900000001,68.034714000000122],[-108.51862299999993,68.033324999999934],[-108.53388999999999,68.035538000000088],[-108.54028299999993,68.039978000000133],[-108.53751399999999,68.046097000000145],[-108.45472699999999,68.090546000000074],[-108.44748700000002,68.087769000000037],[-108.44583099999994,68.082489000000123],[-108.44611399999991,68.074706999999989],[-108.45140100000003,68.068054000000018],[-108.46665999999999,68.058319000000097],[-108.49722299999996,68.038879000000122],[-108.50611900000001,68.034714000000122]],[[-109.32167099999998,67.981094000000041],[-109.33556399999992,67.980270000000075],[-109.35193600000002,67.981369000000086],[-109.37805199999991,67.986923000000047],[-109.432503,68.003052000000025],[-109.49804699999993,68.022766000000104],[-109.50666799999993,68.026382000000126],[-109.53888699999999,68.047485000000052],[-109.54305999999991,68.052200000000084],[-109.50473,68.088882000000069],[-109.49749799999989,68.093597000000102],[-109.484734,68.095260999999937],[-109.44722000000002,68.092209000000025],[-109.41055299999999,68.071930000000066],[-109.32167099999998,68.039978000000133],[-109.31527699999987,68.035812000000021],[-109.3116609999999,68.025543000000027],[-109.31111099999987,67.997756999999922],[-109.3116609999999,67.991928000000087],[-109.31416299999995,67.985809000000074],[-109.32167099999998,67.981094000000041]],[[-108.36054999999999,68.049712999999997],[-108.37444299999993,68.048874000000069],[-108.38751200000002,68.05192599999998],[-108.40638699999994,68.064697000000081],[-108.40805099999994,68.069716999999969],[-108.40167200000002,68.075546000000145],[-108.38221699999991,68.092758000000003],[-108.37444299999993,68.095535000000041],[-108.36193800000001,68.096939000000077],[-108.32000699999992,68.098877000000016],[-108.306107,68.099425999999937],[-108.29444899999999,68.097214000000065],[-108.297234,68.091095000000053],[-108.29778299999998,68.085541000000035],[-108.30082700000003,68.079437000000041],[-108.30860899999999,68.074706999999989],[-108.34916699999997,68.05192599999998],[-108.36054999999999,68.049712999999997]],[[-110.21362299999998,68.038039999999967],[-110.23998999999998,68.035812000000021],[-110.25639299999995,68.036652000000061],[-110.25862100000001,68.041931000000034],[-110.25,68.046097000000145],[-110.22165699999994,68.056641000000013],[-110.18195300000002,68.069716999999969],[-109.93276999999989,68.131927000000076],[-109.92166099999997,68.134155000000021],[-109.89639299999999,68.13749700000011],[-109.88583399999993,68.136383000000137],[-109.87721299999993,68.12692300000009],[-109.87748699999997,68.121368000000018],[-109.882767,68.114151000000106],[-109.88527699999997,68.108032000000037],[-109.88999899999993,68.101379000000065],[-109.89584399999995,68.095535000000041],[-109.90334300000001,68.090546000000074],[-109.92111199999994,68.081664999999987],[-109.93222000000003,68.079163000000108],[-110.08721899999995,68.053314000000057],[-110.21362299999998,68.038039999999967]],[[-112.78056299999997,68.131088000000091],[-112.79276999999996,68.129424999999969],[-112.88999899999999,68.137207000000103],[-112.9058379999999,68.139160000000061],[-112.91722099999998,68.142211999999972],[-112.922234,68.146652000000017],[-112.91832699999992,68.153594999999996],[-112.91306299999997,68.159424000000001],[-112.90638699999994,68.164429000000041],[-112.89835399999998,68.168869000000086],[-112.88861099999997,68.172211000000004],[-112.87638900000002,68.173874000000126],[-112.86110699999995,68.174149000000114],[-112.76722699999993,68.166656000000103],[-112.75167799999997,68.164703000000145],[-112.74973299999994,68.158034999999984],[-112.74472000000003,68.153594999999996],[-112.74638399999998,68.147490999999945],[-112.75334199999998,68.142211999999972],[-112.76139799999993,68.138046000000088],[-112.78056299999997,68.131088000000091]],[[-74.21556099999998,68.117751999999939],[-74.164718999999991,68.065536000000066],[-73.974716000000001,68.041092000000106],[-73.736388999999974,68.013611000000026],[-73.655471999999975,68.007705999999985],[-73.643340999999907,68.012207000000046],[-73.619995000000017,68.014998999999932],[-73.608886999999868,68.015548999999965],[-73.578063999999983,68.014434999999992],[-73.567504999999983,68.013046000000031],[-73.543883999999935,68.008330999999998],[-73.439986999999974,67.985535000000141],[-73.428329000000019,67.982208000000014],[-73.418883999999991,67.97886699999998],[-73.411666999999966,67.974991000000102],[-73.409728999999913,67.970534999999984],[-73.348617999999988,67.828048999999965],[-73.361664000000019,67.810257000000092],[-73.377776999999867,67.793869000000029],[-73.383330999999941,67.789429000000041],[-73.404175000000009,67.774994000000106],[-73.411391999999921,67.770537999999988],[-73.418609999999944,67.766388000000006],[-73.429442999999992,67.762771999999927],[-73.449431999999945,67.76249700000011],[-73.664168999999958,67.774704000000099],[-73.932219999999916,67.78637700000013],[-73.993057000000022,67.788040000000024],[-74.038329999999917,67.788589000000002],[-74.083892999999875,67.788315000000068],[-74.113327000000027,67.787201000000096],[-74.168059999999855,67.78276100000005],[-74.228881999999942,67.775268999999923],[-74.251952999999901,67.772491000000116],[-74.263061999999991,67.77165199999996],[-74.305832000000009,67.768600000000049],[-74.32028200000002,67.768875000000094],[-74.388610999999969,67.775268999999923],[-74.400833000000034,67.776657000000057],[-74.481109999999944,67.789429000000041],[-74.535278000000005,67.804703000000131],[-74.564162999999951,67.814423000000033],[-74.581680000000006,67.821381000000031],[-74.59722899999997,67.828598000000113],[-74.640838999999971,67.852203000000088],[-74.659728999999913,67.864700000000084],[-74.684433000000013,67.881927000000076],[-74.758895999999993,67.950271999999984],[-74.772232000000031,67.963318000000072],[-74.775557999999876,67.969147000000078],[-74.777221999999995,67.97387700000013],[-74.778060999999923,68.006104000000107],[-74.777495999999985,68.017761000000064],[-74.773055999999997,68.029984000000127],[-74.760009999999966,68.05442800000003],[-74.754181000000017,68.06053200000008],[-74.748610999999926,68.065536000000066],[-74.731948999999872,68.070831000000112],[-74.718613000000005,68.072220000000073],[-74.629990000000021,68.078598000000056],[-74.615279999999984,68.078323000000069],[-74.436661000000015,68.097487999999998],[-74.363892000000021,68.166381999999999],[-74.355834999999956,68.172759999999982],[-74.346953999999926,68.176376000000005],[-74.339447000000007,68.177199999999971],[-74.322509999999909,68.173035000000141],[-74.268889999999999,68.154984000000013],[-74.239440999999999,68.144989000000066],[-74.231673999999941,68.141936999999984],[-74.216399999999965,68.134155000000021],[-74.212509000000011,68.130538999999942],[-74.210830999999985,68.124984999999981],[-74.21556099999998,68.117751999999939]],[[-65.642226999999991,68.159424000000001],[-65.56639100000001,68.152205999999978],[-65.512787000000003,68.15277100000003],[-65.502791999999999,68.151093000000117],[-65.497771999999941,68.14776599999999],[-65.494445999999925,68.142487000000017],[-65.495543999999995,68.128310999999997],[-65.500838999999985,68.121918000000051],[-65.516953000000001,68.113037000000077],[-65.525283999999999,68.109711000000061],[-65.675551999999982,68.096100000000092],[-65.686935000000005,68.095825000000104],[-65.696105999999929,68.098877000000016],[-65.709731999999974,68.106094000000098],[-65.713897999999972,68.112762000000089],[-65.721938999999963,68.164429000000041],[-65.716949,68.175812000000064],[-65.711670000000026,68.180267000000072],[-65.701400999999976,68.181366000000082],[-65.67582699999997,68.179977000000065],[-65.656661999999926,68.175262000000032],[-65.648345999999947,68.168594000000041],[-65.646666999999923,68.163605000000075],[-65.642226999999991,68.159424000000001]],[[-107.47361799999993,68.144714000000079],[-107.48500100000001,68.142487000000017],[-107.50140399999998,68.143600000000049],[-107.55499299999991,68.160537999999974],[-107.55416899999994,68.166091999999992],[-107.54499800000002,68.169983000000059],[-107.5038909999999,68.182480000000055],[-107.49472000000003,68.18664600000011],[-107.48444399999994,68.189697000000137],[-107.46806300000003,68.188582999999994],[-107.46193700000003,68.184142999999949],[-107.46028100000001,68.179153000000099],[-107.45935800000001,68.175629000000015],[-107.45667299999997,68.174423000000047],[-107.45527600000003,68.169144000000074],[-107.45584099999996,68.163605000000075],[-107.46694899999994,68.15026899999998],[-107.47361799999993,68.144714000000079]],[[-104.453056,68.102203000000031],[-104.48277299999995,68.079712000000029],[-104.497772,68.080275999999969],[-104.50334199999992,68.084717000000069],[-104.55304699999999,68.140274000000034],[-104.55610699999994,68.145264000000111],[-104.55695299999996,68.15026899999998],[-104.55387899999999,68.161651999999947],[-104.54666099999997,68.164992999999981],[-104.42639200000002,68.199997000000053],[-104.41555799999998,68.202773999999977],[-104.391953,68.206940000000088],[-104.37721299999998,68.199707000000046],[-104.36860699999994,68.190536000000122],[-104.370003,68.184982000000105],[-104.37416100000002,68.178863999999976],[-104.40499899999992,68.139435000000049],[-104.453056,68.102203000000031]],[[-107.38890100000003,68.172211000000004],[-107.40278599999999,68.171645999999953],[-107.41111799999999,68.17553700000002],[-107.44167299999992,68.196929999999952],[-107.445267,68.201660000000004],[-107.43998699999997,68.208327999999995],[-107.42944299999999,68.211380000000077],[-107.41443599999997,68.211105000000089],[-107.30972300000002,68.209152000000131],[-107.295547,68.20748900000001],[-107.29167200000001,68.202773999999977],[-107.31054699999999,68.196091000000024],[-107.38890100000003,68.172211000000004]],[[-111.83332799999999,68.181931000000077],[-111.84722899999997,68.180817000000104],[-111.860817,68.183594000000028],[-111.86554699999999,68.188034000000016],[-111.83222999999998,68.204987000000131],[-111.81416300000001,68.212494000000049],[-111.79194599999994,68.21775800000006],[-111.77944899999994,68.219437000000028],[-111.764183,68.219437000000028],[-111.75499699999995,68.215820000000122],[-111.75945299999995,68.209152000000131],[-111.76666299999994,68.206375000000037],[-111.79194599999994,68.193588000000034],[-111.81111099999998,68.186920000000043],[-111.83332799999999,68.181931000000077]],[[-98.650283999999999,68.180267000000072],[-98.674438000000009,68.173874000000126],[-98.704453000000001,68.176085999999998],[-98.702788999999996,68.191650000000095],[-98.693328999999949,68.213608000000022],[-98.684433000000013,68.218872000000033],[-98.672226000000023,68.220534999999927],[-98.657226999999978,68.219437000000028],[-98.643065999999976,68.216095000000109],[-98.638610999999969,68.211655000000121],[-98.636672999999917,68.206650000000025],[-98.643065999999976,68.201660000000004],[-98.650283999999999,68.180267000000072]],[[-74.062774999999988,68.151657000000057],[-74.073623999999938,68.150818000000072],[-74.138335999999924,68.170258000000047],[-74.169723999999974,68.195525999999973],[-74.176392000000021,68.204162999999994],[-74.171386999999982,68.208602999999982],[-74.15583799999996,68.217484000000127],[-74.138061999999991,68.225815000000011],[-74.117217999999923,68.232207999999957],[-74.105835000000013,68.235260000000096],[-74.097228999999913,68.236649000000057],[-74.086944999999957,68.235260000000096],[-74.079726999999991,68.232483000000002],[-74.075286999999946,68.227767999999969],[-74.073059000000001,68.223877000000073],[-74.063323999999909,68.203049000000021],[-74.055557000000022,68.172485000000108],[-74.054442999999992,68.159988000000112],[-74.057219999999973,68.154984000000013],[-74.062774999999988,68.151657000000057]],[[-108.59028599999999,68.214431999999988],[-108.63944999999995,68.151382000000012],[-108.6499859999999,68.152481000000023],[-108.65862299999998,68.156097000000045],[-108.67748999999998,68.168869000000086],[-108.67360699999995,68.186371000000122],[-108.67194399999994,68.191085999999984],[-108.63500999999997,68.228592000000106],[-108.62748699999992,68.233597000000145],[-108.60555999999997,68.23692299999999],[-108.56610099999989,68.240540000000124],[-108.55972300000002,68.236099000000024],[-108.59028599999999,68.214431999999988]],[[-109.78388999999999,68.13749700000011],[-109.81166099999996,68.136107999999979],[-109.828056,68.136932000000115],[-109.84137699999997,68.139708999999982],[-109.84999099999999,68.143325999999945],[-109.85665899999998,68.14776599999999],[-109.85417200000001,68.153869999999984],[-109.845551,68.158034999999984],[-109.77194199999997,68.188309000000061],[-109.676941,68.224152000000061],[-109.64417300000002,68.232207999999957],[-109.58889799999997,68.245254999999986],[-109.57749899999988,68.247482000000048],[-109.56806899999998,68.247208000000114],[-109.57055699999995,68.241089000000102],[-109.57695000000001,68.232483000000002],[-109.58194700000001,68.225815000000011],[-109.59416199999993,68.214431999999988],[-109.67388899999997,68.173309000000074],[-109.7625119999999,68.143325999999945],[-109.77250699999991,68.139984000000027],[-109.78388999999999,68.13749700000011]],[[-66.31361400000003,68.14776599999999],[-66.326950000000011,68.147490999999945],[-66.354995999999971,68.153319999999951],[-66.381103999999937,68.158600000000035],[-66.396392999999932,68.161102000000085],[-66.468612999999948,68.171097000000032],[-66.527785999999878,68.177765000000022],[-66.570847000000015,68.181366000000082],[-66.601944000000003,68.182480000000055],[-66.607223999999974,68.217209000000082],[-66.5,68.239700000000084],[-66.299437999999952,68.254440000000045],[-66.221938999999963,68.241089000000102],[-66.256667999999991,68.163605000000075],[-66.269729999999925,68.158600000000035],[-66.301391999999964,68.149154999999951],[-66.31361400000003,68.14776599999999]],[[-96.384170999999924,68.200821000000019],[-96.422775000000001,68.198318000000086],[-96.436935000000005,68.198593000000074],[-96.448607999999922,68.20248400000014],[-96.454726999999934,68.206650000000025],[-96.462783999999999,68.216095000000109],[-96.456664999999987,68.221649000000127],[-96.375,68.254715000000033],[-96.364166000000012,68.258041000000105],[-96.350829999999974,68.258605999999929],[-96.344451999999933,68.254166000000112],[-96.317504999999926,68.231934000000024],[-96.324448000000018,68.221099999999979],[-96.338897999999915,68.212204000000042],[-96.348891999999864,68.208037999999988],[-96.360001000000011,68.204712000000086],[-96.384170999999924,68.200821000000019]],[[-78.571670999999981,68.200272000000098],[-78.655563000000029,68.187759000000028],[-78.662216000000001,68.189147999999989],[-78.660277999999892,68.196365000000128],[-78.643065999999976,68.218323000000055],[-78.607223999999917,68.248322000000087],[-78.593886999999881,68.255554000000018],[-78.581115999999952,68.258880999999974],[-78.550277999999992,68.263610999999969],[-78.548049999999989,68.263046000000145],[-78.545273000000009,68.25],[-78.525283999999999,68.233597000000145],[-78.517226999999934,68.223312000000021],[-78.522506999999905,68.21775800000006],[-78.532226999999978,68.213043000000027],[-78.558883999999978,68.203049000000021],[-78.571670999999981,68.200272000000098]],[[-86.426391999999964,68.069152999999972],[-86.397507000000019,68.021652000000131],[-86.378325999999959,67.993317000000104],[-86.376662999999951,67.988585999999998],[-86.368606999999997,67.954711999999972],[-86.370833999999945,67.939972000000012],[-86.396117999999944,67.859711000000118],[-86.403609999999958,67.848877000000073],[-86.465012000000002,67.786652000000117],[-86.47084000000001,67.78137200000009],[-86.489989999999977,67.770537999999988],[-86.571945000000028,67.728867000000037],[-86.583617999999944,67.725266000000147],[-86.596663999999976,67.72554000000008],[-86.676665999999955,67.731658999999922],[-86.690552000000025,67.733871000000022],[-86.858336999999949,67.79693599999996],[-86.879439999999931,67.810257000000092],[-86.883895999999936,67.814986999999974],[-86.910278000000005,67.8477630000001],[-86.918610000000001,67.86192299999999],[-86.926940999999999,67.876373000000115],[-86.945830999999941,67.909424000000058],[-86.951949999999897,67.923874000000012],[-86.948607999999979,67.928864000000033],[-86.940551999999968,67.934418000000051],[-86.926101999999958,67.931366000000082],[-86.913329999999974,67.931931000000134],[-86.854445999999882,67.954163000000051],[-86.84333799999996,67.958603000000039],[-86.838897999999972,67.986374000000126],[-86.836945000000014,68.001099000000067],[-86.840835999999911,68.010818000000029],[-86.847503999999958,68.020263999999997],[-86.851944000000003,68.024994000000049],[-86.863892000000021,68.029159999999933],[-86.878325999999959,68.032210999999961],[-86.904175000000009,68.030548000000067],[-86.932495000000017,68.035812000000021],[-86.942214999999976,68.040267999999969],[-86.986664000000019,68.061646000000053],[-86.992766999999901,68.066666000000112],[-86.991942999999935,68.071655000000078],[-86.98832699999997,68.081664999999987],[-86.978881999999999,68.096939000000077],[-86.906386999999938,68.180267000000072],[-86.89805599999994,68.185531999999967],[-86.742492999999911,68.282760999999937],[-86.711944999999957,68.299149],[-86.700561999999934,68.303589000000045],[-86.675003000000004,68.306091000000094],[-86.646666999999923,68.301651000000106],[-86.602782999999988,68.291367000000037],[-86.538605000000018,68.270538000000101],[-86.487503000000004,68.24859600000002],[-86.458617999999888,68.235535000000084],[-86.411117999999988,68.208878000000027],[-86.406661999999983,68.204162999999994],[-86.402785999999992,68.194427000000019],[-86.434998000000007,68.162491000000102],[-86.433884000000035,68.098601999999971],[-86.432495000000017,68.088882000000069],[-86.426391999999964,68.069152999999972]],[[-111.71028100000001,68.220534999999927],[-111.72556299999997,68.220260999999994],[-111.74221799999998,68.221099999999979],[-111.75583599999993,68.223602000000028],[-111.76500699999997,68.227203000000088],[-111.77194199999991,68.231369000000029],[-111.77639799999992,68.236099000000024],[-111.77887699999997,68.241089000000102],[-111.77916699999997,68.246933000000126],[-111.77722199999999,68.253052000000139],[-111.77166699999998,68.258880999999974],[-111.71501199999994,68.296936000000073],[-111.70388799999989,68.299422999999933],[-111.52887699999991,68.310806000000127],[-111.51363400000002,68.311096000000134],[-111.49944299999993,68.296936000000073],[-111.50446299999999,68.292480000000126],[-111.52861000000001,68.290543000000071],[-111.55777,68.289429000000098],[-111.58277899999996,68.286101999999971],[-111.60526999999996,68.281096999999932],[-111.61361699999998,68.276657000000114],[-111.62777699999998,68.266663000000108],[-111.633331,68.260818000000029],[-111.63305699999995,68.249709999999993],[-111.63054699999992,68.24443100000002],[-111.63249200000001,68.238312000000008],[-111.63945000000001,68.23332199999993],[-111.64943700000003,68.229980000000012],[-111.67166099999997,68.224701000000039],[-111.696663,68.221375000000023],[-111.71028100000001,68.220534999999927]],[[-75.582779000000016,68.300262000000089],[-75.5625,68.294433999999967],[-75.453888000000006,68.266663000000108],[-75.42971799999998,68.262206999999989],[-75.386672999999917,68.258041000000105],[-75.263061999999934,68.247208000000114],[-75.228881999999942,68.24552900000009],[-75.199158000000011,68.24552900000009],[-75.183059999999955,68.243866000000025],[-75.158614999999941,68.239975000000129],[-75.134734999999864,68.234711000000118],[-75.121933000000013,68.229156000000046],[-75.030563000000029,68.167205999999965],[-75.011948000000018,68.14776599999999],[-75.003066999999987,68.132202000000063],[-75,68.119690000000105],[-75.002227999999945,68.114426000000094],[-75.049163999999962,68.041367000000093],[-75.052490000000034,68.036652000000061],[-75.063323999999966,68.027206000000092],[-75.091675000000009,68.009995000000004],[-75.148055999999997,67.974426000000051],[-75.153609999999901,67.969437000000084],[-75.164443999999946,67.954163000000051],[-75.164443999999946,67.949417000000096],[-75.162780999999939,67.943863000000079],[-75.113891999999964,67.86192299999999],[-75.104445999999996,67.847488000000055],[-75.064162999999951,67.782486000000063],[-75.025008999999955,67.625534000000016],[-75.025283999999999,67.619431000000077],[-75.068892999999889,67.542755000000113],[-75.071944999999971,67.538879000000065],[-75.133620999999948,67.481658999999979],[-75.161117999999988,67.463882000000126],[-75.198607999999979,67.443314000000044],[-75.388061999999934,67.354705999999965],[-75.395843999999954,67.353043000000071],[-75.553603999999893,67.333603000000096],[-75.662506000000008,67.305251999999996],[-75.84445199999999,67.264159999999947],[-75.946105999999929,67.251937999999996],[-76.116652999999928,67.255554000000018],[-76.226943999999946,67.260818000000029],[-76.30860899999999,67.253601000000117],[-76.490829000000019,67.236374000000069],[-76.66361999999998,67.219986000000006],[-76.693053999999961,67.221099999999979],[-76.978057999999976,67.245529000000147],[-77.026672000000019,67.254990000000078],[-77.044723999999917,67.260544000000095],[-77.057219999999916,67.267212000000086],[-77.074448000000018,67.280823000000055],[-77.101395000000025,67.30581699999999],[-77.246947999999975,67.451934999999992],[-77.247222999999963,67.457214000000135],[-77.236937999999952,67.495254999999986],[-77.224441999999954,67.535538000000031],[-77.225829999999974,67.543869000000086],[-77.230285999999978,67.554428000000144],[-77.242217999999923,67.569153000000085],[-77.275008999999955,67.614699999999971],[-77.312209999999993,67.676376000000118],[-77.320847000000015,67.691649999999981],[-77.322509999999909,67.698029000000076],[-77.319167999999991,67.71138000000002],[-77.258346999999958,67.816375999999934],[-77.251953000000015,67.82638500000013],[-77.243332000000009,67.837494000000049],[-77.233062999999959,67.848877000000073],[-77.228333000000021,67.853867000000093],[-77.220551,67.86192299999999],[-77.203888000000006,67.876373000000115],[-76.865554999999972,68.15776100000005],[-76.858886999999925,68.161651999999947],[-76.726105000000018,68.238876000000118],[-76.702498999999932,68.24859600000002],[-76.673888999999974,68.259155000000078],[-76.635009999999909,68.271927000000062],[-76.606948999999929,68.279434000000037],[-76.28195199999999,68.332764000000111],[-76.267226999999934,68.332764000000111],[-76.258346999999901,68.3316650000001],[-76.251953000000015,68.328598],[-76.25,68.323044000000039],[-76.25306699999993,68.313599000000124],[-76.249161000000015,68.307480000000112],[-76.235824999999977,68.303314],[-76.221663999999976,68.301376000000062],[-76.116104000000007,68.296646000000067],[-76.083327999999995,68.295257999999933],[-76.060546999999985,68.296936000000073],[-76.052779999999984,68.298598999999967],[-76.032227000000034,68.304703000000018],[-76.000564999999995,68.316939999999988],[-75.985001000000011,68.324432000000115],[-75.966399999999965,68.331100000000106],[-75.954178000000013,68.333878000000084],[-75.930831999999953,68.336929000000112],[-75.917495999999915,68.338318000000072],[-75.887511999999958,68.339705999999978],[-75.818068999999866,68.336655000000007],[-75.756667999999991,68.332489000000066],[-75.726105000000018,68.33027600000014],[-75.695540999999878,68.326935000000105],[-75.667496000000028,68.322768999999994],[-75.62249799999995,68.313034000000073],[-75.602492999999868,68.307480000000112],[-75.582779000000016,68.300262000000089]],[[-79.020553999999947,68.169144000000074],[-79.032500999999911,68.165268000000026],[-79.075012000000015,68.168320000000108],[-79.089721999999938,68.170258000000047],[-79.101669000000015,68.175262000000032],[-79.171386999999868,68.205261000000064],[-79.176940999999943,68.209427000000119],[-79.179992999999968,68.215545999999961],[-79.188323999999966,68.247208000000114],[-79.191100999999946,68.319442999999978],[-79.151671999999962,68.346649000000014],[-79.141952999999944,68.34887700000013],[-79.125548999999978,68.350266000000147],[-79.099441999999954,68.348602000000142],[-79.044997999999964,68.343322999999941],[-78.929992999999911,68.338882000000012],[-78.826110999999969,68.295532000000037],[-78.809998000000007,68.287490999999989],[-78.804717999999923,68.283051],[-78.801666000000012,68.279160000000104],[-78.80221599999993,68.272491000000002],[-78.805266999999958,68.266663000000108],[-78.815551999999911,68.255554000000018],[-78.823333999999932,68.250548999999978],[-78.841948999999886,68.240540000000124],[-79.020553999999947,68.169144000000074]],[[-100.07472200000001,68.349716000000114],[-100.08640299999996,68.296097000000088],[-100.09166700000003,68.284987999999998],[-100.09944200000001,68.278595000000053],[-100.11221299999994,68.276382000000069],[-100.12832600000002,68.278320000000065],[-100.14028899999994,68.281661999999983],[-100.16443600000002,68.288589000000059],[-100.20056199999999,68.299149],[-100.22693600000002,68.316086000000041],[-100.23082699999992,68.319717000000082],[-100.21556099999998,68.318603999999993],[-100.20249899999988,68.319717000000082],[-100.19110099999995,68.322220000000073],[-100.1183319999999,68.347214000000008],[-100.11000100000001,68.352478000000019],[-100.08583099999998,68.368866000000082],[-100.07668299999989,68.359711000000004],[-100.07444799999996,68.354980000000069],[-100.07472200000001,68.349716000000114]],[[-82.05999799999995,68.306091000000094],[-82.072509999999966,68.303040000000067],[-82.271117999999944,68.338593000000117],[-82.312774999999988,68.349151999999947],[-82.326675000000023,68.353591999999992],[-82.33805799999999,68.358322000000044],[-82.344451999999876,68.362762000000032],[-82.345550999999944,68.36775200000011],[-82.333327999999995,68.371917999999994],[-82.230559999999969,68.385543999999982],[-82.216949,68.384155000000135],[-82.135558999999944,68.372756999999979],[-82.012512000000015,68.350815000000068],[-82.001113999999973,68.34637500000008],[-81.99722300000002,68.34137000000004],[-82.010009999999909,68.332764000000111],[-82.05999799999995,68.306091000000094]],[[-111.11444099999994,68.405823000000055],[-111.12832600000002,68.404984000000127],[-111.13751199999996,68.408599999999979],[-111.141953,68.413315000000011],[-111.14890300000002,68.428863999999919],[-111.14917000000003,68.439972000000125],[-111.141953,68.444976999999994],[-111.13054699999992,68.447479000000044],[-111.11527999999998,68.447754000000089],[-111.09861799999999,68.446930000000123],[-111.08249699999993,68.44470200000012],[-111.07611099999991,68.436919999999986],[-111.08416699999998,68.424988000000042],[-111.10582699999998,68.409988000000055],[-111.11444099999994,68.405823000000055]],[[-99.045273000000009,68.423874000000069],[-99.054992999999911,68.408324999999991],[-99.147781000000009,68.442200000000071],[-99.154723999999987,68.446365000000071],[-99.159163999999919,68.451096000000007],[-99.149733999999853,68.455261000000007],[-99.12110899999999,68.454987000000074],[-99.105269999999962,68.453048999999965],[-99.087219000000005,68.449416999999983],[-99.045273000000009,68.423874000000069]],[[-74.162216000000001,68.246093999999971],[-74.190552000000025,68.242477000000008],[-74.20777899999996,68.243317000000047],[-74.221114999999998,68.247208000000114],[-74.228881999999942,68.250823999999966],[-74.244155999999862,68.261383000000023],[-74.260559000000001,68.273314999999968],[-74.388610999999969,68.398330999999985],[-74.399733999999967,68.42025799999999],[-74.402221999999938,68.427765000000136],[-74.400283999999999,68.43414300000012],[-74.393065999999919,68.445251000000098],[-74.376937999999882,68.459717000000126],[-74.360275000000001,68.463882000000126],[-74.340835999999911,68.462493999999992],[-74.307769999999948,68.461655000000064],[-74.293883999999991,68.460541000000092],[-74.279448999999943,68.458328000000108],[-74.269729999999868,68.454712000000029],[-74.217498999999862,68.426086000000112],[-74.198043999999982,68.414992999999924],[-74.079452999999944,68.338593000000117],[-74.074722000000008,68.330825999999945],[-74.077498999999989,68.325546000000088],[-74.144454999999937,68.254440000000045],[-74.149733999999853,68.25],[-74.162216000000001,68.246093999999971]],[[-100.71056399999998,68.402480999999966],[-100.72416699999997,68.401657],[-100.78943599999997,68.409988000000055],[-100.88971699999996,68.45277400000009],[-100.88027999999997,68.457214000000135],[-100.84889199999992,68.464996000000099],[-100.83029199999999,68.468596999999932],[-100.79332699999986,68.468872000000147],[-100.78611799999999,68.464706000000092],[-100.71806300000003,68.411926000000051],[-100.71305799999999,68.407486000000006],[-100.71056399999998,68.402480999999966]],[[-110.86250299999995,68.474152000000061],[-110.92610199999996,68.465820000000065],[-111.05444299999999,68.469711000000132],[-111.08833299999998,68.473311999999964],[-111.09750400000001,68.477203000000031],[-111.09750400000001,68.482757999999933],[-111.09249899999998,68.487198000000149],[-111.08528099999995,68.492203000000018],[-111.07528699999995,68.495529000000033],[-110.984734,68.515549000000078],[-110.82167099999998,68.54803499999997],[-110.80332899999996,68.546371000000136],[-110.79222099999998,68.543319999999937],[-110.76390100000003,68.533600000000035],[-110.74582700000002,68.526382000000069],[-110.69833399999999,68.491364000000033],[-110.69611399999991,68.486374000000012],[-110.70889299999988,68.484711000000061],[-110.72833300000002,68.484421000000054],[-110.79499799999996,68.479980000000126],[-110.86250299999995,68.474152000000061]],[[-110.58693700000003,68.524155000000007],[-110.625,68.519440000000145],[-110.6600039999999,68.521927000000005],[-110.72112299999998,68.531097000000102],[-110.73249800000002,68.534149000000014],[-110.74610899999999,68.542480000000069],[-110.75974300000001,68.55664100000007],[-110.76194800000002,68.561645999999939],[-110.75473,68.566665999999998],[-110.63861099999997,68.569443000000092],[-110.62832600000002,68.559143000000006],[-110.52971600000001,68.54803499999997],[-110.520554,68.544144000000074],[-110.51834100000002,68.539154000000053],[-110.52722199999988,68.534987999999942],[-110.53859699999992,68.532486000000063],[-110.58693700000003,68.524155000000007]],[[-104.54527300000001,68.396102999999982],[-104.58667000000003,68.394440000000088],[-104.64666699999998,68.395827999999995],[-104.69332900000001,68.402480999999966],[-104.708618,68.40525800000006],[-104.75974299999996,68.418045000000063],[-104.88305699999995,68.449996999999996],[-104.91915899999992,68.459991000000059],[-104.9375,68.46748400000007],[-105.08167999999995,68.546371000000136],[-105.04415899999998,68.562759000000028],[-105.024719,68.570540999999992],[-105.01390100000003,68.573318000000086],[-104.98999000000003,68.57748400000014],[-104.93859900000001,68.583327999999995],[-104.91000399999996,68.583878000000027],[-104.76167299999997,68.582764000000054],[-104.74610899999993,68.582214000000022],[-104.71193699999998,68.578597999999943],[-104.682503,68.57388300000008],[-104.55332899999996,68.537201000000096],[-104.52999899999992,68.530548000000124],[-104.50917099999992,68.523315000000139],[-104.48277299999995,68.511658000000011],[-104.46916199999998,68.503326000000015],[-104.46362299999998,68.498871000000008],[-104.44915799999995,68.485260000000039],[-104.44055200000003,68.476089000000059],[-104.42777999999987,68.456940000000031],[-104.42527799999999,68.441360000000032],[-104.426941,68.435806000000014],[-104.43083199999995,68.429703000000075],[-104.43499799999995,68.423599000000024],[-104.44138299999997,68.417206000000078],[-104.45111099999991,68.413315000000011],[-104.48332199999999,68.404709000000082],[-104.51917299999997,68.398330999999985],[-104.54527300000001,68.396102999999982]],[[-105.139183,68.53637700000013],[-105.12609900000001,68.533325000000048],[-105.11305199999998,68.534424000000001],[-105.10109699999998,68.536652000000004],[-105.08693699999998,68.536926000000108],[-105.07861300000002,68.533051000000114],[-105.06639099999995,68.519149999999968],[-105.05972300000002,68.509430000000066],[-105.05888400000003,68.504166000000055],[-105.06833599999999,68.500274999999988],[-105.08612099999999,68.502777000000037],[-105.11193800000001,68.508881000000088],[-105.23361199999994,68.541091999999992],[-105.24416400000001,68.544708000000071],[-105.29110700000001,68.576935000000049],[-105.29222099999998,68.582214000000022],[-105.28138699999994,68.584991000000116],[-105.25611900000001,68.588318000000015],[-105.24305700000002,68.589705999999978],[-105.228882,68.589980999999966],[-105.21112099999993,68.587769000000094],[-105.18582200000003,68.580826000000116],[-105.18611099999998,68.576660000000004],[-105.18167099999994,68.566665999999998],[-105.17832900000002,68.561645999999939],[-105.139183,68.53637700000013]],[[-113.78611799999999,68.582764000000054],[-113.80166599999995,68.58248900000001],[-113.85249299999998,68.584152000000131],[-113.88945000000001,68.586929000000055],[-113.93138099999999,68.593872000000033],[-113.95259099999987,68.597389000000078],[-113.95966299999998,68.603195000000142],[-113.96611000000001,68.611099000000081],[-113.95667300000002,68.614699999999914],[-113.94248999999996,68.615814000000114],[-113.91388699999999,68.615814000000114],[-113.89972699999998,68.616928000000087],[-113.83693700000003,68.608871000000079],[-113.80027799999999,68.606093999999985],[-113.78611799999999,68.60386699999998],[-113.77667200000002,68.60026600000009],[-113.76194800000002,68.592209000000082],[-113.761124,68.586655000000121],[-113.77223199999997,68.583878000000027],[-113.78611799999999,68.582764000000054]],[[-100.74054699999999,68.596375000000023],[-100.78388999999993,68.594437000000084],[-100.86805699999991,68.603043000000014],[-100.88249200000001,68.611374000000069],[-100.87666300000001,68.616379000000109],[-100.86527999999998,68.619141000000013],[-100.85305800000003,68.620818999999983],[-100.83972199999999,68.62164300000012],[-100.81388900000002,68.619141000000013],[-100.75556899999992,68.607758000000047],[-100.74082899999996,68.604706000000078],[-100.73361199999994,68.600540000000024],[-100.74054699999999,68.596375000000023]],[[-78.468886999999995,68.563873000000001],[-78.474441999999897,68.55831900000004],[-78.482223999999917,68.553313999999943],[-78.503066999999987,68.545532000000037],[-78.530837999999903,68.541091999999992],[-78.545836999999949,68.540817000000004],[-78.562209999999993,68.541930999999977],[-78.599227999999925,68.550644000000034],[-78.614554999999939,68.553650000000061],[-78.638901000000033,68.558028999999976],[-78.654723999999987,68.558594000000028],[-78.668883999999991,68.554153000000099],[-78.724715999999944,68.521927000000005],[-78.715835999999911,68.515823000000012],[-78.691375999999991,68.509155000000021],[-78.674438000000009,68.509720000000073],[-78.653335999999967,68.512496999999939],[-78.636123999999938,68.513046000000088],[-78.621947999999975,68.509720000000073],[-78.617615000000001,68.507217000000082],[-78.610275000000001,68.502213000000097],[-78.610824999999977,68.498032000000023],[-78.618056999999965,68.492203000000018],[-78.705565999999976,68.451660000000118],[-78.716110000000015,68.447754000000089],[-78.743057000000022,68.442748999999992],[-78.776672000000019,68.439147999999989],[-78.795272999999952,68.438583000000108],[-78.813048999999921,68.438873000000115],[-78.828063999999983,68.440811000000053],[-78.861663999999962,68.446365000000071],[-78.876389000000017,68.450546000000145],[-78.959732000000031,68.474700999999982],[-78.946105999999986,68.508041000000048],[-78.943328999999949,68.511932000000115],[-78.936935000000005,68.516388000000006],[-78.822784000000013,68.547759999999982],[-78.809432999999956,68.550537000000077],[-78.791672000000005,68.550262000000032],[-78.759170999999981,68.54803499999997],[-78.743880999999988,68.546097000000032],[-78.723891999999978,68.547484999999938],[-78.704177999999899,68.554703000000131],[-78.698883000000023,68.558028999999976],[-78.688889000000017,68.564697000000137],[-78.670837000000006,68.578872999999987],[-78.668609999999944,68.583327999999995],[-78.672774999999945,68.58859300000006],[-78.680557000000022,68.593323000000112],[-78.693054000000018,68.596939000000134],[-78.705841000000021,68.600540000000024],[-78.784163999999976,68.618590999999981],[-78.851395000000025,68.634155000000078],[-78.894454999999994,68.646378000000141],[-78.89805599999994,68.64888000000002],[-78.889724999999942,68.652771000000087],[-78.863892000000021,68.659714000000122],[-78.837783999999886,68.661102000000028],[-78.720001000000025,68.657211000000132],[-78.689437999999939,68.653320000000065],[-78.495834000000002,68.627762000000132],[-78.481948999999929,68.624985000000038],[-78.469451999999933,68.621093999999971],[-78.460555999999997,68.617203000000075],[-78.467223999999987,68.569153000000085],[-78.468886999999995,68.563873000000001]],[[-74.768889999999999,68.673874000000012],[-74.756667999999991,68.672760000000039],[-74.65583799999996,68.65498400000007],[-74.648346000000004,68.652206000000092],[-74.522231999999974,68.565262000000018],[-74.518340999999907,68.558594000000028],[-74.531951999999876,68.552765000000022],[-74.551392000000021,68.550537000000077],[-74.586944999999957,68.548874000000126],[-74.726668999999902,68.556091000000038],[-74.742767000000015,68.557480000000055],[-74.807219999999916,68.563599000000067],[-74.821945000000028,68.56581099999994],[-74.833892999999989,68.569717000000026],[-74.84333799999996,68.575821000000076],[-74.870543999999995,68.598877000000073],[-74.883056999999894,68.61303700000002],[-74.890288999999996,68.624985000000038],[-74.805832000000009,68.668868999999972],[-74.796111999999994,68.671646000000067],[-74.787216000000001,68.673035000000027],[-74.779998999999975,68.673874000000012],[-74.77194199999991,68.673035000000027],[-74.768889999999999,68.673874000000012]],[[-114.04723399999995,68.613602000000014],[-114.06139399999995,68.612488000000042],[-114.075287,68.614699999999914],[-114.10193600000002,68.625809000000004],[-114.12666299999995,68.637206999999989],[-114.14890299999996,68.649428999999998],[-114.16166699999991,68.658035000000098],[-114.18998699999986,68.680266999999958],[-114.18639400000001,68.683594000000085],[-114.15387699999991,68.679703000000018],[-114.141953,68.676925999999924],[-114.14111299999996,68.671097000000088],[-114.05638099999987,68.635818000000029],[-114.04888900000003,68.631927000000132],[-114.04167200000001,68.627762000000132],[-114.03778099999994,68.616928000000087],[-114.04723399999995,68.613602000000014]],[[-74.811385999999914,68.320541000000048],[-74.817504999999926,68.318603999999993],[-75,68.333344000000125],[-75.002227999999945,68.333603000000039],[-75.008346999999958,68.337204000000099],[-75.010284000000013,68.346649000000014],[-75.005004999999926,68.353591999999992],[-75.002791999999999,68.35914600000001],[-75.00140399999998,68.366378999999995],[-75.015014999999948,68.379700000000128],[-75.029174999999952,68.390549000000021],[-75.037505999999951,68.394714000000022],[-75.081679999999892,68.404984000000127],[-75.10943599999996,68.406937000000084],[-75.138061999999991,68.409988000000055],[-75.153060999999866,68.413040000000024],[-75.241378999999995,68.436371000000065],[-75.263900999999919,68.444976999999994],[-75.294723999999974,68.457763999999997],[-75.369995000000017,68.489700000000028],[-75.396118000000001,68.503601000000003],[-75.416397000000018,68.518051000000128],[-75.416397000000018,68.524429000000112],[-75.396956999999873,68.611099000000081],[-75.389175000000023,68.62303200000008],[-75.307770000000005,68.694702000000063],[-75.299727999999959,68.700546000000088],[-75.280562999999972,68.709717000000069],[-75.254729999999881,68.717484000000013],[-75.239440999999999,68.718048000000124],[-75.014450000000011,68.677200000000028],[-75,68.672241000000099],[-74.942764000000011,68.576096000000064],[-74.938323999999909,68.571655000000135],[-74.931380999999931,68.566665999999998],[-74.836945000000014,68.511658000000011],[-74.801940999999999,68.501099000000124],[-74.785004000000015,68.494705000000067],[-74.780288999999982,68.490265000000079],[-74.772232000000031,68.479980000000126],[-74.768341000000021,68.473311999999964],[-74.776397999999915,68.410537999999917],[-74.811385999999914,68.320541000000048]],[[-84.808043999999938,68.763885000000016],[-84.821395999999879,68.763611000000083],[-84.835830999999985,68.766662999999994],[-84.939163000000008,68.793594000000041],[-84.907776000000013,68.803589000000102],[-84.895279000000016,68.80720500000001],[-84.882492000000013,68.809707999999944],[-84.855835000000013,68.810806000000014],[-84.841385000000002,68.807479999999998],[-84.837219000000005,68.802765000000136],[-84.837783999999999,68.79693600000013],[-84.801665999999955,68.769150000000081],[-84.808043999999938,68.763885000000016]],[[-68.110275000000001,68.78276100000005],[-67.807494999999903,68.733597000000032],[-67.781676999999945,68.729155999999932],[-67.679169000000002,68.711379999999963],[-67.668335000000013,68.707214000000079],[-67.661391999999921,68.701935000000105],[-67.662216000000001,68.698317999999972],[-67.676666000000012,68.695816000000093],[-67.850554999999929,68.697754000000032],[-67.869720000000029,68.69859299999996],[-67.897781000000009,68.704987000000017],[-67.918609999999887,68.712493999999936],[-67.951400999999976,68.721649000000014],[-68.039169000000015,68.738037000000077],[-68.188323999999909,68.763885000000016],[-68.306106999999997,68.779434000000094],[-68.323623999999995,68.779984000000127],[-68.339995999999985,68.778594999999939],[-68.352492999999981,68.775543000000027],[-68.367492999999854,68.774994000000106],[-68.433608999999933,68.781097000000045],[-68.451400999999976,68.783875000000023],[-68.457779000000016,68.785812000000078],[-68.459441999999967,68.791092000000106],[-68.455275999999969,68.802199999999914],[-68.450835999999867,68.80720500000001],[-68.439163000000008,68.812485000000038],[-68.428328999999962,68.813034000000016],[-68.418899999999894,68.810257000000092],[-68.375548999999921,68.808029000000147],[-68.241942999999935,68.798874000000069],[-68.224716000000001,68.797485000000108],[-68.110275000000001,68.78276100000005]],[[-101.83112299999999,68.566940000000102],[-101.84555099999989,68.566665999999998],[-101.86028299999998,68.569717000000026],[-101.88527699999986,68.576385000000016],[-101.90527299999991,68.583878000000027],[-102.00583599999999,68.613875999999948],[-102.112213,68.62359600000002],[-102.23000300000001,68.64027399999992],[-102.254997,68.646942000000081],[-102.31639100000001,68.672211000000061],[-102.3125,68.688583000000051],[-102.21665999999999,68.718322999999998],[-102.14862099999999,68.734984999999938],[-102.13639799999993,68.736923000000104],[-102.11389200000002,68.742477000000065],[-102.09249899999998,68.748871000000122],[-102.073059,68.756943000000092],[-102.05638099999993,68.768051000000071],[-102.05166600000001,68.773880000000077],[-102.04943799999995,68.779434000000094],[-102.04972799999996,68.784714000000008],[-102.05555699999996,68.794434000000081],[-102.05555699999996,68.799713000000054],[-102.05082700000003,68.805542000000059],[-102.04276999999996,68.811096000000077],[-102.02306399999992,68.819443000000035],[-101.99833699999999,68.823044000000095],[-101.98500099999995,68.824158000000068],[-101.95612299999999,68.824158000000068],[-101.93943799999994,68.822494999999947],[-101.9119419999999,68.816086000000098],[-101.77861000000001,68.783875000000023],[-101.69387799999993,68.768051000000071],[-101.69999699999994,68.737762000000032],[-101.68055699999996,68.672484999999995],[-101.68250299999994,68.661652000000061],[-101.701683,68.637772000000041],[-101.83112299999999,68.566940000000102]],[[-102.60082999999997,68.813309000000004],[-102.60749799999996,68.80914300000012],[-102.69695299999995,68.813034000000016],[-102.70722999999992,68.816666000000112],[-102.68888900000002,68.833328000000108],[-102.67859599999997,68.836928999999998],[-102.64055599999995,68.841934000000037],[-102.61277799999993,68.84304800000001],[-102.59889199999986,68.841095000000053],[-102.60221899999999,68.834152000000074],[-102.60082999999997,68.813309000000004]],[[-89.944442999999978,68.662200999999982],[-89.956389999999942,68.661652000000061],[-89.974166999999966,68.705826000000002],[-89.999160999999958,68.730819999999937],[-90.017226999999934,68.740540000000067],[-90.022507000000019,68.74581900000004],[-90.027495999999985,68.752486999999974],[-90.027785999999992,68.758606000000043],[-90.025557999999933,68.771927000000005],[-90.00306699999993,68.806641000000013],[-89.958618000000001,68.838042999999971],[-89.944442999999978,68.847488000000055],[-89.931945999999982,68.852203000000088],[-89.921935999999903,68.853867000000093],[-89.914443999999946,68.853043000000127],[-89.781677000000002,68.766662999999994],[-89.784163999999919,68.760818000000086],[-89.791381999999999,68.752486999999974],[-89.808884000000035,68.733322000000044],[-89.857498000000021,68.700546000000088],[-89.877486999999917,68.690810999999997],[-89.944442999999978,68.662200999999982]],[[-114.35082999999997,68.871643000000063],[-114.37917299999992,68.86943100000002],[-114.39639299999999,68.869705000000124],[-114.429169,68.87359600000002],[-114.45333900000003,68.879425000000026],[-114.46305799999999,68.882751000000042],[-114.468613,68.887206999999989],[-114.47165699999999,68.892487000000017],[-114.46056399999998,68.895264000000111],[-114.44444299999998,68.896103000000096],[-114.424713,68.896942000000024],[-114.37609899999995,68.893600000000106],[-114.34084300000001,68.890549000000078],[-114.32888800000001,68.887496999999996],[-114.32333399999999,68.883041000000048],[-114.32861299999996,68.87692300000009],[-114.33805799999993,68.87359600000002],[-114.35082999999997,68.871643000000063]],[[-67.847777999999948,68.851928999999984],[-67.863891999999964,68.849425999999994],[-67.883056999999951,68.849990999999989],[-67.897232000000031,68.853043000000127],[-67.908051,68.857208000000128],[-67.956389999999942,68.915268000000026],[-67.96055599999994,68.922484999999995],[-67.96055599999994,68.929977000000065],[-67.954726999999934,68.935806000000127],[-67.946654999999964,68.940810999999997],[-67.938048999999978,68.944427000000019],[-67.923889000000031,68.94859300000013],[-67.892226999999991,68.951660000000004],[-67.876388999999961,68.949417000000096],[-67.869445999999982,68.944138000000066],[-67.83944699999995,68.911926000000108],[-67.831389999999999,68.875809000000118],[-67.833068999999909,68.861374000000012],[-67.837509000000011,68.856368999999972],[-67.847777999999948,68.851928999999984]],[[-85.341675000000009,68.983596999999975],[-85.351669000000015,68.981094000000041],[-85.379165999999941,68.981934000000081],[-85.407227000000034,68.984420999999941],[-85.437209999999993,68.991928000000087],[-85.446944999999971,68.996368000000075],[-85.451400999999976,69.001099000000011],[-85.453063999999983,69.005829000000062],[-85.44387799999987,69.010269000000108],[-85.418883999999991,69.009430000000123],[-85.369995000000017,69.001937999999996],[-85.354720999999927,68.997757000000092],[-85.342223999999931,68.993317000000104],[-85.337783999999999,68.988585999999941],[-85.341675000000009,68.983596999999975]],[[-89.90834000000001,68.917755000000113],[-89.915008999999998,68.913315000000125],[-89.952498999999875,68.926376000000062],[-89.978332999999964,68.933867999999961],[-90,68.937575999999979],[-90.03195199999999,68.943039000000113],[-90.075561999999991,68.948028999999963],[-90.070557000000008,68.981934000000081],[-89.946380999999917,69.010269000000108],[-89.93360899999999,69.011658000000068],[-89.920837000000006,69.010269000000108],[-89.914169000000015,69.006943000000035],[-89.910277999999948,69.003052000000139],[-89.906661999999983,68.922484999999995],[-89.90834000000001,68.917755000000113]],[[-100.17555199999987,68.794708000000014],[-100.22083999999995,68.764435000000049],[-100.25446299999999,68.769150000000081],[-100.26917300000002,68.772217000000012],[-100.28555299999994,68.774155000000121],[-100.29915599999998,68.773315000000082],[-100.30860899999999,68.768875000000037],[-100.31639100000001,68.76249700000011],[-100.35749799999996,68.71527100000003],[-100.36694299999994,68.710541000000035],[-100.40722699999998,68.708038000000045],[-100.423607,68.709991000000002],[-100.61332700000003,68.758040999999992],[-100.62304699999999,68.761932000000058],[-100.62805199999997,68.766388000000006],[-100.632767,68.77609300000006],[-100.62581599999999,68.912490999999932],[-100.59999099999999,69.000548999999978],[-100.56111099999993,69.025818000000015],[-100.54360999999994,69.036652000000061],[-100.52916699999997,69.036652000000061],[-100.497772,69.034714000000122],[-100.41610700000001,69.026382000000126],[-100.38110399999994,69.020828000000108],[-100.35082999999997,69.014709000000096],[-100.34111000000001,69.010818000000029],[-100.33361799999994,69.006653000000028],[-100.32861300000002,69.00221300000004],[-100.32362399999994,68.996093999999971],[-100.32888800000001,68.989975000000129],[-100.33168000000001,68.984420999999941],[-100.33168000000001,68.979431000000091],[-100.326683,68.974701000000039],[-100.31276700000001,68.965820000000122],[-100.23889200000002,68.924149],[-100.22888199999994,68.920258000000103],[-100.21665999999988,68.916930999999977],[-100.20361300000002,68.915543000000071],[-100.16027799999995,68.915268000000026],[-100.14362299999993,68.913315000000125],[-100.13110399999999,68.909987999999998],[-100.12638899999996,68.905548000000124],[-100.17194399999994,68.799423000000047],[-100.17555199999987,68.794708000000014]],[[-85.119445999999925,69.014709000000096],[-85.132216999999855,69.013045999999974],[-85.166107000000011,69.031096999999988],[-85.170273000000009,69.035812000000021],[-85.155562999999972,69.056090999999981],[-85.14555399999989,69.058319000000097],[-85.095551,69.048035000000084],[-85.068343999999968,69.041367000000093],[-85.061385999999914,69.036652000000061],[-85.075835999999924,69.031096999999988],[-85.119445999999925,69.014709000000096]],[[-85.265288999999996,69.072495000000117],[-85.343886999999938,69.06303400000013],[-85.357773000000009,69.063598999999954],[-85.373046999999929,69.067763999999954],[-85.392776000000026,69.076660000000118],[-85.397232000000031,69.081374999999923],[-85.398894999999982,69.086104999999975],[-85.392501999999979,69.09137000000004],[-85.380279999999914,69.095825000000048],[-85.301392000000021,69.104155999999989],[-85.287780999999882,69.104706000000022],[-85.258895999999993,69.100266000000147],[-85.248885999999914,69.095825000000048],[-85.241942999999992,69.09137000000004],[-85.245543999999995,69.086104999999975],[-85.246658000000025,69.081374999999923],[-85.253066999999987,69.07609599999995],[-85.265288999999996,69.072495000000117]],[[-99.999434999999949,68.943588000000034],[-100.006958,68.939423000000033],[-100.021118,68.939696999999967],[-100.03778099999988,68.941360000000088],[-100.12000299999994,68.950821000000076],[-100.16166699999997,68.961380000000133],[-100.18138099999999,68.968872000000033],[-100.19860799999998,68.976929000000041],[-100.20612299999988,68.981094000000041],[-100.23693800000001,69.008605999999986],[-100.25666799999999,69.026656999999943],[-100.25890399999992,69.031661999999983],[-100.25862099999995,69.041931000000034],[-100.23693800000001,69.081374999999923],[-100.23194899999993,69.087203999999986],[-100.21333300000003,69.097214000000065],[-100.12970699999994,69.130264000000125],[-100.09555099999994,69.117477000000122],[-100.05304699999999,69.102478000000019],[-100.03333299999991,69.094711000000075],[-100.02834299999995,69.090271000000087],[-99.978881999999999,69.01388500000013],[-99.976943999999946,69.003876000000105],[-99.999434999999949,68.943588000000034]],[[-90.124709999999993,69.04942299999999],[-90.12721299999987,69.044982999999945],[-90.138061999999991,69.04525799999999],[-90.231948999999986,69.065536000000009],[-90.247498000000007,69.070267000000115],[-90.279175000000009,69.098328000000038],[-90.276397999999858,69.125809000000061],[-90.263335999999924,69.141936999999928],[-90.262511999999958,69.142761000000064],[-90.253890999999953,69.142761000000064],[-90.147231999999974,69.103591999999992],[-90.125,69.055542000000003],[-90.124709999999993,69.04942299999999]],[[-101.66416900000002,69.083603000000096],[-101.67749000000003,69.082764000000111],[-101.69027699999998,69.086104999999975],[-101.69554099999993,69.090546000000074],[-101.69833399999993,69.095261000000107],[-101.71806300000003,69.178588999999931],[-101.71584300000001,69.189147999999989],[-101.71112099999993,69.195251000000098],[-101.70361300000002,69.201660000000004],[-101.695267,69.206940000000031],[-101.68443300000001,69.210815000000025],[-101.65834000000001,69.213608000000022],[-101.60166899999996,69.215546000000131],[-101.55860899999999,69.216660000000104],[-101.53527799999995,69.209427000000119],[-101.5202789999999,69.197479000000101],[-101.497772,69.170258000000047],[-101.49500299999994,69.165543000000014],[-101.49500299999994,69.160262999999929],[-101.49999999999994,69.154434000000094],[-101.55555699999991,69.105255000000113],[-101.56360599999999,69.099990999999989],[-101.65139799999997,69.085541000000035],[-101.66416900000002,69.083603000000096]],[[-90.512512000000015,69.20248400000014],[-90.575561999999991,69.198593000000074],[-90.613327000000027,69.207763999999997],[-90.777221999999995,69.272491000000002],[-90.778609999999901,69.317215000000147],[-90.775832999999977,69.32998699999996],[-90.762512000000015,69.345534999999984],[-90.757232999999985,69.349426000000051],[-90.740829000000019,69.357483000000059],[-90.692215000000033,69.37164300000012],[-90.67332499999992,69.373871000000065],[-90.655272999999966,69.374695000000031],[-90.638610999999969,69.373871000000065],[-90.608046999999999,69.36970500000001],[-90.595001000000025,69.365264999999965],[-90.582503999999972,69.359711000000004],[-90.559433000000013,69.347214000000008],[-90.548614999999984,69.339981000000023],[-90.47193900000002,69.281097000000102],[-90.460830999999928,69.267487000000017],[-90.455565999999976,69.234711000000118],[-90.454452999999887,69.226379000000122],[-90.457503999999972,69.222763000000043],[-90.512512000000015,69.20248400000014]],[[-78.412215999999887,69.379700000000128],[-78.396392999999932,69.377761999999962],[-78.338608000000022,69.3808140000001],[-78.305832000000009,69.377761999999962],[-78.291381999999999,69.374985000000095],[-78.279723999999987,69.370255000000043],[-78.270844000000011,69.364150999999993],[-78.211394999999925,69.299987999999985],[-78.210830999999985,69.294434000000138],[-78.214447000000007,69.288315000000125],[-78.318344000000025,69.238312000000008],[-78.396118000000001,69.210541000000092],[-78.472504000000015,69.191360000000032],[-78.551392000000021,69.089157000000057],[-78.556655999999919,69.083603000000096],[-78.572234999999921,69.073317999999972],[-78.601943999999946,69.066086000000041],[-78.62777699999998,69.058593999999914],[-78.707229999999981,69.014709000000096],[-78.715011999999945,69.009720000000129],[-78.718062999999972,69.003601000000117],[-78.71665999999999,68.99664300000012],[-78.712783999999999,68.984985000000108],[-78.716110000000015,68.979156000000103],[-78.725280999999995,68.968872000000033],[-78.735000999999954,68.963608000000079],[-78.830291999999929,68.91304000000008],[-78.840285999999935,68.908600000000092],[-78.867492999999968,68.900543000000084],[-78.934433000000013,68.888596000000121],[-78.978881999999999,68.882477000000108],[-79.033614999999998,68.877197000000024],[-79.095275999999956,68.872757000000036],[-79.185271999999941,68.853317000000061],[-79.194152999999972,68.849425999999994],[-79.197219999999902,68.839157000000114],[-79.204726999999991,68.833878000000141],[-79.216949,68.829987000000074],[-79.238892000000021,68.827484000000084],[-79.287216000000001,68.83137499999998],[-79.353332999999964,68.844147000000021],[-79.366103999999893,68.847763000000043],[-79.386948000000018,68.856093999999985],[-79.392501999999865,68.860535000000084],[-79.396392999999932,68.864990000000091],[-79.400283999999999,68.871918000000051],[-79.402221999999938,68.923598999999967],[-79.379439999999931,68.931656000000089],[-79.353881999999999,68.943863000000079],[-79.330565999999976,68.958327999999995],[-79.309432999999956,68.973602000000085],[-79.303878999999938,68.978317000000118],[-79.292769999999962,68.995818999999983],[-79.283065999999963,69.012772000000041],[-79.238892000000021,69.066376000000048],[-79.227218999999991,69.076385000000073],[-79.216949,69.081100000000106],[-79.146117999999944,69.093597000000102],[-79.049438000000009,69.102203000000031],[-78.985824999999977,69.099990999999989],[-78.974441999999954,69.100266000000147],[-78.960280999999952,69.102478000000019],[-78.864165999999955,69.141098],[-78.855834999999956,69.145537999999988],[-78.749160999999901,69.261107999999979],[-78.721938999999963,69.310532000000023],[-78.726668999999902,69.318603999999993],[-78.724715999999944,69.331100000000049],[-78.722778000000005,69.336105000000089],[-78.716110000000015,69.34027100000003],[-78.606948999999986,69.371368000000132],[-78.577498999999989,69.377197000000137],[-78.568618999999956,69.378860000000032],[-78.489989999999977,69.391098000000113],[-78.47084000000001,69.392212000000086],[-78.458617999999944,69.38998400000014],[-78.412215999999887,69.379700000000128]],[[-135.28890999999993,69.309418000000051],[-135.29751599999997,69.304977000000122],[-135.33138999999989,69.322768999999994],[-135.34805299999994,69.330551000000128],[-135.38613899999996,69.344986000000063],[-135.39779699999997,69.348037999999974],[-135.44000199999999,69.355820000000108],[-135.48693800000001,69.362198000000092],[-135.51501500000001,69.367477000000065],[-135.52694699999995,69.370529000000147],[-135.55999800000001,69.380264000000068],[-135.56527700000004,69.384995000000004],[-135.56555199999997,69.390548999999965],[-135.55999800000001,69.396652000000131],[-135.54998799999998,69.399994000000049],[-135.52444499999996,69.403595000000109],[-135.50723300000004,69.403046000000131],[-135.42028799999997,69.397491000000059],[-135.365814,69.393599999999992],[-135.33776899999992,69.388596000000064],[-135.32806400000004,69.384995000000004],[-135.27224699999988,69.358321999999987],[-135.27139299999999,69.346938999999963],[-135.27722199999999,69.328322999999955],[-135.28332499999988,69.315262000000018],[-135.28890999999993,69.309418000000051]],[[-76.950835999999867,69.395263999999997],[-76.923614999999984,69.393599999999992],[-76.902221999999995,69.394713999999965],[-76.804168999999945,69.400269000000037],[-76.787780999999995,69.402480999999966],[-76.779174999999952,69.403870000000097],[-76.760833999999875,69.40914900000007],[-76.75140399999998,69.412766000000033],[-76.744445999999982,69.416931000000034],[-76.732772999999952,69.422760000000039],[-76.723327999999981,69.423599000000024],[-76.716400000000021,69.422211000000118],[-76.705840999999964,69.418868999999972],[-76.652221999999938,69.38638300000008],[-76.644729999999925,69.381363000000022],[-76.643889999999942,69.374420000000043],[-76.646666999999979,69.336929000000055],[-76.648894999999925,69.331940000000088],[-76.676391999999964,69.306091000000094],[-76.706389999999999,69.303588999999988],[-76.718886999999995,69.301651000000049],[-76.736937999999952,69.296371000000022],[-76.799438000000009,69.272491000000002],[-76.926392000000021,69.21748400000007],[-76.933608999999933,69.213882000000126],[-76.939986999999974,69.209152000000074],[-76.945830999999998,69.203598000000113],[-76.949431999999945,69.197479000000101],[-76.950561999999934,69.1933140000001],[-76.958892999999989,69.14248699999996],[-77.118057000000022,69.119431000000134],[-77.137787000000003,69.116652999999928],[-77.171660999999915,69.117202999999961],[-77.213622999999984,69.125809000000061],[-77.238601999999958,69.132750999999985],[-77.25778200000002,69.139984000000027],[-77.285827999999924,69.153594999999996],[-77.301392000000021,69.164153999999996],[-77.320281999999963,69.181366000000025],[-77.381942999999865,69.247482000000048],[-77.384170999999981,69.263610999999969],[-77.383330999999941,69.270538000000045],[-77.359725999999966,69.392761000000064],[-77.356383999999935,69.396652000000131],[-77.348342999999943,69.401657],[-77.288329999999917,69.417755],[-77.259170999999924,69.424698000000035],[-77.189162999999951,69.438309000000004],[-77.153610000000015,69.444427000000076],[-77.129989999999964,69.445251000000042],[-77.113616999999977,69.441650000000038],[-77.075561999999991,69.428314000000057],[-77.043335000000013,69.417206000000078],[-77.006957999999997,69.406372000000033],[-76.978332999999907,69.399994000000049],[-76.950835999999867,69.395263999999997]],[[-90.329453000000001,69.235809000000017],[-90.34722899999997,69.234711000000118],[-90.361388999999974,69.238312000000008],[-90.506392999999946,69.329162999999994],[-90.510009999999909,69.334717000000012],[-90.514450000000011,69.363876000000005],[-90.501113999999973,69.372482000000105],[-90.491669000000002,69.376647999999989],[-90.301940999999943,69.434418000000107],[-90.205275999999913,69.445816000000093],[-90.200835999999981,69.444427000000076],[-90.199722000000008,69.439148000000102],[-90.195267000000001,69.416931000000034],[-90.178604000000007,69.409988000000055],[-90.149733999999967,69.375534000000016],[-90.148345999999947,69.370255000000043],[-90.154723999999987,69.350815000000068],[-90.15972899999997,69.34526100000005],[-90.271666999999923,69.255554000000018],[-90.288605000000018,69.249419999999986],[-90.329453000000001,69.235809000000017]],[[-135.59222399999999,69.482208000000071],[-135.574432,69.446640000000059],[-135.61999499999996,69.468597000000102],[-135.62942499999991,69.472214000000065],[-135.66528299999999,69.481368999999916],[-135.69360399999999,69.486649],[-135.74081399999994,69.493041999999946],[-135.77835099999999,69.496094000000085],[-135.81054700000004,69.497756999999979],[-135.81555200000003,69.502487000000031],[-135.8125,69.508041000000048],[-135.79528799999997,69.516663000000051],[-135.78555299999999,69.519989000000066],[-135.77389500000004,69.52276599999999],[-135.76113899999996,69.524429000000055],[-135.74526999999995,69.524704000000099],[-135.66610700000001,69.505828999999949],[-135.59942599999999,69.486098999999967],[-135.59222399999999,69.482208000000071]],[[-101.05304699999999,69.504439999999988],[-101.00611900000001,69.486923000000104],[-101.00862099999995,69.450272000000041],[-101.12526700000001,69.401382000000126],[-101.21861299999989,69.371368000000132],[-101.23029299999996,69.368591000000038],[-101.24305700000002,69.371917999999994],[-101.26888999999994,69.378860000000032],[-101.27916700000003,69.382476999999994],[-101.271118,69.385818000000029],[-101.256958,69.386658000000068],[-101.24526999999995,69.389434999999992],[-101.2369379999999,69.394713999999965],[-101.23166699999996,69.400818000000015],[-101.18888899999996,69.469711000000075],[-101.18639400000001,69.475265999999976],[-101.22749299999992,69.495529000000033],[-101.23805199999998,69.499145999999996],[-101.2538909999999,69.500274999999988],[-101.266953,69.49832200000003],[-101.31749699999995,69.511107999999922],[-101.38445300000001,69.53276100000005],[-101.38722199999995,69.53776600000009],[-101.35833700000001,69.566940000000102],[-101.34973099999996,69.572495000000004],[-101.34056099999992,69.574707000000046],[-101.27555799999993,69.580826000000059],[-101.26167299999992,69.581665000000044],[-101.07305899999994,69.534988000000112],[-101.06276699999995,69.53137200000009],[-101.05999800000001,69.526382000000012],[-101.05304699999999,69.504439999999988]],[[-96.663054999999929,69.569717000000026],[-96.563323999999966,69.564147999999989],[-96.461120999999991,69.564147999999989],[-96.401671999999905,69.562759000000028],[-96.373610999999983,69.560806000000071],[-96.358886999999868,69.55720500000001],[-96.351943999999946,69.55304000000001],[-96.345275999999899,69.548599000000081],[-96.343886999999995,69.543594000000041],[-96.335555999999997,69.534424000000001],[-96.328613000000018,69.529983999999956],[-96.31639100000001,69.526382000000012],[-96.291671999999892,69.531097000000045],[-96.218063000000029,69.546371000000136],[-96.207229999999981,69.55053700000002],[-96.198333999999875,69.55664100000007],[-96.194442999999978,69.561920000000043],[-96.184432999999956,69.56721500000009],[-96.169723999999917,69.566940000000102],[-96.152221999999995,69.563599000000067],[-96.139998999999932,69.559982000000105],[-96.133330999999941,69.555542000000059],[-96.134445000000028,69.550262000000032],[-96.136397999999986,69.546097000000032],[-96.104171999999949,69.49832200000003],[-96.101104999999961,69.493041999999946],[-96.097778000000005,69.483322000000044],[-96.096114999999998,69.46804800000001],[-96.098617999999988,69.457763999999941],[-96.143065999999919,69.351379000000009],[-96.146666999999979,69.345824999999991],[-96.163329999999974,69.348037999999974],[-96.233886999999982,69.359711000000004],[-96.248610999999926,69.36303700000002],[-96.270003999999972,69.370818999999983],[-96.288604999999961,69.378860000000032],[-96.304992999999911,69.387497000000053],[-96.325286999999946,69.400269000000037],[-96.333617999999944,69.409714000000122],[-96.348343,69.423035000000084],[-96.382216999999912,69.44470200000012],[-96.401108000000022,69.453048999999908],[-96.430557000000022,69.459717000000069],[-96.461944999999957,69.462493999999992],[-96.507232999999985,69.464432000000102],[-96.524719000000005,69.467484000000013],[-96.548889000000031,69.474990999999989],[-96.630828999999949,69.512207000000103],[-96.654175000000009,69.524994000000106],[-96.736663999999962,69.576660000000004],[-96.735549999999989,69.581940000000031],[-96.721663999999919,69.58248900000001],[-96.691665999999884,69.581940000000031],[-96.676940999999999,69.578323000000125],[-96.663054999999929,69.569717000000026]],[[-67.310546999999929,69.549149000000114],[-67.324172999999973,69.533875000000023],[-67.331680000000006,69.53137200000009],[-67.351105000000018,69.530823000000112],[-67.388610999999969,69.533051000000057],[-67.473052999999936,69.533875000000023],[-67.492766999999958,69.533051000000057],[-67.53083799999996,69.52915999999999],[-67.545272999999895,69.525818000000072],[-67.552489999999977,69.523041000000148],[-67.549437999999896,69.519714000000022],[-67.507232999999985,69.514998999999989],[-67.499999999999943,69.512833000000057],[-67.49888599999997,69.51249700000011],[-67.489990000000034,69.508606000000043],[-67.481673999999941,69.500000000000114],[-67.492492999999854,69.495529000000033],[-67.50778200000002,69.494980000000112],[-67.573623999999995,69.506653000000085],[-67.58555599999994,69.50749200000007],[-67.598891999999978,69.506378000000097],[-67.626662999999951,69.500549000000092],[-67.642226999999878,69.500274999999988],[-67.731948999999929,69.513611000000083],[-67.744445999999925,69.515822999999955],[-67.749725000000012,69.521103000000039],[-67.739440999999943,69.540817000000118],[-67.730834999999956,69.544434000000081],[-67.723052999999993,69.545258000000047],[-67.707229999999981,69.544434000000081],[-67.686661000000015,69.541091999999992],[-67.674712999999883,69.540268000000026],[-67.663329999999974,69.54193099999992],[-67.578063999999983,69.559708000000001],[-67.550277999999935,69.565536000000122],[-67.541381999999999,69.569153000000028],[-67.531386999999995,69.576384999999959],[-67.527221999999995,69.581940000000031],[-67.48443599999996,69.590271000000143],[-67.425002999999947,69.588882000000126],[-67.394454999999994,69.584991000000059],[-67.367217999999923,69.578323000000125],[-67.321395999999993,69.560531999999967],[-67.314437999999996,69.55664100000007],[-67.309433000000013,69.552765000000022],[-67.310546999999929,69.549149000000114]],[[-96.760558999999944,69.54553199999998],[-96.770003999999915,69.543594000000041],[-96.786666999999909,69.54553199999998],[-96.868880999999874,69.555817000000104],[-96.883895999999993,69.55914300000012],[-96.888061999999991,69.563873000000001],[-96.902221999999995,69.5977630000001],[-96.900283999999999,69.602203000000088],[-96.870543999999995,69.601379000000122],[-96.851395000000025,69.599425999999994],[-96.840835999999967,69.597488000000055],[-96.81639100000001,69.590271000000143],[-96.809433000000013,69.585815000000025],[-96.766402999999968,69.554977000000065],[-96.761947999999961,69.55053700000002],[-96.760558999999944,69.54553199999998]],[[-91.110001000000011,69.549423000000047],[-91.119155999999975,69.548324999999977],[-91.140288999999939,69.560806000000071],[-91.142501999999922,69.564986999999974],[-91.136397999999986,69.575546000000031],[-91.121384000000035,69.593048000000067],[-91.108886999999925,69.602203000000088],[-91.037215999999944,69.614990000000091],[-90.969161999999926,69.618317000000047],[-90.959732000000031,69.61943100000002],[-90.937499999999943,69.616379000000109],[-90.923049999999932,69.611374000000069],[-90.920272999999952,69.608032000000094],[-90.919158999999979,69.606093999999985],[-90.930832000000009,69.599152000000061],[-91.110001000000011,69.549423000000047]],[[-133.93222000000003,69.560256999999922],[-133.948059,69.560256999999922],[-133.96304299999997,69.561371000000122],[-133.98611499999998,69.565536000000122],[-134.01196299999992,69.571381000000031],[-134.01666299999994,69.576096000000064],[-134.01419099999998,69.58248900000001],[-134.01028400000001,69.585541000000092],[-133.94528199999996,69.613312000000008],[-133.93362399999995,69.616089000000102],[-133.89446999999996,69.621093999999971],[-133.87997399999995,69.621918000000107],[-133.86581399999994,69.619141000000013],[-133.84472700000003,69.600815000000011],[-133.84695399999998,69.588882000000126],[-133.868042,69.56721500000009],[-133.87719699999997,69.565261999999962],[-133.93222000000003,69.560256999999922]],[[-95.488892000000021,69.565536000000122],[-95.452498999999932,69.550262000000032],[-95.375548999999978,69.517761000000121],[-95.366104000000007,69.513611000000083],[-95.359726000000023,69.509155000000021],[-95.362212999999997,69.498870999999951],[-95.402495999999985,69.383330999999998],[-95.515839000000028,69.330826000000116],[-95.527221999999995,69.327484000000027],[-95.539718999999991,69.325271999999927],[-95.606383999999935,69.319153000000085],[-95.620270000000005,69.318603999999993],[-95.634170999999924,69.318329000000119],[-95.692489999999964,69.319153000000085],[-95.706954999999994,69.319442999999922],[-95.722778000000005,69.320831000000055],[-95.736938000000009,69.324432000000058],[-95.741104000000007,69.329162999999994],[-95.741668999999945,69.334717000000012],[-95.731673999999941,69.373031999999967],[-95.727782999999874,69.378585999999927],[-95.716949,69.382750999999928],[-95.693877999999984,69.389434999999992],[-95.669158999999979,69.394150000000025],[-95.657776000000013,69.397217000000126],[-95.648346000000004,69.403320000000065],[-95.666397000000018,69.497756999999979],[-95.669158999999979,69.50749200000007],[-95.694442999999978,69.540268000000026],[-95.708053999999947,69.548874000000126],[-95.720001000000025,69.552765000000022],[-95.736663999999905,69.554977000000065],[-95.815826000000015,69.562759000000028],[-95.827498999999932,69.559708000000001],[-95.831680000000006,69.554153000000099],[-95.822784000000013,69.514435000000049],[-95.817504999999926,69.504990000000021],[-95.809432999999956,69.495529000000033],[-95.797225999999966,69.481658999999979],[-95.862212999999997,69.348037999999974],[-95.87222300000002,69.34275800000006],[-95.899445000000014,69.340820000000122],[-95.961670000000026,69.346375000000023],[-95.978881999999999,69.349426000000051],[-95.990829000000019,69.353317000000118],[-96.011123999999882,69.478043000000071],[-96.009734999999978,69.483047000000056],[-95.919998000000021,69.595260999999994],[-95.909164000000033,69.599425999999994],[-95.789443999999946,69.634155000000078],[-95.773894999999925,69.632751000000098],[-95.625548999999921,69.616089000000102],[-95.61221299999994,69.61442599999998],[-95.488892000000021,69.565536000000122]],[[-138.86721799999992,69.588318000000015],[-138.87332200000003,69.583054000000061],[-138.88305699999995,69.579437000000098],[-138.91000399999996,69.576096000000064],[-138.945831,69.57887299999993],[-138.97720300000003,69.583054000000061],[-138.99609399999997,69.584152000000131],[-139.02307099999996,69.580826000000059],[-139.03417999999999,69.578048999999965],[-139.05306999999999,69.570540999999992],[-139.12109399999997,69.52915999999999],[-139.137787,69.530823000000112],[-139.33248899999995,69.566085999999927],[-139.32998699999996,69.571655000000135],[-139.32223499999992,69.576096000000064],[-139.26779199999993,69.605820000000051],[-139.24221799999992,69.618317000000047],[-139.23275799999999,69.621918000000107],[-139.19973800000002,69.630538999999999],[-139.14416499999999,69.644989000000123],[-139.13305700000001,69.647766000000047],[-139.12027,69.649993999999992],[-139.10333299999996,69.648041000000035],[-139.02029399999998,69.633331000000112],[-138.95611600000001,69.619705000000124],[-138.92111199999994,69.610535000000084],[-138.88055399999996,69.596939000000134],[-138.872772,69.59275800000006],[-138.86721799999992,69.588318000000015]],[[-135.51724199999995,69.569153000000028],[-135.54305999999997,69.565536000000122],[-135.55721999999997,69.568054000000075],[-135.57138099999997,69.576934999999992],[-135.58111600000001,69.580551000000071],[-135.5883179999999,69.584717000000126],[-135.591095,69.589980999999966],[-135.58944699999989,69.596099999999979],[-135.58612099999993,69.601653999999996],[-135.57888800000001,69.606644000000017],[-135.55471799999992,69.620254999999986],[-135.51196299999998,69.641663000000108],[-135.50030500000003,69.644439999999975],[-135.43972799999995,69.65248100000008],[-135.42388900000003,69.65248100000008],[-135.40972899999991,69.649993999999992],[-135.39779699999997,69.646942000000081],[-135.40917999999999,69.634995000000117],[-135.4655459999999,69.585541000000092],[-135.474152,69.581375000000037],[-135.505585,69.571655000000135],[-135.51724199999995,69.569153000000028]],[[-67.920273000000009,69.521927000000005],[-67.935271999999941,69.518875000000094],[-68.002228000000002,69.526657000000057],[-68.049437999999952,69.533875000000023],[-68.238892000000021,69.570267000000058],[-68.248885999999914,69.596649000000127],[-68.078339000000028,69.665268000000083],[-67.970839999999896,69.701935000000049],[-67.959731999999974,69.704987000000017],[-67.946380999999974,69.706375000000094],[-67.895553999999947,69.708603000000039],[-67.889724999999999,69.708328000000051],[-67.869720000000029,69.700821000000076],[-67.821120999999948,69.676376000000062],[-67.831680000000006,69.601928999999984],[-67.910278000000005,69.526657000000057],[-67.920273000000009,69.521927000000005]],[[-134.26058999999987,68.733535999999958],[-134.23248299999989,68.706100000000106],[-134.22778299999993,68.701385000000073],[-134.22726399999999,68.696426000000088],[-134.23580900000002,68.694977000000108],[-134.26779199999999,68.695816000000093],[-134.35693400000002,68.703049000000078],[-134.38861099999997,68.707214000000079],[-134.436127,68.713608000000136],[-134.45748899999995,68.719147000000135],[-134.46194499999996,68.72387700000013],[-134.49554399999994,68.75221300000004],[-134.53640699999994,68.786926000000051],[-134.66946399999989,68.894440000000145],[-134.741669,68.935531999999967],[-134.75500499999987,68.944427000000019],[-134.76696799999991,68.953323000000125],[-134.78306599999996,68.965355000000045],[-134.82583599999998,68.97886699999998],[-134.85278299999999,68.976379000000009],[-134.89224200000001,68.971924000000001],[-134.90472399999999,68.969986000000006],[-134.91473400000001,68.96665999999999],[-134.92028799999997,68.960815000000082],[-134.91973899999994,68.949417000000096],[-134.91723599999995,68.944138000000066],[-134.91641199999998,68.926926000000094],[-134.92028799999997,68.914703000000031],[-134.92584199999999,68.908600000000092],[-134.93307499999997,68.903594999999996],[-134.94137599999999,68.899429000000112],[-134.96112099999999,68.892487000000017],[-134.97500599999995,68.891663000000051],[-134.99999999999994,68.892082000000073],[-135.00750699999998,68.892212000000029],[-135.12609900000001,68.899429000000112],[-135.14196800000002,68.901382000000069],[-135.167236,68.907211000000075],[-135.17083699999995,68.911102000000142],[-135.17806999999999,68.920822000000044],[-135.18084699999997,68.926085999999998],[-135.20165999999995,68.9327550000001],[-135.23330699999991,68.934708000000001],[-135.262787,68.933594000000028],[-135.36111500000004,68.926651000000049],[-135.39196799999996,68.926651000000049],[-135.42138699999987,68.928864000000033],[-135.444458,68.934981999999934],[-135.45388799999995,68.938582999999994],[-135.46081499999997,68.942749000000106],[-135.76916499999993,68.896378000000084],[-135.808044,68.895264000000111],[-135.843323,68.897217000000069],[-135.88247699999999,68.905258000000117],[-135.90585299999992,68.911376999999959],[-135.94805899999994,68.924698000000092],[-135.99527,68.942474000000061],[-136.00250199999999,68.946640000000002],[-136.00527999999997,68.951935000000049],[-135.98916599999995,69.029160000000104],[-135.98525999999998,69.035812000000021],[-135.97833299999996,69.040817000000061],[-135.96859699999999,69.044434000000024],[-135.95443699999998,69.045532000000094],[-135.88861099999991,69.026093000000003],[-135.85012800000004,69.007401000000129],[-135.83389299999993,68.998322000000144],[-135.82888799999989,68.993591000000038],[-135.80248999999992,68.989426000000037],[-135.77001999999999,68.989150999999993],[-135.64889499999998,68.991928000000087],[-135.63473499999998,68.993042000000059],[-135.57861300000002,69.006104000000107],[-135.52557399999995,69.021102999999982],[-135.51779199999999,69.023880000000077],[-135.529449,69.026931999999988],[-135.72082499999999,69.046097000000145],[-135.91583300000002,69.088318000000129],[-135.92748999999998,69.09137000000004],[-135.93472299999996,69.095535000000041],[-135.95138499999996,69.142761000000064],[-135.96582000000001,69.197754000000089],[-135.96722399999999,69.214706000000092],[-135.95944199999997,69.228317000000061],[-135.94695999999993,69.23942599999998],[-135.92611699999998,69.254715000000033],[-135.915009,69.257492000000127],[-135.89862099999999,69.255554000000018],[-135.89138800000001,69.251389000000017],[-135.82138099999986,69.215271000000143],[-135.75140399999998,69.179428000000087],[-135.74194299999999,69.175812000000064],[-135.66610700000001,69.146941999999967],[-135.65667699999995,69.143600000000049],[-135.56750499999993,69.11775200000011],[-135.55279499999989,69.116652999999928],[-135.48693800000001,69.113312000000121],[-135.49581899999993,69.124145999999996],[-135.60720799999996,69.145264000000054],[-135.6305539999999,69.151382000000012],[-135.64001499999995,69.154984000000127],[-135.81082199999997,69.242751999999996],[-135.83999600000004,69.259430000000066],[-135.85220300000003,69.268051000000014],[-135.85498000000001,69.273315000000139],[-135.8558349999999,69.284714000000065],[-135.85415599999999,69.290817000000004],[-135.84860199999997,69.296936000000017],[-135.8416749999999,69.301926000000094],[-135.83331299999998,69.306366000000082],[-135.80389400000001,69.316666000000055],[-135.79251099999999,69.319442999999922],[-135.57192999999995,69.33859300000006],[-135.5561219999999,69.338882000000012],[-135.48580900000002,69.33526599999999],[-135.44860799999998,69.332214000000022],[-135.41332999999997,69.323043999999982],[-135.39196799999996,69.309981999999991],[-135.38723800000002,69.30525200000011],[-135.379974,69.301086000000055],[-135.37027,69.297484999999995],[-135.32333399999999,69.285262999999986],[-135.25778200000002,69.271378000000084],[-135.24386599999997,69.268600000000106],[-135.22970599999996,69.266098000000056],[-135.18554699999993,69.258880999999917],[-135.17056300000002,69.257766999999944],[-135.16223099999996,69.261931999999945],[-135.15805099999994,69.268600000000106],[-135.15835599999997,69.274429000000112],[-135.16500899999994,69.279160000000047],[-135.17443800000001,69.283051000000114],[-135.23971599999987,69.3316650000001],[-135.28695699999992,69.413605000000018],[-135.28723100000002,69.419144000000017],[-135.28527800000001,69.425537000000134],[-135.278076,69.430542000000003],[-135.26834099999996,69.434143000000063],[-135.16082800000004,69.473602000000142],[-135.15084799999994,69.476929000000098],[-135.137787,69.478592000000049],[-134.99664300000001,69.48414600000001],[-134.91528299999993,69.485259999999982],[-134.69473300000004,69.481658999999979],[-134.67749000000003,69.480819999999994],[-134.64251699999988,69.477203000000031],[-134.62832599999996,69.474426000000108],[-134.60861199999988,69.468597000000102],[-134.570831,69.453873000000044],[-134.55917399999987,69.450821000000133],[-134.53112799999997,69.445526000000086],[-134.49609399999997,69.441925000000026],[-134.48165900000004,69.442748999999992],[-134.46859699999993,69.444427000000076],[-134.43832399999997,69.454712000000029],[-134.42083699999995,69.463042999999914],[-134.413635,69.468322999999998],[-134.40777600000001,69.474152000000004],[-134.40557899999993,69.480270000000132],[-134.40835600000003,69.491364000000033],[-134.41778599999992,69.500549000000092],[-134.43667600000003,69.508041000000048],[-134.44833399999999,69.511107999999922],[-134.46887200000003,69.542755000000056],[-134.40167199999996,69.638321000000133],[-134.40249600000004,69.649719000000005],[-134.406677,69.654434000000037],[-134.44277999999997,69.68081699999999],[-134.48580899999996,69.706100000000049],[-134.49054000000001,69.710815000000082],[-134.49304199999995,69.715819999999951],[-134.49108899999993,69.722214000000008],[-134.47637900000001,69.723037999999974],[-134.30972299999996,69.715819999999951],[-134.20388799999995,69.668868999999972],[-134.17748999999998,69.64027400000009],[-134.19638099999992,69.621093999999971],[-134.20388799999995,69.616089000000102],[-134.24026500000002,69.585815000000025],[-134.24472000000003,69.579162999999994],[-134.24472000000003,69.573318000000029],[-134.24221799999998,69.568054000000075],[-134.11331200000001,69.538879000000009],[-134.09860199999997,69.539978000000019],[-134.08111600000001,69.548324999999977],[-134.06195099999997,69.555817000000104],[-134.03750600000001,69.560256999999922],[-134.02001999999999,69.559417999999994],[-134.00836200000003,69.556091000000038],[-134.00140399999998,69.551926000000037],[-133.97778299999999,69.528594999999996],[-133.96112099999999,69.509155000000021],[-133.94723499999992,69.506378000000097],[-133.91833499999996,69.508331000000055],[-133.87914999999998,69.513321000000076],[-133.86749299999997,69.515822999999955],[-133.86026000000004,69.520828000000051],[-133.82250999999997,69.555252000000053],[-133.823151,69.5600740000001],[-133.81973300000004,69.564986999999974],[-133.801941,69.573608000000092],[-133.79168699999997,69.576934999999992],[-133.77835099999993,69.576384999999959],[-133.75057999999996,69.547485000000108],[-133.74832199999992,69.542205999999965],[-133.79861500000004,69.481094000000098],[-133.81805399999996,69.464157000000114],[-133.85055499999999,69.445816000000093],[-133.87692300000003,69.433044000000109],[-133.92083699999995,69.412201000000039],[-133.94137599999999,69.405258000000003],[-133.96444699999995,69.400269000000037],[-134.08554100000003,69.340546000000018],[-134.21112099999993,69.276092999999946],[-134.21832299999988,69.271103000000096],[-134.27557400000001,69.226089000000115],[-134.27999899999986,69.219437000000028],[-134.28222699999998,69.213318000000015],[-134.28195199999999,69.20748900000001],[-134.27722199999994,69.202773999999977],[-134.27471899999995,69.197754000000089],[-134.27444500000001,69.186096000000077],[-134.28030399999994,69.180267000000072],[-134.287781,69.175262000000032],[-134.38363599999997,69.11831699999999],[-134.39779699999997,69.117477000000122],[-134.44888300000002,69.119705000000067],[-134.47720300000003,69.118042000000116],[-134.53112799999997,69.112762000000089],[-134.5680539999999,69.106644000000131],[-134.58526599999999,69.098038000000031],[-134.67361500000004,69.017761000000007],[-134.67584199999993,69.01138300000008],[-134.675568,69.005829000000062],[-134.66973899999999,68.9727630000001],[-134.67166099999997,68.966385000000002],[-134.66665599999999,68.956100000000049],[-134.65280200000001,68.947754000000145],[-134.60665900000004,68.935256999999979],[-134.58831799999996,68.928040000000067],[-134.51419099999987,68.887496999999996],[-134.50723300000004,68.883041000000048],[-134.48858599999994,68.870254999999986],[-134.47470099999998,68.856093999999985],[-134.46417199999991,68.84248400000007],[-134.45693999999997,68.826934999999992],[-134.44750999999991,68.811920000000043],[-134.44027700000004,68.80192599999998],[-134.43112199999996,68.792755000000056],[-134.417236,68.784423999999944],[-134.39889499999998,68.777205999999978],[-134.37609899999995,68.770827999999995],[-134.3511049999999,68.764998999999989],[-134.29666099999992,68.754440000000102],[-134.28750599999995,68.75082400000008],[-134.28057899999999,68.746643000000006],[-134.26058999999987,68.733535999999958]],[[-102.14527900000002,69.648604999999975],[-102.16027800000001,69.648331000000042],[-102.17832900000002,69.651093000000003],[-102.21028099999995,69.662200999999982],[-102.22609699999992,69.670258000000103],[-102.23166700000002,69.674698000000149],[-102.24305699999996,69.694138000000123],[-102.243607,69.704436999999984],[-102.24137899999999,69.71026599999999],[-102.23416099999997,69.716660000000047],[-102.22556299999991,69.721924000000001],[-102.21584300000001,69.726654000000053],[-102.15778399999999,69.736099000000081],[-102.13474300000001,69.724701000000096],[-102.12943999999993,69.72026100000005],[-102.12332199999997,69.71276899999998],[-102.12026999999989,69.708038000000045],[-102.11721799999998,69.697753999999975],[-102.11554699999999,69.666655999999989],[-102.11805700000002,69.660812000000135],[-102.12277199999994,69.65498400000007],[-102.13221699999991,69.650542999999971],[-102.14527900000002,69.648604999999975]],[[-77.946655000000021,69.646652000000074],[-77.944992000000013,69.639709000000039],[-77.946105999999986,69.633331000000112],[-77.965835999999967,69.624985000000038],[-78.07028200000002,69.59275800000006],[-78.169997999999964,69.570540999999992],[-78.311934999999949,69.54304500000012],[-78.397780999999952,69.520828000000051],[-78.505004999999869,69.488876000000062],[-78.576401000000033,69.501663000000065],[-78.588057999999933,69.506103999999993],[-78.611388999999917,69.509430000000009],[-78.626098999999954,69.50999500000006],[-78.646117999999888,69.50999500000006],[-78.664443999999889,69.50749200000007],[-78.685271999999941,69.49832200000003],[-78.698043999999982,69.489151000000049],[-78.718886999999938,69.479980000000126],[-78.756957999999941,69.467484000000013],[-78.801940999999943,69.455826000000002],[-78.817504999999926,69.45277400000009],[-78.838608000000022,69.451385000000073],[-78.853058000000033,69.454163000000108],[-78.861938000000009,69.457489000000123],[-78.868331999999953,69.460541000000035],[-78.873885999999857,69.464706000000035],[-78.880279999999971,69.476929000000098],[-78.87860099999989,69.479980000000126],[-78.874160999999958,69.486923000000104],[-78.865004999999996,69.494980000000112],[-78.841385000000002,69.508041000000048],[-78.826110999999969,69.511657999999954],[-78.809722999999963,69.514160000000061],[-78.783324999999991,69.521103000000039],[-78.764175000000023,69.527205999999978],[-78.717772999999966,69.544708000000014],[-78.695266999999944,69.556931000000077],[-78.674438000000009,69.568329000000062],[-78.652785999999935,69.581940000000031],[-78.628051999999968,69.608597000000145],[-78.615554999999915,69.617477000000008],[-78.586394999999925,69.631927000000132],[-78.575835999999981,69.636383000000023],[-78.522506999999905,69.648331000000042],[-78.499724999999899,69.650542999999971],[-78.482772999999895,69.649428999999941],[-78.400283999999999,69.643326000000002],[-78.260833999999932,69.659987999999998],[-78.245270000000005,69.663605000000132],[-78.229445999999996,69.67164600000001],[-78.228057999999976,69.677475000000072],[-78.236938000000009,69.688583000000051],[-78.244995000000017,69.693313999999987],[-78.256957999999941,69.705825999999945],[-78.263625999999931,69.713608000000079],[-78.26916499999993,69.728043000000014],[-78.268615999999952,69.732208000000014],[-78.265838999999971,69.733871000000136],[-78.180557000000022,69.75221300000004],[-78.164168999999958,69.752486999999974],[-78.154174999999952,69.750549000000035],[-78.141953000000001,69.742477000000065],[-78.080001999999979,69.72943099999992],[-78.018341000000021,69.708328000000051],[-77.992767000000015,69.699417000000096],[-77.982773000000009,69.694702000000063],[-77.973891999999978,69.688583000000051],[-77.966110000000015,69.681655999999975],[-77.955565999999976,69.668319999999994],[-77.946655000000021,69.646652000000074]],[[-82.507781999999963,69.704987000000017],[-82.542770000000019,69.704163000000051],[-82.678878999999995,69.726379000000009],[-82.720001000000025,69.733321999999987],[-82.865004999999996,69.770827999999995],[-82.877776999999924,69.774994000000049],[-82.879439999999931,69.778595000000109],[-82.856383999999991,69.800261999999975],[-82.846664000000033,69.803040000000124],[-82.839171999999962,69.80386400000009],[-82.811661000000015,69.806090999999981],[-82.803054999999915,69.805817000000047],[-82.796111999999994,69.805251999999996],[-82.776108000000022,69.804153000000042],[-82.677779999999927,69.794707999999957],[-82.629990000000021,69.789153999999996],[-82.563889000000017,69.778595000000109],[-82.460281000000009,69.761658000000125],[-82.453063999999983,69.720534999999984],[-82.455001999999922,69.714432000000045],[-82.467223999999987,69.709990999999945],[-82.507781999999963,69.704987000000017]],[[-79.423049999999989,69.784988000000055],[-79.331680000000006,69.713318000000072],[-79.328338999999971,69.707214000000079],[-79.329452999999944,69.701385000000016],[-79.333892999999989,69.697478999999987],[-79.354720999999984,69.688034000000073],[-79.482223999999917,69.646103000000096],[-79.544997999999964,69.626647999999932],[-79.571670999999981,69.61943100000002],[-79.600280999999995,69.612761999999975],[-79.631667999999934,69.608871000000079],[-79.957503999999972,69.619979999999998],[-79.963333000000034,69.626373000000115],[-79.974166999999852,69.631652999999972],[-79.994995000000017,69.638596000000007],[-80.02194199999991,69.643599999999935],[-80.038054999999986,69.645263999999941],[-80.059432999999899,69.64387499999998],[-80.065552000000025,69.641663000000108],[-80.081954999999994,69.630538999999999],[-80.082779000000016,69.626923000000147],[-80.078887999999949,69.622208000000114],[-80.032776000000013,69.587204000000042],[-79.991378999999938,69.568878000000041],[-79.937774999999931,69.531937000000084],[-79.935546999999985,69.527205999999978],[-79.93638599999997,69.523604999999918],[-79.940276999999924,69.518875000000094],[-79.974441999999954,69.502213000000097],[-79.993880999999931,69.494431000000134],[-80.011948000000018,69.491652999999985],[-80.021117999999944,69.49275200000011],[-80.046111999999937,69.497756999999979],[-80.200561999999991,69.530823000000112],[-80.214721999999995,69.586655000000064],[-80.353606999999954,69.614700000000084],[-80.461944999999957,69.656372000000147],[-80.492767000000015,69.664993000000038],[-80.577788999999996,69.667480000000126],[-80.74360699999994,69.666092000000049],[-80.761123999999995,69.666930999999977],[-80.793334999999956,69.670258000000103],[-80.804442999999878,69.675537000000077],[-80.809433000000013,69.683044000000052],[-80.809433000000013,69.68942300000009],[-80.801392000000021,69.701096000000121],[-80.730835000000013,69.746368000000132],[-80.725006000000008,69.74914600000011],[-80.720275999999899,69.750549000000035],[-80.649733999999967,69.748596000000077],[-80.520003999999972,69.720825000000048],[-80.498610999999983,69.759719999999959],[-80.50111400000003,69.762497000000053],[-80.502791999999943,69.76638800000012],[-80.504455999999948,69.774994000000049],[-80.503066999999987,69.779984000000127],[-80.499999999999943,69.783324999999991],[-80.490554999999972,69.788589000000115],[-80.46665999999999,69.791931000000091],[-80.388901000000033,69.799988000000042],[-80.371384000000035,69.799149000000057],[-80.340285999999992,69.794707999999957],[-80.338607999999908,69.790542999999957],[-80.343063000000029,69.784149000000127],[-80.34445199999999,69.776931999999988],[-80.329726999999991,69.774155000000121],[-80.314712999999983,69.778045999999961],[-80.289444000000003,69.786652000000061],[-80.264175000000023,69.79525799999999],[-80.246657999999968,69.798599000000024],[-80.232773000000009,69.79942299999999],[-80.20666499999993,69.798035000000084],[-80.191665999999884,69.79525799999999],[-80.182769999999948,69.792755000000056],[-80.129165999999941,69.765549000000021],[-80.073058999999944,69.74971000000005],[-79.972778000000005,69.723312000000078],[-79.862777999999935,69.741088999999988],[-79.768065999999976,69.75277699999998],[-79.756392999999889,69.778869999999927],[-79.752501999999993,69.783599999999979],[-79.744720000000029,69.788589000000115],[-79.687209999999993,69.814697000000081],[-79.678329000000019,69.814423000000147],[-79.512787000000003,69.80693100000002],[-79.476943999999946,69.803589000000102],[-79.453888000000006,69.798874000000069],[-79.442489999999907,69.794983000000002],[-79.431670999999938,69.789703000000088],[-79.423049999999989,69.784988000000055]],[[-83.674437999999952,69.719986000000063],[-83.688598999999954,69.719436999999914],[-83.717772999999966,69.723312000000078],[-83.776947000000007,69.732758000000047],[-83.806945999999982,69.739426000000037],[-83.898894999999982,69.764434999999992],[-83.908614999999998,69.769150000000025],[-83.917220999999984,69.778595000000109],[-83.913054999999986,69.793320000000051],[-83.900833000000034,69.808318999999926],[-83.886948000000018,69.81860400000005],[-83.873885999999914,69.823044000000095],[-83.860274999999945,69.824432000000002],[-83.832503999999972,69.825272000000041],[-83.577498999999989,69.797760000000096],[-83.533324999999934,69.791366999999923],[-83.529174999999952,69.786652000000061],[-83.542220999999984,69.783324999999991],[-83.576675000000023,69.780823000000055],[-83.601944000000003,69.779984000000127],[-83.695830999999998,69.763884999999959],[-83.708618000000001,69.759429999999952],[-83.712783999999999,69.754440000000102],[-83.705840999999964,69.750000000000057],[-83.693329000000006,69.745529000000147],[-83.662506000000008,69.736923000000047],[-83.655838000000017,69.732208000000014],[-83.654175000000009,69.727203000000145],[-83.661117999999988,69.722214000000008],[-83.674437999999952,69.719986000000063]],[[-82.429442999999992,69.782210999999961],[-82.444153000000028,69.778320000000122],[-82.470551,69.781372000000033],[-82.513335999999867,69.788315000000011],[-82.526107999999965,69.790542999999957],[-82.551392000000021,69.796646000000123],[-82.564437999999996,69.800812000000008],[-82.688599000000011,69.850815000000125],[-82.674438000000009,69.874984999999981],[-82.673049999999989,69.875809000000118],[-82.660552999999993,69.876083000000051],[-82.636397999999986,69.871094000000085],[-82.555831999999953,69.860809000000131],[-82.517226999999934,69.854155999999989],[-82.446105999999986,69.822220000000129],[-82.436661000000015,69.817490000000078],[-82.428878999999938,69.812195000000031],[-82.426666000000012,69.799988000000042],[-82.425827000000027,69.793045000000063],[-82.426101999999958,69.786925999999994],[-82.429442999999992,69.782210999999961]],[[-91.520003999999915,69.731369000000086],[-91.535278000000005,69.726929000000041],[-91.549438000000009,69.727203000000145],[-91.560271999999884,69.728316999999947],[-91.725280999999995,69.784149000000127],[-91.735549999999989,69.789153999999996],[-91.733321999999873,69.791931000000091],[-91.475829999999974,69.875534000000073],[-91.449432000000002,69.879149999999981],[-91.433883999999978,69.880538999999942],[-91.419448999999986,69.879974000000118],[-91.409164000000033,69.874984999999981],[-91.456664999999987,69.774994000000049],[-91.463332999999977,69.763611000000026],[-91.470551,69.755554000000075],[-91.520003999999915,69.731369000000086]],[[-91.819167999999934,69.821655000000078],[-91.833892999999989,69.821105999999929],[-91.844727000000034,69.822220000000129],[-91.860001000000011,69.838593000000003],[-91.864166000000012,69.844146999999964],[-91.860549999999989,69.848877000000016],[-91.84944200000001,69.858871000000022],[-91.821120999999891,69.868042000000003],[-91.782501000000025,69.877762000000075],[-91.763901000000033,69.880264000000125],[-91.745543999999995,69.881653000000142],[-91.728607000000011,69.880813999999987],[-91.71305799999999,69.878310999999997],[-91.701110999999969,69.875259000000085],[-91.644454999999937,69.859421000000054],[-91.639724999999999,69.854980000000126],[-91.651671999999962,69.851089000000059],[-91.666397000000018,69.847487999999998],[-91.819167999999934,69.821655000000078]],[[-97.397781000000009,69.685532000000023],[-97.41194200000001,69.684708000000057],[-97.441939999999931,69.685532000000023],[-97.455841000000021,69.684708000000057],[-97.468338000000017,69.682480000000112],[-97.479720999999984,69.678864000000033],[-97.489440999999999,69.673874000000012],[-97.490279999999871,69.668594000000098],[-97.476944000000003,69.654709000000025],[-97.398346000000004,69.597488000000055],[-97.391388000000006,69.593323000000055],[-97.378875999999934,69.592484000000127],[-97.372771999999998,69.598328000000095],[-97.351943999999946,69.631362999999965],[-97.350829999999974,69.636658000000068],[-97.347504000000015,69.642212000000029],[-97.329726999999878,69.669708000000071],[-97.31639100000001,69.686645999999996],[-97.303878999999938,69.698317999999915],[-97.289168999999958,69.69802900000002],[-97.273894999999982,69.694702000000063],[-97.226395000000025,69.675537000000077],[-97.206954999999937,69.667480000000126],[-97.113892000000021,69.622208000000114],[-97.106948999999929,69.617751999999996],[-97.103607000000011,69.614150999999936],[-97.101944000000003,69.609146000000067],[-97.102782999999931,69.603867000000093],[-97.09944200000001,69.594147000000021],[-97.09056099999998,69.584991000000059],[-97.064437999999939,69.572769000000108],[-96.955565999999976,69.523315000000082],[-96.879165999999998,69.491364000000033],[-96.866942999999992,69.487762000000089],[-96.637786999999946,69.437194999999974],[-96.502501999999936,69.409714000000122],[-96.32028200000002,69.354705999999965],[-96.301391999999964,69.346648999999957],[-96.208892999999989,69.306931000000134],[-96.202224999999942,69.302765000000022],[-96.189986999999974,69.288879000000065],[-96.172226000000023,69.26527400000009],[-96.170546999999999,69.260544000000039],[-96.171935999999903,69.255264000000011],[-96.175551999999925,69.249709999999993],[-96.193329000000006,69.237488000000042],[-96.203339000000028,69.232482999999945],[-96.209732000000031,69.22665399999994],[-96.21305799999999,69.211105000000032],[-96.223617999999931,69.141936999999928],[-96.235000999999954,69.064148000000102],[-96.23361199999988,69.059418000000051],[-96.229720999999984,69.054703000000018],[-96.225554999999986,69.049987999999985],[-96.218886999999995,69.045822000000101],[-96.195266999999944,69.038315000000011],[-96.166396999999904,69.031371999999976],[-96.1324919999999,69.024994000000049],[-96.118880999999931,69.025542999999971],[-96.115279999999984,69.030823000000055],[-96.113891999999964,69.036102000000028],[-96.129990000000021,69.054703000000018],[-96.152221999999995,69.103043000000071],[-96.15695199999999,69.163315000000068],[-96.155838000000017,69.168594000000041],[-96.149444999999901,69.174423000000047],[-96.073623999999995,69.231658999999979],[-96.05972300000002,69.232208000000128],[-96.047774999999888,69.228317000000061],[-96.041107000000011,69.223877000000073],[-95.955565999999919,69.141936999999928],[-95.951675000000023,69.13749700000011],[-95.924438000000009,69.089432000000102],[-95.925827000000027,69.084427000000062],[-95.93472300000002,69.078323000000012],[-95.953612999999905,69.067215000000033],[-95.971389999999928,69.054976999999951],[-95.977782999999988,69.049149000000057],[-95.978881999999999,69.043868999999972],[-95.97084000000001,69.034714000000122],[-95.938599000000011,69.003876000000105],[-95.925551999999982,68.995255000000043],[-95.843886999999995,68.923035000000027],[-95.82028200000002,68.870254999999986],[-95.770554000000004,68.891098000000056],[-95.756957999999997,68.891373000000044],[-95.745833999999945,68.888596000000121],[-95.674163999999962,68.869980000000112],[-95.670272999999895,68.865540000000124],[-95.668609999999944,68.860535000000084],[-95.667495999999971,68.855545000000006],[-95.671386999999982,68.850266000000033],[-95.667220999999984,68.835266000000047],[-95.663329999999974,68.830826000000059],[-95.654175000000009,68.826659999999947],[-95.626098999999954,68.826659999999947],[-95.575835999999981,68.830276000000026],[-95.550277999999878,68.833054000000004],[-95.528335999999911,68.840271000000087],[-95.510284000000013,68.852478000000076],[-95.489989999999977,68.861649000000057],[-95.446655000000021,68.879149999999981],[-95.42471299999994,68.886658000000011],[-95.389998999999989,68.895264000000111],[-95.378052000000025,68.89776599999999],[-95.365004999999996,68.899155000000007],[-95.351395000000025,68.899429000000112],[-95.335555999999997,68.897217000000069],[-95.321395999999993,68.893600000000106],[-95.240279999999984,68.86692800000003],[-95.228881999999942,68.863037000000134],[-95.21055599999994,68.854706000000022],[-95.206954999999994,68.850266000000033],[-95.210830999999985,68.844711000000132],[-95.263061999999991,68.802765000000136],[-95.273055999999997,68.797485000000108],[-95.476395000000025,68.711929000000112],[-95.543610000000001,68.702484000000027],[-95.539992999999924,68.708038000000045],[-95.538895000000025,68.713318000000129],[-95.538895000000025,68.723312000000135],[-95.546386999999982,68.732483000000059],[-95.559433000000013,68.741364000000033],[-95.568344000000025,68.745529000000033],[-95.593886999999938,68.752777000000037],[-95.608046999999885,68.753326000000129],[-95.621932999999956,68.752777000000037],[-95.790558000000033,68.737198000000092],[-95.801666000000012,68.733870999999965],[-95.848343,68.669983000000116],[-95.859726000000023,68.653320000000065],[-95.988891999999964,68.62164300000012],[-96.000838999999928,68.61943100000002],[-96.14973399999991,68.55720500000001],[-96.256393000000003,68.503326000000015],[-96.262512000000015,68.497481999999991],[-96.264724999999885,68.487198000000149],[-96.270844000000011,68.481368999999972],[-96.291381999999942,68.473038000000031],[-96.30221599999993,68.469711000000132],[-96.313888999999961,68.467209000000025],[-96.503615999999909,68.446091000000138],[-96.530563000000029,68.444976999999994],[-96.717498999999918,68.474990999999989],[-96.768341000000021,68.485260000000039],[-96.913895000000025,68.518051000000128],[-96.928328999999962,68.521378000000084],[-97.094451999999876,68.539154000000053],[-97.095550999999944,68.534149000000014],[-97.098891999999978,68.528594999999996],[-97.11999499999996,68.520828000000051],[-97.130828999999949,68.517487000000017],[-97.142501999999979,68.514999000000046],[-97.154175000000009,68.512771999999984],[-97.181106999999997,68.511382999999967],[-97.460007000000019,68.534149000000014],[-97.475005999999951,68.535537999999974],[-97.506118999999956,68.541930999999977],[-97.553329000000019,68.55664100000007],[-97.574172999999917,68.564148000000046],[-97.583618000000001,68.568054000000075],[-97.667220999999927,68.60386699999998],[-97.727218999999991,68.63220199999995],[-97.918609999999944,68.675537000000134],[-98.020554000000004,68.693588000000091],[-98.035552999999936,68.694702000000063],[-98.049987999999985,68.694977000000108],[-98.062774999999988,68.693588000000091],[-98.078338999999971,68.683319000000097],[-98.083892999999989,68.677475000000072],[-98.09333799999996,68.672211000000061],[-98.104995999999971,68.669708000000128],[-98.11999499999996,68.670822000000101],[-98.129715000000033,68.674698000000149],[-98.240279999999984,68.720825000000048],[-98.261123999999938,68.733597000000032],[-98.281677000000002,68.746368000000132],[-98.290558000000033,68.755554000000075],[-98.292495999999971,68.760543999999982],[-98.291945999999939,68.765823000000125],[-98.286117999999931,68.771652000000131],[-98.269729999999981,68.783875000000023],[-98.260833999999932,68.789153999999996],[-98.249161000000015,68.800812000000008],[-98.243056999999965,68.811920000000043],[-98.244155999999975,68.822220000000129],[-98.263061999999991,68.829987000000074],[-98.275283999999886,68.833602999999982],[-98.369719999999973,68.857483000000116],[-98.383330999999941,68.859985000000052],[-98.408051,68.855820000000051],[-98.418609999999944,68.852478000000076],[-98.425003000000004,68.841370000000097],[-98.415282999999988,68.815262000000132],[-98.40194699999995,68.801650999999993],[-98.393615999999952,68.787201000000039],[-98.394729999999925,68.776932000000045],[-98.400283999999942,68.770827999999995],[-98.408614999999941,68.764708999999982],[-98.418609999999944,68.760543999999982],[-98.451110999999969,68.750000000000114],[-98.476395000000025,68.746933000000013],[-98.489990000000034,68.746094000000028],[-98.519454999999994,68.747481999999934],[-98.724715999999887,68.791092000000106],[-98.84722899999997,68.825546000000145],[-98.859436000000017,68.829163000000108],[-98.866394000000014,68.833328000000108],[-98.875548999999978,68.84248400000007],[-98.879714999999976,68.852203000000088],[-98.879165999999941,68.857483000000116],[-98.86999499999996,68.874146000000053],[-98.864440999999999,68.879974000000118],[-98.856383999999991,68.886383000000023],[-98.847503999999958,68.891663000000051],[-98.826675000000023,68.899429000000112],[-98.817504999999869,68.904709000000025],[-98.811934999999949,68.910538000000031],[-98.811385999999914,68.915817000000004],[-98.820556999999951,68.924987999999928],[-98.827498999999989,68.929152999999928],[-98.84944200000001,68.933594000000028],[-98.965835999999967,68.949417000000096],[-98.981109999999944,68.950546000000031],[-98.993057000000022,68.947754000000145],[-99.077498999999989,68.918319999999994],[-99.09584000000001,68.899429000000112],[-99.076401000000033,68.891663000000051],[-99.062209999999936,68.883041000000048],[-99.043883999999935,68.864990000000091],[-99.044158999999866,68.859711000000118],[-99.176102000000014,68.825821000000019],[-99.188599000000011,68.824158000000068],[-99.21055599999994,68.831664999999987],[-99.236664000000019,68.848877000000016],[-99.24610899999999,68.852768000000083],[-99.267226999999991,68.859146000000067],[-99.311385999999914,68.868866000000139],[-99.413329999999974,68.884155000000021],[-99.428054999999972,68.887206999999989],[-99.437774999999988,68.891098000000056],[-99.444992000000013,68.895538000000045],[-99.449722000000008,68.899993999999992],[-99.454178000000013,68.909714000000065],[-99.451110999999912,68.915268000000026],[-99.447768999999994,68.926085999999998],[-99.448882999999967,68.936645999999996],[-99.450835999999981,68.941650000000095],[-99.460555999999997,68.950821000000076],[-99.489166000000012,68.967484000000127],[-99.523330999999871,68.983596999999975],[-99.562499999999943,68.99914600000011],[-99.589721999999881,69.011108000000036],[-99.594161999999983,69.015823000000069],[-99.596389999999928,69.020538000000101],[-99.596114999999998,69.025818000000015],[-99.593338000000017,69.031371999999976],[-99.579880000000003,69.043930000000046],[-99.513625999999874,69.101929000000098],[-99.492217999999866,69.1202550000001],[-99.485824999999977,69.125259000000028],[-99.476943999999946,69.13081399999993],[-99.466659999999933,69.13499500000006],[-99.311385999999914,69.158875000000023],[-99.296660999999972,69.158600000000035],[-99.238051999999982,69.149719000000061],[-99.168334999999956,69.138321000000076],[-99.035278000000005,69.135818000000086],[-99.006957999999997,69.136383000000137],[-98.798049999999989,69.17053199999998],[-98.774445000000014,69.17553700000002],[-98.730559999999969,69.189423000000033],[-98.720275999999956,69.193863000000022],[-98.711120999999991,69.199141999999995],[-98.702788999999996,69.205261000000007],[-98.699722000000008,69.210815000000025],[-98.701110999999969,69.220825000000104],[-98.705275999999969,69.230820000000051],[-98.615554999999915,69.294708000000071],[-98.533889999999928,69.291367000000037],[-98.441375999999877,69.298035000000027],[-98.415558000000033,69.301086000000055],[-98.403335999999967,69.303588999999988],[-98.393341000000021,69.308029000000033],[-98.387512000000015,69.313873000000058],[-98.384170999999981,69.319442999999922],[-98.388061999999991,69.329162999999994],[-98.397232000000031,69.338318000000072],[-98.44027699999998,69.363876000000005],[-98.457229999999981,69.371917999999994],[-98.476944000000003,69.379974000000061],[-98.488892000000021,69.383605999999986],[-98.523330999999985,69.388321000000019],[-98.535552999999936,69.391937000000098],[-98.555556999999965,69.399994000000049],[-98.562499999999943,69.404159999999933],[-98.598052999999993,69.430542000000003],[-98.611937999999952,69.444138000000009],[-98.608886999999868,69.449706999999989],[-98.591675000000009,69.467484000000013],[-98.585555999999997,69.473312000000135],[-98.577224999999999,69.479430999999977],[-98.563323999999909,69.477203000000031],[-98.553329000000019,69.473312000000135],[-98.540833000000021,69.469711000000075],[-98.508347000000015,69.463318000000129],[-98.477492999999924,69.461928999999941],[-98.447768999999994,69.461655000000007],[-98.422501000000011,69.465820000000008],[-98.419448999999986,69.47137499999991],[-98.424164000000019,69.475815000000125],[-98.44888299999991,69.483047000000056],[-98.463897999999972,69.486374000000012],[-98.549438000000009,69.501389000000131],[-98.564712999999927,69.504715000000147],[-98.577224999999999,69.508331000000055],[-98.586944999999901,69.512207000000103],[-98.601669000000015,69.520828000000051],[-98.605559999999912,69.530548000000124],[-98.604995999999971,69.535812000000078],[-98.601943999999946,69.541091999999992],[-98.592772999999909,69.552765000000022],[-98.575561999999991,69.570267000000058],[-98.566955999999948,69.576384999999959],[-98.556655999999862,69.580826000000059],[-98.531386999999938,69.584991000000059],[-98.501403999999923,69.584427000000119],[-98.485549999999989,69.583327999999995],[-98.433318999999983,69.575546000000031],[-98.385559000000001,69.566085999999927],[-98.357773000000009,69.55914300000012],[-98.350554999999929,69.554703000000131],[-98.338897999999972,69.546097000000032],[-98.334166999999979,69.54136699999998],[-98.322509999999909,69.532486000000063],[-98.310821999999973,69.523880000000133],[-98.28443900000002,69.506378000000097],[-98.248610999999983,69.484984999999995],[-98.092498999999975,69.424988000000042],[-98.078613000000018,69.422760000000039],[-98.049727999999959,69.423035000000084],[-98.036666999999852,69.424698000000035],[-98.024719000000005,69.427200000000084],[-98.00389100000001,69.435806000000014],[-97.997771999999998,69.441650000000038],[-97.99722300000002,69.446930000000066],[-98.006957999999997,69.450821000000133],[-98.071395999999993,69.468872000000147],[-98.157226999999978,69.4994200000001],[-98.166945999999996,69.503326000000015],[-98.188599000000011,69.516098],[-98.211394999999925,69.538879000000009],[-98.255843999999968,69.574707000000046],[-98.263061999999991,69.57887299999993],[-98.295837000000006,69.585266000000104],[-98.330291999999986,69.590271000000143],[-98.360549999999932,69.596649000000127],[-98.367767000000015,69.601089000000115],[-98.321670999999981,69.713608000000079],[-98.314163000000008,69.722214000000008],[-98.281951999999933,69.751663000000008],[-98.230285999999978,69.788879000000122],[-98.211120999999991,69.79942299999999],[-98.199722000000008,69.802765000000136],[-98.187209999999936,69.805251999999996],[-98.143889999999942,69.806366000000025],[-98.118057000000022,69.81053200000008],[-98.107772999999895,69.814697000000081],[-98.088608000000022,69.825272000000041],[-98.079726999999991,69.83137499999998],[-98.061661000000015,69.848877000000016],[-98.058333999999888,69.854431000000034],[-98.049164000000019,69.865814],[-98.043059999999969,69.871643000000006],[-98.034164000000033,69.878036000000009],[-98.012222000000008,69.885817999999972],[-97.999725000000012,69.888046000000088],[-97.974166999999909,69.892211999999972],[-97.945540999999992,69.893600000000106],[-97.930557000000022,69.893325999999945],[-97.913329999999974,69.891098],[-97.880279999999914,69.88499500000006],[-97.755004999999926,69.851379000000065],[-97.691101000000003,69.819992000000127],[-97.689162999999951,69.815262000000132],[-97.682219999999973,69.810806000000014],[-97.660004000000015,69.803314000000057],[-97.610000999999954,69.788589000000115],[-97.579726999999991,69.781937000000028],[-97.449158000000011,69.760269000000108],[-97.341109999999958,69.706375000000094],[-97.33944699999995,69.701385000000016],[-97.348052999999879,69.695251000000042],[-97.358611999999994,69.690810999999997],[-97.37110899999999,69.688583000000051],[-97.397781000000009,69.685532000000023]],[[-97.325012000000015,69.889160000000061],[-97.315276999999924,69.888046000000088],[-97.301665999999955,69.889709000000039],[-97.289992999999924,69.893051000000128],[-97.276947000000007,69.894440000000145],[-97.267775999999969,69.894440000000145],[-97.25,69.891373000000044],[-97.237503000000004,69.887771999999984],[-97.230559999999912,69.883331000000055],[-97.226943999999946,69.873596000000134],[-97.230559999999912,69.868042000000003],[-97.236937999999896,69.862198000000149],[-97.243880999999988,69.857483000000116],[-97.269164999999987,69.852478000000076],[-97.283889999999985,69.852768000000083],[-97.299163999999905,69.856094000000098],[-97.308883999999978,69.860260000000039],[-97.317779999999914,69.869431000000134],[-97.418334999999956,69.893600000000106],[-97.448883000000023,69.894149999999911],[-97.465835999999911,69.896378000000084],[-97.480285999999921,69.898880000000133],[-97.488892000000021,69.908035000000041],[-97.492767000000015,69.917755000000113],[-97.488602000000014,69.943863000000079],[-97.485000999999954,69.949417000000039],[-97.476105000000018,69.955551000000071],[-97.466399999999965,69.960815000000082],[-97.453612999999962,69.963043000000027],[-97.4375,69.961929000000055],[-97.350829999999974,69.949417000000039],[-97.335555999999997,69.946091000000024],[-97.328339000000028,69.941650000000095],[-97.327498999999989,69.931656000000089],[-97.346114999999998,69.917205999999965],[-97.349730999999963,69.911651999999947],[-97.351669000000015,69.901382000000012],[-97.347228999999913,69.896652000000017],[-97.337509000000011,69.892761000000121],[-97.325012000000015,69.889160000000061]],[[-100.84973099999991,69.925537000000077],[-100.86389199999991,69.924698000000092],[-100.87444299999999,69.928588999999988],[-100.87999000000002,69.933043999999995],[-100.87999000000002,69.938309000000061],[-100.85861199999994,69.977767999999969],[-100.85333300000002,69.983597000000145],[-100.84333800000002,69.98803700000002],[-100.83112299999993,69.990814000000057],[-100.81500199999994,69.989700000000084],[-100.80695300000002,69.985809000000017],[-100.80526700000001,69.980270000000019],[-100.80721999999997,69.97526600000009],[-100.80721999999997,69.969986000000006],[-100.81249999999994,69.958878000000027],[-100.83112299999993,69.935531999999967],[-100.83999599999999,69.929977000000065],[-100.84973099999991,69.925537000000077]],[[-87.091385000000002,70.150269000000094],[-87.06361400000003,70.147766000000104],[-87.051665999999955,70.141937000000098],[-87.02555799999999,70.135543999999982],[-87.020843999999954,70.131927000000019],[-87.023894999999982,70.127762000000018],[-87.021941999999967,70.121094000000028],[-87.009170999999924,70.116378999999995],[-86.994155999999975,70.113602000000071],[-86.922501000000011,70.104156000000103],[-86.905562999999972,70.103043000000071],[-86.87388599999997,70.09887700000013],[-86.856658999999922,70.097762999999986],[-86.825835999999924,70.092758000000117],[-86.798889000000031,70.087204000000099],[-86.778060999999923,70.089706000000035],[-86.761123999999938,70.093597000000102],[-86.688599000000011,70.115265000000022],[-86.670273000000009,70.118042000000116],[-86.639724999999999,70.116653000000099],[-86.611664000000019,70.111923000000104],[-86.598617999999988,70.108597000000032],[-86.586670000000026,70.104430999999977],[-86.545546999999942,70.081375000000094],[-86.549728000000016,70.07249500000006],[-86.550551999999982,70.066376000000048],[-86.536666999999909,70.062484999999981],[-86.511123999999995,70.053040000000067],[-86.505004999999983,70.048035000000027],[-86.503615999999965,70.036925999999994],[-86.505844000000025,70.028595000000053],[-86.50556899999998,70.023315000000025],[-86.502501999999993,70.020828000000108],[-86.487503000000004,70.017761000000007],[-86.47193900000002,70.015823000000069],[-86.460555999999997,70.012206999999989],[-86.45666499999993,70.007491999999957],[-86.460006999999962,70.00471500000009],[-86.468886999999995,69.999709999999993],[-86.489715999999987,69.983871000000079],[-86.502791999999999,69.980545000000063],[-86.523620999999991,69.978042999999957],[-86.542496000000028,69.977478000000133],[-86.662216000000001,69.967484000000127],[-86.714447000000007,69.966934000000094],[-86.747771999999998,69.969437000000084],[-86.76556399999987,69.969711000000018],[-86.833069000000023,69.974426000000051],[-86.864440999999999,69.978592000000106],[-86.881377999999984,69.979706000000078],[-86.89805599999994,69.982207999999957],[-86.926391999999964,69.989150999999993],[-86.938599000000011,69.993317000000047],[-86.962219000000005,70.00471500000009],[-86.985274999999945,70.01388500000013],[-87.002227999999945,70.014999000000103],[-87.016113000000018,70.010544000000095],[-87.021941999999967,70.005264000000011],[-87.029449,70.000824000000023],[-87.037215999999944,69.99664300000012],[-87.050277999999878,69.991653000000042],[-87.066665999999998,69.989150999999993],[-87.086394999999925,69.987761999999975],[-87.104172000000005,69.987761999999975],[-87.135009999999966,69.992752000000053],[-87.148055999999997,69.997482000000048],[-87.168883999999991,70.008605999999929],[-87.182769999999948,70.01388500000013],[-87.195830999999998,70.017212000000029],[-87.21362299999987,70.017487000000074],[-87.229445999999996,70.019440000000031],[-87.240828999999906,70.021378000000141],[-87.255004999999983,70.025269000000037],[-87.274444999999957,70.034987999999998],[-87.277495999999985,70.038879000000065],[-87.27694699999995,70.044983000000116],[-87.273620999999991,70.050812000000121],[-87.272507000000019,70.054703000000018],[-87.272780999999952,70.059981999999991],[-87.278335999999967,70.067490000000021],[-87.288329999999974,70.073317999999972],[-87.295837000000006,70.077484000000027],[-87.307495000000017,70.080826000000002],[-87.319457999999884,70.083328000000051],[-87.335555999999997,70.085541000000035],[-87.34973100000002,70.086104999999975],[-87.363892000000021,70.088593000000117],[-87.376937999999939,70.093322999999941],[-87.378325999999959,70.096100000000035],[-87.376099000000011,70.099426000000108],[-87.371384000000035,70.103867000000037],[-87.355834999999956,70.107208000000071],[-87.341948999999886,70.108597000000032],[-87.307495000000017,70.107208000000071],[-87.277785999999992,70.114699999999971],[-87.267226999999878,70.113312000000064],[-87.265609999999924,70.113556000000017],[-87.254729999999995,70.112198000000092],[-87.222503999999901,70.111374000000126],[-87.187774999999931,70.108322000000044],[-87.180557000000022,70.109420999999998],[-87.173049999999989,70.112198000000092],[-87.164443999999946,70.117203000000131],[-87.156112999999891,70.11914100000007],[-87.130829000000006,70.120255000000043],[-87.118332000000009,70.11914100000007],[-87.102782999999988,70.12081900000004],[-87.099730999999963,70.123596000000077],[-87.100554999999929,70.125534000000073],[-87.143065999999976,70.139435000000049],[-87.145279000000016,70.142761000000064],[-87.141388000000006,70.146378000000027],[-87.128326000000015,70.149719000000061],[-87.113891999999964,70.148880000000077],[-87.091385000000002,70.150269000000094]],[[-125.05695299999996,70.118317000000104],[-125.08500700000002,70.116333000000111],[-125.10221899999993,70.118072999999981],[-125.11971999999997,70.124954000000002],[-125.122772,70.130066000000056],[-125.12332200000003,70.13546800000006],[-125.12110899999999,70.141372999999987],[-125.11277799999999,70.14697300000006],[-125.10333300000002,70.151688000000092],[-125.08332799999999,70.159973000000093],[-125.07055700000001,70.16187999999994],[-125,70.162933000000066],[-124.97693600000002,70.167206000000078],[-124.96305799999999,70.168320000000051],[-124.95500199999998,70.164153999999996],[-124.98832700000003,70.134430000000009],[-124.99777199999994,70.129974000000061],[-125.04415899999992,70.120315999999946],[-125.05695299999996,70.118317000000104]],[[-124.67944299999994,70.161652000000117],[-124.69444299999998,70.161377000000073],[-124.73750299999995,70.174149000000114],[-124.75361599999991,70.182479999999998],[-124.75917099999998,70.186919999999986],[-124.76194799999996,70.191925000000083],[-124.75890400000003,70.196640000000116],[-124.74471999999997,70.197754000000089],[-124.55110200000001,70.208602999999925],[-124.53611799999987,70.208602999999925],[-124.51888999999994,70.206940000000031],[-124.51055899999994,70.20277399999992],[-124.50527999999997,70.198318000000029],[-124.50750700000003,70.192749000000049],[-124.53694200000001,70.18193100000002],[-124.67944299999994,70.161652000000117]],[[-112.65527299999991,70.266098],[-112.67223399999995,70.266098],[-112.69193999999999,70.267487000000017],[-112.72193900000002,70.272491000000002],[-112.74722300000002,70.278594999999996],[-112.75499699999995,70.282761000000107],[-112.76027699999992,70.287201000000096],[-112.76306199999993,70.292480000000069],[-112.76139799999993,70.298598999999967],[-112.75389100000001,70.303588999999988],[-112.73111,70.309708000000001],[-112.71611000000001,70.310531999999967],[-112.699997,70.309417999999994],[-112.6875,70.306366000000082],[-112.67971799999992,70.302475000000015],[-112.67859599999991,70.300812000000064],[-112.64334099999996,70.28137200000009],[-112.64277600000003,70.275818000000129],[-112.64472999999987,70.269714000000079],[-112.65527299999991,70.266098]],[[-112.96972700000003,70.28137200000009],[-113.00306699999999,70.281097000000102],[-113.104446,70.281936999999971],[-113.14083899999997,70.283325000000048],[-113.15834000000001,70.285262999999986],[-113.20361300000002,70.292480000000069],[-113.16972399999992,70.306931000000134],[-113.15750100000002,70.309708000000001],[-113.12888299999997,70.312485000000095],[-113.11054999999993,70.3119200000001],[-112.993607,70.299423000000104],[-112.97609699999992,70.297484999999938],[-112.96362299999998,70.294434000000138],[-112.95333900000003,70.290817000000004],[-112.94554099999999,70.286652000000004],[-112.95612299999999,70.283325000000048],[-112.96972700000003,70.28137200000009]],[[-100.765289,70.25],[-100.78083800000002,70.25],[-100.7938769999999,70.253326000000015],[-100.84166699999997,70.278320000000008],[-100.86305199999993,70.291091999999992],[-100.86833200000001,70.295532000000037],[-100.85193600000002,70.323883000000137],[-100.83889799999992,70.325546000000031],[-100.80943300000001,70.324158000000125],[-100.77639799999997,70.322495000000004],[-100.75890399999997,70.320540999999992],[-100.74804699999999,70.316940000000102],[-100.74082899999996,70.310531999999967],[-100.75890399999997,70.254990000000021],[-100.765289,70.25]],[[-116.80526699999996,70.509430000000009],[-116.78971899999993,70.507217000000026],[-116.75418100000002,70.50749200000007],[-116.63390400000003,70.493591000000094],[-116.60722399999997,70.488037000000077],[-116.59638999999993,70.484984999999995],[-116.56833599999999,70.473876999999959],[-116.57305899999989,70.467758000000117],[-116.70111099999997,70.468597000000102],[-116.71916199999993,70.470261000000107],[-116.787781,70.483597000000032],[-116.814438,70.488876000000062],[-116.82055700000001,70.493591000000094],[-116.82861300000002,70.503601000000003],[-116.82224300000001,70.508881000000031],[-116.80526699999996,70.509430000000009]],[[-116.287781,70.553314000000114],[-116.26027699999992,70.549988000000042],[-116.24333199999995,70.550261999999975],[-116.18943799999994,70.54553199999998],[-116.140556,70.538589000000002],[-116.12748699999997,70.535812000000078],[-116.13110399999999,70.532486000000006],[-116.29110699999995,70.515549000000021],[-116.32333399999993,70.513611000000083],[-116.44611399999991,70.508881000000031],[-116.46472199999999,70.509154999999964],[-116.47778299999999,70.511932000000058],[-116.495003,70.519989000000066],[-116.49582700000002,70.522765999999933],[-116.47000099999997,70.538040000000024],[-116.30304699999988,70.552199999999971],[-116.287781,70.553314000000114]],[[-116.56304899999998,70.534424000000001],[-116.57833900000003,70.533051000000057],[-116.596947,70.533324999999991],[-116.75028999999995,70.539153999999996],[-116.76363400000002,70.541931000000091],[-116.77443700000003,70.545258000000047],[-116.766953,70.548324999999977],[-116.75527999999991,70.551085999999941],[-116.72361799999987,70.556366000000025],[-116.71193699999998,70.559417999999937],[-116.68167099999999,70.561920000000043],[-116.66471899999999,70.562485000000038],[-116.64611799999994,70.562195000000031],[-116.54305999999997,70.559707999999944],[-116.52278100000001,70.558593999999971],[-116.50945300000001,70.556091000000038],[-116.50778200000002,70.550261999999975],[-116.51806599999998,70.546646000000123],[-116.56304899999998,70.534424000000001]],[[-115.92054699999989,70.54136699999998],[-115.95445299999994,70.540267999999969],[-115.99333200000001,70.541656000000103],[-116.051941,70.54553199999998],[-116.06111099999993,70.548324999999977],[-116.04250299999995,70.552199999999971],[-115.98388699999998,70.560806000000071],[-115.97222899999991,70.563599000000011],[-115.91972399999997,70.572494999999947],[-115.87917299999998,70.578598000000113],[-115.86389200000002,70.579987000000074],[-115.82501199999996,70.578323000000069],[-115.81416300000001,70.574997000000053],[-115.80803700000001,70.570541000000105],[-115.81082199999997,70.564986999999974],[-115.81916799999999,70.560806000000071],[-115.84111000000001,70.554153000000042],[-115.86638599999998,70.549423000000047],[-115.92054699999989,70.54136699999998]],[[-116.87943999999993,70.547485000000108],[-116.88945000000001,70.543869000000029],[-116.923317,70.542755000000056],[-117.03611799999993,70.546371000000136],[-117.18331899999998,70.537491000000102],[-117.20195000000001,70.53776600000009],[-117.22000099999997,70.539153999999996],[-117.27555799999993,70.550261999999975],[-117.28888699999993,70.55304000000001],[-117.29778299999998,70.556931000000077],[-117.30166600000001,70.561920000000043],[-117.29778299999998,70.571380999999974],[-117.26083399999999,70.584717000000126],[-117.25140399999992,70.587204000000042],[-117.23805199999998,70.589156999999943],[-117.21640000000002,70.591095000000109],[-117.19943199999994,70.591660000000104],[-117.16332999999997,70.588593000000003],[-116.89444700000001,70.556091000000038],[-116.88362100000001,70.552765000000136],[-116.87943999999993,70.547485000000108]],[[-128.08612099999999,70.605545000000006],[-128.10415599999999,70.595825000000104],[-128.1201779999999,70.597214000000122],[-128.11444099999994,70.591934000000037],[-128.11721799999992,70.580551000000014],[-128.12387100000001,70.57388300000008],[-128.13275099999993,70.569153000000028],[-128.34054599999996,70.539153999999996],[-128.34167499999995,70.542205999999908],[-128.252228,70.646378000000084],[-128.24581899999998,70.653046000000074],[-128.23416099999986,70.656097000000102],[-128.21639999999996,70.654709000000025],[-128.18832399999997,70.648604999999975],[-128.11498999999998,70.628036000000009],[-128.10360699999995,70.624419999999986],[-128.09472700000003,70.62052900000009],[-128.0883179999999,70.616089000000045],[-128.08499099999995,70.611099000000024],[-128.08612099999999,70.605545000000006]],[[-100.23082699999992,70.451660000000061],[-100.24333199999995,70.449142000000109],[-100.26000999999985,70.449996999999996],[-100.27610799999997,70.453049000000078],[-100.47250400000001,70.496367999999961],[-100.49916100000002,70.503326000000129],[-100.63054699999998,70.543320000000108],[-100.662781,70.554703000000075],[-100.67083700000001,70.558868000000075],[-100.67639199999996,70.563309000000004],[-100.68138099999993,70.573044000000095],[-100.68138099999993,70.583602999999982],[-100.67832900000002,70.594147000000021],[-100.66443599999991,70.637771999999984],[-100.65194699999995,70.669708000000071],[-100.51194800000002,70.676376000000062],[-100.49500299999988,70.675262000000089],[-100.48000300000001,70.673309000000131],[-100.46916199999998,70.669434000000138],[-100.46112099999999,70.659987999999998],[-100.451683,70.651932000000102],[-100.44360399999999,70.64776599999999],[-100.34722899999991,70.608032000000094],[-100.33640300000002,70.604431000000034],[-100.31945799999994,70.603317000000061],[-100.21833799999996,70.564422999999977],[-100.22444200000001,70.456649999999968],[-100.23082699999992,70.451660000000061]],[[-103.17777999999993,70.622482000000048],[-103.19360399999994,70.622208000000114],[-103.24833699999994,70.622757000000036],[-103.26640299999991,70.624146000000053],[-103.27500900000001,70.628311000000053],[-103.28111299999995,70.632751000000042],[-103.281387,70.638046000000088],[-103.26834099999996,70.666382000000056],[-103.22582999999986,70.676376000000062],[-103.21000700000002,70.676651000000049],[-103.19415299999997,70.673035000000027],[-103.173607,70.6336060000001],[-103.17304999999999,70.628586000000041],[-103.17777999999993,70.622482000000048]],[[-103.35082999999992,70.687195000000088],[-103.36416599999995,70.685256999999979],[-103.38110399999988,70.685806000000127],[-103.39499699999999,70.689148000000046],[-103.42887899999994,70.69999700000011],[-103.43776700000001,70.703872999999987],[-103.44638099999997,70.708037999999988],[-103.45249899999993,70.712494000000106],[-103.45889299999999,70.722214000000008],[-103.46278399999994,70.732208000000014],[-103.45694700000001,70.737198000000035],[-103.44360399999999,70.739150999999993],[-103.42777999999998,70.739426000000037],[-103.39917000000003,70.737198000000035],[-103.36361699999992,70.727767999999969],[-103.34111000000001,70.72026100000005],[-103.33500699999996,70.716094999999996],[-103.33444199999997,70.710815000000082],[-103.33860800000002,70.699417000000096],[-103.34333799999996,70.693588000000091],[-103.35082999999992,70.687195000000088]],[[-71.471664000000033,71.012772000000041],[-71.428878999999995,71.012206999999989],[-71.389175000000023,71.013885000000073],[-71.371108999999933,71.011931999999945],[-71.357497999999964,71.009720000000073],[-71.344727000000034,71.005554000000018],[-71.339171999999962,70.998322000000087],[-71.339721999999995,70.99136400000009],[-71.343063000000029,70.984985000000052],[-71.386672999999917,70.922485000000108],[-71.392226999999991,70.916656000000103],[-71.402495999999871,70.911926000000051],[-71.415557999999976,70.90776100000005],[-71.433060000000012,70.904709000000139],[-71.451110999999912,70.903046000000018],[-71.474441999999954,70.902481000000023],[-71.495543999999938,70.90277100000003],[-71.654448999999943,70.890822999999955],[-71.733063000000016,70.874984999999924],[-71.933884000000035,70.833328000000051],[-71.937774999999931,70.824706999999989],[-71.946380999999974,70.820831000000112],[-71.955565999999976,70.818329000000006],[-71.991668999999945,70.814697000000081],[-72.038605000000018,70.811371000000008],[-72.081954999999994,70.809708000000114],[-72.096664000000033,70.809708000000114],[-72.112212999999997,70.811371000000008],[-72.198607999999979,70.882750999999985],[-72.223327999999981,70.916931000000091],[-72.225280999999939,70.924423000000047],[-72.226395000000025,70.930542000000059],[-72.213897999999915,70.934708000000001],[-72.202224999999999,70.93664600000011],[-72.166655999999989,70.938034000000016],[-72.148894999999925,70.936371000000065],[-72.136672999999973,70.933594000000028],[-72.133620999999948,70.931656000000032],[-72.145554000000004,70.926085999999998],[-72.149170000000026,70.921097000000032],[-72.136123999999995,70.916931000000091],[-72.117492999999911,70.917205999999965],[-72.097778000000005,70.919708000000014],[-72.078339000000028,70.923599000000081],[-72.057769999999948,70.933043999999995],[-72.044723999999917,70.944426999999962],[-72.039443999999946,70.950272000000098],[-72.033324999999934,70.963042999999971],[-72.026672000000019,70.98275799999999],[-72.019729999999868,71.034424000000058],[-72.021392999999989,71.041930999999977],[-72.008620999999948,71.049713000000111],[-71.916107000000011,71.06442300000009],[-71.884170999999924,71.068878000000097],[-71.851669000000015,71.072220000000016],[-71.831680000000006,71.071106000000043],[-71.794723999999974,71.053040000000067],[-71.730834999999956,71.045532000000037],[-71.644454999999994,71.034987999999998],[-71.546950999999979,71.018600000000106],[-71.471664000000033,71.012772000000041]],[[-96.563323999999966,71.292205999999965],[-96.546950999999979,71.289154000000053],[-96.535552999999993,71.28276100000005],[-96.472504000000015,71.232208000000071],[-96.470275999999956,71.226089000000059],[-96.480835000000013,71.208878000000141],[-96.487503000000004,71.203598000000056],[-96.561110999999983,71.208328000000108],[-96.578063999999983,71.210541000000035],[-96.628601000000003,71.220260999999937],[-96.638610999999912,71.226089000000059],[-96.641678000000013,71.231368999999972],[-96.642776000000026,71.234421000000054],[-96.652495999999985,71.287201000000096],[-96.649170000000026,71.29304500000012],[-96.610549999999989,71.290543000000014],[-96.581116000000009,71.293594000000041],[-96.563323999999966,71.292205999999965]],[[-98.895554000000004,71.27777100000003],[-98.90834000000001,71.273040999999978],[-98.97444200000001,71.284714000000008],[-98.989715999999987,71.290543000000014],[-99.000290000000007,71.297211000000004],[-99.00556899999998,71.301926000000037],[-99.008621000000005,71.308029000000147],[-99.008895999999936,71.313873000000001],[-99.00306699999993,71.319443000000092],[-98.963622999999927,71.352203000000088],[-98.955840999999964,71.352203000000088],[-98.930283000000031,71.342209000000082],[-98.923324999999977,71.337769000000094],[-98.914443999999946,71.331665000000044],[-98.895554000000004,71.27777100000003]],[[-73.120543999999995,71.479705999999965],[-73.129439999999931,71.450821000000076],[-73.077498999999932,71.466385000000002],[-73.043335000000013,71.47886699999998],[-73.035552999999936,71.48414600000001],[-73.016402999999968,71.500000000000114],[-73.005844000000025,71.511658000000125],[-72.998046999999985,71.517211999999915],[-72.985275000000001,71.521378000000027],[-72.97222899999997,71.521378000000027],[-72.962508999999955,71.51998900000001],[-72.934157999999968,71.509155000000135],[-72.827498999999989,71.454987000000017],[-72.820281999999963,71.449707000000103],[-72.817504999999983,71.444977000000108],[-72.823333999999988,71.439697000000024],[-72.831954999999994,71.435806000000127],[-72.849730999999963,71.4327550000001],[-72.872497999999894,71.43081699999999],[-72.921660999999972,71.428314],[-72.992767000000015,71.419433999999967],[-73.010009999999966,71.415543000000071],[-73.022780999999952,71.411101999999971],[-73.031112999999948,71.406646999999964],[-73.028885000000002,71.399155000000064],[-73.007507000000032,71.352203000000088],[-72.978881999999942,71.329712000000086],[-72.974166999999909,71.324997000000053],[-72.97193900000002,71.317490000000134],[-72.973617999999874,71.313309000000061],[-72.983886999999982,71.308594000000028],[-72.996657999999911,71.304153000000099],[-73.025283999999999,71.297485000000108],[-73.060546999999929,71.294708000000014],[-73.089446999999893,71.313873000000001],[-73.163329999999917,71.33248900000001],[-73.198607999999922,71.336380000000077],[-73.244995000000017,71.348877000000073],[-73.265288999999939,71.357483000000002],[-73.272506999999962,71.36192299999999],[-73.275008999999955,71.365814000000057],[-73.276397999999972,71.379150000000038],[-73.265015000000005,71.396378000000141],[-73.255004999999926,71.408874999999966],[-73.254729999999995,71.415268000000083],[-73.293609999999887,71.454711999999972],[-73.301392000000021,71.459717000000012],[-73.320556999999894,71.469711000000075],[-73.347504000000015,71.477768000000026],[-73.362502999999947,71.481094000000041],[-73.374160999999901,71.485809000000074],[-73.379990000000021,71.519714000000022],[-73.377212999999983,71.522766000000104],[-73.366942999999992,71.527480999999966],[-73.189986999999917,71.565536000000066],[-73.176940999999999,71.566376000000105],[-73.147507000000019,71.564423000000147],[-73.132216999999912,71.561371000000065],[-73.090285999999935,71.546371000000079],[-73.081116000000009,71.542206000000078],[-73.073623999999938,71.536926000000051],[-73.074722000000008,71.531372000000033],[-73.11332699999997,71.485809000000074],[-73.120543999999995,71.479705999999965]],[[-72.760833999999875,71.531937000000084],[-72.786391999999978,71.530273000000022],[-72.830841000000021,71.531096999999988],[-72.848891999999921,71.532211000000018],[-72.867492999999911,71.533875000000023],[-72.949996999999996,71.547211000000118],[-72.982497999999907,71.553589000000102],[-73.008895999999879,71.56109600000002],[-73.020554000000004,71.565811000000053],[-73.030562999999916,71.571655000000078],[-73.035277999999948,71.575546000000145],[-73.039992999999981,71.579987000000074],[-73.037506000000008,71.587203999999986],[-73.034164000000033,71.592209000000025],[-72.968062999999972,71.636658000000011],[-72.948607999999979,71.644714000000079],[-72.924712999999997,71.649429000000112],[-72.806655999999919,71.659149000000014],[-72.781113000000005,71.660812000000135],[-72.745269999999948,71.659987999999942],[-72.726669000000015,71.658325000000048],[-72.709166999999979,71.655258000000117],[-72.695830999999941,71.651093000000117],[-72.684433000000013,71.642761000000121],[-72.662215999999944,71.604431000000034],[-72.660552999999936,71.598038000000031],[-72.671111999999994,71.585815000000025],[-72.682495000000017,71.574706999999989],[-72.701110999999912,71.557479999999998],[-72.712783999999942,71.547211000000118],[-72.718886999999995,71.542755000000056],[-72.727492999999981,71.538589000000115],[-72.742492999999968,71.534149000000127],[-72.760833999999875,71.531937000000084]],[[-73.370270000000005,71.554428000000087],[-73.394454999999937,71.554428000000087],[-73.406661999999983,71.556366000000025],[-73.418335000000013,71.56109600000002],[-73.42860399999995,71.566940000000045],[-73.436934999999949,71.573318000000029],[-73.450561999999991,71.584152000000074],[-73.449721999999952,71.58998100000008],[-73.448043999999925,71.594146999999964],[-73.441939999999988,71.598877000000016],[-73.388610999999912,71.634155000000021],[-73.348342999999943,71.658325000000048],[-73.276108000000022,71.691924999999912],[-73.243332000000009,71.696639999999945],[-73.213332999999977,71.698593000000074],[-73.209166999999979,71.698868000000118],[-73.190552000000025,71.697204999999997],[-73.167496000000028,71.692200000000128],[-73.155562999999972,71.687195000000088],[-73.148894999999982,71.679977000000065],[-73.149993999999992,71.674423000000104],[-73.170546999999942,71.668319999999937],[-73.221114999999998,71.660262999999986],[-73.249434999999949,71.652481000000023],[-73.262511999999958,71.648041000000035],[-73.282776000000013,71.637771999999984],[-73.303604000000007,71.621918000000051],[-73.320281999999963,71.605545000000006],[-73.325012000000015,71.599152000000061],[-73.331679999999949,71.588042999999971],[-73.338607999999965,71.571105999999929],[-73.339721999999938,71.565262000000132],[-73.352492999999981,71.557479999999998],[-73.370270000000005,71.554428000000087]],[[-96.958892999999932,71.704437000000098],[-96.99888599999997,71.701096000000064],[-97.036391999999921,71.701385000000016],[-97.050277999999935,71.704162999999994],[-97.049727999999902,71.709991000000116],[-97.040282999999988,71.72026100000005],[-97.02416999999997,71.731093999999985],[-96.99888599999997,71.741363999999919],[-96.991668999999945,71.743042000000059],[-96.990829000000019,71.743866000000025],[-96.96945199999999,71.74859600000002],[-96.963897999999972,71.752212999999983],[-96.924163999999962,71.755554000000018],[-96.886397999999986,71.755264000000011],[-96.866942999999992,71.753601000000117],[-96.850554999999872,71.749419999999986],[-96.84445199999999,71.744141000000013],[-96.851104999999905,71.738875999999948],[-96.86860699999994,71.728592000000106],[-96.881377999999927,71.723312000000078],[-96.896956999999929,71.718323000000112],[-96.915832999999964,71.713608000000079],[-96.958892999999932,71.704437000000098]],[[-95.339995999999928,71.731369000000029],[-95.39805599999994,71.729431000000091],[-95.43582200000003,71.729980000000012],[-95.471114999999941,71.733597000000145],[-95.483062999999902,71.736923000000047],[-95.48832699999997,71.740814000000114],[-95.488051999999868,71.745529000000147],[-95.450286999999946,71.818877999999927],[-95.44027699999998,71.824158000000011],[-95.420836999999892,71.828873000000044],[-95.384170999999981,71.836104999999975],[-95.348891999999978,71.840546000000074],[-95.328613000000018,71.842208999999968],[-95.301666000000012,71.844147000000135],[-95.286666999999966,71.843048000000124],[-95.275832999999977,71.84027100000003],[-95.265838999999971,71.836655000000007],[-95.261672999999973,71.833328000000051],[-95.259734999999921,71.827484000000027],[-95.310546999999929,71.737198000000035],[-95.324721999999952,71.732758000000047],[-95.339995999999928,71.731369000000029]],[[-134.49554399999994,68.75221300000004],[-134.48803699999991,68.736649],[-134.48803699999991,68.731094000000098],[-134.48306299999996,68.720535000000041],[-134.47387700000002,68.711379999999963],[-134.46472199999994,68.707489000000066],[-134.44638099999997,68.700271999999984],[-134.40112299999993,68.687759000000085],[-134.37387100000001,68.682480000000112],[-134.33999599999999,68.67886400000009],[-134.30804399999994,68.678040000000124],[-134.28277600000001,68.681366000000139],[-134.24636799999996,68.687484999999981],[-134.23071299999998,68.692841000000101],[-134.22692899999998,68.694138000000123],[-134.22332800000004,68.699706999999933],[-134.26058999999987,68.733535999999958],[-134.26251200000002,68.736374000000126],[-134.28750599999995,68.753601000000003],[-134.30835000000002,68.766097999999943],[-134.32638499999996,68.773605000000089],[-134.42306500000001,68.831664999999987],[-134.54168700000002,68.919708000000071],[-134.558044,68.933043999999995],[-134.614441,68.983321999999987],[-134.62387099999995,68.992752000000053],[-134.62887599999999,69.003052000000139],[-134.62914999999992,69.008880999999974],[-134.62469499999992,69.015548999999965],[-134.56222499999996,69.082764000000111],[-134.55499299999997,69.08776899999998],[-134.53750600000001,69.09387200000009],[-134.49194299999999,69.104155999999989],[-134.46362299999998,69.106094000000098],[-134.44805899999989,69.106094000000098],[-134.36303699999996,69.102203000000031],[-134.34887700000002,69.103043000000071],[-134.33889799999992,69.106369000000086],[-134.22747800000002,69.174988000000099],[-134.22305299999999,69.181656000000032],[-134.22082499999993,69.188034000000016],[-134.22137499999997,69.216385000000116],[-134.21694899999989,69.223038000000088],[-134.162781,69.254715000000033],[-134.15389999999996,69.258880999999917],[-134.142517,69.261383000000023],[-134.12832599999996,69.262206999999989],[-134.06915299999997,69.262771999999984],[-134.05471799999998,69.263610999999969],[-134.02917500000001,69.266936999999984],[-133.92861899999991,69.282211000000075],[-133.90557899999988,69.287490999999989],[-133.89529400000004,69.290817000000004],[-133.88668799999999,69.294983000000116],[-133.87914999999998,69.299987999999985],[-133.87332199999997,69.30581699999999],[-133.86859100000004,69.312484999999924],[-133.86886599999997,69.318329000000119],[-133.87332199999997,69.323043999999982],[-133.87582399999997,69.328322999999955],[-133.86972000000003,69.33415199999996],[-133.67028799999997,69.386658000000068],[-133.65863000000002,69.389160000000004],[-133.55056799999994,69.405823000000055],[-133.40777600000001,69.414703000000088],[-133.37222299999991,69.412201000000039],[-133.35583499999996,69.409988000000055],[-133.32806400000004,69.404709000000082],[-133.30972299999996,69.402771000000143],[-133.23443599999996,69.397217000000126],[-133.21749899999992,69.39637799999997],[-133.20584099999991,69.398880000000077],[-133.073059,69.434982000000048],[-132.99941999999999,69.481934000000138],[-132.966095,69.511657999999954],[-132.95220899999998,69.563309000000061],[-132.95193499999999,69.569153000000028],[-132.95666499999993,69.57388300000008],[-132.96581999999995,69.57748400000014],[-132.98638900000003,69.590271000000143],[-132.988586,69.595260999999994],[-132.98361199999994,69.602203000000088],[-132.97747800000002,69.608032000000094],[-132.92251599999997,69.642212000000029],[-132.904449,69.650542999999971],[-132.89388999999994,69.65387000000004],[-132.86471599999999,69.658325000000104],[-132.82110599999999,69.660538000000031],[-132.78778099999994,69.659714000000065],[-132.66229199999998,69.651206999999999],[-132.628784,69.648048000000074],[-132.62028499999997,69.646378000000141],[-132.61479199999991,69.644043000000011],[-132.606628,69.639046000000121],[-132.55279499999995,69.631362999999965],[-132.53527800000001,69.630264000000011],[-132.41751099999993,69.635544000000039],[-132.39389,69.64027400000009],[-132.372772,69.646942000000081],[-132.34527600000001,69.659424000000058],[-132.33248900000001,69.671097000000088],[-132.32748399999997,69.677765000000079],[-132.333618,69.682480000000112],[-132.441101,69.702484000000027],[-132.45748900000001,69.704711999999972],[-132.46777299999991,69.701385000000016],[-132.51779199999999,69.68331900000004],[-132.54823299999998,69.685310000000129],[-132.55523700000003,69.683823000000018],[-132.57455400000003,69.683983000000126],[-132.582718,69.685654],[-132.586884,69.688148000000126],[-132.58673099999993,69.691649999999981],[-132.54833999999994,69.735809000000074],[-132.54055799999998,69.740814000000114],[-132.52749600000004,69.742477000000065],[-132.47305299999999,69.747756999999922],[-132.39974999999998,69.751663000000008],[-132.28918499999992,69.724991000000102],[-132.21304299999997,69.690810999999997],[-132.19888300000002,69.688034000000073],[-132.16305499999999,69.685256999999979],[-132.14697299999995,69.685256999999979],[-132.12304700000004,69.713608000000079],[-132.11663799999991,69.719436999999914],[-132.10720800000001,69.723602000000085],[-132.08331299999992,69.728591999999992],[-131.95443699999998,69.75471500000009],[-131.87469499999992,69.763884999999959],[-131.85861199999999,69.763611000000026],[-131.84527600000001,69.765273999999977],[-131.8347169999999,69.768599999999992],[-131.76556400000004,69.794707999999957],[-131.75891100000001,69.800536999999963],[-131.75836200000003,69.806366000000025],[-131.76028400000001,69.811646000000053],[-131.7647399999999,69.816376000000105],[-131.76666299999994,69.821655000000078],[-131.76000999999997,69.827484000000084],[-131.75058000000001,69.83137499999998],[-131.64501999999999,69.864990000000034],[-131.62359600000002,69.871368000000018],[-131.44778400000001,69.918594000000041],[-131.42639199999991,69.947479000000101],[-131.42111199999994,69.954162999999994],[-131.41027799999995,69.957214000000022],[-131.34887700000002,69.95248400000014],[-131.26916499999993,69.937759000000028],[-131.24609399999991,69.931091000000038],[-131.237213,69.927199999999971],[-131.23055999999991,69.923035000000141],[-131.20916699999998,69.899155000000007],[-131.20333899999997,69.889160000000061],[-131.20138499999996,69.883881000000088],[-131.20193499999999,69.878036000000009],[-131.2049869999999,69.871918000000051],[-131.21054099999998,69.865265000000079],[-131.21722399999987,69.859421000000054],[-131.22164899999996,69.854155999999989],[-131.22222899999991,69.848328000000038],[-131.220551,69.84304800000001],[-131.21194499999996,69.833603000000096],[-131.20526100000001,69.829437000000041],[-131.19638099999997,69.825546000000145],[-131.18499799999995,69.824158000000068],[-131.08056599999998,69.88499500000006],[-131.07501199999996,69.891663000000051],[-131.03140299999995,69.949417000000039],[-131.01028399999996,69.98692299999999],[-131.01278699999995,70.023315000000025],[-131.01947000000001,70.027771000000087],[-130.93029799999999,70.083054000000118],[-130.89224200000001,70.099152000000004],[-130.74832199999997,70.081940000000145],[-130.65612799999991,70.108597000000032],[-130.554169,70.165267999999969],[-130.54305999999991,70.168320000000051],[-130.48721299999994,70.173309000000017],[-130.47222899999997,70.173874000000069],[-130.46771200000001,70.170089999999959],[-130.47271699999993,70.167099000000121],[-130.48388699999998,70.164992999999981],[-130.51141399999995,70.162201000000039],[-130.52224699999994,70.158875000000023],[-130.54724099999999,70.127472000000012],[-130.54806499999995,70.121643000000006],[-130.54638699999992,70.116378999999995],[-130.54223599999995,70.111648999999943],[-130.53555299999999,70.107483000000059],[-130.52416999999997,70.103867000000037],[-130.5102839999999,70.101089000000002],[-130.49527,70.101654000000053],[-130.48416099999992,70.104705999999965],[-130.43237299999998,70.125870000000134],[-130.40722700000003,70.140533000000119],[-130.35360699999995,70.132202000000007],[-130.33084099999996,70.110809000000074],[-130.32250999999997,70.101379000000009],[-130.18472299999996,70.053589000000045],[-130.16861,70.053314],[-129.97555499999993,70.069442999999978],[-129.96304299999997,70.071655000000021],[-129.92611699999992,70.078598],[-129.89083900000003,70.092758000000117],[-129.86444099999994,70.126923000000033],[-129.84609999999986,70.154984000000127],[-129.8324889999999,70.195525999999916],[-129.79000899999994,70.219986000000119],[-129.73138399999999,70.253052000000082],[-129.69778400000001,70.262496999999996],[-129.68667600000003,70.265549000000078],[-129.67306499999995,70.266936999999984],[-129.64724699999999,70.251663000000065],[-129.60916099999992,70.213042999999971],[-129.45916699999998,70.147491000000116],[-129.40472399999999,70.123031999999967],[-129.40335099999999,70.11775200000011],[-129.40527299999997,70.106369000000086],[-129.40640300000001,70.10054000000008],[-129.4100039999999,70.094436999999971],[-129.433899,70.068054000000132],[-129.49749800000001,70.020538000000101],[-129.57360799999998,69.997757000000092],[-129.59555099999994,69.991363999999919],[-129.88946499999992,69.917205999999965],[-129.99304199999989,69.892487000000017],[-130.22805800000003,69.840546000000131],[-130.49581899999998,69.78166200000004],[-130.55999800000001,69.737198000000092],[-130.56140099999999,69.725815000000068],[-130.56472799999995,69.719711000000018],[-130.57028200000002,69.713043000000084],[-130.57833900000003,69.708038000000045],[-130.62136799999996,69.695251000000042],[-130.64697299999989,69.691360000000145],[-130.70416299999994,69.688309000000118],[-130.75750700000003,69.682480000000112],[-130.78030399999994,69.676926000000094],[-130.78973400000001,69.672760000000039],[-130.83639500000004,69.6336060000001],[-130.83944699999995,69.627472000000068],[-130.84081999999995,69.616089000000102],[-130.83667000000003,69.611099000000024],[-130.83749399999999,69.605545000000063],[-130.84414699999996,69.599716000000001],[-130.91915899999998,69.56721500000009],[-130.92861899999997,69.563309000000061],[-130.94473299999999,69.565536000000122],[-131.02667199999996,69.593048000000067],[-131.03973399999995,69.601653999999996],[-131.04168699999997,69.606934000000024],[-131.04083300000002,69.612761999999975],[-131.05306999999999,69.637206999999989],[-131.16332999999992,69.627762000000132],[-131.18859900000001,69.623871000000065],[-131.32861299999996,69.579987000000131],[-131.40750099999997,69.586655000000064],[-131.58694500000001,69.567490000000134],[-131.69168100000002,69.551650999999993],[-131.70498699999996,69.560256999999922],[-131.71389799999992,69.563873000000001],[-131.72778299999999,69.566940000000102],[-131.74108899999993,69.567490000000134],[-131.75585899999999,69.566940000000102],[-131.99722299999991,69.53137200000009],[-132.00640899999996,69.527205999999978],[-132.03890999999999,69.508331000000055],[-132.04666099999992,69.503326000000015],[-132.0799869999999,69.480819999999994],[-132.14169300000003,69.412766000000033],[-132.13305699999995,69.403320000000065],[-132.12164299999995,69.399994000000049],[-132.09750399999996,69.396057000000098],[-132.08526599999999,69.390823000000069],[-132.08084099999996,69.386108000000036],[-132.07888800000001,69.3808140000001],[-132.08166499999999,69.374695000000031],[-132.09472700000003,69.362762000000032],[-132.11663799999991,69.357208000000014],[-132.32916299999999,69.31442300000009],[-132.52417000000003,69.277771000000087],[-132.53195199999999,69.280547999999953],[-132.54556300000002,69.283325000000048],[-132.56167599999998,69.285812000000135],[-132.57998699999996,69.287490999999989],[-132.59222399999993,69.287200999999982],[-132.70611600000001,69.26887499999998],[-132.71777299999997,69.266388000000063],[-132.739441,69.260817999999972],[-132.76028399999996,69.254166000000112],[-132.76779199999999,69.249146000000053],[-132.90722699999998,69.1244200000001],[-132.90722699999998,69.118866000000082],[-132.90527299999997,69.042755],[-132.94610599999999,69.037491000000045],[-133.05084199999999,69.054703000000018],[-133.10638399999993,69.050537000000134],[-133.1719359999999,69.043320000000051],[-133.18331899999998,69.040817000000061],[-133.19332900000001,69.037491000000045],[-133.20083599999987,69.032485999999949],[-133.20556599999998,69.025818000000015],[-133.21499600000004,69.006653000000028],[-133.21664399999997,69.001937999999996],[-133.21444700000001,68.99664300000012],[-133.209991,68.991928000000087],[-133.20333900000003,68.987761999999975],[-133.19860799999998,68.983046999999942],[-133.19888300000002,68.977203000000145],[-133.21304299999991,68.938034000000073],[-133.22610499999996,68.913605000000132],[-133.23361199999999,68.908600000000092],[-133.31332399999985,68.871918000000051],[-133.32333399999993,68.868590999999924],[-133.33471699999996,68.866089000000045],[-133.34887699999996,68.865265000000079],[-133.36331200000001,68.866652999999985],[-133.37692300000003,68.869140999999956],[-133.38583399999999,68.873032000000023],[-133.39944500000001,68.881362999999965],[-133.40167199999991,68.886658000000011],[-133.39529400000004,68.89027400000009],[-133.37969999999996,68.89027400000009],[-133.36694299999994,68.891936999999984],[-133.359711,68.896942000000024],[-133.35360700000001,68.90277100000003],[-133.35803199999992,68.907486000000063],[-133.36944599999993,68.910538000000031],[-133.38275099999998,68.911102000000142],[-133.39556899999997,68.909424000000058],[-133.46112099999999,68.892761000000121],[-133.466095,68.888321000000133],[-133.484711,68.850266000000033],[-133.493042,68.826659999999947],[-133.49081399999994,68.821655000000078],[-133.48416099999997,68.81164600000011],[-133.47082499999999,68.797485000000108],[-133.46389799999992,68.793320000000108],[-133.4549869999999,68.789703000000145],[-133.40557899999999,68.772217000000012],[-133.32138099999992,68.746368000000132],[-133.16418499999992,68.707214000000079],[-133.08999599999999,68.694977000000108],[-133.05416899999994,68.691360000000145],[-133.03750599999995,68.690536000000009],[-133.02334599999995,68.691360000000145],[-133.01083399999987,68.693038999999999],[-132.98803699999996,68.697754000000032],[-132.95861799999994,68.69859299999996],[-132.94305399999996,68.696365000000014],[-132.91833500000001,68.690262000000075],[-132.92056299999996,68.695526000000029],[-132.9336239999999,68.709717000000069],[-132.94250499999998,68.713318000000129],[-132.95471199999997,68.71527100000003],[-133.00723299999999,68.719711000000075],[-133.02252199999998,68.719711000000075],[-133.03527800000001,68.718048000000124],[-133.04583699999995,68.711379999999963],[-133.11248799999998,68.714996000000042],[-133.142517,68.718597000000102],[-133.15249599999993,68.720825000000048],[-133.25500499999998,68.758606000000043],[-133.25945999999999,68.763321000000076],[-133.26611299999996,68.778869999999984],[-133.26141399999995,68.785537999999974],[-133.24999999999994,68.788040000000024],[-133.23416099999992,68.785812000000078],[-133.225281,68.782211000000018],[-133.22082499999999,68.777480999999966],[-133.22082499999999,68.771652000000131],[-133.21664399999997,68.766937000000098],[-133.20306399999998,68.764160000000004],[-133.16168200000004,68.75749200000007],[-133.14752199999998,68.758330999999998],[-133.13891599999994,68.76249700000011],[-133.1397399999999,68.766937000000098],[-133.21139499999998,68.790817000000118],[-133.23498499999999,68.795821999999987],[-133.250854,68.798035000000141],[-133.28178399999996,68.794426000000101],[-133.28863499999989,68.793097999999986],[-133.30145300000004,68.789429000000041],[-133.32556199999999,68.787491000000045],[-133.33554099999992,68.789703000000145],[-133.34445199999993,68.793594000000041],[-133.35665899999992,68.801085999999941],[-133.35888699999998,68.806366000000025],[-133.35415599999993,68.832214000000135],[-133.332764,68.843872000000147],[-133.27722199999988,68.856934000000024],[-133.26583900000003,68.859421000000054],[-133.23776199999998,68.861099000000024],[-133.22192399999994,68.858871000000022],[-133.18804899999986,68.849152000000061],[-133.16778599999998,68.836655000000064],[-133.15917999999999,68.827209000000096],[-133.15222199999999,68.823044000000095],[-133.12191799999994,68.805817000000047],[-133.10833700000001,68.80304000000001],[-133.09167500000001,68.802199999999914],[-133.06222500000001,68.802765000000136],[-133.00527999999997,68.815262000000132],[-132.95803799999993,68.835541000000092],[-132.962219,68.846099999999922],[-132.9619449999999,68.85165400000011],[-132.95193499999999,68.854979999999955],[-132.93667599999998,68.854979999999955],[-132.86749299999997,68.846099999999922],[-132.85611,68.842758000000003],[-132.78594999999996,68.818428000000097],[-132.75363199999998,68.802765000000136],[-132.49194299999994,68.801085999999941],[-132.48055999999991,68.803589000000102],[-132.47027600000001,68.806931000000077],[-132.40557899999999,68.842758000000003],[-132.40029900000002,68.847214000000122],[-132.39529400000004,68.853867000000093],[-132.39279199999999,68.859985000000052],[-132.396973,68.864700000000084],[-132.49249299999997,68.90637200000009],[-132.50363200000004,68.909714000000065],[-132.55334499999998,68.916091999999992],[-132.56750499999998,68.915268000000026],[-132.57638499999996,68.911102000000142],[-132.574432,68.906097000000102],[-132.56777999999991,68.901657000000057],[-132.54055799999998,68.896103000000096],[-132.55557299999992,68.878311000000053],[-132.66528299999993,68.841934000000037],[-132.67806999999993,68.840271000000087],[-132.69360399999994,68.840546000000131],[-132.76229899999998,68.857491000000095],[-132.77094999999997,68.858147000000031],[-132.77778599999999,68.860153000000082],[-132.78027299999991,68.862983999999983],[-132.833618,68.917755000000113],[-132.85998499999988,68.989150999999993],[-132.868042,69.021378000000141],[-132.87191799999999,69.056641000000013],[-132.86944600000004,69.062759000000085],[-132.86553999999995,69.068329000000006],[-132.81527699999998,69.08638000000002],[-132.80526699999996,69.089432000000102],[-132.77111799999994,69.085541000000035],[-132.75418100000002,69.084717000000069],[-132.68917799999991,69.082489000000123],[-132.67501800000002,69.083328000000051],[-132.66332999999997,69.085815000000139],[-132.54083300000002,69.135268999999994],[-132.46081500000003,69.124695000000088],[-132.46472199999999,69.119141000000127],[-132.46749899999998,69.107208000000071],[-132.45916699999992,69.108032000000037],[-132.42861900000003,69.11775200000011],[-132.40777599999996,69.1244200000001],[-132.38500999999997,69.139160000000061],[-132.37887599999999,69.145264000000054],[-132.36886600000003,69.158600000000035],[-132.36138899999997,69.171371000000136],[-132.343323,69.203323000000069],[-132.34249899999992,69.220260999999994],[-132.33972199999994,69.22665399999994],[-132.33056599999998,69.230820000000051],[-132.32055699999995,69.233871000000079],[-132.30612199999996,69.234711000000118],[-132.22360199999997,69.213608000000022],[-132.2225039999999,69.141662999999994],[-132.16805999999997,69.213882000000126],[-132.11694299999999,69.242203000000075],[-132.05804399999994,69.242203000000075],[-131.99600199999998,69.251632999999913],[-131.96389799999997,69.256942999999978],[-131.87527499999999,69.279709000000025],[-131.86499000000003,69.283051000000114],[-131.8052669999999,69.316375999999991],[-131.79751599999986,69.321381000000088],[-131.79110700000001,69.327208999999982],[-131.71444699999995,69.397766000000104],[-131.72555499999993,69.401093000000003],[-131.73416099999997,69.400542999999971],[-131.80667099999999,69.39137299999993],[-131.950287,69.395827999999938],[-131.96499600000004,69.397217000000126],[-131.97277800000001,69.400269000000037],[-131.97000099999997,69.406372000000033],[-131.65222199999994,69.471924000000058],[-131.63919099999998,69.473602000000142],[-131.60748299999995,69.473312000000135],[-131.59136999999993,69.470825000000048],[-131.45889299999999,69.449141999999938],[-131.44528200000002,69.446365000000071],[-131.432953,69.437194999999974],[-131.42910799999993,69.434700000000134],[-131.43160999999998,69.431365999999969],[-131.43710299999992,69.429031000000066],[-131.45193499999999,69.420532000000094],[-131.46221899999995,69.417206000000078],[-131.47164900000001,69.413039999999967],[-131.47943099999998,69.408035000000098],[-131.48611500000004,69.402206000000092],[-131.53472899999997,69.333327999999995],[-131.52584799999994,69.329436999999928],[-131.49941999999999,69.332489000000066],[-131.42083700000001,69.361649000000114],[-131.41278099999994,69.366653000000099],[-131.40750099999997,69.373306000000071],[-131.38989300000003,69.404159999999933],[-131.377228,69.427483000000052],[-131.32193000000001,69.49331699999999],[-131.27166699999992,69.501099000000124],[-131.25723299999999,69.501663000000065],[-131.24581899999998,69.49832200000003],[-131.23330699999991,69.48414600000001],[-131.22387700000002,69.463608000000136],[-131.22027599999996,69.453323000000012],[-131.21664399999992,69.442748999999992],[-131.21276899999992,69.422202999999968],[-131.21093799999989,69.4125370000001],[-131.21026599999999,69.406044000000065],[-131.21304299999997,69.387497000000053],[-131.22360200000003,69.384430000000123],[-131.23330699999991,69.384720000000129],[-131.24526999999995,69.382202000000007],[-131.26641799999993,69.375809000000061],[-131.31777999999997,69.358871000000136],[-131.39529399999998,69.318603999999993],[-131.40307599999994,69.313873000000058],[-131.415009,69.301376000000062],[-131.41445899999997,69.296936000000017],[-131.33526599999993,69.316666000000055],[-131.32470699999999,69.31999200000007],[-131.19332899999995,69.365264999999965],[-131.18859900000001,69.368317000000104],[-131.16650400000003,69.404930000000093],[-131.16223099999996,69.490540000000067],[-131.16418499999997,69.495529000000033],[-131.23123199999992,69.543892000000028],[-131.25385999999997,69.571846000000107],[-131.22546399999999,69.580719000000101],[-131.20681799999994,69.55720500000001],[-131.15046699999994,69.518600000000049],[-131.13006599999994,69.516388000000006],[-131.11053499999997,69.485329000000036],[-131.130157,69.429375000000107],[-131.14851399999992,69.403534000000036],[-131.1458439999999,69.374695000000031],[-131.13583399999999,69.359985000000108],[-131.12832599999996,69.361923000000047],[-131.10122699999999,69.393921000000091],[-131.08525099999991,69.440514000000007],[-131.06085199999995,69.470688000000109],[-131.06617699999993,69.491096000000084],[-131.06394999999998,69.512389999999982],[-131.08924899999994,69.531914000000143],[-131.10920699999997,69.543449000000123],[-131.127838,69.554543000000024],[-131.14781199999993,69.561195000000112],[-131.16599999999988,69.567856000000006],[-131.18832399999991,69.574707000000046],[-131.19473300000004,69.57887299999993],[-131.19665499999991,69.584152000000131],[-131.19610599999999,69.589980999999966],[-131.19055199999997,69.596649000000127],[-131.183899,69.602478000000133],[-131.17471299999994,69.606369000000029],[-131.13833599999998,69.614150999999936],[-131.12359600000002,69.614700000000084],[-131.10748299999989,69.612488000000042],[-131.09359699999999,69.609421000000111],[-131.087219,69.605255],[-131.08306900000002,69.600539999999967],[-131.04577599999999,69.524429000000055],[-131.02999899999998,69.485809000000131],[-131.02780200000001,69.463882000000069],[-131.03390499999995,69.429153000000042],[-131.03695700000003,69.423035000000084],[-131.07028200000002,69.367477000000065],[-131.10803199999992,69.33526599999999],[-131.11331200000001,69.328598],[-131.11639400000001,69.32249500000006],[-131.10888699999998,69.321655000000021],[-131.09973100000002,69.325821000000076],[-131.05084199999993,69.354431000000091],[-131.02667199999996,69.383865000000128],[-130.98999000000003,69.449141999999938],[-130.99121099999996,69.50104500000009],[-130.9922029999999,69.504203999999959],[-130.99026500000002,69.539429000000041],[-130.98083499999996,69.543594000000041],[-130.96887200000003,69.545821999999987],[-130.952789,69.543320000000108],[-130.94638099999992,69.539154000000053],[-130.94222999999994,69.534148999999957],[-130.94055200000003,69.52915999999999],[-130.9244379999999,69.448593000000017],[-130.93971299999998,69.421486000000016],[-130.94154400000002,69.417816000000073],[-130.94555699999995,69.414314000000047],[-130.95039399999996,69.411324000000093],[-130.98580900000002,69.383040999999935],[-131.02583299999998,69.347878000000037],[-131.02984600000002,69.344368000000088],[-131.03317300000003,69.340377999999987],[-131.03199799999999,69.337212000000022],[-131.03668200000004,69.310532000000023],[-131.02780200000001,69.306641000000127],[-131.01696800000002,69.307480000000055],[-131.01419099999993,69.313873000000058],[-131.01333599999998,69.319442999999922],[-131.010559,69.325546000000088],[-131.00500499999998,69.332214000000022],[-130.99832200000003,69.338043000000027],[-130.95693999999997,69.371917999999994],[-130.93194599999998,69.38348400000001],[-130.92710899999992,69.386490000000038],[-130.91844200000003,69.386818000000005],[-130.91177400000004,69.384818999999993],[-130.90928599999995,69.381980999999996],[-130.89611799999994,69.380539000000056],[-130.89889500000004,69.352768000000026],[-130.90249600000004,69.340820000000122],[-130.90640300000001,69.328872999999987],[-130.91427599999992,69.318313999999987],[-130.93194599999998,69.304977000000122],[-130.93972799999995,69.299987999999985],[-130.96362299999987,69.285262999999986],[-131.00057999999996,69.256653000000142],[-131.024719,69.209717000000126],[-131.01806599999992,69.141936999999928],[-131.01419099999993,69.136932000000058],[-130.99832200000003,69.134720000000016],[-130.9372249999999,69.134430000000009],[-130.92861899999997,69.145264000000054],[-130.93112199999996,69.222488000000055],[-130.93276999999995,69.227767999999912],[-130.93917799999991,69.232208000000128],[-130.9513849999999,69.246368000000075],[-130.950287,69.257766999999944],[-130.94723499999998,69.264160000000118],[-130.94168100000002,69.270538000000045],[-130.93499800000001,69.276382000000069],[-130.82110599999993,69.374695000000031],[-130.81304899999998,69.379700000000128],[-130.77139299999999,69.398880000000077],[-130.76055899999994,69.402206000000092],[-130.73165899999998,69.403320000000065],[-130.71472199999999,69.402206000000092],[-130.70028699999995,69.402771000000143],[-130.689728,69.406096999999988],[-130.66027800000001,69.42942800000003],[-130.65472399999993,69.43609600000002],[-130.64529400000004,69.454712000000029],[-130.65280200000001,69.457763999999941],[-130.667236,69.457214000000079],[-130.74777199999994,69.449141999999938],[-130.71499599999993,69.462203999999986],[-130.52502400000003,69.543594000000041],[-130.50723300000004,69.552474999999959],[-130.47860700000001,69.574707000000046],[-130.392517,69.645828000000108],[-130.385559,69.651657000000114],[-130.36248799999998,69.673874000000012],[-130.36608899999987,69.686371000000008],[-130.28112799999991,69.700271999999984],[-130.03308099999998,69.731934000000081],[-129.691956,69.784424000000115],[-129.67251599999992,69.792480000000012],[-129.65307599999994,69.800536999999963],[-129.624146,69.812485000000038],[-129.60220300000003,69.818877999999984],[-129.41332999999992,69.838042999999971],[-129.31555199999997,69.84664900000007],[-129.24276699999984,69.849990999999989],[-129.17999299999997,69.849152000000004],[-129.14862099999993,69.849990999999989],[-129.09942599999994,69.858871000000022],[-129.05889899999988,69.873871000000008],[-129.04196199999996,69.883606000000043],[-129.02722199999999,69.895264000000111],[-129.01501499999995,69.908325000000048],[-129.00058000000001,69.933043999999995],[-128.98831199999995,69.946091000000024],[-128.97360200000003,69.95748900000001],[-128.96527100000003,69.962494000000049],[-128.95526100000001,69.966385000000116],[-128.94415300000003,69.969437000000084],[-128.93194600000004,69.971649000000127],[-128.90084799999994,69.971924000000115],[-128.88723799999997,69.968872000000033],[-128.86471599999999,69.961655000000121],[-128.85610999999989,69.957764000000054],[-128.85470599999996,69.954711999999915],[-128.93444799999992,69.844146999999964],[-128.94665499999991,69.841934000000037],[-128.96417199999996,69.843322999999998],[-129.03805499999999,69.851929000000098],[-129.08248899999995,69.850540000000137],[-129.10971099999989,69.847763000000043],[-129.134186,69.843322999999998],[-129.14529399999998,69.840271000000087],[-129.15612799999997,69.836928999999998],[-129.163635,69.83137499999998],[-129.169464,69.824706999999989],[-129.16027799999995,69.715819999999951],[-129.15390000000002,69.700271999999984],[-129.14999399999994,69.695526000000029],[-129.14138800000001,69.691649999999981],[-129.13027999999991,69.688034000000073],[-128.97747800000002,69.674698000000149],[-128.96304299999997,69.675262000000089],[-128.92501799999997,69.68081699999999],[-128.78613300000001,69.760818000000086],[-128.64001500000001,69.84304800000001],[-128.54473899999999,69.885268999999994],[-128.44195599999989,69.921920999999998],[-128.32415800000001,69.948318000000086],[-128.31054700000004,69.958327999999995],[-128.30862400000001,70.008041000000105],[-128.31222499999996,70.012772000000041],[-128.349152,70.03915400000011],[-128.35638399999999,70.048874000000012],[-128.36138900000003,70.058868000000018],[-128.36972000000003,70.095825000000048],[-128.36831699999988,70.101654000000053],[-128.36193800000001,70.108322000000044],[-128.35333299999996,70.113037000000077],[-128.34304799999995,70.116928000000144],[-128.31054700000004,70.126923000000033],[-128.24414099999996,70.146378000000027],[-128.10916099999997,70.182204999999954],[-128.09414700000002,70.182479999999998],[-128.05667099999994,70.178039999999953],[-128.01055899999994,70.178314000000114],[-127.99472000000003,70.179428000000087],[-127.96833799999996,70.182754999999986],[-127.84861799999999,70.208878000000141],[-127.61501299999992,70.228867000000093],[-127.58500699999996,70.229431000000034],[-127.54998799999998,70.22665400000011],[-127.51500699999985,70.22164900000007],[-127.51750199999998,70.225540000000137],[-127.55082700000003,70.236374000000012],[-127.578056,70.242751999999996],[-127.61305199999987,70.247757000000036],[-127.71665999999999,70.259720000000073],[-127.73166700000002,70.261382999999967],[-127.79194599999994,70.25999500000006],[-127.85833699999995,70.263046000000088],[-127.87581599999987,70.264435000000105],[-128.02835099999993,70.28637700000013],[-128.03695700000003,70.290543000000071],[-128.06664999999987,70.307205000000067],[-128.07611099999991,70.343597000000045],[-128.07843000000003,70.346436000000097],[-128.07144199999988,70.348267000000078],[-128.0616149999999,70.347923000000037],[-128.05343599999998,70.346092000000056],[-128.04661599999986,70.343933000000106],[-128.02711499999998,70.340766999999971],[-127.98889200000002,70.345824999999991],[-127.97250399999996,70.34526100000005],[-127.96000699999996,70.347488000000112],[-127.94860799999998,70.350540000000024],[-127.94082600000002,70.356094000000041],[-127.90194699999995,70.393326000000059],[-127.91555800000003,70.396652000000074],[-127.93195300000002,70.396942000000081],[-127.95417799999996,70.39387499999998],[-127.97693600000002,70.387772000000041],[-127.987213,70.383880999999974],[-128.02166699999998,70.374695000000031],[-128.06500199999994,70.377312000000018],[-128.13833599999992,70.37598400000013],[-128.15183999999994,70.380310000000122],[-128.15933199999995,70.385483000000022],[-128.19665499999996,70.391937000000041],[-128.19888300000002,70.40248100000008],[-128.19055200000003,70.436646000000053],[-128.17749000000003,70.460815000000139],[-128.16055299999999,70.491364000000033],[-128.15249600000004,70.503601000000003],[-128.13583399999993,70.523041000000148],[-128.006958,70.588593000000003],[-127.99665799999997,70.590546000000131],[-127.97138999999999,70.583878000000141],[-127.90360999999996,70.562485000000038],[-127.83556399999998,70.540817000000118],[-127.68028300000003,70.486098999999967],[-127.51583900000003,70.426086000000055],[-127.42859599999991,70.393326000000059],[-127.27471899999995,70.326096000000064],[-127.24889399999995,70.314148000000046],[-127.18831599999999,70.280548000000124],[-127.173607,70.272217000000069],[-127.125,70.237198000000149],[-127.07640100000003,70.196365000000071],[-127.05499299999997,70.178039999999953],[-127.03443899999996,70.148880000000077],[-126.89334099999996,70.008880999999974],[-126.87888299999997,70.000548999999978],[-126.81276700000001,69.910537999999974],[-126.81194299999993,69.905258000000117],[-126.80526700000001,69.895538000000045],[-126.74388099999999,69.813873000000115],[-126.71472199999999,69.775269000000094],[-126.70584099999996,69.766098000000113],[-126.69999699999994,69.76138300000008],[-126.6808319999999,69.748031999999967],[-126.67250100000001,69.743866000000082],[-126.62053699999996,69.719986000000063],[-126.60166899999996,69.712479000000144],[-126.45944199999997,69.644149999999968],[-126.29055799999998,69.558594000000028],[-126.26777599999997,69.540817000000118],[-126.26722699999993,69.535537999999974],[-126.25583599999999,69.526657000000057],[-126.11221299999994,69.469436999999971],[-126.08860800000002,69.462493999999992],[-126.0497279999999,69.45277400000009],[-126.03666699999997,69.449706999999989],[-125.98889199999996,69.430542000000003],[-125.96806299999997,69.423035000000084],[-125.95749699999999,69.419434000000024],[-125.91055299999999,69.405548000000067],[-125.88474300000001,69.399155000000064],[-125.83972199999999,69.389160000000004],[-125.55110200000001,69.33718900000008],[-125.42639200000002,69.312180000000126],[-125.41528299999987,69.313019000000054],[-125.37249800000001,69.33580000000012],[-125.36554699999999,69.342468000000054],[-125.39083900000003,69.370513999999957],[-125.40110800000002,69.374130000000036],[-125.37748699999997,69.396087999999963],[-125.21000699999996,69.381912],[-125.16528299999999,69.381638000000066],[-125.14167800000001,69.38638300000008],[-125.13249200000001,69.391098000000113],[-125.12554899999998,69.397491000000059],[-125.11193800000001,69.415817000000061],[-125.08944700000001,69.449706999999989],[-125.11277799999999,69.464157000000114],[-125.12304699999993,69.468032999999991],[-125.462784,69.452469000000065],[-125.53056300000003,69.435242000000073],[-125.609444,69.415253000000121],[-125.62249799999995,69.418593999999985],[-125.61805700000002,69.42442299999999],[-125.57805599999995,69.471649000000014],[-125.48832700000003,69.50749200000007],[-125.47721899999993,69.510268999999994],[-125.46472199999988,69.512207000000103],[-125.449997,69.51249700000011],[-125.30695300000002,69.499984999999981],[-125.14723200000003,69.485519000000124],[-125.13166799999993,69.484694999999988],[-125.11805699999996,69.485793999999942],[-125.12082700000002,69.490798999999981],[-125.13137799999993,69.49441500000006],[-125.18554699999987,69.507202000000063],[-125.21640000000002,69.513031000000069],[-125.25499699999995,69.523026000000016],[-125.265556,69.526917000000083],[-125.41000399999996,69.628036000000066],[-125.41306299999997,69.633041000000105],[-125.41361999999992,69.638321000000133],[-125.41166699999991,69.64387499999998],[-125.37805200000003,69.678589000000045],[-125.36554699999999,69.690262000000075],[-125.35527000000002,69.694138000000123],[-125.079453,69.742752000000053],[-125.06555200000003,69.743591000000038],[-125.04972800000002,69.743042000000116],[-125.016953,69.740524000000107],[-125,69.738190000000088],[-124.98581699999994,69.734711000000004],[-124.97528099999994,69.730820000000108],[-124.96749899999998,69.726929000000041],[-124.93554699999999,69.678314],[-124.92500299999995,69.644714000000135],[-124.90638699999994,69.65387000000004],[-124.88166799999999,69.670532000000037],[-124.82195300000001,69.714995999999985],[-124.82972699999999,69.719147000000078],[-124.86165599999993,69.735809000000074],[-124.88555899999994,69.748031999999967],[-124.89750700000002,69.750549000000035],[-125.01418299999995,69.750534000000016],[-125.22805799999998,69.759140000000116],[-125.24137899999999,69.760254000000089],[-125.25890399999992,69.784103000000016],[-125.27639799999997,69.808243000000061],[-125.225281,69.839676000000054],[-125.20638999999994,69.849120999999968],[-125.19611399999997,69.853026999999997],[-125.18443299999996,69.855804000000091],[-125.16750300000001,69.85414099999997],[-125.16194199999995,69.849700999999982],[-125.15722700000003,69.823563000000036],[-125.15666199999998,69.818283000000122],[-125.17083700000001,69.805496000000119],[-125.170547,69.800216999999975],[-125.165009,69.795502000000113],[-125.15055799999999,69.793564000000003],[-125.05666399999996,69.795242000000087],[-125.03222700000003,69.817200000000071],[-125.00945300000001,69.845520000000079],[-124.94748700000002,69.910537999999974],[-124.94027699999987,69.916930999999977],[-124.89334100000002,69.940262000000018],[-124.76444999999995,69.970824999999991],[-124.79527299999995,70.008880999999974],[-124.82695000000001,70.012496999999996],[-124.88694799999996,70.011932000000002],[-124.99027999999998,70.00610400000005],[-125.025284,69.998000999999988],[-125.04695100000004,69.989990000000091],[-125.08640299999996,69.968535999999915],[-125.10722399999997,69.953522000000078],[-125.10759699999994,69.947975000000099],[-125.11138899999997,69.941940000000102],[-125.12389400000001,69.939956999999993],[-125.19082600000002,69.932433999999944],[-125.20667299999991,69.933228000000099],[-125.21721599999995,69.936905000000081],[-125.21777299999997,69.942337000000066],[-125.20221699999991,69.998581000000058],[-125.19748700000002,70.004501000000118],[-125.18831599999999,70.009033000000102],[-125.016953,70.076218000000097],[-125,70.079987000000017],[-124.98972300000003,70.078598],[-124.98166700000002,70.074432000000115],[-124.97556299999991,70.064697000000024],[-124.97528099999994,70.059418000000051],[-124.98194899999999,70.047760000000039],[-124.98665599999998,70.041655999999989],[-124.99610899999999,70.036925999999994],[-124.99768799999998,70.036925999999994],[-125,70.036925999999994],[-125.03999299999992,70.029068000000109],[-125.04804999999999,70.023041000000092],[-125.04527300000001,70.017990000000111],[-125.03443900000002,70.013931000000014],[-125.01999699999993,70.011993000000075],[-124.90139799999997,70.021378000000141],[-124.86332699999997,70.027206000000092],[-124.85527000000002,70.03054800000001],[-124.86972000000003,70.032760999999994],[-124.93916299999995,70.02748100000008],[-124.95500199999998,70.028320000000065],[-124.95694699999996,70.032211000000132],[-124.93916299999995,70.042480000000126],[-124.92859599999997,70.046097000000088],[-124.81416300000001,70.061645999999996],[-124.71444700000001,70.069153000000142],[-124.67527799999993,70.071930000000066],[-124.64527900000002,70.071930000000066],[-124.63474300000001,70.068329000000006],[-124.63417099999992,70.057754999999929],[-124.60333300000002,70.019714000000135],[-124.59777799999995,70.01527400000009],[-124.58473199999992,70.011932000000002],[-124.56861899999996,70.011108000000036],[-124.55583199999995,70.013046000000145],[-124.45754999999997,70.035706000000118],[-124.45172100000002,70.038376000000028],[-124.44672400000002,70.0417020000001],[-124.423607,70.056366000000139],[-124.44138299999997,70.076096000000121],[-124.449432,70.08027600000014],[-124.506958,70.100266000000147],[-124.51999699999999,70.103867000000037],[-124.54888899999997,70.109984999999938],[-124.58556399999992,70.115265000000022],[-124.59944199999995,70.114151000000049],[-124.62053700000001,70.106644000000074],[-124.63221699999997,70.103867000000037],[-124.68138099999999,70.094436999999971],[-124.71972699999998,70.088593000000117],[-124.735817,70.089432000000102],[-124.73889200000002,70.094436999999971],[-124.75195299999996,70.116378999999995],[-124.75250199999999,70.121643000000006],[-124.74388099999999,70.127197000000137],[-124.734444,70.131927000000019],[-124.70472699999993,70.14498900000001],[-124.69415299999997,70.148605000000089],[-124.68028299999997,70.149719000000061],[-124.43611099999998,70.15109300000006],[-124.39138800000001,70.134155000000135],[-124.35861199999988,70.068603999999993],[-124.36945299999996,70.034987999999998],[-124.37193300000001,70.029434000000037],[-124.38394199999993,70.017761000000007],[-124.41776999999996,69.98942599999998],[-124.42610199999996,69.983871000000079],[-124.45944199999991,69.956375000000037],[-124.42971799999992,69.849425999999937],[-124.44249000000002,69.832763999999997],[-124.45722999999998,69.819716999999969],[-124.47972099999998,69.803589000000102],[-124.50167799999991,69.784424000000115],[-124.50361599999997,69.730820000000108],[-124.5005569999999,69.725815000000068],[-124.49526999999995,69.72137500000008],[-124.487503,69.717209000000139],[-124.45916699999998,69.710815000000082],[-124.36138900000003,69.701096000000121],[-124.29499800000002,69.695251000000042],[-124.28111299999995,69.696091000000081],[-124.26862299999993,69.69802900000002],[-124.2433319999999,69.714705999999978],[-124.23388699999998,69.719147000000078],[-124.21305799999993,69.726654000000053],[-124.20140099999998,69.72943099999992],[-124.1875,69.73054500000012],[-124.06973299999987,69.723602000000085],[-124.04083300000002,69.701385000000016],[-124.05526700000001,69.670532000000037],[-124.21193699999998,69.586380000000077],[-124.24054699999994,69.550262000000032],[-124.24999999999994,69.54553199999998],[-124.28028899999998,69.533600000000035],[-124.33444199999997,69.516936999999984],[-124.37777699999992,69.496933000000013],[-124.39527899999996,69.486923000000104],[-124.51888999999994,69.404159999999933],[-124.51390099999998,69.399428999999998],[-124.48000300000001,69.378036000000066],[-124.47222899999991,69.37414600000011],[-124.44666299999994,69.367203000000131],[-124.32584399999996,69.351929000000041],[-124.26363399999997,69.348602000000085],[-124.21888699999994,69.347762999999929],[-124.16194200000001,69.349152000000117],[-124.12026999999995,69.351379000000009],[-124.09528399999999,69.354980000000069],[-124.01640299999997,69.379150000000095],[-123.962219,69.383040999999935],[-123.83138999999994,69.38888500000013],[-123.81696299999999,69.38888500000013],[-123.73055999999997,69.377472000000125],[-123.702789,69.371094000000028],[-123.69776899999988,69.366378999999995],[-123.69748699999997,69.361099000000081],[-123.69248999999996,69.356644000000074],[-123.67999299999991,69.353317000000118],[-123.66639700000002,69.354156000000103],[-123.502792,69.377197000000137],[-123.47778299999993,69.381088000000034],[-123.46611000000001,69.383881000000031],[-123.41915899999998,69.404434000000037],[-123.40750100000002,69.416092000000106],[-123.43276999999995,69.423035000000084],[-123.44027699999998,69.427200000000084],[-123.45084399999996,69.446930000000066],[-123.45084399999996,69.452209000000039],[-123.44833399999993,69.457763999999941],[-123.44332900000001,69.463882000000069],[-123.43611099999998,69.470261000000107],[-123.42859599999991,69.476379000000065],[-123.39998599999996,69.490265000000079],[-123.36527999999998,69.49832200000003],[-123.33999599999999,69.502213000000097],[-123.30110200000001,69.506653000000085],[-123.27306399999998,69.507767000000115],[-123.26139799999999,69.504990000000021],[-123.26287799999994,69.500267000000008],[-123.25723299999999,69.496094000000085],[-123.19275699999997,69.490814],[-123.17999299999991,69.492477000000122],[-123.16861,69.4952550000001],[-123.16332999999992,69.501389000000131],[-123.13166799999999,69.559708000000001],[-123.12666300000001,69.571105999999986],[-123.09638999999999,69.670532000000037],[-123.09612299999998,69.686371000000008],[-123.10637700000001,69.743042000000116],[-123.10888699999998,69.747756999999922],[-123.11665299999993,69.75221300000004],[-123.10527000000002,69.77915999999999],[-123.01583900000003,69.818329000000062],[-122.97083999999995,69.830826000000002],[-122.95916699999992,69.833603000000096],[-122.94332900000001,69.832763999999997],[-122.90499899999998,69.822220000000129],[-122.876938,69.810257000000092],[-122.85388199999994,69.803040000000124],[-122.82584400000002,69.796371000000079],[-122.80803699999996,69.793593999999985],[-122.79332699999992,69.793593999999985],[-122.779449,69.794707999999957],[-122.76666299999999,69.796371000000079],[-122.754997,69.799149000000057],[-122.74610899999999,69.80442800000003],[-122.66443599999997,69.818054000000018],[-122.61554699999999,69.812195000000031],[-122.58833300000003,69.807479999999998],[-122.47778299999999,69.802765000000136],[-122.45805399999995,69.802475000000129],[-122.24333200000001,69.802200000000084],[-122.12777699999992,69.802475000000129],[-122.06220999999999,69.813309000000004],[-122.04415899999998,69.813599000000011],[-121.89639299999999,69.805542000000059],[-121.71916199999993,69.79582199999993],[-121.68388400000003,69.793593999999985],[-121.44304699999998,69.765549000000021],[-121.41639700000002,69.760818000000086],[-121.38054699999992,69.75221300000004],[-121.33332799999994,69.740814000000114],[-121.28611799999999,69.729156000000103],[-121.18305999999995,69.702484000000027],[-121.12027,69.6827550000001],[-121.08667000000003,69.673598999999967],[-121.03555299999999,69.663315000000125],[-121.00890400000003,69.658325000000104],[-120.93415800000002,69.648604999999975],[-120.88110399999994,69.638885000000073],[-120.82556199999999,69.62359600000002],[-120.79638699999992,69.613036999999963],[-120.760559,69.598328000000095],[-120.73999000000003,69.585266000000104],[-120.73528299999992,69.580276000000026],[-120.72860700000001,69.575821000000019],[-120.70111099999997,69.558594000000028],[-120.67859599999991,69.546097000000032],[-120.61609599999997,69.520264000000054],[-120.39334100000002,69.439697000000081],[-120.27528399999994,69.404159999999933],[-120.23166700000002,69.391662999999937],[-119.98222399999986,69.344711000000018],[-119.93499800000001,69.339705999999978],[-119.91776999999996,69.338318000000072],[-119.63527699999997,69.315810999999997],[-119.46140300000002,69.303314],[-119.33500700000002,69.301926000000094],[-119.31582599999996,69.301086000000055],[-119.23000300000001,69.294434000000138],[-118.94082600000002,69.259430000000066],[-118.85555999999997,69.252487000000087],[-118.84056099999992,69.250548999999978],[-118.79998799999993,69.243317000000047],[-118.69360399999999,69.223602000000028],[-118.65527299999997,69.215820000000065],[-118.64472999999998,69.212494000000049],[-118.63639799999993,69.20887799999997],[-118.58168000000001,69.180267000000072],[-118.55248999999998,69.163605000000075],[-118.53999299999998,69.154984000000127],[-118.502228,69.134720000000016],[-118.48554999999999,69.12692300000009],[-118.45777900000002,69.117477000000122],[-118.432503,69.112198000000092],[-118.18611099999998,69.063873000000115],[-118.08167999999995,69.031371999999976],[-118.03555299999999,69.019714000000135],[-118.010559,69.014434999999992],[-117.87053700000001,68.985535000000141],[-117.83693700000003,68.982483000000002],[-117.74221799999998,68.978043000000014],[-117.63390400000003,68.973602000000085],[-117.59612300000003,68.971649000000127],[-117.5625,68.968597000000045],[-117.41583299999996,68.953598],[-117.26917300000002,68.915268000000026],[-117.19110099999995,68.893874999999923],[-117.15387699999997,68.885544000000039],[-117.13667299999997,68.885544000000039],[-116.978882,68.899993999999992],[-116.96639999999996,68.902206000000035],[-116.96056399999992,68.907211000000075],[-116.93907899999994,68.911003000000107],[-116.88667299999992,68.90887500000008],[-116.74445299999996,68.880538999999999],[-116.515289,68.858032000000094],[-116.50029000000001,68.857208000000128],[-116.43611099999998,68.858597000000088],[-116.42054699999994,68.859146000000067],[-116.41111799999999,68.862761999999918],[-116.40666199999998,68.868590999999924],[-116.40943899999996,68.879974000000118],[-116.39862099999999,68.882751000000042],[-116.38137799999998,68.882477000000108],[-116.36472300000003,68.880813999999987],[-116.34028599999994,68.875259000000085],[-116.28555299999999,68.859711000000118],[-116.22721899999993,68.839157000000114],[-116.22138999999999,68.834427000000119],[-116.21362299999998,68.830551000000014],[-116.12304699999993,68.818329000000062],[-116.10637700000001,68.816666000000112],[-115.99388099999999,68.806641000000013],[-115.96000699999996,68.804703000000075],[-115.94915800000001,68.807479999999998],[-115.94138299999997,68.811920000000043],[-115.94471699999997,68.816940000000045],[-115.95249899999993,68.820831000000112],[-116.12193299999996,68.872481999999991],[-116.31639099999995,68.94747899999993],[-116.32417299999992,68.951660000000004],[-116.33000199999992,68.956100000000049],[-116.325287,68.961929000000055],[-116.31610099999995,68.965546000000018],[-116.30526699999996,68.968597000000045],[-116.26139799999987,68.979980000000069],[-116.239441,68.985535000000141],[-116.20500199999987,68.984985000000108],[-116.19027699999998,68.982758000000047],[-116.068893,68.960541000000148],[-116.00750700000003,68.946365000000128],[-115.96833799999996,68.938582999999994],[-115.88417099999998,68.924698000000092],[-115.86749299999991,68.922759999999982],[-115.77806099999987,68.936371000000122],[-115.76695299999994,68.939148000000046],[-115.77500900000001,68.943039000000113],[-115.80943299999996,68.952208999999982],[-115.83332799999999,68.992477000000008],[-115.59306300000003,68.971649000000127],[-115.44638099999992,68.937759000000028],[-115.06471299999993,68.867476999999951],[-115.05055199999993,68.868866000000139],[-115.03500400000001,68.869140999999956],[-115.01640299999997,68.868042000000003],[-114.98999000000003,68.862761999999918],[-114.97805800000003,68.859146000000067],[-114.82167099999998,68.809707999999944],[-114.79194599999994,68.799423000000047],[-114.77916699999992,68.77915999999999],[-114.77055399999995,68.769440000000088],[-114.74916100000002,68.751389000000074],[-114.729446,68.744431000000134],[-114.71528599999999,68.742203000000131],[-114.69666299999994,68.740814],[-114.66555799999998,68.741653000000099],[-114.57833899999997,68.728043000000071],[-114.54250300000001,68.719436999999971],[-114.44833399999999,68.689697000000024],[-114.44055200000003,68.685805999999957],[-114.46028100000001,68.670532000000094],[-114.46528599999999,68.664428999999927],[-114.46221899999995,68.659424000000058],[-114.45667300000002,68.654709000000025],[-114.40471600000001,68.614990000000148],[-114.39499699999993,68.611374000000069],[-114.30444299999988,68.586929000000055],[-114.23361199999994,68.569443000000092],[-114.12165799999997,68.517487000000017],[-114.10665899999992,68.509430000000066],[-114.08889799999997,68.496368000000018],[-114.07055699999995,68.477478000000076],[-114.064438,68.467209000000025],[-114.06054699999993,68.456650000000025],[-114.01112399999994,68.250275000000045],[-114.01390100000003,68.244979999999998],[-114.02333099999998,68.24136400000009],[-114.03582799999998,68.23942599999998],[-114.28806299999997,68.228866999999923],[-114.32000700000003,68.229156000000046],[-114.33805799999993,68.230545000000063],[-114.35166900000002,68.233597000000145],[-114.37053700000001,68.240540000000124],[-114.37805199999997,68.24443100000002],[-114.38305700000001,68.248871000000065],[-114.390556,68.253052000000139],[-114.41166699999997,68.259430000000066],[-114.42555199999998,68.261932000000002],[-114.44167299999987,68.263610999999969],[-114.47361799999987,68.26388500000013],[-114.70249899999999,68.250275000000045],[-114.75527999999997,68.189697000000137],[-114.76471699999996,68.186096000000077],[-114.861107,68.153594999999996],[-114.87193300000001,68.151093000000117],[-114.89639299999999,68.146942000000024],[-114.92971799999992,68.14776599999999],[-114.97749299999992,68.153319999999951],[-115.00750700000003,68.157211000000018],[-115.076683,68.168869000000086],[-115.17054699999994,68.180542000000116],[-115.22501399999993,68.184142999999949],[-115.23721299999988,68.18220500000001],[-115.24194299999999,68.176376000000005],[-115.24388099999993,68.041367000000093],[-115.24054699999994,68.036377000000073],[-115.23528299999998,68.03166200000004],[-115.220551,68.023880000000077],[-115.204453,68.021927000000119],[-115.17138699999998,68.021102999999982],[-115.15638699999994,68.021652000000131],[-115.12526699999995,68.020263999999997],[-115.11389200000002,68.017487000000131],[-115.11054999999999,68.012207000000046],[-115.11665299999999,68.007217000000026],[-115.12581599999999,68.003601000000117],[-115.20472699999993,67.978043000000014],[-115.216949,67.976089000000002],[-115.34221599999995,67.958037999999988],[-115.50334199999986,67.934418000000051],[-115.52749599999999,67.930267000000129],[-115.53639199999998,67.926651000000049],[-115.5425029999999,67.92164600000001],[-115.53694200000001,67.905257999999947],[-115.53388999999993,67.899993999999992],[-115.52834299999995,67.895538000000045],[-115.521118,67.891663000000108],[-115.50723299999993,67.889435000000105],[-115.281387,67.866379000000109],[-115.27610800000002,67.861649000000057],[-115.20028699999995,67.821930000000123],[-115.19082599999996,67.818329000000062],[-115.11361699999998,67.798599000000081],[-115.1036069999999,67.796646000000123],[-115.02887699999985,67.786652000000117],[-115.01251200000002,67.78637700000013],[-114.99916099999996,67.787491000000102],[-114.93611099999998,67.79553199999998],[-114.88667299999997,67.802764999999965],[-114.84916699999991,67.807755000000043],[-114.80999800000001,67.812195000000031],[-114.78307299999989,67.814423000000033],[-114.75334199999992,67.814986999999974],[-114.73693799999995,67.814697000000137],[-114.718887,67.813309000000061],[-114.70749699999999,67.810531999999967],[-114.6866609999999,67.804153000000099],[-114.67722299999997,67.800812000000064],[-114.65527299999997,67.788879000000009],[-114.64499699999999,67.779709000000139],[-114.637787,67.775543000000027],[-114.29778299999992,67.718597000000102],[-114.28362300000003,67.717484000000013],[-114.27139299999999,67.719436999999971],[-114.25029000000001,67.724700999999982],[-114.24109599999991,67.728317000000004],[-114.22000099999997,67.733871000000022],[-114.19583099999994,67.737762000000089],[-114.1808319999999,67.738037000000077],[-114.14835399999993,67.736923000000104],[-114.11472300000003,67.733871000000022],[-113.99694799999992,67.723038000000031],[-113.98332199999999,67.720535000000041],[-113.94943199999994,67.711655000000007],[-113.89250199999992,67.696930000000066],[-113.84584000000001,67.691359999999975],[-113.76862299999999,67.691086000000041],[-113.70889299999999,67.691925000000026],[-113.55082699999997,67.698029000000076],[-113.25583599999999,67.704436999999984],[-113.24082899999996,67.704436999999984],[-113.20694700000001,67.702484000000084],[-113.17804699999988,67.698029000000076],[-113.15556300000003,67.692200000000014],[-113.11916399999996,67.678040000000124],[-113.10777300000001,67.674988000000042],[-113.06777999999997,67.667480000000012],[-113.04998799999993,67.666092000000106],[-112.965012,67.669708000000128],[-112.73972300000003,67.669434000000024],[-112.3958439999999,67.679153000000042],[-112.370003,67.68193100000002],[-112.348343,67.687194999999974],[-112.34056099999998,67.691359999999975],[-112.33361799999989,67.696365000000014],[-112.18331899999993,67.727768000000083],[-111.912781,67.754166000000055],[-111.88305700000001,67.754439999999988],[-111.79972799999996,67.75082400000008],[-111.66000399999996,67.733322000000044],[-111.57277699999992,67.744431000000134],[-111.45861799999989,67.763046000000088],[-111.37082699999991,67.781097000000045],[-111.32250999999991,67.806931000000077],[-111.31276699999995,67.810531999999967],[-111.29083299999996,67.815536000000066],[-111.200287,67.834152000000131],[-111.17582699999991,67.837494000000049],[-111.15943900000002,67.836655000000064],[-111.14835399999998,67.833602999999982],[-111.14388999999994,67.82887299999993],[-111.146118,67.822769000000108],[-111.12082700000002,67.780823000000112],[-111.03443899999996,67.764160000000061],[-111.01834100000002,67.763321000000076],[-111.00583599999999,67.764998999999989],[-110.84056099999998,67.800262000000032],[-110.83222999999998,67.804428000000087],[-110.80972300000002,67.818604000000107],[-110.78859699999998,67.833602999999982],[-110.78278399999994,67.839431999999988],[-110.75890400000003,67.852767999999969],[-110.74221799999992,67.861099000000024],[-110.73249800000002,67.86442599999998],[-110.41443600000002,67.947754000000145],[-110.33999599999999,67.965546000000018],[-110.1991579999999,67.972214000000008],[-110.17999299999991,67.994431000000077],[-110.1725009999999,67.999420000000043],[-110.162781,68.00277699999998],[-110.15167200000002,68.005264000000068],[-110.13054699999998,68.008040999999992],[-110.11694299999994,68.008881000000031],[-110.08389299999999,68.006943000000092],[-110.07084699999996,68.004165999999998],[-110.04888900000003,67.997756999999922],[-110.00110599999999,67.979705999999965],[-109.979446,67.967483999999956],[-109.97083999999995,67.958037999999988],[-109.96888699999994,67.953049000000021],[-109.96749899999992,67.941360000000145],[-109.97028399999999,67.929703000000018],[-109.97749299999987,67.911377000000016],[-109.99166899999994,67.891373000000044],[-110.00110599999999,67.872482000000048],[-110.00361599999991,67.866379000000109],[-110.00361599999991,67.860535000000084],[-109.99749799999995,67.850815000000011],[-109.98889200000002,67.841370000000097],[-109.98249800000002,67.837204000000042],[-109.97389199999998,67.833602999999982],[-109.96305799999993,67.830276000000026],[-109.948036,67.830276000000026],[-109.93554699999999,67.831940000000031],[-109.92582699999997,67.835266000000104],[-109.91722099999998,67.839157],[-109.91251399999999,67.845824999999934],[-109.912216,67.85165399999994],[-109.91639700000002,67.856093999999985],[-109.94888300000002,67.877197000000081],[-109.95305599999995,67.881927000000076],[-109.94193999999993,67.884430000000066],[-109.89028899999994,67.879974000000004],[-109.86193799999995,67.874985000000038],[-109.823059,67.866089000000102],[-109.81416299999995,67.862198000000035],[-109.80777,67.858032000000094],[-109.76722699999993,67.827773999999977],[-109.73082699999998,67.791931000000091],[-109.72917200000001,67.767761000000121],[-109.73581699999994,67.74275200000011],[-109.74553700000001,67.739426000000094],[-109.75167799999991,67.733597000000088],[-109.74973299999994,67.728592000000049],[-109.7369379999999,67.720261000000107],[-109.72609699999998,67.716933999999981],[-109.55222300000003,67.687759000000142],[-109.53472899999991,67.685806000000014],[-109.52250700000002,67.687484999999981],[-109.51139799999999,67.689697000000081],[-109.50279199999994,67.693862999999965],[-109.48805199999993,67.703873000000044],[-109.37026999999995,67.729155999999989],[-109.25361599999997,67.731934000000138],[-109.21028100000001,67.732208000000071],[-109.15915699999999,67.727478000000019],[-109.06582600000002,67.714157000000114],[-109.05972300000002,67.709991000000002],[-109.01471699999996,67.676651000000106],[-109.00279199999994,67.662491000000045],[-108.91915899999992,67.535812000000135],[-108.921944,67.529709000000025],[-108.95388800000001,67.511932000000115],[-108.96362299999998,67.5086060000001],[-108.99665800000002,67.501389000000017],[-109.00119000000001,67.5],[-109.00666799999993,67.498322000000087],[-109.01528899999994,67.494141000000013],[-109.02139299999999,67.488311999999951],[-109.02528399999994,67.483322000000101],[-109.01806599999998,67.462494000000049],[-109.002228,67.443587999999977],[-108.98554999999993,67.436096000000077],[-108.84999099999993,67.388596000000064],[-108.83112299999993,67.353591999999992],[-108.82501200000002,67.349426000000108],[-108.81276700000001,67.348876999999959],[-108.80416899999994,67.352768000000026],[-108.79666099999986,67.357758000000103],[-108.79055799999998,67.363602000000128],[-108.76611299999996,67.396378000000027],[-108.75834700000001,67.409149000000127],[-108.75583599999999,67.415267999999969],[-108.74445299999996,67.445525999999973],[-108.74109599999997,67.457214000000135],[-108.73638900000003,67.481093999999985],[-108.735817,67.486649000000057],[-108.734734,67.547759999999982],[-108.735817,67.558594000000028],[-108.73777799999993,67.563873000000058],[-108.73889200000002,67.574707000000103],[-108.73916599999995,67.596938999999963],[-108.73638900000003,67.603043000000014],[-108.73000299999995,67.608597000000032],[-108.71472199999999,67.61914100000007],[-108.70612299999988,67.623306000000071],[-108.69611399999997,67.626373000000001],[-108.67027299999995,67.628586000000098],[-108.65527299999991,67.62831100000011],[-108.62053700000001,67.624695000000031],[-108.6100009999999,67.621093999999971],[-108.58500700000002,67.609985000000108],[-108.57888799999989,67.605545000000063],[-108.516953,67.497482000000048],[-108.51139799999999,67.487487999999985],[-108.510559,67.47665400000011],[-108.51334399999996,67.470535000000098],[-108.52333099999993,67.45748900000001],[-108.52390300000002,67.451659999999947],[-108.52278100000001,67.44081100000011],[-108.49804699999993,67.363037000000077],[-108.49027999999998,67.353591999999992],[-108.48416099999997,67.349426000000108],[-108.47138999999993,67.346649000000014],[-108.458054,67.347214000000065],[-108.43720999999994,67.352768000000026],[-108.42971799999998,67.357483000000059],[-108.42471299999994,67.364151000000049],[-108.421944,67.3702550000001],[-108.42944299999999,67.379700000000128],[-108.43554699999999,67.383881000000031],[-108.439438,67.388596000000064],[-108.44275699999997,67.399155000000121],[-108.43998699999992,67.427475000000129],[-108.43472300000002,67.431656000000032],[-108.39388999999994,67.443587999999977],[-108.38166799999999,67.445251000000098],[-108.36694299999994,67.444976999999994],[-108.34361299999989,67.438582999999937],[-108.33556399999998,67.434982000000105],[-108.32112100000001,67.426926000000037],[-108.30750299999988,67.413040000000024],[-108.301941,67.403320000000122],[-108.30027799999999,67.398041000000148],[-108.29666099999997,67.393326000000116],[-108.28832999999997,67.389435000000049],[-108.13417099999992,67.329163000000051],[-108.06360599999988,67.305251999999996],[-108.02583300000003,67.296371000000022],[-108.015289,67.293045000000006],[-107.98554999999999,67.271927000000119],[-107.94471699999997,67.236374000000069],[-107.94082600000002,67.231659000000036],[-107.875,67.140823000000012],[-107.87526700000001,67.052765000000136],[-107.88054699999998,67.04832499999992],[-107.89362299999999,67.047760000000096],[-107.90499899999998,67.049713000000054],[-107.95028699999995,67.062195000000031],[-108.00834699999996,67.077484000000084],[-108.02084399999995,67.080551000000014],[-108.03666699999991,67.081664999999987],[-108.14862099999993,67.076660000000118],[-108.15722700000003,67.072769000000051],[-108.18916300000001,67.054977000000008],[-108.19304699999986,67.049713000000054],[-108.192207,67.038878999999952],[-108.19082600000002,67.033599999999979],[-108.19138299999992,67.028046000000018],[-108.19526699999994,67.022766000000104],[-108.20388799999995,67.018875000000037],[-108.21611000000001,67.017211999999915],[-108.23277300000001,67.019150000000081],[-108.24527,67.022217000000012],[-108.45028699999995,67.083328000000108],[-108.46056399999992,67.086928999999998],[-108.495003,67.102203000000088],[-108.51722699999999,67.113876000000062],[-108.541382,67.130813999999987],[-108.55555700000002,67.138885000000073],[-108.58029199999999,67.15026899999998],[-108.59056099999998,67.153594999999996],[-108.6063769999999,67.154708999999968],[-108.61971999999997,67.15387000000004],[-108.622772,67.149993999999936],[-108.53028899999993,67.042480000000012],[-108.52416999999997,67.038315000000011],[-108.51611300000002,67.034423999999944],[-108.50140399999998,67.032211000000018],[-108.491669,67.0352630000001],[-108.48554999999988,67.041092000000106],[-108.48500100000001,67.046646000000123],[-108.48665599999998,67.05192599999998],[-108.49054699999988,67.056641000000013],[-108.48944099999994,67.067764000000011],[-108.48194899999999,67.072769000000051],[-108.468887,67.073318000000029],[-108.45612299999999,67.070541000000105],[-108.44193999999999,67.062485000000038],[-108.39222699999993,67.028869999999984],[-108.35637700000001,67.003326000000129],[-108.34665699999994,66.994431000000077],[-108.33056599999998,66.986923000000104],[-108.31806899999998,66.983871000000136],[-108.28971899999993,66.979980000000069],[-108.25862099999995,66.977768000000026],[-108.22860700000001,66.976654000000053],[-108.19695300000001,66.972214000000008],[-108.16639700000002,66.962204000000099],[-108.14998600000001,66.954436999999984],[-108.11472299999997,66.928864000000033],[-107.98528299999998,66.828598000000113],[-107.94138299999997,66.788315000000068],[-107.93831599999999,66.778046000000074],[-107.93971299999993,66.766663000000051],[-107.94193999999999,66.749709999999936],[-107.94471699999997,66.743591000000094],[-107.94803599999995,66.731933999999967],[-107.949432,66.720535000000098],[-107.94583099999994,66.715820000000065],[-107.89444699999996,66.671646000000123],[-107.88276699999989,66.663315000000011],[-107.87082699999996,66.662491000000045],[-107.86444099999989,66.668320000000051],[-107.86389200000002,66.673874000000069],[-107.86776700000001,66.71138000000002],[-107.88474299999996,66.750823999999909],[-107.88834400000002,66.755554000000132],[-107.88194299999992,66.759155000000021],[-107.86776700000001,66.758881000000088],[-107.85333299999996,66.756378000000097],[-107.829453,66.744980000000112],[-107.81777999999997,66.736374000000012],[-107.76500699999997,66.686919999999986],[-107.72416699999991,66.629700000000128],[-107.64750699999996,66.574707000000103],[-107.62805199999997,66.562194999999974],[-107.60082999999997,66.546097000000088],[-107.56945799999994,66.53054800000001],[-107.55721999999997,66.527771000000087],[-107.43305999999995,66.453598000000113],[-107.2911069999999,66.36831699999999],[-107.26027699999986,66.353043000000071],[-107.24804699999993,66.349990999999989],[-107.23500100000001,66.348602000000142],[-107.22222899999997,66.349152000000004],[-107.21140299999996,66.351379000000065],[-107.203056,66.355254999999943],[-107.196663,66.360809000000131],[-107.195831,66.366379000000052],[-107.19722000000002,66.371643000000006],[-107.20056199999993,66.376373000000058],[-107.23554999999993,66.407486000000063],[-107.34221599999995,66.461655000000064],[-107.43888899999996,66.513046000000145],[-107.56220999999994,66.591369999999984],[-107.56582599999996,66.596100000000035],[-107.56861899999996,66.606644000000074],[-107.56777999999991,66.612198000000092],[-107.56916799999999,66.617477000000065],[-107.57055700000001,66.622482000000105],[-107.57417299999997,66.627471999999955],[-107.62416100000002,66.660812000000021],[-107.64943700000003,66.693862999999965],[-107.69387799999998,66.755829000000006],[-107.74665800000002,66.922760000000039],[-107.68861399999997,66.977097000000128],[-107.63806199999999,67.024429000000055],[-107.66665599999993,67.063034000000016],[-107.66805999999985,67.068329000000062],[-107.66166699999997,67.073883000000023],[-107.65083299999992,67.076096000000007],[-107.63612399999994,67.073883000000023],[-107.60777299999995,67.063309000000004],[-107.58361799999994,67.051650999999993],[-107.52390300000002,67.020264000000054],[-107.51666299999999,67.010543999999982],[-107.48388699999998,66.924149],[-107.48473399999995,66.918593999999928],[-107.49694799999997,66.917206000000022],[-107.57972699999988,66.916382000000056],[-107.59445199999999,66.918868999999972],[-107.60221899999988,66.922760000000039],[-107.608047,66.926926000000094],[-107.62332200000003,66.940262000000075],[-107.626938,66.944977000000108],[-107.632767,66.949417000000096],[-107.64083899999997,66.953049000000078],[-107.647064,66.942711000000031],[-107.65521999999999,66.943710000000067],[-107.66238399999997,66.942879000000062],[-107.66754900000001,66.940376000000072],[-107.67138699999998,66.937035000000037],[-107.67038700000001,66.933868000000018],[-107.63527699999997,66.892212000000029],[-107.57028199999991,66.837769000000094],[-107.564438,66.833602999999982],[-107.51306199999993,66.822220000000016],[-107.42832900000002,66.804703000000131],[-107.41610699999995,66.806091000000038],[-107.40888999999993,66.811096000000077],[-107.39111299999996,66.891373000000101],[-107.39584400000001,66.901382000000126],[-107.422234,66.939697000000024],[-107.42944299999999,66.949142000000109],[-107.43888899999996,66.958328000000051],[-107.44471699999997,66.962493999999936],[-107.44387799999993,66.968048000000124],[-107.435272,66.972214000000008],[-107.421944,66.972762999999986],[-107.40611299999995,66.97137500000008],[-107.37943999999993,66.966094999999996],[-107.35916099999992,66.959427000000005],[-107.23388699999992,66.902206000000092],[-107.21806299999997,66.894714000000135],[-107.21028099999995,66.890823000000069],[-107.1875,66.87359600000002],[-107.15750099999991,66.846939000000134],[-107.15055799999999,66.837494000000049],[-107.14916999999991,66.832214000000022],[-107.137787,66.823608000000092],[-107.12554899999992,66.820540999999992],[-107.09472700000003,66.818329000000119],[-107.08361799999994,66.820540999999992],[-107.15527299999997,66.899719000000005],[-107.20388800000001,66.944702000000063],[-107.22666900000002,66.961655000000007],[-107.24027999999998,66.969986000000063],[-107.29750100000001,67.001938000000052],[-107.3052669999999,67.005829000000119],[-107.31139399999995,67.127197000000024],[-107.38806199999993,67.144440000000145],[-107.43083200000001,67.158325000000048],[-107.44915800000001,67.165543000000071],[-107.47332799999992,67.176926000000037],[-107.48137700000001,67.180816999999934],[-107.50306699999993,67.192749000000106],[-107.53250100000002,67.214157],[-107.64862099999993,67.359984999999995],[-107.57694999999995,67.475540000000137],[-107.57389799999993,67.481658999999979],[-107.57528699999995,67.48692299999999],[-107.57888800000001,67.491652999999985],[-107.58277899999996,67.496368000000018],[-107.58860799999991,67.500823999999966],[-107.71833800000002,67.573318000000086],[-107.74054699999994,67.585265999999933],[-107.77362099999999,67.600540000000024],[-107.81331599999999,67.614426000000037],[-107.84472700000003,67.624420000000043],[-107.89055599999989,67.642487000000074],[-107.96916199999998,67.676651000000106],[-107.98972300000003,67.688873000000115],[-107.99944299999999,67.698029000000076],[-108.006958,67.707489000000123],[-108.01334399999996,67.728317000000004],[-108.01445000000001,67.73414600000001],[-108.015289,67.744980000000055],[-108.01390099999998,67.756103999999993],[-108.00805699999995,67.768326000000116],[-107.99249299999997,67.788040000000024],[-107.94833399999993,67.841095000000109],[-107.94193999999999,67.846939000000134],[-107.93415800000002,67.85165399999994],[-107.92278299999998,67.853867000000093],[-107.890289,67.85165399999994],[-107.87777699999992,67.853317000000061],[-107.85527000000002,67.85775799999999],[-107.75666799999993,67.880814000000044],[-107.71472199999994,67.892487000000074],[-107.70472699999993,67.895828000000108],[-107.674713,67.916092000000049],[-107.66166699999997,67.927475000000015],[-107.65110800000002,67.940535999999952],[-107.65499899999992,67.945250999999985],[-107.66555800000003,67.94859300000013],[-107.77050800000001,67.96526300000005],[-107.81133999999992,67.971596000000034],[-107.91027800000001,67.988585999999998],[-107.91639699999996,67.993042000000059],[-107.91999800000002,67.997756999999922],[-107.89055599999989,68.081664999999987],[-107.88527699999997,68.088318000000129],[-107.87888299999997,68.093872000000147],[-107.86332699999997,68.103592000000049],[-107.85166899999996,68.106094000000098],[-107.837784,68.104430999999977],[-107.72112300000003,68.082763999999941],[-107.69943199999994,68.075821000000133],[-107.69360399999994,68.071655000000078],[-107.69776899999994,68.066376000000105],[-107.70667300000002,68.062485000000038],[-107.72721899999993,68.056090999999981],[-107.73860200000001,68.05386400000009],[-107.77250700000002,68.05693100000002],[-107.78778099999994,68.057205000000124],[-107.80027799999999,68.055817000000047],[-107.80943299999996,68.051650999999936],[-107.83332799999988,68.013046000000031],[-107.83389299999999,68.007217000000026],[-107.82778899999988,68.003052000000025],[-107.8038479999999,68.004264999999975],[-107.78733799999998,67.997597000000042],[-107.77900699999998,67.996765000000096],[-107.763847,67.998428000000047],[-107.75699599999996,67.999771000000123],[-107.75426500000003,68.006812999999966],[-107.73306300000002,68.020827999999995],[-107.72501399999993,68.025818000000015],[-107.69027699999992,68.042480000000012],[-107.67999299999997,68.04582199999993],[-107.61028299999998,68.058593999999971],[-107.58583099999998,68.059982000000048],[-107.57084700000001,68.059708000000114],[-107.53806299999997,68.057479999999998],[-107.45028699999989,68.047211000000118],[-107.38890100000003,68.04525799999999],[-107.36221299999994,68.04693600000013],[-107.34944200000001,68.048599000000024],[-107.32640099999998,68.053040000000124],[-107.28778099999994,68.064987000000087],[-107.25140399999998,68.080826000000002],[-107.22638699999993,68.094436999999971],[-107.154449,68.12692300000009],[-107.141953,68.128310999999997],[-107.11028299999998,68.12692300000009],[-107.10665899999998,68.122208000000057],[-107.11888099999987,68.084717000000069],[-106.96556099999998,68.113312000000121],[-106.95278899999988,68.114700000000028],[-106.85611,68.116927999999973],[-106.84111000000001,68.116379000000052],[-106.80194099999994,68.197479000000101],[-106.80943300000001,68.207214000000022],[-106.80610699999994,68.213043000000027],[-106.80027799999993,68.217484000000127],[-106.79110700000001,68.221375000000023],[-106.62748699999997,68.246643000000063],[-106.61444099999994,68.24803200000008],[-106.5994419999999,68.247482000000048],[-106.58860800000002,68.244141000000013],[-106.468613,68.190536000000122],[-106.45777900000002,68.176376000000005],[-106.45417799999996,68.160812000000078],[-106.45056199999999,68.155823000000112],[-106.44471699999991,68.151657000000057],[-106.43195300000002,68.153046000000018],[-106.42138699999987,68.156097000000045],[-106.35056299999997,68.179153000000099],[-106.34472699999998,68.183318999999983],[-106.35056299999997,68.187759000000028],[-106.35888699999992,68.191650000000095],[-106.39277600000003,68.201660000000004],[-106.42083700000001,68.207214000000022],[-106.468887,68.214431999999988],[-106.48194899999993,68.217484000000127],[-106.48999000000003,68.221375000000023],[-106.49582699999996,68.225540000000024],[-106.49722300000002,68.230820000000051],[-106.46833799999996,68.329711999999972],[-106.46501199999994,68.335815000000139],[-106.45667299999991,68.340820000000008],[-106.44748700000002,68.344711000000075],[-106.42639200000002,68.350815000000068],[-106.25611900000001,68.387772000000098],[-106.24416400000001,68.38998400000014],[-106.21833800000002,68.392487000000131],[-106.203056,68.392211999999915],[-106.185272,68.38998400000014],[-106.17471299999994,68.386658000000125],[-106.16665599999999,68.382750999999985],[-106.15471599999989,68.373871000000122],[-105.79638699999998,68.422211000000118],[-105.79055799999998,68.418045000000063],[-105.78222699999998,68.413878999999952],[-105.76583900000003,68.41276600000009],[-105.75167799999991,68.413040000000024],[-105.73972300000003,68.415267999999969],[-105.73029300000002,68.419144000000017],[-105.72305299999999,68.424698000000035],[-105.70111099999991,68.469711000000132],[-105.69721999999996,68.486649],[-105.69833399999993,68.49192800000003],[-105.70278899999994,68.501938000000109],[-105.71444699999995,68.510544000000039],[-105.74305700000002,68.564697000000137],[-105.724716,68.574158000000125],[-105.64499699999999,68.633880999999974],[-105.65083300000003,68.638046000000145],[-105.66639699999996,68.638596000000007],[-105.90222199999999,68.635269000000051],[-105.92832899999996,68.632476999999994],[-106.02944899999994,68.619704999999954],[-106.041382,68.617477000000008],[-106.04972799999996,68.612761999999975],[-106.04750100000001,68.602203000000145],[-106.05332900000002,68.595824999999991],[-106.06416300000001,68.59275800000006],[-106.2077789999999,68.567764000000068],[-106.23638900000003,68.566665999999998],[-106.37027,68.545258000000103],[-106.51083399999999,68.518326000000002],[-106.54387700000001,68.511932000000115],[-106.62470999999999,68.46748400000007],[-106.63166799999999,68.461928999999998],[-106.62888299999992,68.45138500000013],[-106.62165799999997,68.441925000000026],[-106.61582899999996,68.437759000000142],[-106.59528399999994,68.425261999999975],[-106.58473200000003,68.421646000000123],[-106.57167099999992,68.418593999999985],[-106.55387899999994,68.416656000000046],[-106.52194199999997,68.414992999999924],[-106.50446299999999,68.41276600000009],[-106.493607,68.409424000000115],[-106.48777799999988,68.404984000000127],[-106.48055999999997,68.395537999999988],[-106.52722199999994,68.300812000000121],[-106.53415699999999,68.295257999999933],[-106.54332699999998,68.291367000000037],[-106.556107,68.289978000000076],[-106.57277699999986,68.291092000000049],[-106.58444199999991,68.293319999999994],[-106.59500099999997,68.296646000000067],[-106.60109699999998,68.301086000000055],[-106.6119379999999,68.315262000000075],[-106.6383439999999,68.343048000000124],[-106.64444700000001,68.347487999999942],[-106.77887699999997,68.408034999999984],[-106.78971899999999,68.411652000000117],[-106.80277999999993,68.414428999999984],[-107.01363400000002,68.369431000000077],[-107.02166699999998,68.364699999999971],[-107.02027899999996,68.359420999999998],[-107.01666299999999,68.354705999999965],[-107.01750199999998,68.349151999999947],[-107.03138699999994,68.33776899999998],[-107.13221699999991,68.283325000000104],[-107.24610899999999,68.261383000000023],[-107.25890400000003,68.259995000000117],[-107.26500699999997,68.264160000000118],[-107.274719,68.273314999999968],[-107.28611799999993,68.287490999999989],[-107.29611199999994,68.296646000000067],[-107.30194099999994,68.300812000000121],[-107.32721699999991,68.312484999999981],[-107.33805799999999,68.315810999999997],[-107.54666099999992,68.347487999999942],[-107.56082200000003,68.349151999999947],[-107.81331599999999,68.342484000000013],[-107.82611099999997,68.341094999999996],[-107.83640300000002,68.338043000000084],[-107.84973100000002,68.326385000000073],[-107.85500299999995,68.31999200000007],[-107.88527699999997,68.26887499999998],[-107.88362100000001,68.263610999999969],[-107.879707,68.258880999999974],[-107.85417199999995,68.247482000000048],[-107.83029199999993,68.241089000000102],[-107.74194299999999,68.216934000000094],[-107.61332700000003,68.178588999999988],[-107.60249299999998,68.175262000000032],[-107.59861799999999,68.17053199999998],[-107.60305800000003,68.165268000000026],[-107.61582900000002,68.163879000000009],[-107.63221699999997,68.164992999999981],[-107.68998699999997,68.174423000000047],[-107.78639199999992,68.183868000000132],[-107.80027799999999,68.183318999999983],[-107.82584399999996,68.180542000000116],[-107.87193300000001,68.171371000000136],[-108.03388999999999,68.168594000000041],[-108.16139199999986,68.172759999999982],[-108.18694299999999,68.169983000000059],[-108.19695300000001,68.166656000000103],[-108.22028399999999,68.152205999999978],[-108.24944299999993,68.141663000000051],[-108.30055199999993,68.125809000000118],[-108.33222999999998,68.117203000000018],[-108.37026999999989,68.112762000000089],[-108.38555899999994,68.113037000000077],[-108.40306099999998,68.114990000000034],[-108.41388699999993,68.11831699999999],[-108.42250099999995,68.122208000000057],[-108.43277,68.131088000000091],[-108.43611099999987,68.141373000000044],[-108.43306000000001,68.147490999999945],[-108.42804699999994,68.154160000000047],[-108.40888999999999,68.16137700000013],[-108.39750700000002,68.163605000000075],[-108.36694299999994,68.161102000000085],[-108.36277799999993,68.15637200000009],[-108.36582899999996,68.15026899999998],[-108.37361099999993,68.145264000000111],[-108.37998999999996,68.139708999999982],[-108.37832599999996,68.134430000000009],[-108.36527999999993,68.133606000000043],[-108.34612299999998,68.140823000000012],[-108.33860800000002,68.145828000000051],[-108.33332799999994,68.152205999999978],[-108.33056599999998,68.158600000000035],[-108.32695000000001,68.170258000000047],[-108.32444800000002,68.192749000000049],[-108.32945299999989,68.208327999999995],[-108.3958439999999,68.289978000000076],[-108.40222199999994,68.294144000000131],[-108.44360399999999,68.308029000000033],[-108.46000700000002,68.309143000000006],[-108.484444,68.305251999999939],[-108.504997,68.298874000000012],[-108.55999800000001,68.275542999999971],[-108.56500199999999,68.26887499999998],[-108.56806899999992,68.262772000000041],[-108.57444799999996,68.257216999999969],[-108.58444199999997,68.253876000000105],[-108.71556099999998,68.231369000000029],[-108.72944599999988,68.230820000000051],[-108.74610899999993,68.231934000000024],[-108.756958,68.235260000000096],[-108.765556,68.238876000000118],[-108.81527699999998,68.262206999999989],[-108.81916799999993,68.266663000000108],[-108.81416299999989,68.273314999999968],[-108.74889400000001,68.33776899999998],[-108.74109599999997,68.342758000000117],[-108.71417199999996,68.354705999999965],[-108.70417799999996,68.35803199999998],[-108.69387799999993,68.361098999999911],[-108.67083700000001,68.365813999999943],[-108.63999899999993,68.375534000000016],[-108.62082700000002,68.382750999999985],[-108.61193800000001,68.386658000000125],[-108.58112299999999,68.406372000000033],[-108.56667299999998,68.416931000000091],[-108.53443900000002,68.445526000000086],[-108.52916699999992,68.452209000000096],[-108.52278100000001,68.458038000000101],[-108.43167099999994,68.538315000000068],[-108.40416700000003,68.560256999999979],[-108.383331,68.576660000000004],[-108.36888099999999,68.587204000000042],[-108.34528399999994,68.601928999999984],[-108.31416300000001,68.611374000000069],[-108.27916700000003,68.618317000000047],[-108.25195299999996,68.620529000000147],[-108.1702729999999,68.626647999999989],[-107.93331899999998,68.64027399999992],[-107.80499299999997,68.645538000000101],[-107.63834399999996,68.665543000000127],[-107.43167099999994,68.690536000000009],[-107.23137700000001,68.71887200000009],[-107.10833700000001,68.748596000000134],[-106.96140300000002,68.783051000000057],[-106.93859899999995,68.788315000000011],[-106.82084700000001,68.811371000000065],[-106.79444899999993,68.813872999999944],[-106.765556,68.814986999999917],[-106.63500999999991,68.818329000000062],[-106.31555200000003,68.892761000000121],[-106.27250699999996,68.904709000000025],[-106.262787,68.90887500000008],[-106.25446299999993,68.913605000000132],[-106.24833699999988,68.919983000000059],[-106.24472000000003,68.926085999999998],[-106.24360699999994,68.931656000000089],[-106.23998999999998,68.937759000000028],[-106.22917200000001,68.940810999999997],[-106.21472199999999,68.941360000000088],[-106.20140100000003,68.940536000000122],[-106.14943699999998,68.933594000000028],[-106.08084099999996,68.918869000000086],[-105.81360599999988,68.881927000000076],[-105.79804999999999,68.879425000000026],[-105.77639799999997,68.872481999999991],[-105.71806300000003,68.844985999999949],[-105.48693800000001,68.729430999999977],[-105.475281,68.720535000000041],[-105.47165699999999,68.715820000000008],[-105.47833300000002,68.69859299999996],[-105.48194899999999,68.692474000000118],[-105.4891659999999,68.68691999999993],[-105.49889400000001,68.683044000000052],[-105.49944299999999,68.621368000000075],[-105.41443600000002,68.528594999999996],[-105.38082900000001,68.486649],[-105.40888999999999,68.492477000000122],[-105.42304999999999,68.49192800000003],[-105.43388400000003,68.489151000000106],[-105.44360399999994,68.485260000000039],[-105.52944899999994,68.450272000000041],[-105.53806299999991,68.445526000000086],[-105.54387700000001,68.439147999999989],[-105.54778299999998,68.433044000000109],[-105.54888900000003,68.427475000000129],[-105.54804999999999,68.422211000000118],[-105.54110699999995,68.41276600000009],[-105.53307299999994,68.408599999999979],[-105.51777600000003,68.406096999999988],[-105.41639700000002,68.406937000000084],[-105.39028899999988,68.409424000000115],[-105.34528399999999,68.384155000000135],[-105.34889199999992,68.378036000000122],[-105.350281,68.372482000000105],[-105.34472700000003,68.368042000000116],[-105.29499800000002,68.339157000000057],[-105.28694200000001,68.33526599999999],[-105.10082999999992,68.266098000000056],[-105.07305899999994,68.260269000000051],[-105.05555700000002,68.258041000000105],[-105.02639799999992,68.257767000000001],[-105.00894900000003,68.264938000000029],[-105.00661500000001,68.268599999999935],[-105.00578300000001,68.272094999999922],[-105.00666799999993,68.278595000000053],[-105.01695299999994,68.282211000000132],[-105.02610800000002,68.309418000000051],[-104.88474300000001,68.339705999999978],[-104.86416600000001,68.332489000000066],[-104.84805299999999,68.324707000000103],[-104.83917200000002,68.315536000000009],[-104.83583099999998,68.310806000000127],[-104.83416699999998,68.300262000000089],[-104.83944699999995,68.288589000000059],[-104.84584000000001,68.282211000000132],[-104.85305800000003,68.276657000000114],[-104.86277799999993,68.272766000000047],[-104.87332199999997,68.269714000000135],[-104.94554099999999,68.258041000000105],[-104.952789,68.252487000000087],[-104.95194999999995,68.247482000000048],[-104.94055200000003,68.238586000000112],[-104.924713,68.230545000000063],[-104.91443600000002,68.227203000000088],[-104.900284,68.22526600000009],[-104.88639799999999,68.225540000000024],[-104.87332199999997,68.226928999999984],[-104.79750100000001,68.24443100000002],[-104.73111,68.250275000000045],[-104.68776699999995,68.250275000000045],[-104.63999899999999,68.246933000000126],[-104.609734,68.24136400000009],[-104.59889199999998,68.232483000000002],[-104.59722899999997,68.222214000000122],[-104.61277799999999,68.198029000000133],[-104.61888099999993,68.191650000000095],[-104.6324919999999,68.179428000000087],[-104.65471600000001,68.162766000000147],[-104.66722099999993,68.149994000000106],[-104.67027299999995,68.138596000000121],[-104.59221599999989,68.083603000000096],[-104.50778200000002,68.035812000000021],[-104.5,68.031937000000028],[-104.48638900000003,68.029984000000127],[-104.45722999999992,68.029709000000082],[-104.36694299999994,68.034149000000127],[-104.21472199999994,68.024155000000064],[-104.199997,68.021378000000027],[-104.16665599999993,68.017487000000131],[-104.12470999999994,68.018326000000059],[-104.11193800000001,68.019440000000031],[-104.06471299999998,68.027480999999966],[-104.01139799999999,68.042206000000078],[-103.99944299999999,68.044144000000017],[-103.98554999999999,68.044434000000024],[-103.97084000000001,68.043869000000029],[-103.94082600000002,68.038315000000011],[-103.92832900000002,68.034988000000055],[-103.89806399999998,68.024155000000064],[-103.88362100000001,68.021378000000027],[-103.87082699999996,68.020263999999997],[-103.84306300000003,68.020827999999995],[-103.791382,68.025269000000094],[-103.76695299999994,68.028320000000065],[-103.55526700000001,68.057205000000124],[-103.54444899999987,68.059982000000048],[-103.53694200000001,68.065536000000066],[-103.53278399999999,68.071655000000078],[-103.53333299999991,68.076660000000118],[-103.53639199999998,68.081664999999987],[-103.54472399999997,68.090820000000008],[-103.55526700000001,68.099715999999944],[-103.55803699999996,68.104430999999977],[-103.55304699999999,68.109711000000061],[-103.52139299999999,68.130813999999987],[-103.50389099999995,68.140274000000034],[-103.49526999999995,68.144714000000079],[-103.46694899999994,68.156936999999914],[-103.45722999999998,68.160537999999974],[-103.42166099999997,68.166656000000103],[-103.40416700000003,68.164154000000053],[-103.38971700000002,68.16137700000013],[-103.38194299999992,68.157211000000018],[-103.36888099999999,68.148880000000133],[-103.34416199999993,68.121094000000085],[-103.34137699999991,68.116089000000045],[-103.34028599999988,68.105819999999994],[-103.341949,68.100265999999976],[-103.37249799999995,68.06860400000005],[-103.36916399999996,68.010818000000029],[-103.36609599999997,68.005829000000062],[-103.25418100000002,67.966385000000002],[-103.22084000000001,67.962204000000099],[-103.20612299999999,67.961380000000133],[-103.17832899999996,67.961929000000055],[-103.14943699999998,67.961380000000133],[-103.13694800000002,67.958037999999988],[-103.12943999999999,67.953872999999987],[-103.12416100000002,67.949707000000103],[-103.11277799999999,67.930267000000129],[-103.1052699999999,67.926086000000055],[-103.09306300000003,67.923035000000027],[-103.01471700000002,67.913605000000132],[-103.00083899999998,67.913879000000065],[-102.99082899999996,67.917480000000126],[-102.98222399999997,67.922211000000061],[-102.97250399999996,67.925812000000121],[-102.95944199999985,67.926926000000094],[-102.94972199999995,67.923309000000131],[-102.94444299999998,67.918868999999916],[-102.939438,67.914429000000098],[-102.92111199999999,67.896378000000141],[-102.82972699999993,67.831940000000031],[-102.80027799999993,67.820830999999998],[-102.68639400000001,67.804703000000131],[-102.67054699999994,67.80304000000001],[-102.53611799999999,67.795258000000047],[-102.50446299999999,67.791931000000091],[-102.47083999999995,67.786926000000051],[-102.446663,67.780273000000079],[-102.39306599999992,67.76249700000011],[-102.33972199999994,67.744705000000067],[-102.25110599999999,67.725266000000147],[-102.22444199999995,67.733871000000022],[-102.21556099999992,67.738312000000121],[-102.15139799999997,67.765549000000021],[-102.1416779999999,67.769150000000081],[-101.92610200000001,67.760268999999994],[-101.76471699999991,67.723312000000135],[-101.671944,67.691649999999981],[-101.54250300000001,67.67942800000003],[-101.51500699999997,67.67942800000003],[-101.446663,67.732483000000116],[-101.43388400000003,67.733322000000044],[-101.10582699999992,67.741928000000144],[-101.09889199999998,67.737762000000089],[-101.01278699999995,67.742477000000122],[-100.99973299999999,67.74331699999999],[-100.92749000000003,67.753325999999959],[-100.90387699999991,67.756942999999922],[-100.89277600000003,67.759720000000016],[-100.81139400000001,67.794708000000014],[-100.72028399999994,67.834427000000119],[-100.58167999999995,67.834152000000131],[-100.39555399999995,67.847488000000055],[-100.18415799999997,67.843048000000067],[-100.16832699999998,67.841095000000109],[-100.156387,67.837769000000037],[-100.14723200000003,67.828598000000113],[-100.135559,67.825272000000098],[-100.083618,67.814986999999974],[-99.820006999999919,67.795821999999987],[-99.618606999999997,67.789153999999996],[-99.607772999999952,67.791931000000091],[-99.589172000000019,67.800812000000064],[-99.577788999999996,67.803314000000114],[-99.500564999999938,67.799713000000054],[-99.412215999999887,67.788315000000068],[-99.403060999999923,67.784424000000001],[-99.398620999999991,67.779983999999956],[-99.396666999999979,67.774994000000106],[-99.387787000000003,67.765822999999955],[-99.378325999999959,67.761932000000058],[-99.236114999999984,67.713608000000136],[-99.21055599999994,67.706940000000145],[-98.986938000000009,67.718322999999998],[-98.813613999999973,67.741928000000144],[-98.528884999999889,67.777481000000023],[-98.385833999999988,67.785812000000078],[-98.363327000000027,67.790817000000118],[-98.354445999999996,67.796097000000032],[-98.358046999999942,67.805817000000104],[-98.442490000000021,67.861374000000069],[-98.449431999999945,67.865814000000057],[-98.463333000000034,67.868865999999969],[-98.475554999999986,67.867203000000075],[-98.486114999999927,67.863876000000118],[-98.49888599999997,67.863312000000008],[-98.514724999999942,67.865265000000136],[-98.540282999999988,67.872208000000114],[-98.65583799999996,67.916382000000056],[-98.665008999999998,67.920258000000103],[-98.696944999999914,67.936645999999996],[-98.719726999999921,67.948867999999948],[-98.724166999999852,67.953598],[-98.746947999999975,68.047760000000096],[-98.732772999999952,68.070267000000001],[-98.615554999999915,68.074706999999989],[-98.544998000000021,68.061371000000065],[-98.336945000000014,67.96026599999999],[-98.321121000000005,67.952208999999982],[-98.266952999999887,67.923309000000131],[-98.233321999999987,67.901932000000102],[-98.171111999999994,67.843323000000055],[-98.169158999999922,67.838593000000003],[-98.122771999999941,67.788040000000024],[-98.094451999999933,67.766098],[-97.956664999999873,67.727768000000083],[-97.799438000000009,67.68553200000008],[-97.66194200000001,67.643051000000071],[-97.650283999999999,67.639434999999992],[-97.637512000000015,67.6308140000001],[-97.626099000000011,67.618042000000059],[-97.613051999999982,67.609420999999998],[-97.603881999999999,67.605255000000056],[-97.592772999999852,67.601653999999996],[-97.576674999999966,67.598602000000085],[-97.561385999999914,67.596649000000127],[-97.547501000000011,67.596375000000023],[-97.509734999999921,67.599152000000117],[-97.48582499999992,67.602203000000145],[-97.415008999999998,67.613312000000064],[-97.392226999999991,67.618042000000059],[-97.381942999999978,67.621368000000132],[-97.353058000000033,67.634430000000123],[-97.33444199999991,67.643875000000037],[-97.316665999999941,67.654434000000037],[-97.295546999999942,67.661102000000028],[-97.283324999999991,67.662491000000045],[-97.167220999999927,67.675537000000134],[-97.138900999999919,67.674149000000057],[-97.116942999999878,67.777481000000023],[-97.115828999999962,67.78276100000005],[-97.119155999999919,67.792480000000069],[-97.127212999999983,67.801650999999993],[-97.240279999999984,67.926086000000055],[-97.254180999999903,67.929428000000144],[-97.263061999999934,67.924149],[-97.268889999999942,67.918319999999994],[-97.27305599999994,67.907761000000107],[-97.273620999999991,67.90248100000008],[-97.277221999999938,67.896942000000081],[-97.282776000000013,67.891098000000056],[-97.291107000000011,67.884995000000117],[-97.301392000000021,67.881652999999972],[-97.324447999999961,67.876648000000102],[-97.336670000000026,67.875259000000142],[-97.362503000000004,67.873871000000008],[-97.376388999999961,67.874146000000053],[-97.392226999999991,67.876373000000115],[-97.403335999999967,67.879974000000004],[-97.412216000000001,67.884155000000078],[-97.416397000000018,67.888596000000007],[-97.41972399999986,67.898331000000042],[-97.428054999999858,67.907761000000107],[-97.434433000000013,67.911926000000108],[-97.449996999999996,67.920258000000103],[-97.643616000000009,68.008330999999998],[-97.652495999999985,68.012207000000046],[-97.683060000000012,68.018599999999992],[-97.695267000000001,68.017212000000086],[-97.705001999999979,68.012772000000098],[-97.708344000000011,68.007217000000026],[-97.710555999999997,67.991653000000099],[-97.87777699999998,67.963608000000079],[-97.996657999999911,67.950271999999984],[-98.009734999999921,67.949707000000103],[-98.029998999999975,67.941924999999969],[-98.045837000000006,67.929428000000144],[-98.051391999999964,67.923598999999967],[-98.057495000000017,67.912490999999989],[-98.060271999999998,67.891663000000108],[-98.063888999999961,67.829162999999937],[-98.078613000000018,67.830276000000026],[-98.095276000000013,67.833327999999938],[-98.106658999999979,67.836928999999998],[-98.115828999999962,67.840820000000065],[-98.176392000000021,67.873871000000008],[-98.189437999999996,67.882476999999938],[-98.194716999999969,67.897217000000069],[-98.200835999999981,67.906647000000135],[-98.213622999999984,67.920532000000037],[-98.224716000000001,67.929428000000144],[-98.25140399999998,67.946365000000014],[-98.283324999999934,67.962768999999923],[-98.319732999999928,67.978591999999992],[-98.34056099999998,67.986099000000081],[-98.378051999999968,67.996368000000132],[-98.398620999999991,68.004165999999998],[-98.412216000000001,68.012497000000053],[-98.581115999999952,68.139984000000027],[-98.587509000000011,68.149429000000112],[-98.58444199999991,68.154984000000013],[-98.485275000000001,68.184417999999994],[-98.473891999999978,68.186920000000043],[-98.459732000000031,68.183594000000028],[-98.450561999999991,68.179703000000131],[-98.432495000000017,68.166656000000103],[-98.428054999999915,68.162201000000096],[-98.424437999999952,68.152205999999978],[-98.425551999999925,68.141936999999984],[-98.428329000000019,68.136383000000137],[-98.434158000000025,68.130538999999942],[-98.44027699999998,68.119431000000134],[-98.441100999999946,68.10914600000001],[-98.439437999999996,68.104155999999989],[-98.430556999999908,68.094986000000119],[-98.417220999999927,68.08638000000002],[-98.408051,68.082489000000123],[-98.393889999999999,68.079163000000108],[-98.379990000000021,68.079163000000108],[-98.367767000000015,68.080551000000014],[-98.358886999999982,68.085814999999968],[-98.350829999999917,68.092209000000025],[-98.339721999999938,68.103867000000037],[-98.321670999999981,68.136932000000115],[-98.317779999999971,68.14776599999999],[-98.317229999999938,68.153046000000018],[-98.317504999999983,68.162201000000096],[-98.326110999999969,68.171371000000136],[-98.333068999999966,68.17553700000002],[-98.342223999999931,68.179428000000087],[-98.377486999999917,68.190262000000018],[-98.40834000000001,68.196640000000116],[-98.439712999999927,68.200821000000019],[-98.469727000000034,68.203049000000021],[-98.485275000000001,68.204987000000131],[-98.501113999999973,68.208602999999982],[-98.531113000000005,68.22526600000009],[-98.537780999999995,68.229431000000091],[-98.542220999999927,68.234146000000123],[-98.561110999999983,68.27388000000002],[-98.607772999999952,68.293319999999994],[-98.704178000000013,68.352768000000026],[-98.710830999999985,68.356934000000081],[-98.715285999999992,68.361648999999943],[-98.717223999999931,68.366378999999995],[-98.71444699999995,68.372208000000001],[-98.704726999999934,68.376373000000001],[-98.680557000000022,68.380539000000113],[-98.667496000000028,68.381363000000079],[-98.637221999999952,68.379150000000095],[-98.606383999999991,68.372756999999979],[-98.594161999999983,68.36914100000007],[-98.580565999999919,68.360809000000074],[-98.571670999999981,68.351654000000053],[-98.548614999999984,68.339157000000057],[-98.532501000000025,68.331100000000106],[-98.521392999999932,68.328323000000012],[-98.511397999999929,68.329711999999972],[-98.470839999999953,68.348327999999981],[-98.462218999999948,68.353591999999992],[-98.461394999999982,68.358871000000136],[-98.471389999999985,68.373596000000077],[-98.491942999999935,68.38638300000008],[-98.503615999999965,68.38998400000014],[-98.49499499999996,68.409424000000115],[-98.319457999999997,68.358871000000136],[-98.30972300000002,68.354980000000069],[-98.298889000000031,68.346100000000035],[-98.294448999999929,68.34137000000004],[-98.292495999999971,68.336655000000007],[-98.288329999999974,68.331940000000145],[-98.281386999999995,68.327774000000034],[-98.225554999999929,68.304152999999985],[-98.213897999999915,68.300537000000134],[-98.199722000000008,68.300262000000089],[-98.187499999999943,68.301926000000094],[-98.096663999999976,68.317764000000125],[-98.073897999999986,68.334990999999945],[-97.905838000000017,68.384155000000135],[-97.894118999999932,68.386459000000002],[-97.86471599999993,68.384995000000004],[-97.849166999999909,68.383040999999992],[-97.777785999999878,68.366378999999995],[-97.761123999999995,68.363312000000064],[-97.748885999999914,68.364699999999971],[-97.743056999999908,68.370528999999976],[-97.75140399999998,68.379700000000128],[-97.764174999999909,68.393600000000049],[-97.768616000000009,68.398041000000148],[-97.781951999999933,68.406647000000021],[-97.79611199999988,68.409988000000055],[-97.81138599999997,68.411377000000073],[-97.869719999999973,68.414153999999996],[-97.885559000000001,68.416382000000112],[-97.899993999999936,68.419707999999957],[-97.906386999999995,68.423874000000069],[-98.009734999999921,68.498032000000023],[-98.011397999999929,68.503052000000082],[-98.010833999999988,68.508041000000048],[-97.999725000000012,68.535262999999986],[-97.994155999999919,68.541091999999992],[-97.852492999999981,68.542480000000069],[-97.836394999999925,68.540268000000026],[-97.723891999999921,68.523041000000035],[-97.692764000000011,68.516663000000051],[-97.665008999999941,68.504715000000033],[-97.658339999999896,68.500549000000092],[-97.654174999999896,68.496094000000085],[-97.650557999999933,68.486098999999967],[-97.653884999999946,68.480545000000006],[-97.655272999999966,68.470260999999994],[-97.650283999999999,68.455551000000014],[-97.646118000000001,68.450820999999962],[-97.639175000000023,68.446640000000059],[-97.611663999999962,68.434708000000114],[-97.537780999999995,68.418320000000051],[-97.523055999999997,68.416931000000091],[-97.511123999999938,68.419434000000024],[-97.502228000000002,68.424698000000035],[-97.49888599999997,68.430267000000015],[-97.500564999999995,68.434982000000048],[-97.509170999999981,68.444427000000132],[-97.520554000000004,68.448029000000076],[-97.535552999999993,68.449141999999995],[-97.547501000000011,68.446640000000059],[-97.573333999999932,68.444427000000132],[-97.589171999999962,68.446640000000059],[-97.603332999999964,68.449996999999996],[-97.615004999999996,68.453598000000056],[-97.619155999999919,68.458328000000108],[-97.617767000000015,68.462493999999992],[-97.597778000000005,68.483597000000088],[-97.578613000000018,68.493042000000003],[-97.567779999999971,68.496368000000018],[-97.544448999999986,68.501389000000131],[-97.531112999999948,68.501938000000109],[-97.516952999999944,68.501663000000065],[-97.385559000000001,68.495254999999929],[-97.353606999999954,68.491089000000045],[-97.282776000000013,68.474152000000061],[-97.259170999999867,68.466660000000104],[-97.160278000000005,68.389435000000049],[-97.053329000000019,68.353316999999947],[-97.058334000000002,68.302765000000079],[-97.070007000000032,68.300262000000089],[-97.075835999999924,68.294433999999967],[-97.091110000000015,68.268051000000014],[-97.089447000000007,68.263320999999962],[-97.080291999999929,68.259155000000078],[-96.939162999999951,68.239700000000084],[-96.925003000000004,68.239150999999993],[-96.912505999999951,68.240814000000057],[-96.817779999999914,68.258331000000112],[-96.806380999999931,68.260818000000029],[-96.799438000000009,68.265548999999965],[-96.767775999999969,68.270263999999997],[-96.693877999999927,68.280272999999966],[-96.680556999999965,68.280822999999998],[-96.669158999999979,68.276931999999931],[-96.625274999999874,68.251663000000121],[-96.553328999999962,68.273605000000032],[-96.533066000000019,68.281936999999971],[-96.47084000000001,68.305542000000003],[-96.448883000000023,68.312194999999974],[-96.437209999999993,68.314697000000024],[-96.42471299999994,68.316086000000041],[-96.410552999999993,68.315536000000009],[-96.404174999999952,68.311371000000008],[-96.496947999999975,68.207764000000054],[-96.508895999999993,68.196365000000128],[-96.525832999999977,68.184142999999949],[-96.623046999999985,68.115540000000067],[-96.690551999999968,68.079987000000074],[-96.702224999999999,68.077484000000084],[-96.730285999999921,68.078323000000069],[-96.743057000000022,68.07777400000009],[-96.75556899999998,68.076096000000007],[-96.778884999999946,68.071380999999974],[-96.797225999999966,68.06109600000002],[-96.808883999999978,68.04942299999999],[-96.812209999999936,68.043869000000029],[-96.813323999999909,68.038589000000115],[-96.811660999999901,68.033599999999979],[-96.801940999999999,68.025818000000015],[-96.789169000000015,68.017212000000086],[-96.77305599999994,68.013884999999959],[-96.722778000000005,68.009719999999959],[-96.708343999999954,68.008605999999986],[-96.676101999999958,68.018599999999992],[-96.556655999999975,68.033324999999934],[-96.540282999999931,68.030273000000022],[-96.52806099999998,68.03166200000004],[-96.466399999999965,68.038879000000122],[-96.450835999999981,68.053040000000124],[-96.479996000000028,68.090271000000087],[-96.49110399999995,68.094147000000135],[-96.505004999999926,68.094436999999971],[-96.516113000000018,68.091095000000053],[-96.53443900000002,68.080826000000002],[-96.546950999999979,68.079437000000041],[-96.548339999999996,68.084152000000074],[-96.547501000000011,68.089432000000102],[-96.535277999999892,68.101089000000059],[-96.510009999999966,68.119431000000134],[-96.482498000000021,68.134720000000016],[-96.463057999999933,68.144149999999911],[-96.432220000000029,68.156097000000045],[-96.31082200000003,68.192200000000128],[-96.288329999999974,68.197754000000089],[-96.171386999999925,68.221649000000127],[-96.136123999999938,68.228592000000106],[-95.980285999999978,68.254715000000033],[-95.968338000000017,68.230820000000051],[-96.043334999999956,68.179428000000087],[-96.069167999999991,68.16137700000013],[-96.075012000000015,68.155548000000124],[-96.078612999999962,68.149994000000106],[-96.077498999999989,68.144989000000066],[-96.073623999999995,68.140274000000034],[-96.045837000000006,68.133331000000055],[-96.03443900000002,68.129700000000014],[-96.02806099999998,68.125259000000085],[-96.020553999999947,68.116089000000045],[-96.01916499999993,68.111098999999967],[-96.020279000000016,68.106094000000098],[-96.083618000000001,68.00221300000004],[-96.144164999999987,67.923598999999967],[-96.211669999999913,67.829162999999937],[-96.215285999999878,67.823608000000036],[-96.217223999999987,67.813309000000061],[-96.221389999999985,67.697754000000032],[-96.220000999999911,67.693038999999999],[-96.212508999999955,67.683868000000075],[-96.206116000000009,67.67942800000003],[-96.195540999999992,67.682754999999986],[-96.186934999999949,67.688873000000115],[-96.179717999999923,67.692748999999992],[-96.168335000000013,67.694977000000108],[-96.166655999999989,67.690262000000075],[-96.174712999999997,67.643051000000071],[-96.185271999999941,67.626373000000001],[-96.191939999999988,67.62164300000012],[-96.203339000000028,67.61914100000007],[-96.216400000000021,67.618591000000038],[-96.230834999999956,67.619979999999998],[-96.246657999999968,67.623306000000071],[-96.257781999999963,67.626923000000033],[-96.266402999999968,67.631088000000034],[-96.329726999999991,67.610260000000096],[-96.437774999999931,67.541367000000037],[-96.461394999999925,67.508880999999917],[-96.464721999999881,67.503326000000015],[-96.469161999999983,67.492751999999996],[-96.464721999999881,67.478043000000127],[-96.461120999999991,67.473312000000021],[-96.451675000000023,67.471374999999966],[-96.441939999999931,67.475540000000137],[-96.363892000000021,67.478043000000127],[-96.294158999999979,67.444702000000007],[-96.222778000000005,67.421920999999941],[-96.210006999999962,67.419144000000074],[-96.196380999999917,67.418869000000029],[-96.185821999999973,67.422211000000004],[-96.158051,67.43664600000011],[-96.141388000000006,67.448868000000061],[-96.135559000000001,67.454712000000086],[-96.118880999999931,67.466660000000104],[-96.107498000000021,67.469147000000021],[-96.09722899999997,67.464706000000092],[-96.069457999999997,67.433593999999971],[-96.070281999999963,67.428314000000114],[-96.124161000000015,67.377196999999967],[-96.166655999999989,67.341660000000047],[-96.177215999999873,67.336929000000112],[-96.208618000000001,67.326935000000105],[-96.218613000000005,67.322768999999994],[-96.226944000000003,67.316666000000055],[-96.251113999999916,67.25277699999998],[-96.252228000000002,67.247482000000048],[-96.243606999999884,67.243317000000047],[-96.129990000000021,67.21665999999999],[-96.114440999999999,67.213318000000072],[-96.102492999999981,67.214705999999978],[-96.091384999999946,67.217209000000139],[-95.921111999999994,67.278595000000053],[-95.817504999999926,67.331940000000145],[-95.756393000000003,67.367477000000065],[-95.739990000000034,67.376648000000046],[-95.603057999999919,67.383330999999998],[-95.58944699999995,67.383040999999992],[-95.576949999999954,67.380264000000068],[-95.565825999999959,67.376648000000046],[-95.549163999999962,67.368316999999934],[-95.53472899999997,67.359984999999995],[-95.528610000000015,67.35554500000012],[-95.525008999999955,67.351089000000059],[-95.553328999999962,67.313309000000118],[-95.561660999999958,67.307205000000124],[-95.618056999999965,67.278320000000065],[-95.638061999999991,67.270828000000108],[-95.677489999999977,67.254166000000112],[-95.696654999999964,67.244979999999998],[-95.763061999999877,67.212769000000094],[-95.807495000000017,67.186096000000134],[-95.823897999999986,67.174149],[-95.829726999999991,67.168319999999937],[-95.833327999999938,67.162766000000147],[-95.821670999999924,67.161102000000142],[-95.796951000000035,67.16304000000008],[-95.774719000000005,67.167755000000113],[-95.74221799999998,67.176651000000049],[-95.712218999999948,67.188309000000061],[-95.651397999999915,67.198868000000118],[-95.568893000000003,67.210541000000148],[-95.544158999999922,67.212494000000106],[-95.515839000000028,67.209717000000012],[-95.501113999999973,67.20748900000001],[-95.435546999999929,67.193863000000079],[-95.379439999999931,67.154708999999968],[-95.326110999999969,67.027205999999978],[-95.328613000000018,67.016937000000098],[-95.337218999999948,66.99054000000001],[-95.34333799999996,66.974701000000096],[-95.350280999999882,66.963882000000069],[-95.357773000000009,66.959991000000002],[-95.416396999999961,66.951935000000105],[-95.53472899999997,66.941086000000041],[-95.597778000000005,66.948868000000004],[-95.614166000000012,66.970261000000107],[-95.721114999999998,66.964706000000035],[-95.743331999999953,66.959991000000002],[-95.839171999999962,66.94802900000002],[-95.876099000000011,66.945816000000036],[-95.902495999999985,66.946640000000002],[-95.928054999999972,66.952484000000027],[-95.93638599999997,66.956649999999968],[-95.990279999999984,67.004990000000134],[-95.993880999999931,67.009720000000016],[-95.990554999999915,67.014998999999989],[-95.978881999999999,67.026657],[-95.961120999999991,67.043869000000029],[-95.93638599999997,67.065262000000132],[-95.932219999999973,67.069716999999969],[-95.946945000000028,67.072220000000129],[-95.958344000000011,67.069716999999969],[-95.967772999999909,67.065536000000066],[-96.004456000000005,67.045821999999987],[-96.046111999999937,67.016387999999949],[-96.051665999999955,67.010818000000086],[-96.053878999999995,67.000275000000101],[-96.046660999999972,66.991088999999988],[-96.040558000000033,66.986648999999943],[-96.023620999999935,66.978591999999992],[-96.025008999999955,66.973312000000135],[-96.033066000000019,66.967484000000013],[-96.042770000000019,66.963043000000084],[-96.110549999999932,66.950821000000133],[-96.12332200000003,66.950271999999984],[-96.138610999999912,66.953598],[-96.240828999999962,66.983597000000032],[-96.262512000000015,66.991088999999988],[-96.279175000000009,66.999145999999939],[-96.285278000000005,67.003600999999946],[-96.286941999999954,67.008606000000043],[-96.285827999999981,67.013611000000083],[-96.274170000000026,67.025269000000094],[-96.265288999999996,67.030548000000067],[-96.261947999999961,67.035812000000078],[-96.261123999999995,67.041092000000106],[-96.263625999999988,67.051086000000112],[-96.268889999999885,67.06053200000008],[-96.288054999999929,67.068329000000062],[-96.37721299999987,67.084717000000126],[-96.392226999999991,67.086928999999998],[-96.403884999999946,67.085541000000092],[-96.452498999999989,67.068329000000062],[-96.460555999999883,67.062195000000031],[-96.456664999999987,67.057754999999986],[-96.403884999999946,67.008330999999998],[-96.273620999999991,66.950271999999984],[-96.146392999999989,66.894714000000135],[-96.128051999999968,66.881653000000028],[-96.11721799999998,66.867752000000053],[-96.115829000000019,66.862761999999975],[-96.11721799999998,66.857483000000002],[-96.116652999999985,66.847488000000055],[-96.115554999999972,66.842484000000127],[-96.114165999999898,66.837494000000049],[-96.108886999999982,66.832764000000054],[-96.100554999999929,66.828598000000113],[-96.006667999999934,66.794434000000081],[-95.980559999999912,66.787491000000102],[-95.956115999999952,66.782211000000075],[-95.912215999999944,66.775543000000084],[-95.883621000000005,66.768875000000094],[-95.862212999999997,66.761107999999979],[-95.848052999999993,66.752777000000037],[-95.841948999999943,66.74832200000003],[-95.784728999999913,66.674149000000057],[-95.777495999999985,66.654984000000127],[-95.777221999999881,66.644714000000022],[-95.780838000000017,66.629150000000095],[-95.741378999999938,66.638046000000031],[-95.656386999999995,66.6602630000001],[-95.646666999999979,66.664428999999984],[-95.629714999999976,66.675536999999963],[-95.627486999999974,66.68609600000002],[-95.648894999999982,66.724152000000004],[-95.652221999999995,66.728592000000049],[-95.660552999999993,66.732757999999933],[-95.674437999999896,66.734146000000067],[-95.784728999999913,66.737198000000149],[-95.993056999999965,66.84275800000006],[-96.087783999999999,66.907486000000119],[-96.091674999999896,66.911925999999994],[-96.092772999999966,66.916931000000034],[-96.091674999999896,66.922211000000061],[-96.08555599999994,66.926926000000094],[-96.066956000000005,66.936371000000008],[-96.047500999999954,66.944702000000063],[-96.037216000000001,66.94802900000002],[-96.026108000000022,66.950271999999984],[-96.000290000000007,66.950546000000088],[-95.902495999999985,66.946640000000002],[-95.814437999999996,66.941360000000145],[-95.785004000000015,66.93691999999993],[-95.772780999999952,66.932754999999929],[-95.766662999999994,66.928314],[-95.763061999999877,66.923874000000012],[-95.760559000000001,66.913879000000065],[-95.756957999999997,66.90914900000007],[-95.75111400000003,66.90498400000007],[-95.738051999999982,66.901382000000126],[-95.724715999999944,66.900817999999958],[-95.516662999999994,66.902206000000092],[-95.493057000000022,66.90498400000007],[-95.472228999999913,66.911652000000061],[-95.389175000000023,66.911102000000028],[-95.336669999999913,66.893051000000014],[-95.323623999999882,66.889434999999992],[-95.311385999999914,66.889984000000084],[-95.300827000000027,66.893326000000059],[-95.291672000000005,66.898331000000098],[-95.267501999999979,66.91415400000011],[-95.259170999999981,66.920257999999933],[-95.220839999999896,66.968322999999941],[-95.21945199999999,66.973602000000142],[-95.226394999999968,66.982758000000103],[-95.232223999999974,66.987198000000092],[-95.289443999999946,67.024994000000049],[-95.345000999999968,67.084427000000119],[-95.352218999999991,67.148331000000042],[-95.346389999999985,67.15387000000004],[-95.266112999999905,67.212769000000094],[-95.166107000000011,67.276931999999988],[-95.162216000000001,67.282211000000132],[-95.163329999999974,67.287200999999982],[-95.171936000000017,67.291367000000093],[-95.18249499999996,67.29525799999999],[-95.217223999999931,67.306366000000139],[-95.279723999999874,67.319442999999978],[-95.306380999999874,67.326660000000061],[-95.314712999999927,67.330550999999957],[-95.332779000000016,67.34387200000009],[-95.336394999999982,67.348328000000038],[-95.384170999999981,67.444138000000009],[-95.339995999999928,67.499709999999993],[-95.331679999999949,67.505829000000006],[-95.324172999999917,67.516663000000051],[-95.321670999999924,67.527206000000035],[-95.323058999999944,67.531936999999971],[-95.330001999999922,67.541367000000037],[-95.343613000000005,67.554977000000122],[-95.34973100000002,67.559417999999994],[-95.466400000000021,67.637207000000046],[-95.492492999999968,67.643326000000059],[-95.535003999999958,67.646652000000074],[-95.548339999999996,67.649994000000049],[-95.693054000000018,67.704436999999984],[-95.707779000000016,67.723038000000031],[-95.709166999999923,67.727768000000083],[-95.708053999999947,67.733047000000056],[-95.704453000000001,67.738586000000055],[-95.698333999999988,67.744431000000134],[-95.68110699999994,67.756378000000097],[-95.671936000000017,67.761657999999954],[-95.64973399999991,67.767211999999972],[-95.637511999999958,67.768600000000049],[-95.626388999999961,67.771927000000005],[-95.577498999999989,67.787491000000102],[-95.558883999999978,67.797759999999926],[-95.550277999999878,67.803863999999976],[-95.544158999999922,67.809708000000001],[-95.53443900000002,67.820830999999998],[-95.525833000000034,67.836928999999998],[-95.522231999999974,67.852767999999969],[-95.527221999999995,67.872208000000114],[-95.452224999999999,67.981094000000041],[-95.416945999999996,68.027771000000143],[-95.42721599999993,68.032486000000006],[-95.47193900000002,68.054977000000008],[-95.475280999999939,68.058319000000097],[-95.472777999999948,68.06053200000008],[-95.461394999999868,68.063873000000115],[-95.404175000000009,68.069443000000035],[-95.34973100000002,68.074432000000002],[-95.343063000000029,68.074432000000002],[-95.075561999999877,68.068877999999984],[-95.071120999999948,68.063599000000011],[-95.065276999999924,68.060257000000036],[-95.054992999999911,68.055251999999996],[-95.043883999999935,68.051376000000118],[-95.023620999999991,68.04582199999993],[-95.008895999999936,68.044434000000024],[-94.86721799999998,68.034149000000127],[-94.839721999999938,68.034149000000127],[-94.788054999999986,68.040543000000127],[-94.72222899999997,68.054977000000008],[-94.714172000000019,68.059418000000107],[-94.707503999999972,68.065811000000053],[-94.696654999999964,68.078598000000056],[-94.693877999999984,68.083328000000108],[-94.604995999999971,68.139708999999982],[-94.37249799999995,68.221375000000023],[-94.210555999999997,68.262772000000041],[-94.199157999999954,68.267761000000007],[-94.193603999999993,68.272217000000069],[-94.192214999999976,68.276382000000069],[-94.191665999999941,68.281372000000147],[-94.192489999999907,68.292206000000022],[-94.193603999999993,68.298325000000034],[-94.205275999999913,68.313309000000118],[-94.209166999999979,68.323607999999979],[-94.210280999999952,68.328049000000078],[-94.210830999999985,68.361374000000126],[-94.208054000000004,68.366088999999988],[-94.203888000000006,68.370255000000043],[-94.123046999999985,68.416931000000091],[-94.104720999999984,68.424149000000057],[-94.00028999999995,68.460815000000025],[-93.968063000000029,68.468596999999932],[-93.953613000000018,68.471924000000058],[-93.936661000000015,68.474700999999982],[-93.922774999999945,68.475540000000137],[-93.893615999999952,68.474700999999982],[-93.875823999999909,68.477203000000031],[-93.81138599999997,68.488037000000134],[-93.661391999999978,68.520828000000051],[-93.656661999999983,68.523315000000139],[-93.619155999999975,68.544144000000074],[-93.553329000000019,68.586380000000077],[-93.559722999999963,68.611649000000114],[-93.621933000000013,68.624419999999986],[-93.647507000000019,68.626923000000147],[-93.65306099999998,68.626373000000115],[-93.705276000000026,68.657211000000132],[-93.697220000000016,68.749145999999939],[-93.695267000000001,68.751938000000052],[-93.639450000000011,68.780548000000067],[-93.571670999999924,68.834152000000074],[-93.567504999999926,68.839706000000092],[-93.566100999999946,68.849425999999994],[-93.634444999999971,68.959152000000131],[-93.642226999999934,68.963882000000012],[-93.666945999999996,68.972214000000008],[-93.731383999999991,68.974991000000102],[-93.925551999999868,68.974701000000039],[-94.030838000000017,68.918594000000098],[-94.039169000000015,68.914154000000053],[-94.055832000000009,68.901932000000102],[-94.068893000000003,68.891098000000056],[-94.079726999999991,68.847488000000055],[-94.071120999999891,68.843596999999988],[-94.034164000000033,68.833328000000108],[-94.021118000000001,68.836105000000032],[-93.933884000000035,68.855255],[-93.852492999999981,68.879149999999981],[-93.838607999999965,68.885268999999994],[-93.837783999999999,68.886383000000023],[-93.824722000000008,68.891373000000044],[-93.813889000000017,68.893050999999957],[-93.80999799999995,68.890549000000078],[-93.813889000000017,68.88499500000006],[-93.829726999999934,68.876083000000051],[-93.934157999999968,68.824997000000053],[-94.085006999999962,68.761108000000092],[-94.095276000000013,68.758040999999992],[-94.108046999999999,68.755264000000068],[-94.15972899999997,68.747756999999979],[-94.385559000000001,68.729155999999932],[-94.490828999999962,68.728867000000037],[-94.625,68.761383000000137],[-94.608886999999925,68.819443000000035],[-94.588897999999915,68.841370000000097],[-94.583327999999938,68.845825000000104],[-94.570847000000015,68.850266000000033],[-94.561661000000015,68.855255],[-94.556106999999997,68.859985000000052],[-94.553054999999972,68.864425999999924],[-94.545273000000009,68.884720000000073],[-94.548049999999932,68.888885000000073],[-94.557495000000017,68.893050999999957],[-94.569457999999941,68.893600000000106],[-94.577224999999999,68.896652000000017],[-94.585555999999997,68.903046000000074],[-94.589995999999985,68.908325000000048],[-94.605835000000013,68.951096000000064],[-94.604172000000005,68.961929000000055],[-94.599166999999966,68.965546000000018],[-94.587219000000005,68.968872000000033],[-94.553329000000019,68.973877000000073],[-94.37388599999997,69.003052000000139],[-94.224166999999966,69.027771000000143],[-94.163054999999986,69.052200000000084],[-94.151397999999972,69.057205000000124],[-94.072784000000013,69.126648000000046],[-94.072509999999966,69.144989000000066],[-94.137511999999901,69.131927000000019],[-94.22084000000001,69.1202550000001],[-94.235001000000011,69.119431000000134],[-94.248336999999935,69.120529000000033],[-94.312209999999993,69.144989000000066],[-94.323058999999944,69.149994000000106],[-94.327498999999989,69.15525800000006],[-94.329177999999899,69.16137700000013],[-94.309433000000013,69.294144000000131],[-94.306655999999975,69.300262000000089],[-94.303328999999962,69.304977000000122],[-94.291672000000005,69.313873000000058],[-94.284163999999976,69.318878000000097],[-94.259170999999924,69.326660000000061],[-94.166655999999989,69.342483999999956],[-94.043335000000013,69.357483000000059],[-94.025009000000011,69.359711000000004],[-93.955276000000026,69.362762000000032],[-93.736664000000019,69.399994000000049],[-93.626937999999939,69.432479999999941],[-93.574721999999952,69.441650000000038],[-93.562774999999988,69.442748999999992],[-93.526397999999915,69.438309000000004],[-93.532501000000025,69.429977000000008],[-93.547774999999945,69.420532000000094],[-93.67971799999998,69.347762999999929],[-93.691665999999941,69.34275800000006],[-93.741378999999995,69.324432000000058],[-93.753066999999987,69.320540999999992],[-93.764174999999966,69.320540999999992],[-93.828612999999962,69.265549000000078],[-93.856110000000001,69.176926000000037],[-93.856658999999979,69.172211000000004],[-93.845001000000025,69.164992999999981],[-93.837218999999891,69.164429000000041],[-93.634734999999978,69.251663000000121],[-93.467498999999918,69.317490000000021],[-93.456664999999987,69.323043999999982],[-93.362777999999992,69.37164300000012],[-93.365279999999984,69.376082999999994],[-93.379439999999988,69.376373000000001],[-93.459166999999866,69.359711000000004],[-93.470001000000025,69.356644000000074],[-93.478057999999976,69.353317000000118],[-93.498046999999985,69.349152000000117],[-93.511947999999961,69.349426000000051],[-93.565001999999936,69.367752000000053],[-93.560546999999929,69.383881000000031],[-93.538054999999929,69.410538000000088],[-93.527221999999995,69.421646000000067],[-93.515839000000028,69.425537000000134],[-93.503066999999874,69.427475000000072],[-93.488892000000021,69.434982000000048],[-93.439437999999939,69.475265999999976],[-93.441375999999991,69.48054499999995],[-93.487777999999992,69.502777000000037],[-93.509734999999921,69.513046000000088],[-93.532501000000025,69.521103000000039],[-93.540833000000021,69.523315000000082],[-93.587219000000005,69.528046000000018],[-93.621933000000013,69.527205999999978],[-93.683883999999978,69.522217000000012],[-93.709732000000031,69.516098],[-93.808884000000035,69.488876000000062],[-93.869719999999973,69.451660000000118],[-94.045272999999952,69.439148000000102],[-94.279175000000009,69.440262000000075],[-94.299728000000016,69.443038999999999],[-94.313048999999978,69.446640000000059],[-94.343886999999938,69.459152000000074],[-94.451674999999966,69.518600000000049],[-94.502501999999993,69.556366000000025],[-94.591948999999943,69.637206999999989],[-94.629439999999988,69.683044000000052],[-94.670273000000009,69.677475000000072],[-94.712783999999999,69.67164600000001],[-94.749435000000005,69.663605000000132],[-94.755004999999926,69.661652000000004],[-94.764174999999966,69.65498400000007],[-94.766662999999937,69.651093000000003],[-94.762222000000008,69.644714000000135],[-94.742217999999923,69.628311000000053],[-94.724441999999954,69.61442599999998],[-94.725554999999929,69.608597000000145],[-94.730835000000013,69.602767999999969],[-94.740279999999984,69.597488000000055],[-94.769729999999981,69.583054000000061],[-94.801101999999901,69.572219999999959],[-94.820007000000032,69.56721500000009],[-94.831116000000009,69.56581100000011],[-94.846664000000033,69.565536000000122],[-94.862777999999878,69.566940000000102],[-94.951950000000011,69.584427000000119],[-95.010558999999944,69.603043000000127],[-95,69.618865999999969],[-95.009444999999971,69.621643000000063],[-95.021118000000001,69.621643000000063],[-95.078612999999962,69.616379000000109],[-95.168609999999887,69.630538999999999],[-95.396118000000001,69.678864000000033],[-95.40834000000001,69.681931000000134],[-95.423049999999932,69.686096000000134],[-95.544997999999964,69.726929000000041],[-95.648055999999997,69.780273000000022],[-95.71556099999998,69.791366999999923],[-95.724715999999944,69.789978000000133],[-95.728332999999907,69.789153999999996],[-95.738892000000021,69.786102000000028],[-95.757232999999928,69.777205999999921],[-95.758620999999948,69.772766000000104],[-95.86332699999997,69.772216999999955],[-95.960830999999985,69.778045999999961],[-95.975554999999929,69.781937000000028],[-96.020279000000016,69.80442800000003],[-96.035827999999924,69.813873000000115],[-96.074447999999961,69.841934000000037],[-96.087783999999999,69.869141000000127],[-96.082229999999925,69.873596000000134],[-96.085007000000019,69.91137700000013],[-96.097778000000005,69.946639999999945],[-96.116104000000007,69.953872999999987],[-96.177215999999873,69.964705999999921],[-96.195540999999992,69.965546000000018],[-96.198607999999979,69.964995999999985],[-96.209441999999967,69.961655000000121],[-96.217223999999987,69.958327999999995],[-96.220550999999944,69.95748900000001],[-96.235000999999954,69.95748900000001],[-96.246947999999918,69.958878000000027],[-96.257232999999928,69.963043000000027],[-96.272780999999952,69.971099999999979],[-96.38137799999987,70.02748100000008],[-96.402495999999871,70.039978000000076],[-96.459441999999967,70.075546000000088],[-96.500290000000007,70.101379000000009],[-96.509170999999924,70.108597000000032],[-96.525283999999942,70.122756999999979],[-96.531677000000002,70.131088000000034],[-96.55610699999994,70.191925000000083],[-96.568892999999946,70.224425999999994],[-96.571670999999867,70.234421000000054],[-96.570281999999963,70.251099000000124],[-96.568619000000012,70.268600000000106],[-96.562774999999931,70.300262000000032],[-96.558608999999933,70.3119200000001],[-96.555557000000022,70.317490000000134],[-96.548339999999996,70.328872999999987],[-96.535003999999958,70.344147000000078],[-96.294723999999974,70.522491000000116],[-96.232773000000009,70.562195000000031],[-96.078887999999893,70.587494000000049],[-96.069732999999928,70.587769000000037],[-96.045273000000009,70.584152000000074],[-96.041107000000011,70.576934999999992],[-96.033324999999934,70.572769000000108],[-95.995269999999948,70.559707999999944],[-95.93499799999995,70.547485000000108],[-95.92332499999992,70.545258000000047],[-95.806106999999997,70.528869999999984],[-95.797225999999966,70.529434000000094],[-95.789443999999946,70.536652000000117],[-95.791381999999999,70.542755000000056],[-95.799164000000019,70.549149000000114],[-95.855834999999956,70.553314000000114],[-95.914168999999902,70.559417999999937],[-95.931670999999938,70.562195000000031],[-95.96444699999995,70.568878000000041],[-96.000564999999995,70.579987000000074],[-96.049987999999928,70.600266000000033],[-96.058334000000002,70.605820000000051],[-96.061385999999857,70.617203000000018],[-96.055557000000022,70.643050999999957],[-96.048339999999996,70.646942000000024],[-95.952498999999989,70.679702999999961],[-95.848343,70.706940000000088],[-95.815551999999968,70.70915199999996],[-95.817779999999971,70.710265999999933],[-95.901947000000007,70.707764000000054],[-95.932770000000005,70.701096000000064],[-96.115554999999972,70.656097000000102],[-96.138061999999991,70.646378000000084],[-96.149993999999936,70.637206999999989],[-96.152785999999935,70.632477000000108],[-96.154723999999987,70.624694999999974],[-96.153885000000002,70.621643000000063],[-96.158051,70.617476999999951],[-96.160277999999948,70.616379000000052],[-96.16361999999998,70.615540000000124],[-96.202788999999996,70.621643000000063],[-96.376098999999954,70.673035000000027],[-96.385284000000013,70.677765000000022],[-96.394729999999981,70.683594000000028],[-96.401108000000022,70.690536000000122],[-96.410003999999958,70.702484000000027],[-96.415557999999976,70.71527100000003],[-96.422500999999954,70.726089000000002],[-96.43472300000002,70.737198000000035],[-96.446654999999964,70.741928000000087],[-96.53694200000001,70.763321000000019],[-96.580565999999976,70.777480999999909],[-96.603881999999942,70.788040000000137],[-96.611938000000009,70.794434000000024],[-96.61500499999994,70.80442800000003],[-96.61361699999992,70.8211060000001],[-96.601944000000003,70.849990999999989],[-96.591674999999952,70.866928000000144],[-96.578613000000018,70.878035999999952],[-96.571121000000005,70.883040999999992],[-96.545272999999895,70.904983999999956],[-96.53083799999996,70.921371000000136],[-96.52416999999997,70.931656000000032],[-96.513061999999991,70.949707000000046],[-96.510833999999932,70.955826000000059],[-96.503066999999987,70.99693300000007],[-96.495833999999888,71.040268000000083],[-96.481673999999884,71.043319999999994],[-96.450286999999946,71.044983000000116],[-96.414444000000003,71.053589000000045],[-96.406661999999926,71.058594000000085],[-96.369995000000017,71.089981000000023],[-96.371108999999933,71.093048000000124],[-96.375823999999966,71.098037999999974],[-96.40943900000002,71.119431000000077],[-96.417770000000019,71.113602000000071],[-96.420273000000009,71.107208000000014],[-96.412215999999944,71.095824999999991],[-96.410003999999958,71.089705999999978],[-96.413619999999923,71.084152000000017],[-96.421111999999994,71.0816650000001],[-96.440825999999959,71.079163000000051],[-96.461394999999925,71.080551000000128],[-96.476669000000015,71.08526599999999],[-96.50556899999998,71.097214000000008],[-96.538329999999974,71.11303700000002],[-96.552215999999987,71.119980000000055],[-96.560546999999985,71.126373000000001],[-96.559433000000013,71.1308140000001],[-96.553878999999995,71.136932000000058],[-96.548614999999927,71.140548999999965],[-96.467223999999931,71.165267999999969],[-96.457992999999988,71.195564000000047],[-96.462203999999986,71.255501000000038],[-96.504455999999891,71.276093000000117],[-96.503890999999953,71.277205999999978],[-96.488891999999964,71.286102000000085],[-96.278060999999923,71.326384999999959],[-96.24499499999996,71.353866999999923],[-96.21833799999996,71.375809000000004],[-96.193329000000006,71.389984000000084],[-96.168335000000013,71.399993999999992],[-96.134170999999981,71.409714000000065],[-96.046386999999982,71.418045000000006],[-96.027785999999935,71.417755],[-95.926392000000021,71.400542999999971],[-95.893889999999942,71.390823000000069],[-95.882766999999944,71.384155000000078],[-95.878875999999991,71.378586000000098],[-95.878052000000025,71.37303200000008],[-95.878875999999991,71.367203000000075],[-95.859160999999972,71.354980000000012],[-95.830001999999922,71.343048000000067],[-95.792220999999927,71.328049000000021],[-95.673049999999989,71.287491000000102],[-95.658889999999985,71.285537999999974],[-95.551102000000014,71.289978000000019],[-95.535278000000005,71.290816999999947],[-95.455276000000026,71.367751999999996],[-95.451401000000033,71.375809000000004],[-95.547775000000001,71.487762000000032],[-95.779998999999975,71.503875999999991],[-95.832779000000016,71.515823000000125],[-95.936660999999901,71.546646000000123],[-95.943054000000018,71.553589000000102],[-95.908339999999953,71.600540000000137],[-95.895003999999915,71.610535000000027],[-95.889998999999989,71.613312000000121],[-95.877212999999983,71.61831699999999],[-95.863892000000021,71.619430999999963],[-95.812209999999936,71.621918000000051],[-95.744719999999973,71.624145999999996],[-95.678878999999995,71.646378000000084],[-95.539718999999991,71.703597999999943],[-95.399733999999967,71.718597000000045],[-95.301620000000014,71.721099999999979],[-95.289443999999946,71.753601000000117],[-95.289443999999946,71.757491999999957],[-95.288054999999872,71.761932000000002],[-95.285827999999981,71.767212000000086],[-95.239440999999999,71.82249500000006],[-95.226944000000003,71.826660000000061],[-95.073059000000001,71.84137000000004],[-94.890288999999996,71.844711000000075],[-94.856383999999991,71.843322999999998],[-94.838897999999972,71.841094999999996],[-94.795272999999952,71.833328000000051],[-94.744155999999975,71.823044000000039],[-94.73443599999996,71.823317999999972],[-94.716399999999965,71.826096000000121],[-94.653884999999946,71.845261000000107],[-94.612503000000004,71.859711000000004],[-94.606658999999979,71.863312000000064],[-94.607772999999952,71.866378999999995],[-94.615279999999984,71.868866000000082],[-94.629715000000033,71.866928000000144],[-94.65583799999996,71.861923000000104],[-94.706115999999952,71.848038000000031],[-94.743056999999965,71.839432000000102],[-94.756957999999941,71.837493999999936],[-94.775283999999942,71.838882000000069],[-94.783066000000019,71.84137000000004],[-94.826110999999969,71.847487999999998],[-94.853607000000011,71.849426000000108],[-94.903885000000002,71.850266000000147],[-95.102492999999981,71.851089000000002],[-95.119155999999975,71.850266000000147],[-95.157227000000034,71.845825000000048],[-95.179992999999968,71.843048000000124],[-95.180557000000022,71.842208999999968],[-95.192489999999964,71.84137000000004],[-95.213333000000034,71.843048000000124],[-95.231110000000001,71.849152000000004],[-95.240829000000019,71.853867000000037],[-95.25167799999997,71.86053499999997],[-95.256667999999934,71.866928000000144],[-95.255004999999983,71.895537999999988],[-95.222778000000005,71.942200000000071],[-95.217498999999862,71.944976999999994],[-95.201400999999976,71.94720500000011],[-94.97193900000002,71.975814999999955],[-94.741104000000007,71.99192800000003],[-94.698043999999982,71.993590999999924],[-94.661666999999966,71.994980000000112],[-94.579726999999991,71.99693300000007],[-94.56361400000003,71.99693300000007],[-94.530288999999982,71.99443100000002],[-94.499435000000005,71.988037000000134],[-94.487212999999997,71.983322000000101],[-94.393615999999952,71.938309000000004],[-94.387222000000008,71.933868000000075],[-94.388610999999912,71.924149000000114],[-94.460555999999997,71.849426000000108],[-94.47222899999997,71.847214000000065],[-94.506667999999991,71.847762999999986],[-94.521118000000001,71.849990999999932],[-94.539444000000003,71.851379000000065],[-94.562499999999943,71.849990999999932],[-94.574448000000018,71.84693900000002],[-94.64416499999993,71.818329000000006],[-94.61860699999994,71.753326000000072],[-94.611937999999952,71.74971000000005],[-94.599730999999906,71.744704999999954],[-94.594161999999983,71.743317000000047],[-94.569457999999941,71.744979999999998],[-94.555831999999896,71.750000000000057],[-94.538604999999961,71.758331000000112],[-94.536391999999978,71.761108000000036],[-94.528609999999958,71.771378000000141],[-94.519729999999925,71.78915400000011],[-94.497498000000007,71.818329000000006],[-94.48832699999997,71.824158000000011],[-94.484726000000023,71.824706999999933],[-94.392226999999991,71.81442300000009],[-94.366104000000007,71.802475000000072],[-94.356658999999866,71.796371000000022],[-94.354720999999984,71.792479999999955],[-94.389998999999989,71.71775800000006],[-94.419448999999986,71.667205999999965],[-94.423889000000031,71.66137700000013],[-94.418335000000013,71.659987999999942],[-94.40695199999999,71.660812000000135],[-94.368880999999988,71.675262000000032],[-94.267226999999991,71.730820000000051],[-94.258895999999993,71.741928000000087],[-94.255843999999968,71.753876000000105],[-94.242766999999958,71.770828000000108],[-94.228058000000033,71.781661999999983],[-94.207229999999925,71.789428999999927],[-94.194442999999922,71.791931000000034],[-94.181670999999994,71.791931000000034],[-94.036941999999954,71.787200999999982],[-94.023620999999991,71.785812000000021],[-94.014724999999885,71.781096999999988],[-94.008347000000015,71.774993999999992],[-94.006393000000003,71.763321000000019],[-93.993880999999988,71.753052000000139],[-93.972503999999958,71.745818999999983],[-93.942490000000021,71.743590999999981],[-93.909728999999913,71.744979999999998],[-93.888061999999991,71.748322000000087],[-93.871383999999978,71.753052000000139],[-93.850280999999995,71.763321000000019],[-93.830841000000021,71.771652000000074],[-93.818892999999889,71.774703999999986],[-93.802215999999987,71.775542999999971],[-93.784164000000033,71.774155000000064],[-93.741942999999992,71.769150000000025],[-93.726669000000015,71.76638800000012],[-93.71166999999997,71.761383000000023],[-93.707229999999925,71.754990000000078],[-93.694153000000028,71.716095000000109],[-93.696655000000021,71.710815000000082],[-93.704452999999944,71.705261000000064],[-93.737777999999992,71.689423000000033],[-93.764724999999999,71.679703000000131],[-93.811110999999926,71.657486000000063],[-93.818618999999956,71.651932000000102],[-93.81138599999997,71.645538000000045],[-93.797226000000023,71.639435000000105],[-93.658339999999896,71.581940000000031],[-93.618057000000022,71.56860400000005],[-93.589447000000007,71.561371000000065],[-93.513061999999877,71.544707999999957],[-93.494994999999903,71.541656000000046],[-93.476944000000003,71.540267999999969],[-93.428328999999962,71.534149000000127],[-93.412216000000001,71.530823000000055],[-93.230835000000013,71.473602000000142],[-93.214171999999962,71.467209000000139],[-93.201401000000033,71.461380000000133],[-93.18638599999997,71.435806000000127],[-93.18638599999997,71.430267000000129],[-93.18998699999986,71.423874000000012],[-93.193877999999927,71.419433999999967],[-93.195540999999935,71.413605000000132],[-93.190551999999968,71.408035000000098],[-93.180556999999965,71.401093000000003],[-93.142501999999979,71.374985000000038],[-93.128875999999991,71.368866000000025],[-93.101944000000003,71.367477000000008],[-93.062774999999988,71.36943100000002],[-93.045272999999952,71.367751999999996],[-93.029175000000009,71.36442599999998],[-92.997222999999963,71.353866999999923],[-92.985824999999863,71.348877000000073],[-92.977218999999934,71.343872000000033],[-92.973891999999978,71.340820000000122],[-92.941939999999931,71.288879000000009],[-92.938599000000011,71.270538000000045],[-92.936110999999926,71.247481999999991],[-92.931945999999925,71.220535000000041],[-92.930831999999953,71.214432000000102],[-92.923889000000031,71.207763999999941],[-92.854445999999996,71.151382000000126],[-92.862777999999992,71.139434999999992],[-92.869155999999975,71.128036000000122],[-92.888610999999969,71.074707000000103],[-92.889998999999932,71.065810999999997],[-92.906951999999933,70.912491000000102],[-93.030838000000017,70.878860000000088],[-93.040833000000021,70.877762000000018],[-93.048339999999996,70.873870999999951],[-93.046111999999937,70.867203000000018],[-93.042769999999905,70.863876000000062],[-93.027495999999985,70.852768000000083],[-92.982498000000021,70.825546000000145],[-92.958618000000001,70.817490000000078],[-92.928328999999962,70.811371000000008],[-92.911391999999978,70.809982000000048],[-92.813048999999978,70.805817000000047],[-92.688598999999954,70.775542999999971],[-92.676666000000012,70.771652000000074],[-92.641112999999962,70.71527100000003],[-92.639449999999954,70.709991000000116],[-92.642501999999979,70.706375000000094],[-92.621933000000013,70.683594000000028],[-92.592772999999966,70.685806000000127],[-92.430557000000022,70.666091999999992],[-92.418059999999969,70.66304000000008],[-92.208053999999947,70.610260000000039],[-92.199158000000011,70.606644000000017],[-92.169158999999979,70.590271000000143],[-92.159163999999976,70.584152000000074],[-92.157501000000025,70.579163000000108],[-92.156661999999983,70.573044000000095],[-92.168335000000013,70.569992000000013],[-92.196105999999986,70.571105999999986],[-92.228607000000011,70.573608000000036],[-92.245543999999995,70.571380999999974],[-92.25,70.569716999999969],[-92.265014999999892,70.551926000000037],[-92.265014999999892,70.548035000000141],[-92.25,70.501389000000131],[-92.238051999999982,70.487198000000092],[-92.116652999999985,70.470825000000048],[-92.110000999999897,70.468322999999998],[-91.996947999999975,70.390823000000069],[-91.987777999999992,70.355820000000108],[-91.992492999999968,70.320540999999992],[-91.995269999999948,70.316665999999998],[-91.985549999999932,70.289703000000031],[-91.959732000000031,70.2586060000001],[-91.952224999999999,70.255264000000125],[-91.946945000000028,70.258041000000048],[-91.942214999999976,70.263610999999969],[-91.920273000000009,70.296370999999965],[-91.900283999999999,70.330826000000116],[-91.903610000000015,70.337204000000042],[-91.904449,70.343323000000112],[-91.89805599999994,70.349152000000117],[-91.890288999999996,70.354431000000091],[-91.878052000000025,70.358321999999987],[-91.867492999999968,70.360260000000096],[-91.853058000000033,70.361374000000069],[-91.73721299999994,70.358596999999975],[-91.729720999999984,70.356934000000081],[-91.703887999999949,70.34526100000005],[-91.698883000000023,70.342484000000127],[-91.69387799999987,70.336380000000077],[-91.636123999999938,70.231658999999979],[-91.565276999999924,70.200546000000145],[-91.524169999999913,70.179153000000042],[-91.513625999999931,70.167206000000078],[-91.511948000000018,70.158875000000023],[-91.511397999999986,70.152771000000143],[-91.516953000000001,70.146378000000027],[-91.529174999999952,70.142487000000131],[-91.542495999999915,70.140823000000125],[-91.578063999999927,70.13749700000011],[-91.916655999999989,70.119980000000055],[-91.953339000000028,70.118317000000104],[-91.972228999999913,70.118591000000038],[-92.003890999999953,70.121368000000132],[-92.021392999999989,70.123596000000077],[-92.036117999999931,70.126923000000033],[-92.049438000000009,70.132202000000007],[-92.05749499999996,70.136932000000058],[-92.234436000000017,70.212203999999986],[-92.268341000000021,70.208878000000141],[-92.393065999999976,70.150543000000027],[-92.450287000000003,70.0711060000001],[-92.432220000000029,70.075546000000088],[-92.285278000000005,70.089706000000035],[-92.268341000000021,70.090546000000074],[-92.177489999999977,70.088318000000072],[-92.129990000000021,70.084991000000002],[-92.087508999999898,70.079711999999972],[-92.026397999999972,70.066376000000048],[-91.993056999999965,70.058594000000085],[-91.985274999999945,70.053864000000033],[-91.939712999999983,70.020263999999997],[-91.946654999999907,70.015823000000069],[-92.114440999999999,69.956375000000037],[-92.148894999999925,69.946639999999945],[-92.203887999999949,69.92053199999998],[-92.369445999999982,69.847763000000043],[-92.543335000000013,69.780548000000067],[-92.658614999999998,69.761108000000092],[-92.778610000000015,69.722214000000008],[-92.775283999999999,69.706375000000094],[-92.565552000000025,69.71276899999998],[-92.551392000000021,69.712494000000106],[-92.535004000000015,69.709427000000005],[-92.535277999999948,69.705261000000121],[-92.709732000000031,69.673874000000012],[-92.728881999999999,69.67164600000001],[-92.743805000000009,69.671951000000035],[-92.777221999999938,69.676086000000055],[-92.858046999999999,69.6827550000001],[-92.871384000000035,69.682480000000112],[-92.908889999999985,69.680541999999946],[-92.922774999999888,69.679427999999973],[-92.923614999999927,69.678314],[-92.920273000000009,69.669708000000071],[-92.897506999999962,69.665543000000071],[-92.836120999999991,69.655822999999998],[-92.827498999999989,69.655822999999998],[-92.694442999999978,69.656372000000147],[-92.634726999999998,69.671088999999938],[-92.629378999999972,69.673592000000099],[-92.619056999999998,69.675758000000087],[-92.5625,69.687484999999981],[-92.523620999999935,69.692749000000106],[-92.506957999999941,69.693588000000091],[-92.340835999999967,69.694138000000123],[-92.305831999999896,69.665817000000004],[-92.205276000000026,69.645538000000101],[-92.091110000000015,69.624695000000031],[-92.088333000000034,69.62303200000008],[-92.088607999999965,69.618865999999969],[-92.090835999999911,69.616089000000102],[-92.110549999999932,69.613036999999963],[-92.122771999999998,69.612198000000035],[-92.134170999999981,69.612488000000042],[-92.243606999999884,69.630264000000011],[-92.28195199999999,69.639984000000084],[-92.291107000000011,69.641373000000101],[-92.300551999999925,69.641663000000108],[-92.297501000000011,69.636932000000002],[-92.124709999999936,69.554977000000065],[-92.084166999999979,69.544708000000014],[-91.938323999999909,69.517761000000121],[-91.803329000000019,69.498870999999951],[-91.804168999999888,69.504990000000021],[-91.798339999999939,69.513885000000016],[-91.497498000000007,69.658600000000092],[-91.485001000000011,69.663315000000125],[-91.475280999999939,69.664429000000098],[-91.450835999999981,69.65887499999991],[-91.418883999999935,69.65554800000001],[-91.314163000000008,69.652771000000087],[-91.221114999999998,69.653320000000008],[-91.202224999999942,69.655258000000003],[-91.188599000000011,69.65387000000004],[-91.097777999999948,69.638321000000133],[-91.094161999999983,69.636108000000036],[-91.091949,69.631652999999972],[-91.095275999999956,69.626647999999932],[-91.101943999999946,69.620819000000097],[-91.105835000000013,69.619141000000013],[-91.334441999999967,69.552765000000022],[-91.36082499999992,69.54553199999998],[-91.380554000000018,69.542480000000069],[-91.396118000000001,69.541091999999992],[-91.460555999999997,69.539703000000145],[-91.494720000000029,69.537201000000096],[-91.514450000000011,69.534148999999957],[-91.562774999999931,69.522491000000116],[-91.570281999999963,69.520264000000054],[-91.56639100000001,69.514708999999982],[-91.557770000000005,69.508041000000048],[-91.553878999999995,69.505554000000132],[-91.402221999999938,69.522217000000012],[-91.333618000000001,69.534988000000112],[-91.321670999999924,69.538879000000009],[-91.192215000000033,69.562759000000028],[-91.17971799999998,69.558868000000132],[-91.160277999999892,69.546097000000032],[-91.15055799999999,69.537201000000096],[-91.146666999999923,69.531662000000097],[-91.143616000000009,69.525268999999923],[-91.138610999999855,69.519150000000081],[-91.128326000000015,69.514160000000061],[-91.114166000000012,69.510817999999915],[-91.102782999999988,69.508881000000088],[-90.969727000000034,69.511383000000137],[-90.830001999999922,69.484984999999995],[-90.758620999999948,69.482758000000103],[-90.751953000000015,69.487198000000149],[-90.751403999999866,69.49275200000011],[-90.758057000000008,69.501389000000131],[-90.755843999999968,69.507217000000082],[-90.754181000000017,69.509155000000021],[-90.716109999999958,69.539429000000041],[-90.698607999999922,69.539429000000041],[-90.651108000000022,69.534424000000001],[-90.536666999999909,69.513885000000016],[-90.493332000000009,69.504166000000055],[-90.436661000000015,69.489700000000028],[-90.318619000000012,69.454437000000041],[-90.307769999999948,69.450272000000041],[-90.307769999999948,69.44720500000011],[-90.319457999999997,69.440536000000009],[-90.34445199999999,69.432205000000124],[-90.358046999999942,69.429703000000075],[-90.396392999999875,69.428589000000102],[-90.411391999999921,69.431365999999969],[-90.427489999999977,69.440811000000053],[-90.43360899999999,69.444976999999938],[-90.438323999999966,69.448029000000076],[-90.450561999999991,69.450272000000041],[-90.463332999999921,69.448593000000017],[-90.493332000000009,69.440811000000053],[-90.555556999999965,69.422485000000052],[-90.613891999999908,69.451096000000007],[-90.621932999999956,69.453323000000012],[-90.703612999999962,69.453598000000056],[-90.704453000000001,69.451385000000073],[-90.698607999999922,69.446091000000138],[-90.636948000000018,69.429703000000075],[-90.585830999999985,69.419144000000017],[-90.582229999999925,69.416931000000034],[-90.584732000000031,69.41415399999994],[-90.600829999999974,69.408599999999979],[-90.694991999999957,69.389709000000096],[-90.705275999999969,69.387772000000098],[-90.718613000000005,69.387772000000098],[-90.741378999999938,69.382750999999928],[-90.790282999999988,69.362762000000032],[-90.809432999999956,69.342209000000139],[-90.813048999999921,69.338318000000072],[-90.815826000000015,69.333327999999995],[-90.818619000000012,69.298598999999967],[-90.815001999999993,69.293319999999994],[-90.80860899999999,69.287490999999989],[-90.805557000000022,69.282761000000107],[-90.803878999999995,69.259720000000073],[-90.804717999999923,69.255829000000006],[-90.809432999999956,69.253326000000015],[-90.822234999999978,69.251663000000121],[-90.903885000000002,69.246368000000075],[-90.920837000000006,69.246368000000075],[-90.931380999999931,69.247482000000048],[-91.081115999999952,69.266936999999984],[-91.214721999999938,69.290268000000083],[-91.296386999999925,69.3119200000001],[-91.345276000000013,69.328049000000021],[-91.355834999999956,69.332214000000022],[-91.426391999999964,69.350540000000024],[-91.438599000000011,69.352768000000026],[-91.447220000000016,69.352768000000026],[-91.446655000000021,69.349716000000058],[-91.431945999999982,69.33859300000006],[-91.335281000000009,69.304428000000144],[-91.130553999999961,69.24192800000003],[-91.031386999999938,69.218323000000055],[-90.918883999999935,69.160812000000078],[-90.895003999999972,69.150818000000072],[-90.815001999999993,69.133606000000043],[-90.664718999999991,69.083328000000051],[-90.654998999999918,69.078049000000078],[-90.654174999999952,69.07609599999995],[-90.654449,69.070541000000048],[-90.660552999999993,69.059982000000048],[-90.669448999999929,69.049987999999985],[-90.583892999999989,68.928864000000033],[-90.544998000000021,68.911102000000142],[-90.528884999999946,68.908600000000092],[-90.47444200000001,68.890549000000078],[-90.436385999999914,68.874419999999986],[-90.419448999999986,68.840820000000065],[-90.446105999999986,68.779709000000139],[-90.449158000000011,68.77609300000006],[-90.454177999999956,68.773605000000089],[-90.464721999999995,68.770827999999995],[-90.478332999999964,68.768326000000116],[-90.492492999999968,68.767761000000064],[-90.497498000000007,68.768326000000116],[-90.501113999999973,68.770827999999995],[-90.513900999999976,68.759155000000135],[-90.526672000000019,68.744431000000134],[-90.527785999999992,68.736649],[-90.522507000000019,68.729980000000069],[-90.506957999999997,68.724990999999932],[-90.480285999999921,68.707764000000111],[-90.479172000000005,68.705826000000002],[-90.47444200000001,68.530822999999941],[-90.509734999999978,68.495254999999929],[-90.519454999999994,68.487487999999985],[-90.528335999999911,68.483322000000101],[-90.557770000000005,68.474700999999982],[-90.584732000000031,68.465546000000131],[-90.603881999999999,68.455826000000059],[-90.607772999999952,68.451096000000007],[-90.606658999999979,68.446091000000138],[-90.603881999999999,68.439697000000081],[-90.601395000000025,68.436371000000065],[-90.55999799999995,68.423599000000024],[-90.523894999999982,68.414428999999984],[-90.466948999999886,68.403869999999984],[-90.361938000000009,68.384155000000135],[-90.332779000000016,68.378036000000122],[-90.317504999999983,68.373306000000071],[-90.315001999999993,68.369980000000055],[-90.319167999999991,68.368317000000104],[-90.343886999999938,68.365265000000022],[-90.367492999999911,68.345261000000107],[-90.271392999999989,68.238876000000118],[-90.255004999999926,68.23275799999999],[-90.232772999999952,68.230270000000019],[-90.207229999999925,68.231093999999985],[-90.178604000000007,68.235809000000017],[-90.144454999999994,68.243866000000025],[-90.132216999999912,68.24859600000002],[-90.122771999999941,68.25360100000006],[-90.119720000000029,68.257216999999969],[-90.118057000000022,68.262206999999989],[-90.038604999999961,68.352202999999975],[-89.985275000000001,68.396102999999982],[-89.912216000000001,68.467209000000025],[-89.893065999999919,68.543319999999937],[-89.911666999999966,68.547484999999938],[-89.919998000000021,68.553588999999988],[-89.927779999999984,68.563599000000067],[-89.948607999999979,68.599426000000051],[-89.950561999999991,68.60386699999998],[-89.949721999999952,68.607758000000047],[-89.894729999999868,68.65248100000008],[-89.80972300000002,68.71026599999999],[-89.802489999999921,68.712203999999929],[-89.789168999999958,68.71026599999999],[-89.780563000000029,68.705826000000002],[-89.763335999999924,68.690536000000009],[-89.757507000000032,68.684708000000057],[-89.746947999999975,68.669708000000128],[-89.729172000000005,68.699142000000109],[-89.693328999999949,68.763885000000016],[-89.68472300000002,68.810257000000092],[-89.687499999999943,68.819716999999969],[-89.689986999999917,68.824707000000046],[-89.714721999999995,68.846939000000077],[-89.733886999999925,68.881653000000142],[-89.739166000000012,68.892761000000121],[-89.756957999999884,68.939972000000012],[-89.75556899999998,68.954162999999994],[-89.753066999999987,68.958327999999995],[-89.71665999999999,69.006104000000107],[-89.707229999999925,69.014709000000096],[-89.700561999999991,69.019150000000025],[-89.684433000000013,69.028870000000097],[-89.666107000000011,69.038315000000011],[-89.644164999999987,69.048325000000091],[-89.582779000000016,69.06860400000005],[-89.56082200000003,69.077209000000039],[-89.529357999999945,69.090606999999977],[-89.489990000000034,69.110535000000027],[-89.482497999999907,69.115540000000067],[-89.458618000000001,69.133606000000043],[-89.402221999999995,69.178863999999976],[-89.398620999999935,69.182479999999998],[-89.394454999999937,69.193039000000056],[-89.394454999999937,69.199141999999995],[-89.396956999999929,69.208602999999982],[-89.394454999999937,69.214431999999988],[-89.389998999999932,69.219147000000021],[-89.322234999999921,69.247208000000114],[-89.306655999999919,69.251389000000017],[-89.258621000000005,69.259995000000117],[-89.220551,69.266663000000051],[-89.174164000000019,69.273315000000139],[-89.134170999999981,69.275542999999914],[-89.114440999999886,69.27526899999998],[-89.09056099999998,69.271927000000062],[-89.049987999999985,69.264435000000105],[-89.038054999999872,69.261931999999945],[-88.999435000000005,69.251389000000017],[-88.968886999999938,69.24136400000009],[-88.942489999999964,69.229980000000012],[-88.938048999999978,69.226928999999984],[-88.935546999999985,69.222214000000122],[-88.93472300000002,69.219986000000006],[-88.9375,69.214156999999943],[-88.936660999999958,69.209152000000074],[-88.929992999999968,69.198029000000133],[-88.870269999999948,69.148605000000089],[-88.85943599999996,69.142211999999972],[-88.782501000000025,69.103043000000071],[-88.772507000000019,69.098876999999959],[-88.62388599999997,69.042755],[-88.480285999999978,68.998871000000065],[-88.457229999999925,68.992752000000053],[-88.406113000000005,68.982758000000047],[-88.270844000000011,68.934981999999934],[-88.208618000000001,68.911652000000004],[-88.197768999999994,68.906647000000135],[-88.115829000000019,68.860535000000084],[-88.082229999999981,68.841370000000097],[-88.052215999999987,68.823044000000095],[-88.038329999999974,68.814147999999989],[-87.971664000000033,68.766097999999943],[-87.96444699999995,68.760543999999982],[-87.947768999999994,68.731659000000093],[-87.921660999999915,68.673035000000027],[-87.916655999999989,68.656372000000147],[-87.917496000000028,68.647491000000059],[-87.925002999999947,68.632476999999994],[-87.93499799999995,68.61943100000002],[-87.942489999999907,68.610809000000017],[-87.947768999999994,68.605255000000056],[-87.933883999999978,68.576935000000049],[-87.924163999999905,68.559708000000001],[-87.883621000000005,68.494430999999963],[-87.881377999999984,68.491089000000045],[-87.841675000000009,68.432479999999998],[-87.835555999999997,68.42442299999999],[-87.817504999999926,68.417206000000078],[-87.798614999999984,68.40525800000006],[-87.791672000000005,68.398330999999985],[-87.789718999999934,68.391937000000098],[-87.789444000000003,68.386658000000125],[-87.792220999999927,68.334427000000005],[-87.800551999999925,68.3119200000001],[-87.845276000000013,68.247757000000092],[-87.848891999999864,68.244141000000013],[-87.929168999999945,68.197204999999997],[-87.93582200000003,68.195815999999979],[-87.946945000000028,68.198593000000074],[-88.106658999999866,68.242751999999996],[-88.22193900000002,68.36554000000001],[-88.384445000000028,68.291092000000049],[-88.392226999999991,68.287490999999989],[-88.395553999999947,68.285263000000043],[-88.401671999999962,68.280272999999966],[-88.403335999999911,68.275542999999971],[-88.402785999999878,68.270263999999997],[-88.398345999999947,68.260544000000095],[-88.380829000000006,68.24552900000009],[-88.361937999999952,68.233871000000079],[-88.342498999999975,68.223602000000028],[-88.334732000000031,68.217484000000127],[-88.330841000000021,68.213043000000027],[-88.279723999999931,68.118041999999946],[-88.277495999999985,68.111649],[-88.277785999999992,68.105545000000006],[-88.283065999999963,68.099990999999989],[-88.315551999999968,68.086104999999975],[-88.331680000000006,68.076385000000073],[-88.338332999999977,68.070541000000105],[-88.341109999999901,68.064987000000087],[-88.347777999999948,68.037201000000039],[-88.366942999999992,68.03166200000004],[-88.381103999999993,68.025269000000094],[-88.372771999999941,67.96887200000009],[-88.370834000000002,67.959152000000017],[-88.36860699999994,67.954436999999984],[-88.285278000000005,67.81721500000009],[-88.276397999999972,67.80304000000001],[-88.269164999999987,67.793594000000041],[-88.160552999999993,67.682479999999941],[-88.151107999999908,67.673309000000017],[-88.139449999999954,67.664428999999984],[-88.124999999999943,67.65554800000001],[-88.095839999999953,67.642487000000074],[-88.066100999999946,67.634720000000129],[-88.009170999999924,67.622757000000092],[-87.979996000000028,67.615814000000114],[-87.965285999999992,67.611649000000114],[-87.955841000000021,67.607483000000002],[-87.881377999999984,67.568054000000132],[-87.841385000000002,67.536102000000142],[-87.827224999999999,67.527206000000035],[-87.789169000000015,67.505263999999954],[-87.623046999999929,67.412491000000102],[-87.606383999999935,67.403869999999984],[-87.585007000000019,67.395264000000054],[-87.53694200000001,67.378860000000088],[-87.460830999999985,67.344147000000135],[-87.357773000000009,67.262207000000046],[-87.359160999999972,67.247482000000048],[-87.361938000000009,67.242203000000075],[-87.429168999999945,67.208603000000039],[-87.440551999999968,67.204987000000131],[-87.486664000000019,67.194138000000066],[-87.497771999999941,67.190536000000122],[-87.50556899999998,67.185256999999979],[-87.511397999999986,67.174988000000099],[-87.511948000000018,67.169983000000059],[-87.516953000000001,67.115540000000124],[-87.510284000000013,67.112198000000149],[-87.497498000000007,67.115265000000079],[-87.322784000000013,67.162766000000147],[-87.240828999999906,67.216094999999939],[-87.117766999999958,67.212769000000094],[-87.069732999999928,67.219437000000084],[-86.968612999999948,67.245255000000043],[-86.96305799999999,67.250548999999978],[-86.967498999999975,67.255264000000011],[-87.008895999999936,67.282211000000132],[-87.075561999999934,67.327209000000039],[-87.086670000000026,67.336379999999963],[-87.090560999999923,67.345825000000048],[-87.089995999999985,67.350815000000125],[-87.081389999999999,67.354430999999977],[-86.874435000000005,67.404984000000127],[-86.804169000000002,67.420821999999987],[-86.79222099999987,67.422485000000108],[-86.779175000000009,67.422211000000004],[-86.765288999999939,67.419144000000074],[-86.709731999999974,67.388046000000031],[-86.689163000000008,67.3744200000001],[-86.68472300000002,67.369980000000055],[-86.675551999999982,67.365540000000067],[-86.647232000000031,67.358322000000044],[-86.592498999999975,67.345261000000107],[-86.579726999999991,67.344986000000063],[-86.543883999999935,67.344986000000063],[-86.53195199999999,67.346649000000014],[-86.523620999999991,67.352203000000031],[-86.518065999999976,67.357208000000071],[-86.509170999999981,67.36775200000011],[-86.50306699999993,67.377762000000018],[-86.473891999999978,67.468596999999988],[-86.472777999999892,67.478592000000049],[-86.47444200000001,67.483322000000101],[-86.49499499999996,67.49693300000007],[-86.485001000000011,67.516936999999984],[-86.452224999999999,67.592484000000127],[-86.451401000000033,67.597488000000112],[-86.455840999999964,67.601929000000041],[-86.465285999999935,67.606369000000029],[-86.479720999999984,67.610535000000141],[-86.488892000000021,67.614699999999971],[-86.521392999999932,67.671921000000111],[-86.525283999999999,67.681366000000139],[-86.508056999999894,67.69720500000011],[-86.359160999999915,67.827773999999977],[-86.350554999999986,67.833327999999938],[-86.286941999999897,67.869979999999941],[-86.098052999999993,67.978043000000014],[-86.041381999999942,68.000549000000035],[-86.029723999999931,68.004990000000134],[-86.005004999999983,68.008330999999998],[-85.99221799999998,68.009155000000135],[-85.979995999999915,68.011658000000125],[-85.898346000000004,68.046097000000145],[-85.892501999999979,68.051376000000118],[-85.890838999999971,68.061371000000065],[-85.912506000000008,68.084717000000069],[-85.916396999999961,68.094147000000135],[-85.914443999999946,68.104155999999989],[-85.888061999999991,68.189697000000137],[-85.842772999999966,68.317214999999976],[-85.839172000000019,68.321381000000088],[-85.712783999999942,68.411652000000117],[-85.726943999999946,68.486374000000012],[-85.733321999999987,68.598602000000085],[-85.675277999999992,68.711104999999975],[-85.663619999999923,68.726929000000098],[-85.645843999999954,68.737488000000099],[-85.633895999999936,68.741928000000144],[-85.620269999999948,68.741653000000099],[-85.606383999999991,68.740265000000022],[-85.591675000000009,68.737198000000092],[-85.569457999999941,68.728317000000004],[-85.558043999999938,68.726089000000002],[-85.494445999999925,68.736923000000104],[-85.481948999999929,68.739426000000037],[-85.466171000000031,68.749992000000134],[-85.464164999999923,68.752991000000122],[-85.464721999999938,68.759720000000016],[-85.507781999999963,68.766662999999994],[-85.550827000000027,68.773315000000082],[-85.562774999999988,68.776657],[-85.55360399999995,68.781097000000045],[-85.540833000000021,68.78276100000005],[-85.514175000000023,68.783875000000023],[-85.458053999999947,68.777770999999973],[-85.415008999999998,68.770827999999995],[-85.371383999999978,68.762207000000103],[-85.361664000000019,68.757767000000058],[-85.368056999999965,68.752486999999974],[-85.379439999999988,68.747208000000001],[-85.388335999999981,68.741928000000144],[-85.384170999999981,68.737198000000092],[-85.328612999999962,68.724990999999932],[-85.314162999999951,68.722762999999986],[-85.228881999999999,68.71026599999999],[-85.215835999999967,68.710815000000139],[-85.209166999999979,68.714996000000042],[-85.210830999999985,68.719711000000075],[-85.21945199999999,68.729155999999932],[-85.226669000000015,68.733597000000032],[-85.148345999999947,68.750000000000114],[-85.067504999999926,68.749710000000107],[-84.912780999999939,68.746933000000013],[-84.898055999999997,68.742477000000065],[-84.883895999999993,68.740265000000022],[-84.801102000000014,68.73414600000001],[-84.787215999999944,68.733597000000032],[-84.775283999999999,68.737198000000092],[-84.767501999999922,68.747208000000001],[-84.760009999999909,68.757217000000026],[-84.752791999999999,68.767487000000131],[-84.754180999999903,68.772217000000012],[-84.761123999999995,68.776932000000045],[-84.834732000000031,68.820541000000105],[-84.846664000000033,68.82388300000008],[-84.860824999999977,68.825272000000041],[-84.899993999999936,68.820541000000105],[-84.912216000000001,68.818054000000018],[-84.976944000000003,68.809418000000107],[-85.003615999999909,68.808318999999983],[-85.031677000000002,68.810806000000014],[-85.131942999999922,68.826934999999992],[-85.143889999999942,68.830276000000026],[-85.163054999999929,68.839157000000114],[-85.17721599999993,68.848328000000095],[-85.184158000000025,68.853043000000127],[-85.192764000000011,68.862198000000149],[-85.194442999999865,68.867203000000018],[-85.190826000000015,68.872208000000057],[-85.177779999999984,68.87359600000002],[-85.15306099999998,68.873032000000023],[-85.125,68.870254999999986],[-85.053329000000019,68.858871000000022],[-85.039992999999981,68.859421000000054],[-85.005568999999923,68.877472000000068],[-85.001952999999958,68.882477000000108],[-84.99749799999995,68.925812000000064],[-85.007232999999871,68.930267000000129],[-85.021117999999944,68.931656000000089],[-85.046660999999972,68.926651000000049],[-85.059998000000007,68.925812000000064],[-85.08805799999999,68.928588999999988],[-85.116942999999935,68.93331900000004],[-85.129439999999931,68.937485000000095],[-85.136123999999995,68.942200000000128],[-85.140563999999927,68.946640000000002],[-85.136947999999961,68.951935000000049],[-85.127776999999924,68.956100000000049],[-85.115004999999996,68.958603000000039],[-85.087508999999955,68.958037999999988],[-84.973785000000021,68.946869000000106],[-84.914718999999991,68.938034000000073],[-84.818893000000003,68.927765000000022],[-84.805831999999953,68.929152999999928],[-84.796386999999982,68.933594000000028],[-84.791381999999942,68.94331399999993],[-84.793334999999956,68.948318000000086],[-84.799987999999871,68.952774000000034],[-84.809433000000013,68.957214000000022],[-84.821945000000028,68.961655000000121],[-84.837219000000005,68.965820000000122],[-84.851394999999968,68.968323000000112],[-84.865554999999915,68.969711000000018],[-84.906951999999933,68.971649000000127],[-84.921386999999982,68.973877000000073],[-84.936110999999926,68.977203000000145],[-84.986922999999933,68.999511999999982],[-84.981673999999941,69.007492000000013],[-84.957779000000016,69.017487000000074],[-84.944442999999978,69.018051000000014],[-84.836394999999925,69.012772000000041],[-84.720000999999968,69.006943000000035],[-84.591674999999952,68.994431000000077],[-84.578063999999983,68.993866000000025],[-84.565552000000025,68.997482000000105],[-84.541381999999999,69.007216999999969],[-84.532227000000034,69.012497000000053],[-84.528335999999967,69.017487000000074],[-84.535277999999948,69.022217000000126],[-84.563613999999973,69.025818000000015],[-84.745543999999995,69.039703000000088],[-84.953887999999949,69.085815000000139],[-85.108337000000006,69.113312000000121],[-85.020554000000004,69.160262999999929],[-85.006957999999941,69.160812000000078],[-84.994155999999919,69.163315000000068],[-84.987502999999947,69.168594000000041],[-84.994719999999973,69.173035000000141],[-85.008895999999993,69.174423000000047],[-85.064712999999927,69.176926000000037],[-85.143775999999946,69.167091000000028],[-85.151778999999976,69.166091999999935],[-85.159110999999996,69.164101000000073],[-85.163276999999994,69.161598000000083],[-85.155272999999966,69.153107000000091],[-85.176665999999898,69.143600000000049],[-85.197494999999947,69.132750999999985],[-85.210555999999997,69.130264000000125],[-85.223617999999988,69.128860000000088],[-85.236937999999952,69.128036000000122],[-85.25140399999998,69.130264000000125],[-85.266662999999994,69.133606000000043],[-85.308334000000002,69.143600000000049],[-85.315552000000025,69.148041000000148],[-85.317504999999983,69.15277100000003],[-85.308043999999995,69.158034999999984],[-85.29611199999988,69.162491000000102],[-85.283324999999877,69.165267999999969],[-85.235001000000011,69.174698000000035],[-85.227501000000018,69.176872000000003],[-85.226836999999989,69.179870999999991],[-85.231162999999981,69.182541000000072],[-85.240829000000019,69.192474000000004],[-85.254729999999995,69.192749000000049],[-85.337783999999999,69.193863000000022],[-85.383057000000008,69.205551000000071],[-85.392776000000026,69.209991000000059],[-85.473327999999924,69.271927000000062],[-85.477782999999874,69.276382000000069],[-85.50306699999993,69.31442300000009],[-85.508057000000008,69.395263999999997],[-85.506957999999997,69.400269000000037],[-85.503341999999975,69.405258000000003],[-85.494155999999919,69.410812000000021],[-85.481948999999929,69.415267999999969],[-85.467498999999918,69.417206000000078],[-85.453339000000028,69.416931000000034],[-85.424437999999952,69.413315000000011],[-85.396117999999944,69.411652000000061],[-85.383330999999941,69.415267999999969],[-85.339172000000019,69.438873000000115],[-85.343613000000005,69.443587999999977],[-85.353606999999954,69.448029000000076],[-85.378875999999934,69.456649999999968],[-85.39416499999993,69.460815000000139],[-85.422774999999945,69.462493999999992],[-85.436385999999914,69.460815000000139],[-85.445830999999998,69.45637499999998],[-85.465011999999945,69.440811000000053],[-85.477218999999991,69.436371000000008],[-85.491378999999995,69.436646000000053],[-85.500838999999985,69.439148000000102],[-85.510833999999988,69.443587999999977],[-85.525283999999999,69.45277400000009],[-85.538894999999968,69.466933999999981],[-85.542496000000028,69.476379000000065],[-85.547775000000001,69.647217000000069],[-85.546951000000035,69.652206000000035],[-85.514724999999999,69.768051000000071],[-85.450287000000003,69.784714000000122],[-85.423324999999977,69.788879000000122],[-85.409163999999976,69.788589000000115],[-85.393889999999999,69.7852630000001],[-85.389174999999966,69.780548000000067],[-85.389998999999932,69.775818000000015],[-85.39416499999993,69.770537999999988],[-85.406951999999933,69.760269000000108],[-85.410827999999981,69.755264000000068],[-85.406386999999995,69.750549000000035],[-85.391952999999944,69.750275000000101],[-85.379165999999941,69.753601000000117],[-85.366652999999985,69.758040999999992],[-85.342498999999975,69.768875000000037],[-85.333068999999966,69.774155000000121],[-85.331954999999994,69.77915999999999],[-85.34445199999999,69.813033999999959],[-85.349166999999909,69.817490000000078],[-85.361938000000009,69.821930000000066],[-85.377212999999927,69.824158000000068],[-85.433608999999933,69.823608000000036],[-85.461394999999982,69.822495000000117],[-85.489990000000034,69.823044000000095],[-85.518615999999952,69.823608000000036],[-85.56138599999997,69.824706999999989],[-85.586394999999982,69.826934999999935],[-85.582229999999981,69.845825000000104],[-85.578613000000018,69.850815000000125],[-85.571945000000028,69.856094000000098],[-85.561935000000005,69.859421000000054],[-85.548049999999932,69.859984999999995],[-85.377212999999927,69.851089000000059],[-85.361938000000009,69.848877000000016],[-85.315552000000025,69.838042999999971],[-85.274169999999913,69.825272000000041],[-85.222504000000015,69.80802900000009],[-85.212509000000011,69.803589000000102],[-85.199432000000002,69.799149000000057],[-85.170836999999949,69.790542999999957],[-85.093886999999995,69.773315000000025],[-85.079177999999956,69.771102999999982],[-85.064437999999996,69.76998900000001],[-84.871658000000025,69.816086000000098],[-84.86471599999993,69.821105999999929],[-84.854172000000005,69.83137499999998],[-84.574172999999917,69.857483000000116],[-84.546386999999868,69.859421000000054],[-84.476669000000015,69.862198000000149],[-84.433608999999933,69.861098999999967],[-84.375823999999966,69.857483000000116],[-84.346663999999976,69.854706000000022],[-84.331680000000006,69.852203000000031],[-84.169448999999986,69.822220000000129],[-84.125823999999909,69.809418000000107],[-84.118606999999997,69.804703000000075],[-84.114165999999955,69.799988000000042],[-84.112220999999977,69.793593999999985],[-84.104171999999949,69.785812000000021],[-84.091674999999952,69.781372000000033],[-83.971938999999963,69.74971000000005],[-83.941665999999998,69.743042000000116],[-83.748610999999926,69.708878000000084],[-83.733886999999982,69.706649999999911],[-83.705001999999922,69.703598],[-83.603881999999942,69.693588000000091],[-83.589447000000007,69.692200000000014],[-83.360549999999989,69.676376000000062],[-83.346389999999985,69.676086000000055],[-83.333069000000023,69.678314],[-83.306380999999931,69.693862999999908],[-83.293610000000001,69.699142000000109],[-83.280562999999916,69.702484000000027],[-83.253341999999975,69.705261000000121],[-83.238892000000021,69.704711999999972],[-83.180557000000022,69.694977000000108],[-83.122771999999998,69.689148000000046],[-83.021941999999967,69.679703000000018],[-83.008056999999951,69.679152999999985],[-82.826950000000011,69.688873000000058],[-82.696654999999964,69.695816000000036],[-82.541007999999977,69.674477000000138],[-82.539672999999937,69.671593000000087],[-82.536162999999874,69.668823000000032],[-82.527328000000011,69.666153000000122],[-82.509505999999874,69.661979999999971],[-82.500671000000011,69.660491999999977],[-82.483329999999967,69.657990000000098],[-82.457503999999972,69.655327],[-82.291672000000005,69.639984000000084],[-82.263335999999981,69.638046000000145],[-82.254729999999995,69.636383000000023],[-82.307495000000017,69.622208000000114],[-82.334731999999974,69.61943100000002],[-82.390288999999996,69.618865999999969],[-82.47066499999994,69.62303200000008],[-82.476333999999952,69.625870000000077],[-82.483664999999974,69.628539999999987],[-82.492500000000007,69.630043000000001],[-82.552337999999963,69.635376000000008],[-82.560836999999992,69.635704000000146],[-82.56899999999996,69.634872000000087],[-82.577002999999991,69.632874000000129],[-82.653885000000002,69.62303200000008],[-82.654723999999987,69.568604000000107],[-82.612503000000004,69.566940000000102],[-82.600280999999995,69.562485000000095],[-82.535278000000005,69.534988000000112],[-82.489989999999977,69.507217000000082],[-82.476668999999958,69.497756999999979],[-82.486937999999896,69.493591000000094],[-82.500564999999938,69.492203000000018],[-82.528884999999946,69.4952550000001],[-82.74221799999998,69.50999500000006],[-82.897507000000019,69.518875000000094],[-82.939712999999927,69.521378000000084],[-82.982223999999917,69.524154999999951],[-83.067779999999914,69.533051000000057],[-83.125548999999921,69.539978000000019],[-83.154175000000009,69.543869000000086],[-83.228057999999976,69.538589000000002],[-83.082503999999972,69.514160000000061],[-83.025283999999999,69.508041000000048],[-82.954726999999991,69.503601000000003],[-82.870270000000005,69.500274999999988],[-82.856658999999922,69.50082400000008],[-82.842498999999918,69.500274999999988],[-82.785277999999948,69.494141000000127],[-82.68472300000002,69.479706000000022],[-82.324172999999917,69.418868999999972],[-82.295272999999952,69.413879000000122],[-82.23721299999994,69.400818000000015],[-82.225280999999995,69.39637799999997],[-82.221389999999928,69.391662999999937],[-82.231673999999941,69.387497000000053],[-82.289718999999991,69.251663000000121],[-82.291381999999999,69.246643000000063],[-82.273055999999997,69.237488000000042],[-82.258620999999948,69.233871000000079],[-82.244995000000017,69.233322000000101],[-82.217223999999931,69.233047000000113],[-82.203612999999962,69.233597000000145],[-82.054442999999992,69.24136400000009],[-82.041107000000011,69.242751999999996],[-82.027785999999992,69.244979999999941],[-81.99129499999998,69.25470700000011],[-81.914718999999877,69.269440000000145],[-81.70777899999996,69.264709000000039],[-81.693877999999984,69.263046000000145],[-81.67971799999998,69.260544000000039],[-81.650283999999999,69.251663000000121],[-81.512222000000008,69.20138500000013],[-81.416396999999904,69.208038000000101],[-81.402221999999995,69.207214000000135],[-81.388335999999981,69.204712000000086],[-81.359725999999966,69.196640000000116],[-81.347778000000005,69.191925000000083],[-81.338897999999972,69.187485000000038],[-81.332503999999858,69.182479999999998],[-81.299438000000009,69.1202550000001],[-81.330841000000021,69.095261000000107],[-81.57028200000002,68.992477000000008],[-81.59584000000001,68.984146000000123],[-81.71665999999999,68.949142000000052],[-81.75556899999998,68.941360000000088],[-81.809433000000013,68.9327550000001],[-81.888061999999991,68.919144000000131],[-81.914169000000015,68.914429000000098],[-81.966110000000015,68.904433999999981],[-82.005004999999983,68.895538000000045],[-82.043059999999969,68.883881000000088],[-82.055556999999965,68.878586000000041],[-82.057219999999973,68.873871000000008],[-82.043335000000013,68.872208000000057],[-82.00306699999993,68.874146000000053],[-81.977218999999991,68.879700000000014],[-81.833068999999966,68.907211000000075],[-81.819457999999997,68.908600000000092],[-81.68638599999997,68.905258000000117],[-81.673049999999989,68.904433999999981],[-81.66194200000001,68.90277100000003],[-81.650283999999999,68.899155000000007],[-81.58805799999999,68.869705000000124],[-81.581954999999937,68.864990000000091],[-81.438323999999966,68.874984999999981],[-81.424712999999997,68.87553400000013],[-81.382767000000001,68.866652999999985],[-81.354171999999892,68.857483000000116],[-81.238051999999925,68.774704000000042],[-81.23443599999996,68.76998900000001],[-81.232772999999952,68.760268999999937],[-81.252227999999945,68.653046000000131],[-81.255843999999911,68.643051000000014],[-81.260558999999944,68.638046000000145],[-81.267501999999922,68.633041000000105],[-81.357773000000009,68.599152000000117],[-81.560271999999998,68.541656000000103],[-81.687209999999993,68.509430000000066],[-81.798889000000031,68.489700000000028],[-81.816390999999896,68.469711000000132],[-81.830291999999986,68.459717000000126],[-81.842498999999918,68.455551000000014],[-81.958053999999947,68.423309000000017],[-81.970839999999953,68.421097000000145],[-81.997771999999941,68.423035000000084],[-82.011947999999961,68.427765000000136],[-82.024444999999957,68.436919999999986],[-82.027785999999992,68.441650000000038],[-82.028884999999946,68.446640000000059],[-82.033324999999991,68.456099999999992],[-82.038054999999929,68.465820000000065],[-82.041671999999949,68.470535000000098],[-82.062209999999936,68.494430999999963],[-82.068618999999899,68.499145999999996],[-82.077498999999932,68.503601000000003],[-82.091675000000009,68.507217000000082],[-82.229445999999996,68.531662000000097],[-82.256393000000003,68.533600000000035],[-82.269454999999937,68.532486000000063],[-82.271117999999944,68.527481000000023],[-82.267226999999991,68.52276599999999],[-82.254729999999995,68.513321000000133],[-82.243056999999965,68.508881000000088],[-82.229171999999892,68.505264000000125],[-82.1875,68.495819000000097],[-82.175826999999913,68.491364000000033],[-82.17332499999992,68.485808999999961],[-82.175002999999947,68.481093999999928],[-82.179169000000002,68.476089000000059],[-82.183608999999933,68.471100000000092],[-82.190552000000025,68.466095000000053],[-82.202498999999989,68.460815000000025],[-82.215011999999888,68.457489000000123],[-82.228057999999976,68.455261000000007],[-82.25418099999996,68.454437000000041],[-82.382767000000001,68.466934000000037],[-82.393889999999999,68.468322999999998],[-82.448882999999967,68.478592000000049],[-82.476943999999946,68.485535000000027],[-82.500290000000007,68.494430999999963],[-82.532501000000025,68.508041000000048],[-82.545273000000009,68.517487000000017],[-82.549163999999905,68.522217000000069],[-82.557770000000005,68.526932000000102],[-82.571395999999993,68.526382000000069],[-82.583892999999875,68.524155000000007],[-82.608886999999925,68.517487000000017],[-82.62110899999999,68.512206999999933],[-82.634734999999978,68.502213000000097],[-82.638901000000033,68.497208000000057],[-82.635284000000013,68.492203000000018],[-82.491103999999893,68.453873000000101],[-82.490554999999915,68.402205999999921],[-82.363051999999982,68.35054000000008],[-82.356658999999922,68.345825000000048],[-82.353057999999976,68.341094999999996],[-82.351105000000018,68.331375000000094],[-82.352492999999924,68.326660000000061],[-82.356658999999922,68.321655000000021],[-82.369445999999925,68.318329000000006],[-82.381942999999922,68.316939999999988],[-82.39527899999996,68.316666000000055],[-82.422225999999966,68.318603999999993],[-82.448607999999979,68.320831000000055],[-82.475006000000008,68.321106000000043],[-82.500838999999985,68.317490000000021],[-82.507781999999963,68.313309000000118],[-82.50140399999998,68.308594000000085],[-82.483611999999937,68.299422999999933],[-82.426101999999958,68.276657000000114],[-82.400557999999933,68.26887499999998],[-82.386947999999961,68.266388000000063],[-82.37388599999997,68.265548999999965],[-82.36082499999992,68.266937000000041],[-82.311661000000015,68.283051],[-82.286941999999897,68.289703000000031],[-82.273330999999928,68.288879000000065],[-82.264724999999999,68.284424000000058],[-82.260009999999966,68.274993999999992],[-82.259170999999981,68.269989000000123],[-82.258620999999948,68.255554000000018],[-82.264449999999897,68.24552900000009],[-82.270279000000016,68.235535000000084],[-82.278610000000015,68.225540000000024],[-82.289443999999946,68.215545999999961],[-82.300551999999868,68.205551000000071],[-82.321121000000005,68.190262000000018],[-82.330291999999872,68.185256999999922],[-82.337218999999948,68.180267000000072],[-82.345550999999944,68.170258000000047],[-82.34722899999997,68.165268000000026],[-82.345839999999953,68.160537999999974],[-82.337218999999948,68.155823000000112],[-82.314437999999939,68.146652000000017],[-82.272506999999962,68.133331000000055],[-82.230835000000013,68.121918000000051],[-82.206115999999952,68.115814],[-82.192489999999964,68.112487999999985],[-82.179169000000002,68.111649],[-82.166397000000018,68.114151000000106],[-82.145781999999997,68.125488000000018],[-82.099166999999966,68.154984000000013],[-82.080565999999919,68.179703000000131],[-82.06361400000003,68.199707000000046],[-82.056945999999982,68.204712000000086],[-82.047500999999897,68.209716999999955],[-82.037505999999894,68.213881999999955],[-82.025009000000011,68.216095000000109],[-82.01167299999986,68.214705999999921],[-81.997771999999941,68.211105000000089],[-81.988892000000021,68.206650000000025],[-81.985549999999989,68.201660000000004],[-81.984726000000023,68.196929999999952],[-81.993057000000022,68.172485000000108],[-82.008895999999936,68.14776599999999],[-82.019164999999987,68.132751000000042],[-82.027221999999938,68.122756999999979],[-82.034164000000033,68.117751999999939],[-82.043610000000001,68.112762000000089],[-82.056106999999997,68.109421000000054],[-82.114502000000016,68.082870000000014],[-82.173889000000031,68.002486999999974],[-82.175551999999982,67.997482000000105],[-82.102782999999988,67.907211000000075],[-82.096663999999976,67.90248100000008],[-82.079452999999944,67.893326000000002],[-82.070557000000008,67.888596000000007],[-81.837783999999999,67.783875000000023],[-81.727218999999934,67.740814],[-81.707503999999972,67.731658999999922],[-81.690552000000025,67.722487999999998],[-81.678328999999906,67.713042999999914],[-81.666397000000018,67.703598000000056],[-81.65972899999997,67.694138000000009],[-81.653884999999946,67.689423000000147],[-81.636672999999917,67.679977000000008],[-81.592498999999975,67.661652000000061],[-81.538329999999974,67.643599999999992],[-81.498046999999985,67.631927000000132],[-81.457779000000016,67.620529000000147],[-81.433059999999955,67.611374000000069],[-81.416396999999904,67.601929000000041],[-81.248885999999914,67.479706000000078],[-81.243056999999908,67.474991000000045],[-81.239715999999873,67.470260999999994],[-81.237212999999997,67.455551000000014],[-81.237503000000004,67.441086000000098],[-81.239166000000012,67.436096000000077],[-81.245269999999948,67.426376000000005],[-81.256392999999946,67.416381999999942],[-81.293610000000001,67.396103000000039],[-81.300551999999982,67.391098],[-81.30471799999998,67.386108000000092],[-81.347778000000005,67.292755],[-81.366394000000014,67.238875999999948],[-81.373610999999983,67.204711999999972],[-81.376099000000011,67.189972000000012],[-81.375274999999988,67.185256999999979],[-81.380279999999914,67.170532000000037],[-81.413895000000025,67.091370000000097],[-81.432220000000029,67.066666000000112],[-81.496657999999911,67.004715000000147],[-81.50306699999993,66.999710000000107],[-81.512512000000015,66.99470500000001],[-81.524170000000026,66.99054000000001],[-81.536117999999988,66.988312000000064],[-81.699722000000008,66.970261000000107],[-81.711944999999957,66.969986000000063],[-81.750838999999928,66.978591999999992],[-81.763901000000033,66.983046999999999],[-81.772232000000031,66.987762000000032],[-81.783066000000019,66.992477000000065],[-81.796111999999937,66.996933000000013],[-81.809157999999968,66.998321999999973],[-81.833618000000001,66.997756999999979],[-81.929717999999923,66.978591999999992],[-81.952498999999932,66.968048000000124],[-81.988892000000021,66.949706999999933],[-82.026947000000007,66.926086000000055],[-82.179992999999968,66.768875000000094],[-82.183884000000035,66.764160000000061],[-82.369720000000029,66.725815000000125],[-82.481109999999944,66.669707999999957],[-82.556380999999988,66.623871000000122],[-82.562774999999874,66.618866000000082],[-82.566665999999941,66.613876000000005],[-82.571670999999981,66.60386699999998],[-82.577498999999989,66.584427000000005],[-82.576675000000023,66.579436999999984],[-82.579452999999944,66.569717000000082],[-82.585555999999997,66.564697000000024],[-82.596953999999982,66.560256999999979],[-82.694442999999978,66.558029000000033],[-82.78195199999999,66.566666000000055],[-82.86999499999996,66.567490000000021],[-83.018065999999976,66.539978000000076],[-83.012787000000003,66.515823000000069],[-83.015288999999996,66.50610400000005],[-83.019164999999873,66.501099000000011],[-83.025283999999999,66.495819000000097],[-83.049987999999928,66.475539999999967],[-83.058608999999933,66.470260999999994],[-83.357497999999964,66.353043000000071],[-83.368332000000009,66.348877000000016],[-83.402221999999938,66.347487999999998],[-83.450561999999991,66.346649000000014],[-83.515288999999882,66.353867000000037],[-83.567504999999983,66.367477000000122],[-83.652785999999935,66.40776100000005],[-83.654175000000009,66.412491000000102],[-83.639449999999954,66.437195000000088],[-83.630828999999949,66.442200000000128],[-83.618331999999896,66.44081100000011],[-83.607773000000009,66.436371000000122],[-83.597778000000005,66.426926000000037],[-83.601669000000015,66.412201000000096],[-83.597778000000005,66.407486000000063],[-83.545273000000009,66.381363000000079],[-83.53472899999997,66.378035999999952],[-83.579726999999934,66.431656000000089],[-83.672501000000011,66.520538000000101],[-83.68110699999994,66.524993999999992],[-83.70695499999988,66.530822999999998],[-83.732497999999964,66.534714000000065],[-83.795273000000009,66.541930999999977],[-83.82028200000002,66.542754999999943],[-83.832229999999981,66.542206000000022],[-83.857497999999964,66.544144000000131],[-83.968886999999881,66.577484000000027],[-83.977492999999981,66.582214000000079],[-83.985001000000011,66.591660000000047],[-84.011397999999986,66.663605000000018],[-84.014174999999966,66.673309000000017],[-84.015563999999983,66.687759000000142],[-84.014450000000011,66.692748999999992],[-84.006119000000012,66.698029000000076],[-83.994719999999973,66.70138500000013],[-83.982772999999952,66.70277400000009],[-83.945540999999992,66.702484000000084],[-83.891113000000018,66.804153000000099],[-83.886123999999995,66.813873000000001],[-83.883895999999936,66.82388300000008],[-83.884170999999924,66.833602999999982],[-83.890288999999996,66.85775799999999],[-83.901671999999905,66.871918000000107],[-83.907776000000013,66.876647999999989],[-83.916397000000018,66.881087999999977],[-83.928878999999995,66.86303700000002],[-83.938323999999909,66.823608000000092],[-83.945540999999992,66.813599000000067],[-84.104996000000028,66.708328000000108],[-84.116394000000014,66.704987000000074],[-84.140288999999996,66.701934999999935],[-84.152785999999992,66.702484000000084],[-84.165558000000033,66.703873000000101],[-84.260284000000013,66.716385000000059],[-84.27305599999994,66.718596999999932],[-84.286666999999909,66.723038000000031],[-84.295273000000009,66.727478000000076],[-84.43638599999997,66.818329000000119],[-84.427779999999927,66.961104999999975],[-84.415008999999998,66.960815000000139],[-84.390288999999882,66.961929000000112],[-84.378600999999946,66.964157000000057],[-84.367492999999968,66.968597000000102],[-84.370834000000002,66.97137500000008],[-84.436110999999926,66.981369000000086],[-84.488051999999925,66.988876000000005],[-84.618057000000022,67.006378000000041],[-84.694153000000028,67.009720000000016],[-84.733063000000016,67.014708999999982],[-84.837783999999999,67.029434000000094],[-84.850829999999974,67.03166200000004],[-84.87332200000003,67.039428999999984],[-84.881942999999978,67.043869000000029],[-84.886123999999938,67.048599000000081],[-84.892501999999922,67.053314000000114],[-84.901397999999858,67.057754999999986],[-84.915008999999998,67.060806000000014],[-84.926940999999943,67.059418000000107],[-84.936110999999926,67.056090999999981],[-84.880279999999971,66.989426000000037],[-84.871658000000025,66.984984999999938],[-84.857772999999952,66.981659000000093],[-84.84584000000001,66.982208000000071],[-84.833892999999932,66.984711000000004],[-84.811110999999926,66.991653000000099],[-84.789444000000003,67.002486999999974],[-84.778335999999911,67.006653000000085],[-84.765563999999983,67.006378000000041],[-84.699996999999939,66.99581900000004],[-84.645844000000011,66.981659000000093],[-84.639724999999885,66.978043000000071],[-84.651397999999972,66.97554000000008],[-84.712783999999942,66.972762999999986],[-84.885833999999932,66.966660000000047],[-84.960007000000019,66.964157000000057],[-85.010009999999966,66.964706000000035],[-85.048339999999996,66.963318000000072],[-85.059722999999963,66.959717000000069],[-85.142775999999969,66.930267000000129],[-85.228333000000021,66.878311000000053],[-85.228881999999999,66.873306000000014],[-85.222777999999948,66.868866000000025],[-85.196105999999986,66.855255000000056],[-85.184433000000013,66.851089000000115],[-85.146118000000001,66.839431999999988],[-85.133057000000008,66.836929000000055],[-85.11999499999996,66.835541000000148],[-84.948607999999979,66.858597000000145],[-84.94027699999998,66.863876000000118],[-84.904556000000014,66.897202000000107],[-84.901053999999988,66.900375000000111],[-84.904892000000018,66.903037999999981],[-84.912888000000009,66.905044999999973],[-84.920546999999999,66.905373000000111],[-84.935225999999886,66.904540999999995],[-84.943061999999941,66.905373000000111],[-84.951050000000009,66.907378999999992],[-84.95788600000003,66.909874000000002],[-84.961730999999986,66.912704000000019],[-84.956389999999942,66.915367000000117],[-84.86233500000003,66.939835000000073],[-84.855164000000002,66.940666000000078],[-84.767775999999969,66.952209000000039],[-84.755279999999971,66.951660000000061],[-84.602218999999991,66.935806000000127],[-84.562209999999993,66.901382000000126],[-84.573897999999986,66.89888000000002],[-84.61082499999992,66.89387499999998],[-84.62332200000003,66.893326000000059],[-84.650283999999999,66.900817999999958],[-84.675827000000027,66.902771000000087],[-84.688323999999909,66.903046000000131],[-84.746384000000035,66.897491000000059],[-84.706389999999999,66.888596000000007],[-84.58555599999994,66.858871000000079],[-84.558334000000002,66.850540000000024],[-84.523330999999985,66.836929000000055],[-84.505843999999968,66.827773999999977],[-84.504729999999995,66.823043999999982],[-84.516113000000018,66.820540999999992],[-84.541381999999999,66.821381000000031],[-84.580565999999976,66.828323000000125],[-84.634170999999981,66.84165999999999],[-84.660278000000005,66.846375000000023],[-84.672501000000011,66.845824999999991],[-84.684432999999956,66.844147000000021],[-84.690551999999968,66.839980999999966],[-84.684432999999956,66.835266000000104],[-84.675551999999925,66.830826000000116],[-84.664444000000003,66.82748400000014],[-84.651107999999965,66.824158000000125],[-84.466949,66.787766000000147],[-84.434433000000013,66.725540000000137],[-84.445266999999888,66.720260999999937],[-84.448607999999922,66.715271000000087],[-84.442489999999964,66.710814999999968],[-84.429442999999935,66.708328000000108],[-84.404174999999952,66.705551000000014],[-84.343063000000029,66.699416999999983],[-84.203887999999949,66.691360000000032],[-84.153060999999923,66.685806000000014],[-84.144454999999994,66.681366000000025],[-84.136672999999973,66.662201000000039],[-84.138061999999877,66.657210999999961],[-84.142501999999979,66.647216999999955],[-84.146117999999944,66.642212000000086],[-84.180556999999965,66.606644000000074],[-84.186385999999914,66.601379000000009],[-84.128325999999959,66.554703000000018],[-83.967223999999931,66.473877000000073],[-83.916397000000018,66.446640000000116],[-83.89805599999994,66.432755000000043],[-83.888061999999991,66.423599000000081],[-83.871108999999933,66.394989000000066],[-83.867492999999968,66.380539000000113],[-83.804717999999923,66.307205000000124],[-83.773620999999991,66.289703000000088],[-83.774719000000005,66.275269000000037],[-83.772231999999974,66.265548999999965],[-83.768615999999952,66.260818000000029],[-83.762787000000003,66.256104000000107],[-83.728881999999999,66.23803700000002],[-83.71833799999996,66.233597000000032],[-83.684722999999906,66.215546000000018],[-83.68110699999994,66.210815000000082],[-83.67860399999995,66.201096000000121],[-83.684432999999956,66.196091000000024],[-83.693053999999961,66.190810999999997],[-83.767898999999943,66.168639999999982],[-83.789718999999934,66.163315000000125],[-83.835830999999928,66.154709000000025],[-83.847777999999948,66.153320000000008],[-83.855559999999912,66.155822999999998],[-83.977782999999988,66.199417000000096],[-84.118057000000022,66.25471500000009],[-84.135283999999956,66.26388500000013],[-84.141112999999962,66.268326000000059],[-84.148620999999991,66.277771000000143],[-84.149993999999992,66.282760999999994],[-84.150283999999942,66.292480000000012],[-84.148894999999925,66.297485000000052],[-84.152495999999985,66.302200000000084],[-84.158614999999998,66.306641000000013],[-84.167220999999927,66.31109600000002],[-84.178329000000019,66.315536000000009],[-84.190826000000015,66.318054000000018],[-84.216400000000021,66.321655000000078],[-84.228332999999964,66.3211060000001],[-84.317229999999995,66.299712999999997],[-84.426940999999886,66.363037000000077],[-84.441939999999931,66.372208000000057],[-84.506393000000003,66.402205999999978],[-84.516952999999944,66.404709000000139],[-84.528885000000002,66.40415999999999],[-84.550551999999868,66.394440000000088],[-84.558884000000035,66.389160000000061],[-84.619155999999919,66.349715999999944],[-84.626937999999882,66.343597000000102],[-84.635559000000001,66.334991000000002],[-84.636123999999995,66.328873000000044],[-84.625,66.319152999999972],[-84.527221999999995,66.278595000000109],[-84.424438000000009,66.224701000000096],[-84.407500999999968,66.215546000000018],[-84.401397999999972,66.211105000000089],[-84.389998999999932,66.196930000000009],[-84.386397999999986,66.192199999999957],[-84.37777699999998,66.178040000000067],[-84.372498000000007,66.168319999999994],[-84.374709999999993,66.158600000000092],[-84.448607999999922,66.158600000000092],[-84.46055599999994,66.159149000000014],[-84.473327999999981,66.161377000000016],[-84.483886999999925,66.164703000000031],[-84.509445000000028,66.178314],[-84.641112999999962,66.216094999999996],[-84.869155999999975,66.266662999999937],[-84.881942999999978,66.268051000000071],[-84.90583799999996,66.266937000000098],[-84.927489999999977,66.258881000000031],[-84.943877999999984,66.248322000000144],[-84.954726999999934,66.243866000000025],[-84.96665999999999,66.244431000000077],[-84.979720999999984,66.24664300000012],[-85.00167799999997,66.255264000000068],[-85.131942999999922,66.291931000000034],[-85.178329000000019,66.262207000000046],[-85.190276999999867,66.260544000000095],[-85.202498999999932,66.260818000000029],[-85.214721999999995,66.262207000000046],[-85.227782999999988,66.264434999999992],[-85.252227999999945,66.273041000000092],[-85.269729999999981,66.281937000000028],[-85.301392000000021,66.304703000000075],[-85.306655999999919,66.314148000000102],[-85.339721999999938,66.399154999999951],[-85.345550999999887,66.447754000000089],[-85.346114999999998,66.45748900000001],[-85.341675000000009,66.482208000000128],[-85.343338000000017,66.48692299999999],[-85.351394999999968,66.496093999999971],[-85.457503999999915,66.573883000000137],[-85.466400000000021,66.578323000000012],[-85.479720999999984,66.581375000000094],[-85.491942999999878,66.581940000000145],[-85.55221599999993,66.577774000000034],[-85.575561999999991,66.574707000000103],[-85.598617999999931,66.569442999999978],[-85.710555999999997,66.536101999999971],[-85.845276000000013,66.499419999999986],[-85.857773000000009,66.499709999999993],[-85.868880999999931,66.504166000000112],[-85.875548999999978,66.5086060000001],[-85.888901000000033,66.511932000000002],[-85.995543999999995,66.508041000000105],[-86.007507000000032,66.507216999999969],[-86.078888000000006,66.49693300000007],[-86.103333000000021,66.496643000000063],[-86.128326000000015,66.49803200000008],[-86.141113000000018,66.499419999999986],[-86.256667999999934,66.513321000000133],[-86.283324999999934,66.518599999999935],[-86.578888000000006,66.530272999999966],[-86.580001999999979,66.520538000000101],[-86.587783999999942,66.51527400000009],[-86.599730999999963,66.511108000000036],[-86.611389000000031,66.508331000000112],[-86.622771999999998,66.506652999999972],[-86.635009999999966,66.50610400000005],[-86.65972899999997,66.506377999999984],[-86.672500999999954,66.507767000000001],[-86.685546999999985,66.509720000000073],[-86.698883000000023,66.513046000000145],[-86.726944000000003,66.521103000000096],[-86.738051999999982,66.525269000000037],[-86.75167799999997,66.528320000000008],[-86.764174999999966,66.528595000000053],[-86.775283999999942,66.526093000000003],[-86.780838000000017,66.520828000000108],[-86.781386999999995,66.515823000000069],[-86.777221999999995,66.511108000000036],[-86.743880999999931,66.488586000000112],[-86.701110999999969,66.466659999999933],[-86.662780999999939,66.449417000000039],[-86.639998999999932,66.441085999999927],[-86.633621000000005,66.436371000000122],[-86.641677999999956,66.431931000000077],[-86.678604000000007,66.432755000000043],[-86.730559999999969,66.436920000000043],[-86.756957999999941,66.441360000000088],[-86.783614999999941,66.447479000000101],[-86.796386999999925,66.448593000000074],[-86.807495000000017,66.446091000000024],[-86.811110999999983,66.441925000000083],[-86.809158000000025,66.437195000000088],[-86.804992999999968,66.432480000000055],[-86.651671999999962,66.324158000000011],[-86.638335999999924,66.315262000000075],[-86.612777999999992,66.311646000000053],[-86.49722300000002,66.29942299999999],[-86.396117999999944,66.289703000000088],[-86.30610699999994,66.276382000000126],[-86.142226999999991,66.239699999999971],[-86.076110999999912,66.22387700000013],[-85.927489999999977,66.186370999999951],[-85.913895000000025,66.182205000000067],[-85.901108000000022,66.173035000000027],[-85.897232000000031,66.168319999999994],[-85.977492999999924,66.077773999999977],[-85.975829999999917,66.073044000000095],[-85.973891999999978,66.038879000000009],[-85.974716000000001,66.033875000000023],[-85.979995999999915,66.028594999999996],[-85.990554999999972,66.024155000000121],[-86.077224999999999,65.99581900000004],[-86.121384000000035,65.984421000000054],[-86.217498999999975,65.957489000000123],[-86.22084000000001,65.952209000000039],[-86.231383999999935,65.941925000000026],[-86.239166000000012,65.936646000000053],[-86.249435000000005,65.93193100000002],[-86.326400999999976,65.90498400000007],[-86.348617999999874,65.899719000000005],[-86.360275000000001,65.899155000000064],[-86.420272999999952,65.892487000000074],[-86.472228999999857,65.839980999999966],[-86.496947999999975,65.808029000000033],[-86.49499499999996,65.803314],[-86.486389000000031,65.799149],[-86.464171999999962,65.790543000000071],[-86.455276000000026,65.786102000000142],[-86.453888000000006,65.78137200000009],[-86.451110999999855,65.747208000000057],[-86.454177999999956,65.742203000000018],[-86.530288999999868,65.695525999999916],[-86.716109999999958,65.617477000000065],[-86.819457999999997,65.560532000000023],[-86.829726999999991,65.55581699999999],[-86.84056099999998,65.553314000000057],[-86.852782999999931,65.55442800000003],[-86.865828999999962,65.557480000000112],[-86.878052000000025,65.557754999999929],[-86.888610999999969,65.555251999999996],[-86.953888000000006,65.53915400000011],[-86.972777999999948,65.520263999999997],[-87.017226999999991,65.486923000000047],[-87.024445000000014,65.481659000000036],[-87.035278000000005,65.479156000000046],[-87.05471799999998,65.486649000000114],[-87.067504999999983,65.488875999999948],[-87.077788999999996,65.484985000000052],[-87.087783999999999,65.479431000000091],[-87.095001000000025,65.474152000000117],[-87.110275000000001,65.458602999999982],[-87.118606999999997,65.4433140000001],[-87.119155999999975,65.438309000000061],[-87.11500499999994,65.433594000000028],[-87.101944000000003,65.429703000000131],[-87.111664000000019,65.390274000000034],[-87.351105000000018,65.327209000000096],[-87.361938000000009,65.324432000000002],[-87.372771999999941,65.322769000000051],[-87.395843999999897,65.321380999999974],[-87.430831999999953,65.320831000000112],[-87.833327999999938,65.323883000000023],[-87.869155999999975,65.325272000000041],[-87.893065999999976,65.326660000000118],[-87.941939999999875,65.330826000000059],[-87.96665999999999,65.333054000000004],[-88.004456000000005,65.339157000000114],[-88.030288999999925,65.345260999999994],[-88.070281999999963,65.356093999999928],[-88.09445199999999,65.363312000000121],[-88.212783999999886,65.40277100000003],[-88.221389999999985,65.407211000000075],[-88.234726000000023,65.416091999999992],[-88.243331999999953,65.425262000000032],[-88.245270000000005,65.429977000000065],[-88.25389100000001,65.439148000000046],[-88.31361400000003,65.479156000000046],[-88.333617999999944,65.492477000000008],[-88.548614999999984,65.582764000000111],[-88.55972300000002,65.586929000000112],[-88.573058999999944,65.589706000000035],[-88.58555599999994,65.590820000000008],[-88.633330999999998,65.591094999999996],[-88.645554000000004,65.592208999999968],[-88.658889999999928,65.594986000000063],[-88.68582200000003,65.601929000000098],[-88.829726999999878,65.641372999999987],[-88.828888000000006,65.644150000000081],[-88.756667999999991,65.642761000000064],[-88.62249799999995,65.637207000000103],[-88.49888599999997,65.626923000000033],[-88.513335999999981,65.644440000000088],[-88.779723999999987,65.676085999999941],[-88.949721999999895,65.68664600000011],[-88.962783999999999,65.688583000000108],[-89.000838999999985,65.698593000000017],[-89.09944200000001,65.725266000000033],[-89.124435000000005,65.733322000000101],[-89.133895999999936,65.737487999999985],[-89.140563999999927,65.74192800000003],[-89.14527899999996,65.746368000000018],[-89.147507000000019,65.751388999999961],[-89.147231999999974,65.761107999999979],[-89.149444999999957,65.765823000000012],[-89.156386999999938,65.770264000000111],[-89.174438000000009,65.778594999999996],[-89.379990000000021,65.846375000000023],[-89.525283999999999,65.886932000000002],[-89.597228999999857,65.910812000000021],[-89.664718999999934,65.934982000000048],[-89.671660999999915,65.939423000000147],[-89.70944199999991,65.942200000000014],[-89.967223999999987,65.948593000000017],[-89.991104000000007,65.947478999999987],[-90,65.944359000000134],[-89.964171999999962,65.936919999999986],[-89.939163000000008,65.93609600000002],[-89.926391999999908,65.934143000000063],[-89.89916999999997,65.928589000000045],[-89.87110899999999,65.921097000000145],[-89.834166999999979,65.910263000000043],[-89.799438000000009,65.898331000000098],[-89.740829000000019,65.873306000000071],[-89.731673999999998,65.86914100000007],[-89.726943999999946,65.839980999999966],[-89.729172000000005,65.834717000000012],[-89.736389000000031,65.829162999999994],[-89.746947999999975,65.826385000000016],[-89.76916499999993,65.822495000000004],[-89.793334999999956,65.822495000000004],[-89.818892999999889,65.825546000000031],[-89.832229999999925,65.828323000000125],[-89.843886999999938,65.832214000000022],[-89.89056399999987,65.853043000000014],[-89.902221999999995,65.857208000000014],[-90.048614999999984,65.888321000000019],[-90.073623999999938,65.890273999999977],[-90.085555999999997,65.889159999999947],[-90.119995000000017,65.883880999999974],[-90.162780999999995,65.872207999999944],[-90.207229999999925,65.864426000000037],[-90.241942999999992,65.861374000000069],[-90.265838999999971,65.860535000000141],[-90.315001999999993,65.862198000000035],[-90.404448999999943,65.871093999999971],[-90.418335000000013,65.87414600000011],[-90.427489999999977,65.878036000000066],[-90.432495000000017,65.882751000000098],[-90.425551999999925,65.888321000000019],[-90.393065999999919,65.896102999999982],[-90.357773000000009,65.898041000000092],[-90.333327999999995,65.897217000000126],[-90.272781000000009,65.897491000000059],[-90.225554999999929,65.900542999999971],[-90.215560999999923,65.904434000000037],[-90.213333000000034,65.909424000000115],[-90.213333000000034,65.914428999999984],[-90.220551,65.918868999999972],[-90.234725999999966,65.922485000000052],[-90.258895999999993,65.922485000000052],[-90.293335000000013,65.918593999999985],[-90.360275000000001,65.907760999999994],[-90.418883999999878,65.901093000000003],[-90.574172999999973,65.896652000000074],[-90.596114999999941,65.896652000000074],[-90.708618000000001,65.902480999999909],[-90.733886999999925,65.904160000000104],[-90.850280999999995,65.915267999999912],[-91.068344000000025,65.940262000000075],[-91.316390999999953,65.969986000000119],[-91.328613000000018,65.969986000000119],[-91.340285999999935,65.96887200000009],[-91.429168999999945,65.95109599999995],[-91.444442999999865,65.930817000000047],[-91.362777999999935,65.893599999999992],[-91.353332999999964,65.889434999999992],[-91.341385000000002,65.885818000000029],[-91.328063999999983,65.883880999999974],[-91.189437999999939,65.853043000000014],[-91.06082200000003,65.813309000000061],[-91.046660999999915,65.809417999999994],[-91.020553999999947,65.806091000000094],[-91.008621000000005,65.806091000000094],[-91.004180999999903,65.811371000000122],[-91.013900999999976,65.820540999999992],[-91.05471799999998,65.846649000000127],[-91.108337000000006,65.891373000000101],[-91.123046999999929,65.904709000000082],[-91.125823999999852,65.909714000000122],[-91.121384000000035,65.914993000000095],[-91.099730999999963,65.919982999999945],[-91.088057999999933,65.921097000000145],[-91.063889000000017,65.921097000000145],[-90.990279999999984,65.919982999999945],[-90.976943999999946,65.918045000000006],[-90.948607999999979,65.910812000000021],[-90.921386999999925,65.905258000000003],[-90.90834000000001,65.903595000000109],[-90.741942999999992,65.887772000000041],[-90.692489999999964,65.886108000000036],[-90.531676999999945,65.880539000000056],[-90.078063999999983,65.812485000000095],[-90.013900999999919,65.800262000000032],[-90,65.797400999999923],[-89.986938000000009,65.794708000000071],[-89.960006999999962,65.788879000000065],[-89.932220000000029,65.78137200000009],[-89.744995000000017,65.724700999999982],[-89.720275999999956,65.713042999999971],[-89.660278000000005,65.683318999999983],[-89.653335999999911,65.678863999999976],[-89.428328999999962,65.529434000000037],[-89.308883999999978,65.469437000000084],[-89.146118000000001,65.400543000000084],[-89.065551999999911,65.333054000000004],[-89.054442999999992,65.328873000000101],[-89.044448999999986,65.32777400000009],[-88.771118000000001,65.307754999999986],[-88.733886999999982,65.306090999999981],[-88.710281000000009,65.306090999999981],[-88.698607999999979,65.30693100000002],[-88.676940999999999,65.31053200000008],[-88.606948999999929,65.30693100000002],[-88.490279999999984,65.293320000000051],[-88.389174999999909,65.277205999999921],[-88.364715999999873,65.274994000000049],[-88.215012000000002,65.277205999999921],[-88.133330999999941,65.278320000000122],[-88.109725999999966,65.278046000000018],[-88.096664000000033,65.274994000000049],[-88.061660999999958,65.258881000000031],[-88.021117999999888,65.274704000000042],[-88.011123999999938,65.278320000000122],[-87.978058000000033,65.283599999999979],[-87.943603999999993,65.286102000000085],[-87.731383999999991,65.290267999999969],[-87.673049999999989,65.291366999999923],[-87.602218999999934,65.290542999999957],[-87.357773000000009,65.270827999999995],[-87.21055599999994,65.254165999999998],[-87.075012000000015,65.236648999999943],[-86.957779000000016,65.165817000000004],[-86.944992000000013,65.156936999999971],[-86.936935000000005,65.147766000000047],[-86.933318999999983,65.138046000000145],[-86.967498999999975,65.059417999999994],[-86.970275999999899,65.054428000000087],[-86.977492999999981,65.048874000000126],[-86.997771999999941,65.040816999999947],[-87.040557999999976,65.031097000000045],[-87.110001000000011,64.999145999999996],[-87.430283000000031,64.711928999999998],[-87.521666999999923,64.621094000000085],[-87.571944999999971,64.573607999999979],[-87.579178000000013,64.568054000000018],[-87.586120999999991,64.562759000000142],[-87.595550999999944,64.557205000000124],[-87.698043999999925,64.527206000000092],[-87.764419999999973,64.520904999999914],[-87.786391999999921,64.51998900000001],[-87.797225999999966,64.518051000000071],[-87.807219999999973,64.514434999999992],[-87.855270000000019,64.43942300000009],[-87.855835000000013,64.429428000000144],[-87.863616999999977,64.379700000000014],[-87.8663939999999,64.369705000000124],[-87.983886999999925,64.191086000000041],[-87.990829000000019,64.185805999999957],[-88.113327000000027,64.136108000000036],[-88.12332200000003,64.133605999999986],[-88.285552999999936,64.106369000000029],[-88.551666000000012,64.025543000000084],[-88.553878999999995,64.020538000000045],[-88.674437999999952,63.980269999999962],[-88.684432999999956,63.977486000000056],[-88.736663999999962,63.968323000000055],[-88.759444999999971,63.969437000000028],[-88.993880999999931,63.998604000000114],[-89.077788999999882,64.026093000000117],[-89.110000999999954,64.03804000000008],[-89.127212999999983,64.04664600000001],[-89.150833000000034,64.059417999999994],[-89.182770000000005,64.081375000000037],[-89.198043999999982,64.094711000000018],[-89.202224999999999,64.099426000000051],[-89.208617999999944,64.108871000000079],[-89.210555999999997,64.118317000000047],[-89.210555999999997,64.123306000000014],[-89.212783999999942,64.128036000000066],[-89.22084000000001,64.137207000000046],[-89.244720000000029,64.15498400000007],[-89.251113999999973,64.159424000000115],[-89.260833999999875,64.160538000000088],[-89.284164000000033,64.141937000000041],[-89.286391999999978,64.136658000000068],[-89.182495000000017,64.036652000000004],[-89.096664000000033,63.973877000000016],[-89.061661000000015,63.960823000000119],[-89.051101999999958,63.961936999999921],[-89.040833000000021,63.958602999999925],[-89.023620999999991,63.950272000000041],[-89.028609999999958,63.946098000000006],[-89.039443999999946,63.944991999999957],[-89.050551999999925,63.944991999999957],[-89.246657999999968,63.959717000000126],[-89.254729999999938,63.963051000000121],[-89.321395999999936,63.996658000000025],[-89.396117999999944,64.038589000000002],[-89.507232999999928,64.070540999999992],[-89.551101999999958,64.07748399999997],[-89.55860899999999,64.073883000000137],[-89.56082200000003,64.068878000000041],[-89.56527699999998,64.019149999999968],[-89.563323999999852,64.009430000000066],[-89.554442999999992,64.000274999999988],[-89.548049999999932,63.996101000000124],[-89.530838000000017,63.987770000000069],[-89.517775999999913,63.978874000000133],[-89.489990000000034,63.956657000000064],[-89.485549999999989,63.951934999999992],[-89.483321999999873,63.947211999999979],[-89.485549999999989,63.94221500000009],[-89.49722300000002,63.943046999999979],[-89.521117999999944,63.955826000000059],[-89.527495999999985,63.960274000000027],[-89.577224999999999,63.995544000000052],[-89.585555999999997,64.004439999999988],[-89.589995999999928,64.014160000000061],[-89.594161999999926,64.018600000000106],[-89.637787000000003,64.049423000000104],[-89.644164999999987,64.053864000000033],[-89.699722000000008,64.076385000000016],[-89.712219000000005,64.079437000000098],[-89.719161999999983,64.074707000000103],[-89.726943999999946,64.047484999999938],[-89.785552999999993,64.076935000000049],[-89.818068999999923,64.098602000000085],[-89.822509999999909,64.103317000000118],[-89.822783999999956,64.10803199999998],[-89.820557000000008,64.113312000000008],[-89.80972300000002,64.128860000000032],[-89.802215999999987,64.132476999999994],[-89.780563000000029,64.134430000000123],[-89.757507000000032,64.133605999999986],[-89.746947999999975,64.135544000000095],[-89.738051999999925,64.14027399999992],[-89.735824999999977,64.145263999999997],[-89.75111400000003,64.218048000000124],[-89.75556899999998,64.227478000000019],[-89.760009999999966,64.232208000000071],[-89.773055999999997,64.240814],[-89.784163999999919,64.244705000000067],[-89.794158999999922,64.241928000000144],[-89.801102000000014,64.237487999999928],[-89.805557000000022,64.227203000000031],[-89.803328999999962,64.222487999999998],[-89.803054999999972,64.20277400000009],[-89.81639100000001,64.148041000000092],[-89.823623999999995,64.144440000000031],[-89.845550999999944,64.142761000000007],[-89.879439999999988,64.142487000000074],[-89.892226999999991,64.145538000000101],[-89.909728999999913,64.158599999999922],[-89.922501000000011,64.161377000000016],[-89.967498999999918,64.161377000000016],[-89.986938000000009,64.159714000000122],[-90.124161000000015,64.128586000000098],[-90.118057000000022,64.125259000000142],[-90.104995999999971,64.121368000000075],[-90.05860899999999,64.109710999999947],[-89.950561999999991,64.086929000000055],[-89.946105999999986,64.057480000000055],[-89.904175000000009,64.015823000000012],[-89.866942999999992,63.98971599999993],[-89.841674999999896,63.983879000000002],[-89.831116000000009,63.979988000000105],[-89.824447999999961,63.97554800000006],[-89.820281999999963,63.971099999999922],[-89.813613999999973,63.946938000000046],[-89.813613999999973,63.93721000000005],[-89.815552000000025,63.931938000000116],[-89.821944999999971,63.926384000000098],[-89.828612999999962,63.921104000000014],[-89.838057999999933,63.917212999999947],[-89.938888999999961,63.909713999999951],[-89.951400999999976,63.912491000000045],[-89.989440999999999,63.92193600000013],[-89.998336999999992,63.926102000000014],[-89.995270000000005,63.929161000000022],[-89.974715999999944,63.933052000000089],[-89.964721999999995,63.935822000000087],[-89.955276000000026,63.939712999999983],[-89.948607999999979,63.945267000000001],[-89.946655000000021,63.950546000000145],[-89.946655000000021,63.960274000000027],[-89.946655000000021,63.965271000000087],[-89.94888299999991,63.969986000000119],[-89.955565999999976,63.9741590000001],[-89.968613000000005,63.978043000000127],[-90,63.984043000000042],[-90.18249499999996,64.0086060000001],[-90.194153000000028,64.009430000000066],[-90.249435000000005,64.007492000000127],[-90.271392999999989,64.006377999999927],[-90.279175000000009,64.00360100000006],[-90.275009000000011,63.999161000000015],[-90.262786999999889,63.997214999999926],[-90.227492999999981,63.994438000000059],[-90.214721999999881,63.990829000000019],[-90.196944999999914,63.982491000000095],[-90.113892000000021,63.930824000000086],[-89.975005999999951,63.825829000000056],[-89.966400000000021,63.816939999999988],[-89.964171999999962,63.811935000000119],[-89.964171999999962,63.80221599999993],[-89.966110000000015,63.79222100000004],[-89.96833799999996,63.782211000000132],[-89.972503999999958,63.776657000000114],[-89.981673999999998,63.773048000000131],[-90.057770000000005,63.744438000000059],[-90.089995999999928,63.698874999999987],[-90.148894999999982,63.629158000000075],[-90.156386999999938,63.626656000000025],[-90.205275999999913,63.61221299999994],[-90.236388999999917,63.607216000000051],[-90.258620999999891,63.607216000000051],[-90.429442999999992,63.615829000000019],[-90.461394999999982,63.640549000000078],[-90.468613000000005,63.652309000000002],[-90.488051999999982,63.672493000000088],[-90.501113999999973,63.676383999999985],[-90.611937999999952,63.70249200000012],[-90.623885999999914,63.704162999999994],[-90.634445000000028,63.703049000000021],[-90.64416499999993,63.700272000000098],[-90.701400999999976,63.662209000000075],[-90.699157999999954,63.657494000000042],[-90.686660999999958,63.654709000000139],[-90.677779999999927,63.654433999999981],[-90.655563000000029,63.654709000000139],[-90.623610999999983,63.657767999999976],[-90.613891999999908,63.660545000000013],[-90.60972599999991,63.665825000000098],[-90.610001000000011,63.675827000000083],[-90.602782999999988,63.679436000000067],[-90.590285999999992,63.676658999999972],[-90.55972300000002,63.659714000000008],[-90.555556999999965,63.65526600000004],[-90.553329000000019,63.650543000000084],[-90.541381999999942,63.617210000000057],[-90.541381999999942,63.61221299999994],[-90.545273000000009,63.606941000000006],[-90.551391999999964,63.601387000000045],[-90.56082200000003,63.597487999999998],[-90.571120999999948,63.595543000000021],[-90.733886999999925,63.573883000000023],[-90.828063999999983,63.561661000000072],[-90.84944200000001,63.559714999999983],[-90.930556999999965,63.564156000000082],[-90.942763999999954,63.566666000000112],[-90.978881999999999,63.576103000000046],[-90.989440999999943,63.579994000000113],[-91.035003999999958,63.5991590000001],[-91.137786999999889,63.630821000000026],[-91.158051,63.635551000000078],[-91.188599000000011,63.62943300000012],[-91.198883000000023,63.628601000000003],[-91.210281000000009,63.628326000000015],[-91.233321999999987,63.629990000000021],[-91.375823999999966,63.659157000000107],[-91.399733999999967,63.666664000000083],[-91.406386999999938,63.671104000000071],[-91.406661999999983,63.676102000000071],[-91.402785999999992,63.681381000000044],[-91.393616000000009,63.685265000000072],[-91.371384000000035,63.685546999999985],[-91.34973100000002,63.677772999999945],[-91.336945000000014,63.675270000000012],[-91.329453000000001,63.677772999999945],[-91.333892999999989,63.682495000000017],[-91.34056099999998,63.686652999999978],[-91.34944200000001,63.690826000000129],[-91.362503000000004,63.694435000000112],[-91.411666999999909,63.707214000000022],[-91.529174999999952,63.729987999999992],[-91.540558000000033,63.730820000000051],[-91.551392000000021,63.729713000000118],[-91.560821999999916,63.726653999999996],[-91.569457999999997,63.721930999999984],[-91.575561999999934,63.716385000000116],[-91.584166999999979,63.711380000000077],[-91.595550999999887,63.711380000000077],[-91.910552999999936,63.740546999999992],[-92.06639100000001,63.74193600000001],[-92.136123999999938,63.745544000000109],[-92.148620999999991,63.748047000000099],[-92.175003000000004,63.755271999999991],[-92.186110999999983,63.758888000000013],[-92.434433000000013,63.804993000000024],[-92.482772999999952,63.811935000000119],[-92.471664000000033,63.80832700000002],[-92.437774999999931,63.79222100000004],[-92.428328999999962,63.783051],[-92.425551999999982,63.778603000000032],[-92.422500999999954,63.748878000000104],[-92.415832999999964,63.744713000000104],[-92.406661999999926,63.740546999999992],[-92.395553999999947,63.736938000000009],[-92.382766999999944,63.734161000000086],[-92.348891999999921,63.733879000000059],[-92.306380999999931,63.738602000000014],[-92.263061999999934,63.741379000000109],[-92.251113999999973,63.740546999999992],[-92.148055999999997,63.716934000000094],[-92.103881999999942,63.701660000000004],[-92.101669000000015,63.696938000000102],[-92.105559999999969,63.691658000000018],[-92.204177999999956,63.638046000000088],[-92.252501999999993,63.623878000000047],[-92.262512000000015,63.62193300000007],[-92.385009999999909,63.592491000000109],[-92.48971599999993,63.567215000000033],[-92.493056999999965,63.540832999999964],[-92.480835000000013,63.527214000000072],[-92.429168999999945,63.546944000000053],[-92.336394999999868,63.556938000000059],[-92.279998999999975,63.556099000000131],[-92.20666499999993,63.606102000000078],[-92.202788999999882,63.611381999999935],[-92.193877999999927,63.615273000000002],[-92.165282999999988,63.624435000000119],[-91.971114999999998,63.679993000000138],[-91.830291999999929,63.712212000000022],[-91.820006999999976,63.714157],[-91.809432999999956,63.715271000000143],[-91.776107999999965,63.715828000000045],[-91.763335999999981,63.713325999999995],[-91.695266999999944,63.690544000000045],[-91.670837000000006,63.678047000000049],[-91.617492999999911,63.648880000000133],[-91.613051999999925,63.644440000000145],[-91.611388999999974,63.639160000000061],[-91.61250299999989,63.629158000000075],[-91.618056999999965,63.613608999999997],[-91.617217999999923,63.603882000000056],[-91.607498000000021,63.584991000000002],[-91.600829999999974,63.580551000000014],[-91.39805599999994,63.524994000000049],[-91.274170000000026,63.502495000000124],[-91.133056999999951,63.478043000000014],[-90.945540999999935,63.440269000000114],[-90.854720999999984,63.408600000000092],[-90.915557999999919,63.41054500000007],[-90.932770000000005,63.418602000000078],[-90.945540999999935,63.422493000000145],[-90.956954999999937,63.423325000000034],[-90.96833799999996,63.423050000000046],[-90.975006000000008,63.419441000000006],[-90.972777999999948,63.414711000000011],[-90.957503999999972,63.401382000000069],[-90.942214999999976,63.393051000000014],[-90.931380999999931,63.389160000000118],[-90.918883999999935,63.386383000000023],[-90.816665999999998,63.369156000000032],[-90.741942999999992,63.360825000000091],[-90.690825999999959,63.228324999999984],[-90.627486999999974,63.059433000000013],[-90.649169999999913,63.036385000000109],[-90.739990000000034,62.962212000000136],[-90.775832999999977,62.941933000000006],[-90.785004000000015,62.938041999999939],[-90.794998000000021,62.936104],[-90.825835999999924,62.933052000000089],[-90.847778000000005,62.932770000000005],[-90.870270000000005,62.934433000000126],[-90.929442999999992,62.944435000000112],[-90.940551999999968,62.945267000000001],[-91.017226999999934,62.946380999999974],[-91.038329999999917,62.944153000000028],[-91.048049999999989,62.94221500000009],[-91.173049999999989,62.908600000000035],[-91.18249499999996,62.905823000000112],[-91.190825999999959,62.900825999999995],[-91.196654999999964,62.895271000000093],[-91.200561999999934,62.88999200000012],[-91.199721999999895,62.870270000000062],[-91.207229999999981,62.8597180000001],[-91.213333000000034,62.854164000000083],[-91.356383999999991,62.788605000000018],[-91.366652999999928,62.787498000000085],[-91.440276999999867,62.782768000000033],[-91.46166999999997,62.782494000000099],[-91.579178000000013,62.799995000000081],[-91.840285999999935,62.826385000000073],[-91.990279999999984,62.84693900000002],[-92.087508999999898,62.818886000000077],[-92.214721999999995,62.824715000000083],[-92.223052999999993,62.828880000000083],[-92.236114999999927,62.832214000000079],[-92.339995999999985,62.843605000000025],[-92.361937999999952,62.844154000000003],[-92.382766999999944,62.841660000000047],[-92.392501999999922,62.839713999999958],[-92.402221999999995,62.837493999999992],[-92.420836999999949,62.831383000000073],[-92.438323999999966,62.823607999999979],[-92.455275999999969,62.814712999999983],[-92.459441999999967,62.810272000000055],[-92.458618000000001,62.800270000000069],[-92.455841000000021,62.79583000000008],[-92.451400999999919,62.791107000000068],[-92.333617999999944,62.709991000000116],[-92.232773000000009,62.673049999999989],[-92.188598999999954,62.659156999999993],[-92.178329000000019,62.65638000000007],[-92.067779999999971,62.651657000000057],[-92.034728999999857,62.65026899999998],[-91.971389999999928,62.653320000000008],[-91.948883000000023,62.651932000000102],[-91.925827000000027,62.644440000000145],[-91.908614999999998,62.636383000000023],[-91.882766999999944,62.624161000000015],[-91.880554000000018,62.619438000000059],[-91.883330999999998,62.604438999999957],[-91.885009999999909,62.5991590000001],[-91.890288999999996,62.588600000000042],[-91.941375999999991,62.534996000000035],[-91.948043999999982,62.531380000000013],[-92.053328999999962,62.526657],[-92.153060999999923,62.598045000000127],[-92.163329999999974,62.600829999999974],[-92.186110999999983,62.603324999999984],[-92.196655000000021,62.603049999999996],[-92.266112999999962,62.595268000000033],[-92.275009000000011,62.591377000000136],[-92.271399999999971,62.578049000000135],[-92.275557999999933,62.560272000000111],[-92.325561999999991,62.540833000000021],[-92.365004999999996,62.533332999999914],[-92.384734999999978,62.529990999999995],[-92.396118000000001,62.530823000000112],[-92.430831999999953,62.535827999999981],[-92.468062999999972,62.54444100000012],[-92.539169000000015,62.532493999999986],[-92.606110000000001,62.464996000000042],[-92.617767000000015,62.466660000000047],[-92.710006999999962,62.465827999999931],[-92.726105000000018,62.444153000000142],[-92.729720999999984,62.438599000000124],[-92.731109999999944,62.433601000000124],[-92.730834999999956,62.428604000000064],[-92.724716000000001,62.358604000000014],[-92.714721999999995,62.343880000000013],[-92.665833000000021,62.332771000000093],[-92.628052000000025,62.322220000000016],[-92.606658999999922,62.31471300000004],[-92.598052999999936,62.310821999999973],[-92.585006999999905,62.302216000000044],[-92.584441999999967,62.297493000000088],[-92.585830999999871,62.292220999999984],[-92.601668999999958,62.265549000000078],[-92.610275000000001,62.261382999999967],[-92.603995999999938,62.236324000000138],[-92.573058999999944,62.196098000000006],[-92.568619000000012,62.191657999999961],[-92.561934999999949,62.187492000000077],[-92.536666999999966,62.175551999999982],[-92.486388999999974,62.161377000000073],[-92.478057999999919,62.157493999999986],[-92.47001599999993,62.146614],[-92.477782999999988,62.143883000000017],[-92.48721299999994,62.144157000000121],[-92.592223999999987,62.154990999999995],[-92.603881999999942,62.156379999999956],[-92.625823999999909,62.191657999999961],[-92.64044199999995,62.209098999999924],[-92.638435000000015,62.212273000000039],[-92.638275000000021,62.215103000000056],[-92.639938000000029,62.217770000000087],[-92.700561999999991,62.265549000000078],[-92.741103999999893,62.28694200000001],[-92.747498000000007,62.289993000000038],[-92.845551,62.309433000000013],[-93.075561999999991,62.332214000000022],[-93.12222300000002,62.334991000000116],[-92.904174999999952,62.262215000000083],[-92.892226999999991,62.259720000000073],[-92.866393999999957,62.263054000000068],[-92.839995999999985,62.260276999999974],[-92.828612999999905,62.257217000000082],[-92.780288999999868,62.236938000000123],[-92.765288999999996,62.224434000000088],[-92.764724999999942,62.219437000000028],[-92.790282999999988,62.177489999999921],[-92.795836999999949,62.172768000000019],[-92.800963999999965,62.172905000000014],[-92.840285999999992,62.174438000000009],[-92.851943999999946,62.175827000000027],[-92.862503000000004,62.17943600000001],[-92.954453000000001,62.192764000000011],[-93.06806899999998,62.174995000000081],[-93.076674999999909,62.17193600000013],[-93.110000999999954,62.156654000000117],[-93.114440999999999,62.15415999999999],[-93.119720000000029,62.148330999999985],[-93.126937999999882,62.132492000000013],[-93.124160999999958,62.128044000000045],[-93.119445999999925,62.123604000000057],[-93.081389999999942,62.10443900000007],[-93.069167999999877,62.103607000000011],[-93.059722999999906,62.105826999999977],[-93.037506000000008,62.121658000000139],[-93.028885000000002,62.12471000000005],[-93.019164999999987,62.126099000000067],[-93.008057000000008,62.125549000000035],[-92.940552000000025,62.115547000000049],[-92.933060000000012,62.11360900000011],[-92.930557000000022,62.109160999999972],[-92.931380999999988,62.104164000000083],[-92.936935000000005,62.099159000000043],[-92.968338000000017,62.077217000000132],[-92.991104000000007,62.067772000000105],[-93.140839000000028,62.009720000000129],[-93.237212999999997,62.02693899999997],[-93.246384000000035,62.033333000000027],[-93.277495999999871,62.042770000000132],[-93.302779999999927,62.049438000000123],[-93.325286999999946,62.051384000000041],[-93.411391999999978,62.03138000000007],[-93.413054999999986,62.025551000000064],[-93.39416499999993,62.013610999999969],[-93.385559000000001,62.009995000000117],[-93.373610999999983,62.007500000000107],[-93.361937999999952,62.00610400000005],[-93.342223999999931,62.004997000000117],[-93.318893000000003,61.998047000000099],[-93.244445999999982,61.969437000000028],[-93.235549999999989,61.965545999999961],[-93.222228999999913,61.957496999999989],[-93.218338000000017,61.95249200000012],[-93.217223999999987,61.947769000000108],[-93.281951999999876,61.891380000000083],[-93.299728000000016,61.885826000000066],[-93.309157999999911,61.883606000000043],[-93.330565999999919,61.886383000000137],[-93.442489999999964,61.915268000000026],[-93.461670000000026,61.922493000000088],[-93.616104000000007,61.939986999999974],[-93.600280999999939,61.879158000000075],[-93.61721799999998,61.861938000000123],[-93.556945999999982,61.847771000000137],[-93.435821999999973,61.808883999999978],[-93.282776000000013,61.788887000000102],[-93.248610999999983,61.78472099999999],[-93.237777999999935,61.777214000000072],[-93.242492999999968,61.767493999999999],[-93.25556899999998,61.742493000000138],[-93.356948999999986,61.707214000000022],[-93.449431999999945,61.682213000000047],[-93.542769999999962,61.663321999999994],[-93.594161999999926,61.648048000000074],[-93.654998999999862,61.629158000000132],[-93.856658999999979,61.549164000000133],[-93.984726000000023,61.456100000000106],[-93.985275000000001,61.454163000000051],[-93.968613000000005,61.396660000000054],[-93.932495000000017,61.387214999999969],[-93.921935999999903,61.385269000000108],[-93.911666999999966,61.385826000000009],[-93.906386999999995,61.387497000000053],[-93.895003999999972,61.389160000000004],[-93.884734999999864,61.389717000000076],[-93.868056999999965,61.389160000000004],[-93.857498000000021,61.385551000000135],[-93.820281999999963,61.355826999999977],[-93.817504999999983,61.351386999999932],[-93.819167999999991,61.347214000000008],[-93.839447000000007,61.319443000000092],[-93.84445199999999,61.316101000000003],[-93.858046999999942,61.312767000000008],[-93.932220000000029,61.296661000000029],[-93.940552000000025,61.294998000000078],[-94.057219999999973,61.178329000000076],[-94.14805599999994,61.043610000000058],[-94.226943999999946,60.942764000000068],[-94.349166999999909,60.858603999999957],[-94.353333000000021,60.853607000000068],[-94.391112999999905,60.798882000000049],[-94.415282999999988,60.762215000000026],[-94.415008999999998,60.756660000000124],[-94.451674999999966,60.671104000000128],[-94.505004999999983,60.549995000000138],[-94.509444999999971,60.544159000000093],[-94.563048999999978,60.522217000000012],[-94.575835999999981,60.52027099999998],[-94.611389000000031,60.52777100000003],[-94.67332499999992,60.522490999999945],[-94.671660999999915,60.466103000000032],[-94.629439999999988,60.41832700000009],[-94.626388999999961,60.413605000000018],[-94.614715999999873,60.38999200000012],[-94.613891999999908,60.380547000000035],[-94.615004999999996,60.375266999999951],[-94.620834000000002,60.363883999999985],[-94.681945999999925,60.224158999999929],[-94.673614999999927,60.191101000000117],[-94.704726999999934,60.091933999999981],[-94.707503999999972,60.083603000000096],[-94.711394999999925,60.078330999999991],[-94.714721999999938,60.075272000000041],[-94.728333000000021,60.071380999999974],[-94.746658000000025,60.069992000000127],[-94.752791999999943,60.06860400000005],[-94.766402999999912,60.061378000000104],[-94.771117999999944,60.055549999999982],[-94.803878999999995,60.008330999999998],[-94.803878999999995,60.003609000000097],[-94.800430000000006,59.999565000000132],[-94.819167999999991,59.964714000000129],[-94.821670999999924,59.959160000000111],[-94.822509999999909,59.954162999999994],[-94.820556999999951,59.944434999999999],[-94.803329000000019,59.877768999999944],[-94.803329000000019,59.711104999999975],[-94.819167999999991,59.63638300000008],[-94.788605000000018,59.51527400000009],[-94.735275000000001,59.426384000000098],[-94.680557000000022,59.357215999999994],[-94.715285999999992,59.323326000000066],[-94.770003999999972,59.29833200000013],[-94.775009000000011,59.29332700000009],[-94.781386999999995,59.263611000000026],[-94.782227000000034,59.258331000000112],[-94.789718999999991,59.092216000000064],[-94.681670999999994,58.975822000000107],[-94.679992999999968,58.97137500000008],[-94.676392000000021,58.93443300000007],[-94.597777999999948,58.878326000000072],[-94.586394999999868,58.874992000000077],[-94.486938000000009,58.815269000000058],[-94.482223999999974,58.811104000000057],[-94.477782999999931,58.806656000000089],[-94.474716000000001,58.802216000000044],[-94.457503999999915,58.774162000000047],[-94.453338999999914,58.765274000000034],[-94.452788999999882,58.759720000000016],[-94.453338999999914,58.750549000000092],[-94.448607999999979,58.736382000000106],[-94.446105999999986,58.731658999999979],[-94.43720999999988,58.72304500000007],[-94.421660999999972,58.716385000000059],[-94.410552999999993,58.714157000000114],[-94.361388999999974,58.712769000000037],[-94.343613000000005,58.715546000000074],[-94.326950000000011,58.721656999999993],[-94.291107000000011,58.743606999999997],[-94.279175000000009,58.771103000000039],[-94.228881999999999,58.784996000000092],[-94.234725999999966,58.714714000000015],[-94.252228000000002,58.649994000000049],[-94.285277999999892,58.512496999999996],[-94.287216000000001,58.438041999999996],[-94.289168999999958,58.427773000000116],[-94.291672000000005,58.422218000000044],[-94.296660999999972,58.415825000000098],[-94.326400999999976,58.349159000000043],[-94.348617999999988,58.2866590000001],[-94.351668999999902,58.276656999999943],[-94.363892000000021,58.22387700000013],[-94.363327000000027,58.218880000000013],[-94.360275000000001,58.220543000000134],[-94.3558349999999,58.226097000000095],[-94.259445000000028,58.351386999999988],[-94.231110000000001,58.390549000000021],[-94.228606999999954,58.396103000000039],[-94.226943999999946,58.406380000000013],[-94.231110000000001,58.430824000000143],[-94.238891999999964,58.494155999999975],[-94.24610899999999,58.576385000000016],[-94.24610899999999,58.586654999999951],[-94.245269999999948,58.59165999999999],[-94.242766999999958,58.597214000000008],[-94.143889999999942,58.763610999999912],[-94.113892000000021,58.762215000000083],[-93.995833999999945,58.760826000000066],[-93.949158000000011,58.76249700000011],[-93.843886999999938,58.767769000000044],[-93.798614999999927,58.773604999999918],[-93.728058000000033,58.783882000000119],[-93.709732000000031,58.785827999999981],[-93.673049999999932,58.780823000000112],[-93.575561999999991,58.763885000000016],[-93.475554999999986,58.732491000000039],[-93.350554999999929,58.74582700000002],[-93.343886999999881,58.750832000000059],[-93.327788999999996,58.757217000000082],[-93.319167999999991,58.758606000000043],[-93.236664000000019,58.766936999999984],[-93.216659999999933,58.764160000000061],[-93.196380999999974,58.758331000000055],[-93.155562999999972,58.740273000000002],[-93.152221999999938,58.737770000000012],[-93.141112999999962,58.691933000000006],[-93.139724999999885,58.653876999999966],[-93.126937999999882,58.532494000000042],[-93.126099000000011,58.527771000000087],[-93.118057000000022,58.508888000000013],[-93.095276000000013,58.467209000000082],[-93.035277999999948,58.37082700000002],[-92.964721999999938,58.261108000000036],[-92.93110699999994,58.21166199999999],[-92.868880999999931,58.143050999999957],[-92.811660999999901,58.071663000000058],[-92.803329000000019,58.057213000000104],[-92.799987999999985,58.042221000000097],[-92.805557000000022,58.011940000000038],[-92.805557000000022,58.00638600000002],[-92.80471799999998,57.997490000000084],[-92.795273000000009,57.96888000000007],[-92.753615999999965,57.85083000000003],[-92.724716000000001,57.801383999999985],[-92.672501000000011,57.733047000000056],[-92.621108999999876,57.670547000000113],[-92.450835999999981,57.442490000000134],[-92.446380999999974,57.433051999999918],[-92.418883999999991,57.337493999999992],[-92.418334999999956,57.332497000000103],[-92.418883999999991,57.323326000000122],[-92.427215999999987,57.263053999999954],[-92.430283000000031,57.252220000000079],[-92.441101000000003,57.23054500000012],[-92.549437999999896,57.08554799999996],[-92.563889000000017,57.068885999999964],[-92.576400999999976,57.056938000000116],[-92.695267000000001,56.961662000000047],[-92.708617999999888,56.951660000000118],[-92.715835999999967,56.947487000000137],[-92.723327999999924,56.944435000000055],[-92.73832699999997,56.94110100000006],[-92.771392999999932,56.93804200000011],[-92.837219000000005,56.924438000000009],[-92.868056999999965,56.91415399999994],[-92.877212999999927,56.90915700000005],[-92.876098999999954,56.907494000000099],[-92.868332000000009,56.90665400000006],[-92.850554999999929,56.907211000000132],[-92.831680000000006,56.908599999999979],[-92.790557999999976,56.913879000000122],[-92.756957999999997,56.918602000000135],[-92.731383999999991,56.922492999999974],[-92.691101000000003,56.93360100000001],[-92.660277999999948,56.945266999999944],[-92.652221999999881,56.949158000000011],[-92.61721799999998,56.96888000000007],[-92.610000999999954,56.974709000000075],[-92.589171999999905,56.986382000000106],[-92.552779999999984,57.004714999999976],[-92.514450000000011,57.023604999999918],[-92.492217999999923,57.032493999999986],[-92.475280999999995,57.037498000000141],[-92.443054000000018,57.044715999999994],[-92.40055799999999,57.052216000000044],[-92.376098999999954,57.056381000000044],[-92.253615999999965,57.065544000000045],[-92.235549999999989,57.066101000000117],[-92.226105000000018,57.065544000000045],[-92.217223999999987,57.063049000000035],[-92.212218999999948,57.058043999999995],[-92.218932999999993,57.052779999999984],[-92.337509000000011,56.981377000000066],[-92.344727000000034,56.977485999999999],[-92.352218999999991,56.974159000000043],[-92.368332000000009,56.969711000000075],[-92.385558999999944,56.967209000000025],[-92.394454999999994,56.966933999999981],[-92.418610000000001,56.961937000000091],[-92.432220000000029,56.955826000000002],[-92.46945199999999,56.934989999999971],[-92.466399999999965,56.932495000000131],[-92.375,56.949714999999912],[-92.303054999999972,56.967491000000109],[-92.287215999999944,56.974434000000088],[-92.281113000000005,56.978874000000076],[-92.268616000000009,56.990829000000019],[-92.261947999999961,56.99582700000002],[-92.235275000000001,57.012771999999984],[-92.220276000000013,57.018883000000017],[-92.204453000000001,57.02416199999999],[-92.180282999999974,57.030823000000112],[-92.155272999999909,57.036658999999986],[-92.146666999999979,57.037772999999959],[-92.129165999999941,57.03943600000008],[-92.093062999999972,57.040833000000021],[-92.057769999999891,57.043884000000048],[-92.031677000000002,57.046660999999972],[-91.987503000000004,57.052489999999977],[-91.952224999999999,57.05721299999999],[-91.828888000000006,57.087211999999965],[-91.779998999999975,57.100273000000129],[-91.241104000000007,57.222214000000008],[-91.15583799999996,57.239989999999977],[-91.08944699999995,57.251106000000107],[-91.05471799999998,57.256104000000107],[-91.036391999999978,57.258049000000085],[-91.001677999999913,57.26138300000008],[-90.992767000000015,57.26138300000008],[-90.834166999999923,57.257217000000026],[-90.81527699999998,57.255829000000119],[-90.795546999999999,57.24971800000003],[-90.779175000000009,57.243324000000143],[-90.758895999999993,57.237769999999955],[-90.738051999999925,57.232490999999982],[-90.71945199999999,57.228043000000014],[-90.709441999999967,57.226379000000009],[-90.563323999999909,57.212212000000079],[-90.451110999999969,57.193878000000097],[-90.408614999999998,57.181664000000069],[-90.391678000000013,57.176102000000128],[-90.387786999999946,57.171378999999945],[-90.310821999999973,57.134995000000117],[-90.225554999999929,57.104439000000013],[-90.025009000000011,57.031380000000013],[-90.005004999999983,57.01915699999995],[-90,57.016369000000054],[-89.990554999999972,57.011107999999922],[-89.970276000000013,57.004166000000055],[-89.833068999999966,56.978324999999984],[-89.715285999999992,56.957214000000079],[-89.521392999999932,56.92943600000001],[-89.439163000000008,56.923881999999992],[-89.132941999999957,56.864852999999982],[-89.06806899999998,56.852219000000048],[-89.015288999999939,56.84777100000008],[-88.950287000000003,56.843048000000124],[-88.94261199999994,56.844269000000054],[-88.815001999999993,56.824440000000038],[-88.742767000000015,56.764442000000145],[-88.67193599999996,56.709435000000042],[-88.654723999999931,56.696380999999974],[-88.639998999999989,56.688599000000067],[-88.631377999999984,56.68471500000004],[-88.584166999999923,56.670546999999999],[-88.440552000000025,56.603607000000011],[-88.415008999999998,56.58638000000002],[-88.365829000000019,56.561661000000015],[-88.324172999999973,56.542770000000019],[-88.218886999999995,56.504440000000045],[-88.149444999999957,56.486938000000009],[-88.103057999999976,56.476097000000095],[-88.069732999999928,56.468880000000013],[-88.048889000000031,56.465546000000018],[-88.028885000000002,56.459991000000116],[-88.018616000000009,56.456100000000049],[-87.982772999999952,56.441658000000075],[-87.975554999999929,56.437491999999963],[-87.841110000000015,56.315269000000001],[-87.723891999999978,56.203880000000083],[-87.719161999999926,56.198875000000044],[-87.715011999999945,56.189987000000031],[-87.71556099999998,56.169716000000051],[-87.713897999999972,56.164993000000095],[-87.708053999999947,56.156096999999988],[-87.702788999999996,56.151931999999988],[-87.548614999999927,56.049995000000138],[-87.478881999999999,56.029160000000047],[-87.368880999999988,56.000832000000059],[-87.351943999999889,55.992767000000129],[-87.345276000000013,55.988602000000128],[-87.343613000000005,55.983879000000002],[-87.348343,55.973320000000115],[-87.355270000000019,55.962769000000037],[-87.198333999999988,55.940269000000001],[-87.110001000000011,55.92943600000001],[-87.091675000000009,55.927489999999921],[-87.057220000000029,55.926940999999999],[-87.031676999999945,55.929718000000094],[-86.996947999999975,55.931663999999955],[-86.979445999999939,55.931663999999955],[-86.970000999999968,55.929718000000094],[-86.881942999999922,55.907211000000018],[-86.837783999999999,55.891380000000026],[-86.616942999999992,55.838882000000012],[-86.572783999999956,55.83027600000014],[-86.544448999999986,55.824440000000038],[-86.486663999999962,55.811378000000047],[-86.477782999999931,55.808884000000091],[-86.448607999999979,55.799995000000024],[-86.398620999999991,55.784164000000033],[-86.372771999999998,55.774993999999992],[-86.346114999999998,55.763054000000068],[-86.332779000000016,55.754715000000033],[-86.321944999999971,55.745544000000109],[-86.31527699999998,55.741104000000064],[-86.277221999999995,55.728873999999962],[-86.267776000000026,55.726936000000023],[-85.86721799999998,55.657493999999986],[-85.740829000000019,55.638046000000088],[-85.731673999999998,55.636940000000038],[-85.71444699999995,55.631660000000011],[-85.569457999999941,55.55860100000001],[-85.556655999999975,55.550270000000069],[-85.532227000000034,55.528045999999961],[-85.525833000000034,55.51888299999996],[-85.516662999999994,55.500000000000057],[-85.515015000000005,55.495270000000062],[-85.515288999999996,55.490273000000116],[-85.509170999999981,55.481102000000021],[-85.499435000000005,55.472214000000008],[-85.474166999999909,55.454711999999972],[-85.393340999999964,55.408881999999949],[-85.383620999999948,55.404991000000109],[-85.272232000000031,55.374709999999993],[-85.234726000000023,55.364715999999987],[-85.224716000000001,55.364159000000086],[-85.208617999999944,55.365273000000059],[-85.182219999999973,55.365273000000059],[-85.164444000000003,55.361664000000076],[-85.146118000000001,55.354996000000085],[-85.128875999999991,55.346382000000006],[-85.123885999999857,55.341934000000037],[-85.121933000000013,55.337769000000037],[-85.116652999999928,55.323050999999964],[-85.116394000000014,55.313606000000107],[-85.118331999999953,55.308601000000067],[-85.121933000000013,55.303322000000094],[-85.129165999999998,55.297775000000115],[-85.144164999999987,55.290276000000119],[-85.215285999999935,55.268600000000049],[-85.275283999999999,55.216660000000047],[-85.398055999999997,55.10083000000003],[-85.399993999999936,55.095824999999991],[-85.397506999999962,55.090546000000018],[-85.383620999999948,55.06749700000006],[-85.398055999999997,55.0472180000001],[-85.419448999999986,55.010826000000122],[-85.425003000000004,55.000274999999988],[-85.425003000000004,54.995544000000052],[-85.423889000000031,54.990546999999992],[-85.414443999999946,54.991104000000064],[-85.407500999999968,54.993324000000086],[-85.400283999999942,54.997772000000055],[-85.386123999999938,55.008049000000028],[-85.370543999999938,55.024437000000091],[-85.366942999999992,55.029716000000064],[-85.36250299999989,55.04055000000011],[-85.347778000000005,55.080826000000116],[-85.33555599999994,55.101661999999976],[-85.318344000000025,55.127486999999974],[-85.313048999999978,55.132767000000001],[-85.220275999999956,55.224434000000088],[-85.194153000000028,55.244155999999919],[-85.17971799999998,55.253608999999926],[-85.156113000000005,55.264160000000061],[-85.139998999999989,55.270270999999923],[-85.116652999999928,55.276657000000057],[-85.06806899999998,55.287498000000141],[-85.043883999999878,55.292770000000075],[-85.001952999999958,55.296660999999972],[-84.974715999999944,55.295830000000137],[-84.869445999999982,55.279716000000008],[-84.75140399999998,55.256103999999993],[-84.723617999999931,55.249718000000087],[-84.712783999999942,55.247771999999998],[-84.688048999999921,55.245270000000119],[-84.635559000000001,55.24221799999998],[-84.599166999999909,55.241661000000079],[-84.566390999999953,55.244155999999919],[-84.541381999999999,55.247490000000084],[-84.444716999999855,55.267769000000044],[-84.428878999999995,55.273048000000017],[-84.388610999999969,55.282493999999986],[-84.322783999999956,55.289992999999981],[-84.206954999999937,55.295546999999999],[-84.198607999999979,55.295273000000066],[-84.189437999999996,55.294159000000093],[-84.170837000000006,55.283051000000057],[-84.159438999999963,55.278328000000101],[-84.149170000000026,55.275551000000007],[-84.12222300000002,55.272217000000012],[-84.113892000000021,55.271934999999928],[-84.092223999999987,55.271660000000111],[-84.076110999999969,55.276099999999929],[-84.049987999999928,55.286110000000065],[-84.006393000000003,55.301383999999928],[-83.968886999999881,55.313881000000094],[-83.951675000000023,55.317497000000003],[-83.93249499999996,55.319443000000035],[-83.920273000000009,55.319160000000068],[-83.897506999999905,55.316940000000102],[-83.658386000000007,55.237324000000058],[-83.65439600000002,55.235493000000076],[-83.651732999999922,55.232985999999983],[-83.570281999999963,55.18804200000011],[-83.567229999999938,55.183052000000032],[-83.570007000000032,55.177773000000059],[-83.58555599999994,55.166100000000029],[-83.591674999999896,55.154434000000037],[-83.589721999999938,55.149719000000005],[-83.574447999999961,55.138045999999974],[-83.561935000000005,55.130820999999969],[-83.556655999999919,55.134163000000058],[-83.556655999999919,55.17943600000001],[-83.558608999999933,55.184989999999971],[-83.579505999999867,55.221157000000005],[-83.588057999999933,55.233330000000024],[-83.593886999999938,55.236938000000123],[-83.60082999999986,55.239990000000034],[-83.620833999999945,55.242767000000129],[-83.643889999999999,55.242767000000129],[-83.654448999999943,55.243881000000101],[-83.670837000000006,55.248604000000057],[-83.684432999999956,55.254439999999988],[-83.696105999999986,55.261664999999994],[-83.706116000000009,55.269714000000022],[-83.708892999999989,55.274437000000034],[-83.706116000000009,55.279990999999995],[-83.698607999999979,55.283051000000057],[-83.688888999999961,55.281937000000084],[-83.57417299999986,55.262215000000026],[-83.533324999999934,55.250549000000092],[-83.519454999999937,55.243881000000101],[-83.498885999999914,55.235549999999989],[-83.489440999999943,55.233879000000115],[-83.179717999999866,55.197211999999979],[-83.168609999999944,55.197487000000137],[-83.150283999999942,55.200271999999984],[-83.128051999999968,55.207497000000046],[-83.120270000000005,55.210823000000119],[-83.089721999999938,55.226654000000053],[-83.074447999999961,55.231658999999922],[-83.037505999999951,55.238327000000083],[-83.029174999999952,55.238883999999985],[-83.006392999999946,55.238602000000128],[-82.985001000000011,55.236382000000106],[-82.964721999999995,55.233604000000128],[-82.948607999999865,55.228874000000076],[-82.941665999999941,55.225821999999994],[-82.930556999999965,55.218322999999998],[-82.91332999999986,55.201385000000073],[-82.906113000000005,55.191932999999949],[-82.896956999999986,55.177215999999987],[-82.874435000000005,55.154434000000037],[-82.838333000000034,55.146660000000054],[-82.809998000000007,55.142220000000009],[-82.786117999999988,55.141106000000036],[-82.775283999999942,55.14137999999997],[-82.76556399999987,55.142493999999942],[-82.73971599999993,55.147491000000059],[-82.708618000000001,55.156380000000127],[-82.700835999999981,55.159714000000122],[-82.669723999999974,55.168052999999986],[-82.661117999999931,55.169716000000108],[-82.650283999999886,55.169716000000108],[-82.508346999999901,55.152771000000143],[-82.449432000000002,55.133049000000085],[-82.412506000000008,55.112770000000125],[-82.40972899999997,55.108046999999999],[-82.400833000000034,55.082771000000093],[-82.33555599999994,55.071014000000048],[-82.307495000000017,55.115829000000133],[-82.308043999999995,55.121933000000126],[-82.309432999999899,55.127486999999974],[-82.3125,55.132492000000013],[-82.323623999999995,55.139992000000063],[-82.337218999999948,55.146102999999982],[-82.345276000000013,55.148331000000098],[-82.355559999999969,55.162491000000045],[-82.349990999999875,55.166382000000112],[-82.34056099999998,55.164711000000011],[-82.333618000000001,55.1616590000001],[-82.307769999999948,55.148880000000077],[-82.25418099999996,55.111382000000049],[-82.245833999999945,55.102776000000119],[-82.244995000000017,55.09027100000003],[-82.246947999999861,55.084160000000111],[-82.253341999999975,55.073608000000092],[-82.25778200000002,55.06888600000002],[-82.273620999999935,55.05721299999999],[-82.282227000000034,55.048049999999989],[-82.285277999999948,55.042770000000132],[-82.287216000000001,55.036659000000043],[-82.287216000000001,55.030273000000136],[-82.270844000000011,54.931381000000044],[-82.267226999999991,54.920273000000009],[-82.255279999999914,54.894157000000121],[-82.246947999999861,54.879433000000063],[-82.241378999999938,54.874991999999963],[-82.231948999999986,54.873877999999991],[-82.221114999999998,54.787498000000085],[-82.320846999999958,54.571380999999974],[-82.403885000000002,54.410820000000115],[-82.419158999999979,54.384163000000058],[-82.431670999999938,54.370270000000005],[-82.436935000000005,54.366385999999977],[-82.441101000000003,54.361664000000076],[-82.441665999999941,54.330826000000116],[-82.434158000000025,54.209435000000042],[-82.421660999999972,54.197211999999979],[-82.389998999999989,54.16832700000009],[-82.362777999999878,54.143607999999972],[-82.301392000000021,54.103050000000053],[-82.283889999999985,54.092491000000052],[-82.253341999999975,54.076102999999989],[-82.248046999999929,54.072220000000016],[-82.243880999999931,54.068054000000132],[-82.238327000000027,54.057495000000074],[-82.160278000000005,53.898880000000133],[-82.131942999999978,53.817772000000105],[-82.130553999999961,53.793052999999986],[-82.129715000000033,53.774436999999978],[-82.130553999999961,53.767493999999999],[-82.136672999999917,53.749161000000129],[-82.148894999999982,53.727768000000026],[-82.189986999999917,53.674164000000019],[-82.194152999999915,53.669441000000006],[-82.203063999999927,53.653320000000008],[-82.208344000000011,53.641936999999984],[-82.212783999999999,53.622765000000015],[-82.21665999999999,53.603882000000112],[-82.211944999999957,53.536110000000065],[-82.208618000000001,53.524994000000106],[-82.198883000000023,53.504714999999976],[-82.190552000000025,53.489716000000101],[-82.172500999999954,53.460548000000074],[-82.165558000000033,53.451385000000073],[-82.158614999999998,53.442215000000033],[-82.147781000000009,53.421661000000086],[-82.138061999999991,53.38888500000013],[-82.125823999999966,53.344154000000117],[-82.119445999999982,53.315826000000129],[-82.115829000000019,53.298332000000073],[-82.113891999999908,53.286659000000043],[-82.113891999999908,53.280273000000136],[-82.114715999999873,53.273604999999975],[-82.117766999999958,53.268050999999957],[-82.121932999999956,53.263610999999969],[-82.141387999999949,53.254715000000033],[-82.21055599999994,53.220268000000033],[-82.248336999999935,53.193877999999984],[-82.269454999999937,53.163879000000009],[-82.27555799999999,53.153320000000122],[-82.279448999999943,53.141106000000093],[-82.300277999999935,53.060271999999998],[-82.301392000000021,53.05332199999998],[-82.301666000000012,53.041663999999969],[-82.296660999999972,53.018599999999992],[-82.273894999999982,52.956383000000017],[-82.261397999999986,52.937210000000107],[-82.257506999999976,52.932770000000062],[-82.235824999999977,52.924164000000133],[-82.196380999999974,52.913321999999937],[-82.136123999999995,52.894714000000079],[-82.120543999999995,52.889717000000132],[-82.101669000000015,52.879990000000021],[-82.050551999999982,52.84304800000001],[-82.025833000000034,52.823883000000023],[-82.001113999999973,52.804710000000114],[-81.977782999999931,52.784996000000035],[-81.973617999999931,52.780548000000067],[-81.951401000000033,52.736938000000066],[-81.733611999999994,52.549995000000138],[-81.719161999999983,52.538330000000087],[-81.714172000000019,52.534721000000047],[-81.697494999999947,52.524162000000047],[-81.639175000000023,52.490547000000106],[-81.621384000000035,52.480819999999994],[-81.607497999999964,52.475265999999976],[-81.577224999999999,52.465271000000087],[-81.569457999999941,52.462212000000136],[-81.558043999999938,52.456099999999935],[-81.554168999999888,52.451660000000118],[-81.551391999999964,52.446655000000078],[-81.549987999999985,52.44110100000006],[-81.542496000000028,52.338882000000012],[-81.56138599999997,52.316383000000087],[-81.663054999999986,52.292220999999984],[-81.822509999999909,52.254440000000045],[-81.850829999999917,52.244995000000131],[-81.863051999999982,52.238884000000041],[-81.865829000000019,52.23333000000008],[-81.883620999999948,52.187492000000134],[-81.874160999999901,52.188324000000023],[-81.841949,52.194992000000013],[-81.826950000000011,52.19887499999993],[-81.805557000000022,52.206099999999992],[-81.795546999999999,52.213882000000126],[-81.792495999999971,52.21915400000006],[-81.788605000000018,52.223877000000073],[-81.779448999999943,52.232208000000128],[-81.765015000000005,52.237770000000069],[-81.758346999999958,52.23943300000002],[-81.74888599999997,52.240273000000059],[-81.718886999999881,52.240829000000076],[-81.554992999999854,52.237495000000081],[-81.521392999999932,52.235825000000091],[-81.50167799999997,52.23333000000008],[-81.478881999999942,52.225822000000051],[-81.472778000000005,52.221930999999984],[-81.460006999999962,52.210274000000027],[-81.443603999999937,52.192764000000068],[-81.440552000000025,52.188599000000067],[-81.434432999999956,52.179161000000022],[-81.431670999999994,52.174164000000133],[-81.430557000000022,52.168053000000043],[-81.418335000000013,52.149437000000034],[-81.414443999999946,52.144996999999989],[-81.405838000000017,52.136940000000038],[-81.365279999999984,52.107216000000051],[-81.352782999999988,52.101105000000132],[-81.337783999999999,52.096100000000092],[-81.310546999999985,52.091102999999976],[-81.290832999999964,52.088599999999985],[-81.264724999999999,52.08277099999998],[-81.212509000000011,52.065543999999989],[-81.186110999999869,52.053604000000064],[-81.167496000000028,52.044158999999979],[-81.118057000000022,52.045547000000113],[-80.994445999999925,52.01138300000008],[-80.988327000000027,52.008049000000085],[-80.978333000000021,52.000832000000003],[-80.97444200000001,51.996384000000035],[-80.973052999999936,51.990829000000133],[-80.972778000000005,51.978325000000098],[-80.929992999999968,51.924163999999962],[-80.918609999999944,51.910271000000137],[-80.899993999999936,51.89527099999998],[-80.894729999999981,51.891663000000051],[-80.80972300000002,51.857498000000135],[-80.698607999999979,51.794715999999937],[-80.615279999999927,51.730270000000132],[-80.610275000000001,51.726379000000065],[-80.589171999999962,51.699715000000083],[-80.589171999999962,51.693321000000026],[-80.590285999999878,51.686653000000092],[-80.589995999999928,51.674164000000019],[-80.586120999999878,51.663605000000018],[-80.578887999999949,51.648605000000032],[-80.571395999999993,51.633605999999986],[-80.515015000000005,51.524437000000034],[-80.507506999999976,51.515830999999935],[-80.497771999999998,51.508331000000055],[-80.462218999999891,51.488601999999958],[-80.457229999999925,51.484993000000145],[-80.442489999999964,51.473602000000028],[-80.438889000000017,51.46915400000006],[-80.436385999999857,51.464157000000114],[-80.434998000000007,51.458602999999925],[-80.424438000000009,51.36360899999994],[-80.426392000000021,51.358887000000038],[-80.430557000000022,51.354164000000083],[-80.442489999999964,51.34804500000007],[-80.471664000000033,51.339714000000129],[-80.502791999999943,51.331940000000145],[-80.540558000000033,51.323326000000066],[-80.568619000000012,51.314156000000025],[-80.652495999999985,51.278327999999988],[-80.691939999999988,51.247490000000028],[-80.706954999999937,51.235550000000103],[-80.831680000000006,51.155822999999941],[-80.952498999999989,51.079720000000009],[-80.959441999999967,51.077492000000063],[-80.965285999999992,51.074440000000095],[-80.981110000000001,51.06360600000005],[-80.994994999999903,51.051384000000098],[-81.004181000000017,51.043052999999986],[-81.012222000000008,51.033882000000062],[-81.015015000000005,51.028328000000045],[-81.005279999999914,51.028603000000089],[-80.928054999999915,51.04583000000008],[-80.888335999999924,51.082771000000037],[-80.875274999999988,51.103324999999984],[-80.862212999999883,51.116104000000007],[-80.850280999999995,51.122489999999971],[-80.835280999999952,51.126938000000109],[-80.820557000000008,51.130272000000105],[-80.793610000000001,51.132767000000115],[-80.765014999999948,51.133606000000043],[-80.748046999999985,51.136658000000011],[-80.740829000000019,51.138885000000073],[-80.694442999999978,51.156097000000045],[-80.688599000000011,51.159157000000107],[-80.610000999999954,51.214157],[-80.567779999999971,51.258331000000112],[-80.562774999999988,51.262214999999969],[-80.541381999999999,51.276657000000114],[-80.530563000000029,51.283606999999961],[-80.512512000000015,51.292769999999962],[-80.480285999999865,51.307213000000047],[-80.414444000000003,51.332497000000046],[-80.400283999999886,51.337212000000079],[-80.392226999999991,51.338599999999985],[-80.371658000000025,51.336655000000007],[-80.330291999999986,51.326385000000073],[-80.219727000000034,51.301659000000029],[-80.190551999999968,51.297493000000145],[-80.129989999999907,51.297775000000001],[-80.120270000000005,51.296387000000095],[-80.016952999999944,51.263054000000125],[-79.996383999999921,51.25471500000009],[-79.800277999999992,51.156097000000045],[-79.788054999999929,51.149719000000118],[-79.741104000000007,51.123604000000114],[-79.736389000000031,51.119713000000047],[-79.729171999999949,51.110825000000034],[-79.716515000000015,51.081715000000031],[-79.685103999999967,51.045361000000014],[-79.612777999999992,51.008049000000085],[-79.537612999999908,50.958397000000048],[-79.519729999999981,50.929993000000024],[-79.516113000000018,50.926384000000041],[-79.466109999999958,50.889434999999935],[-79.450561999999877,50.87860100000006],[-79.438599000000011,50.872214999999983],[-79.415008999999941,50.846939000000134],[-79.411391999999978,50.842490999999995],[-79.352782999999931,50.748329000000069],[-79.350280999999939,50.736938000000123],[-79.348052999999993,50.731934000000138],[-79.343612999999891,50.728324999999984],[-79.337509000000011,50.724990999999989],[-79.332229999999981,50.723877000000016],[-79.330001999999922,50.758331000000055],[-79.330001999999922,50.764442000000088],[-79.332229999999981,50.775826000000052],[-79.420836999999949,50.879715000000033],[-79.439986999999917,50.894997000000103],[-79.464721999999995,50.913321999999994],[-79.515015000000005,50.95665699999995],[-79.537353999999993,50.983765000000062],[-79.571121000000005,51.00277699999998],[-79.660004000000015,51.045273000000009],[-79.673049999999876,51.050827000000027],[-79.678054999999915,51.054710000000114],[-79.698333999999932,51.075554000000068],[-79.705276000000026,51.084435000000042],[-79.749435000000005,51.168326999999977],[-79.751952999999958,51.178878999999995],[-79.752227999999889,51.184433000000013],[-79.751113999999973,51.197487000000081],[-79.745543999999995,51.208885000000066],[-79.742492999999968,51.214157],[-79.720551,51.243607000000054],[-79.703887999999949,51.261665000000107],[-79.699431999999945,51.266937000000041],[-79.688888999999961,51.281937000000028],[-79.682495000000017,51.292496000000028],[-79.680556999999908,51.298050000000046],[-79.679442999999992,51.304710000000057],[-79.668609999999944,51.398605000000089],[-79.593886999999938,51.449158000000068],[-79.581679999999949,51.455268999999987],[-79.574721999999895,51.457497000000103],[-79.547103999999877,51.460129000000109],[-79.533614999999941,51.50499700000006],[-79.474166999999966,51.579162999999994],[-79.376389000000017,51.642494000000113],[-79.353881999999999,51.656096999999988],[-79.331680000000006,51.661933999999917],[-79.322234999999978,51.662766000000033],[-79.239715999999987,51.634994999999947],[-79.236114999999927,51.630820999999912],[-79.235000999999954,51.624992000000077],[-79.23721299999994,51.619156000000032],[-79.251952999999958,51.60694100000012],[-79.275283999999999,51.577773999999977],[-79.285277999999948,51.562492000000134],[-79.285277999999948,51.556381000000101],[-79.274719000000005,51.530548000000124],[-79.271118000000001,51.525551000000064],[-79.267226999999934,51.521659999999997],[-79.202498999999989,51.518883000000073],[-79.183318999999983,51.519714000000079],[-79.175277999999935,51.521103000000096],[-79.161117999999931,51.525551000000064],[-79.154998999999975,51.528602999999976],[-79.144454999999937,51.536110000000065],[-79.137512000000015,51.538330000000087],[-79.12748699999986,51.538048000000003],[-79.120270000000005,51.535552999999993],[-79.024445000000014,51.476379000000122],[-79.020553999999947,51.473320000000115],[-79.012221999999952,51.464996000000099],[-79.005004999999926,51.449997000000053],[-78.963332999999977,51.353325000000098],[-78.950286999999946,51.29222100000004],[-78.955276000000026,51.256660000000068],[-78.95944199999991,51.252220000000023],[-78.962783999999942,51.246941000000049],[-78.962783999999942,51.240546999999992],[-78.958344000000011,51.230545000000063],[-78.951401000000033,51.215546000000018],[-78.937209999999936,51.197769000000108],[-78.928878999999938,51.18971300000004],[-78.924164000000019,51.185822000000144],[-78.912215999999944,51.179436000000067],[-78.906113000000005,51.176658999999972],[-78.853332999999964,51.165543000000014],[-78.914718999999934,51.22165700000005],[-78.918335000000013,51.226097000000095],[-78.920546999999942,51.231102000000135],[-78.921660999999915,51.237495000000081],[-78.920273000000009,51.249718000000144],[-78.890563999999927,51.390549000000021],[-78.888335999999981,51.396660000000111],[-78.883057000000008,51.401100000000099],[-78.832229999999981,51.438599000000011],[-78.779175000000009,51.474990999999989],[-78.82028200000002,51.513054000000068],[-78.823897999999986,51.517494000000056],[-78.826110999999969,51.522491000000002],[-78.824448000000018,51.541664000000083],[-78.820846999999958,51.554436000000067],[-78.80860899999999,51.576385000000016],[-78.791672000000005,51.603881999999942],[-78.796386999999925,51.608604000000014],[-78.859160999999972,51.634163000000058],[-78.944153000000028,51.670547000000056],[-79.03472899999997,51.764717000000132],[-79.035552999999993,51.770271000000093],[-79.033324999999877,51.776382000000012],[-79.029174999999952,51.781380000000013],[-79.008346999999958,51.795830000000137],[-78.995834000000002,51.801658999999972],[-78.985824999999977,51.801658999999972],[-78.976104999999905,51.799720999999977],[-78.961394999999868,51.794998000000021],[-78.944442999999865,51.790833000000021],[-78.918059999999969,51.79444100000012],[-78.910827999999981,51.796660999999972],[-78.903609999999958,51.799438000000009],[-78.879989999999964,51.811378000000104],[-78.851944000000003,51.828606000000036],[-78.846389999999985,51.832497000000103],[-78.836945000000014,51.841377000000136],[-78.833618000000001,51.845825000000104],[-78.832229999999981,51.852776000000063],[-78.834441999999967,51.857772999999952],[-78.841674999999952,51.866661000000136],[-78.846389999999985,51.870269999999948],[-78.858611999999937,51.876938000000109],[-78.86361699999992,51.880821000000083],[-78.89555399999989,51.926659000000029],[-78.896392999999932,51.932495000000074],[-78.894164999999987,51.93832400000008],[-78.881942999999922,51.944434999999999],[-78.860274999999888,51.951102999999932],[-78.851944000000003,51.95249200000012],[-78.810546999999929,51.958885000000066],[-78.769454999999994,51.966103000000089],[-78.747771999999998,51.973320000000001],[-78.736664000000019,51.979431000000091],[-78.695830999999998,52.008049000000085],[-78.579452999999944,52.111382000000106],[-78.537505999999951,52.180824000000143],[-78.501113999999973,52.255829000000006],[-78.524445000000014,52.311104000000114],[-78.516953000000001,52.367767000000072],[-78.507232999999985,52.454437000000041],[-78.506957999999997,52.460548000000074],[-78.545273000000009,52.514717000000132],[-78.564712999999983,52.530273000000079],[-78.577224999999999,52.536658999999986],[-78.585555999999997,52.538605000000075],[-78.59584000000001,52.538886999999988],[-78.654448999999943,52.54694400000011],[-78.684433000000013,52.551383999999985],[-78.763335999999981,52.564438000000052],[-78.761123999999938,52.570549000000085],[-78.755568999999923,52.574164999999994],[-78.721114999999998,52.586655000000121],[-78.691939999999931,52.596099999999979],[-78.713333000000034,52.628876000000105],[-78.753066999999874,52.683875999999941],[-78.790833000000021,52.737495000000138],[-78.796950999999979,52.773880000000077],[-78.765015000000005,52.777489000000116],[-78.731948999999986,52.783333000000084],[-78.724715999999944,52.785553000000107],[-78.722503999999901,52.791664000000026],[-78.725554999999986,52.819443000000035],[-78.738327000000027,52.872215000000097],[-78.794448999999986,52.861381999999935],[-78.856109999999887,52.877769000000114],[-78.880829000000006,52.896942000000024],[-78.881942999999922,52.90277100000003],[-78.87860099999989,52.908043000000134],[-78.864715999999987,52.963608000000079],[-78.915833000000021,53.000000000000057],[-78.923049999999932,53.068886000000077],[-78.888061999999934,53.224709000000132],[-78.894454999999994,53.259720000000073],[-78.895844000000011,53.26527400000009],[-78.942490000000021,53.384994999999947],[-78.949722000000008,53.399994000000049],[-78.991721999999925,53.434048000000018],[-78.994720000000029,53.436378000000047],[-79.004554999999925,53.439216999999928],[-79.009551999999928,53.438213000000019],[-79.044723999999974,53.439430000000016],[-79.053054999999972,53.438042000000053],[-79.063323999999966,53.439430000000016],[-79.068068999999923,53.443321000000083],[-79.090285999999992,53.470543000000021],[-79.093062999999972,53.474709000000075],[-79.107773000000009,53.497215000000097],[-79.110275000000001,53.502495000000124],[-79.103606999999954,53.513054000000011],[-79.084166999999979,53.522491000000116],[-79.054442999999935,53.531380000000013],[-79.035552999999993,53.53276800000009],[-79.012787000000003,53.531104999999968],[-79.031386999999995,53.529716000000008],[-79.038054999999986,53.526657],[-79.043334999999956,53.523048000000017],[-79.042495999999915,53.511108000000092],[-79.041381999999999,53.505554000000132],[-79.036391999999978,53.501663000000065],[-79.014838999999938,53.498940000000005],[-79.011002000000019,53.496937000000003],[-79.005675999999937,53.49577000000005],[-79.000678999999934,53.496609000000035],[-78.962783999999942,53.508888000000127],[-78.919158999999979,53.555267000000072],[-78.915833000000021,53.560547000000099],[-78.918335000000013,53.565544000000045],[-78.92193599999996,53.569992000000013],[-78.950561999999991,53.599716000000001],[-79.003341999999918,53.641663000000051],[-79.089721999999938,53.691658000000075],[-79.145003999999972,53.701660000000061],[-79.151397999999915,53.704994000000056],[-79.152221999999995,53.710548000000017],[-79.052490000000034,53.831939999999975],[-79.046951000000035,53.835548000000074],[-79.039444000000003,53.83776899999998],[-79.029723999999987,53.839157000000114],[-79.011123999999995,53.839989000000003],[-78.988891999999908,53.838882000000069],[-78.979995999999971,53.836104999999975],[-78.966109999999901,53.83027600000014],[-78.948333999999932,53.820831000000112],[-78.932770000000005,53.815543999999989],[-78.910827999999981,53.814437999999939],[-78.901397999999972,53.815268999999944],[-78.902221999999938,53.821380999999974],[-78.906386999999938,53.825272000000041],[-78.917769999999962,53.832214000000079],[-78.924164000000019,53.835548000000074],[-78.969727000000034,53.851387000000045],[-78.988891999999908,53.854713000000061],[-79.011948000000018,53.856658999999979],[-79.056655999999919,53.873046999999985],[-79.101104999999961,53.901657000000057],[-79.106110000000001,53.905548000000124],[-79.072509999999852,53.999161000000072],[-79.066956000000005,54.002777000000094],[-79.051102000000014,54.006660000000068],[-79.041381999999999,54.00777400000004],[-79.031676999999945,54.00777400000004],[-79.021392999999989,54.006386000000134],[-79.001098999999954,53.999992000000077],[-78.964950999999928,53.99716200000006],[-78.961623999999972,53.999992000000077],[-78.960280999999952,54.001389000000017],[-78.962783999999942,54.006386000000134],[-78.966659999999933,54.010826000000122],[-78.976669000000015,54.018326000000002],[-78.984160999999972,54.021659999999997],[-79.119445999999982,54.078605999999979],[-79.116393999999957,54.103050000000053],[-79.106383999999935,54.111382000000049],[-79.046386999999982,54.178329000000076],[-79.048889000000031,54.183327000000077],[-79.060546999999985,54.184158000000082],[-79.173324999999977,54.174995000000081],[-79.191665999999998,54.172768000000019],[-79.198043999999868,54.169716000000108],[-79.196944999999971,54.163605000000018],[-79.198333999999988,54.157210999999961],[-79.205840999999907,54.154990999999995],[-79.238051999999982,54.158882000000062],[-79.276397999999915,54.166939000000013],[-79.345276000000013,54.199432000000002],[-79.419998000000021,54.274437000000034],[-79.430557000000022,54.290275999999949],[-79.476669000000015,54.368599000000131],[-79.505004999999926,54.42582700000014],[-79.488051999999925,54.452217000000132],[-79.488051999999925,54.458603000000039],[-79.521392999999989,54.587212000000136],[-79.525283999999886,54.591377000000136],[-79.531677000000002,54.594711000000132],[-79.565552000000025,54.609993000000145],[-79.618880999999931,54.623878000000047],[-79.675551999999925,54.625824000000136],[-79.686110999999983,54.627212999999927],[-79.760833999999988,54.648048000000074],[-79.764449999999954,54.652214000000129],[-79.761123999999995,54.658325000000048],[-79.631667999999934,54.702773999999977],[-79.494155999999975,54.744713000000104],[-79.463622999999984,54.75360900000004],[-79.457229999999925,54.750275000000045],[-79.447494999999947,54.75110600000005],[-79.337783999999942,54.772491000000059],[-79.315826000000015,54.779991000000109],[-79.101104999999961,54.827216999999962],[-78.976669000000015,54.843048000000124],[-78.968886999999995,54.845267999999976],[-78.956664999999987,54.851936000000137],[-78.945540999999935,54.859436000000017],[-78.912505999999894,54.884163000000115],[-78.838608000000022,54.91443600000008],[-78.732773000000009,54.931107000000111],[-78.561110999999926,54.977767999999912],[-78.37388599999997,55.030273000000136],[-78.256118999999899,55.082214000000022],[-78.207672000000002,55.111655999999982],[-78.182220000000029,55.125267000000122],[-78.119445999999982,55.149994000000049],[-77.972778000000005,55.204994000000113],[-77.87249799999995,55.243606999999997],[-77.748610999999983,55.300827000000027],[-77.62222300000002,55.382766999999944],[-77.416655999999989,55.486107000000061],[-77.225829999999974,55.588326000000109],[-77.214721999999995,55.595267999999976],[-77.137221999999895,55.654160000000047],[-77.115279999999927,55.674164000000133],[-77.104720999999984,55.683876000000055],[-77.088332999999921,55.699432000000058],[-77.086120999999935,55.705551000000071],[-77.085555999999997,55.708046000000081],[-77.087783999999942,55.709716999999955],[-77.068343999999968,55.754715000000033],[-77.013061999999877,55.803046999999935],[-76.81138599999997,55.971100000000092],[-76.751953000000015,55.997771999999998],[-76.737503000000004,56.001663000000065],[-76.718886999999995,56.008048999999971],[-76.702498999999932,56.017494000000056],[-76.689162999999894,56.027489000000003],[-76.681945999999982,56.033882000000119],[-76.67721599999993,56.038605000000075],[-76.670836999999892,56.045830000000137],[-76.658050999999944,56.060821999999973],[-76.650833000000034,56.071938000000102],[-76.626662999999951,56.118049999999982],[-76.538329999999974,56.297775000000115],[-76.532227000000034,56.315269000000001],[-76.531112999999948,56.322220000000129],[-76.518889999999999,56.406097000000102],[-76.517501999999979,56.423325000000034],[-76.517501999999979,56.43582200000003],[-76.519164999999987,56.464714000000072],[-76.525832999999977,56.492767000000072],[-76.527221999999995,56.503052000000139],[-76.526397999999915,56.605827000000033],[-76.506957999999941,56.710823000000005],[-76.505004999999983,56.733879000000002],[-76.504455999999948,56.771934999999985],[-76.505568999999923,56.784995999999921],[-76.505279999999914,56.791382000000056],[-76.505568999999923,56.803047000000106],[-76.509445000000028,56.819717000000026],[-76.530838000000017,56.90665400000006],[-76.554442999999992,57.005828999999949],[-76.554717999999923,57.010826000000066],[-76.555832000000009,57.034996000000092],[-76.553329000000019,57.053322000000094],[-76.549164000000019,57.06221000000005],[-76.545272999999952,57.068885999999964],[-76.535552999999993,57.077773999999977],[-76.531112999999948,57.087211999999965],[-76.529175000000009,57.09665700000005],[-76.529723999999874,57.10582700000009],[-76.564437999999996,57.207214000000079],[-76.591384999999946,57.274436999999978],[-76.599990999999932,57.293610000000058],[-76.604445999999882,57.302773000000059],[-76.653060999999923,57.401382000000012],[-76.65834000000001,57.406653999999946],[-76.688048999999978,57.430550000000039],[-76.732223999999917,57.490273000000059],[-76.740829000000019,57.503326000000072],[-76.81138599999997,57.624710000000107],[-76.809433000000013,57.634720000000016],[-76.807770000000005,57.641662999999994],[-76.805557000000022,57.647774000000084],[-76.861937999999952,57.71915400000006],[-76.923049999999989,57.786110000000065],[-77.147231999999974,58.022765999999933],[-77.246658000000025,58.07388300000008],[-77.279723999999987,58.084435000000042],[-77.317504999999983,58.091934000000037],[-77.34944200000001,58.101936000000023],[-77.444442999999978,58.152489000000003],[-77.451110999999969,58.171379000000115],[-77.446655000000021,58.173882000000106],[-77.441100999999946,58.182770000000062],[-77.444152999999972,58.187767000000008],[-77.454453000000001,58.196381000000031],[-77.467223999999987,58.203323000000125],[-77.487777999999935,58.212769000000094],[-77.571670999999981,58.248047000000099],[-77.645843999999954,58.278603000000032],[-77.81527699999998,58.327217000000019],[-77.851944000000003,58.334991000000002],[-77.883895999999993,58.339989000000003],[-77.914443999999946,58.345543000000021],[-77.939163000000008,58.35305000000011],[-77.955276000000026,58.358604000000128],[-78.012512000000015,58.378601000000003],[-78.024445000000014,58.384163000000115],[-78.02806099999998,58.386940000000038],[-78.031386999999938,58.391380000000026],[-78.062682999999993,58.417309000000103],[-78.130553999999961,58.462769000000037],[-78.355559999999969,58.601661999999976],[-78.397231999999917,58.620827000000133],[-78.419998000000021,58.62721300000004],[-78.425277999999992,58.626099000000067],[-78.428329000000019,58.623604000000057],[-78.427779999999984,58.611107000000061],[-78.426101999999958,58.606102000000021],[-78.347778000000005,58.536659000000043],[-78.389724999999885,58.544716000000051],[-78.549163999999905,58.603881999999999],[-78.563889000000017,58.609993000000088],[-78.568618999999956,58.614441000000056],[-78.573897999999929,58.630547000000035],[-78.574722000000008,58.635269000000108],[-78.570006999999976,58.673050000000103],[-78.563889000000017,58.676940999999999],[-78.555831999999953,58.677773000000059],[-78.543883999999991,58.678046999999992],[-78.514724999999942,58.67943600000001],[-78.469727000000034,58.695541000000105],[-78.467223999999987,58.701660000000118],[-78.48832699999997,58.786385000000053],[-78.50556899999998,58.835266000000104],[-78.511672999999917,58.839157],[-78.516402999999968,58.843323000000055],[-78.538605000000018,58.886940000000095],[-78.571395999999879,58.957214000000079],[-78.570557000000008,58.961380000000133],[-78.561935000000005,58.965828000000101],[-78.552215999999987,58.968048000000124],[-78.396392999999932,58.964714000000129],[-78.361663999999962,58.958603000000039],[-78.352492999999924,58.956657000000007],[-78.346389999999985,58.953605999999979],[-78.344451999999876,58.949432000000115],[-78.344726999999978,58.946655000000021],[-78.345276000000013,58.944710000000043],[-78.348342999999943,58.942214999999976],[-78.366394000000014,58.920273000000122],[-78.363892000000021,58.912490999999989],[-78.357773000000009,58.910270999999966],[-78.345839999999953,58.909714000000065],[-78.338333000000034,58.912766000000033],[-78.310821999999973,58.927216000000101],[-78.304717999999923,58.931106999999997],[-78.205565999999976,59.050545000000113],[-78.127486999999974,59.108330000000024],[-78.08666999999997,59.156654000000003],[-78.093886999999995,59.193047000000035],[-78.098617999999988,59.196655000000135],[-78.101943999999946,59.200828999999999],[-78.103881999999999,59.205826000000116],[-78.092772999999909,59.214995999999985],[-77.961120999999935,59.258331000000112],[-77.949721999999952,59.261939999999925],[-77.930283000000031,59.26527399999992],[-77.884445000000028,59.271935000000042],[-77.860000999999954,59.272217000000126],[-77.843613000000005,59.275551000000121],[-77.828887999999949,59.281105000000082],[-77.824448000000018,59.283606999999961],[-77.68499799999995,59.393326000000116],[-77.677215999999987,59.399994000000106],[-77.678328999999962,59.401932000000045],[-77.779175000000009,59.426102000000014],[-77.787216000000001,59.426658999999916],[-77.798049999999989,59.426384000000098],[-77.831389999999942,59.414711000000068],[-77.880279999999914,59.39916199999999],[-77.887512000000015,59.397491000000116],[-77.896956999999986,59.397217000000012],[-77.902221999999995,59.398880000000077],[-77.905838000000017,59.401100000000099],[-77.910277999999948,59.405548000000067],[-77.912506000000008,59.415267999999969],[-77.910552999999879,59.425551999999982],[-77.872771999999998,59.491935999999953],[-77.867492999999911,59.5],[-77.86111499999987,59.503883000000087],[-77.84056099999998,59.513054000000068],[-77.798889000000031,59.524993999999992],[-77.779175000000009,59.52887700000008],[-77.769454999999937,59.529160000000047],[-77.749999999999886,59.532211000000075],[-77.721389999999928,59.539719000000105],[-77.724716000000001,59.593880000000013],[-77.755004999999926,59.628326000000072],[-77.762786999999889,59.631378000000041],[-77.767501999999922,59.634994999999947],[-77.797774999999945,59.670272999999952],[-77.801102000000014,59.675270000000069],[-77.798614999999927,59.679993000000081],[-77.773894999999982,59.709717000000069],[-77.761672999999973,59.709991000000002],[-77.731948999999986,59.70777099999998],[-77.710555999999883,59.704712000000029],[-77.585228000000029,59.66921200000013],[-77.53988599999991,59.653381000000138],[-77.535392999999942,59.651379000000077],[-77.524390999999923,59.644714000000135],[-77.518889999999885,59.639381000000128],[-77.513229000000024,59.630546999999979],[-77.513725000000022,59.620215999999971],[-77.514893000000029,59.614044000000035],[-77.464721999999995,59.587212000000022],[-77.460006999999962,59.582771000000093],[-77.454177999999956,59.579162999999994],[-77.444992000000013,59.576385000000016],[-77.426940999999943,59.571381000000031],[-77.353607000000011,59.563605999999936],[-77.322509999999909,59.562767000000008],[-77.313889000000017,59.564995000000124],[-77.311935000000005,59.566939999999931],[-77.316956000000005,59.56999200000007],[-77.344161999999983,59.576942000000088],[-77.427994000000012,59.619049000000075],[-77.433334000000002,59.620543999999938],[-77.441665999999998,59.624717999999973],[-77.502335000000016,59.678215000000023],[-77.542496000000028,59.747490000000084],[-77.541945999999996,59.750274999999931],[-77.533065999999963,59.754714999999976],[-77.432769999999948,59.784163999999976],[-77.412780999999939,59.787773000000129],[-77.389449999999954,59.788886999999932],[-77.333618000000001,59.78527100000008],[-77.311660999999958,59.785552999999936],[-77.30471799999998,59.787216000000058],[-77.298889000000031,59.789719000000048],[-77.293609999999887,59.793610000000115],[-77.296111999999937,59.801933000000076],[-77.301392000000021,59.811104],[-77.363616999999863,59.890830999999991],[-77.368056999999965,59.894714000000079],[-77.378051999999968,59.901382000000069],[-77.385559000000001,59.904433999999981],[-77.427489999999977,59.914710999999954],[-77.206954999999994,60.042770000000019],[-77.070006999999919,60.064156000000082],[-76.848052999999936,60.099159000000043],[-76.775833000000034,60.131659999999954],[-76.770843999999954,60.136383000000137],[-76.758895999999993,60.159157000000107],[-76.808608999999933,60.159714000000008],[-76.828339000000028,60.157493999999986],[-76.846114999999998,60.152214000000129],[-76.852492999999981,60.148330999999985],[-76.857772999999952,60.143883000000017],[-76.860549999999932,60.137771999999984],[-76.857498000000021,60.132767000000115],[-76.854172000000005,60.121658000000025],[-76.85943599999996,60.116936000000123],[-76.866942999999992,60.113883999999985],[-76.889724999999999,60.112495000000024],[-76.924437999999896,60.111664000000019],[-76.950561999999934,60.112213000000111],[-76.962783999999999,60.113608999999997],[-77.00389100000001,60.121933000000013],[-77.031386999999881,60.129714999999976],[-77.055556999999965,60.138602999999989],[-77.074172999999973,60.142769000000044],[-77.111938000000009,60.146942000000024],[-77.173888999999974,60.150268999999923],[-77.187499999999943,60.150826000000052],[-77.199996999999939,60.150826000000052],[-77.199722000000008,60.145270999999923],[-77.194716999999969,60.129158000000075],[-77.232498000000021,60.053879000000109],[-77.272781000000009,60.039993000000095],[-77.315825999999959,60.030548000000067],[-77.519164999999987,60.044159000000036],[-77.540282999999988,60.048050000000103],[-77.557219999999973,60.052773000000059],[-77.592223999999987,60.064156000000082],[-77.600280999999939,60.108604000000128],[-77.595275999999899,60.112495000000024],[-77.581680000000006,60.118881000000101],[-77.558043999999938,60.126656000000025],[-77.549164000000019,60.129158000000075],[-77.496947999999918,60.156097000000045],[-77.470276000000013,60.213325999999995],[-77.473617999999931,60.216934000000094],[-77.602782999999931,60.329994000000056],[-77.639724999999942,60.362213000000054],[-77.647506999999905,60.365273000000116],[-77.658339999999953,60.368050000000039],[-77.683060000000012,60.367767000000072],[-77.692489999999964,60.369438000000116],[-77.708344000000011,60.375824000000023],[-77.743606999999997,60.393326000000059],[-77.747222999999963,60.396942000000138],[-77.747756999999922,60.408134000000132],[-77.740829000000019,60.423607000000004],[-77.736937999999952,60.428879000000109],[-77.71945199999999,60.447211999999979],[-77.691939999999931,60.466660000000104],[-77.567504999999926,60.529716000000008],[-77.479995999999915,60.54055000000011],[-77.430832000000009,60.540275999999949],[-77.419723999999917,60.541107000000011],[-77.413329999999974,60.544159000000093],[-77.436385999999914,60.554436000000067],[-77.464447000000007,60.561935000000062],[-77.486114999999927,60.56638300000003],[-77.521666999999979,60.570274000000097],[-77.549438000000009,60.571381000000031],[-77.573623999999938,60.570549000000085],[-77.598617999999931,60.563606000000107],[-77.631942999999978,60.551933000000076],[-77.640563999999983,60.550270000000012],[-77.65055799999999,60.548882000000049],[-77.670273000000009,60.549721000000034],[-77.680831999999953,60.552216000000044],[-77.704453000000001,60.561661000000129],[-77.787216000000001,60.59665700000005],[-77.829453000000001,60.633605999999929],[-77.833892999999932,60.639434999999992],[-77.831679999999949,60.644714000000135],[-77.821670999999867,60.651931999999931],[-77.775832999999977,60.671104000000128],[-77.722504000000015,60.69193300000012],[-77.716399999999965,60.694434999999999],[-77.610001000000011,60.755554000000075],[-77.515839000000028,60.830551000000014],[-77.512512000000015,60.833602999999925],[-77.511672999999973,60.83638000000002],[-77.53195199999999,60.835266000000047],[-77.571670999999981,60.828330999999991],[-77.708054000000004,60.795547000000113],[-77.856383999999935,60.764442000000088],[-77.920546999999999,60.791382000000112],[-77.903885000000002,60.812492000000077],[-77.889998999999989,60.818886000000134],[-77.883330999999941,60.823325999999952],[-77.887222000000008,60.825829000000113],[-77.896392999999875,60.828049000000135],[-77.909163999999976,60.82888000000014],[-77.975280999999939,60.822769000000051],[-78.078612999999905,60.806099000000131],[-78.116942999999992,60.798050000000103],[-78.125823999999966,60.795547000000113],[-78.172500999999954,60.787216000000058],[-78.17971799999998,60.786942000000124],[-78.18638599999997,60.788047999999947],[-78.190552000000025,60.788887000000102],[-78.192764000000011,60.790833000000021],[-78.171660999999915,60.854713000000061],[-78.15943900000002,60.867210000000057],[-77.954726999999991,61.000831999999946],[-77.925551999999925,61.01888300000013],[-77.889175000000023,61.038048000000117],[-77.873610999999926,61.045547000000056],[-77.858046999999942,61.051101999999958],[-77.853881999999942,61.052215999999987],[-77.846664000000033,61.052490000000091],[-77.701675000000023,61.217491000000109],[-77.724441999999954,61.254439999999988],[-77.739990000000034,61.298607000000061],[-77.746658000000025,61.337494000000106],[-77.761123999999938,61.410271000000023],[-77.678878999999995,61.461104999999975],[-77.620834000000002,61.462493999999992],[-77.56361400000003,61.466660000000047],[-77.560546999999929,61.468047999999953],[-77.542496000000028,61.479430999999977],[-77.543335000000013,61.483047000000056],[-77.548339999999939,61.486107000000118],[-77.613892000000021,61.504166000000055],[-77.596114999999941,61.555824000000143],[-77.572784000000013,61.549995000000138],[-77.517226999999934,61.539719000000048],[-77.478607000000011,61.536385000000053],[-77.475005999999951,61.539161999999976],[-77.474715999999944,61.541664000000026],[-77.480285999999921,61.548882000000049],[-77.581389999999999,61.600548000000117],[-77.589171999999962,61.604439000000013],[-77.616500999999971,61.606327000000078],[-77.627997999999991,61.605995000000121],[-77.667496000000028,61.603049999999996],[-77.690825999999959,61.602218999999991],[-77.702498999999989,61.602776000000063],[-77.710555999999883,61.60582700000009],[-77.744155999999975,61.64027400000009],[-77.816665999999998,61.684989999999914],[-77.884445000000028,61.68582200000003],[-77.898894999999925,61.686378000000047],[-77.931380999999931,61.69193300000012],[-77.975829999999974,61.702774000000034],[-77.982223999999974,61.70665699999995],[-77.992492999999968,61.714714000000129],[-78.00306699999993,61.728325000000098],[-78.006119000000012,61.733046999999999],[-78.011947999999961,61.748604000000057],[-78.074447999999904,61.917213000000004],[-78.077498999999989,61.940544000000045],[-78.081389999999999,61.951103000000103],[-78.091675000000009,61.965271000000143],[-78.110001000000011,61.984161000000086],[-78.120269999999948,61.99193600000001],[-78.137787000000003,62.009163000000001],[-78.141387999999949,62.020546000000024],[-78.143616000000009,62.03138000000007],[-78.15943900000002,62.149994000000049],[-78.161666999999966,62.169159000000036],[-78.157776000000013,62.267494000000056],[-78.15583799999996,62.278328000000101],[-78.149733999999967,62.287216000000114],[-78.103058000000033,62.337494000000049],[-78.085007000000019,62.353325000000041],[-78.023894999999982,62.393326000000059],[-78.016402999999968,62.39388300000013],[-78.008056999999894,62.390549000000135],[-77.996657999999968,62.388046000000145],[-77.983063000000016,62.388329000000113],[-77.96305799999999,62.392768999999987],[-77.711394999999925,62.468048000000124],[-77.687209999999993,62.476654000000053],[-77.555556999999965,62.536110000000008],[-77.535278000000005,62.54694400000011],[-77.508347000000015,62.561661000000072],[-77.354996000000028,62.558044000000109],[-77.073623999999938,62.534163999999976],[-76.92582699999997,62.526382000000012],[-76.756957999999997,62.506943000000092],[-76.746947999999975,62.504997000000003],[-76.655562999999972,62.469986000000063],[-76.498610999999869,62.44110100000006],[-76.401947000000007,62.427490000000091],[-76.317779999999914,62.412209000000132],[-76.143065999999919,62.379158000000018],[-75.709732000000031,62.296387000000038],[-75.719214999999963,62.242493000000024],[-75.739562999999919,62.236160000000041],[-75.819884999999999,62.205657999999971],[-75.878875999999991,62.168602000000135],[-75.891113000000018,62.161933999999974],[-75.895003999999915,62.158599999999979],[-75.890839000000028,62.156937000000084],[-75.835830999999985,62.158043000000077],[-75.826949999999954,62.158882000000062],[-75.772399999999948,62.177215999999987],[-75.770720999999924,62.180049999999994],[-75.765052999999909,62.184718999999973],[-75.760887000000025,62.187050000000113],[-75.756057999999882,62.188713000000007],[-75.705062999999996,62.203216999999995],[-75.656882999999993,62.216544999999996],[-75.579177999999899,62.242218000000037],[-75.573897999999929,62.244155999999975],[-75.556945999999925,62.252777000000037],[-75.552779999999927,62.256660000000011],[-75.550277999999935,62.260826000000066],[-75.539443999999889,62.268326000000002],[-75.493606999999997,62.293326999999977],[-75.486937999999952,62.296387000000038],[-75.478881999999999,62.298607000000061],[-75.472777999999948,62.299438000000066],[-75.402221999999938,62.306381000000044],[-75.356383999999991,62.310546999999985],[-75.321945000000028,62.311104000000057],[-75.307495000000017,62.310271999999941],[-75.184432999999956,62.292220999999984],[-75.015563999999983,62.264999000000046],[-75,62.262245000000064],[-74.938323999999909,62.250274999999988],[-74.918610000000001,62.245544000000052],[-74.89805599999994,62.240273000000002],[-74.889998999999989,62.237495000000024],[-74.882216999999912,62.233604000000128],[-74.873885999999857,62.226097000000038],[-74.767226999999878,62.161102000000085],[-74.700835999999867,62.131104000000107],[-74.693054000000018,62.127769000000058],[-74.668883999999991,62.119156000000089],[-74.620833999999888,62.107215999999994],[-74.598052999999936,62.104164000000083],[-74.571670999999981,62.10305000000011],[-74.556380999999988,62.104713000000004],[-74.553054999999972,62.106102000000021],[-74.553878999999995,62.108046999999999],[-74.558608999999876,62.111938000000066],[-74.618880999999931,62.132492000000013],[-74.662216000000001,62.146660000000054],[-74.686110999999983,62.155823000000055],[-74.700287000000003,62.16276600000009],[-74.75111400000003,62.19110100000006],[-74.758895999999993,62.199158000000068],[-74.759734999999921,62.20138500000013],[-74.759734999999921,62.20638300000013],[-74.756393000000003,62.212212000000136],[-74.725829999999917,62.244995000000131],[-74.717498999999918,62.247771999999998],[-74.700287000000003,62.250832000000059],[-74.678328999999962,62.253608999999983],[-74.645844000000011,62.253608999999983],[-74.579453000000001,62.251938000000109],[-74.525833000000034,62.246940999999993],[-74.473617999999931,62.24332400000003],[-74.461394999999982,62.243880999999931],[-74.428878999999938,62.247771999999998],[-74.410004000000015,62.251389000000131],[-74.383895999999936,62.2586060000001],[-74.141677999999956,62.326660000000004],[-73.981383999999991,62.377769000000001],[-73.97444200000001,62.386108000000036],[-73.969727000000034,62.390830999999991],[-73.94027699999998,62.412209000000132],[-73.888901000000033,62.440543999999932],[-73.83805799999999,62.457497000000046],[-73.688048999999978,62.479988000000048],[-73.678878999999995,62.479988000000048],[-73.65972899999997,62.475265999999976],[-73.648345999999947,62.468322999999998],[-73.642501999999922,62.463608000000136],[-73.502791999999999,62.386658000000068],[-73.369995000000017,62.363609000000054],[-73.227218999999877,62.318054000000075],[-73.211394999999925,62.312767000000008],[-73.206664999999987,62.308884000000035],[-73.204178000000013,62.303878999999995],[-73.202788999999996,62.298882000000106],[-73.207229999999925,62.285828000000038],[-73.210280999999952,62.281936999999971],[-73.210830999999985,62.275826000000052],[-73.209732000000031,62.270828000000051],[-73.204178000000013,62.261382999999967],[-73.191939999999875,62.253608999999983],[-73.178054999999972,62.246101000000124],[-73.131942999999978,62.225266000000033],[-73.070006999999976,62.197487000000024],[-72.899445000000014,62.138328999999999],[-72.723891999999921,62.142220000000066],[-72.626663000000008,62.115547000000049],[-72.61721799999998,62.108604000000071],[-72.596114999999884,62.049164000000019],[-72.618713000000014,61.974212999999963],[-72.619888000000003,61.970878999999968],[-72.665717999999913,61.928382999999997],[-72.689986999999917,61.891936999999984],[-72.748610999999983,61.856384000000105],[-72.724716000000001,61.845267999999976],[-72.612503000000004,61.804993000000081],[-72.602782999999931,61.804160999999965],[-72.596114999999884,61.805549999999982],[-72.591674999999952,61.809989999999971],[-72.587783999999886,61.82027400000004],[-72.622771999999941,61.861382000000106],[-72.628875999999991,61.873047000000042],[-72.609557999999993,61.88771400000013],[-72.610893000000033,61.893714999999986],[-72.611397000000011,61.900047000000086],[-72.610222000000022,61.905380000000093],[-72.607551999999998,61.910049000000015],[-72.597548999999958,61.920211999999992],[-72.593886999999995,61.92321400000003],[-72.587226999999984,61.924376999999993],[-72.581222999999966,61.923378000000127],[-72.519729999999925,61.920546999999999],[-72.448607999999979,61.901382000000012],[-72.396666999999923,61.889435000000049],[-72.386948000000018,61.887771999999984],[-72.345551,61.884437999999989],[-72.321945000000028,61.883881000000088],[-72.256957999999997,61.876938000000109],[-72.235001000000011,61.872215000000097],[-72.205840999999964,61.86332700000014],[-72.200835999999924,61.860275000000001],[-72.041381999999999,61.722488000000112],[-72.01005600000002,61.675270000000012],[-72.038054999999986,61.624709999999993],[-72.080565999999976,61.601936000000023],[-72.087783999999999,61.598877000000073],[-72.095839999999953,61.596099999999979],[-72.113892000000021,61.595543000000077],[-72.12388599999997,61.596382000000006],[-72.160004000000015,61.605270000000019],[-72.194153000000028,61.615829000000076],[-72.227492999999981,61.619987000000037],[-72.236663999999962,61.619438000000059],[-72.254456000000005,61.615546999999992],[-72.271118000000001,61.609161000000086],[-72.303328999999906,61.570830999999998],[-72.303878999999938,61.568885999999964],[-72.303328999999906,61.56721500000009],[-72.083618000000001,61.582496999999933],[-72.057220000000029,61.586655000000064],[-71.980285999999978,61.599998000000085],[-71.978333000000021,61.601387000000102],[-71.967772999999966,61.609436000000073],[-71.940825999999959,61.648331000000042],[-71.936660999999958,61.65554800000001],[-71.933608999999933,61.663605000000132],[-71.933060000000012,61.668602000000078],[-71.933884000000035,61.674164000000019],[-71.936660999999958,61.677773000000002],[-71.941375999999991,61.681106999999997],[-71.946884000000011,61.688380999999993],[-71.950385999999867,61.688713000000121],[-71.953888000000006,61.690716000000123],[-71.956557999999916,61.693047000000092],[-71.956885999999884,61.694213999999988],[-71.956054999999935,61.698883000000137],[-71.950546000000031,61.701218000000097],[-71.948883000000023,61.701549999999997],[-71.945221000000004,61.701714000000095],[-71.928878999999995,61.705826000000116],[-71.819457999999941,61.688599000000124],[-71.795273000000009,61.682213000000047],[-71.644729999999925,61.639435000000105],[-71.575011999999901,61.608604000000014],[-71.571670999999867,61.605552999999986],[-71.545546999999999,61.571938000000102],[-71.546111999999937,61.566940000000102],[-71.549437999999896,61.558884000000035],[-71.560271999999941,61.557212999999933],[-71.629714999999976,61.548607000000061],[-71.635009999999966,61.545830000000137],[-71.652221999999995,61.543053000000043],[-71.663054999999929,61.54193900000007],[-71.751113999999973,61.538048000000003],[-71.789444000000003,61.521934999999928],[-71.746384000000035,61.47137500000008],[-71.746947999999975,61.465827999999988],[-71.802779999999984,61.446938000000046],[-71.817504999999983,61.442764000000011],[-71.875548999999921,61.436103999999943],[-71.885558999999944,61.432769999999948],[-71.887787000000003,61.430824000000086],[-71.887511999999958,61.428046999999992],[-71.879439999999988,61.422492999999974],[-71.873046999999929,61.419716000000108],[-71.853333000000021,61.414436000000023],[-71.700561999999991,61.405823000000055],[-71.684722999999963,61.404990999999939],[-71.676101999999958,61.37221500000004],[-71.67193599999996,61.330551000000128],[-71.598891999999978,61.254166000000055],[-71.53083799999996,61.213608000000022],[-71.389998999999989,61.137772000000098],[-71.295836999999892,61.148605000000089],[-71.286666999999909,61.149719000000061],[-71.279175000000009,61.151100000000099],[-71.174712999999997,61.13999200000012],[-71.011397999999986,61.121657999999968],[-70.966948999999943,61.113883999999985],[-70.945830999999941,61.108887000000095],[-70.928329000000019,61.102493000000038],[-70.921936000000017,61.09693900000002],[-70.921386999999982,61.09137700000008],[-70.773330999999985,61.08166499999993],[-70.656386999999995,61.050545000000056],[-70.553054999999972,61.024994000000049],[-70.539718999999991,61.055824000000086],[-70.535278000000005,61.05943300000007],[-70.419998000000021,61.08526599999999],[-70.41361999999998,61.086655000000007],[-70.315551999999911,61.094994000000042],[-70.165008999999998,61.088043000000084],[-70.146117999999888,61.084717000000069],[-70.141387999999949,61.08277099999998],[-70.107223999999917,61.064438000000109],[-70.085830999999985,60.954993999999999],[-70.088057999999876,60.89777400000014],[-69.927490000000034,60.807770000000005],[-69.914444000000003,60.80860100000001],[-69.901107999999965,60.81221000000005],[-69.888061999999934,60.819160000000068],[-69.856383999999991,60.838326000000109],[-69.850554999999986,60.841934000000037],[-69.84973100000002,60.846656999999993],[-69.851395000000025,60.849716000000001],[-69.858886999999982,60.851936000000023],[-69.869445999999925,60.850829999999974],[-69.883620999999948,60.845268000000033],[-69.894729999999925,60.855552999999929],[-69.833327999999995,60.889992000000007],[-69.826110999999969,60.893326000000002],[-69.778885000000002,60.91137700000013],[-69.756957999999941,60.918884000000105],[-69.750838999999928,60.919715999999994],[-69.741104000000007,60.9180530000001],[-69.738051999999925,60.915543000000071],[-69.743332000000009,60.906936999999971],[-69.75140399999998,60.898879999999963],[-69.750564999999995,60.894440000000145],[-69.74610899999999,60.884720000000073],[-69.740554999999972,60.881377999999927],[-69.71055599999994,60.873878000000047],[-69.688599000000011,60.871658000000025],[-69.677215999999987,60.871101000000124],[-69.658614999999998,60.876938000000109],[-69.649993999999879,60.8836060000001],[-69.645843999999954,60.893051000000128],[-69.643889999999942,60.903320000000008],[-69.649169999999913,60.913879000000065],[-69.655563000000029,60.9222180000001],[-69.671660999999915,60.934433000000013],[-69.680831999999953,60.943047000000035],[-69.688599000000011,60.951660000000004],[-69.689437999999882,60.956100000000049],[-69.689712999999983,60.96166199999999],[-69.680557000000022,61.014159999999947],[-69.679442999999935,61.019440000000031],[-69.676665999999955,61.025551000000121],[-69.656661999999926,61.053604000000064],[-69.653884999999946,61.056938000000059],[-69.613051999999925,61.079163000000051],[-69.599990999999989,61.081940000000145],[-69.554168999999945,61.080550999999957],[-69.528609999999958,61.076385000000073],[-69.519729999999925,61.073326000000122],[-69.514450000000011,61.069442999999978],[-69.511397999999929,61.06610100000006],[-69.508347000000015,61.060822000000087],[-69.492767000000015,61.031937000000028],[-69.468886999999995,60.994995000000017],[-69.465285999999935,60.990273000000116],[-69.453613000000018,60.974991000000045],[-69.368057000000022,60.903046000000074],[-69.368606999999997,60.811104],[-69.371933000000013,60.80443600000001],[-69.380554000000018,60.794716000000108],[-69.386672999999973,60.790550000000053],[-69.404448999999943,60.783332999999914],[-69.421386999999925,60.778046000000018],[-69.438598999999954,60.774994000000049],[-69.496657999999968,60.764442000000088],[-69.533065999999963,60.757217000000026],[-69.591675000000009,60.739158999999972],[-69.615829000000019,60.730270000000075],[-69.708618000000001,60.686935000000119],[-69.716109999999958,60.682770000000119],[-69.71055599999994,60.675270000000069],[-69.705001999999979,60.671936000000073],[-69.695830999999998,60.663879000000065],[-69.656386999999995,60.595543000000077],[-69.654174999999952,60.584991000000116],[-69.654174999999952,60.581383000000017],[-69.656951999999933,60.574715000000026],[-69.6875,60.551383999999985],[-69.693603999999937,60.54694400000011],[-69.702224999999885,60.544440999999949],[-69.748610999999983,60.539719000000048],[-69.797774999999945,60.53443900000002],[-69.813888999999904,60.530548000000124],[-69.822234999999978,60.52777100000003],[-69.826110999999969,60.525551000000007],[-69.824448000000018,60.522490999999945],[-69.787506000000008,60.480545000000006],[-69.78443900000002,60.478043000000071],[-69.778335999999967,60.475266000000033],[-69.762222000000008,60.470268000000033],[-69.74888599999997,60.461662000000103],[-69.721664000000033,60.368881000000044],[-69.722504000000015,60.364158999999972],[-69.727782999999988,60.35193600000008],[-69.744445999999982,60.340546000000018],[-69.751953000000015,60.336380000000133],[-69.756667999999934,60.331940000000145],[-69.764724999999999,60.323607999999979],[-69.766952999999944,60.318328999999949],[-69.768065999999862,60.312210000000107],[-69.764724999999999,60.307495000000074],[-69.758895999999993,60.304710000000057],[-69.696380999999974,60.278877000000136],[-69.606383999999991,60.232765000000029],[-69.605269999999905,60.2227630000001],[-69.605835000000013,60.218596999999988],[-69.610001000000011,60.208327999999995],[-69.614166000000012,60.202492000000063],[-69.636977999999999,60.179047000000025],[-69.601943999999946,60.183052000000089],[-69.594161999999983,60.180824000000143],[-69.593886999999995,60.175827000000027],[-69.603606999999954,60.10305000000011],[-69.624709999999993,60.067497000000117],[-69.636948000000018,60.065268999999944],[-69.706664999999987,60.057495000000131],[-69.837218999999948,60.019713999999965],[-69.892226999999934,59.99971800000003],[-70.217223999999931,60.007216999999969],[-70.296393999999907,60.011196000000041],[-70.336120999999935,60.004440000000102],[-70.488051999999868,59.993607000000111],[-70.505004999999926,59.992493000000138],[-70.53472899999997,59.991936000000067],[-70.556945999999925,59.992767000000072],[-70.579726999999934,59.994712999999933],[-70.593062999999972,59.996658000000139],[-70.770844000000011,60.028046000000131],[-70.945830999999941,60.063048999999978],[-70.900283999999999,60.040276000000063],[-70.631103999999993,59.985824999999977],[-70.610549999999932,59.980820000000108],[-70.585007000000019,59.971931000000041],[-70.566955999999948,59.968597000000045],[-70.507232999999985,59.96665999999999],[-70.475829999999974,59.968323000000112],[-70.33805799999999,59.976379000000009],[-70.236938000000009,59.986938000000066],[-70.227218999999934,59.986655999999982],[-70.218613000000005,59.984160999999972],[-70.197495000000004,59.974158999999986],[-70.164718999999991,59.962494000000106],[-70.112503000000004,59.949715000000026],[-70.086120999999991,59.946381000000088],[-70.06138599999997,59.94499200000007],[-70.049987999999871,59.945267000000058],[-70.030837999999903,59.948043999999982],[-69.947768999999994,59.958885000000123],[-69.758895999999993,59.96776600000004],[-69.726944000000003,59.963608000000079],[-69.718886999999938,59.959717000000012],[-69.600554999999872,59.833054000000004],[-69.605559999999912,59.777214000000129],[-69.610001000000011,59.728600000000142],[-69.540833000000021,59.671104000000014],[-69.604995999999971,59.588325999999995],[-69.61332699999997,59.588325999999995],[-69.62777699999998,59.583878000000027],[-69.658889999999985,59.572495000000004],[-69.679442999999935,59.563605999999936],[-69.698043999999982,59.553047000000106],[-69.718613000000005,59.537773000000016],[-69.729720999999927,59.52777100000003],[-69.748336999999935,59.50999500000006],[-69.759445000000028,59.493880999999988],[-69.761123999999938,59.484161000000086],[-69.759445000000028,59.481102000000078],[-69.756393000000003,59.478600000000029],[-69.728333000000021,59.479713000000118],[-69.703888000000006,59.481934000000024],[-69.698607999999922,59.481377000000123],[-69.697495000000004,59.480545000000006],[-69.669448999999929,59.455551000000014],[-69.665832999999964,59.451659999999947],[-69.649445000000014,59.428879000000109],[-69.645279000000016,59.419159000000036],[-69.631667999999877,59.377769000000058],[-69.631377999999927,59.374992000000134],[-69.639998999999875,59.361107000000061],[-69.646392999999989,59.358887000000038],[-69.677779999999927,59.356941000000006],[-69.736664000000019,59.345267999999976],[-69.744155999999975,59.343322999999998],[-69.75778200000002,59.330826000000002],[-69.758347000000015,59.320273999999984],[-69.75111400000003,59.311104000000114],[-69.746947999999861,59.307770000000119],[-69.738601999999958,59.305266999999958],[-69.645003999999915,59.29833200000013],[-69.631103999999993,59.298881999999992],[-69.626663000000008,59.29972100000009],[-69.616393999999957,59.304436000000123],[-69.550277999999992,59.329720000000123],[-69.445830999999998,59.35443900000007],[-69.43582200000003,59.3555530000001],[-69.412506000000008,59.354995999999971],[-69.259445000000028,59.326660000000061],[-69.249724999999955,59.323607999999979],[-69.238327000000027,59.259720000000129],[-69.235001000000011,59.23943300000002],[-69.234725999999966,59.233879000000059],[-69.238051999999925,59.229431000000091],[-69.244445999999982,59.224433999999974],[-69.285827999999924,59.208327999999995],[-69.366394000000014,59.190826000000129],[-69.37388599999997,59.189430000000073],[-69.404998999999975,59.190269000000058],[-69.419158999999979,59.192490000000134],[-69.420272999999952,59.196098000000063],[-69.417496000000028,59.202217000000076],[-69.414443999999946,59.212494000000049],[-69.416655999999989,59.219711000000018],[-69.420837000000006,59.223045000000013],[-69.429717999999923,59.224709000000018],[-69.439437999999996,59.224433999999974],[-69.448607999999979,59.2227630000001],[-69.470276000000013,59.213882000000012],[-69.512222000000008,59.192764000000068],[-69.530562999999972,59.18221299999999],[-69.537505999999894,59.172493000000088],[-69.540282999999988,59.166381999999999],[-69.541107000000011,59.161659000000043],[-69.537215999999944,59.123047000000042],[-69.533065999999963,59.110825000000034],[-69.527785999999992,59.106658999999979],[-69.52055399999989,59.104439000000127],[-69.511397999999929,59.103324999999984],[-69.505568999999923,59.104163999999969],[-69.49499499999996,59.109993000000145],[-69.484436000000017,59.121375999999998],[-69.474716000000001,59.128043999999932],[-69.46305799999999,59.12943300000012],[-69.453887999999949,59.128326000000015],[-69.384170999999981,59.118880999999931],[-69.367492999999911,59.116386000000091],[-69.359725999999966,59.112770000000069],[-69.349166999999909,59.104996000000028],[-69.345276000000013,59.095543000000021],[-69.344161999999983,59.091103000000032],[-69.352782999999988,59.080826000000059],[-69.431945999999982,59.025269000000094],[-69.466110000000015,59.044159000000036],[-69.493331999999953,59.037498000000085],[-69.475280999999939,58.971931000000041],[-69.457503999999915,58.915824999999984],[-69.454726999999991,58.90638000000007],[-69.453887999999949,58.895828000000108],[-69.454177999999956,58.892220000000009],[-69.456389999999999,58.884163000000001],[-69.460006999999962,58.878876000000105],[-69.547500999999897,58.808043999999995],[-69.557495000000017,58.80360399999995],[-69.587783999999942,58.796660999999972],[-69.611114999999984,58.792220999999984],[-69.656386999999995,58.787773000000016],[-69.670836999999949,58.792220999999984],[-69.680831999999953,58.800269999999955],[-69.711944999999957,58.848877000000073],[-69.714721999999938,58.85833000000008],[-69.716109999999958,58.864715999999987],[-69.702788999999996,58.876381000000094],[-69.672226000000023,58.89138000000014],[-69.668610000000001,58.899437000000091],[-69.668334999999956,58.902771000000087],[-69.668334999999956,58.92582700000014],[-69.671660999999915,58.930550000000096],[-69.709441999999967,58.972762999999986],[-69.848342999999943,59.047217999999987],[-69.865279999999927,59.052773000000059],[-69.869155999999919,59.053046999999992],[-69.872771999999998,59.050827000000027],[-69.87388599999997,59.041107000000125],[-69.874160999999958,59.034163999999919],[-69.87388599999997,59.02915999999999],[-69.865554999999972,58.977768000000026],[-69.832779000000016,58.951660000000061],[-69.815826000000015,58.82388300000008],[-69.972777999999892,58.808601000000067],[-70.153610000000015,58.777488999999946],[-70.158889999999985,58.761107999999979],[-70.049728000000016,58.743606999999997],[-69.974716000000001,58.755554000000132],[-69.931106999999997,58.733047000000056],[-69.910552999999936,58.68804200000011],[-69.864440999999999,58.617493000000138],[-69.861663999999962,58.614998000000128],[-69.818892999999946,58.588599999999985],[-69.813048999999921,58.589157000000057],[-69.799437999999952,58.59887700000013],[-69.793335000000013,58.603881999999999],[-69.724441999999954,58.668883999999991],[-69.625,58.743881000000101],[-69.608046999999999,58.754714999999976],[-69.581680000000006,58.765831000000105],[-69.570847000000015,58.769440000000145],[-69.544723999999974,58.773323000000062],[-69.507507000000032,58.774712000000079],[-69.498885999999857,58.778602999999919],[-69.445540999999878,58.808327000000133],[-69.418883999999878,58.825553999999954],[-69.411666999999966,58.830276000000026],[-69.410277999999948,58.83998900000006],[-69.405838000000017,58.850273000000129],[-69.394729999999925,58.856659000000036],[-69.381942999999922,58.861381999999992],[-69.348891999999978,58.871658000000082],[-69.279175000000009,58.888046000000145],[-69.153884999999946,58.899993999999992],[-69.129989999999964,58.901657000000114],[-69.098343,58.899162000000103],[-69.031676999999888,58.893326000000002],[-68.99221799999998,58.883880999999974],[-68.841675000000009,58.891106000000036],[-68.756957999999997,58.912490999999989],[-68.656386999999938,58.900269000000037],[-68.637512000000015,58.896659999999997],[-68.601668999999958,58.885826000000122],[-68.396392999999989,58.816101000000117],[-68.390686000000017,58.811707000000013],[-68.360549999999932,58.781936999999914],[-68.355835000000013,58.774437000000034],[-68.357772999999952,58.764717000000132],[-68.360275000000001,58.759437999999989],[-68.366393999999957,58.687492000000077],[-68.34584000000001,58.626937999999996],[-68.323059000000001,58.58526599999999],[-68.290832999999907,58.541107000000011],[-68.216659999999933,58.490829000000076],[-68.209732000000031,58.462494000000049],[-68.204726999999991,58.453323000000069],[-68.203063999999983,58.441658000000018],[-68.204178000000013,58.436935000000062],[-68.226943999999946,58.376380999999981],[-68.244720000000029,58.33776899999998],[-68.256667999999991,58.323607999999979],[-68.285827999999924,58.294998000000135],[-68.289992999999924,58.28916200000009],[-68.309157999999911,58.253326000000072],[-68.322509999999966,58.22693600000008],[-68.34584000000001,58.169991000000039],[-68.348052999999936,58.159714000000065],[-68.347777999999948,58.15387700000008],[-68.344161999999983,58.141663000000051],[-68.341385000000002,58.133331000000055],[-68.344161999999983,58.127487000000087],[-68.350554999999929,58.12193300000007],[-68.46665999999999,58.045546999999942],[-68.477218999999934,58.039992999999981],[-68.503615999999909,58.031380000000013],[-68.528609999999958,58.029434000000094],[-68.729889000000014,57.99971800000003],[-68.874161000000015,57.969154000000003],[-69.127212999999983,57.899436999999921],[-69.135009999999909,57.896942000000081],[-69.181380999999988,57.878044000000045],[-69.202498999999989,57.868599000000131],[-69.221389999999928,57.858886999999982],[-69.262511999999958,57.833603000000039],[-69.357773000000009,57.774162000000047],[-69.369048999999961,57.765251000000092],[-69.363892000000021,57.765830999999935],[-69.339721999999938,57.773323000000062],[-69.304992999999968,57.786659000000043],[-69.298339999999996,57.789436000000137],[-69.210280999999952,57.829437000000098],[-69.190825999999959,57.840546000000018],[-69.172775000000001,57.851661999999976],[-69.111937999999896,57.885825999999952],[-68.965285999999878,57.933875999999998],[-68.904175000000009,57.949715000000083],[-68.695723999999984,57.987713000000099],[-68.678894000000014,57.989716000000101],[-68.667388999999957,57.990383000000008],[-68.634720000000016,57.988879999999995],[-68.62239099999988,57.989379999999983],[-68.545272999999952,58.000549000000035],[-68.495833999999945,58.013328999999999],[-68.416945999999939,58.034439000000134],[-68.404175000000009,58.039719000000048],[-68.31361400000003,58.103049999999996],[-68.308883999999978,58.108047000000113],[-68.304992999999911,58.113884000000041],[-68.302490000000034,58.119155999999975],[-68.299987999999928,58.127487000000087],[-68.300277999999878,58.132492000000127],[-68.30471799999998,58.146384999999952],[-68.305557000000022,58.149993999999992],[-68.307220000000029,58.164436000000137],[-68.306106999999997,58.181106999999997],[-68.305267000000015,58.186104000000057],[-68.301102000000014,58.198043999999982],[-68.295273000000009,58.209991000000116],[-68.284164000000033,58.219986000000063],[-68.230835000000013,58.26888300000013],[-68.18582200000003,58.360549999999989],[-68.168335000000013,58.414711000000125],[-68.166655999999989,58.424438000000066],[-68.166945999999996,58.435822000000144],[-68.169998000000021,58.446655000000135],[-68.172775000000001,58.454993999999999],[-68.178054999999972,58.469711000000132],[-68.178329000000019,58.480270000000019],[-68.171386999999925,58.489990000000091],[-68.139175000000023,58.521103000000096],[-68.135009999999852,58.524162000000047],[-68.013061999999991,58.573607999999922],[-68.003341999999975,58.576385000000016],[-67.983321999999987,58.573051000000021],[-67.969161999999983,58.565826000000015],[-67.959166999999979,58.558044000000052],[-67.896118000000001,58.500548999999978],[-67.893889999999999,58.496658000000082],[-67.892226999999991,58.491379000000109],[-67.891953000000001,58.483604000000014],[-67.895003999999915,58.476936000000023],[-67.901108000000022,58.467209000000082],[-67.908051,58.458046000000081],[-67.914444000000003,58.453323000000069],[-67.919448999999929,58.445540999999935],[-67.920837000000006,58.439430000000073],[-67.924163999999962,58.41276600000009],[-67.92332499999992,58.403046000000018],[-67.908339999999953,58.360825000000034],[-67.906113000000005,58.356941000000006],[-67.903610000000015,58.353607000000011],[-67.893340999999964,58.346656999999993],[-67.868056999999965,58.332214000000079],[-67.864166000000012,58.328880000000083],[-67.857498000000021,58.320273999999984],[-67.894500999999934,58.287163000000078],[-67.896659999999883,58.281158000000062],[-67.90449499999994,58.26766200000003],[-67.913329999999917,58.25616100000002],[-67.919341999999972,58.250159999999994],[-67.926330999999948,58.245491000000015],[-67.934829999999977,58.241161000000034],[-67.946999000000005,58.235992000000124],[-67.974990999999989,58.220993000000021],[-68.047501000000011,58.170547000000056],[-68.065826000000015,58.159431000000097],[-68.095839999999953,58.138602999999989],[-68.101105000000018,58.133049000000028],[-68.127486999999917,58.084717000000126],[-68.129989999999964,58.07888000000014],[-68.128325999999959,58.073608000000036],[-68.125548999999978,58.071105999999986],[-68.115828999999962,58.071938000000046],[-68.101105000000018,58.077773999999977],[-68.006667999999934,58.131935000000055],[-67.991668999999945,58.146103000000096],[-67.978333000000021,58.163605000000132],[-67.876944999999978,58.243050000000039],[-67.801392000000021,58.296661000000086],[-67.815551999999968,58.308883999999978],[-67.823897999999872,58.317215000000033],[-67.829178000000013,58.326385000000073],[-67.830565999999919,58.331383000000073],[-67.828888000000006,58.349716000000114],[-67.819732999999871,58.393608000000029],[-67.817229999999995,58.40526600000004],[-67.813323999999909,58.416100000000085],[-67.787505999999951,58.464439000000027],[-67.783066000000019,58.468048000000067],[-67.775008999999898,58.471099999999979],[-67.764450000000011,58.470543000000077],[-67.723891999999978,58.458885000000066],[-67.669448999999986,58.431938000000116],[-67.667496000000028,58.427489999999977],[-67.669998000000021,58.42193599999996],[-67.679992999999968,58.41276600000009],[-67.691939999999988,58.404433999999924],[-67.696945000000028,58.399437000000034],[-67.704726999999991,58.389160000000061],[-67.737212999999997,58.326942000000145],[-67.738892000000021,58.320831000000112],[-67.737212999999997,58.315543999999989],[-67.732497999999964,58.311661000000015],[-67.698043999999925,58.284995999999978],[-67.660827999999981,58.264442000000031],[-67.646117999999944,58.253326000000072],[-67.642775999999913,58.248604],[-67.652495999999985,58.214714000000129],[-67.654175000000009,58.210548000000017],[-67.728607000000011,57.976654000000053],[-67.713897999999858,57.923050000000046],[-67.710281000000009,57.97554800000006],[-67.708343999999954,57.982491000000039],[-67.659438999999963,58.110275000000058],[-67.653609999999958,58.122765000000015],[-67.64527899999996,58.134437999999989],[-67.591949,58.200828999999999],[-67.578339000000028,58.21527100000003],[-67.566100999999946,58.223602000000085],[-67.481383999999935,58.273880000000077],[-67.46665999999999,58.279716000000121],[-67.332779000000016,58.31610100000006],[-67.17222599999991,58.376380999999981],[-67.168609999999944,58.378044000000102],[-67.15194699999995,58.376656000000025],[-67.137512000000015,58.373046999999985],[-67.116652999999985,58.363327000000083],[-67.106948999999986,58.3555530000001],[-67.095550999999944,58.348877000000016],[-67.09056099999998,58.35054800000006],[-66.995834000000002,58.439430000000073],[-66.991669000000002,58.445267000000001],[-66.989989999999977,58.45138500000013],[-66.986664000000019,58.458046000000081],[-66.978881999999999,58.468323000000055],[-66.951401000000033,58.498603999999943],[-66.944153000000028,58.501937999999939],[-66.928054999999972,58.501663000000121],[-66.887221999999952,58.485550000000103],[-66.876937999999939,58.479156000000046],[-66.875548999999864,58.473877000000073],[-66.878052000000025,58.468596999999988],[-66.801101999999958,58.473602000000028],[-66.629714999999976,58.50360900000004],[-66.651671999999962,58.542770000000132],[-66.551940999999999,58.71138000000002],[-66.469727000000034,58.81638300000003],[-66.465012000000002,58.819992000000013],[-66.388610999999969,58.850548000000117],[-66.366652999999928,58.848044999999956],[-66.357773000000009,58.846099999999979],[-66.349990999999932,58.843048000000067],[-66.350280999999939,58.837212000000022],[-66.348891999999978,58.831940000000088],[-66.344161999999926,58.827773999999977],[-66.11471599999993,58.699714999999969],[-66.106110000000001,58.684989999999971],[-66.077224999999999,58.654434000000094],[-66.072234999999921,58.650825999999995],[-66.067779999999914,58.648880000000077],[-66.054168999999945,58.646102999999982],[-65.945540999999935,58.616936000000067],[-65.938888999999961,58.613883999999928],[-65.93582200000003,58.609718000000044],[-65.93582200000003,58.604713000000004],[-65.938598999999954,58.594437000000084],[-65.941939999999988,58.582770999999923],[-66.021941999999967,58.486938000000009],[-66.08944699999995,58.365273000000002],[-66.091385000000002,58.358887000000095],[-66.091385000000002,58.354164000000083],[-66.073059000000001,58.327217000000019],[-66.065552000000025,58.320273999999984],[-66.058883999999978,58.320273999999984],[-66.052779999999927,58.34693900000002],[-66.051392000000021,58.352493000000038],[-66.045546999999942,58.363052000000096],[-66.041671999999949,58.368050000000096],[-66.030562999999972,58.376380999999981],[-66.02305599999994,58.379714999999976],[-66.015014999999948,58.381934999999999],[-65.988051999999982,58.384437999999989],[-65.979172000000005,58.386107999999922],[-65.972777999999948,58.388046000000088],[-65.965012000000002,58.391936999999928],[-65.960280999999895,58.396103000000039],[-65.920272999999952,58.44582400000013],[-65.920837000000006,58.449432000000002],[-65.926666000000012,58.456099999999992],[-65.932219999999973,58.458885000000066],[-65.94027699999998,58.461661999999933],[-65.96166999999997,58.464714000000072],[-65.980559999999912,58.470268000000033],[-65.982497999999964,58.4741590000001],[-65.981948999999929,58.480545000000006],[-65.980559999999912,58.483047000000113],[-65.887512000000015,58.577774000000034],[-65.884170999999981,58.580826000000116],[-65.876937999999882,58.581940000000088],[-65.879989999999964,58.62721300000004],[-65.945540999999935,58.665267999999969],[-66.032226999999978,58.710548000000074],[-66.101394999999968,58.771103000000039],[-66.103881999999999,58.773604999999918],[-66.081954999999994,58.80971500000004],[-66.037215999999944,58.85166200000009],[-65.990111999999954,58.852661000000012],[-65.984954999999957,58.851494000000059],[-65.952277999999865,58.836822999999981],[-65.845839999999953,58.826660000000004],[-65.839721999999995,58.827217000000076],[-65.797501000000011,58.847488000000055],[-65.792770000000019,58.853325000000041],[-65.790282999999988,58.857773000000009],[-65.789443999999946,58.861938000000009],[-65.791381999999999,58.865829000000076],[-65.794998000000021,58.86693600000001],[-65.80610699999994,58.866660999999965],[-65.833327999999995,58.864715999999987],[-65.861938000000009,58.863327000000027],[-65.880279999999914,58.864440999999999],[-65.940445000000011,58.879105000000038],[-65.952606000000003,58.88126799999992],[-65.958115000000021,58.882935000000032],[-65.964775000000031,58.887440000000083],[-65.968276999999887,58.893440000000055],[-65.988602000000014,58.903603000000032],[-65.885559000000001,59.001938000000052],[-65.777495999999985,59.029990999999995],[-65.695266999999888,59.043610000000058],[-65.673049999999989,59.046104000000014],[-65.660278000000005,59.044159000000036],[-65.654174999999952,59.042496000000085],[-65.634673999999904,59.033217999999977],[-65.632492000000013,59.031216000000086],[-65.614166000000012,59.019440000000088],[-65.565001999999936,58.993607000000111],[-65.514450000000011,58.984718000000044],[-65.5,58.983330000000137],[-65.49499499999996,58.984718000000044],[-65.493332000000009,58.987495000000138],[-65.49499499999996,58.991936000000067],[-65.509444999999971,59.008330999999998],[-65.516402999999968,59.010826000000009],[-65.533614999999998,59.014717000000076],[-65.543059999999969,59.015549000000021],[-65.553054999999972,59.017493999999999],[-65.56082200000003,59.020827999999995],[-65.571388000000013,59.039108000000112],[-65.572891000000027,59.044106000000113],[-65.570221000000004,59.045772999999997],[-65.568054000000018,59.046776000000023],[-65.532776000000013,59.063881000000094],[-65.518616000000009,59.066666000000112],[-65.510284000000013,59.066940000000045],[-65.506392999999946,59.066382999999973],[-65.492492999999968,59.061378000000104],[-65.454726999999991,59.042221000000097],[-65.340285999999992,59.03833000000003],[-65.330565999999976,59.038048000000117],[-65.324721999999952,59.038887000000102],[-65.317504999999983,59.041382000000112],[-65.319732999999985,59.047217999999987],[-65.333618000000001,59.059990000000028],[-65.344726999999978,59.064712999999983],[-65.354171999999949,59.067497000000117],[-65.533553999999924,59.077663000000143],[-65.53687999999994,59.074665000000095],[-65.546721999999988,59.071831000000088],[-65.564383999999961,59.070163999999977],[-65.577056999999968,59.069996000000117],[-65.58406100000002,59.070999000000143],[-65.586563000000012,59.072159000000056],[-65.651947000000007,59.079163000000108],[-65.715011999999945,59.148331000000042],[-65.718062999999972,59.153046000000074],[-65.740829000000019,59.214714000000072],[-65.742492999999911,59.219437000000084],[-65.743056999999965,59.228043000000014],[-65.744995000000017,59.259720000000129],[-65.744719999999973,59.263054000000125],[-65.743056999999965,59.265830999999991],[-65.731948999999986,59.269066000000009],[-65.706664999999987,59.268326000000059],[-65.685271999999884,59.264442000000031],[-65.676102000000014,59.261108000000036],[-65.646118000000001,59.244713000000104],[-65.587509000000011,59.20249200000012],[-65.612503000000004,59.237495000000081],[-65.614715999999873,59.243607000000054],[-65.614166000000012,59.246941000000049],[-65.581680000000006,59.37721300000004],[-65.572509999999966,59.378601000000003],[-65.570006999999976,59.378326000000129],[-65.551940999999999,59.372765000000072],[-65.499160999999958,59.352219000000105],[-65.48332199999993,59.345542999999964],[-65.476105000000018,59.338882000000069],[-65.471114999999941,59.327492000000007],[-65.453338999999971,59.316939999999988],[-65.383895999999993,59.281661999999983],[-65.372771999999998,59.276657000000114],[-65.366652999999872,59.274993999999992],[-65.36111499999987,59.274712000000136],[-65.357223999999974,59.277214000000015],[-65.356658999999922,59.282768000000033],[-65.437774999999988,59.393883000000017],[-65.495269999999891,59.433876000000055],[-65.559433000000013,59.481658999999979],[-65.56138599999997,59.486107000000118],[-65.557495000000017,59.487770000000069],[-65.549438000000009,59.48943300000002],[-65.542220999999984,59.489990000000091],[-65.360000999999954,59.481658999999979],[-65.347778000000005,59.480820000000051],[-65.260559000000001,59.466385000000116],[-65.19766199999998,59.450493000000051],[-65.195830999999998,59.447659000000044],[-65.176940999999999,59.440269000000001],[-65.170273000000009,59.434433000000126],[-65.141953000000001,59.415825000000041],[-65.126663000000008,59.40776800000009],[-65.119995000000017,59.40526600000004],[-65.060271999999998,59.384438000000102],[-65.041381999999942,59.378601000000003],[-65.017775999999969,59.373046999999985],[-65.005844000000025,59.371933000000013],[-64.995543999999995,59.372490000000084],[-64.98332199999993,59.376380999999981],[-65.031386999999938,59.392769000000044],[-65.075835999999981,59.408043000000077],[-65.111114999999984,59.420546999999942],[-65.118880999999988,59.423882000000049],[-65.141113000000018,59.434433000000126],[-65.147231999999974,59.43804200000011],[-65.151397999999972,59.443046999999979],[-65.156386999999938,59.451659999999947],[-65.158996999999886,59.460827000000108],[-65.16194200000001,59.466660000000104],[-65.168059999999969,59.470543000000021],[-65.22084000000001,59.48832700000014],[-65.290832999999964,59.506660000000011],[-65.308608999999933,59.50999500000006],[-65.330001999999865,59.509437999999989],[-65.388901000000033,59.50750000000005],[-65.411666999999966,59.509437999999989],[-65.419998000000021,59.516936999999984],[-65.462783999999886,59.578049000000021],[-65.494155999999975,59.626937999999996],[-65.501677999999913,59.63888500000013],[-65.527785999999992,59.716933999999981],[-65.501952999999958,59.747215000000097],[-65.433318999999983,59.798049999999932],[-65.374999999999943,59.828049000000135],[-65.33555599999994,59.84665700000005],[-65.333892999999932,59.847214000000122],[-65.323623999999995,59.845543000000077],[-65.236114999999984,59.819381999999962],[-65.21945199999999,59.814377000000093],[-65.205947999999978,59.808548000000087],[-65.203444999999931,59.806881000000033],[-65.198775999999953,59.802879000000019],[-65.195281999999963,59.797218000000044],[-65.158614999999998,59.782211000000018],[-65.152785999999992,59.779990999999995],[-65.136123999999995,59.776657],[-65.053054999999972,59.763611000000083],[-65.033065999999963,59.761383000000137],[-65.006667999999991,59.760277000000087],[-64.988602000000014,59.761940000000038],[-64.983886999999982,59.762771999999927],[-64.983063000000016,59.764160000000061],[-64.989165999999955,59.765831000000105],[-65.055556999999965,59.778328000000101],[-65.132766999999944,59.79694400000011],[-65.161391999999978,59.817490000000134],[-65.199393999999927,59.835659000000078],[-65.202713000000017,59.837326000000019],[-65.206054999999992,59.840492000000097],[-65.230835000000013,59.880546999999979],[-65.231948999999986,59.885826000000122],[-65.226104999999961,59.888603000000046],[-65.206389999999999,59.888603000000046],[-65.143340999999907,59.94999700000011],[-65.126098999999954,60.011108000000036],[-65.110001000000011,60.043052999999986],[-65.029723999999931,60.077217000000019],[-64.921111999999937,60.194992000000013],[-64.834166999999979,60.323051000000078],[-64.832229999999925,60.328605999999979],[-64.834441999999967,60.334434999999985],[-64.846389999999928,60.345543000000134],[-64.858336999999949,60.352492999999981],[-64.857223999999974,60.359436000000017],[-64.854445999999996,60.361107000000061],[-64.846114999999998,60.362769999999955],[-64.83555599999994,60.363327000000083],[-64.65306099999998,60.34693900000002],[-64.641677999999899,60.344711000000018],[-64.610274999999945,60.336380000000133],[-64.576674999999966,60.322768999999994],[-64.533249000000012,60.302498000000014],[-64.475600999999983,60.281609000000003],[-64.466919000000019,60.278602999999976],[-64.431090999999981,60.258105999999941],[-64.432593999999995,60.255608000000052],[-64.43460099999993,60.255108000000064],[-64.446091000000024,60.254771999999946],[-64.453093999999908,60.256271000000027],[-64.462424999999939,60.259273999999948],[-64.477591999999959,60.265609999999981],[-64.477218999999991,60.260551000000135],[-64.557495000000017,60.281105000000082],[-64.580291999999929,60.286110000000122],[-64.613051999999982,60.289436000000137],[-64.643065999999976,60.287498000000028],[-64.721114999999941,60.261108000000036],[-64.725829999999974,60.258331000000112],[-64.758056999999951,60.235825000000091],[-64.759445000000028,60.231102000000135],[-64.752501999999879,60.228600000000029],[-64.745269999999948,60.228325000000041],[-64.736937999999952,60.230545000000063],[-64.685546999999985,60.250832000000116],[-64.646118000000001,60.265830999999991],[-64.634170999999981,60.268883000000073],[-64.596389999999985,60.266937000000041],[-64.574448000000018,60.264999000000103],[-64.554169000000002,60.262772000000041],[-64.536391999999921,60.2586060000001],[-64.421676999999988,60.215656000000024],[-64.419501999999966,60.213661000000002],[-64.376937999999996,60.160545000000013],[-64.465011999999945,60.084991000000002],[-64.469161999999869,60.08277099999998],[-64.476944000000003,60.079720000000009],[-64.491378999999938,60.074714999999912],[-64.504455999999948,60.072495000000117],[-64.515015000000005,60.071938000000046],[-64.654998999999918,60.053604000000064],[-64.80471799999998,60.007216999999969],[-64.8125,60.004165999999998],[-64.823333999999988,59.997772000000111],[-64.826675000000023,59.994712999999933],[-64.827498999999989,59.986382000000049],[-64.820007000000032,59.979431000000091],[-64.811935000000005,59.978325000000098],[-64.796660999999972,59.980270000000075],[-64.735274999999945,60.001106000000107],[-64.490828999999906,60.05943300000007],[-64.410277999999948,60.111107000000118],[-64.396392999999989,60.121933000000013],[-64.392226999999991,60.124161000000015],[-64.385833999999932,60.125267000000008],[-64.379990000000021,60.125267000000008],[-64.37388599999997,60.123604000000114],[-64.367766999999958,60.119713000000047],[-64.366104000000007,60.117493000000024],[-64.36500499999994,60.109993000000145],[-64.374611000000016,60.033829000000082],[-64.375281999999856,60.028324000000055],[-64.394729999999981,59.941658000000075],[-64.396956999999929,59.937767000000008],[-64.408889999999985,59.932495000000074],[-64.450561999999934,59.925270000000012],[-64.462218999999948,59.922493000000088],[-64.491942999999992,59.913605000000132],[-64.506957999999997,59.907211000000075],[-64.514724999999999,59.901932000000102],[-64.513901000000033,59.896103000000096],[-64.506393000000003,59.891936999999984],[-64.499435000000005,59.891663000000051],[-64.481948999999872,59.894714000000079],[-64.376098999999954,59.9180530000001],[-64.367766999999958,59.920273000000122],[-64.363327000000027,59.922493000000088],[-64.360549999999932,59.924995000000024],[-64.320281999999963,60.004107999999974],[-64.322112999999945,60.006439000000114],[-64.324119999999994,60.011604000000091],[-64.32428699999997,60.014107000000024],[-64.322112999999945,60.024605000000008],[-64.320449999999937,60.027270999999985],[-64.317443999999909,60.028103000000044],[-64.265014999999948,60.048050000000103],[-64.216659999999933,60.039993000000095],[-64.173614999999984,60.028328000000045],[-64.166945999999996,60.024994000000049],[-64.160827999999981,60.01638800000012],[-64.150283999999999,59.985268000000076],[-64.150283999999999,59.982208000000014],[-64.165833000000021,59.850548000000117],[-64.17721599999993,59.785552999999936],[-64.180831999999896,59.781662000000097],[-64.193053999999961,59.775825999999995],[-64.202498999999932,59.77416199999999],[-64.220000999999968,59.77416199999999],[-64.236664000000019,59.779716000000008],[-64.244720000000029,59.784996000000035],[-64.25140399999998,59.787498000000141],[-64.257507000000032,59.78943600000008],[-64.261948000000018,59.789161999999976],[-64.264450000000011,59.787498000000141],[-64.266662999999994,59.77915999999999],[-64.261123999999995,59.764717000000132],[-64.255004999999926,59.756660000000124],[-64.21305799999999,59.717766000000097],[-64.197768999999994,59.705269000000101],[-64.173888999999974,59.688598999999954],[-64.163894999999968,59.684158000000082],[-64.151672000000019,59.680824000000086],[-64.129989999999964,59.676659000000086],[-64.057769999999948,59.625267000000122],[-64.116942999999935,59.517494000000056],[-64.047501000000011,59.549721000000034],[-64.040833000000021,59.553604000000007],[-64.033324999999991,59.563880999999981],[-64.034438999999907,59.573608000000092],[-64.034438999999907,59.582771000000093],[-64.029723999999874,59.599433999999974],[-64.024719000000005,59.609993000000031],[-64.019454999999937,59.618599000000131],[-64.011123999999938,59.624992000000077],[-64.004729999999995,59.626381000000094],[-63.99722300000002,59.626656000000139],[-63.90055099999995,59.619987000000037],[-63.885559000000001,59.618881000000044],[-63.876105999999993,59.615829000000076],[-63.865554999999915,59.609993000000031],[-63.731666999999959,59.526099999999985],[-63.724166999999966,59.517769000000101],[-63.722495999999978,59.513885000000073],[-63.723884999999996,59.506660000000011],[-63.785278000000005,59.426102000000014],[-63.807837999999947,59.420437000000106],[-63.810172999999963,59.41944100000012],[-63.814502999999945,59.418101999999976],[-63.866393999999957,59.421104000000014],[-63.90694400000001,59.421660999999915],[-63.947776999999974,59.419716000000108],[-64.000564999999995,59.41443600000008],[-64.018341000000021,59.410545000000013],[-64.033324999999991,59.406654000000117],[-64.050277999999992,59.399994000000106],[-64.061110999999983,59.393883000000017],[-64.065826000000015,59.388046000000031],[-64.062209999999993,59.38249200000007],[-64.052779999999984,59.379433000000063],[-63.805167999999924,59.368164000000093],[-63.790145999999993,59.370293000000004],[-63.786652000000004,59.371792000000084],[-63.78264999999999,59.374126000000103],[-63.751395999999943,59.37582400000008],[-63.748111999999935,59.333878000000084],[-63.75644699999998,59.30838],[-63.768280000000004,59.28788000000003],[-63.77044699999999,59.284381999999994],[-63.773444999999981,59.282215000000122],[-63.780944999999974,59.278213999999991],[-63.814162999999951,59.249435000000005],[-63.824722000000008,59.24610100000001],[-63.825499999999977,59.244377000000043],[-63.82527899999991,59.243324000000086],[-63.813889000000017,59.240829000000076],[-63.777942999999993,59.263938999999993],[-63.76677699999999,59.264275000000055],[-63.760940999999946,59.265434000000027],[-63.755942999999945,59.266773000000001],[-63.739112999999975,59.273605000000032],[-63.730441999999925,59.280769000000021],[-63.723777999999925,59.287436999999954],[-63.718776999999932,59.293941000000075],[-63.716113999999891,59.300934000000098],[-63.71527900000001,59.303768000000105],[-63.71527900000001,59.306438000000071],[-63.71594199999987,59.309437000000059],[-63.713775999999996,59.315605000000005],[-63.710608999999863,59.318107999999995],[-63.658332999999971,59.358046999999999],[-63.649993999999992,59.362494999999967],[-63.543059999999912,59.34804500000007],[-63.535277999999948,59.344436999999971],[-63.393332999999927,59.264999000000103],[-63.357506000000001,59.208046000000081],[-63.356392000000028,59.204993999999999],[-63.358054999999922,59.198043999999982],[-63.366661000000022,59.186377999999991],[-63.412773000000016,59.135826000000066],[-63.425560000000019,59.126381000000038],[-63.441108999999926,59.119438000000002],[-63.476944000000003,59.104439000000127],[-63.563613999999973,59.073326000000122],[-63.580001999999922,59.067497000000117],[-63.589721999999938,59.065543999999989],[-63.731392000000028,59.056270999999981],[-63.741055000000017,59.055770999999993],[-63.74872199999993,59.056934000000126],[-63.753890999999896,59.058266000000003],[-63.760222999999939,59.062767000000122],[-63.812217999999973,59.065826000000072],[-63.934440999999936,59.081108000000086],[-63.948333999999988,59.07888000000014],[-63.966110000000015,59.074714999999969],[-63.98833499999995,59.068329000000062],[-64.045546999999999,59.02416199999999],[-64.04722599999991,59.019440000000088],[-64.043883999999991,59.015273999999977],[-64.039443999999946,59.013885000000016],[-63.912216000000001,59.000549000000035],[-63.801719999999989,59.013992000000144],[-63.798388999999986,59.011329999999987],[-63.766395999999986,59.012772000000098],[-63.759444999999971,59.012497000000053],[-63.734443999999939,59.014998999999989],[-63.508057000000008,59.052773000000059],[-63.381667999999877,59.098045000000127],[-63.372771999999941,59.101104999999961],[-63.365554999999915,59.101104999999961],[-63.309440999999993,59.09415400000006],[-63.293335000000013,59.091377000000136],[-63.134170999999981,59.058327000000077],[-63.124999999999943,59.055267000000015],[-63.121940999999993,59.051384000000098],[-63.122771999999998,59.045547000000113],[-63.126944999999921,59.041382000000112],[-63.133330999999941,59.038048000000117],[-63.159438999999907,59.029990999999995],[-63.175277999999992,59.026939000000084],[-63.185271999999998,59.026381999999955],[-63.216942000000017,59.027489000000116],[-63.238892000000021,59.030548000000067],[-63.323333999999932,59.027771000000143],[-63.336112999999955,59.024994000000049],[-63.335555999999997,59.021935000000099],[-63.264450000000011,58.985549999999989],[-63.213889999999992,58.977211000000125],[-63.195273999999984,58.979713000000004],[-63.185271999999998,58.980270000000075],[-63.173057999999912,58.979713000000004],[-63.167503000000011,58.970825000000048],[-63.160552999999993,58.926384000000041],[-63.163054999999929,58.920273000000122],[-63.236389000000031,58.876937999999996],[-63.313331999999946,58.861107000000004],[-63.325004999999976,58.85582700000009],[-63.312774999999988,58.853049999999996],[-63.294723999999974,58.85083000000003],[-63.19027699999998,58.854996000000085],[-63.112777999999992,58.878043999999989],[-63.033332999999971,58.873878000000104],[-62.924170999999944,58.821381000000031],[-62.918334999999956,58.817497000000003],[-62.90694400000001,58.80471],[-62.904167000000029,58.799995000000138],[-62.847495999999978,58.690543999999989],[-62.845276000000013,58.684989999999971],[-62.842223999999987,58.669991000000095],[-62.843612999999948,58.659430999999984],[-62.847777999999948,58.653045999999961],[-62.915832999999907,58.600272999999959],[-62.974998000000028,58.576660000000061],[-63.169167000000016,58.503052000000139],[-63.334109999999896,58.455768999999975],[-63.334609999999941,58.45227100000011],[-63.337108999999941,58.448437000000126],[-63.373444000000006,58.417435000000069],[-63.38528100000002,58.41027100000008],[-63.39910900000001,58.405273000000079],[-63.486388999999974,58.37082700000002],[-63.522498999999982,58.361107000000118],[-63.537506000000008,58.354164000000083],[-63.583060999999987,58.311378000000047],[-63.587776000000019,58.305549999999982],[-63.58943899999997,58.30082700000014],[-63.584998999999925,58.298881999999992],[-63.579726999999991,58.298606999999947],[-63.571670999999924,58.299995000000081],[-63.555274999999938,58.305267000000015],[-63.533057999999983,58.314438000000109],[-63.428223000000003,58.369049000000132],[-63.392386999999928,58.388381999999979],[-63.378558999999939,58.399044000000004],[-63.364219999999932,58.410049000000015],[-63.351555000000019,58.418716000000018],[-63.286391999999978,58.456657000000064],[-63.28082999999998,58.459160000000054],[-63.264724999999942,58.463051000000121],[-63.241669000000002,58.466385000000116],[-63.213615000000004,58.469437000000028],[-63.148612999999955,58.476379000000122],[-63.13277399999987,58.477211000000068],[-63.124442999999872,58.475266000000033],[-63.096947,58.461936999999978],[-63.089721999999938,58.458327999999938],[-63.086113000000012,58.454993999999999],[-63.037506000000008,58.453048999999965],[-62.763335999999981,58.480820000000051],[-62.636664999999937,58.501389000000017],[-62.620551999999975,58.504997000000117],[-62.610001000000011,58.503882999999973],[-62.58943899999997,58.499718000000144],[-62.573615999999959,58.493880999999988],[-62.566108999999926,58.490546999999992],[-62.56138599999997,58.487495000000081],[-62.557502999999997,58.482491000000095],[-62.556389000000024,58.478043000000127],[-62.619719999999973,58.376938000000052],[-62.619445999999982,58.310272000000055],[-62.623054999999965,58.30443600000001],[-62.634170999999981,58.297775000000058],[-62.708611000000019,58.276100000000042],[-62.77666499999998,58.268599999999992],[-62.828056000000004,58.252220000000079],[-62.661666999999966,58.26998900000001],[-62.658607000000018,58.270271000000037],[-62.654442000000017,58.270271000000037],[-62.609725999999966,58.256660000000068],[-62.597778000000005,58.251663000000008],[-62.592772999999966,58.248604],[-62.582503999999858,58.23443600000013],[-62.581116000000009,58.221931000000041],[-62.58277899999996,58.216934000000094],[-62.584441999999967,58.214439000000084],[-62.631942999999865,58.185265000000129],[-62.638054000000011,58.181938000000002],[-62.653053,58.175270000000012],[-62.661384999999996,58.173049999999989],[-62.689163000000008,58.169991000000039],[-62.719718999999941,58.169715999999994],[-62.740279999999927,58.171936000000017],[-62.773887999999886,58.176941000000056],[-62.783889999999928,58.176659000000029],[-62.822226999999998,58.174713000000111],[-62.841666999999973,58.1722180000001],[-62.965004000000022,58.15387700000008],[-63.012221999999952,58.135551000000078],[-63.016662999999937,58.126098999999954],[-63.023887999999999,58.118880999999988],[-63.045279999999934,58.108886999999982],[-63.126944999999921,58.086936999999978],[-63.205558999999994,58.065826000000072],[-63.21166999999997,58.062492000000077],[-63.211387999999999,58.060272000000111],[-63.208892999999989,58.057770000000005],[-63.19027699999998,58.053047000000049],[-63.140838999999971,58.048882000000049],[-63.146998999999994,58.036831000000006],[-63.15582999999998,58.026939000000084],[-63.167777999999942,58.021103000000039],[-63.193329000000006,58.014717000000132],[-63.267220000000009,58.007217000000026],[-63.275275999999963,58.005554000000132],[-63.30471799999998,57.996940999999936],[-63.341666999999973,57.981102000000021],[-63.340835999999967,57.979988000000048],[-63.329726999999991,57.980270000000132],[-63.15166499999998,57.993606999999997],[-63.128882999999973,57.997771999999998],[-63.107779999999991,58.007774000000097],[-63.101944000000003,58.01249700000011],[-63.098884999999939,58.017769000000044],[-63.097778000000005,58.019714000000022],[-63.09833500000002,58.026939000000084],[-63.099998000000028,58.033051000000057],[-63.101944000000003,58.036942000000124],[-63.101668999999902,58.044159000000036],[-63.097778000000005,58.052216000000044],[-63.094718999999941,58.057495000000017],[-63.089164999999866,58.06221000000005],[-62.946662999999944,58.124161000000015],[-62.940276999999924,58.125824000000136],[-62.886390999999946,58.137496999999996],[-62.838051000000007,58.144997000000046],[-62.832222000000002,58.14527099999998],[-62.829445000000021,58.143326000000002],[-62.77277399999997,58.129158000000132],[-62.652221999999995,58.118599000000074],[-62.646111000000019,58.119155999999975],[-62.643058999999994,58.119986999999981],[-62.612502999999947,58.137771999999984],[-62.59944200000001,58.145546000000024],[-62.560828999999956,58.156654000000003],[-62.515838999999914,58.169158999999922],[-62.491942999999992,58.174163999999962],[-62.46665999999999,58.175552000000096],[-62.452781999999956,58.175270000000012],[-62.448051000000021,58.1722180000001],[-62.446388000000013,58.168327000000033],[-62.447776999999917,58.164154000000053],[-62.463000999999963,58.151047000000062],[-62.469666000000018,58.145718000000045],[-62.478333000000021,58.141212000000053],[-62.486168000000021,58.136547000000064],[-62.503890999999953,58.123604000000114],[-62.519447000000014,58.111937999999952],[-62.529166999999916,58.102776000000063],[-62.531386999999995,58.095268000000033],[-62.514450000000011,58.057495000000017],[-62.506392999999946,58.055267000000072],[-62.498054999999908,58.057213000000104],[-62.49138599999992,58.061378000000104],[-62.486664000000019,58.066940000000045],[-62.484443999999939,58.072220000000129],[-62.485557999999912,58.081107999999915],[-62.488051999999925,58.086105000000032],[-62.488891999999908,58.091103000000032],[-62.488051999999925,58.09665700000005],[-62.482772999999952,58.100273000000072],[-62.444827999999916,58.106720000000053],[-62.413054999999929,58.110825000000091],[-62.375,58.112770000000069],[-62.368889000000024,58.111664000000019],[-62.363892000000021,58.108604000000014],[-62.317779999999971,58.052489999999977],[-62.307502999999883,58.039161999999976],[-62.306945999999982,58.031104999999968],[-62.309722999999963,58.028603000000089],[-62.38144699999998,58.008327000000065],[-62.394112000000007,58.003658000000087],[-62.406280999999979,58.002827000000082],[-62.41311300000001,58.003658000000087],[-62.437613999999883,58.010159000000101],[-62.450443000000007,58.011993000000132],[-62.500838999999928,58.008049000000142],[-62.51916499999993,58.006943000000092],[-62.528335999999967,58.005554000000132],[-62.545279999999934,58.000549000000035],[-62.648055999999997,57.958328000000051],[-62.655273000000022,57.953605999999979],[-62.65972099999999,57.94860100000011],[-62.672774999999945,57.929993000000024],[-62.664443999999946,57.928604000000064],[-62.655273000000022,57.929993000000024],[-62.640838999999971,57.935264999999958],[-62.636116000000015,57.938598999999954],[-62.620833999999945,57.947487000000137],[-62.611670999999944,57.951660000000061],[-62.577498999999989,57.962212000000079],[-62.537780999999882,57.971100000000092],[-62.512504999999919,57.972487999999998],[-62.455165999999963,57.968212000000051],[-62.448001999999974,57.967708999999957],[-62.325004999999919,57.956100000000106],[-62.268332999999984,57.948875000000044],[-62.200278999999966,57.935822000000087],[-62.148887999999999,57.974990999999932],[-62.145279000000016,57.974159000000043],[-62.12749500000001,57.968048000000124],[-62.116111999999987,57.962493999999992],[-62.083610999999962,57.944992000000127],[-62.079726999999934,57.942763999999954],[-62.072226999999998,57.931107000000054],[-62.05972300000002,57.897774000000027],[-62.060828999999956,57.889992000000063],[-62.062774999999931,57.886658000000068],[-62.115279999999984,57.854164000000026],[-62.131942999999978,57.84276600000004],[-62.138053999999954,57.835823000000005],[-62.139167999999927,57.831940000000088],[-62.125274999999988,57.806938000000002],[-62.120833999999888,57.800827000000083],[-62.119995000000017,57.799994999999967],[-62.107779999999991,57.789719000000105],[-62.08916499999998,57.780548000000124],[-62.085830999999985,57.779433999999981],[-62.079169999999976,57.779433999999981],[-62.061110999999926,57.781936999999971],[-62.046394000000021,57.785828000000038],[-62.033332999999914,57.787216000000114],[-62.018058999999937,57.783607000000131],[-61.996666000000005,57.772217000000069],[-61.99138599999992,57.767769000000101],[-61.889998999999989,57.666382000000112],[-61.883330999999998,57.645546000000081],[-61.883057000000008,57.63749700000011],[-61.884444999999971,57.626938000000052],[-61.888610999999969,57.622490000000084],[-61.89805599999994,57.616386000000034],[-62.071670999999981,57.563605999999993],[-62.192222999999899,57.535828000000095],[-62.30860899999999,57.490546999999992],[-62.421386999999982,57.482207999999957],[-62.431945999999868,57.484717999999987],[-62.531113000000005,57.506943000000035],[-62.541388999999981,57.507500000000107],[-62.544723999999974,57.504440000000045],[-62.545279999999934,57.50110600000005],[-62.533332999999914,57.492218000000094],[-62.520553999999947,57.484993000000031],[-62.46444699999995,57.454437000000098],[-62.457222000000002,57.451103000000103],[-62.377220000000023,57.421936000000017],[-62.365279999999927,57.419715999999994],[-62.353888999999981,57.418326999999977],[-62.335830999999928,57.419440999999949],[-62.230552999999986,57.443604000000107],[-62.173331999999959,57.463608000000022],[-62.167220999999984,57.464439000000084],[-62.060828999999956,57.456383000000017],[-62.039725999999973,57.453323000000125],[-61.891388000000006,57.411934000000031],[-61.816948000000025,57.376938000000109],[-61.803054999999915,57.369155999999975],[-61.801391999999908,57.363052000000096],[-61.803054999999915,57.358887000000095],[-61.863892000000021,57.285553000000107],[-61.894164999999987,57.269440000000088],[-61.937499999999943,57.252220000000079],[-61.944999999999936,57.250832000000003],[-61.953888000000006,57.249435000000062],[-61.997779999999977,57.25638600000002],[-62.017219999999952,57.256943000000092],[-62.026389999999992,57.255829000000119],[-62.023613000000012,57.251663000000008],[-62.015839000000028,57.243050000000039],[-62.005004999999869,57.236655999999982],[-61.858894000000021,57.167770000000132],[-61.852500999999961,57.165268000000083],[-61.664444000000003,57.143883000000073],[-61.65555599999999,57.143051000000014],[-61.565551999999968,57.149719000000005],[-61.515555999999947,57.15638000000007],[-61.490836999999999,57.159431000000097],[-61.478881999999999,57.159431000000097],[-61.458892999999989,57.154709000000025],[-61.441665999999884,57.148604999999975],[-61.39305899999988,57.124709999999993],[-61.380279999999914,57.117210000000114],[-61.363892000000021,57.097214000000122],[-61.358336999999949,57.087494000000049],[-61.355559999999969,57.016388000000006],[-61.370833999999945,56.978600000000142],[-61.378052000000025,56.982208000000071],[-61.393332999999984,56.983047000000056],[-61.479720999999984,56.983604000000128],[-61.487777999999935,56.981658999999979],[-61.495551999999861,56.979430999999977],[-61.516395999999929,56.970267999999976],[-61.535560999999973,56.961104999999975],[-61.546668999999952,56.954437000000041],[-61.639998999999932,56.883881000000031],[-61.645003999999915,56.878326000000129],[-61.648337999999967,56.873046999999929],[-61.650832999999921,56.866936000000067],[-61.65277900000001,56.855826999999977],[-61.65277900000001,56.845543000000134],[-61.65055099999995,56.840828000000101],[-61.646111000000019,56.826942000000088],[-61.646111000000019,56.821106000000043],[-61.650276000000019,56.816666000000055],[-61.661384999999996,56.809433000000013],[-61.676392000000021,56.802773000000002],[-61.782391000000018,56.794441000000006],[-61.799224999999922,56.792937999999992],[-61.816886999999952,56.793610000000001],[-61.823558999999989,56.794441000000006],[-61.834556999999961,56.796108000000117],[-61.844559000000004,56.798943000000008],[-61.892226999999934,56.798607000000118],[-61.906386999999938,56.795273000000122],[-61.908606999999961,56.789162000000033],[-61.902221999999938,56.714156999999943],[-61.899993999999992,56.707214000000135],[-61.897223999999937,56.703049000000135],[-61.889998999999989,56.698044000000095],[-61.886115999999959,56.698044000000095],[-61.877776999999924,56.713051000000121],[-61.87027699999993,56.726936000000023],[-61.833667999999932,56.741993000000093],[-61.830832999999927,56.745327000000088],[-61.824996999999996,56.746826000000112],[-61.811504000000014,56.746826000000112],[-61.793335000000013,56.746826000000112],[-61.780498999999963,56.745658999999989],[-61.772834999999986,56.744160000000136],[-61.76266899999996,56.741325000000074],[-61.716392999999925,56.738045000000113],[-61.702498999999989,56.730820000000051],[-61.696944999999971,56.724709000000132],[-61.701667999999984,56.713325999999938],[-61.71055599999994,56.705551000000071],[-61.721106999999961,56.701103000000103],[-61.734443999999996,56.697212000000036],[-61.75417299999998,56.697487000000024],[-61.765006999999969,56.6988750000001],[-61.773055999999997,56.701103000000103],[-61.798339999999996,56.710823000000005],[-61.808334000000002,56.712212000000136],[-61.821670999999924,56.709717000000126],[-61.825004999999919,56.706657000000064],[-61.821670999999924,56.701660000000004],[-61.799171000000001,56.682770000000005],[-61.792503000000011,56.680824000000143],[-61.732215999999937,56.663322000000107],[-61.681670999999994,56.653603000000089],[-61.674445999999932,56.653046000000018],[-61.658889999999985,56.647774000000084],[-61.649726999999984,56.641662999999994],[-61.649993999999936,56.635268999999994],[-61.658607000000018,56.627487000000031],[-61.672500999999954,56.619986999999924],[-61.680557000000022,56.618050000000096],[-61.688889000000017,56.617210000000057],[-61.699164999999994,56.617767000000129],[-61.835555999999997,56.631660000000124],[-61.911667000000023,56.642769000000044],[-61.992774999999938,56.66027100000008],[-62.010001999999872,56.664153999999996],[-62.066947999999911,56.678604000000121],[-62.311110999999983,56.735550000000046],[-62.479995999999971,56.77388000000002],[-62.498885999999914,56.779716000000064],[-62.504448000000025,56.783607000000131],[-62.505004999999926,56.788886999999988],[-62.501944999999978,56.791939000000127],[-62.486114999999984,56.796104000000128],[-62.468886999999995,56.798607000000118],[-62.326392999999996,56.812767000000008],[-62.227492999999868,56.816666000000055],[-62.18999500000001,56.81332400000008],[-62.138335999999924,56.81082200000003],[-62.068335999999988,56.817214999999976],[-62.059440999999879,56.818603999999993],[-62.051665999999955,56.820549000000142],[-62.042502999999954,56.826942000000088],[-62.043334999999956,56.829994000000056],[-62.049445999999875,56.832496999999989],[-62.066947999999911,56.834434999999928],[-62.234726000000023,56.836937000000034],[-62.381667999999991,56.830276000000083],[-62.478606999999954,56.846657000000107],[-62.488891999999908,56.849434000000031],[-62.498885999999914,56.850548000000003],[-62.508338999999921,56.849998000000141],[-62.517219999999952,56.848045000000013],[-62.53194400000001,56.843605000000025],[-62.543892000000028,56.837212000000022],[-62.546950999999922,56.834717000000012],[-62.570281999999963,56.798607000000118],[-62.57389099999989,56.792770000000132],[-62.538337999999953,56.775551000000064],[-62.503058999999951,56.762214999999912],[-62.356109999999887,56.722214000000122],[-62.162773000000016,56.672768000000076],[-62.02277399999997,56.627487000000031],[-62.005279999999971,56.616936000000123],[-62.117500000000007,56.623046999999985],[-62.175003000000004,56.623877999999991],[-62.235557999999969,56.623604000000057],[-62.241111999999873,56.62332200000003],[-62.239722999999969,56.617210000000057],[-62.224715999999944,56.609161000000029],[-62.192222999999899,56.602493000000038],[-62.105003000000011,56.59693900000002],[-62.046394000000021,56.595825000000048],[-62.036117999999874,56.595267999999976],[-61.901389999999935,56.58776899999998],[-61.729439000000013,56.574440000000095],[-61.715004000000022,56.572220000000073],[-61.70805399999989,56.568886000000077],[-61.701110999999969,56.560822000000087],[-61.690833999999995,56.548050000000046],[-61.666663999999969,56.540549999999996],[-61.658332999999971,56.537498000000085],[-61.655273000000022,56.533882000000006],[-61.653327999999931,56.53054800000001],[-61.652221999999995,56.526100000000042],[-61.653327999999931,56.520546000000081],[-61.656661999999926,56.510826000000009],[-61.662216000000001,56.506104000000107],[-61.680282999999974,56.496658000000139],[-61.689163000000008,56.494713000000104],[-61.754723000000013,56.484993000000031],[-61.773055999999997,56.484718000000044],[-61.80388599999992,56.487770000000125],[-61.878052000000025,56.497772000000111],[-61.951942000000031,56.505554000000075],[-62.038612000000001,56.505271999999991],[-62.046950999999922,56.50471500000009],[-62.05471799999998,56.502495000000067],[-62.061667999999997,56.499435000000005],[-62.075561999999934,56.49193600000001],[-62.08306099999993,56.486938000000009],[-62.085273999999913,56.483046999999942],[-62.082222000000002,56.481659000000036],[-62.076667999999984,56.479987999999992],[-62.070838999999978,56.481102000000135],[-62.024170000000026,56.48443600000013],[-61.976386999999988,56.483330000000137],[-61.965278999999896,56.481934000000081],[-61.952224999999999,56.475822000000107],[-61.946945000000028,56.471100000000035],[-61.956164999999942,56.464050000000043],[-61.958831999999973,56.461048000000005],[-61.961333999999965,56.459717000000012],[-61.966003000000001,56.458549000000005],[-61.979835999999978,56.455551000000071],[-61.999724999999955,56.44999700000011],[-62.010284000000013,56.44999700000011],[-62.019996999999989,56.451102999999932],[-62.048888999999974,56.457214000000022],[-62.05972300000002,56.458603000000039],[-62.069999999999993,56.459160000000111],[-62.124999999999886,56.457214000000022],[-62.139998999999932,56.452217000000132],[-62.143058999999994,56.449158000000125],[-62.139167999999927,56.444709999999986],[-62.124999999999886,56.43832400000008],[-62.117500000000007,56.435546999999985],[-62.083327999999995,56.423325000000034],[-62.073059000000001,56.420546999999999],[-61.984726000000023,56.415268000000026],[-61.963717999999972,56.415657000000067],[-61.956889999999987,56.417823999999939],[-61.909720999999934,56.413879000000065],[-61.798057999999912,56.39527099999998],[-61.790840000000003,56.392494000000056],[-61.661384999999996,56.270271000000093],[-61.678332999999952,56.269161000000111],[-61.679169000000002,56.267993999999987],[-61.686835999999971,56.266994000000011],[-61.702834999999993,56.265327000000127],[-61.749999999999943,56.261329999999987],[-61.760665999999958,56.261662000000115],[-61.772166999999968,56.263493000000096],[-61.777167999999961,56.265327000000127],[-61.779671000000008,56.267493999999999],[-61.778335999999967,56.268661000000122],[-61.775001999999972,56.268826000000104],[-61.765166999999963,56.268162000000018],[-61.756667999999934,56.266994000000011],[-61.746001999999919,56.267493999999999],[-61.741000999999926,56.269161000000111],[-61.753616000000022,56.273048000000017],[-61.753059000000007,56.277770999999973],[-61.769996999999933,56.284163999999976],[-61.800835000000006,56.28943600000008],[-61.878608999999926,56.298607000000004],[-61.888610999999969,56.299164000000076],[-62.029723999999987,56.305267000000015],[-62.074447999999961,56.296386999999982],[-62.080001999999979,56.293610000000115],[-62.080832999999984,56.292496000000142],[-62.076110999999912,56.284996000000035],[-62.016395999999986,56.238883999999985],[-62.011672999999917,56.235825000000034],[-62.003890999999953,56.233604000000071],[-61.956947000000014,56.220825000000048],[-61.938331999999946,56.215827999999931],[-61.919448999999986,56.212212000000079],[-61.910278000000005,56.212493999999936],[-61.802054999999939,56.216381000000069],[-61.769889999999975,56.218048000000124],[-61.575004999999976,56.216933999999981],[-61.575561999999991,56.211937000000034],[-61.578612999999905,56.206940000000145],[-61.579726999999991,56.199158000000011],[-61.575279000000023,56.19609800000012],[-61.560279999999921,56.194434999999999],[-61.53583500000002,56.196381000000088],[-61.450553999999954,56.204994000000056],[-61.411941999999954,56.214714000000129],[-61.40444199999996,56.217491000000052],[-61.380279999999914,56.22304500000007],[-61.361670999999944,56.223602000000142],[-61.350837999999953,56.222214000000065],[-61.345550999999944,56.218322999999998],[-61.33083299999987,56.181938000000059],[-61.330284000000006,56.176659000000029],[-61.33555599999994,56.172767999999962],[-61.343329999999924,56.170547000000056],[-61.377220000000023,56.168602000000078],[-61.383613999999909,56.164711000000011],[-61.397223999999881,56.155823000000055],[-61.406104999999911,56.146102999999925],[-61.452498999999932,56.062767000000008],[-61.452224999999999,56.056937999999946],[-61.448607999999979,56.052772999999945],[-61.413886999999932,56.037773000000016],[-61.411384999999882,56.037497999999971],[-61.397498999999982,56.041107000000011],[-61.382773999999927,56.047493000000088],[-61.356391999999971,56.058327000000133],[-61.346663999999919,56.061377999999991],[-61.34027900000001,56.063049000000035],[-61.324721999999952,56.065269000000058],[-61.315552000000025,56.065544000000045],[-61.24361399999998,56.047493000000088],[-61.239722999999969,56.045273000000066],[-61.23750299999989,56.042770000000075],[-61.240554999999972,56.040276000000006],[-61.265838999999971,56.02276599999999],[-61.273613000000012,56.020828000000051],[-61.282500999999968,56.019714000000079],[-61.310279999999977,56.018600000000106],[-61.357223999999974,56.018600000000106],[-61.388610999999912,56.021934999999985],[-61.419167000000016,56.027214000000129],[-61.438605999999993,56.027489000000003],[-61.489997999999957,56.02027099999998],[-61.501395999999943,56.014442000000145],[-61.503890999999896,56.010551000000078],[-61.503615999999965,56.006942999999978],[-61.421943999999996,55.963882000000126],[-61.415001000000018,55.960274000000027],[-61.399170000000026,55.958602999999925],[-61.389998999999989,55.958885000000009],[-61.38138600000002,55.960274000000027],[-61.328055999999947,55.964157000000114],[-61.254722999999956,55.967491000000109],[-61.154442000000017,55.971375000000137],[-61.143616000000009,55.970543000000021],[-61.125556999999958,55.968596999999932],[-61.117774999999938,55.966103000000032],[-61.113616999999977,55.962493999999992],[-61.074448000000018,55.928329000000076],[-61.073891000000003,55.923050000000103],[-61.076667999999984,55.906937000000084],[-61.094111999999939,55.895606999999984],[-61.156386999999995,55.891937000000098],[-61.165276000000006,55.892220000000066],[-61.181670999999994,55.89916199999999],[-61.194999999999993,55.892220000000066],[-61.201667999999984,55.884163000000115],[-61.198607999999922,55.876380999999981],[-61.192771999999934,55.869437999999946],[-61.104445999999939,55.845543000000134],[-61.095275999999899,55.843880000000013],[-61.085274000000027,55.843322999999941],[-61.077224999999999,55.843880000000013],[-61.068061999999998,55.845543000000134],[-61.039665000000014,55.850937000000044],[-61.035999000000004,55.853271000000063],[-61.027168000000017,55.857273000000077],[-60.946105999999986,55.865829000000133],[-60.917220999999927,55.864441000000056],[-60.782500999999968,55.854164000000083],[-60.762221999999952,55.851386999999988],[-60.755561999999998,55.849434000000031],[-60.741669000000002,55.843048000000124],[-60.729720999999927,55.829436999999984],[-60.729163999999969,55.824440000000038],[-60.730826999999977,55.808044000000052],[-60.734443999999996,55.801212000000021],[-60.736941999999999,55.797382000000027],[-60.74222599999996,55.790549999999939],[-60.774719000000005,55.772491000000002],[-60.80777699999993,55.755271999999934],[-60.880554000000018,55.749161000000072],[-60.879439999999988,55.732765000000029],[-60.765006999999969,55.728042999999957],[-60.756393000000003,55.729431000000091],[-60.746947999999975,55.731659000000036],[-60.740279999999984,55.734161000000086],[-60.727218999999877,55.739990000000091],[-60.721663999999976,55.744713000000104],[-60.7016109999999,55.763443000000109],[-60.668891999999971,55.795830000000024],[-60.656386999999938,55.812767000000008],[-60.647223999999937,55.822768999999994],[-60.639998999999989,55.825554000000011],[-60.631667999999991,55.826660000000061],[-60.623885999999914,55.824996999999939],[-60.615279999999927,55.821937999999989],[-60.601943999999946,55.814713000000097],[-60.597777999999892,55.80943300000007],[-60.598052999999993,55.804436000000123],[-60.605835000000013,55.733879000000059],[-60.615836999999999,55.686935000000062],[-60.629722999999899,55.638329000000056],[-60.668059999999969,55.589432000000102],[-60.655555999999933,55.584435000000042],[-60.606109999999944,55.622489999999914],[-60.60222599999986,55.626656000000025],[-60.59027900000001,55.644714000000079],[-60.544167000000016,55.726936000000023],[-60.527221999999881,55.760551000000135],[-60.527495999999985,55.765830999999991],[-60.525557999999933,55.77693899999997],[-60.519446999999957,55.78804800000006],[-60.514449999999954,55.793610000000001],[-60.503059000000007,55.803046999999935],[-60.487777999999878,55.808601000000124],[-60.483611999999994,55.809158000000025],[-60.339995999999985,55.786384999999939],[-60.334998999999982,55.784439000000077],[-60.328888000000006,55.781661999999983],[-60.327224999999885,55.772766000000047],[-60.329444999999964,55.761383000000023],[-60.337775999999963,55.748604],[-60.380553999999961,55.691933000000063],[-60.406386999999995,55.674713000000054],[-60.463218999999924,55.666046000000108],[-60.472720999999979,55.663212000000101],[-60.493889000000024,55.658043000000134],[-60.499999999999943,55.654160000000047],[-60.50389100000001,55.648330999999985],[-60.525001999999972,55.610550000000046],[-60.531112999999948,55.597214000000065],[-60.532218999999884,55.591660000000104],[-60.531859999999938,55.588195999999982],[-60.515006999999969,55.599715999999944],[-60.506110999999919,55.611664000000019],[-60.495002999999997,55.621101000000124],[-60.481383999999991,55.627769000000114],[-60.440334000000007,55.620216000000084],[-60.426167000000021,55.618217000000072],[-60.420334000000025,55.616379000000052],[-60.415501000000006,55.61454800000007],[-60.322776999999917,55.578330999999991],[-60.31639100000001,55.573883000000023],[-60.31639100000001,55.57027400000004],[-60.319449999999961,55.530823000000055],[-60.321670999999981,55.509995000000004],[-60.426318999999978,55.448204000000089],[-60.442210999999986,55.427696000000026],[-60.437774999999988,55.399437000000091],[-60.478332999999907,55.347488000000055],[-60.472771000000023,55.347771000000023],[-60.451392999999939,55.357216000000108],[-60.42610899999994,55.376656000000082],[-60.420837000000006,55.382210000000043],[-60.418335000000013,55.386107999999979],[-60.415275999999949,55.394714000000079],[-60.417777999999942,55.402771000000087],[-60.422501000000011,55.407211000000075],[-60.425003000000004,55.411377000000016],[-60.423614999999984,55.421378999999945],[-60.418335000000013,55.427490000000034],[-60.413054999999986,55.431664000000069],[-60.349167000000023,55.475822000000107],[-60.331673000000023,55.486655999999982],[-60.319449999999961,55.491378999999995],[-60.268607999999972,55.502495000000124],[-60.253890999999953,55.503052000000025],[-60.213889999999992,55.489433000000076],[-60.203613000000018,55.483604000000071],[-60.201667999999984,55.478600000000085],[-60.195548999999971,55.431381000000101],[-60.265839000000028,55.409156999999993],[-60.274169999999913,55.408043000000021],[-60.284171999999955,55.408600000000092],[-60.295279999999934,55.411102000000142],[-60.305274999999881,55.411659000000043],[-60.313332000000003,55.411102000000142],[-60.354720999999927,55.394997000000046],[-60.468886999999938,55.285827999999981],[-60.49888599999997,55.253325999999959],[-60.538054999999929,55.200546000000145],[-60.499999999999943,55.218047999999953],[-60.488892000000021,55.227210999999954],[-60.482215999999994,55.231658999999922],[-60.476386999999988,55.2347180000001],[-60.468329999999924,55.237495000000024],[-60.37388599999997,55.260551000000021],[-60.365836999999942,55.260826000000066],[-60.355277999999998,55.259437999999989],[-60.348610000000008,55.255829000000119],[-60.348052999999936,55.250549000000092],[-60.353057999999976,55.244995000000074],[-60.512222000000008,55.120543999999938],[-60.587776000000019,55.088599999999929],[-60.616660999999965,55.077217000000132],[-60.636116000000015,55.066665999999998],[-60.670554999999979,55.044715999999994],[-60.681113999999923,55.004715000000033],[-60.683326999999906,54.994995000000131],[-60.592773000000022,55.058884000000091],[-60.475273000000016,55.124435000000005],[-60.266395999999986,55.240547000000106],[-60.259170999999924,55.244155999999919],[-60.252501999999993,55.246384000000091],[-60.176108999999997,55.270827999999995],[-60.079781000000025,55.249602999999979],[-60.073776000000009,55.247940000000028],[-60.072776999999974,55.245106000000021],[-60.110778999999923,55.199268000000075],[-60.123610999999926,55.156380000000127],[-60.146392999999932,55.137214999999969],[-60.157218999999941,55.128601000000117],[-60.187217999999973,55.108046999999999],[-60.204445000000021,55.107498000000021],[-60.212776000000019,55.108604000000071],[-60.220551,55.106384000000048],[-60.282776000000013,55.057770000000062],[-60.288337999999953,55.053321999999923],[-60.295006000000001,55.041382000000056],[-60.296950999999922,55.03443900000002],[-60.296668999999952,55.024993999999992],[-60.293892000000028,55.019440000000145],[-60.284171999999955,55.024437000000091],[-60.152495999999985,55.102776000000119],[-60.124442999999928,55.120270000000005],[-60.09944200000001,55.136658000000068],[-60.088332999999921,55.145827999999938],[-60.083884999999952,55.152214000000072],[-60.051223999999934,55.182381000000134],[-60.04571900000002,55.193046999999979],[-60.044723999999917,55.196711999999991],[-60.042721000000029,55.199883],[-60.039718999999877,55.203213000000005],[-60.036057000000028,55.206383000000073],[-60.021888999999987,55.218547999999942],[-60.015223999999989,55.221546000000046],[-60.009224000000017,55.221214000000089],[-59.964721999999938,55.235549999999989],[-59.939437999999939,55.233047000000056],[-59.922774999999945,55.233047000000056],[-59.916945999999939,55.233879000000115],[-59.912497999999971,55.238883999999985],[-59.890838999999971,55.265549000000021],[-59.868332000000009,55.291381999999999],[-59.863891999999964,55.296104000000071],[-59.851394999999968,55.303047000000049],[-59.80750299999994,55.324164999999937],[-59.795279999999991,55.327492000000063],[-59.779167000000029,55.329720000000066],[-59.776108000000022,55.329162999999937],[-59.715003999999965,55.276099999999929],[-59.711945000000014,55.269714000000022],[-59.713332999999977,55.256103999999993],[-59.729439000000013,55.205269000000101],[-59.732497999999964,55.197211999999979],[-59.735832000000016,55.194153000000142],[-59.742774999999938,55.191376000000048],[-59.831389999999999,55.162491000000045],[-59.847495999999978,55.158043000000077],[-59.863891999999964,55.154160000000104],[-59.897781000000009,55.151382000000126],[-59.918334999999956,55.155265999999983],[-59.94027699999998,55.162766000000033],[-59.950553999999897,55.164436000000023],[-59.962775999999963,55.161102000000028],[-59.967215999999951,55.158599999999979],[-59.970832999999914,55.15554800000001],[-59.973327999999867,55.147491000000059],[-59.968055999999933,55.119156000000032],[-59.963615000000004,55.110275000000115],[-59.80083499999995,55.108887000000038],[-59.795279999999991,55.109160999999972],[-59.615836999999999,55.13638300000008],[-59.57028200000002,55.159988000000055],[-59.531386999999995,55.181380999999988],[-59.487777999999992,55.181380999999988],[-59.430557000000022,55.151931999999988],[-59.428336999999999,55.149719000000005],[-59.427223000000026,55.139992000000063],[-59.427779999999927,55.135826000000009],[-59.431945999999925,55.129433000000006],[-59.438605999999936,55.123604],[-59.49610899999999,55.078331000000105],[-59.539169000000015,55.049163999999962],[-59.593886999999995,55.020828000000051],[-59.610831999999959,55.012771999999984],[-59.716659999999933,54.955826000000059],[-59.802165999999943,54.887268000000006],[-59.823996999999963,54.851105000000132],[-59.939163000000008,54.758888000000013],[-59.944160000000011,54.755554000000018],[-59.945549000000028,54.753052000000139],[-59.944160000000011,54.749718000000144],[-59.938605999999936,54.746383999999978],[-59.919166999999959,54.741379000000109],[-59.90943900000002,54.740829000000076],[-59.888610999999855,54.743324000000143],[-59.882499999999936,54.744995000000017],[-59.797500999999954,54.781661999999983],[-59.791114999999991,54.78555300000005],[-59.788612000000001,54.789436000000023],[-59.790282999999874,54.794158999999979],[-59.79099999999994,54.822658999999987],[-59.794166999999959,54.828159000000142],[-59.79466599999995,54.830994000000032],[-59.793830999999898,54.839992999999993],[-59.79099999999994,54.846825000000024],[-59.784339999999929,54.857658000000015],[-59.772002999999927,54.869492000000037],[-59.754722999999899,54.897491000000116],[-59.729995999999971,54.907493999999986],[-59.703888000000006,54.910545000000013],[-59.688888999999961,54.913605000000075],[-59.674445999999989,54.919990999999982],[-59.618331999999953,54.948600999999996],[-59.411110000000008,55.056381000000101],[-59.293891999999971,55.169716000000108],[-59.165275999999949,55.234993000000088],[-59.161384999999996,55.236938000000123],[-59.154716000000008,55.235549999999989],[-59.144164999999987,55.228043000000071],[-59.139442000000031,55.223877000000016],[-59.131110999999919,55.215546000000074],[-59.127494999999954,55.205826000000002],[-59.124999999999943,55.196380999999917],[-59.124442999999872,55.186103999999943],[-59.149440999999911,55.16182699999996],[-59.15060799999992,55.158992999999953],[-59.155276999999955,55.152156999999931],[-59.161277999999982,55.146823999999924],[-59.168609999999944,55.141827000000035],[-59.176608999999985,55.137989000000061],[-59.205276000000026,55.13116100000002],[-59.20911000000001,55.129822000000047],[-59.240279999999927,55.111382000000049],[-59.25278499999996,55.102492999999981],[-59.363335000000006,55.015830999999991],[-59.37471800000003,55.006386000000077],[-59.383056999999951,54.998047000000042],[-59.386390999999946,54.993049999999982],[-59.391113000000018,54.982208000000128],[-59.391387999999949,54.980270000000019],[-59.388610999999969,54.97665400000011],[-59.384170999999924,54.973319999999944],[-59.37471800000003,54.972763000000043],[-59.369164000000012,54.975266000000033],[-59.275001999999915,55.021659999999997],[-59.262504999999862,55.028327999999988],[-59.250838999999985,55.035828000000038],[-59.237220999999977,55.048332000000073],[-59.242500000000007,55.061104000000057],[-59.243057000000022,55.06638300000003],[-59.240836999999999,55.071106000000043],[-59.236663999999962,55.07749200000012],[-59.133330999999941,55.120491000000015],[-59.051666000000012,55.153320000000065],[-59.035277999999892,55.156937000000028],[-59.023613000000012,55.15665400000006],[-58.960555999999883,55.134995000000004],[-58.956107999999915,55.130271999999991],[-58.955832999999984,55.126381000000094],[-58.955832999999984,55.10083000000003],[-58.958336000000031,55.09165999999999],[-58.961670000000026,55.085265999999933],[-58.971106999999961,55.071106000000043],[-58.980277999999998,55.059990000000084],[-59.005561999999998,55.032767999999976],[-59.001944999999978,55.017769000000101],[-58.972495999999978,54.995544000000052],[-58.947220000000016,54.985550000000046],[-58.907218999999941,54.963882000000126],[-58.896950000000004,54.95638300000013],[-58.894164999999873,54.952773999999977],[-58.895279000000016,54.947769000000108],[-58.90055099999995,54.943878000000041],[-58.90694400000001,54.940269000000001],[-58.964721999999881,54.917496000000142],[-59.013061999999991,54.896103000000039],[-59.015556000000004,54.892220000000066],[-59.013618000000008,54.889717000000132],[-58.904167000000029,54.844711000000075],[-58.838332999999977,54.832497000000046],[-58.832503999999972,54.831940000000145],[-58.824172999999973,54.834434999999985],[-58.694442999999978,54.820549000000028],[-58.685271999999941,54.815543999999989],[-58.560828999999956,54.776100000000042],[-58.443610999999919,54.77388000000002],[-58.398887999999943,54.78472099999999],[-58.391944999999964,54.787498000000085],[-58.379997000000003,54.789993000000095],[-58.328056000000004,54.792496000000085],[-58.243331999999953,54.794716000000051],[-58.196663000000001,54.795272999999952],[-58.191108999999983,54.794158999999979],[-58.188332000000003,54.792496000000085],[-58.18721800000003,54.788605000000018],[-58.188605999999936,54.783051],[-58.19388600000002,54.777771000000087],[-58.196944999999971,54.773322999999948],[-58.198607999999979,54.767768999999987],[-58.184166000000005,54.751662999999951],[-58.173332000000016,54.745544000000109],[-58.145554000000004,54.739716000000044],[-58.110001000000011,54.737213000000054],[-58.001395999999943,54.73333000000008],[-57.945548999999971,54.739989999999977],[-57.935554999999965,54.741104000000121],[-57.910552999999936,54.74193600000001],[-57.855002999999954,54.737495000000081],[-57.847495999999921,54.735550000000103],[-57.842498999999918,54.731377000000009],[-57.831947000000014,54.71776600000004],[-57.789725999999916,54.68221299999999],[-57.78556100000003,54.679161000000079],[-57.713057999999933,54.643051000000128],[-57.700835999999981,54.637215000000083],[-57.693610999999976,54.634720000000073],[-57.676392000000021,54.630272000000105],[-57.660278000000005,54.628043999999932],[-57.642226999999991,54.628043999999932],[-57.626388999999961,54.629990000000021],[-57.577781999999956,54.638885000000073],[-57.574172999999973,54.640274000000034],[-57.569725000000005,54.644440000000145],[-57.567223000000013,54.648331000000042],[-57.559165999999948,54.655822999999998],[-57.545836999999949,54.661659000000043],[-57.539168999999902,54.662209000000075],[-57.456389999999999,54.650826000000052],[-57.450553999999954,54.649993999999936],[-57.444716999999969,54.647217000000069],[-57.355834999999956,54.590271000000087],[-57.352782999999874,54.587493999999992],[-57.347495999999921,54.579437000000041],[-57.346947,54.574714999999969],[-57.348610000000008,54.566940000000045],[-57.380828999999949,54.507499999999993],[-57.385276999999917,54.503326000000129],[-57.396949999999947,54.495827000000133],[-57.427222999999969,54.487770000000012],[-57.484726000000023,54.482491000000039],[-57.493057000000022,54.483330000000137],[-57.519447000000014,54.483879000000115],[-57.590836000000024,54.484160999999972],[-57.618056999999965,54.483604000000071],[-57.672774999999888,54.479988000000048],[-57.694999999999993,54.475548000000003],[-57.702224999999942,54.47304500000007],[-57.704169999999976,54.470543000000134],[-57.705275999999969,54.466933999999981],[-57.700554000000011,54.45915999999994],[-57.686942999999928,54.458885000000123],[-57.658332999999971,54.463051000000007],[-57.587775999999963,54.467208999999968],[-57.487777999999935,54.47304500000007],[-57.47222099999999,54.473602000000142],[-57.449996999999939,54.467491000000052],[-57.442497000000003,54.464996000000042],[-57.425277999999992,54.45915999999994],[-57.421111999999994,54.455826000000002],[-57.421669000000009,54.453605999999979],[-57.523330999999985,54.417213000000061],[-57.621666000000005,54.383605999999929],[-57.629439999999988,54.381660000000068],[-57.660827999999924,54.376937999999996],[-57.678336999999999,54.375267000000122],[-57.695273999999927,54.374992000000077],[-57.715552999999943,54.376937999999996],[-57.743056999999965,54.380821000000083],[-57.783332999999971,54.388329000000113],[-57.797226000000023,54.38888500000013],[-57.876105999999936,54.386658000000068],[-57.910278000000005,54.385269000000051],[-58.050277999999878,54.377487000000087],[-58.146392999999989,54.365273000000059],[-58.154166999999973,54.363327000000027],[-58.172501000000011,54.357498000000021],[-58.185271999999941,54.351661999999919],[-58.248055000000022,54.320274000000097],[-58.259726999999998,54.312766999999951],[-58.261947999999961,54.311104000000057],[-58.259170999999981,54.30971500000004],[-58.253333999999995,54.308884000000035],[-58.221107000000018,54.311661000000129],[-58.197495000000004,54.31638300000003],[-58.108337000000006,54.328049000000021],[-58.098609999999951,54.327217000000076],[-58.095832999999971,54.325828999999999],[-58.233886999999982,54.254166000000055],[-58.24722300000002,54.252777000000037],[-58.344161999999926,54.244438000000002],[-58.383056999999894,54.241104000000007],[-58.410278000000005,54.241661000000136],[-58.417220999999984,54.242493000000024],[-58.431388999999967,54.242218000000037],[-58.453888000000006,54.23721299999994],[-58.566108999999926,54.204163000000108],[-58.579169999999976,54.199996999999996],[-58.601394999999968,54.186104],[-58.611945999999989,54.178329000000076],[-58.628882999999973,54.169716000000108],[-58.6444469999999,54.165267999999969],[-58.692771999999991,54.151657],[-58.724715999999944,54.145271000000093],[-58.756949999999961,54.141106000000093],[-58.771110999999962,54.13999200000012],[-58.797782999999981,54.139717000000076],[-58.833611000000019,54.145827999999995],[-58.842773000000022,54.145827999999995],[-58.860001000000011,54.144714000000022],[-58.915276000000006,54.138603000000103],[-58.928336999999942,54.13638300000008],[-59.114165999999955,54.103881999999999],[-59.190551999999968,54.087212000000079],[-59.248336999999992,54.071937999999989],[-59.27944199999996,54.064438000000109],[-59.376105999999993,54.046943999999996],[-59.434440999999936,54.0472180000001],[-59.470275999999956,54.051659000000029],[-59.510001999999929,54.059433000000013],[-59.534446999999943,54.05832700000002],[-59.561385999999914,54.05332199999998],[-59.575561999999991,54.049438000000123],[-59.582221999999945,54.046387000000095],[-59.586945000000014,54.0430530000001],[-59.588608000000022,54.040549999999939],[-59.584723999999994,54.035271000000137],[-59.517220000000009,53.997214999999983],[-59.509726999999998,53.995544000000109],[-59.494445999999982,53.996383999999978],[-59.265839000000028,54.023048000000074],[-59.049445999999932,54.057495000000074],[-58.877220000000023,54.094993999999986],[-58.703055999999947,54.124161000000129],[-58.431113999999923,54.217209000000025],[-58.426392000000021,54.221931000000097],[-58.417502999999954,54.228043000000071],[-58.406386999999938,54.229713000000061],[-58.379439999999931,54.229988000000105],[-58.371940999999936,54.228043000000071],[-58.374442999999928,54.224434000000088],[-58.449722000000008,54.154434000000094],[-58.605003000000011,54.044158999999979],[-58.610282999999981,54.041663999999912],[-58.632499999999936,54.035271000000137],[-58.654998999999975,54.031661999999983],[-58.678054999999915,54.029160000000104],[-58.704445000000021,54.027214000000015],[-58.721663999999919,54.027489000000003],[-58.749167999999997,54.031105000000082],[-58.759170999999981,54.032767999999976],[-58.768058999999937,54.034995999999978],[-58.779723999999931,54.037773000000072],[-58.80750299999994,54.043327000000033],[-58.835830999999928,54.0472180000001],[-58.879997000000003,54.044998000000078],[-58.937499999999943,54.041663999999912],[-59.002501999999936,54.032494000000042],[-59.038611999999944,54.02693899999997],[-59.041388999999981,54.026100000000042],[-59.042777999999942,54.022766000000047],[-59.040557999999862,54.021751000000052],[-59.006950000000018,54.018051000000014],[-58.951942000000031,54.014717000000019],[-58.944159999999954,54.01527400000009],[-58.92583499999995,54.014717000000019],[-58.922500999999954,54.013885000000073],[-58.919448999999929,54.010826000000122],[-58.923057999999969,54.007216999999969],[-58.954169999999976,53.983879000000002],[-58.963057999999933,53.977767999999969],[-58.980826999999977,53.966385000000116],[-59.008338999999921,53.955268999999987],[-59.015838999999971,53.953323000000125],[-59.047782999999981,53.948326000000009],[-59.072226999999941,53.947487000000024],[-59.115279999999871,53.946381000000031],[-59.12222300000002,53.945267000000058],[-59.172774999999945,53.934990000000028],[-59.201392999999996,53.927489999999977],[-59.331946999999957,53.888329000000056],[-59.345551,53.883049000000142],[-59.363891999999908,53.872215000000097],[-59.369445999999982,53.867493000000024],[-59.393616000000009,53.8555530000001],[-59.43638599999997,53.837493999999992],[-59.463332999999977,53.830551000000014],[-59.480277999999998,53.82777400000009],[-59.527221999999995,53.822495000000117],[-59.543892000000028,53.8211060000001],[-59.596107000000018,53.819160000000011],[-59.62388599999997,53.82027400000004],[-59.635833999999988,53.820831000000112],[-59.698607999999979,53.829437000000041],[-59.716659999999933,53.831939999999975],[-59.728049999999996,53.835266000000047],[-59.755561999999941,53.838600000000042],[-59.798339999999939,53.843322999999998],[-59.807776999999874,53.84388000000007],[-59.825835999999981,53.842766000000097],[-59.852782999999988,53.839432000000102],[-59.872498000000007,53.833603000000096],[-59.877219999999966,53.83027600000014],[-59.880553999999961,53.825272000000041],[-59.989165999999955,53.779716000000121],[-60.082779000000016,53.762497000000053],[-60.121108999999933,53.625267000000065],[-60.11999499999996,53.611381999999992],[-60.11361699999992,53.602493000000095],[-60.110000999999954,53.598877000000073],[-60.105002999999954,53.594711000000132],[-60.087501999999915,53.583602999999982],[-60.068061999999998,53.573326000000009],[-60.064444999999978,53.569716999999969],[-60.063332000000003,53.565826000000072],[-60.064444999999978,53.560272000000111],[-60.069724999999949,53.555550000000039],[-60.075004999999919,53.553047000000049],[-60.133888000000013,53.528328000000101],[-60.138335999999981,53.528603000000089],[-60.347495999999978,53.626938000000109],[-60.358611999999994,53.634438000000046],[-60.361670999999944,53.639717000000019],[-60.364448999999979,53.648331000000042],[-60.368056999999965,53.652771000000087],[-60.382499999999936,53.662490999999989],[-60.390556000000004,53.665543000000071],[-60.503059000000007,53.705826000000116],[-60.511115999999959,53.708327999999995],[-60.560279999999977,53.718323000000112],[-60.648613000000012,53.737376999999981],[-60.670612000000006,53.740047000000061],[-60.705115999999975,53.744881000000021],[-60.75894900000003,53.761718999999971],[-60.769943000000012,53.765381000000104],[-60.856948999999986,53.792770000000019],[-60.887222000000008,53.751389000000074],[-60.880279999999914,53.713051000000007],[-60.834723999999937,53.721375000000023],[-60.757724999999994,53.713768000000016],[-60.747222999999963,53.71276499999999],[-60.654891999999961,53.698768999999913],[-60.644225999999946,53.696937999999989],[-60.537223999999924,53.678329000000019],[-60.511947999999961,53.669716000000051],[-60.446563999999967,53.644852000000128],[-60.431670999999994,53.639160000000118],[-60.360282999999981,53.606658999999979],[-60.354445999999996,53.603882000000112],[-60.342223999999931,53.596099999999979],[-60.334166999999979,53.589156999999943],[-60.323333999999988,53.581665000000044],[-60.298614999999927,53.568054000000075],[-60.278884999999946,53.558601000000067],[-60.253616000000022,53.549995000000138],[-60.103614999999934,53.500549000000092],[-60.106392000000028,53.457497000000046],[-60.123328999999956,53.456100000000106],[-60.138054000000011,53.453605999999979],[-60.202224999999999,53.433600999999953],[-60.40582999999998,53.364158999999972],[-60.413329999999974,53.357773000000009],[-60.412216000000001,53.349716000000058],[-60.404998999999975,53.334160000000111],[-60.395835999999974,53.331383000000017],[-60.391113000000018,53.331107999999972],[-60.301392000000021,53.336380000000133],[-60.230826999999977,53.343323000000112],[-60.216109999999901,53.345824999999991],[-60.203888000000006,53.349716000000058],[-60.198607999999865,53.350548000000003],[-60.188605999999993,53.350548000000003],[-60.18332700000002,53.349433999999974],[-60.176665999999898,53.346382000000062],[-60.175002999999947,53.343048000000067],[-60.174720999999977,53.338043000000027],[-60.180831999999896,53.329993999999999],[-60.190833999999938,53.321937999999932],[-60.202224999999999,53.313605999999936],[-60.208892999999989,53.310546999999985],[-60.283332999999914,53.289436000000137],[-60.295836999999949,53.286659000000043],[-60.333885000000009,53.280548000000124],[-60.367217999999923,53.27777100000003],[-60.389724999999999,53.27693899999997],[-60.418335000000013,53.269440000000145],[-60.416663999999969,53.268326000000002],[-60.398055999999997,53.265549000000078],[-60.316108999999926,53.264160000000061],[-60.289444000000003,53.263885000000073],[-60.133613999999966,53.283607000000131],[-60.024719000000005,53.354996000000142],[-59.953887999999949,53.406937000000028],[-59.931945999999925,53.42582700000014],[-59.84194199999996,53.476379000000065],[-59.821670999999981,53.471656999999993],[-59.806106999999997,53.471100000000092],[-59.798057999999969,53.472214000000065],[-59.789168999999958,53.474434000000088],[-59.785003999999958,53.477210999999954],[-59.783614999999998,53.481102000000021],[-59.78472899999997,53.485268000000133],[-59.799170999999944,53.491378999999995],[-59.823615999999959,53.49332400000003],[-59.858611999999994,53.496101000000124],[-59.89916999999997,53.516936999999928],[-59.901108000000022,53.519714000000022],[-59.898337999999967,53.52416199999999],[-59.893058999999994,53.528603000000089],[-59.875556999999958,53.534996000000035],[-59.855835000000013,53.536942000000124],[-59.847495999999978,53.536658999999986],[-59.80999799999995,53.529716000000008],[-59.773613000000012,53.517769000000044],[-59.763061999999934,53.515274000000034],[-59.755561999999941,53.514998999999989],[-59.740279999999984,53.515831000000105],[-59.621108999999933,53.527214000000129],[-59.605834999999956,53.529716000000008],[-59.560829000000012,53.540550000000053],[-59.53082999999998,53.548882000000049],[-59.517501999999979,53.553878999999938],[-59.478333000000021,53.572769000000108],[-59.329726999999991,53.65387700000008],[-59.162216000000001,53.671379000000115],[-59.079726999999934,53.680550000000096],[-59.074172999999917,53.683051999999975],[-59.023887999999999,53.713882000000012],[-59.01916499999993,53.719154000000117],[-59.010833999999932,53.744438000000116],[-59.010559000000001,53.746658000000139],[-59.018889999999999,53.749161000000129],[-59.035003999999958,53.74721500000004],[-59.041388999999981,53.748604],[-59.046111999999937,53.75277699999998],[-59.06527699999998,53.791107000000068],[-59.066390999999896,53.794998000000135],[-59.058334000000002,53.803322000000037],[-59.049445999999932,53.810822000000087],[-59.042777999999942,53.81499500000001],[-58.870276999999987,53.904709000000139],[-58.550277999999935,54.009163000000001],[-58.326110999999969,54.046271999999988],[-58.216942000000017,54.071770000000129],[-58.204612999999995,54.074604000000136],[-58.19377499999996,54.075939000000062],[-58.180446999999958,54.075436000000025],[-58.156780000000026,54.071434000000011],[-58.15060799999992,54.069438999999988],[-58.028610000000015,54.079720000000123],[-57.951942000000031,54.070831000000055],[-57.938605999999993,54.070273999999984],[-57.815552000000025,54.066101000000003],[-57.797501000000011,54.066101000000003],[-57.789443999999946,54.068603999999993],[-57.786391999999921,54.071662999999944],[-57.786117999999988,54.075271999999984],[-57.789443999999946,54.079720000000123],[-57.805556999999908,54.086654999999951],[-57.851668999999958,54.100273000000016],[-57.869720000000029,54.103050000000053],[-58.07650000000001,54.124489000000096],[-58.152495999999928,54.129158000000018],[-58.167163999999957,54.127827000000025],[-58.181503000000021,54.124660000000006],[-58.195830999999998,54.120159000000115],[-58.210834999999918,54.113995000000102],[-58.214668000000017,54.111828000000003],[-58.216994999999997,54.110493000000076],[-58.223000000000013,54.103992000000062],[-58.226832999999942,54.101826000000074],[-58.229831999999931,54.100822000000107],[-58.236834999999928,54.099327000000073],[-58.245166999999981,54.099158999999986],[-58.254332999999974,54.101322000000096],[-58.415276000000006,54.135269000000108],[-58.4183349999999,54.139717000000076],[-58.417220999999984,54.143051000000071],[-58.383613999999966,54.189712999999983],[-58.379439999999931,54.193877999999984],[-58.373885999999914,54.198326000000122],[-58.367500000000007,54.201934999999935],[-58.355559999999912,54.20638300000013],[-58.203613000000018,54.234161000000029],[-58.177779999999984,54.236938000000123],[-58.030829999999924,54.235550000000046],[-58.003058999999951,54.233879000000002],[-57.99361399999998,54.230819999999994],[-57.973609999999951,54.221656999999993],[-57.961112999999898,54.217766000000097],[-57.935271999999998,54.211662000000103],[-57.866660999999965,54.197769000000051],[-57.856392000000028,54.196098000000006],[-57.659163999999919,54.199432000000002],[-57.468329999999924,54.193877999999984],[-57.428336999999885,54.18249499999996],[-57.384170999999981,54.150543000000027],[-57.385559000000001,54.145827999999995],[-57.389998999999989,54.141106000000093],[-57.383613999999966,54.128875999999991],[-57.370833999999945,54.106384000000048],[-57.367774999999995,54.10193600000008],[-57.323333999999988,54.039719000000105],[-57.221106999999961,53.918326999999977],[-57.115279999999984,53.838600000000042],[-57.092773000000022,53.831664999999987],[-57.083611000000019,53.828605999999979],[-57.079726999999991,53.826660000000118],[-57.076392999999996,53.823051000000078],[-57.077498999999932,53.819442999999978],[-57.151389999999992,53.735824999999977],[-57.302498000000014,53.679161000000079],[-57.314720000000023,53.676383999999985],[-57.387504999999976,53.658325000000048],[-57.429169000000002,53.647491000000002],[-57.484169000000009,53.631660000000011],[-57.49111199999993,53.628876000000048],[-57.52305599999994,53.612495000000081],[-57.538894999999968,53.602218999999991],[-57.544448999999986,53.597771000000023],[-57.549995000000024,53.591934000000037],[-57.550551999999982,53.587494000000049],[-57.545279999999991,53.584717000000126],[-57.541114999999991,53.585266000000104],[-57.533332999999914,53.587494000000049],[-57.52777900000001,53.591377000000136],[-57.49361399999998,53.609436000000073],[-57.479720999999984,53.61332700000014],[-57.458054000000004,53.617493000000081],[-57.444716999999969,53.618599000000074],[-57.373610999999926,53.606658999999979],[-57.316665999999998,53.579720000000009],[-57.313613999999973,53.573608000000036],[-57.303054999999915,53.530823000000112],[-57.302498000000014,53.526382000000012],[-57.303329000000019,53.509437999999932],[-57.305557000000022,53.49971800000003],[-57.306664000000012,53.496384000000091],[-57.317779999999971,53.47554800000006],[-57.328887999999949,53.461937000000091],[-57.332503999999915,53.458328000000051],[-57.345832999999914,53.450546000000088],[-57.336945000000014,53.440269000000114],[-57.316390999999953,53.435822000000087],[-57.303329000000019,53.43332700000002],[-57.297501000000011,53.433052000000032],[-57.289169000000015,53.433875999999998],[-57.283332999999971,53.438598999999954],[-57.293616999999983,53.467766000000097],[-57.285277999999948,53.477485999999999],[-57.281386999999995,53.479430999999977],[-57.248610999999983,53.494156000000089],[-57.23750299999989,53.498604000000057],[-57.130279999999971,53.593880000000127],[-57.111389000000031,53.621658000000082],[-57.06138599999997,53.671379000000115],[-57.014724999999942,53.711380000000133],[-56.973610000000008,53.724434000000031],[-56.959442000000024,53.728325000000098],[-56.926391999999964,53.730270000000075],[-56.916663999999969,53.728600000000085],[-56.860832000000016,53.722488000000112],[-56.797226000000023,53.719986000000063],[-56.660827999999924,53.720543000000134],[-56.62222300000002,53.733604000000071],[-56.628608999999983,53.741936000000067],[-56.628333999999995,53.744156000000032],[-56.626105999999936,53.745827000000133],[-56.603332999999964,53.759163000000058],[-56.483611999999994,53.782494000000099],[-56.464691000000016,53.782272000000034],[-56.448333999999988,53.777771000000143],[-56.431670999999994,53.764442000000031],[-56.426948999999979,53.757216999999969],[-56.413886999999988,53.727768000000026],[-56.414443999999946,53.721931000000041],[-56.415275999999949,53.720543000000134],[-56.421669000000009,53.716933999999924],[-56.429169000000002,53.71527100000003],[-56.438048999999921,53.71527100000003],[-56.446944999999971,53.716933999999924],[-56.482773000000009,53.718048000000124],[-56.506393000000003,53.716933999999924],[-56.521666999999979,53.714714000000129],[-56.544448999999986,53.709717000000012],[-56.662215999999944,53.679993000000024],[-56.680283000000031,53.672768000000133],[-56.627220000000023,53.650826000000052],[-56.618057000000022,53.647491000000002],[-56.340552999999943,53.588325999999938],[-56.320281999999963,53.585266000000104],[-56.225554999999872,53.577217000000076],[-56.21665999999999,53.577217000000076],[-56.205832999999984,53.581665000000044],[-56.15582999999998,53.591660000000104],[-56.078613000000018,53.58387799999997],[-56.069167999999934,53.582771000000037],[-56.031386999999995,53.57638500000013],[-56.027221999999995,53.575272000000041],[-55.991385999999977,53.552216000000044],[-55.978881999999942,53.542221000000097],[-55.990836999999942,53.510277000000087],[-55.996947999999918,53.505272000000048],[-56.008780999999942,53.503666000000067],[-56.01294699999994,53.503993999999977],[-56.017444999999952,53.505996999999979],[-56.018611999999962,53.508495000000096],[-56.021110999999962,53.513054000000011],[-56.022498999999982,53.516388000000006],[-56.047501000000011,53.533607000000075],[-56.063332000000003,53.540833000000021],[-56.145836000000031,53.553047000000049],[-56.208892999999989,53.559433000000126],[-56.242500000000007,53.559990000000028],[-56.258338999999921,53.559158000000139],[-56.264724999999999,53.555550000000039],[-56.266113000000018,53.549995000000138],[-56.263335999999924,53.540276000000119],[-56.259170999999924,53.537773000000129],[-56.145553999999947,53.500000000000114],[-56.115279999999927,53.491936000000123],[-56.077498999999932,53.483330000000024],[-56.037780999999995,53.461655000000007],[-56.027442999999948,53.454326999999978],[-55.965552999999943,53.40915700000005],[-55.965836000000024,53.40554800000001],[-55.96944400000001,53.400542999999971],[-56.00417299999998,53.388045999999974],[-56.025275999999963,53.37971500000009],[-56.03167000000002,53.376099000000011],[-56.03833800000001,53.367493000000138],[-56.029998999999975,53.365273000000116],[-56.020835999999974,53.364158999999972],[-56.013061999999991,53.364440999999999],[-56.001396,53.366661000000022],[-55.988051999999982,53.369713000000104],[-55.981383999999935,53.373047000000099],[-55.969497999999874,53.380775000000028],[-55.959723999999937,53.390273999999977],[-55.953132999999923,53.392441000000019],[-55.938605999999936,53.395271000000037],[-55.925116999999943,53.396133000000134],[-55.912216000000001,53.394997000000103],[-55.893616000000009,53.389717000000076],[-55.881385999999964,53.382767000000001],[-55.808051999999975,53.340546000000018],[-55.807456999999943,53.284966000000111],[-55.745834000000002,53.249435000000119],[-55.747498000000007,53.143607999999972],[-55.749442999999985,53.139717000000076],[-55.754172999999923,53.134995000000004],[-55.833312999999919,53.097931000000017],[-55.879856000000018,53.073795000000018],[-55.91194200000001,53.028327999999988],[-55.926666000000012,53.023323000000119],[-55.934440999999936,53.021660000000054],[-55.943329000000006,53.021102999999925],[-55.964447000000007,53.021660000000054],[-55.990836999999942,53.024162000000103],[-56.008338999999978,53.02748900000006],[-56.025001999999972,53.033606999999961],[-56.034172000000012,53.036110000000122],[-56.056106999999997,53.038329999999974],[-56.160278000000005,53.033606999999961],[-56.165833000000021,53.032768000000033],[-56.166945999999996,53.029434000000037],[-56.165276000000006,53.024993999999992],[-56.040840000000003,53.005829000000062],[-55.958611000000019,52.99610100000001],[-55.949439999999981,52.994995000000017],[-55.889442000000031,52.969154000000117],[-55.885276999999974,52.966384999999946],[-55.834166999999979,52.921936000000017],[-55.80471799999998,52.877213000000097],[-55.803328999999962,52.839431999999931],[-55.803885999999977,52.831940000000031],[-55.808051999999975,52.82638500000013],[-55.841109999999958,52.827217000000019],[-55.879165999999941,52.824165000000107],[-55.973610000000008,52.810547000000099],[-55.987777999999992,52.806099000000131],[-56.060829000000012,52.766106000000093],[-55.964721999999938,52.681664000000069],[-55.96055599999994,52.679161000000136],[-55.950553999999897,52.677216000000101],[-55.933608999999933,52.675552000000096],[-55.918335000000013,52.677490000000034],[-55.874717999999973,52.68332700000002],[-55.786948999999993,52.683601000000124],[-55.779167000000029,52.682495000000074],[-55.77305599999994,52.679161000000136],[-55.768889999999942,52.674995000000024],[-55.740836999999999,52.646385000000009],[-55.73860899999994,52.64276899999993],[-55.739998000000014,52.639434999999935],[-55.757506999999919,52.614440999999999],[-55.769447000000014,52.608047000000113],[-55.792777999999998,52.60166200000009],[-55.888892999999996,52.608047000000113],[-55.898613000000012,52.609993000000031],[-55.939940999999976,52.628268999999989],[-55.958777999999995,52.635604999999941],[-56.032775999999956,52.654709000000025],[-56.048889000000031,52.656096999999932],[-56.075004999999919,52.655822999999998],[-56.108611999999937,52.655266000000097],[-56.122771999999941,52.651100000000042],[-56.123885999999857,52.647491000000002],[-56.119720000000029,52.643326000000002],[-56.112007000000006,52.641036999999983],[-56.099060000000009,52.641006000000118],[-56.071945000000028,52.644714000000135],[-56.06361400000003,52.644714000000135],[-56.054442999999992,52.643608000000086],[-55.982773000000009,52.622490000000028],[-55.974998000000028,52.619713000000104],[-55.970832999999914,52.615546999999992],[-55.972770999999966,52.610825000000091],[-55.985275000000001,52.602218999999991],[-56.039169000000015,52.584991000000059],[-56.155777,52.557438000000104],[-56.172611000000018,52.553608000000111],[-56.186110999999983,52.550938000000031],[-56.200779000000011,52.550938000000031],[-56.253058999999951,52.543884000000048],[-56.297500999999954,52.563606000000107],[-56.315552000000025,52.572219999999959],[-56.322501999999986,52.574715000000026],[-56.333327999999995,52.576942000000088],[-56.356391999999971,52.580276000000026],[-56.456389999999942,52.592765999999983],[-56.478607000000011,52.594437000000028],[-56.496871999999939,52.594147000000021],[-56.452782000000013,52.56888600000002],[-56.444160000000011,52.565826000000129],[-56.28055599999999,52.534996000000092],[-56.262221999999952,52.531662000000097],[-56.19755600000002,52.525105000000053],[-56.153556999999921,52.526103999999918],[-55.988892000000021,52.506386000000077],[-55.829726999999934,52.51249700000011],[-55.761390999999946,52.498878000000047],[-55.751395999999943,52.496101000000124],[-55.746947999999975,52.493881000000101],[-55.743057000000022,52.490829000000019],[-55.735001000000011,52.478599999999972],[-55.734169000000009,52.474709000000075],[-55.735832000000016,52.469154000000003],[-55.764450000000011,52.45388000000014],[-55.767501999999922,52.451103000000046],[-55.766395999999986,52.447769000000051],[-55.732772999999952,52.442215000000033],[-55.706107999999915,52.441658000000132],[-55.676666000000012,52.441658000000132],[-55.656661999999983,52.441933000000006],[-55.648612999999955,52.439712999999983],[-55.645554000000004,52.437492000000077],[-55.642775999999969,52.432770000000005],[-55.642775999999969,52.427773000000059],[-55.641669999999976,52.368881000000044],[-55.641944999999964,52.363883999999928],[-55.643332999999984,52.358330000000137],[-55.647780999999952,52.354164000000026],[-55.65444199999996,52.351661999999976],[-55.782501000000025,52.334160000000111],[-55.825004999999976,52.343048000000124],[-55.92861199999993,52.369438000000116],[-56.068335999999931,52.407210999999961],[-56.173614999999984,52.438881000000038],[-56.180556999999965,52.440826000000072],[-56.194442999999922,52.442215000000033],[-56.196945000000028,52.439987000000087],[-56.195273999999984,52.435822000000087],[-56.191382999999973,52.431107000000054],[-56.181388999999967,52.423050000000103],[-56.169448999999986,52.416100000000029],[-55.956664999999987,52.350272999999959],[-55.857779999999991,52.325271999999984],[-55.707222000000002,52.248329000000126],[-55.677222999999969,52.208327999999938],[-55.68638599999997,52.109436000000017],[-55.696945000000028,52.088326000000052],[-55.701667999999927,52.082214000000079],[-55.896666999999923,51.950828999999999],[-56.023330999999985,51.901932000000102],[-56.203330999999935,51.793326999999977],[-56.209723999999994,51.789719000000048],[-56.235832000000016,51.783607000000075],[-56.346663999999976,51.759720000000016],[-56.468886999999995,51.709434999999985],[-56.689720000000023,51.592216000000008],[-56.764450000000011,51.548607000000061],[-56.804169000000002,51.507773999999984],[-56.805832000000009,51.502219999999966],[-56.808891000000017,51.496384000000091],[-56.813613999999973,51.491661000000136],[-56.942771999999991,51.427489999999921],[-56.949721999999952,51.424713000000054],[-56.956947000000014,51.423050000000103],[-57.005561999999941,51.41944100000012],[-57.078056000000004,51.41443600000008],[-57.104239999999947,51.412674000000095],[-57.142226999999991,51.424164000000076],[-57.232215999999937,51.498604000000114],[-57.237777999999992,51.502219999999966],[-57.247222999999963,51.504166000000055],[-57.255561999999998,51.504439999999988],[-57.263617999999894,51.503608999999983],[-57.421386999999925,51.480545000000006],[-57.437774999999988,51.461105000000032],[-57.43638599999997,51.45638300000013],[-57.440833999999938,51.449997000000053],[-57.447495000000004,51.447487000000024],[-57.454720000000009,51.445541000000105],[-57.58666199999999,51.429718000000094],[-57.602225999999916,51.428047000000049],[-57.676665999999955,51.429993000000081],[-57.685828999999956,51.430824000000086],[-57.688605999999936,51.435547000000099],[-57.692497000000003,51.455268999999987],[-57.691939999999931,51.461105000000032],[-57.689437999999939,51.466385000000059],[-57.705275999999969,51.469437000000028],[-57.730826999999863,51.471099999999922],[-57.748054999999965,51.472214000000122],[-57.883888000000013,51.392493999999999],[-57.889998999999989,51.388885000000016],[-57.942771999999991,51.356102000000021],[-57.954720000000009,51.34804500000007],[-57.966110000000015,51.338599999999985],[-57.975554999999986,51.328330999999935],[-57.986664000000019,51.319442999999978],[-58.006950000000018,51.31249200000002],[-58.021384999999952,51.308884000000091],[-58.211387999999943,51.271659999999997],[-58.297225999999966,51.268599999999992],[-58.305556999999965,51.268599999999992],[-58.324448000000018,51.272217000000126],[-58.407776000000013,51.295547000000056],[-58.620551999999975,51.277214000000015],[-58.628051999999968,51.275551000000064],[-58.675003000000004,51.255271999999991],[-58.680000000000007,51.250000000000057],[-58.680556999999908,51.244156000000032],[-58.680000000000007,51.234161000000086],[-58.678336999999999,51.229431000000091],[-58.675559999999905,51.224991000000045],[-58.671111999999937,51.220824999999991],[-58.665549999999996,51.216934000000094],[-58.635833999999932,51.197769000000108],[-58.621383999999978,51.191100999999946],[-58.592223999999931,51.18471500000004],[-58.61333499999995,51.157494000000042],[-58.618606999999997,51.153046000000074],[-58.630554000000018,51.145828000000051],[-58.713615000000004,51.106102000000078],[-58.726944000000003,51.099998000000028],[-58.733329999999967,51.09804500000007],[-58.785278000000005,51.088042999999971],[-58.914718999999991,51.052490000000091],[-58.928054999999972,51.048607000000004],[-58.990836999999885,51.021935000000099],[-59.003333999999938,51.015549000000021],[-59.006110999999976,51.009719999999959],[-59.003616000000022,51.004440000000102],[-58.99888599999997,51.001106000000107],[-58.990279999999984,50.998046999999985],[-58.981383999999935,50.99721500000004],[-58.975272999999959,51.000832000000003],[-58.96832999999998,51.002495000000124],[-58.959441999999967,51.001663000000008],[-58.954720000000009,50.996658000000139],[-58.952498999999989,50.992493000000138],[-58.946662999999944,50.833878000000027],[-58.948051000000021,50.828331000000048],[-59.010559000000001,50.754166000000055],[-59.015282000000013,50.748604000000114],[-59.041672000000005,50.751389000000131],[-59.061385999999914,50.755554000000132],[-59.068335999999988,50.759163000000115],[-59.087218999999948,50.775268999999923],[-59.093055999999933,50.78943600000008],[-59.09444400000001,50.799438000000066],[-59.094718999999941,50.815269000000058],[-59.118889000000024,50.803604000000121],[-59.15582999999998,50.771103000000039],[-59.186385999999914,50.74221799999998],[-59.228881999999999,50.738327000000083],[-59.397223999999994,50.657211000000132],[-59.454444999999964,50.621933000000126],[-59.459723999999937,50.61721],[-59.51916499999993,50.552773000000002],[-59.570556999999951,50.493607000000054],[-59.580001999999922,50.482765000000029],[-59.585274000000027,50.478043000000127],[-59.591667000000029,50.475266000000033],[-59.598610000000008,50.473602000000028],[-59.733611999999937,50.444992000000013],[-59.778336000000024,50.438881000000094],[-59.803885999999977,50.438881000000094],[-59.810555000000022,50.437492000000134],[-59.816108999999926,50.433876000000055],[-59.821670999999981,50.429436000000067],[-59.872222999999963,50.381103999999993],[-59.881667999999934,50.371658000000025],[-59.881667999999934,50.366386000000091],[-59.858893999999964,50.329436999999984],[-59.853888999999924,50.326102999999989],[-59.844718999999998,50.324440000000095],[-59.837775999999963,50.326102999999989],[-59.834723999999881,50.338043000000084],[-59.834998999999982,50.343322999999998],[-59.830832999999984,50.349434000000088],[-59.824722000000008,50.351662000000033],[-59.815001999999993,50.349159000000043],[-59.813331999999946,50.344154000000003],[-59.817223000000013,50.33277099999998],[-59.827498999999989,50.323607999999979],[-59.833885000000009,50.319160000000011],[-59.860282999999981,50.310547000000042],[-59.905273000000022,50.291107000000068],[-60.005004999999983,50.248878000000104],[-60.114448999999922,50.233046999999942],[-60.147781000000009,50.274162000000103],[-60.184440999999993,50.279716000000121],[-60.236945999999989,50.268051000000014],[-60.291671999999949,50.245270000000005],[-60.298614999999927,50.243324000000143],[-60.324447999999961,50.244713000000104],[-60.360001000000011,50.250831999999946],[-60.404442000000017,50.251389000000074],[-60.458892999999989,50.251106000000107],[-60.48332999999991,50.250831999999946],[-60.491668999999945,50.250548999999978],[-60.498610999999926,50.248604],[-60.511672999999973,50.242493000000138],[-60.522223999999881,50.234718000000044],[-60.52694699999995,50.229156000000103],[-60.583611000000019,50.208327999999995],[-60.591666999999973,50.208046000000138],[-60.674445999999989,50.219986000000006],[-60.710555999999997,50.2227630000001],[-60.838607999999965,50.214995999999985],[-61.052222999999969,50.215546000000018],[-61.289443999999946,50.199158000000125],[-61.427779999999984,50.171379000000115],[-61.505561999999941,50.152489000000003],[-61.583610999999905,50.132492000000127],[-61.650832999999921,50.109993000000145],[-61.720832999999914,50.091934000000037],[-61.731612999999982,50.101936000000023],[-61.742106999999976,50.105270000000019],[-61.746277000000021,50.107269000000031],[-61.748280000000022,50.109940000000051],[-61.712104999999951,50.12226899999996],[-61.703780999999992,50.124771000000067],[-61.699443999999971,50.125435000000095],[-61.694442999999922,50.125435000000095],[-61.671386999999982,50.136940000000095],[-61.620551999999918,50.147491000000002],[-61.593055999999876,50.155266000000097],[-61.579726999999991,50.160820000000058],[-61.574447999999904,50.165543000000071],[-61.571945000000028,50.171661000000029],[-61.573891000000003,50.181664000000069],[-61.577224999999999,50.186104000000057],[-61.58916499999998,50.188880999999981],[-61.593612999999948,50.185546999999985],[-61.602225999999916,50.174438000000066],[-61.607779999999991,50.170829999999967],[-61.622222999999963,50.166100000000142],[-61.731833999999935,50.144268000000125],[-61.746997999999905,50.144431999999995],[-61.757503999999983,50.14527099999998],[-61.761832999999967,50.147269999999992],[-61.763663999999949,50.149768999999992],[-61.762999999999977,50.153271000000018],[-61.760665999999958,50.157097000000078],[-61.794448999999986,50.159431000000097],[-61.795279999999991,50.169991000000039],[-61.796950999999979,50.174713000000111],[-61.804442999999992,50.183326999999963],[-61.848884999999996,50.222488000000112],[-61.864723000000026,50.228600000000085],[-61.898338000000024,50.233604000000071],[-61.907218999999941,50.234160999999972],[-61.963332999999977,50.236107000000004],[-61.977218999999991,50.231934000000081],[-61.989723000000026,50.226379000000009],[-61.996666000000005,50.224158999999986],[-62.004172999999923,50.223045000000013],[-62.202498999999989,50.23443600000013],[-62.268889999999999,50.259720000000129],[-62.317779999999971,50.281380000000127],[-62.328056000000004,50.283882000000006],[-62.397498999999982,50.294441000000063],[-62.404167000000029,50.29222100000004],[-62.415549999999939,50.28472099999999],[-62.425560000000019,50.275269000000037],[-62.42999999999995,50.269714000000135],[-62.439994999999954,50.260551000000135],[-62.446105999999986,50.257500000000107],[-62.572226999999941,50.274712000000136],[-62.746947999999918,50.28472099999999],[-63.112502999999947,50.291382000000112],[-63.158332999999971,50.260277000000031],[-63.159163999999976,50.25471500000009],[-63.228607000000011,50.234718000000044],[-63.236663999999962,50.23443600000013],[-63.371940999999993,50.236655999999982],[-63.469443999999953,50.257216999999969],[-63.565552000000025,50.264159999999947],[-63.616660999999908,50.266663000000108],[-63.649726999999928,50.272766000000047],[-63.687499999999886,50.282494000000099],[-63.693885999999964,50.291939000000013],[-63.698607999999979,50.295272999999952],[-63.707503999999972,50.297775000000058],[-63.803328999999906,50.311661000000015],[-63.821388000000013,50.312209999999993],[-63.976104999999961,50.305549999999982],[-64.067229999999995,50.29222100000004],[-64.127776999999924,50.271935000000042],[-64.140563999999927,50.266937000000041],[-64.154175000000009,50.262497000000053],[-64.162215999999944,50.262214999999969],[-64.215285999999935,50.264999000000103],[-64.234726000000023,50.266937000000041],[-64.262787000000003,50.271660000000054],[-64.365279999999984,50.29222100000004],[-64.37388599999997,50.294998000000135],[-64.402221999999995,50.307495000000131],[-64.417770000000019,50.313048999999921],[-64.436661000000015,50.317772000000105],[-64.446105999999986,50.319160000000011],[-64.455001999999922,50.319442999999978],[-64.46305799999999,50.319160000000011],[-64.470839999999953,50.317772000000105],[-64.510009999999966,50.303046999999992],[-64.611938000000009,50.281380000000127],[-64.628052000000025,50.279160000000104],[-64.659438999999963,50.277214000000015],[-64.725006000000008,50.274436999999978],[-64.899993999999936,50.270828000000108],[-65.180557000000022,50.28555300000005],[-65.189986999999917,50.2866590000001],[-65.222777999999948,50.297775000000058],[-65.237503000000004,50.303879000000052],[-65.242492999999854,50.307769999999948],[-65.275009000000011,50.308044000000052],[-65.464447000000007,50.299437999999952],[-65.486663999999962,50.295272999999952],[-65.521666999999979,50.285828000000095],[-65.589995999999985,50.275269000000037],[-65.690552000000025,50.261108000000036],[-65.747771999999998,50.256943000000035],[-65.829453000000001,50.253326000000072],[-65.845839999999953,50.258888000000013],[-65.864440999999999,50.26888300000013],[-65.876389000000017,50.276382000000126],[-65.898055999999883,50.284995999999978],[-65.918059999999969,50.288329999999974],[-65.952498999999932,50.288887000000045],[-65.974166999999966,50.283882000000006],[-65.986937999999896,50.278328000000045],[-65.993057000000022,50.275269000000037],[-66.004180999999903,50.268326000000059],[-66.024718999999948,50.251389000000074],[-66.043334999999956,50.222214000000008],[-66.083327999999995,50.193603999999937],[-66.089721999999881,50.191375999999991],[-66.163329999999974,50.197212000000036],[-66.314163000000008,50.209717000000012],[-66.406386999999938,50.239989999999977],[-66.40695199999999,50.245270000000005],[-66.412215999999944,50.260551000000135],[-66.416945999999996,50.264442000000031],[-66.423049999999932,50.267768999999987],[-66.433318999999983,50.269714000000135],[-66.441665999999941,50.269157000000064],[-66.456389999999999,50.26638800000012],[-66.469727000000034,50.261939999999981],[-66.494720000000029,50.249435000000005],[-66.511948000000018,50.239158999999972],[-66.700835999999924,50.102493000000095],[-66.723327999999924,50.078331000000048],[-66.861937999999896,50.022491000000116],[-66.882492000000013,50.016662999999994],[-66.896118000000001,50.011940000000038],[-66.920273000000009,50.000275000000101],[-66.942489999999907,49.985825000000034],[-66.958617999999944,49.974709000000075],[-66.963622999999984,49.969154000000003],[-66.966399999999965,49.963326000000052],[-66.975280999999995,49.943603999999993],[-66.975829999999974,49.937767000000065],[-66.965560999999923,49.919441000000063],[-66.963332999999977,49.914711000000011],[-67.016402999999855,49.854712999999947],[-67.061385999999857,49.841377000000023],[-67.065276999999924,49.845543000000077],[-67.073897999999929,49.848045000000013],[-67.095839999999896,49.843605000000139],[-67.115829000000019,49.836655000000121],[-67.121658000000025,49.833327999999995],[-67.137222000000008,49.821381000000031],[-67.146666999999979,49.812492000000134],[-67.151397999999915,49.806937999999946],[-67.162216000000001,49.79055000000011],[-67.174164000000019,49.764717000000132],[-67.238892000000021,49.590546000000074],[-67.240828999999962,49.578880000000083],[-67.241378999999995,49.56749700000006],[-67.240828999999962,49.556655999999975],[-67.239990000000034,49.551659000000029],[-67.235000999999954,49.53555300000005],[-67.228881999999999,49.510277000000031],[-67.229171999999949,49.483047000000113],[-67.230834999999956,49.476936000000023],[-67.233886999999982,49.47026800000009],[-67.369155999999975,49.332771000000037],[-67.375,49.327217000000019],[-67.386123999999995,49.322220000000073],[-67.402785999999878,49.3211060000001],[-67.420273000000009,49.321663000000001],[-67.438599000000011,49.324440000000095],[-67.473617999999988,49.326660000000118],[-67.569732999999985,49.329994000000113],[-67.577498999999989,49.329163000000108],[-67.706389999999999,49.312767000000065],[-67.939163000000008,49.287773000000129],[-67.975280999999995,49.284996000000035],[-68.119720000000029,49.271660000000054],[-68.127212999999983,49.269440000000031],[-68.131942999999922,49.266106000000093],[-68.136397999999929,49.260550999999964],[-68.138900999999919,49.25471500000009],[-68.140563999999927,49.248604000000057],[-68.143889999999885,49.23054500000012],[-68.180832000000009,49.12193300000007],[-68.184997999999894,49.116104000000064],[-68.189712999999927,49.112212999999997],[-68.194992000000013,49.10833000000008],[-68.201110999999912,49.105552999999986],[-68.221663999999976,49.100273000000072],[-68.369445999999982,49.069443000000035],[-68.442489999999964,49.095543000000077],[-68.571395999999993,49.061104],[-68.59056099999998,49.054161000000022],[-68.606948999999929,49.042496000000142],[-68.626099000000011,49.023880000000133],[-68.696380999999974,48.939987000000087],[-68.876937999999996,48.85193600000008],[-69.047775000000001,48.773048000000074],[-69.06082200000003,48.767494000000056],[-69.064437999999996,48.762496999999996],[-69.084732000000031,48.72165700000005],[-69.089446999999893,48.709435000000042],[-69.093612999999948,48.691933000000006],[-69.096114999999941,48.674995000000138],[-69.099441999999897,48.663322000000107],[-69.106109999999944,48.644996999999989],[-69.111937999999896,48.63249200000007],[-69.123885999999914,48.614716000000101],[-69.142501999999922,48.594994000000042],[-69.14805599999994,48.591102999999976],[-69.15972899999997,48.58526599999999],[-69.166397000000018,48.583328000000051],[-69.184158000000025,48.584717000000069],[-69.201675000000023,48.588599999999985],[-69.218612999999948,48.589713999999958],[-69.226669000000015,48.588882000000069],[-69.231383999999935,48.585548000000074],[-69.236388999999917,48.581108000000029],[-69.265288999999939,48.541663999999969],[-69.279448999999943,48.515831000000048],[-69.282776000000013,48.504166000000112],[-69.283324999999934,48.493049999999982],[-69.282500999999968,48.482490999999982],[-69.292770000000019,48.457771000000093],[-69.301102000000014,48.446655000000135],[-69.432769999999948,48.307770000000005],[-69.437774999999988,48.303047000000049],[-69.454726999999991,48.291939000000013],[-69.597777999999948,48.207497000000046],[-69.672775000000001,48.14388300000013],[-69.683884000000035,48.137772000000041],[-69.691375999999991,48.137496999999996],[-69.80082699999997,48.153603000000032],[-69.810271999999941,48.155822999999998],[-69.734725999999966,48.113609000000054],[-69.730285999999978,48.10943600000013],[-69.732498000000021,48.103607000000125],[-69.786391999999864,47.994713000000047],[-69.839447000000007,47.907210999999961],[-69.925827000000027,47.773048000000074],[-69.93582200000003,47.764441999999974],[-70.002227999999945,47.711936999999978],[-70.015563999999983,47.702773999999977],[-70.071945000000028,47.674713000000054],[-70.077498999999989,47.672493000000088],[-70.091109999999958,47.669159000000093],[-70.132767000000001,47.644996999999989],[-70.179992999999968,47.608330000000024],[-70.190276999999924,47.599159000000043],[-70.202498999999989,47.583053999999947],[-70.206116000000009,47.576660000000118],[-70.208343999999897,47.570549000000028],[-70.209441999999967,47.553879000000109],[-70.207503999999915,47.533051],[-70.208618000000001,47.527214000000072],[-70.217223999999931,47.508330999999998],[-70.225554999999929,47.496384000000035],[-70.2308349999999,47.492493000000138],[-70.299727999999959,47.466933999999924],[-70.341674999999952,47.460548000000017],[-70.461944999999901,47.429993000000024],[-70.502501999999993,47.390830999999991],[-70.555831999999953,47.322769000000108],[-70.56639100000001,47.304161000000022],[-70.568618999999956,47.298049999999932],[-70.571120999999948,47.281104999999968],[-70.574172999999973,47.274437000000034],[-70.586120999999991,47.257773999999927],[-70.699431999999945,47.126099000000011],[-70.721664000000033,47.101387000000102],[-70.733063000000016,47.095543000000134],[-70.792496000000028,47.068329000000119],[-70.817504999999926,47.058884000000035],[-70.823623999999938,47.056938000000002],[-70.866942999999935,47.051383999999985],[-70.893341000000021,47.045273000000066],[-70.923049999999932,47.032211000000075],[-70.973617999999988,47.003326000000015],[-71.113616999999863,46.912491000000045],[-71.182495000000017,46.864158999999972],[-71.197495000000004,46.852493000000038],[-71.198607999999979,46.846382000000119],[-71.299164000000019,46.742218000000094],[-71.291945999999996,46.744156000000032],[-71.279723999999931,46.749161000000072],[-71.209441999999967,46.782494000000099],[-71.19888299999991,46.788887000000045],[-71.188888999999961,46.796661000000029],[-71.184432999999956,46.802773000000059],[-71.178329000000019,46.815269000000114],[-71.166396999999904,46.831108000000029],[-71.156112999999948,46.838882000000069],[-71.149993999999936,46.842491000000052],[-71.143615999999952,46.844711000000075],[-71.130554000000018,46.847487999999998],[-71.115279999999984,46.84887700000013],[-71.100280999999995,46.84887700000013],[-71.083327999999995,46.847487999999998],[-70.986937999999952,46.854164000000083],[-70.772232000000031,46.915825000000041],[-70.766402999999912,46.918884000000048],[-70.755004999999983,46.936652999999978],[-70.744445999999925,46.943320999999912],[-70.737502999999947,46.946098000000006],[-70.638061999999991,46.981658999999979],[-70.618880999999931,46.988045000000056],[-70.604996000000028,46.990273000000059],[-70.575012000000015,46.993324000000086],[-70.553328999999962,46.998047000000042],[-70.541381999999942,47.00249500000001],[-70.530288999999925,47.007773999999984],[-70.506957999999997,47.02027099999998],[-70.486389000000031,47.033607000000131],[-70.461120999999935,47.053604000000007],[-70.334166999999923,47.15554800000001],[-70.310271999999941,47.176659000000086],[-70.273055999999997,47.213608000000136],[-70.111114999999984,47.340546000000131],[-70.078888000000006,47.361106999999947],[-70.048888999999974,47.386107999999979],[-70.044158999999922,47.390830999999991],[-70.040833000000021,47.397217000000069],[-70.039992999999868,47.402771000000087],[-69.967498999999975,47.505829000000062],[-69.90194699999995,47.537216000000001],[-69.896392999999932,47.541107000000068],[-69.805832000000009,47.613052000000096],[-69.65943900000002,47.744713000000104],[-69.639998999999875,47.762772000000041],[-69.593063000000029,47.808884000000091],[-69.556655999999862,47.856384000000048],[-69.556380999999931,47.866661000000022],[-69.544158999999979,47.883605999999986],[-69.526672000000019,47.90415999999999],[-69.508057000000008,47.924438000000009],[-69.498885999999857,47.933875999999998],[-69.469727000000034,47.961937000000091],[-69.450561999999991,47.979155999999989],[-69.429169000000002,47.995270000000119],[-69.418335000000013,48.001389000000131],[-69.411666999999966,48.003326000000015],[-69.275283999999942,48.067772000000048],[-69.11610399999995,48.178604000000064],[-69.101943999999946,48.192764000000125],[-69.08666999999997,48.204994000000056],[-69.054168999999888,48.228600000000142],[-69.016402999999968,48.254165999999998],[-68.968613000000005,48.279990999999995],[-68.940552000000025,48.294998000000021],[-68.831679999999892,48.344711000000132],[-68.695267000000001,48.396385000000123],[-68.541381999999999,48.451385000000016],[-68.529448999999943,48.457214000000022],[-68.519164999999987,48.464157],[-68.513061999999877,48.469437000000084],[-68.496947999999918,48.490273000000116],[-68.473891999999978,48.515549000000135],[-68.469161999999869,48.520271000000037],[-68.453613000000018,48.532494000000099],[-68.434433000000013,48.541663999999969],[-68.422501000000011,48.545272999999952],[-68.407776000000013,48.548050000000046],[-68.375823999999852,48.546386999999925],[-68.368606999999997,48.547493000000145],[-68.354445999999996,48.551384000000041],[-68.348342999999886,48.554161000000136],[-68.336670000000026,48.561661000000015],[-68.283324999999991,48.600273000000016],[-68.236937999999952,48.625549000000035],[-68.211120999999935,48.636658000000125],[-68.193328999999892,48.643051000000071],[-68.179168999999945,48.646660000000111],[-68.15695199999999,48.64916199999999],[-68.125548999999978,48.648330999999985],[-68.111938000000009,48.651382000000012],[-67.973617999999988,48.695541000000105],[-67.709441999999854,48.793884000000105],[-67.531386999999995,48.859160999999972],[-67.209732000000031,48.935822000000087],[-67.087783999999999,48.960823000000119],[-67.067504999999983,48.966933999999981],[-67.015838999999971,48.986938000000123],[-66.991669000000002,48.999160999999958],[-66.960830999999985,49.011940000000038],[-66.922775000000001,49.026657000000057],[-66.916397000000018,49.028877000000023],[-66.722503999999958,49.08998900000006],[-66.421660999999915,49.162765999999976],[-66.306106999999997,49.186935000000119],[-66.225005999999951,49.200829000000056],[-66.089172000000019,49.218597000000045],[-66.074172999999973,49.219711000000018],[-65.832503999999915,49.231377000000009],[-65.678328999999962,49.245543999999995],[-65.496947999999975,49.261664999999994],[-65.447219999999959,49.262215000000026],[-65.394454999999994,49.259719999999959],[-65.359726000000023,49.256660000000124],[-64.996947999999918,49.220267999999919],[-64.916655999999989,49.20665699999995],[-64.825561999999934,49.187767000000008],[-64.805831999999953,49.18332700000002],[-64.795273000000009,49.176102000000128],[-64.791945999999939,49.171661000000029],[-64.774718999999948,49.159987999999998],[-64.763335999999924,49.154160000000047],[-64.748885999999914,49.148048000000074],[-64.731948999999986,49.142220000000009],[-64.660827999999867,49.123047000000042],[-64.641112999999962,49.118880999999988],[-64.606658999999922,49.117210000000114],[-64.58805799999999,49.112212999999997],[-64.376388999999961,48.997771999999998],[-64.235549999999989,48.910271000000023],[-64.221663999999976,48.898331000000098],[-64.21444699999995,48.889434999999992],[-64.208892999999989,48.880547000000035],[-64.152221999999938,48.764999000000046],[-64.152495999999985,48.759995000000117],[-64.158050999999944,48.75610400000005],[-64.167769999999962,48.758331000000055],[-64.208892999999989,48.782767999999976],[-64.213332999999977,48.786659000000043],[-64.229995999999971,48.797493000000088],[-64.244155999999975,48.803604000000007],[-64.290282999999931,48.821106000000043],[-64.298889000000031,48.823883000000137],[-64.315552000000025,48.828880000000026],[-64.377212999999927,48.846382000000062],[-64.395844000000011,48.851105000000075],[-64.512222000000008,48.87471000000005],[-64.530562999999916,48.87721300000004],[-64.548888999999917,48.878326000000072],[-64.543335000000013,48.873604],[-64.532775999999956,48.866936000000067],[-64.464447000000007,48.824440000000038],[-64.374161000000015,48.787773000000016],[-64.266662999999994,48.713326000000109],[-64.256957999999997,48.706099999999992],[-64.173049999999932,48.639435000000049],[-64.16194200000001,48.627487000000031],[-64.160004000000015,48.622765000000129],[-64.166945999999996,48.621376000000112],[-64.193053999999961,48.623604000000057],[-64.24110399999995,48.622215000000097],[-64.255004999999926,48.618599000000017],[-64.260833999999875,48.615828999999962],[-64.265288999999996,48.610825000000034],[-64.269729999999981,48.604713000000061],[-64.274718999999948,48.592766000000097],[-64.280563000000029,48.575271999999984],[-64.282500999999911,48.569160000000011],[-64.283324999999877,48.563605999999993],[-64.279174999999952,48.554161000000136],[-64.273330999999928,48.550545000000056],[-64.264174999999909,48.549164000000019],[-64.245834000000002,48.546661000000086],[-64.219161999999983,48.528327999999988],[-64.246384000000035,48.488044999999943],[-64.322509999999852,48.437210000000107],[-64.426392000000021,48.404160000000047],[-64.493057000000022,48.394440000000145],[-64.506667999999991,48.391663000000051],[-64.586945000000014,48.36832400000003],[-64.68638599999997,48.338326000000109],[-64.731383999999878,48.274712000000022],[-64.750290000000007,48.245827000000133],[-64.753890999999953,48.239989999999977],[-64.760559000000001,48.227211000000125],[-64.768065999999976,48.202774000000034],[-64.771392999999989,48.196381000000088],[-64.778610000000015,48.19499200000007],[-64.87332200000003,48.180550000000096],[-64.931670999999994,48.171661000000029],[-64.972503999999958,48.135269000000051],[-65.15306099999998,48.052216000000044],[-65.196654999999964,48.033607000000075],[-65.202788999999996,48.031380000000013],[-65.270003999999972,48.012771999999984],[-65.305832000000009,48.005554000000132],[-65.326950000000011,48.002220000000136],[-65.455565999999976,48.000274999999988],[-65.463897999999972,48.002777000000037],[-65.472778000000005,48.011383000000137],[-65.478607000000011,48.019714000000079],[-65.484726000000023,48.033882000000119],[-65.491104000000007,48.042496000000142],[-65.504181000000017,48.048882000000049],[-65.689162999999951,48.093879999999956],[-65.764449999999897,48.109993000000031],[-65.888900999999919,48.199158000000011],[-65.904175000000009,48.205826000000002],[-65.949996999999939,48.191101000000003],[-65.956389999999999,48.188881000000038],[-66.006957999999997,48.159156999999993],[-66.024718999999948,48.139160000000118],[-66.129714999999919,48.107216000000108],[-66.242767000000015,48.109161000000086],[-66.396392999999932,48.114998000000071],[-66.406386999999938,48.116385999999977],[-66.432495000000017,48.118599000000131],[-66.47084000000001,48.119438000000059],[-66.477782999999988,48.118049999999982],[-66.484160999999972,48.115546999999992],[-66.495543999999995,48.10943600000013],[-66.506392999999946,48.102218999999991],[-66.52555799999999,48.085548000000017],[-66.529998999999918,48.080551000000071],[-66.667220999999984,48.028328000000101],[-66.673614999999984,48.026099999999985],[-66.763717999999983,48.00622599999997],[-66.843703999999946,47.996650999999986],[-66.842498999999975,47.992218000000037],[-66.83666999999997,47.988884000000041],[-66.828888000000006,47.98721299999994],[-66.749999999999943,47.979988000000105],[-66.728881999999942,47.984436000000073],[-66.610824999999977,48.011107999999979],[-66.584731999999974,48.019440000000145],[-66.573333999999988,48.025826000000052],[-66.540558000000033,48.036385000000109],[-66.434433000000013,48.067497000000003],[-66.420273000000009,48.070549000000085],[-66.364165999999955,48.073326000000009],[-66.356658999999922,48.073326000000009],[-66.350829999999917,48.069717000000026],[-66.349990999999932,48.06471300000004],[-66.259170999999981,47.999435000000119],[-66.042220999999984,47.935822000000087],[-65.988892000000021,47.923881999999992],[-65.970276000000013,47.92083000000008],[-65.936935000000005,47.92083000000008],[-65.922225999999966,47.922768000000019],[-65.90695199999999,47.923325000000091],[-65.880279999999914,47.920547000000113],[-65.843886999999995,47.911377000000073],[-65.818619000000012,47.903877000000023],[-65.811385999999914,47.900825999999995],[-65.793609999999944,47.890831000000048],[-65.772780999999952,47.876380999999924],[-65.757506999999976,47.865273000000116],[-65.746383999999978,47.852775999999949],[-65.725005999999894,47.82749199999995],[-65.718613000000005,47.818886000000077],[-65.714447000000007,47.809433000000013],[-65.713622999999984,47.804161000000079],[-65.696944999999971,47.733047000000113],[-65.671936000000017,47.645828000000051],[-65.667770000000019,47.641380000000083],[-65.634734999999978,47.62082700000002],[-65.628326000000015,47.623046999999985],[-65.389998999999989,47.736107000000004],[-65.332779000000016,47.766937000000041],[-65.253890999999953,47.801659000000029],[-65.240829000000019,47.806655999999975],[-65.202788999999996,47.818603999999993],[-65.167496000000028,47.825271999999984],[-65.044723999999974,47.844436999999914],[-65.020844000000011,47.844993999999986],[-64.985000999999954,47.84137700000008],[-64.815552000000025,47.811104000000114],[-64.805557000000022,47.808884000000091],[-64.797226000000023,47.806381000000101],[-64.719161999999983,47.764441999999974],[-64.713332999999977,47.761108000000036],[-64.676665999999955,47.735550000000103],[-64.670273000000009,47.726936000000023],[-64.67332499999992,47.720268000000033],[-64.679442999999992,47.716659999999933],[-64.703612999999905,47.706940000000031],[-64.803328999999962,47.630547000000092],[-64.859725999999966,47.576660000000118],[-64.870093999999995,47.536293000000057],[-64.87110899999999,47.515831000000048],[-64.870270000000005,47.510826000000009],[-64.875548999999978,47.460823000000062],[-64.880828999999949,47.432495000000074],[-64.886397999999986,47.414154000000053],[-64.910004000000015,47.353049999999996],[-65.138061999999991,47.192215000000033],[-65.226944000000003,47.140831000000048],[-65.238327000000027,47.134720000000129],[-65.263335999999924,47.124435000000005],[-65.339721999999938,47.099433999999974],[-65.364165999999955,47.089714000000072],[-65.369994999999903,47.086655000000121],[-65.365279999999871,47.082771000000093],[-65.218886999999881,47.053604000000007],[-65.101105000000018,47.076942000000088],[-65.017226999999934,47.091377000000023],[-64.805557000000022,47.083054000000061],[-64.798614999999927,47.079993999999999],[-64.802779999999927,46.993049999999926],[-64.803328999999962,46.987495000000024],[-64.807220000000029,46.981658999999979],[-64.812209999999993,46.977768000000083],[-64.818068999999923,46.9741590000001],[-64.835830999999985,46.965827999999988],[-64.857223999999974,46.95277399999992],[-64.871933000000013,46.939430000000016],[-64.880279999999914,46.930549999999982],[-64.892226999999991,46.91443600000008],[-64.896117999999944,46.908882000000062],[-64.89916999999997,46.902489000000116],[-64.904998999999975,46.883606000000043],[-64.906386999999995,46.872490000000084],[-64.904998999999975,46.851105000000132],[-64.903609999999901,46.840827999999931],[-64.877212999999983,46.791107000000068],[-64.863891999999964,46.774436999999921],[-64.818068999999923,46.72165700000005],[-64.748610999999983,46.702773999999977],[-64.740279999999984,46.70249200000012],[-64.726394999999911,46.696381000000031],[-64.72084000000001,46.693047000000035],[-64.713332999999977,46.684158000000139],[-64.711120999999991,46.679993000000138],[-64.708617999999944,46.669991000000039],[-64.705001999999979,46.638329000000056],[-64.67332499999992,46.500832000000003],[-64.66194200000001,46.468048000000124],[-64.650833000000034,46.460548000000074],[-64.621933000000013,46.427216000000101],[-64.613616999999977,46.414435999999966],[-64.611938000000009,46.409714000000065],[-64.615004999999996,46.392494000000113],[-64.613051999999982,46.366104000000064],[-64.504181000000017,46.240273000000002],[-64.402221999999995,46.233047000000056],[-64.237503000000004,46.229155999999989],[-64.116942999999935,46.181938000000059],[-64.035552999999993,46.182213000000104],[-63.970832999999914,46.180549999999982],[-63.954444999999964,46.178046999999992],[-63.830283999999949,46.146385000000066],[-63.822226999999998,46.14388299999996],[-63.776389999999935,46.121101000000067],[-63.77305599999994,46.117493000000138],[-63.771111000000019,46.112769999999955],[-63.772498999999868,46.108046999999999],[-63.776947000000007,46.103325000000098],[-63.783057999999983,46.099716000000058],[-63.799445999999989,46.091377000000023],[-63.805557000000022,46.089157000000057],[-63.886391000000003,46.06082200000003],[-63.892501999999922,46.058884000000091],[-63.919448999999929,46.053047000000106],[-63.926948999999922,46.052490000000034],[-63.988608999999997,46.051933000000133],[-64.023330999999985,46.057495000000074],[-64.06806899999998,46.059433000000013],[-64.072509999999966,46.054710000000057],[-64.093886999999995,46.021659999999997],[-64.065001999999879,46.004715000000033],[-64.042785999999978,45.991898000000049],[-64.012512000000015,46.005829000000006],[-64.005279999999914,46.005554000000018],[-63.913054999999986,45.979987999999935],[-63.864166000000012,45.961105000000032],[-63.859443999999996,45.951934999999992],[-63.861389000000031,45.94582400000013],[-63.846106999999961,45.930824000000143],[-63.714721999999995,45.840546000000074],[-63.669998000000021,45.818054000000018],[-63.664161999999976,45.815268999999944],[-63.645836000000031,45.833328000000051],[-63.631667999999991,45.859436000000017],[-63.600280999999995,45.869986999999924],[-63.580558999999937,45.874435000000119],[-63.482498000000021,45.877213000000097],[-63.474441999999954,45.876938000000052],[-63.457221999999888,45.874160999999958],[-63.420279999999934,45.864997999999957],[-63.406661999999926,45.858887000000095],[-63.403884999999946,45.854439000000127],[-63.42861199999993,45.823607999999979],[-63.434440999999936,45.820831000000112],[-63.441108999999926,45.819442999999978],[-63.456107999999972,45.818886000000077],[-63.488051999999925,45.820831000000112],[-63.513335999999981,45.82416500000005],[-63.520835999999974,45.823883000000023],[-63.525832999999977,45.819992000000127],[-63.52666499999998,45.814438000000109],[-63.523612999999898,45.809989999999971],[-63.515556000000004,45.807213000000047],[-63.506950000000018,45.805824000000086],[-63.433608999999933,45.799438000000009],[-63.425560000000019,45.799164000000076],[-63.34332999999998,45.797492999999974],[-63.328338999999971,45.79833200000013],[-63.287223999999981,45.805549999999982],[-63.281113000000005,45.807769999999948],[-63.274170000000026,45.808883999999978],[-63.251113999999973,45.809714999999983],[-63.235000999999954,45.80860100000001],[-63.229439000000013,45.804993000000081],[-63.233329999999967,45.799438000000009],[-63.238892000000021,45.796386999999982],[-63.313889000000017,45.769440000000031],[-63.319725000000005,45.768051000000071],[-63.355835000000013,45.764442000000031],[-63.372222999999906,45.76638800000012],[-63.379997000000003,45.766106000000036],[-63.381942999999978,45.759995000000004],[-63.376663000000008,45.755829000000062],[-63.361114999999984,45.745543999999938],[-63.354445999999939,45.742493000000138],[-63.31361400000003,45.736938000000066],[-63.282501000000025,45.733330000000137],[-63.189719999999966,45.73443600000013],[-63.120833999999945,45.759438000000102],[-63.090552999999943,45.790276000000063],[-63.082779000000016,45.80332199999998],[-62.993888999999967,45.796386999999982],[-62.985275000000001,45.794998000000135],[-62.958336000000031,45.788887000000045],[-62.723610000000008,45.764160000000004],[-62.677779999999984,45.764160000000004],[-62.557220000000029,45.674713000000111],[-62.503890999999953,45.627487000000087],[-62.461944999999957,45.612495000000081],[-62.250281999999913,45.708327999999995],[-62.092772999999966,45.781105000000139],[-62.035003999999958,45.820831000000112],[-62.015006999999912,45.836655000000007],[-61.973327999999981,45.867210000000057],[-61.931388999999967,45.884720000000016],[-61.925559999999962,45.886107999999922],[-61.917503000000011,45.885551000000021],[-61.903052999999886,45.87943300000012],[-61.89805599999994,45.875267000000008],[-61.896110999999962,45.871101000000124],[-61.89805599999994,45.865273000000002],[-61.903327999999988,45.861382000000106],[-61.914718999999934,45.8555530000001],[-61.919448999999986,45.851105000000132],[-61.923332000000016,45.845543000000021],[-61.925559999999962,45.839432000000102],[-61.925277999999992,45.834434999999985],[-61.889998999999989,45.701385000000016],[-61.885558999999887,45.690544000000102],[-61.88138600000002,45.686653000000035],[-61.792228999999907,45.639160000000118],[-61.783332999999971,45.636658000000011],[-61.735000999999897,45.623322000000087],[-61.724998000000028,45.62082700000002],[-61.618056999999965,45.610550000000046],[-61.603888999999924,45.635269000000051],[-61.569999999999936,45.669991000000039],[-61.565001999999936,45.673882000000106],[-61.559165999999948,45.676659000000029],[-61.546111999999994,45.681106999999997],[-61.526107999999965,45.685265000000129],[-61.504447999999968,45.686935000000062],[-61.488892000000021,45.686935000000062],[-61.471382000000006,45.682495000000074],[-61.466110000000015,45.678878999999995],[-61.396392999999932,45.626656000000082],[-61.386947999999961,45.618880999999988],[-61.353427999999951,45.56971400000009],[-61.316146999999944,45.533173000000033],[-61.260001999999929,45.510277000000087],[-61.232356999999979,45.46119299999998],[-61.294167000000016,45.434714999999926],[-61.36500499999994,45.404160000000104],[-61.368057000000022,45.413879000000122],[-61.374717999999973,45.416938999999957],[-61.388610999999912,45.41415400000011],[-61.400832999999977,45.410820000000115],[-61.413329999999974,45.406937000000028],[-61.462219000000005,45.384438000000046],[-61.477492999999924,45.373047000000099],[-61.481666999999959,45.367767000000015],[-61.478881999999999,45.363327000000027],[-61.463889999999992,45.346939000000134],[-61.457222000000002,45.343605000000139],[-61.226386999999932,45.344154000000117],[-61.153327999999874,45.348327999999981],[-61.139441999999974,45.348877000000073],[-61.131667999999991,45.348327999999981],[-61.047225999999966,45.335548000000017],[-60.996391000000017,45.32749200000012],[-60.980552999999986,45.324440000000038],[-60.970551,45.321663000000115],[-60.966110000000015,45.318329000000119],[-60.964721999999995,45.313049000000035],[-60.96527900000001,45.295546999999999],[-60.970276000000013,45.269714000000079],[-61.050834999999893,45.231102000000078],[-61.0777819999999,45.219437000000028],[-61.090278999999953,45.215546000000131],[-61.109726000000023,45.210823000000119],[-61.123329000000012,45.208602999999925],[-61.139724999999942,45.210823000000119],[-61.142226999999991,45.215271000000087],[-61.222220999999934,45.23832700000014],[-61.267501999999979,45.246384000000091],[-61.313056999999901,45.242766999999958],[-61.323890999999946,45.236107000000118],[-61.360000999999954,45.209991000000059],[-61.373610999999926,45.196380999999974],[-61.373328999999956,45.191101000000117],[-61.365554999999972,45.188324000000023],[-61.349723999999981,45.186935000000005],[-61.340836000000024,45.184433000000126],[-61.344161999999869,45.178047000000049],[-61.34944200000001,45.174438000000009],[-61.355002999999954,45.171660999999915],[-61.384445000000028,45.15915700000005],[-61.397498999999982,45.156097000000045],[-61.450835999999924,45.145546000000081],[-61.458611000000019,45.144714000000022],[-61.543891999999971,45.141662999999994],[-61.638053999999954,45.120270000000062],[-61.724715999999944,45.091660000000047],[-61.898338000000024,45.024993999999992],[-62.026664999999923,44.984717999999987],[-62.087775999999963,44.97026800000009],[-62.286391999999921,44.928047000000049],[-62.391944999999964,44.908325000000048],[-62.476386999999875,44.895546000000138],[-62.521942000000024,44.850829999999974],[-62.546111999999937,44.821663000000001],[-62.641388000000006,44.809158000000082],[-62.795005999999887,44.780548000000067],[-62.801108999999997,44.778603000000089],[-62.813888999999961,44.750832000000003],[-62.809998000000007,44.734718000000044],[-62.851111999999944,44.718323000000112],[-62.928611999999873,44.733879000000115],[-63.012779000000023,44.773323000000005],[-63.020554000000004,44.773880000000077],[-63.055557000000022,44.772766000000104],[-63.0625,44.771378000000027],[-63.061942999999928,44.76638800000012],[-63.060279999999977,44.761664999999994],[-63.057502999999997,44.757217000000026],[-63.043616999999927,44.739989999999977],[-63.017776000000026,44.722488000000112],[-63.012504999999919,44.713326000000052],[-63.011948000000018,44.708046000000138],[-63.013618000000008,44.702774000000034],[-63.018332999999927,44.697487000000081],[-63.048339999999996,44.676102000000128],[-63.05471799999998,44.673325000000034],[-63.104445999999996,44.746658000000139],[-63.115279999999871,44.731377000000009],[-63.118331999999953,44.724991000000102],[-63.138335999999981,44.693047000000092],[-63.142776000000026,44.688599000000124],[-63.283057999999926,44.627212999999983],[-63.439994999999954,44.590828000000045],[-63.448883000000023,44.593048000000067],[-63.49500299999994,44.614715999999987],[-63.526336999999955,44.63610099999994],[-63.535167999999999,44.642769000000101],[-63.545334000000025,44.652107000000058],[-63.556999000000019,44.66160600000012],[-63.615836999999942,44.70249199999995],[-63.635001999999986,44.711380000000133],[-63.642775999999913,44.714157000000057],[-63.651107999999965,44.715546000000018],[-63.658332999999971,44.714995999999985],[-63.660552999999936,44.708328000000051],[-63.649444999999957,44.686104000000114],[-63.640556000000004,44.673050000000046],[-63.635559000000001,44.668884000000105],[-63.627776999999924,44.666382000000056],[-63.606110000000001,44.668884000000105],[-63.598610000000008,44.667770000000132],[-63.591942000000017,44.664711000000011],[-63.583611000000019,44.656936999999971],[-63.564223999999911,44.620769999999993],[-63.558220000000006,44.613266000000124],[-63.555388999999934,44.607769000000019],[-63.546059000000014,44.588604000000032],[-63.520835999999974,44.512771999999984],[-63.520279000000016,44.507773999999984],[-63.525276000000019,44.495270000000119],[-63.533332999999971,44.484993000000145],[-63.542777999999942,44.476379000000065],[-63.553054999999915,44.469711000000075],[-63.570838999999921,44.461937000000091],[-63.631110999999919,44.435822000000087],[-63.638610999999912,44.436935000000005],[-63.90694400000001,44.495270000000119],[-63.913611999999887,44.498604000000114],[-63.924171000000001,44.506103999999993],[-63.932502999999997,44.513329000000056],[-63.935555000000022,44.517494000000056],[-63.94388600000002,44.536110000000065],[-63.938605999999936,44.616104000000064],[-63.937774999999931,44.621658000000082],[-63.928054999999858,44.642220000000009],[-63.919166999999959,44.651657000000114],[-63.914443999999889,44.65554800000001],[-63.908607000000018,44.678047000000106],[-64.008347000000015,44.647491000000002],[-64.045272999999952,44.635826000000122],[-64.055266999999958,44.619438000000059],[-64.065551999999911,44.595268000000033],[-64.063888999999961,44.590545999999961],[-64.059158000000025,44.581665000000044],[-64.054992999999968,44.577773999999977],[-64.039443999999946,44.572495000000004],[-64.033614999999941,44.563049000000035],[-64.009170999999981,44.513329000000056],[-64.010009999999966,44.507773999999984],[-64.083069000000023,44.466660000000047],[-64.091949,44.46888000000007],[-64.110549999999989,44.478324999999984],[-64.121657999999968,44.485268000000133],[-64.125548999999978,44.510551000000021],[-64.123610999999926,44.527489000000116],[-64.119720000000029,44.53943600000008],[-64.121657999999968,44.544159000000093],[-64.127486999999917,44.552773000000116],[-64.135833999999988,44.560546999999929],[-64.146118000000001,44.568329000000062],[-64.170273000000009,44.586105000000032],[-64.200835999999981,44.576384999999959],[-64.305267000000015,44.533332999999971],[-64.337509000000011,44.411933999999974],[-64.346664000000033,44.362495000000138],[-64.346114999999998,44.357215999999994],[-64.329726999999934,44.328880000000026],[-64.311110999999926,44.319159999999954],[-64.303328999999962,44.316666000000055],[-64.295273000000009,44.316101000000003],[-64.290557999999976,44.31999200000007],[-64.292220999999984,44.324715000000026],[-64.299987999999928,44.32749200000012],[-64.305557000000022,44.330826000000116],[-64.309433000000013,44.335548000000017],[-64.307770000000005,44.340828000000101],[-64.301102000000014,44.341933999999924],[-64.273620999999878,44.330276000000083],[-64.260558999999944,44.324164999999994],[-64.239440999999943,44.294158999999922],[-64.253341999999918,44.27526899999998],[-64.258056999999951,44.269989000000123],[-64.283324999999877,44.253052000000082],[-64.319457999999997,44.264717000000019],[-64.355835000000013,44.273323000000119],[-64.391113000000018,44.253326000000015],[-64.428054999999915,44.228325000000041],[-64.432220000000029,44.223602000000028],[-64.444716999999912,44.190269000000001],[-64.616394000000014,44.133049000000142],[-64.61860699999994,44.071937999999989],[-64.666397000000018,43.990273000000116],[-64.671386999999982,43.986382000000049],[-64.732223999999917,43.951660000000004],[-64.738051999999925,43.949432000000058],[-64.745269999999948,43.948874999999987],[-64.776397999999972,43.950828999999999],[-64.80610699999994,43.950546000000031],[-64.812774999999931,43.949432000000058],[-64.818068999999923,43.946381000000031],[-64.832229999999925,43.926102000000128],[-64.881103999999993,43.838882000000126],[-64.906386999999995,43.800544999999943],[-65.030562999999972,43.704163000000051],[-65.066665999999941,43.696381000000088],[-65.242217999999923,43.679161000000136],[-65.325835999999867,43.674995000000024],[-65.375274999999874,43.575272000000098],[-65.449158000000011,43.55971500000004],[-65.453338999999971,43.554993000000138],[-65.475829999999974,43.505829000000006],[-65.481383999999991,43.464439000000027],[-65.496947999999975,43.490829000000019],[-65.548049999999932,43.556099000000017],[-65.559433000000013,43.568054000000075],[-65.568618999999956,43.570274000000097],[-65.575561999999991,43.569717000000026],[-65.584732000000031,43.560271999999941],[-65.591385000000002,43.549721000000034],[-65.603881999999999,43.534721000000104],[-65.612212999999997,43.526099999999985],[-65.617492999999968,43.523604999999975],[-65.646118000000001,43.511940000000038],[-65.67332499999992,43.506103999999993],[-65.712783999999999,43.498604000000114],[-65.720550999999944,43.499161000000015],[-65.72582999999986,43.50249500000001],[-65.777221999999995,43.562492000000134],[-65.783324999999934,43.571106000000043],[-65.783889999999985,43.576385000000016],[-65.781951999999933,43.587769000000094],[-65.778885000000002,43.599998000000085],[-65.773055999999997,43.612770000000125],[-65.771117999999944,43.624435000000005],[-65.769454999999937,43.64138000000014],[-65.768065999999919,43.658043000000021],[-65.768340999999964,43.668883999999991],[-65.769729999999868,43.679161000000136],[-65.77555799999999,43.688324000000136],[-65.868880999999988,43.786385000000053],[-65.907775999999956,43.821663000000058],[-65.912215999999887,43.825272000000041],[-65.918610000000001,43.828331000000048],[-65.932770000000005,43.827217000000019],[-65.938888999999961,43.824997000000053],[-65.942490000000021,43.819443000000035],[-65.956115999999895,43.776100000000099],[-65.968886999999995,43.719436999999971],[-65.971663999999976,43.71276899999998],[-65.975006000000008,43.707214000000079],[-65.983063000000016,43.697768999999994],[-66.013335999999867,43.691658000000132],[-66.020553999999947,43.69110100000006],[-66.029449,43.731659000000093],[-66.030562999999972,43.736107000000061],[-66.033614999999998,43.740273000000002],[-66.042220999999984,43.748046999999985],[-66.080841000000021,43.768051000000071],[-66.088607999999965,43.768326000000116],[-66.09445199999999,43.766106000000093],[-66.107772999999952,43.753326000000129],[-66.121658000000025,43.762215000000026],[-66.135559000000001,43.78943600000008],[-66.166945999999939,43.858603999999957],[-66.168059999999912,43.863051999999925],[-66.168059999999912,43.895546000000024],[-66.167495999999971,43.901382000000069],[-66.165832999999964,43.907211000000075],[-66.151947000000007,43.919159000000093],[-66.150283999999942,43.925270000000012],[-66.149993999999936,43.93082400000003],[-66.14916999999997,44.001106000000107],[-66.14973399999991,44.011108000000036],[-66.181945999999925,44.067497000000117],[-66.204453000000001,44.086655000000007],[-66.190552000000025,44.150543000000027],[-66.187774999999931,44.161934000000031],[-66.118606999999997,44.338043000000027],[-66.093886999999881,44.367493000000138],[-66.089995999999985,44.371658000000139],[-66.037505999999951,44.423325000000091],[-65.976943999999946,44.477485999999999],[-65.967223999999987,44.486107000000118],[-65.95666499999993,44.491661000000079],[-65.950286999999946,44.493050000000096],[-65.944442999999978,44.489716000000101],[-65.938048999999921,44.491104000000007],[-65.865828999999962,44.538886999999988],[-65.841674999999952,44.568604000000107],[-65.841384999999946,44.574164999999994],[-65.844451999999876,44.578331000000048],[-65.848891999999978,44.582213999999965],[-65.855270000000019,44.585823000000005],[-65.862777999999878,44.586936999999978],[-65.931106999999997,44.582213999999965],[-65.943053999999961,44.577773999999977],[-65.958617999999944,44.567497000000003],[-66.004456000000005,44.535827999999981],[-66.03472899999997,44.514717000000132],[-66.12332200000003,44.448875000000044],[-66.177779999999927,44.396660000000054],[-66.185821999999973,44.387214999999969],[-66.190552000000025,44.383330999999998],[-66.197220000000016,44.386108000000036],[-66.198607999999979,44.412766000000033],[-66.191100999999946,44.423325000000091],[-66.103058000000033,44.500000000000114],[-66.068068999999923,44.524994000000106],[-65.971663999999976,44.591934000000094],[-65.820220999999947,44.654434000000037],[-65.816726999999958,44.655768999999964],[-65.808722999999929,44.651936000000092],[-65.802895000000035,44.644604000000072],[-65.796394000000021,44.624268000000029],[-65.796897999999942,44.617603000000145],[-65.797897000000034,44.613937000000021],[-65.756957999999941,44.615273000000059],[-65.756393000000003,44.609993000000031],[-65.753066999999987,44.60582700000009],[-65.745270000000005,44.605552999999986],[-65.697220000000016,44.612495000000081],[-65.690276999999924,44.614440999999999],[-65.68499799999995,44.61693600000001],[-65.625274999999988,44.658882000000006],[-65.522507000000019,44.737769999999955],[-65.548614999999984,44.733879000000115],[-65.682616999999937,44.693156999999928],[-65.686278999999956,44.691825999999935],[-65.690276999999924,44.691162000000077],[-65.695441999999957,44.691825999999935],[-65.704116999999997,44.69499200000007],[-65.706116000000009,44.697654999999997],[-65.707114999999988,44.700489000000005],[-65.707450999999992,44.703487000000052],[-65.705947999999978,44.707489000000066],[-65.700942999999938,44.713157999999964],[-65.697937000000024,44.71549200000004],[-65.717772999999966,44.721931000000041],[-65.658339999999953,44.758605999999986],[-65.646956999999929,44.765273999999977],[-65.299987999999928,44.928329000000133],[-65.202498999999989,44.973877000000073],[-65.114166000000012,45.011665000000107],[-64.934158000000025,45.100273000000016],[-64.918059999999912,45.111107000000061],[-64.879439999999988,45.130820999999969],[-64.861938000000009,45.139717000000076],[-64.814712999999983,45.158043000000077],[-64.808608999999933,45.16027100000008],[-64.777221999999995,45.169990999999982],[-64.744995000000017,45.178329000000076],[-64.710830999999985,45.183876000000055],[-64.590285999999935,45.208046000000024],[-64.550551999999925,45.216660000000104],[-64.468886999999938,45.242766999999958],[-64.451400999999976,45.249435000000119],[-64.434432999999899,45.25750000000005],[-64.417770000000019,45.266663000000051],[-64.397506999999962,45.281105000000025],[-64.393889999999999,45.28694200000001],[-64.391952999999944,45.292770000000132],[-64.391113000000018,45.298332000000073],[-64.393065999999862,45.303322000000094],[-64.401671999999962,45.311104000000057],[-64.406951999999933,45.314438000000052],[-64.413895000000025,45.317497000000003],[-64.430832000000009,45.322220000000016],[-64.454726999999934,45.323608000000092],[-64.462218999999948,45.323051000000021],[-64.470839999999953,45.324440000000038],[-64.488051999999982,45.329162999999994],[-64.494719999999973,45.332214000000022],[-64.489165999999955,45.335266000000104],[-64.465835999999911,45.334717000000012],[-64.440552000000025,45.331665000000044],[-64.353057999999919,45.316101000000003],[-64.338333000000034,45.310271999999941],[-64.327498999999989,45.303322000000094],[-64.321395999999936,45.294715999999994],[-64.317779999999914,45.285271000000137],[-64.317229999999881,45.280273000000136],[-64.317779999999914,45.274437000000034],[-64.321944999999914,45.269714000000079],[-64.327498999999989,45.266936999999984],[-64.343062999999972,45.256103999999993],[-64.353333000000021,45.239159000000029],[-64.385833999999932,45.145546000000081],[-64.380279999999857,45.131104000000107],[-64.363891999999964,45.101386999999988],[-64.359725999999966,45.097487999999942],[-64.352218999999934,45.09804500000007],[-64.346953999999982,45.101105000000075],[-64.337219000000005,45.108604000000071],[-64.333892999999932,45.115272999999945],[-64.334441999999967,45.120270000000062],[-64.333327999999995,45.131660000000124],[-64.329178000000013,45.13638300000008],[-64.324387000000002,45.139343000000054],[-64.31138599999997,45.141380000000026],[-64.295836999999949,45.141380000000026],[-64.244155999999975,45.123877999999991],[-64.221114999999941,45.110549999999989],[-64.210280999999952,45.103607000000011],[-64.157226999999978,45.056938000000002],[-64.146956999999986,45.044441000000063],[-64.14555399999989,45.034720999999934],[-64.154449,44.98443600000013],[-64.156386999999938,44.978325000000041],[-64.116942999999935,45.009163000000058],[-64.114165999999955,45.046661000000029],[-64.121933000000013,45.058044000000052],[-64.136397999999929,45.074440000000038],[-64.141678000000013,45.078605999999979],[-64.162505999999894,45.092216000000008],[-64.188323999999909,45.104713000000004],[-64.192490000000021,45.108604000000071],[-64.198607999999865,45.11721],[-64.198882999999967,45.122490000000084],[-64.195830999999941,45.150543000000027],[-64.16361999999998,45.185265000000015],[-64.152785999999992,45.192764000000011],[-64.118331999999953,45.208885000000009],[-64.106110000000001,45.213326000000109],[-64.099990999999932,45.215271000000087],[-64.065826000000015,45.222214000000122],[-64.008057000000008,45.236381999999992],[-63.982215999999937,45.243049999999926],[-63.956664999999987,45.251388999999961],[-63.805831999999953,45.301933000000133],[-63.596107000000018,45.315544000000102],[-63.470832999999857,45.321663000000115],[-63.384170999999924,45.35083000000003],[-63.371940999999993,45.354996000000142],[-63.365554999999915,45.357773000000009],[-63.360832000000016,45.360824999999977],[-63.36860699999994,45.36360900000011],[-63.738892000000021,45.396660000000054],[-63.755561999999941,45.398048000000131],[-63.797226000000023,45.392768999999987],[-63.837775999999963,45.385551000000135],[-63.988051999999982,45.384438000000046],[-64.040558000000033,45.401100000000042],[-64.044998000000021,45.404434000000037],[-64.061110999999983,45.409714000000122],[-64.069732999999985,45.410271000000023],[-64.083618000000001,45.409430999999984],[-64.16332999999986,45.403877000000136],[-64.214721999999995,45.399719000000005],[-64.312774999999931,45.39138000000014],[-64.357772999999952,45.38110400000005],[-64.529998999999975,45.408043000000021],[-64.674164000000019,45.383049000000085],[-64.815825999999959,45.348602000000085],[-64.929442999999992,45.324440000000038],[-64.937209999999993,45.326942000000088],[-64.938048999999921,45.332214000000022],[-64.936661000000015,45.343323000000112],[-64.933318999999983,45.355553000000043],[-64.917769999999905,45.408599999999922],[-64.909163999999976,45.418052999999986],[-64.831389999999942,45.479155999999932],[-64.765563999999983,45.505554000000132],[-64.699157999999954,45.531104999999968],[-64.568893000000003,45.604163999999969],[-64.470550999999944,45.670273000000122],[-64.430282999999974,45.715546000000018],[-64.332229999999925,45.76888300000013],[-64.331680000000006,45.763611000000026],[-64.326110999999969,45.749435000000005],[-64.296660999999915,45.763328999999942],[-64.283066000000019,45.776656999999943],[-64.27555799999999,45.799995000000081],[-64.27305599999994,45.811661000000015],[-64.270003999999915,45.828880000000083],[-64.272933999999964,45.835754000000065],[-64.273620999999878,45.838599999999985],[-64.276671999999962,45.842766000000097],[-64.324722000000008,45.879990000000021],[-64.33277899999996,45.882767000000058],[-64.347778000000005,45.881934999999999],[-64.361388999999974,45.879158000000075],[-64.366942999999992,45.876380999999981],[-64.367766999999958,45.870544000000052],[-64.363327000000027,45.866661000000079],[-64.354720999999927,45.865547000000106],[-64.357498000000021,45.851105000000132],[-64.418059999999912,45.796104000000014],[-64.478332999999907,45.750549000000035],[-64.49722300000002,45.783882000000006],[-64.489990000000034,45.794998000000135],[-64.488051999999982,45.801102000000014],[-64.489165999999955,45.811378000000047],[-64.49221799999998,45.815543999999989],[-64.597335999999984,45.922104000000047],[-64.681945999999868,46.021659999999997],[-64.686935000000005,46.041382000000056],[-64.690551999999968,46.050827000000083],[-64.694991999999957,46.054710000000057],[-64.736937999999952,46.083878000000084],[-64.747498000000007,46.090546000000018],[-64.754456000000005,46.089157000000057],[-64.764450000000011,46.083054000000118],[-64.706389999999999,45.994713000000104],[-64.701949999999954,45.990829000000076],[-64.648009999999942,45.933047999999928],[-64.631171999999992,45.922718000000032],[-64.628998000000024,45.920383000000072],[-64.601180999999997,45.881550000000118],[-64.601180999999997,45.877384000000006],[-64.601340999999991,45.873881999999981],[-64.602844000000005,45.86721399999999],[-64.604507000000012,45.863552000000084],[-64.583069000000023,45.826942000000145],[-64.756392999999946,45.622489999999971],[-64.772506999999962,45.609993000000145],[-64.778335999999967,45.607216000000051],[-64.785827999999924,45.610275000000058],[-64.791381999999999,45.613609000000054],[-64.796660999999972,45.622489999999971],[-64.801665999999955,45.626381000000038],[-64.808334000000002,45.629715000000033],[-64.817229999999938,45.632492000000127],[-64.825287000000003,45.633331000000055],[-64.847504000000015,45.633331000000055],[-64.884445000000028,45.631660000000011],[-64.904175000000009,45.627769000000114],[-64.941375999999991,45.602218999999991],[-64.947219999999959,45.598045000000127],[-64.961945000000014,45.586105000000032],[-64.976395000000025,45.572494999999947],[-64.986663999999962,45.564437999999996],[-64.99722300000002,45.557213000000104],[-65.015015000000005,45.548882000000049],[-65.047501000000011,45.539161999999976],[-65.104445999999939,45.524994000000106],[-65.138335999999924,45.517769000000044],[-65.152221999999938,45.516106000000093],[-65.164444000000003,45.513054000000011],[-65.220551,45.493881000000101],[-65.326675000000023,45.457497000000046],[-65.339447000000007,45.452216999999962],[-65.368057000000022,45.437767000000065],[-65.394454999999994,45.419441000000063],[-65.421386999999925,45.402771000000087],[-65.53195199999999,45.342490999999995],[-65.883620999999948,45.209160000000054],[-65.889998999999989,45.207497000000103],[-65.903609999999958,45.205551000000014],[-65.910827999999981,45.205268999999987],[-65.918883999999935,45.206099999999992],[-65.98332199999993,45.219711000000132],[-65.989989999999977,45.223045000000127],[-66.09060699999992,45.295657999999946],[-66.092940999999939,45.297989000000086],[-66.094611999999984,45.300659000000053],[-66.091605999999956,45.303824999999961],[-66.083892999999932,45.34276600000004],[-66.078063999999927,45.345543000000077],[-66.05749499999996,45.348602000000085],[-66.045273000000009,45.353325000000041],[-66.029449,45.364158999999916],[-66.015288999999996,45.377769000000001],[-66.003066999999987,45.394997000000103],[-66.000838999999985,45.401100000000042],[-65.99722300000002,45.417770000000019],[-65.994445999999982,45.455550999999957],[-65.994445999999982,45.460823000000062],[-66.002501999999993,45.461662000000047],[-66.008346999999901,45.458885000000123],[-66.19027699999998,45.339432000000045],[-66.193329000000006,45.333603000000039],[-66.193329000000006,45.328331000000105],[-66.190552000000025,45.323883000000137],[-66.179169000000002,45.305823999999973],[-66.176102000000014,45.301933000000133],[-66.145279000000016,45.279160000000047],[-66.14166999999992,45.259769000000006],[-66.137000999999941,45.259270000000129],[-66.113997999999981,45.25877400000013],[-66.113509999999906,45.237770000000069],[-66.147232000000031,45.19221500000009],[-66.205565999999976,45.163878999999952],[-66.21665999999999,45.15915700000005],[-66.427779999999984,45.084991000000002],[-66.459732000000031,45.106102000000021],[-66.459732000000031,45.111382000000106],[-66.461120999999935,45.116104000000007],[-66.468063000000029,45.129714999999976],[-66.488891999999908,45.149994000000049],[-66.496384000000035,45.149719000000061],[-66.531386999999995,45.147217000000012],[-66.537505999999951,45.145271000000093],[-66.55999799999995,45.133330999999998],[-66.571395999999936,45.126656000000139],[-66.586120999999991,45.116936000000067],[-66.608046999999942,45.104164000000083],[-66.642226999999991,45.086380000000133],[-66.648055999999997,45.083603000000039],[-66.754729999999881,45.055550000000096],[-66.792496000000028,45.055267000000129],[-66.77694699999995,45.086380000000133],[-66.776107999999965,45.09137700000008],[-66.777785999999992,45.096100000000035],[-66.783065999999963,45.099716000000114],[-66.965560999999923,45.17943600000001],[-67.021941999999854,45.170273000000009],[-67.027221999999995,45.168052999999986],[-67.046386999999982,45.126938000000052],[-67.129439999999988,45.172217999999987],[-67.186934999999949,45.19221500000009],[-67.206542999999897,45.18303700000007],[-67.236114999999927,45.193877999999984],[-67.25306699999993,45.199432000000002],[-67.261123999999995,45.201103000000046],[-67.267775999999969,45.200546000000145],[-67.275009000000011,45.1988750000001],[-67.287215999999944,45.194153000000028],[-67.290557999999976,45.182770000000005],[-67.290282999999988,45.177489999999921],[-67.292220999999927,45.166100000000085],[-67.296386999999925,45.160820000000001],[-67.301391999999964,45.156937000000084],[-67.306655999999862,45.153320000000122],[-67.318893000000003,45.148605000000089],[-67.325561999999991,45.147491000000116],[-67.333069000000023,45.147491000000116],[-67.341948999999943,45.149994000000049],[-67.354172000000005,45.156097000000045],[-67.403884999999946,45.194435000000055],[-67.408050999999944,45.198325999999952],[-67.422500999999954,45.214996000000099],[-67.455275999999969,45.263054000000068],[-67.462783999999999,45.276099999999985],[-67.465011999999888,45.281105000000025],[-67.465285999999992,45.286385000000109],[-67.464172000000019,45.29193900000007],[-67.450561999999934,45.333054000000061],[-67.485001000000011,45.489159000000029],[-67.485275000000001,45.494438000000002],[-67.482772999999952,45.500274999999931],[-67.478881999999885,45.504439999999931],[-67.467772999999966,45.510826000000066],[-67.43638599999997,45.521378000000027],[-67.421936000000017,45.523323000000005],[-67.415832999999964,45.525269000000094],[-67.410827999999924,45.529990999999995],[-67.406951999999876,45.578049000000135],[-67.408889999999985,45.582214000000135],[-67.412505999999951,45.586936999999978],[-67.424163999999962,45.594711000000132],[-67.453888000000006,45.612495000000081],[-67.462219000000005,45.614715999999987],[-67.46945199999999,45.613051999999982],[-67.486114999999984,45.603607000000068],[-67.499999999999943,45.60166200000009],[-67.515015000000005,45.601105000000018],[-67.573897999999986,45.611664000000019],[-67.656661999999983,45.630546999999922],[-67.664443999999946,45.6336060000001],[-67.791107000000011,45.693047000000092],[-67.796660999999915,45.696098000000063],[-67.799164000000019,45.701102999999932],[-67.804442999999992,45.731377000000009],[-67.806380999999988,45.78472099999999],[-67.786666999999909,45.888329000000056],[-67.772507000000019,45.957496999999933],[-67.779174999999952,46.283332999999971],[-67.788894999999968,46.787773000000072],[-67.791671999999949,46.921379000000059],[-67.794998000000021,47.06999200000007],[-67.85972599999991,47.097488000000112],[-67.874161000000015,47.103607000000125],[-67.892226999999991,47.114440999999999],[-67.948607999999922,47.166382000000112],[-67.951400999999976,47.17083000000008],[-67.955841000000021,47.179993000000081],[-67.957229999999925,47.184989999999971],[-67.961944999999957,47.194153000000142],[-67.968886999999938,47.20277400000009],[-68.18582200000003,47.332771000000037],[-68.208617999999944,47.341660000000104],[-68.244995000000017,47.351936000000023],[-68.306655999999919,47.364440999999943],[-68.323059000000001,47.365829000000076],[-68.337219000000005,47.363609000000054],[-68.348891999999921,47.359992999999974],[-68.367766999999958,47.351105000000018],[-68.373046999999929,47.347214000000122],[-68.564712999999927,47.289719000000048],[-68.761948000000018,47.232764999999972],[-68.787505999999951,47.224709000000075],[-68.831679999999892,47.208884999999952],[-68.887786999999946,47.188042000000053],[-68.895279000000016,47.189987000000087],[-68.958618000000001,47.217209000000025],[-68.965285999999878,47.220543000000021],[-69.023894999999925,47.250274999999931],[-69.036117999999988,47.257217000000026],[-69.044998000000021,47.264442000000088],[-69.049164000000019,47.274437000000034],[-69.053054999999972,47.28943600000008],[-69.053588999999931,47.293777000000091],[-69.054992999999854,47.299438000000066],[-69.055266999999958,47.30471],[-69.056106999999997,47.336655000000064],[-69.055556999999965,47.347488000000055],[-69.052490000000034,47.380546999999979],[-69.049437999999952,47.392219999999952],[-69.045837000000006,47.398604999999975],[-69.043610000000001,47.404709000000025],[-69.039444000000003,47.416939000000127],[-69.038329999999974,47.422493000000088],[-69.039992999999981,47.427490000000034],[-69.048614999999984,47.435546999999985],[-69.055556999999965,47.438599000000124],[-69.123885999999914,47.458327999999995],[-69.132766999999944,47.459991000000116],[-69.232498000000021,47.471375000000023],[-69.239623999999992,47.464413000000093],[-69.305267000000015,47.40026899999998],[-69.423614999999984,47.283332999999971],[-69.653884999999946,47.055267000000129],[-69.712509000000011,46.996940999999993],[-69.84722899999997,46.862213000000111],[-69.992767000000015,46.715828000000045],[-70.009170999999867,46.698043999999982],[-70.026947000000007,46.587493999999992],[-70.038605000000018,46.509995000000004],[-70.044158999999922,46.474991000000102],[-70.047775000000001,46.453880000000083],[-70.050551999999982,46.438599000000124],[-70.06361400000003,46.424164000000019],[-70.068893000000003,46.419716000000051],[-70.075286999999946,46.417770000000132],[-70.081389999999999,46.417770000000132],[-70.088057999999876,46.414993000000038],[-70.119155999999975,46.393608000000086],[-70.200287000000003,46.336380000000077],[-70.242492999999911,46.279160000000047],[-70.287780999999939,46.203049000000135],[-70.305556999999908,46.078880000000083],[-70.3125,45.985825000000091],[-70.309722999999963,45.980820000000051],[-70.303329000000019,45.977767999999969],[-70.293883999999991,45.975548000000117],[-70.278335999999967,45.975266000000033],[-70.260559000000001,45.971374999999966],[-70.253615999999909,45.968323000000055],[-70.248336999999935,45.964714000000072],[-70.23971599999993,45.956657000000064],[-70.238051999999982,45.951934999999992],[-70.255004999999983,45.913048000000003],[-70.258895999999993,45.907493999999986],[-70.263335999999981,45.90277100000003],[-70.393889999999942,45.778046000000131],[-70.466659999999933,45.711937000000034],[-70.555267000000015,45.672768000000133],[-70.576949999999954,45.660820000000058],[-70.631942999999978,45.627769000000114],[-70.693054000000018,45.571938000000046],[-70.720276000000013,45.528328000000101],[-70.725280999999995,45.49971800000003],[-70.724715999999944,45.49471299999999],[-70.712783999999999,45.477768000000026],[-70.704726999999934,45.469154000000003],[-70.689437999999939,45.458046000000024],[-70.86860699999994,45.246101000000124],[-70.873046999999985,45.241379000000052],[-70.878600999999946,45.238601999999958],[-70.886123999999995,45.238045000000056],[-71.021118000000001,45.326660000000004],[-71.085128999999995,45.307708999999988],[-71.139998999999932,45.253052000000082],[-71.146392999999989,45.25249500000001],[-71.170272999999952,45.253883000000087],[-71.189163000000008,45.257773999999984],[-71.211669999999913,45.266105999999979],[-71.233063000000016,45.274993999999936],[-71.239715999999987,45.278046000000074],[-71.264449999999954,45.290833000000077],[-71.280562999999972,45.301933000000133],[-71.288604999999961,45.304436000000067],[-71.302779999999984,45.303047000000106],[-71.314712999999927,45.299438000000066],[-71.327498999999932,45.294441000000006],[-71.424438000000009,45.25],[-71.408614999999998,45.223045000000127],[-71.402221999999938,45.21915400000006],[-71.398894999999982,45.215546000000131],[-71.396118000000001,45.210548000000131],[-71.395843999999954,45.205268999999987],[-71.398620999999991,45.199432000000002],[-71.43249499999996,45.130272000000048],[-71.436110999999926,45.125267000000008],[-71.459166999999979,45.102776000000006],[-71.482772999999952,45.083878000000084],[-71.493056999999965,45.075271999999984],[-71.496383999999921,45.068886000000077],[-71.49888599999997,45.057213000000047],[-71.497222999999963,45.041663999999969],[-71.494155999999975,45.020546000000024],[-71.55471799999998,45.019989000000123],[-71.892776000000026,45.019157000000064],[-72.049987999999985,45.019440000000031],[-72.271652000000017,45.018775999999946],[-72.459166999999866,45.017494000000113],[-72.510283999999956,45.017212000000029],[-72.778884999999946,45.020828000000108],[-72.956389999999942,45.018326000000059],[-73.337173000000007,45.01186400000006],[-73.346114999999998,45.011383000000023],[-73.352997000000016,45.009421999999972],[-73.359267999999986,45.010063000000059],[-73.376662999999951,45.011108000000036],[-73.622771999999941,45.006660000000068],[-73.91164399999991,45.000000000000057],[-74.249161000000015,44.992218000000094],[-74.682021999999904,45.006714000000102],[-74.75111400000003,45.002220000000023],[-74.769729999999925,45.006386000000134],[-74.785827999999981,45.011383000000023],[-74.81220999999988,45.01776899999993],[-74.828887999999949,45.019157000000064],[-74.850280999999939,45.016663000000108],[-74.990829000000019,44.986655999999925],[-75.00140399999998,44.980545000000063],[-75.170546999999999,44.898604999999975],[-75.278060999999923,44.857216000000051],[-75.301666000000012,44.846656999999993],[-75.317779999999857,44.837212000000136],[-75.395843999999954,44.785827999999924],[-75.537216000000001,44.691376000000048],[-75.5625,44.673882000000106],[-75.618057000000022,44.634995000000117],[-75.628051999999968,44.627769000000001],[-75.682495000000017,44.588043000000027],[-75.736114999999927,44.546387000000038],[-75.801940999999999,44.491104000000007],[-75.81138599999997,44.483047000000056],[-75.820557000000008,44.474990999999989],[-75.824722000000008,44.469986000000119],[-75.828338999999971,44.446655000000078],[-75.834166999999979,44.43443300000007],[-75.841109999999901,44.423050000000103],[-75.849441999999954,44.414711000000068],[-75.864166000000012,44.402771000000143],[-75.879990000000021,44.393326000000059],[-75.904449,44.384995000000004],[-75.966109999999958,44.364158999999972],[-75.982177999999919,44.358864000000096],[-75.997771999999998,44.355270000000075],[-76.019454999999937,44.353325000000098],[-76.034728999999913,44.353050000000053],[-76.046950999999979,44.349716000000058],[-76.057769999999948,44.344993999999986],[-76.064437999999939,44.341377000000023],[-76.363373000000024,44.150992999999971],[-76.410278000000005,44.121101000000124],[-76.43472300000002,44.104713000000061],[-76.439986999999974,44.099434000000088],[-76.531386999999995,43.983046999999942],[-76.569457999999997,43.934157999999968],[-76.583618000000001,43.915824999999927],[-76.697494999999947,43.768600000000049],[-76.801940999999999,43.633605999999986],[-76.816955999999948,43.633049000000085],[-76.974166999999909,43.634438000000046],[-77.288329999999917,43.636658000000068],[-77.582779000000016,43.638603000000046],[-77.729996000000028,43.639160000000118],[-77.857773000000009,43.639434999999992],[-77.887222000000008,43.639434999999992],[-78.388061999999934,43.638329000000113],[-78.663054999999986,43.637497000000053],[-78.724715999999944,43.629433000000006],[-78.938323999999909,43.553878999999995],[-79.02806099999998,43.521934999999985],[-79.095275999999956,43.497771999999998],[-79.18472300000002,43.465546000000131],[-79.132216999999969,43.382492000000013],[-79.066787999999974,43.279400000000066],[-79.054169000000002,43.262496999999996],[-79.053328999999962,43.256660000000068],[-79.044997999999964,43.165543000000014],[-79.044723999999974,43.160545000000013],[-79.045836999999949,43.148880000000133],[-79.049438000000009,43.143883000000017],[-79.05972300000002,43.137215000000083],[-79.063613999999916,43.132210000000043],[-79.081115999999952,43.085548000000074],[-79.043334999999956,43.011664999999994],[-79.040832999999964,43.007774000000097],[-79.021666999999923,42.987213000000054],[-79.005843999999911,42.977211000000125],[-78.978606999999954,42.961380000000133],[-78.97193900000002,42.958046000000138],[-78.962783999999942,42.956383000000017],[-78.946655000000021,42.955551000000128],[-78.938599000000011,42.953322999999955],[-78.932770000000005,42.950829000000056],[-78.927490000000034,42.946937999999989],[-78.920273000000009,42.939156000000025],[-78.918335000000013,42.934715000000097],[-78.915282999999988,42.924164000000019],[-78.917220999999927,42.904991000000109],[-78.918335000000013,42.89888000000002],[-78.926665999999898,42.880546999999979],[-78.932219999999973,42.868324000000086],[-78.935271999999998,42.862495000000081],[-78.942490000000021,42.852493000000095],[-78.965835999999967,42.833602999999982],[-78.986937999999952,42.819992000000013],[-79.12110899999999,42.769157000000121],[-79.154448999999943,42.757217000000026],[-79.299437999999952,42.702492000000007],[-79.56645199999997,42.600708000000054],[-79.763427999999919,42.524703999999986],[-79.776672000000019,42.52027099999998],[-80.086120999999991,42.399994000000106],[-80.096953999999926,42.396385000000066],[-80.510283999999899,42.329163000000051],[-80.528548999999998,42.326617999999996],[-80.869155999999975,42.279160000000104],[-81.249161000000015,42.224991000000045],[-81.424437999999952,42.144997000000046],[-81.623610999999983,42.052773000000116],[-81.822234999999978,41.96027400000014],[-82.218062999999972,41.774437000000034],[-82.238891999999964,41.763885000000073],[-82.425277999999992,41.675551999999982],[-82.462783999999942,41.676102000000014],[-82.649993999999936,41.681938000000059],[-82.696654999999964,41.683875999999998],[-83.071944999999914,41.859717999999987],[-83.080841000000021,41.874992000000077],[-83.117415999999878,41.946194000000048],[-83.130828999999892,41.970543000000134],[-83.150283999999942,42.008330999999998],[-83.168609999999944,42.046104000000014],[-83.168335000000013,42.048050000000103],[-83.137222000000008,42.201385000000016],[-83.132492000000013,42.220824999999991],[-83.12332200000003,42.245827000000077],[-83.118056999999965,42.25777400000004],[-83.107772999999952,42.272766000000047],[-83.086959999999976,42.300545000000056],[-83.062209999999993,42.318603999999993],[-83.051940999999999,42.324715000000083],[-83.027221999999995,42.331940000000145],[-83.002227999999945,42.339157000000057],[-82.975829999999974,42.344711000000075],[-82.940551999999968,42.357498000000078],[-82.841384999999946,42.396941999999967],[-82.808884000000035,42.413322000000107],[-82.793609999999944,42.422768000000076],[-82.775283999999942,42.43721000000005],[-82.763061999999991,42.448600999999996],[-82.729996000000028,42.48333000000008],[-82.704453000000001,42.508331000000055],[-82.670273000000009,42.539993000000038],[-82.665282999999931,42.544158999999922],[-82.659103000000016,42.548195000000078],[-82.650756999999942,42.553642000000139],[-82.644973999999991,42.556411999999966],[-82.630553999999961,42.557495000000074],[-82.622222999999963,42.556656000000089],[-82.614166000000012,42.554710000000057],[-82.605835000000013,42.554161000000079],[-82.586394999999925,42.558601000000124],[-82.571670999999981,42.56888600000002],[-82.535827999999867,42.599434000000031],[-82.521392999999932,42.618881000000044],[-82.513335999999867,42.63638300000008],[-82.484726000000023,42.719154000000003],[-82.474716000000001,42.751663000000065],[-82.471114999999941,42.769989000000066],[-82.470551,42.782493999999986],[-82.47193900000002,42.793053000000043],[-82.473327999999924,42.797493000000031],[-82.480559999999912,42.812492000000134],[-82.481948999999929,42.823326000000009],[-82.481109999999944,42.829437000000098],[-82.464446999999893,42.898048000000074],[-82.462509000000011,42.904709000000025],[-82.418776999999977,43.018639000000064],[-82.404175000000009,43.049164000000076],[-82.322234999999978,43.21054799999996],[-82.252791999999943,43.346382000000119],[-82.228881999999942,43.391380000000026],[-82.146118000000001,43.553047000000106],[-82.130279999999971,43.585266000000104],[-82.214447000000007,43.952217000000132],[-82.331679999999949,44.460823000000119],[-82.430556999999965,44.882767000000115],[-82.543059999999969,45.355826999999977],[-82.629990000000021,45.396102999999982],[-82.665008999999998,45.411933999999917],[-82.954178000000013,45.54193900000007],[-83.050826999999913,45.585266000000047],[-83.11221299999994,45.612770000000069],[-83.270844000000011,45.683326999999963],[-83.500290000000007,45.784995999999978],[-83.597778000000005,45.827217000000019],[-83.523894999999982,45.918053000000043],[-83.487777999999992,45.961661999999933],[-83.447768999999994,46.011940000000095],[-83.474716000000001,46.036385000000109],[-83.483321999999987,46.043884000000105],[-83.566665999999998,46.098602000000085],[-83.577498999999989,46.105270000000075],[-83.596114999999998,46.114158999999972],[-83.610549999999932,46.119156000000089],[-83.627776999999867,46.123046999999929],[-83.663054999999872,46.126099000000067],[-83.830565999999862,46.126099000000067],[-83.846114999999941,46.124992000000134],[-83.883895999999936,46.102776000000119],[-83.888031000000012,46.096161000000109],[-83.892257999999913,46.092346000000134],[-83.898009999999942,46.08718900000008],[-83.917998999999952,46.073303000000124],[-83.923003999999935,46.070250999999985],[-83.936004999999966,46.065383999999995],[-83.942840999999987,46.066101000000003],[-83.952788999999996,46.068603999999993],[-83.958892999999932,46.071663000000115],[-83.962783999999999,46.075554000000011],[-84.076675000000023,46.203049000000135],[-84.089721999999938,46.220267999999976],[-84.099166999999909,46.232764999999972],[-84.105834999999956,46.247771999999998],[-84.15695199999999,46.391663000000108],[-84.15834000000001,46.396659999999997],[-84.160277999999948,46.424995000000024],[-84.154448999999943,46.445267000000115],[-84.149170000000026,46.457214000000079],[-84.139998999999989,46.474159000000043],[-84.121933000000013,46.498877999999991],[-84.118057000000022,46.512497000000053],[-84.118331999999953,46.518051000000071],[-84.119994999999903,46.523323000000005],[-84.12249799999995,46.527771000000143],[-84.126389000000017,46.531937000000084],[-84.132491999999957,46.53472099999999],[-84.192763999999954,46.546661000000086],[-84.408614999999884,46.508605999999986],[-84.428328999999962,46.503052000000025],[-84.434433000000013,46.500275000000101],[-84.454453000000001,46.486938000000066],[-84.459441999999967,46.482764999999915],[-84.463897999999972,46.478325000000098],[-84.474715999999944,46.463608000000079],[-84.479996000000028,46.46027400000014],[-84.486388999999974,46.458885000000123],[-84.494719999999973,46.458046000000138],[-84.512512000000015,46.45915999999994],[-84.529998999999975,46.461380000000133],[-84.565001999999993,46.466385000000002],[-84.775008999999955,46.653046000000074],[-84.787780999999995,46.68971300000004],[-84.806945999999925,46.748328999999956],[-84.825561999999877,46.806938000000059],[-84.83277899999996,46.829163000000051],[-84.856948999999986,46.902214000000072],[-84.872222999999963,46.909431000000041],[-84.917495999999971,46.928604000000121],[-85.354445999999996,47.111664000000076],[-85.464171999999905,47.157211000000132],[-85.738891999999964,47.270827999999995],[-85.839721999999938,47.31221000000005],[-86.014724999999942,47.383880999999917],[-86.051391999999964,47.39888000000002],[-86.466659999999933,47.567215000000033],[-86.568893000000003,47.608330000000024],[-86.884444999999971,47.734717999999987],[-87.201400999999976,47.860275000000115],[-87.341674999999952,47.915542999999957],[-87.444716999999969,47.955826000000002],[-88.188323999999966,48.244156000000089],[-88.368056999999908,48.31221000000005],[-88.645554000000004,48.264160000000004],[-88.691665999999941,48.255554000000075],[-88.974166999999909,48.139160000000118],[-89.323333999999988,47.993050000000096],[-89.356658999999979,47.979713000000061],[-89.447768999999937,48.003326000000015],[-89.493125999999961,48.003166000000078],[-89.556655999999975,48.001389000000131],[-89.573059000000001,48.001663000000065],[-89.57887299999993,48.00262500000008],[-89.583069000000023,48.003326000000015],[-89.598617999999931,48.006660000000011],[-89.603881999999999,48.00999500000006],[-89.608337000000006,48.014160000000061],[-89.614715999999987,48.016663000000051],[-89.750564999999995,48.029160000000047],[-89.760559000000001,48.029991000000052],[-89.838897999999972,48.01166500000005],[-89.862502999999947,48.000832000000059],[-89.888061999999991,47.991936000000123],[-89.895554000000004,47.989990000000034],[-89.903885000000002,47.989159000000029],[-89.911666999999966,47.991379000000052],[-89.982223999999974,48.016105999999979],[-89.993057000000022,48.02276599999999],[-90,48.030204999999967],[-90.000838999999985,48.031105000000025],[-90.032775999999956,48.069717000000026],[-90.056106999999997,48.100548000000117],[-90.059432999999956,48.104996000000085],[-90.065001999999936,48.10833000000008],[-90.081680000000006,48.111938000000009],[-90.12721299999987,48.119156000000032],[-90.146118000000001,48.121658000000082],[-90.156386999999938,48.122490000000028],[-90.279998999999975,48.113051999999982],[-90.740829000000019,48.090828000000045],[-90.758895999999993,48.094711000000018],[-90.769454999999937,48.099998000000085],[-90.778335999999967,48.107498000000021],[-90.838608000000022,48.184158000000025],[-90.841674999999952,48.191658000000132],[-90.843063000000029,48.205826000000002],[-90.83805799999999,48.208603000000039],[-90.833625999999924,48.209099000000094],[-90.829726999999991,48.212493999999936],[-90.829192999999975,48.214638000000093],[-90.828887999999949,48.221656999999936],[-90.830291999999929,48.225548000000003],[-90.832503999999915,48.227211000000125],[-90.849166999999909,48.233879000000115],[-90.868606999999997,48.237495000000138],[-90.898055999999883,48.236656000000039],[-90.928329000000019,48.228600000000142],[-90.969161999999926,48.214714000000129],[-91.126098999999954,48.154991000000109],[-91.14916999999997,48.144157000000064],[-91.192489999999964,48.114998000000071],[-91.232223999999974,48.087769000000094],[-91.24888599999997,48.079437000000098],[-91.269454999999994,48.07388300000008],[-91.283324999999991,48.071381000000031],[-91.311661000000015,48.069160000000124],[-91.325561999999991,48.069717000000026],[-91.34722899999997,48.068054000000075],[-91.381377999999984,48.061661000000129],[-91.392226999999934,48.056099000000017],[-91.418335000000013,48.041107000000011],[-91.462783999999942,48.057770000000062],[-91.573623999999995,48.093048000000067],[-91.645142000000021,48.098343000000114],[-91.6875,48.144714000000135],[-91.729720999999984,48.187209999999936],[-91.734160999999915,48.190543999999932],[-91.739715999999987,48.193321000000026],[-91.756957999999997,48.194434999999999],[-91.776107999999965,48.194153000000142],[-91.791672000000005,48.195267000000115],[-91.850554999999986,48.203880000000083],[-91.940276999999924,48.23054500000012],[-91.956589000000008,48.23663300000004],[-91.97084000000001,48.244437999999946],[-91.985824999999977,48.255829000000119],[-91.997771999999998,48.266662999999994],[-92.007232999999985,48.27915999999999],[-92.008895999999993,48.28276800000009],[-92.011123999999938,48.292496000000085],[-92.011672999999917,48.297493000000031],[-92.013335999999924,48.304993000000081],[-92.020554000000004,48.322769000000051],[-92.02806099999998,48.336105000000032],[-92.035552999999993,48.343605000000082],[-92.041945999999939,48.347771000000023],[-92.051940999999943,48.353882000000056],[-92.141678000000013,48.357216000000051],[-92.162216000000001,48.356658999999979],[-92.257232999999928,48.346939000000077],[-92.265014999999892,48.343605000000082],[-92.276107999999965,48.337493999999992],[-92.280288999999982,48.332771000000037],[-92.285827999999981,48.326103000000046],[-92.300551999999925,48.304993000000081],[-92.300827000000027,48.298050000000103],[-92.297225999999966,48.28943600000008],[-92.288604999999961,48.276100000000099],[-92.283614999999998,48.263885000000016],[-92.283065999999963,48.256660000000124],[-92.285552999999936,48.250549000000035],[-92.290282999999988,48.246658000000139],[-92.306716999999935,48.241592000000026],[-92.331680000000006,48.234160999999972],[-92.351943999999946,48.228325000000098],[-92.356658999999979,48.228600000000142],[-92.361664000000019,48.231102000000021],[-92.369155999999975,48.238883999999985],[-92.426392000000021,48.311661000000072],[-92.455275999999969,48.394157000000007],[-92.582229999999981,48.441375999999991],[-92.697768999999994,48.485268000000076],[-92.715285999999935,48.541382000000056],[-92.943054000000018,48.621101000000067],[-92.953063999999927,48.62332200000003],[-92.966109999999958,48.624991999999963],[-93.244995000000017,48.640549000000021],[-93.308883999999978,48.630272000000048],[-93.322509999999966,48.628044000000102],[-93.40834000000001,48.608604000000128],[-93.449996999999996,48.597214000000065],[-93.456664999999987,48.594994000000042],[-93.458618000000001,48.592491000000052],[-93.458618000000001,48.589432000000102],[-93.456116000000009,48.583054000000118],[-93.452788999999996,48.579436999999984],[-93.449721999999952,48.570549000000028],[-93.449996999999996,48.56749700000006],[-93.454177999999899,48.559714999999926],[-93.46055599999994,48.55332199999998],[-93.465835999999911,48.54972099999992],[-93.476394999999968,48.544158999999979],[-93.489440999999999,48.539718999999991],[-93.503066999999874,48.537498000000085],[-93.65695199999999,48.51527399999992],[-93.664444000000003,48.514999000000103],[-93.724166999999966,48.51388500000013],[-93.778610000000015,48.51638800000012],[-93.793059999999969,48.517768999999987],[-93.800277999999935,48.520271000000037],[-93.803604000000007,48.524712000000136],[-93.805557000000022,48.532211000000132],[-93.80972300000002,48.550270000000069],[-93.817779999999971,48.581940000000145],[-93.820007000000032,48.590546000000074],[-93.830001999999979,48.612770000000012],[-93.833327999999995,48.616386000000034],[-93.842498999999975,48.623604000000057],[-93.851944000000003,48.626938000000052],[-93.865554999999972,48.630272000000048],[-93.880553999999961,48.630272000000048],[-93.885283999999899,48.630272000000048],[-94.063888999999961,48.638046000000031],[-94.111937999999896,48.641106000000093],[-94.134170999999867,48.642769000000044],[-94.235275000000001,48.653046000000018],[-94.250564999999995,48.656097000000045],[-94.252791999999886,48.65776800000009],[-94.25418099999996,48.660545000000013],[-94.252228000000002,48.671379000000059],[-94.252228000000002,48.679993000000138],[-94.256667999999934,48.687767000000122],[-94.263061999999991,48.694153000000028],[-94.271117999999888,48.699158000000068],[-94.278610000000015,48.702492000000063],[-94.291107000000011,48.706099999999992],[-94.305832000000009,48.708328000000108],[-94.390563999999927,48.711105000000032],[-94.406112999999948,48.711105000000032],[-94.414169000000015,48.709991000000059],[-94.433318999999983,48.701934999999992],[-94.453613000000018,48.695824000000073],[-94.460555999999997,48.694435000000112],[-94.476395000000025,48.693878000000041],[-94.500838999999985,48.696938000000046],[-94.523894999999925,48.701934999999992],[-94.605835000000013,48.724433999999917],[-94.637221999999952,48.739159000000086],[-94.643616000000009,48.743049999999982],[-94.689986999999917,48.774712000000079],[-94.699996999999996,48.782767999999976],[-94.706664999999987,48.79055000000011],[-94.709441999999967,48.803047000000106],[-94.711120999999991,48.846382000000062],[-94.710007000000019,48.855270000000075],[-94.709075999999982,48.857948000000135],[-94.705001999999979,48.862770000000125],[-94.700287000000003,48.868881000000044],[-94.699722000000008,48.871101000000067],[-94.700287000000003,48.895271000000037],[-94.701675000000023,48.909714000000122],[-94.704178000000013,48.924438000000009],[-94.707503999999972,48.941932999999949],[-94.71665999999999,48.970543000000021],[-94.720550999999887,48.978874000000076],[-94.727218999999934,48.99221799999998],[-94.732773000000009,49.001663000000065],[-94.745270000000005,49.028603000000089],[-94.766952999999944,49.075554000000125],[-94.797774999999945,49.155822999999998],[-94.798889000000031,49.159156999999993],[-94.804717999999866,49.17971799999998],[-94.806655999999975,49.193603999999993],[-94.81527699999998,49.29332700000009],[-94.815552000000025,49.306099000000131],[-94.818344000000025,49.309989999999971],[-94.821944999999971,49.312767000000065],[-94.922775000000001,49.355827000000033],[-94.935927999999933,49.360297999999943],[-94.946380999999974,49.36221299999994],[-94.958617999999944,49.361664000000019],[-94.96556099999998,49.360275000000001],[-94.998610999999983,49.357498000000078],[-95.025833000000034,49.357498000000078],[-95.078063999999927,49.359161000000029],[-95.085662999999954,49.360023000000126],[-95.120834000000002,49.364998000000014],[-95.142501999999922,49.371658000000025],[-95.152785999999935,49.376656000000025],[-95.154174999999952,49.366386000000091],[-95.154448999999886,49.333328000000108],[-95.153960999999981,49.173332000000073],[-95.154174999999952,48.999435000000119],[-95.26655599999998,48.999977000000001],[-97.219940000000008,48.999718000000087],[-97.502791999999943,48.999435000000119],[-97.635833999999988,48.999435000000119],[-97.801940999999999,49.000000000000114],[-97.969161999999926,49.000274999999988],[-98.26916499999993,49.000274999999988],[-98.502227999999889,48.999435000000119],[-98.868606999999997,49.000000000000114],[-99.335555999999997,48.999435000000119],[-99.835555999999997,49.000000000000114],[-100.00222799999995,49.000000000000114],[-100.50195300000001,48.999718000000087],[-101.06916799999999,49.000000000000114],[-101.30222299999997,49.000274999999988],[-101.367233,48.998787000000107],[-101.46888699999994,48.999435000000119],[-102.16887699999995,49.000000000000114],[-102.33556399999998,48.999435000000119],[-102.53555299999994,49.000274999999988],[-102.76834099999996,48.999435000000119],[-103.03527800000001,48.999435000000119],[-103.16832699999992,48.999435000000119],[-103.26889,49.000000000000114],[-103.43554699999993,49.000274999999988],[-103.53527800000001,48.999435000000119],[-103.73528299999987,48.999435000000119],[-104.033096,49.000251999999989],[-104.13527699999986,48.999718000000087],[-104.33500699999996,48.999435000000119],[-104.83500700000002,48.999435000000119],[-105.00140399999998,48.999435000000119],[-105.26834100000002,49.000000000000114],[-105.70221699999996,48.999435000000119],[-105.93554699999999,48.999435000000119],[-106.03472899999991,48.999435000000119],[-106.13527699999997,48.999435000000119],[-106.26862299999993,48.999435000000119],[-106.46806300000003,48.999435000000119],[-106.73554999999993,48.999435000000119],[-107.33528100000001,49.000000000000114],[-107.43499800000001,49.000000000000114],[-107.63474300000001,48.999435000000119],[-107.73554999999993,48.999435000000119],[-107.80110199999996,48.999435000000119],[-108.16887700000001,48.999435000000119],[-108.33500699999996,48.999435000000119],[-108.53472899999997,48.999435000000119],[-108.6677699999999,48.999435000000119],[-108.83473200000003,48.999435000000119],[-109.33473200000003,48.999435000000119],[-109.63474299999996,48.999435000000119],[-109.801941,48.999435000000119],[-109.96777299999997,48.999718000000087],[-109.99965700000001,49.000603000000126],[-110.10138699999999,48.999435000000119],[-110.20111099999991,48.999435000000119],[-110.30166599999995,49.000000000000114],[-110.36776699999996,49.000000000000114],[-110.50110599999988,49.000000000000114],[-110.66777000000002,49.000000000000114],[-110.76862299999993,48.999435000000119],[-111.36833199999995,48.999435000000119],[-111.80110199999996,48.999435000000119],[-112.03472899999997,48.999435000000119],[-112.16832699999998,48.999435000000119],[-112.234734,49.000000000000114],[-112.33500699999996,49.000000000000114],[-112.43499799999995,49.000000000000114],[-112.53500399999996,49.000000000000114],[-112.60166900000002,49.000000000000114],[-112.93472300000002,49.000000000000114],[-113.03443900000002,49.000000000000114],[-113.23416099999997,48.999435000000119],[-113.36833200000001,48.999435000000119],[-113.567497,48.999435000000119],[-114.03443899999991,48.999435000000119],[-114.05985999999996,49.000603000000126],[-114.33500700000002,48.999435000000119],[-114.46749899999992,48.999435000000119],[-114.53472899999991,49.000000000000114],[-114.63390399999997,49.000000000000114],[-114.90110800000002,48.999435000000119],[-115.03415699999999,48.999435000000119],[-115.16750299999995,48.999435000000119],[-115.36805700000002,49.000000000000114],[-115.46806300000003,49.000000000000114],[-115.56723,49.000000000000114],[-115.60138699999987,48.999435000000119],[-115.734444,48.999435000000119],[-116.04833999999994,48.999718000000087],[-117.00140399999998,48.999718000000087],[-117.03662099999997,49.003128000000117],[-117.06722999999994,48.999718000000087],[-117.20084399999996,48.999435000000119],[-117.234734,49.000000000000114],[-117.30055199999993,49.000000000000114],[-117.567497,49.000000000000114],[-117.83444199999991,49.000000000000114],[-117.86749299999997,48.999435000000119],[-118.00083899999998,48.999435000000119],[-118.13417099999998,48.999435000000119],[-118.36805699999996,48.999435000000119],[-118.76777600000003,48.999435000000119],[-118.96749899999992,48.999435000000119],[-119.13417099999987,48.999435000000119],[-119.26722699999999,48.999435000000119],[-119.46777299999985,48.999435000000119],[-119.86749299999991,48.999435000000119],[-119.93415800000002,48.999435000000119],[-120.03415699999999,48.999435000000119],[-120.53472899999997,48.999435000000119],[-121.08497599999993,48.999718000000087],[-122.10056299999997,49.000000000000114],[-122.33389299999993,49.000000000000114],[-122.43360899999993,49.000000000000114],[-122.56667299999992,49.000000000000114],[-122.69999699999994,49.000000000000114],[-122.76030000000003,48.999435000000119],[-122.81360599999994,49.005272000000048],[-122.83112299999999,49.008606000000043],[-122.86250299999989,49.022217000000012],[-122.87777699999998,49.032211000000018],[-122.87970699999994,49.034438999999963],[-122.88110399999999,49.038605000000075],[-122.87748699999986,49.049438000000066],[-122.87609900000001,49.051383999999928],[-122.87249799999989,49.054436000000067],[-122.86416600000001,49.061661000000129],[-122.85888699999992,49.067497000000003],[-122.85804699999994,49.072769000000108],[-122.859444,49.077217000000076],[-122.86638599999998,49.081107999999972],[-122.87444299999999,49.083602999999982],[-122.89998600000001,49.087211999999965],[-122.91887700000001,49.087211999999965],[-122.94167299999992,49.082496999999933],[-123.02194199999997,49.051658999999972],[-123.03916900000002,49.042496000000142],[-123.04666099999997,49.033332999999971],[-123.048607,49.027214000000129],[-123.04833999999994,49.022491000000116],[-123.04778299999998,49.018326000000116],[-123.03916900000002,49.005272000000048],[-123.03431699999999,48.999435000000119],[-123.09374999999994,48.999435000000119],[-123.11332699999997,49.036658999999986],[-123.13890099999998,49.107216000000108],[-123.14835399999998,49.10833000000008],[-123.20500199999998,49.123603999999943],[-123.20973200000003,49.127212999999983],[-123.247772,49.265273999999977],[-123.24889399999995,49.273605000000032],[-123.24749800000001,49.275551000000121],[-123.09449799999993,49.283938999999975],[-123.00933800000001,49.281944000000067],[-122.94332900000001,49.284164000000089],[-122.92360699999995,49.28833000000003],[-122.91251399999999,49.29332700000009],[-122.87917299999998,49.339157000000114],[-122.87499999999994,49.351387000000045],[-122.85388199999994,49.429993000000138],[-122.85278299999999,49.436104000000057],[-122.85333300000002,49.438880999999924],[-122.86054999999993,49.447487000000024],[-122.87082700000002,49.457214000000022],[-122.87638899999996,49.455551000000071],[-122.87832600000002,49.449432000000058],[-122.876938,49.429993000000138],[-122.87721299999993,49.414992999999981],[-122.88110399999999,49.40277100000003],[-122.88583399999993,49.391936999999984],[-122.90139799999992,49.360550000000046],[-122.91555800000003,49.342216000000064],[-122.93138099999999,49.328049000000135],[-123.00538599999999,49.319549999999992],[-123.03671999999989,49.313217000000009],[-123.04521899999992,49.312550000000044],[-123.06339299999996,49.313217000000009],[-123.08023100000003,49.315547999999978],[-123.23638900000003,49.338882000000069],[-123.25418099999996,49.384720000000016],[-123.25666799999993,49.512772000000041],[-123.25334199999992,49.523048000000131],[-123.24722299999996,49.534995999999978],[-123.20162199999999,49.615715000000137],[-123.1558379999999,49.676102000000014],[-123.15416700000003,49.67943600000001],[-123.15222199999994,49.685547000000099],[-123.15361000000001,49.690269000000001],[-123.15972899999997,49.699158000000068],[-123.16471899999993,49.702217000000019],[-123.16777000000002,49.702217000000019],[-123.17027300000001,49.701103000000046],[-123.24194299999999,49.660544999999956],[-123.24804699999993,49.648605000000089],[-123.24804699999993,49.639717000000076],[-123.26677699999999,49.617378000000031],[-123.26594499999999,49.610382000000129],[-123.265106,49.607880000000023],[-123.26494600000001,49.603713999999968],[-123.26576999999997,49.598381000000131],[-123.26812000000001,49.595551000000114],[-123.27095799999995,49.593215999999984],[-123.27977799999991,49.590050000000019],[-123.34333800000002,49.561378000000047],[-123.38110399999999,49.556655999999975],[-123.39444699999996,49.551933000000133],[-123.43028299999997,49.538329999999974],[-123.48306300000002,49.516663000000108],[-123.49249299999997,49.509720000000129],[-123.495003,49.506943000000035],[-123.49610899999993,49.500275000000045],[-123.49416399999996,49.468596999999988],[-123.491669,49.463608000000022],[-123.48777799999993,49.46054799999996],[-123.47778299999993,49.455268999999987],[-123.47416699999997,49.450828999999999],[-123.47332799999992,49.441101000000117],[-123.47609699999998,49.421936000000017],[-123.47666899999996,49.419159000000093],[-123.48194899999993,49.409988000000112],[-123.48665599999993,49.406097000000045],[-123.506958,49.389435000000049],[-123.512787,49.386383000000137],[-123.51944699999996,49.383881000000088],[-123.52694700000001,49.382210000000043],[-123.53555299999994,49.381378000000097],[-123.54499800000002,49.383331000000055],[-123.60109699999987,49.397490999999945],[-123.60610999999994,49.399994000000106],[-123.67555199999998,49.425269999999955],[-123.77500900000001,49.458327999999995],[-123.85500299999995,49.468879999999956],[-123.86165599999993,49.46665999999999],[-123.88082899999995,49.466385000000116],[-123.88890100000003,49.468048000000067],[-123.89611799999994,49.470543000000077],[-123.95973200000003,49.510551000000135],[-123.96362299999993,49.513329000000113],[-123.98860200000001,49.541663999999969],[-124.06806899999992,49.633881000000031],[-124.07055700000001,49.638046000000031],[-124.07112099999995,49.644440000000088],[-124.07028199999991,49.649719000000061],[-124.05915800000002,49.671104000000014],[-124.03250100000002,49.713882000000126],[-124.02861000000001,49.71915400000006],[-124.021118,49.726379000000065],[-124.00527999999997,49.735825000000034],[-123.99833699999999,49.738884000000041],[-123.987213,49.743050000000096],[-123.97528099999994,49.745270000000119],[-123.95694700000001,49.746101000000124],[-123.94748700000002,49.744995000000131],[-123.94055199999997,49.742493000000024],[-123.93443299999996,49.739432999999963],[-123.92971799999992,49.735825000000034],[-123.876938,49.683327000000077],[-123.83306900000002,49.627486999999974],[-123.82917799999996,49.616936000000067],[-123.82444800000002,49.595825000000048],[-123.82277699999997,49.585548000000074],[-123.82333399999999,49.581383000000073],[-123.82224300000001,49.573051000000078],[-123.79972800000002,49.519440000000031],[-123.79444899999993,49.510277000000031],[-123.78971899999999,49.506660000000068],[-123.78250099999997,49.504166000000112],[-123.77639799999992,49.503882999999973],[-123.76972999999998,49.504715000000033],[-123.76640299999991,49.506660000000068],[-123.76390100000003,49.509438000000046],[-123.76139799999999,49.513329000000113],[-123.75389100000001,49.537773000000072],[-123.76862299999993,49.561935000000119],[-123.77139299999999,49.572220000000073],[-123.77223200000003,49.581940000000145],[-123.77027900000002,49.588043000000084],[-123.74017300000003,49.602599999999995],[-123.73733500000003,49.605270000000075],[-123.73517599999991,49.606937000000016],[-123.69599899999997,49.623604000000057],[-123.68683599999997,49.625603000000069],[-123.67283599999996,49.625271000000112],[-123.63890099999998,49.634995000000004],[-123.61501299999992,49.639160000000004],[-123.56331599999999,49.667213000000118],[-123.54695100000004,49.677215999999987],[-123.53751399999993,49.684990000000028],[-123.53362300000003,49.689712999999983],[-123.53167699999995,49.695541000000105],[-123.53222699999998,49.700546000000145],[-123.53388999999993,49.701934999999992],[-123.54167199999989,49.701103000000046],[-123.54998799999998,49.693877999999984],[-123.56054699999993,49.686935000000005],[-123.57195299999995,49.680824000000086],[-123.58556399999992,49.676102000000014],[-123.67578100000003,49.653046000000018],[-123.69061299999993,49.651051000000109],[-123.73978399999999,49.645882000000029],[-123.75010700000001,49.64521400000001],[-123.79666099999997,49.638328999999999],[-123.80387899999999,49.640831000000048],[-123.8125,49.647491000000116],[-123.93499800000001,49.768326000000002],[-123.93749999999989,49.77276599999999],[-123.93582200000003,49.778046000000074],[-123.93055699999996,49.785271000000137],[-123.91999800000002,49.792495999999971],[-123.88890100000003,49.819717000000026],[-123.88500999999997,49.823608000000092],[-123.88249199999996,49.82749200000012],[-123.87970699999994,49.832771000000093],[-123.87638900000002,49.842215999999951],[-123.87332200000003,49.864158999999916],[-123.87249799999995,49.87110100000001],[-123.872772,49.877212999999983],[-123.88500999999997,49.914993000000095],[-123.889183,49.922767999999962],[-123.89417300000002,49.92721599999993],[-123.90139799999992,49.928879000000052],[-123.91082799999998,49.930275000000108],[-123.920547,49.928604000000064],[-123.92999299999997,49.929718000000037],[-123.93720999999994,49.932213000000047],[-123.94193999999999,49.936104000000114],[-123.94860799999998,49.943877999999927],[-123.95472699999999,49.953049000000078],[-123.95889299999999,49.962212000000079],[-123.929779,49.985321000000056],[-123.929283,49.989493999999979],[-123.92544599999997,49.994156000000089],[-123.92044099999998,49.997325999999987],[-123.88160700000003,50.01499600000011],[-123.87343599999986,50.018326000000116],[-123.860771,50.021660000000111],[-123.85294299999998,50.022995000000037],[-123.84310199999999,50.023659000000123],[-123.80832699999996,50.040276000000119],[-123.79611199999994,50.04444100000012],[-123.75334199999998,50.07638500000013],[-123.74861099999998,50.080276000000026],[-123.74445300000002,50.086936999999921],[-123.74944299999999,50.09665700000005],[-123.82140399999997,50.152213999999958],[-123.83056599999998,50.156936999999971],[-123.846947,50.163321999999994],[-123.97778299999993,50.213882000000012],[-123.98500100000001,50.216103000000089],[-123.99054699999999,50.215828000000101],[-123.99109599999986,50.21166199999999],[-123.98832699999997,50.207496999999989],[-123.96056399999998,50.180550000000096],[-123.94695300000001,50.169441000000006],[-123.93720999999994,50.163321999999994],[-123.92388899999992,50.158600000000092],[-123.90583800000002,50.15638000000007],[-123.88806199999988,50.152489000000003],[-123.882767,50.150826000000052],[-123.87165800000002,50.145546000000024],[-123.80915799999997,50.099998000000085],[-123.8125,50.090546000000131],[-123.81639099999995,50.086105000000032],[-123.85716200000002,50.066883000000132],[-123.86933099999993,50.058048000000099],[-123.87499999999994,50.054214000000115],[-123.87899799999997,50.052380000000085],[-123.916,50.039883000000088],[-123.95465899999988,50.029217000000074],[-123.99526999999989,50.011664999999994],[-123.99916099999996,50.00638600000002],[-124,50.000275000000101],[-123.99916099999996,49.990547000000106],[-123.99526999999989,49.961662000000047],[-123.99249299999997,49.942764000000125],[-123.99109599999986,49.937209999999993],[-123.98860200000001,49.931664000000126],[-123.97972099999998,49.916663999999969],[-123.96721600000001,49.906380000000127],[-123.95140100000003,49.895828000000108],[-123.91972399999992,49.877769000000001],[-123.91471899999993,49.873878000000104],[-123.91111799999999,49.869713000000104],[-123.922234,49.834435000000099],[-123.92639199999996,49.825828999999999],[-123.97277799999989,49.80471],[-123.97833299999996,49.803047000000106],[-123.98581699999994,49.802772999999945],[-123.99194299999994,49.804436000000067],[-124.00418100000002,49.810546999999985],[-124.01012400000002,49.834602000000075],[-124.00862100000001,49.841938000000084],[-124.00728600000002,49.856769999999983],[-124.01806599999998,49.909156999999993],[-124.02166699999987,49.91415400000011],[-124.029449,49.920547000000056],[-124.037781,49.922493000000145],[-124.04222099999998,49.921379000000002],[-124.04472399999997,49.917496000000028],[-124.068893,49.878876000000105],[-124.07195299999995,49.873322000000087],[-124.07028199999991,49.869156000000032],[-124.06261399999988,49.846328999999912],[-124.05877700000002,49.841991000000007],[-124.05860899999999,49.838325999999995],[-124.06028000000003,49.835158999999976],[-124.08444199999991,49.799164000000133],[-124.09028599999999,49.795830000000137],[-124.14555399999995,49.779716000000008],[-124.17694099999989,49.773604999999975],[-124.18582199999997,49.77276599999999],[-124.2702789999999,49.768051000000128],[-124.40416700000003,49.763329000000056],[-124.41361999999998,49.763610999999969],[-124.42916899999994,49.766388000000006],[-124.43639400000001,49.768883000000073],[-124.51194800000002,49.796104000000071],[-124.52166699999992,49.804161000000079],[-124.52443699999998,49.808327000000133],[-124.52583300000003,49.813880999999981],[-124.52583300000003,49.831665000000044],[-124.52749599999987,49.837212000000022],[-124.53278399999999,49.844437000000084],[-124.57195299999995,49.874435000000005],[-124.59137699999997,49.883049000000085],[-124.63221699999997,49.899436999999921],[-124.702789,49.934989999999971],[-124.74194299999999,49.958328000000051],[-124.77306399999992,49.985825000000034],[-124.80332900000002,50.020271000000093],[-124.82556199999999,50.051384000000098],[-124.82972699999999,50.061935000000005],[-124.828056,50.066666000000112],[-124.82140400000003,50.069160000000068],[-124.81304899999992,50.067496999999946],[-124.80695300000002,50.06360600000005],[-124.76722699999988,50.036385000000053],[-124.70333900000003,49.995543999999995],[-124.66805999999991,50.07027400000004],[-124.61694299999999,50.179161000000079],[-124.60193599999997,50.234993000000031],[-124.60138699999993,50.238884000000098],[-124.60417200000001,50.243881000000044],[-124.63110399999999,50.279716000000121],[-124.63890100000003,50.286942000000067],[-124.665009,50.303879000000052],[-124.708618,50.318329000000006],[-124.71362299999987,50.321937999999989],[-124.71501199999994,50.327492000000007],[-124.65778399999994,50.386108000000092],[-124.65194699999989,50.389160000000061],[-124.62609899999995,50.398330999999985],[-124.60193599999997,50.40277100000003],[-124.58055100000001,50.399990000000116],[-124.57555400000001,50.39899400000013],[-124.57122800000002,50.397495000000106],[-124.54998799999993,50.393883000000017],[-124.53362300000003,50.395827999999995],[-124.51999699999999,50.399994000000106],[-124.43415800000002,50.431664000000012],[-124.42054699999994,50.43721000000005],[-124.39862099999999,50.450545999999974],[-124.38305700000001,50.462212000000136],[-124.36138900000003,50.479713000000118],[-124.35193600000002,50.487495000000081],[-124.34805299999999,50.492218000000037],[-124.34528399999988,50.497489999999971],[-124.34777800000001,50.50249500000001],[-124.35527000000002,50.504997000000117],[-124.36389200000002,50.503882999999917],[-124.378601,50.499161000000015],[-124.38445299999995,50.49610100000001],[-124.39388999999989,50.488884000000041],[-124.39778099999995,50.484161000000086],[-124.40055799999993,50.478874000000133],[-124.404449,50.4741590000001],[-124.40915699999999,50.470268000000033],[-124.42749000000003,50.462212000000136],[-124.51834099999991,50.432212999999933],[-124.58383199999997,50.414051000000029],[-124.58833300000003,50.41338300000001],[-124.59999800000003,50.413048000000003],[-124.71167000000003,50.375549000000092],[-124.73916599999995,50.351936000000137],[-124.80332900000002,50.317772000000105],[-124.81582600000002,50.312209999999993],[-124.83000199999992,50.30943300000007],[-124.85056299999991,50.309714999999983],[-124.93916299999995,50.325271999999984],[-125.06388900000002,50.317772000000105],[-125.07224299999996,50.319442999999978],[-125.07833900000003,50.322495000000117],[-125.08416699999998,50.329719999999952],[-125.08889799999997,50.346382000000119],[-125.08750900000001,50.357215999999994],[-125.05666399999996,50.476936000000023],[-125.05194099999989,50.480820000000051],[-125.04499799999996,50.48333000000008],[-125.02667199999996,50.483047000000113],[-125.01806599999998,50.484161000000086],[-124.97112299999998,50.498047000000042],[-124.96528599999999,50.50110600000005],[-124.88082900000001,50.560546999999985],[-124.85973399999989,50.585823000000062],[-124.858047,50.590546000000018],[-124.85444599999994,50.691376000000105],[-124.86888099999999,50.764998999999989],[-124.87805200000003,50.811377999999991],[-124.86749299999997,50.817771999999991],[-124.78943599999991,50.88110400000005],[-124.78694199999995,50.884438000000046],[-124.78751399999993,50.889160000000118],[-124.79998799999998,50.91304800000006],[-124.80277999999998,50.9180530000001],[-124.80583200000001,50.920830000000024],[-124.81916799999993,50.926384000000041],[-124.84999099999993,50.935265000000129],[-124.85417200000001,50.935547000000042],[-124.86138900000003,50.928879000000052],[-124.92443800000001,50.834717000000126],[-124.9449919999999,50.775268999999923],[-124.91221599999994,50.699431999999945],[-124.90139799999997,50.630271999999991],[-124.90194700000001,50.62471000000005],[-124.90361000000001,50.619987000000094],[-124.91111799999999,50.611382000000049],[-124.92887899999994,50.596382000000062],[-125.02694700000001,50.540833000000077],[-125.09944200000001,50.5],[-125.10417199999989,50.496941000000049],[-125.11277799999999,50.487495000000081],[-125.11694299999999,50.478043000000127],[-125.118607,50.471930999999984],[-125.11193800000001,50.452492000000063],[-125.11138899999997,50.447769000000108],[-125.11221299999994,50.44221500000009],[-125.11472299999997,50.436935000000005],[-125.11945300000002,50.432770000000005],[-125.12526700000001,50.429718000000094],[-125.17027299999995,50.412491000000102],[-125.17777999999998,50.41137700000013],[-125.1875,50.412491000000102],[-125.195831,50.414711000000068],[-125.20221699999991,50.417213000000004],[-125.20722999999998,50.420830000000137],[-125.24610899999993,50.462212000000136],[-125.33612099999993,50.479713000000118],[-125.40361000000001,50.473602000000028],[-125.42166099999992,50.465271000000143],[-125.44275699999997,50.459435000000042],[-125.46028099999995,50.457214000000135],[-125.48832700000003,50.45638300000013],[-125.54444899999993,50.490379000000132],[-125.54811099999995,50.492050000000006],[-125.54928599999994,50.494549000000006],[-125.54961399999996,50.497547000000054],[-125.54911799999996,50.501545000000135],[-125.53222700000003,50.62721300000004],[-125.51944700000001,50.647217000000126],[-125.51194800000002,50.657211000000132],[-125.50723299999999,50.661102000000028],[-125.50055699999996,50.663048000000117],[-125.48194899999999,50.664993000000095],[-125.46749899999998,50.668602000000135],[-125.45612299999999,50.674995000000081],[-125.45140100000003,50.678879000000109],[-125.42804699999999,50.705551000000014],[-125.42555199999998,50.710823000000119],[-125.43277,50.713882000000069],[-125.44360399999999,50.714157000000114],[-125.45889299999993,50.713608000000136],[-125.46639999999996,50.713051000000064],[-125.47332799999998,50.709159999999997],[-125.53778099999994,50.669991000000095],[-125.54723399999995,50.661933999999974],[-125.55832699999996,50.648048000000131],[-125.56388900000002,50.637214999999969],[-125.56806899999998,50.62721300000004],[-125.57167099999998,50.611382000000049],[-125.57224300000001,50.605270000000075],[-125.5849,50.571323000000064],[-125.58206899999999,50.56582300000008],[-125.58039099999996,50.563656000000037],[-125.5800549999999,50.559994000000074],[-125.58623499999999,50.536659000000043],[-125.610229,50.489326000000062],[-125.61238900000001,50.486492000000055],[-125.63722200000001,50.445540999999935],[-125.65167200000002,50.441375999999934],[-125.69249000000002,50.429993000000138],[-125.700287,50.428047000000049],[-125.70584099999996,50.427773000000116],[-125.71611000000001,50.432212999999933],[-125.84665699999994,50.502777000000094],[-125.86472300000003,50.495269999999948],[-125.93028299999992,50.473602000000028],[-125.95221700000002,50.468880000000127],[-125.968613,50.468880000000127],[-126.06331599999999,50.470825000000104],[-126.15915699999999,50.484992999999974],[-126.19332900000001,50.490273000000059],[-126.26777599999997,50.504997000000117],[-126.27500899999995,50.50750000000005],[-126.27916700000003,50.51166500000005],[-126.2808379999999,50.515830999999991],[-126.279449,50.520546000000024],[-126.27694700000001,50.524712000000079],[-126.22670699999998,50.536285000000021],[-126.18665299999998,50.548405000000059],[-126.18559999999997,50.566322000000014],[-126.23805199999998,50.591377000000023],[-126.25167799999991,50.609718000000044],[-126.26418299999995,50.615547000000049],[-126.27500899999995,50.627486999999974],[-126.27471899999995,50.631660000000068],[-126.266953,50.634720000000129],[-126.02006499999999,50.66188000000011],[-126.014725,50.662048000000141],[-125.90856200000002,50.664046999999982],[-125.73832699999997,50.682213000000104],[-125.69387799999993,50.704712000000029],[-125.62249799999995,50.750000000000114],[-125.61776700000001,50.754166000000055],[-125.54305999999991,50.863884000000098],[-125.53778099999994,50.87193300000007],[-125.51000999999997,50.921661000000029],[-125.50723299999999,50.926941000000113],[-125.50556899999998,50.93332700000002],[-125.50666799999993,50.945541000000048],[-125.50834699999996,50.951102999999989],[-125.55166600000001,51.042221000000097],[-125.56555200000003,51.056380999999988],[-125.58167999999995,51.072220000000129],[-125.59306299999997,51.07888000000014],[-125.610817,51.087769000000037],[-125.63390400000003,51.096939000000077],[-125.63722200000001,51.096382000000006],[-125.63890100000003,51.090271000000087],[-125.639183,51.077217000000019],[-125.63806199999999,51.06610100000006],[-125.58332799999999,50.974709000000018],[-125.61028299999987,50.89888000000002],[-125.69110099999995,50.771378000000084],[-125.73110999999989,50.735550000000046],[-125.81527699999987,50.707214000000079],[-125.96383700000001,50.688660000000084],[-126.12516799999997,50.678989000000115],[-126.13100400000002,50.678658000000098],[-126.133667,50.678825000000074],[-126.13799999999998,50.681827999999996],[-126.13917500000002,50.683495000000107],[-126.22222899999991,50.69110100000006],[-126.21362299999993,50.70388000000014],[-126.20889299999999,50.70777099999998],[-126.20333899999997,50.711104999999975],[-126.11165599999993,50.753883000000087],[-126.19888299999997,50.85582700000009],[-126.26944700000001,50.858047000000113],[-126.37609899999995,50.855270000000019],[-126.39750699999996,50.848602000000028],[-126.40306099999998,50.845268000000033],[-126.42166099999997,50.829437000000098],[-126.42748999999992,50.826103000000103],[-126.43415799999997,50.823608000000092],[-126.44304699999998,50.821663000000058],[-126.49333199999995,50.81638300000003],[-126.55277999999998,50.834717000000126],[-126.55695300000002,50.838882000000126],[-126.55972299999996,50.843880000000127],[-126.557503,50.876656000000082],[-126.55359599999991,50.881377999999984],[-126.53611799999999,50.898048000000074],[-126.531387,50.901932000000102],[-126.50110599999999,50.916099999999972],[-126.49445300000002,50.9180530000001],[-126.48332199999999,50.919158999999979],[-126.47471599999994,50.917496000000028],[-126.468613,50.914436000000137],[-126.46444700000001,50.910271000000137],[-126.45805399999995,50.907211000000075],[-126.36833200000001,50.901932000000102],[-126.35833700000001,50.901382000000069],[-126.24638400000003,50.898604999999975],[-126.22582999999997,50.898604999999975],[-126.21028100000001,50.902771000000087],[-126.20445299999994,50.90554800000001],[-126.18388399999992,50.918602000000078],[-126.17555199999993,50.92582700000014],[-126.17027299999995,50.936653000000035],[-126.17166099999997,50.946381000000088],[-126.17471299999988,50.950546000000088],[-126.17777999999998,50.951385000000016],[-126.181107,50.950829000000056],[-126.18888899999996,50.948875000000044],[-126.20028699999989,50.942490000000021],[-126.20500199999992,50.93832400000008],[-126.21556099999998,50.931106999999997],[-126.228882,50.926102000000128],[-126.24553700000001,50.923325000000034],[-126.30860899999999,50.925270000000012],[-126.412216,50.936104000000114],[-126.42639200000002,50.938599000000124],[-126.5625,50.907767999999976],[-126.56833599999993,50.903877000000136],[-126.58084099999996,50.898604999999975],[-126.66139199999998,50.868049999999982],[-126.67777999999998,50.866385999999977],[-126.72165699999994,50.876099000000011],[-126.80638099999999,50.909156999999993],[-126.81916799999999,50.915824999999984],[-126.90261799999996,50.905098000000066],[-126.90595199999996,50.90410200000008],[-126.91711399999997,50.903439000000105],[-127.01471700000002,50.903877000000136],[-127.04804999999993,50.910271000000137],[-127.08556399999998,50.921378999999945],[-127.112213,50.931106999999997],[-127.1641689999999,50.932495000000074],[-127.17639200000002,50.929161000000079],[-127.17999299999991,50.92582700000014],[-127.17804699999994,50.920273000000122],[-127.17166099999992,50.917496000000028],[-127.06276699999995,50.885269000000051],[-127.01883700000002,50.868267000000003],[-127.00765999999993,50.867939000000035],[-126.976158,50.870438000000036],[-126.97166400000003,50.869938000000047],[-126.96916999999991,50.869105999999931],[-126.96599600000002,50.86693600000001],[-126.96681999999998,50.864101000000062],[-127.01471700000002,50.819443000000092],[-127.02250700000002,50.817497000000003],[-127.03333299999997,50.817771999999991],[-127.047234,50.821663000000058],[-127.05776999999995,50.828048999999965],[-127.06166100000002,50.832213999999965],[-127.06696299999993,50.835823000000005],[-127.07333399999993,50.838882000000126],[-127.13276699999994,50.862212999999997],[-127.243607,50.896659999999997],[-127.33444199999997,50.906936999999971],[-127.39862099999993,50.926384000000041],[-127.43055699999991,50.940544000000102],[-127.53527800000001,51.000549000000035],[-127.53832999999997,51.005554000000075],[-127.53806299999997,51.008330999999998],[-127.502792,51.097487999999998],[-127.495003,51.0991590000001],[-127.47749299999992,51.097487999999998],[-127.43582199999997,51.082771000000037],[-127.40888999999987,51.071938000000046],[-127.39306599999992,51.064712999999983],[-127.38137799999998,51.059714999999983],[-127.3683319999999,51.055267000000015],[-127.354446,51.051659000000086],[-127.33056599999998,51.048331999999959],[-127.24249299999997,51.041382000000112],[-127.23610699999995,51.041107000000125],[-127.21861299999995,51.040832999999964],[-127.09612299999998,51.043883999999991],[-126.99873400000001,51.058883999999978],[-126.97956099999999,51.062881000000118],[-126.94840199999999,51.067050999999992],[-126.87339800000001,51.072883999999988],[-126.86672999999996,51.072716000000128],[-126.82656899999995,51.067050999999992],[-126.81689499999987,51.064716000000033],[-126.69167299999998,51.110550000000046],[-126.68694299999999,51.114716000000101],[-126.65278599999999,51.149994000000106],[-126.65139799999997,51.153320000000008],[-126.65110799999997,51.157494000000042],[-126.654449,51.185822000000144],[-126.65527299999997,51.187766999999951],[-126.65834000000001,51.192764000000068],[-126.66251399999993,51.194992000000013],[-126.67582700000003,51.193878000000041],[-126.67916899999994,51.192764000000068],[-126.68167099999994,51.188599000000067],[-126.68250299999994,51.176383999999985],[-126.68167099999994,51.172768000000076],[-126.68331899999998,51.165268000000026],[-126.68831599999999,51.157211000000075],[-126.69666299999994,51.14777400000014],[-126.71749899999998,51.132767000000115],[-126.84055299999989,51.094936000000075],[-126.84654999999992,51.093105000000094],[-126.85589599999997,51.092102000000068],[-126.927887,51.084938000000079],[-127.14111299999996,51.060272000000055],[-127.19249000000002,51.057213000000104],[-127.20667300000002,51.056380999999988],[-127.23832700000003,51.056938000000059],[-127.32668299999995,51.059714999999983],[-127.34084299999989,51.060822000000087],[-127.35916099999992,51.063323999999966],[-127.38861099999991,51.068054000000018],[-127.49273700000003,51.114883000000077],[-127.50985000000003,51.117359000000135],[-127.53376000000003,51.108082000000138],[-127.556107,51.099998000000028],[-127.63194299999998,51.091934000000037],[-127.64943699999998,51.092216000000064],[-127.66665599999988,51.095268000000033],[-127.67944299999988,51.101105000000132],[-127.78999299999992,51.165543000000014],[-127.79611199999994,51.197212000000036],[-127.79583700000001,51.202217000000076],[-127.787216,51.226097000000095],[-127.78472899999991,51.231376999999952],[-127.76194800000002,51.249435000000005],[-127.59973100000002,51.289435999999966],[-127.59306300000003,51.290833000000134],[-127.56555199999997,51.293052999999929],[-127.53999299999998,51.294441000000063],[-127.45140099999998,51.291939000000127],[-127.4036099999999,51.282494000000099],[-127.37554899999998,51.274437000000091],[-127.36472299999997,51.274162000000103],[-127.23110999999994,51.286110000000122],[-127.22222899999991,51.287216000000001],[-127.21444699999995,51.290549999999996],[-127.20388800000001,51.298607000000118],[-127.14334100000002,51.318329000000006],[-127.13305699999989,51.325554000000068],[-127.12693799999994,51.334991000000002],[-127.11776700000001,51.357498000000078],[-127.11110699999989,51.37721300000004],[-127.10973399999995,51.383330999999998],[-127.11028299999992,51.389717000000076],[-127.11582899999996,51.391662999999994],[-127.12249800000001,51.389160000000004],[-127.13054699999998,51.381934999999942],[-127.13417099999998,51.37721300000004],[-127.14417300000002,51.358046999999999],[-127.18250299999994,51.326942000000145],[-127.18804899999998,51.323607999999979],[-127.20834400000001,51.315826000000015],[-127.24749800000001,51.306380999999931],[-127.28056300000003,51.301102000000128],[-127.29055800000003,51.300545000000056],[-127.36749299999991,51.298881999999935],[-127.39584400000001,51.30221599999993],[-127.45221699999996,51.315826000000015],[-127.462784,51.341660000000047],[-127.55444299999999,51.332497000000046],[-127.57000699999998,51.328605999999979],[-127.75499699999989,51.319442999999978],[-127.76390100000003,51.319442999999978],[-127.77250699999996,51.3211060000001],[-127.77887699999997,51.324715000000083],[-127.78415699999994,51.333054000000118],[-127.78778099999994,51.34887700000013],[-127.78307299999994,51.356941000000006],[-127.77834300000001,51.361107000000061],[-127.74109599999997,51.380272000000048],[-127.72749299999998,51.385551000000021],[-127.69332899999995,51.390831000000048],[-127.68443300000001,51.390831000000048],[-127.65055799999999,51.408043000000077],[-127.55166600000001,51.468323000000055],[-127.51583900000003,51.519157000000007],[-127.51306199999993,51.529991000000052],[-127.512787,51.535552999999993],[-127.515289,51.5472180000001],[-127.521118,51.563880999999981],[-127.51640299999997,51.587769000000094],[-127.51500699999985,51.593880000000013],[-127.50890399999997,51.604712999999947],[-127.50055700000001,51.61360900000011],[-127.48805199999998,51.619438000000116],[-127.44444299999998,51.629990000000078],[-127.37609900000001,51.644997000000103],[-127.32584400000002,51.651382000000126],[-127.23332199999999,51.662490999999989],[-127.09584000000001,51.668052999999986],[-126.95344499999999,51.658325000000104],[-126.94693799999993,51.657657999999969],[-126.93778199999997,51.655327000000057],[-126.88377400000002,51.649494000000061],[-126.708054,51.641937000000041],[-126.66332999999986,51.64888000000002],[-126.65527299999997,51.651382000000126],[-126.620003,51.679993000000024],[-126.60694899999993,51.706940000000145],[-126.60527000000002,51.713051000000064],[-126.60582699999992,51.719436999999971],[-126.60777300000001,51.724990999999932],[-126.63555899999989,51.769714000000022],[-126.63944999999995,51.773880000000133],[-126.66027800000001,51.792221000000097],[-126.66528299999999,51.772491000000116],[-126.66665599999999,51.766388000000006],[-126.66251399999993,51.747215000000097],[-126.65387699999991,51.732491000000039],[-126.64362299999999,51.719154000000003],[-126.63999899999999,51.709991000000002],[-126.64138800000001,51.705269000000101],[-126.64388999999994,51.701102999999989],[-126.64750700000002,51.697768999999994],[-126.69304699999998,51.664711000000011],[-126.703056,51.664436000000023],[-126.91521499999999,51.682438000000047],[-126.96421799999996,51.686604000000102],[-126.97788199999997,51.690605000000062],[-127.05387899999988,51.697768999999994],[-127.07501199999996,51.697768999999994],[-127.14055599999995,51.694435000000055],[-127.27416999999997,51.68332700000002],[-127.3999859999999,51.669716000000051],[-127.41583300000002,51.665824999999984],[-127.42582699999997,51.666663999999969],[-127.43222000000003,51.66832700000009],[-127.43554699999987,51.671103999999957],[-127.43971299999993,51.674712999999997],[-127.44167299999992,51.680275000000108],[-127.42748999999998,51.731934000000138],[-127.364441,51.768326000000116],[-127.36193800000001,51.771660000000111],[-127.359444,51.777214000000072],[-127.33917200000002,51.839156999999943],[-127.33721899999989,51.851387000000045],[-127.33999599999999,51.861106999999947],[-127.34555099999994,51.864159000000086],[-127.35109699999992,51.863609000000054],[-127.35694899999999,51.860275000000058],[-127.44833399999987,51.777214000000072],[-127.57195299999989,51.706940000000145],[-127.58556399999986,51.677773000000059],[-127.54638699999992,51.627486999999917],[-127.55860899999999,51.543884000000105],[-127.56111099999998,51.538605000000132],[-127.57417299999997,51.518883000000073],[-127.58139,51.509437999999989],[-127.63583399999999,51.460548000000131],[-127.640289,51.458602999999925],[-127.65915699999999,51.457497000000103],[-127.70639,51.45638300000013],[-127.71639999999996,51.457214000000135],[-127.72389199999992,51.459435000000042],[-127.73029300000002,51.463051000000121],[-127.75473,51.479988000000105],[-127.75917099999992,51.484161000000029],[-127.76083399999993,51.48971599999993],[-127.75974300000001,51.494438000000059],[-127.74416400000001,51.498329000000126],[-127.712784,51.504439999999988],[-127.787216,51.560271999999941],[-127.87416099999996,51.663322000000051],[-127.87805200000003,51.673881999999992],[-127.88999899999999,51.798332000000016],[-127.88944999999995,51.807770000000005],[-127.886124,51.852218999999991],[-127.88474299999996,51.858604000000014],[-127.86971999999997,51.89527099999998],[-127.86609599999997,51.899993999999992],[-127.86165599999987,51.904160000000047],[-127.83306899999997,51.919991000000039],[-127.82055699999995,51.926659000000029],[-127.79638699999998,51.938599000000124],[-127.78971899999999,51.941101000000003],[-127.76611300000002,51.946937999999932],[-127.73805199999993,51.949715000000026],[-127.66443600000002,51.953880000000026],[-127.65527299999997,52.040276000000063],[-127.65387699999991,52.046386999999982],[-127.65139799999997,52.051659000000086],[-127.64527900000002,52.061934999999949],[-127.62943999999999,52.088326000000052],[-127.62581599999999,52.093047999999953],[-127.61749299999997,52.101936000000137],[-127.58029199999993,52.129158000000075],[-127.52555799999993,52.147217000000012],[-127.49944299999993,52.151657000000057],[-127.48055999999997,52.151099999999929],[-127.47721899999999,52.150543000000027],[-127.46528599999988,52.143883000000017],[-127.46140300000002,52.133049000000142],[-127.46250899999995,52.112495000000024],[-127.46611000000001,52.107773000000122],[-127.47556299999997,52.099716000000114],[-127.48249799999996,52.09693900000002],[-127.49833699999999,52.093322999999998],[-127.50834700000001,52.093322999999998],[-127.51834100000002,52.094436999999971],[-127.52722199999994,52.095825000000048],[-127.53500400000001,52.098877000000016],[-127.55277999999998,52.101105000000132],[-127.56276700000001,52.100829999999917],[-127.57167099999998,52.098877000000016],[-127.58444199999991,52.093605000000082],[-127.58889799999992,52.089714000000015],[-127.61416600000001,52.035828000000095],[-127.61332699999997,52.032494000000099],[-127.59416199999998,52.035553000000107],[-127.58612099999993,52.038048000000117],[-127.42083700000001,52.120270000000119],[-127.43360899999999,52.131659999999954],[-127.45056199999999,52.169159000000093],[-127.45249899999988,52.173882000000049],[-127.45305599999995,52.179993000000138],[-127.44972199999995,52.182770000000062],[-127.37609900000001,52.216934000000037],[-127.35417199999995,52.224709000000132],[-127.33138999999994,52.230270000000019],[-127.30027799999993,52.228325000000041],[-127.29110700000001,52.229431000000034],[-127.28443900000002,52.231934000000024],[-127.24526999999995,52.248878000000104],[-127.23944099999994,52.252220000000023],[-127.19304699999998,52.290833000000077],[-127.18582200000003,52.300270000000012],[-127.17749000000003,52.309715000000097],[-127.17166099999992,52.31249200000002],[-127.16361999999987,52.314156000000025],[-127.04276999999996,52.309158000000025],[-127.01251200000002,52.306381000000101],[-127.00499699999995,52.303604000000007],[-126.99861099999993,52.298607000000118],[-126.96444700000001,52.271659999999997],[-126.94526699999994,52.25610400000005],[-126.93804899999986,52.246941000000049],[-126.93611099999998,52.241379000000109],[-126.93554699999999,52.235268000000019],[-126.82749899999999,52.128044000000102],[-126.75195300000001,52.078605999999979],[-126.71193700000003,52.044441000000063],[-126.69415300000003,52.028877000000136],[-126.691101,52.023880000000077],[-126.68388399999998,51.999717999999973],[-126.67804699999994,51.990547000000049],[-126.67388899999997,51.986382000000049],[-126.66944899999999,51.983604000000071],[-126.66832699999998,51.985549999999932],[-126.66776999999996,51.991104000000121],[-126.66583300000002,52.031380000000127],[-126.66665599999999,52.036384999999996],[-126.66972399999997,52.041939000000013],[-126.73805199999987,52.113052000000096],[-126.76363399999991,52.13249200000007],[-126.81722999999988,52.166100000000085],[-126.83112299999999,52.17193599999996],[-126.85555999999997,52.178047000000049],[-126.86305199999993,52.181107000000111],[-126.88027999999986,52.190544000000045],[-126.90055799999999,52.205268999999987],[-126.90666199999993,52.215271000000143],[-126.94082600000002,52.303879000000052],[-126.94027699999998,52.31082200000003],[-126.93611099999998,52.32249500000006],[-126.932503,52.327217000000132],[-126.92083700000001,52.333603000000039],[-126.87361099999998,52.350830000000087],[-126.82084700000001,52.363883999999928],[-126.81416299999995,52.365273000000116],[-126.78888699999999,52.369987000000094],[-126.77667199999996,52.370270000000062],[-126.76194800000002,52.370543999999995],[-126.73638900000003,52.366386000000034],[-126.73166700000002,52.367767000000072],[-126.73249800000002,52.373877999999991],[-126.73665599999998,52.378044000000045],[-126.75167799999991,52.388328999999999],[-126.76363399999991,52.393326000000059],[-126.79277000000002,52.395546000000081],[-126.91027799999995,52.373877999999991],[-126.92610200000001,52.370827000000133],[-126.94110099999995,52.366386000000034],[-126.948036,52.363883999999928],[-126.95973199999997,52.357215999999994],[-126.96972699999998,52.34165999999999],[-126.97444200000001,52.337768999999923],[-126.98137699999995,52.33526599999999],[-127.00279199999994,52.334991000000116],[-127.08249699999993,52.334991000000116],[-127.14111299999996,52.348045000000013],[-127.15778399999999,52.352492999999981],[-127.18639400000001,52.380820999999969],[-127.22805800000003,52.453049000000135],[-127.23610699999995,52.505554000000132],[-127.23665599999998,52.51166500000005],[-127.23416099999997,52.517211999999972],[-127.19695299999995,52.549995000000138],[-127.18639400000001,52.557770000000062],[-127.08112299999993,52.613051999999982],[-127.07417299999997,52.616385999999977],[-127.05915800000002,52.620827000000077],[-127.00446299999999,52.626937999999996],[-126.99638399999998,52.62860100000006],[-126.989441,52.631935000000055],[-126.97972099999998,52.639434999999935],[-126.97609699999998,52.64388300000013],[-126.924713,52.714714000000129],[-126.92223399999995,52.718880000000013],[-126.92166099999997,52.725822000000107],[-126.92250100000001,52.731102000000021],[-126.966949,52.828606000000036],[-126.97112300000003,52.832771000000037],[-126.975281,52.835548000000131],[-126.98332199999987,52.837769000000037],[-127.01777599999991,52.845543000000021],[-127.02139299999993,52.82777400000009],[-127.01834100000002,52.823608000000036],[-127.00778199999996,52.808883999999978],[-126.98082699999992,52.724434000000031],[-126.98111,52.717491000000052],[-126.98528299999992,52.707497000000046],[-127.04250300000001,52.64777399999997],[-127.04737899999992,52.643462999999997],[-127.05561799999998,52.641815000000065],[-127.13445300000001,52.60943600000013],[-127.24054699999988,52.557770000000062],[-127.25723299999999,52.545830000000137],[-127.28083799999996,52.509162999999944],[-127.28222700000003,52.503052000000082],[-127.28028899999993,52.497489999999914],[-127.27610800000002,52.49332400000003],[-127.26528899999988,52.485550000000046],[-127.25805699999995,52.477211000000011],[-127.25834699999996,52.47304500000007],[-127.26194800000002,52.467491000000109],[-127.26666299999988,52.464157000000114],[-127.33345800000001,52.433895000000007],[-127.40082599999994,52.424431000000141],[-127.46541599999995,52.395477000000085],[-127.48935699999987,52.362072000000126],[-127.61165599999998,52.294716000000051],[-127.61833200000001,52.291939000000127],[-127.72138999999993,52.274712000000079],[-127.73055999999997,52.273604999999975],[-127.739441,52.27388000000002],[-127.74610899999999,52.276657000000114],[-127.75029000000001,52.281661999999983],[-127.80471799999998,52.248878000000104],[-127.84277299999997,52.2241590000001],[-127.84528399999999,52.219437000000028],[-127.85249299999987,52.209991000000059],[-127.85833699999995,52.206657000000064],[-127.86389200000002,52.207496999999933],[-127.86916399999996,52.211105000000032],[-127.87110899999999,52.216385000000116],[-127.87304699999999,52.223320000000001],[-127.90527299999991,52.27887700000008],[-127.86776700000001,52.494995000000074],[-127.86776700000001,52.500549000000092],[-127.86971999999997,52.506103999999993],[-127.87499999999994,52.510276999999917],[-127.88166799999999,52.51249700000011],[-127.89195299999994,52.513329000000056],[-127.89998599999996,52.50999500000006],[-127.92488899999995,52.443886000000134],[-127.92971799999992,52.427547000000004],[-127.92854299999999,52.424213000000009],[-127.92588000000001,52.421215000000132],[-127.916718,52.414879000000099],[-127.90905800000002,52.407382999999982],[-127.90589099999988,52.401549999999986],[-127.90538800000002,52.39788400000009],[-127.95694700000001,52.324440000000038],[-127.96389799999997,52.321663000000115],[-127.97277800000001,52.323326000000066],[-127.995003,52.330551000000128],[-128.00805699999989,52.336937000000034],[-128.01251200000002,52.341102999999919],[-128.05721999999997,52.394713999999965],[-128.05917399999998,52.400269000000094],[-128.06832899999995,52.447769000000051],[-128.06695599999995,52.45388000000014],[-128.05944799999992,52.470267999999976],[-128.05111699999992,52.478874000000076],[-128.0419619999999,52.487770000000012],[-128.03250100000002,52.495270000000119],[-128.00945999999999,52.508606000000043],[-127.97721899999999,52.519714000000079],[-127.96916199999993,52.521660000000111],[-127.96140300000002,52.519440000000145],[-127.95612299999993,52.515831000000105],[-127.89611799999994,52.542220999999984],[-127.89138800000001,52.546387000000038],[-127.88778699999995,52.551102000000071],[-127.87998999999991,52.574164999999994],[-127.87970699999994,52.579720000000066],[-127.88751200000002,52.577773999999977],[-128.0291749999999,52.541664000000083],[-128.04083300000002,52.535827999999981],[-128.09973099999991,52.503052000000082],[-128.1049349999999,52.492382000000077],[-128.11831699999999,52.465546000000074],[-128.14834599999995,52.422217999999987],[-128.22500599999989,52.330826000000116],[-128.23330699999997,52.321937999999989],[-128.27862499999998,52.280822999999998],[-128.28332499999993,52.276657000000114],[-128.28890999999999,52.273323000000119],[-128.29583700000001,52.270828000000108],[-128.30499299999997,52.269439999999975],[-128.39388999999989,52.291382000000056],[-128.32971199999992,52.380271999999991],[-128.29751599999992,52.400543000000027],[-128.29083300000002,52.401657],[-128.28085299999992,52.400825999999995],[-128.27416999999997,52.39804799999996],[-128.267517,52.396660000000054],[-128.260559,52.399161999999933],[-128.25585899999999,52.403320000000065],[-128.22442599999994,52.459717000000069],[-128.22192399999989,52.465271000000087],[-128.22055099999994,52.471375000000137],[-128.22109999999992,52.484436000000073],[-128.22860700000001,52.523048000000017],[-128.23055999999997,52.528328000000101],[-128.23831200000001,52.536658999999986],[-128.24221799999998,52.547775000000115],[-128.24194299999999,52.55471],[-128.23916600000001,52.566940000000102],[-128.18527199999988,52.671104000000128],[-128.14584399999995,52.719986000000063],[-128.120544,52.757217000000026],[-128.13165300000003,52.876381000000038],[-128.17001299999998,52.856658999999979],[-128.17501800000002,52.851935999999966],[-128.22305299999994,52.812492000000077],[-128.22888199999994,52.80860100000001],[-128.23525999999993,52.805824000000086],[-128.24972500000001,52.801384000000098],[-128.2744449999999,52.799438000000009],[-128.30029300000001,52.800270000000125],[-128.33999600000004,52.805549999999982],[-128.42611699999998,52.817497000000117],[-128.43612699999994,52.818886000000134],[-128.441101,52.822769000000051],[-128.48776199999986,52.873604000000114],[-128.49359100000004,52.882767000000115],[-128.495544,52.887496999999939],[-128.49887100000001,52.903602999999976],[-128.50640899999996,52.96305099999995],[-128.51556399999998,53.019988999999953],[-128.53973400000001,53.131934999999942],[-128.62554899999992,53.202217000000019],[-128.66140699999994,53.202217000000019],[-128.66082799999992,53.196938000000046],[-128.66305499999999,53.190826000000072],[-128.66723599999995,53.187492000000077],[-128.67666600000001,53.187767000000122],[-128.68527199999994,53.189430000000016],[-128.70111099999997,53.195541000000105],[-128.78832999999997,53.239715999999987],[-128.79473899999999,53.243324000000086],[-128.84887699999996,53.275826000000052],[-128.85888699999998,53.283607000000131],[-128.86639400000001,53.292220999999984],[-128.86944600000004,53.2972180000001],[-128.87832599999996,53.31638300000003],[-128.88558999999998,53.374378000000092],[-128.88798499999996,53.424965000000043],[-128.92186000000004,53.453601999999989],[-128.95916699999998,53.502777000000037],[-128.97332799999998,53.547493000000031],[-128.97277799999995,53.553047000000049],[-128.966095,53.556099000000131],[-128.80499299999997,53.569992000000013],[-128.79501300000004,53.568604000000107],[-128.78832999999997,53.564995000000067],[-128.78332499999999,53.561104],[-128.77972399999987,53.556938000000116],[-128.69250499999998,53.485268000000133],[-128.55862399999995,53.413879000000122],[-128.52362099999999,53.396660000000054],[-128.44601399999999,53.413158000000124],[-128.44517499999995,53.415993000000071],[-128.42950399999989,53.429824999999994],[-128.18972799999989,53.459991000000002],[-128.15945399999993,53.455826000000002],[-128.14862099999993,53.453605999999979],[-128.13192699999996,53.448875000000044],[-128.105255,53.440543999999989],[-128.09387199999998,53.433052000000032],[-128.07081600000004,53.394114999999942],[-128.03488200000004,53.369289000000038],[-128.00598099999996,53.34705699999995],[-127.95195000000001,53.326102999999932],[-127.94999699999988,53.321381000000031],[-127.951683,53.309990000000084],[-127.95388799999995,53.304161000000079],[-127.95694700000001,53.28138000000007],[-127.95527600000003,53.265830999999991],[-127.95111099999997,53.256386000000077],[-127.94611399999985,53.252220000000023],[-127.87526700000001,53.224433999999917],[-127.87027,53.222763000000043],[-127.868607,53.233879000000002],[-127.86776700000001,53.239715999999987],[-127.87138399999998,53.244155999999975],[-127.92259999999993,53.273685],[-127.93297599999994,53.293323999999927],[-127.92408,53.318153000000109],[-127.92593399999993,53.330750000000023],[-127.98805199999998,53.353881999999942],[-128.07165499999991,53.431380999999988],[-128.09387199999998,53.451935000000105],[-128.12692300000003,53.481102000000021],[-128.16528299999993,53.483879000000115],[-128.18331899999993,53.484161000000029],[-128.30139199999991,53.478324999999927],[-128.45187399999992,53.50332300000008],[-128.45339999999999,53.499656999999956],[-128.45640600000002,53.496822000000066],[-128.48156700000004,53.487987999999916],[-128.49021900000002,53.485325000000046],[-128.53340100000003,53.478324999999927],[-128.54457100000002,53.478992000000062],[-128.54937699999994,53.480823999999927],[-128.81304899999992,53.619155999999975],[-128.81664999999998,53.623322000000087],[-128.81805399999996,53.644714000000079],[-128.81750499999993,53.65026899999998],[-128.81390399999998,53.656936999999971],[-128.808899,53.661659000000043],[-128.78417999999988,53.675552000000096],[-128.77279699999997,53.733330000000137],[-128.79388399999988,53.764998999999932],[-128.79333500000001,53.770546000000081],[-128.79110699999995,53.776657],[-128.77056899999991,53.79583000000008],[-128.67767300000003,53.839775000000088],[-128.67384300000003,53.84160600000007],[-128.66551200000004,53.844608000000107],[-128.66067499999997,53.845439999999996],[-128.65583799999996,53.843605000000082],[-128.64482099999987,53.837105000000122],[-128.64166299999994,53.834770000000049],[-128.60360699999995,53.842216000000064],[-128.59387199999998,53.839714000000015],[-128.47720299999997,53.828605999999979],[-128.47137499999997,53.832497000000046],[-128.47555499999999,53.842216000000064],[-128.48275799999999,53.850829999999917],[-128.48944099999994,53.854163999999912],[-128.49887100000001,53.856941000000006],[-128.51000999999991,53.859161000000029],[-128.53030399999994,53.861664000000019],[-128.53832999999992,53.860275000000001],[-128.54501299999998,53.857216000000051],[-128.55306999999988,53.856102000000078],[-128.61726399999992,53.868546000000094],[-128.65962199999996,53.882885000000101],[-128.662598,53.885216000000014],[-128.66461200000003,53.888218000000109],[-128.67903099999995,53.907524000000024],[-128.67869599999995,53.910857999999962],[-128.66686999999996,53.92285900000013],[-128.66072099999997,53.928524000000095],[-128.6480709999999,53.949432000000058],[-128.63946499999997,53.96054799999996],[-128.59832799999998,54.02693899999997],[-128.60055499999993,54.031661999999983],[-128.60916099999997,54.03138000000007],[-128.61663799999997,54.029160000000104],[-128.67861899999997,54.00360900000004],[-128.68527199999994,54.000832000000116],[-128.68890399999998,53.994156000000032],[-128.69555699999989,53.976097000000095],[-128.72283899999991,53.944046000000071],[-128.72499099999999,53.940216000000078],[-128.72766100000001,53.936710000000062],[-128.73100299999993,53.933547999999917],[-128.79943799999995,53.87499200000002],[-128.91528299999999,53.787216000000001],[-128.93194600000004,53.774711999999965],[-128.98361199999994,53.762214999999969],[-129.10497999999995,53.72026800000009],[-129.11804199999989,53.714157000000057],[-129.12359599999996,53.710274000000084],[-129.21749899999992,53.64027400000009],[-129.232483,53.625824000000136],[-129.23803699999991,53.61332700000014],[-129.239441,53.601936000000023],[-129.23693800000001,53.537216000000058],[-129.23138399999999,53.500832000000059],[-129.23443599999996,53.461937000000091],[-129.23498499999999,53.456100000000106],[-129.23748799999993,53.433600999999953],[-129.27279699999997,53.379158000000018],[-129.30334499999992,53.384994999999947],[-129.33389299999999,53.397491000000059],[-129.35360700000001,53.407768000000033],[-129.51861600000001,53.514998999999989],[-129.62914999999987,53.587769000000037],[-129.686127,53.630272000000105],[-129.83084099999996,53.74721500000004],[-129.86111499999998,53.765273999999977],[-129.912781,53.79833200000013],[-130.04501300000004,53.883049000000142],[-130.05029300000001,53.886940000000038],[-130.099152,53.941933000000063],[-130.10137899999995,53.946655000000135],[-130.09136999999987,54.066101000000003],[-130.09082000000001,54.071662999999944],[-130.07693499999993,54.114441000000056],[-130.07333399999999,54.120827000000133],[-130.06500199999999,54.132209999999986],[-130.05166600000001,54.148605000000089],[-130.04666099999997,54.153320000000122],[-129.86361699999998,54.213051000000064],[-129.84887700000002,54.217491000000109],[-129.83194000000003,54.219436999999971],[-129.78205899999995,54.210601999999938],[-129.72637899999995,54.200771000000088],[-129.69738799999993,54.194435000000055],[-129.68756099999996,54.19093300000003],[-129.64416499999999,54.181938000000059],[-129.63333099999994,54.179993000000081],[-129.6141659999999,54.178917000000069],[-129.591949,54.185822000000087],[-129.47082499999999,54.235825000000034],[-129.47000100000002,54.23721299999994],[-129.47442599999999,54.239990000000034],[-129.48275799999988,54.243050000000096],[-129.51141399999989,54.244155999999975],[-129.51889,54.241936000000123],[-129.56140099999993,54.226935999999966],[-129.56777999999997,54.223877000000016],[-129.68238799999995,54.221602999999959],[-129.68823199999997,54.223099000000104],[-129.77654999999993,54.234767999999974],[-129.83666999999997,54.23832700000014],[-129.8549799999999,54.238045000000056],[-129.87136799999996,54.235268000000133],[-129.966949,54.206940000000031],[-129.97997999999995,54.200829000000113],[-129.99166899999989,54.192764000000011],[-130.03750600000001,54.173050000000103],[-130.10443099999998,54.154434000000094],[-130.11331200000001,54.153877000000023],[-130.122772,54.154434000000094],[-130.13110399999999,54.157210999999961],[-130.19168099999996,54.193321000000083],[-130.22805800000003,54.258606000000043],[-130.238586,54.294998000000078],[-130.2611389999999,54.342765999999983],[-130.27584799999994,54.349716000000058],[-130.28250100000002,54.346382000000062],[-130.332764,54.329720000000066],[-130.34887700000002,54.326942000000088],[-130.39138799999995,54.330276000000083],[-130.45166,54.336655000000121],[-130.45916699999998,54.338600000000099],[-130.48111,54.364715999999987],[-130.48388699999998,54.401657000000114],[-130.47637899999989,54.430550000000096],[-130.47360199999997,54.43582200000003],[-130.43362400000001,54.496658000000139],[-130.42999299999997,54.562492000000077],[-130.43972799999989,54.612212999999997],[-130.44055200000003,54.617493000000024],[-130.43859900000001,54.623604000000114],[-130.43277,54.627487000000031],[-130.42556799999994,54.629715000000033],[-130.41665599999993,54.630272000000105],[-130.40750099999997,54.62860100000006],[-130.39779699999997,54.626381000000038],[-130.38946499999992,54.62332200000003],[-130.37554899999992,54.616661000000136],[-130.33215299999995,54.578552000000002],[-130.28167699999995,54.528381000000024],[-130.22277799999989,54.471931000000041],[-130.06304899999986,54.339989000000116],[-130.05776999999995,54.336105000000089],[-130.03723100000002,54.326103000000103],[-130.02084400000001,54.319992000000013],[-129.99304199999989,54.31221000000005],[-129.98275799999993,54.311104000000057],[-129.96581999999995,54.313049000000035],[-129.95916699999998,54.316100999999946],[-129.95584099999985,54.322495000000004],[-129.95971700000001,54.326942000000088],[-129.96722399999993,54.328880000000026],[-129.98165900000004,54.324439999999981],[-129.99054000000001,54.32388300000008],[-130.02362099999993,54.335548000000017],[-130.0386049999999,54.341934000000094],[-130.04388399999999,54.345824999999991],[-130.14779699999997,54.44193300000012],[-130.31382799999994,54.586269000000073],[-130.36721799999992,54.635268999999994],[-130.37222299999996,54.644714000000079],[-130.374146,54.654991000000052],[-130.36859100000004,54.667770000000132],[-130.35861199999999,54.677490000000034],[-130.35278299999999,54.681381000000101],[-130.33972199999999,54.687492000000134],[-130.32501200000002,54.692214999999976],[-130.24386599999997,54.707771000000093],[-130.23553499999997,54.709160000000111],[-130.22582999999997,54.708885000000066],[-130.17193599999996,54.703606000000093],[-130.16195700000003,54.701103000000103],[-130.15362500000003,54.698326000000009],[-130.10110499999996,54.671660999999972],[-130.075287,54.657767999999976],[-130.06887800000004,54.648604999999975],[-130.06500199999999,54.644440000000145],[-130.054169,54.636658000000011],[-130.02694699999989,54.623047000000042],[-130.00058000000001,54.61471599999993],[-129.98083500000001,54.609993000000145],[-129.959991,54.607498000000135],[-129.91027800000001,54.605552999999929],[-129.968323,54.62193300000007],[-130.00445599999989,54.632767000000115],[-130.02807599999994,54.641936999999984],[-130.19473299999999,54.723320000000001],[-130.20166,54.72693600000008],[-130.20111099999986,54.732490999999982],[-130.17388899999992,54.846656999999993],[-130.17111199999999,54.851662000000033],[-130.16583300000002,54.856659000000093],[-130.16082799999998,54.861382000000106],[-130.05835000000002,54.952773999999977],[-130.04583700000001,54.959991000000059],[-130.03195199999993,54.965271000000143],[-129.94694499999991,54.970490000000098],[-129.9362789999999,54.971153000000072],[-129.92394999999993,54.970322000000067],[-129.91810599999985,54.968826000000092],[-129.90977499999997,54.964661000000092],[-129.90745500000003,54.962158000000102],[-129.65444899999994,54.980545000000006],[-129.646973,54.982765000000029],[-129.64028899999994,54.985825000000091],[-129.62249799999995,54.997772000000055],[-129.62499999999994,55.00249500000001],[-129.79998799999998,55.006942999999978],[-129.86608899999999,55.006660000000011],[-129.87527499999999,55.00610400000005],[-129.883331,55.004715000000033],[-129.90585299999998,54.997772000000055],[-129.91390999999993,54.996383999999921],[-129.96487400000001,55.003436999999963],[-129.97171000000003,55.004608000000076],[-129.97905000000003,55.008938000000057],[-129.98138399999993,55.011608000000138],[-129.98104899999993,55.014938000000143],[-129.9963679999999,55.024162000000047],[-129.97555499999993,55.066939999999931],[-129.96139500000004,55.093323000000112],[-129.95638999999989,55.098045000000013],[-129.84750399999996,55.210548000000074],[-129.72665399999988,55.338600000000099],[-129.66300999999999,55.412212000000011],[-129.64334099999996,55.434158000000025],[-129.63723800000002,55.438042000000053],[-129.62222299999996,55.442490000000021],[-129.60525499999994,55.445267000000115],[-129.58471700000001,55.443878000000097],[-129.54110700000001,55.438042000000053],[-129.52389500000004,55.439987000000031],[-129.50863599999997,55.444434999999999],[-129.48831199999995,55.453605999999922],[-129.47610499999996,55.461380000000133],[-129.47164899999996,55.467209000000139],[-129.47109999999992,55.472762999999986],[-129.47500600000001,55.47693600000008],[-129.48416099999997,55.478600000000085],[-129.62027,55.459434999999985],[-129.63696299999998,55.45665699999995],[-129.679123,55.473156000000131],[-129.68611099999998,55.467491000000052],[-129.69662500000004,55.45399100000003],[-129.69979899999993,55.450993000000096],[-129.70428500000003,55.449661000000049],[-129.70979299999993,55.450657000000035],[-129.71211199999999,55.453327000000115],[-129.71362299999993,55.456161000000122],[-129.78695700000003,55.566666000000112],[-129.78582800000004,55.50277699999998],[-129.779449,55.493607000000111],[-129.77224699999999,55.47943099999992],[-129.78030399999994,55.359717999999987],[-129.78250100000002,55.353607000000068],[-129.81390399999987,55.289719000000048],[-129.81750499999998,55.283332999999971],[-129.90695199999988,55.168052999999986],[-129.911407,55.162491000000045],[-129.92083699999995,55.151931999999988],[-130.02835099999999,55.036385000000109],[-130.06832900000001,54.996941000000049],[-130.07443199999994,54.992767000000015],[-130.08166499999999,54.990546999999992],[-130.09082000000001,54.989990000000091],[-130.10055499999999,54.990546999999992],[-130.10833699999995,54.992493000000081],[-130.11361699999992,54.996383999999921],[-130.12777700000004,55.013885000000073],[-130.16027799999995,55.069717000000026],[-130.16223099999996,55.079993999999999],[-130.1600039999999,55.086105000000089],[-130.11859099999998,55.142493999999942],[-130.11416599999995,55.148331000000098],[-130.08084099999991,55.184714999999983],[-130.06390399999998,55.195266999999944],[-130.04528799999997,55.204163000000051],[-130.03918499999992,55.208046000000024],[-129.948059,55.276382000000012],[-129.94387799999998,55.282211000000018],[-129.94473300000004,55.287216000000058],[-129.94888300000002,55.295830000000137],[-129.96054100000003,55.308884000000035],[-130.00863599999997,55.370827000000077],[-130.101654,55.556380999999988],[-130.10360700000001,55.566666000000112],[-130.12887599999999,55.722214000000122],[-130.12942499999997,55.732765000000029],[-130.12887599999999,55.738602000000014],[-130.12609900000001,55.750275000000045],[-130.12191799999994,55.762496999999996],[-130.11639400000001,55.774993999999992],[-130.11276199999998,55.781661999999983],[-130.10833699999995,55.787216000000001],[-130.09109499999994,55.799995000000024],[-130.07916299999999,55.808044000000052],[-130.06722999999994,55.815826000000015],[-130.0552669999999,55.823883000000137],[-130.03945899999997,55.838326000000052],[-129.96664399999992,55.912209000000018],[-129.962219,55.917770000000019],[-129.96417199999991,55.928329000000076],[-129.97137499999985,55.931663999999955],[-129.97970599999985,55.932213000000104],[-129.99499500000002,55.927773000000059],[-130.0019529999999,55.924713000000054],[-130.00500499999993,55.921661000000086],[-130.01507600000002,55.909179999999992],[-130.01419099999998,56.023880000000133],[-130.0147399999999,56.025826000000052],[-130.0538939999999,56.075554000000011],[-130.08859299999995,56.118049999999982],[-130.22915599999993,56.090271000000143],[-130.36526499999991,56.123878000000104],[-130.44750999999991,56.206383000000073],[-130.46194499999996,56.235268000000133],[-130.48471099999995,56.239433000000133],[-130.53277599999996,56.246384000000035],[-130.5607149999999,56.250000000000114],[-130.62719699999997,56.258606000000043],[-130.720551,56.325554000000125],[-130.75585899999999,56.353049999999996],[-130.77444500000001,56.366104000000064],[-130.84722899999997,56.374435000000119],[-130.92001300000004,56.382492000000127],[-131.05499299999997,56.398048000000074],[-131.07055699999995,56.403602999999976],[-131.12582399999997,56.424163999999962],[-131.1444699999999,56.434715000000097],[-131.16473400000001,56.445267000000058],[-131.20526100000001,56.465828000000101],[-131.22137499999997,56.472488000000112],[-131.290009,56.500548999999978],[-131.31445299999996,56.509994999999947],[-131.53945899999991,56.596656999999993],[-131.55777,56.602219000000105],[-131.57888800000001,56.603324999999927],[-131.61111499999998,56.602219000000105],[-131.81610099999995,56.594994000000042],[-131.82415800000001,56.59693900000002],[-131.82861299999996,56.600830000000087],[-131.85803199999987,56.718880000000127],[-131.86361699999992,56.786110000000122],[-131.86053500000003,56.797775000000001],[-131.86138899999997,56.79972100000009],[-132.10305800000003,56.866661000000022],[-132.09194899999994,56.893607999999972],[-132.06195100000002,56.959717000000069],[-132.03668199999993,57.013054000000011],[-132.02749600000004,57.036385000000053],[-132.22109999999992,57.068054000000075],[-132.316956,57.083878000000027],[-132.33694500000001,57.088325999999995],[-132.32611099999997,57.100548000000117],[-132.26806599999986,57.16304800000006],[-132.25473,57.17471299999994],[-132.226654,57.204711999999972],[-132.35415599999988,57.354439000000127],[-132.36972000000003,57.37082700000002],[-132.37914999999992,57.37943300000012],[-132.45111099999986,57.435265000000072],[-132.471924,57.451103000000103],[-132.4927669999999,57.46665999999999],[-132.50363200000004,57.474158999999986],[-132.61944599999998,57.583328000000051],[-132.75250199999994,57.709435000000042],[-132.76113899999996,57.717765999999926],[-132.76889,57.72665400000011],[-132.78222700000003,57.745270000000119],[-132.79110699999995,57.7586060000001],[-132.79583700000001,57.768883000000073],[-132.79611199999999,57.773879999999963],[-132.80722000000003,57.787773000000016],[-132.81362899999988,57.795546999999999],[-132.82138099999992,57.804436000000067],[-132.87304699999999,57.855270000000075],[-132.88165299999997,57.86360900000011],[-132.92861900000003,57.90554800000001],[-132.93777499999999,57.913322000000051],[-132.96472199999999,57.93332700000002],[-132.99499500000002,57.951660000000061],[-133.03332499999988,57.978874000000076],[-133.04388399999999,57.986938000000066],[-133.05306999999993,57.99471299999999],[-133.058044,57.999435000000062],[-133.070831,58.012215000000026],[-133.08749399999999,58.033332999999971],[-133.09500100000002,58.047775000000115],[-133.10415599999999,58.073051000000135],[-133.10720800000001,58.083328000000108],[-133.11111500000004,58.093323000000055],[-133.13696299999998,58.135826000000122],[-133.18472299999991,58.176102000000128],[-133.19500700000003,58.184158000000025],[-133.21139499999998,58.196381000000031],[-133.23361199999999,58.211380000000133],[-133.3061219999999,58.257216999999969],[-133.36111499999993,58.28054800000001],[-133.43029799999994,58.359993000000088],[-133.408905,58.400268999999923],[-133.38790899999998,58.4120640000001],[-133.42999299999991,58.459160000000054],[-133.55889899999994,58.528046000000074],[-133.73580900000002,58.644713999999965],[-133.80834999999996,58.709991000000002],[-133.82693499999999,58.726097000000038],[-134.08749399999999,58.808327000000133],[-134.23110999999989,58.851936000000023],[-134.245544,58.856941000000063],[-134.32000699999998,58.916099999999972],[-134.32556199999999,58.920830000000024],[-134.33221400000002,58.929718000000037],[-134.33221400000002,58.935265000000129],[-134.32556199999999,58.971100000000035],[-134.37942499999991,59.049164000000076],[-134.38613899999996,59.058044000000109],[-134.45556599999998,59.122489999999971],[-134.46139499999992,59.126656000000025],[-134.47500599999989,59.1336060000001],[-134.53222700000003,59.132210000000043],[-134.56640599999997,59.130547000000092],[-134.65084799999994,59.185546999999985],[-134.67166099999997,59.200272000000098],[-134.67529300000001,59.214714000000072],[-134.68804899999992,59.243324000000086],[-134.73889199999991,59.250275000000045],[-134.95193499999993,59.279991000000109],[-135.09167499999995,59.426940999999999],[-135.07971199999992,59.4447100000001],[-135.06332399999997,59.458046000000081],[-135.03973399999995,59.466934000000037],[-135.03057899999999,59.46804800000001],[-135.02111799999994,59.471099999999922],[-135.01779199999999,59.498878000000047],[-135.01501500000001,59.54055000000011],[-135.01446499999997,59.567497000000003],[-135.09722899999997,59.621376000000055],[-135.12027,59.621658000000139],[-135.13275099999998,59.622765000000072],[-135.1541749999999,59.62721300000004],[-135.17749000000003,59.636939999999981],[-135.33612099999999,59.726654000000053],[-135.47360199999997,59.801933000000076],[-135.50613399999997,59.793884000000048],[-135.82333399999999,59.705550999999957],[-135.94915800000001,59.669158999999979],[-136.07138099999997,59.657494000000099],[-136.12081899999998,59.651656999999943],[-136.16000399999996,59.646660000000054],[-136.20776399999988,59.639434999999992],[-136.31054700000004,59.612495000000138],[-136.34387200000003,59.602776000000119],[-136.34637499999991,59.600548000000003],[-136.29834,59.583603000000039],[-136.23916600000001,59.561377999999991],[-136.23388699999992,59.525826000000052],[-136.29305999999991,59.476097000000038],[-136.29998799999993,59.471099999999922],[-136.37164300000001,59.452492000000063],[-136.46362299999993,59.469711000000132],[-136.46417199999996,59.414153999999996],[-136.46249399999994,59.37221500000004],[-136.46249399999994,59.302490000000091],[-136.46276899999998,59.289436000000023],[-136.48083499999996,59.261939999999925],[-136.49221799999998,59.249718000000144],[-136.55835000000002,59.186377999999991],[-136.58389299999988,59.163321999999937],[-136.61138900000003,59.164711000000125],[-136.71972699999998,59.165268000000026],[-136.80889899999994,59.165268000000026],[-136.88833599999998,59.131934999999999],[-136.94195599999995,59.109436000000073],[-136.96972700000003,59.098328000000095],[-137.03308100000004,59.077492000000063],[-137.25167799999997,59.006104000000107],[-137.29611199999999,58.989989999999977],[-137.31417799999997,58.981102000000021],[-137.33889799999997,58.965546000000074],[-137.39279199999999,58.928329000000019],[-137.42028800000003,58.91415400000011],[-137.42749000000003,58.911377000000016],[-137.44500699999998,58.907494000000099],[-137.46554600000002,58.906096999999932],[-137.47805800000003,58.907211000000132],[-137.48803699999996,58.909156999999993],[-137.49581899999998,58.911934000000088],[-137.50167799999991,58.916382000000056],[-137.50500499999993,58.920273000000122],[-137.50750700000003,58.925552000000096],[-137.50723299999999,58.937767000000008],[-137.50527999999997,58.944153000000142],[-137.49722299999996,58.964157000000057],[-137.48776199999992,58.982490999999982],[-137.47970599999996,58.998046999999985],[-137.49914599999994,59.041382000000112],[-137.54528799999997,59.143051000000128],[-137.566101,59.186935000000062],[-137.59082000000001,59.238602000000014],[-137.91027800000001,59.408043000000077],[-138.11776699999996,59.516663000000051],[-138.30361900000003,59.613052000000039],[-138.49108899999993,59.708328000000051],[-138.5386049999999,59.732208000000071],[-138.615814,59.77416199999999],[-138.64724699999999,59.805550000000039],[-138.65472399999993,59.81471300000004],[-138.66363499999989,59.829162999999937],[-138.66610699999995,59.834435000000042],[-138.66915900000004,59.844994000000099],[-138.67501799999997,59.86693600000001],[-138.69027700000004,59.906936999999971],[-138.97192399999994,59.978600000000085],[-139.04779099999996,59.997490000000028],[-139.11639400000001,60.041382000000112],[-139.161407,60.07027400000004],[-139.18890399999987,60.088882000000069],[-139.183899,60.102219000000105],[-139.15527299999997,60.154991000000052],[-139.13363600000002,60.194435000000112],[-139.12527499999993,60.207771000000093],[-139.08221399999996,60.287498000000028],[-139.06500199999988,60.330276000000083],[-139.06640600000003,60.344153999999946],[-139.06805399999996,60.352219000000048],[-139.51947000000001,60.344711000000018],[-139.67666599999995,60.340546000000018],[-139.77166699999992,60.292496000000028],[-139.86639400000001,60.244438000000059],[-139.91305499999987,60.220824999999934],[-139.97943099999998,60.187767000000122],[-140.005585,60.193878000000041],[-140.45083599999992,60.309715000000097],[-140.471924,60.283882000000006],[-140.493042,60.25777400000004],[-140.50195299999996,60.244713000000104],[-140.52139299999993,60.222214000000122],[-140.94638099999997,60.297775000000001],[-140.995544,60.307213000000047],[-141.00058000000001,60.366661000000022],[-141.00112899999999,60.399436999999978],[-141.00030500000003,60.933051999999975],[-141.00167799999991,60.966384999999946],[-141.00030500000003,62.733046999999942],[-141.00140399999998,63.099998000000141],[-141.00195299999996,63.83277099999998],[-141.00030500000003,63.966385000000059],[-141.00030500000003,64.199706999999989],[-141.00195299999996,65.132751000000098],[-141.00030500000003,65.166092000000049],[-141.00030500000003,65.232758000000047],[-141.00195299999996,65.699416999999983],[-141.00195299999996,66.099425999999994],[-141.00167799999991,66.499419999999986],[-141.00085399999995,66.666382000000112],[-141.00058000000001,66.866089000000102],[-141.00167799999991,67.066376000000105],[-141.00222799999995,67.299149000000057],[-141.00058000000001,67.532486000000119],[-141,67.732758000000103],[-141.00195299999996,67.865814000000057],[-141.00195299999996,68.065811000000053],[-141.00195299999996,68.23275799999999],[-141.00167799999991,68.532761000000107],[-141.00085399999995,68.965546000000018],[-141.00058000000001,69.432479999999941],[-141.00085399999995,69.532211000000018],[-141.00299100000001,69.642365000000098],[-140.98220800000001,69.642761000000007],[-140.90945399999998,69.639160000000118],[-140.83306900000002,69.635269000000051],[-140.81610099999995,69.6336060000001],[-140.79528799999997,69.627197000000081],[-140.77001999999999,69.621643000000063],[-140.73831200000001,69.617751999999996],[-140.61554000000001,69.60832199999993],[-140.48831200000001,69.599425999999994],[-140.39611799999994,69.596099999999979],[-140.26141399999995,69.596649000000127],[-140.21887200000003,69.600815000000011],[-140.17944299999988,69.606369000000029],[-140.12914999999998,69.614990000000091],[-140.10055499999999,69.617477000000008],[-140.08471700000001,69.618042000000003],[-139.94387800000004,69.618865999999969],[-139.92639199999991,69.618590999999981],[-139.88833599999998,69.616653000000042],[-139.81054699999999,69.606644000000017],[-139.78112799999997,69.602203000000088],[-139.605255,69.575546000000031],[-139.57611099999986,69.570830999999998],[-139.67001299999998,69.579162999999994],[-139.68472299999996,69.581375000000037],[-139.77639799999997,69.599716000000001],[-139.7647399999999,69.590820000000065],[-139.75668299999995,69.586655000000064],[-139.73165899999998,69.581099999999992],[-139.60665899999992,69.559417999999994],[-139.573059,69.556091000000038],[-139.5350039999999,69.553863999999976],[-139.351654,69.53637700000013],[-139.14306599999998,69.510817999999915],[-139.11639400000001,69.505554000000132],[-139.10833699999995,69.501663000000065],[-139.10137899999995,69.491364000000033],[-139.09222399999999,69.481658999999979],[-139.069458,69.463318000000129],[-139.05584699999991,69.454987000000074],[-139.04806499999995,69.450821000000133],[-138.975281,69.414993000000095],[-138.95748900000001,69.407486000000006],[-138.93945299999996,69.399994000000049],[-138.88275099999993,69.384720000000129],[-138.83361799999994,69.373306000000071],[-138.79916399999991,69.364150999999993],[-138.76916499999999,69.35386699999998],[-138.75140399999998,69.346375000000023],[-138.64389,69.291367000000037],[-138.62164300000001,69.273041000000035],[-138.61639400000001,69.268326000000002],[-138.60720799999996,69.2586060000001],[-138.60498000000001,69.247482000000048],[-138.44998199999992,69.229156000000046],[-138.26916499999999,69.196365000000071],[-138.25390599999997,69.188309000000004],[-138.21887200000003,69.173309000000074],[-138.17721599999993,69.159988000000112],[-138.14334099999996,69.150818000000072],[-138.06332399999997,69.129424999999969],[-138.03945899999997,69.123596000000134],[-138.00112899999993,69.115265000000022],[-137.69638099999992,69.049712999999997],[-137.59445199999999,69.027771000000143],[-137.41915900000004,68.988876000000005],[-137.25500499999998,68.948318000000086],[-137.22610499999996,68.944977000000051],[-137.19222999999994,68.943863000000079],[-137.13027999999986,68.944977000000051],[-136.9786069999999,68.931931000000134],[-136.97332799999998,68.927200000000028],[-136.966095,68.923309000000131],[-136.95416299999994,68.920258000000103],[-136.78973399999995,68.881927000000076],[-136.74554399999994,68.875259000000085],[-136.68249499999996,68.871918000000051],[-136.65972899999997,68.874984999999981],[-136.64279199999993,68.878036000000009],[-136.63751199999996,68.884155000000021],[-136.63082900000001,68.889160000000061],[-136.61999500000002,68.891936999999984],[-136.52224699999999,68.909149000000014],[-136.50836199999998,68.910262999999986],[-136.47747800000002,68.910812000000135],[-136.42059299999994,68.9015500000001],[-136.39306599999992,68.897217000000069],[-136.35861199999999,68.893874999999923],[-136.25585899999999,68.889435000000105],[-136.14501999999999,68.885817999999972],[-136.09722899999991,68.88220200000012],[-136.02780199999989,68.873032000000023],[-135.98666399999996,68.864990000000091],[-135.85879499999993,68.838974000000064],[-135.83166499999999,68.831940000000031],[-135.54055799999992,68.752486999999974],[-135.519745,68.74581900000004],[-135.49194299999988,68.735259999999982],[-135.48498499999999,68.731094000000098],[-135.45388799999995,68.709427000000062],[-135.40695199999993,68.679977000000122],[-135.36554000000001,68.675812000000121],[-135.21054099999998,68.661377000000016],[-135.1600039999999,68.657211000000132],[-135.14752199999998,68.658874999999966],[-135.14639299999993,68.663879000000122],[-135.21444699999995,68.693038999999999],[-135.25363200000004,68.706940000000145],[-135.34359699999993,68.737762000000032],[-135.48193400000002,68.809418000000107],[-135.50613399999997,68.832488999999953],[-135.500854,68.838593000000003],[-135.48666399999996,68.839431999999988],[-135.45306399999998,68.838042999999971],[-135.43917799999991,68.835541000000092],[-135.40499899999998,68.831940000000031],[-135.341949,68.831664999999987],[-135.33804299999997,68.834991000000059],[-135.34973099999996,68.838042999999971],[-135.42166099999997,68.848877000000016],[-135.49472000000003,68.854979999999955],[-135.52835099999993,68.856368999999972],[-135.56054700000004,68.860260000000039],[-135.59527600000001,68.86943100000002],[-135.60443099999998,68.873032000000023],[-135.61886599999997,68.881362999999965],[-135.62359600000002,68.886107999999979],[-135.61389199999991,68.889435000000105],[-135.33581499999997,68.917755000000113],[-135.241669,68.926926000000094],[-135.22720299999997,68.925537000000077],[-135.21554600000002,68.922484999999995],[-135.20861799999994,68.918319999999994],[-135.19665499999991,68.909714000000065],[-135.19168100000002,68.904984000000013],[-135.18695100000002,68.90026899999998],[-135.12191799999999,68.893326000000002],[-134.97747799999996,68.878311000000053],[-134.95111099999997,68.88108799999992],[-134.91723599999995,68.898041000000035],[-134.89474499999994,68.912490999999932],[-134.87777700000004,68.920822000000044],[-134.85803199999998,68.927765000000022],[-134.845551,68.929428000000144],[-134.81723,68.925812000000064],[-134.80334499999998,68.923035000000027],[-134.74581899999998,68.907486000000063],[-134.70889299999999,68.892761000000121],[-134.66946399999989,68.873305999999957],[-134.64169299999992,68.856644000000017],[-134.49554399999994,68.75221300000004]],[[-93.519729999999925,63.839432000000102],[-93.339995999999985,63.80832700000002],[-93.329726999999934,63.809715000000097],[-93.217498999999975,63.838599999999985],[-93.216110000000015,63.843605000000025],[-93.225006000000008,63.847771000000137],[-93.236389000000031,63.847487999999942],[-93.267501999999922,63.84276600000004],[-93.278884999999946,63.842491000000052],[-93.291671999999949,63.844994000000042],[-93.333892999999932,63.859160999999972],[-93.343338000000017,63.863052000000039],[-93.357498000000021,63.871376000000112],[-93.441939999999931,63.921660999999915],[-93.448883000000023,63.925827000000027],[-93.449721999999952,63.930824000000086],[-93.452498999999989,63.954437000000041],[-93.451110999999969,63.959717000000126],[-93.443329000000006,63.965546000000131],[-93.433884000000035,63.968596999999988],[-93.423614999999927,63.970825000000104],[-93.413054999999986,63.971930999999927],[-93.389998999999932,63.971656999999993],[-93.36471599999993,63.967491000000109],[-93.27305599999994,63.928047000000049],[-93.12222300000002,63.892493999999999],[-92.960281000000009,63.855826999999977],[-92.841675000000009,63.83526599999999],[-92.65194699999995,63.787498000000028],[-92.549728000000016,63.81082200000003],[-92.540558000000033,63.814713000000097],[-92.530563000000029,63.816939999999988],[-92.507506999999976,63.816383000000087],[-92.583892999999989,63.829436999999984],[-92.606948999999872,63.829720000000123],[-92.619155999999919,63.831383000000073],[-92.669158999999979,63.839989000000003],[-92.706954999999937,63.846656999999936],[-92.935546999999985,63.904990999999995],[-92.942489999999964,63.90915700000005],[-92.956116000000009,63.932770000000005],[-92.965285999999992,63.936652999999922],[-93.218886999999995,63.979431000000034],[-93.266113000000018,63.981934000000024],[-93.276397999999972,63.979713000000061],[-93.288054999999986,63.980545000000006],[-93.301102000000014,63.983047000000056],[-93.436661000000015,64.015274000000034],[-93.612212999999997,64.093048000000067],[-93.627212999999983,64.106369000000029],[-93.635009999999909,64.115265000000136],[-93.635833999999988,64.120255000000043],[-93.689986999999917,64.156096999999988],[-93.751677999999913,64.188873000000058],[-93.761123999999882,64.192748999999992],[-93.773055999999997,64.19358799999992],[-93.779723999999987,64.189697000000024],[-93.776947000000007,64.184981999999991],[-93.665008999999941,64.087204000000042],[-93.660004000000015,64.083054000000061],[-93.604172000000005,64.044434000000138],[-93.654723999999931,63.992493000000024],[-93.731673999999998,63.987212999999997],[-93.759170999999924,63.984161000000029],[-93.770553999999947,63.957771000000037],[-93.654449,63.896660000000111],[-93.59973100000002,63.870270000000062],[-93.55360399999995,63.850548000000003],[-93.533324999999991,63.84276600000004],[-93.519729999999925,63.839432000000102]],[[-70.783065999999963,48.380547000000092],[-70.782501000000025,48.348045000000127],[-70.768065999999919,48.35054800000006],[-70.548049999999989,48.356383999999991],[-70.498885999999914,48.353324999999984],[-70.464172000000019,48.3491590000001],[-70.383057000000008,48.331108000000086],[-70.332229999999981,48.316666000000112],[-70.272780999999952,48.298332000000016],[-70.237777999999992,48.282493999999986],[-70.210007000000019,48.269714000000022],[-70.198607999999979,48.26249700000011],[-70.06138599999997,48.239989999999977],[-70.040833000000021,48.244437999999946],[-70.025833000000034,48.246101000000067],[-70.017501999999865,48.245270000000062],[-69.995543999999995,48.239989999999977],[-69.936935000000005,48.221931000000041],[-69.920546999999885,48.216385000000002],[-69.828339000000028,48.166382000000056],[-69.838333000000034,48.173881999999935],[-69.84722899999997,48.181938000000002],[-69.861938000000009,48.198875000000044],[-69.871933000000013,48.212493999999936],[-69.879439999999931,48.220825000000048],[-69.884170999999981,48.224159000000043],[-69.95944199999991,48.269440000000088],[-69.977218999999991,48.274436999999978],[-69.985549999999989,48.274994000000049],[-69.993332000000009,48.274712000000022],[-70.043610000000001,48.267211999999915],[-70.099990999999989,48.267211999999915],[-70.131942999999978,48.269714000000022],[-70.151108000000022,48.274436999999978],[-70.167770000000019,48.279990999999995],[-70.272507000000019,48.325554000000125],[-70.420273000000009,48.361381999999992],[-70.427779999999984,48.361107000000118],[-70.635009999999966,48.390549000000078],[-70.727782999999874,48.415825000000098],[-70.739165999999955,48.423049999999989],[-70.751952999999958,48.42849300000006],[-70.761397999999929,48.431938000000002],[-70.779998999999975,48.435546999999985],[-70.954726999999991,48.459717000000012],[-70.980559999999912,48.462212000000022],[-71.012221999999952,48.46166199999999],[-71.025283999999886,48.457496999999989],[-71.048614999999927,48.445267000000058],[-71.047774999999888,48.444434999999942],[-71.031386999999995,48.443320999999969],[-70.906386999999938,48.423325000000034],[-70.799987999999985,48.401657000000057],[-70.785552999999879,48.395828000000051],[-70.781386999999881,48.391936999999984],[-70.779449,48.386940000000095],[-70.783065999999963,48.380547000000092]],[[-108.13890100000003,71.981658999999979],[-108.15583799999996,71.980820000000051],[-108.17415599999998,71.983322000000101],[-108.18720999999999,71.986649000000057],[-108.18916300000001,71.99192800000003],[-108.19972199999995,72.050537000000077],[-108.19027699999998,72.055542000000116],[-108.1702729999999,72.064423000000033],[-108.16027799999995,72.062759000000028],[-108.13417099999992,72.056091000000094],[-108.07444799999996,72.034149000000014],[-108.06416299999995,72.030272999999966],[-108.06220999999999,72.02526899999998],[-108.06304899999998,72.019440000000145],[-108.069458,72.013046000000088],[-108.07721700000002,72.007217000000082],[-108.10526999999996,71.992751999999996],[-108.12526700000001,71.983871000000022],[-108.13890100000003,71.981658999999979]],[[-85.84722899999997,72.294144000000074],[-85.837218999999948,72.288879000000009],[-85.837218999999948,72.262771999999927],[-85.851669000000015,72.241364000000033],[-85.877486999999917,72.221649000000014],[-85.889175000000023,72.218047999999953],[-85.90834000000001,72.217758000000117],[-85.981110000000001,72.236373999999955],[-86.005844000000025,72.243591000000094],[-86.061110999999983,72.261658000000125],[-86.096389999999985,72.276382000000012],[-86.107223999999917,72.283875000000023],[-86.110001000000011,72.289703000000145],[-86.101395000000025,72.293594000000041],[-86.093338000000017,72.294708000000014],[-86.067229999999995,72.293869000000029],[-86.005004999999983,72.296646000000123],[-85.863891999999964,72.297211000000004],[-85.84722899999997,72.294144000000074]],[[-78.735000999999954,72.365540000000124],[-78.75389100000001,72.363312000000008],[-78.81220999999988,72.365265000000079],[-78.830840999999964,72.364990000000091],[-78.854172000000005,72.362197999999978],[-78.874435000000005,72.358871000000079],[-78.889450000000011,72.354706000000078],[-78.91332999999986,72.345535000000098],[-78.920836999999949,72.341370000000097],[-78.93499799999995,72.336380000000077],[-78.950286999999946,72.334991000000059],[-79.053054999999972,72.360809000000017],[-79.075561999999934,72.403046000000074],[-79.075012000000015,72.409714000000065],[-79.070847000000015,72.414993000000038],[-79.066665999999998,72.420258000000103],[-79.044448999999929,72.426651000000049],[-79.00140399999998,72.438309000000118],[-78.97084000000001,72.445250999999985],[-78.955565999999919,72.444427000000019],[-78.950561999999991,72.442199999999957],[-78.946655000000021,72.440262000000018],[-78.939986999999917,72.435806000000127],[-78.846953999999926,72.415543000000071],[-78.833892999999989,72.411926000000108],[-78.740829000000019,72.374419999999986],[-78.731673999999941,72.36943100000002],[-78.735000999999954,72.365540000000124]],[[-79.508056999999951,72.348602000000028],[-79.533889999999985,72.346099999999979],[-79.555832000000009,72.346939000000077],[-79.572234999999978,72.349152000000061],[-79.581954999999994,72.35165399999994],[-79.59445199999999,72.356934000000024],[-79.609436000000017,72.36692800000003],[-79.624160999999901,72.379425000000026],[-79.683318999999983,72.430542000000116],[-79.586120999999991,72.453872999999987],[-79.576675000000023,72.456100000000049],[-79.552489999999921,72.451096000000121],[-79.541381999999999,72.444977000000051],[-79.529174999999952,72.439697000000024],[-79.502791999999886,72.429977000000122],[-79.46945199999999,72.423035000000027],[-79.43638599999997,72.418319999999994],[-79.42971799999998,72.411652000000004],[-79.440552000000025,72.37052900000009],[-79.446654999999907,72.364990000000091],[-79.455565999999919,72.359985000000052],[-79.470275999999956,72.355545000000006],[-79.508056999999951,72.348602000000028]],[[-79.993606999999997,72.413315000000125],[-80.009445000000028,72.410538000000031],[-80.022232000000031,72.413605000000132],[-80.124435000000005,72.506653000000028],[-80.130554000000018,72.512497000000053],[-80.133330999999941,72.519440000000031],[-80.129989999999907,72.523041000000092],[-80.11999499999996,72.526931999999988],[-80.112502999999947,72.526931999999988],[-80.063613999999973,72.523880000000077],[-80.036941999999897,72.51638800000012],[-79.921936000000017,72.463318000000072],[-79.916397000000018,72.458037999999988],[-79.926940999999999,72.447754000000145],[-79.939162999999951,72.436645999999996],[-79.956954999999994,72.426086000000055],[-79.978881999999885,72.417755000000113],[-79.993606999999997,72.413315000000125]],[[-110.46916199999993,72.569152999999972],[-110.48137699999995,72.565811000000053],[-110.54415899999998,72.569152999999972],[-110.57195300000001,72.575546000000145],[-110.58833299999998,72.583878000000141],[-110.593887,72.588592999999946],[-110.593887,72.594147000000135],[-110.576683,72.594986000000119],[-110.53888699999993,72.594986000000119],[-110.51666299999999,72.593322999999998],[-110.50446299999999,72.590820000000008],[-110.48249799999991,72.583603000000096],[-110.47444200000001,72.579437000000041],[-110.46888699999994,72.574706999999989],[-110.46916199999993,72.569152999999972]],[[-110.35582699999998,72.601929000000098],[-110.37304699999993,72.601379000000065],[-110.39499699999993,72.603043000000071],[-110.46417199999991,72.613312000000121],[-110.49472000000003,72.619141000000127],[-110.46916199999993,72.621368000000018],[-110.450287,72.621368000000018],[-110.39862099999993,72.618041999999946],[-110.35888699999992,72.614990000000034],[-110.34500100000002,72.611923000000104],[-110.34500100000002,72.606094000000098],[-110.35582699999998,72.601929000000098]],[[-108.510559,72.602768000000083],[-108.51999699999993,72.598038000000031],[-108.53778099999994,72.599426000000108],[-108.593613,72.61775200000011],[-108.604446,72.621643000000006],[-108.61221299999994,72.625809000000118],[-108.6141659999999,72.631088000000091],[-108.61361699999986,72.636657999999954],[-108.60388199999994,72.639435000000049],[-108.51722699999999,72.642487000000017],[-108.49665800000002,72.641372999999987],[-108.49194299999999,72.636657999999954],[-108.49416400000001,72.631927000000019],[-108.510559,72.602768000000083]],[[-110.30722000000003,72.630813999999987],[-110.36389199999996,72.630813999999987],[-110.39695699999993,72.636383000000137],[-110.41082799999998,72.639435000000049],[-110.40028399999994,72.643600000000049],[-110.36000100000001,72.648880000000133],[-110.31500199999999,72.651932000000045],[-110.28083799999996,72.642211999999972],[-110.281113,72.636383000000137],[-110.28999299999992,72.631653000000085],[-110.30722000000003,72.630813999999987]],[[-109.215012,72.790268000000083],[-109.22749299999992,72.787200999999982],[-109.24833699999999,72.788040000000137],[-109.37277199999994,72.806091000000094],[-109.41694599999988,72.815262000000075],[-109.41944899999993,72.820541000000048],[-109.37832600000002,72.828598],[-109.33389299999999,72.834990999999945],[-109.32028200000002,72.8316650000001],[-109.31220999999994,72.827484000000027],[-109.22444200000001,72.811096000000134],[-109.21056399999998,72.8077550000001],[-109.21166999999997,72.796371000000022],[-109.215012,72.790268000000083]],[[-95.735000999999954,72.798874000000012],[-95.753615999999909,72.796097000000088],[-95.771392999999932,72.799149],[-95.835555999999997,72.831100000000049],[-95.854172000000005,72.853591999999992],[-95.850829999999974,72.858321999999987],[-95.810546999999929,72.876647999999989],[-95.791106999999954,72.880264000000068],[-95.774170000000026,72.880264000000068],[-95.769164999999987,72.878036000000122],[-95.763061999999877,72.872482000000105],[-95.735275000000001,72.859985000000108],[-95.720550999999944,72.848037999999974],[-95.716949,72.84387200000009],[-95.714171999999905,72.838593000000117],[-95.71362299999987,72.832214000000079],[-95.718886999999938,72.809418000000051],[-95.725005999999951,72.803314],[-95.735000999999954,72.798874000000012]],[[-96.754181000000017,72.721374999999966],[-96.77027899999996,72.719710999999961],[-96.955275999999969,72.734146000000067],[-96.96945199999999,72.737761999999975],[-96.977782999999988,72.745254999999986],[-97.011123999999938,72.775818000000129],[-97.010283999999899,72.776657000000114],[-96.921386999999982,72.835815000000082],[-96.911117999999931,72.841094999999996],[-96.798614999999984,72.881363000000022],[-96.757232999999928,72.892761000000064],[-96.737212999999997,72.895264000000054],[-96.725554999999986,72.89498900000001],[-96.713332999999921,72.893326000000059],[-96.688323999999966,72.883330999999998],[-96.692215000000033,72.862762000000032],[-96.666945999999996,72.811096000000134],[-96.651672000000019,72.804152999999985],[-96.642501999999979,72.797760000000039],[-96.639998999999989,72.791655999999989],[-96.639998999999989,72.786652000000004],[-96.641388000000006,72.782211000000075],[-96.728058000000033,72.730545000000063],[-96.741378999999995,72.725539999999967],[-96.754181000000017,72.721374999999966]],[[-95.756957999999997,72.892487000000131],[-95.777495999999985,72.891937000000098],[-95.795272999999952,72.89498900000001],[-95.808334000000002,72.907210999999961],[-95.824721999999952,72.965271000000087],[-95.786666999999966,73.012496999999939],[-95.761672999999973,73.004714999999976],[-95.757232999999928,73.001663000000065],[-95.756118999999956,72.998596000000134],[-95.743606999999997,72.987762000000089],[-95.702498999999989,72.933593999999971],[-95.708343999999954,72.917206000000078],[-95.735549999999989,72.900543000000027],[-95.744445999999925,72.895827999999995],[-95.756957999999997,72.892487000000131]],[[-95.733886999999982,73.128860000000032],[-95.718062999999972,73.118042000000059],[-95.715835999999911,73.11192299999999],[-95.71556099999998,73.105545000000063],[-95.717772999999966,73.10026600000009],[-95.726395000000025,73.088881999999955],[-95.729171999999949,73.071105999999986],[-95.724715999999944,73.059142999999949],[-95.728332999999907,73.054428000000144],[-95.745543999999938,73.049423000000047],[-95.775283999999999,73.05525200000011],[-95.787216000000001,73.061920000000043],[-95.799437999999952,73.072769000000108],[-95.822509999999966,73.083054000000061],[-95.859726000000023,73.090820000000122],[-95.893341000000021,73.095824999999991],[-95.893065999999976,73.100815000000011],[-95.891112999999962,73.101089000000115],[-95.885009999999909,73.104706000000078],[-95.881942999999978,73.108597000000145],[-95.874709999999993,73.114150999999993],[-95.865279999999927,73.119979999999998],[-95.863051999999982,73.125259000000142],[-95.865279999999927,73.131363000000022],[-95.868332000000009,73.136383000000023],[-95.868880999999988,73.140548999999965],[-95.854995999999971,73.140548999999965],[-95.840835999999967,73.136658000000068],[-95.828888000000006,73.129974000000004],[-95.822509999999966,73.124695000000031],[-95.818343999999968,73.125533999999959],[-95.814163000000008,73.131087999999977],[-95.807495000000017,73.135544000000095],[-95.790833000000021,73.139434999999992],[-95.776397999999915,73.140548999999965],[-95.763335999999981,73.139709000000096],[-95.74499499999996,73.136658000000068],[-95.738892000000021,73.133880999999974],[-95.733886999999982,73.128860000000032]],[[-96.808333999999945,72.926376000000118],[-96.915282999999931,72.917755000000056],[-96.955275999999969,72.920531999999923],[-96.968338000000017,72.923874000000069],[-96.990554999999972,72.931090999999981],[-97.017776000000026,72.940536000000066],[-97.032227000000034,72.946640000000059],[-97.061385999999914,72.963318000000129],[-97.089721999999995,72.981658999999979],[-97.105834999999956,72.99832200000003],[-97.111938000000009,73.004714999999976],[-97.136947999999961,73.045822000000044],[-97.139724999999885,73.051926000000037],[-97.141953000000001,73.064148000000046],[-97.142775999999969,73.075272000000098],[-97.141112999999962,73.085541000000148],[-97.127776999999924,73.095824999999991],[-97.069732999999985,73.136932000000002],[-97.059432999999956,73.142212000000029],[-97.045546999999999,73.147491000000059],[-97.003341999999975,73.159714000000065],[-96.946944999999971,73.172484999999995],[-96.904449,73.179977000000122],[-96.848052999999993,73.187484999999981],[-96.809433000000013,73.189148000000102],[-96.786391999999978,73.18803400000013],[-96.771941999999967,73.181655999999975],[-96.755279999999971,73.175812000000121],[-96.653060999999923,73.136383000000023],[-96.602218999999934,73.099152000000117],[-96.580841000000021,73.081100000000049],[-96.575011999999901,73.074997000000053],[-96.568619000000012,73.062195000000088],[-96.565826000000015,73.056091000000038],[-96.564712999999983,73.050537000000077],[-96.565552000000025,73.044708000000014],[-96.573623999999995,73.033325000000048],[-96.636672999999973,72.965820000000065],[-96.643341000000021,72.96138000000002],[-96.65834000000001,72.954163000000108],[-96.697219999999959,72.941650000000038],[-96.743057000000022,72.933593999999971],[-96.765014999999948,72.930817000000047],[-96.808333999999945,72.926376000000118]],[[-96.90583799999996,73.220825000000048],[-96.924712999999997,73.218048000000124],[-96.944991999999957,73.218322999999941],[-96.984725999999966,73.220535000000041],[-97.040833000000021,73.228591999999992],[-97.079177999999956,73.235259999999982],[-97.106948999999929,73.242203000000131],[-97.117767000000015,73.249145999999939],[-97.115279999999927,73.253052000000025],[-97.090285999999878,73.261932000000058],[-97.058043999999995,73.269150000000081],[-97.035004000000015,73.272766000000104],[-96.977492999999981,73.273880000000077],[-96.967772999999966,73.273315000000082],[-96.968338000000017,73.267487000000131],[-96.951400999999976,73.239426000000037],[-96.909164000000033,73.238312000000064],[-96.896118000000001,73.237762000000032],[-96.886672999999917,73.231094000000041],[-96.889174999999966,73.224991000000102],[-96.90583799999996,73.220825000000048]],[[-113.99749799999995,72.799423000000104],[-114.01112399999994,72.79664600000001],[-114.06806899999998,72.795822000000044],[-114.15167200000002,72.798035000000027],[-114.20861799999994,72.796936000000073],[-114.22416699999997,72.794983000000116],[-114.23581699999994,72.791655999999989],[-114.35138699999993,72.747482000000048],[-114.35749800000002,72.74136400000009],[-114.35637700000001,72.735809000000017],[-114.33444199999997,72.693588000000034],[-114.327789,72.688873000000001],[-114.36582900000002,72.66276600000009],[-114.45168299999995,72.623032000000023],[-114.46501199999994,72.6202550000001],[-114.49553699999996,72.616379000000052],[-114.53138699999988,72.614990000000034],[-114.576683,72.60914600000001],[-114.58999599999993,72.606368999999916],[-114.60472099999998,72.60165400000011],[-114.55832700000002,72.560806000000014],[-114.42666600000001,72.556090999999981],[-114.38527699999986,72.555251999999996],[-114.35138699999993,72.557479999999941],[-114.33999599999999,72.560806000000014],[-114.33029199999999,72.565262000000075],[-114.32584400000002,72.571930000000066],[-114.12805200000003,72.626083000000051],[-114.10305800000003,72.632202000000063],[-114.06276699999995,72.640274000000034],[-113.99027999999998,72.651382000000012],[-113.91027800000001,72.659148999999957],[-113.89306599999998,72.660262999999986],[-113.88333099999988,72.657486000000063],[-113.89046499999995,72.648048000000017],[-113.89222699999999,72.640822999999955],[-113.88054699999992,72.637207000000103],[-113.858047,72.635817999999915],[-113.80666399999996,72.639160000000061],[-113.76222199999995,72.646103000000039],[-113.70834400000001,72.656937000000084],[-113.67138699999992,72.666656000000103],[-113.61277799999988,72.683868000000132],[-113.58750899999995,72.689971999999955],[-113.54666099999997,72.698029000000133],[-113.51611300000002,72.701934999999992],[-113.50611900000001,72.699141999999995],[-113.52084400000001,72.688034000000016],[-113.55055199999987,72.675262000000032],[-113.57250999999991,72.667480000000069],[-113.61945299999996,72.653594999999996],[-113.64277599999991,72.646652000000017],[-113.68776699999995,72.631927000000019],[-113.70944199999991,72.624145999999996],[-113.72917200000001,72.615540000000067],[-113.73082699999998,72.609421000000054],[-113.72193900000002,72.60554499999995],[-113.69972200000001,72.604155999999989],[-113.68443299999996,72.606094000000098],[-113.65750100000002,72.611374000000012],[-113.46639999999996,72.665268000000026],[-113.44275700000003,72.672211000000004],[-113.43639400000001,72.67804000000001],[-113.43167099999999,72.684708000000001],[-113.41000399999996,72.729431000000034],[-113.41332999999992,72.734711000000118],[-113.41972399999997,72.739150999999936],[-113.43138099999999,72.742751999999996],[-113.44860799999992,72.744979999999998],[-113.53527799999995,72.748871000000065],[-113.58029199999987,72.751663000000121],[-113.59750399999996,72.754166000000112],[-113.60637699999995,72.758331000000112],[-113.60804699999994,72.769439999999975],[-113.59889199999998,72.782760999999937],[-113.58249699999999,72.793045000000006],[-113.38694800000002,72.907486000000006],[-113.33139,72.935257000000092],[-113.30277999999998,72.948868000000061],[-113.26862299999999,72.960266000000047],[-113.14862099999999,72.994705000000067],[-113.06276699999989,73.00749200000007],[-113.02806099999998,73.009430000000009],[-113.00695799999994,73.008881000000088],[-112.823059,72.998871000000008],[-112.81139400000001,72.9952550000001],[-112.79472399999997,72.982208000000071],[-112.78582799999998,72.978317000000004],[-112.77139299999993,72.975266000000033],[-112.75418100000002,72.972763000000043],[-112.708618,72.969711000000132],[-112.64362299999993,72.966934000000037],[-112.60082999999986,72.963607999999965],[-112.56360599999994,72.959152000000074],[-112.51500699999991,72.951096000000007],[-112.5,72.947922000000119],[-112.47165699999994,72.941925000000026],[-112.44583099999994,72.935257000000092],[-112.41388699999993,72.924149000000057],[-112.387787,72.911102000000028],[-112.37638900000002,72.907760999999994],[-112.36193800000001,72.904709000000082],[-112.34472700000003,72.902205999999921],[-112.27944899999994,72.896941999999967],[-112.23777799999999,72.895537999999988],[-112.14195299999994,72.896378000000027],[-112.09834299999989,72.894150000000025],[-112.06166099999996,72.889434999999992],[-111.94776899999999,72.870529000000147],[-111.78333299999997,72.834717000000012],[-111.67582699999997,72.814697000000024],[-111.65888999999999,72.8119200000001],[-111.59416199999998,72.806641000000127],[-111.54055799999998,72.799423000000104],[-111.52639799999997,72.796371000000022],[-111.23693799999995,72.726379000000122],[-111.22582999999997,72.7227630000001],[-111.22000100000002,72.718323000000055],[-111.20249899999999,72.67053199999998],[-111.20527599999997,72.664429000000041],[-111.26278699999995,72.579163000000108],[-111.27694699999989,72.567490000000078],[-111.45221699999996,72.477768000000026],[-111.52778599999999,72.44999700000011],[-111.65110800000002,72.40887500000008],[-111.675003,72.402206000000035],[-111.736107,72.395264000000111],[-111.76999699999993,72.393600000000106],[-111.78527799999995,72.391936999999984],[-111.81220999999999,72.386658000000011],[-111.859734,72.373306000000014],[-111.890289,72.360535000000084],[-111.89890299999996,72.355545000000006],[-111.90556299999997,72.349716000000001],[-111.90167200000002,72.346099999999979],[-111.86250299999995,72.330551000000071],[-111.85138699999999,72.326934999999992],[-111.66388699999999,72.276382000000012],[-111.50446299999999,72.311920000000043],[-111.44499200000001,72.328873000000101],[-111.42443799999995,72.337204000000042],[-111.41915899999998,72.343871999999976],[-111.43305999999995,72.346939000000077],[-111.45140100000003,72.346939000000077],[-111.487213,72.336655000000064],[-111.51944700000001,72.334152000000074],[-111.5616609999999,72.336655000000064],[-111.578056,72.339156999999943],[-111.58917200000002,72.342758000000003],[-111.60582699999998,72.350815000000011],[-111.61165599999998,72.361099000000024],[-111.609444,72.367203000000075],[-111.58833299999998,72.376373000000115],[-111.37444299999993,72.446640000000002],[-111.350281,72.453322999999955],[-111.3094329999999,72.460815000000082],[-111.29387700000001,72.462768999999923],[-111.26583899999997,72.465546000000018],[-111.24889400000001,72.466385000000002],[-111.22860699999995,72.465546000000018],[-111.20249899999999,72.46026599999999],[-111.21333300000003,72.446930000000009],[-111.23277299999995,72.4369200000001],[-111.24500299999994,72.433594000000085],[-111.27223200000003,72.428588999999988],[-111.30139200000002,72.404160000000047],[-111.27749599999993,72.369979999999941],[-111.11277799999993,72.335266000000104],[-111.09528399999994,72.379700000000014],[-111.09137699999997,72.401932000000102],[-111.00446299999999,72.46527100000003],[-110.8691639999999,72.473312000000078],[-110.82444799999996,72.479156000000103],[-110.80304699999999,72.485259999999926],[-110.82501200000002,72.503875999999934],[-110.83332799999999,72.519150000000025],[-110.827789,72.525818000000015],[-110.73805199999993,72.565536000000009],[-110.72749299999998,72.569716999999912],[-110.71528599999999,72.573044000000039],[-110.70140100000003,72.575546000000145],[-110.68083199999995,72.574706999999989],[-110.66610700000001,72.573044000000039],[-110.53527799999995,72.546646000000067],[-110.52639799999992,72.526931999999988],[-110.57501199999996,72.51388500000013],[-110.59445199999993,72.50471500000009],[-110.60166899999996,72.498871000000065],[-110.60193600000002,72.493317000000104],[-110.59361299999989,72.489150999999993],[-110.55249000000003,72.47387700000013],[-110.53083800000002,72.46665999999999],[-110.35056299999997,72.428040000000067],[-110.32861299999996,72.426086000000055],[-110.30999799999995,72.426086000000055],[-110.30387899999999,72.430542000000116],[-110.31194299999993,72.434708000000057],[-110.41027799999995,72.462204000000099],[-110.50334199999998,72.484985000000108],[-110.514183,72.488585999999998],[-110.52250700000002,72.492752000000053],[-110.52778599999999,72.497482000000105],[-110.53056299999992,72.502486999999974],[-110.52333099999998,72.508330999999998],[-110.39639299999999,72.552200000000084],[-110.38417099999998,72.555542000000003],[-110.36527999999998,72.555542000000003],[-110.34333800000002,72.55386400000009],[-110.32389799999993,72.551650999999936],[-110.31304899999998,72.547760000000039],[-110.22028399999994,72.51388500000013],[-110.20140100000003,72.505829000000062],[-110.15527299999997,72.480270000000075],[-110.06139399999995,72.437484999999924],[-110.05055199999993,72.433868000000018],[-110.03999299999998,72.438034000000073],[-110.02194199999991,72.447754000000145],[-109.99889400000001,72.455261000000121],[-109.97112300000003,72.46026599999999],[-109.95249899999999,72.459991000000116],[-109.91972399999986,72.454711999999972],[-109.81388900000002,72.428314],[-109.79666099999992,72.426926000000094],[-109.78278399999999,72.429428000000144],[-109.77806099999998,72.434708000000057],[-109.78582799999992,72.438873000000058],[-109.80583199999995,72.445526000000029],[-109.83029199999999,72.452208999999982],[-110.04250300000001,72.50471500000009],[-110.22305299999999,72.545822000000101],[-110.23665599999998,72.548874000000069],[-110.24777199999994,72.552765000000136],[-110.25583599999987,72.55693100000002],[-110.252792,72.56303400000013],[-110.24221799999992,72.566940000000045],[-110.22165699999994,72.566086000000041],[-110.12082699999996,72.560257000000036],[-110.10417200000001,72.557754999999986],[-110.09056099999998,72.55442800000003],[-110.06889299999995,72.546936000000073],[-110.03888699999987,72.535538000000088],[-110.02278099999995,72.527206000000092],[-110.00361599999991,72.519440000000031],[-109.97112300000003,72.508330999999998],[-109.90499899999998,72.487198000000092],[-109.88861099999986,72.484711000000004],[-109.80943300000001,72.491653000000099],[-109.79527300000001,72.49414100000007],[-109.78472899999997,72.498322000000144],[-109.78278399999999,72.503051999999968],[-109.94275700000003,72.604155999999989],[-109.95889299999993,72.612762000000089],[-110.09306300000003,72.65637200000009],[-110.11332699999997,72.657211000000018],[-110.17111199999999,72.648330999999985],[-110.18666100000002,72.646652000000017],[-110.22112299999998,72.645264000000054],[-110.241669,72.646103000000039],[-110.25556899999998,72.649429000000055],[-110.26666299999999,72.653046000000018],[-110.283073,72.66137700000013],[-110.28832999999992,72.666091999999992],[-110.29110700000001,72.671097000000032],[-110.20973200000003,72.71775800000006],[-110.20056199999999,72.7227630000001],[-110.18831599999999,72.726089000000115],[-110.17083699999995,72.726928999999984],[-110.078079,72.727065999999979],[-110.04167200000001,72.722488000000055],[-110.03056300000003,72.718596999999988],[-109.99804699999999,72.701934999999992],[-109.98693800000001,72.698318000000029],[-109.85221899999993,72.665817000000118],[-109.83277899999996,72.663315000000068],[-109.81723,72.664992999999981],[-109.77084399999995,72.716385000000116],[-109.77027900000002,72.722214000000122],[-109.78138699999994,72.725815000000011],[-109.80082700000003,72.728043000000127],[-109.81973299999993,72.728043000000127],[-110.03111299999995,72.747757000000036],[-110.17887899999994,72.769149999999968],[-110.17138699999998,72.774993999999992],[-110.16832699999986,72.781097000000102],[-110.17083699999995,72.786101999999971],[-110.17639199999996,72.790817000000004],[-110.21166999999997,72.818328999999949],[-110.24526999999995,72.823607999999979],[-110.32640099999992,72.826385000000016],[-110.36638599999998,72.827208999999982],[-110.47666899999996,72.834990999999945],[-110.493607,72.83776899999998],[-110.53555299999994,72.847214000000008],[-110.54666099999997,72.850815000000068],[-110.56331599999999,72.859145999999953],[-110.74276699999996,72.957214000000135],[-110.75389099999995,72.966385000000059],[-110.75666799999993,72.971374999999966],[-110.75389099999995,72.977768000000083],[-110.74804699999993,72.984421000000054],[-110.74082900000002,72.989975000000072],[-110.73166700000002,72.994980000000112],[-110.70834400000001,73.002487000000031],[-110.69415300000003,73.004990000000021],[-110.67832899999991,73.006653000000142],[-110.61860699999994,73.011383000000137],[-110.51139799999993,73.015274000000034],[-110.432503,73.014435000000105],[-110.39083899999997,73.012496999999939],[-110.16610700000001,72.996094000000085],[-110.05110199999996,72.984711000000061],[-109.91887700000001,72.96804800000001],[-109.65943899999996,72.924988000000042],[-109.63445299999995,72.918045000000063],[-109.61805700000002,72.909424000000115],[-109.618607,72.903869999999927],[-109.62943999999993,72.899719000000061],[-109.66111799999999,72.896652000000131],[-109.69471699999997,72.894440000000088],[-109.724716,72.890549000000021],[-109.73889200000002,72.888046000000031],[-109.75,72.883881000000031],[-109.75472999999994,72.878585999999984],[-109.74665799999997,72.874420000000043],[-109.65862300000003,72.844711000000018],[-109.379707,72.770538000000101],[-109.22778299999993,72.761658000000068],[-109.05110200000001,72.680267000000072],[-109.02999899999998,72.647217000000012],[-109.04915599999993,72.604155999999989],[-109.045547,72.572495000000117],[-109.04332699999998,72.567490000000078],[-109.02861000000001,72.565536000000009],[-108.88249200000001,72.564423000000147],[-108.86527999999998,72.564987000000087],[-108.85109699999998,72.567490000000078],[-108.84194899999994,72.572495000000117],[-108.81916799999993,72.591095000000053],[-108.72277800000001,72.582763999999941],[-108.70361300000002,72.58027600000014],[-108.67666600000001,72.573883000000023],[-108.64472999999987,72.562485000000038],[-108.62138399999998,72.549988000000042],[-108.61638599999998,72.54525799999999],[-108.58805799999993,72.505554000000075],[-108.58944700000001,72.494431000000077],[-108.59638999999993,72.482208000000014],[-108.60278299999999,72.475540000000024],[-108.61054999999993,72.469986000000063],[-108.62470999999994,72.457489000000066],[-108.63722200000001,72.444427000000019],[-108.64499699999993,72.426651000000049],[-108.65055799999999,72.403595000000053],[-108.66361999999998,72.362761999999975],[-108.66278099999994,72.346374999999966],[-108.65834000000001,72.336105000000032],[-108.52416999999997,72.199706999999989],[-108.45500199999998,72.157211000000132],[-108.44415300000003,72.161102000000028],[-108.42832900000002,72.158325000000104],[-108.41805999999997,72.154434000000037],[-108.404449,72.14694199999991],[-108.40222199999994,72.141663000000108],[-108.39890300000002,72.113602000000071],[-108.39472999999998,72.042755000000113],[-108.39527900000002,72.036926000000108],[-108.396118,72.03137200000009],[-108.31639099999995,71.984146000000067],[-108.20417799999996,71.963882000000126],[-108.19138299999992,71.960541000000092],[-108.18666100000002,71.955826000000059],[-108.18276999999995,71.945525999999916],[-108.18971299999998,71.933318999999983],[-108.19611399999997,71.92692599999998],[-108.23361199999999,71.899719000000061],[-108.28639199999992,71.860809000000131],[-108.28278399999999,71.792206000000022],[-108.28083800000002,71.786925999999994],[-108.24276700000001,71.718597000000045],[-108.23805199999998,71.713882000000012],[-108.23082699999992,71.709426999999948],[-108.22055099999994,71.705826000000116],[-108.20777900000002,71.70248400000014],[-108.19248999999996,71.699707000000046],[-108.17748999999998,71.701096000000064],[-108.14111300000002,71.710541000000148],[-108.13054699999992,71.714432000000045],[-108.10333300000002,71.719147000000078],[-108.08693700000003,71.719711000000018],[-108.066101,71.71775800000006],[-108.03639199999998,71.705826000000116],[-108.02194199999997,71.697204999999997],[-107.98805199999987,71.675537000000077],[-107.97609699999987,71.666381999999999],[-107.96694899999994,71.656936999999971],[-107.96777299999991,71.651382000000069],[-107.91583300000002,71.624984999999981],[-107.84528399999994,71.603867000000093],[-107.82888799999995,71.604431000000034],[-107.75334199999998,71.610260000000039],[-107.74109599999997,71.613312000000121],[-107.73194899999999,71.618042000000003],[-107.72416699999991,71.623871000000008],[-107.72609699999998,71.629149999999981],[-107.74054699999994,71.637496999999939],[-107.75028999999995,71.641373000000044],[-107.77583299999998,71.648041000000035],[-107.82472199999995,71.672759999999982],[-107.83194700000001,71.676926000000037],[-107.83640300000002,71.681656000000089],[-107.83833300000003,71.686920000000043],[-107.83750899999995,71.692474000000061],[-107.82305899999994,71.716934000000094],[-107.81527699999998,71.7227630000001],[-107.80444299999999,71.726653999999996],[-107.78943600000002,71.728043000000014],[-107.7519529999999,71.726653999999996],[-107.73665599999998,71.723602000000085],[-107.63027999999997,71.732208000000014],[-107.49472000000003,71.786377000000016],[-107.451683,71.857483000000059],[-107.36361699999992,71.871917999999994],[-107.34555099999994,71.871643000000006],[-107.29695099999998,71.874145999999939],[-107.28333299999997,71.876373000000001],[-107.27084400000001,71.879424999999969],[-107.26139799999999,71.884155000000135],[-107.25334199999998,71.889708999999982],[-107.25250199999994,71.895537999999988],[-107.25695799999994,71.900269000000094],[-107.264183,71.904434000000094],[-107.41805999999997,71.953873000000101],[-107.59638999999993,72.004439999999988],[-107.61389199999996,72.012496999999996],[-107.62581599999999,72.021652000000017],[-107.63027999999997,72.026382000000069],[-107.65139799999997,72.061096000000134],[-107.65334300000001,72.066375999999991],[-107.64943700000003,72.072495000000004],[-107.63999899999993,72.077208999999982],[-107.62609899999995,72.079437000000098],[-107.61389199999996,72.082764000000054],[-107.61000100000001,72.08859300000006],[-107.61193799999995,72.093872000000033],[-107.63527699999997,72.121917999999937],[-107.68138099999999,72.136108000000036],[-107.699997,72.138596000000007],[-107.729446,72.137207000000046],[-107.74333199999995,72.134994999999947],[-107.76027699999992,72.134430000000123],[-107.77887699999997,72.136658000000068],[-107.78083800000002,72.141937000000041],[-107.787216,72.184708000000114],[-107.77806099999992,72.208038000000045],[-107.843887,72.354156000000046],[-107.87748699999992,72.424423000000104],[-107.88639799999993,72.519713999999965],[-107.87693799999994,72.524428999999998],[-107.87165799999997,72.529709000000082],[-107.87666299999995,72.567215000000033],[-107.88054699999998,72.577484000000084],[-107.88555899999989,72.586655000000007],[-107.91555799999998,72.597214000000065],[-107.92887899999994,72.60054000000008],[-107.99082900000002,72.612487999999985],[-108.00418099999996,72.615814],[-108.01194800000002,72.619980000000112],[-108.025284,72.666091999999992],[-108.02639799999997,72.676926000000037],[-108.02667199999996,72.719986000000006],[-108.05110200000001,72.781372000000147],[-108.05803699999996,72.791092000000049],[-108.11193799999995,72.890823000000125],[-108.15194699999989,72.971100000000092],[-108.16528299999993,73.010817999999972],[-108.26363400000002,73.091934000000094],[-108.29361,73.120254999999986],[-108.29998799999998,73.135544000000095],[-108.295547,73.147491000000059],[-108.291946,73.153595000000053],[-108.28527799999995,73.159987999999998],[-108.26862299999999,73.171371000000022],[-108.23029299999996,73.187484999999981],[-108.18110699999994,73.201660000000061],[-108.16639700000002,73.203873000000044],[-108.13390400000003,73.206940000000145],[-108.11582900000002,73.207489000000066],[-108.07389799999993,73.205261000000121],[-108.02390300000002,73.201096000000121],[-107.93443300000001,73.187484999999981],[-107.91471899999993,73.184981999999991],[-107.89388999999994,73.183868000000018],[-107.87416099999996,73.183594000000085],[-107.86416599999995,73.188583000000051],[-107.87222300000002,73.192748999999935],[-107.90471600000001,73.204163000000051],[-107.94611399999991,73.214157000000057],[-108.01027699999997,73.226089000000002],[-108.05166599999995,73.236098999999911],[-108.08444199999997,73.247482000000105],[-108.11638599999992,73.264435000000049],[-108.15361000000001,73.302475000000129],[-108.08444199999997,73.349990999999989],[-108.07140399999992,73.353317000000061],[-108.05332899999996,73.353867000000093],[-107.99109599999991,73.351379000000122],[-107.94722000000002,73.348328000000095],[-107.77139299999999,73.323883000000023],[-107.675003,73.323318000000029],[-107.63110399999999,73.319991999999957],[-107.614441,73.31721500000009],[-107.40334300000001,73.270537999999988],[-107.33583099999987,73.248031999999967],[-107.24999999999994,73.217484000000013],[-107.21028099999995,73.201660000000061],[-107.18888900000002,73.194138000000123],[-107.172234,73.191086000000041],[-107.10582699999998,73.17942800000003],[-107.06973299999999,73.173874000000012],[-107.05027799999999,73.173598999999967],[-107.03694200000001,73.176651000000106],[-107.025284,73.180542000000003],[-107.01666299999999,73.186095999999964],[-107.01083399999999,73.191360000000145],[-107.02027899999996,73.200821000000133],[-107.05249000000003,73.212493999999936],[-107.09028599999994,73.223037999999974],[-107.11081699999994,73.231369000000086],[-107.11860699999994,73.23553499999997],[-107.12361099999998,73.240265000000022],[-107.11945300000002,73.246368000000132],[-107.03028899999998,73.29553199999998],[-107.01862299999999,73.299423000000047],[-106.88249199999996,73.312195000000031],[-106.86138899999997,73.310806000000014],[-106.76139799999999,73.293045000000063],[-106.75083899999993,73.289153999999996],[-106.74610899999999,73.284423999999944],[-106.74109599999991,73.268875000000037],[-106.72721899999993,73.254715000000147],[-106.69666299999994,73.237488000000099],[-106.66471899999999,73.226089000000002],[-106.65110800000002,73.222487999999942],[-106.63474300000001,73.219711000000075],[-106.60305800000003,73.216660000000047],[-106.58222999999998,73.21527100000003],[-106.39862099999993,73.149155000000064],[-106.24027999999998,73.085815000000082],[-106.06388899999996,73.047759999999982],[-106.04750100000001,73.044708000000014],[-106.02834300000001,73.044434000000081],[-105.94888300000002,73.053313999999943],[-105.91027799999989,73.058868000000132],[-105.87638899999996,73.058318999999983],[-105.85555999999997,73.056931000000077],[-105.84221600000001,73.053588999999988],[-105.83194699999996,73.049713000000111],[-105.82472200000001,73.045258000000047],[-105.82195299999995,73.034987999999942],[-105.82333399999999,73.029433999999981],[-105.83249699999999,73.017211999999972],[-105.82972699999993,73.006942999999978],[-105.82224299999996,73.002487000000031],[-105.80471799999998,72.994431000000134],[-105.79444899999993,72.990265000000079],[-105.76083399999999,72.976929000000098],[-105.737503,72.969436999999971],[-105.69776899999999,72.959152000000074],[-105.67859599999997,72.95637499999998],[-105.62917299999998,72.939972000000125],[-105.56220999999999,72.913040000000024],[-105.445831,72.838318000000072],[-105.32611099999991,72.746368000000075],[-105.32195299999995,72.741653000000042],[-105.32055700000001,72.736649000000057],[-105.32528699999995,72.730545000000063],[-105.33693700000003,72.726653999999996],[-105.35610999999994,72.727203000000088],[-105.37777699999998,72.729431000000034],[-105.39778100000001,72.737198000000035],[-105.41194200000001,72.745819000000097],[-105.41915899999992,72.750275000000045],[-105.42748999999992,72.759720000000073],[-105.43472300000002,72.764160000000118],[-105.46472199999994,72.775818000000129],[-105.47778299999999,72.779434000000037],[-105.49833699999994,72.780822999999998],[-105.51000999999997,72.776932000000102],[-105.45722999999992,72.702773999999977],[-105.44722000000002,72.698868000000061],[-105.38249200000001,72.681366000000025],[-105.35665899999998,72.674423000000047],[-105.29472399999997,72.631927000000019],[-105.23110999999994,72.543320000000051],[-105.19583099999988,72.482483000000059],[-105.19972199999995,72.460541000000148],[-105.20140100000003,72.454711999999972],[-105.20612299999993,72.448868000000118],[-105.21777299999991,72.444977000000051],[-105.23194899999993,72.447205000000054],[-105.26167299999992,72.458878000000027],[-105.27722199999994,72.462204000000099],[-105.29305999999997,72.460815000000082],[-105.301941,72.455261000000121],[-105.29778299999987,72.450546000000088],[-105.24137899999999,72.399718999999948],[-105.23029299999996,72.390549000000078],[-105.21665999999993,72.381927000000076],[-105.18998699999997,72.369705000000124],[-105.16055299999988,72.35775799999999],[-105.13999899999999,72.344711000000132],[-105.04415899999998,72.248032000000023],[-105.03639199999986,72.238586000000055],[-105.03362299999998,72.234711000000061],[-105.02443700000003,72.219986000000119],[-104.99166899999989,72.203323000000012],[-104.95749699999999,72.181366000000139],[-104.95527599999997,72.171097000000145],[-104.95722999999992,72.165543000000127],[-104.96167000000003,72.159424000000115],[-104.96916199999998,72.153046000000131],[-104.97805799999992,72.147491000000059],[-104.98805199999993,72.142761000000007],[-104.99973299999999,72.13888500000013],[-105.02999899999998,72.124695000000031],[-105.03751399999999,72.118317000000104],[-105.03639199999986,72.11303700000002],[-105.01862299999993,72.066939999999931],[-104.92944299999988,72.034149000000014],[-104.87193299999996,71.989975000000072],[-104.82917800000001,71.937195000000031],[-104.82444800000002,71.927475000000129],[-104.82028200000002,71.906647000000078],[-104.82556199999999,71.889708999999982],[-104.82250999999997,71.874145999999939],[-104.8186189999999,71.86914100000007],[-104.78999299999998,71.84137000000004],[-104.78333299999986,71.836929000000112],[-104.771118,71.833603000000096],[-104.70056199999999,71.829987000000017],[-104.68554699999993,71.826935000000105],[-104.67331699999994,71.823317999999972],[-104.66000400000001,71.81442300000009],[-104.53472899999986,71.719711000000018],[-104.37638900000002,71.598038000000031],[-104.36638600000003,71.588882000000126],[-104.35527000000002,71.574432000000002],[-104.35916099999997,71.563309000000004],[-104.36361699999998,71.557204999999954],[-104.37581599999993,71.544707999999957],[-104.383331,71.538315000000011],[-104.40167200000002,71.514435000000049],[-104.40361000000001,71.508605999999986],[-104.40194700000001,71.498322000000144],[-104.34416199999993,71.410811999999964],[-104.33332799999994,71.396378000000141],[-104.35722399999986,71.357483000000002],[-104.37165799999997,71.360809000000017],[-104.38918299999995,71.363602000000014],[-104.40805099999994,71.364990000000091],[-104.43804899999998,71.362761999999975],[-104.45056199999988,71.359711000000118],[-104.46167000000003,71.355820000000051],[-104.47138999999993,71.351089000000115],[-104.48860199999996,71.339980999999966],[-104.49333200000001,71.334152000000131],[-104.49694799999997,71.322769000000108],[-104.49500299999988,71.312485000000095],[-104.49137899999988,71.307480000000055],[-104.46250900000001,71.281097000000045],[-104.44972200000001,71.272217000000012],[-104.43888900000002,71.257767000000115],[-104.43971299999998,71.246933000000013],[-104.44055200000003,71.236098999999967],[-104.44444299999992,71.224990999999989],[-104.44888300000002,71.218872000000147],[-104.470551,71.199706999999989],[-104.49610899999999,71.183044000000109],[-104.52555799999999,71.168869000000029],[-104.55610699999994,71.155548000000067],[-104.57805599999995,71.148041000000092],[-104.59056099999998,71.145263999999997],[-104.62361099999987,71.133605999999986],[-104.64862099999999,71.11914100000007],[-104.60472099999998,71.079711999999972],[-104.58583099999998,71.066666000000055],[-104.57028199999996,71.05831900000004],[-104.53666699999997,71.044144000000131],[-104.48916600000001,71.024703999999986],[-104.45667300000002,71.013610999999969],[-104.33778399999994,70.979706000000078],[-104.23805199999998,70.964996000000099],[-104.22389199999998,70.961928999999998],[-104.122772,70.914703000000145],[-104.11665299999999,70.910262999999929],[-104.09999099999999,70.891372999999987],[-104.07640099999992,70.863037000000077],[-104.05277999999993,70.834427000000062],[-104.04583699999995,70.824996999999996],[-104.04277000000002,70.804153000000042],[-104.02887699999991,70.784988000000055],[-104.01583900000003,70.770827999999938],[-104.00029000000001,70.757216999999969],[-103.99416400000001,70.75277699999998],[-103.98528299999998,70.748871000000065],[-103.97138999999987,70.745529000000147],[-103.95472699999999,70.742752000000053],[-103.94027699999987,70.741653000000099],[-103.92443800000001,70.741928000000087],[-103.806107,70.723037999999974],[-103.73111,70.691649999999925],[-103.64083899999997,70.646652000000017],[-103.63417099999992,70.637206999999989],[-103.62470999999994,70.628036000000009],[-103.59889199999992,70.615814000000057],[-103.55638099999999,70.600815000000011],[-103.52333099999987,70.59304800000001],[-103.506958,70.590271000000143],[-103.49027999999998,70.587494000000049],[-103.47305299999999,70.586928999999998],[-103.44193999999999,70.587204000000042],[-103.39835399999993,70.590546000000131],[-103.34277299999997,70.59664900000007],[-103.32721699999991,70.59664900000007],[-103.30915799999997,70.595260999999994],[-103.26500699999997,70.581665000000044],[-103.239441,70.569443000000035],[-103.20472699999993,70.548035000000141],[-103.14972699999998,70.513885000000016],[-103.13276699999994,70.505829000000119],[-103.12165800000002,70.501938000000052],[-103.095551,70.498031999999967],[-103.01194799999996,70.492202999999961],[-102.97693600000002,70.489975000000015],[-102.96056399999998,70.489151000000049],[-102.93055699999996,70.490540000000067],[-102.92027299999995,70.494980000000055],[-102.91443599999991,70.500000000000114],[-102.915009,70.505264000000068],[-102.91832699999998,70.510268999999937],[-102.92388900000003,70.514435000000049],[-102.93250299999988,70.518600000000049],[-102.95722999999998,70.525543000000027],[-102.97528099999994,70.527205999999978],[-103.03028899999998,70.534988000000112],[-103.05526700000001,70.541931000000091],[-103.09973099999991,70.55664100000007],[-103.10833700000001,70.56053199999991],[-103.12609899999995,70.57388300000008],[-103.13999899999993,70.609421000000111],[-103.15556300000003,70.654984000000013],[-103.156113,70.659987999999998],[-103.15387699999997,70.665817000000004],[-103.14916999999991,70.67164600000001],[-103.13667299999992,70.674423000000104],[-103.12110899999999,70.674698000000092],[-103.10417200000001,70.673873999999955],[-103.08583099999998,70.672484999999995],[-103.06667299999998,70.669983000000059],[-103.0250089999999,70.660262999999986],[-103.00250199999999,70.652771000000087],[-102.85665899999992,70.597763000000043],[-102.84834299999994,70.593871999999976],[-102.84528399999999,70.588882000000126],[-102.83833300000003,70.574158000000068],[-102.83583099999998,70.548035000000141],[-102.74445300000002,70.494705000000067],[-102.61501299999992,70.460541000000035],[-102.60138699999999,70.457214000000079],[-102.52027899999996,70.438309000000118],[-102.45749699999988,70.426376000000118],[-102.40862299999998,70.417479999999955],[-102.33332799999999,70.397766000000047],[-102.281387,70.384155000000078],[-102.11749299999997,70.339432000000045],[-101.99610899999988,70.287201000000096],[-101.97972099999998,70.279160000000047],[-101.92555199999998,70.260544000000039],[-101.89334099999996,70.254439999999988],[-101.87666300000001,70.25360100000006],[-101.86138899999997,70.253876000000048],[-101.84916699999985,70.256653000000142],[-101.83805799999993,70.260268999999994],[-101.828056,70.264709000000039],[-101.82195299999995,70.269714000000079],[-101.81722999999988,70.281097000000102],[-101.81749699999995,70.286102000000142],[-101.80972300000002,70.297759999999982],[-101.79972800000002,70.302199999999971],[-101.71472199999999,70.308868000000132],[-101.69803599999995,70.308029000000033],[-101.68195300000002,70.304977000000065],[-101.59944200000001,70.275818000000129],[-101.58860800000002,70.271927000000062],[-101.58029199999993,70.267761000000121],[-101.58029199999993,70.262771999999984],[-101.58556399999998,70.256653000000142],[-101.60555999999997,70.247757000000036],[-101.63417099999998,70.233047000000056],[-101.64306599999998,70.227768000000083],[-101.65083300000003,70.221374999999966],[-101.65055799999993,70.210815000000025],[-101.64222699999993,70.196365000000071],[-101.62249799999995,70.162491000000045],[-101.61416599999995,70.153046000000018],[-101.55999800000001,70.113602000000071],[-101.55194099999994,70.109420999999998],[-101.53971899999999,70.106934000000138],[-101.52667200000002,70.108597000000032],[-101.39723200000003,70.139435000000049],[-101.39222699999999,70.150543000000027],[-101.37581599999999,70.177765000000136],[-101.358047,70.176086000000112],[-101.28666699999991,70.152480999999966],[-101.265289,70.14498900000001],[-101.25723299999999,70.140823000000125],[-101.25195300000001,70.13638300000008],[-101.23889200000002,70.133040999999992],[-101.22222899999991,70.131927000000019],[-101.14499699999999,70.15525800000006],[-101.13500999999997,70.159713999999951],[-101.12721299999998,70.166092000000106],[-101.12193300000001,70.171921000000111],[-101.11665299999993,70.183044000000109],[-101.12193300000001,70.192749000000049],[-101.11193800000001,70.19720500000011],[-101.09555099999994,70.196365000000071],[-101.03971899999999,70.183044000000109],[-100.99973299999999,70.172760000000096],[-100.98388699999992,70.164703000000145],[-100.97332799999998,70.155548000000067],[-100.97332799999998,70.145264000000054],[-100.97609699999992,70.134430000000009],[-100.96028099999995,70.053040000000067],[-100.92194399999988,69.965271000000143],[-100.88694800000002,69.884155000000021],[-100.870003,69.814423000000147],[-100.870003,69.788315000000011],[-100.87805200000003,69.771652000000131],[-100.89998600000001,69.753875999999991],[-100.92555199999998,69.721100000000035],[-100.92027300000001,69.711380000000133],[-100.92027300000001,69.701096000000121],[-100.92832899999996,69.684143000000006],[-100.93859900000001,69.672484999999995],[-100.94748699999997,69.666930999999977],[-100.95722999999992,69.662490999999989],[-100.96916199999998,69.659714000000065],[-101.06443799999994,69.648604999999975],[-101.28362300000003,69.663879000000065],[-101.31777999999991,69.667480000000126],[-101.32972699999988,69.669983000000116],[-101.34028599999999,69.678864000000033],[-101.43831599999993,69.769714000000022],[-101.45472699999993,69.798874000000069],[-101.46806299999997,69.823044000000095],[-101.47332799999998,69.832763999999997],[-101.468613,69.838882000000069],[-101.458618,69.843322999999998],[-101.43998699999997,69.853317000000004],[-101.43472300000002,69.859146000000067],[-101.41610700000001,69.886932000000115],[-101.41860999999989,69.891936999999984],[-101.42944299999994,69.906097000000045],[-101.44526699999994,69.909149000000014],[-101.45638999999994,69.905548000000124],[-101.46888699999994,69.893051000000128],[-101.47917199999995,69.881362999999908],[-101.51972999999992,69.828323000000069],[-101.53999299999998,69.79942299999999],[-101.54750100000001,69.78776600000009],[-101.55972299999996,69.764998999999989],[-101.56220999999999,69.754165999999998],[-101.56194299999999,69.74914600000011],[-101.564438,69.743317000000104],[-101.569458,69.737488000000099],[-101.60777300000001,69.705825999999945],[-101.65249599999999,69.6827550000001],[-101.69193999999999,69.680267000000129],[-101.69722000000002,69.684708000000057],[-101.75805699999995,69.717758000000117],[-101.76611300000002,69.721924000000001],[-101.77916700000003,69.725266000000147],[-101.85637700000001,69.743042000000116],[-101.87000299999994,69.74414100000007],[-101.88722200000001,69.733321999999987],[-101.89916999999997,69.73054500000012],[-101.91416900000002,69.73054500000012],[-101.92999299999997,69.733597000000032],[-101.94055200000003,69.737198000000092],[-101.94860799999998,69.741363999999976],[-101.962784,69.753052000000025],[-102.02306399999992,69.817764000000011],[-102.06555199999997,69.850540000000137],[-102.20667300000002,69.91304000000008],[-102.21749899999998,69.916930999999977],[-102.23029300000002,69.917205999999965],[-102.24082900000002,69.913315000000068],[-102.37581599999999,69.809418000000107],[-102.51027699999992,69.758040999999992],[-102.57640100000003,69.737488000000099],[-102.59249899999998,69.738312000000064],[-102.60582699999998,69.741653000000099],[-102.61638600000003,69.745255000000043],[-102.64890300000002,69.761658000000125],[-102.65972899999997,69.765273999999977],[-102.673317,69.76638800000012],[-102.68055700000002,69.759995000000004],[-102.67443800000001,69.750275000000101],[-102.65805099999994,69.736923000000047],[-102.60028099999994,69.69802900000002],[-102.59221600000001,69.693862999999908],[-102.57640100000003,69.691086000000041],[-102.55943299999996,69.68942300000009],[-102.53138699999994,69.691360000000145],[-102.52084400000001,69.695251000000042],[-102.50917099999998,69.69802900000002],[-102.49194299999994,69.696365000000014],[-102.48361199999988,69.692200000000014],[-102.47805800000003,69.682480000000112],[-102.49777199999988,69.595260999999994],[-102.50778199999996,69.564147999999989],[-102.51500699999985,69.559982000000105],[-102.525284,69.556366000000025],[-102.60305800000003,69.538315000000068],[-102.81304899999986,69.529709000000139],[-102.82861300000002,69.53276100000005],[-102.94387799999993,69.559417999999994],[-103.08528099999995,69.597214000000122],[-103.18666099999996,69.629425000000026],[-103.20556599999998,69.636932000000002],[-103.22471599999994,69.644714000000135],[-103.23277300000001,69.648604999999975],[-103.260559,69.665543000000071],[-103.27166699999998,69.674423000000104],[-103.32195300000001,69.692200000000014],[-103.41639699999996,69.706375000000094],[-103.43055699999996,69.705261000000121],[-103.47693600000002,69.693588000000091],[-103.48665599999998,69.684708000000057],[-103.50723299999999,69.617751999999996],[-103.5041809999999,69.613036999999963],[-103.33528100000001,69.574997000000053],[-103.08917200000002,69.521927000000005],[-103.07528699999995,69.523041000000148],[-103.05695300000002,69.520537999999988],[-103.04638699999998,69.516936999999984],[-103.03806299999997,69.512771999999984],[-103.03278399999999,69.508331000000055],[-103.02333099999998,69.493866000000082],[-103.01390099999998,69.474152000000004],[-102.99137899999999,69.424698000000035],[-102.99082899999996,69.419434000000024],[-103.00778199999996,69.326935000000049],[-103.01917300000002,69.282761000000107],[-103.02306399999998,69.271652000000017],[-103.04444899999999,69.252487000000087],[-103.07195299999995,69.238586000000112],[-103.11332700000003,69.223602000000028],[-103.12444299999999,69.220825000000104],[-103.16000399999996,69.213042999999971],[-103.17250099999995,69.211380000000077],[-103.19415299999997,69.204712000000086],[-103.204453,69.200821000000019],[-103.21140299999996,69.194427000000132],[-103.21444700000001,69.189697000000137],[-103.21777299999997,69.137207000000103],[-103.208618,69.122756999999979],[-103.20305599999989,69.11831699999999],[-103.19499199999996,69.114426000000094],[-103.18222000000003,69.111098999999967],[-103.141953,69.15776100000005],[-103.13390400000003,69.163315000000068],[-103.12444299999999,69.167755000000056],[-103.10500300000001,69.176085999999998],[-103.07417299999997,69.187485000000038],[-103.03721599999994,69.205826000000059],[-103.021118,69.216934000000037],[-103.00611900000001,69.228592000000106],[-102.99889399999989,69.234985000000052],[-102.98082699999992,69.259155000000078],[-102.96916199999993,69.271378000000084],[-102.95056199999999,69.290268000000083],[-102.94360399999999,69.29664600000001],[-102.87249799999995,69.360535000000141],[-102.84084299999995,69.383330999999998],[-102.829453,69.386108000000036],[-102.817497,69.383881000000031],[-102.80666400000001,69.379974000000061],[-102.79360999999994,69.376923000000033],[-102.76083399999993,69.374420000000043],[-102.74694799999997,69.375534000000016],[-102.72277799999995,69.380264000000068],[-102.51083399999999,69.439697000000081],[-102.50862100000001,69.445526000000086],[-102.48972300000003,69.469436999999971],[-102.47193900000002,69.479430999999977],[-102.46028100000001,69.482208000000071],[-102.31304899999998,69.49832200000003],[-102.29804999999999,69.498596000000134],[-102.09306300000003,69.487762000000089],[-102.05750299999988,69.483597000000088],[-102.04750100000001,69.479980000000126],[-101.95527599999997,69.43553200000008],[-101.94748699999997,69.431365999999969],[-101.93694299999999,69.422485000000052],[-101.93138099999999,69.412766000000033],[-101.93110699999994,69.407486000000006],[-101.93611099999998,69.401657],[-102.03527799999995,69.287200999999982],[-102.14890300000002,69.270264000000111],[-102.15943899999996,69.27388000000002],[-102.18776700000001,69.280272999999966],[-102.20140100000003,69.279160000000047],[-102.21278399999994,69.276382000000069],[-102.22972099999993,69.265549000000078],[-102.23194899999999,69.259720000000073],[-102.21721600000001,69.225266000000033],[-102.11972000000003,69.183043999999938],[-102.10665899999992,69.179703000000131],[-102.09361299999989,69.178588999999931],[-102.08112299999993,69.180267000000072],[-102.07167099999992,69.184982000000105],[-102.06416300000001,69.191360000000032],[-102.05943299999996,69.19720499999994],[-102.05721999999992,69.202773999999977],[-102.05750299999988,69.208038000000101],[-102.05444299999999,69.214431999999988],[-102.04499800000002,69.226089000000115],[-102.03666699999997,69.231658999999979],[-102.01666299999999,69.239975000000072],[-102.00611899999996,69.243590999999981],[-101.96305799999999,69.257216999999912],[-101.95140099999998,69.259995000000117],[-101.9385989999999,69.261931999999945],[-101.92194399999994,69.260269000000051],[-101.78500399999996,69.196365000000071],[-101.77055399999995,69.189147999999989],[-101.75472999999994,69.175812000000064],[-101.75195300000001,69.165543000000014],[-101.75167799999991,69.160537999999974],[-101.75389099999995,69.149719000000061],[-101.80638099999999,69.003876000000105],[-101.80860899999993,68.99803199999991],[-101.81806899999992,68.993591000000038],[-101.85138699999993,68.984420999999941],[-101.89916999999997,68.97526600000009],[-101.94888300000002,68.96775800000006],[-101.962784,68.96665999999999],[-101.97693600000002,68.96665999999999],[-101.993607,68.968323000000112],[-102.00140399999992,68.972488000000112],[-102.02223200000003,68.990265000000136],[-102.03250100000002,68.99414100000007],[-102.04778299999998,68.996933000000126],[-102.06220999999994,68.996933000000126],[-102.09665699999994,68.988585999999941],[-102.11305199999998,68.977767999999969],[-102.12609900000001,68.966385000000002],[-102.13082900000001,68.960265999999933],[-102.14502699999997,68.94766199999998],[-102.15638699999994,68.944702000000063],[-102.16972399999997,68.946091000000024],[-102.323624,68.937195000000088],[-102.38612399999994,68.925537000000077],[-102.38583399999993,68.920258000000103],[-102.39028899999994,68.914429000000098],[-102.39835399999987,68.90887500000008],[-102.48554999999999,68.871368000000018],[-102.53582799999998,68.864425999999924],[-102.58972199999999,68.860535000000084],[-102.60417200000001,68.860260000000039],[-102.61972000000003,68.861099000000024],[-102.63500999999991,68.863876000000118],[-102.64527900000002,68.867751999999996],[-102.76306199999999,68.877762000000075],[-102.81889299999995,68.834152000000074],[-102.89472999999992,68.799988000000042],[-102.99054699999999,68.794434000000081],[-103.00583599999999,68.795258000000047],[-103.047234,68.809707999999944],[-103.146118,68.840546000000131],[-103.16416899999996,68.84304800000001],[-103.19499199999996,68.844437000000028],[-103.208618,68.843596999999988],[-103.32084699999996,68.829712000000086],[-103.34111000000001,68.822220000000129],[-103.36000099999995,68.813872999999944],[-103.36805700000002,68.808318999999983],[-103.40306099999992,68.777205999999978],[-103.50917099999987,68.801375999999948],[-103.83583099999993,68.83638000000002],[-104.09472699999992,68.856644000000017],[-104.11028299999998,68.859421000000054],[-104.13834399999996,68.865540000000124],[-104.287781,68.901932000000102],[-104.40249599999999,68.931091000000094],[-104.43083199999995,68.9369200000001],[-104.445267,68.938873000000001],[-104.45749699999999,68.936645999999996],[-104.46167000000003,68.930542000000116],[-104.46305799999988,68.924987999999928],[-104.46250900000001,68.919708000000071],[-104.47444199999995,68.901657000000057],[-104.487503,68.888885000000073],[-104.50279199999989,68.877762000000075],[-104.51167299999992,68.873032000000023],[-104.52139299999999,68.869140999999956],[-104.54360999999989,68.863311999999951],[-104.583618,68.859711000000118],[-104.84999099999993,68.870254999999986],[-105.12917299999998,68.896378000000084],[-105.14472999999992,68.899155000000007],[-105.16610699999995,68.906097000000102],[-105.19332900000001,68.917480000000126],[-105.24889399999989,68.945526000000029],[-105.18305999999995,68.988312000000008],[-105.173317,68.991928000000087],[-105.14666699999998,68.992477000000008],[-105.128601,68.989975000000129],[-105.06471299999998,68.986923000000047],[-105.03916900000002,68.990265000000136],[-104.93639400000001,69.03054800000001],[-104.92887899999999,69.036102000000028],[-104.91610700000001,69.048874000000012],[-104.91166699999991,69.065811000000053],[-104.915009,69.070541000000048],[-104.92304999999999,69.074706999999989],[-104.93388399999998,69.078323000000012],[-105.06500199999999,69.104155999999989],[-105.08332799999999,69.106369000000086],[-105.09665699999999,69.105255000000113],[-105.122772,69.091095000000053],[-105.16027799999995,69.071930000000066],[-105.47361799999999,69.106934000000138],[-105.48055999999997,69.116652999999928],[-105.49249299999991,69.125259000000028],[-105.50695799999994,69.133606000000043],[-105.51528899999994,69.13749700000011],[-105.55387899999999,69.152480999999966],[-105.58056599999998,69.156372000000033],[-105.61694299999994,69.160812000000078],[-105.76806599999998,69.171371000000136],[-105.83029199999999,69.172211000000004],[-105.87416100000002,69.171097000000032],[-105.90222199999999,69.169144000000074],[-105.91443600000002,69.167205999999965],[-105.92555199999998,69.164153999999996],[-106.03888699999993,69.153869999999984],[-106.17777999999998,69.144150000000081],[-106.19360399999999,69.144714000000022],[-106.256958,69.154984000000127],[-106.28888699999999,69.160262999999929],[-106.39611799999994,69.17804000000001],[-106.40611299999995,69.180542000000059],[-106.41471899999999,69.184417999999937],[-106.41471899999999,69.195251000000098],[-106.41027799999995,69.217758000000003],[-106.40666199999998,69.223877000000073],[-106.3944469999999,69.23692299999999],[-106.38612399999994,69.241653000000042],[-106.37638899999996,69.24552900000009],[-106.30777,69.262206999999989],[-106.28832999999992,69.269989000000123],[-106.27362099999993,69.281372000000147],[-106.26777600000003,69.292206000000022],[-106.26889,69.297211000000061],[-106.31639100000001,69.386658000000068],[-106.49527,69.474426000000108],[-106.52139299999993,69.486098999999967],[-106.54138199999989,69.49331699999999],[-106.55499299999985,69.496368000000018],[-106.57112099999989,69.498870999999951],[-106.60221899999999,69.498870999999951],[-106.61444099999994,69.496643000000006],[-106.62554899999986,69.493591000000094],[-106.73306299999996,69.441650000000038],[-106.74027999999998,69.435806000000014],[-106.74388099999993,69.429703000000075],[-106.74553700000001,69.407760999999994],[-106.86277799999999,69.36914100000007],[-106.93083200000001,69.361649000000114],[-106.95500199999992,69.357208000000014],[-106.96611000000001,69.354156000000103],[-106.98554999999999,69.346100000000035],[-106.99249299999997,69.340546000000018],[-106.99722300000002,69.33526599999999],[-106.99833699999999,69.329711999999972],[-106.99694799999997,69.324432000000058],[-106.96528599999994,69.303040000000067],[-106.95749699999993,69.293319999999994],[-106.925003,69.23942599999998],[-106.92223399999995,69.228867000000093],[-106.929169,69.216660000000104],[-106.93611099999998,69.211105000000032],[-106.94444299999998,69.206375000000037],[-106.96362299999993,69.198318000000029],[-107.03999299999998,69.181091000000038],[-107.12832600000002,69.154434000000094],[-107.13806199999999,69.150543000000027],[-107.16221599999994,69.134430000000009],[-107.19167299999998,69.112487999999928],[-107.22666900000002,69.084152000000017],[-107.24889400000001,69.068054000000018],[-107.264183,69.057480000000112],[-107.27944899999994,69.046936000000073],[-107.304169,69.032485999999949],[-107.31360599999994,69.028595000000109],[-107.34221599999995,69.01887499999998],[-107.37444299999993,69.009430000000123],[-107.43167099999994,68.996368000000075],[-107.50334199999992,68.982758000000047],[-107.55387899999994,68.975540000000024],[-107.64611799999989,68.965546000000018],[-107.67388900000003,68.963608000000079],[-107.74610899999999,68.960815000000082],[-107.93749999999994,68.934981999999934],[-107.95584099999996,68.931046000000094],[-107.97693600000002,68.930542000000116],[-108.17555199999998,68.931091000000094],[-108.20944199999997,68.93331900000004],[-108.26444999999995,68.939148000000046],[-108.29833999999988,68.941360000000088],[-108.42804699999994,68.945816000000036],[-108.49221799999992,68.94747899999993],[-108.521118,68.946365000000128],[-108.53443900000002,68.944702000000063],[-108.54611199999994,68.942474000000061],[-108.56331599999993,68.933594000000028],[-108.56388900000002,68.927765000000022],[-108.55082699999997,68.919434000000138],[-108.54194599999994,68.915543000000071],[-108.53555299999999,68.911376999999959],[-108.531387,68.906647000000135],[-108.52971599999995,68.901382000000069],[-108.53028899999993,68.895828000000051],[-108.53555299999999,68.889160000000061],[-108.55139200000002,68.879425000000026],[-108.59722899999997,68.859146000000067],[-108.67443799999995,68.829437000000041],[-108.926941,68.744431000000134],[-108.93749999999994,68.741088999999988],[-108.97250400000001,68.733870999999965],[-109.10472099999998,68.710541000000035],[-109.19138299999992,68.697205000000054],[-109.23416099999997,68.694977000000108],[-109.26390099999998,68.694427000000076],[-109.31194299999999,68.695816000000093],[-109.345551,68.697754000000032],[-109.37416100000002,68.696365000000014],[-109.39998600000001,68.693313999999987],[-109.43472300000002,68.686095999999964],[-109.49137899999994,68.673308999999961],[-109.52306399999992,68.664993000000095],[-109.55359599999991,68.655258000000003],[-109.59722899999997,68.64387499999998],[-109.64362299999999,68.634430000000123],[-109.65638699999994,68.632751000000098],[-109.68331899999998,68.630539000000056],[-109.756958,68.628586000000098],[-109.97028399999999,68.627197000000081],[-110.12416099999996,68.627197000000081],[-110.16055299999994,68.630539000000056],[-110.19167299999998,68.630814000000044],[-110.22000099999997,68.629150000000038],[-110.24416400000001,68.625259000000142],[-110.26306199999999,68.617752000000053],[-110.27194199999997,68.613602000000014],[-110.27916700000003,68.608597000000145],[-110.295547,68.599426000000051],[-110.32917800000001,68.582214000000022],[-110.33917200000002,68.578872999999987],[-110.35082999999997,68.576385000000016],[-110.36361699999998,68.574707000000046],[-110.37777699999998,68.574158000000125],[-110.39138800000001,68.576660000000004],[-110.39806399999986,68.580826000000116],[-110.42027299999995,68.604156000000046],[-110.42722300000003,68.608321999999987],[-110.44082600000002,68.611099000000081],[-110.45889299999999,68.612761999999975],[-110.56111099999998,68.616653000000042],[-110.576683,68.616653000000042],[-110.58944699999989,68.614990000000148],[-110.60944399999994,68.608321999999987],[-110.61694299999994,68.603592000000106],[-110.63417099999987,68.59526100000005],[-110.65695199999999,68.590271000000143],[-110.68138099999999,68.586105000000089],[-110.89666699999998,68.55720500000001],[-110.92223399999995,68.553863999999976],[-110.950287,68.551926000000037],[-111.01363400000002,68.552765000000022],[-111.03195199999999,68.554428000000144],[-111.03859699999992,68.558594000000028],[-111.03500400000001,68.563873000000001],[-110.98332199999993,68.577773999999977],[-110.97193900000002,68.580276000000083],[-110.95777900000002,68.581100000000049],[-110.92555199999993,68.580276000000083],[-110.89723200000003,68.581940000000088],[-110.87165800000002,68.585266000000104],[-110.86028299999987,68.587769000000094],[-110.850281,68.591095000000109],[-110.84306299999997,68.596099999999979],[-110.84306299999997,68.601653999999996],[-110.84973099999996,68.605820000000051],[-110.86361699999992,68.608597000000145],[-111.01750199999998,68.598327999999981],[-111.03028899999998,68.596649000000127],[-111.05888399999998,68.585815000000082],[-111.068893,68.58248900000001],[-111.08029199999999,68.579987000000131],[-111.09306300000003,68.578323000000125],[-111.13527699999997,68.575821000000076],[-111.16639700000002,68.575821000000076],[-111.23249800000002,68.578049000000021],[-111.26750199999998,68.580551000000071],[-111.28362299999998,68.582764000000054],[-111.32000700000003,68.585815000000082],[-111.33693699999998,68.586655000000121],[-111.37917299999998,68.584152000000131],[-111.39195299999994,68.58248900000001],[-111.41166699999997,68.575546000000031],[-111.41665599999999,68.571106000000043],[-111.40527299999997,68.568054000000075],[-111.389183,68.56581099999994],[-111.29804999999999,68.557755000000043],[-111.25028999999989,68.55720500000001],[-111.23194899999999,68.555542000000116],[-111.21833800000002,68.552765000000022],[-111.20916699999998,68.549148999999943],[-111.204453,68.544708000000071],[-111.204453,68.538879000000009],[-111.21112099999999,68.526093000000117],[-111.21556099999992,68.519440000000145],[-111.22556299999997,68.516098],[-111.23805199999993,68.514435000000105],[-111.25361599999991,68.514435000000105],[-111.35861199999999,68.521652000000017],[-111.37470999999999,68.523604999999975],[-111.38834400000002,68.526382000000069],[-111.46806300000003,68.536926000000108],[-111.52278100000001,68.541656000000103],[-111.60056299999991,68.543594000000041],[-111.85109699999998,68.534149000000014],[-112.060272,68.523041000000035],[-112.21000700000002,68.513610999999969],[-112.23665599999987,68.510817999999972],[-112.35916099999997,68.501938000000109],[-112.40110799999997,68.499145999999996],[-112.50917099999992,68.498032000000023],[-112.63527699999992,68.483047000000056],[-112.63694800000002,68.476928999999927],[-112.64527900000002,68.472763000000043],[-112.67027299999995,68.469146999999964],[-112.72749299999992,68.465820000000065],[-112.77390299999996,68.465546000000131],[-112.80750299999994,68.466660000000104],[-113.05166600000001,68.464157000000114],[-113.091949,68.460266000000047],[-113.220551,68.45277400000009],[-113.25140399999992,68.452209000000096],[-113.26944699999996,68.453873000000101],[-113.297234,68.458602999999925],[-113.30444299999999,68.462769000000037],[-113.30943300000001,68.467209000000025],[-113.310272,68.473038000000031],[-113.30638099999993,68.479706000000022],[-113.29972800000002,68.484711000000061],[-113.29138199999994,68.489151000000106],[-113.26944699999996,68.494430999999963],[-113.256958,68.496094000000085],[-113.19360399999999,68.496368000000018],[-113.05166600000001,68.487487999999985],[-113.03778099999994,68.488312000000121],[-113.03388999999999,68.494980000000112],[-113.04360999999994,68.504166000000055],[-113.07250999999991,68.520538000000045],[-113.11805700000002,68.544434000000138],[-113.14138800000001,68.550537000000077],[-113.19721999999996,68.560256999999979],[-113.21333300000003,68.562195000000088],[-113.26888999999994,68.572220000000016],[-113.33416699999998,68.585541000000148],[-113.35777299999995,68.591369999999984],[-113.36721799999992,68.594986000000006],[-113.38166799999988,68.603043000000014],[-113.44304699999998,68.640548999999965],[-113.44833399999999,68.645263999999997],[-113.45111099999997,68.650269000000037],[-113.45249899999999,68.661652000000061],[-113.45084400000002,68.667755],[-113.52443700000003,68.724990999999932],[-113.66665599999999,68.802199999999914],[-113.676941,68.811096000000077],[-113.67887899999994,68.894714000000079],[-113.67722299999997,68.900818000000129],[-113.671944,68.906647000000135],[-113.62389400000001,68.93331900000004],[-113.60694899999993,68.942474000000061],[-113.58444199999997,68.948028999999963],[-113.57472199999995,68.951385000000016],[-113.569458,68.957214000000022],[-113.54583700000001,69.043045000000006],[-113.54499799999996,69.048035000000084],[-113.55471799999987,69.051376000000118],[-113.61501299999998,69.066376000000048],[-113.63221699999997,69.073883000000023],[-113.64723199999992,69.081940000000145],[-113.65778399999999,69.091095000000053],[-113.69611399999991,69.154709000000139],[-113.69220699999994,69.189423000000033],[-113.68083200000001,69.191925000000083],[-113.66583300000002,69.191086000000098],[-113.65583800000002,69.187485000000038],[-113.62193300000001,69.17804000000001],[-113.53888699999999,69.168594000000041],[-113.51972999999998,69.167205999999965],[-113.50862099999995,69.169708000000014],[-113.51363399999997,69.174423000000047],[-113.52111799999994,69.178588999999931],[-113.55359599999991,69.187195000000031],[-113.58000199999992,69.192474000000004],[-113.62332200000003,69.199707000000046],[-113.90888999999999,69.24192800000003],[-114.27555799999999,69.281936999999971],[-114.31139400000001,69.284987999999998],[-114.32888800000001,69.285538000000031],[-114.39277600000003,69.284149000000014],[-114.42138699999998,69.281936999999971],[-114.4472199999999,69.278046000000074],[-114.49249299999991,69.267212000000029],[-114.51834100000002,69.263321000000133],[-114.66972399999997,69.255829000000006],[-114.764183,69.252212999999983],[-115.08889799999992,69.244705000000124],[-115.25361599999991,69.245254999999986],[-115.40083299999998,69.256942999999978],[-115.64472999999998,69.273315000000139],[-115.79527299999995,69.282761000000107],[-115.92138699999992,69.290268000000083],[-115.95584099999996,69.292206000000022],[-115.96833799999996,69.294983000000116],[-115.9786069999999,69.298598999999967],[-115.98665599999998,69.302475000000015],[-116.00029000000001,69.310806000000127],[-116.00611900000001,69.315262000000018],[-116.016953,69.322220000000016],[-116.02694700000001,69.325546000000088],[-116.05638099999999,69.32998699999996],[-116.17527799999993,69.34165999999999],[-116.21945199999999,69.348327999999981],[-116.52583300000003,69.407486000000006],[-116.53859699999998,69.4102630000001],[-116.54888900000003,69.413605000000018],[-116.56527699999992,69.421371000000079],[-116.62970699999994,69.458878000000141],[-116.63137799999993,69.464706000000035],[-116.62666299999989,69.470535000000041],[-116.61888099999993,69.474990999999989],[-116.60777300000001,69.478043000000071],[-116.569458,69.48414600000001],[-116.56139400000001,69.488586000000055],[-116.55860899999993,69.4952550000001],[-116.57556199999993,69.555817000000104],[-116.58138999999989,69.560531999999967],[-116.591949,69.563873000000001],[-116.60472099999993,69.566665999999998],[-116.63667299999997,69.570267000000058],[-116.73388699999998,69.575546000000031],[-116.74999999999994,69.574997000000053],[-116.75945299999995,69.571381000000031],[-116.76611299999996,69.565177999999946],[-116.78138699999988,69.55720500000001],[-116.89750700000002,69.587494000000049],[-116.88054699999986,69.608871000000079],[-116.85193600000002,69.619705000000124],[-116.84612299999998,69.643051000000014],[-116.84750399999996,69.648604999999975],[-116.858047,69.651932000000102],[-116.96193700000003,69.679427999999973],[-116.987503,69.684981999999991],[-117.01777600000003,69.68942300000009],[-117.03500399999996,69.690810999999997],[-117.05027799999993,69.693038999999942],[-117.07584400000002,69.69859300000013],[-117.11805699999996,69.711654999999951],[-117.23889200000002,69.753052000000025],[-117.24749799999995,69.756943000000092],[-117.26917300000002,69.78166200000004],[-117.27278100000001,69.792755000000056],[-117.30777,69.844436999999971],[-117.36721799999992,69.919983000000059],[-117.42250099999995,69.972488000000055],[-117.43499799999995,69.981369000000029],[-117.43666099999996,69.98692299999999],[-117.43611099999993,69.993042000000059],[-117.41528299999993,70.009995000000117],[-117.38527699999997,70.028595000000053],[-117.35637700000001,70.039703000000031],[-117.32584400000002,70.049987999999985],[-117.28362300000003,70.063309000000118],[-117.25140399999992,70.072768999999994],[-117.23999000000003,70.075821000000133],[-117.19444299999998,70.087493999999936],[-117.16999800000002,70.092484000000013],[-117.12082700000002,70.102478000000019],[-117.08167999999995,70.108871000000136],[-117.01083399999993,70.116928000000144],[-116.87721299999998,70.129150000000095],[-116.58306899999997,70.156937000000084],[-116.236107,70.191360000000032],[-116.16639700000002,70.199997000000053],[-116.09999099999999,70.210266000000047],[-116.07167099999998,70.213608000000022],[-115.90834000000001,70.228867000000093],[-115.80194099999994,70.236649000000057],[-115.69360399999994,70.243866000000139],[-115.64695699999993,70.246643000000063],[-115.49665799999997,70.250549000000092],[-115.44833399999993,70.252487000000031],[-115.31471299999998,70.264160000000061],[-115.30139200000002,70.266388000000063],[-115.229446,70.273879999999963],[-115.16750299999995,70.27777100000003],[-115.08389299999999,70.279708999999968],[-115.03028899999998,70.279984000000013],[-114.86721799999998,70.28387500000008],[-114.80194099999989,70.286102000000142],[-114.74137899999999,70.290817000000004],[-114.71305799999988,70.293869000000086],[-114.65888999999999,70.301651000000049],[-114.61694299999994,70.30664100000007],[-114.58833299999992,70.309708000000001],[-114.54305999999997,70.313309000000061],[-114.511124,70.314696999999967],[-114.323624,70.316665999999998],[-114.254997,70.317215000000147],[-114.21833800000002,70.316085999999984],[-114.17832900000002,70.313599000000067],[-114.16082799999998,70.311645999999939],[-114.13527699999997,70.305816999999934],[-114.111107,70.293869000000086],[-114.09028599999994,70.286926000000108],[-114.057503,70.282486000000063],[-113.84166700000003,70.269440000000145],[-113.68388399999992,70.263046000000088],[-113.65055799999993,70.263610999999969],[-113.59166700000003,70.268600000000106],[-113.54943799999995,70.273315000000139],[-113.50556899999998,70.277481000000023],[-113.46000700000002,70.280548000000124],[-113.42804699999999,70.281662000000097],[-113.39138799999995,70.280548000000124],[-113.33332799999994,70.277206000000035],[-113.29611199999999,70.273879999999963],[-113.16832699999998,70.259155000000021],[-113.09084299999995,70.247481999999991],[-112.66665599999993,70.203873000000101],[-112.56471299999998,70.198318000000029],[-112.54804999999999,70.198593000000017],[-112.53278399999994,70.199416999999983],[-112.52084399999995,70.202209000000096],[-112.51722699999999,70.207488999999953],[-112.52749599999993,70.211105000000032],[-112.56304899999998,70.213608000000022],[-112.577789,70.216095000000053],[-112.58084100000002,70.221374999999966],[-112.57501200000002,70.227203000000088],[-112.56582599999996,70.231368999999972],[-112.55526700000001,70.234984999999995],[-112.54332699999992,70.237487999999985],[-112.295547,70.266663000000051],[-112.212784,70.265823000000012],[-112.195831,70.265823000000012],[-112.16388699999999,70.266936999999984],[-112.13834399999996,70.271378000000084],[-112.14584400000001,70.275543000000084],[-112.16306299999991,70.277481000000023],[-112.24249299999991,70.283600000000035],[-112.29695099999998,70.289154000000053],[-112.30471799999992,70.293319999999937],[-112.29723399999995,70.298325000000034],[-112.28333299999997,70.299988000000099],[-112.26666299999999,70.300262000000032],[-112.24833699999999,70.299423000000104],[-112.23111,70.297484999999938],[-112.10888699999992,70.277481000000023],[-111.92639199999996,70.252212999999927],[-111.91583300000002,70.255553999999961],[-111.90805099999989,70.260544000000039],[-111.89917000000003,70.264709000000039],[-111.88054699999998,70.270264000000111],[-111.86527999999993,70.271378000000084],[-111.84861799999993,70.271378000000084],[-111.743607,70.269440000000145],[-111.55555700000002,70.269714000000079],[-111.53888699999993,70.269989000000066],[-111.46806300000003,70.278320000000008],[-111.45445299999989,70.279984000000013],[-111.445267,70.284149000000014],[-111.44275699999992,70.290268000000026],[-111.487213,70.336929000000055],[-111.49472000000003,70.341094999999939],[-111.50723299999993,70.344147000000078],[-111.53694200000001,70.349426000000051],[-111.63110399999999,70.358321999999987],[-111.66471899999999,70.35803199999998],[-111.69387799999998,70.355545000000063],[-111.73528299999998,70.35026600000009],[-111.75055700000001,70.349426000000051],[-111.80387899999999,70.350815000000011],[-111.98055999999991,70.370818999999983],[-112.00083899999987,70.378036000000066],[-112.05387899999999,70.401093000000003],[-112.06166099999996,70.405258000000003],[-112.06973299999993,70.414993000000095],[-112.07250999999997,70.42025799999999],[-112.073059,70.431655999999975],[-112.07584400000002,70.436646000000053],[-112.08917200000002,70.451096000000121],[-112.11527999999998,70.474152000000004],[-112.14611799999994,70.490540000000067],[-112.156387,70.494141000000127],[-112.16915899999998,70.497208000000001],[-112.19915800000001,70.502213000000097],[-112.42722299999997,70.526382000000012],[-112.49553700000001,70.515274000000034],[-112.5,70.514740000000074],[-112.50945300000001,70.513611000000083],[-112.52806099999998,70.514160000000004],[-112.58612099999999,70.524994000000106],[-112.62193300000001,70.534424000000001],[-112.65278599999994,70.545258000000047],[-112.67083700000001,70.552765000000136],[-112.67859599999991,70.556931000000077],[-112.70973199999997,70.567490000000078],[-112.72805799999998,70.568329000000062],[-112.81471299999993,70.568054000000075],[-112.84861799999993,70.567764000000011],[-112.85610999999994,70.562758999999971],[-112.93749999999994,70.56721500000009],[-113.00083899999993,70.576659999999947],[-113.01611300000002,70.579163000000108],[-113.14222699999999,70.606093999999985],[-113.30304699999994,70.641936999999984],[-113.49221799999992,70.677200000000028],[-113.51112399999994,70.677765000000022],[-113.51999699999993,70.673598999999967],[-113.51917299999997,70.667755000000113],[-113.5227809999999,70.655547999999953],[-113.52834300000001,70.649719000000118],[-113.54055800000003,70.646942000000024],[-113.55444299999994,70.644989000000123],[-113.57140399999997,70.644714000000079],[-113.59166700000003,70.646103000000096],[-113.60722399999997,70.648604999999975],[-113.63054699999998,70.654984000000013],[-113.64917000000003,70.662766000000147],[-113.66528299999999,70.670822000000044],[-113.68388399999992,70.678314],[-113.72860700000001,70.691649999999925],[-113.76194800000002,70.696091000000024],[-113.88221699999997,70.710265999999933],[-113.93831599999993,70.71527100000003],[-113.97416699999991,70.715546000000018],[-113.98972299999997,70.714432000000045],[-114.015556,70.709991000000116],[-114.06833599999993,70.692474000000061],[-114.08944700000001,70.685256999999979],[-114.12082699999996,70.674698000000092],[-114.14362299999999,70.668594000000098],[-114.17111199999999,70.664703000000031],[-114.20834400000001,70.665817000000004],[-114.26194800000002,70.671371000000022],[-114.323059,70.675262000000089],[-114.37748699999997,70.675812000000121],[-114.40834000000001,70.673598999999967],[-114.4202729999999,70.670822000000044],[-114.43083200000001,70.667206000000022],[-114.44833399999999,70.658600000000092],[-114.45889299999999,70.655258000000117],[-114.49500299999994,70.646942000000024],[-114.54527299999995,70.636107999999979],[-114.57112100000001,70.631362999999965],[-114.64111299999996,70.622482000000048],[-114.98916599999995,70.603867000000093],[-115.13694800000002,70.598038000000088],[-115.25250199999994,70.601379000000122],[-115.38054699999998,70.604706000000078],[-115.39943700000003,70.604980000000012],[-115.88971700000002,70.595260999999994],[-115.921944,70.593596999999988],[-115.97609699999998,70.585266000000047],[-116.05555700000002,70.572220000000129],[-116.08556399999992,70.587769000000037],[-116.16251399999999,70.62303200000008],[-116.17111199999994,70.626923000000147],[-116.26363400000002,70.634720000000073],[-116.36389200000002,70.639160000000118],[-116.38082900000001,70.638885000000073],[-116.52999899999992,70.632477000000108],[-116.63221699999997,70.614990000000091],[-116.65583800000002,70.609146000000067],[-116.66915899999998,70.607208000000128],[-116.71501199999994,70.603043000000127],[-116.90110799999997,70.597214000000122],[-116.91972399999997,70.597488000000055],[-117.05972300000002,70.601379000000122],[-117.10056299999997,70.603317000000061],[-117.34584000000001,70.614990000000091],[-117.34973100000002,70.619980000000112],[-117.35861199999994,70.623871000000008],[-117.37666300000001,70.62553400000013],[-117.50556899999998,70.61692800000003],[-117.51528899999994,70.613311999999951],[-117.51806599999986,70.606368999999972],[-117.51862299999993,70.600266000000033],[-117.52500900000001,70.594985999999949],[-117.54360999999994,70.595260999999994],[-117.5594329999999,70.597214000000122],[-117.61305199999998,70.608597000000145],[-117.67111199999999,70.624419999999986],[-117.70472699999999,70.634155000000021],[-117.724716,70.641373000000044],[-117.73777799999993,70.65026899999998],[-117.74194299999994,70.655258000000117],[-117.741669,70.661376999999959],[-117.73944099999994,70.666930999999977],[-117.73473399999995,70.673035000000027],[-117.72222899999986,70.68331900000004],[-117.71417199999996,70.688034000000073],[-117.70944199999985,70.693863000000079],[-117.71140300000002,70.699707000000103],[-117.71806300000003,70.703872999999987],[-117.73581699999994,70.711655000000121],[-117.74694799999997,70.714995999999985],[-117.89806399999998,70.756104000000107],[-117.94554099999999,70.768599999999992],[-118.00890400000003,70.783051],[-118.04750100000001,70.791656000000046],[-118.09277299999997,70.804703000000075],[-118.13583399999999,70.818054000000018],[-118.16750300000001,70.828598000000056],[-118.18776700000001,70.836104999999975],[-118.20584099999996,70.843872000000147],[-118.26445000000001,70.871918000000051],[-118.28028899999993,70.879974000000118],[-118.30972300000002,70.897217000000012],[-118.31639100000001,70.901657000000057],[-118.32972699999993,70.910537999999974],[-118.40862299999998,70.970260999999994],[-118.41750300000001,70.980270000000019],[-118.41972399999986,70.985809000000017],[-118.41944899999993,70.99192800000003],[-118.415009,70.99803200000008],[-118.40862299999998,71.003326000000072],[-118.40055799999999,71.007766999999944],[-118.37082700000002,71.019149999999968],[-118.33944699999995,71.029433999999981],[-118.27250699999991,71.048874000000012],[-117.98055999999997,71.124420000000043],[-117.84973099999996,71.156937000000028],[-117.79666099999992,71.166382000000112],[-117.728882,71.169708000000128],[-117.69055199999997,71.169434000000024],[-117.640289,71.171921000000111],[-117.54305999999991,71.178589000000102],[-117.49445300000002,71.18193100000002],[-117.41665599999988,71.188873000000115],[-117.38722199999995,71.192474000000004],[-117.28859699999992,71.206649999999968],[-116.98528299999998,71.236098999999967],[-116.83666999999997,71.269149999999911],[-116.83332799999994,71.276093000000117],[-116.82472200000001,71.280548000000124],[-116.80055199999993,71.286102000000085],[-116.71333300000003,71.297211000000004],[-116.66972399999992,71.302765000000022],[-116.60166900000002,71.313873000000001],[-116.51777600000003,71.326384999999959],[-116.40583800000002,71.343048000000067],[-116.20889299999993,71.364150999999993],[-116.17722300000003,71.366653000000042],[-116.14195299999989,71.367751999999996],[-116.08556399999992,71.367477000000008],[-116.077789,71.365814000000057],[-116.05249000000003,71.356093999999985],[-115.81027199999994,71.362761999999975],[-115.77667200000002,71.36442599999998],[-115.76083399999993,71.365814000000057],[-115.74638399999998,71.368317000000047],[-115.73416099999986,71.371368000000075],[-115.72693599999997,71.376373000000115],[-115.72666900000002,71.381362999999965],[-115.73306299999996,71.385818000000029],[-115.74416400000001,71.389160000000118],[-115.75805700000001,71.391937000000041],[-115.79055800000003,71.396378000000141],[-115.84166700000003,71.394440000000031],[-115.85582699999992,71.392212000000029],[-115.885559,71.389160000000118],[-115.91915899999998,71.387206999999989],[-115.93360899999999,71.38888500000013],[-116.01777599999997,71.411101999999971],[-116.06471299999998,71.438583000000051],[-115.82805599999995,71.483046999999999],[-115.76306199999999,71.490265000000022],[-115.62082700000002,71.498596000000077],[-115.60472099999993,71.496094000000028],[-115.58444199999991,71.488876000000005],[-115.58416699999998,71.485259999999982],[-115.53555299999994,71.470261000000107],[-115.41555800000003,71.449707000000103],[-115.37832599999996,71.449707000000103],[-115.20028699999995,71.479430999999977],[-115.17527799999988,71.484985000000108],[-115.06667299999998,71.518600000000049],[-115.05750299999994,71.523041000000148],[-115.06194299999999,71.526657],[-115.08168000000001,71.527205999999921],[-115.11361699999998,71.524704000000042],[-115.15638699999994,71.518875000000037],[-115.17054699999994,71.516662999999994],[-115.24553700000001,71.500000000000114],[-115.26000999999997,71.498031999999967],[-115.32224300000001,71.492477000000065],[-115.44275699999992,71.488037000000077],[-115.45973200000003,71.489151000000049],[-115.53859699999998,71.50082400000008],[-115.54998799999998,71.504440000000102],[-115.55860899999999,71.508330999999998],[-115.55583199999995,71.513611000000083],[-115.54332699999986,71.516662999999994],[-115.53083800000002,71.519440000000088],[-115.51666299999999,71.521378000000027],[-115.51222199999989,71.53776600000009],[-115.61888099999987,71.555252000000053],[-115.65499899999992,71.55802900000009],[-115.70638999999994,71.555817000000047],[-115.79194599999994,71.543593999999985],[-115.87638900000002,71.53276100000005],[-115.965012,71.522216999999955],[-116.16027799999989,71.49971000000005],[-116.20805399999995,71.495818999999983],[-116.28250100000002,71.495528999999976],[-116.33389299999999,71.493317000000104],[-116.41361999999998,71.486648999999943],[-116.44360399999999,71.483322000000044],[-116.806107,71.436096000000134],[-116.98610699999995,71.427200000000028],[-117.17666600000001,71.404709000000025],[-117.20111099999997,71.398331000000098],[-117.21528599999994,71.396378000000141],[-117.328056,71.386108000000036],[-117.35944399999994,71.383331000000112],[-117.37721299999987,71.382751000000098],[-117.39835399999998,71.383880999999974],[-117.41221599999994,71.386383000000023],[-117.41665599999988,71.391373000000101],[-117.41610700000001,71.397766000000047],[-117.41306299999997,71.404434000000037],[-117.39083900000003,71.435257000000036],[-117.38110399999994,71.447205000000054],[-117.37832600000002,71.454163000000051],[-117.44776899999988,71.47387700000013],[-117.49445300000002,71.486923000000047],[-117.51750199999998,71.493317000000104],[-117.54583700000001,71.498871000000122],[-117.56276699999995,71.49971000000005],[-117.628601,71.467758000000117],[-117.63333099999994,71.461929000000112],[-117.63166799999999,71.456375000000094],[-117.62470999999999,71.451935000000105],[-117.61305199999998,71.44859300000013],[-117.59665699999999,71.446365000000014],[-117.55583200000001,71.445251000000042],[-117.5369419999999,71.443862999999908],[-117.506393,71.439148000000102],[-117.48332199999999,71.432480000000112],[-117.47888199999989,71.427475000000072],[-117.48194899999999,71.420532000000037],[-117.51722699999999,71.379425000000026],[-117.52749599999993,71.375809000000004],[-117.53943600000002,71.372757000000092],[-117.59416199999987,71.371643000000063],[-117.68138099999993,71.379700000000071],[-117.75666799999999,71.376083000000108],[-117.79444899999999,71.368042000000059],[-117.82749899999999,71.372208000000114],[-117.94833399999999,71.377762000000132],[-118.01500699999997,71.37303200000008],[-118.03278399999994,71.372482000000048],[-118.09084299999995,71.372757000000092],[-118.112213,71.37359600000002],[-118.18536399999999,71.379791000000125],[-118.24388099999999,71.389984000000084],[-118.25556899999998,71.393326000000002],[-118.28362300000003,71.404709000000025],[-118.29750099999995,71.413605000000132],[-118.31111099999993,71.428589000000045],[-118.31527699999992,71.439697000000024],[-118.31471299999998,71.452209000000039],[-118.30943300000001,71.465820000000008],[-118.28999299999992,71.481659000000093],[-118.28195199999988,71.486098999999911],[-118.2633439999999,71.49414100000007],[-118.21250900000001,71.513046000000031],[-118.20221699999996,71.516662999999994],[-118.19027699999998,71.519714000000022],[-118.17804699999994,71.522766000000104],[-118.12609900000001,71.533051000000057],[-118.08612099999988,71.540267999999969],[-118.05444299999999,71.543045000000063],[-117.83583099999998,71.554703000000075],[-117.70722999999998,71.54942299999999],[-117.68720999999994,71.549988000000042],[-117.675003,71.552765000000136],[-117.658051,71.561646000000053],[-117.65139799999992,71.566940000000045],[-117.65583800000002,71.571930000000123],[-117.66999800000002,71.574706999999989],[-117.87304699999993,71.611649],[-117.88722199999995,71.614151000000106],[-117.90888999999999,71.614990000000034],[-117.86361699999998,71.639435000000105],[-117.718887,71.659714000000008],[-117.70694700000001,71.662491000000102],[-117.69638099999992,71.666091999999992],[-117.70084399999996,71.671371000000136],[-117.715012,71.673874000000126],[-117.73665599999993,71.674988000000099],[-118.01000999999997,71.672484999999938],[-118.02778599999994,71.67164600000001],[-118.11665299999993,71.65277100000003],[-118.12693799999988,71.648880000000133],[-118.17278299999998,71.628036000000009],[-118.17749000000003,71.621918000000051],[-118.16388699999993,71.606933999999967],[-118.16639699999996,71.599990999999989],[-118.17666600000001,71.596374999999966],[-118.19082600000002,71.594146999999964],[-118.29998799999993,71.583328000000108],[-118.31777999999991,71.582763999999997],[-118.33444199999997,71.584717000000126],[-118.36527999999998,71.589431999999931],[-118.38639799999999,71.613602000000128],[-118.38612399999994,71.619705000000067],[-118.45500199999987,71.650818000000072],[-118.485817,71.655548000000124],[-118.56639099999995,71.662766000000147],[-118.60527000000002,71.664154000000053],[-118.84166700000003,71.664702999999975],[-118.85555999999997,71.662491000000102],[-118.86389199999996,71.658035000000041],[-118.90387699999997,71.614700000000028],[-118.90387699999997,71.608322000000101],[-118.88971699999996,71.599716000000001],[-118.88027999999991,71.595825000000104],[-118.86609599999997,71.586928999999998],[-118.8683319999999,71.580276000000026],[-118.88054699999998,71.577209000000096],[-118.89778099999995,71.57777400000009],[-118.90972899999991,71.581099999999992],[-119.05027799999999,71.626648000000102],[-119.07472200000001,71.644149999999968],[-119.08416699999998,71.654160000000047],[-119.10582699999998,71.685806000000071],[-119.12470999999999,71.730545000000063],[-119.13445300000001,71.76527399999992],[-119.13445300000001,71.783874999999966],[-119.10555999999991,71.876648000000046],[-119.10305800000003,71.883330999999998],[-119.09194899999994,71.902205999999978],[-119.08750900000001,71.908324999999991],[-118.945831,71.99136400000009],[-118.929169,72.000548999999921],[-118.86694299999999,72.023879999999963],[-118.84249899999998,72.029709000000025],[-118.80166599999995,72.037200999999925],[-118.76471699999996,72.046370999999965],[-118.73361199999999,72.057480000000055],[-118.72501399999987,72.0619200000001],[-118.71665999999999,72.066665999999998],[-118.71028099999995,72.071930000000009],[-118.70556599999992,72.077774000000034],[-118.703056,72.084717000000012],[-118.70749699999999,72.095824999999991],[-118.715012,72.10026600000009],[-118.71972700000003,72.105255000000056],[-118.71945199999999,72.111374000000069],[-118.71749899999998,72.116928000000087],[-118.69193999999999,72.130539000000056],[-118.58860800000002,72.176086000000112],[-118.57640100000003,72.179152999999985],[-118.56194299999999,72.181366000000139],[-118.545547,72.182754999999986],[-118.44248999999996,72.181655999999975],[-118.40583799999996,72.183044000000052],[-118.38945000000001,72.184708000000114],[-118.15722699999992,72.217758000000117],[-118.12832599999996,72.222214000000065],[-118.11945299999996,72.226654000000053],[-118.11277799999993,72.231934000000138],[-118.108047,72.237762000000089],[-118.10527000000002,72.244705000000067],[-118.10417199999995,72.263321000000076],[-118.12138400000003,72.308029000000147],[-118.13082899999995,72.318054000000075],[-118.14527899999996,72.326934999999992],[-118.16471899999993,72.334427000000119],[-118.176941,72.337769000000037],[-118.19193999999999,72.340546000000131],[-118.20916699999998,72.34248400000007],[-118.25140399999998,72.344711000000132],[-118.27166699999992,72.344711000000132],[-118.28832999999992,72.343323000000055],[-118.32528699999995,72.341934000000037],[-118.36416600000001,72.341370000000097],[-118.40695199999993,72.34248400000007],[-118.446663,72.345260999999994],[-118.49109599999997,72.353043000000127],[-118.52306399999992,72.363876000000118],[-118.55499299999997,72.380814000000044],[-118.56973299999999,72.389709000000039],[-118.58194700000001,72.399155000000007],[-118.58860800000002,72.416655999999989],[-118.58805799999999,72.435256999999979],[-118.58528100000001,72.441924999999969],[-118.573059,72.460815000000082],[-118.56833599999993,72.46665999999999],[-118.55027799999999,72.483321999999987],[-118.53694199999995,72.493866000000025],[-118.51972999999992,72.50277699999998],[-118.20722999999998,72.618591000000094],[-118.12554899999998,72.642487000000017],[-118.08306900000002,72.649719000000118],[-117.90361000000001,72.689697000000137],[-117.89083899999991,72.692749000000049],[-117.86888099999993,72.699997000000053],[-117.63305700000001,72.784987999999998],[-117.60193600000002,72.796936000000073],[-117.51944700000001,72.828873000000044],[-117.48999000000003,72.841369999999984],[-117.48111,72.845825000000048],[-117.46472199999994,72.85554500000012],[-117.43611099999993,72.876373000000001],[-117.42054699999994,72.894440000000088],[-117.40222199999999,72.903320000000122],[-117.37999000000002,72.910538000000088],[-117.35360699999995,72.916382000000112],[-117.32333399999993,72.92082199999993],[-117.30638099999993,72.921921000000111],[-117.24916099999996,72.923874000000069],[-117.12721299999998,72.932479999999998],[-116.95639,72.954163000000108],[-116.94138299999997,72.95637499999998],[-116.89972699999998,72.964157000000114],[-116.862503,72.972214000000065],[-116.83805799999999,72.978592000000049],[-116.775284,72.9952550000001],[-116.70722999999998,73.017211999999972],[-116.65972899999991,73.031097000000045],[-116.58750900000001,73.051376000000005],[-116.57417299999997,73.054153000000099],[-116.54167199999995,73.057480000000055],[-116.52416999999991,73.058868000000132],[-116.31916799999993,73.09165999999999],[-116.24221799999998,73.110260000000096],[-116.20195000000001,73.118590999999981],[-116.15556300000003,73.124695000000031],[-115.90055799999993,73.154160000000104],[-115.60973399999995,73.194138000000123],[-115.44082600000002,73.22387700000013],[-115.34638999999999,73.253326000000129],[-115.32305899999994,73.260269000000108],[-115.30915799999997,73.263046000000031],[-115.14917000000003,73.288315000000011],[-115.10221899999999,73.294144000000017],[-115.01418299999989,73.299988000000042],[-114.95111099999997,73.307754999999986],[-114.89417299999997,73.318054000000018],[-114.86638599999998,73.323608000000036],[-114.83056599999998,73.334152000000074],[-114.81054699999999,73.342758000000003],[-114.70722999999992,73.368042000000003],[-114.67555199999998,73.371918000000051],[-114.65778399999999,73.373032000000023],[-114.56166100000002,73.37553400000013],[-114.54083300000002,73.373595999999964],[-114.50527999999991,73.368866000000139],[-114.337784,73.343323000000055],[-114.30499299999991,73.338042999999971],[-114.27500899999995,73.332214000000135],[-114.22609699999987,73.318329000000062],[-114.19776899999999,73.306366000000025],[-114.16306299999997,73.289703000000145],[-114.11054999999999,73.263885000000016],[-114.05610699999994,73.233597000000032],[-114.01666299999994,73.206375000000094],[-113.96167000000003,73.153046000000131],[-113.95694700000001,73.142487000000074],[-113.95388799999989,73.125533999999959],[-113.95749699999999,73.113312000000008],[-113.99582700000002,73.077773999999977],[-114.00499699999995,73.064423000000033],[-114.03555299999999,73.004990000000021],[-114.04750100000001,72.954987000000074],[-114.05499299999997,72.883605999999986],[-114.05277999999998,72.872208000000001],[-114.04915599999998,72.867203000000131],[-114.0427699999999,72.862762000000032],[-114.02722199999999,72.854156000000103],[-113.98166700000002,72.834152000000017],[-113.96888699999994,72.82499700000011],[-113.96777299999997,72.819442999999978],[-113.96945199999999,72.813034000000073],[-113.97582999999992,72.807205000000067],[-113.985817,72.803040000000067],[-113.99749799999995,72.799423000000104]],[[-95.669723999999917,73.604980000000126],[-95.688598999999897,73.603317000000004],[-95.702498999999989,73.60554500000012],[-95.711670000000026,73.612198000000092],[-95.703887999999949,73.617477000000065],[-95.684157999999968,73.6202550000001],[-95.669997999999964,73.620529000000033],[-95.655563000000029,73.616652999999928],[-95.654998999999975,73.609984999999995],[-95.669723999999917,73.604980000000126]],[[-107.89555399999989,73.541367000000093],[-107.93055699999996,73.539428999999984],[-107.9519499999999,73.540268000000083],[-107.97193900000002,73.542755],[-108.00917099999992,73.548035000000084],[-108.02306399999998,73.551376000000118],[-108.07472200000001,73.576385000000073],[-108.08277899999996,73.580826000000002],[-108.08500700000002,73.585815000000139],[-108.08332799999999,73.597214000000065],[-108.07640099999992,73.603591999999992],[-108.066101,73.608597000000032],[-108.05444299999988,73.612487999999928],[-108.04083299999996,73.615540000000067],[-108.00750700000003,73.618591000000094],[-107.89943699999992,73.622756999999979],[-107.86277799999993,73.624145999999996],[-107.82444800000002,73.6244200000001],[-107.80444299999999,73.624145999999996],[-107.68110699999994,73.621367999999961],[-107.61472299999991,73.614700000000028],[-107.60056299999997,73.611374000000126],[-107.58944699999995,73.607758000000103],[-107.58473200000003,73.603043000000071],[-107.58249699999999,73.597762999999986],[-107.58473200000003,73.586655000000007],[-107.59194899999994,73.579987000000017],[-107.60221899999988,73.575271999999984],[-107.64527900000002,73.570267000000115],[-107.65722700000003,73.568603999999993],[-107.7491609999999,73.55581699999999],[-107.89555399999989,73.541367000000093]],[[-124.307503,73.556366000000139],[-124.33167999999995,73.556366000000139],[-124.343613,73.559981999999991],[-124.35193600000002,73.5711060000001],[-124.35861199999988,73.630264000000068],[-124.34612300000003,73.633606000000043],[-124.33138999999994,73.636383000000137],[-124.307503,73.632202000000063],[-124.30332900000002,73.626648000000046],[-124.29387700000001,73.622481999999934],[-124.28222700000003,73.618866000000082],[-124.26806599999992,73.616088999999988],[-124.21028100000001,73.611374000000126],[-124.19360399999994,73.60914600000001],[-124.17944299999994,73.606369000000086],[-124.16777000000002,73.603043000000071],[-124.14916999999997,73.594711000000075],[-124.12666300000001,73.580826000000002],[-124.11972000000003,73.575821000000133],[-124.11554699999988,73.570541000000048],[-124.11389199999996,73.564148000000102],[-124.12638899999996,73.560805999999957],[-124.307503,73.556366000000139]],[[-124.58473199999992,73.679153000000042],[-124.59944199999995,73.676376000000005],[-124.62361099999998,73.676650999999993],[-124.640556,73.678863999999976],[-124.70056199999993,73.689422999999977],[-124.72917199999995,73.694976999999994],[-124.73361199999999,73.700545999999974],[-124.72582999999992,73.705261000000007],[-124.71584299999995,73.709152000000074],[-124.70111099999997,73.711928999999998],[-124.68167099999999,73.713042999999971],[-124.66471899999999,73.710815000000025],[-124.66278099999994,73.706099999999992],[-124.64835399999998,73.704712000000086],[-124.61694299999999,73.699707000000046],[-124.57140399999992,73.691925000000083],[-124.564438,73.687195000000031],[-124.57224299999996,73.682479999999998],[-124.58473199999992,73.679153000000042]],[[-105.08944700000001,73.735260000000039],[-104.96028099999995,73.688582999999937],[-104.84306300000003,73.650818000000072],[-104.71140300000002,73.63081399999993],[-104.69167299999992,73.628310999999997],[-104.675003,73.624985000000095],[-104.58084100000002,73.600266000000147],[-104.53056300000003,73.581374999999923],[-104.51306199999999,73.573044000000039],[-104.49445300000002,73.559418000000051],[-104.49027999999998,73.554703000000018],[-104.48528299999998,73.544708000000128],[-104.48306299999996,73.534424000000115],[-104.512787,73.493042000000059],[-104.55583200000001,73.403320000000008],[-104.56639100000001,73.334717000000126],[-104.56833599999999,73.329163000000108],[-104.57333399999999,73.323044000000095],[-104.58138999999994,73.316666000000112],[-104.60193599999997,73.306366000000025],[-104.64916999999997,73.280823000000112],[-104.69499200000001,73.25221300000004],[-104.76000999999991,73.203873000000044],[-104.76500699999985,73.197754000000032],[-104.76390099999998,73.192474000000118],[-104.79415899999998,73.168045000000006],[-104.86805700000002,73.136658000000068],[-104.97556299999997,73.085266000000104],[-104.98332199999999,73.078872999999987],[-104.98805199999993,73.073043999999982],[-104.98388699999992,73.068054000000075],[-104.97749299999998,73.05304000000001],[-104.97361799999999,73.031662000000097],[-104.97860699999995,73.025543000000084],[-104.984734,73.020538000000045],[-104.99527,73.015823000000012],[-105.031677,73.004166000000055],[-105.0750119999999,72.997208000000057],[-105.08833300000003,72.994141000000127],[-105.13639799999993,72.978867000000037],[-105.14695699999999,72.974152000000004],[-105.22582999999997,72.933044000000109],[-105.30304699999994,72.951096000000007],[-105.31916799999999,72.954163000000108],[-105.33972199999999,72.955551000000014],[-105.354446,72.953323000000069],[-105.35610999999994,72.947754000000032],[-105.33139,72.910538000000088],[-105.32417299999997,72.906096999999988],[-105.279449,72.885543999999925],[-105.25361599999997,72.878585999999984],[-105.237503,72.875534000000016],[-105.21140300000002,72.868591000000038],[-105.20417799999996,72.864151000000049],[-105.26222199999989,72.848602000000085],[-105.27555799999993,72.845534999999984],[-105.28999299999987,72.847762999999986],[-105.38305699999995,72.866653000000099],[-105.43611099999993,72.896652000000131],[-105.44332900000001,72.90109300000006],[-105.45612299999999,72.915267999999969],[-105.458618,72.925536999999963],[-105.45694699999996,72.931366000000025],[-105.45834400000001,72.936371000000065],[-105.46250900000001,72.941360000000032],[-105.57472199999995,72.984421000000054],[-105.73277299999995,73.047759999999982],[-105.91388699999999,73.145538000000101],[-105.94638099999992,73.160263000000043],[-106.09249899999992,73.199706999999933],[-106.08194700000001,73.241088999999988],[-106.32195300000001,73.338882000000126],[-106.44776899999994,73.393051000000128],[-106.45556599999998,73.397491000000002],[-106.46611000000001,73.401382000000069],[-106.72028399999999,73.44999700000011],[-106.88137799999998,73.463318000000072],[-106.89806399999992,73.461929000000055],[-106.91610699999995,73.461380000000077],[-106.9375,73.462494000000106],[-107,73.469711000000018],[-107.016953,73.4727630000001],[-107.02749599999999,73.476379000000009],[-107.03555299999994,73.480820000000108],[-107.03415699999999,73.486374000000069],[-107.02583300000003,73.498596000000077],[-107.01834100000002,73.504990000000078],[-107.00974299999996,73.510544000000095],[-106.97112299999992,73.531661999999983],[-106.92944299999999,73.550537000000134],[-106.89334100000002,73.562484999999981],[-106.74526999999995,73.648041000000148],[-106.70028699999995,73.676085999999941],[-106.65805099999994,73.695251000000098],[-106.64584399999995,73.699141999999995],[-106.61833200000001,73.705261000000007],[-106.57224300000001,73.711928999999998],[-106.32721700000002,73.72665400000011],[-106.18554699999999,73.733597000000145],[-106.03916900000002,73.731368999999972],[-105.80055199999998,73.726928999999984],[-105.72666900000002,73.728592000000049],[-105.68028300000003,73.734985000000052],[-105.66639699999996,73.737761999999918],[-105.637787,73.74443100000002],[-105.61277799999993,73.752212999999983],[-105.58473200000003,73.758041000000048],[-105.569458,73.760269000000051],[-105.53527799999995,73.762771999999984],[-105.51666299999994,73.763321000000133],[-105.30387899999994,73.762206999999989],[-105.28388999999999,73.761658000000011],[-105.16999800000002,73.755554000000018],[-105.14862099999999,73.754166000000055],[-105.10749799999991,73.743590999999981],[-105.08944700000001,73.735260000000039]],[[-80.142226999999878,73.696640000000116],[-80.108611999999994,73.693863000000022],[-80.074448000000018,73.697479000000044],[-79.901397999999972,73.698318000000029],[-79.625548999999978,73.670821999999987],[-79.586120999999991,73.66276600000009],[-79.523055999999997,73.646652000000131],[-79.493056999999965,73.637772000000098],[-79.476394999999911,73.634154999999964],[-79.451949999999954,73.630539000000113],[-79.373610999999983,73.63081399999993],[-78.96166999999997,73.632750999999985],[-78.946105999999986,73.634720000000016],[-78.934433000000013,73.638596000000064],[-78.931106999999997,73.642487000000131],[-78.928878999999938,73.647491000000116],[-78.924164000000019,73.650269000000094],[-78.912505999999894,73.653869999999984],[-78.887787000000003,73.656647000000078],[-78.861389000000031,73.658324999999991],[-78.64416499999993,73.656647000000078],[-78.40834000000001,73.661652000000117],[-78.206664999999987,73.667755000000056],[-78.166397000000018,73.668045000000063],[-78.12777699999998,73.664703000000145],[-78.113327000000027,73.663040000000024],[-78.064437999999996,73.651932000000045],[-78.009734999999978,73.63749700000011],[-77.965285999999935,73.628310999999997],[-77.823058999999944,73.603867000000037],[-77.738601999999958,73.591933999999981],[-77.608046999999999,73.574158000000011],[-77.535004000000015,73.565536000000009],[-77.453887999999949,73.559708000000057],[-77.424437999999952,73.554703000000018],[-77.395554000000004,73.545822000000101],[-77.373046999999929,73.529709000000082],[-77.363327000000027,73.524703999999986],[-77.351394999999968,73.519988999999953],[-77.338333000000034,73.516663000000108],[-77.294723999999974,73.512772000000041],[-77.237212999999997,73.509994999999947],[-77.203063999999927,73.505554000000018],[-77.191939999999988,73.501389000000017],[-77.148620999999991,73.476379000000009],[-77.153610000000015,73.468048000000067],[-77.157226999999978,73.458603000000039],[-77.055266999999958,73.366379000000052],[-77.048888999999917,73.36192299999999],[-76.999435000000005,73.345825000000104],[-76.969726999999978,73.337203999999986],[-76.91361999999998,73.324432000000002],[-76.893340999999964,73.321105999999986],[-76.884170999999924,73.321655000000078],[-76.878875999999934,73.324158000000068],[-76.858611999999994,73.32638500000013],[-76.837219000000005,73.327209000000096],[-76.736389000000031,73.324706999999989],[-76.72193900000002,73.322495000000117],[-76.708054000000004,73.317764000000011],[-76.579726999999991,73.219711000000075],[-76.577498999999932,73.205551000000128],[-76.585006999999962,73.194427000000076],[-76.601944000000003,73.183319000000097],[-76.619720000000029,73.175812000000121],[-76.605270000000019,73.15914900000007],[-76.586945000000014,73.146378000000141],[-76.582229999999981,73.14387499999998],[-76.510559000000001,73.120254999999986],[-76.495543999999938,73.116928000000087],[-76.487502999999947,73.116089000000102],[-76.381942999999978,73.106093999999985],[-76.31361400000003,73.100540000000024],[-76.312499999999943,73.067490000000134],[-76.318068999999923,73.062759000000028],[-76.319457999999941,73.058318999999983],[-76.333068999999909,72.963607999999965],[-76.323059000000001,72.957214000000135],[-76.309433000000013,72.952484000000084],[-76.291671999999949,72.948868000000061],[-76.275283999999999,72.946640000000059],[-76.211945000000014,72.945526000000086],[-76.162216000000001,72.946365000000071],[-76.118606999999997,72.940262000000132],[-76.103607000000011,72.936371000000065],[-76.077224999999942,72.924988000000042],[-76.071670999999924,72.921097000000145],[-76.062209999999993,72.906937000000028],[-76.059432999999899,72.900818000000015],[-76.086394999999982,72.863602000000071],[-76.093886999999938,72.85803199999998],[-76.103881999999942,72.853043000000014],[-76.115279999999927,72.849426000000051],[-76.13110399999988,72.845534999999984],[-76.149993999999992,72.842209000000139],[-76.25140399999998,72.826385000000016],[-76.315552000000025,72.817214999999976],[-76.339721999999995,72.814987000000031],[-76.5625,72.812484999999981],[-76.581679999999949,72.812484999999981],[-76.601944000000003,72.813873000000058],[-76.618606999999884,72.816939999999988],[-76.634170999999981,72.820541000000048],[-76.662780999999995,72.829163000000051],[-76.681380999999931,72.831375000000094],[-76.72193900000002,72.833878000000084],[-76.740829000000019,72.833878000000084],[-76.767501999999922,72.833878000000084],[-76.891952999999944,72.830825999999945],[-76.937209999999993,72.830825999999945],[-77.084754999999973,72.839684000000148],[-77.101668999999958,72.84027100000003],[-77.143889999999942,72.841933999999981],[-77.226943999999946,72.846100000000035],[-77.265838999999914,72.849426000000051],[-77.314437999999939,72.85554500000012],[-77.365829000000019,72.864426000000037],[-77.40055799999999,72.870818999999983],[-77.416106999999954,72.874695000000088],[-77.447219999999959,72.879974000000061],[-77.522780999999952,72.886108000000092],[-77.704178000000013,72.897216999999955],[-77.723327999999981,72.896941999999967],[-77.860000999999954,72.893051000000071],[-77.904175000000009,72.891662999999994],[-77.997771999999941,72.888321000000019],[-78.107223999999917,72.88638300000008],[-78.236358999999993,72.893005000000016],[-78.273055999999997,72.890549000000021],[-78.297226000000023,72.887772000000098],[-78.486114999999984,72.86554000000001],[-78.62388599999997,72.848037999999974],[-78.865828999999962,72.804427999999973],[-79.047775000000001,72.771378000000141],[-79.161941999999897,72.750548999999978],[-79.209166999999923,72.744979999999998],[-79.296111999999994,72.737761999999975],[-79.359160999999972,72.733597000000145],[-79.382492000000013,72.733047000000113],[-79.400283999999999,72.733597000000145],[-79.429168999999945,72.735809000000017],[-79.543334999999956,72.74859600000002],[-79.62388599999997,72.763321000000133],[-79.927779999999927,72.842484000000013],[-79.972778000000005,72.854705999999965],[-79.998610999999983,72.86303700000002],[-80.009170999999924,72.872756999999922],[-80.120833999999945,72.978867000000037],[-80.151672000000019,73.011932000000115],[-80.181380999999931,73.043869000000086],[-80.181106999999997,73.050262000000032],[-80.164169000000015,73.061920000000043],[-80.147232000000031,73.071381000000031],[-80.134734999999921,73.084716999999955],[-80.131667999999991,73.08859300000006],[-80.128875999999991,73.09526100000005],[-80.122771999999998,73.11442599999998],[-80.110000999999954,73.179703000000018],[-80.114440999999999,73.186371000000008],[-80.134445000000028,73.209152000000017],[-80.143065999999919,73.216933999999981],[-80.15194699999995,73.222487999999942],[-80.216948999999943,73.243317000000104],[-80.238051999999982,73.24414100000007],[-80.415282999999931,73.24414100000007],[-80.61999499999996,73.264160000000004],[-80.760009999999909,73.274704000000042],[-80.797500999999954,73.276932000000045],[-80.876098999999954,73.32777399999992],[-80.876098999999954,73.338593000000003],[-80.872498000000007,73.424988000000099],[-80.820281999999963,73.489150999999993],[-80.80999799999995,73.644440000000088],[-80.857772999999952,73.74192800000003],[-80.771666999999923,73.749709999999993],[-80.683318999999983,73.755829000000006],[-80.560546999999872,73.76776099999995],[-80.434998000000007,73.766098000000056],[-80.37332200000003,73.761658000000011],[-80.353058000000033,73.759720000000073],[-80.320847000000015,73.753876000000048],[-80.30860899999999,73.75],[-80.29861499999987,73.745819000000097],[-80.265288999999996,73.730270000000019],[-80.223327999999924,73.715820000000065],[-80.192763999999954,73.707214000000135],[-80.15834000000001,73.699417000000039],[-80.142226999999878,73.696640000000116]],[[-73.354674999999929,68.329215999999974],[-73.328170999999998,68.328208999999958],[-73.31617,68.328712000000053],[-73.306830999999988,68.330544000000089],[-73.211670000000026,68.376923000000033],[-73.230559999999912,68.384155000000135],[-73.253066999999987,68.390823000000125],[-73.279448999999886,68.39498900000001],[-73.302779999999927,68.396102999999982],[-73.31806899999998,68.393051000000071],[-73.357498000000021,68.371368000000132],[-73.359725999999966,68.364989999999977],[-73.357773000000009,68.357483000000059],[-73.353057999999976,68.352478000000019],[-73.349166999999909,68.344986000000063],[-73.34722899999997,68.337494000000106],[-73.34944200000001,68.331100000000106],[-73.354674999999929,68.329215999999974],[-73.506667999999991,68.291367000000037],[-73.589721999999995,68.254715000000033],[-73.597777999999948,68.251937999999996],[-73.620834000000002,68.246093999999971],[-73.632216999999912,68.246643000000063],[-73.639724999999942,68.249709999999993],[-73.851668999999958,68.342209000000139],[-73.855834999999956,68.346649000000014],[-73.896117999999944,68.392211999999915],[-73.889449999999954,68.44470200000012],[-73.877486999999917,68.481093999999928],[-73.873610999999926,68.487762000000089],[-73.86721799999998,68.493042000000003],[-73.856110000000001,68.497481999999991],[-73.823623999999995,68.503326000000015],[-73.806655999999975,68.503876000000048],[-73.749999999999943,68.510817999999972],[-73.738891999999964,68.514999000000046],[-73.730285999999978,68.519989000000066],[-73.725829999999974,68.525818000000072],[-73.704726999999934,68.656647000000021],[-73.75389100000001,68.683594000000085],[-73.761397999999986,68.686371000000008],[-73.774719000000005,68.689697000000024],[-73.865828999999906,68.705826000000002],[-73.893889999999999,68.707764000000111],[-74.094161999999983,68.719986000000063],[-74.106109999999944,68.690536000000009],[-73.99221799999998,68.624695000000031],[-73.888061999999877,68.561645999999939],[-73.881667999999991,68.55664100000007],[-73.881667999999991,68.549713000000111],[-73.903609999999958,68.52777100000003],[-73.921386999999925,68.511932000000115],[-73.941939999999988,68.504715000000033],[-73.990279999999927,68.492751999999996],[-74.028335999999911,68.513610999999969],[-74.171660999999972,68.521652000000017],[-74.221114999999998,68.52526899999998],[-74.351395000000025,68.536926000000108],[-74.366104000000007,68.539154000000053],[-74.379439999999931,68.542205999999965],[-74.391112999999962,68.546371000000136],[-74.514175000000023,68.599991000000045],[-74.526397999999972,68.610809000000017],[-74.532776000000013,68.62164300000012],[-74.531676999999945,68.626373000000115],[-74.598891999999921,68.681930999999963],[-74.701950000000011,68.71887200000009],[-74.712218999999948,68.723038000000031],[-74.726105000000018,68.730270000000132],[-74.728333000000021,68.737198000000092],[-74.724715999999944,68.766097999999943],[-74.71945199999999,68.770537999999988],[-74.664168999999958,68.774155000000121],[-74.620833999999888,68.782486000000006],[-74.591949,68.788879000000009],[-74.576949999999954,68.793045000000063],[-74.565276999999924,68.802199999999914],[-74.546386999999982,68.822494999999947],[-74.548049999999989,68.828598000000113],[-74.551392000000021,68.830551000000014],[-74.604172000000005,68.841660000000104],[-74.634170999999924,68.846374999999966],[-74.648055999999997,68.847214000000122],[-74.666655999999932,68.845825000000104],[-74.678328999999962,68.842758000000003],[-74.687377999999967,68.835991000000035],[-74.718718999999965,68.824821000000043],[-74.723052999999936,68.822318999999993],[-74.721221999999955,68.821152000000041],[-74.71421799999996,68.82098400000001],[-74.705222999999933,68.821655000000078],[-74.689437999999939,68.819716999999969],[-74.671660999999972,68.818877999999984],[-74.660277999999892,68.81581100000011],[-74.639724999999999,68.807479999999998],[-74.633330999999941,68.79693600000013],[-74.635009999999966,68.793320000000108],[-74.648055999999997,68.789429000000041],[-74.665832999999964,68.786652000000117],[-74.771666999999979,68.774155000000121],[-74.917769999999962,68.801375999999948],[-74.913894999999968,68.81721500000009],[-74.837508999999955,68.840820000000065],[-74.787780999999995,68.854431000000034],[-74.764167999999984,68.872040000000027],[-74.74017299999997,68.872710999999981],[-74.72222899999997,68.934143000000006],[-74.862945999999909,68.954178000000013],[-74.872779999999977,68.955001999999979],[-74.887610999999993,68.954178000000013],[-74.898108999999977,68.952515000000062],[-74.920113000000015,68.946671000000038],[-74.935944000000006,68.942001000000005],[-75,68.937607000000071],[-75.005004999999926,68.929977000000065],[-75.033614999999884,68.926085999999998],[-75.042770000000019,68.928314],[-75.041945999999882,68.930267000000129],[-75.021118000000001,68.953049000000021],[-74.962340999999981,68.972824000000003],[-74.953002999999967,68.978484999999978],[-74.915337000000022,68.992821000000049],[-74.907668999999885,68.993988000000002],[-74.764724999999999,69.019440000000031],[-74.748336999999992,69.021378000000141],[-74.735000999999954,69.021927000000119],[-74.729445999999996,69.019440000000031],[-74.758057000000008,69.008880999999974],[-74.752228000000002,69.002486999999974],[-74.675003000000004,69.006943000000035],[-74.65834000000001,69.008330999999941],[-74.642776000000026,69.011658000000068],[-74.638061999999991,69.016098000000113],[-74.641113000000018,69.021378000000141],[-74.652495999999928,69.040267999999912],[-74.785827999999981,69.076385000000073],[-74.820846999999958,69.082214000000079],[-74.834166999999923,69.081664999999987],[-74.845839999999953,69.078598000000056],[-74.948607999999922,69.048874000000012],[-75.043334999999956,69.013321000000019],[-75.051940999999886,69.008605999999986],[-75.036117999999931,68.992203000000075],[-75.037780999999882,68.985809000000074],[-75.071395999999936,68.921097000000032],[-75.075561999999934,68.915817000000004],[-75.109160999999858,68.894989000000123],[-75.116394000000014,68.890823000000012],[-75.124161000000015,68.888046000000088],[-75.139724999999999,68.884720000000073],[-75.169998000000021,68.886383000000023],[-75.192490000000021,68.891663000000051],[-75.201950000000011,68.894440000000145],[-75.315826000000015,68.942200000000128],[-75.373885999999914,68.968872000000033],[-75.383330999999998,68.974426000000051],[-75.400283999999999,68.985535000000141],[-75.422500999999954,69.001937999999996],[-75.445830999999941,69.016937000000041],[-75.454452999999944,69.021102999999982],[-75.466399999999965,69.021378000000141],[-75.478881999999999,69.019714000000135],[-75.494155999999975,69.01638800000012],[-75.528335999999967,69.005829000000062],[-75.565552000000025,68.993591000000038],[-75.573623999999995,68.988585999999941],[-75.578612999999962,68.984146000000123],[-75.580841000000021,68.975540000000024],[-75.574172999999917,68.968323000000112],[-75.537780999999939,68.951096000000064],[-75.506957999999941,68.939696999999967],[-75.499724999999955,68.934708000000001],[-75.494995000000017,68.930267000000129],[-75.534163999999976,68.90387000000004],[-75.542770000000019,68.898879999999963],[-75.56527699999998,68.891373000000044],[-75.603881999999942,68.879700000000014],[-75.647780999999952,68.869140999999956],[-75.809158000000025,68.836928999999998],[-75.976104999999961,68.791092000000106],[-75.979445999999996,68.787201000000039],[-75.985001000000011,68.783875000000023],[-75.995543999999938,68.779434000000094],[-76.008620999999948,68.775543000000027],[-76.049437999999952,68.764435000000049],[-76.227218999999991,68.721100000000035],[-76.327224999999999,68.697478999999987],[-76.376098999999954,68.687484999999981],[-76.420546999999999,68.679152999999985],[-76.436385999999857,68.677200000000028],[-76.456664999999987,68.675262000000089],[-76.540282999999988,68.673308999999961],[-76.559432999999956,68.673035000000027],[-76.575561999999991,68.674149000000057],[-76.59056099999998,68.676376000000062],[-76.628875999999991,68.68691999999993],[-76.660827999999981,68.699416999999926],[-76.674164000000019,68.71026599999999],[-76.680283000000031,68.716094999999996],[-76.688599000000011,68.733597000000032],[-76.689437999999996,68.740540000000067],[-76.688048999999978,68.746933000000013],[-76.678604000000007,68.758330999999998],[-76.666945999999996,68.769150000000081],[-76.636947999999961,68.78166200000004],[-76.608611999999937,68.794144000000074],[-76.577498999999932,68.808318999999983],[-76.561385999999914,68.818054000000018],[-76.546111999999994,68.833054000000004],[-76.537216000000001,68.842209000000082],[-76.523055999999997,68.863876000000118],[-76.521666999999979,68.870254999999986],[-76.523894999999925,68.876373000000058],[-76.532775999999956,68.880538999999999],[-76.544158999999979,68.883041000000048],[-76.559432999999956,68.88499500000006],[-76.576674999999966,68.88499500000006],[-76.59333799999996,68.883331000000055],[-76.606658999999922,68.883041000000048],[-76.610000999999954,68.884720000000073],[-76.644164999999987,68.911102000000142],[-76.655562999999972,68.924698000000092],[-76.655562999999972,68.930542000000116],[-76.642775999999969,69.003876000000105],[-76.640563999999927,69.009155000000078],[-76.625548999999978,69.018326000000059],[-76.603607000000011,69.025818000000015],[-76.578338999999914,69.032211000000132],[-76.543335000000013,69.038315000000011],[-76.501403999999923,69.042755],[-76.422500999999954,69.050537000000134],[-76.368606999999997,69.055251999999996],[-76.348891999999921,69.054976999999951],[-76.33277899999996,69.05442800000003],[-76.240279999999927,69.048325000000091],[-76.208054000000004,69.044144000000017],[-76.140563999999927,69.034714000000122],[-76.124435000000005,69.031096999999988],[-76.114165999999955,69.027771000000143],[-76.091674999999952,69.011658000000068],[-76.080001999999922,69.006378000000041],[-76.068619000000012,69.003876000000105],[-75.996932999999956,69.003036000000066],[-75.969161999999983,69.010269000000108],[-75.904998999999918,69.036925999999994],[-75.813889000000017,69.067763999999954],[-75.655838000000017,69.080550999999957],[-75.637786999999946,69.079987000000017],[-75.619155999999919,69.081374999999923],[-75.6058349999999,69.08526599999999],[-75.598891999999978,69.089432000000102],[-75.593886999999938,69.099716000000114],[-75.569732999999928,69.15277100000003],[-75.569457999999997,69.158324999999991],[-75.571121000000005,69.163879000000009],[-75.591674999999952,69.22164900000007],[-75.603057999999976,69.238876000000118],[-75.619719999999973,69.249419999999986],[-75.669723999999917,69.271103000000096],[-75.759734999999978,69.304977000000122],[-75.783324999999991,69.313599000000124],[-75.956389999999885,69.366088999999931],[-75.970275999999956,69.36914100000007],[-76.168610000000001,69.411377000000073],[-76.202498999999932,69.413879000000122],[-76.241942999999935,69.413315000000011],[-76.298049999999989,69.407760999999994],[-76.417770000000019,69.44720500000011],[-76.607497999999964,69.529709000000139],[-76.637787000000003,69.546645999999953],[-76.641112999999962,69.554153000000099],[-76.641678000000013,69.557480000000055],[-76.626662999999951,69.581375000000037],[-76.61999499999996,69.586380000000077],[-76.611663999999962,69.591095000000109],[-76.489165999999898,69.648331000000042],[-76.477782999999988,69.652206000000035],[-76.459166999999979,69.654434000000037],[-76.442215000000033,69.653046000000074],[-76.347777999999948,69.64027400000009],[-76.261397999999986,69.626647999999932],[-76.226943999999946,69.637206999999989],[-76.186110999999983,69.659714000000065],[-76.182495000000017,69.663605000000132],[-76.187774999999988,69.665268000000083],[-76.226105000000018,69.664703000000031],[-76.295546999999942,69.660263000000043],[-76.376388999999961,69.671371000000022],[-76.388335999999924,69.673874000000012],[-76.397506999999962,69.678040000000067],[-76.399733999999853,69.684143000000006],[-76.450561999999934,69.690262000000075],[-76.537780999999939,69.696091000000081],[-76.551666000000012,69.695526000000029],[-76.634170999999981,69.683594000000085],[-76.641953000000001,69.679977000000122],[-76.638900999999976,69.673309000000131],[-76.631942999999922,69.669708000000071],[-76.616394000000014,69.667480000000126],[-76.581679999999949,69.666930999999977],[-76.557769999999948,69.673309000000131],[-76.542769999999905,69.674698000000149],[-76.530838000000017,69.672211000000061],[-76.517776000000026,69.662765999999976],[-76.522780999999952,69.65248100000008],[-76.535004000000015,69.638596000000007],[-76.553329000000019,69.625259000000142],[-76.561661000000015,69.620254999999986],[-76.683883999999978,69.56581100000011],[-76.691939999999988,69.563034000000016],[-76.707503999999972,69.559417999999994],[-76.730285999999978,69.560256999999922],[-76.844726999999921,69.576096000000064],[-77.136947999999961,69.626373000000115],[-77.18582200000003,69.637496999999996],[-77.191665999999941,69.639709000000039],[-77.200561999999991,69.646103000000096],[-77.200561999999991,69.64888000000002],[-77.194442999999922,69.657211000000075],[-77.164444000000003,69.676086000000055],[-77.155562999999972,69.680541999999946],[-77.144454999999994,69.682205000000067],[-76.949431999999945,69.695526000000029],[-76.939437999999939,69.679703000000018],[-76.929992999999968,69.677765000000079],[-76.896666999999979,69.679152999999985],[-76.868056999999965,69.684708000000057],[-76.829726999999934,69.695816000000036],[-76.820281999999963,69.699417000000096],[-76.80471799999998,69.708603000000039],[-76.793883999999991,69.718597000000045],[-76.791945999999996,69.721649000000014],[-76.781386999999995,69.743042000000116],[-76.781386999999995,69.748596000000077],[-76.835280999999952,69.815811000000053],[-76.851944000000003,69.813599000000011],[-76.933059999999898,69.809708000000114],[-77.026672000000019,69.811919999999986],[-77.150283999999999,69.816086000000098],[-77.293059999999855,69.828873000000101],[-77.308884000000035,69.830826000000002],[-77.310546999999985,69.835814999999968],[-77.307770000000005,69.840271000000087],[-77.297774999999888,69.851089000000059],[-77.28472899999997,69.860535000000027],[-77.25418099999996,69.87692300000009],[-77.243056999999965,69.881362999999908],[-77.208344000000011,69.886658000000011],[-77.116652999999928,69.901382000000012],[-76.992767000000015,69.927199999999971],[-76.981673999999941,69.931656000000089],[-76.974715999999944,69.935806000000071],[-76.980559999999969,69.938034000000016],[-76.992767000000015,69.940536000000122],[-77.002791999999943,69.940536000000122],[-77.125274999999931,69.925812000000064],[-77.141112999999962,69.922485000000108],[-77.164444000000003,69.915268000000026],[-77.188323999999909,69.906097000000045],[-77.226943999999946,69.894989000000066],[-77.260284000000013,69.887496999999939],[-77.438048999999921,69.857208000000071],[-77.508347000000015,69.826660000000118],[-77.455565999999976,69.798325000000091],[-77.444442999999978,69.789428999999984],[-77.449158000000011,69.784714000000122],[-77.551391999999964,69.747756999999922],[-77.559158000000025,69.744980000000055],[-77.574722000000008,69.741363999999976],[-77.597777999999948,69.739151000000049],[-77.608611999999937,69.740265000000022],[-77.615829000000019,69.741653000000099],[-77.626388999999904,69.744980000000055],[-77.637787000000003,69.753875999999991],[-77.645279000000016,69.760818000000086],[-77.649993999999992,69.769714000000022],[-77.668059999999969,69.836655000000064],[-77.691939999999931,69.963043000000027],[-77.695267000000001,69.98803700000002],[-77.694442999999922,70.000275000000045],[-77.693054000000018,70.00610400000005],[-77.68582200000003,70.023041000000092],[-77.678604000000007,70.034987999999998],[-77.672500999999954,70.045532000000094],[-77.669723999999974,70.052200000000028],[-77.667220999999984,70.062194999999974],[-77.665008999999941,70.088043000000084],[-77.665557999999976,70.106934000000138],[-77.668334999999956,70.113037000000077],[-77.673888999999974,70.11970500000001],[-77.671936000000017,70.177199999999914],[-77.672500999999954,70.180542000000059],[-77.678328999999962,70.187759000000142],[-77.685271999999998,70.191360000000032],[-77.810821999999973,70.24552900000009],[-77.884170999999981,70.2586060000001],[-77.892226999999878,70.258041000000048],[-78.133621000000005,70.215271000000087],[-78.239166000000012,70.203873000000101],[-78.345000999999911,70.19720500000011],[-78.351395000000025,70.197479000000044],[-78.364715999999987,70.201096000000007],[-78.401672000000019,70.212493999999992],[-78.405272999999966,70.214157000000114],[-78.480835000000013,70.288589000000002],[-78.406113000000005,70.326935000000049],[-78.396118000000001,70.328049000000021],[-78.389175000000023,70.332214000000022],[-78.398894999999925,70.336380000000077],[-78.425827000000027,70.3477630000001],[-78.436661000000015,70.351088999999945],[-78.486389000000031,70.356934000000081],[-78.504180999999903,70.35803199999998],[-78.521118000000001,70.357758000000047],[-78.536391999999978,70.356369000000029],[-78.55749499999996,70.351379000000009],[-78.573623999999995,70.345534999999984],[-78.579726999999878,70.343048000000067],[-78.583327999999995,70.336929000000055],[-78.581115999999952,70.334152000000131],[-78.569167999999991,70.325546000000031],[-78.564712999999983,70.320267000000058],[-78.56138599999997,70.314148000000046],[-78.564712999999983,70.310256999999979],[-78.578888000000006,70.309708000000001],[-78.655272999999909,70.346939000000134],[-78.662506000000008,70.350540000000024],[-78.704726999999934,70.374695000000031],[-78.74749799999995,70.438873000000058],[-78.858337000000006,70.453873000000044],[-78.903335999999911,70.449416999999926],[-78.944442999999865,70.450271999999984],[-79.031951999999933,70.454987000000017],[-79.070557000000008,70.469711000000075],[-79.095550999999887,70.493042000000116],[-79.100280999999995,70.49832200000003],[-79.081680000000006,70.529984000000127],[-79.068068999999923,70.536377000000073],[-78.893616000000009,70.590546000000131],[-78.879989999999964,70.594711000000132],[-78.860274999999888,70.59664900000007],[-78.832779000000016,70.594437000000028],[-78.821945000000028,70.589706000000092],[-78.815551999999911,70.57748400000014],[-78.816100999999946,70.573318000000029],[-78.815001999999879,70.571930000000123],[-78.806655999999975,70.564986999999974],[-78.788054999999929,70.556091000000038],[-78.766112999999905,70.550261999999975],[-78.733321999999987,70.547211000000004],[-78.718886999999938,70.547760000000096],[-78.720276000000013,70.549149000000114],[-78.84056099999998,70.634995000000117],[-78.851944000000003,70.638046000000088],[-78.861938000000009,70.637206999999989],[-78.868331999999953,70.63220200000012],[-78.867492999999968,70.628586000000041],[-78.868057000000022,70.624419999999986],[-78.871933000000013,70.621918000000051],[-78.879989999999964,70.621093999999914],[-78.912215999999944,70.621368000000018],[-78.965285999999935,70.632751000000042],[-78.976943999999946,70.635817999999972],[-78.994155999999975,70.643326000000002],[-78.999161000000015,70.651382000000069],[-79.000838999999928,70.662766000000147],[-78.994720000000029,70.672484999999995],[-79.000564999999995,70.676926000000094],[-79.009445000000028,70.679702999999961],[-79.025283999999999,70.680267000000129],[-79.041107000000011,70.678588999999988],[-79.057220000000029,70.672759999999982],[-79.152221999999995,70.627762000000075],[-79.158051,70.622208000000114],[-79.155838000000017,70.617476999999951],[-79.14973399999991,70.613037000000134],[-79.136948000000018,70.610809000000017],[-79.097778000000005,70.610260000000039],[-79.068068999999923,70.615540000000124],[-79.143889999999999,70.453873000000044],[-79.159728999999913,70.43803400000013],[-79.174164000000019,70.428040000000124],[-79.18472300000002,70.423599000000024],[-79.209731999999974,70.418045000000006],[-79.223891999999978,70.419434000000024],[-79.23582499999992,70.423309000000017],[-79.268889999999999,70.436371000000008],[-79.291106999999954,70.446930000000066],[-79.290557999999919,70.453598000000056],[-79.291945999999996,70.459717000000069],[-79.30221599999993,70.473602000000142],[-79.308333999999888,70.480270000000132],[-79.388061999999934,70.49275200000011],[-79.403610000000015,70.493316999999934],[-79.412780999999995,70.491652999999928],[-79.420546999999942,70.488876000000062],[-79.575561999999934,70.42942800000003],[-79.58555599999994,70.421371000000022],[-79.591110000000015,70.413605000000018],[-79.591384999999946,70.40914900000007],[-79.588897999999972,70.399428999999998],[-79.575835999999981,70.389984000000084],[-79.563613999999973,70.385544000000095],[-79.42361499999987,70.355820000000108],[-79.420546999999942,70.359710999999947],[-79.416107000000011,70.363602000000014],[-79.406661999999869,70.367477000000008],[-79.386948000000018,70.37164300000012],[-79.371657999999968,70.371093999999971],[-79.357772999999895,70.36970500000001],[-79.317229999999995,70.360260000000096],[-79.295837000000006,70.353043000000014],[-79.286666999999852,70.349716000000058],[-79.266112999999962,70.341094999999939],[-79.252791999999999,70.333327999999995],[-79.243057000000022,70.324707000000103],[-79.233321999999873,70.318603999999937],[-79.224715999999944,70.316085999999984],[-79.209441999999967,70.313309000000061],[-79.125823999999909,70.304703000000131],[-79.108886999999925,70.304977000000065],[-79.099730999999963,70.308594000000028],[-79.086670000000026,70.317764000000068],[-79.088333000000034,70.324707000000103],[-79.090560999999923,70.329437000000098],[-79.085830999999985,70.33859300000006],[-79.070847000000015,70.340820000000122],[-79.056655999999919,70.341369999999984],[-79.038895000000025,70.340546000000018],[-79.027221999999995,70.339432000000045],[-78.98832699999997,70.331375000000037],[-78.966659999999933,70.323318000000086],[-78.939162999999951,70.311096000000134],[-78.921660999999915,70.300812000000064],[-78.790558000000033,70.205551000000014],[-78.777221999999995,70.194976999999994],[-78.763061999999991,70.183593999999971],[-78.753066999999874,70.169434000000081],[-78.74888599999997,70.162201000000039],[-78.737502999999947,70.114989999999977],[-78.688599000000011,70.054977000000122],[-78.683060000000012,70.046371000000022],[-78.680282999999974,70.040268000000083],[-78.664168999999958,70.004166000000112],[-78.662506000000008,69.983047000000113],[-78.662506000000008,69.973037999999917],[-78.665008999999998,69.961380000000077],[-78.676392000000021,69.945250999999985],[-78.687774999999931,69.934417999999994],[-78.704177999999899,69.924148999999943],[-78.791945999999996,69.891098],[-78.84973100000002,69.886107999999979],[-79.06639100000001,69.878310999999997],[-79.17860399999995,69.883881000000088],[-79.200287000000003,69.884430000000009],[-79.37777699999998,69.886107999999979],[-79.408050999999944,69.88499500000006],[-79.474716000000001,69.878586000000041],[-79.526947000000007,69.871918000000051],[-79.540832999999964,69.868866000000139],[-79.553604000000007,69.864700000000028],[-79.563889000000017,69.859984999999995],[-79.576950000000011,69.855819999999994],[-79.604996000000028,69.849990999999989],[-79.636123999999938,69.848038000000031],[-79.682495000000017,69.848877000000016],[-79.694992000000013,69.851089000000059],[-79.707229999999981,69.855545000000006],[-79.773620999999991,69.885544000000039],[-79.780288999999982,69.890549000000078],[-79.786391999999978,69.897217000000012],[-79.796386999999925,69.908325000000048],[-79.801101999999958,69.915543000000014],[-79.800277999999992,69.917205999999965],[-79.803329000000019,69.927475000000015],[-79.833617999999944,69.949417000000039],[-79.891387999999949,69.973877000000073],[-80.053054999999915,69.997208000000114],[-80.168059999999969,70.006377999999984],[-80.196945000000028,70.008041000000105],[-80.232497999999964,70.007767000000001],[-80.263061999999934,70.002487000000087],[-80.27305599999994,69.999709999999993],[-80.292496000000028,69.98692299999999],[-80.307770000000005,69.981093999999985],[-80.31361400000003,69.980270000000019],[-80.326110999999912,69.980270000000019],[-80.336120999999991,69.982207999999957],[-80.434998000000007,70.004990000000078],[-80.45777899999996,70.013320999999962],[-80.466399999999965,70.018051000000014],[-80.47444200000001,70.024428999999998],[-80.485549999999932,70.029434000000037],[-80.547774999999945,70.04414399999996],[-80.561110999999983,70.046936000000073],[-80.577498999999875,70.048874000000012],[-80.597778000000005,70.048035000000027],[-80.652221999999938,70.038879000000065],[-80.669998000000021,70.039978000000076],[-80.787505999999951,70.050537000000134],[-80.906386999999995,70.070831000000055],[-81.06220999999988,70.085541000000035],[-81.225829999999974,70.09693900000002],[-81.285552999999993,70.095261000000107],[-81.378051999999968,70.092484000000013],[-81.429992999999968,70.093597000000102],[-81.462508999999955,70.09637500000008],[-81.603058000000033,70.113876000000005],[-81.698607999999922,70.128585999999984],[-81.711670000000026,70.130539000000113],[-81.728333000000021,70.132202000000007],[-81.745834000000002,70.1308140000001],[-81.756119000000012,70.12831099999994],[-81.763335999999924,70.123031999999967],[-81.761948000000018,70.117477000000065],[-81.737503000000004,70.093597000000102],[-81.718886999999881,70.079163000000051],[-81.709732000000031,70.074432000000115],[-81.687774999999874,70.067764000000125],[-81.670546999999942,70.065262000000075],[-81.625823999999966,70.062759000000085],[-81.558333999999888,70.056930999999963],[-81.539718999999934,70.053314],[-81.531113000000005,70.050812000000121],[-81.464721999999995,70.024703999999986],[-81.313613999999973,70.032211000000132],[-81.262221999999952,70.016388000000063],[-81.188599000000011,69.991089000000102],[-81.169723999999974,69.982483000000002],[-81.153335999999911,69.969986000000006],[-81.15306099999998,69.963608000000022],[-81.154174999999896,69.958327999999995],[-81.150283999999999,69.945815999999979],[-81.142775999999969,69.938034000000016],[-81.136123999999995,69.933043999999995],[-81.126389000000017,69.927765000000022],[-81.089721999999995,69.913879000000009],[-81.028335999999967,69.893600000000106],[-80.999999999999943,69.886107999999979],[-80.939986999999974,69.862762000000089],[-80.791381999999942,69.790542999999957],[-80.769164999999873,69.778045999999961],[-80.764175000000023,69.770537999999988],[-80.763061999999991,69.767212000000086],[-80.763061999999991,69.760818000000086],[-80.77555799999999,69.75221300000004],[-80.826110999999912,69.733597000000032],[-80.835555999999883,69.730270000000075],[-80.849441999999954,69.727203000000145],[-80.938889000000017,69.714705999999978],[-80.952498999999989,69.713882000000012],[-80.952224999999942,69.732758000000047],[-80.955841000000021,69.734420999999998],[-81.014449999999954,69.745529000000147],[-81.023055999999997,69.746094000000028],[-81.038054999999929,69.748596000000077],[-81.074172999999917,69.758040999999992],[-81.093063000000029,69.764434999999992],[-81.103058000000033,69.768326000000059],[-81.115554999999858,69.776931999999988],[-81.129439999999931,69.797760000000096],[-81.145843999999897,69.812485000000038],[-81.166945999999996,69.821380999999974],[-81.178878999999938,69.824996999999996],[-81.21665999999999,69.833603000000096],[-81.354445999999996,69.880264000000125],[-81.433059999999955,69.91304000000008],[-81.480559999999969,69.926926000000037],[-81.491942999999878,69.929703000000131],[-81.598891999999864,69.95248400000014],[-81.68249499999996,69.964431999999988],[-81.795273000000009,69.988586000000112],[-81.945540999999878,70.039978000000076],[-81.953887999999949,70.043868999999972],[-81.957229999999981,70.047211000000061],[-81.958618000000001,70.052765000000079],[-81.966659999999933,70.060532000000023],[-82.065001999999936,70.095825000000048],[-82.101104999999905,70.108032000000037],[-82.214447000000007,70.134995000000004],[-82.361663999999962,70.161377000000073],[-82.446655000000021,70.174988000000042],[-82.475006000000008,70.179428000000087],[-82.610001000000011,70.207214000000135],[-82.739165999999898,70.237762000000089],[-82.913894999999968,70.282761000000107],[-82.938888999999961,70.292205999999965],[-82.952224999999999,70.296370999999965],[-82.977782999999988,70.301926000000037],[-82.992766999999901,70.303588999999988],[-83.006957999999997,70.304703000000131],[-83.048049999999989,70.306931000000134],[-82.897781000000009,70.248595999999964],[-82.822234999999978,70.220825000000104],[-82.683608999999933,70.189972000000125],[-82.573623999999995,70.171646000000123],[-82.493880999999988,70.158875000000023],[-82.415282999999988,70.143051000000071],[-82.299727999999902,70.118866000000082],[-82.103058000000033,70.065262000000075],[-81.976395000000025,70.012206999999989],[-81.841674999999952,69.963318000000015],[-81.773330999999928,69.954162999999994],[-81.758056999999951,69.951660000000004],[-81.725006000000008,69.944138000000066],[-81.720001000000025,69.941085999999984],[-81.710830999999985,69.934142999999949],[-81.738327000000027,69.876083000000051],[-81.741378999999881,69.872757000000036],[-81.854171999999949,69.855545000000006],[-81.880279999999914,69.852478000000076],[-81.960281000000009,69.844146999999964],[-81.962783999999886,69.844711000000132],[-81.963333000000034,69.847487999999998],[-81.962508999999955,69.852768000000083],[-81.963333000000034,69.857757999999933],[-81.972503999999958,69.862487999999985],[-81.995270000000005,69.872481999999991],[-82.001677999999856,69.874694999999974],[-82.011123999999995,69.875809000000118],[-82.020003999999858,69.873871000000008],[-82.061661000000015,69.859421000000054],[-82.118880999999874,69.814697000000081],[-82.11860699999994,69.81053200000008],[-82.126098999999954,69.784988000000055],[-82.129715000000033,69.782486000000006],[-82.143340999999964,69.781372000000033],[-82.189986999999917,69.790267999999969],[-82.243606999999997,69.801650999999993],[-82.271392999999989,69.82638500000013],[-82.241668999999945,69.828048999999965],[-82.224441999999954,69.823608000000036],[-82.210280999999952,69.826096000000007],[-82.206664999999987,69.828598000000056],[-82.215011999999888,69.832763999999997],[-82.303054999999915,69.856644000000131],[-82.314163000000008,69.857483000000116],[-82.403609999999958,69.860260000000039],[-82.417769999999962,69.857757999999933],[-82.526397999999972,69.860809000000131],[-82.575012000000015,69.87081900000004],[-82.64416499999993,69.892487000000017],[-82.741378999999938,69.910248000000138],[-83.035278000000005,69.98803700000002],[-83.040832999999964,69.993042000000059],[-83.044448999999929,70.004166000000112],[-83.051392000000021,70.008605999999929],[-83.066665999999998,70.010818000000029],[-83.150283999999942,70.009720000000129],[-83.238892000000021,69.998871000000065],[-83.339171999999962,69.979431000000091],[-83.345276000000013,69.977203000000088],[-83.613891999999964,69.948868000000118],[-83.654175000000009,69.946365000000128],[-83.715285999999878,69.947754000000145],[-83.898620999999991,69.960815000000082],[-83.944716999999969,69.965820000000122],[-84.00167799999997,69.974152000000117],[-84.010833999999932,69.976653999999996],[-84.041672000000005,69.981369000000029],[-84.082779000000016,69.985260000000096],[-84.161666999999966,69.984985000000052],[-84.314162999999951,69.979706000000078],[-84.560546999999872,69.993866000000025],[-84.65695199999999,70.002487000000087],[-84.728606999999897,70.010269000000051],[-84.783889999999985,70.01887499999998],[-85.163054999999929,70.09137000000004],[-85.176102000000014,70.093048000000124],[-85.335280999999952,70.102478000000019],[-85.353881999999942,70.103317000000004],[-85.369155999999975,70.103591999999992],[-85.666397000000018,70.104705999999965],[-85.719727000000034,70.103591999999992],[-85.752501999999936,70.101929000000041],[-85.84722899999997,70.088882000000069],[-85.869445999999868,70.085541000000035],[-85.874999999999943,70.083328000000051],[-85.878051999999968,70.076935000000105],[-85.876099000000011,70.071930000000066],[-85.854720999999984,70.040817000000061],[-85.851669000000015,70.038315000000125],[-85.838333000000034,70.041931000000034],[-85.826950000000011,70.046371000000022],[-85.801940999999943,70.05442800000003],[-85.785278000000005,70.058319000000097],[-85.732772999999952,70.066939999999988],[-85.691665999999941,70.070541000000048],[-85.636397999999986,70.071930000000066],[-85.618057000000022,70.070831000000055],[-85.585555999999997,70.067490000000021],[-85.468833999999902,70.049263000000053],[-85.376937999999996,70.032211000000132],[-85.350280999999995,70.026382000000126],[-85.25140399999998,69.998322000000087],[-85.243056999999908,69.994979999999998],[-85.236114999999984,69.989150999999993],[-85.239440999999943,69.986649000000057],[-85.244995000000017,69.984421000000111],[-85.25778200000002,69.983871000000079],[-85.41339099999999,69.997429000000125],[-85.441230999999959,70.00093099999998],[-85.451224999999965,70.001769999999908],[-85.577498999999932,70.009995000000117],[-85.613892000000021,70.009995000000117],[-85.635009999999909,70.007491999999957],[-85.651947000000007,70.00360100000006],[-85.678328999999906,69.995254999999986],[-85.695267000000001,69.991363999999919],[-85.726943999999946,69.990539999999953],[-85.808334000000002,69.99859600000002],[-85.823333999999988,70.000275000000045],[-85.851944000000003,70.005554000000018],[-86.093063000000029,70.062484999999981],[-86.230835000000013,70.098602000000142],[-86.255004999999926,70.10554500000012],[-86.301940999999943,70.121643000000006],[-86.326400999999976,70.132202000000007],[-86.551940999999999,70.234984999999995],[-86.556106999999997,70.244705000000124],[-86.581115999999952,70.356934000000081],[-86.577224999999999,70.36554000000001],[-86.55860899999999,70.386932000000002],[-86.541945999999996,70.401382000000126],[-86.524170000000026,70.411652000000061],[-86.512787000000003,70.416382000000056],[-86.481109999999944,70.424698000000149],[-86.448333999999932,70.431655999999975],[-86.373046999999985,70.445816000000093],[-86.313048999999864,70.46276899999998],[-86.294997999999964,70.472762999999986],[-86.287506000000008,70.484420999999998],[-86.297774999999945,70.494141000000127],[-86.313889000000017,70.502777000000037],[-86.334441999999967,70.511658000000125],[-86.353607000000011,70.519440000000088],[-86.36221299999994,70.522765999999933],[-86.374709999999993,70.525269000000094],[-86.390839000000028,70.522217000000012],[-86.389998999999989,70.519989000000066],[-86.383895999999879,70.513611000000083],[-86.375548999999978,70.508881000000031],[-86.367767000000015,70.504715000000147],[-86.350280999999995,70.49832200000003],[-86.339721999999938,70.491652999999928],[-86.339447000000007,70.486374000000126],[-86.34056099999998,70.483870999999965],[-86.363327000000027,70.474152000000004],[-86.37388599999997,70.470261000000107],[-86.407501000000025,70.459991000000002],[-86.51568599999996,70.433640000000025],[-86.565001999999936,70.425537000000134],[-86.578338999999971,70.422211000000118],[-86.589721999999995,70.417479999999955],[-86.62777699999998,70.395538000000101],[-86.651397999999972,70.374695000000031],[-86.662216000000001,70.361099000000081],[-86.65943900000002,70.357208000000014],[-86.638335999999924,70.324432000000058],[-86.647232000000031,70.319443000000092],[-86.655563000000029,70.318878000000041],[-86.839721999999995,70.320267000000058],[-86.861938000000009,70.322220000000016],[-86.876099000000011,70.326096000000064],[-86.881103999999937,70.329711999999972],[-86.990554999999915,70.431655999999975],[-86.988892000000021,70.435532000000023],[-86.982497999999964,70.438873000000058],[-86.953613000000018,70.442474000000118],[-86.936935000000005,70.443313999999987],[-86.92471299999994,70.446091000000081],[-86.922775000000001,70.447754000000032],[-86.921386999999925,70.451660000000061],[-86.92193599999996,70.455550999999957],[-86.928329000000019,70.460541000000035],[-86.937209999999936,70.463608000000136],[-86.953338999999971,70.467209000000025],[-86.967772999999909,70.468048000000124],[-86.996384000000035,70.467484000000013],[-87.034164000000033,70.464157000000057],[-87.072509999999966,70.457489000000123],[-87.08944699999995,70.453323000000012],[-87.132767000000001,70.439148000000102],[-87.140563999999983,70.434981999999991],[-87.182220000000029,70.399428999999998],[-87.184998000000007,70.388596000000007],[-87.05749499999996,70.381653000000028],[-87.043883999999991,70.379974000000004],[-87.031676999999945,70.377472000000125],[-87.010558999999944,70.37164300000012],[-86.991378999999995,70.364150999999993],[-86.981109999999944,70.35803199999998],[-86.972777999999948,70.351929000000041],[-86.976395000000025,70.284714000000065],[-86.985824999999977,70.281662000000097],[-86.999434999999949,70.280548000000124],[-87.009170999999924,70.281097000000102],[-87.107498000000021,70.28804000000008],[-87.184433000000013,70.295532000000037],[-87.255004999999983,70.30664100000007],[-87.5625,70.322768999999937],[-87.673614999999984,70.319153000000085],[-87.669998000000021,70.298598999999967],[-87.643889999999999,70.295822000000044],[-87.628601000000003,70.29304500000012],[-87.61721799999998,70.289429000000098],[-87.610275000000001,70.284714000000065],[-87.613327000000027,70.281936999999971],[-87.62388599999997,70.278046000000074],[-87.704177999999956,70.257217000000082],[-87.77694699999995,70.24331699999999],[-87.796951000000035,70.240265000000079],[-87.833892999999989,70.238037000000134],[-87.8663939999999,70.238876000000062],[-87.914444000000003,70.24136400000009],[-87.923049999999989,70.242751999999996],[-87.935546999999985,70.24693300000007],[-88.012825000000021,70.277267000000109],[-88.088165000000004,70.285095000000126],[-88.138610999999912,70.296097000000032],[-88.250564999999938,70.321381000000031],[-88.263061999999934,70.325272000000098],[-88.264724999999942,70.328049000000021],[-88.256957999999997,70.333878000000027],[-88.214171999999962,70.351379000000009],[-88.20666499999993,70.352478000000133],[-88.061774999999955,70.329544000000055],[-88.05494699999997,70.327369999999974],[-88.050109999999904,70.325042999999994],[-88.038283999999919,70.315536000000122],[-88.030784999999923,70.314033999999992],[-88.02427699999987,70.313202000000103],[-87.994445999999982,70.31203499999998],[-87.916397000000018,70.301926000000037],[-87.901671999999905,70.304428000000144],[-87.888610999999969,70.308029000000033],[-87.879989999999964,70.311371000000122],[-87.882492000000013,70.316375999999991],[-87.889998999999989,70.321930000000009],[-87.914718999999991,70.331665000000044],[-88.083618000000001,70.378036000000066],[-88.111938000000009,70.384155000000078],[-88.166945999999996,70.394440000000031],[-88.374434999999949,70.432205000000124],[-88.439986999999917,70.438583000000051],[-88.579177999999956,70.450271999999984],[-88.670272999999952,70.453598000000056],[-88.679442999999992,70.453598000000056],[-88.693053999999961,70.455261000000121],[-88.797775000000001,70.489700000000028],[-88.897506999999962,70.53276100000005],[-88.914443999999889,70.546096999999975],[-88.985824999999863,70.608322000000101],[-89.00389100000001,70.624984999999981],[-89.009170999999981,70.636383000000023],[-88.999999999999943,70.645538000000045],[-88.999725000000012,70.651657000000057],[-89.005279999999914,70.656936999999971],[-89.076674999999966,70.696930000000009],[-89.105834999999956,70.707489000000066],[-89.118880999999988,70.711380000000133],[-89.143889999999942,70.717209000000139],[-89.203888000000006,70.737198000000035],[-89.261123999999995,70.759720000000129],[-89.285278000000005,70.769714000000135],[-89.330565999999919,70.791931000000034],[-89.369719999999973,70.814697000000081],[-89.374161000000015,70.819153000000142],[-89.448333999999988,70.902481000000023],[-89.447219999999902,70.906647000000078],[-89.443603999999937,70.910262999999929],[-89.432495000000017,70.915268000000026],[-89.416397000000018,70.918594000000041],[-89.371658000000025,70.925812000000064],[-89.298614999999927,70.933043999999995],[-89.222777999999948,70.935531999999967],[-89.20944199999991,70.939147999999989],[-89.205840999999964,70.942749000000049],[-89.188599000000011,70.960815000000025],[-89.195267000000001,70.968323000000055],[-89.205565999999919,70.973602000000028],[-89.270279000000016,70.983597000000145],[-89.315276999999924,70.991653000000042],[-89.340560999999923,70.997482000000048],[-89.354720999999927,71.001937999999939],[-89.49499499999996,71.0577550000001],[-89.549727999999959,71.088593000000117],[-89.491378999999938,71.092209000000139],[-89.469726999999978,71.091933999999924],[-89.228333000000021,71.072768999999994],[-89.216948999999943,71.06999200000007],[-89.208617999999944,71.063034000000073],[-89.215285999999935,71.056641000000127],[-89.218063000000029,71.050812000000121],[-89.212509000000011,71.045532000000037],[-89.203063999999983,71.03804000000008],[-89.196655000000021,71.035263000000043],[-89.178604000000007,71.031372000000147],[-89.134444999999971,71.026932000000102],[-89.117767000000015,71.026657000000114],[-89.100829999999917,71.027771000000087],[-89.076110999999969,71.030272999999966],[-89.039443999999946,71.035263000000043],[-88.979996000000028,71.041092000000049],[-88.904723999999987,71.045258000000103],[-88.689163000000008,71.046936000000017],[-88.617767000000015,71.044434000000138],[-88.490279999999984,71.031097000000102],[-88.478881999999942,71.029709000000025],[-88.43249499999996,71.021927000000062],[-88.380279999999971,71.011931999999945],[-88.369155999999975,71.007492000000127],[-88.365829000000019,71.001937999999939],[-88.36332699999997,70.99552900000009],[-88.362503000000004,70.990265000000136],[-88.362777999999992,70.984146000000067],[-88.360274999999945,70.977767999999969],[-88.356948999999986,70.972214000000122],[-88.343612999999948,70.961380000000077],[-88.332503999999972,70.957213999999965],[-88.318618999999899,70.95387299999993],[-88.289718999999934,70.950272000000098],[-88.260833999999988,70.947754000000089],[-88.025283999999942,70.930542000000059],[-87.999999999999886,70.929153000000099],[-87.968886999999881,70.928588999999931],[-87.930557000000022,70.929428000000087],[-87.912780999999995,70.931366000000025],[-87.857772999999895,70.941360000000032],[-87.798049999999932,70.949707000000046],[-87.752791999999999,70.953598000000113],[-87.699996999999996,70.955551000000071],[-87.664443999999946,70.954712000000086],[-87.62748699999986,70.95138500000013],[-87.610549999999932,70.949417000000039],[-87.559433000000013,70.947479000000101],[-87.43582200000003,70.944976999999994],[-87.371216000000004,70.944725000000119],[-87.353607000000011,70.945250999999928],[-87.345551,70.949417000000039],[-87.343063000000029,70.954162999999937],[-87.343613000000005,70.959427000000119],[-87.337783999999886,70.969986000000006],[-87.329177999999956,70.980545000000006],[-87.30860899999999,70.99552900000009],[-87.298889000000031,71],[-87.286117999999988,71.004166000000112],[-87.267226999999878,71.006942999999978],[-87.246947999999918,71.009155000000078],[-87.212508999999955,71.007492000000127],[-87.151397999999858,71],[-87.141388000000006,70.997757000000036],[-87.11610399999995,70.994705000000124],[-87.051392000000021,70.987761999999975],[-87.033614999999998,70.986649000000057],[-87.017501999999922,70.986649000000057],[-87.004180999999903,70.990265000000136],[-87.003066999999987,70.991089000000102],[-87.002791999999999,70.994141000000013],[-87.009734999999978,70.996093999999971],[-87.039444000000003,71.000823999999966],[-87.135009999999966,71.011383000000023],[-87.166397000000018,71.014435000000105],[-87.184433000000013,71.01527400000009],[-87.279175000000009,71.026932000000102],[-87.385833999999988,71.041930999999977],[-87.394729999999981,71.043594000000098],[-87.404723999999931,71.047211000000061],[-87.410827999999981,71.053314],[-87.472777999999948,71.074157999999954],[-87.572783999999956,71.09526100000005],[-87.701400999999976,71.123306000000071],[-87.712783999999999,71.126082999999994],[-87.760283999999956,71.143051000000071],[-87.848891999999864,71.184982000000048],[-87.851943999999946,71.191925000000026],[-87.852492999999981,71.19720500000011],[-87.848343,71.202209000000039],[-87.825286999999946,71.217209000000025],[-87.823059000000001,71.223601999999971],[-87.816665999999941,71.254714999999976],[-87.821945000000028,71.258331000000055],[-87.829452999999944,71.261932000000115],[-87.844161999999926,71.264160000000061],[-87.900283999999999,71.268600000000049],[-87.911666999999909,71.266936999999984],[-87.971938999999963,71.250274999999988],[-88.019729999999981,71.236098999999967],[-88.034163999999976,71.231658999999979],[-88.041945999999939,71.228867000000037],[-88.131103999999993,71.219147000000135],[-88.321670999999981,71.228592000000049],[-88.583618000000001,71.234984999999995],[-88.70666499999993,71.247756999999979],[-88.849990999999989,71.259720000000016],[-89.058043999999995,71.276382000000012],[-89.20666499999993,71.283325000000048],[-89.299163999999962,71.287491000000102],[-89.42860399999995,71.294434000000081],[-89.703888000000006,71.31581100000011],[-89.816665999999998,71.324997000000053],[-89.830001999999979,71.328872999999987],[-89.89973399999991,71.351379000000122],[-89.907227000000034,71.354706000000078],[-89.964721999999995,71.411377000000016],[-89.968613000000005,71.416931000000034],[-89.983063000000016,71.446930000000009],[-90.010558999999887,71.57777400000009],[-90.013061999999934,71.600266000000033],[-90.004729999999938,71.630813999999987],[-90.00306699999993,71.635817999999972],[-89.99722300000002,71.641373000000044],[-89.964721999999995,71.655822999999941],[-89.932769999999948,71.667755000000113],[-89.896117999999944,71.679977000000065],[-89.884734999999921,71.684708000000001],[-89.817504999999983,71.724701000000039],[-89.808334000000002,71.747757000000092],[-89.821395999999936,71.760269000000051],[-89.831389999999942,71.760269000000051],[-89.836120999999991,71.761658000000068],[-89.843062999999972,71.764434999999992],[-89.893615999999952,71.789428999999927],[-89.954453000000001,71.820541000000048],[-89.960281000000009,71.824158000000011],[-90.026672000000019,71.892761000000064],[-90.048614999999984,71.953873000000101],[-90.001113999999916,72.063034000000073],[-89.993057000000022,72.070540999999992],[-89.962783999999999,72.07748399999997],[-89.812209999999993,72.111923000000047],[-89.750838999999928,72.12303199999991],[-89.738891999999964,72.124985000000038],[-89.725829999999974,72.124695000000031],[-89.718886999999995,72.121917999999937],[-89.715835999999967,72.118591000000038],[-89.704726999999991,72.113312000000008],[-89.691665999999941,72.109985000000108],[-89.682494999999903,72.110535000000141],[-89.664718999999934,72.113312000000008],[-89.597503999999958,72.148331000000098],[-89.579726999999991,72.158874999999966],[-89.574721999999952,72.163605000000018],[-89.576674999999966,72.169144000000017],[-89.584732000000031,72.175811999999951],[-89.598891999999978,72.178040000000124],[-89.618057000000022,72.17886400000009],[-89.676665999999955,72.17692599999998],[-89.705841000000021,72.174697999999978],[-89.724716000000001,72.172485000000052],[-89.738891999999964,72.168593999999985],[-89.759445000000028,72.159988000000055],[-89.770553999999947,72.157485999999949],[-89.780563000000029,72.157485999999949],[-89.802489999999921,72.161925999999994],[-89.892226999999991,72.186919999999986],[-89.897232000000031,72.188583000000051],[-89.901397999999915,72.194137999999953],[-89.939437999999939,72.261932000000058],[-89.954177999999956,72.304977000000065],[-89.957503999999915,72.316086000000098],[-89.95666499999993,72.321655000000135],[-89.913329999999974,72.422211000000061],[-89.907500999999968,72.432205000000067],[-89.89056399999987,72.444977000000051],[-89.87249799999995,72.449142000000052],[-89.860275000000001,72.451096000000121],[-89.813613999999973,72.456650000000081],[-89.799438000000009,72.46026599999999],[-89.793609999999887,72.462768999999923],[-89.777221999999995,72.493866000000025],[-89.775283999999886,72.498596000000077],[-89.772506999999962,72.51998900000001],[-89.772781000000009,72.526093000000003],[-89.786666999999966,72.559982000000048],[-89.753890999999953,72.60554499999995],[-89.736937999999952,72.616652999999985],[-89.699996999999939,72.625259000000085],[-89.678329000000019,72.629424999999969],[-89.65695199999999,72.630264000000125],[-89.643616000000009,72.62692300000009],[-89.614715999999987,72.616089000000045],[-89.597503999999958,72.614700000000028],[-89.572784000000013,72.616928000000144],[-89.560546999999929,72.621918000000051],[-89.470550999999944,72.666091999999992],[-89.473617999999874,72.672485000000108],[-89.511947999999961,72.688873000000001],[-89.525283999999999,72.693863000000022],[-89.549164000000019,72.691085999999927],[-89.567504999999926,72.693039000000056],[-89.574721999999952,72.698868000000061],[-89.580001999999922,72.711105000000032],[-89.581389999999999,72.71775800000006],[-89.574721999999952,72.785263000000043],[-89.569457999999941,72.786925999999937],[-89.479445999999996,72.779709000000025],[-89.446380999999917,72.775542999999971],[-89.36471599999993,72.762206999999989],[-89.330565999999919,72.755829000000006],[-89.294158999999922,72.797211000000061],[-89.333327999999995,72.950546000000145],[-89.358337000000006,72.965271000000087],[-89.361388999999974,72.991652999999985],[-89.308883999999978,73.048324999999977],[-89.228333000000021,73.125809000000004],[-89.043335000000013,73.252486999999974],[-89.035827999999981,73.257492000000013],[-89.00028999999995,73.278320000000122],[-88.990554999999972,73.283599999999979],[-88.856948999999986,73.336105000000032],[-88.695830999999941,73.411926000000108],[-88.68360899999999,73.417480000000069],[-88.468062999999972,73.491928000000087],[-88.433318999999926,73.514159999999947],[-88.409164000000033,73.523605000000032],[-88.286391999999978,73.566939999999988],[-88.263061999999934,73.573883000000023],[-88.074721999999895,73.627762000000018],[-87.974441999999954,73.654709000000139],[-87.92332499999992,73.667755000000056],[-87.817229999999995,73.694427000000132],[-87.780288999999982,73.703048999999965],[-87.739990000000034,73.711380000000077],[-87.539444000000003,73.746643000000063],[-87.456664999999987,73.760269000000051],[-87.183608999999933,73.792755000000113],[-87.049438000000009,73.80831900000004],[-86.71665999999999,73.840820000000122],[-86.596663999999976,73.84526100000005],[-86.493057000000022,73.844437000000084],[-86.401397999999915,73.845824999999991],[-86.239440999999999,73.849152000000117],[-86.208618000000001,73.849991000000102],[-86.109160999999972,73.849991000000102],[-85.747771999999998,73.836380000000133],[-85.706664999999987,73.832214000000022],[-85.553054999999972,73.820830999999998],[-85.520003999999972,73.81999200000007],[-85.462508999999955,73.820830999999998],[-85.421936000000017,73.824158000000125],[-85.307770000000005,73.821106000000043],[-85.16332999999986,73.813309000000061],[-85.121108999999933,73.809981999999991],[-85.104995999999971,73.808029000000033],[-85.069457999999884,73.801926000000094],[-85.034728999999913,73.794708000000071],[-84.970001000000025,73.777771000000087],[-84.837783999999999,73.741652999999985],[-84.842772999999966,73.735809000000017],[-84.865554999999915,73.713318000000015],[-84.922501000000011,73.680267000000072],[-84.931380999999988,73.67553700000002],[-84.956116000000009,73.665267999999969],[-84.985000999999954,73.655823000000112],[-85.340835999999854,73.556366000000139],[-85.596389999999985,73.486649000000114],[-85.766402999999855,73.425262000000032],[-85.851104999999961,73.391098],[-85.930282999999974,73.355255],[-86.046660999999858,73.287201000000039],[-86.137787000000003,73.228867000000037],[-86.292220999999984,73.103317000000118],[-86.296386999999982,73.097488000000055],[-86.294448999999929,73.091095000000109],[-86.288895000000025,73.087204000000042],[-86.28443900000002,73.08248900000001],[-86.284163999999976,73.077208999999982],[-86.287216000000001,73.072495000000004],[-86.328339000000028,73.036651999999947],[-86.454452999999887,72.963607999999965],[-86.474716000000001,72.953323000000069],[-86.495269999999891,72.943314000000044],[-86.50556899999998,72.938309000000004],[-86.571120999999948,72.908875000000023],[-86.627212999999927,72.883605999999986],[-86.647506999999962,72.873306000000071],[-86.653610000000015,72.868866000000082],[-86.658339999999953,72.863602000000071],[-86.695540999999992,72.819153000000142],[-86.696654999999964,72.816666000000055],[-86.732773000000009,72.716095000000109],[-86.703339000000028,72.659148999999957],[-86.698333999999988,72.652205999999978],[-86.686935000000005,72.644714000000022],[-86.662216000000001,72.631653000000085],[-86.638335999999924,72.620529000000033],[-86.611389000000031,72.60914600000001],[-86.504181000000017,72.56860400000005],[-86.479720999999984,72.56053200000008],[-86.466110000000015,72.556365999999969],[-86.451401000000033,72.553040000000124],[-86.414443999999946,72.541656000000046],[-86.397232000000031,72.534988000000055],[-86.353057999999976,72.511658000000068],[-86.33805799999999,72.503051999999968],[-86.283066000000019,72.468323000000112],[-86.275832999999977,72.463318000000072],[-86.267776000000026,72.456375000000094],[-86.255004999999926,72.443588000000091],[-86.240829000000019,72.420258000000103],[-86.240829000000019,72.406647000000135],[-86.24610899999999,72.394989000000123],[-86.258057000000008,72.384430000000066],[-86.275283999999942,72.373871000000008],[-86.308043999999995,72.359146000000067],[-86.350829999999917,72.339156999999943],[-86.377776999999924,72.323608000000036],[-86.396117999999944,72.30914300000012],[-86.428054999999915,72.281937000000084],[-86.43582200000003,72.270264000000054],[-86.455276000000026,72.207214000000079],[-86.434432999999956,72.049987999999928],[-86.432495000000017,72.043319999999994],[-86.425827000000027,72.024993999999992],[-86.420546999999999,72.012771999999984],[-86.336670000000026,71.951934999999992],[-86.166107000000011,71.824996999999996],[-86.132766999999944,71.795822000000101],[-86.110549999999989,71.783051],[-86.078613000000018,71.775542999999971],[-86.051666000000012,71.771652000000074],[-86.024444999999957,71.765823000000069],[-85.947219999999959,71.726928999999984],[-85.905563000000029,71.699707000000046],[-85.871933000000013,71.676926000000037],[-85.500838999999985,71.511108000000092],[-85.391952999999944,71.481659000000093],[-85.374161000000015,71.47886699999998],[-85.228606999999954,71.465546000000074],[-84.948607999999979,71.421646000000067],[-84.93472300000002,71.418319999999994],[-84.929992999999968,71.414429000000098],[-84.859160999999972,71.321105999999986],[-84.838057999999933,71.29193099999992],[-84.834166999999979,71.285262999999986],[-84.83277899999996,71.278869999999984],[-84.833892999999932,71.274154999999951],[-84.835555999999997,71.271652000000017],[-84.848343,71.269440000000145],[-84.868606999999997,71.268875000000094],[-84.921660999999972,71.270828000000051],[-85.041945999999996,71.278594999999996],[-85.172500999999897,71.272490999999945],[-85.173888999999974,71.269989000000066],[-85.178329000000019,71.266388000000006],[-85.389998999999932,71.196640000000059],[-85.399993999999936,71.193862999999965],[-85.50028999999995,71.177200000000084],[-85.514724999999999,71.176086000000112],[-85.532501000000025,71.177200000000084],[-85.663054999999986,71.194427000000132],[-85.761397999999986,71.192200000000071],[-85.838333000000034,71.187485000000038],[-85.932769999999948,71.17886400000009],[-85.966659999999933,71.171097000000145],[-86.170836999999949,71.106934000000081],[-86.210830999999985,71.09387200000009],[-86.21444699999995,71.089705999999978],[-86.206954999999994,71.083878000000084],[-86.206115999999952,71.078049000000021],[-86.212783999999999,71.072768999999994],[-86.24888599999997,71.058594000000085],[-86.288605000000018,71.052200000000028],[-86.408051,71.035263000000043],[-86.450835999999924,71.031372000000147],[-86.517775999999969,71.031661999999983],[-86.643889999999999,71.019439999999975],[-86.749999999999943,71.007766999999944],[-86.770278999999903,71.004166000000112],[-86.785552999999993,71.000275000000045],[-86.798614999999984,70.996368000000075],[-86.819167999999877,70.98942599999998],[-86.820007000000032,70.988586000000112],[-86.806655999999975,70.983871000000079],[-86.75778200000002,70.97665399999994],[-86.713057999999933,70.974152000000061],[-86.601943999999946,70.97164900000007],[-86.547500999999954,70.978867000000093],[-86.430283000000031,70.988876000000118],[-86.292220999999984,71.000275000000045],[-86.270279000000016,71.002777000000094],[-86.224166999999852,71.014435000000105],[-86.026947000000007,71.071381000000088],[-85.832503999999915,71.127197000000137],[-85.802215999999987,71.135818000000029],[-85.779174999999952,71.139160000000004],[-85.670273000000009,71.148880000000077],[-85.650283999999999,71.149428999999998],[-85.505004999999983,71.158034999999927],[-85.411666999999966,71.17442299999999],[-85.391678000000013,71.174988000000042],[-85.288605000000018,71.159149000000127],[-85.274169999999913,71.15525800000006],[-85.110549999999989,71.161652000000061],[-85.042220999999927,71.181656000000032],[-85.037216000000001,71.183044000000109],[-84.99888599999997,71.187485000000038],[-84.961670000000026,71.188583000000108],[-84.944152999999972,71.187195000000031],[-84.875274999999988,71.172760000000096],[-84.849990999999989,71.154709000000082],[-84.84584000000001,71.147766000000104],[-84.87110899999999,71.073607999999922],[-84.875823999999852,71.06999200000007],[-84.879714999999919,71.069442999999922],[-84.904175000000009,71.078049000000021],[-84.935821999999973,71.092483999999956],[-84.950561999999934,71.09693900000002],[-84.966110000000015,71.10026600000009],[-84.9808349999999,71.101089000000002],[-85.00111400000003,71.100815000000068],[-85.142226999999934,71.086380000000133],[-85.146956999999986,71.082764000000054],[-85.112777999999935,71.079163000000051],[-85.061385999999914,71.076385000000016],[-84.99221799999998,71.077484000000027],[-84.976668999999902,71.075821000000076],[-84.960281000000009,71.072220000000016],[-84.92971799999998,71.004440000000045],[-84.926940999999943,70.988037000000134],[-84.930282999999974,70.981659000000036],[-84.941375999999991,70.970535000000098],[-84.950835999999981,70.965546000000131],[-84.963333000000034,70.955826000000059],[-84.975280999999995,70.945250999999928],[-84.976105000000018,70.933318999999983],[-84.970839999999953,70.927474999999959],[-84.964721999999938,70.922485000000108],[-84.958618000000001,70.919434000000081],[-84.941100999999946,70.918045000000063],[-84.814162999999951,70.919434000000081],[-84.798888999999974,70.921646000000123],[-84.793610000000001,70.926650999999993],[-84.748336999999992,70.975539999999967],[-84.748046999999985,70.988037000000134],[-84.771118000000001,71.037490999999989],[-84.803604000000007,71.047211000000061],[-84.819167999999991,71.057480000000112],[-84.827788999999996,71.068328999999949],[-84.829726999999878,71.073317999999915],[-84.828888000000006,71.079987000000017],[-84.826675000000023,71.085541000000148],[-84.801392000000021,71.148605000000032],[-84.766662999999994,71.197479000000044],[-84.770843999999954,71.254990000000021],[-84.781386999999938,71.261932000000115],[-84.786666999999909,71.267761000000121],[-84.793059999999969,71.278046000000018],[-84.796660999999915,71.297485000000108],[-84.797226000000023,71.303314000000114],[-84.762511999999901,71.406646999999964],[-84.749434999999949,71.416655999999989],[-84.731948999999929,71.424698000000149],[-84.720551,71.428314],[-84.693053999999961,71.434143000000006],[-84.678329000000019,71.435257000000036],[-84.660004000000015,71.431655999999975],[-84.653060999999923,71.431931000000134],[-84.571670999999924,71.440810999999997],[-84.557495000000017,71.444138000000123],[-84.547774999999945,71.447478999999987],[-84.539169000000015,71.451660000000061],[-84.531951999999933,71.456940000000145],[-84.526108000000022,71.46887200000009],[-84.526397999999915,71.478316999999947],[-84.530563000000029,71.492477000000065],[-84.533614999999941,71.502486999999974],[-84.546660999999972,71.527480999999966],[-84.554717999999923,71.541092000000106],[-84.561385999999914,71.549988000000042],[-84.564437999999939,71.552475000000129],[-84.610275000000001,71.562759000000142],[-84.636397999999929,71.570541000000105],[-84.648620999999991,71.57638500000013],[-84.65834000000001,71.583878000000141],[-84.654998999999975,71.608871000000022],[-84.653060999999923,71.612762000000089],[-84.642501999999979,71.622757000000036],[-84.625548999999978,71.633041000000048],[-84.610549999999989,71.641663000000051],[-84.604445999999996,71.646103000000039],[-84.606658999999922,71.649429000000112],[-84.625,71.665817000000004],[-84.628052000000025,71.668319999999937],[-84.635559000000001,71.670258000000103],[-84.649733999999967,71.672211000000004],[-84.710830999999928,71.676085999999998],[-84.77305599999994,71.678588999999988],[-84.782776000000013,71.678863999999976],[-84.827498999999989,71.675262000000032],[-84.867217999999923,71.66804500000012],[-84.886200000000031,71.654251000000102],[-84.926666000000012,71.636107999999979],[-84.975280999999995,71.644440000000145],[-85.097503999999958,71.655258000000117],[-85.176940999999999,71.656647000000135],[-85.196655000000021,71.655822999999941],[-85.230835000000013,71.659987999999942],[-85.263900999999976,71.665543000000071],[-85.279723999999987,71.668594000000041],[-85.291381999999999,71.672211000000004],[-85.570846999999958,71.77998400000007],[-85.579726999999991,71.784988000000055],[-85.573623999999938,71.790817000000061],[-85.557770000000005,71.79525799999999],[-85.543883999999935,71.795532000000094],[-85.458892999999989,71.79414399999996],[-85.449721999999952,71.796097000000088],[-85.436934999999949,71.800812000000121],[-85.432769999999948,71.806366000000139],[-85.431945999999982,71.814697000000024],[-85.434432999999899,71.818053999999961],[-85.551666000000012,71.896378000000027],[-85.559722999999963,71.900543000000027],[-85.744995000000017,71.941360000000032],[-85.845839999999896,71.962494000000049],[-85.900832999999977,71.969147000000021],[-85.939986999999974,71.973038000000088],[-85.963333000000034,71.974425999999994],[-86.002501999999993,71.978043000000127],[-86.022781000000009,71.980545000000006],[-86.026672000000019,71.981658999999979],[-86.039169000000015,71.988876000000118],[-86.043610000000001,71.99552900000009],[-86.050827000000027,72.011107999999979],[-86.047501000000011,72.013885000000073],[-85.981110000000001,72.028594999999996],[-85.778885000000002,72.026932000000102],[-85.538329999999974,72.059143000000006],[-85.509444999999914,72.068054000000132],[-85.495270000000005,72.078872999999987],[-85.440552000000025,72.132751000000098],[-85.449158000000011,72.158325000000104],[-85.481948999999929,72.173309000000017],[-85.50167799999997,72.184143000000063],[-85.502501999999993,72.251663000000065],[-85.49749799999995,72.255264000000125],[-85.48721299999994,72.260268999999994],[-85.291945999999882,72.25999500000006],[-85.271941999999967,72.259720000000016],[-85.029175000000009,72.25082400000008],[-85.013335999999981,72.250000000000114],[-84.936385999999914,72.235809000000131],[-84.919997999999964,72.232758000000103],[-84.867766999999958,72.220825000000048],[-84.861388999999917,72.217758000000117],[-84.847504000000015,72.205550999999957],[-84.839172000000019,72.194137999999953],[-84.815276999999924,72.181366000000139],[-84.803328999999906,72.177765000000079],[-84.710555999999997,72.151656999999943],[-84.612212999999997,72.141098000000113],[-84.595839999999953,72.137772000000041],[-84.512222000000008,72.114150999999993],[-84.286391999999978,72.028594999999996],[-84.275557999999933,72.023879999999963],[-84.269454999999994,72.020828000000051],[-84.261123999999995,72.016098000000056],[-84.258056999999894,72.011932000000115],[-84.25,71.998322000000087],[-84.239989999999921,71.973877000000016],[-84.236389000000031,71.961655000000064],[-84.230559999999855,71.95138500000013],[-84.225006000000008,71.945525999999916],[-84.218886999999995,71.940262000000132],[-84.208617999999888,71.93414300000012],[-84.194442999999978,71.930817000000047],[-84.184722999999963,71.930542000000059],[-84.178329000000019,71.932755000000043],[-84.172774999999945,71.937759000000142],[-84.168883999999878,71.944138000000009],[-84.158614999999998,71.977203000000088],[-84.164718999999877,72.021103000000096],[-84.171111999999994,72.024155000000007],[-84.218063000000029,72.044144000000131],[-84.270003999999915,72.051085999999998],[-84.285827999999981,72.054152999999928],[-84.319732999999871,72.0619200000001],[-84.346663999999976,72.069717000000026],[-84.357772999999952,72.076385000000016],[-84.379990000000021,72.108321999999987],[-84.380553999999961,72.123596000000077],[-84.456116000000009,72.133605999999986],[-84.473327999999981,72.135818000000029],[-84.613326999999913,72.163605000000018],[-84.652221999999938,72.17886400000009],[-84.72193900000002,72.213043000000084],[-84.933318999999926,72.284424000000001],[-84.935271999999941,72.289429000000041],[-84.917495999999971,72.299713000000054],[-84.829452999999944,72.348328000000095],[-84.816101000000003,72.352767999999912],[-84.801392000000021,72.354706000000078],[-84.769729999999981,72.356368999999972],[-84.715012000000002,72.355820000000051],[-84.661941999999954,72.354156000000046],[-84.565001999999993,72.348877000000073],[-84.521117999999944,72.350540000000137],[-84.500838999999928,72.353867000000093],[-84.48443599999996,72.358032000000094],[-84.436110999999926,72.374984999999981],[-84.433060000000012,72.378311000000053],[-84.442215000000033,72.383041000000048],[-84.453339000000028,72.382477000000108],[-84.471389999999928,72.379425000000026],[-84.571670999999924,72.361374000000012],[-84.864166000000012,72.36692800000003],[-84.872771999999998,72.36943100000002],[-84.876098999999954,72.372208000000114],[-84.875548999999921,72.394989000000123],[-84.870834000000002,72.400818000000129],[-84.857772999999952,72.405547999999953],[-84.836670000000026,72.408035000000041],[-84.817504999999983,72.406647000000135],[-84.800277999999992,72.406647000000135],[-84.786666999999909,72.40887500000008],[-84.768341000000021,72.444427000000019],[-84.767226999999934,72.447478999999987],[-84.768341000000021,72.451935000000049],[-84.771118000000001,72.457489000000066],[-84.776947000000007,72.458327999999995],[-84.791945999999996,72.45498699999996],[-84.918609999999944,72.425262000000089],[-85.008347000000015,72.399429000000112],[-85.021666999999979,72.394714000000079],[-85.144729999999925,72.359421000000111],[-85.339019999999948,72.406418000000031],[-85.370270000000005,72.414703000000031],[-85.515288999999996,72.458878000000027],[-85.535277999999948,72.469711000000018],[-85.610001000000011,72.53166200000004],[-85.618057000000022,72.540817000000061],[-85.61721799999998,72.545532000000094],[-85.613892000000021,72.550261999999975],[-85.598617999999931,72.555251999999996],[-85.508347000000015,72.561371000000008],[-85.486114999999927,72.564987000000087],[-85.478057999999976,72.568329000000006],[-85.473052999999993,72.571930000000066],[-85.475554999999986,72.575272000000041],[-85.481110000000001,72.577484000000084],[-85.499999999999943,72.58027600000014],[-85.559998000000007,72.582489000000123],[-85.623885999999914,72.586928999999941],[-85.641953000000001,72.592757999999947],[-85.654174999999952,72.598038000000031],[-85.664718999999934,72.60554499999995],[-85.703063999999927,72.634155000000021],[-85.705276000000026,72.637771999999984],[-85.70777899999996,72.646378000000084],[-85.70944199999991,72.73692299999999],[-85.688048999999978,72.893599999999992],[-85.68472300000002,72.898330999999928],[-85.679442999999992,72.903595000000109],[-85.592223999999987,72.959152000000074],[-85.581680000000006,72.964157000000114],[-85.570557000000008,72.966934000000037],[-85.549164000000019,72.969711000000132],[-85.499725000000012,72.974152000000004],[-85.481948999999929,72.974152000000004],[-85.378875999999934,72.971100000000092],[-85.283066000000019,72.964431999999931],[-85.257507000000032,72.960814999999968],[-85.127486999999974,72.940262000000132],[-85.077498999999932,72.929977000000008],[-85.015015000000005,72.916092000000106],[-84.96665999999999,72.904984000000127],[-84.93249499999996,72.896378000000027],[-84.874434999999949,72.885543999999925],[-84.819457999999997,72.880264000000068],[-84.707503999999972,72.869980000000055],[-84.668610000000001,72.867477000000065],[-84.61082499999992,72.861649000000114],[-84.504455999999948,72.846100000000035],[-84.437209999999993,72.833603000000039],[-84.404998999999918,72.826096000000121],[-84.389450000000011,72.822220000000016],[-84.320847000000015,72.800812000000121],[-84.291107000000011,72.791655999999989],[-84.257507000000032,72.785263000000043],[-84.188323999999966,72.774428999999941],[-83.991378999999938,72.745819000000097],[-83.97222899999997,72.744141000000013],[-83.958054000000004,72.746643000000063],[-83.955275999999913,72.748322000000087],[-83.953063999999927,72.752487000000087],[-83.956389999999999,72.754990000000078],[-83.989440999999999,72.76887499999998],[-84.040832999999964,72.77748100000008],[-84.073623999999995,72.781661999999983],[-84.108046999999942,72.785263000000043],[-84.218613000000005,72.794983000000116],[-84.246947999999975,72.79971299999994],[-84.291381999999942,72.812484999999981],[-84.311935000000005,72.820267000000115],[-84.335280999999952,72.829987000000017],[-84.419158999999922,72.853316999999947],[-84.528885000000002,72.882477000000051],[-84.577224999999942,72.892212000000086],[-84.652495999999985,72.899429000000055],[-84.706389999999999,72.905823000000055],[-84.74360699999994,72.910812000000021],[-84.760558999999944,72.914153999999996],[-84.791107000000011,72.921371000000079],[-84.855835000000013,72.937485000000038],[-84.870269999999948,72.942200000000071],[-85.059998000000007,72.996643000000006],[-85.223609999999951,73.014984000000027],[-85.513901000000033,73.019149999999911],[-85.535277999999948,73.021927000000005],[-85.537216000000001,73.028320000000008],[-85.47193900000002,73.098037999999917],[-85.447768999999937,73.120254999999986],[-85.44027699999998,73.125533999999959],[-85.429442999999935,73.130539000000056],[-85.415832999999964,73.135269000000051],[-85.406951999999933,73.136383000000023],[-85.395554000000004,73.135544000000095],[-85.379990000000021,73.133605999999929],[-85.37332200000003,73.130814000000044],[-85.369995000000017,73.128311000000053],[-85.363891999999964,73.120818999999926],[-85.35943599999996,73.113876000000118],[-85.358046999999942,73.109711000000118],[-85.333618000000001,73.092484000000127],[-85.300277999999935,73.078049000000021],[-85.256888999999944,73.071487000000104],[-85.248061999999948,73.068649000000107],[-85.240891000000033,73.066818000000126],[-85.188057000000015,73.059814000000074],[-85.175887999999986,73.058655000000101],[-85.166388999999981,73.060654000000113],[-85.171393999999964,73.066315000000088],[-85.152495999999985,73.072769000000108],[-85.186935000000005,73.096939000000134],[-85.226943999999946,73.115814000000057],[-85.229172000000005,73.12303200000008],[-85.227782999999988,73.129150000000038],[-85.223052999999993,73.134720000000129],[-85.213622999999984,73.13888500000013],[-85.191939999999988,73.141663000000108],[-85.148345999999947,73.141663000000108],[-85.089171999999962,73.137496999999996],[-85.053329000000019,73.13220200000012],[-85.003066999999874,73.121918000000107],[-84.988602000000014,73.116928000000087],[-84.921386999999982,73.098327999999924],[-84.904175000000009,73.09526100000005],[-84.829726999999878,73.085541000000148],[-84.772781000000009,73.081100000000049],[-84.556655999999975,73.064423000000033],[-84.212508999999955,73.040268000000026],[-84.077224999999942,73.03387500000008],[-83.92332499999992,73.033600000000035],[-83.867766999999901,73.029709000000139],[-83.84973100000002,73.027481000000023],[-83.832503999999972,73.024155000000007],[-83.761397999999929,73.006378000000097],[-83.718886999999995,72.989151000000106],[-83.634445000000028,72.982483000000116],[-83.633330999999941,72.983322000000101],[-83.634445000000028,72.986374000000012],[-83.648346000000004,72.991364000000033],[-83.692490000000021,73.005554000000132],[-83.776672000000019,73.031097000000045],[-83.879715000000033,73.051926000000037],[-83.913619999999923,73.058318999999983],[-83.93472300000002,73.061096000000077],[-83.955841000000021,73.06164600000011],[-83.974716000000001,73.060806000000071],[-84.039718999999991,73.056366000000082],[-84.05972300000002,73.056366000000082],[-84.095001000000025,73.058318999999983],[-84.197495000000004,73.068604000000107],[-84.236938000000009,73.081100000000049],[-84.248046999999985,73.083327999999995],[-84.275283999999999,73.086929000000055],[-84.433884000000035,73.106093999999985],[-84.531112999999948,73.110260000000096],[-84.547501000000011,73.111374000000069],[-84.584441999999967,73.115814000000057],[-84.736389000000031,73.137206999999989],[-84.789444000000003,73.145828000000108],[-84.865004999999883,73.163604999999961],[-84.912780999999939,73.175537000000134],[-84.942215000000033,73.181655999999975],[-84.985275000000001,73.190536000000009],[-85.020003999999972,73.196930000000066],[-85.058334000000002,73.200546000000088],[-85.100554999999986,73.201385000000073],[-85.138061999999934,73.204436999999984],[-85.170546999999942,73.210815000000139],[-85.17721599999993,73.213882000000069],[-85.184433000000013,73.21887200000009],[-85.188599000000011,73.223602000000142],[-85.188599000000011,73.228867000000037],[-85.138900999999976,73.299988000000042],[-85.134170999999981,73.305542000000059],[-85.115828999999962,73.314423000000147],[-85.077788999999882,73.329437000000041],[-85.017226999999991,73.348328000000095],[-84.979996000000028,73.35664399999996],[-84.808043999999938,73.388321000000133],[-84.78694200000001,73.388046000000088],[-84.756392999999946,73.381088000000091],[-84.741669000000002,73.376083000000051],[-84.72193900000002,73.362198000000149],[-84.712783999999942,73.348602000000028],[-84.694992000000013,73.326934999999992],[-84.685271999999998,73.319991999999957],[-84.654998999999975,73.305542000000059],[-84.424712999999997,73.232483000000059],[-84.408889999999985,73.228591999999992],[-84.392501999999922,73.226089000000002],[-84.377212999999927,73.224152000000004],[-84.355269999999905,73.223037999999974],[-84.33944699999995,73.226089000000002],[-84.347777999999948,73.232483000000059],[-84.413054999999986,73.272217000000012],[-84.451110999999969,73.288588999999945],[-84.460830999999985,73.291931000000091],[-84.48971599999993,73.299713000000054],[-84.563613999999973,73.313873000000115],[-84.576674999999909,73.317764000000011],[-84.586945000000014,73.323044000000095],[-84.597778000000005,73.330826000000059],[-84.653609999999958,73.387206999999933],[-84.656113000000005,73.390549000000078],[-84.652221999999938,73.393326000000002],[-84.642226999999934,73.397217000000069],[-84.625,73.401382000000069],[-84.583892999999989,73.409149000000014],[-84.434157999999968,73.435256999999979],[-84.284438999999963,73.461105000000089],[-84.229172000000005,73.47026100000005],[-84.194442999999978,73.474701000000039],[-84.171386999999925,73.47526600000009],[-84.113892000000021,73.469147000000078],[-83.751923000000033,73.427490000000034],[-83.724715999999944,73.41304000000008],[-83.717772999999966,73.405822999999998],[-83.719726999999978,73.399719000000118],[-83.724715999999944,73.393875000000094],[-83.728058000000033,73.381088000000091],[-83.720550999999944,73.365814000000057],[-83.712218999999948,73.351928999999927],[-83.702498999999875,73.339157000000114],[-83.689437999999939,73.323608000000036],[-83.665833000000021,73.307754999999986],[-83.657500999999968,73.303589000000102],[-83.648055999999997,73.300261999999975],[-83.630828999999949,73.297210999999947],[-83.613891999999964,73.296097000000145],[-83.600554999999929,73.297485000000052],[-83.593062999999972,73.301375999999948],[-83.590835999999911,73.307204999999954],[-83.591109999999958,73.313309000000004],[-83.594161999999983,73.325272000000041],[-83.624999999999943,73.415268000000026],[-83.633330999999941,73.428864000000033],[-83.642501999999979,73.439696999999967],[-83.652495999999985,73.445250999999985],[-83.663895000000025,73.449707000000103],[-83.679717999999923,73.453872999999987],[-83.696945000000028,73.457214000000022],[-83.754456000000005,73.463318000000072],[-83.810546999999929,73.470534999999984],[-83.954726999999934,73.492752000000053],[-83.978606999999954,73.49664300000012],[-83.993606999999997,73.500275000000045],[-84.00418099999996,73.504166000000112],[-84.006957999999941,73.509720000000129],[-83.996947999999975,73.51388500000013],[-83.979172000000005,73.518051000000014],[-83.740828999999962,73.567763999999954],[-83.577498999999989,73.59637500000008],[-83.445267000000001,73.615814],[-83.219161999999869,73.656647000000078],[-83.085280999999952,73.65776100000005],[-83.018340999999907,73.666091999999935],[-82.931106999999997,73.690536000000066],[-82.902221999999938,73.700272000000041],[-82.889998999999989,73.705261000000007],[-82.872771999999884,73.715546000000131],[-82.869720000000029,73.721099999999979],[-82.86332699999997,73.726089000000115],[-82.852782999999931,73.730270000000019],[-82.840835999999967,73.73275799999999],[-82.820846999999958,73.733597000000145],[-82.636123999999938,73.727767999999912],[-82.529998999999918,73.722214000000122],[-82.475006000000008,73.719985999999949],[-82.413894999999968,73.718871999999976],[-82.367492999999911,73.719147000000021],[-82.21945199999999,73.725266000000033],[-81.990828999999962,73.731368999999972],[-81.618057000000022,73.721099999999979],[-81.572509999999966,73.719711000000132],[-81.553878999999938,73.717209000000082],[-81.536666999999852,73.713882000000126],[-81.476105000000018,73.698029000000076],[-81.457229999999981,73.691086000000098],[-81.282500999999968,73.58027600000014],[-81.239715999999873,73.546936000000073],[-81.228881999999999,73.535538000000088],[-81.21945199999999,73.521378000000141],[-81.197494999999947,73.477203000000145],[-81.188323999999909,73.389709000000039],[-81.21166999999997,73.326096000000007],[-81.216109999999958,73.314697000000081],[-81.215835999999967,73.303863999999919],[-81.214172000000019,73.291931000000091],[-81.20944199999991,73.272766000000104],[-81.204726999999991,73.266662999999994],[-81.192490000000021,73.260543999999982],[-81.177490000000034,73.256378000000041],[-81.101668999999958,73.238312000000064],[-81.074448000000018,73.232208000000071],[-80.900283999999942,73.209427000000005],[-80.712783999999942,73.180267000000129],[-80.664718999999934,73.171097000000088],[-80.640839000000028,73.165543000000127],[-80.61721799999998,73.157760999999994],[-80.596389999999985,73.148041000000092],[-80.557769999999948,73.111374000000069],[-80.547501000000011,73.098037999999917],[-80.547774999999945,73.091369999999984],[-80.549437999999952,73.081940000000088],[-80.59333799999996,73.025818000000072],[-80.617492999999968,73.005554000000132],[-80.641388000000006,72.996094000000085],[-80.647507000000019,72.990540000000067],[-80.652221999999938,72.974700999999982],[-80.650833000000034,72.969146999999964],[-80.633895999999936,72.940536000000066],[-80.642501999999979,72.93553200000008],[-80.642775999999969,72.92886400000009],[-80.638335999999981,72.922760000000096],[-80.537216000000001,72.851089000000002],[-80.513901000000033,72.838882000000012],[-80.487777999999992,72.828598],[-80.440552000000025,72.818603999999993],[-80.405563000000029,72.813309000000118],[-80.349166999999966,72.806366000000139],[-80.333327999999938,72.803040000000067],[-80.319457999999941,72.799149],[-80.299987999999985,72.788040000000137],[-80.283614999999998,72.77748100000008],[-80.247498000000007,72.730545000000063],[-80.258056999999894,72.724425999999994],[-80.332229999999925,72.712494000000049],[-80.361664000000019,72.706099999999992],[-80.444991999999957,72.673599000000081],[-80.464721999999938,72.665268000000026],[-80.541381999999999,72.628860000000145],[-80.55610699999994,72.6202550000001],[-80.556380999999874,72.607208000000071],[-80.648620999999991,72.554977000000008],[-80.676391999999964,72.547211000000118],[-80.765288999999996,72.516937000000098],[-80.942489999999964,72.455261000000121],[-80.953887999999949,72.450546000000088],[-80.988327000000027,72.429703000000018],[-81.186935000000005,72.299149000000114],[-81.192490000000021,72.293594000000041],[-81.199722000000008,72.289153999999996],[-81.222504000000015,72.281662000000097],[-81.239166000000012,72.27777100000003],[-81.30471799999998,72.268326000000116],[-81.379439999999988,72.241652999999928],[-81.365279999999984,72.241652999999928],[-81.301392000000021,72.246094000000028],[-81.285827999999924,72.247208000000057],[-81.253066999999987,72.251938000000052],[-81.241942999999992,72.254439999999931],[-81.229720999999927,72.258606000000043],[-81.164169000000015,72.287201000000096],[-81.037506000000008,72.351089000000115],[-80.929442999999935,72.40026899999998],[-80.821670999999981,72.439148000000046],[-80.715012000000002,72.473037999999974],[-80.600554999999986,72.506653000000028],[-80.580291999999929,72.509995000000004],[-80.554442999999992,72.512497000000053],[-80.539443999999946,72.511658000000068],[-80.52555799999999,72.508040999999935],[-80.516402999999912,72.503875999999934],[-80.508895999999993,72.49664300000012],[-80.503066999999987,72.484985000000108],[-80.495270000000005,72.464157000000057],[-80.492767000000015,72.453049000000021],[-80.493606999999997,72.447205000000054],[-80.514174999999966,72.379700000000014],[-80.525009000000011,72.374146000000053],[-80.54222099999987,72.37052900000009],[-80.564437999999939,72.366653000000042],[-80.603058000000033,72.363037000000134],[-80.655562999999972,72.351928999999984],[-80.669158999999979,72.347214000000122],[-80.680556999999965,72.342209000000082],[-80.783324999999991,72.290267999999969],[-80.794158999999922,72.284714000000008],[-80.808333999999945,72.274155000000121],[-80.854172000000005,72.235535000000027],[-80.896956999999929,72.194427000000076],[-80.905563000000029,72.180542000000003],[-80.816665999999998,72.150542999999971],[-80.769454999999994,72.141663000000108],[-80.753890999999953,72.140548999999965],[-80.709732000000031,72.131927000000132],[-80.580840999999964,72.094437000000084],[-80.569457999999997,72.088318000000072],[-80.567229999999995,72.077208999999982],[-80.567229999999995,72.072768999999937],[-80.574172999999917,72.068329000000119],[-80.588333000000034,72.064148000000046],[-80.630554000000018,72.062195000000088],[-80.646118000000001,72.063309000000061],[-80.686661000000015,72.073043999999982],[-80.741942999999935,72.094147000000078],[-80.941100999999946,72.087494000000106],[-81.080291999999929,72.051651000000049],[-81.08666999999997,72.04664600000001],[-81.083327999999938,72.045532000000037],[-81.065001999999936,72.041655999999932],[-81.046660999999972,72.039978000000019],[-80.990554999999972,72.037766000000147],[-80.927215999999987,72.037766000000147],[-80.906386999999995,72.039978000000019],[-80.892226999999991,72.044144000000131],[-80.886397999999986,72.049713000000111],[-80.879439999999988,72.054152999999928],[-80.866652999999985,72.0577550000001],[-80.84722899999997,72.056641000000127],[-80.792770000000019,72.02777100000003],[-80.794158999999922,72.022491000000002],[-80.821395999999879,71.95637499999998],[-80.833327999999995,71.945815999999979],[-80.849441999999954,71.934707999999944],[-80.886123999999938,71.920821999999987],[-80.933318999999926,71.908875000000023],[-80.975005999999951,71.895827999999995],[-80.980834999999956,71.890273999999977],[-80.983611999999994,71.886383000000137],[-80.971664000000033,71.881653000000085],[-80.950287000000003,71.881088000000034],[-80.926392000000021,71.882750999999985],[-80.903610000000015,71.885268999999937],[-80.868056999999965,71.893051000000071],[-80.767226999999991,71.929428000000087],[-80.756119000000012,71.93414300000012],[-80.750290000000007,71.939697000000081],[-80.746947999999975,71.945251000000098],[-80.744720000000029,71.951934999999992],[-80.745834000000002,71.957488999999953],[-80.75556899999998,71.971099999999922],[-80.758346999999958,71.977768000000083],[-80.746947999999975,71.982483000000116],[-80.659164000000033,72.003052000000082],[-80.639449999999954,72.006377999999927],[-80.620543999999995,72.006103999999993],[-80.535277999999948,72.016098000000056],[-80.448883000000023,72.029160000000047],[-80.410552999999993,72.039429000000098],[-80.385009999999966,72.048325000000034],[-80.350554999999929,72.069153000000085],[-80.347777999999948,72.075272000000098],[-80.346663999999976,72.081100000000049],[-80.347228999999913,72.088318000000072],[-80.352492999999981,72.095534999999984],[-80.358611999999994,72.101379000000009],[-80.370269999999948,72.10803199999998],[-80.383056999999951,72.113312000000008],[-80.410278000000005,72.121368000000075],[-80.433884000000035,72.132751000000098],[-80.445540999999992,72.139709000000096],[-80.455275999999969,72.146652000000074],[-80.478607000000011,72.168593999999985],[-80.483321999999987,72.175261999999918],[-80.486938000000009,72.183044000000052],[-80.486664000000019,72.189423000000147],[-80.468062999999972,72.191925000000026],[-80.426940999999886,72.191086000000041],[-80.408614999999884,72.189148000000102],[-80.393616000000009,72.177200000000084],[-80.376663000000008,72.17442299999999],[-80.355559999999912,72.17442299999999],[-80.331389999999999,72.176086000000112],[-80.241103999999893,72.197754000000032],[-80.235274999999945,72.203323000000012],[-80.244445999999925,72.209717000000069],[-80.27305599999994,72.219147000000135],[-80.279723999999931,72.22554000000008],[-80.301665999999955,72.248596000000134],[-80.306380999999988,72.255264000000125],[-80.295546999999942,72.274429000000055],[-80.289718999999934,72.279984000000127],[-80.272231999999974,72.290267999999969],[-80.260833999999988,72.294983000000002],[-80.24221799999998,72.297485000000108],[-80.22444200000001,72.296371000000136],[-80.194153000000028,72.28776600000009],[-80.155838000000017,72.273605000000089],[-80.134734999999921,72.262771999999927],[-80.113051999999982,72.244141000000127],[-80.08555599999994,72.226654000000053],[-80.021392999999989,72.189697000000081],[-79.991668999999888,72.176651000000106],[-79.962783999999999,72.168868999999972],[-79.947220000000016,72.165267999999912],[-79.899733999999967,72.15554800000001],[-79.840285999999935,72.145263999999997],[-79.790557999999976,72.137772000000041],[-79.761123999999995,72.134155000000078],[-79.685546999999929,72.126372999999944],[-79.674437999999952,72.126647999999989],[-79.672501000000011,72.129700000000071],[-79.691665999999998,72.141663000000108],[-79.719161999999926,72.148331000000098],[-79.789992999999981,72.155823000000055],[-79.811110999999983,72.160263000000043],[-79.854995999999971,72.171097000000145],[-79.923889000000031,72.190536000000009],[-79.941101000000003,72.195816000000093],[-80.045546999999999,72.242477000000122],[-80.15194699999995,72.310531999999967],[-80.166396999999961,72.322220000000129],[-80.164443999999946,72.32748400000014],[-80.155562999999916,72.336928999999998],[-80.133620999999948,72.349716000000001],[-80.115279999999927,72.359421000000111],[-80.076400999999976,72.378859999999975],[-80.064712999999983,72.3836060000001],[-80.052215999999987,72.387771999999984],[-79.991942999999992,72.402771000000087],[-79.957229999999925,72.408325000000048],[-79.874434999999949,72.470534999999984],[-79.870834000000002,72.483046999999999],[-79.86332699999997,72.489699999999971],[-79.836944999999901,72.498596000000077],[-79.820847000000015,72.501389000000074],[-79.799164000000019,72.501389000000074],[-79.780562999999972,72.499420000000043],[-79.770844000000011,72.49664300000012],[-79.734160999999915,72.484420999999998],[-79.700561999999991,72.472488000000112],[-79.692215000000033,72.466933999999924],[-79.768638999999894,72.411766],[-79.687865999999985,72.384392000000105],[-79.595550999999944,72.334717000000126],[-79.638901000000033,72.289153999999996],[-79.668059999999912,72.280823000000112],[-79.705565999999976,72.273605000000089],[-79.720000999999968,72.269440000000088],[-79.731673999999998,72.264708999999982],[-79.759734999999921,72.250549000000092],[-79.768616000000009,72.2452550000001],[-79.774718999999891,72.239700000000028],[-79.775283999999999,72.233322000000044],[-79.769729999999925,72.225815000000125],[-79.75,72.215546000000074],[-79.732773000000009,72.212203999999986],[-79.712783999999999,72.211104999999975],[-79.701110999999969,72.215820000000008],[-79.565825999999959,72.275269000000094],[-79.485001000000011,72.325545999999974],[-79.355559999999912,72.399155000000007],[-79.342498999999975,72.40026899999998],[-79.329726999999991,72.397217000000069],[-79.243331999999953,72.374419999999986],[-79.182495000000017,72.358322000000101],[-79.146666999999979,72.345825000000104],[-79.113327000000027,72.331099999999992],[-79.082229999999925,72.313873000000001],[-79.012787000000003,72.273880000000133],[-78.945540999999935,72.199996999999996],[-78.943603999999993,72.193038999999999],[-78.946945000000028,72.186919999999986],[-79.036391999999978,72.069443000000092],[-79.136123999999938,72.007492000000127],[-79.145003999999972,72.002487000000087],[-79.156661999999983,71.997757000000036],[-79.206389999999942,71.986649000000057],[-79.229996000000028,71.980270000000019],[-79.233063000000016,71.976379000000122],[-79.203063999999983,71.961928999999998],[-79.19027699999998,71.958328000000108],[-79.176392000000021,71.955826000000059],[-79.161117999999931,71.954437000000041],[-79.138610999999912,71.955261000000007],[-79.123046999999929,71.958038000000101],[-79.099730999999963,71.967209000000082],[-79.090835999999854,71.972488000000055],[-79.072234999999921,71.974990999999989],[-79.061110999999926,71.975266000000033],[-79.026671999999962,71.970535000000098],[-78.81806899999998,71.935257000000092],[-78.768889999999999,71.92692599999998],[-78.722503999999901,71.918869000000029],[-78.683884000000035,71.909714000000008],[-78.65306099999998,71.893875000000037],[-78.639724999999999,71.884430000000009],[-78.625823999999852,71.879150000000095],[-78.585555999999997,71.865814],[-78.571395999999879,71.862762000000032],[-78.551392000000021,71.861098999999967],[-78.529174999999952,71.861649],[-78.511123999999995,71.864699999999971],[-78.503615999999965,71.868866000000082],[-78.508346999999901,71.876373000000001],[-78.595551,71.933318999999983],[-78.607498000000021,71.938583000000108],[-78.622222999999963,71.942200000000071],[-78.691375999999991,71.949707000000046],[-78.740554999999972,71.958038000000101],[-78.855559999999855,71.979706000000022],[-78.914444000000003,72.007767000000115],[-78.923614999999984,72.014999000000046],[-78.924438000000009,72.020538000000045],[-78.877486999999974,72.153320000000065],[-78.869445999999925,72.166656000000046],[-78.866104000000007,72.170532000000094],[-78.854445999999939,72.173035000000084],[-78.843613000000005,72.171097000000145],[-78.554442999999992,72.111374000000069],[-78.512221999999952,72.101089000000002],[-78.487777999999935,72.092484000000127],[-78.476105000000018,72.087204000000099],[-78.460830999999928,72.073318000000086],[-78.432770000000005,72.03804000000008],[-78.39527899999996,71.982483000000116],[-78.389998999999989,71.969437000000028],[-78.392775999999969,71.949997000000053],[-78.391678000000013,71.943587999999977],[-78.386672999999973,71.933318999999983],[-78.381942999999922,71.92804000000001],[-78.365279999999927,71.917480000000012],[-78.317779999999971,71.888321000000076],[-78.226669000000015,71.833054000000118],[-78.210830999999985,71.825821000000133],[-78.18499799999995,71.817490000000021],[-78.157607999999982,71.810577000000023],[-78.123046999999929,71.806366000000139],[-78.090560999999923,71.800812000000121],[-78.05972300000002,71.79414399999996],[-77.924437999999952,71.764709000000096],[-77.907775999999956,71.76638800000012],[-77.904448999999943,71.768051000000014],[-77.90695199999999,71.770538000000101],[-77.914169000000015,71.773605000000032],[-77.966659999999933,71.786652000000061],[-77.997498000000007,71.793319999999994],[-78.029723999999931,71.798874000000012],[-78.085830999999985,71.813309000000118],[-78.107223999999917,71.819153000000142],[-78.139998999999932,71.830551000000128],[-78.178878999999995,71.848602000000142],[-78.308884000000035,71.921096999999975],[-78.316665999999998,71.929428000000087],[-78.321395999999993,71.936920000000043],[-78.315001999999993,71.942474000000004],[-78.305266999999901,71.946930000000123],[-78.279175000000009,71.953598000000113],[-78.258895999999993,71.956650000000025],[-78.178878999999995,71.967209000000082],[-78.156951999999933,71.968323000000055],[-78.141677999999956,71.964157000000114],[-78.018616000000009,71.890823000000125],[-77.974716000000001,71.859984999999938],[-77.785552999999993,71.787490999999989],[-77.807769999999948,71.823044000000039],[-77.960006999999962,71.881653000000085],[-78.096953999999982,71.96804800000001],[-78.107223999999917,71.974152000000061],[-78.116393999999957,71.976928999999984],[-78.149733999999967,71.980545000000006],[-78.156386999999995,71.980545000000006],[-78.196105999999929,71.978592000000049],[-78.262222000000008,71.972763000000043],[-78.281386999999995,71.973877000000016],[-78.298614999999984,71.977478000000076],[-78.322509999999909,71.985809000000017],[-78.334166999999923,71.99136400000009],[-78.341110000000015,71.99859600000002],[-78.342498999999918,72.012771999999984],[-78.341674999999952,72.019149999999968],[-78.341674999999952,72.031936999999971],[-78.356948999999929,72.05831900000004],[-78.375548999999978,72.085815000000082],[-78.386672999999973,72.095534999999984],[-78.402221999999938,72.104980000000069],[-78.424437999999952,72.113602000000071],[-78.436935000000005,72.117477000000008],[-78.468886999999995,72.12414600000011],[-78.515014999999948,72.131363000000022],[-78.599990999999989,72.145263999999997],[-78.696654999999964,72.163605000000018],[-78.809998000000007,72.197205000000054],[-78.842498999999918,72.209152000000017],[-78.854720999999984,72.214432000000102],[-78.870834000000002,72.226654000000053],[-78.869155999999919,72.229706000000022],[-78.734725999999966,72.328598000000113],[-78.615829000000019,72.359146000000067],[-78.604172000000005,72.359421000000111],[-78.580565999999919,72.354156000000046],[-78.515839000000028,72.330551000000071],[-78.512511999999901,72.324432000000002],[-78.519164999999987,72.319153000000028],[-78.528335999999911,72.313873000000001],[-78.533324999999991,72.30914300000012],[-78.53694200000001,72.303314000000114],[-78.537780999999995,72.254715000000147],[-78.531386999999938,72.240265000000022],[-78.529174999999952,72.235535000000027],[-78.520843999999954,72.229155999999989],[-78.42193599999996,72.170822000000101],[-78.40834000000001,72.166382000000112],[-78.399733999999967,72.167206000000078],[-78.390839000000028,72.169982999999945],[-78.386123999999995,72.172485000000052],[-78.384170999999981,72.175537000000134],[-78.411117999999988,72.216660000000047],[-78.414718999999934,72.220535000000041],[-78.422775000000001,72.224152000000004],[-78.459732000000031,72.233871000000022],[-78.472777999999948,72.242477000000122],[-78.46833799999996,72.314986999999974],[-78.462783999999942,72.318878000000041],[-78.451110999999912,72.324158000000068],[-78.439437999999996,72.326660000000004],[-78.40834000000001,72.325821000000019],[-78.305266999999901,72.313309000000004],[-78.012512000000015,72.274994000000106],[-77.893615999999952,72.259430000000009],[-77.827498999999989,72.248596000000134],[-77.793883999999991,72.242202999999961],[-77.665282999999874,72.204712000000029],[-77.655272999999966,72.201385000000073],[-77.648620999999991,72.194137999999953],[-77.644454999999994,72.186646000000053],[-77.540833000000021,72.17692599999998],[-77.381103999999993,72.184982000000048],[-77.32417299999986,72.18609600000002],[-77.289444000000003,72.183319000000097],[-77.239989999999977,72.17442299999999],[-77.115828999999962,72.148331000000098],[-77.039443999999946,72.131653000000028],[-77.023330999999985,72.128860000000032],[-77.006118999999956,72.127472000000125],[-76.99722300000002,72.128036000000066],[-76.995833999999945,72.128860000000032],[-76.994719999999973,72.130539000000056],[-77.005004999999983,72.134430000000123],[-77.068619000000012,72.152206000000092],[-77.251677999999913,72.193313999999987],[-77.27806099999998,72.196930000000066],[-77.306945999999925,72.19802900000002],[-77.397232000000031,72.192748999999992],[-77.455840999999964,72.190811000000053],[-77.476944000000003,72.191360000000145],[-77.514175000000023,72.193862999999965],[-77.549987999999985,72.19802900000002],[-77.578888000000006,72.204163000000051],[-77.604172000000005,72.211929000000112],[-77.623885999999914,72.221100000000092],[-77.658614999999998,72.231658999999922],[-77.760833999999932,72.257217000000026],[-77.823058999999944,72.271927000000005],[-77.866104000000007,72.281097000000045],[-77.949996999999883,72.296097000000032],[-78.072509999999966,72.312485000000038],[-78.121384000000035,72.319716999999969],[-78.154723999999987,72.325545999999974],[-78.220001000000025,72.337769000000037],[-78.326950000000011,72.359146000000067],[-78.37388599999997,72.36943100000002],[-78.389175000000023,72.37303200000008],[-78.473327999999981,72.394989000000123],[-78.499161000000015,72.404709000000025],[-78.520843999999954,72.414993000000038],[-78.559158000000025,72.438034000000073],[-78.561110999999926,72.444977000000051],[-78.556655999999919,72.504440000000102],[-78.443053999999961,72.581939999999975],[-78.430556999999965,72.586655000000007],[-78.170273000000009,72.653594999999996],[-78.156386999999995,72.656937000000084],[-78.001677999999913,72.682480000000055],[-77.869994999999903,72.697479000000101],[-77.845001000000025,72.698868000000061],[-77.78083799999996,72.706940000000031],[-77.768616000000009,72.709427000000119],[-77.701401000000033,72.724701000000039],[-77.670273000000009,72.732208000000128],[-77.656951999999876,72.736099000000024],[-77.639998999999989,72.743865999999969],[-77.627486999999974,72.74859600000002],[-77.613892000000021,72.751663000000121],[-77.576401000000033,72.755554000000018],[-77.532226999999921,72.756943000000035],[-77.513625999999988,72.754715000000033],[-77.413054999999872,72.752212999999983],[-77.259734999999978,72.751663000000121],[-77.05581699999999,72.752861000000109],[-77.002501999999993,72.749419999999986],[-76.947219999999902,72.743865999999969],[-76.799728000000016,72.727478000000133],[-76.753066999999987,72.720534999999927],[-76.693053999999961,72.694702000000007],[-76.684997999999894,72.691085999999927],[-76.662505999999894,72.678588999999988],[-76.653609999999958,72.670821999999987],[-76.655272999999966,72.664429000000041],[-76.65972899999997,72.658324999999991],[-76.646118000000001,72.639708999999982],[-76.584732000000031,72.628585999999984],[-76.428328999999962,72.614151000000049],[-76.328339000000028,72.607483000000116],[-76.288329999999917,72.604980000000126],[-76.215285999999935,72.596100000000092],[-76.182219999999973,72.58998100000008],[-76.166945999999996,72.58638000000002],[-76.155562999999916,72.580826000000002],[-76.150283999999999,72.574158000000011],[-76.154723999999931,72.562485000000038],[-76.160552999999936,72.54942299999999],[-76.165833000000021,72.538315000000011],[-76.162506000000008,72.526093000000003],[-76.156112999999948,72.518051000000071],[-76.121657999999911,72.478317000000118],[-76.107773000000009,72.473037999999974],[-76.087783999999999,72.471648999999957],[-76.069457999999997,72.474991000000102],[-76.046386999999868,72.483597000000032],[-76.036941999999897,72.489426000000037],[-76.037780999999939,72.496368000000132],[-76.052215999999987,72.51138300000008],[-76.068619000000012,72.525818000000015],[-76.077224999999942,72.536377000000073],[-76.074172999999917,72.541656000000046],[-76.06471299999987,72.549988000000042],[-76.018889999999999,72.574431999999945],[-76.005843999999968,72.579163000000108],[-75.988601999999958,72.580826000000002],[-75.931945999999925,72.583603000000096],[-75.885284000000013,72.584152000000074],[-75.841948999999943,72.583053999999947],[-75.798888999999974,72.581939999999975],[-75.759170999999981,72.579163000000108],[-75.56806899999998,72.557479999999941],[-75.553328999999962,72.553589000000102],[-75.547226000000023,72.545532000000094],[-75.537780999999939,72.539703000000088],[-75.521117999999888,72.536102000000028],[-75.472228999999913,72.527480999999966],[-75.435271999999998,72.522491000000059],[-75.379439999999931,72.51638800000012],[-75.360001000000011,72.515548999999965],[-75.301666000000012,72.509720000000129],[-75.231673999999998,72.500549000000035],[-75.215285999999878,72.497482000000105],[-75.192490000000021,72.491928000000087],[-75.186661000000015,72.487488000000099],[-75.189163000000008,72.478317000000118],[-75.199158000000011,72.466933999999924],[-75.200287000000003,72.461929000000055],[-75.160277999999948,72.421097000000088],[-75.132492000000013,72.393600000000106],[-75.054169000000002,72.328873000000101],[-75.034164000000033,72.317490000000134],[-75,72.298369999999977],[-74.980559999999912,72.288315000000068],[-74.950835999999981,72.269989000000066],[-74.943603999999993,72.263321000000076],[-74.942490000000021,72.255829000000119],[-74.947494999999947,72.249710000000107],[-75.044997999999964,72.188308999999947],[-75.068068999999923,72.179152999999985],[-75.225280999999995,72.122482000000105],[-75.238326999999913,72.118317000000104],[-75.25306699999993,72.116378999999938],[-75.271666999999979,72.117203000000075],[-75.291381999999885,72.119431000000077],[-75.323623999999938,72.125534000000016],[-75.387511999999901,72.134430000000123],[-75.440552000000025,72.141098000000113],[-75.477782999999988,72.144714000000135],[-75.520003999999972,72.146102999999982],[-75.607498000000021,72.143326000000059],[-75.710006999999962,72.136658000000068],[-75.73332199999993,72.134155000000078],[-75.813889000000017,72.122482000000105],[-75.866652999999985,72.113876000000005],[-76.015015000000005,72.086655000000121],[-76.033324999999934,72.081100000000049],[-76.054717999999866,72.073043999999982],[-76.078063999999983,72.059417999999994],[-76.084166999999923,72.049713000000111],[-76.09973100000002,72.02887000000004],[-76.111938000000009,72.018050999999957],[-76.128052000000025,72.004166000000055],[-76.142226999999934,71.99331699999999],[-76.156386999999881,71.985260000000039],[-76.173614999999984,71.975540000000137],[-76.192490000000021,71.967758000000003],[-76.234726000000023,71.957488999999953],[-76.262511999999901,71.949707000000046],[-76.274445000000014,71.944427000000132],[-76.301665999999955,71.930542000000059],[-76.318344000000025,71.919983000000002],[-76.348052999999879,71.891662999999994],[-76.31082200000003,71.884720000000016],[-76.089721999999938,71.978867000000093],[-76.073058999999944,71.989425999999924],[-76.063323999999966,72],[-76.049727999999902,72.017761000000121],[-76.047501000000011,72.023604999999975],[-76.043609999999944,72.030272999999966],[-76.029448999999943,72.041091999999992],[-76.019729999999981,72.046097000000032],[-75.998610999999983,72.054152999999928],[-75.956115999999952,72.067215000000147],[-75.89445499999988,72.082214000000022],[-75.828338999999971,72.096939000000134],[-75.796660999999915,72.103591999999935],[-75.710555999999997,72.113312000000008],[-75.630554000000018,72.11970500000001],[-75.586120999999991,72.12164300000012],[-75.528335999999967,72.120818999999983],[-75.488051999999925,72.118866000000025],[-75.433060000000012,72.112761999999975],[-75.23332199999993,72.084152000000131],[-75.226105000000018,72.080276000000083],[-75.219451999999876,72.074432000000058],[-75.218886999999995,72.070267000000058],[-75.221114999999998,72.064696999999967],[-75.228881999999942,72.059143000000006],[-75.255279999999914,72.046097000000032],[-75.281676999999888,72.038589000000059],[-75.317504999999926,72.031661999999926],[-75.338332999999977,72.02887000000004],[-75.404174999999952,72.025543000000084],[-75.449432000000002,72.02526899999998],[-75.494155999999975,72.021378000000084],[-75.515015000000005,72.018326000000002],[-75.548049999999989,72.011107999999979],[-75.574172999999917,72.00360100000006],[-75.586670000000026,71.999146000000053],[-75.606383999999935,71.989425999999924],[-75.613892000000021,71.983871000000022],[-75.618880999999988,71.978592000000049],[-75.686661000000015,71.883040999999992],[-75.697495000000004,71.858322000000044],[-75.691375999999877,71.850266000000147],[-75.688048999999921,71.842758000000117],[-75.6875,71.839157000000057],[-75.692215000000033,71.833328000000051],[-75.802490000000034,71.750548999999978],[-75.830001999999979,71.736649000000114],[-75.872222999999906,71.721375000000023],[-75.898345999999947,71.714432000000045],[-75.934157999999968,71.711105000000089],[-75.953612999999962,71.710266000000104],[-75.997497999999894,71.709152000000131],[-76.040282999999931,71.709426999999948],[-76.067504999999869,71.706650000000081],[-76.079177999999956,71.704437000000098],[-76.090835999999911,71.702208999999982],[-76.096114999999998,71.697479000000101],[-76.095839999999953,71.693863000000079],[-76.085281000000009,71.691924999999912],[-75.901671999999962,71.701096000000064],[-75.880279999999971,71.70248400000014],[-75.846953999999982,71.708602999999982],[-75.819457999999941,71.716934000000094],[-75.794998000000021,71.725815000000011],[-75.787215999999944,71.730545000000063],[-75.675003000000004,71.810532000000023],[-75.654998999999975,71.826096000000121],[-75.580001999999865,71.906097000000045],[-75.570281999999963,71.917480000000012],[-75.565825999999959,71.929703000000075],[-75.567229999999938,71.937485000000038],[-75.570281999999963,71.941360000000032],[-75.574447999999961,71.953048999999965],[-75.571944999999971,71.958878000000141],[-75.569167999999991,71.963882000000126],[-75.558334000000002,71.97665400000011],[-75.538605000000018,71.986374000000012],[-75.513335999999924,71.995254999999986],[-75.498046999999929,71.999146000000053],[-75.476669000000015,72.000823999999966],[-75.414444000000003,71.999709999999993],[-75.371932999999899,71.997757000000036],[-75.349441999999897,71.998032000000023],[-75.327788999999939,71.999419999999986],[-75.24888599999997,72.012771999999984],[-75.197768999999937,72.023315000000139],[-75.174437999999952,72.031936999999971],[-75.158614999999941,72.041655999999932],[-75.150283999999942,72.0577550000001],[-75.135009999999966,72.080551000000071],[-75.129990000000021,72.086380000000133],[-75.119155999999862,72.096375000000023],[-75.109160999999858,72.101089000000002],[-75.093613000000005,72.10803199999998],[-75.081389999999942,72.11303700000002],[-75.051392000000021,72.121917999999937],[-75.035827999999924,72.125809000000004],[-75.012511999999958,72.12831100000011],[-75,72.128525000000025],[-74.98443599999996,72.127472000000125],[-74.951675000000023,72.123306000000071],[-74.835006999999962,72.10386699999998],[-74.801391999999964,72.098327999999981],[-74.764449999999954,72.094711000000018],[-74.65943900000002,72.091094999999939],[-74.625548999999921,72.091369999999984],[-74.535278000000005,72.089705999999978],[-74.316390999999953,72.082214000000022],[-74.297226000000023,72.080826000000116],[-74.260009999999966,72.076096000000064],[-74.244155999999862,72.073043999999982],[-74.233321999999987,72.067489999999964],[-74.218062999999972,72.058029000000033],[-74.177489999999921,72.031936999999971],[-74.122222999999963,71.983597000000088],[-74.117766999999958,71.969985999999949],[-74.119445999999982,71.955826000000059],[-74.166107000000011,71.874695000000088],[-74.171111999999937,71.868591000000038],[-74.184998000000007,71.855819999999937],[-74.229996000000028,71.822768999999994],[-74.243056999999965,71.818603999999993],[-74.263335999999981,71.815810999999997],[-74.403060999999923,71.80386400000009],[-74.43998699999986,71.801925999999924],[-74.460555999999997,71.802765000000079],[-74.477782999999931,71.804977000000122],[-74.50140399999998,71.809708000000057],[-74.513625999999874,71.818053999999961],[-74.570557000000008,71.809418000000051],[-74.604996000000028,71.784714000000122],[-74.678328999999962,71.745254999999986],[-74.696105999999929,71.738586000000112],[-74.71362299999987,71.735260000000096],[-74.885009999999909,71.708602999999982],[-75,71.711914000000036],[-75.046660999999915,71.716095000000109],[-75.090560999999923,71.718048000000067],[-75.136672999999973,71.716934000000094],[-75.158051,71.715271000000143],[-75.342772999999909,71.695815999999979],[-75.363892000000021,71.691360000000088],[-75.378600999999946,71.686920000000043],[-75.389998999999989,71.681091000000038],[-75.393889999999942,71.677475000000015],[-75.391953000000001,71.674698000000092],[-75.385009999999909,71.674423000000104],[-75.241942999999878,71.686096000000077],[-75.178329000000019,71.694138000000066],[-75.085007000000019,71.700821000000076],[-75.043610000000001,71.699707000000046],[-75.025008999999955,71.698029000000133],[-75.009170999999924,71.694977000000051],[-74.941101000000003,71.674698000000092],[-74.934158000000025,71.670822000000044],[-74.93360899999999,71.663879000000009],[-74.93638599999997,71.658035000000041],[-74.945540999999935,71.652481000000023],[-74.956115999999952,71.648331000000042],[-75.008895999999993,71.631927000000076],[-75.055557000000022,71.622481999999991],[-75.114166000000012,71.611098999999967],[-75.194152999999972,71.595535000000098],[-75.206954999999994,71.591934000000037],[-75.398345999999947,71.525269000000094],[-75.40972899999997,71.519714000000022],[-75.408339999999953,71.514708999999982],[-75.406386999999938,71.512207000000046],[-75.402221999999938,71.512497000000053],[-75.205276000000026,71.546371000000079],[-75,71.607238999999993],[-74.861114999999927,71.649429000000112],[-74.851668999999958,71.654984000000013],[-74.799437999999952,71.678863999999976],[-74.784163999999976,71.682755000000043],[-74.718337999999903,71.693588000000034],[-74.697768999999937,71.696365000000128],[-74.686661000000015,71.696365000000128],[-74.672774999999945,71.692474000000061],[-74.631942999999978,71.662491000000102],[-74.629714999999919,71.65277100000003],[-74.631942999999978,71.646378000000084],[-74.646392999999989,71.631927000000076],[-74.674437999999896,71.608322000000101],[-74.689712999999983,71.598038000000031],[-74.704726999999934,71.588042999999971],[-74.713057999999933,71.583878000000141],[-74.733886999999982,71.575546000000145],[-74.811934999999949,71.547760000000096],[-74.869720000000029,71.541656000000046],[-74.922500999999897,71.53776600000009],[-74.940276999999867,71.538040000000024],[-74.97084000000001,71.537201000000039],[-74.990279999999984,71.536652000000117],[-75,71.535583000000088],[-75.027221999999995,71.532486000000006],[-75.036666999999966,71.530548000000067],[-75.081389999999942,71.515273999999977],[-75.107773000000009,71.503052000000025],[-75.124709999999936,71.492477000000065],[-75.15194699999995,71.471649000000014],[-75.152221999999995,71.466094999999996],[-75.146117999999944,71.463608000000079],[-75.12777699999998,71.465820000000008],[-75.115554999999972,71.469986000000063],[-75.106110000000001,71.481934000000081],[-75.093886999999938,71.49275200000011],[-75.084731999999974,71.498322000000144],[-75.06138599999997,71.506378000000041],[-75.05082699999997,71.509720000000016],[-75.033324999999934,71.513046000000031],[-75,71.517899000000114],[-74.993056999999908,71.518875000000037],[-74.944153000000028,71.521652000000131],[-74.877486999999974,71.524155000000121],[-74.857223999999974,71.523605000000089],[-74.838332999999921,71.521926999999948],[-74.828338999999971,71.517211999999915],[-74.71665999999999,71.419144000000131],[-74.699431999999945,71.390823000000069],[-74.700561999999934,71.386658000000068],[-74.705565999999976,71.380814000000044],[-74.715285999999992,71.375809000000004],[-74.888335999999981,71.287201000000096],[-75.075012000000015,71.204437000000041],[-75.081389999999942,71.17942800000003],[-75.065001999999993,71.180817000000047],[-75,71.199341000000061],[-74.987503000000004,71.203873000000101],[-74.874160999999958,71.247756999999979],[-74.864440999999943,71.252487000000031],[-74.671660999999972,71.359985000000052],[-74.654448999999943,71.370254999999986],[-74.637511999999958,71.380538999999999],[-74.632216999999969,71.385818000000029],[-74.628051999999968,71.392487000000074],[-74.625823999999852,71.39888000000002],[-74.626098999999954,71.405822999999998],[-74.631103999999993,71.419433999999967],[-74.638061999999991,71.426651000000106],[-74.646956999999929,71.433044000000052],[-74.657227000000034,71.438583000000051],[-74.719726999999978,71.462494000000106],[-74.726944000000003,71.466094999999996],[-74.735549999999989,71.472487999999942],[-74.736388999999974,71.476654000000053],[-74.743057000000022,71.511932000000058],[-74.73611499999987,71.530548000000067],[-74.723891999999978,71.541931000000091],[-74.714172000000019,71.546646000000123],[-74.701675000000023,71.551086000000112],[-74.686385999999914,71.554977000000008],[-74.663895000000025,71.557204999999954],[-74.628875999999934,71.554703000000075],[-74.619995000000017,71.55802900000009],[-74.583618000000001,71.585815000000025],[-74.576401000000033,71.591370000000097],[-74.543883999999991,71.631362999999965],[-74.381942999999922,71.677199999999971],[-74.345550999999944,71.689423000000033],[-74.335555999999997,71.694138000000066],[-74.317779999999971,71.704437000000098],[-74.309432999999956,71.712204000000042],[-74.306945999999982,71.71775800000006],[-74.299437999999952,71.723877000000073],[-74.288604999999905,71.727478000000133],[-74.268341000000021,71.730270000000019],[-74.146956999999929,71.738875999999948],[-74.12470999999988,71.738875999999948],[-74.109160999999972,71.735809000000017],[-74.103058000000033,71.733321999999987],[-74.097777999999948,71.72886699999998],[-74.123885999999914,71.680817000000104],[-74.128875999999877,71.67164600000001],[-74.142226999999991,71.661652000000004],[-74.15055799999999,71.657486000000063],[-74.173049999999989,71.651093000000117],[-74.202788999999996,71.645828000000051],[-74.220276000000013,71.641663000000051],[-74.232773000000009,71.637496999999939],[-74.239440999999999,71.634155000000021],[-74.24888599999997,71.621643000000063],[-74.253066999999987,71.611649],[-74.254455999999948,71.60664399999996],[-74.254729999999995,71.603867000000093],[-74.252228000000002,71.58998100000008],[-74.249161000000015,71.582489000000123],[-74.243056999999965,71.569716999999969],[-74.218886999999938,71.556641000000013],[-74.180282999999974,71.538315000000011],[-74.168334999999956,71.533324999999991],[-74.156386999999995,71.532211000000018],[-74.150283999999886,71.533324999999991],[-74.148620999999935,71.537491000000045],[-74.151671999999962,71.544983000000002],[-74.165008999999998,71.555252000000053],[-74.146118000000001,71.637496999999939],[-74.039718999999934,71.722213999999951],[-74.019164999999987,71.73803700000002],[-74.014724999999942,71.741089000000102],[-73.996947999999975,71.751389000000017],[-73.977782999999931,71.759720000000129],[-73.964447000000007,71.763321000000019],[-73.928329000000019,71.769150000000025],[-73.748046999999929,71.776931999999988],[-73.718886999999938,71.776931999999988],[-73.61610399999995,71.773315000000025],[-73.604172000000005,71.772217000000126],[-73.593886999999995,71.769988999999953],[-73.589721999999995,71.763321000000019],[-73.589995999999985,71.756943000000035],[-73.591675000000009,71.751937999999996],[-73.598343,71.738312000000008],[-73.612503000000004,71.722213999999951],[-73.619995000000017,71.716095000000109],[-73.638061999999991,71.706375000000037],[-73.663329999999917,71.697204999999997],[-73.694442999999922,71.690262000000018],[-73.732772999999952,71.683868000000132],[-73.771117999999944,71.670822000000044],[-73.791381999999999,71.661102000000142],[-73.890839000000028,71.609421000000054],[-73.985549999999989,71.534149000000127],[-73.990279999999927,71.527480999999966],[-74.010833999999988,71.491363999999976],[-74.095275999999956,71.46276899999998],[-74.169997999999964,71.445816000000036],[-74.303878999999995,71.419433999999967],[-74.315826000000015,71.414429000000098],[-74.319167999999877,71.409424000000058],[-74.312209999999993,71.40554800000001],[-74.297226000000023,71.405822999999998],[-74.191665999999998,71.425537000000134],[-74.159163999999919,71.4327550000001],[-74.121384000000035,71.438583000000051],[-74.083617999999944,71.441086000000041],[-74.045836999999949,71.440810999999997],[-74.028610000000015,71.437759000000085],[-74.063889000000017,71.336929000000055],[-74.091675000000009,71.285537999999974],[-74.106383999999878,71.274704000000099],[-74.137787000000003,71.255828999999949],[-74.152221999999995,71.248032000000023],[-74.187774999999931,71.229430999999977],[-74.207503999999858,71.219711000000075],[-74.217223999999931,71.214996000000042],[-74.226669000000015,71.212203999999986],[-74.238327000000027,71.203873000000101],[-74.240829000000019,71.200821000000133],[-74.235000999999897,71.198317999999972],[-74.228881999999942,71.199416999999983],[-74.217772999999966,71.202209000000039],[-74.190825999999959,71.211104999999975],[-74.158339999999953,71.223877000000016],[-74.148055999999997,71.228592000000049],[-74.118332000000009,71.24331699999999],[-74.039444000000003,71.302199999999971],[-74.009444999999971,71.360809000000017],[-74.006957999999997,71.367203000000075],[-73.973327999999924,71.413605000000132],[-73.968612999999891,71.419433999999967],[-73.867767000000015,71.525818000000015],[-73.86221299999994,71.531096999999988],[-73.761672999999973,71.580826000000059],[-73.746947999999975,71.585266000000047],[-73.732772999999952,71.586928999999998],[-73.689162999999951,71.588042999999971],[-73.653610000000015,71.587493999999992],[-73.639724999999942,71.58638000000002],[-73.621932999999956,71.583328000000108],[-73.595000999999968,71.575272000000041],[-73.588608000000022,71.572220000000129],[-73.565001999999936,71.55192599999998],[-73.566665999999941,71.544144000000017],[-73.598343,71.528320000000122],[-73.615554999999915,71.520264000000054],[-73.619445999999982,71.515823000000125],[-73.630279999999971,71.456649999999911],[-73.635009999999909,71.359421000000111],[-73.622498000000007,71.356644000000017],[-73.61332699999997,71.355820000000051],[-73.594727000000034,71.35775799999999],[-73.540389999999945,71.37286400000005],[-73.518889999999942,71.379150000000038],[-73.517226999999934,71.379974000000004],[-73.516112999999962,71.385818000000029],[-73.515563999999927,71.39888000000002],[-73.513335999999981,71.413040000000137],[-73.50306699999993,71.424698000000149],[-73.496947999999918,71.428589000000045],[-73.477492999999924,71.436371000000008],[-73.446945000000028,71.440262000000075],[-73.428878999999995,71.435806000000127],[-73.384445000000028,71.391937000000041],[-73.380279999999914,71.385269000000051],[-73.385009999999966,71.381927000000132],[-73.500899999999945,71.337212000000022],[-73.590285999999935,71.304977000000065],[-73.615554999999915,71.296371000000136],[-73.623046999999872,71.291091999999992],[-73.635558999999944,71.279709000000139],[-73.663054999999986,71.254166000000055],[-73.678878999999995,71.238037000000077],[-73.712783999999999,71.177765000000136],[-73.717772999999966,71.164993000000095],[-73.718886999999938,71.159424000000115],[-73.716399999999965,71.14498900000001],[-73.713622999999984,71.137497000000053],[-73.713622999999984,71.130539000000056],[-73.71665999999999,71.118317000000104],[-73.728606999999954,71.098602000000085],[-73.735824999999977,71.093323000000112],[-73.745833999999888,71.088593000000117],[-73.760833999999932,71.084717000000012],[-73.77806099999998,71.0816650000001],[-73.797774999999945,71.078872999999987],[-73.842498999999918,71.074432000000115],[-73.87388599999997,71.069717000000082],[-73.890288999999996,71.064987000000031],[-73.898346000000004,71.057480000000112],[-73.895003999999972,71.052200000000028],[-73.886672999999973,71.049149],[-73.879439999999875,71.047759999999982],[-73.872771999999998,71.047484999999995],[-73.850554999999986,71.059981999999991],[-73.842223999999987,71.064148000000046],[-73.753066999999987,71.065810999999997],[-73.732772999999952,71.067764000000125],[-73.715835999999854,71.071655000000021],[-73.692764000000011,71.079436999999984],[-73.674438000000009,71.088318000000072],[-73.667220999999984,71.093597000000045],[-73.660552999999993,71.10386699999998],[-73.658339999999953,71.124985000000095],[-73.662505999999951,71.134995000000004],[-73.666655999999875,71.141662999999994],[-73.673614999999927,71.163039999999967],[-73.668883999999991,71.173035000000084],[-73.623610999999983,71.225540000000137],[-73.615829000000019,71.230270000000132],[-73.549164000000019,71.269989000000066],[-73.454726999999991,71.300262000000032],[-73.433884000000035,71.308594000000028],[-73.42860399999995,71.314423000000033],[-73.427779999999984,71.327208999999925],[-73.435271999999941,71.332214000000022],[-73.437774999999988,71.336380000000077],[-73.436110999999983,71.340545999999961],[-73.430282999999974,71.34165999999999],[-73.382216999999969,71.345260999999994],[-73.363051999999982,71.345824999999991],[-73.349730999999963,71.345260999999994],[-73.320847000000015,71.340820000000122],[-73.083617999999944,71.285812000000078],[-73.061110999999983,71.277481000000023],[-73.049437999999952,71.268325999999945],[-73.053878999999938,71.261658000000011],[-73.065001999999936,71.258331000000055],[-73.155562999999972,71.246643000000006],[-73.214721999999995,71.240814],[-73.230835000000013,71.238312000000121],[-73.249434999999949,71.233871000000022],[-73.266113000000018,71.224990999999989],[-73.271941999999854,71.220535000000041],[-73.263061999999991,71.205826000000002],[-73.252501999999936,71.195251000000098],[-73.244445999999982,71.188873000000115],[-73.235001000000011,71.173309000000017],[-73.235001000000011,71.162201000000039],[-73.238327000000027,71.157210999999961],[-73.247771999999998,71.144150000000025],[-73.256957999999884,71.133881000000031],[-73.294448999999929,71.092483999999956],[-73.311110999999926,71.080826000000116],[-73.327788999999996,71.072768999999994],[-73.379439999999988,71.05831900000004],[-73.426391999999908,71.047759999999982],[-73.446105999999986,71.041092000000049],[-73.450835999999924,71.035263000000043],[-73.451950000000011,71.029433999999981],[-73.446945000000028,71.024993999999992],[-73.377486999999917,70.980545000000006],[-73.369995000000017,70.985809000000017],[-73.17361499999987,71.156937000000028],[-73.168610000000001,71.170532000000094],[-73.177490000000034,71.185257000000036],[-73.183060000000012,71.191360000000032],[-73.188048999999978,71.199141999999938],[-73.185271999999998,71.205826000000002],[-73.180283000000031,71.211655000000007],[-73.172226000000023,71.216385000000059],[-73.142226999999934,71.224425999999937],[-73.115554999999915,71.230270000000132],[-73.101395000000025,71.231658999999979],[-73.079726999999991,71.231658999999979],[-73.067779999999857,71.230270000000132],[-73.045546999999885,71.225540000000137],[-73.027221999999881,71.227203000000031],[-73.011947999999961,71.234421000000054],[-73.004455999999948,71.239700000000028],[-72.99499499999996,71.249999999999943],[-72.981673999999941,71.267487000000017],[-72.952788999999996,71.311096000000077],[-72.951400999999976,71.316085999999984],[-72.959731999999974,71.355820000000051],[-72.963622999999927,71.362488000000042],[-72.970001000000025,71.369979999999998],[-72.978332999999907,71.376373000000115],[-72.989440999999999,71.391663000000108],[-72.993057000000022,71.397766000000047],[-72.993331999999953,71.401931999999931],[-72.988892000000021,71.40554800000001],[-72.975829999999917,71.40914900000007],[-72.897232000000031,71.416655999999989],[-72.858046999999942,71.413315000000125],[-72.836394999999925,71.413315000000125],[-72.765839000000028,71.423874000000012],[-72.759170999999924,71.426926000000094],[-72.757507000000032,71.431931000000134],[-72.758621000000005,71.437484999999981],[-72.764724999999942,71.451660000000061],[-72.76916499999993,71.459152000000017],[-72.679992999999911,71.524704000000042],[-72.649733999999967,71.536926000000051],[-72.61860699999994,71.559418000000107],[-72.61332699999997,71.565536000000066],[-72.610274999999888,71.571930000000123],[-72.608337000000006,71.583878000000141],[-72.61082499999992,71.595535000000098],[-72.608337000000006,71.60664399999996],[-72.593886999999995,71.642487000000017],[-72.583327999999881,71.651382000000069],[-72.580291999999929,71.653594999999996],[-72.573333999999932,71.656647000000135],[-72.557495000000017,71.660262999999986],[-72.538054999999929,71.660812000000135],[-72.523620999999991,71.65887500000008],[-72.503066999999874,71.65026899999998],[-72.474715999999944,71.642761000000121],[-72.444442999999978,71.636107999999979],[-72.301102000000014,71.612198000000149],[-72.152221999999938,71.58998100000008],[-71.847777999999948,71.546646000000123],[-71.689437999999996,71.524429000000055],[-71.670546999999999,71.522216999999955],[-71.635559000000001,71.517761000000064],[-71.58555599999994,71.509995000000004],[-71.554169000000002,71.503875999999991],[-71.455275999999913,71.473037999999974],[-71.444442999999922,71.468597000000045],[-71.435271999999998,71.463608000000079],[-71.295546999999942,71.384720000000129],[-71.241378999999995,71.349425999999994],[-71.12332200000003,71.271652000000017],[-71.119719999999973,71.264160000000061],[-71.122771999999998,71.257217000000082],[-71.128601000000003,71.251389000000131],[-71.147780999999952,71.241927999999973],[-71.169448999999986,71.233322000000044],[-71.206116000000009,71.220535000000041],[-71.221389999999985,71.216934000000037],[-71.234726000000023,71.212769000000037],[-71.324722000000008,71.177765000000136],[-71.340560999999866,71.170532000000094],[-71.342772999999909,71.166382000000112],[-71.346114999999941,71.155823000000055],[-71.349441999999897,71.149428999999998],[-71.415832999999907,71.093323000000112],[-71.452224999999999,71.068054000000132],[-71.46444699999995,71.062484999999981],[-71.470275999999956,71.061370999999951],[-71.48971599999993,71.0619200000001],[-71.551102000000014,71.064697000000024],[-71.608336999999949,71.068603999999993],[-71.640839000000028,71.073883000000137],[-71.714447000000007,71.088043000000084],[-71.812499999999943,71.104156000000103],[-71.848891999999921,71.108321999999987],[-71.868880999999874,71.109420999999998],[-71.890288999999882,71.109420999999998],[-71.910827999999924,71.107758000000047],[-72.069457999999997,71.075271999999984],[-72.08555599999994,71.070267000000115],[-72.09973100000002,71.063873000000058],[-72.110275000000001,71.052200000000028],[-72.113892000000021,71.047211000000061],[-72.114440999999999,71.043594000000098],[-72.113326999999913,71.037490999999989],[-72.107223999999974,71.030272999999966],[-72.09973100000002,71.020263999999941],[-72.101944000000003,71.016098000000056],[-72.165557999999919,70.968048000000067],[-72.179717999999923,70.962204000000042],[-72.200286999999946,70.961105000000032],[-72.235001000000011,70.961928999999998],[-72.261123999999995,70.959152000000131],[-72.27806099999998,70.955261000000064],[-72.290557999999976,70.951096000000064],[-72.297226000000023,70.947204999999997],[-72.317504999999983,70.930267000000072],[-72.319457999999997,70.925812000000064],[-72.317504999999983,70.918320000000108],[-72.31138599999997,70.911102000000085],[-72.313889000000017,70.899719000000061],[-72.320557000000008,70.888321000000076],[-72.325561999999877,70.882477000000051],[-72.334166999999979,70.878585999999984],[-72.514724999999999,70.844436999999971],[-72.534438999999907,70.841933999999981],[-72.653609999999958,70.82777400000009],[-72.654174999999896,70.820831000000112],[-72.511397999999872,70.827209000000039],[-72.476944000000003,70.833328000000051],[-72.401108000000022,70.849716000000114],[-72.356110000000001,70.860535000000027],[-72.302779999999927,70.867203000000018],[-72.264175000000023,70.866652999999985],[-72.25,70.863876000000062],[-72.184722999999963,70.844711000000075],[-72.172225999999966,70.840546000000074],[-72.16361999999998,70.83638000000002],[-72.162215999999887,70.829987000000017],[-72.363327000000027,70.686096000000134],[-72.381942999999978,70.677200000000028],[-72.459441999999967,70.65387000000004],[-72.475829999999917,70.649429000000112],[-72.499435000000005,70.646652000000017],[-72.542496000000028,70.644714000000079],[-72.578063999999983,70.641373000000044],[-72.597778000000005,70.63859599999995],[-72.609160999999972,70.636658000000011],[-72.615828999999962,70.633331000000055],[-72.623321999999973,70.628036000000009],[-72.569457999999884,70.609985000000052],[-72.551666000000012,70.608032000000094],[-72.503066999999874,70.629973999999947],[-72.490554999999972,70.634155000000021],[-72.371932999999956,70.654984000000013],[-72.342223999999931,70.662200999999925],[-72.326110999999912,70.667206000000022],[-72.306380999999988,70.677475000000015],[-72.277495999999871,70.698028999999963],[-72.264724999999942,70.70915199999996],[-72.248610999999983,70.726653999999996],[-72.245834000000002,70.733046999999999],[-72.236937999999896,70.743866000000025],[-72.229172000000005,70.749420000000043],[-72.210555999999997,70.758040999999935],[-72.185546999999929,70.76638800000012],[-72.155838000000017,70.773605000000032],[-72.136123999999995,70.776093000000003],[-72.004729999999995,70.786925999999994],[-71.896956999999929,70.80693100000002],[-71.818893000000003,70.823044000000039],[-71.689163000000008,70.850266000000147],[-71.543883999999991,70.872481999999991],[-71.354445999999939,70.882750999999985],[-71.287506000000008,70.906097000000045],[-71.289169000000015,70.908875000000023],[-71.289444000000003,70.913605000000075],[-71.208343999999954,71.004990000000078],[-71.185546999999872,71.019439999999975],[-71.162216000000001,71.028320000000008],[-70.895553999999947,71.099716000000058],[-70.836120999999935,71.114426000000037],[-70.799727999999959,71.118866000000025],[-70.771666999999979,71.118042000000059],[-70.755568999999923,71.11554000000001],[-70.724715999999944,71.10443099999992],[-70.635559000000001,71.072220000000016],[-70.613891999999964,71.062194999999917],[-70.604720999999927,71.056366000000082],[-70.601669000000015,71.053864000000033],[-70.591949,71.042480000000126],[-70.514724999999942,70.940536000000066],[-70.512511999999958,70.926085999999998],[-70.514450000000011,70.921097000000032],[-70.519729999999981,70.913879000000009],[-70.553604000000007,70.894989000000066],[-70.58944699999995,70.876083000000051],[-70.678878999999995,70.840546000000074],[-70.740828999999906,70.75471500000009],[-70.746947999999918,70.745529000000147],[-70.773330999999985,70.734420999999998],[-70.798888999999917,70.725540000000024],[-70.872498000000007,70.703872999999987],[-70.891112999999962,70.698868000000118],[-70.965835999999967,70.684143000000006],[-71.024445000000014,70.674987999999928],[-71.055267000000015,70.669144000000131],[-71.08277899999996,70.661652000000004],[-71.100554999999929,70.654984000000013],[-71.108611999999994,70.649993999999992],[-71.118056999999965,70.638885000000073],[-71.128051999999968,70.62052900000009],[-71.129439999999988,70.614151000000106],[-71.134445000000028,70.602767999999912],[-71.139998999999932,70.596374999999966],[-71.147780999999952,70.591095000000109],[-71.160277999999948,70.586928999999998],[-71.175277999999992,70.583602999999982],[-71.191665999999998,70.58248900000001],[-71.224715999999944,70.582214000000135],[-71.281676999999888,70.584152000000074],[-71.312499999999943,70.587204000000042],[-71.34584000000001,70.591660000000104],[-71.389724999999942,70.600540000000137],[-71.407501000000025,70.603043000000127],[-71.422775000000001,70.604980000000012],[-71.461944999999957,70.60775799999999],[-71.558608999999933,70.609421000000111],[-71.592772999999966,70.606934000000024],[-71.595550999999944,70.603867000000093],[-71.595839999999953,70.600540000000137],[-71.592498999999918,70.589706000000092],[-71.586670000000026,70.581665000000044],[-71.583892999999932,70.576096000000007],[-71.580291999999986,70.564697000000137],[-71.581954999999994,70.551376000000005],[-71.583618000000001,70.546371000000136],[-71.588057999999933,70.542755000000056],[-71.74360699999994,70.466933999999981],[-71.803054999999972,70.428314000000057],[-71.763061999999934,70.427200000000084],[-71.748046999999985,70.425811999999951],[-71.736389000000031,70.423035000000084],[-71.727218999999991,70.417479999999955],[-71.728058000000033,70.410538000000088],[-71.731673999999998,70.397217000000126],[-71.746384000000035,70.3477630000001],[-71.75556899999998,70.329162999999994],[-71.763061999999934,70.323318000000086],[-71.783065999999963,70.313873000000001],[-71.816665999999941,70.303040000000067],[-71.844161999999983,70.29664600000001],[-71.849730999999906,70.290817000000004],[-71.836944999999957,70.289978000000019],[-71.806945999999868,70.295822000000044],[-71.748046999999985,70.309708000000001],[-71.733611999999937,70.313873000000001],[-71.686385999999914,70.355820000000108],[-71.674712999999997,70.36970500000001],[-71.641678000000013,70.444977000000108],[-71.640288999999996,70.450546000000088],[-71.543335000000013,70.514708999999982],[-71.525283999999942,70.524704000000099],[-71.510009999999966,70.535812000000078],[-71.502501999999936,70.546096999999975],[-71.50167799999997,70.55304000000001],[-71.503341999999975,70.56053199999991],[-71.507506999999976,70.569153000000028],[-71.511672999999973,70.573318000000029],[-71.506957999999941,70.57638500000013],[-71.495543999999938,70.578873000000101],[-71.435271999999998,70.578598000000113],[-71.420273000000009,70.57748400000014],[-71.397781000000009,70.574432000000002],[-71.25306699999993,70.549713000000054],[-71.184998000000007,70.538040000000024],[-71.17582699999997,70.535812000000078],[-71.170272999999952,70.533324999999991],[-71.167769999999905,70.531937000000084],[-71.162506000000008,70.525269000000094],[-71.162216000000001,70.520537999999988],[-71.260558999999887,70.377762000000132],[-71.322509999999966,70.312759000000028],[-71.321670999999981,70.30664100000007],[-71.318343999999968,70.299988000000099],[-71.301101999999958,70.284987999999998],[-71.288894999999968,70.280822999999998],[-71.279998999999975,70.274993999999936],[-71.276947000000007,70.268326000000002],[-71.278335999999854,70.262771999999984],[-71.285278000000005,70.251388999999961],[-71.289169000000015,70.246094000000085],[-71.316955999999948,70.218596999999988],[-71.363051999999868,70.182204999999954],[-71.43472300000002,70.126923000000033],[-71.485275000000001,70.088318000000072],[-71.498046999999929,70.080551000000128],[-71.523055999999997,70.052200000000028],[-71.532776000000013,70.038589000000059],[-71.539168999999958,70.026382000000126],[-71.541107000000011,70.022217000000126],[-71.535827999999924,70.019714000000135],[-71.52806099999998,70.020263999999997],[-71.518065999999976,70.024993999999992],[-71.500290000000007,70.038315000000125],[-71.493606999999997,70.050537000000134],[-71.475829999999974,70.068054000000132],[-71.438048999999978,70.086655000000007],[-71.393616000000009,70.104430999999977],[-71.366652999999985,70.111923000000104],[-71.331680000000006,70.128585999999984],[-71.210555999999997,70.262206999999933],[-71.208892999999989,70.267761000000121],[-71.21305799999999,70.272491000000002],[-71.218886999999995,70.276382000000069],[-71.229720999999984,70.281097000000102],[-71.231948999999929,70.294983000000059],[-71.171660999999972,70.368042000000059],[-71.135833999999932,70.410538000000088],[-71.093062999999972,70.460541000000035],[-71.030563000000029,70.540543000000014],[-71.049987999999928,70.546371000000136],[-71.053054999999972,70.55304000000001],[-71.049438000000009,70.558868000000075],[-71.005843999999968,70.61692800000003],[-70.997222999999963,70.625808999999947],[-70.968886999999995,70.63220200000012],[-70.913054999999986,70.637771999999984],[-70.771117999999944,70.668869000000086],[-70.611937999999952,70.723602000000085],[-70.421660999999858,70.772217000000126],[-70.396956999999986,70.778320000000065],[-70.365279999999927,70.782486000000006],[-70.324721999999952,70.785812000000021],[-70.255004999999983,70.793868999999972],[-70.228881999999942,70.797211000000118],[-70.075012000000015,70.83027600000014],[-69.988051999999982,70.853592000000049],[-69.915833000000021,70.877472000000012],[-69.904723999999931,70.881363000000079],[-69.892775999999913,70.883331000000055],[-69.87388599999997,70.883331000000055],[-69.865279999999927,70.882477000000051],[-69.833618000000001,70.87692300000009],[-69.78443900000002,70.864700000000028],[-69.771117999999944,70.857483000000116],[-69.770554000000004,70.856094000000098],[-69.772506999999962,70.85054000000008],[-69.795837000000006,70.820541000000048],[-69.808884000000035,70.81109600000002],[-69.879439999999931,70.768051000000071],[-69.915557999999919,70.74914600000011],[-69.965285999999935,70.727767999999969],[-70.073897999999929,70.687484999999924],[-70.084732000000031,70.683594000000028],[-70.121658000000025,70.67164600000001],[-70.21055599999994,70.646103000000096],[-70.225554999999929,70.641936999999984],[-70.244995000000017,70.638321000000133],[-70.277221999999995,70.636107999999979],[-70.33805799999999,70.637496999999996],[-70.353332999999964,70.638885000000073],[-70.407775999999956,70.638885000000073],[-70.423324999999977,70.636932000000115],[-70.454726999999991,70.627762000000075],[-70.473052999999993,70.617203000000018],[-70.476943999999946,70.612197999999978],[-70.478881999999999,70.606644000000017],[-70.460555999999997,70.574158000000068],[-70.442764000000011,70.561920000000043],[-70.424164000000019,70.551926000000037],[-70.411391999999978,70.542205999999908],[-70.404723999999931,70.536377000000073],[-70.400283999999999,70.530273000000079],[-70.397507000000019,70.524155000000121],[-70.401672000000019,70.519150000000081],[-70.407775999999956,70.514160000000004],[-70.423324999999977,70.506943000000092],[-70.467223999999987,70.493866000000082],[-70.482223999999917,70.490540000000067],[-70.490829000000019,70.486649],[-70.494445999999982,70.484984999999995],[-70.49610899999999,70.479430999999977],[-70.488892000000021,70.476929000000098],[-70.477782999999988,70.47554000000008],[-70.459166999999979,70.47554000000008],[-70.441375999999934,70.477203000000031],[-70.309722999999963,70.498031999999967],[-70.316665999999998,70.528594999999939],[-70.320007000000032,70.536926000000051],[-70.331679999999949,70.548599000000081],[-70.348617999999931,70.559707999999944],[-70.371108999999933,70.573608000000036],[-70.344451999999933,70.613037000000134],[-70.158339999999953,70.615540000000124],[-70.092498999999975,70.612197999999978],[-70.023330999999985,70.610535000000084],[-69.99221799999998,70.645828000000051],[-69.987777999999935,70.649993999999992],[-69.978607000000011,70.653320000000008],[-69.875823999999909,70.677200000000028],[-69.775832999999977,70.682205000000067],[-69.651397999999972,70.725540000000024],[-69.649169999999913,70.731094000000041],[-69.644729999999981,70.741088999999931],[-69.638610999999969,70.746933000000126],[-69.619995000000017,70.758040999999935],[-69.569167999999934,70.771927000000119],[-69.53832999999986,70.778595000000109],[-69.469727000000034,70.790543000000127],[-69.451401000000033,70.791931000000034],[-69.242766999999958,70.782486000000006],[-69.226943999999946,70.77998400000007],[-69.215012000000002,70.776093000000003],[-69.190552000000025,70.766937000000041],[-69.131942999999978,70.737488000000099],[-68.958053999999947,70.688582999999994],[-68.928329000000019,70.681656000000089],[-68.664444000000003,70.626923000000147],[-68.61860699999994,70.62052900000009],[-68.582503999999972,70.617751999999996],[-68.549727999999959,70.613602000000014],[-68.515288999999996,70.609146000000067],[-68.484726000000023,70.604156000000046],[-68.390563999999983,70.582214000000135],[-68.325561999999934,70.566665999999941],[-68.313889000000017,70.563034000000016],[-68.293610000000001,70.551376000000005],[-68.284164000000033,70.540543000000014],[-68.279174999999952,70.531097000000045],[-68.279449,70.519440000000088],[-68.281386999999938,70.51249700000011],[-68.289718999999991,70.500000000000114],[-68.296111999999994,70.494141000000127],[-68.31361400000003,70.484711000000061],[-68.331680000000006,70.476379000000065],[-68.371932999999956,70.455826000000002],[-68.446654999999964,70.413040000000137],[-68.451400999999976,70.409424000000115],[-68.453613000000018,70.403870000000097],[-68.451950000000011,70.392212000000086],[-68.449158000000011,70.384155000000078],[-68.448607999999979,70.375259000000142],[-68.451675000000023,70.372482000000048],[-68.458618000000001,70.369431000000077],[-68.485000999999954,70.367752000000053],[-68.495270000000005,70.368590999999981],[-68.506393000000003,70.371093999999971],[-68.519454999999994,70.37414600000011],[-68.561385999999914,70.389709000000096],[-68.571121000000005,70.393326000000059],[-68.575835999999924,70.396102999999982],[-68.580840999999964,70.404160000000104],[-68.580565999999976,70.415817000000061],[-68.569732999999985,70.426376000000118],[-68.556106999999997,70.435257000000036],[-68.549987999999985,70.440811000000053],[-68.548049999999932,70.447754000000032],[-68.556945999999982,70.461929000000112],[-68.564712999999927,70.466385000000059],[-68.582503999999972,70.464432000000102],[-68.621657999999968,70.45277400000009],[-68.650833000000034,70.441925000000026],[-68.654174999999896,70.439148000000102],[-68.661666999999909,70.431090999999924],[-68.666655999999989,70.422211000000118],[-68.670273000000009,70.408874999999966],[-68.670836999999949,70.404160000000104],[-68.664444000000003,70.384994999999947],[-68.657226999999978,70.375809000000004],[-68.651947000000007,70.359420999999941],[-68.650557999999933,70.349991000000045],[-68.651107999999965,70.345824999999991],[-68.653884999999946,70.341369999999984],[-68.65695199999999,70.33859300000006],[-68.664169000000015,70.335541000000148],[-68.682495000000017,70.329437000000098],[-68.735549999999876,70.317764000000068],[-68.784164000000033,70.310256999999979],[-68.906951999999933,70.293869000000086],[-68.941375999999991,70.29304500000012],[-69.071945000000028,70.28804000000008],[-69.235001000000011,70.270264000000111],[-69.283889999999985,70.264709000000039],[-69.473891999999978,70.238876000000062],[-69.639998999999875,70.204712000000086],[-69.668059999999969,70.198593000000017],[-69.823897999999986,70.155823000000112],[-69.829453000000001,70.15415999999999],[-69.836120999999991,70.150543000000027],[-69.839721999999938,70.144150000000081],[-69.840835999999911,70.141937000000098],[-69.839721999999938,70.134430000000009],[-69.843062999999972,70.121917999999994],[-69.848891999999978,70.116088999999988],[-69.856948999999929,70.110809000000074],[-69.875823999999909,70.101929000000041],[-69.917769999999962,70.085541000000035],[-69.946655000000021,70.076385000000073],[-69.96833799999996,70.074706999999933],[-69.990279999999927,70.074432000000115],[-70.037780999999995,70.072220000000073],[-70.073059000000001,70.069153000000142],[-70.086120999999991,70.066666000000055],[-70.096953999999982,70.063309000000118],[-70.141387999999949,70.043319999999994],[-70.174438000000009,70.034987999999998],[-70.182769999999891,70.031096999999932],[-70.185546999999985,70.028046000000131],[-70.182769999999891,70.021378000000141],[-70.169997999999964,70.014434999999992],[-70.15449499999994,70.015160000000094],[-70.147506999999962,70.015488000000062],[-70.139502999999934,70.017159000000106],[-70.113327000000027,70.02388000000002],[-70.103058000000033,70.028595000000053],[-70.089995999999985,70.036102000000028],[-70.088897999999915,70.038315000000125],[-70.077498999999989,70.049712999999997],[-70.066955999999948,70.053589000000045],[-70.049987999999871,70.057205000000067],[-70.028610000000015,70.058868000000018],[-70.020279000000016,70.058594000000085],[-69.901107999999965,70.048325000000034],[-69.892226999999934,70.045822000000101],[-69.884734999999921,70.042755],[-69.853607000000011,70.029709000000025],[-69.83555599999994,70.020263999999997],[-69.827498999999989,70.014434999999992],[-69.820846999999958,70.008041000000105],[-69.813048999999921,69.99859600000002],[-69.812209999999993,69.991089000000102],[-69.815552000000025,69.984711000000118],[-69.822509999999909,69.981659000000036],[-69.837508999999955,69.978317000000118],[-69.851395000000025,69.978317000000118],[-69.897507000000019,69.983047000000113],[-69.93638599999997,69.98942599999998],[-69.963332999999977,69.991653000000042],[-69.981383999999991,69.991653000000042],[-70.00306699999993,69.989700000000084],[-70.057494999999903,69.981093999999985],[-70.098891999999921,69.973602000000085],[-70.164443999999889,69.961655000000121],[-70.218886999999938,69.941650000000095],[-70.223327999999981,69.938034000000016],[-70.223891999999978,69.929703000000131],[-70.218062999999972,69.925262000000032],[-70.216110000000015,69.92053199999998],[-70.220276000000013,69.915543000000014],[-70.228607000000011,69.911651999999947],[-70.291381999999999,69.889435000000105],[-70.384170999999981,69.860535000000027],[-70.401397999999972,69.859146000000067],[-70.422225999999966,69.860809000000131],[-70.432495000000017,69.862487999999985],[-70.443877999999927,69.860535000000027],[-70.450561999999991,69.857208000000071],[-70.467223999999987,69.844711000000132],[-70.468612999999948,69.842758000000003],[-70.460280999999952,69.841660000000104],[-70.436935000000005,69.839431999999931],[-70.412215999999944,69.837769000000037],[-70.396118000000001,69.837203999999986],[-70.384170999999981,69.837203999999986],[-70.372771999999884,69.838318000000129],[-70.355834999999956,69.841370000000097],[-70.343613000000005,69.845260999999937],[-70.255279999999914,69.879149999999981],[-70.192764000000011,69.907761000000107],[-70.136948000000018,69.933318999999983],[-70.126098999999954,69.940536000000122],[-70.098617999999988,69.953049000000021],[-70.076675000000023,69.958037999999988],[-70.059433000000013,69.959716999999955],[-69.978607000000011,69.964157],[-69.941939999999988,69.963043000000027],[-69.925003000000004,69.961105000000089],[-69.896956999999986,69.956100000000049],[-69.868057000000022,69.953323000000125],[-69.837508999999955,69.952773999999977],[-69.813109999999995,69.955429000000095],[-69.777221999999995,69.963608000000022],[-69.750838999999928,69.972488000000055],[-69.745543999999938,69.974701000000039],[-69.738051999999925,69.981369000000029],[-69.735549999999932,69.985535000000084],[-69.735275000000001,69.990539999999953],[-69.739440999999999,70.001389000000017],[-69.744155999999975,70.008041000000105],[-69.760009999999966,70.017487000000074],[-69.769454999999937,70.021378000000141],[-69.781112999999948,70.024993999999992],[-69.795546999999999,70.031661999999983],[-69.804717999999866,70.038879000000065],[-69.808884000000035,70.049712999999997],[-69.806945999999982,70.055251999999996],[-69.792770000000019,70.080826000000002],[-69.790282999999931,70.084991000000002],[-69.783889999999985,70.089432000000102],[-69.740829000000019,70.114151000000049],[-69.675826999999913,70.139708999999982],[-69.653335999999911,70.14498900000001],[-69.426101999999958,70.176086000000112],[-69.404175000000009,70.177765000000136],[-69.21945199999999,70.188309000000004],[-69.18249499999996,70.187195000000031],[-69.169997999999907,70.18609600000002],[-69.154723999999987,70.183318999999983],[-69.011123999999995,70.178314000000114],[-68.936934999999949,70.193039000000056],[-68.859160999999858,70.203048999999965],[-68.839172000000019,70.203598000000056],[-68.697220000000016,70.203873000000101],[-68.682770000000005,70.203598000000056],[-68.678329000000019,70.202484000000084],[-68.676391999999964,70.201660000000118],[-68.647507000000019,70.158324999999991],[-68.642501999999979,70.149429000000055],[-68.645003999999915,70.145264000000054],[-68.741378999999995,70.065262000000075],[-68.746658000000025,70.062484999999981],[-68.783066000000019,70.044433999999967],[-68.800551999999982,70.037490999999989],[-68.813323999999966,70.032760999999994],[-68.868056999999965,70.016937000000041],[-68.900283999999942,70.011658000000068],[-68.954453000000001,70.00471500000009],[-69.088608000000022,69.974991000000045],[-69.15306099999998,69.953049000000021],[-69.313109999999938,69.882294000000059],[-69.346114999999998,69.855545000000006],[-69.370543999999938,69.83998100000008],[-69.398055999999997,69.828598000000056],[-69.426940999999943,69.819716999999969],[-69.439712999999927,69.816376000000105],[-69.460555999999997,69.813309000000004],[-69.474716000000001,69.813599000000011],[-69.516953000000001,69.819992000000127],[-69.543335000000013,69.826934999999935],[-69.565826000000015,69.834152000000074],[-69.580841000000021,69.836928999999998],[-69.683884000000035,69.83998100000008],[-69.713897999999972,69.83998100000008],[-69.744995000000017,69.837769000000037],[-69.760009999999966,69.834991000000002],[-69.770844000000011,69.831940000000031],[-69.805832000000009,69.819992000000127],[-69.827788999999996,69.809418000000107],[-69.844161999999926,69.800261999999975],[-69.855834999999956,69.793593999999985],[-69.87249799999995,69.781096999999988],[-69.998046999999985,69.669983000000116],[-70,69.66415400000011],[-70.000838999999985,69.656097000000102],[-70.00140399999998,69.622757000000036],[-69.998885999999914,69.616089000000102],[-69.990554999999915,69.614990000000091],[-69.944442999999978,69.649719000000005],[-69.816956000000005,69.724426000000051],[-69.810821999999973,69.72886699999998],[-69.808334000000002,69.733046999999999],[-69.808334000000002,69.73803700000002],[-69.81471299999987,69.75471500000009],[-69.815001999999993,69.760269000000108],[-69.814163000000008,69.763884999999959],[-69.805557000000022,69.772491000000059],[-69.783066000000019,69.785812000000021],[-69.764724999999999,69.795531999999923],[-69.754455999999948,69.799712999999997],[-69.741942999999992,69.803589000000102],[-69.730835000000013,69.806090999999981],[-69.713333000000034,69.807479999999998],[-69.643065999999976,69.810806000000014],[-69.602782999999988,69.809708000000114],[-69.572783999999899,69.80442800000003],[-69.561110999999983,69.799988000000042],[-69.545273000000009,69.794434000000024],[-69.489989999999921,69.779709000000082],[-69.45666499999993,69.775818000000015],[-69.446655000000021,69.775543000000027],[-69.409163999999976,69.776381999999955],[-69.395844000000011,69.777771000000143],[-69.384734999999921,69.780823000000055],[-69.378051999999968,69.783875000000023],[-69.313889000000017,69.816376000000105],[-69.291381999999999,69.831099999999935],[-69.279448999999943,69.84248400000007],[-69.26916499999993,69.852768000000083],[-69.253066999999987,69.862198000000149],[-69.200561999999877,69.883606000000043],[-69.188048999999978,69.887771999999984],[-69.101943999999946,69.916091999999992],[-69.076674999999966,69.923874000000126],[-68.945540999999992,69.949997000000053],[-68.933884000000035,69.951096000000064],[-68.870270000000005,69.953049000000021],[-68.801940999999886,69.952208999999982],[-68.76666299999988,69.948868000000118],[-68.751953000000015,69.946639999999945],[-68.622817999999938,69.98240699999991],[-68.471664000000033,70.046646000000067],[-68.338333000000034,70.064148000000102],[-68.241378999999995,70.095825000000048],[-68.221389999999985,70.102768000000026],[-68.207229999999981,70.109420999999998],[-68.196380999999974,70.119431000000077],[-68.193603999999993,70.123596000000077],[-68.203338999999971,70.128860000000088],[-68.229445999999939,70.135269000000108],[-68.268616000000009,70.13749700000011],[-68.290832999999907,70.137207000000046],[-68.308333999999945,70.135269000000108],[-68.320557000000008,70.135543999999982],[-68.333618000000001,70.139160000000004],[-68.349166999999852,70.168045000000063],[-68.348617999999988,70.172760000000096],[-68.345275999999956,70.188034000000016],[-68.318618999999956,70.218596999999988],[-68.31361400000003,70.222214000000122],[-68.160004000000015,70.282761000000107],[-68.039443999999946,70.301376000000005],[-67.808043999999938,70.262496999999996],[-67.794723999999974,70.258881000000088],[-67.774170000000026,70.250549000000092],[-67.768065999999976,70.243866000000139],[-67.760009999999909,70.229706000000022],[-67.740554999999858,70.218872000000147],[-67.697219999999959,70.202209000000096],[-67.674437999999952,70.193587999999977],[-67.648055999999997,70.18609600000002],[-67.591674999999952,70.165267999999969],[-67.575561999999934,70.158324999999991],[-67.556945999999982,70.149155000000121],[-67.528335999999967,70.133881000000031],[-67.412215999999944,70.068878000000097],[-67.404723999999987,70.06442300000009],[-67.378052000000025,70.048035000000027],[-67.242492999999968,69.958327999999995],[-67.222778000000005,69.943863000000079],[-67.216949,69.937759000000028],[-67.152495999999985,69.817764000000011],[-67.148620999999991,69.810257000000092],[-67.127776999999867,69.726929000000041],[-67.193603999999993,69.721924000000001],[-67.371384000000035,69.714432000000045],[-67.391113000000018,69.713882000000012],[-67.406951999999876,69.714705999999978],[-67.436110999999926,69.719147000000078],[-67.499999999999943,69.731833999999992],[-67.602492999999924,69.750275000000101],[-67.761123999999995,69.778595000000109],[-67.77305599999994,69.779434000000094],[-67.81082200000003,69.778869999999927],[-67.99610899999999,69.774429000000055],[-68.013061999999991,69.771927000000119],[-68.087783999999999,69.756104000000107],[-68.208054000000004,69.715546000000018],[-68.216659999999933,69.71026599999999],[-68.222777999999948,69.704711999999972],[-68.228606999999897,69.691360000000145],[-68.230285999999978,69.684418000000051],[-68.24110399999995,69.674987999999985],[-68.31138599999997,69.633331000000112],[-68.323623999999995,69.628860000000032],[-68.329453000000001,69.627762000000132],[-68.352782999999988,69.626923000000147],[-68.496383999999978,69.625809000000004],[-68.518065999999919,69.626083000000108],[-68.620269999999891,69.637206999999989],[-68.64527899999996,69.641098000000056],[-68.839995999999985,69.616089000000102],[-68.980834999999956,69.589157],[-69.188599000000011,69.54193099999992],[-69.201110999999912,69.538040000000024],[-69.220001000000025,69.535812000000078],[-69.325012000000015,69.532486000000063],[-69.342772999999966,69.532486000000063],[-69.364165999999955,69.53776600000009],[-69.410277999999948,69.546097000000032],[-69.426940999999943,69.548035000000141],[-69.549438000000009,69.560531999999967],[-69.630829000000006,69.56721500000009],[-69.688889000000017,69.569443000000092],[-69.737777999999992,69.568329000000062],[-69.75111400000003,69.56721500000009],[-69.838608000000022,69.558868000000132],[-70.030837999999903,69.536102000000085],[-70.028610000000015,69.530823000000112],[-70.025283999999999,69.527481000000023],[-70.011123999999995,69.521103000000039],[-69.995543999999995,69.517211999999972],[-69.964721999999995,69.513885000000016],[-69.899444999999957,69.507217000000082],[-69.885833999999988,69.507217000000082],[-69.866942999999878,69.509430000000009],[-69.844161999999926,69.517487000000017],[-69.824448000000018,69.527205999999978],[-69.815826000000015,69.530548000000124],[-69.803878999999995,69.534988000000112],[-69.789443999999946,69.538589000000002],[-69.732773000000009,69.545258000000047],[-69.698607999999922,69.548324999999977],[-69.68499799999995,69.548874000000126],[-69.663329999999917,69.548324999999977],[-69.613891999999908,69.54304500000012],[-69.506957999999997,69.529433999999924],[-69.449996999999883,69.518875000000094],[-69.375823999999909,69.509720000000016],[-69.343062999999972,69.505828999999949],[-69.323333999999988,69.505264000000125],[-69.299987999999928,69.506103999999993],[-69.206664999999987,69.514998999999989],[-69.151671999999905,69.520264000000054],[-69.005844000000025,69.535812000000078],[-68.995270000000005,69.539703000000145],[-68.982223999999974,69.547211000000004],[-68.971389999999985,69.555817000000104],[-68.957229999999981,69.560531999999967],[-68.926101999999901,69.566665999999998],[-68.76945499999988,69.587494000000049],[-68.752501999999879,69.589431999999988],[-68.6683349999999,69.590820000000065],[-68.611938000000009,69.587494000000049],[-68.544723999999917,69.579987000000131],[-68.528060999999923,69.577208999999925],[-68.317229999999881,69.530273000000079],[-68.293334999999956,69.523604999999918],[-68.181945999999982,69.49832200000003],[-68.02555799999999,69.466095000000053],[-67.982223999999974,69.457489000000123],[-67.946105999999929,69.454712000000029],[-67.926392000000021,69.454163000000108],[-67.893340999999964,69.454437000000041],[-67.874161000000015,69.456649999999968],[-67.861937999999952,69.460266000000047],[-67.840835999999967,69.469436999999971],[-67.819457999999941,69.476929000000098],[-67.806945999999868,69.480819999999994],[-67.792220999999984,69.48414600000001],[-67.604996000000028,69.478043000000071],[-67.562209999999993,69.471924000000058],[-67.511672999999973,69.466095000000053],[-67.475829999999974,69.463042999999914],[-67.432770000000005,69.463318000000129],[-67.305266999999958,69.467209000000025],[-67.258347000000015,69.467484000000013],[-67.210006999999962,69.46138000000002],[-67.180832000000009,69.454712000000029],[-66.921111999999994,69.379150000000095],[-66.795546999999885,69.341094999999996],[-66.785277999999948,69.337204000000099],[-66.774444999999957,69.331940000000088],[-66.767226999999934,69.327484000000027],[-66.694992000000013,69.281661999999983],[-66.682769999999948,69.270264000000111],[-66.650283999999942,69.236374000000012],[-66.645844000000011,69.224991000000045],[-66.646666999999979,69.203598000000113],[-66.658614999999941,69.188309000000004],[-66.668335000000013,69.178314000000114],[-66.689437999999939,69.161926000000051],[-66.720001000000025,69.144150000000081],[-66.730559999999969,69.138885000000016],[-66.75306699999993,69.129424999999969],[-66.758620999999948,69.128036000000122],[-66.776107999999965,69.128860000000088],[-66.837219000000005,69.135818000000086],[-66.84944200000001,69.138321000000076],[-66.912780999999995,69.154984000000127],[-66.928328999999906,69.164153999999996],[-66.953339000000028,69.172211000000004],[-66.965285999999992,69.174423000000047],[-66.996947999999975,69.177764999999965],[-67.132767000000001,69.182479999999998],[-67.371932999999956,69.184417999999937],[-67.385558999999944,69.183868000000132],[-67.414718999999991,69.178314000000114],[-67.427215999999987,69.174423000000047],[-67.458892999999932,69.162491000000102],[-67.466109999999958,69.160812000000078],[-67.50556899999998,69.157486000000063],[-67.521117999999944,69.15776100000005],[-67.648620999999991,69.166931000000091],[-67.676391999999964,69.169434000000081],[-67.864166000000012,69.221924000000115],[-68.18447900000001,69.308014000000014],[-68.209732000000031,69.311370999999951],[-68.221663999999976,69.312194999999917],[-68.232772999999952,69.311370999999951],[-68.251953000000015,69.309708000000057],[-68.285278000000005,69.304428000000144],[-68.31082200000003,69.298598999999967],[-68.327498999999989,69.296097000000088],[-68.344161999999983,69.294708000000071],[-68.355835000000013,69.294144000000131],[-68.375548999999921,69.294708000000071],[-68.464721999999938,69.301651000000049],[-68.675277999999992,69.322220000000016],[-68.740279999999984,69.330551000000128],[-68.811935000000005,69.341933999999924],[-68.84445199999999,69.346100000000035],[-68.944716999999912,69.354980000000069],[-68.962783999999999,69.356369000000029],[-68.984436000000017,69.356934000000081],[-69.015015000000005,69.354980000000069],[-69.040282999999988,69.349716000000058],[-69.176665999999955,69.310806000000127],[-69.203063999999927,69.303040000000067],[-69.241378999999881,69.284149000000014],[-69.253890999999953,69.27526899999998],[-69.25778200000002,69.270264000000111],[-69.25167799999997,69.263610999999969],[-69.246947999999975,69.261107999999979],[-69.235001000000011,69.259720000000073],[-69.221938999999963,69.261658000000011],[-69.213057999999933,69.264709000000039],[-69.203339000000028,69.269989000000123],[-69.197768999999994,69.275542999999914],[-69.176392000000021,69.287490999999989],[-69.156386999999938,69.297484999999995],[-69.146118000000001,69.300537000000077],[-69.133330999999998,69.303314],[-69.013335999999981,69.327484000000027],[-68.956664999999873,69.331940000000088],[-68.941100999999946,69.332489000000066],[-68.921386999999868,69.331940000000088],[-68.658339999999896,69.300262000000089],[-68.537216000000001,69.285262999999986],[-68.504729999999995,69.280272999999966],[-68.330565999999919,69.27526899999998],[-68.251953000000015,69.27748100000008],[-68.230835000000013,69.277771000000087],[-68.198607999999979,69.274703999999986],[-68.172225999999966,69.269714000000079],[-68.159438999999963,69.266098000000056],[-68.14834599999989,69.261658000000011],[-68.139724999999885,69.257766999999944],[-68.088608000000022,69.228867000000093],[-68.083618000000001,69.225540000000137],[-68.077498999999875,69.21748400000007],[-68.081679999999949,69.211928999999998],[-68.091384999999946,69.205551000000071],[-68.103881999999999,69.202209000000096],[-68.129715000000033,69.197754000000089],[-68.163054999999929,69.199997000000053],[-68.263061999999991,69.211380000000077],[-68.410827999999924,69.221374999999966],[-68.549987999999985,69.226928999999984],[-68.643616000000009,69.229431000000034],[-68.664444000000003,69.228043000000127],[-68.689986999999917,69.223602000000028],[-68.839721999999938,69.214706000000092],[-68.923049999999989,69.220825000000104],[-68.967772999999966,69.221099999999979],[-68.948333999999875,69.214156999999943],[-68.93971299999987,69.211928999999998],[-68.913054999999986,69.20748900000001],[-68.862777999999992,69.201934999999992],[-68.80749499999996,69.198868000000061],[-68.788054999999986,69.198318000000029],[-68.767226999999991,69.199707000000046],[-68.737777999999992,69.203598000000113],[-68.704726999999991,69.209152000000074],[-68.65695199999999,69.210541000000092],[-68.618057000000022,69.209152000000074],[-68.515015000000005,69.20248400000014],[-68.502501999999993,69.198593000000074],[-68.505279999999914,69.195815999999979],[-68.513901000000033,69.191925000000083],[-68.690551999999968,69.141098],[-68.707229999999925,69.138321000000076],[-68.872771999999998,69.120529000000033],[-68.998046999999985,69.103591999999992],[-68.961670000000026,69.103867000000037],[-68.929717999999923,69.100266000000147],[-68.926940999999943,69.098328000000038],[-68.926666000000012,69.079987000000017],[-68.957779000000016,69.005264000000011],[-68.958892999999989,69.003052000000139],[-68.969161999999926,68.993591000000038],[-68.994155999999919,68.982483000000002],[-69.006118999999956,68.978317000000118],[-69.018889999999885,68.975815000000068],[-69.028885000000002,68.971375000000023],[-69.025833000000034,68.968597000000045],[-69.017501999999979,68.966385000000002],[-69.005568999999923,68.964705999999978],[-68.998046999999985,68.964995999999985],[-68.973052999999993,68.970824999999991],[-68.962783999999999,68.974701000000039],[-68.946380999999917,68.982483000000002],[-68.930557000000022,68.992752000000053],[-68.920272999999952,69.00277699999998],[-68.89416499999993,69.044982999999945],[-68.89416499999993,69.050537000000134],[-68.892226999999991,69.062194999999974],[-68.889724999999999,69.066376000000048],[-68.881942999999865,69.07777400000009],[-68.879165999999941,69.081374999999923],[-68.872497999999894,69.084991000000002],[-68.858336999999892,69.088318000000129],[-68.753615999999965,69.109711000000061],[-68.471114999999998,69.166381999999999],[-68.412780999999939,69.176926000000037],[-68.381377999999927,69.175262000000032],[-68.351394999999968,69.171646000000123],[-68.178329000000019,69.14665199999996],[-68.089447000000007,69.126082999999994],[-67.725280999999939,69.032211000000132],[-67.715012000000002,69.029160000000104],[-67.708054000000004,69.024704000000042],[-67.705840999999964,69.01638800000012],[-67.721114999999941,69.009720000000129],[-67.974715999999944,68.9727630000001],[-68.029448999999943,68.971375000000023],[-68.058884000000035,68.973602000000085],[-68.211120999999935,68.991928000000087],[-68.241378999999995,68.996933000000126],[-68.268065999999976,69.00277699999998],[-68.314162999999951,69.010544000000095],[-68.335007000000019,69.009155000000078],[-68.535552999999879,68.984146000000123],[-68.548614999999984,68.982208000000014],[-68.552779999999984,68.977203000000145],[-68.554717999999923,68.971100000000035],[-68.556106999999997,68.964157],[-68.545272999999952,68.959717000000012],[-68.440552000000025,68.9727630000001],[-68.337509000000011,68.985809000000074],[-68.320281999999963,68.986374000000069],[-68.303054999999972,68.985809000000074],[-68.290557999999976,68.982208000000014],[-68.285278000000005,68.977478000000133],[-68.28443900000002,68.974701000000039],[-68.264175000000023,68.964705999999978],[-68.196945000000028,68.94999700000011],[-68.186661000000015,68.947754000000145],[-68.169448999999986,68.946930000000009],[-68.152221999999938,68.946930000000009],[-68.116104000000007,68.94747899999993],[-68.081679999999949,68.94747899999993],[-68.064163000000008,68.946091000000024],[-68.048339999999996,68.943863000000079],[-68.039992999999981,68.941360000000088],[-67.974715999999944,68.865265000000079],[-67.972778000000005,68.859146000000067],[-67.977492999999981,68.855545000000006],[-67.986938000000009,68.854431000000034],[-68.006118999999899,68.854979999999955],[-68.082229999999981,68.862487999999985],[-68.129165999999998,68.867751999999996],[-68.18360899999999,68.878586000000041],[-68.242217999999866,68.889984000000027],[-68.256119000000012,68.892212000000029],[-68.289444000000003,68.894989000000123],[-68.37388599999997,68.897217000000069],[-68.475280999999995,68.899429000000112],[-68.489990000000034,68.897491000000002],[-68.491668999999945,68.896652000000017],[-68.488892000000021,68.893326000000002],[-68.48582499999992,68.89027400000009],[-68.477218999999934,68.886932000000115],[-68.463333000000034,68.885544000000039],[-68.43249499999996,68.883331000000055],[-68.373046999999929,68.88220200000012],[-68.353606999999954,68.88108799999992],[-68.293059999999969,68.874984999999981],[-68.266662999999994,68.869980000000112],[-68.179717999999923,68.851928999999984],[-68.133895999999936,68.837203999999986],[-68.008347000000015,68.816666000000112],[-67.972778000000005,68.811920000000043],[-67.955565999999976,68.810257000000092],[-67.916945999999939,68.808318999999983],[-67.886672999999917,68.808868000000075],[-67.861389000000031,68.805542000000059],[-67.778335999999911,68.786102000000085],[-67.771941999999967,68.78276100000005],[-67.771392999999932,68.781372000000033],[-67.774718999999948,68.77915999999999],[-67.803329000000019,68.774155000000121],[-67.820006999999976,68.772766000000104],[-67.857772999999952,68.771378000000027],[-67.872771999999998,68.771652000000131],[-67.915008999999998,68.774155000000121],[-67.944442999999922,68.778046000000018],[-68.076110999999969,68.80192599999998],[-68.170836999999892,68.814697000000081],[-68.352218999999934,68.832488999999953],[-68.426392000000021,68.839157000000114],[-68.546660999999972,68.84664900000007],[-68.565551999999968,68.847214000000122],[-68.58805799999999,68.846374999999966],[-68.606109999999887,68.842758000000003],[-68.610549999999989,68.839157000000114],[-68.611663999999962,68.835815000000025],[-68.604445999999939,68.83137499999998],[-68.593886999999995,68.827484000000084],[-68.557769999999948,68.821380999999974],[-68.52694699999995,68.795258000000047],[-68.602492999999924,68.794983000000002],[-68.678878999999938,68.796646000000123],[-68.795273000000009,68.799423000000047],[-68.807220000000029,68.800261999999975],[-68.900283999999942,68.80720500000001],[-68.967498999999918,68.814697000000081],[-68.995270000000005,68.819153000000028],[-69.00389100000001,68.822220000000129],[-69.015015000000005,68.827209000000096],[-69.105835000000013,68.848602000000028],[-69.25111400000003,68.872481999999991],[-69.28083799999996,68.875809000000118],[-69.323058999999944,68.876648000000102],[-69.361938000000009,68.874146000000053],[-69.378051999999968,68.871368000000018],[-69.389998999999989,68.867476999999951],[-69.398055999999997,68.862198000000149],[-69.394454999999994,68.85775799999999],[-69.379990000000021,68.854979999999955],[-69.36082499999992,68.854431000000034],[-69.331679999999949,68.856934000000024],[-69.279448999999943,68.855255],[-69.245543999999882,68.851379000000122],[-69.185546999999985,68.842209000000082],[-69.171111999999994,68.838882000000126],[-69.162215999999944,68.835815000000025],[-69.152221999999938,68.828048999999965],[-69.153884999999946,68.827209000000096],[-69.163054999999986,68.826096000000007],[-69.229996000000028,68.827209000000096],[-69.294158999999922,68.831940000000031],[-69.315001999999993,68.831664999999987],[-69.357773000000009,68.829163000000108],[-69.368606999999997,68.827209000000096],[-69.375548999999978,68.824997000000053],[-69.382767000000001,68.819153000000028],[-69.383895999999993,68.816376000000105],[-69.381377999999984,68.814986999999917],[-69.37110899999999,68.812759000000142],[-69.193603999999993,68.804153000000042],[-68.971114999999998,68.791931000000091],[-68.959166999999923,68.789703000000145],[-68.944992000000013,68.786926000000051],[-68.942490000000021,68.784988000000112],[-68.196380999999974,68.706940000000145],[-68.049437999999952,68.681655999999975],[-68.044998000000021,68.678314000000057],[-68.046111999999937,68.676376000000062],[-68.087508999999955,68.629425000000083],[-68.094451999999933,68.627762000000132],[-68.34445199999999,68.628586000000098],[-68.56220999999988,68.651931999999988],[-68.621933000000013,68.655823000000055],[-68.657776000000013,68.656372000000147],[-68.680283000000031,68.65554800000001],[-68.747771999999941,68.649155000000064],[-68.777785999999935,68.643051000000014],[-68.89416499999993,68.607208000000014],[-68.902495999999985,68.603592000000106],[-68.900283999999942,68.603043000000014],[-68.835830999999985,68.589157],[-68.804169000000002,68.589980999999966],[-68.757674999999949,68.600646999999981],[-68.749343999999951,68.602654000000143],[-68.735001000000011,68.607314999999971],[-68.711165999999992,68.621147000000121],[-68.679992999999911,68.630814000000044],[-68.647507000000019,68.635544000000095],[-68.62860099999989,68.635544000000095],[-68.594161999999926,68.633605999999986],[-68.563048999999921,68.629425000000083],[-68.533324999999991,68.624985000000038],[-68.481383999999935,68.614990000000148],[-68.475280999999995,68.61303700000002],[-68.470276000000013,68.609146000000123],[-68.46945199999999,68.606369000000029],[-68.483321999999987,68.596939000000134],[-68.50389100000001,68.589980999999966],[-68.519454999999994,68.585815000000082],[-68.533889999999928,68.583878000000027],[-68.605834999999956,68.578872999999987],[-68.648345999999947,68.577773999999977],[-68.660004000000015,68.578872999999987],[-68.682883999999945,68.575211000000024],[-68.69506100000001,68.574379000000135],[-68.707053999999971,68.57337200000012],[-68.712387000000035,68.572044000000005],[-68.716064000000017,68.569382000000019],[-68.716727999999932,68.568047000000035],[-68.707053999999971,68.5660400000001],[-68.696724000000017,68.565207999999984],[-68.656113000000005,68.559708000000001],[-68.460007000000019,68.562195000000088],[-68.447220000000016,68.563599000000067],[-68.435271999999941,68.567490000000134],[-68.427215999999987,68.571930000000009],[-68.422774999999945,68.576096000000064],[-68.420272999999895,68.579711999999915],[-68.419997999999964,68.585266000000104],[-68.416397000000018,68.591369999999984],[-68.396117999999944,68.593048000000067],[-68.337783999999999,68.593323000000112],[-68.244445999999982,68.588043000000027],[-68.215560999999866,68.585541000000148],[-68.136672999999973,68.572220000000016],[-68.06534599999992,68.545822000000044],[-67.920273000000009,68.534424000000001],[-67.866942999999992,68.509720000000073],[-67.809158000000025,68.531097000000102],[-67.673049999999932,68.561096000000077],[-67.664169000000015,68.562759000000028],[-67.643615999999952,68.562759000000028],[-67.539443999999946,68.550812000000064],[-67.52555799999999,68.548598999999911],[-67.500838999999928,68.538315000000068],[-67.492217999999923,68.527206000000035],[-67.493056999999965,68.523604999999975],[-67.502228000000002,68.514999000000046],[-67.510559000000001,68.511382999999967],[-67.51916499999993,68.509155000000021],[-67.543059999999912,68.506103999999993],[-67.607773000000009,68.503876000000048],[-67.621658000000025,68.5],[-67.628052000000025,68.496368000000018],[-67.634734999999921,68.486649],[-67.621383999999978,68.384429999999952],[-67.618606999999997,68.381088000000034],[-67.612502999999947,68.379424999999912],[-67.603332999999907,68.378860000000088],[-67.59445199999999,68.381363000000079],[-67.551102000000014,68.414428999999984],[-67.548339999999996,68.440262000000132],[-67.549437999999896,68.443863000000022],[-67.555832000000009,68.455261000000007],[-67.511123999999938,68.483322000000101],[-67.426102000000014,68.494430999999963],[-67.335555999999997,68.49693300000007],[-67.31639100000001,68.496094000000085],[-67.232497999999964,68.480545000000006],[-67.224166999999966,68.47665400000011],[-67.217498999999918,68.471924000000058],[-67.213622999999927,68.440811000000053],[-67.223052999999993,68.426086000000112],[-67.307770000000005,68.423309000000017],[-67.325835999999981,68.421371000000079],[-67.332779000000016,68.418869000000029],[-67.335830999999985,68.416092000000106],[-67.338608000000022,68.411926000000051],[-67.33805799999999,68.409988000000055],[-67.324448000000018,68.40776100000005],[-67.15695199999999,68.406372000000033],[-67.111938000000009,68.411926000000051],[-67.104996000000028,68.414153999999996],[-67.100554999999929,68.418320000000051],[-67.09722899999997,68.45138500000013],[-67.100280999999995,68.457214000000135],[-67.106658999999866,68.460541000000092],[-67.116652999999985,68.463607999999965],[-67.127212999999983,68.46804800000001],[-67.129990000000021,68.472763000000043],[-67.126937999999996,68.475540000000137],[-67.112777999999992,68.478867000000093],[-66.908050999999944,68.453873000000101],[-66.821395999999993,68.465271000000087],[-66.803054999999972,68.467209000000025],[-66.787506000000008,68.464996000000099],[-66.706954999999994,68.44470200000012],[-66.697768999999937,68.428039999999953],[-66.724166999999909,68.429153000000042],[-66.782775999999956,68.426086000000112],[-66.904998999999918,68.416382000000112],[-66.920546999999942,68.411102000000085],[-66.921660999999915,68.408324999999991],[-66.914168999999902,68.398880000000077],[-66.913054999999986,68.39498900000001],[-66.914444000000003,68.391937000000098],[-66.93638599999997,68.374420000000043],[-66.946654999999907,68.369980000000055],[-66.955001999999979,68.367477000000065],[-67.005843999999968,68.354430999999977],[-67.011123999999938,68.353591999999992],[-67.02416999999997,68.35386699999998],[-67.048889000000031,68.355820000000108],[-67.075561999999934,68.360535000000141],[-67.111388999999974,68.370255000000043],[-67.130279999999914,68.379700000000128],[-67.142226999999991,68.382750999999985],[-67.230559999999969,68.39498900000001],[-67.245543999999995,68.395827999999995],[-67.286391999999978,68.395827999999995],[-67.379715000000033,68.390823000000125],[-67.411117999999931,68.382750999999985],[-67.415557999999976,68.378036000000122],[-67.418883999999991,68.376373000000001],[-67.455565999999919,68.36775200000011],[-67.494719999999973,68.360809000000074],[-67.595276000000013,68.347762999999986],[-67.631667999999991,68.345261000000107],[-67.646117999999944,68.344711000000075],[-67.743880999999988,68.343322999999941],[-67.781386999999938,68.337204000000099],[-67.810546999999985,68.328598],[-67.832229999999925,68.320267000000115],[-67.849730999999963,68.309981999999991],[-67.865829000000019,68.29971299999994],[-67.87110899999999,68.292755],[-67.878326000000015,68.26527400000009],[-67.869720000000029,68.259995000000117],[-67.860001000000011,68.258331000000112],[-67.845551,68.258880999999974],[-67.833327999999938,68.261383000000023],[-67.826675000000023,68.264434999999935],[-67.820281999999906,68.268599999999935],[-67.818068999999923,68.274155000000064],[-67.821120999999948,68.284987999999998],[-67.820557000000008,68.289703000000031],[-67.815551999999968,68.292206000000022],[-67.752501999999993,68.318878000000097],[-67.745269999999891,68.320541000000048],[-67.597778000000005,68.323044000000039],[-67.583069000000023,68.308029000000033],[-67.572234999999978,68.273314999999968],[-67.576675000000023,68.268599999999935],[-67.583327999999995,68.265548999999965],[-67.591674999999952,68.263046000000145],[-67.616394000000014,68.258331000000112],[-67.646666999999979,68.25360100000006],[-67.662780999999995,68.252487000000087],[-67.689437999999996,68.24803200000008],[-67.695267000000001,68.242477000000008],[-67.694992000000013,68.241089000000102],[-67.690826000000015,68.239700000000084],[-67.679717999999923,68.238876000000118],[-67.666945999999996,68.239975000000129],[-67.579726999999934,68.251389000000017],[-67.570846999999901,68.253052000000139],[-67.551666000000012,68.258331000000112],[-67.546950999999979,68.260544000000095],[-67.539169000000015,68.265823000000069],[-67.533066000000019,68.271378000000141],[-67.531112999999948,68.278320000000065],[-67.535004000000015,68.285538000000031],[-67.541381999999999,68.288879000000065],[-67.546111999999937,68.294144000000131],[-67.544997999999964,68.296371000000022],[-67.540282999999931,68.29971299999994],[-67.523894999999982,68.308594000000085],[-67.494155999999975,68.321930000000009],[-67.401947000000007,68.352478000000019],[-67.394729999999981,68.354156000000103],[-67.385558999999944,68.354430999999977],[-67.243880999999988,68.358322000000044],[-67.232497999999964,68.357483000000059],[-67.182495000000017,68.349426000000108],[-67.130279999999914,68.340820000000008],[-67.078063999999927,68.331100000000106],[-67.016113000000018,68.318603999999993],[-67.011672999999917,68.316086000000041],[-67.018340999999964,68.311645999999996],[-67.032500999999968,68.309143000000006],[-67.152221999999995,68.299987999999985],[-67.235000999999954,68.291655999999989],[-67.303878999999938,68.258880999999974],[-67.319732999999985,68.249709999999993],[-67.327788999999939,68.243590999999981],[-67.333617999999944,68.237761999999975],[-67.337509000000011,68.232483000000002],[-67.338897999999915,68.227767999999969],[-67.33944699999995,68.221649000000127],[-67.33944699999995,68.205551000000071],[-67.335007000000019,68.200821000000019],[-67.327498999999932,68.18664600000011],[-67.327788999999939,68.181091000000038],[-67.338608000000022,68.171097000000032],[-67.34584000000001,68.166091999999992],[-67.37110899999999,68.153869999999984],[-67.387787000000003,68.146378000000084],[-67.398620999999878,68.143875000000094],[-67.412505999999951,68.143051000000128],[-67.430283000000031,68.144714000000079],[-67.456954999999994,68.149429000000112],[-67.477782999999988,68.154984000000013],[-67.513901000000033,68.162491000000102],[-67.528885000000002,68.165268000000026],[-67.567779999999971,68.169144000000074],[-67.581116000000009,68.168869000000086],[-67.598891999999978,68.164992999999981],[-67.598342999999943,68.162766000000147],[-67.575561999999934,68.154984000000013],[-67.544723999999917,68.14776599999999],[-67.480285999999978,68.134720000000016],[-67.466949,68.132202000000063],[-67.438048999999978,68.128036000000009],[-67.408050999999944,68.124984999999981],[-67.396956999999929,68.124694999999974],[-67.374161000000015,68.127472000000012],[-67.353881999999999,68.135268999999994],[-67.307770000000005,68.155548000000124],[-67.304168999999945,68.158600000000035],[-67.273894999999925,68.19081100000011],[-67.272781000000009,68.195525999999973],[-67.274718999999891,68.200546000000031],[-67.279175000000009,68.205261000000064],[-67.283614999999998,68.211929000000055],[-67.288894999999968,68.226379000000122],[-67.289444000000003,68.230820000000051],[-67.289444000000003,68.236374000000069],[-67.274718999999891,68.244141000000013],[-67.178878999999995,68.269989000000123],[-67.139724999999999,68.27998400000007],[-67.057769999999891,68.291092000000049],[-67.011397999999986,68.294983000000116],[-66.998336999999935,68.292480000000126],[-66.99110399999995,68.288879000000065],[-66.986114999999984,68.285538000000031],[-66.984160999999972,68.28054800000001],[-66.973617999999988,68.27388000000002],[-66.964721999999995,68.270263999999997],[-66.930572999999924,68.262482000000034],[-66.865828999999962,68.25],[-66.835830999999928,68.246368000000075],[-66.791672000000005,68.244705000000124],[-66.777495999999985,68.243317000000047],[-66.769729999999925,68.241089000000102],[-66.765839000000028,68.238586000000112],[-66.780288999999982,68.207764000000054],[-66.852218999999991,68.115265000000079],[-66.888900999999976,68.092758000000003],[-66.896666999999866,68.089432000000102],[-66.913894999999968,68.084152000000074],[-66.945830999999941,68.076096000000007],[-66.954452999999944,68.071930000000066],[-66.965560999999923,68.063873000000115],[-66.971114999999998,68.053314000000057],[-66.972777999999948,68.048599000000024],[-66.973327999999981,68.039428999999984],[-66.969727000000034,68.034149000000127],[-66.961120999999991,68.024994000000049],[-66.953612999999962,68.017212000000086],[-66.946654999999907,68.013611000000026],[-66.928054999999972,68.042755],[-66.921660999999915,68.049149000000057],[-66.836120999999935,68.095535000000041],[-66.748046999999985,68.131653000000142],[-66.709166999999923,68.141098],[-66.694442999999978,68.143051000000128],[-66.682769999999948,68.141373000000044],[-66.678878999999995,68.138885000000016],[-66.670837000000006,68.128860000000145],[-66.670272999999952,68.114151000000106],[-66.678054999999915,68.043320000000051],[-66.680557000000022,68.036925999999994],[-66.693053999999904,68.022217000000126],[-66.706389999999942,68.011658000000125],[-66.720839999999953,68.001663000000008],[-66.735000999999954,67.982208000000014],[-66.732773000000009,67.981934000000081],[-66.714721999999938,67.983597000000032],[-66.697219999999902,67.987488000000099],[-66.647232000000031,68.015548999999965],[-66.634734999999864,68.064147999999932],[-66.631942999999978,68.075821000000133],[-66.625548999999978,68.103317000000004],[-66.620270000000005,68.125809000000118],[-66.615554999999972,68.132477000000108],[-66.610549999999932,68.136932000000115],[-66.594726999999921,68.143051000000128],[-66.56138599999997,68.147490999999945],[-66.541945999999882,68.148330999999985],[-66.513625999999931,68.148330999999985],[-66.328887999999949,68.132202000000063],[-66.31527699999998,68.130264000000125],[-66.309432999999956,68.127472000000012],[-66.310546999999929,68.118591000000094],[-66.315001999999879,68.112487999999985],[-66.321121000000005,68.106934000000138],[-66.350280999999939,68.090271000000087],[-66.366394000000014,68.083328000000108],[-66.371657999999968,68.081664999999987],[-66.388610999999969,68.08137499999998],[-66.41361999999998,68.086104999999975],[-66.427779999999984,68.087493999999992],[-66.450561999999991,68.086928999999941],[-66.468612999999948,68.083054000000004],[-66.476104999999905,68.080551000000014],[-66.478606999999954,68.077209000000039],[-66.472228999999913,68.073044000000039],[-66.460555999999997,68.070541000000105],[-66.438048999999978,68.068054000000018],[-66.389998999999989,68.069443000000035],[-66.369445999999925,68.071655000000078],[-66.326110999999969,68.079163000000108],[-66.303878999999995,68.083878000000141],[-66.296660999999972,68.086104999999975],[-66.272780999999952,68.087769000000037],[-66.259170999999981,68.085814999999968],[-66.250838999999985,68.082214000000135],[-66.240279999999871,68.073317999999972],[-66.184157999999968,68.018875000000037],[-66.184433000000013,68.013321000000019],[-66.186385999999914,68.010818000000029],[-66.192764000000011,68.007217000000026],[-66.204177999999899,68.00471500000009],[-66.253066999999874,68.00221300000004],[-66.264175000000023,67.99971000000005],[-66.294448999999986,67.991653000000099],[-66.309722999999963,67.986099000000081],[-66.320846999999958,67.97886699999998],[-66.344451999999933,67.956650000000081],[-66.405838000000017,67.898041000000035],[-66.401397999999972,67.888596000000007],[-66.522232000000031,67.860809000000017],[-66.535278000000005,67.863602000000014],[-66.594161999999983,67.872482000000048],[-66.628601000000003,67.876648000000102],[-66.672501000000011,67.880264000000011],[-66.729445999999996,67.878859999999975],[-66.739715999999987,67.877762000000075],[-66.746947999999918,67.875259000000142],[-66.74499499999996,67.872757000000036],[-66.732223999999974,67.867203000000075],[-66.703063999999983,67.863602000000014],[-66.686934999999949,67.862761999999975],[-66.653885000000002,67.859421000000111],[-66.56138599999997,67.843048000000067],[-66.401397999999972,67.811096000000077],[-66.356658999999922,67.821381000000031],[-66.346389999999985,67.861099000000024],[-66.332779000000016,67.887772000000041],[-66.319457999999884,67.911102000000142],[-66.295837000000006,67.938309000000118],[-66.276672000000019,67.954436999999984],[-66.268615999999952,67.958037999999988],[-66.251952999999958,67.962494000000106],[-66.240554999999972,67.962768999999923],[-66.227492999999868,67.959991000000116],[-66.213897999999972,67.960815000000082],[-66.136948000000018,67.976089000000002],[-66.119995000000017,67.981369000000086],[-66.003219999999885,68.020492999999988],[-65.988723999999877,68.026145999999983],[-65.981383999999991,68.029984000000127],[-65.943603999999993,68.046097000000145],[-65.948607999999979,68.09248400000007],[-65.958617999999944,68.129424999999969],[-65.961945000000014,68.13749700000011],[-65.960555999999997,68.144440000000145],[-65.94749499999989,68.154160000000047],[-65.941665999999941,68.157211000000018],[-65.928329000000019,68.162201000000096],[-65.920837000000006,68.161926000000051],[-65.911941999999954,68.15887500000008],[-65.867492999999911,68.124694999999974],[-65.863892000000021,68.119431000000134],[-65.857773000000009,68.110260000000039],[-65.853607000000011,68.078048999999908],[-65.853607000000011,68.073317999999972],[-65.857773000000009,68.067215000000033],[-65.933837999999923,68.01226800000012],[-65.96032699999995,67.996429000000035],[-65.980835000000013,67.987267000000088],[-65.994330999999988,67.979767000000038],[-66.032226999999978,67.952484000000027],[-65.985824999999977,67.916655999999989],[-65.967223999999987,67.853317000000061],[-65.980835000000013,67.842758000000003],[-66.005004999999869,67.814986999999974],[-66.009734999999978,67.803314000000114],[-66.028884999999946,67.724426000000108],[-66.028884999999946,67.719436999999971],[-66.021941999999967,67.650269000000037],[-66.020003999999915,67.635269000000108],[-66.013061999999934,67.626923000000033],[-66.008621000000005,67.625534000000016],[-65.999724999999899,67.627472000000125],[-65.986663999999962,67.635269000000108],[-65.961394999999982,67.689697000000081],[-65.950286999999946,67.722487999999998],[-65.936935000000005,67.765549000000021],[-65.938598999999954,67.77609300000006],[-65.942490000000021,67.780823000000112],[-65.953888000000006,67.798324999999977],[-65.95666499999993,67.811920000000043],[-65.955840999999964,67.818329000000062],[-65.953338999999971,67.821381000000031],[-65.946105999999986,67.82638500000013],[-65.926391999999964,67.832763999999997],[-65.869155999999919,67.844147000000021],[-65.831679999999949,67.854431000000034],[-65.804169000000002,67.863602000000014],[-65.795272999999952,67.868042000000003],[-65.763625999999931,67.909987999999998],[-65.762222000000008,67.914703000000031],[-65.763901000000033,67.919708000000071],[-65.767226999999991,67.923035000000027],[-65.798889000000031,67.938309000000118],[-65.819732999999985,67.955551000000128],[-65.823623999999995,67.962768999999923],[-65.817779999999971,67.968048000000124],[-65.807769999999948,67.971100000000035],[-65.684433000000013,67.992477000000065],[-65.46305799999999,67.996368000000132],[-65.448607999999979,67.995529000000147],[-65.443603999999993,67.992203000000131],[-65.441939999999988,67.986923000000047],[-65.442490000000021,67.981369000000086],[-65.457503999999972,67.937194999999917],[-65.464447000000007,67.920822000000044],[-65.52027899999996,67.843048000000067],[-65.525833000000034,67.837769000000037],[-65.545273000000009,67.822220000000129],[-65.55860899999999,67.814423000000033],[-65.573623999999938,67.806931000000077],[-65.603881999999999,67.79693599999996],[-65.610549999999876,67.792755000000056],[-65.615829000000019,67.786102000000085],[-65.613891999999908,67.780823000000112],[-65.610001000000011,67.776382000000012],[-65.591948999999943,67.763046000000088],[-65.572509999999966,67.751663000000065],[-65.556945999999868,67.7452550000001],[-65.517501999999979,67.733047000000056],[-65.473617999999931,67.719711000000075],[-65.454726999999991,67.71276899999998],[-65.439712999999927,67.705551000000014],[-65.426391999999964,67.696365000000014],[-65.41361999999998,67.683593999999914],[-65.40695199999999,67.674988000000042],[-65.403609999999958,67.664703000000088],[-65.400283999999942,67.654434000000037],[-65.396392999999875,67.64498900000001],[-65.384734999999921,67.625809000000004],[-65.363892000000021,67.597488000000112],[-65.356658999999922,67.594711000000018],[-65.346389999999985,67.593323000000112],[-65.335281000000009,67.593597000000045],[-65.322784000000013,67.594986000000063],[-65.318344000000025,67.601089000000002],[-65.369155999999919,67.70277400000009],[-65.379165999999941,67.711655000000007],[-65.40264899999994,67.72322100000008],[-65.462508999999955,67.741928000000144],[-65.492492999999968,67.751663000000065],[-65.510833999999988,67.759155000000021],[-65.544448999999986,67.774155000000121],[-65.550551999999982,67.778320000000122],[-65.554442999999992,67.783051000000057],[-65.554442999999992,67.788040000000024],[-65.423614999999984,67.898041000000035],[-65.292495999999971,67.934143000000006],[-65.235275000000001,67.944702000000063],[-65.201401000000033,67.954436999999984],[-65.171660999999915,67.966094999999996],[-65.156386999999938,67.973602000000085],[-65.144164999999873,67.984145999999953],[-65.141387999999949,67.990265000000022],[-65.145553999999947,67.997208000000001],[-65.175827000000027,68.008881000000031],[-65.180831999999953,68.012207000000046],[-65.181106999999997,68.016662999999994],[-65.176665999999955,68.022491000000059],[-65.169158999999922,68.027206000000092],[-65.047775000000001,68.04942299999999],[-65.001113999999916,68.055542000000003],[-64.973052999999993,68.050261999999975],[-64.734160999999972,67.993866000000025],[-64.723617999999988,67.99054000000001],[-64.717498999999975,67.986374000000126],[-64.713622999999984,67.981659000000093],[-64.718063000000029,67.976654000000053],[-64.725554999999929,67.971648999999957],[-64.743332000000009,67.965819999999951],[-64.84722899999997,67.934981999999991],[-64.942490000000021,67.912490999999989],[-65.015288999999996,67.862488000000042],[-65.017775999999969,67.820830999999998],[-65.008347000000015,67.785262999999929],[-65.014175000000023,67.780273000000079],[-65.051101999999958,67.754439999999988],[-65.060546999999929,67.752213000000097],[-65.085280999999895,67.749145999999996],[-65.112212999999997,67.748032000000023],[-65.124434999999949,67.746368000000018],[-65.136123999999995,67.743591000000094],[-65.145553999999947,67.738876000000062],[-65.158339999999953,67.729706000000022],[-65.179992999999911,67.713608000000136],[-65.192489999999964,67.702209000000039],[-65.196380999999974,67.69720500000011],[-65.198607999999922,67.691649999999981],[-65.205001999999979,67.65914900000007],[-65.205565999999919,67.653595000000109],[-65.204178000000013,67.648331000000098],[-65.200286999999946,67.643875000000037],[-65.178328999999962,67.633605999999986],[-65.172500999999954,67.633605999999986],[-65.167220999999984,67.635818000000029],[-65.162780999999995,67.63888500000013],[-65.150283999999999,67.672211000000118],[-65.149733999999967,67.677765000000079],[-65.150283999999999,67.68193100000002],[-65.154174999999952,67.686646000000053],[-65.153335999999911,67.692200000000014],[-65.148894999999982,67.698317999999972],[-65.129715000000033,67.715820000000008],[-65.124161000000015,67.718047999999953],[-64.929717999999923,67.78776600000009],[-64.919723999999917,67.790817000000118],[-64.907227000000034,67.792205999999965],[-64.827224999999942,67.784714000000008],[-64.81639100000001,67.78137200000009],[-64.810546999999985,67.777205999999978],[-64.808884000000035,67.771927000000005],[-64.80749499999996,67.74275200000011],[-64.81610099999989,67.710541000000035],[-64.825835999999981,67.703049000000078],[-64.837509000000011,67.700271999999984],[-64.862777999999992,67.691649999999981],[-64.862502999999947,67.687484999999981],[-64.84944200000001,67.687194999999974],[-64.820557000000008,67.688308999999947],[-64.799728000000016,67.690811000000053],[-64.779448999999886,67.697754000000032],[-64.773055999999997,67.703598000000056],[-64.768616000000009,67.709427000000062],[-64.762221999999952,67.76249700000011],[-64.755843999999968,67.817764000000068],[-64.75,67.822769000000108],[-64.740829000000019,67.824707000000046],[-64.65306099999998,67.82887299999993],[-64.611938000000009,67.82638500000013],[-64.56806899999998,67.819992000000013],[-64.506957999999997,67.80720500000001],[-64.368880999999931,67.764160000000061],[-64.363327000000027,67.759430000000009],[-64.363891999999964,67.754439999999988],[-64.396117999999944,67.711929000000112],[-64.401397999999915,67.707764000000111],[-64.414718999999991,67.707214000000079],[-64.431380999999988,67.709717000000069],[-64.445266999999944,67.71138000000002],[-64.460006999999905,67.711655000000007],[-64.472503999999958,67.710266000000047],[-64.578338999999971,67.696930000000066],[-64.597228999999857,67.689697000000081],[-64.61721799999998,67.678589000000045],[-64.637221999999895,67.665267999999912],[-64.639175000000023,67.660538000000088],[-64.626389000000017,67.659714000000122],[-64.618332000000009,67.663040000000137],[-64.581389999999999,67.67442299999999],[-64.515839000000028,67.68609600000002],[-64.454177999999956,67.693314000000044],[-64.380828999999892,67.698029000000076],[-64.36250299999989,67.702484000000084],[-64.34722899999997,67.709991000000002],[-64.331389999999885,67.727203000000031],[-64.326400999999919,67.731094000000098],[-64.318068999999923,67.73414600000001],[-64.305557000000022,67.733597000000088],[-64.295273000000009,67.730270000000132],[-64.072784000000013,67.610260000000096],[-64.067779999999971,67.602477999999962],[-64.039718999999991,67.533600000000092],[-64.038604999999905,67.528595000000053],[-64.038895000000025,67.525818000000129],[-64.044998000000021,67.520828000000051],[-64.053054999999915,67.517487000000017],[-64.134734999999921,67.490265000000079],[-64.144729999999925,67.487197999999978],[-64.165282999999988,67.482482999999945],[-64.238601999999901,67.46748400000007],[-64.250838999999871,67.466095000000109],[-64.271941999999967,67.464996000000099],[-64.281113000000005,67.465546000000131],[-64.343886999999938,67.469985999999949],[-64.386948000000018,67.474425999999994],[-64.412216000000001,67.477478000000076],[-64.423049999999989,67.478043000000127],[-64.435546999999985,67.478592000000049],[-64.440552000000025,67.474991000000045],[-64.432220000000029,67.471099999999979],[-64.410004000000015,67.464156999999943],[-64.384734999999978,67.458328000000108],[-64.356948999999986,67.453873000000101],[-64.296660999999915,67.448029000000076],[-64.283614999999998,67.448029000000076],[-64.204452999999944,67.452209000000096],[-64.190551999999968,67.453323000000069],[-64.166945999999996,67.456940000000031],[-64.145003999999858,67.461655000000064],[-64.123321999999916,67.465271000000143],[-64.111114999999927,67.466660000000104],[-64.086394999999982,67.46748400000007],[-64.048049999999876,67.464156999999943],[-64.010833999999988,67.459717000000126],[-64.00111400000003,67.455826000000059],[-63.992653000000018,67.448624000000109],[-63.951110999999969,67.409988000000112],[-63.904166999999973,67.30581699999999],[-63.904166999999973,67.301651000000106],[-63.905829999999924,67.299712999999997],[-63.912773000000016,67.295532000000094],[-63.923889000000031,67.293320000000051],[-63.93721800000003,67.292755],[-64.022780999999952,67.30802900000009],[-64.055266999999958,67.311371000000008],[-64.084732000000031,67.313309000000118],[-64.181670999999938,67.312194999999974],[-64.217498999999975,67.313598999999954],[-64.339995999999985,67.319442999999978],[-64.530562999999916,67.33776899999998],[-64.740279999999984,67.356934000000138],[-64.757507000000032,67.358322000000044],[-64.788329999999917,67.35914600000001],[-64.797500999999954,67.356644000000131],[-64.80082699999997,67.352768000000026],[-64.798889000000031,67.350266000000147],[-64.788605000000018,67.34693900000002],[-64.73443599999996,67.333603000000096],[-64.721389999999928,67.331374999999923],[-64.687774999999988,67.327484000000027],[-64.441665999999998,67.303040000000124],[-64.402221999999995,67.299149000000057],[-64.372498000000007,67.297211000000118],[-64.344726999999921,67.297485000000052],[-64.283614999999998,67.299987999999985],[-64.258621000000005,67.299149000000057],[-64.24610899999999,67.298599000000024],[-64.23832699999997,67.296936000000073],[-64.231948999999986,67.293320000000051],[-64.233886999999868,67.288589000000115],[-64.248336999999992,67.279434000000037],[-64.306380999999988,67.262207000000046],[-64.325012000000015,67.257216999999969],[-64.356110000000001,67.250275000000045],[-64.392226999999991,67.24664300000012],[-64.419448999999929,67.247207999999944],[-64.509170999999981,67.254990000000078],[-64.536941999999954,67.256653000000028],[-64.550277999999992,67.25610400000005],[-64.668610000000001,67.238585999999941],[-64.724166999999966,67.22886699999998],[-64.779174999999952,67.218872000000033],[-64.790282999999931,67.21665999999999],[-64.799987999999928,67.213608000000079],[-64.80972300000002,67.210266000000104],[-64.81610099999989,67.206940000000088],[-64.813048999999978,67.201385000000016],[-64.808043999999995,67.198029000000133],[-64.801392000000021,67.195250999999985],[-64.783324999999934,67.190262000000018],[-64.772781000000009,67.189696999999967],[-64.758895999999993,67.19081099999994],[-64.71665999999999,67.200272000000098],[-64.655838000000017,67.217209000000139],[-64.46665999999999,67.229156000000046],[-64.425277999999935,67.228043000000014],[-64.350783999999976,67.234764000000098],[-64.287444999999991,67.238257999999973],[-64.267112999999995,67.241425000000049],[-64.232772999999952,67.251434000000017],[-64.169448999999986,67.260818000000029],[-64.158889999999928,67.262497000000053],[-64.114715999999987,67.267212000000086],[-64.010559000000001,67.275269000000037],[-63.976944000000003,67.277771000000087],[-63.969993999999986,67.27748100000008],[-63.965836000000024,67.275542999999971],[-63.962775999999963,67.272491000000059],[-63.962775999999963,67.270263999999997],[-63.975829999999917,67.251937999999996],[-63.993056999999965,67.228317000000118],[-63.998336999999935,67.221649000000127],[-64.013335999999981,67.212204000000042],[-64.021392999999989,67.208878000000027],[-64.045272999999952,67.204711999999972],[-64.05610699999994,67.204437000000098],[-64.088608000000022,67.207764000000054],[-64.220222000000035,67.201714000000038],[-64.467498999999918,67.167480000000069],[-64.501403999999923,67.161652000000004],[-64.545272999999952,67.152481000000023],[-64.575011999999958,67.144714000000079],[-64.584166999999923,67.142212000000029],[-64.611938000000009,67.132477000000108],[-64.658050999999944,67.113037000000134],[-64.680831999999953,67.09304800000001],[-64.686935000000005,67.087493999999992],[-64.689986999999917,67.083602999999925],[-64.692490000000021,67.078048999999965],[-64.700561999999991,67.018051000000071],[-64.701110999999912,67.012207000000046],[-64.700561999999991,67.008040999999992],[-64.696945000000028,67.003326000000129],[-64.691939999999988,67.000549000000035],[-64.683060000000012,67.000275000000101],[-64.660278000000005,67.003875999999991],[-64.638610999999969,67.008606000000043],[-64.628325999999959,67.012207000000046],[-64.623885999999914,67.018051000000071],[-64.619720000000029,67.028320000000122],[-64.618057000000022,67.039428999999984],[-64.618057000000022,67.044434000000081],[-64.619720000000029,67.049713000000054],[-64.618880999999988,67.055252000000053],[-64.615279999999927,67.066940000000045],[-64.609160999999972,67.081940000000031],[-64.604172000000005,67.088317999999958],[-64.597777999999892,67.093872000000147],[-64.583617999999888,67.103043000000127],[-64.547501000000011,67.118590999999924],[-64.527221999999881,67.124145999999996],[-64.506393000000003,67.129425000000026],[-64.474715999999944,67.13499500000006],[-64.229995999999971,67.164154000000053],[-64.087218999999948,67.179703000000131],[-64.008895999999993,67.178864000000033],[-63.995551999999975,67.179428000000144],[-63.971381999999949,67.182205000000067],[-63.96055599999994,67.184417999999994],[-63.929726000000016,67.192749000000106],[-63.919166999999959,67.196365000000128],[-63.912216000000001,67.200546000000031],[-63.86222099999992,67.225815000000011],[-63.80750299999994,67.239150999999993],[-63.797500999999954,67.240265000000136],[-63.561942999999985,67.236923000000047],[-63.546394000000021,67.235809000000074],[-63.469443999999953,67.228317000000118],[-63.458336000000031,67.226088999999945],[-63.450554000000011,67.222488000000112],[-63.449164999999994,67.219437000000084],[-63.449164999999994,67.214995999999985],[-63.450835999999981,67.179703000000131],[-63.453888000000006,67.169434000000138],[-63.529442000000017,67.104431000000034],[-63.53833800000001,67.100540000000137],[-63.604720999999984,67.075272000000041],[-63.613892000000021,67.072769000000051],[-63.648055999999883,67.066940000000045],[-63.672775000000001,67.063599000000011],[-63.712776000000019,67.054977000000008],[-63.722771000000023,67.05192599999998],[-63.731383999999991,67.048035000000084],[-63.744445999999982,67.041092000000106],[-63.779723999999987,67.017487000000131],[-63.795836999999949,67.006653000000085],[-63.806389000000024,66.99581900000004],[-63.807219999999973,66.988037000000077],[-63.801392000000021,66.979705999999965],[-63.781386999999938,66.963608000000136],[-63.772498999999868,66.958878000000084],[-63.769447000000014,66.97137500000008],[-63.768889999999942,66.976929000000041],[-63.771111000000019,66.980819999999937],[-63.772498999999868,66.986098999999911],[-63.773613000000012,66.991088999999988],[-63.773330999999985,66.996094000000028],[-63.770836000000031,67.001389000000074],[-63.767219999999952,67.006104000000107],[-63.756950000000018,67.014160000000004],[-63.750557000000015,67.017487000000131],[-63.734443999999939,67.024155000000121],[-63.698607999999979,67.038878999999952],[-63.680000000000007,67.045821999999987],[-63.650832999999977,67.052475000000129],[-63.638335999999981,67.054428000000087],[-63.600837999999953,67.057479999999998],[-63.565552000000025,67.062485000000038],[-63.535277999999948,67.070831000000112],[-63.497222999999963,67.085266000000047],[-63.40277900000001,67.144440000000145],[-63.396392999999989,67.152206000000035],[-63.39416499999993,67.156936999999971],[-63.393889999999942,67.161652000000004],[-63.398055999999997,67.165817000000004],[-63.416945999999882,67.180267000000072],[-63.419997999999964,67.185806000000071],[-63.421943999999883,67.194702000000007],[-63.420836999999949,67.200272000000098],[-63.417777999999998,67.206100000000049],[-63.409163999999919,67.21665999999999],[-63.351669000000015,67.268051000000014],[-63.340553,67.276657000000114],[-63.332503999999972,67.281937000000028],[-63.298888999999974,67.297760000000039],[-63.280555999999933,67.306366000000139],[-63.272498999999982,67.309418000000051],[-63.160277999999948,67.328323000000012],[-63.137222000000008,67.331100000000106],[-63.110282999999868,67.329987000000017],[-63.03972599999986,67.306090999999924],[-63.022498999999925,67.298035000000084],[-63.015006999999969,67.293593999999985],[-62.997779999999977,67.281372000000147],[-62.992774999999995,67.276382000000126],[-62.973884999999882,67.235535000000141],[-62.970832999999971,67.225815000000011],[-62.970832999999971,67.221375000000023],[-63.023055999999997,67.179428000000144],[-63.035834999999963,67.171097000000032],[-63.04472399999986,67.167205999999965],[-63.075561999999934,67.15887500000008],[-63.100554999999986,67.155548000000124],[-63.134170999999981,67.15277100000003],[-63.170279999999991,67.147217000000069],[-63.19027699999998,67.143326000000002],[-63.232497999999964,67.132202000000063],[-63.242500000000007,67.129149999999981],[-63.268889999999942,67.117477000000122],[-63.275832999999977,67.113312000000121],[-63.284447,67.105255],[-63.285278000000005,67.099716000000001],[-63.283614999999998,67.094986000000119],[-63.278052999999943,67.090820000000065],[-63.268607999999972,67.082488999999953],[-63.260833999999988,67.074158000000068],[-63.25389100000001,67.064697000000081],[-63.224716000000001,67.024704000000042],[-63.220276000000013,67.016937000000098],[-63.220276000000013,67.006104000000107],[-63.220832999999971,66.989699999999971],[-63.221381999999949,66.984984999999938],[-63.223884999999996,66.979430999999977],[-63.227776000000006,66.972762999999986],[-63.240836999999999,66.961655000000007],[-63.27777900000001,66.949706999999933],[-63.320557000000008,66.940262000000075],[-63.356109999999944,66.934708000000057],[-63.36860699999994,66.934708000000057],[-63.43638599999997,66.925537000000134],[-63.469993999999986,66.920532000000094],[-63.514724999999999,66.912490999999989],[-63.526138000000003,66.909271000000047],[-63.545554999999865,66.903595000000053],[-63.554442999999935,66.899719000000005],[-63.565552000000025,66.892487000000074],[-63.565552000000025,66.888046000000145],[-63.563613999999973,66.883605999999929],[-63.557502999999997,66.875809000000004],[-63.554717999999866,66.870254999999986],[-63.551392000000021,66.860535000000084],[-63.555557000000022,66.848877000000073],[-63.571944999999971,66.837494000000049],[-63.593329999999924,66.831665000000044],[-63.615004999999996,66.827208999999982],[-63.638892999999882,66.824432000000058],[-63.652221999999881,66.82388300000008],[-63.698607999999979,66.822495000000004],[-63.725273000000016,66.823043999999982],[-63.775832999999921,66.825821000000019],[-63.771384999999952,66.811096000000077],[-63.653053,66.802475000000015],[-63.624442999999928,66.801926000000037],[-63.598334999999906,66.80304000000001],[-63.587776000000019,66.804428000000144],[-63.548889000000031,66.812485000000095],[-63.539443999999946,66.814697000000137],[-63.535277999999948,66.81581100000011],[-63.488891999999964,66.828323000000125],[-63.478881999999942,66.835815000000082],[-63.476386999999932,66.839157],[-63.475272999999959,66.842484000000127],[-63.476944000000003,66.846939000000134],[-63.487220999999977,66.858871000000079],[-63.494719999999973,66.865539999999953],[-63.496947999999861,66.880814000000044],[-63.487220999999977,66.896942000000081],[-63.480826999999977,66.90248100000008],[-63.474441999999954,66.906096999999932],[-63.456107999999972,66.910811999999964],[-63.441665999999998,66.908325000000104],[-63.427223000000026,66.901382000000126],[-63.407218999999998,66.814423000000033],[-63.407776000000013,66.809708000000001],[-63.410278000000005,66.799988000000099],[-63.414718999999991,66.783325000000048],[-63.417777999999998,66.773040999999978],[-63.436110999999926,66.728043000000071],[-63.449439999999925,66.716095000000053],[-63.453056000000004,66.711655000000064],[-63.451941999999917,66.70637499999998],[-63.441939999999931,66.703048999999965],[-63.420279999999934,66.698868000000061],[-63.415276000000006,66.700546000000145],[-63.408332999999914,66.704437000000041],[-63.40277900000001,66.708878000000141],[-63.376663000000008,66.734146000000067],[-63.32028200000002,66.814148000000046],[-63.319450000000018,66.819992000000013],[-63.224716000000001,66.899428999999998],[-62.973884999999882,66.961104999999975],[-62.962501999999972,66.963882000000069],[-62.939994999999954,66.966660000000047],[-62.87222300000002,66.964432000000102],[-62.846946999999943,66.961929000000112],[-62.837776000000019,66.957764000000111],[-62.821114000000023,66.830276000000083],[-62.820557000000008,66.813599000000067],[-62.827498999999932,66.78804000000008],[-62.829726999999991,66.783325000000048],[-62.837501999999972,66.771927000000005],[-62.84332999999998,66.769149999999911],[-62.864448999999979,66.746094000000085],[-62.869995000000017,66.739700000000028],[-62.873055000000022,66.733597000000088],[-62.91194200000001,66.652771000000143],[-62.914444000000003,66.647216999999955],[-62.908050999999944,66.63998400000014],[-62.903052999999943,66.637207000000046],[-62.899726999999984,66.636658000000125],[-62.859169000000009,66.653045999999961],[-62.850280999999939,66.656937000000028],[-62.835274000000027,66.666382000000112],[-62.819999999999936,66.684418000000107],[-62.734168999999952,66.790816999999947],[-62.735831999999959,66.801651000000049],[-62.743331999999953,66.809982000000105],[-62.751113999999916,66.818054000000075],[-62.768058999999937,66.830551000000071],[-62.774170000000026,66.840546000000018],[-62.768332999999984,66.907760999999994],[-62.764449999999954,66.925262000000089],[-62.761115999999959,66.929152999999985],[-62.743057000000022,66.941924999999969],[-62.725273000000016,66.947478999999987],[-62.634170999999981,66.951385000000073],[-62.607779999999991,66.952209000000039],[-62.592223999999931,66.950821000000133],[-62.578612999999962,66.947754000000032],[-62.568892999999889,66.944138000000123],[-62.549994999999967,66.931655999999975],[-62.519996999999933,66.911102000000028],[-62.40277900000001,66.809417999999994],[-62.401389999999935,66.804977000000065],[-62.40193899999997,66.789154000000053],[-62.398613000000012,66.780272999999909],[-62.393332999999984,66.775818000000072],[-62.326950000000011,66.730270000000132],[-62.319450000000018,66.726379000000065],[-62.313332000000003,66.726929000000098],[-62.299171000000001,66.733047000000056],[-62.291388999999924,66.756378000000097],[-62.292777999999998,66.761658000000011],[-62.295837000000006,66.766388000000006],[-62.362220999999977,66.818329000000119],[-62.419448999999986,66.843323000000055],[-62.424720999999977,66.847488000000055],[-62.426948999999865,66.851378999999952],[-62.436942999999985,66.884430000000123],[-62.427222999999969,66.921097000000088],[-62.418891999999971,66.926651000000106],[-62.407501000000025,66.92942800000003],[-62.394721999999945,66.929152999999985],[-62.346946999999886,66.933594000000085],[-62.284728999999913,66.946091000000081],[-62.271666999999979,66.960815000000139],[-62.279723999999931,66.979156000000103],[-62.291388999999924,67.005829000000119],[-62.294448999999986,67.021378000000027],[-62.293616999999983,67.026382000000012],[-62.290282999999988,67.032486000000006],[-62.285277999999948,67.036102000000085],[-62.278609999999958,67.039428999999984],[-62.262504999999976,67.045258000000047],[-62.101394999999968,67.054703000000075],[-62.054442999999878,67.049149000000114],[-62.03194400000001,67.045258000000047],[-62.019721999999945,67.042206000000078],[-62.005561999999941,67.0352630000001],[-62.006950000000018,67.031937000000084],[-62.04999499999991,66.987198000000092],[-62.106110000000001,66.917206000000022],[-62.102225999999916,66.913040000000137],[-62.072226999999998,66.907486000000119],[-62.029723999999987,66.901657000000114],[-62.018889999999942,66.901657000000114],[-62.018607999999972,66.908035000000098],[-62.015006999999912,66.91415400000011],[-61.95666499999993,66.963882000000069],[-61.949722000000008,66.967208999999968],[-61.938605999999993,66.969436999999971],[-61.913329999999974,66.970825000000048],[-61.865554999999972,66.970825000000048],[-61.851395000000025,66.970535000000041],[-61.83805099999995,66.968597000000102],[-61.749725000000012,66.94802900000002],[-61.737220999999977,66.941086000000041],[-61.731941000000006,66.93691999999993],[-61.728881999999942,66.932205000000067],[-61.730826999999863,66.923874000000012],[-61.612777999999992,66.870818999999926],[-61.314163000000008,66.687195000000031],[-61.294723999999917,66.67442299999999],[-61.289443999999946,66.669983000000002],[-61.281386999999995,66.661102000000028],[-61.262504999999976,66.629425000000083],[-61.266662999999937,66.622756999999922],[-61.300277999999935,66.593597000000045],[-61.341667000000029,66.571930000000009],[-61.348052999999936,66.570541000000048],[-61.356666999999959,66.571106000000043],[-61.388335999999981,66.578598],[-61.400275999999963,66.577208999999982],[-61.409720999999934,66.572768999999994],[-61.425003000000004,66.559708000000057],[-61.447776999999974,66.538315000000125],[-61.46166999999997,66.543319999999994],[-61.54861499999987,66.547484999999995],[-61.584723999999994,66.547760000000039],[-61.598609999999951,66.550262000000089],[-61.618056999999965,66.557205000000067],[-61.623885999999914,66.566939999999988],[-61.631942999999978,66.586654999999951],[-61.638610999999969,66.595534999999984],[-61.643889999999999,66.599991000000102],[-61.669166999999959,66.616378999999995],[-61.691382999999973,66.62831100000011],[-61.72582999999986,66.643051000000071],[-61.734443999999996,66.645827999999995],[-61.950554000000011,66.67692599999998],[-62.015555999999947,66.671371000000079],[-62.12388599999997,66.626373000000001],[-62.050551999999982,66.624985000000095],[-62.018607999999972,66.640823000000125],[-61.990836999999999,66.648041000000092],[-61.979995999999971,66.648041000000092],[-61.950554000000011,66.646102999999982],[-61.830284000000006,66.621368000000132],[-61.796950999999979,66.611923000000047],[-61.788895000000025,66.608597000000032],[-61.75389100000001,66.588593000000117],[-61.576667999999984,66.487198000000035],[-61.575279000000023,66.48275799999999],[-61.576392999999996,66.477203000000088],[-61.583327999999938,66.471649000000127],[-61.59194199999996,66.46775800000006],[-61.614166000000012,66.463043000000027],[-61.635001999999929,66.459991000000059],[-61.731383999999935,66.451096000000064],[-61.844161999999926,66.446091000000024],[-61.857779999999934,66.447204999999997],[-61.869720000000029,66.445815999999979],[-61.956947000000014,66.424149000000114],[-61.976943999999946,66.417480000000069],[-61.985832000000016,66.413605000000075],[-61.986945999999932,66.410262999999986],[-61.978049999999996,66.403869999999984],[-61.96416499999998,66.401382000000012],[-61.934165999999891,66.400818000000072],[-61.755004999999983,66.407486000000063],[-61.578612999999905,66.415268000000026],[-61.569449999999904,66.415543000000014],[-61.557266000000027,66.413680999999997],[-61.545279999999991,66.409988000000112],[-61.466942000000017,66.371918000000051],[-61.462501999999972,66.369141000000127],[-61.463614999999891,66.365814],[-61.665276000000006,66.324996999999996],[-61.877494999999954,66.283324999999934],[-61.928885999999977,66.283874999999966],[-62.198883000000023,66.314148000000102],[-62.207503999999915,66.316666000000112],[-62.212218999999948,66.319442999999978],[-62.218055999999933,66.331939999999975],[-62.231941000000006,66.366089000000045],[-62.232215999999937,66.369705000000067],[-62.229439000000013,66.375259000000085],[-62.224998000000028,66.380264000000125],[-62.218604999999968,66.392487000000017],[-62.218329999999867,66.396652000000017],[-62.223610000000008,66.401093000000117],[-62.229996000000028,66.40415999999999],[-62.255279999999914,66.408324999999991],[-62.268889999999999,66.409424000000001],[-62.418610000000001,66.421097000000032],[-62.456107999999915,66.423874000000126],[-62.565833999999995,66.42804000000001],[-62.626662999999894,66.426085999999998],[-62.698883000000023,66.41276600000009],[-62.709723999999994,66.410537999999974],[-62.716110000000015,66.407211000000018],[-62.710281000000009,66.403594999999996],[-62.673614999999984,66.393600000000049],[-62.629996999999946,66.387771999999984],[-62.478049999999996,66.369980000000112],[-62.337501999999972,66.315811000000053],[-62.32028200000002,66.308319000000097],[-62.316108999999983,66.304977000000008],[-62.320556999999951,66.299712999999997],[-62.323616000000015,66.298035000000084],[-62.388892999999939,66.276093000000003],[-62.398338000000024,66.273041000000092],[-62.621940999999993,66.221375000000023],[-62.643615999999952,66.216933999999924],[-62.666945999999939,66.214432000000045],[-62.680832000000009,66.216933999999924],[-62.751944999999921,66.241088999999931],[-62.757225000000005,66.245255000000043],[-62.780555999999933,66.277771000000143],[-62.782218999999884,66.282486000000006],[-62.782218999999884,66.288879000000122],[-62.773330999999985,66.296936000000073],[-62.774170000000026,66.302765000000136],[-62.77944199999996,66.307205000000124],[-62.797225999999966,66.313873000000115],[-62.816665999999941,66.320831000000112],[-62.826110999999912,66.324158000000011],[-62.858894000000021,66.334152000000074],[-62.868057000000022,66.336104999999975],[-62.881110999999976,66.335815000000139],[-62.889998999999989,66.333328000000108],[-62.895003999999915,66.329712000000029],[-62.809440999999993,66.240814000000114],[-62.801391999999964,66.235259999999926],[-62.715003999999908,66.201660000000061],[-62.706107999999972,66.199707000000103],[-62.681389000000024,66.196930000000009],[-62.647223999999994,66.199707000000103],[-62.603614999999991,66.205261000000121],[-62.488051999999925,66.200271999999927],[-62.366660999999965,66.174987999999985],[-62.180557000000022,66.148604999999975],[-62.037505999999951,66.100815000000011],[-61.961112999999898,66.033875000000023],[-61.955001999999979,66.024155000000121],[-61.954445000000021,66.019150000000081],[-61.955832999999927,66.014998999999989],[-61.960280999999895,66.011932000000058],[-61.975554999999986,66.010543999999982],[-62.088889999999935,66.000274999999931],[-62.133614000000023,66.000000000000114],[-62.148055999999997,66.001389000000131],[-62.166388999999981,66.00749200000007],[-62.172501000000011,66.010543999999982],[-62.188889000000017,66.012207000000103],[-62.196663000000001,66.011108000000092],[-62.291672000000005,65.980270000000132],[-62.307776999999987,65.973876999999959],[-62.391669999999863,66.011383000000137],[-62.404715999999894,66.014708999999982],[-62.525276000000019,66.034149000000127],[-62.541388999999981,66.035537999999974],[-62.695549000000028,66.042205999999965],[-62.74111199999993,66.038315000000068],[-62.759726999999884,66.033051000000057],[-62.778885000000002,66.033324999999991],[-62.799995000000024,66.039703000000145],[-62.809165999999891,66.043869000000029],[-62.831672999999967,66.055542000000059],[-62.842223999999987,66.064147999999989],[-62.846946999999943,66.069153000000028],[-62.855003000000011,66.083054000000004],[-62.856667000000016,66.087494000000049],[-62.860001000000011,66.103043000000127],[-62.8663939999999,66.112761999999975],[-62.873329000000012,66.121368000000075],[-62.884170999999867,66.129973999999947],[-62.90555599999999,66.140823000000012],[-62.930557000000022,66.146942000000081],[-62.946945000000028,66.148604999999975],[-62.95944199999991,66.14888000000002],[-62.970551,66.148041000000035],[-63.013618000000008,66.138885000000073],[-63.041672000000005,66.130264000000011],[-63.061942999999928,66.120819000000097],[-63.060279999999977,66.116379000000109],[-63.039443999999889,66.113312000000008],[-63.006393000000003,66.11692800000003],[-62.892226999999934,66.076660000000004],[-62.889998999999989,66.066375999999934],[-62.885833999999988,66.056366000000025],[-62.875,66.047760000000096],[-62.862220999999863,66.039429000000041],[-62.841942000000017,66.027480999999966],[-62.826667999999927,66.020264000000054],[-62.815833999999938,66.016098],[-62.793616999999983,66.010818000000086],[-62.778885000000002,66.009720000000016],[-62.768332999999984,66.009720000000016],[-62.755561999999884,66.00999500000006],[-62.743889000000024,66.011383000000137],[-62.67472099999992,66.015549000000021],[-62.523055999999997,66.002213000000097],[-62.517219999999952,66.000549000000092],[-62.4183349999999,65.970535000000041],[-62.405555999999933,65.963043000000084],[-62.395003999999915,65.949996999999996],[-62.386664999999994,65.936646000000053],[-62.321114000000023,65.831100000000049],[-62.317222999999956,65.808029000000033],[-62.441665999999941,65.793594000000098],[-62.478881999999999,65.790817000000004],[-62.505279999999971,65.790817000000004],[-62.521384999999952,65.792480000000126],[-62.604171999999892,65.801085999999998],[-62.619995000000017,65.803040000000067],[-62.684440999999936,65.816375999999991],[-62.717773000000022,65.825272000000098],[-62.727218999999991,65.828598],[-62.729996000000028,65.831940000000088],[-62.75278499999996,65.853591999999935],[-62.80750299999994,65.88998400000014],[-62.829445000000021,65.899994000000049],[-62.857506000000001,65.911102000000028],[-62.864166000000012,65.911102000000028],[-62.870551999999918,65.90554800000001],[-62.871940999999936,65.901382000000126],[-62.87471800000003,65.887497000000053],[-62.87471800000003,65.883041000000105],[-62.760001999999986,65.816665999999998],[-62.746391000000017,65.809708000000001],[-62.736945999999932,65.80831900000004],[-62.719993999999929,65.809708000000001],[-62.658889999999985,65.791930999999977],[-62.597778000000005,65.771927000000062],[-62.582221999999888,65.765549000000078],[-62.575004999999976,65.761658000000011],[-62.569449999999961,65.757492000000127],[-62.568610999999919,65.752212999999927],[-62.569725000000005,65.746643000000063],[-62.579444999999964,65.728317000000061],[-62.583610999999962,65.723312000000021],[-62.587775999999963,65.720260999999994],[-62.59027900000001,65.719147000000021],[-62.59944200000001,65.718872000000147],[-62.612777999999992,65.72164900000007],[-62.621940999999993,65.725540000000137],[-62.67472099999992,65.735809000000017],[-62.823891000000003,65.761383000000023],[-62.833442999999875,65.752991000000009],[-62.833777999999882,65.74999200000002],[-62.828780999999879,65.744492000000093],[-62.799170999999887,65.711928999999998],[-62.788054999999929,65.708328000000108],[-62.726386999999988,65.71138000000002],[-62.698883000000023,65.710266000000047],[-62.681670999999994,65.708038000000101],[-62.662772999999902,65.701096000000007],[-62.59944200000001,65.675812000000008],[-62.59194199999996,65.671920999999941],[-62.589721999999938,65.668594000000041],[-62.595832999999857,65.652205999999978],[-62.602225999999973,65.640273999999977],[-62.611670999999944,65.624145999999939],[-62.617499999999893,65.614990000000034],[-62.628051999999968,65.601929000000098],[-62.645279000000016,65.587203999999929],[-62.653053,65.586104999999975],[-62.751113999999916,65.58526599999999],[-62.767220000000009,65.587493999999936],[-62.78472899999997,65.59137000000004],[-62.803054999999972,65.59887700000013],[-62.859726000000023,65.634720000000016],[-62.861389000000031,65.639160000000004],[-62.858611999999937,65.65525800000006],[-62.862503000000004,65.685257000000092],[-62.882998999999984,65.724152000000061],[-62.885001999999986,65.726973999999927],[-62.887999999999863,65.729652000000044],[-62.904167000000029,65.746368000000018],[-62.922500999999954,65.752212999999927],[-62.936110999999926,65.754990000000021],[-62.949439999999925,65.755263999999954],[-62.95944199999991,65.753876000000048],[-62.962219000000005,65.748322000000087],[-62.943610999999919,65.743042000000003],[-62.93472300000002,65.738876000000118],[-62.925277999999992,65.731093999999985],[-62.916663999999912,65.722214000000122],[-62.914444000000003,65.718323000000055],[-62.892226999999934,65.641937000000098],[-62.89166999999992,65.638321000000076],[-62.895836000000031,65.633040999999992],[-62.901389999999935,65.628036000000122],[-62.953330999999991,65.586929000000112],[-62.961670000000026,65.583054000000118],[-62.972220999999934,65.580826000000002],[-63.005004999999926,65.624985000000095],[-63.016113000000018,65.632750999999985],[-63.027495999999928,65.635818000000086],[-63.040282999999931,65.63749700000011],[-63.137779000000023,65.644150000000081],[-63.162498000000028,65.632477000000051],[-63.162406999999973,65.628868000000068],[-63.164443999999946,65.625534000000073],[-63.178611999999987,65.627472000000012],[-63.200279000000023,65.633330999999998],[-63.211945000000014,65.640549000000021],[-63.293891999999971,65.708878000000141],[-63.43638599999997,65.84526100000005],[-63.443054000000018,65.854705999999908],[-63.474167000000023,65.833054000000061],[-63.379165999999998,65.720260999999994],[-63.368332000000009,65.693863000000022],[-63.368332000000009,65.669434000000081],[-63.399726999999984,65.676375999999948],[-63.412215999999944,65.67804000000001],[-63.448607999999922,65.680817000000047],[-63.461944999999957,65.681090999999981],[-63.704720000000009,65.68220500000001],[-63.717216000000008,65.681656000000032],[-63.723609999999894,65.680267000000015],[-63.728607000000011,65.675812000000008],[-63.728881999999999,65.673035000000141],[-63.723609999999894,65.668869000000029],[-63.700553999999954,65.655823000000112],[-63.68360899999999,65.650818000000072],[-63.671669000000009,65.648330999999985],[-63.504723000000013,65.6308140000001],[-63.453330999999991,65.629700000000128],[-63.432502999999997,65.631927000000019],[-63.399726999999984,65.634155000000135],[-63.375,65.632202000000007],[-63.36860699999994,65.629150000000095],[-63.351669000000015,65.61775200000011],[-63.326667999999984,65.600815000000068],[-63.319999999999936,65.593322999999998],[-63.336661999999933,65.556930999999963],[-63.34332999999998,65.548325000000091],[-63.355003000000011,65.537766000000033],[-63.359726000000023,65.536102000000028],[-63.373610999999983,65.533874999999966],[-63.463332999999977,65.522766000000047],[-63.474715999999887,65.523605000000032],[-63.482215999999937,65.525269000000037],[-63.488608999999997,65.528320000000065],[-63.501396,65.536377000000016],[-63.523055999999997,65.550812000000121],[-63.532775999999899,65.558594000000085],[-63.541114999999934,65.570267000000115],[-63.541388999999867,65.574158000000011],[-63.546669000000009,65.581100000000106],[-63.561278999999956,65.585372999999947],[-63.567943999999954,65.590042000000096],[-63.572449000000006,65.591209000000049],[-63.581279999999992,65.591873000000078],[-63.589943000000005,65.591209000000049],[-63.595778999999993,65.589035000000081],[-63.608894000000021,65.589981000000023],[-63.618331999999953,65.541931000000034],[-63.616660999999908,65.537490999999989],[-63.612777999999878,65.533325000000104],[-63.601395000000025,65.530273000000022],[-63.530280999999945,65.512206999999989],[-63.43277699999993,65.484421000000111],[-63.391945000000021,65.472488000000112],[-63.362503000000004,65.463318000000015],[-63.309165999999948,65.445525999999973],[-63.301665999999898,65.441650000000095],[-63.295279999999991,65.436371000000122],[-63.290839999999946,65.431656000000089],[-63.292777999999998,65.428863999999976],[-63.393889999999942,65.425262000000032],[-63.409995999999921,65.426651000000049],[-63.468886999999938,65.439697000000137],[-63.495276999999987,65.450272000000098],[-63.502785000000017,65.454162999999994],[-63.521666999999979,65.461105000000089],[-63.532775999999899,65.464705999999978],[-63.553329000000019,65.468872000000033],[-63.568892999999946,65.471649000000127],[-63.583327999999995,65.4727630000001],[-63.64305899999988,65.473602000000085],[-63.65444199999996,65.472213999999951],[-63.655555999999933,65.470824999999991],[-63.654716000000008,65.464995999999985],[-63.627494999999954,65.455826000000116],[-63.563613999999973,65.435806000000071],[-63.483611999999994,65.404984000000013],[-63.335555999999997,65.30053700000002],[-63.335830999999985,65.295531999999923],[-63.424720999999977,65.229430999999977],[-63.472220999999934,65.196365000000014],[-63.418892000000028,65.145263999999997],[-63.376944999999978,65.110809000000017],[-63.424445999999932,65.049149000000114],[-63.464721999999938,65.018051000000128],[-63.527221999999995,64.971924000000058],[-63.528335999999967,64.967758000000003],[-63.546950999999979,64.887207000000046],[-63.653885000000002,64.911652000000061],[-63.659720999999934,64.939697000000081],[-63.747779999999977,64.962203999999986],[-63.824172999999973,64.984711000000061],[-63.828339000000028,65.010817999999915],[-63.825561999999877,65.012771999999984],[-63.720276000000013,65.030823000000112],[-63.669723999999917,65.034988000000112],[-63.659995999999978,65.03637700000013],[-63.655272999999966,65.03804000000008],[-63.658051,65.041091999999992],[-63.664718999999934,65.043594000000041],[-63.685554999999965,65.047759999999982],[-63.697776999999974,65.049423000000047],[-63.732215999999994,65.048874000000126],[-63.751944999999978,65.045258000000047],[-63.782218999999941,65.034149000000014],[-63.801940999999999,65.030273000000079],[-63.824447999999961,65.027481000000023],[-63.849723999999924,65.030273000000079],[-63.861114999999984,65.033325000000048],[-63.870551999999918,65.040816999999947],[-63.873885999999914,65.04553199999998],[-63.875556999999958,65.050262000000032],[-63.885559000000001,65.079987000000131],[-63.886116000000015,65.085815000000025],[-63.881667999999934,65.096939000000134],[-63.948607999999979,65.100540000000024],[-64.121108999999933,65.043869000000086],[-64.132491999999957,65.044434000000081],[-64.140839000000028,65.047211000000004],[-64.267226999999991,65.094147000000021],[-64.275833000000034,65.098877000000073],[-64.271118000000001,65.103317000000061],[-64.22193900000002,65.146942000000081],[-64.208892999999989,65.155258000000003],[-64.18582200000003,65.163879000000065],[-64.167220999999927,65.170532000000037],[-64.131103999999937,65.182480000000112],[-64.129715000000033,65.193588000000091],[-64.203613000000018,65.199707000000103],[-64.211944999999901,65.199996999999939],[-64.231383999999991,65.196930000000009],[-64.301940999999999,65.163040000000137],[-64.30999799999995,65.15914900000007],[-64.314712999999983,65.15248100000008],[-64.339172000000019,65.161377000000016],[-64.37332200000003,65.177200000000028],[-64.380828999999892,65.181091000000094],[-64.395844000000011,65.207214000000079],[-64.407227000000034,65.275818000000015],[-64.405272999999909,65.285537999999917],[-64.402785999999935,65.291092000000106],[-64.398620999999935,65.29693600000013],[-64.389724999999999,65.304428000000087],[-64.355835000000013,65.324996999999996],[-64.333327999999995,65.337203999999986],[-64.30999799999995,65.349990999999989],[-64.300551999999982,65.355819999999994],[-64.25556899999998,65.386382999999967],[-64.250838999999871,65.390823000000012],[-64.236389000000031,65.421920999999998],[-64.234160999999972,65.427199999999971],[-64.237212999999997,65.429977000000065],[-64.248885999999914,65.430542000000116],[-64.272781000000009,65.428588999999988],[-64.291107000000011,65.422484999999938],[-64.431380999999988,65.326934999999992],[-64.461670000000026,65.294983000000002],[-64.471664000000033,65.283324999999991],[-64.474715999999944,65.272491000000116],[-64.468886999999938,65.263885000000016],[-64.463897999999972,65.258881000000031],[-64.456954999999994,65.249420000000043],[-64.452498999999989,65.241653000000099],[-64.455565999999976,65.207214000000079],[-64.462218999999948,65.190810999999997],[-64.468337999999903,65.180267000000129],[-64.509734999999921,65.12052900000009],[-64.521117999999944,65.109146000000123],[-64.535004000000015,65.097214000000122],[-64.549987999999985,65.09275800000006],[-64.555556999999965,65.092209000000082],[-64.561934999999949,65.094986000000006],[-64.567504999999926,65.115814000000057],[-64.567504999999926,65.119979999999998],[-64.569457999999941,65.124419999999986],[-64.580001999999922,65.128860000000032],[-64.611389000000031,65.141937000000041],[-64.641112999999962,65.149993999999992],[-64.655272999999966,65.166092000000049],[-64.718338000000017,65.222487999999942],[-64.760284000000013,65.25221300000004],[-64.765014999999948,65.247756999999979],[-64.778335999999967,65.238585999999998],[-64.788329999999917,65.23414600000001],[-64.801102000000014,65.230820000000108],[-64.814712999999983,65.235259999999982],[-64.864440999999999,65.256653000000085],[-64.883895999999993,65.265273999999977],[-64.891113000000018,65.269150000000081],[-64.896666999999979,65.273315000000082],[-64.898346000000004,65.275818000000015],[-64.910552999999993,65.29942299999999],[-64.910827999999981,65.303589000000102],[-64.910004000000015,65.304977000000008],[-64.855887999999936,65.314545000000123],[-64.834228999999937,65.319046000000014],[-64.823387000000025,65.318214000000125],[-64.796111999999937,65.31860400000005],[-64.793883999999991,65.314697000000081],[-64.786391999999978,65.310806000000014],[-64.777221999999995,65.30914300000012],[-64.757171999999912,65.313095000000033],[-64.752173999999911,65.314255000000117],[-64.696105999999872,65.329712000000029],[-64.691101000000003,65.331940000000031],[-64.687209999999936,65.334991000000059],[-64.685271999999998,65.337493999999992],[-64.684433000000013,65.341095000000053],[-64.689162999999951,65.341660000000104],[-64.799728000000016,65.346939000000077],[-64.813613999999973,65.347214000000065],[-64.868056999999965,65.339706000000092],[-64.897780999999952,65.334152000000074],[-64.909163999999976,65.334717000000126],[-64.912216000000001,65.338042999999971],[-64.910552999999993,65.33998100000008],[-64.904723999999987,65.343596999999932],[-64.609160999999972,65.426376000000005],[-64.591110000000015,65.429703000000131],[-64.583892999999989,65.430267000000072],[-64.508347000000015,65.425812000000064],[-64.477218999999991,65.421097000000032],[-64.466400000000021,65.417480000000069],[-64.458343999999954,65.416656000000103],[-64.448607999999979,65.418319999999937],[-64.441939999999931,65.420258000000103],[-64.433608999999933,65.429153000000099],[-64.429992999999968,65.434417999999994],[-64.40943900000002,65.473877000000073],[-64.412780999999939,65.478592000000106],[-64.418335000000013,65.482758000000047],[-64.434432999999899,65.484146000000123],[-64.551940999999999,65.457764000000054],[-64.695267000000001,65.427765000000022],[-64.795273000000009,65.415268000000026],[-64.806655999999919,65.413879000000009],[-64.82417299999986,65.413315000000068],[-64.833618000000001,65.414429000000041],[-64.843886999999938,65.417205999999965],[-64.845550999999944,65.419434000000138],[-64.854996000000028,65.422759999999982],[-64.863891999999964,65.424698000000092],[-64.869719999999973,65.423874000000126],[-64.974166999999966,65.404708999999968],[-64.981110000000001,65.401932000000102],[-64.987502999999947,65.39776599999999],[-64.990279999999927,65.393875000000094],[-64.988602000000014,65.379424999999969],[-64.98582499999992,65.371368000000018],[-64.989715999999987,65.36831699999999],[-65.001113999999916,65.366652999999985],[-65.016112999999962,65.367203000000018],[-65.058883999999978,65.376648000000102],[-65.075012000000015,65.383041000000048],[-65.136123999999995,65.422484999999938],[-65.144164999999873,65.427765000000022],[-65.149993999999992,65.434143000000006],[-65.168883999999991,65.482758000000047],[-65.168059999999969,65.483871000000079],[-65.160003999999958,65.48803700000002],[-65.149445000000014,65.493042000000059],[-65.142501999999922,65.495818999999983],[-65.129990000000021,65.49859600000002],[-65.110274999999945,65.497482000000048],[-65.082503999999972,65.500548999999978],[-64.929717999999923,65.524703999999986],[-64.854445999999996,65.583603000000096],[-64.836944999999957,65.605819999999937],[-64.767226999999991,65.63998399999997],[-64.741669000000002,65.641662999999994],[-64.723052999999993,65.643600000000049],[-64.711944999999957,65.647217000000012],[-64.70944199999991,65.650543000000027],[-64.710007000000019,65.652205999999978],[-64.71444699999995,65.653320000000122],[-64.768340999999964,65.659988000000112],[-64.794723999999974,65.661926000000051],[-64.818618999999956,65.661926000000051],[-64.828063999999927,65.661102000000085],[-64.843886999999938,65.658034999999984],[-64.853333000000021,65.654709000000139],[-64.872222999999963,65.64498900000001],[-64.888901000000033,65.629150000000095],[-64.899993999999936,65.616378999999995],[-64.952498999999875,65.56442300000009],[-64.974166999999966,65.551376000000062],[-64.993606999999884,65.548035000000027],[-65.110274999999945,65.541092000000049],[-65.15306099999998,65.53915400000011],[-65.311110999999983,65.548874000000012],[-65.318344000000025,65.550537000000134],[-65.326400999999976,65.556366000000139],[-65.333327999999995,65.563599000000124],[-65.338607999999965,65.575546000000088],[-65.308334000000002,65.621094000000028],[-65.303328999999962,65.62831099999994],[-65.299987999999928,65.6308140000001],[-65.295837000000006,65.631653000000085],[-65.275283999999942,65.631363000000079],[-65.252228000000002,65.629974000000061],[-65.217772999999966,65.629974000000061],[-65.188599000000011,65.629974000000061],[-65.153884999999946,65.630264000000068],[-65.125823999999966,65.633330999999998],[-65.112503000000004,65.637207000000103],[-65.105835000000013,65.639435000000049],[-65.103881999999999,65.642487000000131],[-65.103881999999999,65.651932000000045],[-65.109436000000017,65.658875000000023],[-65.106948999999986,65.667205999999908],[-65.105835000000013,65.668594000000041],[-65.09973100000002,65.671920999999941],[-64.994445999999925,65.70138500000013],[-64.981383999999991,65.704712000000086],[-64.969726999999978,65.706650000000025],[-64.942215000000033,65.709152000000074],[-64.922501000000011,65.709427000000119],[-64.902495999999985,65.708602999999982],[-64.814712999999983,65.712769000000037],[-64.803328999999962,65.714157000000114],[-64.798339999999996,65.716385000000116],[-64.793609999999887,65.719985999999949],[-64.791381999999999,65.723312000000021],[-64.794997999999964,65.728043000000127],[-64.801940999999886,65.730270000000019],[-64.815552000000025,65.730545000000006],[-64.90695199999999,65.728867000000093],[-64.973052999999993,65.723602000000028],[-64.996947999999918,65.721374999999966],[-65.024719000000005,65.716934000000037],[-65.057219999999973,65.710266000000047],[-65.076110999999912,65.705551000000014],[-65.103058000000033,65.694427000000132],[-65.11610399999995,65.685257000000092],[-65.138610999999969,65.671096999999975],[-65.144454999999994,65.667480000000012],[-65.164168999999958,65.656937000000084],[-65.168334999999956,65.656097000000045],[-65.369994999999903,65.661102000000085],[-65.431380999999931,65.669144000000074],[-65.441665999999884,65.671646000000123],[-65.449996999999883,65.674988000000042],[-65.454452999999887,65.678314000000114],[-65.456954999999937,65.68220500000001],[-65.456389999999999,65.68553199999991],[-65.452498999999932,65.69081100000011],[-65.447768999999994,65.695251000000098],[-65.460281000000009,65.74136400000009],[-65.490279999999927,65.735809000000017],[-65.497771999999941,65.737487999999985],[-65.50556899999998,65.74331699999999],[-65.505004999999983,65.751663000000121],[-65.498885999999857,65.763046000000088],[-65.455276000000026,65.832489000000066],[-65.449158000000011,65.841094999999939],[-65.439437999999996,65.8477630000001],[-65.357223999999974,65.902480999999909],[-65.152221999999938,65.957764000000111],[-65.137787000000003,65.961104999999975],[-65.050277999999992,65.98054500000012],[-64.963897999999972,65.998596000000134],[-64.946105999999986,66.001389000000131],[-64.934722999999906,66.002213000000097],[-64.923049999999989,66.001389000000131],[-64.898346000000004,65.996933000000013],[-64.880828999999949,65.989975000000015],[-64.851104999999961,65.98054500000012],[-64.842223999999931,65.978043000000071],[-64.801392000000021,65.969436999999971],[-64.772506999999962,65.966095000000053],[-64.755004999999926,65.966095000000053],[-64.743332000000009,65.967484000000013],[-64.735001000000011,65.969436999999971],[-64.733886999999925,65.97554000000008],[-64.738601999999958,65.978867000000037],[-64.765014999999948,65.988037000000077],[-64.821670999999981,66.044708000000014],[-64.750838999999928,66.185532000000023],[-64.721663999999976,66.217483999999956],[-64.712219000000005,66.223602000000085],[-64.605834999999956,66.259155000000135],[-64.480559999999969,66.296371000000079],[-64.451950000000011,66.303589000000102],[-64.405563000000029,66.315811000000053],[-64.388610999999912,66.321655000000078],[-64.375548999999921,66.327209000000039],[-64.365829000000019,66.333053999999947],[-64.356383999999935,66.340546000000074],[-64.354172000000005,66.348038000000031],[-64.356383999999935,66.349715999999944],[-64.366104000000007,66.350815000000125],[-64.377486999999974,66.349990999999989],[-64.443877999999984,66.344711000000075],[-64.464721999999938,66.34304800000001],[-64.71444699999995,66.274994000000049],[-64.718886999999995,66.273315000000025],[-64.789168999999958,66.236374000000126],[-64.796111999999937,66.231659000000093],[-64.839995999999985,66.193313999999987],[-64.858046999999942,66.149993999999992],[-64.856658999999979,66.139984000000084],[-64.851944000000003,66.124984999999981],[-64.849730999999963,66.12052900000009],[-64.854171999999949,66.109711000000118],[-64.858886999999982,66.106093999999985],[-64.933884000000035,66.080276000000026],[-64.948607999999979,66.076934999999992],[-65.126098999999954,66.03776600000009],[-65.381942999999922,65.975815000000125],[-65.398055999999997,65.974700999999925],[-65.827788999999996,65.953049000000078],[-65.876389000000017,65.94802900000002],[-65.916106999999954,65.95109599999995],[-65.928054999999972,65.953873000000044],[-65.935546999999929,65.958328000000051],[-65.939712999999927,65.962493999999992],[-65.96305799999999,66.034424000000001],[-65.963897999999915,66.043869000000029],[-65.918883999999935,66.086105000000032],[-65.911666999999852,66.091660000000104],[-65.904175000000009,66.094437000000028],[-65.786117999999988,66.126373000000115],[-65.674712999999997,66.157486000000119],[-65.65055799999999,66.164429000000098],[-65.640838999999914,66.168319999999994],[-65.634170999999924,66.172484999999995],[-65.564162999999951,66.226929000000041],[-65.545546999999942,66.243317000000104],[-65.471114999999941,66.342484000000013],[-65.471663999999919,66.383606000000043],[-65.473617999999931,66.385817999999915],[-65.475829999999974,66.387771999999984],[-65.479172000000005,66.388046000000088],[-65.482773000000009,66.387771999999984],[-65.489715999999987,66.385817999999915],[-65.501677999999913,66.376373000000058],[-65.553878999999938,66.32777400000009],[-65.555831999999953,66.325272000000041],[-65.559433000000013,66.320541000000105],[-65.561660999999901,66.314423000000147],[-65.564437999999996,66.293593999999985],[-65.562774999999988,66.288315000000011],[-65.562774999999988,66.283324999999934],[-65.571670999999981,66.268326000000059],[-65.598891999999921,66.244979999999998],[-65.610549999999876,66.235809000000074],[-65.696944999999971,66.180542000000116],[-65.702498999999989,66.177475000000015],[-65.844161999999926,66.135817999999972],[-65.926940999999999,66.114700000000084],[-65.951950000000011,66.108871000000079],[-65.96833799999996,66.108032000000094],[-66.073623999999995,66.12052900000009],[-66.139174999999966,66.131362999999965],[-66.145003999999972,66.1336060000001],[-66.147232000000031,66.135269000000051],[-66.200835999999981,66.194977000000051],[-66.191100999999946,66.239974999999959],[-66.25111400000003,66.242203000000131],[-66.371384000000035,66.22526600000009],[-66.401947000000007,66.200821000000076],[-66.478333000000021,66.201660000000061],[-66.489715999999873,66.202774000000034],[-66.496947999999975,66.20498699999996],[-66.505004999999926,66.208878000000027],[-66.524445000000014,66.224152000000117],[-66.529998999999918,66.229156000000103],[-66.534164000000033,66.233046999999999],[-66.540832999999964,66.241653000000099],[-66.542770000000019,66.24664300000012],[-66.577498999999989,66.354430999999977],[-66.576110999999969,66.35914600000001],[-66.570007000000032,66.365540000000067],[-66.564162999999951,66.369141000000127],[-66.53694200000001,66.378035999999952],[-66.500564999999995,66.388046000000088],[-66.454726999999991,66.398041000000148],[-66.445267000000001,66.401382000000012],[-66.438323999999909,66.40415999999999],[-66.434433000000013,66.407211000000018],[-66.437209999999936,66.413315000000068],[-66.441939999999988,66.414429000000041],[-66.466109999999901,66.414992999999981],[-66.473617999999988,66.414429000000041],[-66.481383999999991,66.413040000000024],[-66.597778000000005,66.386932000000115],[-66.604996000000028,66.376373000000058],[-66.610001000000011,66.371368000000018],[-66.617492999999911,66.368591000000094],[-66.629990000000021,66.36775200000011],[-66.713897999999972,66.368866000000082],[-66.724166999999909,66.369431000000134],[-66.730834999999956,66.369980000000112],[-66.743057000000022,66.372756999999979],[-66.767775999999913,66.380539000000113],[-66.821670999999924,66.458037999999931],[-66.821670999999924,66.460815000000025],[-66.806380999999931,66.531936999999971],[-66.851943999999946,66.583328000000051],[-66.972228999999913,66.628860000000088],[-66.999724999999955,66.638321000000019],[-67.023055999999997,66.643326000000059],[-67.036117999999931,66.644714000000022],[-67.048889000000031,66.644714000000022],[-67.058884000000035,66.642761000000064],[-67.060546999999985,66.640273999999977],[-67.05610699999994,66.633605999999986],[-67.043334999999956,66.625809000000061],[-67.016662999999937,66.615265000000022],[-66.950561999999877,66.592209000000139],[-66.908339999999953,66.578049000000078],[-66.887511999999901,66.569442999999978],[-66.884170999999867,66.566086000000041],[-66.889450000000011,66.561096000000134],[-67.105559999999969,66.485809000000017],[-67.118331999999953,66.484985000000052],[-67.133620999999948,66.485809000000017],[-67.176940999999943,66.489700000000084],[-67.189712999999927,66.491653000000042],[-67.198607999999979,66.494141000000013],[-67.202224999999999,66.497208000000114],[-67.203887999999949,66.505264000000011],[-67.192215000000033,66.51527400000009],[-67.186110999999983,66.524428999999941],[-67.19027699999998,66.529160000000104],[-67.327224999999999,66.595825000000048],[-67.338332999999977,66.597762999999986],[-67.34584000000001,66.597214000000008],[-67.398620999999878,66.589157000000057],[-67.410003999999958,66.585540999999978],[-67.463622999999984,66.578873000000044],[-67.515015000000005,66.573607999999979],[-67.581116000000009,66.575271999999984],[-67.639724999999999,66.580551000000128],[-67.726943999999889,66.576660000000061],[-67.737212999999997,66.574158000000011],[-67.740828999999962,66.571106000000043],[-67.742767000000015,66.568328999999949],[-67.741942999999935,66.564148000000046],[-67.735001000000011,66.561371000000008],[-67.722777999999892,66.558029000000033],[-67.701110999999855,66.55581699999999],[-67.499999999999943,66.544838000000027],[-67.426102000000014,66.541367000000037],[-67.407776000000013,66.542206000000022],[-67.395843999999954,66.544708000000071],[-67.380553999999904,66.545822000000044],[-67.373885999999914,66.545822000000044],[-67.365829000000019,66.544434000000138],[-67.296386999999925,66.526093000000003],[-67.281676999999945,66.51887499999998],[-67.148620999999991,66.443863000000022],[-67.143889999999999,66.437759000000028],[-67.143615999999952,66.435531999999967],[-67.138061999999991,66.382202000000063],[-67.139724999999999,66.376648000000046],[-67.160827999999981,66.365540000000067],[-67.172501000000011,66.363876000000062],[-67.185271999999941,66.363602000000128],[-67.197768999999994,66.365814],[-67.291671999999892,66.399429000000055],[-67.337509000000011,66.418869000000086],[-67.338988999999913,66.422852000000091],[-67.343063000000029,66.426650999999993],[-67.350280999999939,66.428863999999976],[-67.365829000000019,66.429703000000131],[-67.389724999999942,66.430817000000104],[-67.406386999999995,66.429703000000131],[-67.410552999999993,66.425262000000032],[-67.410003999999958,66.420821999999987],[-67.383330999999998,66.401932000000045],[-67.378326000000015,66.398604999999918],[-67.36860699999994,66.394714000000022],[-67.31361400000003,66.376373000000058],[-67.288604999999961,66.368866000000082],[-67.240828999999962,66.358871000000022],[-67.195830999999998,66.354980000000126],[-67.188598999999954,66.352203000000031],[-67.133057000000008,66.313873000000115],[-67.125274999999988,66.30693100000002],[-67.126099000000011,66.305542000000003],[-67.129165999999941,66.303589000000102],[-67.139449999999954,66.301376000000118],[-67.162216000000001,66.298874000000069],[-67.183884000000035,66.297485000000052],[-67.194153000000028,66.297760000000039],[-67.208618000000001,66.299988000000042],[-67.226944000000003,66.304153000000042],[-67.240828999999962,66.304153000000042],[-67.254181000000017,66.302765000000136],[-67.261672999999973,66.299149000000057],[-67.282226999999978,66.275269000000037],[-67.297501000000011,66.276093000000003],[-67.399170000000026,66.292480000000012],[-67.413895000000025,66.296646000000067],[-67.450287000000003,66.316666000000112],[-67.453063999999927,66.320541000000105],[-67.453339000000028,66.322495000000117],[-67.494719999999973,66.356934000000138],[-67.526108000000022,66.382202000000063],[-67.5625,66.407486000000063],[-67.566665999999998,66.409424000000001],[-67.603057999999976,66.418594000000041],[-67.634170999999981,66.424698000000092],[-67.690826000000015,66.435256999999922],[-67.71305799999999,66.436096000000077],[-67.730285999999978,66.439971999999955],[-67.812499999999943,66.463043000000027],[-67.825286999999946,66.46775800000006],[-67.828612999999905,66.470824999999934],[-67.834732000000031,66.48332199999993],[-67.838607999999908,66.491653000000042],[-67.923614999999927,66.516098000000056],[-67.952498999999989,66.514709000000039],[-67.985824999999863,66.509720000000073],[-67.992767000000015,66.506943000000035],[-67.992767000000015,66.503876000000105],[-67.944716999999855,66.478867000000093],[-67.929169000000002,66.473038000000088],[-67.906113000000005,66.468048000000067],[-67.886948000000018,66.461928999999998],[-67.870269999999948,66.454712000000086],[-67.760558999999944,66.358032000000037],[-67.756392999999946,66.353317000000004],[-67.711120999999935,66.296936000000073],[-67.701401000000033,66.284714000000122],[-67.701674999999966,66.278320000000065],[-67.705565999999976,66.275269000000037],[-67.724716000000001,66.260818000000029],[-67.672225999999966,66.228317000000118],[-67.570556999999951,66.184143000000006],[-67.454453000000001,66.144714000000079],[-67.399993999999992,66.126373000000115],[-67.281386999999938,66.083054000000004],[-67.165008999999998,66.036926000000051],[-67.162506000000008,66.035262999999929],[-67.243522999999925,65.978301999999985],[-67.173049999999876,65.918593999999985],[-67.185821999999973,65.912200999999982],[-67.194442999999978,65.909714000000122],[-67.201674999999966,65.90914900000007],[-67.429992999999911,65.90554800000001],[-67.740554999999858,65.894150000000025],[-67.795273000000009,65.877197000000137],[-67.824172999999973,65.880814000000044],[-67.86471599999993,65.887772000000041],[-67.914444000000003,65.899155000000064],[-67.938599000000011,65.908035000000098],[-68.02694699999995,65.99275200000011],[-68.030563000000029,65.998032000000023],[-68.031386999999995,66.002213000000097],[-68.027221999999995,66.060806000000071],[-68.025832999999977,66.06581100000011],[-68.130828999999949,66.126648000000102],[-68.244720000000029,66.1827550000001],[-68.340285999999992,66.196930000000009],[-68.538054999999929,66.200821000000076],[-68.712783999999942,66.19859300000013],[-68.808334000000002,66.195816000000036],[-68.842498999999975,66.193313999999987],[-68.851394999999968,66.189972000000012],[-68.846389999999928,66.186645999999996],[-68.835281000000009,66.184981999999991],[-68.668610000000001,66.178864000000033],[-68.568343999999968,66.178588999999988],[-68.414718999999991,66.159424000000058],[-68.403610000000015,66.146378000000084],[-68.391113000000018,66.135269000000051],[-68.383330999999941,66.131087999999977],[-68.300277999999878,66.092758000000003],[-68.27806099999998,66.083602999999982],[-68.244155999999975,66.071105999999986],[-68.237777999999935,66.069992000000013],[-68.225554999999986,66.069992000000013],[-68.220551,66.073044000000095],[-68.218886999999995,66.081375000000037],[-68.22193900000002,66.085266000000104],[-68.229720999999984,66.092209000000082],[-68.244155999999975,66.099991000000045],[-68.246947999999975,66.112761999999975],[-68.220000999999968,66.128586000000041],[-68.202498999999932,66.128859999999975],[-68.194716999999969,66.127472000000068],[-68.157501000000025,66.117477000000008],[-68.134170999999981,66.109985000000052],[-68.118880999999988,66.103592000000106],[-68.047226000000023,66.064986999999974],[-68.048889000000031,66.00749200000007],[-68.051940999999943,65.996643000000006],[-68.05360399999995,65.991088999999988],[-68.064437999999939,65.984421000000054],[-68.12388599999997,65.963043000000084],[-68.134170999999981,65.963318000000129],[-68.173614999999984,65.969436999999971],[-68.196945000000028,65.973876999999959],[-68.210555999999997,65.979430999999977],[-68.27806099999998,66.014160000000061],[-68.304442999999878,66.028046000000018],[-68.323897999999929,66.003875999999991],[-68.333618000000001,65.93193100000002],[-68.332229999999925,65.92886400000009],[-68.325835999999981,65.916382000000112],[-68.321670999999981,65.911925999999994],[-68.304748999999958,65.908661000000052],[-68.287780999999995,65.907760999999994],[-68.260009999999909,65.911377000000016],[-68.194153000000028,65.921097000000145],[-68.156113000000005,65.929703000000018],[-68.150283999999999,65.930542000000003],[-68.142775999999969,65.929152999999985],[-68.139998999999989,65.927475000000072],[-68.136123999999995,65.922760000000039],[-68.134734999999921,65.913605000000018],[-68.13290399999994,65.834885000000043],[-68.139175000000023,65.817215000000147],[-68.147231999999974,65.798325000000034],[-68.033324999999934,65.776382000000069],[-68.023894999999868,65.77526899999998],[-68.003066999999987,65.778320000000008],[-67.923614999999927,65.793869000000086],[-67.886123999999882,65.804977000000065],[-67.821120999999948,65.768050999999957],[-67.870269999999948,65.689422999999977],[-67.942489999999964,65.618042000000116],[-67.989165999999898,65.61914100000007],[-68.058884000000035,65.568053999999961],[-68.027221999999995,65.558319000000097],[-68.012512000000015,65.557754999999929],[-68.011672999999973,65.558868000000018],[-67.998610999999983,65.566939999999988],[-67.98721299999994,65.571381000000088],[-67.971114999999998,65.575271999999984],[-67.956664999999987,65.571655000000021],[-67.951675000000023,65.568329000000006],[-67.953063999999927,65.557205000000124],[-67.955001999999979,65.55386400000009],[-68.020844000000011,65.49803200000008],[-68.027785999999935,65.491653000000042],[-68.030288999999982,65.487761999999975],[-68.030563000000029,65.484421000000111],[-68.025832999999977,65.481093999999985],[-68.022507000000019,65.480545000000063],[-68.00778200000002,65.485535000000084],[-67.941939999999931,65.525269000000037],[-67.922500999999954,65.538040000000137],[-67.860274999999945,65.584427000000062],[-67.730285999999978,65.636383000000137],[-67.712219000000005,65.640823000000125],[-67.652495999999985,65.651382000000012],[-67.466109999999958,65.674149000000114],[-67.428604000000007,65.676650999999993],[-67.402495999999928,65.677475000000129],[-67.396118000000001,65.676650999999993],[-67.382216999999912,65.673874000000069],[-67.328063999999983,65.662491000000045],[-67.319457999999941,65.659423999999944],[-67.280562999999972,65.642487000000131],[-67.275283999999999,65.637772000000098],[-67.256667999999991,65.615265000000022],[-67.25389100000001,65.611649],[-67.251677999999856,65.606934000000138],[-67.253341999999975,65.601654000000053],[-67.256667999999991,65.599152000000004],[-67.272781000000009,65.595261000000107],[-67.320557000000008,65.586929000000112],[-67.333327999999938,65.582489000000066],[-67.336120999999935,65.580826000000002],[-67.456664999999987,65.501937999999996],[-67.458892999999932,65.49803200000008],[-67.451400999999919,65.493590999999981],[-67.347504000000015,65.458602999999982],[-67.221389999999985,65.456375000000037],[-67.189986999999974,65.458037999999988],[-67.180832000000009,65.459152000000131],[-67.169158999999979,65.461380000000077],[-67.155563000000029,65.466934000000094],[-67.142226999999991,65.469147000000078],[-67.081679999999949,65.462494000000049],[-67.065552000000025,65.458602999999982],[-67.058608999999933,65.453597999999943],[-67.058043999999995,65.451385000000016],[-67.058334000000002,65.426651000000049],[-67.062774999999931,65.417480000000069],[-67.078339000000028,65.392211999999972],[-67.111114999999984,65.364700000000028],[-67.118056999999965,65.361922999999933],[-67.12388599999997,65.360535000000027],[-67.134445000000028,65.359711000000061],[-67.218063000000029,65.358597000000088],[-67.255568999999923,65.360535000000027],[-67.316101000000003,65.358597000000088],[-67.400833000000034,65.350266000000033],[-67.408889999999985,65.348328000000095],[-67.413619999999923,65.345825000000104],[-67.417770000000019,65.342209000000025],[-67.416107000000011,65.339157000000114],[-67.40943900000002,65.333328000000108],[-67.399993999999992,65.329712000000029],[-67.391113000000018,65.327209000000096],[-67.33666999999997,65.31721500000009],[-67.326674999999966,65.316940000000045],[-67.319167999999934,65.318054000000018],[-67.315826000000015,65.320541000000105],[-67.306655999999862,65.330276000000026],[-67.306106999999997,65.333602999999925],[-67.306945999999982,65.338042999999971],[-67.303878999999938,65.34248400000007],[-67.297501000000011,65.347487999999998],[-67.291381999999942,65.349716000000001],[-67.283614999999998,65.351089000000059],[-67.269164999999987,65.352203000000031],[-67.125548999999978,65.311919999999986],[-67.119995000000017,65.309982000000048],[-67.077788999999996,65.250275000000101],[-67.063889000000017,65.218322999999941],[-66.93472300000002,65.233871000000136],[-66.933060000000012,65.233597000000032],[-66.928878999999938,65.229705999999965],[-66.948883000000023,65.125259000000142],[-66.950835999999981,65.11692800000003],[-66.953339000000028,65.113036999999963],[-66.959166999999979,65.106644000000017],[-66.967498999999975,65.103866999999923],[-67.025283999999886,65.10832199999993],[-67.044158999999922,65.107483000000002],[-67.055557000000022,65.105255000000056],[-67.066665999999998,65.100815000000011],[-67.072234999999978,65.097214000000122],[-67.106110000000001,65.064147999999989],[-67.108611999999994,65.060256999999922],[-67.107773000000009,65.058868000000132],[-67.096114999999998,65.056091000000038],[-67.085830999999985,65.056366000000082],[-67.075012000000015,65.058029000000147],[-66.890563999999983,65.103317000000061],[-66.835555999999997,65.137206999999989],[-66.756393000000003,65.177200000000028],[-66.74749799999995,65.180542000000003],[-66.730285999999921,65.181366000000139],[-66.726105000000018,65.180267000000129],[-66.725554999999986,65.178040000000067],[-66.753341999999975,65.113312000000008],[-66.801666000000012,65.060806000000071],[-66.767501999999979,65.024429000000112],[-66.743057000000022,64.963042999999971],[-66.726944000000003,64.913879000000122],[-66.727492999999924,64.90525800000006],[-66.728057999999976,64.901657],[-66.733063000000016,64.888321000000019],[-66.739165999999955,64.859985000000108],[-66.735000999999954,64.824707000000103],[-66.734160999999915,64.820541000000048],[-66.698043999999868,64.761931999999945],[-66.694716999999912,64.761383000000023],[-66.687774999999988,64.762206999999989],[-66.654175000000009,64.771103000000096],[-66.641113000000018,64.775818000000129],[-66.632492000000013,64.781372000000147],[-66.638061999999991,64.785538000000031],[-66.676101999999901,64.876082999999994],[-66.696944999999971,65.03276100000005],[-66.694152999999972,65.037201000000096],[-66.688660000000027,65.038772999999935],[-66.673324999999977,65.038589000000002],[-66.660827999999981,65.037201000000096],[-66.618056999999965,65.030273000000079],[-66.535278000000005,65.010817999999915],[-66.530563000000029,65.00749200000007],[-66.49610899999999,64.983047000000056],[-66.488891999999908,64.957489000000123],[-66.496658000000025,64.945526000000086],[-66.495543999999995,64.938873000000115],[-66.491378999999995,64.934982000000048],[-66.486664000000019,64.932205000000124],[-66.478606999999954,64.929153000000042],[-66.388610999999969,64.913315000000011],[-66.379165999999998,64.912201000000039],[-66.368057000000022,64.913605000000018],[-66.363892000000021,64.917480000000012],[-66.361938000000009,64.923599000000024],[-66.36361699999992,64.928589000000102],[-66.334732000000031,64.934708000000114],[-66.177779999999927,64.880264000000068],[-66.148346000000004,64.868866000000025],[-66.177215999999987,64.796371000000022],[-66.18472300000002,64.784424000000058],[-66.191939999999931,64.77887000000004],[-66.199431999999945,64.774993999999992],[-66.203339000000028,64.77388000000002],[-66.213333000000034,64.75610400000005],[-66.219161999999983,64.726089000000115],[-66.218886999999938,64.69081100000011],[-66.212218999999948,64.685531999999967],[-66.18472300000002,64.681656000000032],[-66.166945999999939,64.681091000000038],[-66.161117999999931,64.682479999999998],[-66.15834000000001,64.68414300000012],[-66.151947000000007,64.689147999999989],[-66.147781000000009,64.695815999999979],[-66.147232000000031,64.70138500000013],[-66.147232000000031,64.704162999999937],[-66.150283999999942,64.71748400000007],[-66.14973399999991,64.733597000000145],[-66.145554000000004,64.740265000000136],[-66.136397999999986,64.754166000000112],[-66.116942999999992,64.781372000000147],[-66.091675000000009,64.809708000000057],[-66.080841000000021,64.819153000000085],[-66.058333999999945,64.832764000000054],[-66.037215999999944,64.844986000000063],[-66.020843999999954,64.849716000000058],[-66.011397999999986,64.848327999999981],[-66.011123999999995,64.846375000000023],[-66.008621000000005,64.78915400000011],[-66.009170999999867,64.778046000000074],[-66.012511999999901,64.699417000000039],[-65.899993999999992,64.673309000000074],[-65.846664000000033,64.676085999999998],[-65.852218999999991,64.680267000000072],[-65.861389000000031,64.689147999999989],[-65.889449999999954,64.719711000000132],[-65.899170000000026,64.73275799999999],[-65.958617999999944,64.877761999999962],[-65.95666499999993,64.886108000000092],[-65.953338999999971,64.888321000000019],[-65.941939999999988,64.890548999999965],[-65.931380999999931,64.89137299999993],[-65.92471299999994,64.89137299999993],[-65.838608000000022,64.882476999999994],[-65.727218999999934,64.843597000000045],[-65.717772999999966,64.84027100000003],[-65.674438000000009,64.818054000000132],[-65.664168999999958,64.80831900000004],[-65.661666999999966,64.804428000000144],[-65.660278000000005,64.799149],[-65.665008999999998,64.796936000000017],[-65.683318999999926,64.792206000000022],[-65.698333999999988,64.784714000000065],[-65.720275999999956,64.766663000000108],[-65.736114999999984,64.750275000000045],[-65.742492999999911,64.741089000000102],[-65.742766999999958,64.735260000000039],[-65.736938000000009,64.726089000000115],[-65.726944000000003,64.711380000000077],[-65.710830999999985,64.693039000000056],[-65.704726999999934,64.687485000000095],[-65.703063999999927,64.692200000000128],[-65.709441999999967,64.712769000000037],[-65.71055599999994,64.718596999999988],[-65.710007000000019,64.732208000000128],[-65.708618000000001,64.736099000000024],[-65.684157999999968,64.761107999999979],[-65.676102000000014,64.765548999999908],[-65.665282999999931,64.771378000000141],[-65.648055999999997,64.774993999999992],[-65.642776000000026,64.774993999999992],[-65.627212999999927,64.771103000000096],[-65.598891999999921,64.756377999999984],[-65.56639100000001,64.737488000000042],[-65.561110999999869,64.733047000000113],[-65.557495000000017,64.728317000000061],[-65.555831999999953,64.723312000000021],[-65.556380999999931,64.717758000000003],[-65.572234999999921,64.664153999999996],[-65.576675000000023,64.652481000000023],[-65.583327999999938,64.642761000000121],[-65.586394999999925,64.640274000000034],[-65.654723999999987,64.602478000000019],[-65.662505999999951,64.598328000000038],[-65.714172000000019,64.570541000000048],[-65.730835000000013,64.517761000000007],[-65.732223999999974,64.508040999999935],[-65.725554999999929,64.498031999999967],[-65.721664000000033,64.49414100000007],[-65.708344000000011,64.486649000000114],[-65.695540999999992,64.485809000000074],[-65.665008999999998,64.492203000000131],[-65.643340999999964,64.494979999999998],[-65.573333999999988,64.498596000000077],[-65.524718999999948,64.49971000000005],[-65.518065999999976,64.49971000000005],[-65.506392999999946,64.497482000000105],[-65.504181000000017,64.495818999999983],[-65.50556899999998,64.468872000000033],[-65.396117999999944,64.52137799999997],[-65.384170999999981,64.524155000000064],[-65.365828999999906,64.526931999999988],[-65.210555999999883,64.536102000000028],[-65.203888000000006,64.533874999999966],[-65.144454999999994,64.51138300000008],[-65.085006999999962,64.479705999999965],[-65.077788999999939,64.475815000000068],[-65.075835999999981,64.471375000000023],[-65.074172999999973,64.461929000000055],[-65.071670999999981,64.440810999999997],[-65.071945000000028,64.43081699999999],[-65.073623999999938,64.426086000000055],[-65.194991999999957,64.310257000000092],[-65.202498999999989,64.306366000000025],[-65.210830999999985,64.303863999999976],[-65.284728999999913,64.291656000000103],[-65.295272999999895,64.290267999999969],[-65.309433000000013,64.29136699999998],[-65.343337999999903,64.294983000000002],[-65.377212999999983,64.303314000000114],[-65.386397999999929,64.30664100000007],[-65.408889999999928,64.312485000000038],[-65.451674999999966,64.319992000000013],[-65.498885999999857,64.322769000000108],[-65.525008999999898,64.323318000000029],[-65.554168999999945,64.323318000000029],[-65.563323999999909,64.322494999999947],[-65.65583799999996,64.308868000000075],[-65.661666999999966,64.307479999999998],[-65.658339999999953,64.302765000000136],[-65.654449,64.300812000000008],[-65.61860699999994,64.293045000000063],[-65.601943999999946,64.293594000000041],[-65.591948999999943,64.296096999999975],[-65.572234999999921,64.298599000000081],[-65.505844000000025,64.302475000000129],[-65.465835999999967,64.30304000000001],[-65.434158000000025,64.299149000000114],[-65.422774999999945,64.296371000000136],[-65.250564999999995,64.208328000000051],[-65.24610899999999,64.204987000000017],[-65.242766999999958,64.200271999999984],[-65.265015000000005,64.17886400000009],[-65.16194200000001,64.138046000000145],[-65.049438000000009,64.072220000000016],[-65.053878999999938,64.067764000000068],[-65.060546999999929,64.064986999999974],[-65.093886999999995,64.052199999999971],[-65.103881999999999,64.049149],[-65.136672999999917,64.041367000000037],[-65.158339999999953,64.038315000000068],[-65.196105999999929,64.040268000000026],[-65.206115999999952,64.040268000000026],[-65.21665999999999,64.038589000000002],[-65.221389999999928,64.03637700000013],[-65.225554999999929,64.032761000000107],[-65.221938999999963,64.028594999999996],[-65.214172000000019,64.025543000000084],[-65.189986999999917,64.020264000000111],[-65.096663999999976,64.009155000000021],[-65.08805799999999,64.009430000000066],[-64.949158000000011,64.014999000000046],[-64.800551999999982,64.02777100000003],[-64.68638599999997,64.039154000000053],[-64.676940999999999,64.036652000000004],[-64.668059999999969,64.033051000000114],[-64.661117999999988,64.028594999999996],[-64.630554000000018,63.978324999999984],[-64.631377999999984,63.974709000000132],[-64.632766999999944,63.972763000000043],[-64.638335999999981,63.96915400000006],[-64.64805599999994,63.966934000000037],[-64.658889999999985,63.965546000000131],[-64.669998000000021,63.966385000000059],[-64.689437999999996,63.966103000000032],[-64.700561999999991,63.963882000000126],[-64.817504999999983,63.923607000000004],[-64.875274999999988,63.901100000000099],[-64.888901000000033,63.894996999999989],[-64.974715999999944,63.851936000000137],[-64.985000999999954,63.829163000000051],[-64.987502999999947,63.823051000000078],[-64.984160999999915,63.813881000000038],[-64.954177999999956,63.776382000000126],[-64.94888299999991,63.774437000000091],[-64.77806099999998,63.747772000000055],[-64.68360899999999,63.746383999999978],[-64.584441999999854,63.704711999999915],[-64.559432999999956,63.694153000000085],[-64.540282999999988,63.684433000000013],[-64.527495999999985,63.676941000000056],[-64.522507000000019,63.672768000000076],[-64.508347000000015,63.650826000000052],[-64.506667999999991,63.636940000000038],[-64.507506999999976,63.630821000000026],[-64.515015000000005,63.620270000000119],[-64.52194199999991,63.611938000000123],[-64.536666999999966,63.581108000000086],[-64.529449,63.534996000000035],[-64.522507000000019,63.514717000000076],[-64.50167799999997,63.443878000000097],[-64.49888599999997,63.429161000000079],[-64.495543999999938,63.327773999999977],[-64.510833999999988,63.307770000000062],[-64.588897999999858,63.321938000000102],[-64.608337000000006,63.32388300000008],[-64.61999499999996,63.323326000000009],[-64.62222300000002,63.322219999999959],[-64.624709999999993,63.318054000000075],[-64.61999499999996,63.313324000000023],[-64.614715999999987,63.30971500000004],[-64.587783999999942,63.299721000000034],[-64.577224999999999,63.296660999999972],[-64.566390999999953,63.293884000000048],[-64.525557999999933,63.290550000000053],[-64.500838999999985,63.289992999999981],[-64.488892000000021,63.288330000000087],[-64.482773000000009,63.285827999999981],[-64.481948999999872,63.282211000000018],[-64.531112999999948,63.249718000000087],[-64.538054999999929,63.248329000000069],[-64.658339999999953,63.249161000000015],[-64.767501999999922,63.32388300000008],[-64.826950000000011,63.45249199999995],[-64.850554999999929,63.510826000000009],[-64.942490000000021,63.632210000000043],[-64.955001999999922,63.640274000000034],[-64.973052999999993,63.646942000000024],[-64.99499499999996,63.652488999999946],[-65.046386999999925,63.662209000000075],[-65.06361400000003,63.668053000000043],[-65.070847000000015,63.671936000000017],[-65.166945999999996,63.747772000000055],[-65.166397000000018,63.773323000000119],[-65.153335999999911,63.771102999999925],[-65.150833000000034,63.772217000000126],[-65.154174999999952,63.776939000000027],[-65.15943900000002,63.781105000000082],[-65.204726999999934,63.80332199999998],[-65.293609999999944,63.812767000000065],[-65.298614999999927,63.81249200000002],[-65.301392000000021,63.81082200000003],[-65.303878999999995,63.806938000000002],[-65.300277999999935,63.799995000000024],[-65.281677000000002,63.788887000000045],[-65.215560999999923,63.75471500000009],[-65.15566999999993,63.725326999999993],[-65.135284000000013,63.715271000000143],[-65.053054999999972,63.638046000000088],[-65.039169000000015,63.574165000000107],[-65.069732999999985,63.568886000000134],[-65.085830999999928,63.563881000000094],[-65.091948999999943,63.559714999999983],[-65.099990999999932,63.547217999999987],[-65.102218999999991,63.541664000000026],[-65.102218999999991,63.536658999999929],[-65.099441999999897,63.526381999999955],[-65.026947000000007,63.399162000000103],[-64.965011999999945,63.369438000000059],[-64.952498999999875,63.362212999999997],[-64.942490000000021,63.353049999999996],[-64.909163999999976,63.280548000000124],[-64.901108000000022,63.237495000000024],[-64.908614999999941,63.235550000000046],[-64.921386999999925,63.235825000000034],[-65.046386999999925,63.248329000000069],[-65.068893000000003,63.252494999999954],[-65.082503999999972,63.260826000000066],[-65.103332999999964,63.27777100000003],[-65.114166000000012,63.284996000000092],[-65.123321999999973,63.288330000000087],[-65.136123999999995,63.290833000000021],[-65.141953000000001,63.28943600000008],[-65.148620999999991,63.286110000000065],[-65.146956999999873,63.281380000000013],[-65.083327999999938,63.20388000000014],[-65.057770000000005,63.174712999999997],[-65.054992999999911,63.172217999999987],[-65.046111999999994,63.171104000000014],[-65.016524999999945,63.171515999999997],[-64.998610999999926,63.176102000000014],[-64.944716999999912,63.183327000000077],[-64.920272999999952,63.184158000000082],[-64.911391999999921,63.180824000000086],[-64.811660999999958,63.137497000000053],[-64.797500999999954,63.130547000000035],[-64.783889999999985,63.12221500000004],[-64.755004999999926,63.099158999999986],[-64.753341999999918,63.096657000000107],[-64.762511999999958,63.0472180000001],[-64.771392999999989,62.98333000000008],[-64.703338999999971,62.953323000000069],[-64.696105999999872,62.952217000000076],[-64.676392000000021,62.941658000000018],[-64.645553999999947,62.921660999999972],[-64.634444999999971,62.912491000000102],[-64.627212999999983,62.90415999999999],[-64.626937999999939,62.899994000000106],[-64.629989999999964,62.897491000000116],[-64.638335999999981,62.894440000000088],[-64.733611999999994,62.878875999999991],[-64.769454999999937,62.862213000000111],[-64.855269999999962,62.865273000000002],[-64.881942999999865,62.867493000000024],[-64.903885000000002,62.872490000000084],[-64.923324999999977,62.878875999999991],[-65.005004999999983,62.90776800000009],[-65.162215999999944,62.943047000000035],[-65.225280999999995,62.954993999999942],[-65.236114999999984,62.957771000000037],[-65.243056999999965,62.961662000000103],[-65.248336999999935,62.965828000000045],[-65.25140399999998,62.970543000000077],[-65.255004999999926,62.979713000000118],[-65.254729999999995,62.985268000000019],[-65.26916499999993,62.959991000000059],[-65.194442999999922,62.878875999999991],[-65.190276999999924,62.875267000000008],[-65.175002999999947,62.862495000000024],[-65.153884999999946,62.84693900000002],[-65.14805599999994,62.843322999999998],[-65.129165999999998,62.83638000000002],[-65.115279999999984,62.828880000000083],[-64.984726000000023,62.714157],[-64.978332999999964,62.704711999999972],[-64.94888299999991,62.648604999999975],[-64.964721999999995,62.6336060000001],[-64.980834999999956,62.623604000000114],[-65.062774999999988,62.587494000000049],[-65.071120999999948,62.584435000000042],[-65.087219000000005,62.57888000000014],[-65.114715999999987,62.571663000000058],[-65.145003999999915,62.565826000000072],[-65.187499999999943,62.56221000000005],[-65.19776899999988,62.563048999999978],[-65.205001999999979,62.566101000000117],[-65.212219000000005,62.569992000000013],[-65.22084000000001,62.578331000000048],[-65.288605000000018,62.659987999999998],[-65.294997999999964,62.669441000000006],[-65.296660999999972,62.674163999999962],[-65.290558000000033,62.678878999999995],[-65.273894999999982,62.685265000000129],[-65.267776000000026,62.690269000000058],[-65.266952999999944,62.694434999999999],[-65.279175000000009,62.696654999999964],[-65.321121000000005,62.694434999999999],[-65.327498999999989,62.691658000000075],[-65.329726999999934,62.685546999999985],[-65.328063999999983,62.666100000000142],[-65.337218999999948,62.666664000000083],[-65.346953999999869,62.675827000000083],[-65.353881999999942,62.684433000000013],[-65.356658999999922,62.69499200000007],[-65.339721999999938,62.837493999999992],[-65.391952999999944,62.843605000000025],[-65.436661000000015,62.819442999999978],[-65.566665999999941,62.811661000000015],[-65.579178000000013,62.811934999999949],[-65.601943999999946,62.817772000000105],[-65.60943599999996,62.820831000000055],[-65.61610399999995,62.824715000000083],[-65.746947999999861,62.917770000000075],[-65.909438999999963,62.925827000000027],[-65.933318999999983,62.955826000000059],[-65.910278000000005,62.967765999999983],[-65.839721999999995,63.020828000000051],[-65.834731999999974,63.026382000000069],[-65.833327999999995,63.03138000000007],[-65.838333000000034,63.033333000000027],[-65.84973100000002,63.032767999999976],[-65.866394000000014,63.028602999999976],[-65.926101999999958,63.008331000000112],[-65.949722000000008,62.997772000000055],[-65.955001999999979,62.994155999999975],[-65.955565999999862,62.990829000000076],[-65.946380999999974,62.983047000000113],[-65.945830999999941,62.978874000000133],[-65.950561999999991,62.975822000000051],[-65.960830999999928,62.974433999999974],[-65.973891999999864,62.973877000000073],[-65.987212999999997,62.974709000000132],[-66.014450000000011,62.978874000000133],[-66.031386999999938,62.984717999999987],[-66.039718999999991,62.988602000000014],[-66.052215999999987,62.996658000000082],[-66.14973399999991,63.059990000000084],[-66.155563000000029,63.081383000000017],[-66.162780999999939,63.089989000000116],[-66.174438000000009,63.096382000000062],[-66.266952999999944,63.130820999999969],[-66.275832999999977,63.133881000000031],[-66.282501000000025,63.133330999999998],[-66.287780999999995,63.12971500000009],[-66.291945999999996,63.125267000000122],[-66.293335000000013,63.120543999999995],[-66.291381999999999,63.116104000000121],[-66.206954999999994,63.040833000000077],[-66.196654999999964,63.031661999999983],[-66.182769999999891,63.023604999999975],[-66.121658000000025,63.00110600000005],[-66.105559999999969,62.993880999999988],[-66.098343,62.990273000000059],[-66.091385000000002,62.983604000000014],[-66.089721999999881,62.978600000000029],[-66.097777999999948,62.952492000000063],[-66.103058000000033,62.946655000000135],[-66.107772999999952,62.943878000000041],[-66.11610399999995,62.940544000000045],[-66.135833999999932,62.936652999999978],[-66.147232000000031,62.936104],[-66.159163999999976,62.936652999999978],[-66.168883999999991,62.938881000000094],[-66.192215000000033,62.954437000000041],[-66.220839999999953,62.969437000000028],[-66.284728999999913,62.990273000000059],[-66.293883999999878,62.992767000000015],[-66.345000999999968,62.999161000000015],[-66.351668999999958,62.998603999999943],[-66.366104000000007,62.992493000000081],[-66.37860099999989,62.992493000000081],[-66.392775999999969,62.994995000000131],[-66.408889999999928,63.001938000000109],[-66.444442999999865,63.020546000000024],[-66.46444699999995,63.032211000000075],[-66.518340999999964,63.065269000000058],[-66.525283999999999,63.074715000000026],[-66.551940999999999,63.17943600000001],[-66.626388999999961,63.252220000000136],[-66.646666999999979,63.326384999999959],[-66.638335999999981,63.340271000000143],[-66.637512000000015,63.349998000000085],[-66.636948000000018,63.35833000000008],[-66.637786999999946,63.362770000000069],[-66.642776000000026,63.372489999999971],[-66.650832999999977,63.374992000000077],[-66.657500999999968,63.374435000000005],[-66.664169000000015,63.371658000000082],[-66.735549999999989,63.299438000000066],[-66.738602000000014,63.294159000000093],[-66.740828999999962,63.288048000000003],[-66.740279999999927,63.283607000000075],[-66.731110000000001,63.274712000000022],[-66.720550999999944,63.266388000000006],[-66.685546999999985,63.248046999999985],[-66.671386999999868,63.242767000000129],[-66.646956999999929,63.239159000000029],[-66.639174999999966,63.236107000000118],[-66.607498000000021,63.21027400000014],[-66.602492999999981,63.205269000000101],[-66.600280999999995,63.200829000000113],[-66.558334000000002,63.087212000000022],[-66.537780999999882,62.998047000000042],[-66.540282999999931,62.994155999999975],[-66.546660999999915,62.991379000000109],[-66.557220000000029,62.99193600000001],[-66.673049999999989,63.023048000000074],[-66.682220000000029,63.026382000000069],[-66.763061999999934,63.083054000000061],[-66.768065999999919,63.087768999999923],[-66.773894999999925,63.096382000000062],[-66.774444999999957,63.100548000000003],[-66.778885000000002,63.143607999999972],[-66.789169000000015,63.21138000000002],[-66.806655999999975,63.272491000000116],[-66.807495000000017,63.273323000000062],[-66.811661000000015,63.274437000000034],[-66.82028200000002,63.273323000000062],[-66.829177999999956,63.271660000000111],[-66.837783999999942,63.267769000000044],[-66.846953999999926,63.25750000000005],[-66.849166999999966,63.251389000000131],[-66.849166999999966,63.245544000000052],[-66.846114999999941,63.229713000000061],[-66.844727000000034,63.22665400000011],[-66.837219000000005,63.21804800000001],[-66.828338999999971,63.209159999999997],[-66.819457999999941,63.200272000000041],[-66.813888999999961,63.196098000000006],[-66.803878999999938,63.186378000000104],[-66.801391999999964,63.182495000000131],[-66.799727999999959,63.177490000000091],[-66.799437999999952,63.172492999999974],[-66.801666000000012,63.166382000000112],[-66.806655999999975,63.160545000000127],[-66.818343999999968,63.154159999999933],[-66.835555999999997,63.149161999999933],[-66.844161999999926,63.147217000000126],[-66.855270000000019,63.147217000000126],[-66.868332000000009,63.148880000000077],[-66.87777699999998,63.151931999999988],[-67.018340999999964,63.238883999999985],[-67.023894999999982,63.243050000000096],[-67.025008999999955,63.246658000000025],[-67.024445000000014,63.250274999999988],[-67.023055999999997,63.252777000000037],[-67.006393000000003,63.262215000000083],[-66.971114999999998,63.389717000000019],[-66.972777999999948,63.394997000000103],[-66.977782999999988,63.399719000000005],[-66.988891999999964,63.402489000000003],[-67.011123999999938,63.399993999999992],[-67.017226999999991,63.397217000000069],[-67.040832999999964,63.33554799999996],[-67.039168999999958,63.330551000000071],[-67.035827999999924,63.325272000000098],[-67.025008999999955,63.311104000000057],[-67.016113000000018,63.296660999999972],[-67.014174999999966,63.286385000000053],[-67.017226999999991,63.281105000000025],[-67.033324999999934,63.275268999999923],[-67.051940999999943,63.273323000000062],[-67.171111999999994,63.273880000000133],[-67.179717999999923,63.275551000000007],[-67.203887999999949,63.28527100000008],[-67.431670999999994,63.412765999999976],[-67.499999999999943,63.442764000000125],[-67.621658000000025,63.548881999999992],[-67.683318999999983,63.619438000000002],[-67.838897999999915,63.729713000000118],[-67.897506999999962,63.753052000000139],[-67.914718999999991,63.759438000000046],[-67.92332499999992,63.761108000000036],[-67.926102000000014,63.759163000000058],[-67.925277999999935,63.75471500000009],[-67.921386999999982,63.744438000000059],[-67.918059999999855,63.739159000000086],[-67.820006999999976,63.596382000000006],[-67.710555999999997,63.458603000000039],[-67.683318999999983,63.431664000000069],[-67.675003000000004,63.4180530000001],[-67.67193599999996,63.412490999999989],[-67.667769999999962,63.403046000000074],[-67.666396999999961,63.394439999999975],[-67.666655999999989,63.388046000000145],[-67.678329000000019,63.373047000000099],[-67.685271999999998,63.368880999999988],[-67.694442999999978,63.366385999999977],[-67.716659999999933,63.363884000000098],[-67.724166999999966,63.364159000000086],[-67.737212999999997,63.366385999999977],[-67.746384000000035,63.369438000000059],[-67.820557000000008,63.400269000000037],[-67.827224999999999,63.405266000000097],[-67.837509000000011,63.424164000000019],[-67.854445999999996,63.452774000000034],[-67.858046999999999,63.457497000000046],[-67.871658000000025,63.464714000000129],[-67.950835999999981,63.506660000000124],[-68.025283999999942,63.540832999999964],[-68.033324999999934,63.543883999999991],[-68.041381999999999,63.546104000000014],[-68.053054999999915,63.545273000000009],[-68.061661000000015,63.54332700000009],[-68.075561999999991,63.544159000000036],[-68.365829000000019,63.64527099999998],[-68.388610999999855,63.655548000000124],[-68.400283999999942,63.663879000000009],[-68.405563000000029,63.668602000000021],[-68.428328999999962,63.696381000000031],[-68.542769999999962,63.732490999999925],[-68.645843999999897,63.747490000000028],[-68.713622999999984,63.742493000000081],[-68.709732000000031,63.738045000000113],[-68.711394999999925,63.734717999999987],[-68.716109999999958,63.732207999999957],[-68.723617999999988,63.729713000000118],[-68.795546999999999,63.728600000000085],[-68.804442999999935,63.730270000000019],[-68.876099000000011,63.744713000000104],[-68.915833000000021,63.757216999999969],[-68.924437999999952,63.758888000000013],[-68.962508999999955,63.759163000000058],[-68.994720000000029,63.755554000000018],[-68.996947999999918,63.75360900000004],[-68.998336999999992,63.745270000000005],[-68.995270000000005,63.741379000000109],[-68.989715999999987,63.737495000000081],[-68.977782999999931,63.729713000000118],[-68.933059999999955,63.711936999999978],[-68.919448999999986,63.704993999999999],[-68.824722000000008,63.643883000000073],[-68.813048999999978,63.635551000000078],[-68.809433000000013,63.630821000000026],[-68.807220000000029,63.625824000000136],[-68.809433000000013,63.621658000000025],[-68.793334999999956,63.589157000000114],[-68.766113000000018,63.556656000000032],[-68.754729999999995,63.548607000000004],[-68.717772999999909,63.528603000000089],[-68.557769999999948,63.45249199999995],[-68.495833999999945,63.421378999999945],[-68.35943599999996,63.344710999999961],[-68.288605000000018,63.298332000000016],[-68.270553999999947,63.284996000000092],[-68.206389999999999,63.227211000000011],[-68.202498999999932,63.216933999999981],[-68.206389999999999,63.212493999999992],[-68.18638599999997,63.188324000000136],[-68.156113000000005,63.158324999999934],[-68.146118000000001,63.150269000000037],[-68.139175000000023,63.148605000000032],[-68.128601000000003,63.148048000000131],[-68.115554999999972,63.15248900000006],[-68.082779000000016,63.163605000000018],[-68.063888999999961,63.163605000000018],[-67.952224999999942,63.145546000000081],[-67.926392000000021,63.141106000000036],[-67.917495999999971,63.137214999999969],[-67.916655999999932,63.133049000000085],[-67.92332499999992,63.129433000000063],[-67.912780999999939,63.083327999999995],[-67.646117999999944,63.100272999999959],[-67.632767000000001,63.09887700000013],[-67.610275000000001,63.094154000000117],[-67.604996000000028,63.089989000000116],[-67.599990999999989,63.084434999999928],[-67.599990999999989,63.078880000000026],[-67.601944000000003,63.073326000000066],[-67.61500499999994,63.063605999999993],[-67.624160999999958,63.061104000000057],[-67.636123999999995,63.059715000000097],[-67.682219999999916,63.057770000000119],[-67.689712999999927,63.058044000000052],[-67.709166999999923,63.056655999999919],[-67.719451999999933,63.054993000000024],[-67.727492999999924,63.051659000000029],[-67.77305599999994,63.025826000000052],[-67.772507000000019,62.962212000000136],[-67.769729999999981,62.958327999999938],[-67.763625999999988,62.955551000000071],[-67.748046999999985,62.953049000000135],[-67.738602000000014,62.953323000000069],[-67.728058000000033,62.954993999999942],[-67.721831999999949,62.96265800000009],[-67.718841999999995,62.964493000000061],[-67.718169999999986,62.967327000000068],[-67.719329999999957,62.970490000000098],[-67.72444200000001,62.984161000000086],[-67.729995999999971,62.98832700000014],[-67.736938000000009,62.995544000000109],[-67.733886999999982,63.000832000000116],[-67.698043999999925,63.020828000000051],[-67.686934999999949,63.026657000000114],[-67.659438999999963,63.034164000000033],[-67.56527699999998,63.049438000000123],[-67.553054999999915,63.048607000000118],[-67.529998999999975,63.03694200000001],[-67.510559000000001,63.024712000000079],[-67.499999999999943,63.015549000000078],[-67.499724999999955,63.007773999999984],[-67.509170999999924,63.001938000000109],[-67.531386999999995,62.995269999999948],[-67.550551999999982,62.99193600000001],[-67.573333999999988,62.990273000000059],[-67.593613000000005,62.987495000000081],[-67.630828999999949,62.976379000000122],[-67.651397999999915,62.967490999999939],[-67.670997999999997,62.944323999999995],[-67.671829000000002,62.941322000000127],[-67.672667999999987,62.937996000000055],[-67.672775000000001,62.923324999999977],[-67.665833000000021,62.918884000000048],[-67.659164000000033,62.916664000000026],[-67.654921999999999,62.917282],[-67.648894999999925,62.921104000000071],[-67.646666999999979,62.925270000000125],[-67.638335999999981,62.931938000000116],[-67.572509999999909,62.963882000000126],[-67.566956000000005,62.965546000000131],[-67.470275999999956,62.985268000000019],[-67.462783999999999,62.985268000000019],[-67.39805599999994,62.967209000000082],[-67.194716999999912,62.870270000000062],[-67.048339999999996,62.771378000000141],[-67.012221999999952,62.73443600000013],[-66.95777899999996,62.681106999999997],[-66.913329999999917,62.669991000000039],[-66.824722000000008,62.679161000000079],[-66.813323999999852,62.679992999999968],[-66.741104000000007,62.673882000000106],[-66.733063000000016,62.671661000000029],[-66.726944000000003,62.668602000000021],[-66.728881999999942,62.666100000000142],[-66.735275000000001,62.662490999999932],[-66.744445999999925,62.660271000000137],[-66.752791999999999,62.656936999999971],[-66.760559000000001,62.653602999999976],[-66.768065999999919,62.648879999999963],[-66.773055999999883,62.643050999999957],[-66.775009000000011,62.636940000000095],[-66.773055999999883,62.632492000000127],[-66.606948999999986,62.604996000000085],[-66.425002999999947,62.445267000000115],[-66.359436000000017,62.447487000000137],[-66.351668999999958,62.444992000000127],[-66.349166999999966,62.441376000000048],[-66.327498999999932,62.384438000000046],[-66.330565999999976,62.379158000000018],[-66.337783999999886,62.374992000000077],[-66.426391999999964,62.349433999999974],[-66.435546999999929,62.349158999999986],[-66.458617999999944,62.35193600000008],[-66.469161999999983,62.35193600000008],[-66.475829999999974,62.348602000000085],[-66.478881999999999,62.343323000000112],[-66.478881999999999,62.338325999999995],[-66.476943999999946,62.335823000000005],[-66.470000999999968,62.332214000000022],[-66.374709999999993,62.286110000000065],[-66.329177999999956,62.267494000000056],[-66.318619000000012,62.264717000000132],[-66.355834999999956,62.307770000000062],[-66.359160999999972,62.312492000000134],[-66.363892000000021,62.323051000000021],[-66.361389000000031,62.326942000000088],[-66.355559999999855,62.331940000000088],[-66.351944000000003,62.334991000000116],[-66.332779000000016,62.341934000000094],[-66.3125,62.344993999999986],[-66.294158999999979,62.344711000000018],[-66.285552999999993,62.343605000000139],[-66.208343999999897,62.332214000000022],[-66.165282999999931,62.291381999999999],[-66.160277999999892,62.271378000000084],[-66.167220999999984,62.254439999999988],[-66.201950000000011,62.260551000000078],[-66.256667999999991,62.266105999999979],[-66.261397999999872,62.263054000000068],[-66.257232999999871,62.259720000000073],[-66.241104000000007,62.253326000000015],[-66.212508999999898,62.245270000000119],[-66.166397000000018,62.235267999999962],[-66.081680000000006,62.226379000000065],[-66.058608999999876,62.2241590000001],[-66.051940999999999,62.224709000000132],[-66.045836999999949,62.227485999999999],[-66.043610000000001,62.233604000000128],[-66.038895000000025,62.239432999999963],[-66.033889999999985,62.244995000000131],[-66.028610000000015,62.248604000000114],[-66.025008999999955,62.249718000000087],[-66.015014999999948,62.251389000000131],[-66,62.247771999999998],[-65.993057000000022,62.244155999999975],[-65.939437999999996,62.208602999999925],[-65.933059999999955,62.204163000000108],[-65.929168999999888,62.198044000000095],[-65.930556999999965,62.193321000000083],[-65.934432999999956,62.191657999999961],[-65.952788999999939,62.189156000000082],[-65.963332999999977,62.186935000000005],[-65.969161999999926,62.184714999999983],[-66.043610000000001,62.151657],[-66.050827000000027,62.147774000000084],[-66.132492000000013,62.089432000000045],[-66.110001000000011,62.017494000000113],[-66.041945999999996,61.958046000000081],[-66.035827999999924,61.952773999999977],[-66.033066000000019,61.95249200000012],[-66.019454999999994,61.954993999999999],[-66.003066999999987,61.962212000000022],[-65.999434999999949,61.963051000000121],[-65.992217999999866,61.962769000000094],[-65.988602000000014,61.958885000000066],[-65.949432000000002,61.912491000000102],[-65.946655000000021,61.906936999999914],[-65.946655000000021,61.899162000000047],[-65.948882999999967,61.89527099999998],[-65.955001999999979,61.890274000000034],[-65.961945000000014,61.886383000000137],[-65.97084000000001,61.883881000000088],[-66.057770000000005,61.869713000000047],[-66.066101000000003,61.868599000000074],[-66.275832999999977,61.858330000000024],[-66.287780999999995,61.858330000000024],[-66.395003999999858,61.87082700000002],[-66.404449,61.872765000000129],[-66.521666999999923,61.896942000000024],[-66.543334999999956,61.898880000000133],[-66.555557000000022,61.901382000000012],[-66.626099000000011,61.917213000000004],[-66.632767000000001,61.918884000000048],[-66.659163999999976,61.933601000000067],[-66.665282999999931,61.941375999999991],[-66.662216000000001,61.946655000000135],[-66.746947999999918,62.00777400000004],[-66.755568999999923,62.011108000000036],[-66.781386999999881,62.015549000000135],[-66.803329000000019,62.016937000000041],[-66.812774999999988,62.016663000000108],[-66.825835999999924,62.011940000000095],[-67.091949,62.030822999999998],[-67.104720999999984,62.032211000000132],[-67.254729999999938,62.078049000000078],[-67.345275999999899,62.119437999999946],[-67.463057999999933,62.139435000000049],[-67.499999999999943,62.138657000000137],[-67.731658999999922,62.158356000000026],[-67.757232999999928,62.160544999999956],[-67.798339999999939,62.166100000000085],[-68.003066999999987,62.213882000000126],[-68.113892000000021,62.216103000000032],[-68.233062999999902,62.219711000000132],[-68.256957999999997,62.220825000000104],[-68.269164999999873,62.223045000000127],[-68.299438000000009,62.232208000000128],[-68.325286999999946,62.234993000000145],[-68.401671999999962,62.239432999999963],[-68.46945199999999,62.242767000000129],[-68.519729999999925,62.244713000000047],[-68.548049999999932,62.248604000000114],[-68.564712999999927,62.251938000000109],[-68.615828999999962,62.263885000000073],[-68.722228999999913,62.302216000000044],[-68.725554999999872,62.30471],[-68.726943999999946,62.307770000000062],[-68.759170999999924,62.328049000000021],[-68.882216999999969,62.360550000000103],[-68.922501000000011,62.365547000000049],[-68.995833999999945,62.373322000000087],[-69.039000999999985,62.381355000000042],[-69.121384000000035,62.410820000000115],[-69.160003999999958,62.425270000000069],[-69.193054000000018,62.438042000000053],[-69.231673999999884,62.455269000000101],[-69.270554000000004,62.478325000000098],[-69.36082499999992,62.536385000000053],[-69.40834000000001,62.569992000000013],[-69.430556999999965,62.584160000000054],[-69.426666000000012,62.55443600000001],[-69.428329000000019,62.548332000000016],[-69.442215000000033,62.547493000000031],[-69.449721999999952,62.551102000000014],[-69.519164999999987,62.602493000000095],[-69.583892999999989,62.651932000000102],[-69.597228999999913,62.662490999999932],[-69.597504000000015,62.665268000000026],[-69.565551999999968,62.718048000000067],[-69.557219999999973,62.726379000000009],[-69.543335000000013,62.732765000000086],[-69.525557999999933,62.738044999999943],[-69.50389100000001,62.741378999999938],[-69.482497999999964,62.763611000000026],[-69.727492999999981,62.779991000000109],[-69.906386999999881,62.768599999999992],[-70.121932999999956,62.748878000000104],[-70.217498999999862,62.747772000000111],[-70.229171999999949,62.748878000000104],[-70.240279999999984,62.751389000000074],[-70.354995999999915,62.788329999999974],[-70.360000999999954,62.790276000000063],[-70.367767000000015,62.793883999999991],[-70.477782999999988,62.848328000000038],[-70.499434999999949,62.864441000000056],[-70.508056999999951,62.865828999999962],[-70.665558000000033,62.880547000000092],[-70.830291999999929,62.896660000000111],[-70.853332999999964,62.899994000000106],[-70.885558999999944,62.907211000000018],[-70.896118000000001,62.91443600000008],[-70.893065999999976,62.917770000000075],[-70.885833999999988,62.920546999999999],[-70.871384000000035,62.924713000000054],[-70.863616999999977,62.925552000000039],[-70.848343,62.924713000000054],[-70.847777999999892,62.947212000000036],[-70.974837999999977,62.989437000000009],[-70.977341000000024,62.983768000000055],[-71.013061999999991,62.989990000000091],[-71.060271999999941,62.981102000000078],[-71.071670999999981,62.979431000000034],[-71.120833999999945,62.979431000000034],[-71.135833999999932,62.980820000000051],[-71.152221999999995,62.985268000000019],[-71.156661999999983,62.989159000000086],[-71.156661999999983,62.999434999999949],[-71.136672999999973,63.028602999999976],[-71.118103000000019,63.032219000000055],[-71.091384999999946,63.029991000000052],[-71.020888999999954,63.044270000000097],[-71.013724999999965,63.043602000000021],[-71.007384999999942,63.043437999999981],[-71.003219999999942,63.044768999999974],[-70.863892000000021,63.112213000000054],[-70.856383999999991,63.139434999999992],[-70.908889999999985,63.17083000000008],[-70.920546999999942,63.168883999999991],[-70.952498999999989,63.162766000000033],[-70.971389999999928,63.158882000000006],[-70.976943999999946,63.15665400000006],[-70.990279999999984,63.148048000000131],[-70.997498000000007,63.141662999999937],[-71.001953000000015,63.128044000000045],[-71.002791999999999,63.123322000000144],[-71.00140399999998,63.118881000000044],[-70.993332000000009,63.112770000000125],[-70.990829000000019,63.108330000000137],[-70.989989999999977,63.102492999999981],[-70.993606999999997,63.098045000000013],[-71.029723999999987,63.071937999999989],[-71.041672000000005,63.069442999999922],[-71.127212999999983,63.071663000000115],[-71.138610999999912,63.073326000000066],[-71.195266999999944,63.031661999999983],[-71.195830999999998,63.026657000000114],[-71.198607999999979,63.019989000000123],[-71.208618000000001,63.01166500000005],[-71.232773000000009,63.001938000000109],[-71.243880999999988,63.00110600000005],[-71.255844000000025,63.001938000000109],[-71.262512000000015,63.004166000000112],[-71.40055799999999,63.051659000000029],[-71.408339999999953,63.055267000000129],[-71.413895000000025,63.060546999999985],[-71.421386999999982,63.071663000000115],[-71.454726999999934,63.10193600000008],[-71.465012000000002,63.103325000000098],[-71.605834999999956,63.134995000000004],[-71.624999999999943,63.140831000000048],[-71.70666499999993,63.174995000000081],[-71.713897999999972,63.179161000000136],[-71.770003999999915,63.25638600000002],[-71.794998000000021,63.326660000000004],[-71.795546999999942,63.384720000000073],[-71.805831999999953,63.382767000000001],[-72.009170999999981,63.391106000000036],[-72.063048999999921,63.396385000000009],[-72.076400999999976,63.398048000000074],[-72.083069000000023,63.400542999999971],[-72.141678000000013,63.436104000000114],[-72.146118000000001,63.439987000000031],[-72.145554000000004,63.44609800000012],[-72.126662999999951,63.450271999999984],[-72.023055999999997,63.448043999999982],[-71.933318999999926,63.443321000000026],[-71.825835999999981,63.435265000000129],[-71.785278000000005,63.431938000000002],[-71.748046999999985,63.428047000000106],[-71.711120999999935,63.422768000000133],[-71.683059999999955,63.419716000000051],[-71.634734999999921,63.419716000000051],[-71.61500499999994,63.422493000000145],[-71.59944200000001,63.42582700000014],[-71.411666999999909,63.485824999999977],[-71.316955999999948,63.530823000000055],[-71.227492999999924,63.598877000000016],[-71.229720999999984,63.604713000000061],[-71.234726000000023,63.608047000000056],[-71.245620999999971,63.610939000000087],[-71.261123999999995,63.612495000000024],[-71.295273000000009,63.612495000000024],[-71.306945999999982,63.611381999999935],[-71.323623999999938,63.605270000000132],[-71.328063999999983,63.602218999999934],[-71.331680000000006,63.598328000000038],[-71.333069000000023,63.583603000000096],[-71.332503999999972,63.581664999999987],[-71.328063999999983,63.576942000000031],[-71.325561999999991,63.571938000000046],[-71.326110999999912,63.570549000000028],[-71.331680000000006,63.565543999999989],[-71.335280999999895,63.564437999999996],[-71.379990000000021,63.565543999999989],[-71.407501000000025,63.567771999999934],[-71.414168999999958,63.570549000000028],[-71.416397000000018,63.572769000000051],[-71.378052000000025,63.595268000000033],[-71.367492999999968,63.601935999999966],[-71.363616999999977,63.607216000000051],[-71.362503000000004,63.61332700000014],[-71.377486999999974,63.632767000000115],[-71.396666999999923,63.635826000000066],[-71.407776000000013,63.635551000000078],[-71.411391999999978,63.634437999999989],[-71.418059999999969,63.629990000000021],[-71.452498999999989,63.604439000000127],[-71.441101000000003,63.590827999999988],[-71.439437999999996,63.588042999999971],[-71.446944999999914,63.580826000000002],[-71.455841000000021,63.57888000000014],[-71.470275999999956,63.578049000000135],[-71.561661000000015,63.580275999999969],[-71.576950000000011,63.581664999999987],[-71.580565999999976,63.583878000000141],[-71.581389999999942,63.59304800000001],[-71.583618000000001,63.649719000000118],[-71.569457999999997,63.675552000000039],[-71.562209999999993,63.685546999999985],[-71.581116000000009,63.714995999999985],[-71.585007000000019,63.71665999999999],[-71.615828999999906,63.722213999999951],[-71.629165999999941,63.723877000000073],[-71.638061999999877,63.721099999999979],[-71.660004000000015,63.706940000000088],[-71.664718999999877,63.703049000000021],[-71.667220999999927,63.697212000000036],[-71.700561999999991,63.696381000000031],[-71.823897999999872,63.78054800000001],[-71.830001999999979,63.784439000000077],[-71.891113000000018,63.80832700000002],[-71.904449,63.809989999999971],[-71.915558000000033,63.810271999999998],[-71.938599000000011,63.808044000000052],[-71.958344000000011,63.802490000000034],[-71.970550999999944,63.795830000000024],[-71.985549999999932,63.781937000000028],[-72.000564999999995,63.761383000000023],[-72.004181000000017,63.752776999999924],[-71.999725000000012,63.748328999999956],[-71.991104000000007,63.74610100000001],[-71.972778000000005,63.748047000000099],[-71.966949,63.75110600000005],[-71.954726999999934,63.76527400000009],[-71.946654999999964,63.770271000000037],[-71.939162999999951,63.772491000000059],[-71.934433000000013,63.772766000000047],[-71.853881999999999,63.761383000000023],[-71.848617999999988,63.759438000000046],[-71.843886999999995,63.755554000000018],[-71.879439999999988,63.681937999999946],[-71.882766999999944,63.678047000000049],[-71.920273000000009,63.655548000000124],[-71.933884000000035,63.649437000000034],[-71.963622999999984,63.649162000000047],[-72.051940999999943,63.67860399999995],[-72.154175000000009,63.735550000000103],[-72.169448999999986,63.748604],[-72.21305799999999,63.683876000000112],[-72.212783999999942,63.680550000000039],[-72.213897999999915,63.677772999999945],[-72.218886999999995,63.673882000000049],[-72.223891999999864,63.672218000000044],[-72.234160999999972,63.670273000000066],[-72.245269999999948,63.669715999999994],[-72.28694200000001,63.671660999999972],[-72.317504999999983,63.674164000000133],[-72.324172999999973,63.676658999999972],[-72.327498999999989,63.67971799999998],[-72.363891999999964,63.749435000000005],[-72.363616999999977,63.754440000000045],[-72.357772999999952,63.761383000000023],[-72.352782999999988,63.76527400000009],[-72.342498999999975,63.771378000000141],[-72.324722000000008,63.776939000000027],[-72.317779999999914,63.777771000000087],[-72.302779999999927,63.776657000000114],[-72.291381999999942,63.773605000000032],[-72.270003999999915,63.787216000000001],[-72.215012000000002,63.867767000000072],[-72.209732000000031,63.893051000000071],[-72.223052999999993,63.92943600000001],[-72.232772999999895,63.948325999999952],[-72.238892000000021,63.952492000000063],[-72.246384000000035,63.950272000000041],[-72.250564999999938,63.947769000000051],[-72.36471599999993,63.845543000000134],[-72.383056999999951,63.815543999999932],[-72.376388999999961,63.812209999999936],[-72.371658000000025,63.809158000000025],[-72.366942999999992,63.804710000000057],[-72.365554999999915,63.800270000000069],[-72.363051999999925,63.791107000000068],[-72.368056999999965,63.782494000000099],[-72.372771999999998,63.778603000000032],[-72.436110999999926,63.781661999999983],[-72.515838999999971,63.786384999999996],[-72.526397999999915,63.787773000000072],[-72.531386999999995,63.791107000000068],[-72.532227000000034,63.796661000000029],[-72.531386999999995,63.799438000000123],[-72.519729999999925,63.804710000000057],[-72.496658000000025,63.803604000000064],[-72.474166999999909,63.804710000000057],[-72.463897999999972,63.806655999999975],[-72.459731999999974,63.809158000000025],[-72.456116000000009,63.814438000000109],[-72.456954999999994,63.815826000000015],[-72.465011999999945,63.819160000000011],[-72.521117999999944,63.84027100000003],[-72.537216000000001,63.844154000000003],[-72.585555999999997,63.852776000000006],[-72.634734999999978,63.852493000000038],[-72.637512000000015,63.873604000000057],[-72.641112999999962,63.904434000000094],[-72.611663999999962,63.943046999999979],[-72.592772999999852,64.018051000000128],[-72.592772999999852,64.022217000000069],[-72.658339999999896,64.076660000000004],[-72.664718999999934,64.080551000000071],[-72.67471299999994,64.083327999999995],[-72.682495000000017,64.079711999999972],[-72.685546999999929,64.076385000000016],[-72.688048999999978,64.070540999999992],[-72.704726999999991,64.015549000000078],[-72.705841000000021,64.009155000000021],[-72.702498999999932,64.005553999999961],[-72.696945000000028,64.003052000000082],[-72.668335000000013,63.996101000000124],[-72.660004000000015,63.992493000000024],[-72.658614999999998,63.987770000000069],[-72.666396999999961,63.980545000000006],[-72.678878999999938,63.972488000000055],[-72.692490000000021,63.966660000000104],[-72.699722000000008,63.964439000000027],[-72.720000999999968,63.961105000000032],[-72.753341999999918,64.000274999999988],[-72.758346999999958,64.004166000000055],[-72.779449,64.010544000000039],[-72.836120999999991,64.019714000000079],[-72.931380999999988,64.052475000000015],[-72.94027699999998,64.058594000000028],[-72.941375999999991,64.063599000000067],[-72.93971299999987,64.067764000000068],[-72.933318999999983,64.076385000000016],[-72.925551999999868,64.084152000000131],[-72.919723999999917,64.086929000000055],[-72.911117999999931,64.08859300000006],[-72.888061999999991,64.086105000000089],[-72.878326000000015,64.086655000000121],[-72.874435000000005,64.08859300000006],[-72.870833999999945,64.093872000000033],[-72.868880999999931,64.099152000000117],[-72.868332000000009,64.108321999999987],[-72.897232000000031,64.156937000000028],[-72.905272999999909,64.164993000000095],[-72.911666999999966,64.168868999999972],[-73.223891999999921,64.31164600000011],[-73.271117999999888,64.283875000000023],[-73.267226999999991,64.273880000000133],[-73.270003999999972,64.265823000000125],[-73.273055999999997,64.26249700000011],[-73.279174999999952,64.258606000000043],[-73.339721999999938,64.258040999999992],[-73.365829000000019,64.261932000000058],[-73.380554000000018,64.268600000000049],[-73.384170999999981,64.272491000000116],[-73.386947999999904,64.277480999999966],[-73.417769999999905,64.371093999999914],[-73.415558000000033,64.445816000000036],[-73.326950000000011,64.476089000000002],[-73.167770000000019,64.576660000000118],[-73.164718999999934,64.579712000000029],[-73.164718999999934,64.60554499999995],[-73.165557999999976,64.607483000000116],[-73.169448999999872,64.609984999999995],[-73.296950999999922,64.656937000000084],[-73.302779999999927,64.658875000000023],[-73.309433000000013,64.658600000000035],[-73.342223999999931,64.644150000000081],[-73.346664000000033,64.641098],[-73.347504000000015,64.63499500000006],[-73.341110000000015,64.626083000000051],[-73.326110999999969,64.609984999999995],[-73.314437999999939,64.598038000000031],[-73.308043999999995,64.593322999999998],[-73.302215999999987,64.583878000000084],[-73.298614999999927,64.559418000000107],[-73.299163999999962,64.544982999999945],[-73.303328999999962,64.538315000000011],[-73.30749499999996,64.535812000000021],[-73.315276999999924,64.532211000000132],[-73.32417299999986,64.52998400000007],[-73.424164000000019,64.509995000000004],[-73.463333000000034,64.502486999999974],[-73.47222899999997,64.504440000000102],[-73.475829999999917,64.508040999999935],[-73.477218999999991,64.512207000000046],[-73.473052999999993,64.553589000000045],[-73.448714999999936,64.565422000000012],[-73.467223999999987,64.612762000000089],[-73.595000999999968,64.629699999999957],[-73.655563000000029,64.631653000000085],[-73.655563000000029,64.623596000000134],[-73.667496000000028,64.577209000000039],[-73.750289999999893,64.536377000000073],[-73.75389100000001,64.535263000000043],[-73.764450000000011,64.537491000000045],[-73.787780999999939,64.548035000000084],[-73.803054999999915,64.555251999999996],[-73.821121000000005,64.567490000000078],[-73.837783999999999,64.579712000000029],[-73.84944200000001,64.587493999999992],[-73.861388999999974,64.594436999999971],[-73.876662999999951,64.600815000000125],[-73.886947999999961,64.603592000000049],[-73.910277999999948,64.605819999999994],[-73.920272999999952,64.605255000000113],[-73.929442999999992,64.602203000000031],[-73.932495000000017,64.593597000000102],[-73.931106999999997,64.583878000000084],[-73.844726999999978,64.501937999999996],[-73.925551999999925,64.460265999999933],[-73.972777999999892,64.430267000000129],[-73.999434999999892,64.328048999999965],[-74.062774999999988,64.334427000000119],[-74.102218999999877,64.367476999999951],[-74.128051999999911,64.533051],[-74.127486999999974,64.534424000000115],[-74.105835000000013,64.535812000000021],[-74.082229999999925,64.534988000000055],[-74.065276999999924,64.533051],[-74.055557000000022,64.610535000000027],[-74.050551999999982,64.724991000000045],[-74.053878999999938,64.728592000000106],[-74.060546999999985,64.733322000000101],[-74.089721999999995,64.751099000000011],[-74.096114999999941,64.751389000000017],[-74.114440999999943,64.745819000000097],[-74.120543999999995,64.74192800000003],[-74.195266999999888,64.663040000000024],[-74.208892999999932,64.614151000000049],[-74.212783999999999,64.602768000000083],[-74.224715999999944,64.592484000000013],[-74.240279999999984,64.58027600000014],[-74.381942999999922,64.569992000000127],[-74.390288999999996,64.569716999999912],[-74.397507000000019,64.572220000000073],[-74.535278000000005,64.622208000000057],[-74.657500999999968,64.700272000000098],[-74.701675000000023,64.732483000000002],[-74.704177999999899,64.735535000000084],[-74.700835999999867,64.740265000000136],[-74.683318999999926,64.758331000000112],[-74.567504999999983,64.832764000000054],[-74.501113999999973,64.833603000000039],[-74.487777999999935,64.834152000000017],[-74.478881999999999,64.835815000000082],[-74.476395000000025,64.838882000000012],[-74.476943999999946,64.84165999999999],[-74.540557999999976,64.889160000000004],[-74.545836999999949,64.892212000000086],[-74.561110999999926,64.896102999999982],[-74.621932999999956,64.903869999999927],[-74.639998999999932,64.903595000000109],[-74.648620999999935,64.901382000000126],[-74.660277999999892,64.896378000000027],[-74.732773000000009,64.854705999999965],[-74.741378999999938,64.847488000000112],[-74.743057000000022,64.842209000000139],[-74.741942999999992,64.835815000000082],[-74.738892000000021,64.831375000000094],[-74.72222899999997,64.822220000000016],[-74.714721999999938,64.815535999999952],[-74.710007000000019,64.810532000000023],[-74.706664999999987,64.800537000000077],[-74.706664999999987,64.794983000000116],[-74.710830999999985,64.782761000000107],[-74.718886999999938,64.773604999999975],[-74.726394999999968,64.770828000000108],[-74.837219000000005,64.778595000000053],[-74.868332000000009,64.781936999999971],[-74.893341000000021,64.784714000000065],[-74.902221999999938,64.78804000000008],[-74.909164000000033,64.791367000000037],[-74.915833000000021,64.795822000000044],[-74.924438000000009,64.799149],[-74.944153000000028,64.803589000000045],[-74.955001999999979,64.804428000000144],[-74.975554999999872,64.801376000000062],[-74.985274999999945,64.795822000000044],[-74.985549999999876,64.790268000000083],[-74.982498000000021,64.785263000000043],[-74.978881999999999,64.781372000000147],[-74.963332999999977,64.773604999999975],[-74.834732000000031,64.716385000000116],[-74.733321999999987,64.685531999999967],[-74.694442999999978,64.676376000000005],[-74.675551999999982,64.670258000000047],[-74.660003999999958,64.663879000000009],[-74.613051999999925,64.640274000000034],[-74.545273000000009,64.602203000000031],[-74.512787000000003,64.583603000000096],[-74.475280999999939,64.561371000000008],[-74.470000999999968,64.557479999999941],[-74.47084000000001,64.555542000000003],[-74.513625999999874,64.533325000000104],[-74.520279000000016,64.532211000000132],[-74.585830999999985,64.480270000000075],[-74.685546999999985,64.391936999999984],[-74.685821999999973,64.371093999999914],[-74.797774999999945,64.380813999999987],[-74.974716000000001,64.416091999999992],[-74.985274999999945,64.418869000000086],[-75.010558999999944,64.429977000000122],[-75.056380999999988,64.452208999999982],[-75.142501999999979,64.483321999999987],[-75.174712999999997,64.492752000000053],[-75.182769999999948,64.492477000000065],[-75.188598999999954,64.489426000000037],[-75.188888999999904,64.483321999999987],[-75.187209999999993,64.473602000000085],[-75.182495000000017,64.468323000000112],[-75.177215999999987,64.464705999999978],[-75.151397999999915,64.460265999999933],[-75.146117999999944,64.457214000000022],[-75.14416499999993,64.453049000000021],[-75.15055799999999,64.447204999999997],[-75.154448999999943,64.444702000000063],[-75.199721999999952,64.428040000000067],[-75.207779000000016,64.427765000000022],[-75.21556099999998,64.428864000000033],[-75.224166999999909,64.432205000000067],[-75.295272999999952,64.46665999999999],[-75.323897999999986,64.481934000000081],[-75.332503999999972,64.490814000000114],[-75.344161999999926,64.49914600000011],[-75.34973100000002,64.50221300000004],[-75.381667999999991,64.513611000000026],[-75.409164000000033,64.522766000000104],[-75.479720999999927,64.53915399999994],[-75.490829000000019,64.539703000000088],[-75.566100999999946,64.549988000000042],[-75.666396999999961,64.563873000000115],[-75.693329000000006,64.569992000000127],[-75.703887999999949,64.572769000000051],[-75.721389999999985,64.579163000000051],[-75.736938000000009,64.586104999999975],[-75.74722300000002,64.594436999999971],[-75.763625999999988,64.604980000000126],[-75.773894999999925,64.608322000000044],[-75.796951000000035,64.612198000000149],[-75.824172999999973,64.611649],[-75.843063000000029,64.607758000000103],[-75.847228999999913,64.604430999999977],[-75.837219000000005,64.561371000000008],[-75.823623999999938,64.535812000000021],[-75.818893000000003,64.530823000000055],[-75.807495000000017,64.525269000000037],[-75.729172000000005,64.503051999999968],[-75.644729999999925,64.468872000000033],[-75.639449999999954,64.46527100000003],[-75.630554000000018,64.457214000000022],[-75.631667999999991,64.453598],[-75.636123999999938,64.449142000000052],[-75.641388000000006,64.448028999999963],[-75.696655000000021,64.43942300000009],[-75.708343999999954,64.437759000000028],[-75.727782999999931,64.442474000000061],[-75.746947999999975,64.453049000000021],[-75.765839000000028,64.46527100000003],[-75.77305599999994,64.467484000000127],[-75.874709999999993,64.486923000000047],[-75.895279000000016,64.48803700000002],[-75.908339999999953,64.487198000000035],[-75.920273000000009,64.484420999999998],[-75.922500999999954,64.481094000000041],[-75.910552999999993,64.478317000000118],[-75.875274999999988,64.47387700000013],[-75.857772999999952,64.468048000000067],[-75.720839999999953,64.383331000000055],[-75.717223999999987,64.379700000000014],[-75.718886999999995,64.374419999999986],[-75.723327999999924,64.369705000000124],[-75.726944000000003,64.367203000000018],[-75.83805799999999,64.369141000000013],[-75.861664000000019,64.371093999999914],[-75.950561999999934,64.399155000000007],[-76.043883999999991,64.368317000000047],[-76.253615999999965,64.35775799999999],[-76.264450000000011,64.319153000000028],[-76.214721999999995,64.314986999999974],[-76.205565999999976,64.313309000000004],[-76.196655000000021,64.310806000000071],[-76.188323999999852,64.306931000000077],[-76.189712999999927,64.301376000000005],[-76.197219999999959,64.29693600000013],[-76.205840999999964,64.294708000000014],[-76.300551999999982,64.278869999999984],[-76.484725999999966,64.266662999999994],[-76.493606999999997,64.268600000000049],[-76.503066999999987,64.275269000000094],[-76.506957999999941,64.284424000000001],[-76.505568999999923,64.289153999999996],[-76.503615999999909,64.291091999999935],[-76.502501999999936,64.295258000000047],[-76.506667999999934,64.297485000000108],[-76.541381999999999,64.304703000000075],[-76.591949,64.31053199999991],[-76.705840999999964,64.300812000000008],[-76.719451999999933,64.296646000000123],[-76.733886999999868,64.290543000000014],[-76.736664000000019,64.285812000000078],[-76.738892000000021,64.276382000000012],[-76.721663999999976,64.238312000000064],[-76.714721999999995,64.233870999999965],[-76.706115999999952,64.231369000000086],[-76.684722999999963,64.227768000000026],[-76.674438000000009,64.224990999999932],[-76.667220999999927,64.221924000000058],[-76.660278000000005,64.218322999999998],[-76.654723999999931,64.209152000000017],[-76.654723999999931,64.196640000000059],[-76.65834000000001,64.189972000000068],[-76.662215999999944,64.186646000000053],[-76.670546999999942,64.184143000000063],[-76.84722899999997,64.23054500000012],[-76.968337999999903,64.259720000000016],[-77.138335999999981,64.289429000000041],[-77.276108000000022,64.256378000000097],[-77.296111999999937,64.251938000000052],[-77.327498999999989,64.246367999999961],[-77.351944000000003,64.243866000000082],[-77.366104000000007,64.243866000000082],[-77.379990000000021,64.2452550000001],[-77.381377999999984,64.246643000000006],[-77.382216999999969,64.2494200000001],[-77.381377999999984,64.253601000000003],[-77.378875999999934,64.256943000000092],[-77.434158000000025,64.320267000000001],[-77.588332999999977,64.368317000000047],[-77.652221999999938,64.388046000000088],[-77.660278000000005,64.386383000000023],[-77.664444000000003,64.3836060000001],[-77.665832999999907,64.376923000000147],[-77.664718999999991,64.374146000000053],[-77.658889999999985,64.364990000000091],[-77.67971799999998,64.321105999999986],[-77.747222999999963,64.337769000000037],[-77.831389999999942,64.412490999999989],[-77.970276000000013,64.454436999999928],[-78.178054999999972,64.567490000000078],[-78.183318999999926,64.572495000000117],[-78.168578999999966,64.626197999999931],[-78.160552999999993,64.690536000000066],[-78.184433000000013,64.731093999999985],[-78.073623999999938,64.813599000000124],[-78.064437999999996,64.849426000000051],[-78.065276999999867,64.853591999999992],[-78.06639100000001,64.855820000000108],[-78.073623999999938,64.859420999999998],[-78.102492999999981,64.868866000000025],[-78.117217999999923,64.876082999999994],[-78.120834000000002,64.881088000000034],[-78.129715000000033,64.893875000000037],[-78.146118000000001,64.938309000000004],[-78.148055999999997,64.943862999999965],[-78.149733999999967,64.952209000000039],[-78.145279000000016,64.957489000000123],[-77.973052999999993,65.04136699999998],[-77.67971799999998,65.123306000000014],[-77.543610000000001,65.139709000000096],[-77.50306699999993,65.138596000000007],[-77.488326999999913,65.139434999999935],[-77.479720999999984,65.141098000000056],[-77.344726999999978,65.173309000000131],[-77.328612999999962,65.178864000000033],[-77.322783999999956,65.18331900000004],[-77.315825999999959,65.190536000000009],[-77.313048999999978,65.195816000000036],[-77.315552000000025,65.199417000000096],[-77.3824919999999,65.247482000000105],[-77.397232000000031,65.254990000000134],[-77.422774999999945,65.264435000000049],[-77.444716999999912,65.275543000000027],[-77.498046999999985,65.306641000000013],[-77.513061999999934,65.318877999999984],[-77.515015000000005,65.325820999999962],[-77.512222000000008,65.330551000000014],[-77.471114999999998,65.371368000000018],[-77.466949,65.375259000000085],[-77.461120999999878,65.379149999999981],[-77.452498999999875,65.380813999999987],[-77.438048999999921,65.379700000000014],[-77.41361999999998,65.371643000000063],[-77.402495999999985,65.369141000000127],[-77.345839999999896,65.358597000000088],[-77.337783999999999,65.357483000000116],[-77.323058999999944,65.357757999999933],[-77.30610699999994,65.359711000000061],[-77.295546999999999,65.361922999999933],[-77.291945999999939,65.363876000000062],[-77.287505999999951,65.367751999999996],[-77.287216000000001,65.375259000000085],[-77.289992999999924,65.378860000000145],[-77.295273000000009,65.383331000000055],[-77.319457999999997,65.393326000000002],[-77.326950000000011,65.395538000000045],[-77.341949,65.401657000000057],[-77.367492999999911,65.412491000000102],[-77.398620999999935,65.426651000000049],[-77.420272999999952,65.439972000000012],[-77.428329000000019,65.447754000000145],[-77.434432999999956,65.456940000000088],[-77.430556999999908,65.458878000000027],[-77.421660999999972,65.461380000000077],[-77.385559000000001,65.468048000000067],[-77.336670000000026,65.471375000000023],[-77.265288999999882,65.471923999999944],[-77.238051999999925,65.469437000000084],[-77.154449,65.445815999999979],[-77.134734999999978,65.439423000000033],[-77.124434999999892,65.434143000000006],[-77.115828999999962,65.429703000000131],[-77.111663999999962,65.426085999999998],[-77.111114999999927,65.421371000000136],[-77.106383999999991,65.413605000000075],[-77.09944200000001,65.409149000000014],[-77.08666999999997,65.407211000000075],[-76.962783999999999,65.407211000000075],[-76.956954999999994,65.410537999999974],[-76.952498999999989,65.414993000000038],[-76.956116000000009,65.421371000000136],[-76.955565999999976,65.422759999999982],[-76.951675000000023,65.425262000000032],[-76.944442999999978,65.427765000000022],[-76.920837000000006,65.429428000000144],[-76.849990999999989,65.428313999999943],[-76.824722000000008,65.425262000000032],[-76.626937999999939,65.398880000000133],[-76.361937999999952,65.342209000000025],[-76.235001000000011,65.312759000000142],[-76.164444000000003,65.296097000000145],[-76.072509999999909,65.277205999999921],[-75.96665999999999,65.255829000000119],[-75.953888000000006,65.255264000000068],[-75.925277999999935,65.257217000000026],[-75.920273000000009,65.258330999999998],[-75.912215999999944,65.257217000000026],[-75.898345999999947,65.253875999999991],[-75.805556999999965,65.229705999999965],[-75.785552999999936,65.224426000000108],[-75.769164999999987,65.21887200000009],[-75.765014999999892,65.216660000000047],[-75.760009999999909,65.210815000000139],[-75.741378999999995,65.173874000000012],[-75.739989999999921,65.168319999999994],[-75.570847000000015,65.120818999999926],[-75.528610000000015,65.108871000000079],[-75.475006000000008,65.086105000000089],[-75.46665999999999,65.082214000000022],[-75.457229999999925,65.074707000000046],[-75.446945000000028,65.06581100000011],[-75.428054999999972,65.048324999999977],[-75.424438000000009,65.043869000000086],[-75.410552999999936,65.024704000000099],[-75.415557999999976,64.977478000000076],[-75.420273000000009,64.972214000000065],[-75.428054999999972,64.968322999999998],[-75.496947999999975,64.940536000000066],[-75.507232999999985,64.938309000000004],[-75.51916499999993,64.936919999999986],[-75.533614999999941,64.936919999999986],[-75.557220000000029,64.940262000000132],[-75.634734999999921,64.94720500000011],[-75.654448999999943,64.946365000000071],[-75.663054999999929,64.945251000000098],[-75.667496000000028,64.940811000000053],[-75.601944000000003,64.867752000000053],[-75.594161999999983,64.860259999999926],[-75.587508999999898,64.856644000000074],[-75.56806899999998,64.850540000000024],[-75.555557000000022,64.848602000000085],[-75.461394999999925,64.811645999999996],[-75.389175000000023,64.736099000000024],[-75.373046999999985,64.714996000000099],[-75.316665999999941,64.719437000000028],[-75.308333999999888,64.721099999999979],[-75.298186999999984,64.725769000000128],[-75.294723999999974,64.728043000000127],[-75.291381999999885,64.733871000000079],[-75.289444000000003,64.739975000000072],[-75.291381999999885,64.74443100000002],[-75.30221599999993,64.751099000000011],[-75.310546999999929,64.754990000000078],[-75.329726999999991,64.761107999999979],[-75.333892999999989,64.763321000000133],[-75.344161999999926,64.772217000000069],[-75.373885999999914,64.833054000000118],[-75.357223999999917,64.897766000000104],[-75.422775000000001,64.890273999999977],[-75.451675000000023,64.875259000000028],[-75.460830999999985,64.87164300000012],[-75.469727000000034,64.869431000000077],[-75.55749499999996,64.87414600000011],[-75.563323999999966,64.877197000000137],[-75.565552000000025,64.879425000000083],[-75.567504999999983,64.883605999999986],[-75.56527699999998,64.886932000000058],[-75.473891999999921,64.935806000000014],[-75.390288999999996,64.979430999999977],[-75.384734999999978,64.981934000000138],[-75.376098999999897,64.983322000000044],[-75.363051999999982,64.98414600000001],[-75.353332999999964,64.983597000000088],[-75.344161999999926,64.981094000000098],[-75.335555999999997,64.977768000000083],[-75.264175000000023,64.966095000000053],[-75.196105999999986,65.068604000000107],[-75.189163000000008,65.079712000000086],[-75.185546999999872,65.091369999999927],[-75.186934999999949,65.101653999999996],[-75.192490000000021,65.105545000000063],[-75.196655000000021,65.107207999999957],[-75.212508999999955,65.109421000000111],[-75.225554999999986,65.109421000000111],[-75.240828999999962,65.10832199999993],[-75.259170999999981,65.102203000000088],[-75.263625999999988,65.0977630000001],[-75.265563999999927,65.09165999999999],[-75.262512000000015,65.080551000000071],[-75.260009999999852,65.072769000000108],[-75.261123999999995,65.059142999999949],[-75.263061999999934,65.052199999999971],[-75.279998999999975,65.035262999999986],[-75.299727999999959,65.024704000000099],[-75.348617999999931,65.003876000000048],[-75.360001000000011,65.003876000000048],[-75.367492999999968,65.006378000000097],[-75.373046999999985,65.009430000000009],[-75.378875999999991,65.016663000000051],[-75.379165999999998,65.021378000000084],[-75.381103999999937,65.025818000000072],[-75.402495999999871,65.055817000000104],[-75.410003999999958,65.063873000000001],[-75.425551999999982,65.077208999999925],[-75.441375999999991,65.089157],[-75.448043999999982,65.094147000000021],[-75.516402999999855,65.138596000000007],[-75.728058000000033,65.224151999999947],[-75.761947999999961,65.237762000000032],[-75.781676999999945,65.243042000000116],[-75.835555999999997,65.255264000000068],[-75.864166000000012,65.258330999999998],[-75.890563999999983,65.269150000000081],[-75.939712999999983,65.292480000000012],[-75.943877999999984,65.29525799999999],[-75.950835999999981,65.316376000000105],[-75.950287000000003,65.318329000000062],[-75.941101000000003,65.321380999999974],[-75.931106999999884,65.322220000000129],[-75.904449,65.322220000000129],[-75.873885999999914,65.320541000000105],[-75.857772999999952,65.319153000000028],[-75.603057999999976,65.295531999999923],[-75.592223999999931,65.287201000000039],[-75.575561999999934,65.278046000000018],[-75.566390999999896,65.274994000000049],[-75.555267000000015,65.273605000000089],[-75.495834000000002,65.269150000000081],[-75.48443599999996,65.268326000000116],[-75.211945000000014,65.250549000000035],[-75.186661000000015,65.251938000000052],[-75.153885000000002,65.256943000000092],[-75.114440999999999,65.266387999999949],[-75.101669000000015,65.271378000000027],[-75.093886999999938,65.274994000000049],[-75.083618000000001,65.286102000000085],[-75.081679999999892,65.292206000000078],[-75.070847000000015,65.330276000000026],[-75.090835999999911,65.355545000000006],[-75.109160999999858,65.379974000000118],[-75.110824999999977,65.384720000000073],[-75.111114999999984,65.388885000000073],[-75.110549999999932,65.391098],[-75.108046999999942,65.393051000000128],[-75.097778000000005,65.394989000000066],[-75.08277899999996,65.394989000000066],[-74.823623999999938,65.377472000000068],[-74.660552999999993,65.346374999999966],[-74.645844000000011,65.341370000000097],[-74.635009999999966,65.338593000000003],[-74.624161000000015,65.336655000000064],[-74.58944699999995,65.332489000000123],[-74.546660999999915,65.33137499999998],[-74.524445000000014,65.333328000000108],[-74.508621000000005,65.336655000000064],[-74.496947999999975,65.340820000000065],[-74.357773000000009,65.398604999999975],[-74.347838999999965,65.407181000000037],[-74.323897999999986,65.437759000000028],[-74.318892999999946,65.447204999999997],[-74.31527699999998,65.458037999999988],[-74.311385999999914,65.463882000000012],[-74.182770000000005,65.525269000000037],[-74.105835000000013,65.534988000000055],[-73.845276000000013,65.532211000000132],[-73.791381999999999,65.524428999999998],[-73.767776000000026,65.520828000000108],[-73.747222999999963,65.517487000000074],[-73.736937999999952,65.514709000000096],[-73.732772999999952,65.511932000000002],[-73.731383999999935,65.506943000000035],[-73.730835000000013,65.504166000000112],[-73.735001000000011,65.501662999999951],[-73.740279999999984,65.496933000000126],[-73.740829000000019,65.490814000000114],[-73.736937999999952,65.487761999999975],[-73.711670000000026,65.471099999999979],[-73.703063999999927,65.466934000000094],[-73.694152999999915,65.464432000000045],[-73.663895000000025,65.456940000000088],[-73.651397999999972,65.454711999999915],[-73.641113000000018,65.455261000000064],[-73.559997999999894,65.462494000000049],[-73.500564999999938,65.474426000000051],[-73.56361400000003,65.562194999999974],[-73.618332000000009,65.619705000000067],[-73.662215999999944,65.658599999999979],[-73.684157999999911,65.715271000000087],[-73.68499799999995,65.730545000000006],[-73.704726999999934,65.758041000000048],[-73.709731999999917,65.762496999999996],[-73.720550999999887,65.769440000000145],[-73.810821999999973,65.811096000000134],[-73.841110000000015,65.81999200000007],[-73.884170999999981,65.821930000000009],[-73.886123999999995,65.821381000000031],[-73.923614999999984,65.824432000000058],[-73.931670999999938,65.825546000000031],[-73.942490000000021,65.828323000000125],[-74.011947999999961,65.854705999999908],[-74.029174999999952,65.861923000000047],[-74.058043999999938,65.875534000000016],[-74.129439999999988,65.924697999999978],[-74.258895999999993,66.001663000000065],[-74.296950999999979,66.018326000000116],[-74.337783999999999,66.036652000000117],[-74.37388599999997,66.053863999999976],[-74.388061999999934,66.06164600000011],[-74.425551999999925,66.084717000000126],[-74.444992000000013,66.096939000000077],[-74.455565999999862,66.105820000000051],[-74.471389999999985,66.127197000000081],[-74.472777999999948,66.133041000000048],[-74.472504000000015,66.139160000000118],[-74.470000999999968,66.145828000000051],[-74.466110000000015,66.151932000000102],[-74.446655000000021,66.168594000000098],[-74.434432999999956,66.178314],[-74.406113000000005,66.195816000000036],[-74.366652999999928,66.214157000000057],[-74.342223999999987,66.22526600000009],[-74.316390999999953,66.235259999999926],[-74.306655999999975,66.238876000000005],[-74.187209999999993,66.269713999999965],[-74.077788999999939,66.300812000000008],[-73.86082499999992,66.388321000000076],[-73.744995000000017,66.437759000000028],[-73.666107000000011,66.471924000000115],[-73.606658999999979,66.495254999999986],[-73.529998999999975,66.522766000000047],[-73.460555999999997,66.544434000000138],[-73.444153000000028,66.551086000000055],[-73.430556999999908,66.55831900000004],[-73.420272999999952,66.571655000000021],[-73.418335000000013,66.579711999999972],[-73.418335000000013,66.584717000000012],[-73.416396999999961,66.589981000000023],[-73.400283999999942,66.611649000000114],[-73.396956999999986,66.61554000000001],[-73.379714999999976,66.632477000000051],[-73.351944000000003,66.649994000000049],[-73.328339000000028,66.6602630000001],[-73.296386999999982,66.665817000000061],[-73.267226999999991,66.672760000000096],[-73.108611999999937,66.723311999999964],[-73.00111400000003,66.815536000000122],[-72.87388599999997,66.931930999999963],[-72.852492999999981,66.968597000000102],[-72.837783999999999,66.998031999999967],[-72.831389999999885,67.013321000000076],[-72.831115999999952,67.018326000000116],[-72.828063999999927,67.024994000000049],[-72.824172999999973,67.029434000000094],[-72.806655999999919,67.037201000000039],[-72.791671999999949,67.043320000000051],[-72.738891999999908,67.063034000000016],[-72.716659999999933,67.06860400000005],[-72.68499799999995,67.076096000000007],[-72.626099000000011,67.084717000000126],[-72.550827000000027,67.082763999999997],[-72.525832999999977,67.083328000000108],[-72.464172000000019,67.08998100000008],[-72.43110699999994,67.096099999999922],[-72.399445000000014,67.103592000000049],[-72.368606999999997,67.112487999999985],[-72.351394999999968,67.119705000000124],[-72.337783999999999,67.126373000000058],[-72.315552000000025,67.139435000000105],[-72.282501000000025,67.161102000000142],[-72.276108000000022,67.166930999999977],[-72.258346999999901,67.24803199999991],[-72.28694200000001,67.290817000000061],[-72.363616999999977,67.353317000000004],[-72.436385999999914,67.472214000000122],[-72.481110000000001,67.609711000000004],[-72.48582499999992,67.623031999999967],[-72.490829000000019,67.62831100000011],[-72.49749799999995,67.633040999999935],[-72.508895999999993,67.63638300000008],[-72.597778000000005,67.639709000000096],[-72.666396999999961,67.684143000000063],[-72.676391999999964,67.693862999999965],[-72.677779999999984,67.699416999999983],[-72.675002999999947,67.70526099999995],[-72.668883999999935,67.710541000000035],[-72.661666999999909,67.714706000000035],[-72.613892000000021,67.735259999999982],[-72.596953999999926,67.740814],[-72.591948999999886,67.74331699999999],[-72.583327999999881,67.750274999999988],[-72.608886999999982,67.785812000000078],[-72.612503000000004,67.790268000000026],[-72.619445999999925,67.794708000000014],[-72.735001000000011,67.841659999999933],[-72.820007000000032,67.851089000000115],[-72.833327999999995,67.849991000000045],[-72.843886999999938,67.850815000000011],[-72.848052999999936,67.853592000000106],[-72.942215000000033,67.925262000000089],[-72.944442999999978,67.928040000000067],[-72.944992000000013,67.93081699999999],[-72.94387799999987,67.937759000000085],[-72.942490000000021,67.941085999999984],[-72.929992999999968,67.948867999999948],[-72.922774999999945,67.952774000000034],[-72.904175000000009,67.959717000000012],[-72.902495999999928,67.963882000000012],[-72.896117999999944,68.014160000000004],[-72.910552999999993,68.054153000000042],[-72.913895000000025,68.060806000000014],[-72.941100999999946,68.078323000000069],[-72.956954999999994,68.094986000000119],[-72.981110000000001,68.139160000000061],[-72.992767000000015,68.198593000000074],[-72.993880999999988,68.212204000000042],[-73.161117999999988,68.228866999999923],[-73.190276999999924,68.248871000000065],[-73.189437999999996,68.254715000000033],[-73.189986999999917,68.259430000000066],[-73.194716999999969,68.26527400000009],[-73.200835999999981,68.269714000000135],[-73.215560999999923,68.272766000000047],[-73.271117999999888,68.281936999999971],[-73.303328999999962,68.278434999999945],[-73.314499000000012,68.278434999999945],[-73.336670000000026,68.275604000000044],[-73.355186000000003,68.267830000000004],[-73.395554000000004,68.258605999999929],[-73.496108999999933,68.275542999999971],[-73.410004000000015,68.310806000000127],[-73.39916999999997,68.314987000000031],[-73.354674999999929,68.329215999999974]],[[-124.43055699999996,73.878586000000098],[-124.45028699999995,73.878586000000098],[-124.46721600000001,73.8808140000001],[-124.515289,73.89498900000001],[-124.53666699999991,73.902480999999909],[-124.54611199999999,73.906647000000021],[-124.55055199999998,73.912201000000039],[-124.55277999999993,73.916931000000034],[-124.53056299999997,73.917480000000012],[-124.5133439999999,73.916656000000046],[-124.43250299999994,73.912766000000033],[-124.42027300000001,73.90914900000007],[-124.41583300000002,73.90498400000007],[-124.40888999999993,73.900269000000037],[-124.40943899999996,73.893326000000059],[-124.42027300000001,73.882476999999994],[-124.43055699999996,73.878586000000098]],[[-99.804557999999929,73.889099000000101],[-99.732773000000009,73.849991000000102],[-99.71362299999987,73.846375000000023],[-99.589721999999881,73.837769000000094],[-99.531386999999938,73.831940000000088],[-99.493880999999988,73.825821000000076],[-99.480285999999978,73.821930000000009],[-99.235000999999897,73.737761999999918],[-99.115004999999996,73.74859600000002],[-98.97193900000002,73.750548999999921],[-98.829177999999956,73.751663000000121],[-98.756393000000003,73.75610400000005],[-98.71665999999999,73.766663000000051],[-98.688323999999966,73.772018000000116],[-98.641953000000001,73.777206000000035],[-98.514449999999954,73.787490999999989],[-98.424437999999952,73.793594000000098],[-98.290832999999964,73.801651000000049],[-98.207229999999925,73.80525200000011],[-98.190552000000025,73.803588999999988],[-98.179992999999911,73.804152999999928],[-98.134170999999867,73.809708000000057],[-98.095000999999968,73.815536000000122],[-98.071670999999924,73.819443000000092],[-97.976944000000003,73.84275800000006],[-97.960281000000009,73.846938999999963],[-97.948333999999988,73.851653999999996],[-97.943053999999904,73.856934000000081],[-97.942763999999954,73.862762000000032],[-97.941375999999991,73.868042000000059],[-97.936385999999914,73.87831100000011],[-97.918335000000013,73.890273999999977],[-97.90834000000001,73.894714000000135],[-97.887512000000015,73.899428999999998],[-97.805267000000015,73.911102000000028],[-97.788054999999986,73.912766000000033],[-97.761948000000018,73.911925999999994],[-97.581954999999937,73.893875000000037],[-97.562774999999988,73.890823000000069],[-97.544723999999917,73.886108000000036],[-97.529175000000009,73.879700000000071],[-97.520844000000011,73.873871000000065],[-97.514175000000023,73.867752000000053],[-97.50028999999995,73.861923000000047],[-97.471389999999985,73.857758000000047],[-97.456954999999994,73.857758000000047],[-97.39973399999991,73.858871000000136],[-97.357772999999952,73.862488000000099],[-97.34584000000001,73.864990000000148],[-97.327498999999989,73.865814000000114],[-97.260284000000013,73.860260000000096],[-97.223617999999931,73.856369000000029],[-96.972504000000015,73.744141000000013],[-96.962218999999891,73.738586000000112],[-96.955841000000021,73.732482999999945],[-96.937209999999993,73.703598000000113],[-96.932770000000005,73.692200000000071],[-96.93472300000002,73.686920000000043],[-96.963897999999972,73.63998399999997],[-96.968613000000005,73.633330999999998],[-96.988891999999964,73.624695000000088],[-97.001953000000015,73.6202550000001],[-97.184998000000007,73.562194999999974],[-97.202498999999932,73.557205000000124],[-97.436110999999926,73.525542999999971],[-97.623885999999857,73.538879000000122],[-97.638061999999934,73.538589000000115],[-97.641112999999962,73.533599999999922],[-97.668335000000013,73.483321999999987],[-97.667496000000028,73.479431000000091],[-97.663054999999929,73.4727630000001],[-97.654723999999931,73.466934000000094],[-97.638335999999981,73.460266000000104],[-97.623321999999973,73.456375000000037],[-97.607223999999974,73.454711999999972],[-97.579453000000001,73.454987000000131],[-97.562774999999988,73.459152000000131],[-97.534163999999976,73.473877000000073],[-97.522232000000031,73.478592000000106],[-97.50389100000001,73.483046999999942],[-97.437209999999993,73.491928000000087],[-97.417220999999984,73.493317000000047],[-97.401947000000007,73.493042000000059],[-97.232223999999917,73.474426000000051],[-97.197219999999959,73.469711000000018],[-97.183059999999955,73.464995999999985],[-97.172225999999966,73.460266000000104],[-97.166106999999954,73.454162999999994],[-97.157226999999921,73.395538000000045],[-97.150283999999999,73.389984000000027],[-97.169448999999986,73.35664399999996],[-97.17193599999996,73.352768000000083],[-97.183883999999921,73.350540000000137],[-97.207503999999972,73.348328000000095],[-97.236937999999896,73.348602000000028],[-97.243057000000022,73.354706000000022],[-97.375548999999921,73.347214000000122],[-97.645003999999858,73.318054000000018],[-97.660278000000005,73.316086000000098],[-97.708617999999944,73.304703000000075],[-97.841384999999889,73.273315000000082],[-97.84445199999999,73.268326000000116],[-97.848052999999936,73.254440000000102],[-97.847778000000005,73.249420000000043],[-97.848617999999988,73.244980000000055],[-97.86250299999989,73.233871000000136],[-97.983611999999994,73.181091000000094],[-98.029175000000009,73.165268000000083],[-98.076674999999966,73.151382000000126],[-98.112503000000004,73.142487000000074],[-98.151672000000019,73.131087999999977],[-98.202788999999996,73.110535000000084],[-98.222777999999948,73.099991000000045],[-98.229996000000028,73.090820000000122],[-98.231383999999878,73.085541000000148],[-98.235001000000011,73.079711999999915],[-98.240829000000019,73.075272000000098],[-98.319457999999997,73.050537000000077],[-98.365829000000019,73.037766000000147],[-98.450287000000003,73.020264000000111],[-98.459166999999923,72.99331699999999],[-98.453613000000018,72.898605000000089],[-98.450561999999991,72.874985000000095],[-98.445830999999998,72.865814000000114],[-98.438598999999954,72.860535000000141],[-98.428054999999915,72.856094000000041],[-98.419998000000021,72.858597000000032],[-98.413329999999974,72.864151000000049],[-98.403335999999967,72.881363000000022],[-98.403335999999967,72.887207000000046],[-98.405838000000017,72.891662999999994],[-98.402221999999995,72.897491000000059],[-98.397780999999952,72.902771000000143],[-98.388061999999991,72.908034999999927],[-98.266402999999855,72.972763000000043],[-98.255004999999926,72.977478000000076],[-98.227218999999877,72.987487999999985],[-98.176940999999999,72.998596000000134],[-97.99499499999996,73.037491000000102],[-97.980559999999969,73.039702999999975],[-97.864166000000012,73.047485000000108],[-97.846953999999982,73.048598999999911],[-97.684433000000013,73.033051000000114],[-97.668335000000013,73.03137200000009],[-97.527495999999985,73.011383000000137],[-97.442489999999964,72.999145999999996],[-97.299728000000016,72.969711000000132],[-97.283324999999991,72.963882000000069],[-97.229720999999984,72.943038999999999],[-97.225006000000008,72.939972000000125],[-97.258056999999951,72.883605999999986],[-97.266402999999968,72.878585999999984],[-97.265288999999996,72.84887700000013],[-97.203613000000018,72.825821000000076],[-97.081679999999949,72.77998400000007],[-97.030288999999982,72.74136400000009],[-97.023055999999997,72.732208000000128],[-97.023055999999997,72.727203000000088],[-97.029723999999987,72.716659999999933],[-97.079453000000001,72.701934999999992],[-97.105834999999956,72.696365000000128],[-97.134444999999914,72.688309000000061],[-97.161117999999988,72.67804000000001],[-97.170546999999885,72.673599000000081],[-97.179442999999992,72.667480000000069],[-97.183059999999955,72.661926000000051],[-97.19027699999998,72.640549000000021],[-97.198333999999932,72.609984999999995],[-97.196655000000021,72.604430999999977],[-97.185271999999998,72.601929000000098],[-97.165557999999919,72.60165400000011],[-97.09056099999998,72.605254999999943],[-97.081008999999938,72.605927000000122],[-97.07028200000002,72.608597000000088],[-97.042770000000019,72.623306000000127],[-97.035827999999981,72.628860000000145],[-97.005568999999866,72.644714000000022],[-96.982223999999974,72.655258000000117],[-96.968886999999938,72.660262999999986],[-96.915558000000033,72.678588999999988],[-96.611938000000009,72.74693300000007],[-96.517501999999922,72.714706000000092],[-96.52194199999991,72.674423000000047],[-96.459731999999917,72.607758000000103],[-96.405272999999966,72.559418000000107],[-96.374709999999993,72.534424000000115],[-96.336945000000014,72.500824000000023],[-96.325561999999991,72.488312000000064],[-96.30221599999993,72.433868000000018],[-96.297501000000011,72.42164600000001],[-96.298339999999939,72.415817000000004],[-96.538605000000018,72.343323000000055],[-96.668335000000013,72.309708000000001],[-96.696945000000028,72.310531999999967],[-96.738892000000021,72.321105999999986],[-96.776397999999972,72.323318000000029],[-96.831389999999999,72.323608000000036],[-96.868332000000009,72.321930000000123],[-96.871932999999956,72.321105999999986],[-96.864440999999943,72.317764000000068],[-96.771118000000001,72.298874000000069],[-96.668883999999878,72.27915999999999],[-96.578339000000028,72.278594999999996],[-96.561110999999983,72.275543000000027],[-96.554169000000002,72.263885000000016],[-96.487212999999883,72.136108000000036],[-96.485001000000011,72.129974000000004],[-96.483062999999959,72.11303700000002],[-96.487503000000004,72.101653999999996],[-96.498336999999935,72.090270999999973],[-96.508346999999958,72.084991000000116],[-96.521117999999944,72.079987000000131],[-96.537216000000001,72.07499700000011],[-96.557220000000029,72.071930000000009],[-96.721663999999919,72.052765000000022],[-96.77305599999994,72.053040000000067],[-96.789444000000003,72.052200000000028],[-96.866942999999992,72.041091999999992],[-96.853881999999999,72.036376999999959],[-96.828888000000006,72.030822999999998],[-96.672501000000011,72.012771999999984],[-96.635009999999966,72.013885000000073],[-96.618057000000022,72.018326000000002],[-96.609160999999915,72.024155000000007],[-96.600554999999986,72.02777100000003],[-96.567779999999971,72.033600000000092],[-96.521117999999944,72.038879000000065],[-96.501953000000015,72.038589000000059],[-96.488601999999958,72.034987999999998],[-96.489990000000034,72.018326000000002],[-96.490829000000019,72.012206999999989],[-96.493056999999965,72.001098999999954],[-96.502228000000002,71.975540000000137],[-96.505843999999968,71.969711000000132],[-96.512786999999889,71.964431999999988],[-96.522506999999962,71.959152000000074],[-96.554442999999935,71.949141999999995],[-96.565552000000025,71.946930000000123],[-96.573897999999986,71.948318000000029],[-96.589447000000007,71.954437000000041],[-96.602782999999988,71.958038000000101],[-96.617492999999911,71.959991000000059],[-96.638335999999981,71.957488999999953],[-96.73332199999993,71.928863999999976],[-96.749160999999958,71.923874000000069],[-96.761947999999961,71.918594000000041],[-96.764450000000011,71.914992999999981],[-96.761397999999929,71.909714000000008],[-96.749725000000012,71.903046000000018],[-96.736389000000031,71.899429000000055],[-96.724166999999966,71.898605000000089],[-96.700835999999924,71.899994000000106],[-96.64527899999996,71.917480000000012],[-96.607223999999974,71.92692599999998],[-96.565552000000025,71.93220500000001],[-96.522781000000009,71.934418000000107],[-96.509170999999924,71.933044000000109],[-96.503890999999953,71.931656000000032],[-96.491668999999888,71.926085999999941],[-96.49110399999995,71.919434000000081],[-96.493056999999965,71.914153999999996],[-96.525832999999977,71.868866000000082],[-96.557769999999948,71.829436999999984],[-96.570846999999901,71.819442999999978],[-96.579726999999934,71.814987000000031],[-96.591949,71.810805999999957],[-96.613327000000027,71.807205000000124],[-96.726668999999958,71.793593999999928],[-96.744720000000029,71.792206000000022],[-96.738051999999982,71.824996999999996],[-96.791381999999942,71.827774000000034],[-96.983611999999994,71.775817999999958],[-97.013061999999991,71.749146000000053],[-97.084166999999923,71.700272000000098],[-97.165008999999941,71.675537000000077],[-97.210006999999962,71.663605000000075],[-97.434433000000013,71.617751999999996],[-97.470550999999944,71.612487999999985],[-97.505004999999983,71.611649],[-97.656386999999938,71.614700000000028],[-97.696655000000021,71.619705000000067],[-97.713332999999977,71.623871000000008],[-97.726395000000025,71.628310999999997],[-97.787215999999944,71.644149999999968],[-97.974715999999944,71.660812000000135],[-97.988051999999982,71.661926000000108],[-98.035277999999948,71.653320000000008],[-98.053329000000019,71.648331000000042],[-98.072784000000013,71.641663000000051],[-98.112777999999935,71.636932000000115],[-98.131103999999937,71.638046000000088],[-98.178878999999938,71.641663000000051],[-98.196654999999907,71.643600000000106],[-98.207503999999972,71.646103000000039],[-98.218063000000029,71.649719000000118],[-98.240829000000019,71.659714000000008],[-98.252791999999886,71.666091999999992],[-98.331116000000009,71.708327999999995],[-98.349166999999909,71.718597000000045],[-98.3558349999999,71.7227630000001],[-98.359725999999966,71.728043000000014],[-98.359436000000017,71.733871000000079],[-98.333327999999995,71.787490999999989],[-98.325561999999934,71.798325000000091],[-98.321395999999936,71.803314000000057],[-98.315276999999924,71.809143000000063],[-98.279174999999952,71.834717000000069],[-98.259170999999924,71.844711000000075],[-98.228881999999999,71.862198000000092],[-98.211944999999957,71.878585999999984],[-98.208617999999944,71.884430000000009],[-98.209166999999979,71.889160000000004],[-98.221938999999963,71.89498900000001],[-98.255279999999971,71.902480999999966],[-98.267226999999991,71.90415999999999],[-98.282776000000013,71.899155000000121],[-98.291381999999999,71.894714000000022],[-98.450561999999991,71.79414399999996],[-98.462508999999955,71.783874999999966],[-98.477782999999931,71.767212000000086],[-98.488892000000021,71.749419999999986],[-98.49749799999995,71.733321999999987],[-98.49749799999995,71.721649000000127],[-98.493880999999988,71.713882000000012],[-98.381377999999984,71.653594999999996],[-98.367492999999911,71.647491000000002],[-98.179992999999911,71.571930000000123],[-98.041381999999885,71.530823000000055],[-98.037506000000008,71.526657],[-98.120543999999995,71.460540999999978],[-98.180831999999953,71.423598999999967],[-98.198043999999982,71.414703000000031],[-98.466110000000015,71.313309000000061],[-98.505568999999923,71.299149000000114],[-98.541381999999942,71.289429000000041],[-98.55471799999998,71.287201000000096],[-98.701675000000023,71.271927000000005],[-98.72084000000001,71.269989000000066],[-98.729720999999927,71.270538000000045],[-98.75111400000003,71.274154999999951],[-98.816390999999953,71.289154000000053],[-98.829453000000001,71.293869000000086],[-98.844726999999978,71.305542000000116],[-98.882216999999969,71.333878000000027],[-98.938323999999852,71.369141000000013],[-98.960281000000009,71.379974000000004],[-98.978881999999999,71.382476999999994],[-98.995543999999995,71.382751000000098],[-99.014724999999942,71.381653000000028],[-99.034438999999963,71.378860000000032],[-99.042770000000019,71.374419999999986],[-99.045546999999942,71.368590999999981],[-99.051392000000021,71.363036999999963],[-99.05972300000002,71.358597000000145],[-99.077498999999989,71.353592000000106],[-99.115829000000019,71.350540000000024],[-99.220839999999896,71.342209000000082],[-99.238051999999982,71.344986000000006],[-99.288054999999872,71.402771000000087],[-99.313323999999966,71.43942300000009],[-99.462783999999942,71.59304800000001],[-99.529723999999987,71.605255],[-99.558608999999876,71.613037000000134],[-99.574172999999973,71.619705000000067],[-99.578888000000006,71.622757000000036],[-99.591675000000009,71.635268999999994],[-99.676392000000021,71.72526600000009],[-99.677779999999927,71.729156000000046],[-99.677215999999987,71.736923000000047],[-99.674437999999896,71.742752000000053],[-99.673049999999989,71.749146000000053],[-99.673889000000031,71.753876000000105],[-99.676392000000021,71.758605999999986],[-99.678328999999962,71.760544000000095],[-99.842223999999987,71.834991000000002],[-99.959166999999979,71.854155999999932],[-99.977218999999991,71.855819999999937],[-100.05110200000001,71.865814],[-100.067497,71.870529000000033],[-100.10193599999997,71.884720000000016],[-100.31471299999993,71.979979999999955],[-100.32195299999989,71.984985000000052],[-100.33222999999998,71.997208000000057],[-100.33583099999993,72.006653000000142],[-100.579453,72.154434000000037],[-100.63445299999995,72.18553200000008],[-100.64417300000002,72.188308999999947],[-100.72000099999997,72.201660000000118],[-100.88527699999997,72.207764000000111],[-100.88999899999988,72.207489000000123],[-100.92388900000003,72.199416999999983],[-100.95140099999992,72.171097000000145],[-100.96777299999997,72.174149000000057],[-101.01334399999996,72.191086000000041],[-101.02084400000001,72.196365000000014],[-101.054169,72.231658999999922],[-101.05555700000002,72.236649],[-101.11776700000001,72.284424000000001],[-101.19444299999998,72.324432000000002],[-101.20861799999994,72.329712000000086],[-101.220551,72.332214000000135],[-101.23889200000002,72.33387799999997],[-101.27667200000002,72.328323000000069],[-101.32528699999995,72.314986999999974],[-101.395554,72.286926000000051],[-101.40416699999997,72.281372000000033],[-101.40972899999986,72.275543000000027],[-101.46945199999999,72.265549000000021],[-101.50917099999998,72.283051000000057],[-101.58556399999998,72.301376000000005],[-101.63474299999996,72.306931000000077],[-101.65638699999994,72.305252000000053],[-101.66416900000002,72.301650999999993],[-101.672234,72.292755000000056],[-101.68499799999989,72.28776600000009],[-101.69444299999986,72.288040000000024],[-101.77694700000001,72.299713000000054],[-101.83056599999992,72.319153000000028],[-101.84472699999992,72.324432000000002],[-101.88834399999996,72.358597000000145],[-101.94167299999987,72.451935000000049],[-101.98131599999999,72.478111000000126],[-102.08033799999993,72.516006000000118],[-102.22222899999991,72.542206000000078],[-102.25862100000001,72.549149000000057],[-102.37721299999998,72.577484000000084],[-102.46584299999995,72.604706000000022],[-102.6219329999999,72.664703000000145],[-102.73638899999992,72.719986000000006],[-102.74166899999989,72.724152000000061],[-102.75583599999993,72.761383000000023],[-102.76471699999996,72.784987999999998],[-102.76306199999999,72.790817000000004],[-102.75306699999999,72.811096000000134],[-102.74944299999999,72.817214999999976],[-102.74305699999996,72.82249500000006],[-102.73500100000001,72.826096000000121],[-102.69860799999992,72.836654999999951],[-102.66361999999992,72.853316999999947],[-102.64666699999992,72.864426000000037],[-102.61277799999993,72.896652000000131],[-102.59722899999991,72.913605000000018],[-102.59361299999995,72.919983000000002],[-102.59166699999997,72.925536999999963],[-102.59306300000003,72.931656000000032],[-102.59416199999998,72.942748999999992],[-102.593887,72.949141999999995],[-102.59166699999997,72.954987000000074],[-102.576683,72.979706000000022],[-102.56304899999998,72.991089000000045],[-102.51306199999993,73.026093000000117],[-102.50110599999994,73.030548000000124],[-102.38806199999999,73.062759000000028],[-102.36805699999996,73.067490000000134],[-102.27610800000002,73.08248900000001],[-102.24694799999997,73.083878000000027],[-102.13722199999989,73.086929000000055],[-102.08444199999985,73.084152000000131],[-102.014183,73.079711999999915],[-101.97083999999995,73.070540999999992],[-101.88417099999992,73.024704000000099],[-101.81777999999991,72.966660000000104],[-101.810272,72.960541000000035],[-101.75527999999997,72.930542000000059],[-101.74109599999991,72.924149000000057],[-101.67527799999999,72.909714000000122],[-101.59528399999994,72.902205999999921],[-101.52166699999998,72.87831100000011],[-101.50974299999996,72.871642999999949],[-101.40444899999989,72.782486000000119],[-101.41332999999997,72.748322000000087],[-101.37249800000001,72.727203000000088],[-101.36665299999999,72.725266000000033],[-101.29750099999995,72.709991000000059],[-101.03333299999997,72.689697000000137],[-100.91583299999996,72.688034000000016],[-100.88221699999991,72.689697000000137],[-100.82778899999994,72.705826000000059],[-100.81945799999994,72.710266000000104],[-100.81220999999994,72.715545999999961],[-100.81194299999999,72.719710999999961],[-100.79833999999994,72.743590999999981],[-100.70722999999998,72.755829000000006],[-100.53307299999994,72.751389000000017],[-100.50917099999992,72.749146000000053],[-100.49833699999994,72.74803200000008],[-100.47582999999997,72.742751999999996],[-100.44803599999995,72.735535000000084],[-100.43443300000001,72.73692299999999],[-100.41221599999994,72.74192800000003],[-100.34973100000002,72.770538000000101],[-100.34084300000001,72.774993999999992],[-100.33168000000001,72.78054800000001],[-100.314438,72.796371000000022],[-100.31555199999997,72.801376000000062],[-100.35077699999994,72.851326000000086],[-100.35160799999994,72.853660999999988],[-100.35711699999996,72.859154000000103],[-100.46916199999998,72.950272000000041],[-100.48638899999992,72.949141999999995],[-100.49889399999995,72.950546000000145],[-100.49973299999999,72.95637499999998],[-100.46305799999993,73.014709000000039],[-100.45194999999995,73.020538000000045],[-100.421944,73.034987999999942],[-100.36776700000001,73.046936000000017],[-100.35637700000001,73.049423000000047],[-100.34221600000001,73.044144000000074],[-100.31667299999992,73.034149000000014],[-100.30943299999996,73.028046000000074],[-100.31555199999997,73.022490999999945],[-100.34306300000003,73.013885000000073],[-100.3577729999999,73.010544000000039],[-100.38137799999998,72.949141999999995],[-100.32899499999991,72.891372999999987],[-100.31732899999992,72.888869999999997],[-100.28527800000001,72.873596000000077],[-100.21721599999995,72.876647999999989],[-100.196663,72.877762000000018],[-100.09638999999993,72.88638300000008],[-100.06722999999994,72.902205999999921],[-100.031387,72.934982000000048],[-100.04750099999995,72.957214000000135],[-100.11277799999999,73.025818000000072],[-100.16972399999992,73.078598000000113],[-100.23222399999997,73.134430000000123],[-100.24445299999996,73.136932000000002],[-100.25446299999999,73.137206999999989],[-100.28888699999993,73.135818000000029],[-100.32362399999994,73.133331000000112],[-100.345551,73.130264000000011],[-100.38249200000001,73.122757000000092],[-100.39138799999995,73.118317000000047],[-100.41443600000002,73.104706000000078],[-100.44275699999997,73.087204000000042],[-100.51862299999993,73.0977630000001],[-100.58667000000003,73.132751000000098],[-100.60193599999997,73.140823000000069],[-100.60777300000001,73.146378000000141],[-100.58612099999999,73.167480000000126],[-100.58000199999987,73.173035000000027],[-100.49082900000002,73.230819999999937],[-100.40666199999987,73.280273000000079],[-100.39778100000001,73.284713999999951],[-100.37832600000002,73.289978000000133],[-100.36110699999995,73.290267999999969],[-100.28138699999994,73.27915999999999],[-100.1347429999999,73.221100000000035],[-100.05332899999996,73.186371000000008],[-100.03751399999999,73.183868000000018],[-100.021118,73.183044000000052],[-100.00418099999996,73.183319000000097],[-99.841110000000015,73.191360000000145],[-99.801666000000012,73.195526000000029],[-99.771666999999979,73.201096000000121],[-99.77027899999996,73.203873000000044],[-99.771666999999979,73.208038000000045],[-99.786391999999921,73.212493999999936],[-99.811934999999949,73.215546000000074],[-99.84944200000001,73.21527100000003],[-99.886123999999995,73.213318000000072],[-99.925827000000027,73.214996000000042],[-99.945267000000001,73.216660000000047],[-99.96444699999995,73.219436999999971],[-100.07749899999999,73.251389000000074],[-100.09500100000002,73.257217000000026],[-100.15915699999994,73.289428999999984],[-100.19943199999994,73.31860400000005],[-100.27223199999992,73.358597000000088],[-100.32362399999994,73.3836060000001],[-100.33332799999994,73.388321000000133],[-100.358047,73.393326000000002],[-100.37389399999995,73.395828000000051],[-100.38417099999987,73.396378000000084],[-100.38806199999993,73.395538000000045],[-100.4058379999999,73.361374000000012],[-100.387787,73.338593000000003],[-100.56166099999996,73.286652000000117],[-100.583618,73.283599999999979],[-100.823059,73.260818000000086],[-100.84056099999992,73.259720000000016],[-100.88945000000001,73.264435000000049],[-100.97749299999998,73.280273000000079],[-101.30499299999991,73.361649000000057],[-101.31276700000001,73.371094000000085],[-101.31139400000001,73.382751000000042],[-101.31054699999999,73.392487000000017],[-101.31139400000001,73.398331000000042],[-101.31723,73.401657000000057],[-101.47055099999994,73.436096000000134],[-101.55832700000002,73.446640000000002],[-101.58084099999996,73.450272000000098],[-101.61665299999993,73.485260000000096],[-101.62138400000003,73.490265000000136],[-101.44055200000003,73.549149000000057],[-101.42748999999992,73.552200000000084],[-101.40083299999992,73.553589000000045],[-101.31582599999996,73.550811999999951],[-101.2808379999999,73.552475000000072],[-101.26888999999994,73.556090999999924],[-101.25974300000001,73.561646000000053],[-101.25527999999997,73.567763999999954],[-101.25222799999995,73.578873000000044],[-101.25306699999993,73.584991000000002],[-101.25110599999994,73.589706000000035],[-101.24194299999994,73.595261000000107],[-101.23082699999998,73.600266000000147],[-101.21721600000001,73.604155999999932],[-101.199432,73.60554500000012],[-100.92639200000002,73.600266000000147],[-100.90943900000002,73.599716000000114],[-100.890289,73.596100000000092],[-100.87748699999997,73.59027100000003],[-100.77084400000001,73.539978000000076],[-100.71749899999992,73.509155000000078],[-100.70667299999997,73.499420000000043],[-100.70221699999996,73.494431000000077],[-100.70140100000003,73.488585999999941],[-100.69721999999996,73.482483000000002],[-100.69110099999995,73.476929000000041],[-100.67278299999998,73.464432000000045],[-100.51834099999996,73.416930999999977],[-100.49973299999999,73.412490999999932],[-100.46472199999988,73.407211000000075],[-100.44444299999992,73.40637200000009],[-100.43055700000002,73.406936999999971],[-100.41722099999998,73.413315000000068],[-100.41500899999994,73.41804500000012],[-100.42971799999998,73.430267000000072],[-100.45500199999998,73.441924999999969],[-100.484734,73.451935000000049],[-100.50279199999989,73.45748900000001],[-100.531387,73.466094999999939],[-100.58389299999993,73.482208000000014],[-100.59221599999995,73.486374000000069],[-100.59861799999999,73.491089000000102],[-100.60611,73.497207999999944],[-100.61000099999995,73.503052000000139],[-100.610817,73.509155000000078],[-100.60804699999994,73.514999000000103],[-100.60388199999994,73.521102999999982],[-100.55915799999997,73.546097000000088],[-100.54387700000001,73.556366000000139],[-100.541382,73.562194999999974],[-100.54277000000002,73.573883000000023],[-100.54998799999993,73.594711000000075],[-100.55166600000001,73.598876999999959],[-100.573624,73.596649000000014],[-100.628601,73.593322999999998],[-100.76750199999998,73.603867000000037],[-100.89167799999996,73.619980000000055],[-100.91139199999998,73.622756999999979],[-100.91194200000001,73.625259000000028],[-100.91139199999998,73.630539000000113],[-100.87943999999999,73.635818000000086],[-100.86472300000003,73.641662999999994],[-100.86110699999995,73.645827999999995],[-100.85360699999995,73.662201000000039],[-100.858047,73.667205999999908],[-100.97444199999995,73.679153000000042],[-100.99194299999999,73.678863999999976],[-101.03333299999997,73.671371000000136],[-101.04695099999998,73.673035000000141],[-101.057503,73.676650999999993],[-101.11833199999995,73.723312000000021],[-101.120003,73.727203000000088],[-101.01390100000003,73.797211000000061],[-100.99749799999989,73.802475000000015],[-100.98222399999997,73.80581699999999],[-100.95973199999997,73.809143000000006],[-100.93804899999998,73.810256999999979],[-100.82861300000002,73.815536000000122],[-100.79527300000001,73.812484999999924],[-100.77583300000003,73.812195000000088],[-100.754997,73.812484999999924],[-100.73416099999997,73.815262000000018],[-100.71444700000001,73.820267000000058],[-100.69915800000001,73.826096000000064],[-100.66416900000002,73.844986000000063],[-100.64835399999993,73.848327999999981],[-100.554169,73.854705999999965],[-100.52999899999998,73.853591999999935],[-100.41777000000002,73.845534999999984],[-100.39555399999995,73.840820000000122],[-100.38945000000001,73.83859300000006],[-100.370003,73.828049000000021],[-100.34999099999993,73.818603999999993],[-100.33612099999993,73.814697000000024],[-100.06304899999998,73.764999000000046],[-99.865828999999962,73.837769000000094],[-99.857773000000009,73.84275800000006],[-99.870109999999954,73.861541999999986],[-99.869109999999921,73.867370999999991],[-99.869780999999932,73.870201000000009],[-99.877105999999912,73.876541000000032],[-99.886771999999951,73.8822100000001],[-99.892440999999963,73.883536999999933],[-99.961944999999957,73.873306000000071],[-99.971663999999976,73.868042000000059],[-99.988051999999925,73.856934000000081],[-99.990829000000019,73.851089000000002],[-99.997498000000007,73.845534999999984],[-100.00834699999996,73.841369999999984],[-100.02639799999997,73.836929000000055],[-100.04943800000001,73.832764000000054],[-100.13667299999997,73.827484000000027],[-100.175003,73.828049000000021],[-100.24944299999993,73.833878000000027],[-100.26139799999993,73.838318000000072],[-100.29972799999996,73.860260000000096],[-100.29695100000004,73.865814000000114],[-100.29222099999993,73.872208000000001],[-100.27860999999996,73.888596000000007],[-100.26583900000003,73.899994000000049],[-100.252792,73.905258000000003],[-100.24305700000002,73.907486000000006],[-100.14306599999992,73.929977000000008],[-100.12721299999993,73.933319000000097],[-100.104446,73.936371000000008],[-100.03751399999999,73.942473999999947],[-99.981109999999944,73.945816000000093],[-99.938599000000011,73.946091000000081],[-99.896956999999986,73.944138000000009],[-99.856109999999887,73.940811000000053],[-99.816100999999946,73.93609600000002],[-99.800827000000027,73.931655999999975],[-99.800551999999925,73.925812000000008],[-99.813323999999966,73.921371000000079],[-99.806220999999937,73.902100000000019],[-99.810058999999967,73.898766000000023],[-99.810889999999972,73.894928000000107],[-99.808227999999986,73.891937000000041],[-99.804557999999929,73.889099000000101]],[[-89.988892000000021,73.988312000000121],[-90.007781999999963,73.984984999999995],[-90.058043999999938,73.992477000000122],[-90.158614999999998,74.001389000000131],[-90.217772999999966,74.004439999999988],[-90.250290000000007,74.00999500000006],[-90.265015000000005,74.014708999999982],[-90.281112999999891,74.02165199999996],[-90.284728999999913,74.024994000000106],[-90.285003999999958,74.029709000000139],[-90.276397999999858,74.038589000000002],[-90.271117999999944,74.043320000000108],[-90.240554999999972,74.053863999999976],[-90.206115999999952,74.057755000000043],[-89.991942999999935,74.066665999999998],[-89.97193900000002,74.064697000000137],[-89.941375999999991,74.057479999999998],[-89.914443999999946,74.047485000000108],[-89.90194699999995,74.03776600000009],[-89.903885000000002,74.03137200000009],[-89.918609999999944,74.010543999999982],[-89.928329000000019,74.005554000000132],[-89.988892000000021,73.988312000000121]],[[-98.918610000000001,73.806091000000094],[-98.96166999999997,73.80525200000011],[-99.104172000000005,73.81442300000009],[-99.140838999999914,73.818054000000132],[-99.36361699999992,73.864426000000037],[-99.381942999999922,73.86914100000007],[-99.429717999999923,73.891662999999937],[-99.437499999999943,73.89694199999991],[-99.43638599999997,73.902206000000092],[-99.429717999999923,73.908035000000098],[-99.422501000000011,73.911102000000028],[-99.406113000000005,73.915267999999912],[-99.282500999999968,73.936919999999986],[-99.223891999999978,73.940262000000075],[-99.092772999999909,73.952209000000039],[-99.020279000000016,73.979706000000022],[-98.938048999999921,73.998596000000134],[-98.801666000000012,74.018051000000128],[-98.66194200000001,74.03137200000009],[-98.575835999999981,74.03137200000009],[-98.532501000000025,74.032211000000018],[-98.491942999999935,74.034148999999957],[-98.425277999999992,74.043869000000029],[-98.3558349999999,74.057479999999998],[-98.275832999999921,74.07388300000008],[-98.255004999999926,74.078598000000113],[-98.230285999999978,74.083327999999938],[-98.170836999999949,74.09248400000007],[-98.039992999999981,74.105820000000051],[-97.994445999999925,74.109421000000111],[-97.806106999999884,74.11943100000002],[-97.758346999999958,74.118590999999981],[-97.737212999999997,74.117477000000008],[-97.703613000000018,74.113876000000118],[-97.690826000000015,74.111374000000069],[-97.653609999999958,74.099991000000045],[-97.64805599999994,74.0977630000001],[-97.642226999999934,74.087204000000042],[-97.637787000000003,74.075546000000031],[-97.638335999999981,74.063873000000001],[-97.649444999999957,74.052474999999959],[-97.656661999999983,74.04693599999996],[-97.673324999999863,74.035537999999974],[-97.717223999999987,74.009720000000016],[-97.728058000000033,74.004166000000055],[-97.763625999999931,73.988312000000121],[-97.823058999999887,73.968597000000102],[-98.124161000000015,73.878586000000098],[-98.145003999999915,73.873596000000077],[-98.168334999999956,73.870818999999983],[-98.392776000000026,73.84526100000005],[-98.478881999999999,73.837494000000106],[-98.777221999999995,73.813599000000124],[-98.918610000000001,73.806091000000094]],[[-92.638061999999877,74.103043000000127],[-92.36860699999994,74.041091999999992],[-92.356948999999986,74.038040000000024],[-92.33444199999991,74.03137200000009],[-92.31138599999997,74.02165199999996],[-92.296951000000035,74.014435000000049],[-92.289444000000003,74.009155000000021],[-92.282775999999956,74.003325999999959],[-92.273620999999991,73.990540000000067],[-92.272781000000009,73.984421000000054],[-92.28195199999999,73.974990999999989],[-92.291107000000011,73.969711000000075],[-92.310546999999929,73.961104999999975],[-92.327788999999939,73.951385000000073],[-92.330001999999979,73.945526000000086],[-92.329726999999991,73.942473999999947],[-92.309433000000013,73.940811000000053],[-92.1324919999999,73.946365000000014],[-92.118606999999997,73.949142000000109],[-92.116652999999985,73.95109599999995],[-92.113327000000027,73.95637499999998],[-92.110000999999897,73.964706000000035],[-92.113051999999982,73.974426000000108],[-92.114440999999999,73.976654000000053],[-92.113051999999982,73.981368999999916],[-92.107773000000009,73.984711000000061],[-92.094161999999983,73.989151000000049],[-91.925551999999982,74.012771999999927],[-91.877212999999983,74.016936999999928],[-91.838332999999977,74.018875000000094],[-91.570847000000015,74.025818000000072],[-91.528335999999911,74.024429000000055],[-91.139998999999932,74.00999500000006],[-91.097504000000015,74.008331000000055],[-91.065001999999993,74.006103999999993],[-91.046951000000035,74.004166000000055],[-90.735549999999932,73.968322999999998],[-90.660003999999958,73.953873000000044],[-90.633056999999951,73.948317999999972],[-90.441375999999934,73.919708000000128],[-90.406661999999983,73.914703000000088],[-90.364440999999999,73.911652000000061],[-90.354720999999984,73.912201000000039],[-90.344955000000027,73.914368000000081],[-90.341674999999952,73.917206000000078],[-90.339721999999938,73.920532000000094],[-90.341110000000015,73.924149000000057],[-90.33555599999994,73.925812000000008],[-90.317779999999971,73.925261999999975],[-90.225006000000008,73.908599999999979],[-90.195830999999998,73.901931999999988],[-90.194442999999922,73.899719000000005],[-90.204178000000013,73.888321000000019],[-90.230285999999978,73.862198000000035],[-90.241942999999992,73.851929000000041],[-90.25140399999998,73.846649000000127],[-90.264450000000011,73.84165999999999],[-90.275283999999942,73.83859300000006],[-90.283066000000019,73.838318000000072],[-90.360000999999954,73.800812000000121],[-90.474716000000001,73.72164900000007],[-90.581389999999999,73.65776100000005],[-90.724715999999944,73.583054000000118],[-90.84973100000002,73.540268000000083],[-90.921386999999925,73.495255000000043],[-90.930283000000031,73.483871000000079],[-90.932219999999973,73.481934000000081],[-91.089172000000019,73.384155000000021],[-91.152221999999995,73.361099000000024],[-91.171386999999982,73.351089000000059],[-91.180557000000022,73.345825000000104],[-91.186385999999914,73.340271000000087],[-91.238602000000014,73.279984000000127],[-91.253066999999874,73.269150000000081],[-91.262222000000008,73.263885000000016],[-91.367767000000015,73.200821000000133],[-91.569457999999997,73.063309000000061],[-91.642776000000026,73.021103000000039],[-91.647506999999962,73.016663000000051],[-91.645003999999972,72.998032000000023],[-91.770844000000011,72.913040000000024],[-91.799727999999959,72.897216999999955],[-91.808333999999888,72.891937000000098],[-91.812774999999988,72.885818000000086],[-91.813048999999921,72.880264000000068],[-91.81138599999997,72.868042000000116],[-91.818893000000003,72.862198000000092],[-91.84973100000002,72.846100000000035],[-92.06610099999989,72.752487000000087],[-92.095839999999896,72.743042000000003],[-92.127486999999917,72.734421000000111],[-92.166396999999961,72.725539999999967],[-92.232223999999974,72.713043000000027],[-92.274718999999891,72.70748900000001],[-92.314437999999996,72.704987000000131],[-92.335280999999952,72.704437000000098],[-92.393340999999907,72.707213999999965],[-92.431106999999997,72.710541000000092],[-92.524719000000005,72.720534999999927],[-92.745269999999891,72.739975000000129],[-92.898346000000004,72.750275000000045],[-93.077498999999875,72.769439999999975],[-93.248885999999914,72.789703000000031],[-93.337783999999999,72.8077550000001],[-93.349166999999852,72.802475000000072],[-93.366652999999985,72.797760000000039],[-93.391952999999944,72.794144000000131],[-93.412216000000001,72.792206000000022],[-93.580001999999922,72.778046000000074],[-93.679992999999911,72.779709000000025],[-93.726104999999905,72.781097000000102],[-93.764450000000011,72.781372000000147],[-93.932769999999948,72.774155000000007],[-94.038604999999961,72.766388000000063],[-94.099166999999966,72.764160000000118],[-94.132492000000013,72.764709000000039],[-94.170546999999942,72.767487000000074],[-94.18249499999996,72.769439999999975],[-94.24610899999999,72.77388000000002],[-94.262786999999889,72.774155000000007],[-94.298049999999989,72.770263999999941],[-94.315552000000025,72.763046000000145],[-94.321944999999971,72.759430000000066],[-94.327498999999989,72.754440000000045],[-94.334441999999967,72.738036999999963],[-94.332779000000016,72.731934000000024],[-94.327498999999989,72.721649000000127],[-94.319457999999997,72.717484000000127],[-94.3125,72.715545999999961],[-94.297501000000011,72.713318000000015],[-94.26916499999993,72.719147000000021],[-94.265288999999939,72.723877000000073],[-94.263901000000033,72.729980000000012],[-94.258346999999958,72.732483000000002],[-94.236388999999917,72.734985000000052],[-94.160278000000005,72.729431000000034],[-94.103606999999897,72.718596999999988],[-94.09333799999996,72.714995999999928],[-94.001403999999923,72.704162999999994],[-93.985000999999954,72.70387299999993],[-93.886672999999973,72.704712000000086],[-93.839447000000007,72.717209000000082],[-93.798339999999996,72.702208999999925],[-93.823058999999887,72.653046000000018],[-93.817229999999938,72.642211999999972],[-93.801665999999955,72.634430000000009],[-93.786117999999931,72.629149999999981],[-93.76945499999988,72.624984999999981],[-93.75778200000002,72.623032000000023],[-93.686660999999901,72.622208000000057],[-93.674438000000009,72.618866000000082],[-93.589721999999995,72.58137499999998],[-93.568619000000012,72.570831000000112],[-93.49888599999997,72.521927000000119],[-93.463333000000034,72.462204000000099],[-93.466110000000015,72.451385000000016],[-93.46945199999999,72.439697000000024],[-93.628052000000025,72.341934000000037],[-93.64527899999996,72.337204000000042],[-93.666397000000018,72.333602999999982],[-93.688323999999909,72.331099999999992],[-93.748610999999983,72.329712000000086],[-93.767226999999991,72.327209000000096],[-93.787216000000001,72.322769000000108],[-93.801392000000021,72.317764000000068],[-93.819732999999928,72.30720500000001],[-93.827498999999989,72.301926000000037],[-93.913329999999974,72.241652999999928],[-93.925277999999935,72.233047000000056],[-94.014175000000023,72.163879000000122],[-94.036666999999852,72.142212000000086],[-94.040282999999988,72.137497000000053],[-94.043610000000001,72.131363000000022],[-94.045546999999885,72.126922999999977],[-94.044723999999974,72.115814000000114],[-94.042220999999927,72.106644000000074],[-94.043883999999935,72.096939000000134],[-94.048339999999939,72.091094999999939],[-94.054717999999923,72.085265999999933],[-94.066665999999941,72.076660000000004],[-94.080840999999964,72.066939999999931],[-94.091675000000009,72.061645999999996],[-94.127685999999926,72.056366000000082],[-94.143341000000021,72.057480000000055],[-94.172500999999954,72.0577550000001],[-94.186660999999958,72.055816999999934],[-94.198883000000023,72.052765000000022],[-94.188720999999987,72.045258000000103],[-94.19505300000003,72.042091000000084],[-94.198387000000025,72.03910100000013],[-94.199546999999995,72.036438000000032],[-94.196053000000006,72.032432999999969],[-94.188384999999982,72.030930000000126],[-94.172042999999917,72.029594000000088],[-94.149886999999921,72.029433999999981],[-94.137382999999886,72.031769000000111],[-94.130554000000018,72.033104000000037],[-94.125214000000028,72.035095000000126],[-94.091385000000002,72.037766000000147],[-94.06082200000003,72.035262999999986],[-94.029723999999931,71.999419999999986],[-94.063048999999921,71.978317000000061],[-94.082229999999981,71.976089000000115],[-94.191719000000035,71.994316000000083],[-94.353881999999942,72.018050999999957],[-94.371933000000013,72.019440000000145],[-94.418059999999912,72.02276599999999],[-94.449721999999952,72.023315000000139],[-94.743880999999931,72.011383000000023],[-94.780288999999982,72.006103999999993],[-94.825561999999991,71.997481999999991],[-94.902221999999881,71.989151000000106],[-95.121932999999956,71.966095000000053],[-95.161117999999931,71.964706000000092],[-95.17582699999997,71.966934000000037],[-95.20777899999996,71.988876000000118],[-95.213333000000034,71.99443100000002],[-95.206664999999987,72.097488000000112],[-95.204453000000001,72.102767999999969],[-95.196654999999964,72.106644000000074],[-95.039444000000003,72.131363000000022],[-94.981673999999998,72.139434999999992],[-94.929717999999923,72.143599999999992],[-94.899993999999992,72.144440000000031],[-94.868057000000022,72.145538000000101],[-94.752228000000002,72.153320000000065],[-94.760833999999932,72.15498400000007],[-94.80610699999994,72.15914900000007],[-94.839171999999905,72.158599999999979],[-94.961394999999982,72.155258000000003],[-95.027495999999985,72.14498900000001],[-95.12110899999999,72.136658000000068],[-95.139998999999932,72.135544000000095],[-95.158889999999985,72.135818000000029],[-95.171111999999937,72.139159999999947],[-95.206664999999987,72.180817000000047],[-95.211670000000026,72.187194999999974],[-95.213622999999984,72.193313999999987],[-95.214721999999938,72.200271999999984],[-95.214721999999938,72.20526099999995],[-95.203887999999893,72.221924000000058],[-95.191375999999991,72.2452550000001],[-95.171111999999937,72.283324999999991],[-95.133330999999885,72.46026599999999],[-95.200287000000003,72.524428999999998],[-95.226394999999968,72.53166200000004],[-95.283065999999906,72.535538000000088],[-95.316100999999946,72.539703000000088],[-95.321395999999993,72.546097000000145],[-95.344451999999933,72.58137499999998],[-95.346664000000033,72.587493999999992],[-95.345551,72.593322999999998],[-95.331679999999949,72.598328000000038],[-95.313323999999966,72.601089000000059],[-95.315826000000015,72.606368999999916],[-95.355559999999969,72.637771999999984],[-95.364440999999886,72.643326000000116],[-95.458617999999944,72.68220500000001],[-95.475554999999986,72.686371000000122],[-95.492766999999901,72.688034000000016],[-95.50556899999998,72.686371000000122],[-95.52555799999999,72.681656000000089],[-95.535827999999924,72.681366000000025],[-95.548614999999927,72.68220500000001],[-95.576110999999969,72.689971999999955],[-95.590560999999923,72.695525999999973],[-95.602218999999934,72.702208999999925],[-95.666106999999897,72.801376000000062],[-95.673614999999984,72.813873000000058],[-95.675551999999982,72.82499700000011],[-95.675277999999935,72.841094999999996],[-95.671936000000017,72.852478000000019],[-95.653885000000002,72.876923000000033],[-95.645844000000011,72.91276600000009],[-95.655563000000029,73.019989000000066],[-95.683318999999983,73.075821000000019],[-95.582503999999972,73.127762000000132],[-95.575012000000015,73.164993000000095],[-95.600540000000024,73.283905000000004],[-95.650832999999977,73.325272000000041],[-95.646666999999979,73.330826000000059],[-95.613616999999977,73.342758000000003],[-95.623610999999983,73.361099000000024],[-95.653610000000015,73.412490999999932],[-95.681670999999994,73.444138000000066],[-95.683884000000035,73.450272000000098],[-95.700287000000003,73.55386400000009],[-95.668364999999937,73.581787000000077],[-95.612563999999963,73.610976999999991],[-95.656059000000027,73.631866000000116],[-95.676085999999998,73.665061999999978],[-95.681945999999982,73.711928999999998],[-95.673049999999989,73.723312000000021],[-95.658889999999985,73.732482999999945],[-95.645844000000011,73.735535000000084],[-95.450835999999981,73.771103000000096],[-95.428329000000019,73.77276599999999],[-95.299727999999959,73.771103000000096],[-95.283614999999941,73.769149999999968],[-95.266402999999912,73.764160000000118],[-95.236938000000009,73.752212999999983],[-95.160278000000005,73.713042999999971],[-95.154723999999987,73.706940000000031],[-95.138335999999924,73.700821000000019],[-95.106948999999986,73.691925000000083],[-95.076401000000033,73.683318999999983],[-95.024170000000026,73.671646000000123],[-94.95666499999993,73.659149000000127],[-94.890563999999927,73.649155000000121],[-94.845550999999944,73.644150000000081],[-94.828613000000018,73.643051000000071],[-94.812209999999993,73.643326000000116],[-94.652221999999995,73.648605000000089],[-94.634170999999924,73.649429000000055],[-94.618056999999908,73.651382000000012],[-94.619155999999975,73.654434000000094],[-94.638061999999991,73.665817000000118],[-94.649445000000014,73.670821999999987],[-94.676392000000021,73.676650999999993],[-94.732773000000009,73.681366000000025],[-94.773055999999997,73.679977000000008],[-94.81471299999987,73.680817000000104],[-94.866104000000007,73.687195000000031],[-94.883330999999998,73.692200000000071],[-95.075561999999877,73.773315000000139],[-95.089172000000019,73.783325000000048],[-95.111937999999952,73.801086000000055],[-95.11610399999995,73.806641000000127],[-95.108046999999999,73.812195000000088],[-95.070847000000015,73.822768999999994],[-95.036666999999909,73.829436999999928],[-95.00556899999998,73.832489000000066],[-94.976668999999958,73.831100000000049],[-94.958054000000004,73.831940000000088],[-94.963332999999977,73.838318000000072],[-94.982497999999964,73.845534999999984],[-95.005004999999983,73.852767999999969],[-95.024445000000014,73.855255000000056],[-95.045546999999942,73.855545000000063],[-95.076675000000023,73.852477999999962],[-95.109160999999972,73.843597000000045],[-95.116393999999957,73.839157],[-95.127212999999927,73.825821000000076],[-95.136123999999938,73.823608000000092],[-95.154174999999952,73.823608000000092],[-95.263061999999991,73.862762000000032],[-95.304169000000002,73.8808140000001],[-95.311385999999914,73.885269000000108],[-95.323333999999932,73.89694199999991],[-95.327788999999882,73.90914900000007],[-95.329726999999991,73.919982999999945],[-95.326110999999969,73.944138000000009],[-95.324721999999952,73.952484000000084],[-95.319167999999877,73.964157000000114],[-95.298339999999996,73.980819999999994],[-95.245270000000005,74.010268999999994],[-95.227782999999988,74.014160000000061],[-95.220001000000025,74.014708999999982],[-95.192489999999964,74.008881000000088],[-95.174438000000009,74.008881000000088],[-95.040833000000021,74.026382000000012],[-94.90695199999999,74.047485000000108],[-94.850280999999995,74.058868000000132],[-94.80610699999994,74.068054000000075],[-94.787506000000008,74.072769000000108],[-94.755279999999914,74.087204000000042],[-94.745833999999945,74.092209000000082],[-94.732223999999974,74.095260999999994],[-94.618332000000009,74.090271000000143],[-94.460281000000009,74.094437000000028],[-94.436934999999949,74.095824999999934],[-94.42721599999993,74.100815000000011],[-94.421111999999994,74.105820000000051],[-94.412780999999995,74.115265000000136],[-94.406112999999948,74.118865999999969],[-94.392226999999991,74.121918000000107],[-94.217498999999975,74.131652999999972],[-94.177779999999927,74.1336060000001],[-94.093063000000029,74.136383000000023],[-93.992492999999911,74.138596000000007],[-93.951950000000011,74.138885000000073],[-93.914169000000015,74.136107999999979],[-93.90194699999995,74.133331000000112],[-93.758346999999958,74.096939000000134],[-93.761397999999986,74.129150000000038],[-93.759445000000028,74.139160000000118],[-93.754456000000005,74.144714000000079],[-93.730835000000013,74.154160000000047],[-93.690551999999968,74.162200999999982],[-93.641112999999962,74.167754999999943],[-93.583617999999888,74.170822000000044],[-93.515015000000005,74.173035000000027],[-93.431670999999994,74.172211000000061],[-93.327498999999989,74.169983000000116],[-93.243880999999988,74.164993000000038],[-93.028885000000002,74.149993999999992],[-92.979445999999996,74.145828000000108],[-92.796386999999982,74.124985000000038],[-92.638061999999877,74.103043000000127]],[[-98.657226999999978,74.29942299999999],[-98.746947999999975,74.298035000000084],[-98.810271999999941,74.298325000000091],[-98.831679999999949,74.299149000000057],[-98.859436000000017,74.301376000000118],[-98.86221299999994,74.302475000000129],[-98.864715999999987,74.304703000000075],[-98.863051999999982,74.307479999999998],[-98.857223999999974,74.311371000000065],[-98.752501999999936,74.334152000000074],[-98.718338000000017,74.336655000000007],[-98.630829000000006,74.34248400000007],[-98.616652999999985,74.341934000000037],[-98.585830999999985,74.338593000000003],[-98.573623999999938,74.334991000000002],[-98.535278000000005,74.328873000000101],[-98.521666999999979,74.324706999999989],[-98.511123999999995,74.318329000000006],[-98.515563999999927,74.314147999999932],[-98.525009000000011,74.31053200000008],[-98.568618999999899,74.304703000000075],[-98.657226999999978,74.29942299999999]],[[-120.14998600000001,74.272491000000059],[-119.86472300000003,74.237762000000032],[-119.84528399999999,74.235809000000074],[-119.79527299999995,74.234420999999998],[-119.72501399999993,74.233871000000136],[-119.60916099999997,74.233321999999987],[-119.63971699999996,74.193039000000113],[-119.65139799999997,74.181655999999919],[-119.67250099999995,74.165817000000004],[-119.69082599999996,74.156936999999971],[-119.70249899999999,74.153046000000074],[-119.72305299999994,74.144714000000079],[-119.79415899999998,74.115265000000136],[-119.80332900000002,74.110535000000084],[-119.82417299999992,74.094711000000132],[-119.833618,74.082763999999997],[-119.83612099999999,74.075821000000019],[-119.83277900000002,74.064147999999989],[-119.82721699999991,74.05914300000012],[-119.77916699999997,74.033875000000023],[-119.76806599999986,74.030273000000079],[-119.74481199999997,74.025513000000046],[-119.72860699999995,74.02915999999999],[-119.72609699999992,74.035812000000078],[-119.72638699999993,74.041931000000091],[-119.73777799999999,74.058029000000147],[-119.650284,74.118590999999981],[-119.51000999999991,74.209152000000017],[-119.50083899999998,74.213882000000012],[-119.48916599999995,74.217483999999956],[-119.46528599999994,74.221100000000035],[-119.44972199999995,74.221924000000001],[-119.25723299999999,74.218323000000112],[-119.18472300000002,74.216933999999924],[-119.16528299999987,74.214995999999985],[-119.14862099999999,74.212204000000099],[-119.137787,74.208603000000039],[-119.12110899999993,74.199707000000103],[-119.11554699999999,74.194977000000051],[-119.10193600000002,74.179428000000144],[-119.09638999999999,74.168319999999994],[-119.09084300000001,74.156936999999971],[-119.07055700000001,74.114700000000084],[-119.06527699999998,74.103317000000061],[-119.07084699999996,74.089980999999966],[-119.08084099999996,74.077773999999977],[-119.08805799999999,74.072769000000108],[-119.10166900000002,74.069716999999969],[-119.11972000000003,74.068054000000075],[-119.14723199999997,74.062195000000031],[-119.15222199999994,74.056091000000038],[-119.18720999999999,73.994141000000127],[-119.18720999999999,73.987762000000089],[-119.16750299999995,73.987198000000149],[-118.98889200000002,73.998032000000023],[-118.97305299999999,74.000274999999988],[-118.96362299999993,74.004990000000021],[-118.80777,74.090546000000131],[-118.80055199999998,74.095824999999934],[-118.79028299999993,74.10775799999999],[-118.78751399999999,74.114700000000084],[-118.79277000000002,74.125809000000004],[-118.79804999999999,74.130814000000044],[-118.80695299999996,74.133880999999974],[-118.82333399999999,74.136383000000023],[-118.83693699999992,74.139435000000105],[-118.84805299999994,74.143326000000002],[-118.86721799999998,74.151382000000069],[-118.88333099999994,74.166382000000056],[-118.88612399999994,74.171921000000054],[-118.88110399999999,74.178040000000067],[-118.84388699999994,74.188309000000118],[-118.72000100000002,74.212768999999923],[-118.67388899999997,74.219986000000063],[-118.60722399999997,74.228317000000118],[-118.50583599999999,74.239974999999959],[-118.17999299999991,74.272217000000126],[-118.12249799999995,74.275818000000015],[-118.10193600000002,74.276382000000126],[-118.031387,74.275269000000094],[-117.97361799999999,74.269150000000025],[-117.91860999999989,74.262207000000046],[-117.62832599999996,74.244980000000055],[-117.51251199999996,74.238585999999998],[-117.43859900000001,74.22943099999992],[-117.422234,74.226929000000041],[-117.37609899999995,74.218323000000112],[-117.28943599999997,74.199707000000103],[-117.15722700000003,74.167754999999943],[-116.82833899999997,74.072495000000004],[-116.78500400000001,74.059708000000001],[-116.735817,74.039703000000145],[-116.62249799999989,73.990814],[-116.52806099999998,73.949706999999989],[-116.441101,73.913605000000018],[-116.34805299999999,73.875534000000016],[-116.33805799999999,73.87164300000012],[-116.32778899999988,73.867752000000053],[-116.31471299999993,73.864426000000037],[-116.29888900000003,73.861649000000114],[-116.20805399999995,73.838318000000072],[-116.05583199999995,73.792755000000113],[-116.00556899999998,73.773315000000139],[-115.97638699999999,73.755554000000018],[-115.91443599999997,73.726379000000122],[-115.89444699999996,73.718596999999988],[-115.817497,73.698318000000029],[-115.603882,73.652205999999978],[-115.40222199999999,73.568329000000006],[-115.36694299999999,73.545822000000101],[-115.34889199999998,73.531937000000028],[-115.33194700000001,73.511658000000068],[-115.31500199999999,73.479705999999908],[-115.32305899999994,73.474426000000051],[-115.449432,73.426651000000049],[-115.46140300000002,73.42303499999997],[-115.69943199999989,73.368866000000139],[-115.83473199999997,73.33998100000008],[-115.862213,73.334427000000119],[-116.26750199999998,73.273041000000148],[-116.33556399999998,73.267211999999915],[-116.37249800000001,73.265549000000021],[-116.42500299999995,73.261658000000125],[-116.45612299999993,73.257492000000013],[-116.46945199999999,73.254715000000147],[-116.69304699999992,73.203873000000044],[-116.80943299999996,73.168045000000006],[-116.94803599999995,73.124985000000038],[-117.02639799999997,73.106934000000024],[-117.16915899999998,73.081940000000088],[-117.39388999999994,73.048598999999911],[-117.42639200000002,73.044983000000059],[-117.46610999999996,73.03637700000013],[-117.708054,72.977768000000083],[-117.83667000000003,72.938583000000108],[-117.891953,72.919983000000002],[-117.925003,72.908875000000023],[-117.97501399999993,72.896378000000027],[-118.01611300000002,72.888321000000019],[-118.11527999999993,72.870818999999983],[-118.21806300000003,72.854705999999965],[-118.27362099999999,72.844436999999914],[-118.314438,72.836104999999918],[-118.36609599999997,72.824432000000115],[-118.38999899999993,72.817764000000125],[-118.44444299999998,72.798874000000012],[-118.45333900000003,72.794434000000138],[-118.46000700000002,72.78915400000011],[-118.46472199999994,72.783325000000104],[-118.48528299999992,72.767487000000074],[-118.49610899999999,72.763610999999969],[-118.53472899999991,72.754715000000033],[-118.54943799999995,72.752487000000087],[-118.58528100000001,72.750275000000045],[-118.65805099999994,72.74803200000008],[-118.70861799999994,72.743590999999981],[-118.75306699999999,72.73692299999999],[-118.77861000000001,72.731093999999985],[-119.11444099999994,72.639435000000049],[-119.1375119999999,72.632477000000051],[-119.15888999999999,72.624984999999981],[-119.16750299999995,72.620529000000033],[-119.30943300000001,72.438873000000058],[-119.3163909999999,72.425812000000121],[-119.33000199999987,72.394149999999968],[-119.33249699999999,72.387206999999989],[-119.33000199999987,72.381653000000142],[-119.32501200000002,72.376648000000102],[-119.30999800000001,72.368042000000003],[-119.30277999999993,72.363037000000134],[-119.30248999999998,72.356644000000017],[-119.31111099999993,72.352203000000088],[-119.40444899999994,72.325545999999974],[-119.429169,72.319716999999969],[-119.51555599999989,72.305817000000104],[-119.62666300000001,72.278320000000122],[-119.65750099999991,72.267211999999972],[-119.67804699999999,72.259430000000009],[-119.760559,72.228867000000037],[-119.80139200000002,72.22137500000008],[-119.837784,72.219711000000075],[-119.97250399999996,72.221100000000092],[-120.12372599999998,72.232597000000112],[-120.13405599999999,72.233756999999969],[-120.13871799999998,72.236420000000066],[-120.13621499999994,72.239929000000132],[-120.12888299999992,72.241928000000144],[-120.14362299999993,72.2494200000001],[-120.12943999999999,72.251663000000065],[-120.12721299999993,72.258606000000043],[-120.12999000000002,72.264160000000061],[-120.13999899999993,72.267761000000064],[-120.15750099999997,72.269714000000022],[-120.17582699999997,72.268875000000094],[-120.24109599999997,72.26249700000011],[-120.25110599999999,72.258606000000043],[-120.25945299999995,72.246643000000006],[-120.26139799999987,72.239700000000028],[-120.25862099999995,72.23414600000001],[-120.23144500000001,72.214812999999992],[-120.225281,72.212479000000144],[-120.21028899999999,72.20881700000001],[-120.19810499999994,72.204322999999988],[-120.18894999999998,72.199150000000088],[-120.18578299999996,72.196151999999984],[-120.14527900000002,72.149994000000049],[-120.14499699999993,72.143599999999992],[-120.17582699999997,72.094437000000084],[-120.19415299999997,72.078323000000125],[-120.30526699999996,72.013046000000088],[-120.329453,71.999146000000053],[-120.34750399999996,71.990814000000057],[-120.38362100000001,71.981658999999979],[-120.41332999999986,71.971374999999966],[-120.423317,71.96748400000007],[-120.43916299999989,71.958328000000108],[-120.445267,71.953048999999965],[-120.4491579999999,71.946930000000123],[-120.45278899999994,71.934707999999944],[-120.45249899999993,71.927765000000136],[-120.44972200000001,71.922210999999947],[-120.439438,71.912201000000039],[-120.43167099999994,71.908034999999984],[-120.391953,71.893051000000071],[-120.38445300000001,71.888885000000016],[-120.37917299999998,71.883881000000031],[-120.38082900000001,71.87831099999994],[-120.41500899999994,71.776382000000126],[-120.42278299999998,71.764160000000118],[-120.42471299999994,71.757216999999969],[-120.42639199999996,71.74443100000002],[-120.423607,71.738875999999948],[-120.41332999999986,71.72886699999998],[-120.40805099999994,71.723877000000073],[-120.40055799999993,71.719437000000084],[-120.37998999999996,71.699707000000046],[-120.37748699999992,71.694138000000066],[-120.37693799999994,71.688034000000073],[-120.38082900000001,71.681931000000077],[-120.43611099999998,71.611922999999933],[-120.47305299999999,71.565536000000066],[-120.49665799999997,71.544144000000017],[-120.54332699999992,71.516662999999994],[-120.60166900000002,71.493591000000038],[-120.63639799999999,71.485535000000141],[-120.78028899999998,71.457214000000079],[-120.80750299999988,71.452484000000027],[-120.87721299999998,71.441360000000145],[-120.921944,71.435532000000023],[-121.13333099999994,71.409424000000058],[-121.33249699999993,71.386932000000002],[-121.39444700000001,71.380264000000011],[-121.42916899999994,71.378311000000053],[-121.44833399999999,71.379425000000026],[-121.59056099999998,71.396378000000141],[-121.60305799999998,71.399428999999998],[-121.59137699999991,71.402771000000087],[-121.57611099999997,71.404434000000037],[-121.54915599999993,71.40914900000007],[-121.53751399999999,71.412490999999989],[-121.53195199999993,71.417755],[-121.52861000000001,71.423874000000012],[-121.531677,71.429427999999973],[-121.53694200000001,71.434418000000051],[-121.54998799999993,71.443588000000091],[-121.56973299999999,71.451660000000061],[-121.59638999999999,71.456940000000145],[-121.63027999999991,71.460540999999978],[-121.66860999999994,71.46276899999998],[-121.70361300000002,71.460815000000139],[-121.74388099999999,71.453323000000012],[-121.75556899999998,71.450271999999984],[-121.77639799999997,71.443038999999942],[-121.81220999999994,71.426651000000106],[-121.82917800000001,71.418319999999994],[-121.84612299999998,71.409714000000065],[-121.90194700000001,71.378586000000098],[-121.96528599999999,71.34275800000006],[-122.07501199999996,71.286926000000051],[-122.12165799999991,71.267211999999972],[-122.14417300000002,71.260817999999915],[-122.21056399999986,71.24832200000003],[-122.25446299999999,71.242477000000122],[-122.29833999999994,71.236374000000012],[-122.35526999999996,71.227768000000083],[-122.43028299999997,71.214157000000114],[-122.50556899999992,71.197754000000032],[-122.593887,71.178040000000124],[-122.60500299999995,71.174988000000042],[-122.61638600000003,71.171646000000067],[-122.64584400000001,71.160538000000088],[-122.66221599999994,71.151931999999988],[-122.67832900000002,71.143326000000059],[-122.7069469999999,71.124420000000043],[-122.74249299999997,71.101089000000002],[-122.76999699999988,71.089157000000057],[-122.781113,71.086104999999918],[-122.79611199999988,71.084152000000017],[-122.84944199999995,71.0816650000001],[-123.07611099999986,71.079163000000051],[-123.09500099999997,71.079987000000017],[-123.1260989999999,71.083878000000084],[-123.162781,71.092758000000117],[-123.22332799999998,71.114150999999993],[-123.25945300000001,71.129700000000128],[-123.29305999999985,71.146102999999982],[-123.31696299999999,71.158599999999979],[-123.37027,71.188873000000115],[-123.3952789999999,71.207763999999941],[-123.42999299999997,71.236923000000104],[-123.44860799999998,71.257767000000115],[-123.46640000000002,71.285537999999974],[-123.51390099999998,71.349152000000061],[-123.56696299999993,71.406096999999932],[-123.63417099999992,71.472487999999942],[-123.66583299999996,71.496368000000132],[-123.67971799999998,71.505264000000068],[-123.84388699999994,71.583328000000108],[-123.88722200000001,71.623595999999964],[-123.89917000000003,71.633041000000048],[-123.94888299999997,71.658325000000048],[-123.97582999999997,71.670258000000103],[-124.01334400000002,71.685806000000071],[-124.02390300000002,71.689148000000046],[-124.07055700000001,71.701935000000049],[-124.11138900000003,71.709991000000116],[-124.13694800000002,71.714432000000045],[-124.38474299999996,71.75471500000009],[-124.458054,71.76638800000012],[-124.609734,71.788040000000137],[-124.65278599999994,71.79525799999999],[-124.67887899999999,71.800812000000121],[-124.700287,71.806366000000139],[-124.83194700000001,71.840820000000008],[-124.86665299999993,71.85054000000008],[-125.07694999999995,71.909149000000127],[-125.16000400000001,71.924683000000073],[-125.23638900000003,71.941910000000064],[-125.24722300000002,71.945511000000124],[-125.25361599999997,71.950255999999968],[-125.24472000000003,71.954422000000079],[-125.04804999999999,71.955536000000052],[-124.98029300000002,71.943587999999977],[-124.96945199999999,71.939972000000125],[-124.95388800000001,71.938034000000016],[-124.94275699999997,71.939972000000125],[-124.93804899999998,71.945525999999916],[-124.93554699999999,71.951659999999947],[-124.93971299999998,71.956940000000031],[-124.94833399999999,71.961105000000032],[-124.98777799999999,71.969711000000132],[-125.02278100000001,71.972504000000129],[-125.23277300000001,71.975524999999948],[-125.35221899999999,71.97468600000002],[-125.41639700000002,71.974135999999987],[-125.47833300000002,71.972763000000043],[-125.59111000000001,71.966385000000116],[-125.62666299999995,71.963608000000022],[-125.68639399999995,71.954987000000074],[-125.72165699999994,71.952209000000096],[-125.76139799999993,71.950821000000019],[-125.80139199999996,71.952209000000096],[-125.93582199999992,71.958602999999982],[-125.97361799999999,71.960541000000092],[-125.984444,71.963882000000126],[-125.99333200000001,71.96804800000001],[-125.997772,71.973602000000028],[-125.99333200000001,71.978867000000093],[-125.97778299999999,71.979706000000022],[-125.966949,71.976379000000122],[-125.90055799999999,71.962494000000049],[-125.88054699999992,71.963318000000015],[-125.84973099999991,71.967209000000082],[-125.80999799999995,71.975540000000137],[-125.787781,71.982208000000128],[-125.77887699999991,71.986374000000012],[-125.765289,71.996094000000085],[-125.75418100000002,72.006103999999993],[-125.74082899999996,72.022751000000028],[-125.73388699999998,72.034133999999995],[-125.724716,72.051926000000094],[-125.71777299999985,72.070540999999992],[-125.71528599999994,72.083603000000039],[-125.71528599999994,72.090270999999973],[-125.71749899999992,72.096375000000023],[-125.72165699999994,72.101929000000041],[-125.72833299999996,72.106644000000074],[-125.73944099999989,72.110260000000096],[-125.71444700000001,72.157485999999949],[-125.57389799999993,72.247467000000142],[-125.51445000000001,72.291076999999973],[-125.46777299999997,72.351074000000096],[-125.43221999999997,72.403580000000034],[-125.43666099999996,72.409134000000051],[-125.30055199999993,72.483307000000025],[-125.29110699999995,72.487183000000073],[-125.27971600000001,72.490524000000107],[-125.25787399999996,72.495125000000144],[-125.247772,72.49523899999997],[-125.17194399999994,72.513596000000064],[-125.1394499999999,72.524138999999991],[-125.02806099999998,72.566071000000079],[-125,72.605254999999943],[-124.94055199999997,72.70248400000014],[-124.97193899999991,72.755829000000006],[-125.02610800000002,72.821091000000081],[-124.95916699999998,72.856369000000086],[-124.89334100000002,72.873871000000122],[-124.87917299999998,72.876373000000001],[-124.801941,72.887497000000053],[-124.76695299999994,72.890823000000125],[-124.72749299999987,72.888596000000064],[-124.68804899999986,72.887497000000053],[-124.66944899999993,72.888884999999959],[-124.63667299999997,72.892761000000064],[-124.60611,72.897216999999955],[-124.591949,72.899994000000049],[-124.49722300000002,72.919707999999957],[-124.48554999999999,72.923035000000084],[-124.47582999999997,72.927200000000084],[-124.47305299999999,72.933318999999926],[-124.49305700000002,72.97164900000007],[-124.49722300000002,72.977203000000031],[-124.62138399999992,73.001389000000131],[-124.71250899999995,73.003876000000048],[-124.72609699999998,73.006653000000142],[-124.73777799999999,73.010268999999994],[-124.76972999999992,73.021378000000084],[-124.82417299999992,73.046097000000032],[-124.83332799999994,73.050262000000032],[-124.84916699999997,73.059417999999994],[-124.862503,73.068878000000041],[-124.86694299999994,73.074432000000058],[-124.86888099999999,73.080551000000071],[-124.86389200000002,73.086105000000089],[-124.79472399999992,73.134720000000129],[-124.78500400000001,73.13888500000013],[-124.71362299999987,73.149428999999998],[-124.59916699999985,73.227768000000026],[-124.58640299999996,73.238037000000077],[-124.57389799999993,73.248321999999973],[-124.56360599999988,73.259155000000135],[-124.50805699999995,73.32638500000013],[-124.44583099999994,73.411102000000142],[-124.44055199999997,73.416655999999932],[-124.43306000000001,73.421370999999965],[-124.40556299999997,73.434143000000006],[-124.30555699999991,73.478592000000106],[-124.29332699999998,73.481659000000036],[-124.252228,73.483596999999975],[-124.22833300000002,73.483321999999987],[-124.20916699999998,73.481659000000036],[-124.18998699999997,73.481659000000036],[-124.17304999999999,73.483596999999975],[-124.16055299999999,73.486923000000047],[-124.07000699999998,73.546097000000088],[-124.041946,73.582214000000079],[-124.03888699999993,73.586929000000112],[-124.07167099999998,73.61775200000011],[-124.0786129999999,73.622756999999979],[-124.07611099999991,73.643051000000071],[-124.073059,73.649155000000121],[-124.06777999999991,73.654709000000139],[-124.05526700000001,73.658034999999984],[-123.94554099999993,73.681656000000032],[-123.86138899999997,73.695815999999979],[-123.83389299999999,73.700272000000041],[-123.774719,73.764435000000105],[-123.80471799999987,73.796936000000017],[-123.83833300000003,73.821106000000043],[-123.84777800000001,73.825271999999927],[-123.93639399999995,73.840546000000018],[-123.95834399999995,73.841369999999984],[-123.98055999999991,73.840820000000122],[-124.01999699999999,73.838318000000072],[-124.06639100000001,73.839432000000045],[-124.08583099999998,73.841094999999996],[-124.13417099999992,73.848327999999981],[-124.16306299999985,73.854156000000103],[-124.19860799999992,73.864699999999971],[-124.21749899999986,73.872757000000092],[-124.36860699999988,74.014435000000049],[-124.41166699999991,74.056366000000025],[-124.42666600000001,74.109711000000118],[-124.43415800000002,74.134430000000066],[-124.600281,74.268326000000059],[-124.61805699999996,74.26638800000012],[-124.66082799999992,74.264708999999925],[-124.68083200000001,74.266098000000113],[-124.69304699999986,74.269440000000031],[-124.77500900000001,74.319152999999972],[-124.78415699999999,74.329987000000074],[-124.781387,74.336104999999975],[-124.77084400000001,74.340271000000087],[-124.75556899999992,74.342758000000003],[-124.69722000000002,74.347214000000065],[-124.40471600000001,74.369141000000127],[-124.10861199999999,74.392761000000121],[-123.89527899999996,74.396378000000084],[-123.85694899999987,74.399429000000112],[-123.676941,74.418320000000108],[-123.63834399999996,74.421371000000136],[-123.57444800000002,74.424149000000114],[-123.41887700000001,74.428314000000114],[-123.20584100000002,74.443039000000056],[-123.02250700000002,74.444702000000007],[-122.68998699999992,74.453872999999987],[-122.43804899999998,74.464995999999928],[-122.33750900000001,74.471099999999979],[-122.118607,74.49192800000003],[-122.06610099999995,74.49803200000008],[-121.93859900000001,74.518326000000002],[-121.76666299999999,74.539703000000031],[-121.73000299999995,74.543319999999994],[-121.65194699999995,74.548598999999967],[-121.61028299999992,74.550537000000134],[-121.56416300000001,74.551086000000055],[-121.51862299999993,74.548874000000012],[-121.31082200000003,74.531661999999983],[-121.25361599999997,74.525818000000129],[-121.13612399999994,74.506943000000035],[-121.08389299999993,74.493590999999981],[-121.05777,74.486649000000057],[-121.01112399999988,74.472214000000122],[-121.00222799999995,74.46775800000006],[-120.98998999999998,74.458037999999988],[-120.98055999999991,74.447479000000101],[-120.97693599999991,74.441925000000083],[-120.97556299999991,74.429703000000131],[-120.90638699999994,74.415268000000026],[-120.70584100000002,74.373596000000134],[-120.48166700000002,74.329987000000074],[-120.21721599999989,74.282486000000006],[-120.14998600000001,74.272491000000059]],[[-97.652785999999992,74.455826000000059],[-97.675551999999982,74.454987000000131],[-97.691939999999988,74.455261000000064],[-97.708892999999989,74.457214000000022],[-97.777221999999995,74.476379000000122],[-97.789444000000003,74.479980000000012],[-97.792495999999915,74.485809000000017],[-97.781386999999995,74.497208000000114],[-97.768616000000009,74.508041000000105],[-97.761672999999917,74.512496999999996],[-97.753890999999953,74.515548999999965],[-97.618057000000022,74.552200000000028],[-97.532227000000034,74.606369000000086],[-97.513625999999988,74.611374000000126],[-97.470001000000025,74.621094000000028],[-97.445830999999998,74.626082999999994],[-97.422774999999945,74.629424999999912],[-97.406951999999933,74.62831100000011],[-97.389724999999999,74.626373000000001],[-97.368056999999965,74.622756999999979],[-97.357772999999952,74.621368000000132],[-97.291381999999942,74.605255000000113],[-97.267226999999934,74.597214000000008],[-97.261672999999917,74.594711000000075],[-97.256957999999997,74.590546000000074],[-97.261948000000018,74.583878000000084],[-97.299987999999871,74.551376000000062],[-97.376098999999954,74.511658000000068],[-97.387511999999958,74.506377999999984],[-97.606383999999991,74.461929000000055],[-97.652785999999992,74.455826000000059]],[[-95.311110999999983,74.497757000000092],[-95.331389999999999,74.496093999999971],[-95.353332999999964,74.496368000000075],[-95.458892999999989,74.49859600000002],[-95.480559999999912,74.5],[-95.522781000000009,74.504990000000078],[-95.603057999999919,74.515548999999965],[-95.661666999999966,74.523605000000032],[-95.697768999999937,74.529709000000025],[-95.71665999999999,74.533874999999966],[-95.809432999999956,74.554427999999973],[-95.845000999999968,74.563873000000058],[-95.862212999999997,74.56999200000007],[-95.866394000000014,74.574158000000011],[-95.860549999999989,74.579163000000051],[-95.857497999999964,74.580551000000128],[-95.682495000000017,74.634995000000004],[-95.653885000000002,74.642211999999915],[-95.638061999999991,74.643326000000116],[-95.624161000000015,74.641662999999994],[-95.628601000000003,74.640823000000125],[-95.517501999999922,74.630264000000068],[-95.497498000000007,74.627197000000137],[-95.441101000000003,74.613876000000005],[-95.403609999999958,74.603316999999947],[-95.334441999999967,74.580825999999945],[-95.317779999999971,74.573883000000137],[-95.291945999999939,74.560257000000036],[-95.260283999999956,74.540543000000071],[-95.25111400000003,74.53414900000007],[-95.244995000000017,74.527771000000087],[-95.246383999999978,74.521652000000074],[-95.25111400000003,74.516098000000056],[-95.259170999999981,74.510544000000095],[-95.271117999999944,74.505554000000018],[-95.289443999999946,74.501389000000017],[-95.311110999999983,74.497757000000092]],[[-97.175827000000027,75.24414100000007],[-97.194442999999978,75.242752000000053],[-97.216110000000015,75.24470500000001],[-97.225006000000008,75.24803199999991],[-97.231948999999929,75.254440000000045],[-97.27806099999998,75.343597000000102],[-97.275283999999999,75.347487999999998],[-97.258056999999951,75.349426000000108],[-97.208617999999944,75.342209000000025],[-97.190551999999968,75.33526599999999],[-97.161666999999852,75.322220000000073],[-97.153060999999923,75.315262000000075],[-97.148894999999925,75.297760000000039],[-97.146956999999986,75.27998400000007],[-97.147507000000019,75.273880000000077],[-97.155838000000017,75.255264000000011],[-97.161666999999852,75.250000000000057],[-97.175827000000027,75.24414100000007]],[[-103.9175029999999,75.054977000000008],[-104.22917199999995,75.018051000000071],[-104.261124,75.018326000000116],[-104.45944199999991,75.028869999999984],[-104.662216,75.062485000000038],[-104.84722899999991,75.109146000000067],[-104.85722399999992,75.164703000000031],[-104.82000699999998,75.177765000000022],[-104.79998799999998,75.189423000000033],[-104.79305999999997,75.194702000000063],[-104.74472000000003,75.246093999999971],[-104.76862299999999,75.281937000000028],[-104.71083099999993,75.322220000000073],[-104.68222000000003,75.33776899999998],[-104.67360699999995,75.341660000000047],[-104.49722299999996,75.406372000000033],[-104.42804699999994,75.420821999999987],[-104.37777699999998,75.42804000000001],[-104.33000199999992,75.433043999999938],[-104.18222000000003,75.435531999999967],[-104.15177900000003,75.434555000000103],[-104.11416600000001,75.430267000000072],[-103.97112299999998,75.404434000000094],[-103.953056,75.399994000000106],[-103.935272,75.394989000000066],[-103.84805299999999,75.364990000000034],[-103.81054699999993,75.348602000000142],[-103.74166899999994,75.286102000000028],[-103.587219,75.169983000000059],[-103.58306899999997,75.164703000000031],[-103.59028599999999,75.159424000000058],[-103.60888699999992,75.149155000000007],[-103.7302929999999,75.099990999999989],[-103.76390100000003,75.088882000000126],[-103.79943799999995,75.077484000000084],[-103.81777999999997,75.072494999999947],[-103.88999899999999,75.058318999999983],[-103.9175029999999,75.054977000000008]],[[-100.17223399999995,75.601379000000009],[-100.15722700000003,75.589432000000045],[-100.15778399999994,75.584991000000116],[-100.17639200000002,75.57998699999996],[-100.23332199999993,75.569153000000085],[-100.383331,75.553588999999988],[-100.45417800000001,75.546371000000022],[-100.47972099999993,75.545822000000044],[-100.47556299999997,75.549987999999985],[-100.45749699999999,75.554152999999985],[-100.43195299999991,75.55831900000004],[-100.40666199999987,75.561370999999951],[-100.36110699999995,75.565535999999952],[-100.31777999999986,75.573043999999982],[-100.30332900000002,75.577484000000027],[-100.29361,75.584427000000005],[-100.30332900000002,75.58859300000006],[-100.31973299999999,75.590820000000122],[-100.33917199999996,75.591369999999984],[-100.36332699999997,75.59027100000003],[-100.52778599999994,75.577208999999982],[-100.74973299999994,75.558029000000033],[-100.86527999999998,75.547211000000061],[-100.88555899999994,75.545822000000044],[-100.90862300000003,75.546371000000022],[-100.950287,75.549713000000111],[-100.99445300000002,75.554977000000122],[-101.02333099999993,75.559981999999991],[-101.03333299999997,75.563034000000073],[-101.03943600000002,75.567215000000147],[-101.02583299999998,75.570540999999992],[-100.84277299999991,75.586929000000055],[-100.70249899999993,75.588882000000012],[-100.68055699999996,75.589432000000045],[-100.65583800000002,75.59165999999999],[-100.64167800000001,75.596100000000035],[-100.62027,75.606094000000041],[-100.59861799999999,75.610259999999926],[-100.51112399999994,75.61914100000007],[-100.39444700000001,75.623031999999967],[-100.27639799999997,75.623031999999967],[-100.23500099999995,75.623031999999967],[-100.21777299999997,75.621917999999994],[-100.204453,75.617477000000065],[-100.19499200000001,75.613312000000064],[-100.17223399999995,75.601379000000009]],[[-94.363892000000021,75.590820000000122],[-94.326950000000011,75.579711999999972],[-94.243880999999931,75.549713000000111],[-94.205275999999913,75.529709000000025],[-94.010283999999956,75.442200000000071],[-93.989715999999987,75.434982000000105],[-93.839721999999938,75.388046000000031],[-93.742492999999968,75.364426000000094],[-93.499160999999958,75.264709000000096],[-93.487502999999947,75.256653000000028],[-93.493331999999953,75.247207999999944],[-93.529175000000009,75.176376000000062],[-93.488892000000021,75.072494999999947],[-93.434157999999968,74.966385000000002],[-93.406386999999995,74.883605999999986],[-93.458053999999947,74.714996000000099],[-93.462508999999955,74.708602999999925],[-93.467772999999966,74.703048999999965],[-93.484726000000023,74.687759000000142],[-93.49610899999999,74.68193100000002],[-93.530563000000029,74.667755000000056],[-93.563323999999966,74.659424000000115],[-93.691665999999941,74.63998400000014],[-93.717223999999874,74.636932000000058],[-93.741378999999995,74.635543999999982],[-94.040282999999988,74.640823000000125],[-94.249999999999886,74.646378000000027],[-94.388061999999991,74.635269000000108],[-94.471114999999884,74.626648000000046],[-94.511947999999961,74.623306000000071],[-94.547500999999897,74.621368000000132],[-94.643340999999964,74.623596000000077],[-94.687774999999931,74.62831100000011],[-95.024718999999948,74.673035000000084],[-95.080001999999979,74.680817000000047],[-95.085830999999985,74.687195000000031],[-95.076949999999954,74.697479000000044],[-95.072783999999956,74.702209000000096],[-95.104445999999996,74.744141000000127],[-95.266402999999912,74.793319999999937],[-95.283324999999991,74.79803499999997],[-95.298339999999996,74.800262000000032],[-95.403335999999911,74.803863999999976],[-95.434158000000025,74.801376000000005],[-95.457503999999972,74.798324999999977],[-95.479172000000005,74.78804000000008],[-95.483062999999902,74.783325000000048],[-95.482772999999952,74.779433999999981],[-95.475554999999986,74.769989000000066],[-95.462219000000005,74.756653000000142],[-95.547226000000023,74.761107999999979],[-95.625823999999909,74.807480000000055],[-95.705565999999976,74.829987000000131],[-95.740828999999906,74.82388300000008],[-95.771392999999932,74.823608000000092],[-95.864166000000012,74.826096000000064],[-95.959473000000003,74.856369000000029],[-96.002501999999879,74.872757000000092],[-96.006667999999934,74.876923000000147],[-96.077224999999942,74.902771000000087],[-96.135283999999899,74.951096000000121],[-96.141678000000013,74.957214000000079],[-96.136948000000018,74.963043000000084],[-96.124709999999936,74.975815000000068],[-96.094726999999978,74.991364000000033],[-96.070847000000015,75.001938000000052],[-96.056380999999988,75.010268999999937],[-96.055557000000022,75.016097999999943],[-96.060546999999985,75.019440000000088],[-96.07417299999986,75.023605000000089],[-96.083068999999966,75.024429000000055],[-96.142226999999991,75.017761000000064],[-96.147507000000019,75.013611000000083],[-96.200835999999924,74.954712000000029],[-96.203339000000028,74.951660000000061],[-96.20666499999993,74.943038999999999],[-96.203887999999949,74.93691999999993],[-96.205840999999964,74.92025799999999],[-96.209732000000031,74.915543000000127],[-96.221389999999985,74.910263000000043],[-96.247771999999884,74.90554800000001],[-96.268341000000021,74.903870000000097],[-96.31527699999998,74.90248100000008],[-96.337219000000005,74.903595000000053],[-96.357497999999964,74.906647000000021],[-96.373610999999983,74.910263000000043],[-96.387221999999952,74.914703000000088],[-96.396666999999923,74.919708000000128],[-96.40306099999998,74.925812000000121],[-96.386123999999995,74.97387700000013],[-96.357497999999964,74.97137500000008],[-96.341385000000002,74.972487999999998],[-96.328063999999983,74.974701000000096],[-96.320557000000008,74.979430999999977],[-96.318343999999968,74.982208000000071],[-96.322234999999864,75.001389000000074],[-96.331115999999895,75.004715000000147],[-96.476669000000015,75.004440000000102],[-96.500838999999928,75.002777000000037],[-96.523055999999997,74.999145999999939],[-96.533889999999985,74.994705000000067],[-96.55972300000002,74.986098999999967],[-96.580291999999986,74.98414600000001],[-96.599990999999989,74.983322000000044],[-96.614165999999955,74.984984999999938],[-96.616942999999992,74.991088999999988],[-96.604720999999984,75.063309000000004],[-96.571395999999936,75.101089000000115],[-96.463057999999933,75.19331399999993],[-96.456389999999999,75.196930000000009],[-96.378600999999946,75.21665999999999],[-96.077788999999996,75.272491000000059],[-95.948043999999982,75.283325000000104],[-95.922500999999954,75.286102000000028],[-95.903335999999911,75.289978000000076],[-95.910552999999936,75.29525799999999],[-95.934433000000013,75.297211000000118],[-95.978058000000033,75.298874000000012],[-96.026671999999962,75.299149000000057],[-96.049987999999928,75.296936000000073],[-96.061935000000005,75.315262000000075],[-96.003615999999965,75.343047999999953],[-95.932494999999903,75.353043000000071],[-95.934714999999983,75.350173999999981],[-95.93472300000002,75.347762999999986],[-95.919998000000021,75.34693900000002],[-95.890288999999996,75.349152000000004],[-95.887443999999959,75.360268000000133],[-95.83677699999987,75.369926000000021],[-95.830780000000004,75.371429000000035],[-95.829781000000025,75.372589000000119],[-95.83061199999986,75.374428000000023],[-95.832786999999939,75.375923000000114],[-95.848274000000004,75.378432999999973],[-95.906775999999979,75.387428000000057],[-95.927779999999871,75.398041000000148],[-96.033324999999934,75.40109300000006],[-96.055267000000015,75.400818000000072],[-96.078887999999893,75.396103000000039],[-96.079178000000013,75.391098],[-96.083618000000001,75.385543999999982],[-96.099730999999963,75.380264000000125],[-96.126099000000011,75.37692300000009],[-96.151108000000022,75.374984999999924],[-96.175277999999992,75.379424999999969],[-96.178878999999995,75.384430000000009],[-96.161941999999954,75.395537999999988],[-96.14973399999991,75.400818000000072],[-96.135009999999966,75.406372000000033],[-96.095839999999896,75.417755000000056],[-96.0625,75.424988000000099],[-95.974166999999966,75.436096000000077],[-95.958344000000011,75.436371000000065],[-95.93638599999997,75.43414300000012],[-95.874160999999958,75.423874000000069],[-95.831046999999955,75.41531400000008],[-95.832549999999969,75.413651000000129],[-95.83322099999998,75.409988000000112],[-95.831046999999955,75.406982000000085],[-95.825881999999979,75.403320000000122],[-95.814383999999961,75.400322000000074],[-95.769553999999857,75.400322000000074],[-95.691100999999946,75.40525800000006],[-95.682495000000017,75.408324999999991],[-95.676102000000014,75.415817000000118],[-95.678328999999962,75.421920999999998],[-95.68472300000002,75.428314000000114],[-95.691665999999998,75.429703000000131],[-95.715835999999911,75.429153000000099],[-95.734160999999915,75.426085999999998],[-95.758620999999948,75.42553700000002],[-95.781677000000002,75.42804000000001],[-95.800551999999925,75.431656000000032],[-95.825011999999958,75.439972000000125],[-95.830001999999922,75.4433140000001],[-95.836945000000014,75.453598000000113],[-95.83805799999999,75.459152000000074],[-95.835555999999997,75.464431999999988],[-95.832229999999981,75.470535000000098],[-95.824172999999973,75.477767999999912],[-95.800551999999925,75.49136400000009],[-95.762222000000008,75.508041000000048],[-95.749725000000012,75.513321000000133],[-95.470000999999968,75.566939999999988],[-95.275283999999942,75.599426000000051],[-95.264175000000023,75.59387200000009],[-95.234436000000017,75.584717000000012],[-95.212783999999999,75.582489000000066],[-95.178604000000007,75.584427000000005],[-95.12470999999988,75.59526100000005],[-95.104172000000005,75.60026600000009],[-95.093338000000017,75.603591999999992],[-95.085830999999985,75.607208000000014],[-95.084166999999979,75.609146000000123],[-95.075286999999946,75.614426000000037],[-95.063323999999909,75.618866000000025],[-95.044448999999872,75.62164300000012],[-94.917769999999962,75.637207000000046],[-94.901672000000019,75.637497000000053],[-94.741378999999938,75.62414600000011],[-94.559722999999963,75.612488000000099],[-94.511123999999995,75.611099000000081],[-94.46556099999998,75.608321999999987],[-94.404175000000009,75.599152000000117],[-94.363892000000021,75.590820000000122]],[[-95.910003999999901,75.560256999999979],[-95.911117999999988,75.554152999999985],[-95.93472300000002,75.540543000000071],[-96.170837000000006,75.458038000000101],[-96.220276000000013,75.455551000000071],[-96.238892000000021,75.456650000000025],[-96.255004999999983,75.461380000000077],[-96.399170000000026,75.516388000000063],[-96.417220999999984,75.523315000000139],[-96.42471299999994,75.528595000000053],[-96.450995999999975,75.529991000000052],[-96.441161999999963,75.535987999999975],[-96.415832999999907,75.543648000000132],[-96.412659000000019,75.546150000000011],[-96.411666999999909,75.548819999999978],[-96.417992000000027,75.552658000000065],[-96.431167999999957,75.555489000000023],[-96.441832999999974,75.555664000000093],[-96.450995999999975,75.553154000000063],[-96.503837999999917,75.535156000000029],[-96.507995999999935,75.532982000000118],[-96.518165999999951,75.526320999999996],[-96.525161999999909,75.519325000000038],[-96.553603999999893,75.508880999999917],[-96.552215999999987,75.503326000000015],[-96.549437999999896,75.497208000000114],[-96.545546999999999,75.492203000000075],[-96.541107000000011,75.488037000000134],[-96.533324999999934,75.48275799999999],[-96.517501999999922,75.478043000000127],[-96.503341999999975,75.471374999999966],[-96.500564999999995,75.464996000000099],[-96.50418099999996,75.460266000000104],[-96.511948000000018,75.455826000000059],[-96.65834000000001,75.388596000000064],[-96.833617999999944,75.352478000000019],[-96.851104999999905,75.350266000000147],[-96.862212999999997,75.350815000000125],[-96.876098999999954,75.353591999999992],[-96.93249499999996,75.376082999999994],[-97.030838000000017,75.454437000000041],[-97.053054999999915,75.492203000000075],[-97.053054999999915,75.497208000000114],[-97.006957999999941,75.508331000000112],[-96.940825999999959,75.521652000000017],[-96.913619999999923,75.526382000000069],[-96.891677999999956,75.529160000000047],[-96.666945999999996,75.552765000000022],[-96.469382999999993,75.588425000000029],[-96.466552999999919,75.591933999999924],[-96.467727999999909,75.599091000000044],[-96.470054999999888,75.602264000000048],[-96.422500999999954,75.623596000000077],[-96.424438000000009,75.635544000000095],[-96.415008999999941,75.646941999999967],[-96.396392999999989,75.649994000000049],[-96.379715000000033,75.651093000000003],[-96.347228999999913,75.651382000000126],[-96.335555999999997,75.650818000000015],[-96.314437999999996,75.647766000000104],[-96.241104000000007,75.629974000000061],[-96.133330999999941,75.606644000000074],[-96.115829000000019,75.60386699999998],[-96.101944000000003,75.603591999999992],[-96.025436000000013,75.602844000000061],[-95.95777899999996,75.583603000000039],[-95.938889000000017,75.577484000000027],[-95.923888999999974,75.571655000000021],[-95.916397000000018,75.566375999999991],[-95.910003999999901,75.560256999999979]],[[-96.954453000000001,75.595534999999984],[-96.975005999999894,75.594711000000018],[-96.996658000000025,75.597762999999929],[-97.005004999999983,75.604431000000091],[-97.001953000000015,75.610809000000074],[-96.988601999999958,75.618042000000059],[-96.978607000000011,75.623031999999967],[-96.960830999999985,75.627472000000125],[-96.779449,75.6602630000001],[-96.751952999999958,75.664703000000088],[-96.729720999999984,75.665267999999969],[-96.720551,75.66415399999994],[-96.715835999999967,75.659988000000055],[-96.718886999999995,75.653870000000097],[-96.722305000000006,75.652954000000022],[-96.740279999999927,75.646941999999967],[-96.849166999999966,75.613312000000064],[-96.954453000000001,75.595534999999984]],[[-96.579177999999899,75.736923000000104],[-96.696655000000021,75.730819999999994],[-96.710555999999997,75.733597000000088],[-96.717223999999987,75.739700000000028],[-96.67860399999995,75.777481000000023],[-96.666945999999996,75.786652000000117],[-96.660827999999981,75.789429000000041],[-96.541107000000011,75.822219999999959],[-96.525283999999942,75.826384999999959],[-96.507506999999976,75.828323000000125],[-96.48443599999996,75.827208999999925],[-96.468062999999916,75.822495000000004],[-96.455841000000021,75.817764000000068],[-96.457503999999972,75.801085999999998],[-96.459166999999979,75.789429000000041],[-96.539718999999991,75.74331699999999],[-96.553603999999893,75.738586000000055],[-96.579177999999899,75.736923000000104]],[[-111.79998799999998,75.839157],[-111.823624,75.83859300000006],[-111.86582899999996,75.840545999999961],[-111.900284,75.843596999999988],[-111.91722099999993,75.846939000000134],[-111.92250100000001,75.852767999999969],[-111.91972399999997,75.85775799999999],[-111.90139799999997,75.863876000000118],[-111.85665899999992,75.867751999999996],[-111.79972799999996,75.871093999999971],[-111.61305199999993,75.881927000000132],[-111.59528399999999,75.882751000000098],[-111.58306899999991,75.881927000000132],[-111.5786129999999,75.879974000000004],[-111.58194699999996,75.876083000000108],[-111.59306300000003,75.87303200000008],[-111.62917299999992,75.856934000000024],[-111.64806399999998,75.851928999999984],[-111.75695799999994,75.841659999999933],[-111.79998799999998,75.839157]],[[-122.34084300000001,75.862761999999975],[-122.36277799999999,75.858032000000094],[-122.39862099999993,75.859421000000111],[-122.66471899999993,75.89387499999998],[-122.69167299999998,75.900269000000037],[-122.69360399999999,75.902206000000035],[-122.69554099999993,75.908035000000041],[-122.68277,75.911652000000004],[-122.633331,75.919708000000071],[-122.58222999999998,75.921921000000054],[-122.53751399999993,75.922484999999995],[-122.37917299999992,75.915817000000004],[-122.35305800000003,75.914429000000098],[-122.337784,75.911377000000016],[-122.32833900000003,75.905822999999998],[-122.32417299999997,75.899719000000005],[-122.33473200000003,75.869141000000013],[-122.34084300000001,75.862761999999975]],[[-121.09306299999997,75.726089000000059],[-121.1100009999999,75.724700999999982],[-121.14306599999992,75.725815000000125],[-121.27555799999993,75.747481999999991],[-121.28832999999997,75.752777000000037],[-121.28582799999998,75.758881000000088],[-121.27194199999997,75.770537999999988],[-121.26306199999993,75.774154999999951],[-121.11694299999999,75.795821999999987],[-121.04332699999992,75.808868000000132],[-121.02944899999989,75.811371000000122],[-121.01917299999997,75.818054000000075],[-121.01500699999997,75.824707000000046],[-121.00083899999993,75.856644000000017],[-120.99833699999988,75.867751999999996],[-121.00695799999988,75.879700000000071],[-121.01363399999997,75.884720000000073],[-121.04222099999998,75.894149999999968],[-121.04750099999995,75.899993999999992],[-121.04250299999995,75.90554800000001],[-121.03859699999998,75.908325000000104],[-120.997772,75.926376000000062],[-120.98000300000001,75.929427999999973],[-120.87777699999998,75.936096000000134],[-120.86776700000001,75.924698000000149],[-120.86776700000001,75.913315000000125],[-120.86972000000003,75.881087999999977],[-120.87110899999993,75.87553400000013],[-120.88474300000001,75.844986000000006],[-120.89835399999998,75.825821000000019],[-120.92111199999999,75.803314000000114],[-120.93804899999998,75.790543000000014],[-120.99388099999993,75.757767000000115],[-121.01862299999993,75.744431000000134],[-121.03278399999994,75.737762000000089],[-121.05248999999992,75.732758000000103],[-121.09306299999997,75.726089000000059]],[[-95.792769999999962,75.899719000000005],[-95.809432999999956,75.894714000000135],[-95.818893000000003,75.907211000000075],[-95.825561999999991,75.913315000000125],[-95.847777999999892,75.929427999999973],[-95.862503000000004,75.936096000000134],[-95.882492000000013,75.941086000000041],[-95.896956999999986,75.947753999999975],[-95.899993999999992,75.953873000000044],[-95.890839000000028,75.959427000000005],[-95.860001000000011,75.966660000000047],[-95.796660999999972,75.973312000000078],[-95.770554000000004,75.974991000000102],[-95.746947999999918,75.97387700000013],[-95.73582499999992,75.968323000000112],[-95.736938000000009,75.962494000000106],[-95.751952999999958,75.927475000000072],[-95.761947999999961,75.916092000000049],[-95.779723999999931,75.90498400000007],[-95.792769999999962,75.899719000000005]],[[-94.405563000000029,75.75082400000008],[-94.582778999999903,75.74581900000004],[-94.629165999999998,75.746094000000085],[-94.676102000000014,75.747756999999979],[-94.72084000000001,75.753876000000048],[-94.739440999999999,75.75749200000007],[-94.777495999999928,75.768600000000049],[-94.795272999999952,75.775818000000072],[-94.809157999999968,75.782486000000063],[-94.822234999999978,75.794144000000074],[-94.898894999999925,75.912765999999976],[-94.902785999999992,75.919434000000138],[-94.905272999999966,75.925537000000077],[-94.906112999999948,75.93081699999999],[-94.904449,75.9369200000001],[-94.89527899999996,75.942200000000014],[-94.879989999999964,75.945526000000029],[-94.865554999999972,75.947478999999987],[-94.813613999999973,75.950546000000088],[-94.737777999999992,75.952208999999982],[-94.699722000000008,75.955551000000128],[-94.53832999999986,75.986099000000081],[-94.481948999999929,75.974426000000051],[-94.466948999999886,75.968597000000045],[-94.453338999999914,75.961929000000112],[-94.449721999999952,75.955261000000121],[-94.443603999999993,75.938309000000118],[-94.420272999999952,75.868590999999981],[-94.410277999999948,75.86192299999999],[-94.370833999999945,75.842209000000082],[-94.322234999999978,75.814986999999974],[-94.305557000000022,75.80304000000001],[-94.287780999999939,75.783875000000023],[-94.288054999999986,75.777481000000023],[-94.291381999999999,75.772217000000012],[-94.296950999999979,75.766388000000006],[-94.310271999999941,75.761383000000137],[-94.326400999999976,75.757217000000082],[-94.353881999999942,75.753876000000048],[-94.405563000000029,75.75082400000008]],[[-103.137787,75.74275200000011],[-103.20667300000002,75.74275200000011],[-103.3011019999999,75.744705000000067],[-103.32389799999999,75.747208000000057],[-103.36888099999999,75.753876000000048],[-103.38082899999995,75.759430000000009],[-103.382767,75.765549000000021],[-103.31139399999995,75.805252000000053],[-103.07749899999999,75.890823000000069],[-103.05943300000001,75.896378000000141],[-103.03751399999993,75.901657000000114],[-103.01194799999996,75.906097000000102],[-102.98693800000001,75.909424000000058],[-102.69611399999997,75.946640000000002],[-102.59889199999986,75.953598],[-102.52278099999995,75.958038000000045],[-102.43360899999999,75.964157000000057],[-102.291382,75.977203000000145],[-102.21749899999998,75.985535000000141],[-102.19138299999997,75.989699999999971],[-102.16471899999993,75.99054000000001],[-102.07861300000002,75.97137500000008],[-101.98916599999995,75.950821000000076],[-101.98332199999987,75.945816000000036],[-101.98860200000001,75.934418000000051],[-102.020554,75.925537000000077],[-102.09472700000003,75.911652000000004],[-102.14639299999993,75.903320000000008],[-102.19638099999997,75.899719000000005],[-102.29638699999998,75.894989000000123],[-102.31916799999999,75.893051000000014],[-102.34665699999999,75.889434999999935],[-102.39417299999997,75.880814000000044],[-102.43055699999991,75.869979999999998],[-102.44082600000002,75.86442599999998],[-102.44943199999994,75.85832199999993],[-102.45584099999996,75.852478000000133],[-102.46000699999996,75.847214000000122],[-102.47165699999988,75.818329000000062],[-102.48277300000001,75.806366000000025],[-102.49694799999992,75.79553199999998],[-102.50917099999998,75.789429000000041],[-102.54527300000001,75.779709000000139],[-102.59028599999994,75.770537999999988],[-102.61165599999998,75.767211999999972],[-102.636124,75.764708999999982],[-102.86638599999998,75.753601000000003],[-103.015289,75.747208000000057],[-103.137787,75.74275200000011]],[[-122.81916799999999,76.06053200000008],[-122.78056300000003,76.057205000000124],[-122.68776700000001,76.059982000000048],[-122.66194200000001,76.05693100000002],[-122.64277599999997,76.052475000000129],[-122.63082900000001,76.046646000000123],[-122.72501399999987,76.023605000000089],[-122.88194299999998,76.011108000000092],[-122.89250199999998,76.013611000000026],[-122.89611799999994,76.026931999999988],[-122.89222699999999,76.031096999999988],[-122.85082999999997,76.057205000000124],[-122.81916799999999,76.06053200000008]],[[-102.38999899999993,76.083603000000096],[-102.37554899999998,76.079163000000108],[-102.37138399999998,76.079163000000108],[-102.36805699999996,76.077209000000096],[-102.3563769999999,76.075820999999962],[-102.35333300000002,76.073883000000023],[-102.33889799999997,76.069443000000035],[-102.33249699999999,76.065536000000066],[-102.32167099999998,76.053589000000102],[-102.31639100000001,76.036925999999994],[-102.31889299999989,76.031096999999988],[-102.319458,76.024704000000042],[-102.32972699999993,76.015823000000125],[-102.34388699999994,76.010269000000108],[-102.36582900000002,76.005829000000119],[-102.41665599999999,76.000275000000101],[-102.51722699999993,75.991088999999988],[-102.56777999999991,75.985535000000141],[-102.695267,75.973312000000078],[-102.71472199999988,75.97026100000005],[-102.73972299999997,75.968048000000124],[-102.79055800000003,75.961380000000133],[-102.81139399999995,75.959990999999945],[-102.93611099999998,75.94802900000002],[-103.01027699999997,75.943038999999942],[-103.08528099999995,75.935806000000127],[-103.15695199999993,75.925812000000121],[-103.21888699999994,75.920258000000103],[-103.26500699999997,75.914429000000098],[-103.28943600000002,75.913040000000137],[-103.33944700000001,75.908035000000041],[-103.37998999999996,75.906097000000102],[-103.39639299999993,75.904434000000037],[-103.43305999999995,75.903320000000008],[-103.45333899999997,75.901657000000114],[-103.52443699999998,75.89888000000002],[-103.59277299999997,75.897217000000069],[-103.61332700000003,75.895538000000101],[-103.63474300000001,75.891098000000056],[-103.65556300000003,75.888596000000007],[-103.69972199999989,75.887496999999996],[-103.72332799999987,75.889160000000118],[-103.77111799999994,75.896378000000141],[-103.81166100000002,75.899428999999941],[-103.88806199999993,75.898041000000035],[-103.90194700000001,75.898604999999975],[-103.91471899999993,75.90248100000008],[-103.91500899999994,75.907760999999937],[-103.91722099999993,75.913605000000132],[-103.92555199999998,75.919144000000131],[-103.93611099999998,75.924149],[-103.96472199999999,75.934418000000051],[-103.97165699999994,75.938309000000118],[-103.94220699999994,75.942749000000106],[-103.90194700000001,75.943862999999908],[-103.82556199999999,75.950821000000076],[-103.80248999999998,75.953873000000044],[-103.78527799999995,75.957489000000066],[-103.77139299999988,75.963043000000084],[-103.75834700000001,75.966660000000047],[-103.7083439999999,75.972488000000112],[-103.68776699999989,75.97387700000013],[-103.598343,75.977203000000145],[-103.57444799999996,75.976654000000053],[-103.55471799999998,75.975266000000147],[-103.52250699999991,75.97554000000008],[-103.49694799999997,75.979980000000069],[-103.474716,75.985259999999982],[-103.45694700000001,75.990814000000114],[-103.41306299999997,76.001663000000008],[-103.39138800000001,76.006104000000107],[-103.36582899999996,76.009429999999952],[-103.34028599999988,76.013884999999959],[-103.31500199999999,76.017212000000086],[-103.29028299999999,76.018599999999992],[-103.26363399999997,76.019440000000088],[-103.22138999999993,76.019150000000025],[-103.196663,76.020537999999988],[-103.17887899999999,76.024994000000049],[-103.15666199999993,76.036652000000061],[-103.13667299999992,76.041656000000046],[-103.120003,76.043320000000051],[-103.05110200000001,76.043593999999985],[-103.00639299999995,76.044707999999957],[-102.98110999999989,76.04693600000013],[-102.95556599999998,76.050261999999975],[-102.91555800000003,76.060257000000092],[-102.88971700000002,76.064423000000147],[-102.86833199999995,76.066940000000045],[-102.86028299999992,76.066666000000112],[-102.85582699999992,76.067764000000011],[-102.75666799999993,76.073044000000095],[-102.708618,76.077484000000084],[-102.68138099999999,76.079163000000108],[-102.65805099999994,76.082214000000135],[-102.60777299999995,76.085814999999968],[-102.53138699999994,76.089431999999931],[-102.46806300000003,76.090271000000087],[-102.42804699999999,76.089431999999931],[-102.40416699999997,76.087769000000037],[-102.39639299999999,76.086655000000064],[-102.38999899999993,76.083603000000096]],[[-118.31639100000001,75.57249500000006],[-118.35472099999993,75.558868000000018],[-118.58306900000002,75.499419999999986],[-118.60472099999998,75.496368000000075],[-118.7036129999999,75.503052000000082],[-118.72250400000001,75.504440000000045],[-118.82749899999999,75.532761000000107],[-118.87361099999998,75.547484999999995],[-118.87777699999998,75.553314],[-118.92804699999999,75.562759000000085],[-118.95305599999995,75.564697000000024],[-119.08194700000001,75.567764000000125],[-119.13082900000001,75.566939999999988],[-119.19695299999995,75.562484999999924],[-119.22250400000001,75.565262000000018],[-119.34028599999999,75.579436999999928],[-119.36749299999991,75.58415199999996],[-119.38333099999994,75.589157000000057],[-119.39527899999996,75.594711000000018],[-119.40583800000002,75.600540000000024],[-119.408051,75.605820000000108],[-119.40471600000001,75.611923000000047],[-119.39750700000002,75.618317000000104],[-119.37554899999998,75.631088000000034],[-119.27528399999994,75.674698000000035],[-119.18831599999987,75.702484000000084],[-119.11389200000002,75.720535000000041],[-118.95472699999999,75.778594999999996],[-118.78888699999999,75.843048000000067],[-118.762787,75.856934000000024],[-118.75834699999996,75.862198000000035],[-118.75334199999992,75.866379000000109],[-118.71694899999994,75.882751000000098],[-118.61916399999996,75.915543000000071],[-118.58139,75.924987999999985],[-118.56388899999996,75.928589000000045],[-118.40444899999994,75.960815000000082],[-118.36776699999996,75.966385000000002],[-118.34028599999999,75.967484000000013],[-118.19415300000003,75.967484000000013],[-118.16832699999998,75.968323000000112],[-118.15222199999994,75.97137500000008],[-118.13751200000002,75.979705999999965],[-118.13137799999998,75.985535000000141],[-118.13137799999998,75.991363999999976],[-118.12748699999992,75.997482000000105],[-118.10500299999995,76.023880000000077],[-118.08860800000002,76.029434000000094],[-118.07140400000003,76.034149000000127],[-118.03751399999987,76.038315000000011],[-117.99804699999993,76.039978000000133],[-117.95722999999992,76.043045000000063],[-117.93360899999993,76.047485000000052],[-117.89972699999998,76.057479999999998],[-117.88971699999996,76.060806000000014],[-117.88500999999997,76.066086000000098],[-117.89138799999995,76.072220000000129],[-117.89277600000003,76.077484000000084],[-117.88612399999988,76.079712000000029],[-117.77887699999991,76.108597000000088],[-117.72609699999998,76.115540000000067],[-117.70694700000001,76.117203000000018],[-117.662216,76.117751999999939],[-117.64111299999996,76.116652999999985],[-117.62304699999999,76.114426000000094],[-117.51944700000001,76.099716000000001],[-117.49166899999989,76.094986000000119],[-117.47138999999993,76.088882000000069],[-117.46389799999997,76.083054000000004],[-117.48916600000001,76.04693600000013],[-117.57305899999994,75.981934000000081],[-117.681107,75.921097000000088],[-117.70445299999989,75.916930999999977],[-117.74694799999997,75.910812000000135],[-117.77555799999993,75.89888000000002],[-117.83833299999998,75.859985000000052],[-117.93720999999999,75.785262999999986],[-117.94499199999996,75.77915999999999],[-117.95221700000002,75.771927000000005],[-117.95638999999994,75.765822999999955],[-117.95638999999994,75.75999500000006],[-117.97138999999993,75.728867000000037],[-118.01583899999997,75.699416999999983],[-118.06220999999999,75.685806000000014],[-118.096947,75.678589000000102],[-118.11389200000002,75.673874000000069],[-118.14277599999997,75.663879000000122],[-118.22193900000002,75.633881000000031],[-118.26363400000002,75.616928000000087],[-118.2675089999999,75.61285399999997],[-118.266953,75.609985000000108],[-118.26834099999991,75.59165999999999],[-118.31639100000001,75.57249500000006]],[[-78.926391999999964,75.875809000000004],[-78.914169000000015,75.87303200000008],[-78.904174999999896,75.867203000000075],[-78.881377999999984,75.853317000000061],[-78.876663000000008,75.849152000000061],[-78.879439999999931,75.844147000000021],[-78.897781000000009,75.839706000000092],[-78.921111999999994,75.837494000000049],[-79.048889000000031,75.836928999999998],[-79.067779999999971,75.840271000000143],[-79.072783999999956,75.844437000000028],[-79.068618999999956,75.848328000000095],[-79.05749499999996,75.853317000000061],[-79.042495999999915,75.858032000000094],[-79.021666999999923,75.867477000000008],[-79.031676999999945,75.870819000000097],[-79.05471799999998,75.872757000000036],[-79.268889999999999,75.875259000000142],[-79.319457999999941,75.87359600000002],[-79.343063000000029,75.871093999999971],[-79.361389000000031,75.86692800000003],[-79.408339999999953,75.852767999999969],[-79.420273000000009,75.848038000000088],[-79.428054999999972,75.842484000000127],[-79.458617999999944,75.810806000000071],[-79.598052999999936,75.861374000000069],[-79.620270000000005,75.862761999999975],[-79.705840999999964,75.860535000000084],[-79.726944000000003,75.861099000000024],[-79.739990000000034,75.86442599999998],[-79.752227999999889,75.878586000000098],[-79.580001999999979,75.945251000000042],[-79.567504999999983,75.949142000000109],[-79.396956999999986,76.001938000000052],[-79.375,76.005554000000075],[-79.272780999999952,76.028045999999961],[-79.137786999999946,76.077209000000096],[-79.129714999999976,76.082763999999997],[-79.121932999999956,76.088593000000003],[-79.113051999999925,76.100540000000137],[-79.091384999999889,76.114426000000094],[-79.081954999999994,76.116379000000052],[-78.923888999999974,76.121094000000085],[-78.904174999999896,76.119705000000067],[-78.893065999999976,76.115540000000067],[-78.821670999999924,76.098328000000038],[-78.805832000000009,76.09304800000001],[-78.798049999999876,76.08638000000002],[-78.799164000000019,76.079987000000074],[-78.825835999999924,76.05802900000009],[-78.833892999999989,76.052475000000129],[-78.845551,76.047485000000052],[-78.861389000000031,76.043320000000051],[-78.921660999999915,76.031937000000028],[-78.998610999999983,76.014998999999989],[-79.069732999999928,75.998322000000144],[-79.085007000000019,75.993866000000082],[-79.144729999999981,75.975266000000147],[-79.156112999999948,75.969986000000063],[-79.166655999999932,75.964157000000057],[-79.171936000000017,75.958878000000084],[-79.176392000000021,75.952774000000034],[-79.176940999999943,75.946365000000014],[-79.174437999999952,75.93942300000009],[-79.168335000000013,75.931931000000134],[-79.140288999999939,75.918868999999972],[-79.111938000000009,75.910263000000043],[-79.029449,75.888321000000133],[-79.010284000000013,75.884720000000073],[-78.989440999999943,75.881927000000132],[-78.943603999999993,75.878036000000066],[-78.926391999999964,75.875809000000004]],[[-94.843613000000005,76.122208000000057],[-94.831116000000009,76.09664900000007],[-94.870270000000005,76.068877999999984],[-94.889175000000023,76.05802900000009],[-94.905562999999916,76.05386400000009],[-94.92860399999995,76.051086000000112],[-95.006667999999991,76.047485000000052],[-95.027221999999938,76.047760000000096],[-95.048888999999974,76.050812000000008],[-95.062499999999943,76.056090999999981],[-95.086394999999925,76.068054000000018],[-95.101943999999946,76.07777400000009],[-95.139724999999999,76.107757999999933],[-95.14416499999993,76.111922999999933],[-95.147232000000031,76.116927999999973],[-95.146392999999989,76.118042000000003],[-95.12110899999999,76.118591000000094],[-95.09445199999999,76.113602000000128],[-95.076949999999954,76.108322000000101],[-95.060546999999985,76.105819999999994],[-95.030562999999972,76.104706000000022],[-95.013061999999934,76.105819999999994],[-94.992767000000015,76.109421000000054],[-94.854445999999996,76.136658000000011],[-94.843613000000005,76.122208000000057]],[[-81.327788999999996,76.147217000000012],[-81.338607999999965,76.146378000000084],[-81.452498999999875,76.155822999999941],[-81.462508999999955,76.15887500000008],[-81.456954999999994,76.163605000000075],[-81.415833000000021,76.176926000000037],[-81.378051999999968,76.184417999999994],[-81.348891999999978,76.187485000000095],[-81.294448999999929,76.187759000000028],[-81.267226999999991,76.187759000000028],[-81.221663999999976,76.185531999999967],[-81.203338999999971,76.181091000000038],[-81.201401000000033,76.177765000000022],[-81.208617999999944,76.172211000000004],[-81.306106999999884,76.151093000000117],[-81.327788999999996,76.147217000000012]],[[-102.53083800000002,76.223312000000021],[-102.52722199999994,76.216934000000094],[-102.53138699999994,76.211655000000121],[-102.58056599999986,76.152481000000023],[-102.636124,76.125534000000073],[-102.65055799999999,76.119980000000112],[-102.67138699999998,76.114151000000106],[-102.73665599999998,76.098601999999971],[-102.78056300000003,76.089706000000035],[-102.80638099999999,76.085541000000035],[-102.85777300000001,76.078873000000101],[-102.93360899999999,76.070831000000112],[-103.34221599999995,76.036652000000061],[-103.36472300000003,76.035812000000021],[-103.67999299999997,76.034149000000127],[-103.82000700000003,76.031372000000033],[-103.86638600000003,76.030823000000055],[-103.91443599999997,76.03166200000004],[-103.962219,76.034714000000122],[-103.97277799999995,76.039703000000088],[-103.92388899999997,76.040817000000061],[-103.87832599999996,76.043869000000029],[-103.86945299999996,76.047485000000052],[-103.88861099999997,76.049712999999997],[-103.98332199999999,76.057205000000124],[-104.06054699999999,76.062195000000031],[-104.08677699999998,76.06053200000008],[-104.08743999999996,76.05819699999995],[-104.13082899999989,76.056366000000025],[-104.39111300000002,76.078323000000069],[-104.40833999999995,76.082214000000135],[-104.47833300000002,76.135817999999972],[-104.48277299999995,76.142211999999972],[-104.46389799999992,76.15887500000008],[-104.45417800000001,76.164429000000041],[-104.31582600000002,76.208037999999988],[-104.29804999999993,76.212494000000049],[-104.27250700000002,76.216095000000109],[-104.24722300000002,76.218596999999988],[-104.17223399999995,76.224152000000117],[-104.14806399999986,76.2227630000001],[-104.07472200000001,76.222213999999951],[-103.9569469999999,76.233047000000113],[-103.91805999999997,76.239975000000129],[-103.85138699999999,76.250000000000057],[-103.59445199999999,76.26527400000009],[-103.33693699999998,76.27998400000007],[-103.13137799999993,76.303040000000067],[-103.11000100000001,76.304703000000018],[-103.05999799999995,76.306366000000139],[-102.86472299999997,76.311095999999964],[-102.81696299999999,76.312194999999974],[-102.765556,76.311645999999996],[-102.72693599999997,76.30581699999999],[-102.66915899999992,76.295822000000101],[-102.66555799999998,76.294708000000128],[-102.65222199999994,76.287766000000033],[-102.64277599999997,76.269989000000123],[-102.63362100000001,76.257491999999957],[-102.62554899999992,76.251937999999996],[-102.6036069999999,76.24552900000009],[-102.55832700000002,76.235809000000017],[-102.54055799999998,76.229431000000091],[-102.53083800000002,76.223312000000021]],[[-89.398894999999982,76.43553200000008],[-89.425003000000004,76.43553200000008],[-89.599166999999966,76.440262000000132],[-89.613616999999977,76.440811000000053],[-89.625548999999978,76.444976999999994],[-89.615004999999996,76.449141999999995],[-89.559158000000025,76.470535000000098],[-89.533065999999963,76.47665400000011],[-89.49499499999996,76.472488000000055],[-89.488327000000027,76.46804800000001],[-89.465835999999911,76.462203999999986],[-89.446380999999917,76.457763999999997],[-89.40834000000001,76.450546000000145],[-89.386123999999938,76.447754000000089],[-89.378051999999968,76.444138000000009],[-89.380553999999961,76.439147999999989],[-89.398894999999982,76.43553200000008]],[[-83.962783999999999,76.426375999999948],[-83.986114999999984,76.423309000000017],[-84.009170999999924,76.425812000000008],[-84.109436000000017,76.444427000000132],[-84.12388599999997,76.451096000000007],[-84.139449999999954,76.507217000000082],[-84.128052000000025,76.50999500000006],[-84.097503999999901,76.506653000000142],[-84.013625999999931,76.498032000000023],[-83.992492999999854,76.494980000000112],[-83.976944000000003,76.491089000000045],[-83.918334999999956,76.469437000000028],[-83.908050999999944,76.464996000000099],[-83.962783999999999,76.426375999999948]],[[-104.05387899999999,76.563034000000073],[-104.03388999999999,76.559708000000001],[-103.87888299999997,76.573608000000092],[-103.86860699999994,76.579162999999994],[-103.86665299999993,76.584991000000116],[-103.87138400000003,76.596649000000127],[-103.86721799999998,76.603043000000014],[-103.85944399999994,76.607208000000014],[-103.82640100000003,76.618317000000047],[-103.804169,76.621918000000107],[-103.78751399999993,76.620529000000147],[-103.58194699999996,76.547759999999982],[-103.58805799999993,76.541930999999977],[-103.59249899999998,76.535812000000135],[-103.59166700000003,76.53137200000009],[-103.587784,76.524993999999936],[-103.57028199999996,76.521103000000096],[-103.404449,76.494705000000124],[-103.38445299999995,76.492203000000018],[-103.32112100000001,76.494980000000112],[-103.24500299999994,76.485535000000027],[-103.05777,76.457763999999997],[-103.03666699999991,76.453873000000101],[-103.01418299999995,76.447754000000089],[-103.00805699999989,76.441650000000038],[-103.00446299999999,76.435257000000092],[-103.00446299999999,76.429977000000008],[-103.011124,76.423309000000017],[-103.01917300000002,76.418045000000063],[-103.02971599999989,76.412491000000045],[-103.0425029999999,76.406372000000033],[-103.098343,76.384720000000016],[-103.17250099999995,76.362762000000032],[-103.20472699999993,76.354705999999965],[-103.281387,76.336929000000112],[-103.37805200000003,76.325546000000088],[-103.55444299999999,76.310257000000036],[-103.70056199999993,76.304152999999985],[-103.75195299999996,76.303589000000045],[-103.848343,76.310257000000036],[-104.06194299999993,76.317490000000021],[-104.11165599999998,76.316376000000048],[-104.33500699999996,76.318603999999993],[-104.37888299999992,76.323317999999972],[-104.396118,76.327774000000034],[-104.40471599999995,76.333328000000051],[-104.404449,76.334427000000005],[-104.38971700000002,76.342758000000117],[-104.37581599999993,76.348328000000038],[-104.362213,76.352202999999975],[-104.34333799999996,76.354156000000103],[-104.32972699999999,76.358032000000037],[-104.328056,76.363876000000005],[-104.39111300000002,76.461105000000032],[-104.43388399999998,76.484984999999995],[-104.44888300000002,76.491089000000045],[-104.47332799999998,76.49331699999999],[-104.48249800000002,76.490540000000124],[-104.48361199999999,76.485808999999961],[-104.49749800000001,76.481093999999928],[-104.52278100000001,76.480545000000006],[-104.56388900000002,76.482208000000128],[-104.65888999999987,76.545822000000044],[-104.66583300000002,76.551651000000049],[-104.63722200000001,76.603317000000118],[-104.56304899999998,76.612761999999975],[-104.53666699999997,76.617203000000075],[-104.445267,76.635818000000029],[-104.40666199999987,76.645538000000101],[-104.37416100000002,76.655823000000055],[-104.35193600000002,76.660263000000043],[-104.31500199999994,76.663879000000122],[-104.26750199999998,76.667206000000022],[-104.21665999999999,76.668320000000051],[-104.13417099999998,76.669434000000024],[-104.05332899999996,76.664703000000088],[-104.031113,76.661652000000061],[-103.96333299999998,76.649994000000049],[-103.93971299999998,76.644714000000135],[-103.926941,76.638046000000145],[-103.9225009999999,76.633605999999986],[-103.92610200000001,76.621918000000107],[-103.93831599999999,76.610535000000141],[-103.95861799999994,76.599152000000117],[-104.02778599999988,76.579162999999994],[-104.051941,76.568878000000041],[-104.05387899999999,76.563034000000073]],[[-98.418059999999912,76.668320000000051],[-98.403885000000002,76.661377000000016],[-98.413939999999911,76.647491000000059],[-98.423606999999947,76.641486999999927],[-98.425780999999972,76.63848900000005],[-98.425277999999992,76.63564300000013],[-98.429169000000002,76.626922999999977],[-98.419723999999917,76.622482000000048],[-98.376099000000011,76.611923000000047],[-98.357773000000009,76.608321999999987],[-98.281386999999995,76.602203000000145],[-98.180557000000022,76.586929000000055],[-98.189712999999983,76.580276000000083],[-98.242766999999958,76.571655000000135],[-98.258621000000005,76.573318000000086],[-98.278335999999967,76.581100000000049],[-98.298339999999996,76.585266000000104],[-98.319457999999997,76.58859300000006],[-98.362502999999947,76.593323000000112],[-98.395554000000004,76.594437000000084],[-98.40194699999995,76.591934000000094],[-98.398894999999925,76.581375000000037],[-98.378051999999968,76.572220000000016],[-98.357773000000009,76.565536000000122],[-98.322784000000013,76.561096000000134],[-98.080565999999976,76.531097000000102],[-97.944442999999978,76.518051000000128],[-97.897780999999895,76.515823000000012],[-97.807770000000005,76.514435000000105],[-97.764450000000011,76.510544000000039],[-97.750290000000007,76.506942999999978],[-97.693328999999949,76.487762000000089],[-97.684722999999963,76.47164900000007],[-97.662215999999944,76.425261999999975],[-97.662505999999894,76.419434000000081],[-97.670273000000009,76.414992999999981],[-97.706954999999937,76.405548000000067],[-97.718886999999995,76.40109300000006],[-97.727218999999991,76.395537999999988],[-97.731673999999998,76.38998400000014],[-97.761397999999986,76.334991000000002],[-97.728881999999999,76.282760999999994],[-97.726104999999905,76.278320000000065],[-97.699432000000002,76.266663000000108],[-97.64805599999994,76.250275000000045],[-97.610549999999989,76.242203000000075],[-97.591674999999952,76.23692299999999],[-97.575561999999991,76.231369000000029],[-97.523055999999997,76.205826000000116],[-97.516952999999944,76.199997000000053],[-97.509170999999981,76.188873000000001],[-97.494994999999903,76.148880000000133],[-97.494445999999868,76.138885000000073],[-97.503066999999874,76.127472000000068],[-97.517776000000026,76.119141000000127],[-97.542496000000028,76.108322000000101],[-97.563323999999966,76.097487999999998],[-97.588333000000034,76.080826000000002],[-97.656386999999938,75.972762999999986],[-97.647507000000019,75.944427000000076],[-97.64555399999989,75.938873000000058],[-97.642226999999934,75.9327550000001],[-97.612503000000004,75.901932000000102],[-97.597778000000005,75.889434999999935],[-97.597778000000005,75.846939000000134],[-97.654174999999896,75.798324999999977],[-97.664169000000015,75.793320000000108],[-97.693603999999993,75.785812000000078],[-97.707503999999972,75.783324999999991],[-97.837219000000005,75.765549000000021],[-97.913329999999974,75.751663000000065],[-97.930557000000022,75.746933000000013],[-97.938598999999954,75.741364000000033],[-97.870543999999938,75.73054499999995],[-97.827224999999885,75.726929000000098],[-97.690276999999867,75.720535000000041],[-97.425551999999982,75.692200000000071],[-97.404448999999943,75.68803400000013],[-97.386672999999973,75.682754999999986],[-97.375823999999852,75.676376000000118],[-97.369995000000017,75.670822000000101],[-97.368606999999997,75.659424000000115],[-97.369155999999975,75.653320000000065],[-97.384734999999978,75.643326000000059],[-97.394454999999937,75.638321000000019],[-97.410003999999958,75.620818999999983],[-97.41194200000001,75.61554000000001],[-97.423889000000031,75.528595000000053],[-97.422501000000011,75.506377999999984],[-97.417495999999971,75.494705000000124],[-97.401397999999858,75.458602999999982],[-97.398055999999997,75.45248400000014],[-97.378326000000015,75.43414300000012],[-97.349730999999963,75.419983000000002],[-97.330565999999919,75.414153999999996],[-97.293883999999991,75.405548000000067],[-97.285003999999958,75.402205999999978],[-97.280837999999903,75.396941999999967],[-97.293334999999956,75.390823000000125],[-97.305557000000022,75.390274000000034],[-97.320557000000008,75.391098],[-97.341675000000009,75.393875000000094],[-97.441665999999998,75.414992999999981],[-97.469161999999983,75.422760000000096],[-97.484160999999915,75.429428000000087],[-97.49610899999999,75.442200000000071],[-97.49888599999997,75.469986000000006],[-97.496658000000025,75.478592000000106],[-97.573623999999882,75.513046000000145],[-97.711944999999901,75.566666000000055],[-97.728881999999999,75.570267000000058],[-97.744155999999975,75.571106000000043],[-97.762511999999958,75.568054000000132],[-97.818061999999884,75.54898100000014],[-97.827552999999909,75.545815000000005],[-97.827056999999911,75.539817999999968],[-97.821724000000017,75.537323000000129],[-97.811561999999924,75.535156000000029],[-97.802054999999996,75.53532400000006],[-97.801940999999999,75.524429000000112],[-97.789992999999924,75.51887499999998],[-97.774169999999913,75.508331000000112],[-97.758895999999993,75.496643000000063],[-97.748046999999872,75.484421000000111],[-97.744720000000029,75.478317000000061],[-97.743332000000009,75.471924000000115],[-97.745269999999948,75.466660000000104],[-97.756392999999946,75.462204000000042],[-97.783324999999877,75.45748900000001],[-97.80749499999996,75.456650000000025],[-97.835830999999985,75.460815000000025],[-97.840835999999854,75.464996000000099],[-97.845001000000025,75.469986000000006],[-97.855674999999906,75.484482000000014],[-97.85600299999993,75.487488000000042],[-97.858001999999885,75.494644000000051],[-97.859169000000009,75.497985999999969],[-97.86983499999991,75.501160000000084],[-97.882338999999945,75.503494000000103],[-97.90834000000001,75.513321000000133],[-97.932495000000017,75.512496999999996],[-97.951950000000011,75.507492000000127],[-98.041672000000005,75.483322000000101],[-98.043335000000013,75.481368999999972],[-97.985549999999989,75.457214000000135],[-97.957503999999915,75.44720499999994],[-97.933318999999983,75.448029000000133],[-97.911117999999931,75.446090999999967],[-97.782776000000013,75.428314000000114],[-97.774718999999948,75.423035000000141],[-97.793610000000001,75.413040000000024],[-97.808608999999933,75.408875000000023],[-97.934432999999899,75.407486000000063],[-97.984726000000023,75.408875000000023],[-98.004729999999881,75.413605000000075],[-98.028060999999923,75.413879000000009],[-98.019890000000032,75.407042999999987],[-98.028724999999895,75.404541000000108],[-98.032386999999915,75.400879000000145],[-98.029556000000014,75.398375999999985],[-98.021225000000015,75.39521000000002],[-97.96055599999994,75.384720000000016],[-97.920272999999952,75.38081399999993],[-97.901397999999915,75.379974000000061],[-97.884445000000028,75.376373000000058],[-97.872771999999998,75.37081900000004],[-97.876662999999894,75.364990000000034],[-97.887786999999946,75.360535000000027],[-97.910277999999948,75.356644000000131],[-97.926392000000021,75.35554500000012],[-97.990554999999972,75.355819999999994],[-98.042769999999962,75.35914600000001],[-98.070107000000007,75.364700000000028],[-98.070769999999982,75.367088000000081],[-98.074112000000014,75.369033999999942],[-98.082779000000016,75.370033000000035],[-98.107772999999895,75.371917999999994],[-98.124709999999993,75.367202999999961],[-98.136397999999986,75.361923000000104],[-98.141953000000001,75.356644000000131],[-98.153610000000015,75.345535000000041],[-98.165282999999988,75.334152000000017],[-98.164718999999934,75.329163000000051],[-98.129165999999998,75.30192599999998],[-98.120543999999995,75.297760000000039],[-98.101395000000025,75.291931000000034],[-98.064712999999927,75.285812000000021],[-97.913054999999986,75.264159999999947],[-97.87388599999997,75.270263999999997],[-97.755843999999911,75.229431000000091],[-97.74360699999994,75.224991000000102],[-97.735001000000011,75.207214000000022],[-97.736937999999952,75.204437000000098],[-97.759734999999978,75.188582999999994],[-97.676940999999999,75.164154000000053],[-97.62860099999989,75.151093000000117],[-97.602492999999924,75.147217000000069],[-97.597503999999958,75.149155000000007],[-97.605834999999956,75.158325000000048],[-97.614440999999886,75.162766000000147],[-97.613051999999982,75.164703000000031],[-97.597778000000005,75.164703000000031],[-97.578613000000018,75.15887500000008],[-97.567779999999971,75.152481000000023],[-97.567504999999926,75.147491000000002],[-97.582503999999915,75.137496999999996],[-97.619445999999925,75.118590999999924],[-97.639998999999989,75.116379000000052],[-97.746947999999975,75.111649000000057],[-97.843886999999938,75.110260000000039],[-97.86250299999989,75.111099000000024],[-97.881377999999927,75.11692800000003],[-98.024719000000005,75.162490999999932],[-98.033614999999998,75.17164600000001],[-98.034438999999963,75.181656000000089],[-98.02694699999995,75.187195000000088],[-98.02027899999996,75.196640000000002],[-98.019164999999987,75.201096000000064],[-98.025833000000034,75.210815000000082],[-98.041381999999885,75.216385000000002],[-98.061661000000015,75.22026100000005],[-98.085281000000009,75.2227630000001],[-98.098617999999931,75.2227630000001],[-98.146666999999866,75.180816999999934],[-98.146666999999866,75.163879000000065],[-98.145553999999947,75.159987999999998],[-98.136123999999995,75.154160000000047],[-98.121384000000035,75.147491000000002],[-98.081389999999999,75.130538999999999],[-98.039169000000015,75.116379000000052],[-98.025557999999933,75.113601999999958],[-98.00306699999993,75.112761999999918],[-97.981673999999941,75.110809000000017],[-97.966949,75.104155999999989],[-97.947219999999902,75.079987000000074],[-97.938888999999904,75.069716999999969],[-97.938598999999954,75.064986999999917],[-97.945830999999998,75.026657],[-97.949996999999996,75.021103000000039],[-97.960006999999905,75.017487000000131],[-97.982497999999907,75.015273999999977],[-98.00306699999993,75.015549000000021],[-98.02027899999996,75.018326000000116],[-98.108886999999982,75.022491000000116],[-98.259170999999924,75.022766000000104],[-98.276947000000007,75.022217000000012],[-98.300277999999935,75.021103000000039],[-98.369719999999973,75.014435000000049],[-98.444442999999978,75.004990000000134],[-98.46833799999996,75.003052000000025],[-98.634734999999978,74.992477000000065],[-98.723891999999921,74.989426000000037],[-98.785004000000015,74.994980000000055],[-98.985001000000011,75.000000000000114],[-99.066955999999948,74.996368000000132],[-99.354445999999882,74.984420999999998],[-99.376662999999951,74.98553499999997],[-99.394164999999987,74.988037000000077],[-99.406113000000005,74.993316999999934],[-99.393615999999952,75.027205999999978],[-99.387512000000015,75.03776600000009],[-99.335555999999997,75.070541000000105],[-99.299437999999952,75.092758000000003],[-99.28195199999999,75.102768000000083],[-99.27694699999995,75.108032000000094],[-99.272232000000031,75.115814000000057],[-99.281386999999995,75.122481999999991],[-99.308043999999995,75.122481999999991],[-99.325835999999924,75.11831699999999],[-99.34056099999998,75.113037000000134],[-99.445540999999935,75.058318999999983],[-99.482497999999964,75.03776600000009],[-99.496657999999968,75.026382000000012],[-99.5,75.020537999999988],[-99.496108999999933,75.014708999999982],[-99.480285999999978,75.009155000000135],[-99.445540999999935,75.003875999999991],[-99.432495000000017,75.000275000000101],[-99.42721599999993,74.996368000000132],[-99.426391999999964,74.991364000000033],[-99.538605000000018,74.974152000000004],[-99.562499999999943,74.972214000000065],[-99.602782999999988,74.971100000000035],[-99.619719999999973,74.97137500000008],[-99.701675000000023,74.973602000000142],[-99.990554999999915,74.984420999999998],[-100.05722000000003,74.986923000000104],[-100.14584400000001,74.991088999999988],[-100.21056399999998,74.997208000000001],[-100.25306699999993,75.002777000000037],[-100.34777799999995,75.016937000000098],[-100.36389200000002,75.021378000000027],[-100.38945000000001,75.031097000000045],[-100.39388999999994,75.037201000000039],[-100.396118,75.043594000000041],[-100.39750699999991,75.055542000000059],[-100.39723199999997,75.066666000000112],[-100.39472999999998,75.078323000000069],[-100.38583399999999,75.095535000000098],[-100.38054699999986,75.101928999999984],[-100.37805200000003,75.113311999999951],[-100.39806399999998,75.158600000000092],[-100.41221599999994,75.16804500000012],[-100.43250299999994,75.173598999999967],[-100.45333900000003,75.177200000000028],[-100.47693599999997,75.179428000000144],[-100.51112399999994,75.184143000000006],[-100.52834300000001,75.187759000000028],[-100.54444899999993,75.193039000000113],[-100.54695099999998,75.199417000000096],[-100.53859699999998,75.204711999999972],[-100.46333299999998,75.223602000000085],[-100.43859900000001,75.226653999999996],[-100.41722099999998,75.227478000000133],[-100.32528699999995,75.230545000000063],[-100.30222299999997,75.230820000000108],[-100.27999899999998,75.22886699999998],[-100.24833699999999,75.223877000000073],[-100.22556299999997,75.223037999999974],[-100.031387,75.226929000000041],[-100.00778200000002,75.228043000000014],[-99.990554999999915,75.231369000000029],[-99.987777999999992,75.236099000000081],[-99.995269999999948,75.239975000000129],[-100.00945300000001,75.242203000000075],[-100.11945300000002,75.248596000000077],[-100.20333900000003,75.253326000000072],[-100.22609699999998,75.254165999999941],[-100.314438,75.250824000000023],[-100.35417200000001,75.251663000000008],[-100.37554899999986,75.255264000000011],[-100.39388999999994,75.260269000000108],[-100.406113,75.266663000000108],[-100.40278599999999,75.272491000000059],[-100.33444199999991,75.274428999999998],[-100.31166100000002,75.277206000000092],[-100.29387700000001,75.281371999999976],[-100.279449,75.286652000000061],[-100.25805700000001,75.297760000000039],[-100.24445299999996,75.308868000000018],[-100.25723299999993,75.313308999999947],[-100.28222699999992,75.310257000000036],[-100.33277900000002,75.302200000000084],[-100.35944399999994,75.299712999999997],[-100.49999999999989,75.292480000000012],[-100.52306399999998,75.293045000000006],[-100.60888699999998,75.305817000000047],[-100.62249799999995,75.309143000000063],[-100.76555599999989,75.34637500000008],[-100.77887699999991,75.35054000000008],[-100.76888999999994,75.355255000000113],[-100.67639199999996,75.376648000000046],[-100.65222199999999,75.378585999999984],[-100.63305700000001,75.378036000000122],[-100.61805700000002,75.376648000000046],[-100.60221899999993,75.373596000000134],[-100.61833199999995,75.368866000000082],[-100.64389,75.364700000000028],[-100.67999299999997,75.361923000000104],[-100.69833399999993,75.356644000000131],[-100.68222000000003,75.350266000000147],[-100.63806199999999,75.345825000000048],[-100.61472299999997,75.346100000000092],[-100.59472699999998,75.347487999999998],[-100.44748699999991,75.369980000000055],[-100.43277,75.375259000000028],[-100.42832899999991,75.380539000000113],[-100.44055200000003,75.386658000000125],[-100.56527699999998,75.422211000000004],[-100.58444199999997,75.426376000000005],[-100.60694899999999,75.42804000000001],[-100.67555199999993,75.426926000000037],[-100.71694899999989,75.429153000000099],[-100.72305299999999,75.432479999999998],[-100.69776899999999,75.436371000000065],[-100.67331699999994,75.438582999999937],[-100.43388399999998,75.445815999999979],[-100.33972199999999,75.447479000000101],[-100.27084400000001,75.448593000000074],[-100.17666600000001,75.449141999999995],[-100.11138899999997,75.451096000000007],[-100.06276700000001,75.454437000000041],[-100.01194800000002,75.461380000000077],[-100.00917099999992,75.466095000000109],[-100.01944700000001,75.468596999999988],[-100.10056299999997,75.470535000000098],[-100.19193999999999,75.467758000000003],[-100.21528599999988,75.467758000000003],[-100.30695300000002,75.47164900000007],[-100.30555699999996,75.473602000000028],[-100.12999000000002,75.525818000000129],[-100.03415699999988,75.529433999999981],[-99.966948999999943,75.533325000000048],[-99.845000999999968,75.540817000000004],[-99.831389999999999,75.544144000000131],[-99.832229999999981,75.545532000000037],[-99.845000999999968,75.547484999999995],[-99.856383999999991,75.548035000000027],[-99.899993999999992,75.547484999999995],[-99.946655000000021,75.544708000000071],[-99.990279999999984,75.544434000000138],[-100.03859699999998,75.549149],[-100.03943600000002,75.554152999999985],[-100.02806099999998,75.557205000000067],[-99.823623999999938,75.58415199999996],[-99.800551999999925,75.586655000000121],[-99.756393000000003,75.588043000000027],[-99.736938000000009,75.587204000000099],[-99.712508999999955,75.589157000000057],[-99.672774999999945,75.606094000000041],[-99.667770000000019,75.611099000000081],[-99.685821999999973,75.613876000000005],[-99.790833000000021,75.616653000000099],[-99.84056099999998,75.612488000000099],[-99.863051999999982,75.614426000000037],[-99.862503000000004,75.618866000000025],[-99.823623999999938,75.651657],[-99.817504999999926,75.655258000000003],[-99.788054999999929,75.658324999999934],[-99.458617999999944,75.672485000000052],[-99.226669000000015,75.675537000000134],[-99.202498999999989,75.675537000000134],[-99.083617999999944,75.675812000000008],[-99.033066000000019,75.677200000000084],[-98.982773000000009,75.681090999999981],[-98.929717999999923,75.686371000000008],[-98.905562999999916,75.689972000000068],[-98.889998999999989,75.695251000000042],[-98.891388000000006,75.699141999999938],[-98.907775999999956,75.704712000000029],[-98.925827000000027,75.707489000000123],[-98.950286999999889,75.709991000000002],[-98.97193900000002,75.710266000000047],[-99.329453000000001,75.695251000000042],[-99.55749499999996,75.691925000000026],[-99.619995000000017,75.694138000000009],[-99.643889999999999,75.694138000000009],[-99.740828999999906,75.690811000000053],[-99.84973100000002,75.677475000000072],[-100.031677,75.664428999999984],[-100.256393,75.651657],[-100.37332199999997,75.654709000000082],[-100.39723199999997,75.654434000000037],[-100.54028299999993,75.645537999999931],[-100.62888299999997,75.634720000000129],[-100.65416699999997,75.631653000000028],[-100.80471799999998,75.614990000000148],[-100.82972699999999,75.61303700000002],[-101.22556299999991,75.587494000000106],[-101.24916100000002,75.587204000000099],[-101.30638099999999,75.591094999999996],[-101.37721299999993,75.59887700000013],[-101.38806199999999,75.60026600000009],[-101.47165699999999,75.602203000000145],[-101.4955369999999,75.601929000000041],[-101.74944299999999,75.574432000000058],[-101.89835399999998,75.556091000000094],[-101.97250399999996,75.548325000000034],[-101.99638399999998,75.547211000000061],[-102.06723,75.546097000000088],[-102.13639799999993,75.553314],[-102.15915699999999,75.554977000000122],[-102.20667300000002,75.553314],[-102.35193599999997,75.542206000000022],[-102.39916999999997,75.537200999999982],[-102.44860799999998,75.530547999999953],[-102.49916099999996,75.521103000000096],[-102.53415699999999,75.511383000000023],[-102.67304999999999,75.514709000000039],[-102.86694299999999,75.601089000000002],[-102.87805200000003,75.607758000000047],[-102.88194299999992,75.613312000000064],[-102.88390400000003,75.61914100000007],[-102.87777699999992,75.624695000000031],[-102.86054999999999,75.62831100000011],[-102.8125,75.631088000000034],[-102.79305999999991,75.630539000000056],[-102.70140100000003,75.628860000000032],[-102.68916299999995,75.670532000000094],[-102.58168000000001,75.71276899999998],[-102.56360599999999,75.718322999999998],[-102.53888699999993,75.72137499999991],[-102.37748699999992,75.729155999999989],[-102.35193599999997,75.729155999999989],[-102.31139400000001,75.72665400000011],[-102.26390100000003,75.721924000000058],[-102.16832699999992,75.709152000000074],[-102.15416700000003,75.706100000000106],[-102.07861300000002,75.688309000000004],[-102.05776999999995,75.690811000000053],[-102.03666699999997,75.694138000000009],[-102.01862299999999,75.699416999999983],[-102.00917099999998,75.703048999999908],[-102.00805700000001,75.704987000000074],[-102.09166699999997,75.721924000000058],[-102.120003,75.776382000000012],[-102.10185200000001,75.784247999999991],[-102.09361299999989,75.791091999999992],[-102.112213,75.793594000000041],[-102.23277299999995,75.786652000000117],[-102.28222700000003,75.781937000000084],[-102.32668299999995,75.779983999999956],[-102.34388699999994,75.781937000000084],[-102.36609599999997,75.789978000000019],[-102.37165800000002,75.795821999999987],[-102.37332200000003,75.801650999999993],[-102.37082700000002,75.807480000000055],[-102.36250299999995,75.818054000000075],[-102.33944700000001,75.834991000000059],[-102.31667299999998,75.846649000000127],[-102.29028299999993,75.857208000000128],[-102.26640299999997,75.86192299999999],[-102.16306299999997,75.878860000000032],[-102.13806199999993,75.881087999999977],[-101.864441,75.902206000000035],[-101.82640099999992,75.898331000000042],[-101.80526700000001,75.891937000000041],[-101.79943800000001,75.886658000000068],[-101.77194199999997,75.868590999999981],[-101.74833699999999,75.859146000000067],[-101.74109599999991,75.856934000000024],[-101.55638099999987,75.821105999999986],[-101.47028399999999,75.772217000000012],[-101.46888699999994,75.766388000000006],[-101.45973199999997,75.761107999999922],[-101.43859900000001,75.755554000000132],[-101.41416899999996,75.752487000000031],[-101.301941,75.746094000000085],[-101.254997,75.744705000000067],[-101.24416400000001,75.746933000000013],[-101.23388699999998,75.751389000000131],[-101.20249899999993,75.767211999999972],[-101.18221999999997,75.779709000000139],[-101.23110999999994,75.777205999999978],[-101.328056,75.774429000000055],[-101.34777799999995,75.774994000000106],[-101.35555999999991,75.779433999999924],[-101.35861199999999,75.784988000000112],[-101.35193599999991,75.790543000000014],[-101.34137699999997,75.796097000000032],[-101.326683,75.801650999999993],[-101.323624,75.807480000000055],[-101.32501200000002,75.813309000000061],[-101.33500700000002,75.825272000000098],[-101.34056099999992,75.830276000000026],[-101.35637700000001,75.843048000000067],[-101.36389199999996,75.8477630000001],[-101.37805199999997,75.851928999999984],[-101.39277600000003,75.854431000000034],[-101.40833999999995,75.855820000000051],[-101.42388900000003,75.856369000000029],[-101.48889199999996,75.854156000000046],[-101.52694699999995,75.85832199999993],[-101.537216,75.861374000000069],[-101.54638699999992,75.867477000000008],[-101.57917799999996,75.908600000000092],[-101.56500199999988,75.929703000000018],[-101.49665800000002,75.954987000000017],[-101.47778299999999,75.96026599999999],[-101.45221700000002,75.963608000000079],[-101.39417299999997,75.97554000000008],[-101.30915800000002,76.008330999999998],[-101.30277999999987,76.013046000000031],[-101.31582599999996,76.019150000000025],[-101.33556399999992,76.020827999999995],[-101.36971999999992,76.016937000000098],[-101.38249200000001,76.010818000000086],[-101.39195299999989,76.000549000000035],[-101.40833999999995,75.995529000000147],[-101.61721799999998,75.980820000000108],[-101.641953,75.979705999999965],[-101.67832900000002,75.979705999999965],[-101.68388399999998,75.980270000000075],[-101.728882,75.987488000000099],[-101.80638099999999,76.007492000000013],[-101.83249699999999,76.016662999999994],[-101.84889199999992,76.024704000000042],[-101.89362299999993,76.060257000000092],[-101.90055799999999,76.066666000000112],[-101.90722700000003,76.078598000000056],[-101.90862299999998,76.084427000000062],[-101.90750099999997,76.096100000000092],[-101.90222199999999,76.107757999999933],[-101.88861099999991,76.119141000000127],[-101.761124,76.174148999999943],[-101.71140300000002,76.184708000000001],[-101.685272,76.187759000000028],[-101.60833699999995,76.194427000000019],[-101.53362299999998,76.205261000000064],[-101.48860200000001,76.213608000000022],[-101.46556099999998,76.218872000000033],[-101.39611799999989,76.243317000000047],[-101.38500999999997,76.248871000000065],[-101.387787,76.251937999999996],[-101.44193999999993,76.241653000000042],[-101.49694799999992,76.233871000000079],[-101.69888299999997,76.219437000000084],[-101.74973299999999,76.215820000000122],[-101.77471899999995,76.215546000000018],[-102.051941,76.213608000000022],[-102.11444099999994,76.215546000000018],[-102.13305699999989,76.219986000000006],[-102.14835399999998,76.226653999999996],[-102.16583300000002,76.238312000000008],[-102.15972899999997,76.243042000000059],[-102.13362100000001,76.246368000000075],[-102.08222999999998,76.250824000000023],[-102.06388899999996,76.255264000000011],[-102.05803700000001,76.259155000000078],[-102.00110599999999,76.352768000000026],[-102.029449,76.3808140000001],[-102.051941,76.38638300000008],[-102.05332900000002,76.392211999999915],[-102.05082700000003,76.398041000000148],[-102.03999299999998,76.403595000000109],[-102.01862299999999,76.409423999999944],[-101.88583399999993,76.444976999999994],[-101.86221299999994,76.450272000000041],[-101.80832699999996,76.454163000000108],[-101.78333299999991,76.454437000000041],[-101.67111199999999,76.449141999999995],[-101.45667300000002,76.436371000000065],[-101.43472300000002,76.434418000000107],[-101.41166699999997,76.430817000000047],[-101.31582599999996,76.414428999999984],[-101.30249000000003,76.408324999999991],[-101.29138199999994,76.401657],[-101.28362300000003,76.396102999999982],[-101.27667200000002,76.389435000000049],[-101.24027999999993,76.371643000000006],[-101.22805800000003,76.366928000000144],[-101.20612299999993,76.361374000000126],[-101.13694799999996,76.350815000000068],[-101.06806899999998,76.331940000000145],[-101.05832700000002,76.326935000000105],[-101.09388699999994,76.283051],[-101.00446299999993,76.237761999999975],[-100.98111,76.235260000000096],[-100.92832899999996,76.225815000000011],[-100.91000399999996,76.222213999999951],[-100.86582900000002,76.212204000000042],[-100.783073,76.191085999999984],[-100.75110599999994,76.18220500000001],[-100.71056399999998,76.166381999999999],[-100.63027999999991,76.133331000000055],[-100.43998699999992,76.105255],[-100.31582600000002,76.051376000000118],[-100.30943299999996,76.048035000000084],[-100.13166799999993,75.952484000000027],[-100.047234,75.913879000000065],[-99.982498000000021,75.890548999999908],[-99.888335999999981,75.886383000000023],[-99.753615999999909,75.906372000000147],[-99.730834999999956,75.910538000000031],[-99.71556099999998,75.916092000000049],[-99.678328999999962,75.931366000000139],[-99.587783999999999,75.94999700000011],[-99.508621000000005,75.957489000000066],[-99.483611999999937,75.958603000000039],[-99.457503999999972,75.961380000000133],[-99.442490000000021,75.965819999999951],[-99.439437999999996,75.970534999999984],[-99.45461999999992,75.974808000000053],[-99.494445999999982,75.973602000000085],[-99.657776000000013,75.961380000000133],[-99.785277999999948,75.951385000000016],[-99.811110999999983,75.948317999999915],[-99.859436000000017,75.935256999999979],[-99.86332699999997,75.935532000000023],[-99.898620999999991,75.950271999999984],[-100.07749899999999,76.038879000000122],[-100.08249699999999,76.043869000000029],[-100.09221600000001,76.054977000000008],[-100.14222699999999,76.112198000000149],[-100.15278599999994,76.132477000000108],[-100.12499999999994,76.148880000000133],[-100.10388199999994,76.153320000000008],[-100.07167099999998,76.155822999999941],[-100.031113,76.155548000000124],[-100.01139799999999,76.15387000000004],[-99.868332000000009,76.139984000000027],[-99.730834999999956,76.117477000000122],[-99.680832000000009,76.118591000000094],[-99.650832999999977,76.127472000000068],[-99.609160999999972,76.135817999999972],[-99.556106999999997,76.141663000000051],[-99.502227999999945,76.146103000000039],[-99.483062999999902,76.146942000000024],[-99.429717999999923,76.15387000000004],[-99.414444000000003,76.158325000000048],[-99.421386999999925,76.160262999999986],[-99.445267000000001,76.16137700000013],[-99.498885999999914,76.157761000000107],[-99.548888999999974,76.153320000000008],[-99.668059999999912,76.139709000000039],[-99.693054000000018,76.138596000000121],[-99.716949,76.139709000000039],[-99.874434999999892,76.17053199999998],[-99.915833000000021,76.180267000000072],[-99.948882999999967,76.189697000000137],[-100.15028399999994,76.1933140000001],[-100.17832900000002,76.19081100000011],[-100.20140099999998,76.189972000000012],[-100.22556299999997,76.19081100000011],[-100.43888900000002,76.212494000000049],[-100.47222899999991,76.226378999999952],[-100.49861099999998,76.237761999999975],[-100.51278699999989,76.249146000000053],[-100.514183,76.254166000000112],[-100.51112399999994,76.259720000000129],[-100.49944299999999,76.26527400000009],[-100.465012,76.274993999999992],[-100.43804899999998,76.278870000000097],[-100.41665599999999,76.280272999999966],[-100.36638600000003,76.281661999999983],[-100.26917300000002,76.278595000000053],[-100.18276999999995,76.270828000000108],[-100.111107,76.266388000000063],[-99.895553999999947,76.274703999999986],[-99.86999499999996,76.275817999999958],[-99.844727000000034,76.280272999999966],[-99.848617999999931,76.283874999999966],[-100.03859699999998,76.318878000000097],[-100.27722199999994,76.378585999999984],[-100.30166600000001,76.382750999999985],[-100.32362399999994,76.384155000000135],[-100.35056299999991,76.384430000000009],[-100.37444299999999,76.382750999999985],[-100.48137700000001,76.373871000000122],[-100.55332899999996,76.371094000000028],[-100.67360699999995,76.371917999999994],[-100.69444299999998,76.374985000000095],[-100.95249899999999,76.474700999999982],[-100.97222899999997,76.485260000000039],[-100.98388699999992,76.494430999999963],[-100.98554999999993,76.499145999999996],[-100.98249800000002,76.504990000000021],[-100.962784,76.510268999999994],[-100.93943799999988,76.514435000000105],[-100.89277600000003,76.519440000000145],[-100.82972699999999,76.519714000000079],[-100.80526700000001,76.522217000000069],[-100.737213,76.531097000000102],[-100.72083999999995,76.546097000000032],[-100.72341899999998,76.551094000000148],[-100.72332799999992,76.556091000000038],[-100.71250899999995,76.560531999999967],[-100.65306099999992,76.576385000000016],[-100.45861799999994,76.613602000000014],[-100.383827,76.627502000000106],[-100.36389200000002,76.631087999999977],[-100.318893,76.635544000000095],[-100.21665999999988,76.643051000000014],[-100.19193999999999,76.642212000000086],[-100.05222300000003,76.631363000000022],[-99.981673999999998,76.622207999999944],[-99.911117999999988,76.61303700000002],[-99.885009999999909,76.610535000000141],[-99.837783999999886,76.608596999999975],[-99.811385999999914,76.609710999999947],[-99.796111999999994,76.613875999999948],[-99.795272999999952,76.618317000000047],[-99.770554000000004,76.627762000000132],[-99.741942999999992,76.632751000000098],[-99.725829999999917,76.634720000000129],[-99.684433000000013,76.633331000000112],[-99.588333000000034,76.623871000000065],[-99.569457999999997,76.620529000000147],[-99.366942999999935,76.526382000000069],[-99.256957999999941,76.470535000000098],[-99.260559000000001,76.464706000000092],[-99.255279999999914,76.453598000000056],[-99.184433000000013,76.415817000000118],[-99.163619999999923,76.409149000000127],[-99.12332200000003,76.400818000000015],[-99.099990999999989,76.398041000000148],[-99.079726999999991,76.397217000000012],[-99.066101000000003,76.398605000000089],[-99.06639100000001,76.404434000000094],[-99.083617999999944,76.416092000000106],[-99.110001000000011,76.426650999999993],[-99.118332000000009,76.433044000000109],[-99.137221999999952,76.451934999999992],[-99.133895999999993,76.456650000000025],[-99.122498000000007,76.461105000000032],[-98.994155999999975,76.471099999999922],[-98.980834999999956,76.47164900000007],[-98.955276000000026,76.469147000000021],[-98.946945000000028,76.463042999999971],[-98.948043999999925,76.45277399999992],[-98.950286999999889,76.446365000000071],[-98.943603999999993,76.440811000000053],[-98.925827000000027,76.43609600000002],[-98.906386999999881,76.433318999999983],[-98.882767000000001,76.431366000000025],[-98.857773000000009,76.431366000000025],[-98.846114999999998,76.43609600000002],[-98.856110000000001,76.463882000000126],[-98.865279999999927,76.469147000000021],[-98.898620999999991,76.481093999999928],[-98.953888000000006,76.499145999999996],[-99.038054999999986,76.529708999999968],[-99.050551999999982,76.536102000000142],[-99.051940999999999,76.539978000000019],[-99.027221999999938,76.601088999999945],[-98.999160999999958,76.604980000000012],[-98.971663999999976,76.607758000000047],[-98.86082499999992,76.61442599999998],[-98.714721999999938,76.614150999999993],[-98.611114999999984,76.610260000000096],[-98.589172000000019,76.611374000000069],[-98.56639100000001,76.613602000000014],[-98.538894999999968,76.616379000000109],[-98.518065999999976,76.621368000000075],[-98.511123999999995,76.625259000000142],[-98.489731000000006,76.644707000000096],[-98.48832699999997,76.650818000000015],[-98.546951000000035,76.658035000000098],[-98.591109999999901,76.661652000000061],[-98.595000999999968,76.659424000000115],[-98.592498999999975,76.653870000000097],[-98.598617999999988,76.651093000000003],[-98.623046999999872,76.647217000000126],[-98.674438000000009,76.64387499999998],[-98.744445999999982,76.64387499999998],[-98.814163000000008,76.653595000000053],[-98.851105000000018,76.661652000000061],[-98.857773000000009,76.663879000000122],[-98.855834999999956,76.67025799999999],[-98.852492999999924,76.671646000000067],[-98.821395999999936,76.676925999999924],[-98.733611999999994,76.682754999999986],[-98.712509000000011,76.683044000000052],[-98.504729999999938,76.681090999999924],[-98.480285999999921,76.679152999999985],[-98.439986999999974,76.673035000000084],[-98.418059999999912,76.668320000000051]],[[-99.996947999999975,76.734420999999998],[-99.976395000000025,76.733597000000032],[-99.86999499999996,76.736374000000126],[-99.819457999999884,76.738312000000064],[-99.748336999999992,76.74275200000011],[-99.720839999999953,76.74581900000004],[-99.693877999999984,76.747756999999979],[-99.646392999999989,76.748031999999967],[-99.622498000000007,76.7452550000001],[-99.528884999999946,76.72554000000008],[-99.447768999999994,76.706100000000106],[-99.430556999999965,76.699416999999926],[-99.433883999999978,76.69470200000012],[-99.52806099999998,76.67442299999999],[-99.556106999999997,76.670532000000094],[-99.581680000000006,76.67025799999999],[-99.626937999999996,76.673035000000084],[-99.657776000000013,76.677765000000079],[-99.733321999999987,76.702484000000027],[-99.888389999999902,76.718651000000136],[-99.900222999999926,76.72015399999998],[-99.915557999999976,76.72015399999998],[-100.01112399999988,76.719147000000135],[-100.02999899999992,76.715820000000008],[-100.05139200000002,76.715546000000074],[-100.09750400000001,76.717209000000025],[-100.12138399999998,76.719711000000075],[-100.128601,76.721924000000058],[-100.12805199999997,76.723038000000031],[-100.10193599999997,76.744705000000067],[-100.08277899999996,76.748031999999967],[-100.05526700000001,76.75082400000008],[-100.03778099999988,76.751389000000131],[-99.999434999999949,76.751099000000067],[-99.972228999999913,76.747208000000001],[-99.975006000000008,76.742477000000065],[-99.994155999999975,76.739151000000049],[-100.004997,76.735535000000027],[-99.996947999999975,76.734420999999998]],[[-120.88362100000001,76.739700000000028],[-120.886124,76.728591999999992],[-120.90334299999995,76.723876999999959],[-120.94499199999996,76.717758000000117],[-120.97000100000002,76.716660000000047],[-121.09084299999989,76.71887200000009],[-121.11749299999991,76.719711000000075],[-121.16000400000001,76.723312000000135],[-121.18110699999994,76.727203000000031],[-121.18472299999991,76.731094000000098],[-121.18167099999999,76.732208000000071],[-121.15666199999998,76.733597000000032],[-121.12832600000002,76.730819999999994],[-121.083618,76.729155999999932],[-121.05972300000002,76.731369000000086],[-121.05638099999999,76.732483000000059],[-121.01806599999998,76.751389000000131],[-120.99082900000002,76.754715000000147],[-120.97833300000002,76.755264000000068],[-120.91443599999997,76.754165999999998],[-120.89083900000003,76.749710000000107],[-120.88474300000001,76.745529000000033],[-120.88362100000001,76.739700000000028]],[[-101.38054699999992,76.553588999999988],[-101.40416699999997,76.552765000000022],[-101.45388799999989,76.554153000000099],[-101.54083300000002,76.560806000000071],[-101.56471299999993,76.563599000000067],[-101.62332199999992,76.572768999999937],[-101.68831599999999,76.586380000000077],[-101.57556199999999,76.614150999999993],[-101.52194199999991,76.623871000000065],[-101.38583399999993,76.642487000000074],[-101.31777999999991,76.642761000000007],[-101.21362299999993,76.651931999999988],[-101.05999800000001,76.685805999999957],[-101.04250300000001,76.690536000000009],[-101.03943600000002,76.696365000000014],[-101.04028299999993,76.702209000000039],[-101.03307299999994,76.708038000000045],[-101.00583599999993,76.71887200000009],[-100.98361199999999,76.724700999999925],[-100.95749699999999,76.729155999999932],[-100.90249599999993,76.736374000000126],[-100.74388099999999,76.753326000000129],[-100.69193999999999,76.754715000000147],[-100.53443900000002,76.757217000000026],[-100.50917099999992,76.756378000000097],[-100.484734,76.754715000000147],[-100.26888999999989,76.737198000000092],[-100.24889400000001,76.734711000000061],[-100.25917099999998,76.728591999999992],[-100.26666299999999,76.726379000000065],[-100.29305999999997,76.721924000000058],[-100.297234,76.721924000000058],[-100.31723,76.716660000000047],[-100.48721299999988,76.684418000000051],[-100.761124,76.635818000000029],[-100.92304999999999,76.610260000000096],[-101.19275699999997,76.571381000000031],[-101.27390300000002,76.560806000000071],[-101.326683,76.556366000000082],[-101.38054699999992,76.553588999999988]],[[-89.934432999999956,76.47665400000011],[-89.978881999999999,76.469711000000132],[-89.999725000000012,76.470260999999994],[-90.040833000000021,76.476928999999927],[-90.081680000000006,76.484984999999995],[-90.151108000000022,76.504439999999988],[-90.184433000000013,76.515274000000034],[-90.21444699999995,76.528594999999996],[-90.226669000000015,76.535538000000031],[-90.412216000000001,76.636108000000036],[-90.478058000000033,76.662200999999982],[-90.504456000000005,76.675261999999918],[-90.56361400000003,76.709991000000002],[-90.573333999999988,76.715820000000008],[-90.59445199999999,76.729705999999965],[-90.600280999999939,76.734984999999995],[-90.600829999999974,76.741088999999988],[-90.599990999999989,76.746643000000006],[-90.597777999999948,76.750000000000114],[-90.58666999999997,76.761383000000137],[-90.579178000000013,76.766937000000098],[-90.57028200000002,76.771927000000005],[-90.544448999999986,76.783051000000057],[-90.510284000000013,76.793320000000108],[-90.474716000000001,76.799713000000054],[-90.230559999999969,76.828048999999965],[-90.103058000000033,76.836105000000032],[-90.025283999999999,76.839156999999943],[-89.983063000000016,76.836928999999998],[-89.927779999999984,76.828873000000101],[-89.865279999999984,76.816086000000098],[-89.825835999999981,76.806091000000038],[-89.779448999999886,76.7852630000001],[-89.673888999999974,76.737487999999928],[-89.673888999999974,76.731369000000086],[-89.687774999999988,76.708878000000084],[-89.702224999999999,76.689697000000024],[-89.729445999999996,76.673309000000017],[-89.744155999999975,76.669434000000024],[-89.768065999999976,76.668045000000006],[-89.819732999999928,76.667206000000022],[-89.837218999999891,76.663040000000137],[-89.840835999999911,76.657211000000132],[-89.862777999999992,76.60386699999998],[-89.862502999999947,76.597488000000112],[-89.858336999999949,76.591094999999939],[-89.817504999999983,76.546936000000017],[-89.794448999999929,76.533325000000048],[-89.756119000000012,76.524703999999929],[-89.721663999999976,76.519714000000079],[-89.699157999999954,76.516936999999984],[-89.684433000000013,76.511658000000011],[-89.671386999999982,76.504166000000055],[-89.673888999999974,76.502212999999927],[-89.757507000000032,76.486099000000024],[-89.783614999999884,76.483047000000056],[-89.934432999999956,76.47665400000011]],[[-108.65110800000002,76.813599000000011],[-108.65110800000002,76.808868000000075],[-108.65527299999991,76.803863999999976],[-108.67804699999999,76.784988000000112],[-108.68443299999996,76.780548000000067],[-108.69055200000003,76.774429000000055],[-108.69249000000002,76.769989000000066],[-108.68831599999999,76.766098],[-108.67971799999992,76.763321000000076],[-108.66278099999994,76.761383000000137],[-108.596947,76.760818000000086],[-108.55248999999992,76.761383000000137],[-108.52722199999999,76.760268999999937],[-108.50389099999995,76.756103999999937],[-108.48889199999996,76.751663000000065],[-108.46333299999998,76.739151000000049],[-108.45500199999998,76.733322000000044],[-108.44638099999997,76.723602000000142],[-108.44220699999994,76.717758000000117],[-108.43804899999998,76.708038000000045],[-108.44193999999999,76.696365000000014],[-108.45889299999988,76.684708000000057],[-108.54472399999997,76.646378000000141],[-108.56555200000003,76.641663000000108],[-108.58667000000003,76.641663000000108],[-108.60749800000002,76.642487000000074],[-108.628601,76.645263999999997],[-108.65387699999997,76.647217000000126],[-108.68110699999994,76.647766000000047],[-108.70417799999996,76.646378000000141],[-108.72083999999995,76.642487000000074],[-108.72721899999999,76.638046000000145],[-108.72693600000002,76.634155000000078],[-108.69915800000001,76.605545000000063],[-108.69055200000003,76.600540000000024],[-108.62721299999998,76.575546000000031],[-108.61054999999993,76.569717000000026],[-108.58389299999993,76.477478000000076],[-108.58112299999999,76.439147999999989],[-108.55803699999996,76.408599999999979],[-108.475281,76.406937000000084],[-108.36389200000002,76.399994000000049],[-108.32888800000001,76.396652000000131],[-108.31861900000001,76.394150000000081],[-108.28971899999993,76.384430000000009],[-108.26917300000002,76.374985000000095],[-108.07749899999999,76.28054800000001],[-108.11472299999997,76.261383000000023],[-108.252228,76.196929999999952],[-108.33139,76.181931000000077],[-108.38027999999997,76.165268000000026],[-108.39222699999993,76.159424000000001],[-108.40862300000003,76.14776599999999],[-108.396118,76.046097000000145],[-108.35193600000002,76.048874000000069],[-108.02555799999999,76.062195000000031],[-108.00140399999998,76.063033999999959],[-107.916946,76.063033999999959],[-107.83833300000003,76.061371000000065],[-107.81220999999999,76.056090999999981],[-107.73665599999998,76.039428999999984],[-107.72471599999994,76.035538000000088],[-107.63834399999996,75.996368000000132],[-107.63249200000001,75.991088999999988],[-107.63305699999995,75.981369000000086],[-107.639183,75.976089000000002],[-107.65139799999997,75.97026100000005],[-107.78555299999999,75.919983000000116],[-107.84221599999995,75.899993999999992],[-107.90194700000001,75.896103000000096],[-107.91805999999997,75.891373000000101],[-107.93028300000003,75.885544000000039],[-108.031113,75.822495000000004],[-108.04361,75.802199999999971],[-108.02417000000003,75.783875000000023],[-108.02027900000002,75.780823000000112],[-108.00639299999995,75.779433999999924],[-107.9569469999999,75.784714000000008],[-107.91332999999986,75.789429000000041],[-107.87361099999993,75.798035000000141],[-107.82084699999996,75.829162999999994],[-107.77834300000001,75.854706000000078],[-107.75974299999996,75.869705000000124],[-107.75974299999996,75.874419999999986],[-107.739441,75.879150000000038],[-107.51555599999995,75.899993999999992],[-107.36945299999996,75.911652000000004],[-107.33750899999995,75.911377000000016],[-107.18666099999996,75.90387000000004],[-107.08000199999998,75.892761000000007],[-107.08583099999998,75.872482000000048],[-107.09028599999994,75.867477000000008],[-107.10500300000001,75.834717000000126],[-107.09805299999999,75.823043999999925],[-107.03167699999995,75.771103000000039],[-106.96362299999993,75.738586000000055],[-106.89666699999998,75.720261000000107],[-106.88027999999991,75.765822999999955],[-106.83056599999998,75.785812000000078],[-106.79444899999993,75.791656000000103],[-106.74471999999992,75.79553199999998],[-106.72277799999995,75.795821999999987],[-106.67944299999999,75.793594000000041],[-106.6558379999999,75.793594000000041],[-106.636124,75.794434000000081],[-106.61582899999996,75.797211000000004],[-106.62110899999993,75.803314000000114],[-106.6383439999999,75.806931000000077],[-106.67944299999999,75.812485000000095],[-106.72666900000002,75.813873000000001],[-106.78611799999993,75.813309000000061],[-106.829453,75.816665999999998],[-106.85082999999992,75.819992000000013],[-106.87000299999994,75.824997000000053],[-106.88890100000003,75.834717000000126],[-106.89584400000001,75.844437000000028],[-106.89666699999998,75.935256999999979],[-106.89611799999994,75.941086000000041],[-106.89334100000002,75.947478999999987],[-106.86971999999997,75.964157000000057],[-106.63890099999998,76.053040000000124],[-106.60610999999994,76.057754999999986],[-106.58583099999993,76.058593999999971],[-106.368607,76.055817000000047],[-106.33667000000003,76.054703000000075],[-106.30082699999997,76.051376000000118],[-106.01611299999996,76.019714000000022],[-105.93720999999999,76.010269000000108],[-105.89998600000001,76.005554000000075],[-105.837219,75.996932999999956],[-105.73500100000001,75.974991000000102],[-105.66832699999998,75.955551000000128],[-105.61945299999996,75.93942300000009],[-105.60637699999995,75.934708000000057],[-105.59528399999988,75.929703000000018],[-105.47888199999994,75.863036999999963],[-105.46528599999999,75.851928999999984],[-105.45333900000003,75.841659999999933],[-105.445831,75.830551000000071],[-105.40028399999989,75.694427000000076],[-105.38834399999996,75.656372000000033],[-105.391953,75.63888500000013],[-105.48750299999995,75.560806000000127],[-105.49638399999998,75.55525200000011],[-105.51666299999994,75.550537000000077],[-105.54083300000002,75.546936000000017],[-105.60444599999988,75.539978000000019],[-105.63667299999997,75.533600000000092],[-105.68582200000003,75.519440000000145],[-105.74082900000002,75.494979999999941],[-105.75140399999998,75.489700000000084],[-105.74804699999999,75.485809000000017],[-105.73693799999995,75.48275799999999],[-105.68666100000002,75.483047000000113],[-105.67166099999986,75.481093999999985],[-105.61138900000003,75.47164900000007],[-105.59277299999997,75.46748400000007],[-105.593613,75.462769000000037],[-105.64639299999993,75.365265000000022],[-105.65110799999997,75.359421000000054],[-105.66055299999994,75.349716000000114],[-105.72666900000002,75.31303400000013],[-105.7386019999999,75.309418000000051],[-105.76251199999996,75.304976999999951],[-105.79361,75.302200000000084],[-105.81304899999998,75.29942299999999],[-105.82140399999992,75.295822000000101],[-105.86694299999999,75.275818000000015],[-105.87526699999995,75.271102999999982],[-105.93776699999989,75.214432000000045],[-105.93888900000002,75.208603000000039],[-105.93582199999997,75.202774000000034],[-105.929169,75.197754000000145],[-105.89222699999999,75.190810999999997],[-105.87249800000001,75.171920999999998],[-105.876938,75.145828000000051],[-105.88527699999997,75.14027400000009],[-105.90499899999998,75.136383000000023],[-105.92582699999997,75.135268999999994],[-106.00361599999991,75.135544000000039],[-106.01889,75.133881000000088],[-106.07028200000002,75.106644000000017],[-106.07945299999989,75.096939000000077],[-106.07333399999993,75.087203999999986],[-106.01862299999999,75.074158000000068],[-106.00446299999999,75.068054000000018],[-105.99416399999996,75.062195000000031],[-105.99333199999995,75.055817000000047],[-106.011124,75.050812000000008],[-106.23528299999998,75.021378000000027],[-106.26000999999997,75.019150000000081],[-106.45500199999992,75.005829000000119],[-106.54554699999989,75.001663000000008],[-106.564438,75.00082400000008],[-106.66332999999992,75.004165999999998],[-106.72556299999997,75.00221300000004],[-106.77111799999989,74.996643000000006],[-106.78639199999998,74.991928000000144],[-106.78307299999994,74.989975000000015],[-106.78333299999997,74.986098999999967],[-106.78582799999992,74.98054500000012],[-106.79194599999994,74.975266000000147],[-106.807503,74.969711000000075],[-106.93055699999996,74.933594000000085],[-106.97222899999997,74.926086000000055],[-107.01000999999991,74.922484999999995],[-107.05110200000001,74.921646000000067],[-107.07362399999994,74.919983000000116],[-107.16000399999996,74.910538000000088],[-107.19722000000002,74.910812000000021],[-107.21584300000001,74.911925999999994],[-107.46417199999996,74.934418000000051],[-107.506958,74.939972000000068],[-107.63082900000001,74.961104999999975],[-107.66251399999999,74.966660000000047],[-107.68804899999998,74.976379000000065],[-107.69554099999999,74.982208000000071],[-107.72389199999998,75.016388000000006],[-107.72389199999998,75.020264000000054],[-107.71972699999998,75.02609300000006],[-107.704453,75.030823000000112],[-107.68138099999999,75.042480000000012],[-107.67944299999994,75.048599000000081],[-107.68110699999994,75.05304000000001],[-107.69499199999996,75.075272000000041],[-107.70584100000002,75.086105000000032],[-107.716949,75.090820000000065],[-107.739441,75.095825000000104],[-107.75834700000001,75.096939000000077],[-107.77333099999998,75.096099999999922],[-107.78307299999994,75.093596999999988],[-107.77999899999998,75.072220000000129],[-107.77084400000001,75.06581100000011],[-107.75778200000002,75.06053199999991],[-107.74500299999994,75.054153000000042],[-107.739441,75.048874000000069],[-107.73972299999997,75.043045000000063],[-107.74388099999993,75.037201000000039],[-107.77778599999999,75.029434000000094],[-107.89499699999999,75.003601000000003],[-107.94193999999999,74.93081699999999],[-107.95527600000003,74.928589000000045],[-107.97749299999998,74.927475000000072],[-108.02417000000003,74.929152999999985],[-108.13417099999992,74.927765000000079],[-108.21083099999987,74.923599000000024],[-108.37304699999999,74.910538000000088],[-108.3916779999999,74.911377000000016],[-108.43639400000001,74.915268000000083],[-108.45500199999998,74.918319999999994],[-108.52971599999995,74.936645999999996],[-108.54110700000001,74.940536000000009],[-108.548607,74.946365000000014],[-108.54795799999999,74.951653000000022],[-108.55055199999998,74.956375000000094],[-108.55999800000001,74.960815000000139],[-108.67971799999992,74.970261000000107],[-108.781113,74.979980000000069],[-108.80721999999997,74.983597000000032],[-108.80721999999997,74.984711000000004],[-108.79611199999999,74.985809000000131],[-108.74553699999996,74.984420999999998],[-108.63890100000003,74.981094000000098],[-108.614441,74.979705999999965],[-108.55999800000001,74.976379000000065],[-108.53028899999993,74.973312000000135],[-108.51139799999999,74.97554000000008],[-108.52667199999996,75.001663000000008],[-108.53056300000003,75.005554000000075],[-108.53806299999985,75.009430000000009],[-108.628601,75.046096999999975],[-108.65139799999992,75.053863999999976],[-108.79472399999997,75.069153000000028],[-108.83249699999993,75.069992000000013],[-108.92777999999993,75.05192599999998],[-108.94972200000001,75.040267999999969],[-109.00110599999999,75.004990000000134],[-109.11971999999997,74.979430999999977],[-109.34584000000001,74.944702000000063],[-109.36416600000001,74.939697000000024],[-109.39998600000001,74.918319999999994],[-109.40722700000003,74.912490999999989],[-109.40695199999993,74.908599999999922],[-109.420547,74.893051000000014],[-109.50805700000001,74.866379000000109],[-109.52278099999995,74.863312000000008],[-109.56861900000001,74.857758000000047],[-109.58721899999995,74.856644000000017],[-109.66139199999992,74.856369000000029],[-109.76944700000001,74.859421000000111],[-109.79750099999995,74.863602000000014],[-109.81111099999993,74.868042000000059],[-109.83361799999994,74.869704999999954],[-109.87249800000001,74.869141000000013],[-109.93472300000002,74.860809000000017],[-109.95500199999987,74.857208000000014],[-109.99471999999997,74.848327999999981],[-110.01640299999991,74.842209000000082],[-110.13971700000002,74.833054000000061],[-110.30444299999994,74.846375000000023],[-110.32501200000002,74.847488000000112],[-110.34555099999989,74.846939000000134],[-110.36000100000001,74.843872000000033],[-110.37053700000001,74.839980999999966],[-110.40416699999997,74.826660000000004],[-110.39620999999994,74.813689999999951],[-110.39666699999998,74.799423000000104],[-110.43666100000002,74.793319999999937],[-110.58999599999993,74.778046000000074],[-110.59137699999997,74.724152000000061],[-110.75666799999993,74.685257000000092],[-110.77250699999996,74.680817000000047],[-110.78639199999998,74.674698000000035],[-110.79638699999998,74.668869000000029],[-110.807503,74.657486000000006],[-110.83389299999993,74.651931999999988],[-110.98111,74.621368000000132],[-111.28056300000003,74.567764000000125],[-111.38722200000001,74.563034000000073],[-111.40915699999999,74.562759000000085],[-111.43055699999996,74.560532000000023],[-111.55888399999998,74.52748100000008],[-111.64250199999992,74.501389000000017],[-111.67722300000003,74.493317000000047],[-111.700287,74.49136400000009],[-111.82389799999999,74.48332199999993],[-111.94554099999993,74.474425999999994],[-111.98416099999997,74.468872000000033],[-112.087219,74.452208999999925],[-112.29305999999991,74.427765000000022],[-112.37053699999996,74.418594000000041],[-112.43831599999999,74.414429000000041],[-112.54194599999988,74.409424000000001],[-112.75306699999993,74.401382000000012],[-112.85694899999993,74.398330999999985],[-112.91999799999991,74.397490999999945],[-113.00890400000003,74.398040999999978],[-113.25723299999993,74.405258000000117],[-113.406113,74.413315000000068],[-113.42832899999996,74.414703000000145],[-113.47168699999997,74.41891499999997],[-113.64083900000003,74.437485000000095],[-113.69638099999997,74.446091000000024],[-113.84221600000001,74.479706000000078],[-113.94167299999998,74.50360100000006],[-114.05387899999999,74.530822999999998],[-114.12110899999993,74.549987999999985],[-114.29834,74.602768000000026],[-114.34861799999999,74.618866000000082],[-114.37470999999994,74.629150000000095],[-114.39695699999993,74.639160000000004],[-114.43804899999986,74.659424000000115],[-114.44360399999994,74.664153999999996],[-114.44776899999994,74.674698000000035],[-114.42859599999991,74.691925000000026],[-114.41972399999992,74.698029000000076],[-114.40750099999997,74.704163000000108],[-114.39444700000001,74.708328000000108],[-114.21444699999995,74.755554000000132],[-114.10166899999996,74.776657000000057],[-114.01027699999992,74.790543000000071],[-113.73166699999996,74.827208999999982],[-113.71000699999996,74.829711999999915],[-113.55695300000002,74.839157],[-113.41861,74.84275800000006],[-113.28278399999999,74.848602000000085],[-113.25334199999998,74.87359600000002],[-113.22269399999988,74.896469000000025],[-113.15194699999995,74.924987999999985],[-113.1205369999999,74.932480000000112],[-113.00750699999992,74.954163000000051],[-112.91111799999987,74.970825000000048],[-112.86749299999997,74.97554000000008],[-112.84528399999994,74.976929000000098],[-112.57224299999996,74.99275200000011],[-112.52416999999991,74.995529000000033],[-112.5,74.996010000000012],[-112.453056,74.996933000000013],[-112.37444299999993,74.998321999999973],[-112.01500699999991,75.002486999999974],[-111.962219,75.001389000000074],[-111.935272,74.998871000000122],[-111.89890299999996,74.994980000000055],[-111.86527999999993,74.988312000000064],[-111.84056099999998,74.986374000000126],[-111.76444999999995,74.981659000000093],[-111.75334199999998,74.981659000000093],[-111.718613,74.986649],[-111.62666300000001,75.003875999999991],[-111.58972199999999,75.006378000000041],[-111.55139200000002,75.011383000000137],[-111.53527800000001,75.014998999999989],[-111.28971899999999,75.086105000000032],[-111.02916700000003,75.171097000000032],[-110.920547,75.223602000000085],[-110.91361999999998,75.228591999999935],[-110.91278099999994,75.233871000000136],[-110.91750300000001,75.239699999999971],[-111.05249000000003,75.270263999999997],[-111.06806899999987,75.271927000000119],[-111.23082699999998,75.264159999999947],[-111.24889400000001,75.259155000000078],[-111.25195300000001,75.254165999999941],[-111.25083899999993,75.248596000000077],[-111.25167799999997,75.243042000000059],[-111.25611900000001,75.236649000000114],[-111.26112399999994,75.232208000000014],[-111.27778599999994,75.220534999999984],[-111.33416699999992,75.19747899999993],[-111.39167800000001,75.181091000000094],[-111.47501399999999,75.161652000000004],[-111.56082200000003,75.146103000000096],[-111.57721700000002,75.143600000000106],[-111.59612299999998,75.143326000000002],[-111.69526699999989,75.145828000000051],[-111.70584100000002,75.151093000000117],[-111.787216,75.166655999999932],[-111.958054,75.13499500000006],[-112.22833300000002,75.124694999999974],[-112.39055599999995,75.123032000000023],[-112.40972899999997,75.12359600000002],[-112.42916899999994,75.125259000000085],[-112.439438,75.128586000000041],[-112.44833399999999,75.133041000000048],[-112.47084000000001,75.146378000000084],[-112.46833800000002,75.151382000000069],[-112.46166999999997,75.154433999999981],[-112.45249899999999,75.155822999999998],[-112.41197199999993,75.159012000000075],[-112.36860699999994,75.169144000000131],[-112.35833700000001,75.173035000000027],[-112.29472399999992,75.198028999999963],[-112.29583700000001,75.202774000000034],[-112.33944700000001,75.223602000000085],[-112.39750700000002,75.241089000000102],[-112.40888999999993,75.240814000000114],[-112.4366609999999,75.230545000000063],[-112.46193700000003,75.218872000000033],[-112.46417200000002,75.213043000000027],[-112.46305799999999,75.208327999999995],[-112.45056199999999,75.204711999999972],[-112.43749999999994,75.198868000000118],[-112.43221999999997,75.19331399999993],[-112.43250299999994,75.1869200000001],[-112.44471699999997,75.18331900000004],[-112.46665999999999,75.179977000000065],[-112.56111099999993,75.178314],[-112.59249899999998,75.181656000000089],[-112.60888699999992,75.185256999999979],[-112.62554899999998,75.190810999999997],[-112.6347429999999,75.196365000000128],[-112.63722200000001,75.204987000000131],[-112.63694800000002,75.210541000000148],[-112.632767,75.215820000000122],[-112.61609599999997,75.223877000000073],[-112.59472699999998,75.230270000000075],[-112.58583099999998,75.239150999999993],[-112.59472699999998,75.250000000000057],[-112.61277799999999,75.259430000000123],[-112.65167200000002,75.275269000000037],[-112.66583300000002,75.278595000000109],[-112.679169,75.277771000000143],[-112.71305799999999,75.256104000000107],[-112.718887,75.250275000000045],[-112.735817,75.203323000000125],[-112.73416099999992,75.19747899999993],[-112.72888199999994,75.192749000000106],[-112.71584299999995,75.187195000000088],[-112.698036,75.177765000000022],[-112.68859899999995,75.171920999999998],[-112.699997,75.138321000000133],[-112.80695300000002,75.115814000000057],[-112.89417300000002,75.103317000000061],[-112.95667300000002,75.097214000000122],[-113.25446299999999,75.076096000000007],[-113.29888899999997,75.073044000000095],[-113.343887,75.072220000000129],[-113.610817,75.062759000000142],[-113.68083200000001,75.05192599999998],[-113.699432,75.051375999999948],[-113.89417299999997,75.052199999999914],[-113.91750299999995,75.053589000000102],[-113.94138299999986,75.056931000000077],[-113.950287,75.06053199999991],[-113.96888699999994,75.075272000000041],[-113.97305299999994,75.086655000000064],[-113.97305299999994,75.096374999999966],[-113.93138099999999,75.189148000000046],[-113.82055700000001,75.314423000000147],[-113.80583199999995,75.326660000000118],[-113.78278399999999,75.33776899999998],[-113.72805800000003,75.345825000000048],[-113.66055299999994,75.351379000000065],[-113.64222699999993,75.353591999999992],[-113.573624,75.366928000000144],[-113.34056099999992,75.413315000000068],[-113.38110399999999,75.418320000000108],[-113.47112300000003,75.427764999999965],[-113.577789,75.411652000000117],[-113.66027799999995,75.398605000000089],[-113.74445299999996,75.385818000000086],[-113.83389299999988,75.37692300000009],[-113.87138400000003,75.374145999999996],[-113.90222199999999,75.3744200000001],[-113.91139199999998,75.378036000000122],[-113.92111199999994,75.383881000000031],[-113.958618,75.411102000000085],[-113.98166700000002,75.431091000000038],[-113.98416099999992,75.437758999999971],[-113.99221799999998,75.448318000000029],[-114.02416999999997,75.461105000000032],[-114.04083300000002,75.463882000000126],[-114.06500199999988,75.466095000000109],[-114.08389299999999,75.464706000000092],[-114.08693699999998,75.462494000000049],[-114.08917199999996,75.458602999999982],[-114.093887,75.410812000000078],[-114.09166699999992,75.404984000000127],[-114.08583099999993,75.400269000000094],[-114.07778899999988,75.394150000000081],[-114.06610099999995,75.389160000000061],[-114.05638099999987,75.383330999999998],[-114.04472399999992,75.373032000000023],[-114.04055800000003,75.36775200000011],[-114.04055800000003,75.362198000000092],[-114.04750100000001,75.35054000000008],[-114.13751200000002,75.244979999999998],[-114.15805099999994,75.233321999999987],[-114.17083699999989,75.226929000000041],[-114.18666100000002,75.223312000000078],[-114.203056,75.221375000000023],[-114.22277799999995,75.2227630000001],[-114.26363399999991,75.229705999999908],[-114.28472899999997,75.234985000000108],[-114.319458,75.24470500000001],[-114.34638999999993,75.25471500000009],[-114.35082999999997,75.26638800000012],[-114.34916699999985,75.271378000000141],[-114.35109699999992,75.276093000000003],[-114.35888699999992,75.281371999999976],[-114.49999999999994,75.312194999999974],[-114.51278699999995,75.314697000000081],[-114.52806099999992,75.314423000000147],[-114.54276999999996,75.31303400000013],[-114.60973399999995,75.27998400000007],[-114.61527999999993,75.274994000000049],[-114.61138900000003,75.265273999999977],[-114.598343,75.261658000000068],[-114.57972699999999,75.263321000000019],[-114.57250999999997,75.264434999999992],[-114.54666099999997,75.266937000000041],[-114.49638399999998,75.265548999999965],[-114.46806299999997,75.262207000000046],[-114.44304699999986,75.257216999999969],[-114.41278099999994,75.24803199999991],[-114.39723200000003,75.238876000000005],[-114.30249000000003,75.1827550000001],[-114.297234,75.179152999999928],[-114.29472399999997,75.173309000000131],[-114.29804999999999,75.166655999999932],[-114.30860899999993,75.154709000000025],[-114.32112099999995,75.143326000000002],[-114.33528099999995,75.13108799999992],[-114.34944199999995,75.119140999999956],[-114.36749299999985,75.106934000000024],[-114.39499699999993,75.090546000000131],[-114.42971799999987,75.073044000000095],[-114.46640000000002,75.06053199999991],[-114.48332199999987,75.056090999999981],[-114.51889,75.050261999999975],[-114.60082999999997,75.038315000000011],[-114.72416699999997,75.011932000000058],[-114.76342799999998,75.002472000000012],[-114.825287,74.988037000000077],[-114.88861099999991,74.977478000000019],[-114.94915800000001,74.969986000000063],[-115.03222699999992,74.961655000000007],[-115.05082700000003,74.961104999999975],[-115.066101,74.961655000000007],[-115.16055299999999,74.979430999999977],[-115.18582200000003,74.985259999999982],[-115.195267,74.989975000000015],[-115.22609699999992,75.049713000000054],[-115.22638699999993,75.058318999999983],[-115.225281,75.064147999999989],[-115.21861299999995,75.070831000000112],[-115.21167000000003,75.07638500000013],[-115.199432,75.082763999999997],[-115.18331899999993,75.088882000000126],[-115.17415599999993,75.094147000000021],[-115.17304999999999,75.099990999999989],[-115.17278299999992,75.10775799999999],[-115.17832899999996,75.115814000000057],[-115.216949,75.167480000000126],[-115.23554999999993,75.174698000000092],[-115.24861099999998,75.178314],[-115.25695799999994,75.179977000000065],[-115.26083399999993,75.179977000000065],[-115.25611900000001,75.178040000000067],[-115.252228,75.173874000000126],[-115.25361599999991,75.164429000000098],[-115.256393,75.158035000000041],[-115.26139799999999,75.151932000000102],[-115.27916699999997,75.140823000000012],[-115.291382,75.134430000000066],[-115.33640300000002,75.116652999999985],[-115.35305799999998,75.111099000000024],[-115.37304699999999,75.105820000000051],[-115.38694799999996,75.102203000000088],[-115.40416700000003,75.098877000000016],[-115.42666600000001,75.098038000000088],[-115.451683,75.098877000000016],[-115.48361199999994,75.106093999999985],[-115.51944700000001,75.117751999999996],[-115.62389399999995,75.121368000000018],[-115.60472099999993,75.108597000000088],[-115.54888899999997,75.055817000000047],[-115.53971899999993,75.044434000000081],[-115.53751399999993,75.039429000000041],[-115.53751399999993,75.027205999999978],[-115.54527300000001,75.015823000000125],[-115.5516659999999,75.009155000000135],[-115.57472200000001,74.998321999999973],[-115.60249299999998,74.98553499999997],[-115.61833200000001,74.979155999999932],[-115.658051,74.967208999999968],[-115.67194399999988,74.964706000000035],[-115.69055200000003,74.964157000000057],[-115.73500100000001,74.967208999999968],[-115.75723299999999,74.969986000000063],[-115.84777800000001,74.98553499999997],[-116.16306299999991,75.040267999999969],[-116.27916699999997,75.099425999999994],[-116.28639199999992,75.13108799999992],[-116.27694699999995,75.135268999999994],[-116.26889,75.141373000000044],[-116.2455369999999,75.162766000000147],[-116.24109599999997,75.168869000000086],[-116.23860200000001,75.196930000000009],[-116.23916599999995,75.201385000000016],[-116.24694799999992,75.205261000000064],[-116.26834100000002,75.206100000000049],[-116.287216,75.205551000000071],[-116.52722199999999,75.184708000000001],[-116.56054699999999,75.179152999999928],[-116.58084100000002,75.174423000000104],[-116.59388699999994,75.170258000000103],[-116.60249299999998,75.164993000000038],[-116.618607,75.152481000000023],[-116.66332999999997,75.122481999999991],[-116.679169,75.117203000000018],[-116.69415299999997,75.116652999999985],[-116.71721599999995,75.116652999999985],[-117.16860999999994,75.157486000000063],[-117.38417099999992,75.178588999999988],[-117.41915899999992,75.182480000000055],[-117.45777899999996,75.188873000000001],[-117.47501399999993,75.192200000000128],[-117.66361999999998,75.239150999999993],[-117.67832900000002,75.244431000000077],[-117.68305999999995,75.248596000000077],[-117.68388400000003,75.253052000000139],[-117.67166099999997,75.288879000000122],[-117.666946,75.294144000000017],[-117.66194199999995,75.298035000000084],[-117.53666699999997,75.361649],[-117.45527599999997,75.400269000000094],[-117.42054699999994,75.413315000000068],[-117.35360699999995,75.437485000000038],[-117.32112099999995,75.448593000000074],[-117.26139799999993,75.468871999999976],[-117.24054699999999,75.473602000000028],[-117.218887,75.476379000000122],[-117.14666699999998,75.480270000000019],[-117.10305799999998,75.482208000000128],[-117.041382,75.483597000000145],[-116.89778100000001,75.482482999999945],[-116.87748699999997,75.481368999999972],[-116.75334199999998,75.479431000000034],[-116.13474300000001,75.476379000000122],[-116.11554699999994,75.476928999999984],[-116.02194199999997,75.484985000000052],[-115.97332799999998,75.492751999999996],[-115.92250100000001,75.503876000000048],[-115.81833599999987,75.529709000000025],[-115.68888900000002,75.56442300000009],[-115.64639299999999,75.573607999999922],[-115.61972000000003,75.578872999999987],[-115.56527699999987,75.583878000000027],[-115.53056299999997,75.584991000000116],[-115.50611900000001,75.587204000000099],[-115.46305799999999,75.591933999999924],[-115.36609599999997,75.602768000000026],[-115.28832999999997,75.620529000000147],[-115.28611799999993,75.624420000000043],[-115.27722199999999,75.630539000000056],[-115.26777600000003,75.635818000000029],[-115.20333900000003,75.657211000000132],[-115.18611099999993,75.662766000000033],[-115.09665699999994,75.687194999999974],[-115.08194700000001,75.689423000000147],[-115.07028200000002,75.689972000000068],[-115.04250300000001,75.689697000000081],[-114.99973299999994,75.690811000000053],[-114.99804699999999,75.695816000000093],[-115.00556899999992,75.698868000000004],[-115.02834300000001,75.701660000000118],[-115.05277999999998,75.703048999999908],[-115.07611099999991,75.702484000000084],[-115.10305800000003,75.700821000000133],[-115.14555399999995,75.694138000000009],[-115.21721600000001,75.679321000000073],[-115.27916699999997,75.667755],[-115.32472199999995,75.659988000000055],[-115.38305700000001,75.653870000000097],[-115.40194699999995,75.652480999999966],[-115.47193900000002,75.650269000000037],[-115.51888999999994,75.649994000000049],[-115.60637700000001,75.651093000000003],[-115.66750299999995,75.647217000000126],[-115.71444700000001,75.642487000000131],[-115.889183,75.614426000000037],[-116.09166700000003,75.580551000000128],[-116.108047,75.574157999999954],[-116.11916400000001,75.572768999999994],[-116.34750399999996,75.559143000000006],[-116.38971700000002,75.5577550000001],[-116.46028099999995,75.557480000000055],[-116.48610699999995,75.5577550000001],[-116.84361299999989,75.564987000000031],[-117.19499200000001,75.573607999999922],[-117.21556099999998,75.574707000000103],[-117.23277300000001,75.576935000000049],[-117.24276700000001,75.580551000000128],[-117.25,75.586105000000089],[-117.25110599999994,75.597488000000112],[-117.24833699999999,75.603043000000014],[-117.23999000000003,75.614990000000148],[-117.23361199999994,75.620529000000147],[-117.21362299999993,75.633330999999998],[-117.07805599999995,75.707214000000079],[-117.06443799999994,75.714157000000114],[-117.03971899999999,75.725815000000125],[-117.02362099999993,75.732483000000116],[-117.01666299999994,75.737198000000149],[-116.95556599999992,75.761932000000115],[-116.923317,75.774704000000099],[-116.88667299999992,75.786926000000051],[-116.86888099999999,75.790543000000014],[-116.85056299999991,75.79304500000012],[-116.81639099999995,75.796371000000136],[-116.76278699999995,75.799988000000099],[-116.71972699999998,75.801650999999993],[-116.58860799999997,75.803314000000114],[-116.53056300000003,75.802765000000022],[-116.32417299999992,75.804703000000131],[-116.10582699999998,75.806931000000077],[-116.03721599999994,75.809708000000001],[-115.82305899999994,75.827208999999925],[-115.80444299999994,75.829987000000131],[-115.79444899999999,75.834152000000131],[-115.78415699999994,75.845260999999994],[-115.77971600000001,75.852203000000088],[-115.76500699999997,75.854431000000034],[-115.74944299999999,75.854980000000012],[-115.73693800000001,75.854431000000034],[-115.72638699999993,75.853317000000061],[-115.69193999999993,75.848328000000095],[-115.67388900000003,75.844147000000021],[-115.65943900000002,75.839706000000092],[-115.62277199999994,75.834427000000119],[-115.59445199999999,75.833327999999995],[-115.50723299999993,75.834991000000059],[-115.40499899999998,75.838043000000027],[-115.38194299999992,75.839706000000092],[-115.36416599999995,75.844147000000021],[-115.35193599999997,75.852203000000088],[-115.31360599999994,75.855255],[-115.13945000000001,75.859421000000111],[-115.07277699999986,75.85775799999999],[-115.04998799999998,75.855820000000051],[-115.00083899999998,75.853317000000061],[-114.98082699999992,75.853043000000127],[-114.932503,75.856644000000017],[-114.91194199999995,75.859711000000118],[-114.83860799999997,75.874419999999986],[-114.817497,75.880814000000044],[-114.80444299999994,75.886932000000002],[-114.798607,75.892212000000029],[-114.80999800000001,75.899428999999941],[-114.82417299999986,75.904160000000104],[-114.83667000000003,75.905822999999998],[-114.88166799999993,75.907486000000119],[-114.90722700000003,75.906372000000147],[-115.01806599999992,75.89888000000002],[-115.06416299999989,75.894714000000135],[-115.10527000000002,75.888596000000007],[-115.22165699999999,75.880264000000011],[-115.29277000000002,75.878311000000053],[-115.39472999999992,75.877762000000132],[-115.54055799999998,75.881362999999965],[-115.68222000000003,75.888321000000133],[-115.74694799999986,75.889434999999935],[-115.83029199999993,75.887772000000041],[-115.86888099999999,75.884430000000066],[-116.00472999999994,75.868590999999981],[-116.05332899999991,75.865540000000124],[-116.10665899999998,75.864150999999936],[-116.13474300000001,75.86442599999998],[-116.15083299999992,75.864700000000084],[-116.48277299999995,75.873871000000065],[-116.62389400000001,75.881927000000132],[-116.64972699999998,75.884995000000117],[-116.67666600000001,75.889709000000039],[-116.69972199999995,75.894989000000123],[-116.71501199999994,75.900269000000037],[-116.72444200000001,75.906372000000147],[-116.73416099999992,75.922484999999995],[-116.73361199999999,75.928589000000045],[-116.73137699999995,75.945251000000042],[-116.72666899999996,75.951385000000016],[-116.71389799999997,75.956649999999911],[-116.69972199999995,75.959990999999945],[-116.67748999999998,75.963882000000012],[-116.63221699999997,75.969147000000078],[-116.58528099999995,75.971924000000001],[-116.56139400000001,75.972762999999986],[-116.53721599999994,75.972488000000112],[-116.51611300000002,75.971100000000035],[-116.48528299999998,75.966385000000002],[-116.470551,75.96887200000009],[-116.46193700000003,75.974991000000102],[-116.46833800000002,75.986374000000126],[-116.52834299999995,76.027480999999966],[-116.60221899999993,76.022216999999955],[-116.645554,76.023041000000092],[-116.66944899999999,76.025818000000015],[-116.6875,76.02915999999999],[-116.69888300000002,76.034424000000115],[-116.70556599999998,76.039153999999996],[-116.708618,76.043869000000029],[-116.70777900000002,76.049988000000042],[-116.70612299999999,76.05386400000009],[-116.70168299999995,76.059982000000048],[-116.69638099999992,76.064987000000087],[-116.64138800000001,76.113312000000121],[-116.53388999999999,76.153320000000008],[-116.51611300000002,76.157761000000107],[-116.34221599999995,76.183043999999995],[-116.29611199999999,76.188582999999994],[-116.21362299999998,76.194977000000051],[-116.16361999999992,76.197204999999997],[-116.08416699999998,76.198318000000086],[-116.05943300000001,76.198029000000133],[-115.95889299999999,76.194138000000066],[-115.90862300000003,76.191924999999912],[-115.86554699999999,76.188309000000061],[-115.81582600000002,76.186920000000043],[-115.64334099999996,76.186096000000077],[-115.59500100000002,76.187759000000028],[-115.44721999999996,76.186920000000043],[-115.32749899999999,76.184708000000001],[-115.27306399999998,76.18220500000001],[-115.154449,76.169434000000081],[-115.13027999999997,76.165816999999947],[-115.02166699999998,76.15637200000009],[-114.87554899999998,76.149719000000118],[-114.85109699999992,76.149429000000112],[-114.79077100000001,76.151077000000043],[-114.72833300000002,76.153046000000074],[-114.68499799999995,76.156097000000045],[-114.66972399999997,76.158325000000048],[-114.66251399999999,76.160537999999974],[-114.662781,76.161651999999947],[-114.68083199999995,76.164992999999981],[-114.70639,76.167205999999965],[-114.80082699999997,76.168594000000041],[-114.85056299999997,76.170258000000047],[-114.89862099999993,76.172485000000108],[-114.94499200000001,76.176085999999998],[-114.99305700000002,76.182480000000055],[-115.00974299999996,76.187485000000095],[-115.01444999999995,76.192749000000049],[-115.02250700000002,76.196929999999952],[-115.04527300000001,76.202208999999982],[-115.08944699999995,76.208878000000027],[-115.15972899999997,76.218596999999988],[-115.27223200000003,76.230270000000019],[-115.37304699999999,76.230820000000051],[-115.54943800000001,76.230545000000063],[-115.75666799999993,76.234146000000123],[-115.78195199999993,76.235260000000096],[-115.82721699999991,76.23942599999998],[-115.84777800000001,76.243042000000059],[-115.86665299999993,76.247482000000048],[-115.88194299999992,76.252776999999924],[-115.91471899999993,76.275269000000037],[-115.92166099999997,76.281096999999932],[-115.92500299999989,76.286652000000061],[-115.90943899999996,76.345535000000041],[-115.90139799999997,76.349991000000102],[-115.86054999999999,76.362488000000099],[-115.64835399999998,76.420258000000047],[-115.62638899999996,76.425812000000008],[-115.51471700000002,76.45138500000013],[-115.49973299999994,76.454712000000086],[-115.46665999999993,76.455826000000059],[-115.26944700000001,76.461105000000032],[-115.02139299999993,76.474700999999982],[-115.00167799999997,76.477203000000088],[-114.978882,76.481658999999979],[-114.95638999999994,76.487198000000149],[-114.94638099999992,76.492477000000122],[-114.93360899999999,76.504990000000021],[-114.92999299999997,76.510268999999994],[-114.91944899999999,76.514435000000105],[-114.89972699999987,76.516936999999984],[-114.74054699999988,76.517212000000029],[-114.71112099999999,76.516936999999984],[-114.70194999999995,76.515274000000034],[-114.69611399999991,76.511382999999967],[-114.69833399999999,76.507492000000127],[-114.720551,76.501099000000124],[-114.70694699999996,76.489700000000028],[-114.61028299999992,76.488312000000121],[-114.45140099999998,76.49693300000007],[-114.29361,76.480269999999962],[-114.25167799999991,76.474990999999989],[-114.20722999999987,76.46804800000001],[-114.17471299999994,76.460266000000047],[-114.14806399999998,76.45138500000013],[-114.13555899999989,76.446365000000071],[-114.11833199999995,76.435257000000092],[-114.11193800000001,76.429428000000087],[-114.10333299999996,76.418869000000029],[-114.096947,76.403595000000109],[-114.09111000000001,76.388885000000016],[-114.10611,76.35554500000012],[-114.11749299999997,76.353317000000004],[-114.12943999999993,76.31191999999993],[-114.05972299999996,76.21775800000006],[-113.99665800000002,76.192749000000049],[-113.98332199999999,76.190262000000018],[-113.9583439999999,76.188873000000001],[-113.94833399999999,76.189423000000033],[-113.70889299999999,76.203598000000113],[-113.685272,76.206100000000049],[-113.63890100000003,76.212769000000094],[-113.61609599999997,76.218323000000055],[-113.52443700000003,76.235809000000017],[-113.36501299999992,76.258605999999929],[-113.32333399999993,76.262772000000041],[-113.26055899999994,76.264434999999992],[-112.99916100000002,76.267487000000074],[-112.95667300000002,76.263611000000026],[-112.90972899999997,76.257491999999957],[-112.89222699999993,76.253876000000105],[-112.86860699999994,76.244704999999954],[-112.85888699999998,76.239975000000129],[-112.85305800000003,76.234146000000123],[-112.75055700000001,76.200546000000031],[-112.71721599999995,76.198318000000086],[-112.62138399999998,76.198318000000086],[-112.59028599999999,76.196639999999945],[-112.48194899999999,76.181366000000082],[-112.46278399999994,76.178313999999943],[-112.45388800000001,76.176376000000005],[-112.42500299999995,76.167755000000113],[-112.43138099999993,76.161926000000108],[-112.43859900000001,76.15887500000008],[-112.47721899999999,76.151382000000012],[-112.49416400000001,76.146652000000017],[-112.50389099999995,76.138596000000121],[-112.52610800000002,76.110535000000027],[-112.52806099999998,76.103867000000037],[-112.52278100000001,76.099152000000004],[-112.42278299999987,76.047211000000118],[-112.41332999999992,76.042480000000012],[-112.38555899999994,76.036652000000061],[-112.29888900000003,76.029434000000094],[-112.15416699999997,76.014998999999989],[-112.06861899999996,76.003326000000129],[-112.04332699999992,75.998871000000122],[-111.9786069999999,75.981369000000086],[-111.78443900000002,75.949707000000103],[-111.76390100000003,75.946930000000009],[-111.75279199999994,75.942749000000106],[-111.72778299999999,75.92164600000001],[-111.72666900000002,75.915817000000004],[-111.729446,75.911101999999971],[-111.736107,75.90498400000007],[-111.77749599999999,75.894714000000135],[-111.87138400000003,75.887496999999996],[-111.94444299999998,75.884995000000117],[-112.00945300000001,75.881652999999972],[-112.03472899999997,75.879974000000004],[-112.05222300000003,75.878036000000066],[-112.07501200000002,75.873871000000065],[-112.165009,75.851928999999984],[-112.17971799999998,75.848038000000088],[-112.18694299999993,75.844986000000006],[-112.22556299999997,75.811096000000077],[-112.218613,75.808029000000147],[-112.20834399999995,75.80664100000007],[-112.19248999999996,75.805817000000104],[-112.02834299999995,75.815261999999962],[-111.85861199999988,75.826934999999992],[-111.69082599999996,75.822769000000108],[-111.64499699999993,75.821655000000135],[-111.604446,75.826660000000004],[-111.53971899999993,75.838318000000015],[-111.49638400000003,75.839706000000092],[-111.47638699999999,75.839157],[-111.45195000000001,75.836655000000064],[-111.44499200000001,75.832213999999965],[-111.35527000000002,75.724426000000108],[-111.35388199999994,75.718597000000102],[-111.35500299999995,75.714432000000102],[-111.38971700000002,75.663039999999967],[-111.40834000000001,75.620818999999983],[-111.40722700000003,75.614990000000148],[-111.35360700000001,75.57249500000006],[-111.31861900000001,75.545258000000103],[-111.27139299999999,75.522491000000002],[-111.24722299999996,75.518051000000014],[-111.22165699999999,75.516936999999984],[-110.995003,75.529160000000047],[-110.97222899999997,75.532486000000119],[-110.89943700000003,75.550262000000089],[-110.79499799999996,75.565262000000018],[-110.77166699999992,75.566666000000055],[-110.54222099999993,75.568878000000097],[-110.49553699999996,75.569153000000085],[-110.47582999999992,75.568329000000119],[-110.45612299999999,75.565535999999952],[-110.43110699999994,75.554152999999985],[-110.42443799999995,75.548873999999955],[-110.42223399999995,75.545532000000037],[-110.33389299999993,75.539154000000053],[-110.19583099999994,75.539703000000031],[-110.06777999999997,75.540543000000071],[-109.97416699999991,75.537490999999989],[-109.75,75.529709000000025],[-109.55304699999999,75.521652000000017],[-109.30444299999999,75.514999000000046],[-109.25389100000001,75.514160000000118],[-109.18360899999999,75.5086060000001],[-109.07472199999995,75.498322000000087],[-108.93639400000001,75.47665399999994],[-108.89943699999998,75.476379000000122],[-108.89584399999995,75.477203000000088],[-108.891953,75.480270000000019],[-108.91639700000002,75.513321000000133],[-108.92443800000001,75.52388000000002],[-108.83612099999993,75.612762000000032],[-108.8269499999999,75.686646000000053],[-108.84277299999991,75.691359999999975],[-108.88194299999998,75.692200000000071],[-108.91332999999992,75.691086000000041],[-108.94499199999996,75.694976999999938],[-109.05832699999996,75.728043000000071],[-109.05860899999993,75.733047000000056],[-109.06276699999989,75.737762000000089],[-109.12638900000002,75.7494200000001],[-109.21000699999996,75.762771999999984],[-109.26555599999995,75.770264000000054],[-109.30526700000001,75.771103000000039],[-109.45221700000002,75.783051000000057],[-109.62943999999993,75.799988000000099],[-109.63751200000002,75.822769000000108],[-109.62805200000003,75.829162999999994],[-109.62638900000002,75.83248900000001],[-109.65722699999992,75.866379000000109],[-109.66361999999998,75.870819000000097],[-109.72972099999998,75.876647999999932],[-109.737503,75.876647999999932],[-109.845551,75.863036999999963],[-109.85722399999992,75.860809000000017],[-109.88390400000003,75.849991000000045],[-109.90778399999994,75.849991000000045],[-109.93639399999989,75.856644000000017],[-110.05555699999996,75.890548999999908],[-110.05583200000001,75.894439999999975],[-110.04055800000003,75.898604999999975],[-109.92610200000001,75.927765000000079],[-109.826683,75.930541999999946],[-109.69776899999999,75.940262000000075],[-109.672234,75.943862999999908],[-109.65666199999998,75.94802900000002],[-109.42138699999998,76.035812000000021],[-109.30499299999991,76.100540000000137],[-109.30943300000001,76.106094000000098],[-109.31360599999999,76.109146000000067],[-109.396118,76.133041000000048],[-109.69999699999994,76.218872000000033],[-109.72250400000001,76.222213999999951],[-109.80943300000001,76.234421000000111],[-109.83416699999998,76.236099000000024],[-109.85861199999999,76.235809000000017],[-109.882767,76.233871000000079],[-109.89666699999992,76.230270000000019],[-109.90222199999999,76.226089000000115],[-109.90167199999996,76.221099999999979],[-109.88305699999995,76.198868000000118],[-109.88667299999997,76.194977000000051],[-109.89666699999992,76.193588000000034],[-109.91944899999993,76.196639999999945],[-109.94055200000003,76.20248400000014],[-110.01471700000002,76.229706000000078],[-110.06833599999993,76.250000000000057],[-110.08528100000001,76.255829000000062],[-110.12332199999997,76.266098000000056],[-110.15306099999998,76.27388000000002],[-110.201683,76.285538000000031],[-110.24109599999991,76.290543000000127],[-110.26583900000003,76.291367000000093],[-110.33138999999989,76.290817000000061],[-110.35804699999994,76.292206000000022],[-110.372772,76.294433999999967],[-110.38362099999995,76.297760000000039],[-110.39306599999986,76.391937000000098],[-110.38527699999986,76.423035000000084],[-110.38390400000003,76.427475000000129],[-110.28943600000002,76.433044000000109],[-110.095551,76.454163000000108],[-109.80721999999997,76.490540000000124],[-109.74638400000003,76.505553999999961],[-109.71833799999996,76.515274000000034],[-109.70639,76.521103000000096],[-109.70694700000001,76.526093000000117],[-109.71140300000002,76.529984000000013],[-109.72416699999997,76.531662000000097],[-109.74916100000002,76.531662000000097],[-109.81111099999993,76.527206000000035],[-109.83222999999992,76.529160000000047],[-109.84722899999991,76.532486000000063],[-109.83750900000001,76.538879000000065],[-109.75527999999997,76.572768999999937],[-109.70667299999997,76.587494000000106],[-109.64666699999998,76.593323000000112],[-109.56082199999997,76.640823000000069],[-109.5097429999999,76.708328000000051],[-109.30277999999998,76.79693600000013],[-109.22277800000001,76.808029000000147],[-109.12777699999992,76.819443000000035],[-109.02583299999998,76.822769000000108],[-108.97444199999995,76.816086000000098],[-108.95084400000002,76.81164600000011],[-108.93582200000003,76.809417999999937],[-108.91887699999995,76.809417999999937],[-108.88945000000001,76.814147999999989],[-108.84500099999997,76.823608000000036],[-108.82195299999989,76.829987000000074],[-108.81331599999999,76.833878000000141],[-108.81360599999999,76.837769000000037],[-108.81582600000002,76.84304800000001],[-108.81388899999996,76.847488000000055],[-108.78859699999992,76.857208000000128],[-108.77362099999999,76.85775799999999],[-108.74804699999999,76.855820000000051],[-108.65556300000003,76.817490000000078],[-108.65110800000002,76.813599000000011]],[[-97.045272999999952,76.797760000000096],[-97.075287000000003,76.793320000000108],[-97.093886999999995,76.79693600000013],[-97.188598999999954,76.822769000000108],[-97.200561999999991,76.829437000000041],[-97.200835999999924,76.834152000000074],[-97.200835999999924,76.857482999999945],[-97.187499999999943,76.860260000000039],[-97.149170000000026,76.859711000000118],[-97.128875999999991,76.85775799999999],[-97.086945000000014,76.851089000000115],[-97.005004999999983,76.819716999999969],[-96.997222999999963,76.813309000000004],[-97.009170999999981,76.807479999999998],[-97.026397999999915,76.802475000000129],[-97.045272999999952,76.797760000000096]],[[-113.46610999999996,76.766388000000006],[-113.61361699999992,76.713043000000084],[-113.628601,76.708038000000045],[-113.65249599999999,76.704436999999984],[-113.67999299999985,76.704436999999984],[-113.70417799999996,76.706374999999923],[-113.78472899999997,76.717209000000025],[-113.83667000000003,76.719986000000063],[-113.889183,76.718597000000102],[-114.05471799999992,76.703598000000056],[-114.16194200000001,76.716933999999981],[-114.21444699999995,76.720535000000041],[-114.50110599999999,76.73414600000001],[-114.73416099999997,76.746643000000006],[-114.78694200000001,76.750274999999931],[-114.82501200000002,76.753601000000003],[-114.85888699999998,76.758040999999992],[-114.87304699999993,76.760818000000086],[-114.87526700000001,76.765549000000021],[-114.87581599999999,76.770827999999995],[-114.85526999999996,76.794434000000081],[-114.83721899999989,76.801650999999993],[-114.80444299999994,76.813309000000004],[-114.76666299999988,76.82388300000008],[-114.62416099999996,76.86192299999999],[-114.60637700000001,76.865814000000057],[-114.58583099999993,76.867476999999951],[-114.33693700000003,76.877197000000081],[-114.13834400000002,76.884430000000066],[-113.96221899999995,76.889984000000084],[-113.885559,76.891663000000051],[-113.80750299999994,76.889435000000105],[-113.7625119999999,76.884430000000066],[-113.73444399999994,76.879149999999981],[-113.49804699999993,76.833328000000108],[-113.48750299999989,76.827773999999977],[-113.44915799999995,76.777205999999978],[-113.45388800000001,76.772765999999933],[-113.46610999999996,76.766388000000006]],[[-109.06610099999995,76.900543000000084],[-109.07444800000002,76.894714000000079],[-109.12581599999987,76.898604999999975],[-109.22917200000001,76.906936999999971],[-109.254997,76.910812000000135],[-109.29888899999997,76.922211000000061],[-109.30777,76.928040000000067],[-109.30387899999994,76.933867999999961],[-109.28278399999999,76.937759000000028],[-109.256958,76.938873000000058],[-109.20527600000003,76.935256999999979],[-109.17944299999999,76.932480000000055],[-109.12721299999998,76.923873999999955],[-109.09249899999992,76.912200999999925],[-109.07695000000001,76.906097000000102],[-109.06610099999995,76.900543000000084]],[[-97.256392999999946,76.967484000000127],[-97.284164000000033,76.965820000000122],[-97.335007000000019,76.968048000000067],[-97.40943900000002,76.973037999999974],[-97.458618000000001,76.977203000000145],[-97.473052999999936,76.980545000000063],[-97.423889000000031,77.005829000000062],[-97.374709999999936,77.022491000000059],[-97.286117999999874,77.033325000000104],[-97.243057000000022,77.037491000000045],[-97.199158000000011,77.037766000000033],[-97.154723999999931,77.030273000000022],[-97.136672999999973,77.025542999999971],[-97.092223999999987,77.010818000000029],[-97.093063000000029,77.004990000000134],[-97.231109999999944,76.971375000000023],[-97.256392999999946,76.967484000000127]],[[-95.659728999999913,77.058868000000075],[-95.585555999999883,77.053314000000057],[-95.56082200000003,77.053589000000045],[-95.465285999999935,77.058319000000097],[-95.417769999999962,77.05693100000002],[-95.386672999999973,77.052475000000072],[-95.368331999999953,77.048599000000024],[-95.337218999999948,77.039978000000076],[-95.288054999999872,77.022491000000059],[-95.224715999999944,77.006378000000041],[-95.181945999999925,76.996368000000132],[-95.168334999999956,76.99414100000007],[-95.115829000000019,76.995818999999983],[-95,76.99054000000001],[-94.906386999999881,76.976089000000002],[-94.813888999999904,76.971375000000023],[-94.728606999999954,76.972762999999929],[-94.714172000000019,76.97387700000013],[-94.688599000000011,76.97526600000009],[-94.636123999999995,76.976929000000041],[-94.593063000000029,76.975540000000024],[-94.526397999999972,76.969437000000084],[-94.510009999999909,76.966094999999996],[-94.494155999999919,76.960265999999933],[-94.489715999999987,76.956100000000049],[-94.40194699999995,76.918319999999994],[-94.25778200000002,76.896378000000084],[-94.254729999999995,76.891373000000044],[-94.238891999999964,76.889435000000105],[-94.207229999999925,76.888046000000088],[-94.15972899999997,76.887496999999996],[-94.096389999999985,76.888885000000073],[-94.081680000000006,76.89027400000009],[-94.054992999999854,76.894714000000079],[-94.032226999999921,76.903320000000008],[-94.026107999999965,76.909149000000014],[-94.010559000000001,76.919144000000131],[-94.001113999999916,76.923598999999967],[-93.986663999999962,76.928864000000033],[-93.964721999999995,76.932480000000055],[-93.943603999999937,76.933867999999961],[-93.899993999999936,76.93331900000004],[-93.755004999999926,76.922484999999995],[-93.739166000000012,76.920822000000044],[-93.658339999999896,76.909987999999998],[-93.649445000000014,76.908035000000041],[-93.641953000000001,76.905258000000117],[-93.635833999999988,76.89888000000002],[-93.488602000000014,76.839706000000092],[-93.301392000000021,76.768600000000049],[-93.208054000000004,76.746933000000013],[-93.202788999999939,76.747481999999934],[-93.192214999999976,76.747208000000001],[-93.187499999999943,76.745529000000033],[-93.179717999999923,76.741088999999988],[-93.169723999999974,76.686919999999986],[-93.174438000000009,76.674987999999985],[-93.18638599999997,76.660812000000021],[-93.300277999999878,76.552199999999971],[-93.306655999999919,76.54664600000001],[-93.461394999999982,76.49832200000003],[-93.595276000000013,76.462493999999992],[-93.629989999999964,76.451934999999992],[-93.641953000000001,76.44720500000011],[-93.651947000000007,76.441650000000038],[-93.652221999999938,76.437759000000142],[-93.650283999999999,76.43553200000008],[-93.548339999999882,76.386108000000092],[-93.528609999999958,76.384720000000016],[-93.509445000000028,76.386658000000125],[-93.498336999999992,76.388885000000016],[-93.46362299999987,76.399429000000055],[-93.456954999999994,76.403595000000109],[-93.467399999999998,76.40792799999997],[-93.480559999999969,76.409927000000039],[-93.500838999999985,76.4102630000001],[-93.508895999999993,76.406647000000078],[-93.520554000000004,76.405823000000112],[-93.537780999999995,76.407486000000006],[-93.554992999999968,76.411377000000073],[-93.570846999999958,76.416382000000112],[-93.580565999999976,76.423035000000084],[-93.576401000000033,76.426650999999993],[-93.533065999999963,76.443039000000056],[-93.518889999999999,76.448318000000029],[-93.501403999999923,76.452209000000096],[-93.476562000000001,76.454772999999932],[-93.454223999999954,76.456436000000053],[-93.422226000000023,76.458328000000108],[-93.392776000000026,76.461655000000064],[-93.370270000000005,76.466385000000059],[-93.357223999999917,76.470535000000098],[-93.123610999999926,76.573043999999982],[-93.111114999999927,76.580276000000083],[-93.095276000000013,76.590546000000018],[-93.096953999999926,76.596649000000127],[-93.09973100000002,76.601653999999996],[-93.046386999999925,76.616089000000102],[-92.945830999999998,76.622482000000048],[-92.90306099999998,76.621918000000107],[-92.880279999999971,76.620818999999983],[-92.857223999999917,76.618317000000047],[-92.789718999999934,76.609146000000123],[-92.705276000000026,76.594437000000084],[-92.68360899999999,76.592484000000127],[-92.654998999999975,76.594711000000018],[-92.642501999999979,76.598037999999974],[-92.632767000000001,76.602478000000133],[-92.618057000000022,76.607483000000002],[-92.605834999999956,76.610535000000141],[-92.564437999999939,76.616089000000102],[-92.541106999999897,76.617752000000053],[-92.506393000000003,76.617477000000008],[-92.468338000000017,76.61303700000002],[-92.440825999999959,76.603317000000118],[-92.42111199999988,76.598037999999974],[-92.40055799999999,76.594986000000006],[-92.386948000000018,76.593872000000033],[-92.36860699999994,76.594437000000084],[-92.330840999999964,76.597214000000008],[-92.183318999999983,76.614699999999914],[-92.077498999999989,76.637207000000046],[-92.043609999999887,76.646942000000081],[-92.004332999999917,76.657897999999932],[-91.991942999999992,76.660812000000021],[-91.970001000000025,76.664428999999984],[-91.938599000000011,76.668320000000051],[-91.910003999999901,76.670532000000094],[-91.775557999999933,76.679703000000018],[-91.668609999999944,76.684708000000057],[-91.535827999999924,76.688873000000058],[-91.410552999999936,76.689148000000102],[-91.385283999999956,76.688309000000118],[-91.132767000000001,76.664428999999984],[-91.008895999999936,76.651657000000114],[-90.986114999999984,76.649155000000064],[-90.883895999999936,76.626647999999989],[-90.871383999999978,76.622757000000092],[-90.854720999999984,76.61554000000001],[-90.849990999999875,76.609146000000123],[-90.844161999999926,76.603592000000106],[-90.837218999999948,76.599152000000117],[-90.817779999999971,76.593597000000045],[-90.779998999999975,76.585815000000082],[-90.741104000000007,76.580551000000071],[-90.674438000000009,76.573318000000086],[-90.626388999999961,76.56999200000007],[-90.582503999999972,76.565262000000018],[-90.56361400000003,76.559708000000001],[-90.50306699999993,76.53137200000009],[-90.498610999999926,76.524993999999936],[-90.468613000000005,76.479155999999989],[-90.468063000000029,76.473038000000088],[-90.48332199999993,76.46804800000001],[-90.510833999999988,76.463882000000126],[-90.538054999999929,76.46138000000002],[-90.61610399999995,76.45637499999998],[-90.638335999999924,76.455826000000059],[-90.779175000000009,76.461105000000032],[-90.826400999999976,76.463042999999971],[-91.090560999999923,76.478043000000127],[-91.304169000000002,76.504166000000055],[-91.34973100000002,76.509430000000066],[-91.373885999999857,76.511107999999979],[-91.414718999999934,76.512771999999984],[-91.441101000000003,76.512771999999984],[-91.564162999999951,76.500823999999966],[-91.566665999999998,76.498871000000008],[-91.416396999999961,76.460266000000047],[-91.402495999999985,76.457488999999953],[-91.271117999999944,76.453873000000101],[-91.147506999999962,76.450821000000019],[-91.057219999999973,76.450546000000145],[-90.99110399999995,76.447754000000089],[-90.974166999999966,76.446091000000138],[-90.797774999999945,76.42692599999998],[-90.642226999999991,76.410537999999917],[-90.414443999999946,76.403046000000018],[-90.368331999999953,76.399994000000049],[-90.317229999999938,76.394714000000022],[-90.281386999999995,76.389160000000004],[-90.06361400000003,76.361648999999943],[-89.831389999999942,76.34027100000003],[-89.543883999999935,76.316939999999988],[-89.367766999999958,76.304152999999985],[-89.305557000000022,76.299149],[-89.292496000000028,76.296097000000088],[-89.230559999999912,76.272766000000047],[-89.217772999999909,76.266663000000108],[-89.208617999999944,76.260818000000029],[-89.201110999999912,76.254166000000112],[-89.192214999999976,76.242203000000075],[-89.192490000000021,76.236099000000024],[-89.198607999999865,76.22526600000009],[-89.209166999999979,76.221099999999979],[-89.295546999999942,76.197754000000145],[-89.326400999999919,76.189423000000033],[-89.349730999999963,76.183594000000028],[-89.378051999999968,76.180267000000072],[-89.588332999999921,76.165816999999947],[-89.831954999999994,76.160812000000078],[-89.888610999999912,76.166091999999992],[-89.904175000000009,76.168869000000086],[-89.976105000000018,76.173874000000126],[-90.37332200000003,76.181366000000082],[-90.397780999999952,76.180542000000116],[-90.416945999999996,76.178863999999976],[-90.438598999999954,76.175537000000077],[-90.453613000000018,76.17053199999998],[-90.455840999999964,76.167205999999965],[-90.455565999999976,76.165543000000014],[-90.438598999999954,76.162201000000096],[-90.414443999999946,76.159987999999942],[-90.256957999999941,76.146942000000024],[-90.22222899999997,76.144440000000145],[-90.151671999999905,76.141663000000051],[-90.064162999999894,76.136932000000115],[-90.048614999999984,76.132751000000042],[-90.06361400000003,76.127762000000075],[-90.085280999999895,76.1244200000001],[-90.110824999999977,76.124145999999996],[-90.308884000000035,76.138321000000076],[-90.448607999999979,76.154984000000013],[-90.666397000000018,76.166930999999977],[-90.786117999999988,76.171371000000136],[-90.937209999999936,76.180817000000104],[-91.112212999999883,76.191924999999912],[-91.204726999999934,76.212769000000094],[-91.219726999999978,76.218323000000055],[-91.256957999999941,76.227203000000088],[-91.274444999999957,76.230270000000019],[-91.423614999999984,76.253876000000105],[-91.445830999999941,76.256653000000028],[-91.571395999999936,76.26527400000009],[-91.59722899999997,76.264999000000103],[-91.613616999999977,76.262206999999989],[-91.599730999999963,76.25610400000005],[-91.579453000000001,76.251663000000121],[-91.416655999999989,76.22526600000009],[-91.332779000000016,76.214157],[-91.33666999999997,76.178588999999988],[-91.27194199999991,76.155822999999941],[-91.220276000000013,76.161651999999947],[-91.203339000000028,76.16137700000013],[-91.163329999999974,76.159714000000008],[-91.116652999999985,76.15637200000009],[-90.882491999999957,76.137207000000103],[-90.700287000000003,76.119431000000134],[-90.67971799999998,76.117203000000018],[-90.665008999999998,76.112198000000149],[-90.757506999999976,76.07638500000013],[-90.785277999999948,76.072769000000051],[-90.809432999999956,76.071930000000066],[-90.833618000000001,76.072769000000051],[-90.855270000000019,76.072220000000129],[-90.862502999999947,76.069992000000127],[-90.866104000000007,76.067215000000033],[-90.864715999999987,76.064987000000087],[-90.848891999999978,76.060806000000014],[-90.71578199999999,76.06343099999998],[-90.703605999999922,76.064926000000014],[-90.663940000000025,76.074265000000025],[-90.660941999999864,76.076431000000014],[-90.611664000000019,76.084717000000069],[-90.599166999999966,76.088042999999971],[-90.575012000000015,76.090271000000087],[-90.548339999999939,76.091370000000097],[-90.474166999999966,76.089706000000035],[-90.429442999999992,76.088318000000129],[-90.408614999999998,76.08638000000002],[-90.194442999999922,76.062759000000142],[-90.190552000000025,76.06109600000002],[-90.193877999999984,76.055251999999996],[-90.202498999999989,76.050261999999975],[-90.215012000000002,76.04582199999993],[-90.233886999999925,76.041092000000106],[-90.27416999999997,76.034424000000115],[-90.301666000000012,76.032486000000006],[-90.328613000000018,76.031372000000033],[-90.404723999999931,76.031096999999988],[-90.635947999999985,76.028152000000034],[-90.718452000000013,76.022658999999976],[-90.904175000000009,76.015549000000021],[-90.929168999999888,76.015549000000021],[-91.005279999999971,76.024994000000049],[-91.144729999999981,76.021102999999982],[-91.160827999999924,76.018051000000071],[-91.155272999999909,76.014160000000004],[-91.069732999999928,75.990265000000022],[-90.950286999999946,75.962204000000099],[-90.941939999999988,75.955551000000128],[-90.938598999999954,75.951385000000016],[-90.941939999999988,75.945526000000029],[-90.948882999999967,75.939972000000012],[-90.968063000000029,75.931091000000094],[-91.016953000000001,75.925537000000077],[-91.070557000000008,75.922484999999995],[-91.100280999999995,75.918594000000098],[-91.118880999999931,75.913879000000065],[-91.129439999999988,75.908600000000092],[-91.143340999999964,75.897217000000069],[-91.125823999999852,75.857483000000002],[-91.132492000000013,75.851928999999984],[-91.135833999999932,75.846099999999979],[-91.134170999999924,75.842484000000127],[-91.129990000000021,75.839157],[-91.107498000000021,75.840545999999961],[-91.091675000000009,75.843323000000055],[-91.079452999999944,75.848038000000088],[-91.053328999999906,75.881087999999977],[-90.939986999999974,75.915268000000083],[-90.903060999999923,75.924698000000149],[-90.895844000000011,75.927200000000028],[-90.886123999999995,75.931655999999975],[-90.847778000000005,75.952208999999982],[-90.833618000000001,75.96026599999999],[-90.827788999999996,75.966385000000002],[-90.805557000000022,75.985535000000141],[-90.793883999999991,75.99470500000001],[-90.777495999999985,75.996094000000028],[-90.755843999999968,75.994980000000055],[-90.717223999999931,75.989151000000049],[-90.569457999999941,75.979980000000069],[-90.48332199999993,75.980270000000075],[-90.464447000000007,75.978591999999992],[-90.444716999999969,75.974151999999947],[-90.433318999999983,75.97026100000005],[-90.429442999999992,75.968323000000112],[-90.434158000000025,75.963318000000072],[-90.442490000000021,75.959717000000012],[-90.49221799999998,75.945816000000036],[-90.519164999999987,75.936096000000134],[-90.526107999999965,75.930541999999946],[-90.528335999999911,75.925537000000077],[-90.531386999999938,75.913605000000132],[-90.531676999999945,75.903595000000053],[-90.529998999999862,75.898331000000042],[-90.521118000000001,75.895538000000101],[-90.504729999999938,75.895263999999941],[-90.496947999999975,75.897766000000047],[-90.34722899999997,75.949417000000096],[-90.342223999999987,75.953049000000078],[-90.337783999999999,75.963043000000084],[-90.339447000000007,75.968323000000112],[-90.256957999999941,75.966933999999981],[-90.118057000000022,75.941924999999969],[-90.114440999999943,75.947753999999975],[-90.102492999999981,75.961654999999951],[-90.072509999999966,75.995529000000147],[-90.060271999999998,76.00471500000009],[-90.052779999999984,76.007217000000026],[-90.037506000000008,76.009155000000135],[-90.015015000000005,76.010269000000108],[-89.966659999999877,76.008605999999986],[-89.947495000000004,76.007217000000026],[-89.929717999999923,76.00471500000009],[-89.924437999999952,76.00221300000004],[-89.909163999999976,75.964995999999985],[-89.825012000000015,75.943038999999942],[-89.687499999999943,75.899993999999992],[-89.689986999999917,75.894989000000123],[-89.702224999999999,75.879700000000071],[-89.70944199999991,75.874146000000053],[-89.724441999999954,75.863036999999963],[-89.750290000000007,75.846649000000127],[-89.772781000000009,75.836380000000077],[-89.778885000000002,75.831665000000044],[-89.782227000000034,75.825821000000019],[-89.776397999999972,75.792755000000056],[-89.775008999999955,75.787491000000102],[-89.765014999999948,75.785812000000078],[-89.738891999999964,75.786652000000117],[-89.692490000000021,75.796371000000136],[-89.68638599999997,75.802474999999959],[-89.688048999999978,75.804428000000087],[-89.689162999999951,75.809708000000001],[-89.685546999999985,75.814147999999989],[-89.61999499999996,75.853592000000106],[-89.611114999999927,75.857208000000128],[-89.587508999999955,75.859146000000067],[-89.558334000000002,75.857483000000002],[-89.439163000000008,75.845260999999994],[-89.422774999999945,75.841934000000094],[-89.410277999999948,75.829712000000086],[-89.392501999999979,75.821105999999986],[-89.37777699999998,75.816665999999998],[-89.320007000000032,75.803863999999976],[-89.277495999999928,75.798324999999977],[-89.201401000000033,75.786926000000051],[-89.172775000000001,75.780548000000124],[-89.164169000000015,75.774704000000099],[-89.160278000000005,75.768051000000128],[-89.160552999999936,75.755828999999949],[-89.166945999999996,75.7452550000001],[-89.253890999999953,75.631088000000034],[-89.262787000000003,75.627761999999962],[-89.275008999999955,75.627761999999962],[-89.336670000000026,75.627761999999962],[-89.543059999999969,75.610535000000141],[-89.649170000000026,75.61554000000001],[-89.763061999999991,75.577484000000027],[-89.765288999999882,75.575546000000088],[-89.739440999999943,75.573607999999922],[-89.722504000000015,75.574157999999954],[-89.681945999999868,75.57998699999996],[-89.649993999999992,75.587204000000099],[-89.605559999999912,75.589705999999978],[-89.588332999999921,75.58859300000006],[-89.550995,75.579711999999972],[-89.542496000000028,75.570540999999992],[-89.548614999999984,75.566085999999984],[-89.56806899999998,75.5619200000001],[-89.628325999999959,75.561370999999951],[-89.676392000000021,75.562194999999917],[-89.692490000000021,75.561096000000134],[-89.706954999999994,75.557480000000055],[-89.700835999999981,75.553040000000067],[-89.645553999999947,75.548325000000034],[-89.576674999999966,75.547759999999982],[-89.550827000000027,75.548873999999955],[-89.526397999999915,75.551926000000094],[-89.515015000000005,75.554152999999985],[-89.500564999999995,75.558868000000018],[-89.491942999999992,75.565535999999952],[-89.473617999999874,75.574707000000103],[-89.458618000000001,75.579436999999928],[-89.441665999999998,75.583327999999995],[-89.431670999999994,75.584427000000005],[-89.403335999999967,75.587204000000099],[-89.351669000000015,75.589157000000057],[-89.302215999999987,75.589157000000057],[-89.235824999999977,75.586655000000121],[-89.217223999999987,75.584991000000116],[-89.182770000000005,75.577208999999982],[-89.174438000000009,75.572768999999994],[-89.168335000000013,75.566666000000055],[-89.156386999999938,75.549713000000111],[-89.154998999999975,75.544434000000138],[-89.149170000000026,75.532211000000075],[-89.143065999999976,75.524429000000112],[-89.09973100000002,75.484146000000067],[-88.963897999999972,75.431931000000077],[-88.950561999999934,75.429703000000131],[-88.921386999999982,75.427199999999971],[-88.87110899999999,75.43414300000012],[-88.841675000000009,75.436371000000065],[-88.818618999999956,75.436920000000043],[-88.796951000000035,75.434982000000105],[-88.779723999999987,75.432479999999998],[-88.768889999999942,75.434708000000001],[-88.747771999999941,75.470825000000104],[-88.75,75.474991000000045],[-88.801392000000021,75.531372000000147],[-88.865829000000019,75.586105000000089],[-88.755004999999983,75.676650999999936],[-88.738892000000021,75.67942800000003],[-88.722777999999892,75.679153000000042],[-88.678329000000019,75.675261999999975],[-88.631667999999991,75.667206000000078],[-88.600829999999917,75.659424000000115],[-88.574172999999917,75.648880000000077],[-88.542770000000019,75.635818000000029],[-88.50778200000002,75.619431000000077],[-88.448883000000023,75.59526100000005],[-88.399445000000014,75.579162999999994],[-88.364166000000012,75.568878000000097],[-88.315826000000015,75.556366000000082],[-88.228881999999999,75.539429000000098],[-88.203613000000018,75.531097000000102],[-88.198882999999967,75.528595000000053],[-88.196945000000028,75.522766000000047],[-88.198607999999979,75.517212000000029],[-88.201401000000033,75.512206999999989],[-88.217498999999918,75.509720000000073],[-88.240828999999962,75.509155000000078],[-88.290833000000021,75.49693300000007],[-88.305831999999896,75.492203000000075],[-88.301391999999964,75.488037000000134],[-88.295273000000009,75.484985000000052],[-88.263061999999934,75.476089000000115],[-88.228881999999999,75.471099999999979],[-88.21305799999999,75.470535000000098],[-88.200835999999924,75.471924000000115],[-88.148055999999997,75.488876000000118],[-88.12249799999995,75.501099000000011],[-88.06806899999998,75.521927000000062],[-87.958054000000004,75.544144000000131],[-87.751403999999923,75.576660000000061],[-87.716110000000015,75.575271999999927],[-87.697768999999937,75.573607999999922],[-87.661391999999921,75.567215000000147],[-87.648346000000004,75.5619200000001],[-87.495543999999995,75.485809000000017],[-87.494995000000017,75.483871000000079],[-87.498885999999914,75.478043000000127],[-87.504729999999995,75.474425999999994],[-87.529998999999918,75.465271000000143],[-87.563889000000017,75.459152000000074],[-87.588607999999965,75.456375000000037],[-87.601394999999968,75.453323000000069],[-87.606383999999935,75.449707000000046],[-87.594726999999978,75.446365000000071],[-87.58277899999996,75.444702000000007],[-87.568344000000025,75.443588000000034],[-87.548614999999927,75.444427000000132],[-87.533614999999884,75.446090999999967],[-87.5,75.452209000000096],[-87.459732000000031,75.461380000000077],[-87.445830999999941,75.465271000000143],[-87.434433000000013,75.468871999999976],[-87.4183349999999,75.479706000000078],[-87.416397000000018,75.485260000000039],[-87.430283000000031,75.501099000000011],[-87.437774999999988,75.5086060000001],[-87.444442999999922,75.513885000000073],[-87.46665999999999,75.521103000000096],[-87.462783999999942,75.563034000000073],[-87.393065999999976,75.604156000000103],[-87.381103999999937,75.609420999999998],[-87.354720999999984,75.61303700000002],[-87.285552999999879,75.620255000000043],[-87.263335999999981,75.621094000000028],[-87.25111400000003,75.621094000000028],[-87.234160999999915,75.618317000000104],[-87.088057999999933,75.57998699999996],[-87.079178000000013,75.566666000000055],[-87.072783999999956,75.559981999999991],[-87.055267000000015,75.546936000000017],[-87.011948000000018,75.531372000000147],[-86.967498999999975,75.518326000000002],[-86.931106999999997,75.508041000000048],[-86.914444000000003,75.503876000000048],[-86.862777999999935,75.491653000000042],[-86.807495000000017,75.479156000000046],[-86.771117999999944,75.475540000000137],[-86.72222899999997,75.474991000000045],[-86.643340999999964,75.478043000000127],[-86.631103999999993,75.477767999999912],[-86.601943999999946,75.476379000000122],[-86.583892999999875,75.474701000000039],[-86.567504999999983,75.472214000000122],[-86.48332199999993,75.456650000000025],[-86.464721999999995,75.452773999999977],[-86.375548999999978,75.427475000000129],[-86.365554999999972,75.423309000000074],[-86.368880999999988,75.418320000000108],[-86.389175000000023,75.40776100000005],[-86.400283999999999,75.402205999999978],[-86.415282999999988,75.398880000000133],[-86.506392999999946,75.388046000000031],[-86.553878999999938,75.381363000000079],[-86.576675000000023,75.377197000000024],[-86.611114999999984,75.36831699999999],[-86.615279999999984,75.365540000000067],[-86.596663999999976,75.361649],[-86.544723999999974,75.35914600000001],[-86.520279000000016,75.360259999999982],[-86.491942999999935,75.362762000000089],[-86.376099000000011,75.376373000000058],[-86.358336999999949,75.379699999999957],[-86.245270000000005,75.401932000000045],[-86.198607999999922,75.416091999999935],[-86.169997999999964,75.418594000000041],[-86.082503999999972,75.421371000000136],[-86.031386999999938,75.422485000000108],[-85.833618000000001,75.416091999999935],[-85.680557000000022,75.408034999999984],[-85.674438000000009,75.418320000000108],[-85.908614999999941,75.460266000000104],[-86.006392999999889,75.472214000000122],[-86.109726000000023,75.481934000000024],[-86.124709999999993,75.485535000000084],[-86.138335999999924,75.489975000000072],[-86.149445000000014,75.496368000000075],[-86.154449,75.500823999999966],[-86.143065999999976,75.508041000000048],[-86.11332699999997,75.514999000000046],[-86.096953999999982,75.51776099999995],[-86.00389100000001,75.531372000000147],[-85.908614999999941,75.543868999999916],[-85.865554999999972,75.544708000000071],[-85.763061999999991,75.546097000000088],[-85.44387799999987,75.560256999999979],[-85.329178000000013,75.561096000000134],[-85.303328999999962,75.568878000000097],[-85.189986999999917,75.611923000000047],[-85.074172999999917,75.651931999999988],[-85.054442999999992,75.656096999999988],[-85.039169000000015,75.657760999999994],[-84.926940999999943,75.658874999999966],[-84.879165999999884,75.656937000000028],[-84.797226000000023,75.652771000000143],[-84.763061999999934,75.650269000000037],[-84.71833799999996,75.642761000000064],[-84.683883999999921,75.634430000000123],[-84.62249799999995,75.628036000000066],[-84.59973100000002,75.626647999999989],[-84.572234999999978,75.626373000000001],[-84.524719000000005,75.628036000000066],[-84.497497999999894,75.631653000000028],[-84.503066999999987,75.633330999999998],[-84.519454999999937,75.636108000000036],[-84.539992999999981,75.637772000000098],[-84.557220000000029,75.63888500000013],[-84.607773000000009,75.639160000000004],[-84.63110399999988,75.640548999999965],[-84.651107999999965,75.643599999999992],[-84.657226999999921,75.647491000000059],[-84.66361999999998,75.68609600000002],[-84.644454999999994,75.687194999999974],[-84.482773000000009,75.694427000000076],[-84.350554999999872,75.697754000000032],[-84.322783999999956,75.699141999999938],[-84.299164000000019,75.70277400000009],[-84.070556999999951,75.761932000000115],[-83.929442999999878,75.810806000000071],[-83.878150999999946,75.818962000000056],[-83.767226999999934,75.824158000000125],[-83.740554999999972,75.824432000000058],[-83.722503999999958,75.822495000000004],[-83.703887999999949,75.818329000000062],[-83.698043999999925,75.814423000000033],[-83.706389999999942,75.812195000000088],[-83.72193900000002,75.810806000000071],[-83.74888599999997,75.80664100000007],[-83.752228000000002,75.801376000000005],[-83.736938000000009,75.795258000000047],[-83.698607999999979,75.790268000000026],[-83.672774999999945,75.788879000000009],[-83.619995000000017,75.789429000000041],[-83.56610099999989,75.791656000000103],[-83.515288999999882,75.789703000000145],[-83.495269999999948,75.78637700000013],[-83.479720999999927,75.782211000000018],[-83.464721999999995,75.776093000000117],[-83.458344000000011,75.770264000000054],[-83.447768999999994,75.755828999999949],[-83.43360899999999,75.750274999999988],[-83.419158999999866,75.748870999999951],[-83.292220999999927,75.737762000000089],[-83.123610999999983,75.734421000000054],[-83.065276999999924,75.739151000000049],[-82.960007000000019,75.756103999999993],[-82.82028200000002,75.781937000000084],[-82.799437999999952,75.786102000000085],[-82.664718999999991,75.811371000000122],[-82.466400000000021,75.828048999999965],[-82.327224999999942,75.836928999999998],[-82.279175000000009,75.836655000000064],[-82.139998999999875,75.826934999999992],[-81.95666499999993,75.815261999999962],[-81.885559000000001,75.811096000000077],[-81.660827999999924,75.811371000000122],[-81.536941999999954,75.809417999999994],[-81.450561999999991,75.800812000000064],[-81.212509000000011,75.771378000000084],[-81.22084000000001,75.704712000000029],[-81.276671999999962,75.668320000000051],[-81.281677000000002,75.663605000000018],[-81.285278000000005,75.657486000000006],[-81.271118000000001,75.651382000000126],[-81.256957999999997,75.649719000000005],[-81.010009999999966,75.633330999999998],[-80.983886999999982,75.633330999999998],[-80.857772999999952,75.634995000000004],[-80.779998999999918,75.637772000000098],[-80.547226000000023,75.650818000000015],[-80.502501999999936,75.652206000000092],[-80.480559999999969,75.651093000000003],[-80.46665999999999,75.649428999999998],[-80.316955999999948,75.630539000000056],[-80.275283999999999,75.624985000000095],[-80.256119000000012,75.62164300000012],[-80.199158000000011,75.608871000000136],[-80.101944000000003,75.586929000000055],[-80.068344000000025,75.578872999999987],[-79.953612999999962,75.540268000000083],[-79.948607999999922,75.534149000000014],[-79.956115999999952,75.530822999999998],[-80.085006999999905,75.507766999999944],[-80.191665999999884,75.489975000000072],[-80.252501999999993,75.485809000000017],[-80.355269999999962,75.473877000000073],[-80.371932999999956,75.468871999999976],[-80.373046999999929,75.463042999999971],[-80.358337000000006,75.458602999999982],[-80.338607999999908,75.456375000000037],[-80.306655999999919,75.456099999999992],[-80.108046999999942,75.469147000000021],[-80.000289999999893,75.476928999999984],[-79.929168999999945,75.479706000000078],[-79.73332199999993,75.471924000000115],[-79.714721999999995,75.470535000000098],[-79.644164999999987,75.462494000000049],[-79.586394999999982,75.454712000000086],[-79.574721999999895,75.449997000000053],[-79.581954999999994,75.446365000000071],[-79.635559000000001,75.445815999999979],[-79.656386999999995,75.444138000000066],[-79.675551999999925,75.441360000000032],[-79.683059999999955,75.435806000000071],[-79.682495000000017,75.430817000000104],[-79.62222300000002,75.402480999999966],[-79.605559999999969,75.398041000000148],[-79.561660999999958,75.394989000000066],[-79.520003999999972,75.391098],[-79.503066999999987,75.388596000000064],[-79.488051999999925,75.383330999999998],[-79.486937999999952,75.379974000000061],[-79.488601999999958,75.362487999999928],[-79.510009999999966,75.338043000000084],[-79.527495999999928,75.322220000000073],[-79.539443999999889,75.317763999999954],[-79.563323999999966,75.31860400000005],[-79.596664000000033,75.316086000000041],[-79.610000999999897,75.310806000000014],[-79.61471599999993,75.305542000000003],[-79.611938000000009,75.298325000000091],[-79.587508999999898,75.287491000000045],[-79.570847000000015,75.283051],[-79.548889000000031,75.281096999999988],[-79.443084999999996,75.280190000000061],[-79.506957999999884,75.229980000000069],[-79.571121000000005,75.199142000000052],[-79.629439999999988,75.174987999999928],[-79.651672000000019,75.172484999999995],[-79.731948999999929,75.164703000000031],[-79.774170000000026,75.167205999999965],[-79.835555999999997,75.160262999999986],[-79.929442999999878,75.140549000000078],[-79.944152999999915,75.136383000000023],[-79.954726999999934,75.12692300000009],[-79.955841000000021,75.113876000000118],[-79.955275999999969,75.106644000000017],[-79.955841000000021,75.100266000000033],[-79.960555999999883,75.094711000000132],[-79.974166999999852,75.08998100000008],[-80.128875999999991,75.068054000000018],[-80.150832999999977,75.065536000000066],[-80.215012000000002,75.063309000000004],[-80.296111999999994,75.058868000000075],[-80.440552000000025,75.038040000000024],[-80.427489999999921,75.029984000000127],[-80.402495999999928,75.021103000000039],[-80.327498999999989,74.998596000000134],[-80.310546999999985,74.996368000000132],[-80.297225999999966,74.996643000000006],[-80.238892000000021,74.994431000000134],[-80.194442999999978,74.989975000000015],[-80.182219999999916,74.986649],[-80.173888999999917,74.982483000000059],[-80.184158000000025,74.979430999999977],[-80.216110000000015,74.976089000000002],[-80.243057000000022,74.973038000000031],[-80.258347000000015,74.969711000000075],[-80.271941999999967,74.964996000000042],[-80.278884999999946,74.959427000000062],[-80.278884999999946,74.957214000000079],[-80.274170000000026,74.951096000000121],[-80.266112999999962,74.946640000000059],[-80.240828999999962,74.946640000000059],[-80.033614999999941,74.974426000000108],[-80.026946999999893,74.979980000000069],[-80.013061999999991,74.986923000000104],[-79.975280999999995,74.9994200000001],[-79.942764000000011,75.006943000000092],[-79.919158999999922,75.010543999999982],[-79.795273000000009,75.027480999999966],[-79.776947000000007,75.028320000000122],[-79.716400000000021,75.028869999999984],[-79.692763999999954,75.028046000000018],[-79.613891999999964,75.01998900000001],[-79.59722899999997,75.017487000000131],[-79.582503999999915,75.014435000000049],[-79.505004999999926,74.998321999999973],[-79.501953000000015,74.99581900000004],[-79.507232999999985,74.993042000000116],[-79.535827999999924,74.991653000000099],[-79.555557000000022,74.987198000000092],[-79.551940999999943,74.981659000000093],[-79.464721999999995,74.933319000000097],[-79.442489999999907,74.921646000000067],[-79.426392000000021,74.917206000000022],[-79.391953000000001,74.911102000000028],[-79.35722399999986,74.907486000000119],[-79.338608000000022,74.903320000000065],[-79.334732000000031,74.899993999999992],[-79.333617999999944,74.896378000000141],[-79.333617999999944,74.894440000000031],[-79.335830999999928,74.889160000000118],[-79.370543999999995,74.876373000000115],[-79.390839000000028,74.872482000000048],[-79.501953000000015,74.859421000000111],[-79.530288999999925,74.857758000000047],[-79.580001999999979,74.858321999999987],[-79.732773000000009,74.836655000000121],[-79.851943999999946,74.818878000000041],[-79.860549999999989,74.814697000000137],[-79.880553999999904,74.813034000000073],[-79.930557000000022,74.813309000000061],[-80.06806899999998,74.836380000000077],[-80.25306699999993,74.870818999999983],[-80.274170000000026,74.881087999999977],[-80.28195199999999,74.889984000000084],[-80.293883999999935,74.919983000000116],[-80.293610000000001,74.926376000000062],[-80.296951000000035,74.931090999999924],[-80.306380999999988,74.939148000000102],[-80.321670999999981,74.937759000000085],[-80.335280999999952,74.933044000000052],[-80.362212999999997,74.923599000000024],[-80.386123999999882,74.913604999999961],[-80.396118000000001,74.908599999999922],[-80.413054999999986,74.897766000000047],[-80.416655999999932,74.89387499999998],[-80.416107000000011,74.88888500000013],[-80.361114999999984,74.868866000000025],[-80.347777999999948,74.864990000000148],[-80.329726999999991,74.861374000000069],[-80.296951000000035,74.856934000000081],[-80.261123999999995,74.852767999999969],[-80.224166999999966,74.849426000000051],[-80.18638599999997,74.843323000000112],[-80.153609999999958,74.836655000000121],[-80.108611999999994,74.824432000000058],[-80.097778000000005,74.820267000000058],[-80.101668999999958,74.789154000000053],[-80.159164000000033,74.730269999999962],[-80.191375999999934,74.698029000000076],[-80.156112999999948,74.636932000000058],[-80.148894999999925,74.631088000000034],[-80.146666999999979,74.626923000000033],[-80.149444999999957,74.622482000000105],[-80.161391999999921,74.612198000000092],[-80.231673999999998,74.578049000000078],[-80.248046999999985,74.576096000000121],[-80.253715999999997,74.576050000000066],[-80.339995999999985,74.580551000000128],[-80.385009999999966,74.5816650000001],[-80.454453000000001,74.580825999999945],[-80.468886999999938,74.579436999999984],[-80.488891999999964,74.575546000000088],[-80.591674999999952,74.56442300000009],[-80.753066999999987,74.563309000000118],[-80.844161999999983,74.562759000000085],[-80.951950000000011,74.566086000000041],[-80.974715999999944,74.566939999999988],[-80.994155999999919,74.569717000000082],[-81.029998999999975,74.576660000000061],[-81.049727999999959,74.579163000000051],[-81.069457999999884,74.579711999999972],[-81.219161999999983,74.571381000000088],[-81.269729999999981,74.566086000000041],[-81.287505999999951,74.563034000000073],[-81.510833999999988,74.514434999999935],[-81.670836999999949,74.478592000000106],[-81.759170999999924,74.461105000000089],[-81.785003999999958,74.457764000000054],[-81.810821999999973,74.456940000000088],[-81.854720999999984,74.459427000000119],[-82.060546999999929,74.475540000000024],[-82.081680000000006,74.477203000000088],[-82.101395000000025,74.479706000000078],[-82.327498999999989,74.510544000000095],[-82.511123999999995,74.527206000000035],[-82.557219999999973,74.514709000000096],[-82.574722000000008,74.511658000000068],[-82.592498999999975,74.510544000000095],[-82.615279999999984,74.511108000000036],[-82.74749799999995,74.518051000000014],[-82.783614999999941,74.520263999999997],[-82.871933000000013,74.538589000000059],[-82.914169000000015,74.549149],[-82.953613000000018,74.565810999999997],[-83.018340999999907,74.594436999999914],[-83.056380999999988,74.61554000000001],[-83.079726999999934,74.630264000000068],[-83.088607999999965,74.636658000000125],[-83.092498999999975,74.641372999999987],[-83.102218999999934,74.65415999999999],[-83.12388599999997,74.684982000000048],[-83.128051999999968,74.691925000000026],[-83.131942999999978,74.708328000000108],[-83.128051999999968,74.71748400000007],[-83.107772999999952,74.748032000000023],[-83.090835999999854,74.757767000000115],[-83.075012000000015,74.762206999999933],[-83.041381999999942,74.769989000000066],[-83.028884999999946,74.774993999999936],[-83.02305599999994,74.780548000000124],[-83.024170000000026,74.783325000000048],[-83.081680000000006,74.818054000000075],[-83.09584000000001,74.82388300000008],[-83.105269999999962,74.826660000000004],[-83.116104000000007,74.828597999999943],[-83.15583799999996,74.826935000000049],[-83.203063999999983,74.820830999999998],[-83.227782999999874,74.820540999999992],[-83.24888599999997,74.823608000000092],[-83.299727999999959,74.835541000000148],[-83.33666999999997,74.849426000000051],[-83.380829000000006,74.866379000000109],[-83.402221999999938,74.875259000000142],[-83.475554999999929,74.896652000000074],[-83.511397999999986,74.901657000000114],[-83.52806099999998,74.901657000000114],[-83.547500999999954,74.897491000000059],[-83.55972300000002,74.892487000000074],[-83.560546999999985,74.887206999999989],[-83.559433000000013,74.880814000000044],[-83.556945999999925,74.875259000000142],[-83.527221999999995,74.84526100000005],[-83.518616000000009,74.839432000000045],[-83.472504000000015,74.815262000000018],[-83.458617999999944,74.808028999999976],[-83.429992999999911,74.797484999999938],[-83.394164999999987,74.790268000000026],[-83.375274999999931,74.786926000000108],[-83.354995999999971,74.784424000000001],[-83.327498999999932,74.779160000000047],[-83.318893000000003,74.774993999999936],[-83.324172999999973,74.755264000000125],[-83.327498999999932,74.75],[-83.454726999999991,74.591094999999996],[-83.474441999999954,74.579711999999972],[-83.484160999999972,74.574996999999939],[-83.598891999999978,74.543594000000098],[-83.611664000000019,74.540817000000004],[-83.720839999999953,74.545532000000037],[-83.785552999999936,74.548598999999967],[-83.805556999999965,74.550812000000121],[-83.830840999999964,74.551376000000062],[-83.855270000000019,74.550812000000121],[-83.907501000000025,74.546936000000073],[-84.037780999999939,74.53414900000007],[-84.063323999999966,74.530822999999998],[-84.107498000000021,74.523314999999968],[-84.145844000000011,74.515548999999965],[-84.216400000000021,74.507216999999969],[-84.238892000000021,74.505554000000018],[-84.285552999999936,74.50360100000006],[-84.332778999999903,74.503876000000105],[-84.355835000000013,74.504440000000045],[-84.396118000000001,74.507492000000127],[-84.641678000000013,74.506943000000035],[-84.850280999999995,74.502212999999983],[-84.871384000000035,74.501389000000017],[-84.889450000000011,74.502212999999983],[-84.899445000000014,74.503326000000072],[-84.91194200000001,74.508041000000105],[-84.916655999999932,74.511108000000036],[-84.983063000000016,74.570541000000048],[-84.985275000000001,74.579163000000051],[-84.974715999999944,74.617477000000065],[-84.960281000000009,74.656937000000084],[-84.955001999999865,74.66276600000009],[-84.950835999999981,74.668869000000029],[-84.950835999999981,74.672760000000096],[-84.952498999999989,74.679153000000042],[-84.955565999999976,74.684708000000114],[-84.964172000000019,74.691925000000026],[-84.973327999999867,74.696091000000138],[-84.990554999999972,74.698029000000076],[-85.003341999999975,74.697479000000044],[-85.063888999999961,74.651657],[-85.072509999999966,74.641098000000113],[-85.044723999999917,74.612198000000092],[-85.037506000000008,74.541092000000049],[-85.036941999999954,74.535263000000043],[-85.038604999999961,74.528870000000097],[-85.043609999999944,74.523314999999968],[-85.074172999999917,74.508880999999974],[-85.087783999999886,74.504990000000078],[-85.104720999999984,74.501663000000121],[-85.125274999999931,74.49859600000002],[-85.21444699999995,74.49192800000003],[-85.259445000000028,74.490540000000124],[-85.353057999999976,74.49859600000002],[-85.363616999999977,74.501937999999996],[-85.369995000000017,74.509430000000066],[-85.363891999999964,74.537490999999989],[-85.365554999999972,74.544144000000131],[-85.370270000000005,74.552475000000072],[-85.468613000000005,74.658875000000023],[-85.474166999999909,74.664428999999984],[-85.482773000000009,74.671646000000123],[-85.49499499999996,74.679153000000042],[-85.504455999999948,74.683318999999926],[-85.520554000000004,74.688033999999959],[-85.527221999999881,74.688873000000115],[-85.543335000000013,74.686371000000065],[-85.549987999999985,74.68193100000002],[-85.524170000000026,74.598602000000142],[-85.520844000000011,74.593048000000124],[-85.509170999999981,74.579987000000017],[-85.486938000000009,74.561096000000134],[-85.481948999999929,74.554152999999985],[-85.479996000000028,74.547760000000039],[-85.479171999999949,74.541655999999989],[-85.480285999999921,74.537200999999982],[-85.50389100000001,74.520538000000101],[-85.527221999999881,74.510269000000051],[-85.542220999999927,74.505554000000018],[-85.560546999999929,74.501389000000017],[-85.580840999999964,74.498322000000087],[-85.604172000000005,74.495818999999926],[-86.013335999999981,74.479431000000091],[-86.059433000000013,74.478592000000106],[-86.082503999999972,74.479156000000046],[-86.120834000000002,74.482207999999957],[-86.123046999999872,74.48332199999993],[-86.122771999999941,74.489975000000129],[-86.101105000000018,74.511383000000023],[-86.085555999999997,74.529434000000037],[-86.079178000000013,74.53915400000011],[-86.077788999999939,74.545257999999933],[-86.082779000000016,74.555251999999939],[-86.153610000000015,74.60914600000001],[-86.177779999999927,74.615265000000022],[-86.197494999999947,74.615265000000022],[-86.215835999999854,74.610809000000074],[-86.224441999999954,74.607758000000047],[-86.235001000000011,74.601929000000041],[-86.240554999999972,74.59693900000002],[-86.242766999999958,74.59137000000004],[-86.23443599999996,74.581100000000106],[-86.227492999999981,74.575271999999984],[-86.223052999999936,74.562194999999974],[-86.232223999999974,74.540268000000083],[-86.235275000000001,74.535263000000043],[-86.244719999999973,74.52388000000002],[-86.278885000000002,74.508605999999929],[-86.332779000000016,74.490265000000136],[-86.399170000000026,74.479431000000091],[-86.423324999999977,74.478866999999923],[-86.443603999999993,74.481093999999985],[-86.462508999999955,74.485535000000084],[-86.633330999999998,74.526093000000003],[-86.664168999999958,74.534714000000065],[-86.69110099999989,74.544144000000131],[-86.708618000000001,74.551086000000055],[-86.720839999999896,74.558594000000085],[-86.759170999999981,74.586380000000133],[-86.762786999999946,74.591933999999981],[-86.761672999999973,74.598037999999974],[-86.751403999999866,74.60386699999998],[-86.74610899999999,74.608871000000136],[-86.75111400000003,74.613602000000071],[-86.766952999999944,74.616088999999988],[-86.785277999999948,74.616928000000144],[-86.799437999999952,74.615265000000022],[-86.801101999999958,74.611374000000126],[-86.800551999999925,74.552200000000028],[-86.797226000000023,74.543594000000098],[-86.794448999999986,74.539978000000076],[-86.705565999999976,74.500275000000045],[-86.693603999999937,74.468048000000067],[-86.905838000000017,74.460541000000092],[-87.225829999999917,74.466934000000094],[-87.27027899999996,74.468323000000055],[-87.304169000000002,74.471649000000127],[-87.320846999999958,74.476653999999996],[-87.352782999999931,74.495254999999986],[-87.474441999999954,74.475815000000011],[-87.508621000000005,74.46775800000006],[-87.527221999999995,74.465545999999961],[-87.574722000000008,74.461929000000055],[-87.669998000000021,74.459991000000059],[-87.710830999999928,74.460815000000025],[-87.732223999999974,74.466385000000116],[-87.755004999999983,74.479431000000091],[-87.848052999999993,74.476089000000115],[-87.903610000000015,74.472214000000122],[-88.036117999999931,74.476928999999984],[-88.263625999999988,74.483597000000145],[-88.356109999999944,74.489150999999993],[-88.496947999999861,74.497757000000092],[-88.517226999999991,74.499709999999993],[-88.529723999999987,74.501937999999996],[-88.535277999999948,74.50360100000006],[-88.539992999999981,74.50610400000005],[-88.571121000000005,74.549987999999985],[-88.570846999999958,74.556091000000094],[-88.560821999999973,74.593048000000124],[-88.542220999999984,74.616088999999988],[-88.406386999999995,74.736098999999967],[-88.347504000000015,74.784714000000008],[-88.484725999999966,74.857758000000047],[-88.528060999999866,74.901931999999988],[-88.537216000000001,74.906937000000028],[-88.547774999999945,74.907760999999994],[-88.557220000000029,74.906647000000021],[-88.56806899999998,74.901382000000126],[-88.664718999999934,74.844986000000006],[-88.675827000000027,74.836929000000055],[-88.74360699999994,74.78387500000008],[-88.749724999999899,74.77777100000003],[-88.752501999999993,74.768326000000002],[-88.75306699999993,74.756103999999993],[-88.749724999999899,74.749709999999936],[-88.748885999999914,74.741364000000033],[-88.749434999999949,74.726089000000059],[-88.753341999999918,74.714157000000114],[-88.811935000000005,74.672211000000118],[-88.821395999999993,74.666382000000112],[-88.835555999999997,74.661377000000073],[-88.848343,74.659149000000127],[-88.862212999999997,74.658875000000023],[-88.873885999999914,74.6602630000001],[-88.883056999999951,74.665267999999969],[-88.889724999999999,74.670531999999923],[-88.917220999999984,74.719711000000132],[-88.918059999999855,74.732483000000116],[-88.914168999999958,74.749145999999996],[-88.910278000000005,74.754990000000021],[-88.905563000000029,74.75999500000006],[-88.904174999999952,74.765549000000078],[-88.906386999999995,74.773041000000035],[-88.909728999999857,74.77777100000003],[-88.926940999999943,74.78387500000008],[-89.073623999999882,74.833878000000027],[-89.088608000000022,74.837204000000042],[-89.097778000000005,74.836105000000089],[-89.099166999999966,74.835266000000104],[-89.059998000000007,74.797484999999938],[-89.053329000000019,74.793594000000041],[-89.042769999999905,74.789702999999975],[-89.011123999999938,74.780822999999941],[-89.010283999999956,74.775543000000084],[-89.012786999999946,74.770538000000045],[-89.041381999999999,74.730269999999962],[-89.047501000000011,74.722487999999998],[-89.055832000000009,74.719146999999964],[-89.077788999999882,74.717209000000025],[-89.102218999999991,74.719437000000028],[-89.178878999999938,74.732208000000128],[-89.178878999999938,74.735260000000039],[-89.181106999999997,74.739700000000028],[-89.190551999999968,74.744430999999963],[-89.223052999999993,74.752487000000031],[-89.243057000000022,74.755264000000125],[-89.265014999999948,74.756378000000097],[-89.271118000000001,74.754715000000033],[-89.216400000000021,74.721100000000092],[-89.202498999999932,74.713882000000126],[-89.189712999999927,74.708602999999925],[-89.141112999999962,74.698029000000076],[-89.12249799999995,74.696091000000138],[-89.105270000000019,74.693039000000056],[-89.095839999999953,74.688033999999959],[-89.095839999999953,74.68193100000002],[-89.125,74.616928000000144],[-89.131942999999922,74.611374000000126],[-89.150557999999933,74.599716000000114],[-89.185271999999998,74.587494000000106],[-89.196945000000028,74.584427000000005],[-89.438889000000017,74.550812000000121],[-89.455001999999922,74.548598999999967],[-89.489715999999987,74.545532000000037],[-89.580565999999976,74.540268000000083],[-89.92860399999995,74.530822999999998],[-89.946105999999986,74.532211000000132],[-90.106658999999979,74.549422999999933],[-90.223891999999921,74.563599000000124],[-90.244995000000017,74.566939999999988],[-90.263335999999924,74.570541000000048],[-90.363051999999982,74.594711000000075],[-90.45666499999993,74.600815000000068],[-90.496384000000035,74.601654000000053],[-90.529998999999862,74.605255000000113],[-90.589721999999995,74.613312000000064],[-90.607223999999917,74.616378999999995],[-90.619995000000017,74.619980000000055],[-90.70805399999989,74.648041000000148],[-90.731673999999941,74.664153999999996],[-90.736938000000009,74.669434000000024],[-90.739440999999999,74.673874000000069],[-90.747771999999998,74.703048999999965],[-90.75111400000003,74.716385000000059],[-90.867492999999911,74.702484000000084],[-90.875823999999966,74.691925000000026],[-90.885559000000001,74.683593999999971],[-90.895614999999964,74.681137000000092],[-91.013625999999988,74.698868000000061],[-91.024718999999948,74.70277400000009],[-91.023620999999991,74.706940000000031],[-91.012221999999952,74.717209000000025],[-90.978332999999964,74.739700000000028],[-90.965012000000002,74.747757000000036],[-90.945830999999941,74.751389000000131],[-90.938598999999954,74.750823999999966],[-90.926101999999958,74.751663000000065],[-90.896118000000001,74.75749200000007],[-90.883895999999936,74.761658000000011],[-90.851395000000025,74.776093000000117],[-90.758057000000008,74.831100000000049],[-90.752791999999943,74.835815000000082],[-90.740829000000019,74.847488000000112],[-90.742492999999911,74.852767999999969],[-90.746658000000025,74.860535000000084],[-90.75778200000002,74.880814000000044],[-90.772232000000031,74.884995000000117],[-90.816956000000005,74.883605999999986],[-90.841110000000015,74.879425000000083],[-90.853881999999942,74.875259000000142],[-90.863892000000021,74.869979999999998],[-90.870270000000005,74.86442599999998],[-90.874435000000005,74.859146000000123],[-90.87388599999997,74.853043000000014],[-90.883330999999998,74.84165999999999],[-90.975006000000008,74.799423000000104],[-91,74.789702999999975],[-91.075286999999946,74.761107999999979],[-91.101943999999946,74.751099000000124],[-91.132767000000001,74.744430999999963],[-91.144729999999981,74.747481999999991],[-91.14416499999993,74.751389000000131],[-91.146666999999923,74.755554000000132],[-91.171660999999972,74.75749200000007],[-91.188599000000011,74.752777000000037],[-91.216110000000015,74.738876000000062],[-91.225829999999917,74.733597000000088],[-91.228881999999942,74.727768000000083],[-91.226944000000003,74.722487999999998],[-91.185271999999941,74.684708000000114],[-91.177489999999977,74.678039999999953],[-91.154998999999975,74.665542999999957],[-91.11471599999993,74.645827999999995],[-91.105835000000013,74.63998400000014],[-91.098052999999879,74.633330999999998],[-91.099730999999963,74.62831100000011],[-91.106658999999979,74.625809000000061],[-91.133056999999951,74.624420000000043],[-91.256393000000003,74.628585999999984],[-91.455841000000021,74.639708999999982],[-91.539992999999924,74.646378000000027],[-91.553328999999962,74.648330999999985],[-91.676101999999901,74.671921000000111],[-91.684998000000007,74.677765000000136],[-91.671660999999972,74.689697000000081],[-91.664169000000015,74.693314000000044],[-91.634170999999981,74.696091000000138],[-91.621932999999956,74.700272000000041],[-91.620270000000005,74.704987000000074],[-91.624435000000005,74.709991000000059],[-91.635833999999932,74.715271000000087],[-91.651671999999962,74.719986000000119],[-91.708618000000001,74.727478000000076],[-91.754181000000017,74.727768000000083],[-91.779449,74.725815000000125],[-91.798888999999917,74.722214000000065],[-91.811110999999983,74.71804800000001],[-91.812499999999886,74.713042999999971],[-91.80296299999992,74.706184000000007],[-91.798888999999917,74.699416999999983],[-91.815551999999968,74.69470200000012],[-91.833069000000023,74.696091000000138],[-91.851105000000018,74.698868000000061],[-91.866652999999928,74.702209000000096],[-91.876663000000008,74.706940000000031],[-91.875274999999931,74.711928999999998],[-91.859160999999972,74.721100000000092],[-91.892226999999934,74.750823999999966],[-91.961944999999957,74.764160000000061],[-91.998610999999983,74.773041000000035],[-92.015838999999971,74.778320000000008],[-92.045546999999999,74.789702999999975],[-92.05749499999996,74.79664600000001],[-92.063613999999973,74.803588999999988],[-92.065276999999924,74.80720500000001],[-92.06639100000001,74.813309000000061],[-92.05749499999996,74.82499700000011],[-92.051665999999955,74.830551000000071],[-92.043334999999956,74.836380000000077],[-92.01916499999993,74.846099999999979],[-92.013061999999991,74.851928999999984],[-92.008056999999951,74.863602000000014],[-92.006393000000003,74.888046000000145],[-92.013335999999924,74.908325000000104],[-92.015288999999939,74.913604999999961],[-92.043334999999956,74.951935000000105],[-92.048049999999989,74.958328000000051],[-92.063323999999966,74.963882000000069],[-92.091674999999896,74.971649000000014],[-92.1058349999999,74.976654000000053],[-92.164169000000015,74.998031999999967],[-92.209732000000031,75.038588999999945],[-92.228881999999999,75.071105999999986],[-92.225829999999917,75.07388300000008],[-92.21556099999998,75.07638500000013],[-92.186385999999914,75.08137499999998],[-92.152495999999985,75.083878000000141],[-92.111664000000019,75.081940000000031],[-92.046188000000029,75.084961000000078],[-92.029998999999918,75.08638000000002],[-92.012511999999958,75.095260999999994],[-92.010009999999966,75.101089000000115],[-92.051392000000021,75.146942000000024],[-92.055557000000022,75.15026899999998],[-92.070556999999894,75.153046000000074],[-92.083618000000001,75.153320000000008],[-92.105269999999962,75.151932000000102],[-92.193329000000006,75.143326000000002],[-92.325561999999991,75.151657000000057],[-92.490829000000019,75.213608000000079],[-92.468886999999938,75.284714000000122],[-92.428604000000007,75.394440000000088],[-92.388335999999924,75.441925000000083],[-92.328063999999983,75.489151000000106],[-92.220276000000013,75.546097000000088],[-92.210281000000009,75.551376000000062],[-92.199431999999945,75.553864000000033],[-92.155838000000017,75.556641000000127],[-92.100280999999995,75.562759000000085],[-92.085830999999985,75.564987000000031],[-92.069457999999997,75.568878000000097],[-92.056655999999975,75.573043999999982],[-92.013901000000033,75.589157000000057],[-92.005004999999926,75.594986000000063],[-92.008346999999958,75.661377000000073],[-92.043609999999887,75.68553200000008],[-92.05749499999996,75.691359999999975],[-92.089995999999985,75.700272000000041],[-92.137512000000015,75.721100000000092],[-92.156661999999983,75.731094000000098],[-92.174437999999952,75.744431000000134],[-92.175551999999925,75.750549000000092],[-92.139724999999999,75.778319999999951],[-92.119155999999919,75.789154000000053],[-92.112777999999992,75.794708000000014],[-92.104720999999984,75.805252000000053],[-92.100554999999929,75.823043999999925],[-92.103881999999942,75.841369999999927],[-92.105269999999962,75.847488000000055],[-92.108611999999994,75.858871000000079],[-92.113327000000027,75.863602000000014],[-92.129714999999976,75.876373000000115],[-92.138061999999991,75.879974000000004],[-92.151108000000022,75.883041000000105],[-92.172774999999945,75.885544000000039],[-92.215012000000002,75.888321000000133],[-92.23832699999997,75.891373000000101],[-92.317779999999914,75.90498400000007],[-92.336394999999868,75.908600000000092],[-92.408614999999998,75.928589000000045],[-92.433060000000012,75.936371000000008],[-92.444442999999922,75.941086000000041],[-92.583618000000001,76.008881000000031],[-92.635833999999988,76.104155999999989],[-92.635833999999988,76.109711000000061],[-92.637222000000008,76.115814],[-92.793883999999935,76.20748900000001],[-92.809433000000013,76.212494000000049],[-92.946654999999964,76.245818999999926],[-93.066956000000005,76.299149],[-93.076674999999909,76.316939999999988],[-93.057220000000029,76.326660000000061],[-93.054992999999968,76.332489000000066],[-93.056380999999874,76.338593000000117],[-93.059158000000025,76.34387200000009],[-93.071945000000028,76.353317000000004],[-93.083618000000001,76.358032000000037],[-93.115279999999927,76.363876000000005],[-93.138061999999934,76.366378999999995],[-93.186935000000005,76.368317000000104],[-93.212783999999942,76.368042000000116],[-93.239989999999977,76.366653000000099],[-93.315276999999924,76.360259999999982],[-93.345275999999956,76.356094000000041],[-93.381377999999927,76.34637500000008],[-93.449996999999996,76.326385000000073],[-93.561934999999949,76.297211000000061],[-93.587783999999886,76.292755],[-93.617492999999968,76.291092000000049],[-93.635833999999988,76.291655999999989],[-93.658339999999896,76.293868999999972],[-93.666397000000018,76.298598999999967],[-93.653335999999911,76.302765000000079],[-93.624434999999892,76.30581699999999],[-93.623610999999926,76.310806000000127],[-93.636123999999995,76.326660000000061],[-93.654174999999896,76.325821000000133],[-93.678878999999938,76.322220000000073],[-93.718886999999995,76.312484999999981],[-93.731383999999991,76.306930999999963],[-93.763901000000033,76.286377000000016],[-93.763901000000033,76.282211000000132],[-93.761948000000018,76.280272999999966],[-93.753890999999953,76.275817999999958],[-93.74110399999995,76.271927000000062],[-93.720551,76.267761000000007],[-93.697220000000016,76.26388500000013],[-93.78443900000002,76.253052000000139],[-93.954453000000001,76.257767000000001],[-93.956116000000009,76.257767000000001],[-93.958343999999954,76.257767000000001],[-94.097504000000015,76.259430000000123],[-94.118880999999988,76.261383000000023],[-94.134170999999867,76.264709000000096],[-94.141387999999949,76.269989000000123],[-94.151671999999905,76.274155000000064],[-94.168610000000001,76.278320000000065],[-94.212509000000011,76.280822999999998],[-94.470839999999953,76.281096999999932],[-94.641677999999956,76.293319999999994],[-94.780288999999982,76.288879000000065],[-94.789992999999981,76.283600000000092],[-94.803329000000019,76.278320000000065],[-94.838608000000022,76.268326000000059],[-95.029174999999952,76.236099000000024],[-95.354995999999915,76.234146000000123],[-95.376099000000011,76.234421000000111],[-95.386947999999961,76.235809000000017],[-95.388061999999934,76.283600000000092],[-95.374435000000005,76.297760000000039],[-95.366942999999935,76.301376000000062],[-95.357223999999974,76.302765000000079],[-95.343063000000029,76.300262000000089],[-95.31806899999998,76.290817000000061],[-95.279175000000009,76.281372000000147],[-95.258895999999993,76.282760999999994],[-95.118332000000009,76.298035000000027],[-95.092772999999909,76.302765000000079],[-95.075561999999877,76.307754999999929],[-95.069732999999928,76.313309000000118],[-95.066558999999984,76.319862000000001],[-95.058883999999978,76.324706999999933],[-95.010558999999944,76.331100000000106],[-94.983886999999982,76.332489000000066],[-94.958892999999989,76.332214000000079],[-94.915008999999884,76.329711999999972],[-94.866394000000014,76.325546000000088],[-94.84973100000002,76.323317999999972],[-94.84056099999998,76.319717000000082],[-94.849990999999875,76.31442300000009],[-94.862777999999878,76.309981999999991],[-94.861663999999962,76.306930999999963],[-94.843613000000005,76.303864000000033],[-94.828613000000018,76.306091000000094],[-94.808608999999933,76.311371000000008],[-94.802489999999977,76.315536000000009],[-94.80082699999997,76.321655000000021],[-94.814163000000008,76.329163000000051],[-94.834441999999967,76.334427000000005],[-94.894729999999925,76.341660000000047],[-94.965012000000002,76.347487999999942],[-95.132767000000001,76.361374000000126],[-95.274719000000005,76.372208000000001],[-95.299437999999952,76.372482000000105],[-95.326401000000033,76.37081900000004],[-95.331679999999949,76.365265000000022],[-95.341384999999946,76.359711000000004],[-95.388900999999976,76.351929000000041],[-95.399993999999992,76.353317000000004],[-95.447220000000016,76.365813999999943],[-95.645279000000016,76.384155000000135],[-95.668335000000013,76.386108000000092],[-95.715835999999911,76.392211999999915],[-95.737502999999947,76.393875000000037],[-95.851105000000018,76.40109300000006],[-95.995834000000002,76.436919999999986],[-96.081679999999892,76.478043000000127],[-96.106948999999986,76.494430999999963],[-96.104171999999949,76.5],[-96.099166999999909,76.505553999999961],[-96.09056099999998,76.510268999999994],[-96.065552000000025,76.521378000000084],[-96.052489999999921,76.524155000000007],[-95.997222999999963,76.519440000000145],[-95.944991999999957,76.518326000000002],[-95.806380999999931,76.516388000000063],[-95.778609999999958,76.518875000000094],[-95.694152999999972,76.545258000000103],[-95.680557000000022,76.550537000000077],[-95.657776000000013,76.561371000000122],[-95.593886999999938,76.593048000000067],[-95.584166999999979,76.598327999999981],[-95.587783999999999,76.603592000000106],[-95.599441999999954,76.605255000000056],[-95.619719999999973,76.606094000000041],[-95.638901000000033,76.604156000000046],[-95.660277999999948,76.599426000000051],[-95.696105999999986,76.584152000000131],[-95.695540999999992,76.580276000000083],[-95.696654999999964,76.574432000000058],[-95.712783999999999,76.568603999999937],[-95.759170999999981,76.553588999999988],[-95.780562999999916,76.548874000000126],[-95.992492999999968,76.54803499999997],[-96.016953000000001,76.549149],[-96.158614999999941,76.583327999999995],[-96.17860399999995,76.594147000000078],[-96.225280999999882,76.625809000000004],[-96.27027899999996,76.632751000000098],[-96.33944699999995,76.63220199999995],[-96.355835000000013,76.633041000000105],[-96.38137799999987,76.635818000000029],[-96.403335999999911,76.639709000000096],[-96.421386999999982,76.646102999999982],[-96.445830999999998,76.657211000000132],[-96.454178000000013,76.662490999999989],[-96.461394999999925,76.668593999999985],[-96.461120999999991,76.673599000000024],[-96.46444699999995,76.679703000000018],[-96.470275999999956,76.685532000000023],[-96.527785999999935,76.693038999999999],[-96.611938000000009,76.702484000000027],[-96.636123999999995,76.704436999999984],[-96.661666999999966,76.704712000000029],[-96.736938000000009,76.697205000000054],[-96.764175000000023,76.695526000000086],[-96.789718999999934,76.695816000000093],[-96.81639100000001,76.697478999999987],[-96.857772999999952,76.701935000000105],[-96.879990000000021,76.705826000000002],[-96.915832999999964,76.714432000000102],[-96.946654999999964,76.723602000000142],[-96.959166999999979,76.729155999999932],[-96.964447000000007,76.733322000000044],[-96.900283999999999,76.795258000000047],[-96.887221999999952,76.805542000000059],[-96.873885999999914,76.810806000000071],[-96.854995999999971,76.813034000000016],[-96.839721999999995,76.810257000000092],[-96.724716000000001,76.783324999999991],[-96.679717999999923,76.770264000000054],[-96.592498999999918,76.758881000000031],[-96.426102000000014,76.744705000000067],[-96.330291999999929,76.750274999999931],[-96.311935000000005,76.751389000000131],[-96.305556999999965,76.753875999999991],[-96.315551999999968,76.802475000000129],[-96.320557000000008,76.80664100000007],[-96.366942999999935,76.812758999999971],[-96.453612999999962,76.815262000000132],[-96.50111400000003,76.818054000000075],[-96.547226000000023,76.822769000000108],[-96.797500999999897,76.861374000000012],[-96.81361400000003,76.868042000000003],[-96.848891999999921,76.887496999999996],[-96.865829000000019,76.898041000000035],[-96.869155999999975,76.904160000000047],[-96.869445999999982,76.913879000000065],[-96.864166000000012,76.919708000000071],[-96.857772999999952,76.924987999999928],[-96.833617999999944,76.9327550000001],[-96.796386999999982,76.937484999999924],[-96.771941999999967,76.937759000000028],[-96.761123999999995,76.937759000000028],[-96.723891999999978,76.935256999999979],[-96.708054000000004,76.93331900000004],[-96.698607999999979,76.934143000000006],[-96.660827999999981,76.947204999999997],[-96.659163999999976,76.949142000000052],[-96.667769999999962,76.954436999999928],[-96.677779999999984,76.957764000000054],[-96.696945000000028,76.960541000000148],[-96.718886999999995,76.963043000000027],[-96.765288999999996,76.96527100000003],[-96.808333999999945,76.966094999999996],[-96.824447999999904,76.96775800000006],[-96.827788999999939,76.968872000000033],[-96.825561999999991,76.974426000000051],[-96.810271999999998,76.979156000000103],[-96.772034000000019,76.98101800000012],[-96.742034999999987,76.982208000000014],[-96.673324999999977,76.982208000000014],[-96.622771999999998,76.979980000000069],[-96.483611999999994,76.971100000000035],[-96.353881999999999,76.993042000000059],[-96.391113000000018,77.026931999999988],[-96.387787000000003,77.03054800000001],[-96.373321999999973,77.031937000000028],[-96.28472899999997,77.039428999999984],[-96.27305599999994,77.040267999999912],[-96.24499499999996,77.041931000000034],[-96.226105000000018,77.043045000000006],[-96.103057999999976,77.044708000000128],[-95.96665999999999,77.053040000000124],[-95.888061999999934,77.06109600000002],[-95.752501999999993,77.06860400000005],[-95.734726000000023,77.06860400000005],[-95.707503999999915,77.066940000000045],[-95.659728999999913,77.058868000000075]],[[-113.32888800000001,77.079987000000017],[-113.353882,77.077484000000084],[-113.40888999999999,77.078873000000044],[-113.45140099999992,77.081664999999987],[-113.49194299999999,77.085541000000035],[-113.49749799999989,77.088318000000129],[-113.49027999999998,77.092484000000013],[-113.34472700000003,77.127762000000018],[-113.33528099999995,77.126083000000051],[-113.31471299999998,77.11775200000011],[-113.29332699999986,77.107483000000116],[-113.28694200000001,77.09637500000008],[-113.29110700000001,77.08998100000008],[-113.30471799999998,77.085266000000047],[-113.32888800000001,77.079987000000017]],[[-113.77861000000001,77.104155999999989],[-113.80695299999991,77.104155999999989],[-113.85333300000002,77.10554499999995],[-113.88054699999992,77.108032000000037],[-113.90888999999999,77.113037000000077],[-113.92443800000001,77.118591000000094],[-113.93138099999999,77.1244200000001],[-113.93138099999999,77.129699999999957],[-113.92722300000003,77.135268999999994],[-113.92083700000001,77.141098],[-113.90110800000002,77.146378000000027],[-113.88082900000001,77.149719000000061],[-113.859444,77.151382000000012],[-113.798607,77.152481000000023],[-113.77417000000003,77.151657000000057],[-113.72250399999996,77.148041000000148],[-113.69915800000001,77.144714000000022],[-113.67555199999993,77.140274000000034],[-113.66443599999997,77.134720000000016],[-113.65778399999999,77.129149999999925],[-113.66416900000002,77.123032000000023],[-113.67916899999989,77.116928000000144],[-113.703056,77.111649],[-113.72778299999993,77.108032000000037],[-113.75306699999993,77.10554499999995],[-113.77861000000001,77.104155999999989]],[[-104.25250199999999,77.072769000000051],[-104.30277999999998,77.072220000000073],[-104.35417200000001,77.073883000000023],[-104.37721299999998,77.076660000000118],[-104.40222199999994,77.081100000000106],[-104.421944,77.087203999999986],[-104.43167099999994,77.098877000000016],[-104.42639200000002,77.116379000000052],[-104.42027300000001,77.122208000000057],[-104.40556299999997,77.127762000000018],[-104.31973299999999,77.151657000000057],[-104.30082700000003,77.15525800000006],[-104.27333099999998,77.159714000000008],[-104.18360899999993,77.167205999999965],[-104.11389199999996,77.166091999999992],[-104.07140399999997,77.16137700000013],[-104.06139400000001,77.158875000000023],[-104.031113,77.15109300000006],[-104.01972999999998,77.146103000000039],[-104.00110599999999,77.135818000000086],[-103.99889399999995,77.123870999999951],[-104.00945300000001,77.118042000000116],[-104.02416999999991,77.112487999999985],[-104.04778299999992,77.106934000000138],[-104.15028399999994,77.08638000000002],[-104.196663,77.077484000000084],[-104.25250199999999,77.072769000000051]],[[-95.22444200000001,77.167205999999965],[-95.245270000000005,77.164153999999996],[-95.291381999999999,77.164992999999981],[-95.314437999999996,77.166656000000103],[-95.362777999999935,77.171920999999998],[-95.419998000000021,77.181931000000077],[-95.572509999999852,77.213042999999971],[-95.613051999999925,77.221924000000115],[-95.634170999999924,77.228043000000127],[-95.638901000000033,77.232208000000128],[-95.639998999999932,77.237761999999975],[-95.636672999999973,77.239150999999936],[-95.631377999999927,77.239700000000084],[-95.608046999999885,77.240814000000057],[-95.511123999999995,77.243042000000003],[-95.438048999999978,77.24443100000002],[-95.387512000000015,77.240814000000057],[-95.37222300000002,77.238037000000134],[-95.356110000000001,77.236374000000069],[-95.31361400000003,77.229156000000046],[-95.244155999999919,77.213882000000126],[-95.216399999999965,77.201660000000004],[-95.206664999999987,77.189147999999989],[-95.206954999999994,77.177764999999965],[-95.214447000000007,77.172485000000108],[-95.22444200000001,77.167205999999965]],[[-90.933059999999955,77.254440000000045],[-90.909164000000033,77.251663000000121],[-90.815001999999993,77.240265000000136],[-90.772232000000031,77.231368999999972],[-90.736388999999974,77.220824999999934],[-90.718338000000017,77.207213999999965],[-90.713622999999984,77.200821000000019],[-90.724166999999909,77.183318999999983],[-90.731948999999986,77.177764999999965],[-90.779175000000009,77.156647000000078],[-90.811385999999914,77.14665199999996],[-90.83555599999994,77.142211999999972],[-90.868331999999953,77.138321000000076],[-90.899993999999992,77.136932000000058],[-90.978606999999897,77.137771999999927],[-91.049728000000016,77.145537999999988],[-91.18472300000002,77.163605000000075],[-91.221664000000033,77.170258000000047],[-91.238892000000021,77.174423000000047],[-91.262512000000015,77.18414300000012],[-91.286391999999921,77.196640000000116],[-91.295546999999999,77.203323000000069],[-91.297501000000011,77.207213999999965],[-91.299164000000019,77.217758000000003],[-91.277221999999995,77.227478000000133],[-91.24749799999995,77.235809000000017],[-91.189712999999983,77.24803200000008],[-91.162216000000001,77.251389000000017],[-91.107223999999917,77.254715000000033],[-91.084732000000031,77.254440000000045],[-91.072234999999921,77.253326000000072],[-91.057219999999973,77.254440000000045],[-90.987503000000004,77.254990000000078],[-90.933059999999955,77.254440000000045]],[[-116.35109699999998,77.539154000000053],[-116.20333900000003,77.519989000000066],[-116.09056099999992,77.491089000000045],[-116.073624,77.485535000000027],[-115.88027999999991,77.433319000000097],[-115.52055399999995,77.364426000000037],[-115.49526999999989,77.359420999999998],[-115.458054,77.348602000000085],[-115.44611399999985,77.343048000000124],[-115.389183,77.312194999999917],[-115.390289,77.306366000000082],[-115.54332699999986,77.265548999999908],[-115.59110999999996,77.259995000000117],[-115.61694299999999,77.258331000000112],[-115.66915899999992,77.256942999999978],[-115.69499199999996,77.255264000000011],[-115.77250700000002,77.247757000000036],[-115.81973299999999,77.237488000000042],[-115.83084099999991,77.233322000000101],[-115.85888699999998,77.220824999999934],[-115.87777699999992,77.215271000000143],[-115.94695299999989,77.20887799999997],[-116.112503,77.193863000000022],[-116.13806199999999,77.192200000000128],[-116.19055200000003,77.191650000000095],[-116.21777299999997,77.192749000000049],[-116.26917300000002,77.190261999999962],[-116.28056300000003,77.183594000000028],[-116.31416300000001,77.144440000000088],[-116.31973299999999,77.11775200000011],[-116.28028899999998,77.067215000000033],[-116.26917300000002,77.055817000000047],[-116.24249299999991,77.044144000000017],[-116.17360699999989,77.027206000000092],[-116.06388900000002,77.007492000000013],[-116.00583599999999,76.997482000000105],[-115.95028699999995,76.991363999999976],[-115.860817,76.979156000000103],[-115.75499699999995,76.960815000000082],[-115.73889199999996,76.955261000000064],[-115.73137700000001,76.949707000000103],[-115.72833300000002,76.943863000000079],[-115.729446,76.938034000000073],[-115.73222399999997,76.931656000000089],[-115.74610899999999,76.925262000000089],[-115.80695300000002,76.90637200000009],[-115.829453,76.900818000000129],[-115.85333299999996,76.897217000000069],[-115.90334300000001,76.893874999999923],[-115.92859599999997,76.893050999999957],[-115.98194899999993,76.895538000000045],[-116.06388900000002,76.902771000000087],[-116.11501299999992,76.909149000000014],[-116.25389100000001,76.932480000000055],[-116.306107,76.936096000000134],[-116.32721699999996,76.935532000000023],[-116.35166899999996,76.9327550000001],[-116.36527999999993,76.926376000000062],[-116.36721799999998,76.915543000000071],[-116.36332699999997,76.90887500000008],[-116.35555999999985,76.903320000000008],[-116.34612299999992,76.898331000000042],[-116.32972699999999,76.89276099999995],[-116.18360899999993,76.845825000000104],[-116.16388699999999,76.841660000000104],[-116.10749800000002,76.833602999999982],[-116.031113,76.820267000000001],[-116.00029000000001,76.811371000000065],[-115.89472999999992,76.703323000000012],[-115.89138800000001,76.697478999999987],[-115.89666699999998,76.691649999999981],[-116.07140400000003,76.625809000000004],[-116.09306299999992,76.619141000000013],[-116.11582900000002,76.61442599999998],[-116.16055299999999,76.611099000000081],[-116.23194899999999,76.603043000000014],[-116.25446299999999,76.598602000000085],[-116.32250999999997,76.581100000000049],[-116.37351999999993,76.581802000000039],[-116.73277300000001,76.572495000000004],[-116.75890399999992,76.56999200000007],[-116.97112299999998,76.548598999999967],[-116.99471999999992,76.545822000000044],[-117.01750199999992,76.542205999999965],[-117.03999299999992,76.537490999999932],[-117.05387899999999,76.533051000000114],[-117.06861900000001,76.526093000000117],[-117.07556199999993,76.520538000000045],[-117.07749899999999,76.514160000000061],[-117.07640099999998,76.508881000000088],[-117.07277699999997,76.503052000000082],[-117.05695299999996,76.491652999999985],[-117.04360999999989,76.48692299999999],[-117.01750199999992,76.482483000000116],[-117.00389099999995,76.477478000000076],[-116.98361199999999,76.454987000000074],[-116.94082599999996,76.386932000000058],[-116.93916299999995,76.380539000000113],[-116.93582200000003,76.351929000000041],[-116.93859900000001,76.34637500000008],[-117.09555099999994,76.295257999999933],[-117.13971700000002,76.286925999999994],[-117.31973299999999,76.257767000000001],[-117.345551,76.256377999999984],[-117.36888099999999,76.256943000000035],[-117.52390300000002,76.263611000000026],[-117.5750119999999,76.26887499999998],[-117.60305799999998,76.27388000000002],[-117.62304699999999,76.278870000000097],[-117.639183,76.28414900000007],[-117.65778399999999,76.293319999999994],[-117.64917000000003,76.305542000000003],[-117.64890299999996,76.311371000000008],[-117.65527299999997,76.317490000000021],[-117.67304999999993,76.322220000000073],[-117.69915800000001,76.324158000000011],[-117.72416699999997,76.324432000000115],[-117.87777699999998,76.341933999999981],[-117.889183,76.355819999999937],[-117.90139799999997,76.367203000000131],[-117.90695199999993,76.372208000000001],[-117.99722299999996,76.396941999999967],[-118.02139299999999,76.401932000000045],[-118.04444899999999,76.404984000000127],[-118.05999800000001,76.409149000000127],[-118.04750100000001,76.441650000000038],[-118.02749599999999,76.484711000000061],[-117.97332799999998,76.596375000000023],[-117.92832899999996,76.676651000000106],[-117.91915899999992,76.68803400000013],[-117.90666199999993,76.694137999999953],[-117.883331,76.700546000000088],[-117.86444099999994,76.704163000000051],[-117.84805299999999,76.708328000000051],[-117.81331599999999,76.719436999999971],[-117.79638699999998,76.725815000000125],[-117.78806299999997,76.732208000000071],[-117.73889200000002,76.772217000000012],[-117.73444399999994,76.778320000000122],[-117.73860200000001,76.784149000000127],[-117.79888899999997,76.817764000000011],[-117.81667299999998,76.821380999999974],[-117.84221600000001,76.82388300000008],[-117.86665299999999,76.822220000000129],[-117.88806199999999,76.818878000000041],[-117.90499899999992,76.812195000000031],[-117.91777000000002,76.799988000000042],[-117.92610200000001,76.788040000000024],[-117.96056399999998,76.769989000000066],[-118.00583599999993,76.761383000000137],[-118.02971600000001,76.758606000000043],[-118.08222999999998,76.756943000000092],[-118.10611,76.75749200000007],[-118.15695199999999,76.76249700000011],[-118.21362299999998,76.769150000000081],[-118.29361,76.773041000000148],[-118.319458,76.773041000000148],[-118.33750900000001,76.768326000000116],[-118.49500299999994,76.712203999999929],[-118.47471599999994,76.679703000000018],[-118.45973199999997,76.673874000000012],[-118.42887899999999,76.663879000000122],[-118.40306099999998,76.657760999999994],[-118.35804699999989,76.64888000000002],[-118.34137699999997,76.643599999999992],[-118.33473199999992,76.637497000000053],[-118.316101,76.574707000000103],[-118.50279199999994,76.509720000000073],[-118.52390299999996,76.503876000000048],[-118.54611199999999,76.5],[-118.57084699999996,76.499145999999996],[-118.59694699999989,76.5],[-118.62361099999993,76.501938000000109],[-118.65167200000002,76.505553999999961],[-118.67804699999994,76.50999500000006],[-118.70916699999998,76.519989000000066],[-118.71333299999998,76.525818000000129],[-118.71362299999998,76.531662000000097],[-118.72222899999991,76.537201000000096],[-118.73473399999995,76.542480000000069],[-118.76139799999999,76.546936000000017],[-118.81471299999998,76.553040000000067],[-118.84166700000003,76.554977000000065],[-118.94415299999997,76.518051000000128],[-118.96806300000003,76.505264000000125],[-118.97582999999992,76.498871000000008],[-118.97609699999998,76.496368000000018],[-118.97250399999996,76.491652999999985],[-118.96777299999997,76.488312000000121],[-118.95527600000003,76.483047000000056],[-118.93110699999994,76.479155999999989],[-118.82195300000001,76.471374999999966],[-118.68195300000002,76.445251000000098],[-118.64862099999999,76.428863999999919],[-118.612503,76.400269000000094],[-118.59416199999993,76.383881000000031],[-118.56610099999995,76.343048000000124],[-118.567497,76.336655000000007],[-118.58168000000001,76.324706999999933],[-118.62554899999998,76.294433999999967],[-118.63751200000002,76.288040000000137],[-118.65556299999997,76.28414900000007],[-118.67916899999994,76.282211000000132],[-118.70556599999992,76.281661999999983],[-118.78083799999996,76.282486000000119],[-118.82833900000003,76.281937000000028],[-118.87666299999989,76.27748100000008],[-118.89584400000001,76.272217000000126],[-118.91139199999992,76.265548999999965],[-118.91915899999998,76.259430000000123],[-118.92443799999995,76.252776999999924],[-118.942207,76.210541000000148],[-118.93776699999995,76.204711999999915],[-118.92331699999994,76.194138000000066],[-118.91278099999994,76.188034000000016],[-118.90471600000001,76.169144000000074],[-118.95527600000003,76.132477000000108],[-118.96501199999994,76.126648000000102],[-119.07584399999996,76.083328000000108],[-119.10109699999998,76.084152000000074],[-119.12470999999999,76.088042999999971],[-119.22972099999993,76.107208000000071],[-119.24526999999995,76.111374000000012],[-119.26000999999997,76.117203000000018],[-119.28250099999997,76.127472000000068],[-119.29943800000001,76.138596000000121],[-119.30832699999996,76.149994000000106],[-119.31054699999999,76.155258000000117],[-119.30583200000001,76.167755000000113],[-119.30082699999997,76.174423000000047],[-119.29499799999996,76.180267000000072],[-119.29527300000001,76.186096000000077],[-119.30166600000001,76.191360000000088],[-119.36916399999996,76.229706000000078],[-119.54915599999998,76.324158000000011],[-119.5864029999999,76.318603999999993],[-119.65499899999992,76.303040000000067],[-119.67527799999993,76.264160000000118],[-119.67500299999995,76.245818999999926],[-119.64555399999995,76.230545000000063],[-119.59445199999999,76.203049000000021],[-119.58583099999998,76.197479000000101],[-119.57277699999992,76.186371000000122],[-119.56806899999987,76.180542000000116],[-119.56582600000002,76.175262000000032],[-119.56696299999999,76.168869000000086],[-119.57277699999992,76.16304000000008],[-119.64334099999996,76.112487999999985],[-119.74527,76.116652999999985],[-119.76999699999993,76.116379000000052],[-119.79305999999991,76.114426000000094],[-119.80499299999997,76.108871000000022],[-119.79723399999995,76.104155999999989],[-119.7727809999999,76.099425999999937],[-119.74416400000001,76.097487999999998],[-119.64723200000003,76.081664999999987],[-119.62666300000001,76.076660000000118],[-119.50389100000001,76.040817000000061],[-119.49137899999999,76.035538000000088],[-119.47833299999996,76.024155000000121],[-119.47389199999998,76.018599999999992],[-119.47222899999997,76.000824000000023],[-119.47609699999998,75.982483000000059],[-119.48110999999989,75.970825000000048],[-119.48916599999995,75.965546000000018],[-119.50974299999996,75.960540999999978],[-119.53555299999994,75.962494000000106],[-119.54638699999998,75.968323000000112],[-119.56111099999998,75.97886699999998],[-119.57195299999995,75.984985000000108],[-119.58583099999998,75.989699999999971],[-119.612503,75.992477000000065],[-119.63694800000002,75.992203000000131],[-119.64890300000002,75.986649000000114],[-119.699997,75.94859300000013],[-119.70333900000003,75.942749000000106],[-119.6875,75.938309000000118],[-119.612503,75.910263000000043],[-119.81082199999997,75.86943100000002],[-119.870003,75.857483000000002],[-119.93554699999993,75.848328000000095],[-119.98000300000001,75.843323000000055],[-120.02583300000003,75.839980999999966],[-120.04915599999987,75.838882000000126],[-120.07640100000003,75.867203000000075],[-120.08500700000002,75.872757000000036],[-120.11416600000001,75.888321000000133],[-120.12805199999997,75.893051000000014],[-120.14916999999997,75.896378000000141],[-120.16639700000002,75.892487000000074],[-120.18028299999997,75.879974000000004],[-120.18331899999993,75.873871000000065],[-120.19722000000002,75.861374000000069],[-120.21501199999994,75.848602000000028],[-120.22582999999992,75.842209000000082],[-120.26972999999992,75.821930000000123],[-120.28888699999987,75.816085999999927],[-120.30915800000002,75.811096000000077],[-120.33222999999998,75.807480000000055],[-120.35555999999997,75.806366000000025],[-120.37805200000003,75.80664100000007],[-120.40387699999991,75.808318999999983],[-120.43028300000003,75.811096000000077],[-120.45445299999994,75.81581100000011],[-120.46694899999994,75.821105999999986],[-120.47582999999997,75.826660000000004],[-120.48528299999998,75.837769000000094],[-120.4886019999999,75.844147000000021],[-120.48972300000003,75.849991000000045],[-120.48832699999997,75.855545000000063],[-120.46305799999999,75.916382000000056],[-120.46000700000002,75.922484999999995],[-120.44860799999987,75.935532000000023],[-120.406113,75.954987000000017],[-120.40583800000002,75.97137500000008],[-120.43499799999989,76.003052000000025],[-120.45889299999999,76.011658000000125],[-120.46749899999998,76.012207000000046],[-120.53333299999991,76.003052000000025],[-120.56054699999999,75.991653000000099],[-120.56331599999993,75.985535000000141],[-120.57417299999997,75.979156000000103],[-120.59388699999994,75.978043000000014],[-120.61361699999998,75.981934000000081],[-120.64306599999986,75.992477000000065],[-120.696663,76.013884999999959],[-120.70722999999998,76.018875000000037],[-120.71611000000001,76.024429000000055],[-120.729446,76.039428999999984],[-120.75167799999997,76.099425999999937],[-120.75110599999999,76.105819999999994],[-120.74833699999999,76.111922999999933],[-120.74305700000002,76.117751999999939],[-120.73222399999997,76.124145999999996],[-120.71193699999998,76.129149999999981],[-120.72749299999992,76.158600000000035],[-120.85722399999986,76.196639999999945],[-120.88362100000001,76.198318000000086],[-120.90249599999999,76.196365000000128],[-120.95639,76.177765000000022],[-120.96806300000003,76.172211000000004],[-121.00890400000003,76.144149999999911],[-121.01251199999996,76.139160000000061],[-121.016953,76.121094000000085],[-121.02528399999989,76.073318000000029],[-121.02278100000001,76.059143000000063],[-120.99328600000001,76.026817000000108],[-120.97961399999997,76.019653000000119],[-120.970123,76.013489000000106],[-120.93195300000002,75.959990999999945],[-120.93306000000001,75.956940000000145],[-120.94583099999994,75.94859300000013],[-120.98082699999998,75.941649999999981],[-120.99944299999999,75.939697000000024],[-121.01445000000001,75.942749000000106],[-121.01722699999999,75.94802900000002],[-121.01112399999988,75.970825000000048],[-121.00055699999996,75.977203000000145],[-120.98610699999995,75.984145999999953],[-121.00761399999999,75.988982999999962],[-121.01527399999998,75.992149000000097],[-121.030441,75.992477000000065],[-121.09277299999997,75.993317000000104],[-121.11389199999996,75.991653000000099],[-121.25945299999995,75.964432000000045],[-121.26583900000003,75.958328000000051],[-121.271118,75.946091000000081],[-121.27887699999985,75.927765000000079],[-121.34861799999993,75.928040000000067],[-121.423317,75.933868000000018],[-121.43639400000001,75.939148000000046],[-121.422775,75.946465000000103],[-121.41665599999988,75.953049000000078],[-121.42415599999993,75.956649999999911],[-121.479446,75.976379000000009],[-121.58306899999997,76.003601000000117],[-121.59500100000002,76.005554000000075],[-121.83473200000003,76.034424000000115],[-122.13417099999998,76.036377000000073],[-122.14499699999999,76.030823000000055],[-122.14472999999992,75.996932999999956],[-122.16944899999999,75.978043000000014],[-122.33583099999998,75.942474000000118],[-122.37666300000001,75.933868000000018],[-122.41639700000002,75.928589000000045],[-122.442207,75.927475000000072],[-122.48916599999995,75.927200000000028],[-122.51666299999994,75.928314],[-122.56360599999999,75.931931000000134],[-122.67610200000001,75.951660000000061],[-122.69638099999997,75.955551000000128],[-122.72250400000001,75.96887200000009],[-122.728882,75.973037999999974],[-122.66915899999998,75.976929000000041],[-122.64943699999998,75.982208000000014],[-122.59111000000001,76.001663000000008],[-122.57640100000003,76.007492000000013],[-122.5625,76.014434999999992],[-122.47556299999997,76.104431000000034],[-122.47112300000003,76.110260000000039],[-122.47193899999996,76.114990000000034],[-122.48554999999993,76.1202550000001],[-122.49833699999994,76.120529000000033],[-122.60134900000003,76.115097000000048],[-122.62222300000002,76.111374000000012],[-122.67832900000002,76.111374000000012],[-122.69999699999994,76.112198000000149],[-122.70445299999994,76.114426000000094],[-122.69554099999993,76.117751999999939],[-122.58721899999995,76.134155000000021],[-122.50195299999996,76.136383000000137],[-122.48999000000003,76.141098],[-122.57417299999992,76.166091999999992],[-122.595551,76.170822000000044],[-122.62027,76.174423000000047],[-122.64666699999998,76.175812000000064],[-122.67027300000001,76.174423000000047],[-122.69360399999999,76.17053199999998],[-122.73361199999994,76.162491000000102],[-122.84277299999997,76.131088000000091],[-122.885559,76.104431000000034],[-122.90194699999995,76.098038000000031],[-122.92138699999987,76.092758000000003],[-123.01139799999993,76.083328000000108],[-123.037781,76.084717000000069],[-122.97917199999995,76.125809000000118],[-122.84861799999999,76.208878000000027],[-122.72112299999998,76.231369000000029],[-122.636124,76.264709000000096],[-122.63166799999999,76.270538000000101],[-122.63751200000002,76.288040000000137],[-122.64527899999996,76.299712999999997],[-122.63249199999996,76.329987000000017],[-122.62638900000002,76.336380000000133],[-122.61776700000001,76.342208999999968],[-122.59889199999998,76.348328000000038],[-122.57861300000002,76.353591999999992],[-122.39890300000002,76.396941999999967],[-122.30943300000001,76.408875000000023],[-122.01471699999996,76.432479999999998],[-121.826683,76.422760000000096],[-121.78195199999999,76.420258000000047],[-121.73805199999998,76.421097000000145],[-121.54998799999993,76.434708000000114],[-121.53307299999994,76.437195000000031],[-121.51445000000001,76.444138000000009],[-121.421944,76.493590999999924],[-121.31220999999994,76.572495000000004],[-121.30695300000002,76.578323000000125],[-121.31388899999996,76.589705999999978],[-121.30915800000002,76.593872000000033],[-121.21250899999995,76.649719000000005],[-121.118607,76.673309000000017],[-121.10109699999992,76.668320000000051],[-121.079453,76.668320000000051],[-121.05666399999996,76.671371000000022],[-120.923317,76.689972000000068],[-120.900284,76.693313999999987],[-120.88417099999998,76.698868000000004],[-120.86193800000001,76.711929000000112],[-120.84777799999989,76.724700999999925],[-120.83249699999993,76.731369000000086],[-120.81220999999994,76.737198000000092],[-120.76611299999996,76.743591000000094],[-120.66915899999998,76.751099000000067],[-120.64083899999997,76.748596000000134],[-120.62581599999999,76.746367999999961],[-120.60417200000001,76.746367999999961],[-120.58112299999999,76.7494200000001],[-120.40167200000002,76.797211000000004],[-120.38194299999992,76.804153000000042],[-120.36776700000001,76.810257000000092],[-120.36609599999997,76.813309000000004],[-120.36527999999993,76.836105000000032],[-120.09137699999997,77.003051999999968],[-120.06916799999999,77.008040999999935],[-120.03888699999999,77.013321000000019],[-120.02278100000001,77.015273999999977],[-119.99722300000002,77.01638800000012],[-119.97693600000002,77.013321000000019],[-119.96112099999993,77.009995000000004],[-119.94999699999994,77.012497000000053],[-119.92027299999995,77.023605000000032],[-119.83944700000001,77.05693100000002],[-119.83167999999995,77.06303400000013],[-119.83249699999999,77.069153000000142],[-119.83583099999987,77.075271999999984],[-119.83721899999995,77.079712000000029],[-119.83556399999998,77.085266000000047],[-119.825287,77.091095000000053],[-119.8125,77.096649000000014],[-119.77639799999992,77.106094000000098],[-119.60056299999991,77.145827999999995],[-119.43331899999998,77.173599000000081],[-119.41082799999998,77.178588999999931],[-119.389183,77.184417999999994],[-119.360817,77.203323000000069],[-119.354446,77.209152000000131],[-119.346947,77.221374999999966],[-119.34583999999995,77.227767999999969],[-119.33389299999993,77.239975000000072],[-119.31582599999996,77.258041000000105],[-119.29583700000001,77.276657000000114],[-119.26834099999996,77.28915400000011],[-119.25306699999999,77.295258000000103],[-119.22222899999991,77.306366000000082],[-119.20111099999991,77.313034000000073],[-119.15334299999995,77.325821000000076],[-119.11444099999994,77.327484000000027],[-119.08666999999997,77.326660000000061],[-119.00110599999988,77.321106000000043],[-118.94138299999992,77.319717000000082],[-118.91694599999994,77.32249500000006],[-118.89389,77.327484000000027],[-118.87000299999994,77.333878000000084],[-118.75723299999999,77.352478000000019],[-118.73249800000002,77.35554500000012],[-118.65110799999997,77.360535000000141],[-118.44972199999995,77.358871000000136],[-118.224716,77.356094000000041],[-118.19721999999996,77.354980000000069],[-118.16583300000002,77.355255000000056],[-118.14111299999996,77.35803199999998],[-118.12805200000003,77.364426000000037],[-118.12721299999998,77.369431000000077],[-118.125,77.372482000000105],[-118.10694899999993,77.378036000000122],[-118.08750899999995,77.379150000000095],[-117.91111799999993,77.386932000000058],[-117.86721799999992,77.388596000000064],[-117.85056299999991,77.384430000000123],[-117.781113,77.36303700000002],[-117.76806599999998,77.357758000000047],[-117.756958,77.351654000000053],[-117.75083899999998,77.346648999999957],[-117.73860200000001,77.341933999999924],[-117.72444200000001,77.338043000000084],[-117.61193800000001,77.327774000000034],[-117.45084400000002,77.312194999999917],[-117.27639799999997,77.28915400000011],[-117.02306399999998,77.290817000000004],[-117.01478600000002,77.296700000000044],[-117.01711999999992,77.300208999999938],[-117.02749599999993,77.310256999999979],[-117.06082199999997,77.326660000000061],[-117.10555999999997,77.339981000000023],[-117.11582900000002,77.34165999999999],[-117.11805699999996,77.338593000000117],[-117.1324919999999,77.333328000000051],[-117.15416699999997,77.332489000000066],[-117.16999800000002,77.335815000000082],[-117.18195300000002,77.34027100000003],[-117.18167099999999,77.346375000000023],[-117.17666600000001,77.352203000000145],[-117.15888999999987,77.358871000000136],[-117.14277600000003,77.361374000000126],[-117.11945300000002,77.359985000000108],[-117.06082199999997,77.353317000000118],[-117.00749999999994,77.343039999999974],[-116.94666299999994,77.329436999999984],[-116.87638900000002,77.318054000000132],[-116.848343,77.315810999999997],[-116.79583700000001,77.317490000000021],[-116.77887699999997,77.319153000000085],[-116.65167199999996,77.377761999999962],[-116.64835399999998,77.383330999999998],[-116.65167199999996,77.388046000000031],[-116.66278099999994,77.391662999999994],[-116.74137899999999,77.395263999999997],[-116.87082699999996,77.400818000000015],[-116.89917000000003,77.399428999999998],[-116.97582999999997,77.393326000000059],[-116.99471999999992,77.394440000000031],[-117.01112399999994,77.398880000000077],[-117.15306099999992,77.451660000000118],[-117.14998599999996,77.457214000000135],[-117.13890100000003,77.460541000000035],[-117.08306899999997,77.474425999999937],[-117.06667299999998,77.476929000000098],[-117.06139399999989,77.476089000000059],[-117.03833799999995,77.471001000000058],[-116.991669,77.466660000000104],[-116.91972399999997,77.470535000000041],[-116.89444700000001,77.473312000000135],[-116.78527799999995,77.499145999999996],[-116.75723299999993,77.511658000000011],[-116.76944699999996,77.516388000000006],[-116.85109699999998,77.516663000000051],[-116.87917299999987,77.517761000000121],[-116.9058379999999,77.520264000000111],[-116.926941,77.524704000000099],[-116.92054699999994,77.528594999999996],[-116.900284,77.532211000000018],[-116.875,77.534988000000112],[-116.83306900000002,77.533600000000035],[-116.75418100000002,77.534424000000001],[-116.64750699999996,77.537766000000147],[-116.58583099999998,77.540543000000014],[-116.53611799999993,77.544434000000081],[-116.48777799999999,77.550262000000032],[-116.35109699999998,77.539154000000053]],[[-85.285278000000005,77.587494000000049],[-85.259734999999978,77.586655000000121],[-85.235274999999945,77.586655000000121],[-85.107223999999974,77.581099999999992],[-85.011123999999938,77.57388300000008],[-84.995270000000005,77.569443000000092],[-84.822509999999966,77.505264000000125],[-84.813889000000017,77.497208000000057],[-84.824447999999961,77.491927999999973],[-84.843062999999916,77.487198000000149],[-84.934433000000013,77.470260999999937],[-84.960830999999985,77.466385000000059],[-85.027221999999995,77.459717000000069],[-85.095551,77.454437000000041],[-85.126937999999939,77.453048999999908],[-85.153609999999958,77.454437000000041],[-85.168335000000013,77.456939999999975],[-85.178604000000007,77.464157000000114],[-85.172500999999897,77.473601999999971],[-85.159164000000033,77.48414600000001],[-85.144729999999925,77.489426000000094],[-85.138610999999969,77.494980000000112],[-85.140839000000028,77.501663000000065],[-85.152785999999992,77.507767000000115],[-85.170273000000009,77.511658000000011],[-85.248885999999914,77.527481000000023],[-85.270843999999954,77.529984000000013],[-85.319732999999928,77.532211000000018],[-85.344161999999983,77.532211000000018],[-85.39916999999997,77.53387500000008],[-85.538329999999974,77.539978000000019],[-85.535552999999936,77.543869000000086],[-85.352218999999934,77.582764000000054],[-85.31138599999997,77.586655000000121],[-85.285278000000005,77.587494000000049]],[[-90.603058000000033,77.628311000000053],[-90.521118000000001,77.626083000000108],[-90.492492999999968,77.626083000000108],[-90.438598999999954,77.630538999999999],[-90.414443999999946,77.631087999999977],[-90.388061999999877,77.629425000000026],[-90.339172000000019,77.623871000000065],[-90.242492999999854,77.612488000000042],[-90.219161999999983,77.608871000000079],[-90.208892999999932,77.603042999999957],[-90.210007000000019,77.597488000000055],[-90.206664999999987,77.59165999999999],[-90.196654999999964,77.587204000000042],[-90.177779999999927,77.58248900000001],[-90.059722999999963,77.566375999999991],[-89.937209999999993,77.53276100000005],[-89.91722099999987,77.527205999999978],[-89.841109999999958,77.504166000000055],[-89.806655999999919,77.492477000000122],[-89.753615999999965,77.473038000000031],[-89.719161999999983,77.458328000000108],[-89.636123999999995,77.339157000000057],[-89.640288999999996,77.333328000000051],[-89.67471299999994,77.310256999999979],[-89.70777899999996,77.294144000000131],[-89.849730999999963,77.25],[-89.882767000000001,77.239975000000072],[-89.919998000000021,77.230270000000019],[-90,77.213814000000013],[-90.009170999999981,77.211928999999998],[-90.088897999999915,77.199707000000046],[-90.118057000000022,77.198593000000074],[-90.129165999999998,77.200546000000031],[-90.259170999999924,77.201096000000064],[-90.366942999999992,77.197754000000089],[-90.416655999999989,77.213042999999971],[-90.683318999999926,77.271927000000062],[-90.704726999999934,77.276382000000069],[-90.727218999999934,77.279984000000013],[-90.843063000000029,77.292754999999943],[-90.90972899999997,77.303040000000067],[-90.946655000000021,77.309418000000051],[-91.146666999999923,77.362198000000092],[-91.18249499999996,77.386932000000058],[-91.187209999999993,77.390273999999977],[-91.208892999999932,77.414993000000095],[-91.206954999999994,77.568604000000107],[-91.184433000000013,77.608597000000145],[-91.173614999999927,77.613036999999963],[-91.15834000000001,77.617203000000075],[-91.10943599999996,77.624985000000038],[-90.906386999999938,77.653046000000131],[-90.880828999999949,77.654434000000037],[-90.826400999999976,77.654434000000037],[-90.801666000000012,77.651657000000114],[-90.727492999999981,77.642212000000029],[-90.683608999999933,77.633331000000112],[-90.603058000000033,77.628311000000053]],[[-105.01027699999986,77.408034999999927],[-104.98665599999998,77.404434000000094],[-104.96193700000003,77.404434000000094],[-104.90805099999994,77.406937000000028],[-104.82584400000002,77.413605000000018],[-104.77166699999998,77.416656000000046],[-104.74109599999997,77.414428999999984],[-104.73277300000001,77.411377000000073],[-104.53832999999997,77.338318000000072],[-104.48889199999996,77.318603999999993],[-104.39555399999995,77.276382000000069],[-104.38834400000002,77.271378000000141],[-104.38137799999998,77.264435000000105],[-104.37998999999996,77.261931999999945],[-104.36554699999999,77.230270000000019],[-104.36749299999997,77.224425999999994],[-104.40499899999992,77.172485000000108],[-104.416946,77.161926000000051],[-104.43804899999998,77.150543000000027],[-104.47250400000001,77.13749700000011],[-104.5,77.133040999999992],[-104.52250699999996,77.130539000000113],[-104.74027999999993,77.108597000000088],[-104.79028299999999,77.108871000000022],[-104.83249699999993,77.113312000000121],[-104.85333300000002,77.117477000000122],[-104.86916400000001,77.123596000000134],[-104.883331,77.135543999999982],[-104.89250199999992,77.141936999999928],[-104.906387,77.147491000000116],[-104.92250099999995,77.152481000000023],[-104.945267,77.157211000000018],[-104.993607,77.164992999999981],[-105.04444899999993,77.171371000000136],[-105.09583999999995,77.176085999999998],[-105.11971999999997,77.176650999999993],[-105.13751200000002,77.176085999999998],[-105.15167200000002,77.171371000000136],[-105.24694799999997,77.193863000000022],[-105.40888999999999,77.281661999999983],[-105.41722099999998,77.284714000000065],[-105.45527599999997,77.291930999999977],[-105.48111,77.294983000000116],[-105.50666799999993,77.299149],[-105.531677,77.30525200000011],[-105.55027799999999,77.311645999999996],[-105.57195300000001,77.323317999999915],[-105.67916899999994,77.447479000000044],[-105.691101,77.497208000000057],[-105.83444199999997,77.610260000000096],[-105.85833700000001,77.626923000000147],[-105.878601,77.639709000000096],[-105.88890100000003,77.645263999999997],[-105.93083200000001,77.663040000000137],[-105.94776899999994,77.668868999999972],[-105.98000299999995,77.679427999999973],[-106.01471700000002,77.688583000000051],[-106.08361799999989,77.71026599999999],[-106.09166699999997,77.71527100000003],[-106.09472700000003,77.724151999999947],[-106.08917199999996,77.72886699999998],[-106.07945299999989,77.732758000000047],[-106.04055800000003,77.744980000000055],[-106.01222200000001,77.750549000000035],[-105.94167299999987,77.759720000000016],[-105.91388699999999,77.762497000000053],[-105.70056199999999,77.753600999999946],[-105.64890299999996,77.748596000000077],[-105.55248999999998,77.729430999999977],[-105.50666799999993,77.719711000000075],[-105.47028399999999,77.709152000000017],[-105.38971699999996,77.683868000000018],[-105.17360699999995,77.612198000000035],[-105.15695199999999,77.606093999999985],[-105.03971899999999,77.552199999999971],[-105.02778599999994,77.546371000000136],[-104.968613,77.514435000000049],[-104.95916699999998,77.508041000000048],[-104.94888300000002,77.496094000000085],[-104.94499199999996,77.484984999999995],[-104.946663,77.479155999999989],[-104.95249899999999,77.474425999999937],[-104.96749899999998,77.468872000000147],[-105.01027699999986,77.458603000000096],[-105.01194800000002,77.45277400000009],[-105.01806599999986,77.411925999999994],[-105.01027699999986,77.408034999999927]],[[-95.405838000000017,77.763885000000016],[-95.408889999999928,77.75221300000004],[-95.406113000000005,77.746094000000028],[-95.389724999999942,77.739426000000037],[-95.363892000000021,77.737198000000092],[-95.343886999999995,77.738037000000077],[-95.118606999999997,77.74971000000005],[-95.087783999999942,77.75221300000004],[-95.059433000000013,77.756653000000085],[-95.029174999999952,77.767211999999915],[-95.010833999999988,77.777771000000143],[-94.981673999999998,77.780823000000055],[-94.951674999999966,77.782486000000006],[-94.752228000000002,77.788589000000115],[-94.728881999999942,77.788315000000011],[-94.623321999999973,77.783599999999979],[-94.572783999999899,77.780548000000067],[-94.542220999999927,77.773880000000077],[-94.521118000000001,77.767761000000064],[-94.477492999999924,77.764708999999982],[-94.448607999999979,77.765273999999977],[-94.356658999999866,77.767487000000131],[-94.252501999999936,77.772216999999955],[-94.089995999999928,77.765823000000125],[-94.030288999999982,77.760543999999982],[-93.951110999999969,77.735535000000141],[-93.935821999999973,77.732483000000059],[-93.931380999999988,77.732483000000059],[-93.826675000000023,77.739426000000037],[-93.820007000000032,77.744980000000055],[-93.817779999999971,77.75082400000008],[-93.806655999999919,77.756378000000041],[-93.786666999999966,77.761108000000092],[-93.68638599999997,77.773880000000077],[-93.65695199999999,77.776657],[-93.629439999999931,77.77609300000006],[-93.546111999999994,77.770827999999995],[-93.241669000000002,77.733871000000136],[-93.233886999999868,77.732483000000059],[-93.17471299999994,77.704163000000051],[-93.101944000000003,77.662490999999989],[-93.106658999999922,77.660263000000043],[-93.14834599999989,77.645538000000101],[-93.164169000000015,77.64027400000009],[-93.196380999999974,77.637206999999989],[-93.222504000000015,77.638596000000007],[-93.249161000000015,77.641663000000108],[-93.277221999999938,77.643599999999935],[-93.303054999999972,77.643599999999935],[-93.35943599999996,77.635818000000029],[-93.379439999999988,77.630814000000044],[-93.390288999999939,77.625533999999959],[-93.397232000000031,77.619979999999998],[-93.486388999999974,77.54553199999998],[-93.502501999999993,77.503052000000082],[-93.477782999999988,77.492477000000122],[-93.474715999999944,77.487487999999985],[-93.474166999999909,77.476379000000065],[-93.475280999999995,77.47137499999991],[-93.480834999999956,77.466660000000104],[-93.537780999999995,77.445816000000093],[-93.553054999999915,77.440811000000053],[-93.570556999999951,77.437759000000142],[-93.906661999999983,77.433319000000097],[-93.933884000000035,77.433593999999971],[-94.25167799999997,77.455261000000007],[-94.319457999999997,77.468597000000102],[-94.345001000000025,77.472487999999998],[-94.468886999999995,77.476929000000098],[-94.801101999999901,77.480270000000132],[-95.032226999999978,77.469986000000119],[-95.123610999999983,77.463882000000069],[-95.204453000000001,77.460814999999968],[-95.252791999999943,77.460814999999968],[-95.294998000000021,77.466385000000059],[-95.346389999999985,77.469986000000119],[-95.477492999999981,77.473877000000016],[-95.532776000000013,77.473601999999971],[-95.726105000000018,77.470260999999937],[-95.823623999999938,77.466385000000059],[-95.838897999999858,77.462493999999992],[-95.864166000000012,77.462203999999986],[-95.889450000000011,77.464432000000102],[-96,77.479980000000126],[-96.061385999999857,77.491652999999985],[-96.083327999999995,77.497756999999979],[-96.099730999999963,77.504439999999988],[-96.259170999999981,77.571929999999952],[-96.318343999999968,77.598877000000073],[-96.328888000000006,77.604980000000012],[-96.255568999999923,77.689697000000024],[-96.241104000000007,77.694977000000108],[-96.194442999999978,77.704987000000017],[-96.077224999999942,77.726929000000041],[-95.934433000000013,77.753052000000025],[-95.918059999999969,77.755554000000075],[-95.897231999999974,77.757492000000013],[-95.869445999999925,77.757217000000026],[-95.848052999999993,77.755264000000068],[-95.742767000000015,77.762207000000046],[-95.630553999999961,77.771102999999982],[-95.583892999999932,77.779709000000082],[-95.570007000000032,77.784149000000127],[-95.566101000000003,77.78776600000009],[-95.565552000000025,77.792755000000056],[-95.552779999999927,77.796097000000145],[-95.528884999999946,77.801086000000112],[-95.49610899999999,77.805542000000059],[-95.465285999999935,77.80802900000009],[-95.427779999999984,77.803314000000057],[-95.418335000000013,77.798874000000069],[-95.410827999999981,77.792480000000012],[-95.40695199999999,77.787201000000039],[-95.404449,77.776381999999955],[-95.405838000000017,77.763885000000016]],[[-77.851944000000003,77.774429000000055],[-77.875274999999874,77.774429000000055],[-77.888061999999877,77.781372000000033],[-77.930556999999965,77.808868000000075],[-77.955001999999922,77.830276000000026],[-77.952224999999999,77.833054000000004],[-77.936385999999914,77.839157000000114],[-77.906386999999995,77.844437000000028],[-77.880279999999914,77.848038000000031],[-77.821121000000005,77.854431000000034],[-77.717772999999966,77.863037000000134],[-77.676102000000014,77.864700000000028],[-77.622771999999941,77.862762000000089],[-77.596389999999985,77.860808999999961],[-77.582779000000016,77.858032000000094],[-77.575286999999946,77.854980000000126],[-77.568619000000012,77.849716000000001],[-77.575561999999991,77.823608000000036],[-77.579178000000013,77.81860400000005],[-77.592772999999909,77.813309000000004],[-77.628052000000025,77.804153000000042],[-77.658889999999985,77.79693600000013],[-77.680557000000022,77.792755000000056],[-77.851944000000003,77.774429000000055]],[[-101.71140300000002,77.901657000000057],[-101.671944,77.893326000000002],[-101.62082699999996,77.884430000000066],[-101.52443700000003,77.869980000000112],[-101.450287,77.861098999999967],[-101.36833200000001,77.853867000000093],[-101.26555599999995,77.842758000000003],[-101.23777799999993,77.838882000000126],[-101.19138299999997,77.830826000000059],[-101.16139199999992,77.822769000000051],[-100.96056399999992,77.759155000000135],[-100.92639200000002,77.743317000000104],[-100.92555199999998,77.737198000000092],[-100.92887899999999,77.731369000000086],[-100.94055200000003,77.726929000000041],[-100.96472199999994,77.72554000000008],[-101.096947,77.719436999999914],[-101.21694899999994,77.721924000000001],[-101.26777599999997,77.725815000000068],[-101.31806899999992,77.726089000000002],[-101.50695799999994,77.724991000000102],[-101.53527799999995,77.723602000000142],[-101.56471299999993,77.720535000000041],[-101.58583099999993,77.71527100000003],[-101.593613,77.709427000000005],[-101.60582699999992,77.703873000000044],[-101.62249799999995,77.69859300000013],[-101.65222199999994,77.694427000000076],[-101.79888900000003,77.676376000000062],[-101.82640099999992,77.676086000000055],[-102.01695299999994,77.679703000000018],[-102.06777999999997,77.682205000000067],[-102.1416779999999,77.690810999999997],[-102.43639399999995,77.729705999999965],[-102.44444299999998,77.731934000000081],[-102.51083399999999,77.786102000000085],[-102.52971600000001,77.834152000000074],[-102.51806599999992,77.844146999999964],[-102.49889400000001,77.855545000000006],[-102.45889299999999,77.871094000000085],[-102.44249000000002,77.876648000000102],[-102.41665599999999,77.881927000000076],[-102.38778699999995,77.884155000000021],[-102.13999899999999,77.896378000000084],[-102.08389299999999,77.897217000000069],[-102.04915599999998,77.896942000000024],[-101.91583299999996,77.893875000000094],[-101.83194699999996,77.893875000000094],[-101.779449,77.896378000000084],[-101.74973299999999,77.899719000000118],[-101.71140300000002,77.901657000000057]],[[-114.07305899999994,77.981659000000036],[-113.9813769999999,77.934982000000105],[-113.97501399999993,77.931091000000038],[-113.97222899999997,77.925262000000032],[-113.97222899999997,77.919983000000059],[-113.9583439999999,77.914993000000038],[-113.92388900000003,77.910812000000135],[-113.89499699999993,77.908325000000048],[-113.84028599999999,77.906097000000102],[-113.72666899999996,77.896103000000039],[-113.70639,77.891663000000051],[-113.58556399999998,77.825820999999962],[-113.57861300000002,77.819991999999957],[-113.57611099999997,77.814147999999989],[-113.58750899999995,77.80802900000009],[-113.61916399999996,77.795821999999987],[-113.65972899999997,77.783324999999991],[-113.78832999999992,77.745255000000043],[-113.90833999999995,77.726379000000009],[-113.93472300000002,77.72387700000013],[-114.11444099999989,77.706649999999911],[-114.19304699999998,77.69802900000002],[-114.22305299999999,77.698868000000004],[-114.27722199999999,77.702209000000039],[-114.33112299999999,77.709717000000012],[-114.415009,77.731369000000086],[-114.514183,77.765273999999977],[-114.66251399999999,77.803863999999919],[-114.70916699999998,77.813599000000011],[-114.73029300000002,77.818877999999984],[-114.84834299999994,77.854706000000022],[-115.07721699999996,77.938582999999994],[-115.11138900000003,77.953872999999987],[-115.11501299999992,77.956375000000037],[-115.11609599999991,77.958327999999995],[-115.10833700000001,77.961380000000077],[-115.09084300000001,77.963608000000079],[-115.06054699999993,77.963882000000012],[-115.03388999999993,77.962204000000042],[-114.93028299999997,77.960541000000148],[-114.81973299999993,77.973037999999917],[-114.79778299999992,77.975540000000024],[-114.77749599999993,77.981659000000036],[-114.74027999999998,78.000000000000057],[-114.60582699999998,78.03054800000001],[-114.40083299999998,78.067490000000021],[-114.35500300000001,78.070541000000048],[-114.32694999999995,78.0711060000001],[-114.30332899999996,78.070541000000048],[-114.28694200000001,78.066086000000041],[-114.07305899999994,77.981659000000036]],[[-109.58805799999999,78.064697000000024],[-109.58056599999998,78.058319000000097],[-109.58112299999988,78.041367000000093],[-109.58528100000001,78.035538000000088],[-109.66972399999997,77.971649000000127],[-109.68305999999995,77.965820000000122],[-109.70556599999986,77.959991000000116],[-109.76027699999997,77.951096000000064],[-109.81527699999992,77.942749000000106],[-109.84249899999998,77.938873000000001],[-109.89750699999996,77.932755000000043],[-110.00723299999987,77.921371000000136],[-110.14499699999999,77.911926000000108],[-110.162781,77.906936999999971],[-110.16665599999999,77.901093000000117],[-110.19611399999991,77.896652000000017],[-110.22112299999998,77.893875000000094],[-110.24889399999995,77.893875000000094],[-110.48999000000003,77.883881000000088],[-110.62666300000001,77.873032000000023],[-110.65416700000003,77.871918000000051],[-110.79250299999995,77.870819000000097],[-110.846947,77.866379000000052],[-110.87389400000001,77.862198000000149],[-110.89584400000001,77.856093999999928],[-110.90139799999992,77.849716000000001],[-110.90471600000001,77.843872000000147],[-110.90360999999996,77.838042999999971],[-110.90028399999994,77.832763999999997],[-110.89444699999996,77.826934999999992],[-110.88639799999987,77.820831000000112],[-110.74388099999993,77.773605000000089],[-110.71556099999992,77.768875000000037],[-110.65888999999999,77.759720000000016],[-110.63110399999994,77.758040999999992],[-110.60138699999999,77.758881000000031],[-110.51972999999992,77.763321000000019],[-110.41583299999996,77.770827999999995],[-110.39306599999986,77.773041000000148],[-110.368607,77.776381999999955],[-110.28916899999996,77.782486000000006],[-110.16111799999999,77.784149000000127],[-110.13305700000001,77.780548000000067],[-110.10500299999995,77.774994000000049],[-110.09028599999994,77.769150000000081],[-110.08029199999993,77.763321000000019],[-110.04055800000003,77.637496999999996],[-110.08029199999993,77.563599000000067],[-110.08416699999992,77.557755000000043],[-110.09221599999995,77.551926000000037],[-110.11749299999997,77.539978000000019],[-110.20333899999997,77.511383000000137],[-110.22501399999987,77.505264000000125],[-110.27055399999995,77.49581900000004],[-110.29695100000004,77.491652999999985],[-110.502228,77.460266000000047],[-110.81500199999999,77.424988000000042],[-110.82749899999999,77.419144000000017],[-110.85082999999992,77.414428999999984],[-110.87721299999998,77.411377000000073],[-110.95639,77.407486000000006],[-111.00974299999996,77.406096999999988],[-111.06527699999998,77.406096999999988],[-111.11721799999992,77.408874999999966],[-111.172234,77.416092000000106],[-111.29998799999993,77.419144000000017],[-111.46305799999999,77.393051000000071],[-111.61833200000001,77.373871000000122],[-111.82501199999996,77.34887700000013],[-112.031113,77.324707000000103],[-112.05722000000003,77.323317999999915],[-112.083618,77.323043999999982],[-112.13694800000002,77.323317999999915],[-112.16639700000002,77.325271999999984],[-112.41306299999997,77.356094000000041],[-112.43888900000002,77.361099000000081],[-112.48222399999992,77.371094000000028],[-112.5,77.378235000000018],[-112.50778200000002,77.381363000000022],[-112.52139299999999,77.389434999999992],[-112.52333099999993,77.395263999999997],[-112.52694700000001,77.399719000000061],[-112.545547,77.415817000000061],[-112.587784,77.449141999999938],[-112.60109699999992,77.455261000000007],[-112.626938,77.459427000000062],[-112.65387699999997,77.458878000000141],[-112.68222000000003,77.456939999999975],[-112.69721999999996,77.455261000000007],[-112.73889200000002,77.445816000000093],[-112.764183,77.441650000000038],[-112.79083300000002,77.441086000000098],[-112.80249000000003,77.442474000000004],[-112.92887899999994,77.464157000000114],[-112.95777899999996,77.469436999999971],[-112.96389799999992,77.474152000000004],[-112.96806299999992,77.485809000000131],[-112.96806299999992,77.492203000000018],[-112.97028399999999,77.498032000000023],[-112.978882,77.503326000000015],[-112.99445300000002,77.508881000000088],[-113.01167299999997,77.512771999999984],[-113.03751399999999,77.515823000000012],[-113.06500199999999,77.517211999999972],[-113.14611799999994,77.517761000000121],[-113.17388900000003,77.519440000000145],[-113.198036,77.523880000000133],[-113.20472699999999,77.529433999999981],[-113.23805199999998,77.581375000000037],[-113.24027999999993,77.587204000000042],[-113.16251399999993,77.609146000000123],[-113.1875,77.739426000000037],[-113.20556599999998,77.744431000000077],[-113.26251200000002,77.755554000000075],[-113.283073,77.761108000000092],[-113.29444899999999,77.766662999999994],[-113.30387899999994,77.773041000000148],[-113.31054699999993,77.778595000000109],[-113.31500199999994,77.783875000000023],[-113.31973299999999,77.795531999999923],[-113.31973299999999,77.807204999999954],[-113.31749699999995,77.813033999999959],[-113.30638099999993,77.837203999999986],[-113.23473399999989,77.901657000000057],[-113.23082699999992,77.903594999999996],[-113.20973200000003,77.90887500000008],[-113.12721299999998,77.912201000000096],[-113.09973100000002,77.912766000000147],[-113.07167099999998,77.912201000000096],[-113.04666099999997,77.907761000000107],[-113.03971899999999,77.901932000000102],[-112.94360399999999,77.911926000000108],[-112.80499299999985,77.933043999999995],[-112.78333299999997,77.937195000000088],[-112.76666299999999,77.942474000000061],[-112.74194299999988,77.951660000000004],[-112.57444799999996,77.979431000000091],[-112.46694899999994,77.992477000000008],[-112.29499800000002,78.010544000000095],[-112.12526699999995,78.00610400000005],[-111.97944599999994,78.018599999999992],[-111.787216,78.033599999999922],[-111.77610800000002,78.028046000000131],[-111.756393,78.024428999999998],[-111.73055999999997,78.024155000000064],[-111.70556599999998,78.026931999999988],[-111.63221699999991,78.040817000000061],[-111.34583999999995,78.076935000000105],[-111.31833599999999,78.08027600000014],[-111.28832999999997,78.081940000000145],[-111.09333800000002,78.092484000000013],[-111.048607,78.093597000000102],[-111.02749599999999,78.093322999999998],[-110.99861099999993,78.090546000000074],[-110.99749799999995,78.084717000000069],[-111.00110599999994,78.079987000000017],[-110.995003,78.074158000000011],[-110.90334300000001,78.062194999999974],[-110.861107,78.061645999999996],[-110.83306899999997,78.06303400000013],[-110.80555700000002,78.065262000000075],[-110.78778099999994,78.0711060000001],[-110.77500899999995,78.076935000000105],[-110.77139299999999,78.082764000000111],[-110.76334399999996,78.088882000000069],[-110.74553700000001,78.094711000000075],[-110.72721899999988,78.097762999999986],[-110.67051700000002,78.101089000000002],[-110.54998799999998,78.106094000000098],[-110.46584299999995,78.108597000000032],[-110.23777799999999,78.110809000000131],[-110.10082999999992,78.108597000000032],[-109.95916699999987,78.104705999999965],[-109.78916899999996,78.099716000000114],[-109.67777999999998,78.091933999999981],[-109.65387699999985,78.088318000000129],[-109.60527000000002,78.0711060000001],[-109.58805799999999,78.064697000000024]],[[-101.65139799999997,78.144714000000022],[-101.67527799999999,78.144440000000088],[-101.859444,78.15525800000006],[-101.87917299999992,78.158324999999991],[-101.88194299999998,78.162201000000039],[-101.77610800000002,78.216385000000116],[-101.75334199999992,78.227203000000088],[-101.73137700000001,78.232483000000116],[-101.70722999999987,78.23275799999999],[-101.68472299999996,78.230545000000006],[-101.68167099999994,78.227478000000076],[-101.67250100000001,78.226089000000115],[-101.63362100000001,78.210815000000025],[-101.62277199999988,78.204712000000086],[-101.61582899999996,78.199416999999983],[-101.60360700000001,78.187485000000038],[-101.59999099999993,78.181090999999981],[-101.59861799999993,78.175261999999975],[-101.59973100000002,78.164429000000041],[-101.60527000000002,78.159149000000127],[-101.61305199999998,78.153594999999939],[-101.62581599999993,78.148041000000148],[-101.65139799999997,78.144714000000022]],[[-103.05695300000002,78.119705000000067],[-103.11444099999994,78.11775200000011],[-103.19444299999992,78.11914100000007],[-103.212784,78.120529000000033],[-103.23029300000002,78.123871000000122],[-103.25862099999995,78.134995000000004],[-103.27027900000002,78.141097999999943],[-103.27722199999999,78.146941999999967],[-103.28222700000003,78.15776100000005],[-103.27971600000001,78.163605000000075],[-103.274719,78.169983000000002],[-103.26750199999998,78.17553700000002],[-103.23916600000001,78.192200000000071],[-103.22721899999993,78.197754000000089],[-103.17027300000001,78.219985999999949],[-103.12470999999999,78.236649000000057],[-103.06276700000001,78.258041000000048],[-103.04138199999994,78.263610999999969],[-102.98693800000001,78.27276599999999],[-102.93415800000002,78.27276599999999],[-102.89750700000002,78.269149999999968],[-102.82556199999993,78.258881000000088],[-102.8125,78.255829000000006],[-102.79860699999995,78.250274999999988],[-102.78916899999996,78.24443100000002],[-102.78222700000003,78.238586000000055],[-102.78028899999993,78.23275799999999],[-102.77639799999986,78.215546000000131],[-102.77639799999986,78.210266000000047],[-102.781387,78.204987000000074],[-102.79332699999998,78.199416999999983],[-102.85527000000002,78.188872999999944],[-102.89806399999992,78.17804000000001],[-102.93195300000002,78.166931000000091],[-102.97721899999999,78.150269000000094],[-103.01777599999997,78.133606000000043],[-103.04167199999995,78.122208000000001],[-103.05695300000002,78.119705000000067]],[[-94.366652999999985,78.159149000000127],[-94.378051999999968,78.15776100000005],[-94.404448999999943,78.159988000000112],[-94.506118999999956,78.172760000000096],[-94.520003999999858,78.177475000000129],[-94.67111199999988,78.240814000000057],[-94.683060000000012,78.247208000000057],[-94.694152999999915,78.2586060000001],[-94.692215000000033,78.264709000000039],[-94.681106999999884,78.274155000000007],[-94.660827999999924,78.279160000000047],[-94.635558999999944,78.28387500000008],[-94.602218999999991,78.287200999999925],[-94.572234999999921,78.287766000000147],[-94.546386999999982,78.284424000000058],[-94.515014999999892,78.278046000000074],[-94.481948999999929,78.268326000000002],[-94.36111499999987,78.22164900000007],[-94.344726999999978,78.214706000000092],[-94.316665999999998,78.197479000000044],[-94.309433000000013,78.191086000000098],[-94.306945999999925,78.184982000000048],[-94.309157999999968,78.179153000000042],[-94.366652999999985,78.159149000000127]],[[-88.287215999999944,78.24331699999999],[-88.360001000000011,78.237761999999918],[-88.381942999999978,78.242476999999951],[-88.393616000000009,78.248871000000008],[-88.404723999999987,78.25999500000006],[-88.407500999999911,78.264435000000105],[-88.411117999999931,78.273879999999963],[-88.40972899999997,78.292205999999965],[-88.404449,78.298035000000027],[-88.235274999999888,78.42692599999998],[-88.113051999999982,78.45526099999995],[-88.09445199999999,78.456940000000145],[-88.070281999999963,78.454712000000029],[-88.061385999999914,78.452484000000084],[-88.052779999999927,78.445526000000086],[-88.049728000000016,78.444427000000076],[-88.043334999999956,78.436646000000053],[-88.044448999999929,78.42442299999999],[-88.044997999999964,78.421371000000079],[-88.046660999999972,78.418868999999972],[-88.057220000000029,78.407485999999949],[-88.166396999999961,78.308029000000033],[-88.187774999999988,78.291655999999932],[-88.245543999999995,78.252777000000094],[-88.255004999999983,78.247208000000057],[-88.287215999999944,78.24331699999999]],[[-109.64806399999992,78.588042999999971],[-109.569458,78.586380000000077],[-109.54998799999998,78.586655000000064],[-109.50055700000001,78.582763999999997],[-109.40527299999997,78.556931000000077],[-109.33416699999998,78.524155000000121],[-109.26055899999994,78.487198000000092],[-109.25556899999998,78.482483000000059],[-109.254997,78.478591999999992],[-109.26055899999994,78.455826000000002],[-109.31806899999992,78.35803199999998],[-109.32721700000002,78.352203000000145],[-109.40499899999992,78.306366000000082],[-109.42859599999997,78.303314],[-109.59583999999995,78.302765000000022],[-109.766953,78.294144000000131],[-109.82444799999996,78.293869000000086],[-109.85333300000002,78.29664600000001],[-109.882767,78.301376000000062],[-109.89306599999998,78.307205000000067],[-109.89835399999998,78.3119200000001],[-109.90862299999998,78.317764000000068],[-109.92610200000001,78.323043999999982],[-109.95527599999997,78.325821000000076],[-109.98388699999998,78.325546000000031],[-110.01251200000002,78.323608000000092],[-110.19638099999997,78.303864000000033],[-110.22444199999995,78.299987999999928],[-110.25250199999999,78.295822000000044],[-110.279449,78.284987999999998],[-110.29778299999992,78.281097000000102],[-110.354446,78.276657000000057],[-110.4119419999999,78.277206000000035],[-110.484734,78.284424000000058],[-110.57167099999992,78.289703000000031],[-110.65833999999995,78.29304500000012],[-110.71556099999992,78.292480000000126],[-110.78778099999994,78.306931000000134],[-110.85665899999987,78.327208999999982],[-110.85888699999998,78.337769000000094],[-110.97501399999999,78.363876000000005],[-111.00250199999999,78.368042000000059],[-111.14138799999995,78.386108000000036],[-111.16999799999996,78.384155000000078],[-111.27778599999994,78.372207999999944],[-111.27139299999999,78.346100000000035],[-111.30610699999994,78.321106000000043],[-111.41000400000001,78.277206000000035],[-111.42304999999993,78.272217000000069],[-111.43888899999996,78.268600000000106],[-111.46250899999995,78.267487000000017],[-111.50527999999997,78.266936999999984],[-111.57556199999999,78.270538000000045],[-111.65249599999993,78.27276599999999],[-111.73832700000003,78.27276599999999],[-111.76666299999994,78.271378000000084],[-111.79527299999995,78.271103000000096],[-111.82000700000003,78.273604999999975],[-111.86472300000003,78.296370999999965],[-111.88221699999997,78.306931000000134],[-111.88861099999997,78.312485000000095],[-111.89277599999997,78.318054000000132],[-111.89167800000001,78.322220000000016],[-111.91861,78.332764000000054],[-111.939438,78.338318000000072],[-112.13305700000001,78.36554000000001],[-112.21501199999994,78.365265000000136],[-112.43776700000001,78.354431000000091],[-112.58306899999997,78.343597000000045],[-112.68443299999996,78.331375000000037],[-112.73916599999995,78.323043999999982],[-112.78721599999989,78.310531999999967],[-112.89083900000003,78.292480000000126],[-112.94499199999996,78.28387500000008],[-113.02694700000001,78.27276599999999],[-113.05499299999997,78.271378000000084],[-113.14222699999999,78.268326000000002],[-113.16860999999994,78.268600000000106],[-113.18831599999999,78.269989000000123],[-113.21777299999985,78.27777100000003],[-113.27333099999998,78.296370999999965],[-113.28195199999999,78.299713000000111],[-113.287781,78.302475000000015],[-113.33249699999993,78.328872999999987],[-113.33416699999998,78.332764000000054],[-113.21611000000001,78.385269000000108],[-113.1241609999999,78.420822000000101],[-113.11527999999987,78.423035000000084],[-113.03832999999997,78.436919999999986],[-112.71167000000003,78.484711000000061],[-112.60749800000002,78.4994200000001],[-112.36305199999998,78.533324999999991],[-112.31166100000002,78.539977999999962],[-112.23805199999998,78.547211000000004],[-112.12970699999994,78.551926000000037],[-111.98805199999987,78.552764999999965],[-111.90360999999996,78.548874000000069],[-111.87304699999999,78.544434000000081],[-111.85305800000003,78.542755000000056],[-111.80972299999991,78.545258000000047],[-111.75250199999994,78.55053700000002],[-111.67777999999993,78.563034000000016],[-111.641953,78.574158000000068],[-111.60082999999997,78.585266000000104],[-111.57224299999996,78.588593000000003],[-111.45556599999998,78.592758000000003],[-111.39195299999994,78.61192299999999],[-111.378601,78.617751999999996],[-111.37998999999991,78.622757000000036],[-111.36305199999998,78.64276099999995],[-111.16055299999999,78.691649999999925],[-110.95612299999993,78.718323000000112],[-110.79110700000001,78.735259999999926],[-110.6375119999999,78.748596000000077],[-110.46028100000001,78.757492000000013],[-110.43055700000002,78.758605999999986],[-110.41055299999999,78.757767000000001],[-110.39527900000002,78.756104000000107],[-110.38445299999989,78.751389000000074],[-110.271118,78.727768000000026],[-110.16416900000002,78.70915199999996],[-110.07778899999988,78.694977000000051],[-109.99722300000002,78.683868000000018],[-109.86165599999998,78.666930999999977],[-109.85582699999998,78.660262999999986],[-109.86000100000001,78.654433999999981],[-109.86165599999998,78.649155000000007],[-109.86110699999995,78.643326000000002],[-109.85526999999996,78.637496999999996],[-109.67054699999989,78.591370000000097],[-109.64806399999992,78.588042999999971]],[[-74.306945999999982,78.676651000000049],[-74.334166999999923,78.675262000000089],[-74.36721799999998,78.676086000000055],[-74.419448999999986,78.681655999999919],[-74.614166000000012,78.702774000000034],[-74.704726999999934,78.722762999999929],[-74.710007000000019,78.727477999999962],[-74.710281000000009,78.731094000000041],[-74.706664999999987,78.737488000000099],[-74.645003999999972,78.772491000000059],[-74.632216999999969,78.777206000000092],[-74.615829000000019,78.778595000000109],[-74.591109999999958,78.778870000000097],[-74.555557000000022,78.776093000000003],[-74.356948999999929,78.755829000000062],[-74.312042000000019,78.750000000000057],[-74.28195199999999,78.746094000000028],[-74.192489999999964,78.729705999999965],[-74.167770000000019,78.719986000000063],[-74.163619999999923,78.716094999999996],[-74.172774999999888,78.711380000000133],[-74.236388999999974,78.687194999999917],[-74.256667999999934,78.6827550000001],[-74.28443900000002,78.678864000000033],[-74.306945999999982,78.676651000000049]],[[-96.768065999999976,78.684143000000006],[-96.708892999999989,78.6827550000001],[-96.645003999999972,78.686096000000134],[-96.613051999999982,78.685532000000023],[-96.585007000000019,78.68331900000004],[-96.533614999999941,78.676926000000094],[-96.510559000000001,78.672484999999995],[-96.466399999999965,78.661926000000108],[-96.395279000000016,78.640549000000078],[-96.379165999999998,78.634430000000066],[-96.356109999999944,78.627762000000075],[-96.315826000000015,78.618042000000003],[-96.293883999999935,78.615265000000079],[-96.265015000000005,78.618866000000139],[-96.235549999999989,78.627762000000075],[-96.202498999999875,78.630264000000011],[-96.184432999999956,78.628586000000041],[-96.167495999999971,78.623306000000014],[-96.158889999999872,78.617203000000075],[-96.152495999999985,78.611374000000012],[-96.216400000000021,78.560531999999967],[-96.178054999999915,78.518875000000094],[-96.009445000000028,78.492477000000122],[-95.857773000000009,78.494980000000055],[-95.820006999999919,78.502213000000097],[-95.746658000000025,78.514998999999989],[-95.71665999999999,78.519714000000022],[-95.68472300000002,78.521103000000039],[-95.652221999999995,78.521378000000027],[-95.601944000000003,78.519714000000022],[-95.537215999999944,78.514708999999982],[-95.481673999999998,78.508881000000031],[-95.407775999999956,78.497208000000057],[-95.206389999999942,78.461655000000007],[-95.086944999999957,78.437759000000085],[-94.895003999999972,78.395828000000108],[-94.877776999999924,78.391373000000101],[-94.86082499999992,78.384720000000129],[-94.831679999999949,78.364699999999971],[-94.829177999999956,78.358871000000136],[-94.830840999999907,78.352767999999969],[-94.837508999999955,78.347214000000008],[-94.853332999999907,78.341934000000094],[-94.941939999999988,78.316375999999991],[-94.966948999999943,78.311371000000122],[-95.096389999999928,78.290268000000026],[-95.36361699999992,78.24136400000009],[-95.388061999999934,78.236374000000012],[-95.399170000000026,78.231093999999985],[-95.398620999999991,78.226928999999984],[-95.388900999999976,78.222488000000055],[-95.368880999999988,78.218596999999988],[-95.345839999999953,78.217758000000003],[-95.255279999999914,78.21804800000001],[-95.227492999999981,78.216660000000104],[-95.130829000000006,78.194138000000009],[-95.113051999999925,78.188583000000108],[-95.106948999999986,78.185257000000092],[-95.108611999999994,78.179428000000087],[-95.111937999999952,78.174149000000114],[-95.111937999999952,78.167480000000012],[-95.106109999999944,78.161926000000051],[-95.089721999999995,78.154984000000127],[-95.068068999999923,78.148041000000148],[-94.98332199999993,78.133040999999992],[-94.90695199999999,78.117203000000131],[-94.889998999999989,78.108870999999965],[-94.886947999999961,78.102768000000026],[-94.911666999999852,78.055251999999996],[-95.011397999999986,77.991363999999919],[-95.043883999999935,77.974991000000045],[-95.057494999999903,77.969147000000078],[-95.085280999999952,77.958878000000027],[-95.100554999999929,77.953597999999943],[-95.112503000000004,77.951385000000016],[-95.137511999999958,77.950546000000031],[-95.162506000000008,77.953597999999943],[-95.186385999999857,77.957764000000054],[-95.211670000000026,77.961105000000089],[-95.236938000000009,77.964157],[-95.265838999999971,77.966095000000109],[-95.321395999999993,77.96775800000006],[-95.379989999999964,77.966384999999946],[-95.400283999999999,77.962769000000094],[-95.41332999999986,77.959426999999948],[-95.425551999999925,77.948029000000133],[-95.449722000000008,77.9433140000001],[-95.549728000000016,77.934143000000006],[-95.758057000000008,77.911926000000108],[-95.830840999999964,77.898880000000133],[-95.938599000000011,77.885817999999972],[-96.189437999999939,77.866089000000045],[-96.285552999999936,77.859421000000054],[-96.317504999999926,77.858322000000101],[-96.345551,77.858597000000088],[-96.365279999999984,77.859984999999995],[-96.386123999999995,77.862762000000089],[-96.404174999999952,77.868591000000094],[-96.41194200000001,77.874984999999981],[-96.410827999999924,77.880813999999987],[-96.405272999999966,77.886382999999967],[-96.410552999999993,77.890549000000078],[-96.416945999999996,77.893875000000094],[-96.43582200000003,77.898604999999975],[-96.456664999999987,77.901657000000057],[-96.541107000000011,77.897217000000069],[-96.734436000000017,77.872757000000036],[-96.735000999999954,77.86692800000003],[-96.710555999999997,77.855545000000006],[-96.696380999999917,77.850815000000125],[-96.667220999999927,77.849152000000061],[-96.585007000000019,77.856368999999972],[-96.558884000000035,77.859421000000054],[-96.539718999999991,77.864426000000094],[-96.516113000000018,77.869430999999963],[-96.491668999999888,77.870254999999929],[-96.515563999999983,77.845535000000098],[-96.542770000000019,77.841934000000037],[-96.628325999999959,77.840546000000131],[-96.68720999999988,77.840546000000131],[-96.71166999999997,77.839706000000092],[-96.734160999999972,77.835541000000092],[-96.748610999999926,77.830276000000026],[-96.829452999999944,77.789153999999996],[-96.849990999999989,77.787201000000039],[-96.880553999999961,77.786926000000051],[-96.900283999999999,77.788315000000011],[-96.907776000000013,77.790542999999957],[-96.912216000000001,77.793045000000063],[-96.933884000000035,77.797485000000052],[-97.014174999999966,77.804153000000042],[-97.057495000000017,77.805542000000059],[-97.072509999999909,77.804153000000042],[-97.096953999999926,77.803314000000057],[-97.102218999999991,77.807479999999998],[-97.119720000000029,77.865265000000079],[-97.11999499999996,77.870254999999929],[-97.107497999999964,77.876373000000058],[-97.081389999999942,77.886658000000011],[-97.015563999999983,77.904160000000047],[-97.002228000000002,77.908600000000035],[-96.99221799999998,77.914154000000053],[-96.992492999999911,77.918869000000086],[-96.994995000000017,77.921097000000032],[-97.142775999999969,77.934982000000105],[-97.281676999999945,77.948318000000086],[-97.30999799999995,77.951096000000064],[-97.354445999999996,77.962204000000042],[-97.380279999999971,77.969986000000006],[-97.431670999999994,77.986923000000047],[-97.454726999999934,77.992752000000053],[-97.503066999999874,78.002486999999917],[-97.572234999999978,78.012497000000053],[-97.602782999999931,78.015548999999965],[-97.673614999999984,78.021378000000141],[-97.75556899999998,78.025542999999971],[-97.766953000000001,78.028870000000097],[-97.77555799999999,78.034988000000055],[-97.666945999999996,78.088043000000084],[-97.647781000000009,78.090820000000008],[-97.618331999999953,78.091660000000047],[-97.567504999999926,78.089706000000035],[-97.513061999999991,78.086655000000007],[-97.43249499999996,78.080551000000128],[-97.323623999999995,78.076935000000105],[-97.297775000000001,78.076385000000073],[-97.024444999999901,78.074706999999933],[-96.997771999999998,78.075271999999984],[-96.910278000000005,78.079163000000051],[-96.887511999999958,78.083054000000118],[-96.855559999999912,78.104155999999932],[-96.856383999999991,78.108032000000037],[-96.870543999999995,78.133330999999998],[-96.885558999999944,78.138046000000031],[-96.983886999999925,78.150818000000072],[-97.059157999999968,78.15776100000005],[-97.138061999999934,78.165817000000118],[-97.164444000000003,78.168869000000029],[-97.184722999999963,78.172485000000108],[-97.194992000000013,78.17692599999998],[-97.200835999999924,78.183593999999971],[-97.212509000000011,78.189422999999977],[-97.299438000000009,78.204712000000086],[-97.321120999999948,78.207488999999953],[-97.349166999999966,78.208602999999982],[-97.407776000000013,78.207763999999997],[-97.635558999999944,78.206650000000025],[-97.829453000000001,78.219147000000021],[-97.849441999999954,78.234711000000118],[-97.817504999999983,78.23275799999999],[-97.773055999999997,78.238876000000118],[-97.763335999999924,78.24443100000002],[-97.777785999999878,78.25],[-97.867766999999958,78.279709000000025],[-97.881103999999993,78.283600000000092],[-97.904175000000009,78.28804000000008],[-97.930557000000022,78.290817000000004],[-98.012786999999946,78.296936000000017],[-98.054717999999923,78.301651000000049],[-98.068343999999968,78.308029000000033],[-98.070846999999958,78.313599000000067],[-98.043610000000001,78.389434999999992],[-98.148345999999947,78.403870000000097],[-98.172226000000023,78.40498400000007],[-98.198333999999988,78.408599999999979],[-98.347778000000005,78.443038999999999],[-98.366652999999985,78.449416999999983],[-98.388061999999991,78.467484000000013],[-98.410552999999993,78.490265000000022],[-98.411391999999921,78.4952550000001],[-98.410277999999948,78.508040999999992],[-98.308884000000035,78.533875000000023],[-98.171386999999982,78.529709000000139],[-98.054442999999992,78.533600000000035],[-98.022231999999917,78.53637700000013],[-98.019164999999987,78.542755000000056],[-98.028060999999923,78.563309000000004],[-98.042220999999927,78.569716999999969],[-98.080001999999922,78.582763999999997],[-98.115004999999996,78.593871999999976],[-98.139998999999989,78.599425999999994],[-98.169158999999922,78.603043000000127],[-98.235001000000011,78.619141000000013],[-98.315276999999924,78.64387499999998],[-98.326950000000011,78.650542999999914],[-98.328063999999927,78.652206000000035],[-98.371658000000025,78.719986000000063],[-98.366104000000007,78.763611000000026],[-98.36471599999993,78.768051000000071],[-98.17332499999992,78.812759000000142],[-98.144454999999994,78.816666000000112],[-98.06138599999997,78.818877999999984],[-97.777785999999878,78.815262000000075],[-97.65695199999999,78.811371000000008],[-97.59973100000002,78.807479999999941],[-97.488602000000014,78.796646000000067],[-97.461945000000014,78.792755],[-97.436934999999892,78.786925999999994],[-97.385559000000001,78.776931999999988],[-97.359160999999972,78.773041000000092],[-97.273620999999991,78.764434999999992],[-97.160278000000005,78.758881000000031],[-97.078063999999983,78.74971000000005],[-97.025283999999942,78.741928000000087],[-96.999725000000012,78.736923000000047],[-96.954726999999934,78.726379000000009],[-96.922500999999954,78.713318000000072],[-96.913895000000025,78.706940000000088],[-96.903884999999946,78.701660000000061],[-96.886397999999986,78.696640000000002],[-96.768065999999976,78.684143000000006]],[[-86.319457999999997,78.883606000000043],[-86.388061999999877,78.883041000000048],[-86.414718999999934,78.884430000000009],[-86.444442999999978,78.887207000000103],[-86.469161999999926,78.889708999999982],[-86.484436000000017,78.892761000000121],[-86.476943999999889,78.896378000000084],[-86.43638599999997,78.911102000000085],[-86.386672999999973,78.924988000000099],[-86.366104000000007,78.929703000000131],[-86.346114999999998,78.939697000000137],[-86.328613000000018,78.950821000000019],[-86.292770000000019,78.983047000000113],[-86.285277999999948,78.993317000000047],[-86.283614999999941,78.99803200000008],[-86.046951000000035,79.038589000000059],[-85.990828999999962,79.046936000000073],[-85.924437999999952,79.053864000000033],[-85.896117999999944,79.056931000000134],[-85.820007000000032,79.061371000000008],[-85.712509000000011,79.064148000000046],[-85.646118000000001,79.06442300000009],[-85.321395999999936,79.053864000000033],[-85.263335999999924,79.048874000000012],[-85.216109999999901,79.041367000000037],[-85.199722000000008,79.037490999999989],[-85.182495000000017,79.031372000000147],[-85.167220999999927,79.020828000000108],[-85.169448999999986,79.014709000000039],[-85.176391999999964,79.008880999999974],[-85.186661000000015,79.002777000000094],[-85.20944199999991,78.993590999999981],[-85.225829999999974,78.988586000000112],[-85.246947999999975,78.984146000000067],[-85.301392000000021,78.975266000000033],[-85.466110000000015,78.958327999999995],[-85.546660999999972,78.95248400000014],[-85.765563999999983,78.93414300000012],[-86.026947000000007,78.910262999999986],[-86.213897999999972,78.891663000000051],[-86.244995000000017,78.888321000000076],[-86.284163999999976,78.885268999999994],[-86.319457999999997,78.883606000000043]],[[-103.59388699999988,79.325821000000019],[-103.39835399999993,79.299988000000099],[-103.33556399999998,79.299988000000099],[-103.26251200000002,79.299988000000099],[-103.13999899999993,79.287766000000147],[-103.09777799999995,79.282486000000063],[-103.08361799999994,79.279433999999981],[-103.06806899999992,79.273880000000133],[-102.92111199999999,79.21748400000007],[-102.92666600000001,79.211105000000032],[-102.92639199999996,79.206649999999968],[-102.921944,79.200272000000041],[-102.90194699999995,79.172211000000118],[-102.89167800000001,79.166656000000046],[-102.87444299999987,79.164992999999924],[-102.76862299999993,79.138884999999959],[-102.620003,79.097214000000008],[-102.61165599999998,79.093048000000124],[-102.60582699999998,79.074432000000115],[-102.60637700000001,79.068054000000132],[-102.612213,79.056641000000127],[-102.654449,78.994141000000013],[-102.66555799999998,78.98275799999999],[-102.67582700000003,78.977478000000133],[-102.69860799999992,78.971924000000115],[-102.72084000000001,78.938309000000061],[-102.59500099999997,78.876648000000046],[-102.57945299999994,78.873032000000023],[-102.56082200000003,78.869705000000067],[-102.55082700000003,78.869431000000134],[-102.52887699999985,78.873032000000023],[-102.39195299999994,78.931656000000089],[-102.37638900000002,78.946365000000128],[-102.38054699999998,78.962769000000094],[-102.39806399999992,78.987198000000035],[-102.36305199999998,79.014999000000103],[-102.27944899999989,79.018051000000014],[-102.09361299999989,79.044144000000131],[-102.04943799999995,79.054427999999973],[-102.01500699999997,79.064987000000031],[-101.99333199999995,79.076096000000121],[-101.975281,79.080825999999945],[-101.942207,79.084717000000012],[-101.90249599999993,79.086380000000133],[-101.88194299999998,79.086104999999918],[-101.64890299999996,79.075821000000076],[-101.62805200000003,79.071930000000009],[-101.54194599999994,79.044708000000071],[-101.5202789999999,79.038315000000125],[-101.30803699999996,78.975815000000011],[-101.23166699999996,78.959427000000119],[-101.20472699999999,78.954162999999994],[-101.17666600000001,78.95387299999993],[-101.15222199999988,78.956650000000025],[-101.14334100000002,78.962494000000049],[-101.14472999999992,78.968323000000055],[-101.14083900000003,78.974152000000061],[-101.09388699999994,78.963608000000022],[-101.00556899999998,78.943039000000056],[-100.98665599999998,78.937195000000088],[-100.98528299999998,78.931366000000025],[-101.11694299999988,78.856934000000138],[-101.15278599999999,78.83998100000008],[-101.19304699999992,78.824431999999945],[-101.20056199999999,78.820831000000112],[-101.20333899999997,78.815811000000053],[-101.20084399999996,78.811919999999986],[-101.18639400000001,78.802765000000136],[-101.17278299999998,78.800537000000134],[-100.99194299999999,78.788879000000122],[-100.86389199999991,78.781372000000033],[-100.83056599999992,78.789703000000088],[-100.80055199999998,78.793320000000051],[-100.70556599999998,78.799712999999997],[-100.61389200000002,78.798035000000084],[-100.587784,78.799149000000057],[-100.55915799999997,78.80442800000003],[-100.55027799999993,78.809982000000048],[-100.53639199999998,78.815536000000009],[-100.52443700000003,78.818054000000018],[-100.35109699999998,78.828323000000012],[-100.34445199999993,78.826660000000118],[-100.32389799999999,78.802200000000084],[-100.32250999999997,78.797211000000118],[-100.33249699999993,78.782760999999994],[-100.32333399999993,78.778046000000131],[-100.283073,78.767761000000064],[-100.22778299999993,78.760544000000095],[-100.14334099999996,78.75221300000004],[-100.12416100000002,78.750000000000057],[-100.03250099999997,78.739426000000037],[-100.004997,78.735809000000074],[-99.952498999999989,78.725540000000024],[-99.93638599999997,78.719986000000063],[-99.896392999999932,78.695816000000036],[-99.893889999999942,78.693039000000113],[-99.893065999999976,78.6869200000001],[-99.913329999999917,78.679703000000018],[-99.972777999999948,78.659987999999998],[-100.0625,78.638885000000073],[-100.0625,78.635544000000039],[-100.01666299999988,78.616653000000042],[-99.988891999999908,78.613876000000118],[-99.96305799999999,78.614990000000091],[-99.90972899999997,78.623871000000008],[-99.853332999999964,78.633041000000048],[-99.817504999999926,78.630538999999999],[-99.573623999999995,78.595535000000098],[-99.550277999999878,78.590271000000143],[-99.533324999999991,78.583602999999982],[-99.529723999999987,78.578048999999965],[-99.534164000000033,78.572220000000129],[-99.661117999999931,78.485535000000027],[-99.670272999999895,78.479706000000022],[-99.684157999999968,78.474426000000108],[-99.712508999999955,78.469436999999971],[-99.777221999999995,78.46138000000002],[-99.831389999999999,78.450821000000133],[-99.859436000000017,78.442200000000014],[-99.867767000000015,78.437484999999981],[-99.865004999999996,78.434418000000051],[-99.821395999999993,78.427475000000072],[-99.801391999999964,78.420822000000101],[-99.786666999999966,78.414703000000088],[-99.776672000000019,78.408599999999979],[-99.761123999999995,78.396378000000141],[-99.753615999999909,78.389709000000096],[-99.748336999999992,78.383605999999986],[-99.749160999999958,78.372482000000105],[-99.778609999999958,78.332214000000022],[-99.797774999999945,78.308594000000028],[-99.799437999999952,78.303314],[-99.793883999999878,78.297211000000061],[-99.775832999999977,78.292480000000126],[-99.741378999999938,78.289978000000019],[-99.673049999999989,78.290817000000004],[-99.620543999999938,78.290268000000026],[-99.551102000000014,78.286102000000142],[-99.529449,78.282486000000063],[-99.514450000000011,78.277206000000035],[-99.479720999999984,78.249146000000053],[-99.447768999999994,78.224152000000061],[-99.428329000000019,78.211655000000064],[-99.413894999999968,78.205261000000007],[-99.398620999999991,78.199997000000053],[-99.188599000000011,78.133040999999992],[-98.989166000000012,78.073044000000039],[-98.969161999999926,78.068329000000006],[-98.945830999999885,78.061645999999996],[-98.945830999999885,78.05581699999999],[-98.962783999999942,78.009155000000078],[-98.971663999999976,77.997757000000092],[-98.980834999999956,77.992203000000075],[-98.998885999999914,77.986923000000047],[-99.021666999999866,77.981659000000036],[-99.081115999999952,77.971923999999944],[-99.094727000000034,77.966384999999946],[-99.099166999999966,77.960815000000082],[-99.098891999999921,77.954987000000131],[-99.078612999999905,77.925537000000077],[-99.069167999999991,77.913605000000075],[-99.041381999999942,77.900818000000072],[-99.022781000000009,77.894440000000145],[-99.013335999999981,77.888321000000133],[-99.022231999999974,77.882477000000108],[-99.238051999999982,77.837769000000037],[-99.396666999999979,77.824158000000068],[-99.525283999999999,77.813599000000011],[-99.549438000000009,77.812485000000038],[-99.713057999999933,77.810806000000014],[-99.853881999999999,77.792206000000078],[-99.859436000000017,77.786926000000051],[-99.876937999999939,77.781372000000033],[-99.90695199999999,77.778595000000109],[-100.21000699999996,77.809982000000048],[-100.32972699999999,77.825272000000041],[-100.49889399999995,77.85165400000011],[-100.60637699999995,77.879974000000118],[-100.75527999999997,77.955551000000071],[-100.78611799999999,77.974152000000117],[-100.81749699999995,77.999146000000053],[-100.82389799999999,78.004440000000045],[-100.83833299999998,78.022766000000047],[-100.83778399999994,78.034988000000055],[-100.83693700000003,78.040268000000083],[-100.83444199999991,78.04414399999996],[-100.82694999999995,78.048874000000012],[-100.853882,78.096649000000014],[-100.87581599999999,78.099990999999932],[-100.99861099999998,78.131653000000085],[-101.00974300000001,78.136658000000125],[-101.02194199999991,78.147766000000104],[-101.01889,78.156937000000084],[-101.01528899999994,78.16276600000009],[-101.01363399999997,78.173599000000081],[-101.01390100000003,78.184707999999944],[-101.02027900000002,78.189697000000081],[-101.03555299999999,78.196091000000138],[-101.06276699999995,78.198593000000017],[-101.08944700000001,78.198029000000076],[-101.23137700000001,78.183868000000075],[-101.28943599999997,78.182479999999998],[-101.31667299999998,78.184982000000048],[-101.34249899999998,78.189422999999977],[-101.41722099999998,78.208878000000141],[-101.432503,78.215271000000087],[-101.43138099999999,78.221374999999966],[-101.43276999999989,78.227478000000076],[-101.45638999999994,78.232208000000128],[-101.47416699999991,78.234711000000118],[-101.49665800000002,78.237198000000149],[-101.83332799999999,78.264999000000046],[-102.13305699999989,78.282761000000107],[-102.15750100000002,78.282486000000063],[-102.18221999999997,78.281097000000102],[-102.29888900000003,78.273315000000139],[-102.34722899999997,78.267761000000121],[-102.38890100000003,78.260817999999972],[-102.47138999999999,78.248871000000008],[-102.50167799999997,78.245819000000097],[-102.56139400000001,78.241089000000045],[-102.59056099999987,78.239700000000084],[-102.61860699999994,78.24136400000009],[-102.64527900000002,78.24552900000009],[-102.73222399999992,78.263885000000073],[-102.781387,78.276093000000117],[-102.79778299999998,78.282211000000075],[-102.80943300000001,78.288315000000125],[-102.8163909999999,78.294434000000138],[-102.81833599999999,78.300262000000032],[-102.81360599999994,78.310806000000127],[-102.80803700000001,78.316939999999931],[-102.74999999999989,78.338318000000072],[-102.736107,78.342484000000127],[-102.68639400000001,78.350540000000024],[-102.66583299999991,78.358596999999975],[-102.67083699999995,78.36303700000002],[-102.69499199999996,78.367752000000053],[-102.72250400000001,78.371368000000075],[-102.77778599999994,78.376372999999944],[-102.80610699999994,78.377762000000132],[-102.83583099999998,78.376372999999944],[-102.88999899999999,78.36914100000007],[-102.92027299999995,78.365814000000114],[-102.93804899999992,78.364699999999971],[-102.96694899999989,78.364150999999993],[-103.02443699999998,78.365265000000136],[-103.13390400000003,78.36914100000007],[-103.16388699999999,78.366928000000087],[-103.21417200000002,78.356644000000074],[-103.23832700000003,78.350540000000024],[-103.26471699999996,78.34526100000005],[-103.38110399999988,78.3316650000001],[-103.41111799999999,78.329437000000098],[-103.49804699999999,78.327774000000034],[-103.52749599999987,78.326385000000016],[-103.58473200000003,78.321930000000009],[-103.67999299999997,78.3119200000001],[-103.75110599999999,78.301376000000062],[-103.78195199999999,78.296097000000032],[-103.80803700000001,78.290543000000071],[-103.829453,78.284987999999998],[-103.87721299999998,78.272217000000069],[-103.89417300000002,78.252212999999927],[-103.89890299999996,78.245819000000097],[-103.91027800000001,78.241089000000045],[-103.93331899999998,78.237198000000149],[-103.96305799999999,78.233597000000088],[-103.99194299999999,78.233047000000056],[-104.02250699999996,78.234146000000067],[-104.04277000000002,78.23692299999999],[-104.06984699999987,78.242171999999982],[-104.08306899999997,78.244140999999956],[-104.110817,78.246643000000063],[-104.19027699999998,78.251663000000121],[-104.30471799999992,78.252212999999927],[-104.36361699999998,78.254439999999988],[-104.41251399999999,78.257767000000115],[-104.46749899999998,78.26527400000009],[-104.49445300000002,78.270538000000045],[-104.82055700000001,78.355820000000108],[-104.99194299999999,78.437759000000085],[-104.99999999999994,78.443862999999965],[-105.05055199999998,78.488037000000077],[-105.05139200000002,78.494431000000134],[-105.04305999999991,78.505829000000119],[-105.01194800000002,78.52165199999996],[-104.95361299999996,78.537491000000102],[-104.86860699999994,78.560531999999967],[-104.83139,78.569992000000013],[-104.806107,78.572495000000004],[-104.69638099999992,78.578873000000101],[-104.66665599999999,78.579712000000086],[-104.39778100000001,78.569992000000013],[-104.35500300000001,78.566375999999934],[-104.287781,78.555252000000053],[-104.26278699999995,78.549423000000047],[-104.21221899999995,78.539977999999962],[-104.1661069999999,78.53276100000005],[-104.14277600000003,78.529434000000094],[-104.08833300000003,78.524155000000121],[-104.03388999999999,78.519989000000066],[-103.93055699999996,78.516098],[-103.87110899999993,78.518051000000128],[-103.78250100000002,78.519714000000022],[-103.7225039999999,78.517211999999972],[-103.66583299999996,78.51249700000011],[-103.58860799999997,78.503875999999991],[-103.53333299999991,78.496367999999961],[-103.52362099999999,78.496094000000028],[-103.51834100000002,78.496933000000013],[-103.46584300000001,78.51748699999996],[-103.37805200000003,78.586105000000032],[-103.39998599999996,78.615540000000124],[-103.44666299999994,78.621368000000075],[-103.50611900000001,78.621368000000075],[-103.74082900000002,78.619705000000124],[-103.98554999999999,78.61692800000003],[-104.01000999999991,78.617203000000075],[-104.04215999999991,78.620681999999931],[-104.04222099999998,78.629973999999947],[-104.03278399999988,78.635269000000051],[-103.98916600000001,78.646103000000096],[-103.85193600000002,78.669434000000138],[-103.82611099999997,78.671921000000054],[-103.77223200000003,78.671097000000088],[-103.65834000000001,78.664993000000038],[-103.62888299999992,78.664429000000098],[-103.53943600000002,78.664993000000038],[-103.50917099999987,78.666382000000056],[-103.48361199999994,78.669144000000131],[-103.49082899999996,78.674987999999985],[-103.50306699999999,78.681091000000094],[-103.51306199999993,78.687484999999924],[-103.52778599999999,78.699417000000096],[-103.525284,78.705261000000121],[-103.51806599999998,78.710815000000082],[-103.48860200000001,78.715820000000122],[-103.439438,78.72026100000005],[-103.41221599999989,78.72026100000005],[-103.38861099999997,78.716933999999924],[-103.35804699999994,78.718597000000045],[-103.33389299999999,78.722488000000112],[-103.31916799999999,78.728591999999992],[-103.31639099999995,78.734420999999998],[-103.31889299999995,78.740264999999965],[-103.41665599999999,78.778870000000097],[-103.43916300000001,78.784988000000055],[-103.46806300000003,78.787491000000045],[-103.63971699999996,78.765273999999977],[-103.66915899999992,78.760544000000095],[-103.71056399999998,78.750000000000057],[-103.79611199999999,78.735809000000074],[-103.70249899999999,78.788315000000011],[-103.69526699999994,78.793868999999972],[-103.698036,78.799712999999997],[-103.72693599999997,78.802200000000084],[-103.86054999999999,78.806090999999981],[-103.87053699999996,78.806365999999969],[-103.886124,78.80442800000003],[-103.9083399999999,78.799149000000057],[-103.90556299999997,78.794144000000017],[-103.89639299999993,78.784714000000122],[-103.89083900000003,78.780273000000022],[-103.89527899999996,78.774994000000049],[-103.90527299999997,78.768875000000037],[-103.92916899999994,78.764998999999932],[-103.96056399999992,78.76138300000008],[-103.99109599999991,78.758881000000031],[-104.02166699999992,78.757492000000013],[-104.04943800000001,78.756378000000041],[-104.07389799999993,78.757767000000001],[-104.170547,78.765823000000069],[-104.19888300000002,78.770263999999997],[-104.21167000000003,78.776093000000003],[-104.21972699999998,78.782211000000132],[-104.21528599999999,78.793593999999985],[-104.16722099999998,78.816376000000105],[-104.13305700000001,78.827484000000084],[-104.04834,78.838882000000069],[-103.98665599999998,78.850265999999976],[-103.86054999999999,78.876648000000046],[-103.83139,78.886932000000115],[-103.82389799999999,78.892487000000017],[-103.82167099999992,78.898330999999985],[-103.82472199999995,78.903319999999951],[-103.86749299999997,78.916091999999992],[-103.96305799999999,78.929977000000065],[-103.98998999999998,78.932755000000043],[-104.00639299999995,78.935531999999967],[-104.029449,78.941650000000095],[-104.04750099999995,78.947754000000089],[-104.05332899999996,78.952208999999925],[-104.05387899999999,78.95748900000001],[-104.05222300000003,78.961380000000077],[-104.04778299999992,78.966659999999933],[-104.048607,78.971099999999979],[-104.05777,78.974152000000061],[-104.08112299999999,78.979431000000034],[-104.12943999999999,78.985809000000017],[-104.17859599999991,78.990265000000136],[-104.20361300000002,78.991653000000042],[-104.23388699999998,78.99192800000003],[-104.265556,78.988586000000112],[-104.45500199999998,78.956099999999992],[-104.47193899999996,78.950546000000031],[-104.51112399999994,78.910262999999986],[-104.53832999999997,78.881927000000019],[-104.56416300000001,78.864700000000028],[-104.57888799999989,78.858597000000088],[-104.78582799999998,78.806641000000013],[-104.81749699999995,78.802200000000084],[-104.87860099999995,78.798035000000084],[-104.90915699999999,78.796646000000067],[-104.96888699999994,78.797211000000118],[-104.98832700000003,78.798325000000091],[-105.01194800000002,78.803589000000102],[-105.02250699999996,78.809982000000048],[-105.02861000000001,78.815262000000075],[-105.02916699999997,78.821655000000078],[-105.02834300000001,78.832763999999941],[-105.01222200000001,78.844711000000075],[-104.83389299999999,78.926650999999993],[-104.68859899999995,78.993590999999981],[-104.67887899999999,78.999709999999993],[-104.674713,79.004990000000078],[-104.68110699999994,79.016663000000108],[-104.69415300000003,79.022766000000047],[-104.70805399999995,79.027771000000087],[-104.737213,79.031936999999971],[-104.90249599999993,79.04971299999994],[-104.98638899999997,79.043045000000006],[-105.01334399999996,79.038315000000125],[-105.09916699999991,79.02388000000002],[-105.12526700000001,79.021103000000096],[-105.15638699999988,79.019439999999975],[-105.39527900000002,79.011658000000068],[-105.42610200000001,79.011108000000036],[-105.48388699999998,79.013046000000145],[-105.51363399999997,79.016098000000056],[-105.54332699999998,79.020263999999941],[-105.5625,79.024428999999941],[-105.58138999999994,79.03054800000001],[-105.59084299999995,79.034424000000058],[-105.59944200000001,79.040268000000083],[-105.60665899999992,79.051926000000094],[-105.628601,79.161377000000073],[-105.62053699999996,79.172760000000096],[-105.48277300000001,79.306366000000082],[-105.45973199999997,79.324158000000125],[-105.43998699999997,79.329162999999994],[-105.40862299999992,79.328872999999987],[-105.38305699999995,79.326935000000049],[-105.33277899999996,79.319443000000092],[-105.19721999999996,79.299713000000111],[-105.16111799999999,79.297485000000108],[-105.12721299999998,79.297485000000108],[-105.10861199999999,79.298874000000126],[-105.01611300000002,79.310531999999967],[-104.95472699999993,79.315262000000018],[-104.85916099999997,79.319153000000085],[-104.74276700000001,79.322495000000004],[-104.58332799999999,79.329437000000098],[-104.54860699999989,79.331375000000037],[-104.49082900000002,79.339157],[-104.46083099999998,79.342209000000082],[-104.18167099999999,79.358871000000079],[-104.00723299999999,79.367752000000053],[-103.97778299999999,79.368866000000025],[-103.9491579999999,79.368042000000059],[-103.83500699999996,79.36442599999998],[-103.7225039999999,79.356934000000024],[-103.69526699999994,79.352203000000088],[-103.62053700000001,79.330551000000071],[-103.59388699999988,79.325821000000019]],[[-99.471663999999976,80.109711000000004],[-99.436661000000015,80.107208000000014],[-99.404723999999931,80.10803199999998],[-99.298049999999989,80.118866000000025],[-99.136672999999917,80.133040999999935],[-99.110549999999876,80.130539000000056],[-99.081680000000006,80.124695000000031],[-98.868880999999988,80.077774000000034],[-98.856658999999922,80.07249500000006],[-98.774719000000005,80.01527400000009],[-98.705841000000021,79.965820000000065],[-98.644164999999873,79.800261999999918],[-98.644164999999873,79.794144000000017],[-98.648620999999878,79.783599999999922],[-98.673049999999989,79.771927000000119],[-98.779175000000009,79.702208999999982],[-98.830001999999922,79.664429000000098],[-98.868057000000022,79.700821000000076],[-98.936110999999983,79.719711000000018],[-98.967772999999909,79.724152000000117],[-99.139998999999932,79.740814000000114],[-99.243056999999965,79.748596000000077],[-99.273620999999935,79.751389000000017],[-99.301391999999908,79.75471500000009],[-99.317229999999995,79.758605999999986],[-99.324448000000018,79.762497000000053],[-99.325561999999991,79.767487000000074],[-99.322509999999909,79.771378000000141],[-99.313048999999921,79.776093000000003],[-99.304717999999923,79.782211000000132],[-99.302779999999984,79.787490999999989],[-99.297501000000011,79.812759000000085],[-99.295837000000006,79.833328000000051],[-99.296386999999925,79.839157000000057],[-99.302215999999873,79.845261000000107],[-99.315826000000015,79.848602000000142],[-99.368880999999988,79.857758000000103],[-99.556655999999919,79.888885000000016],[-99.584441999999967,79.891937000000098],[-99.614166000000012,79.893326000000116],[-99.647781000000009,79.893051000000071],[-99.67971799999998,79.888046000000031],[-99.700835999999867,79.882750999999985],[-99.732223999999974,79.878860000000088],[-99.800827000000027,79.876648000000046],[-100.00556899999998,79.8744200000001],[-100.03582799999992,79.874695000000088],[-100.07028199999996,79.876923000000033],[-100.09777800000001,79.881088000000034],[-100.12110899999999,79.886658000000125],[-100.14389,79.893051000000071],[-100.15862299999998,79.898605000000089],[-100.17748999999998,79.909988000000112],[-100.17832900000002,79.915817000000118],[-100.19332900000001,80.03387500000008],[-100.08167999999989,80.084427000000005],[-100.06555200000003,80.089980999999966],[-100.02362099999993,80.099716000000058],[-99.827224999999999,80.143599999999992],[-99.795272999999952,80.147766000000104],[-99.759170999999981,80.149719000000005],[-99.726944000000003,80.150542999999971],[-99.625548999999921,80.148880000000077],[-99.599990999999989,80.145263999999997],[-99.593886999999881,80.139160000000004],[-99.571120999999948,80.132751000000098],[-99.471663999999976,80.109711000000004]],[[-99.155563000000029,80.174697999999978],[-99.127212999999927,80.168045000000006],[-99.113891999999964,80.163879000000122],[-99.138061999999991,80.162491000000045],[-99.160552999999993,80.163040000000137],[-99.184998000000007,80.167755],[-99.251952999999901,80.173035000000084],[-99.277495999999985,80.173035000000084],[-99.313613999999973,80.171097000000145],[-99.341384999999946,80.166092000000106],[-99.333069000000023,80.159424000000115],[-99.30360399999995,80.153870000000097],[-99.305556999999908,80.148331000000098],[-99.342498999999918,80.145538000000101],[-99.375274999999931,80.147217000000126],[-99.400557999999933,80.150818000000015],[-99.418059999999969,80.157211000000132],[-99.418335000000013,80.163040000000137],[-99.413329999999974,80.168868999999972],[-99.386947999999961,80.17886400000009],[-99.366942999999935,80.182205000000124],[-99.239165999999898,80.183868000000075],[-99.211944999999957,80.182205000000124],[-99.155563000000029,80.174697999999978]],[[-95.030837999999903,80.670258000000047],[-94.969451999999933,80.640274000000034],[-94.970551,80.635268999999994],[-94.981383999999991,80.631927000000076],[-95.006957999999997,80.626648000000046],[-95.190276999999924,80.608871000000022],[-95.226104999999961,80.60914600000001],[-95.453613000000018,80.629424999999969],[-95.611114999999984,80.648040999999978],[-95.676940999999943,80.653319999999951],[-95.711945000000014,80.654433999999981],[-95.749160999999958,80.653869999999984],[-95.788054999999929,80.652205999999978],[-95.823623999999938,80.648604999999918],[-95.86332699999997,80.645828000000051],[-96.061935000000005,80.656647000000078],[-96.118056999999965,80.660537999999974],[-96.14916999999997,80.664703000000145],[-96.139449999999954,80.669708000000014],[-96.076675000000023,80.683043999999995],[-96.028335999999967,80.687195000000088],[-96.006119000000012,80.688034000000016],[-95.491378999999995,80.699997000000053],[-95.424438000000009,80.699707000000046],[-95.200561999999934,80.697479000000101],[-95.166945999999939,80.695250999999985],[-95.128875999999934,80.691925000000083],[-95.096663999999976,80.688582999999994],[-95.062499999999943,80.682480000000055],[-95.065276999999924,80.680542000000116],[-95.045836999999949,80.676926000000037],[-95.030837999999903,80.670258000000047]],[[-92.727782999999931,81.305542000000059],[-92.530288999999982,81.284988000000112],[-92.21305799999999,81.245529000000033],[-92.148055999999997,81.236374000000126],[-92.124709999999936,81.232758000000103],[-92.052489999999921,81.218597000000102],[-91.955841000000021,81.196365000000014],[-91.858046999999999,81.167755],[-91.781677000000002,81.090271000000143],[-91.783889999999928,81.083602999999982],[-91.797501000000011,81.081665000000044],[-91.832503999999972,81.080276000000083],[-91.888061999999934,81.081940000000088],[-91.914444000000003,81.078049000000021],[-91.913894999999968,81.07499700000011],[-91.908614999999998,81.070540999999992],[-91.893341000000021,81.064986999999974],[-91.865828999999962,81.058594000000028],[-91.767226999999934,81.049148999999943],[-91.72222899999997,81.042205999999965],[-91.538895000000025,80.981658999999979],[-91.52555799999999,80.974990999999989],[-91.522781000000009,80.962769000000037],[-91.531676999999945,80.951096000000007],[-91.527221999999995,80.939697000000081],[-91.517776000000026,80.932754999999986],[-91.481673999999998,80.919434000000024],[-91.321121000000005,80.882750999999985],[-91.306106999999997,80.875534000000016],[-91.152221999999995,80.785538000000031],[-91.154998999999975,80.78054800000001],[-91.14916999999997,80.770263999999997],[-91.140563999999983,80.764709000000096],[-91.121658000000025,80.754715000000033],[-91.099441999999954,80.74803200000008],[-91.03472899999997,80.737488000000042],[-90.972777999999948,80.730270000000019],[-90.905272999999966,80.724425999999994],[-90.777221999999995,80.71775800000006],[-90.754181000000017,80.714995999999928],[-90.712783999999999,80.705551000000071],[-90.664718999999991,80.684708000000001],[-90.652495999999928,80.67804000000001],[-90.603881999999999,80.651382000000012],[-90.593612999999948,80.645264000000111],[-90.593063000000029,80.640823000000012],[-90.601943999999946,80.636107999999979],[-90.615829000000019,80.630264000000125],[-90.678054999999972,80.615540000000067],[-90.715835999999911,80.605545000000006],[-90.742492999999911,80.594711000000075],[-90.763061999999991,80.583603000000096],[-90.771666999999979,80.577484000000084],[-90.772780999999952,80.571930000000066],[-90.766402999999912,80.565536000000066],[-90.741378999999938,80.562195000000031],[-90.706116000000009,80.561371000000065],[-90.607223999999917,80.561371000000065],[-90.583069000000023,80.561371000000065],[-90.418059999999912,80.552200000000084],[-90.238891999999964,80.550536999999963],[-90.203339000000028,80.549712999999997],[-90.177215999999987,80.548874000000069],[-90.046386999999925,80.541656000000046],[-90.016402999999968,80.538039999999967],[-90,80.534591999999975],[-89.989990000000034,80.532486000000006],[-89.961394999999982,80.520263999999997],[-89.955565999999976,80.515548999999965],[-89.938598999999954,80.508330999999998],[-89.84056099999998,80.481369000000086],[-89.81639100000001,80.474991000000102],[-89.790282999999931,80.469437000000084],[-89.762511999999958,80.464995999999985],[-89.75111400000003,80.464432000000045],[-89.784163999999919,80.500824000000023],[-89.748336999999879,80.532760999999994],[-89.586945000000014,80.545532000000094],[-89.546111999999994,80.547485000000052],[-89.482773000000009,80.544983000000002],[-89.447219999999902,80.542480000000012],[-89.354172000000005,80.534988000000055],[-89.326400999999919,80.531937000000028],[-89.272781000000009,80.523315000000025],[-89.244995000000017,80.517212000000086],[-89.059158000000025,80.461380000000133],[-89.087508999999955,80.438583000000051],[-89.115279999999927,80.433868000000018],[-89.176101999999958,80.426651000000049],[-89.198333999999932,80.42164600000001],[-89.20944199999991,80.417754999999943],[-89.235001000000011,80.408035000000041],[-89.25,80.402206000000035],[-89.257232999999985,80.396942000000081],[-89.253615999999965,80.392761000000007],[-89.237212999999997,80.388596000000007],[-89.216948999999943,80.389709000000039],[-89.189712999999927,80.394149999999968],[-89.167496000000028,80.399155000000007],[-89.136123999999995,80.40248100000008],[-89.09973100000002,80.40248100000008],[-89.083327999999881,80.398331000000042],[-89.075835999999924,80.393051000000014],[-89.104995999999915,80.339431999999988],[-89.114165999999955,80.333327999999938],[-89.125274999999931,80.327773999999977],[-89.143616000000009,80.323318000000029],[-89.169158999999979,80.318054000000075],[-89.220275999999899,80.30914300000012],[-89.241942999999935,80.304153000000099],[-89.256667999999991,80.298599000000081],[-89.263900999999976,80.293320000000108],[-89.262221999999952,80.286652000000117],[-89.25140399999998,80.278320000000122],[-89.180496000000005,80.238174000000072],[-89.113892000000021,80.208038000000045],[-89.092223999999987,80.200821000000133],[-89.072784000000013,80.195526000000086],[-88.776672000000019,80.131363000000022],[-88.75,80.126647999999989],[-88.534728999999913,80.09887700000013],[-88.49888599999997,80.09887700000013],[-88.441939999999931,80.100540000000024],[-88.414718999999991,80.104980000000069],[-88.414444000000003,80.10803199999998],[-88.363051999999925,80.124420000000043],[-88.235274999999888,80.102477999999962],[-88.161941999999954,80.09165999999999],[-88.145554000000004,80.093872000000033],[-88.148346000000004,80.098037999999974],[-88.261397999999929,80.18803400000013],[-88.27305599999994,80.195526000000086],[-88.294158999999979,80.201385000000073],[-88.350829999999974,80.208878000000084],[-88.422775000000001,80.210541000000035],[-88.479996000000028,80.213608000000136],[-88.506957999999941,80.218322999999998],[-88.595276000000013,80.236923000000104],[-88.618057000000022,80.24331699999999],[-88.630279999999914,80.249145999999996],[-88.661391999999921,80.272491000000116],[-88.684432999999956,80.358597000000145],[-88.68582200000003,80.365540000000124],[-88.685271999999998,80.371643000000063],[-88.683059999999955,80.376923000000147],[-88.67721599999993,80.382751000000042],[-88.648894999999925,80.393600000000106],[-88.615279999999927,80.40387000000004],[-88.510284000000013,80.428864000000033],[-88.487777999999992,80.433868000000018],[-88.463333000000034,80.438034000000073],[-88.420546999999999,80.442200000000014],[-88.383895999999993,80.443588000000091],[-88.308333999999945,80.442749000000106],[-88.110549999999932,80.4327550000001],[-87.918883999999991,80.421097000000088],[-87.718613000000005,80.411102000000142],[-87.683884000000035,80.410263000000043],[-87.666396999999904,80.40387000000004],[-87.636123999999938,80.36692800000003],[-87.607498000000021,80.324158000000068],[-87.563889000000017,80.233322000000044],[-87.561935000000005,80.183593999999914],[-87.562774999999931,80.179153000000042],[-87.572234999999921,80.176086000000112],[-87.678054999999915,80.156371999999976],[-87.721389999999985,80.153046000000131],[-87.939162999999951,80.143875000000037],[-87.96665999999999,80.139434999999992],[-88.048889000000031,80.125809000000004],[-88.065552000000025,80.120818999999983],[-88.060546999999985,80.117477000000065],[-87.956664999999987,80.069717000000026],[-87.938048999999978,80.06442300000009],[-87.891387999999949,80.055542000000116],[-87.860001000000011,80.053588999999988],[-87.836120999999935,80.0577550000001],[-87.823059000000001,80.062484999999924],[-87.763061999999934,80.071106000000043],[-87.720000999999911,80.074707000000103],[-87.680557000000022,80.076385000000016],[-87.641678000000013,80.076385000000016],[-87.365004999999996,80.072768999999994],[-87.299987999999985,80.069443000000092],[-87.275557999999876,80.066939999999931],[-87.258620999999948,80.063873000000058],[-87.233321999999987,80.057480000000055],[-87.215285999999992,80.050537000000077],[-87.043334999999956,79.964996000000099],[-87.093612999999948,79.929428000000087],[-87.314437999999996,79.866088999999988],[-87.336120999999935,79.861374000000126],[-87.368332000000009,79.857208000000071],[-87.446655000000021,79.856094000000098],[-87.471938999999907,79.852478000000019],[-87.483062999999959,79.847214000000065],[-87.489440999999943,79.84137000000004],[-87.485549999999876,79.834991000000002],[-87.463622999999984,79.831374999999923],[-87.439162999999951,79.831940000000145],[-87.412780999999995,79.833328000000051],[-87.338608000000022,79.840820000000008],[-87.190826000000015,79.866088999999988],[-87.165558000000033,79.871094000000028],[-87.146956999999929,79.875534000000073],[-87.079726999999934,79.896103000000039],[-87.051392000000021,79.906647000000078],[-87.024718999999948,79.916091999999935],[-87.003066999999987,79.917755000000056],[-86.985824999999977,79.917755000000056],[-86.973891999999864,79.916381999999942],[-86.961394999999982,79.909988000000112],[-86.957779000000016,79.903594999999939],[-86.960555999999997,79.891372999999987],[-87.055557000000022,79.731934000000081],[-87.134170999999924,79.645264000000111],[-87.14416499999993,79.637771999999984],[-87.154998999999975,79.6336060000001],[-87.173049999999989,79.629149999999981],[-87.258620999999948,79.610260000000039],[-87.344451999999933,79.596374999999966],[-87.425551999999982,79.579163000000108],[-87.441665999999941,79.573883000000023],[-87.448043999999982,79.568329000000062],[-87.462509000000011,79.534713999999951],[-87.441939999999988,79.526382000000012],[-87.406661999999983,79.515823000000125],[-87.390563999999927,79.511108000000092],[-87.366394000000014,79.506378000000041],[-87.345276000000013,79.503052000000025],[-87.309998000000007,79.50221300000004],[-87.280563000000029,79.506943000000092],[-87.262786999999946,79.51138300000008],[-87.248336999999992,79.516937000000098],[-87.190552000000025,79.543593999999985],[-87.182769999999948,79.548874000000069],[-87.179992999999968,79.554153000000042],[-87.168883999999991,79.566376000000105],[-87.161117999999931,79.571655000000078],[-87.076675000000023,79.587493999999992],[-87.02555799999999,79.595535000000098],[-87.001113999999973,79.598877000000016],[-86.966659999999933,79.60165400000011],[-86.932495000000017,79.60165400000011],[-86.841384999999946,79.59304800000001],[-86.823623999999995,79.587769000000037],[-86.819732999999985,79.576096000000007],[-86.823897999999986,79.566086000000098],[-86.839721999999995,79.555817000000047],[-86.846389999999985,79.549988000000042],[-86.837783999999999,79.543320000000051],[-86.816665999999998,79.539703000000145],[-86.789992999999981,79.538878999999952],[-86.777221999999995,79.542206000000078],[-86.694991999999957,79.567490000000078],[-86.693329000000006,79.573608000000036],[-86.71055599999994,79.587203999999986],[-86.723891999999978,79.594437000000028],[-86.746383999999978,79.599990999999989],[-86.802489999999977,79.606093999999928],[-86.813048999999921,79.61192299999999],[-86.806380999999874,79.617751999999996],[-86.795272999999952,79.621643000000063],[-86.77694699999995,79.627472000000068],[-86.762222000000008,79.631653000000142],[-86.687209999999993,79.645264000000111],[-86.640838999999914,79.653320000000008],[-86.613051999999925,79.655822999999998],[-86.575012000000015,79.657211000000075],[-86.547775000000001,79.65637200000009],[-86.334166999999923,79.645538000000045],[-86.302779999999984,79.642761000000121],[-86.279448999999943,79.640274000000034],[-86.258895999999993,79.63499500000006],[-86.109160999999972,79.595260999999994],[-86.046111999999994,79.568877999999984],[-86.042220999999927,79.565536000000066],[-86.028060999999923,79.474701000000096],[-86.05471799999998,79.470535000000041],[-86.160552999999993,79.463608000000136],[-86.167496000000028,79.457764000000111],[-86.136123999999995,79.444702000000063],[-86.120834000000002,79.439972000000068],[-86.098891999999921,79.435806000000127],[-86.070847000000015,79.434143000000063],[-86.035004000000015,79.436371000000008],[-86.011947999999961,79.440262000000075],[-85.990554999999972,79.444977000000108],[-85.975829999999917,79.449142000000109],[-85.964171999999962,79.454436999999984],[-85.901108000000022,79.493591000000038],[-85.887222000000008,79.505264000000068],[-85.885283999999956,79.51138300000008],[-85.893341000000021,79.523315000000082],[-85.89916999999997,79.536377000000073],[-85.896666999999979,79.549149000000114],[-85.893341000000021,79.554703000000075],[-85.887786999999946,79.56109600000002],[-85.847504000000015,79.596374999999966],[-85.840285999999992,79.601928999999927],[-85.828339000000028,79.607483000000116],[-85.781386999999995,79.615540000000124],[-85.743606999999997,79.61692800000003],[-85.681945999999925,79.613312000000121],[-85.639175000000023,79.604155999999989],[-85.623885999999914,79.599152000000061],[-85.591385000000002,79.585266000000047],[-85.531112999999948,79.559418000000107],[-85.485000999999954,79.518600000000049],[-85.402221999999995,79.473602000000142],[-85.306655999999919,79.428314],[-85.27806099999998,79.415543000000127],[-85.150557999999933,79.38220200000012],[-85.130279999999971,79.378586000000098],[-85.039718999999877,79.350815000000011],[-84.93249499999996,79.300262000000032],[-84.920273000000009,79.293320000000108],[-84.904175000000009,79.276657000000057],[-84.904175000000009,79.267761000000121],[-84.909728999999857,79.263046000000088],[-84.93110699999994,79.258331000000055],[-85.099990999999932,79.239426000000094],[-85.158889999999928,79.231933999999967],[-85.211394999999868,79.223311999999964],[-85.232772999999952,79.218872000000147],[-85.248046999999872,79.213042999999971],[-85.260009999999909,79.207763999999997],[-85.271941999999967,79.19720500000011],[-85.280563000000029,79.192200000000071],[-85.297226000000023,79.187195000000031],[-85.591385000000002,79.15415999999999],[-85.779998999999918,79.131088000000034],[-85.877212999999983,79.121642999999949],[-86.00389100000001,79.111374000000126],[-86.158889999999985,79.103316999999947],[-86.271392999999989,79.095534999999984],[-86.341674999999952,79.088318000000072],[-86.422501000000011,79.075546000000088],[-86.485549999999989,79.063309000000118],[-86.550827000000027,79.048874000000012],[-86.55999799999995,79.044434000000138],[-86.555557000000022,79.042480000000126],[-86.550827000000027,79.035538000000031],[-86.552490000000034,79.029434000000037],[-86.55999799999995,79.012206999999989],[-86.587783999999942,78.983597000000145],[-86.598891999999921,78.978317000000061],[-86.614440999999943,78.973312000000021],[-86.676940999999886,78.959717000000126],[-86.702224999999942,78.955261000000064],[-86.741378999999938,78.951934999999992],[-86.765015000000005,78.953598000000113],[-86.785004000000015,78.957213999999965],[-86.808334000000002,78.967209000000082],[-86.903335999999854,79.009430000000066],[-86.916396999999961,79.016663000000108],[-86.926391999999964,79.035812000000135],[-86.930556999999965,79.047760000000039],[-86.940551999999968,79.053589000000045],[-86.949158000000011,79.057205000000067],[-86.965285999999935,79.057480000000112],[-86.98332199999993,79.056641000000127],[-86.989989999999977,79.047760000000039],[-87.004456000000005,78.987198000000035],[-87.002501999999993,78.981369000000029],[-86.986937999999952,78.949707000000046],[-86.979995999999971,78.9433140000001],[-86.966948999999943,78.936371000000122],[-86.950835999999981,78.929428000000087],[-86.942764000000011,78.922485000000108],[-86.937774999999988,78.91693099999992],[-86.952498999999932,78.906647000000078],[-86.97084000000001,78.896103000000039],[-86.997498000000007,78.882477000000051],[-87.021666999999923,78.873032000000023],[-87.052490000000034,78.862762000000089],[-87.179442999999935,78.830551000000014],[-87.282775999999956,78.810257000000036],[-87.328063999999983,78.794708000000128],[-87.353881999999999,78.78414900000007],[-87.529998999999918,78.6869200000001],[-87.532776000000013,78.669983000000116],[-87.543059999999969,78.664703000000031],[-87.572783999999956,78.654433999999981],[-87.591949,78.649718999999948],[-87.615829000000019,78.645264000000111],[-87.663054999999986,78.642487000000017],[-87.684432999999956,78.644989000000123],[-87.872771999999941,78.694977000000051],[-87.937774999999874,78.738312000000064],[-87.953612999999962,78.74971000000005],[-87.959166999999979,78.755264000000068],[-87.993880999999931,78.79525799999999],[-88.003341999999918,78.807205000000124],[-88.00140399999998,78.824158000000011],[-87.985275000000001,78.957213999999965],[-87.981673999999884,78.960541000000092],[-87.968338000000017,78.966385000000116],[-87.894164999999987,78.979706000000078],[-87.833617999999944,78.992203000000075],[-87.81361400000003,78.99693300000007],[-87.794448999999986,79.006943000000035],[-87.728881999999942,79.069442999999978],[-87.724715999999944,79.075821000000076],[-87.733886999999982,79.081100000000049],[-87.746108999999933,79.086104999999918],[-87.752791999999999,79.085540999999978],[-87.772780999999952,79.080825999999945],[-87.806380999999931,79.06999200000007],[-87.849166999999966,79.054977000000122],[-87.872771999999941,79.045258000000103],[-87.883330999999998,79.039978000000076],[-87.894454999999994,79.028320000000008],[-87.890288999999996,79.021652000000074],[-87.899993999999992,79.011108000000036],[-87.929442999999992,79.006943000000035],[-88.000564999999995,79.00360100000006],[-88.032776000000013,79.003876000000105],[-88.061385999999914,79.005829000000006],[-88.093886999999938,79.004440000000045],[-88.162506000000008,78.990540000000124],[-88.202498999999932,78.976379000000122],[-88.21305799999999,78.966095000000109],[-88.215285999999935,78.960815000000025],[-88.216659999999933,78.948318000000029],[-88.229720999999984,78.802200000000084],[-88.224716000000001,78.78915399999994],[-88.22222899999997,78.783324999999934],[-88.218063000000029,78.776931999999988],[-88.201110999999969,78.757216999999969],[-88.132216999999969,78.68081699999999],[-88.044158999999922,78.658600000000092],[-88.02416999999997,78.656647000000135],[-88.010833999999932,78.652771000000087],[-87.993056999999965,78.645264000000111],[-87.982772999999952,78.639435000000105],[-87.908614999999998,78.596939000000077],[-87.894729999999981,78.584717000000126],[-87.890839000000028,78.578323000000069],[-87.896956999999873,78.566375999999934],[-87.908339999999953,78.548599000000081],[-87.984725999999966,78.492202999999961],[-88.011948000000018,78.481369000000086],[-88.055832000000009,78.472762999999986],[-88.205276000000026,78.452484000000084],[-88.234160999999972,78.453598000000056],[-88.249160999999958,78.456649999999968],[-88.389450000000011,78.521378000000027],[-88.559432999999899,78.604156000000046],[-88.574721999999952,78.607208000000128],[-88.723052999999993,78.615814000000057],[-88.788605000000018,78.612761999999975],[-88.804168999999945,78.609711000000118],[-88.746108999999933,78.535812000000078],[-88.725006000000008,78.524155000000121],[-88.659164000000033,78.491088999999988],[-88.595276000000013,78.459991000000002],[-88.5625,78.44470200000012],[-88.552215999999987,78.437484999999981],[-88.543883999999991,78.426086000000112],[-88.535552999999993,78.413040000000137],[-88.536117999999931,78.406937000000028],[-88.538054999999986,78.401382000000126],[-88.541381999999999,78.396652000000074],[-88.553054999999915,78.385544000000095],[-88.561110999999983,78.379425000000083],[-88.570556999999951,78.373871000000065],[-88.614715999999987,78.348327999999981],[-88.663329999999974,78.321381000000031],[-88.672501000000011,78.316085999999984],[-88.704177999999956,78.271103000000096],[-88.710555999999997,78.261107999999979],[-88.713897999999858,78.254715000000033],[-88.71556099999998,78.249146000000053],[-88.716110000000015,78.243042000000003],[-88.721114999999941,78.231093999999985],[-88.726105000000018,78.225266000000033],[-88.75140399999998,78.196930000000123],[-88.776672000000019,78.176085999999941],[-88.78443900000002,78.169983000000002],[-88.793334999999956,78.164429000000041],[-88.817779999999914,78.154434000000094],[-88.847777999999948,78.151382000000012],[-88.978881999999942,78.165817000000118],[-89.002791999999943,78.169434000000081],[-89.065001999999879,78.184418000000107],[-89.079726999999991,78.189147999999989],[-89.115828999999962,78.200821000000019],[-89.227492999999981,78.245254999999986],[-89.259170999999924,78.262771999999984],[-89.265014999999948,78.268326000000002],[-89.275283999999999,78.281936999999971],[-89.353881999999885,78.339705999999978],[-89.364440999999999,78.344147000000078],[-89.381103999999993,78.3477630000001],[-89.518341000000021,78.392212000000086],[-89.676665999999955,78.447478999999987],[-89.803878999999995,78.494431000000134],[-89.819457999999997,78.500549000000092],[-89.891113000000018,78.552764999999965],[-89.921660999999972,78.578048999999965],[-89.945830999999998,78.599425999999994],[-89.95695499999988,78.605255],[-89.980559999999969,78.609711000000118],[-90.014724999999885,78.609421000000111],[-90.051391999999964,78.605820000000051],[-90.088332999999977,78.595825000000104],[-90.092498999999975,78.589980999999909],[-90.09973100000002,78.555252000000053],[-90.100829999999974,78.549713000000054],[-90.064712999999927,78.513321000000076],[-89.985000999999954,78.43609600000002],[-89.960555999999997,78.432480000000112],[-89.936110999999983,78.430267000000015],[-89.910004000000015,78.426086000000112],[-89.869995000000017,78.417755],[-89.80972300000002,78.404709000000082],[-89.785278000000005,78.398041000000092],[-89.774445000000014,78.39387499999998],[-89.748046999999929,78.380264000000011],[-89.615554999999858,78.300262000000032],[-89.606109999999944,78.293319999999994],[-89.461670000000026,78.17553700000002],[-89.455841000000021,78.169983000000002],[-89.452498999999989,78.162491000000045],[-89.461670000000026,78.158599999999979],[-89.476668999999958,78.153869999999984],[-89.507781999999963,78.149994000000106],[-89.530288999999982,78.148330999999985],[-89.549437999999952,78.148605000000089],[-89.563048999999921,78.149719000000061],[-89.59584000000001,78.156937000000084],[-89.61860699999994,78.163040000000024],[-89.631942999999978,78.168594000000041],[-89.639724999999942,78.173309000000074],[-89.644164999999987,78.179703000000075],[-89.646118000000001,78.184707999999944],[-89.646118000000001,78.19720500000011],[-89.64805599999994,78.202209000000096],[-89.654174999999952,78.209427000000119],[-89.657226999999978,78.212203999999986],[-89.673888999999974,78.217209000000082],[-89.700835999999981,78.219147000000021],[-89.748885999999914,78.217209000000082],[-89.783324999999934,78.214431999999988],[-89.847778000000005,78.213042999999971],[-89.886948000000018,78.215271000000087],[-89.911117999999988,78.218872000000147],[-89.929169000000002,78.223038000000088],[-89.955276000000026,78.233322000000101],[-89.960281000000009,78.238311999999951],[-89.961945000000014,78.243590999999924],[-89.959441999999967,78.254439999999988],[-89.955001999999922,78.260544000000039],[-89.980285999999921,78.27777100000003],[-90.023330999999985,78.298035000000027],[-90.060271999999998,78.308029000000033],[-90.172500999999954,78.331100000000049],[-90.186110999999926,78.333327999999995],[-90.213622999999984,78.335265999999933],[-90.242492999999854,78.336105000000089],[-90.27416999999997,78.334991000000116],[-90.34056099999998,78.331100000000049],[-90.411391999999921,78.324432000000058],[-90.478881999999999,78.321106000000043],[-90.507781999999963,78.320540999999992],[-90.59445199999999,78.322768999999937],[-90.620269999999948,78.325546000000031],[-90.667770000000019,78.32748399999997],[-90.729445999999996,78.326096000000064],[-90.744445999999982,78.323043999999982],[-90.748610999999983,78.320267000000058],[-90.73721299999994,78.314423000000033],[-90.715560999999923,78.309143000000006],[-90.622771999999941,78.291091999999992],[-90.598343,78.287490999999932],[-90.544998000000021,78.283051000000114],[-90.46166999999997,78.27887000000004],[-90.410277999999948,78.276657000000057],[-90.363327000000027,78.256942999999978],[-90.273894999999982,78.192200000000071],[-90.267501999999922,78.18664600000011],[-90.268889999999999,78.182755000000043],[-90.272781000000009,78.17692599999998],[-90.293883999999991,78.159988000000112],[-90.301102000000014,78.15525800000006],[-90.330291999999986,78.146103000000039],[-90.353881999999942,78.143326000000116],[-90.433884000000035,78.136383000000137],[-90.465012000000002,78.135268999999937],[-90.497771999999941,78.134995000000004],[-90.624434999999949,78.134430000000009],[-90.711120999999991,78.135818000000086],[-90.967223999999987,78.142761000000064],[-91.021392999999989,78.146103000000039],[-91.039718999999991,78.150269000000094],[-91.238387999999986,78.166594999999973],[-91.326674999999966,78.168594000000041],[-91.489715999999873,78.17692599999998],[-91.539992999999924,78.181366000000025],[-91.613891999999964,78.191925000000083],[-91.661941999999897,78.199707000000046],[-91.707229999999981,78.209427000000119],[-91.724715999999944,78.214706000000092],[-91.807770000000005,78.23275799999999],[-91.831389999999999,78.23692299999999],[-91.857497999999964,78.239700000000084],[-91.887511999999901,78.239425999999924],[-91.920273000000009,78.237198000000149],[-91.946380999999974,78.23275799999999],[-91.963332999999977,78.227768000000083],[-91.974441999999954,78.223312000000021],[-91.986114999999984,78.214706000000092],[-92.003066999999987,78.209717000000126],[-92.031113000000005,78.207488999999953],[-92.058334000000002,78.208878000000141],[-92.083327999999995,78.212494000000049],[-92.105559999999969,78.217758000000003],[-92.308333999999945,78.278594999999996],[-92.537216000000001,78.310531999999967],[-92.556655999999975,78.314696999999967],[-92.589447000000007,78.323608000000092],[-92.949431999999888,78.43193100000002],[-92.96665999999999,78.44358799999992],[-92.982498000000021,78.454436999999984],[-92.98721299999994,78.46026599999999],[-92.987502999999947,78.465546000000074],[-92.978881999999942,78.483322000000044],[-92.96665999999999,78.488586000000055],[-92.863891999999964,78.505264000000125],[-92.848617999999988,78.505554000000132],[-92.690551999999968,78.49581900000004],[-92.646392999999932,78.487487999999928],[-92.621933000000013,78.487198000000092],[-92.600554999999986,78.488037000000077],[-92.576675000000023,78.490540000000067],[-92.520279000000016,78.498596000000134],[-92.493606999999997,78.503325999999959],[-92.48721299999994,78.507767000000058],[-92.487777999999992,78.509430000000009],[-92.497771999999998,78.513046000000031],[-92.563323999999966,78.520537999999988],[-92.529448999999943,78.521378000000027],[-92.24722300000002,78.52777100000003],[-92.216659999999933,78.528046000000018],[-92.070847000000015,78.525543000000027],[-92.011123999999938,78.526657],[-91.949996999999939,78.530273000000079],[-91.918610000000001,78.534424000000001],[-91.726395000000025,78.530548000000067],[-91.682495000000017,78.52609300000006],[-91.660827999999981,78.526932000000045],[-91.646117999999944,78.529984000000127],[-91.636123999999938,78.533600000000035],[-91.632492000000013,78.539429000000041],[-91.635284000000013,78.546097000000032],[-91.647506999999962,78.560257000000092],[-91.657500999999968,78.563873000000001],[-91.670272999999952,78.56581100000011],[-91.945267000000001,78.572220000000129],[-92.151397999999915,78.579437000000041],[-92.351943999999946,78.586928999999998],[-92.557220000000029,78.594711000000132],[-92.58555599999994,78.596099999999979],[-92.604720999999984,78.598602000000028],[-92.697768999999994,78.614151000000106],[-92.733063000000016,78.62359600000002],[-92.757781999999963,78.628036000000009],[-92.806106999999997,78.6336060000001],[-92.828888000000006,78.631927000000076],[-92.907227000000034,78.62303200000008],[-92.935546999999985,78.618866000000139],[-92.935821999999973,78.614990000000091],[-92.941665999999998,78.608597000000145],[-92.955841000000021,78.603867000000093],[-92.991668999999945,78.599716000000001],[-93.176940999999999,78.586380000000077],[-93.210555999999997,78.584152000000074],[-93.242492999999968,78.582763999999997],[-93.271118000000001,78.584152000000074],[-93.28443900000002,78.587494000000049],[-93.434157999999968,78.6336060000001],[-93.771392999999989,78.750549000000035],[-93.813613999999973,78.765823000000069],[-93.802779999999927,78.770263999999997],[-93.684158000000025,78.782486000000006],[-93.650283999999999,78.784714000000122],[-93.589721999999995,78.783599999999979],[-93.534438999999963,78.778870000000097],[-93.429169000000002,78.767212000000086],[-93.376388999999961,78.760544000000095],[-93.351394999999968,78.756104000000107],[-93.299728000000016,78.748596000000077],[-93.24722300000002,78.741928000000087],[-93.190551999999968,78.736374000000126],[-93.163329999999974,78.735535000000141],[-93.09973100000002,78.737198000000092],[-93.054992999999968,78.739974999999959],[-93.04222099999987,78.745255000000043],[-93.039963,78.750000000000057],[-93.039443999999946,78.751099000000067],[-93.035277999999948,78.761932000000002],[-93.037780999999939,78.765823000000069],[-93.118880999999988,78.772491000000059],[-93.170273000000009,78.77998400000007],[-93.271941999999967,78.796097000000145],[-93.346389999999928,78.809982000000048],[-93.369155999999975,78.816086000000041],[-93.391388000000006,78.820831000000112],[-93.416397000000018,78.824996999999996],[-93.560546999999929,78.833328000000108],[-93.589721999999995,78.834717000000069],[-93.650283999999999,78.835541000000035],[-93.746947999999975,78.834991000000002],[-93.779723999999987,78.833603000000096],[-93.842772999999966,78.832489000000123],[-93.874709999999936,78.833603000000096],[-93.892501999999979,78.838042999999914],[-93.902221999999995,78.842484000000013],[-93.906386999999995,78.849152000000004],[-93.917495999999971,78.860535000000027],[-93.939437999999939,78.871643000000006],[-93.959441999999967,78.878310999999997],[-94.052490000000034,78.902481000000023],[-94.09584000000001,78.911102000000085],[-94.253066999999987,78.956940000000031],[-94.269729999999981,78.962204000000042],[-94.282227000000034,78.968872000000033],[-94.287506000000008,78.981093999999985],[-94.288605000000018,78.986374000000069],[-94.241378999999881,78.996643000000063],[-94.005279999999914,79.029709000000025],[-93.910277999999948,79.041930999999977],[-93.878051999999968,79.042480000000126],[-93.854720999999927,79.040543000000071],[-93.813889000000017,79.035538000000031],[-93.784164000000033,79.038040000000137],[-93.601943999999889,79.068328999999949],[-93.472778000000005,79.108871000000136],[-93.455565999999976,79.11970500000001],[-93.452498999999989,79.125534000000016],[-93.456664999999987,79.132202000000007],[-93.463333000000034,79.136932000000058],[-93.46055599999994,79.142761000000064],[-93.443054000000018,79.148041000000092],[-93.36610399999995,79.161377000000073],[-93.329726999999934,79.164428999999984],[-93.294997999999907,79.166931000000091],[-93.259170999999924,79.167480000000012],[-93.227782999999931,79.166931000000091],[-93.003066999999987,79.154434000000094],[-92.895553999999947,79.143875000000037],[-92.869720000000029,79.139708999999925],[-92.841109999999958,79.141098000000113],[-92.816101000000003,79.145537999999988],[-92.801392000000021,79.150269000000094],[-92.7933349999999,79.155823000000055],[-92.780288999999868,79.161102000000028],[-92.746947999999975,79.164153999999996],[-92.506957999999941,79.158324999999991],[-92.478606999999954,79.155823000000055],[-92.407500999999911,79.146102999999982],[-92.309433000000013,79.145264000000054],[-92.243057000000022,79.146941999999967],[-91.89805599999994,79.161377000000073],[-91.691939999999988,79.173309000000017],[-91.439162999999951,79.183593999999971],[-91.205275999999969,79.191925000000026],[-91.009170999999867,79.203048999999965],[-90.811934999999949,79.208038000000101],[-90.601669000000015,79.214157000000114],[-90.564162999999951,79.215546000000131],[-90.528335999999911,79.21748400000007],[-90.492767000000015,79.220825000000104],[-90.390839000000028,79.236374000000012],[-90.368331999999953,79.243042000000003],[-90.36326600000001,79.246811000000093],[-90.382216999999969,79.2494200000001],[-90.405563000000029,79.251938000000109],[-90.472778000000005,79.250823999999909],[-90.502227999999945,79.2494200000001],[-90.732223999999974,79.238312000000121],[-90.885833999999988,79.244141000000127],[-91.139998999999932,79.244431000000134],[-91.198883000000023,79.241364000000033],[-91.47084000000001,79.228867000000037],[-91.861114999999927,79.215271000000087],[-92.026397999999972,79.207489000000123],[-92.053604000000007,79.205261000000007],[-92.087783999999999,79.204163000000108],[-92.180832000000009,79.203048999999965],[-92.213897999999972,79.204163000000108],[-92.238892000000021,79.205551000000014],[-92.510284000000013,79.232757999999933],[-92.621933000000013,79.244431000000134],[-92.676666000000012,79.251389000000131],[-92.694716999999969,79.257217000000082],[-92.693053999999961,79.262207000000103],[-92.625548999999978,79.295258000000047],[-92.603881999999942,79.300812000000064],[-92.571944999999971,79.304153000000099],[-92.523330999999928,79.307755000000043],[-92.454453000000001,79.308594000000028],[-92.394729999999981,79.308594000000028],[-92.303329000000019,79.306366000000082],[-92.255004999999983,79.304428000000144],[-92.131377999999984,79.299988000000099],[-91.994995000000017,79.295258000000047],[-91.961944999999957,79.29553199999998],[-91.932494999999903,79.297211000000004],[-91.894164999999987,79.301085999999998],[-91.865279999999927,79.305542000000116],[-91.829452999999944,79.314697000000137],[-91.795546999999885,79.319153000000085],[-91.727492999999924,79.326096000000064],[-91.658889999999985,79.329987000000131],[-91.589721999999938,79.332214000000022],[-91.528884999999946,79.333054000000061],[-91.493880999999874,79.33248900000001],[-91.467498999999975,79.333602999999982],[-91.267776000000026,79.345824999999991],[-91.231673999999941,79.348037999999917],[-91.15834000000001,79.356093999999985],[-91.119995000000017,79.386383000000023],[-91.129165999999884,79.390823000000069],[-91.156386999999995,79.394440000000031],[-91.191100999999946,79.393326000000059],[-91.230559999999969,79.389434999999992],[-91.422225999999966,79.374146000000053],[-91.508621000000005,79.373306000000014],[-91.580841000000021,79.369141000000013],[-91.702224999999942,79.361374000000069],[-91.729720999999984,79.359421000000111],[-91.766662999999994,79.353317000000118],[-91.788329999999974,79.346375000000023],[-91.835281000000009,79.340820000000122],[-91.864715999999987,79.339431999999988],[-91.897781000000009,79.339157],[-92.150832999999977,79.344437000000084],[-92.18110699999994,79.345824999999991],[-92.210006999999962,79.348327999999924],[-92.290833000000021,79.358031999999923],[-92.351943999999946,79.362761999999975],[-92.41194200000001,79.36442599999998],[-92.510009999999966,79.364150999999993],[-92.561934999999949,79.365814000000057],[-92.571670999999867,79.37052900000009],[-92.577498999999989,79.379150000000038],[-92.567504999999869,79.384155000000078],[-92.479996000000028,79.404434000000037],[-92.462509000000011,79.406937000000028],[-92.41194200000001,79.411652000000061],[-92.31361400000003,79.418593999999928],[-92.243880999999988,79.426651000000106],[-92.228607000000011,79.431366000000139],[-92.227782999999931,79.435257000000036],[-92.228881999999999,79.438309000000118],[-92.234726000000023,79.441649999999981],[-92.241942999999935,79.444138000000123],[-92.259170999999981,79.446930000000066],[-92.283324999999991,79.449142000000109],[-92.33805799999999,79.453049000000078],[-92.419723999999974,79.457214000000079],[-92.580841000000021,79.452209000000039],[-92.605270000000019,79.450546000000088],[-92.634170999999981,79.445816000000036],[-92.679992999999968,79.437194999999974],[-92.774170000000026,79.417755],[-92.803054999999972,79.413040000000137],[-92.854445999999996,79.407760999999994],[-92.876098999999954,79.407760999999994],[-92.901671999999962,79.408874999999966],[-92.929442999999935,79.412490999999989],[-92.950835999999981,79.416382000000056],[-92.973327999999981,79.423598999999967],[-93.029175000000009,79.46026599999999],[-93.032775999999956,79.465546000000074],[-93.034728999999913,79.471649000000014],[-93.044723999999917,79.476089000000002],[-93.063048999999921,79.48054500000012],[-93.09056099999998,79.482208000000071],[-93.107223999999974,79.482208000000071],[-93.126662999999951,79.479980000000069],[-93.143889999999885,79.475815000000068],[-93.146666999999979,79.469986000000063],[-93.144454999999994,79.463882000000069],[-93.125,79.450821000000133],[-93.105834999999956,79.43942300000009],[-93.081389999999942,79.426376000000062],[-93.061110999999983,79.415817000000061],[-93.033614999999941,79.404434000000037],[-93.018889999999999,79.399719000000005],[-93.009170999999981,79.395263999999997],[-93.006957999999941,79.389160000000118],[-93.008347000000015,79.388046000000145],[-93.009445000000028,79.387206999999989],[-93.021392999999989,79.382751000000098],[-93.125,79.359711000000118],[-93.264175000000023,79.353592000000106],[-93.312499999999943,79.372757000000092],[-93.251113999999973,79.40498400000007],[-93.236114999999984,79.415268000000083],[-93.229720999999984,79.425537000000134],[-93.231383999999991,79.429977000000122],[-93.235001000000011,79.435257000000036],[-93.252501999999993,79.441924999999969],[-93.275833000000034,79.446640000000002],[-93.293334999999956,79.44802900000002],[-93.320007000000032,79.448317999999972],[-93.338057999999933,79.447205000000054],[-93.354445999999996,79.441360000000145],[-93.424437999999896,79.405258000000003],[-93.433059999999898,79.387496999999996],[-93.485275000000001,79.354156000000046],[-93.641387999999893,79.31164600000011],[-93.757507000000032,79.283600000000035],[-93.801940999999886,79.274704000000099],[-93.869995000000017,79.263885000000073],[-93.906661999999983,79.260544000000039],[-93.969726999999978,79.25749200000007],[-93.99722300000002,79.256942999999978],[-94.047225999999966,79.25749200000007],[-94.206954999999994,79.272490999999945],[-94.212219000000005,79.276657000000057],[-94.162780999999995,79.322220000000016],[-94.14805599999994,79.333602999999982],[-94.119720000000029,79.344711000000018],[-94.088608000000022,79.353592000000106],[-94.056380999999931,79.379700000000071],[-94.245834000000002,79.404160000000104],[-94.366652999999985,79.419708000000128],[-94.386123999999938,79.421371000000022],[-94.494720000000029,79.421371000000022],[-94.509170999999981,79.416382000000056],[-94.5,79.379700000000071],[-94.483063000000016,79.375809000000004],[-94.46305799999999,79.379150000000038],[-94.454453000000001,79.385544000000095],[-94.432769999999948,79.385544000000095],[-94.398055999999997,79.375259000000142],[-94.389998999999989,79.368866000000025],[-94.506667999999991,79.337204000000042],[-94.538054999999929,79.333602999999982],[-94.573623999999938,79.331100000000049],[-94.638900999999976,79.33248900000001],[-94.669997999999964,79.331375000000037],[-94.697495000000004,79.326660000000004],[-94.720001000000025,79.321655000000135],[-94.765015000000005,79.31164600000011],[-94.952498999999932,79.289978000000019],[-94.970000999999968,79.284714000000008],[-94.972777999999892,79.273880000000133],[-94.977218999999991,79.270264000000111],[-94.985824999999977,79.267487000000017],[-95.018616000000009,79.266936999999984],[-95.087555000000009,79.27075200000013],[-95.161666999999966,79.281097000000045],[-95.304992999999968,79.325821000000019],[-95.318619000000012,79.332214000000022],[-95.32028200000002,79.335266000000104],[-95.294448999999986,79.336655000000121],[-95.285004000000015,79.353042999999957],[-95.295837000000006,79.379425000000026],[-95.394164999999987,79.387496999999996],[-95.477218999999991,79.380814000000044],[-95.655563000000029,79.391663000000108],[-95.753341999999975,79.404434000000037],[-95.771666999999979,79.409714000000065],[-95.778609999999958,79.413040000000137],[-95.779449,79.425812000000121],[-95.736388999999974,79.537491000000045],[-95.657500999999968,79.553314000000114],[-95.636123999999938,79.557479999999998],[-95.565552000000025,79.55914300000012],[-95.309722999999963,79.569153000000028],[-95.170273000000009,79.575272000000041],[-95.051665999999955,79.582214000000135],[-94.839995999999871,79.597214000000122],[-94.802489999999977,79.600540000000137],[-94.699432000000002,79.612198000000149],[-94.40695199999999,79.667755000000113],[-94.360275000000001,79.677765000000022],[-94.329453000000001,79.688309000000061],[-94.282776000000013,79.757492000000013],[-94.28694200000001,79.762772000000041],[-94.298339999999996,79.76887499999998],[-94.318344000000025,79.778595000000053],[-94.335281000000009,79.780823000000055],[-94.361664000000019,79.781937000000028],[-94.384170999999981,79.778046000000131],[-94.577498999999932,79.735809000000074],[-94.592498999999975,79.731094000000041],[-94.596663999999976,79.725815000000011],[-94.601395000000025,79.713882000000012],[-94.608886999999925,79.708327999999995],[-94.748336999999935,79.678314],[-94.776671999999962,79.673598999999967],[-94.814437999999939,79.670258000000103],[-94.878325999999959,79.66804500000012],[-94.946380999999974,79.666930999999977],[-94.985001000000011,79.664993000000038],[-95.091675000000009,79.656936999999971],[-95.153610000000015,79.647491000000002],[-95.190825999999959,79.644149999999968],[-95.355559999999969,79.638321000000133],[-95.419998000000021,79.637496999999996],[-95.485274999999945,79.638046000000088],[-95.740828999999906,79.641373000000044],[-95.799437999999952,79.642487000000017],[-95.853332999999964,79.646103000000096],[-95.901107999999965,79.654433999999981],[-95.933060000000012,79.664429000000098],[-95.954726999999991,79.671920999999998],[-95.980835000000013,79.6827550000001],[-96.032227000000034,79.706940000000088],[-96.282501000000025,79.798874000000012],[-96.335555999999997,79.815536000000009],[-96.360824999999977,79.82249500000006],[-96.384170999999924,79.826385000000073],[-96.490554999999972,79.836104999999975],[-96.575561999999934,79.849990999999932],[-96.589447000000007,79.852478000000019],[-96.610549999999989,79.877762000000018],[-96.61500499999994,79.883881000000031],[-96.609436000000017,79.888596000000064],[-96.573623999999995,79.900269000000094],[-96.458618000000001,79.914429000000041],[-96.422775000000001,79.916091999999935],[-96.391387999999949,79.913879000000009],[-96.385009999999909,79.909714000000008],[-96.37777699999998,79.899155000000121],[-96.194716999999912,79.901382000000012],[-96.158889999999872,79.903046000000018],[-96.138061999999991,79.906372000000033],[-96.147780999999952,79.912491000000102],[-96.164718999999991,79.917205999999908],[-96.23332199999993,79.933043999999938],[-96.262512000000015,79.936920000000043],[-96.325561999999991,79.941360000000032],[-96.399170000000026,79.941086000000098],[-96.492766999999958,79.943314000000044],[-96.52416999999997,79.945251000000098],[-96.556655999999975,79.948868000000061],[-96.580565999999976,79.952773999999977],[-96.595839999999953,79.956940000000031],[-96.606658999999922,79.962204000000042],[-96.675003000000004,80.008331000000055],[-96.679442999999992,80.014435000000105],[-96.661941999999954,80.019989000000123],[-96.628052000000025,80.024429000000112],[-96.482772999999952,80.041091999999992],[-96.419158999999922,80.041930999999977],[-96.394164999999873,80.043869000000086],[-96.391677999999956,80.045822000000044],[-96.40583799999996,80.048325000000034],[-96.428878999999995,80.050537000000077],[-96.479172000000005,80.053864000000033],[-96.512222000000008,80.054977000000122],[-96.548614999999927,80.053314],[-96.582503999999915,80.048598999999967],[-96.599166999999909,80.044434000000138],[-96.627776999999924,80.039429000000098],[-96.676101999999958,80.041930999999977],[-96.698882999999967,80.046936000000017],[-96.737503000000004,80.058029000000033],[-96.781676999999945,80.076660000000061],[-96.801391999999964,80.086929000000055],[-96.802779999999984,80.090820000000122],[-96.748885999999857,80.134720000000129],[-96.734436000000017,80.139709000000096],[-96.711120999999935,80.14498900000001],[-96.675827000000027,80.145538000000101],[-96.410003999999958,80.13888500000013],[-96.381103999999937,80.13638300000008],[-96.351395000000025,80.132476999999994],[-96.322784000000013,80.127472000000125],[-96.163054999999872,80.093048000000067],[-96.077788999999996,80.078049000000021],[-96.017776000000026,80.070830999999998],[-95.847777999999892,80.053314],[-95.545836999999949,80.040543000000071],[-95.418883999999935,80.036652000000004],[-95.325011999999958,80.03387500000008],[-95.193877999999984,80.03137200000009],[-95.06361400000003,80.029984000000013],[-95.038054999999986,80.031936999999971],[-95.011672999999917,80.038879000000065],[-94.988892000000021,80.04304500000012],[-94.951110999999855,80.045532000000037],[-94.921386999999925,80.046371000000022],[-94.887512000000015,80.045822000000044],[-94.852782999999874,80.044144000000131],[-94.825835999999924,80.040543000000071],[-94.717772999999966,80.020828000000051],[-94.607498000000021,80.002777000000094],[-94.569457999999941,79.997208000000114],[-94.416945999999996,79.978867000000093],[-94.383620999999948,79.982482999999945],[-94.387786999999946,79.987761999999918],[-94.413894999999911,79.997757000000036],[-94.451674999999966,80.009720000000073],[-94.525557999999933,80.02276599999999],[-94.62110899999999,80.04304500000012],[-94.67111199999988,80.056931000000134],[-94.74888599999997,80.07998699999996],[-94.728881999999942,80.105545000000063],[-94.632766999999944,80.131088000000034],[-94.611937999999952,80.135544000000095],[-94.510558999999944,80.154434000000037],[-94.480559999999855,80.15914900000007],[-94.416396999999961,80.163605000000018],[-94.387222000000008,80.163315000000011],[-94.285827999999924,80.164993000000095],[-94.121108999999933,80.17025799999999],[-94.091675000000009,80.172485000000052],[-94.083892999999989,80.175537000000134],[-94.096389999999985,80.179153000000042],[-94.119995000000017,80.183044000000109],[-94.184433000000013,80.186646000000053],[-94.217772999999966,80.18803400000013],[-94.354171999999949,80.190811000000053],[-94.485000999999954,80.209991000000002],[-94.642226999999991,80.199996999999996],[-94.649993999999879,80.194427000000076],[-94.704453000000001,80.178040000000124],[-94.748336999999935,80.169434000000024],[-94.816956000000005,80.159714000000122],[-95.033324999999991,80.134995000000004],[-95.104996000000028,80.128860000000032],[-95.263625999999988,80.118317000000104],[-95.333618000000001,80.118042000000059],[-95.367767000000015,80.118317000000104],[-95.420273000000009,80.122482000000105],[-95.658889999999985,80.168593999999985],[-95.683884000000035,80.173874000000012],[-95.695830999999998,80.178314000000057],[-95.692215000000033,80.181090999999981],[-95.673889000000031,80.186371000000008],[-95.621658000000025,80.195251000000042],[-95.580841000000021,80.199706999999989],[-95.542770000000019,80.202209000000039],[-95.471114999999941,80.203598000000056],[-95.404175000000009,80.203598000000056],[-95.370543999999995,80.204712000000029],[-95.327788999999882,80.208603000000096],[-95.295837000000006,80.21276899999998],[-95.268341000000021,80.218047999999953],[-95.254455999999948,80.222214000000065],[-95.235000999999897,80.232208000000071],[-95.229996000000028,80.236098999999967],[-95.235000999999897,80.241088999999988],[-95.243331999999953,80.243591000000094],[-95.258895999999993,80.244980000000055],[-95.278060999999923,80.243866000000082],[-95.287216000000001,80.241088999999988],[-95.325561999999991,80.232208000000071],[-95.39834599999989,80.223602000000142],[-95.461394999999868,80.219986000000119],[-95.496947999999975,80.219436999999971],[-95.548339999999996,80.220261000000107],[-95.566955999999948,80.224152000000004],[-95.577498999999989,80.229430999999977],[-95.581389999999885,80.235535000000027],[-95.586394999999925,80.240540000000067],[-95.601944000000003,80.242203000000018],[-95.645844000000011,80.239700000000028],[-95.69027699999998,80.232483000000116],[-95.71055599999994,80.227768000000083],[-95.884170999999981,80.199142000000109],[-95.922500999999954,80.194138000000009],[-95.93360899999999,80.194427000000076],[-95.98443599999996,80.200271999999984],[-96.216659999999877,80.235809000000131],[-96.43499799999995,80.269714000000022],[-96.46444699999995,80.313034000000016],[-96.613892000000021,80.329987000000131],[-96.645844000000011,80.333054000000004],[-96.670272999999952,80.336928999999998],[-96.681670999999881,80.342209000000082],[-96.676101999999958,80.346939000000134],[-96.658051,80.352203000000088],[-96.634170999999981,80.357208000000128],[-96.604720999999984,80.362198000000035],[-96.592223999999987,80.362761999999975],[-96.440552000000025,80.356644000000017],[-96.408889999999985,80.353592000000106],[-96.363892000000021,80.342209000000082],[-96.254729999999938,80.335541000000092],[-96.232223999999974,80.334717000000126],[-96.216400000000021,80.338042999999971],[-96.221664000000033,80.343323000000055],[-96.255004999999983,80.354156000000046],[-96.277221999999938,80.359985000000052],[-96.280838000000017,80.36192299999999],[-96.268065999999919,80.367477000000008],[-96.240554999999972,80.37303200000008],[-96.080841000000021,80.387206999999989],[-96.047774999999888,80.389984000000084],[-95.978606999999954,80.388596000000007],[-95.732497999999907,80.372757000000036],[-95.697495000000004,80.369979999999941],[-95.636948000000018,80.364150999999936],[-95.61221299999994,80.360260000000039],[-95.566955999999948,80.352203000000088],[-95.542770000000019,80.345824999999934],[-95.513900999999976,80.340820000000065],[-95.48832699999997,80.338042999999971],[-95.460280999999952,80.336928999999998],[-95.440826000000015,80.338318000000015],[-95.436935000000005,80.341095000000109],[-95.453338999999971,80.373306000000014],[-95.458617999999944,80.378586000000041],[-95.468063000000029,80.38220200000012],[-95.498610999999983,80.383880999999974],[-95.564162999999951,80.385817999999972],[-95.624999999999943,80.391663000000108],[-95.653885000000002,80.396652000000074],[-95.694992000000013,80.406097000000102],[-95.721664000000033,80.412765999999976],[-95.852218999999991,80.454163000000051],[-95.957229999999925,80.504990000000134],[-96.020553999999947,80.567490000000078],[-96.027221999999995,80.574158000000068],[-96.024445000000014,80.578323000000069],[-96.006957999999884,80.582763999999941],[-95.979996000000028,80.584717000000069],[-95.941665999999941,80.58638000000002],[-95.671660999999972,80.584717000000069],[-95.536391999999978,80.590820000000008],[-95.498046999999872,80.59248400000007],[-95.423614999999984,80.593597000000102],[-95.318343999999911,80.590820000000008],[-95.246658000000025,80.58998100000008],[-95.172226000000023,80.59137000000004],[-95.132216999999969,80.593872000000147],[-95.067229999999995,80.601379000000065],[-95.030837999999903,80.603317000000004],[-94.99499499999996,80.603043000000071],[-94.962783999999942,80.599715999999944],[-94.902495999999985,80.586655000000007],[-94.846953999999926,80.574706999999989],[-94.823623999999995,80.569716999999969],[-94.77194199999991,80.561371000000065],[-94.752791999999943,80.559982000000048],[-94.696654999999964,80.55693100000002],[-94.658614999999998,80.555817000000047],[-94.554992999999911,80.55442800000003],[-94.374999999999943,80.557205000000124],[-94.230835000000013,80.556365999999969],[-94.010559000000001,80.54942299999999],[-93.968886999999995,80.540817000000061],[-93.968886999999995,80.536925999999994],[-93.966110000000015,80.530823000000055],[-93.958343999999954,80.52609300000006],[-93.89916999999997,80.519150000000025],[-93.866942999999992,80.518326000000059],[-93.839447000000007,80.518599999999992],[-93.786391999999978,80.525543000000027],[-93.783066000000019,80.529709000000082],[-93.790832999999964,80.534424000000115],[-93.810546999999985,80.541367000000093],[-93.894729999999868,80.565811000000053],[-93.949158000000011,80.578048999999908],[-93.973617999999931,80.581939999999975],[-94.005004999999983,80.585266000000047],[-94.093612999999948,80.593322999999998],[-94.308334000000002,80.606368999999972],[-94.437774999999988,80.605545000000006],[-94.457503999999915,80.600265999999976],[-94.484726000000023,80.598328000000038],[-94.524170000000026,80.598328000000038],[-94.543335000000013,80.599715999999944],[-94.561935000000005,80.605819999999994],[-94.660278000000005,80.651382000000012],[-94.669448999999929,80.65776100000005],[-94.672775000000001,80.663879000000009],[-94.670273000000009,80.669708000000014],[-94.662215999999944,80.675262000000032],[-94.650283999999999,80.681366000000082],[-94.628326000000015,80.685806000000071],[-94.596953999999982,80.690536000000122],[-94.553604000000007,80.694977000000051],[-94.514724999999942,80.696365000000128],[-94.439163000000008,80.697479000000101],[-94.331116000000009,80.693863000000022],[-94.231673999999884,80.692200000000128],[-94.199722000000008,80.693039000000056],[-94.117492999999968,80.698593000000074],[-94.088332999999977,80.701660000000004],[-94.075561999999991,80.706099999999992],[-94.076950000000011,80.709152000000131],[-94.086394999999982,80.713043000000027],[-94.108337000000006,80.718872000000033],[-94.140288999999996,80.721924000000115],[-94.304442999999935,80.733871000000079],[-94.423049999999876,80.734985000000052],[-94.449158000000011,80.730270000000019],[-94.491104000000007,80.726928999999984],[-94.549438000000009,80.724991000000045],[-94.65972899999997,80.72526600000009],[-94.694716999999969,80.726653999999996],[-94.722778000000005,80.728592000000106],[-94.895554000000004,80.747757000000092],[-95.035827999999867,80.768326000000002],[-95.037505999999951,80.771378000000141],[-95.03694200000001,80.776093000000003],[-95.033889999999985,80.778046000000131],[-95.025283999999999,80.801651000000106],[-95.243056999999965,80.787766000000033],[-95.282501000000025,80.786101999999971],[-95.334166999999923,80.788879000000065],[-95.442764000000011,80.79971299999994],[-95.475554999999986,80.803040000000067],[-95.501113999999973,80.806931000000134],[-95.524170000000026,80.812484999999981],[-95.534164000000033,80.818878000000097],[-95.526397999999972,80.833328000000051],[-95.500838999999871,80.838318000000072],[-95.44027699999998,80.846100000000035],[-95.371384000000035,80.853316999999947],[-95.212783999999999,80.868317000000104],[-95.170837000000006,80.875809000000061],[-95.150832999999921,80.881088000000034],[-95.146666999999923,80.883881000000031],[-95.170546999999999,80.884720000000016],[-95.300827000000027,80.885269000000108],[-95.41332999999986,80.885269000000108],[-95.468886999999995,80.890273999999977],[-95.481383999999991,80.894714000000022],[-95.484726000000023,80.899155000000121],[-95.474166999999966,80.904434000000094],[-95.460280999999952,80.909713999999951],[-95.422775000000001,80.920821999999987],[-95.334166999999923,80.934708000000114],[-95.311934999999949,80.939147999999989],[-95.283614999999941,80.949996999999996],[-95.267501999999979,80.96138000000002],[-95.259734999999921,80.973602000000028],[-95.257506999999976,80.979431000000034],[-95.259170999999981,80.984984999999995],[-95.255004999999983,80.996643000000063],[-95.241104000000007,81.006103999999993],[-95.220839999999896,81.011382999999967],[-95.183060000000012,81.019714000000079],[-94.943329000000006,81.048874000000126],[-94.814163000000008,81.054153000000099],[-94.663054999999986,81.048598999999911],[-94.572783999999899,81.038879000000009],[-94.546111999999994,81.033325000000048],[-94.493880999999988,81.017487000000017],[-94.495543999999995,80.995819000000097],[-94.504181000000017,80.990265000000079],[-94.509170999999981,80.984711000000061],[-94.508057000000008,80.979431000000034],[-94.492767000000015,80.972763000000043],[-94.472778000000005,80.969146999999964],[-94.434158000000025,80.965546000000131],[-94.408614999999941,80.965546000000131],[-94.365554999999972,80.968872000000147],[-94.344726999999978,80.974152000000061],[-94.330001999999865,80.979706000000022],[-94.143616000000009,81.015823000000012],[-94.071670999999924,81.024993999999936],[-93.908051,81.039429000000041],[-93.906386999999995,81.040543000000071],[-94.013335999999981,81.053588999999988],[-94.042220999999927,81.055542000000116],[-94.18249499999996,81.068054000000075],[-94.328612999999962,81.089432000000045],[-94.357498000000021,81.09526100000005],[-94.36221299999994,81.100540000000024],[-94.353607000000011,81.106093999999985],[-94.345550999999944,81.109421000000111],[-94.313048999999978,81.115539999999953],[-94.278335999999967,81.117203000000075],[-94.255279999999971,81.115539999999953],[-94.230835000000013,81.110535000000084],[-94.214721999999881,81.106369000000029],[-94.195830999999941,81.10026600000009],[-94.154723999999987,81.093872000000033],[-94.130279999999971,81.09275800000006],[-93.989715999999987,81.092484000000127],[-93.960830999999928,81.094147000000078],[-93.935271999999941,81.098327999999981],[-93.907227000000034,81.101653999999996],[-93.866394000000014,81.103043000000014],[-93.795273000000009,81.099426000000051],[-93.689437999999996,81.093048000000067],[-93.517226999999878,81.084426999999948],[-93.299987999999928,81.079711999999915],[-93.255844000000025,81.082764000000054],[-93.163054999999929,81.091934000000094],[-93.152221999999938,81.094711000000018],[-93.123321999999916,81.115265000000136],[-93.095550999999944,81.154160000000104],[-93.091674999999952,81.159988000000055],[-93.095839999999953,81.165268000000083],[-93.121108999999933,81.182754999999929],[-93.259734999999978,81.212203999999929],[-93.419448999999929,81.219986000000063],[-93.514724999999999,81.217758000000117],[-93.687499999999943,81.21026599999999],[-93.728333000000021,81.207214000000079],[-93.852218999999934,81.203049000000078],[-93.928878999999995,81.203873000000044],[-94.031386999999938,81.208878000000084],[-94.166397000000018,81.218048000000124],[-94.200561999999877,81.221100000000035],[-94.282227000000034,81.231094000000098],[-94.302489999999977,81.234984999999938],[-94.381667999999991,81.25082400000008],[-94.388061999999991,81.254990000000134],[-94.391388000000006,81.261108000000092],[-94.386123999999938,81.272766000000104],[-94.370270000000005,81.284714000000008],[-94.278610000000015,81.341934000000037],[-94.268616000000009,81.346099999999922],[-94.240829000000019,81.350814999999955],[-94.200561999999877,81.355545000000006],[-94.153884999999946,81.359711000000118],[-94.06806899999998,81.363311999999951],[-94.035278000000005,81.363311999999951],[-93.789444000000003,81.348038000000088],[-93.755004999999926,81.344711000000132],[-93.694442999999922,81.337494000000049],[-93.665833000000021,81.332763999999997],[-93.638900999999976,81.327209000000096],[-93.621933000000013,81.321655000000078],[-93.611389000000031,81.316376000000105],[-93.594451999999933,81.31053199999991],[-93.553329000000019,81.305542000000059],[-93.515288999999996,81.31053199999991],[-93.494994999999903,81.314697000000081],[-93.483063000000016,81.319716999999969],[-93.483611999999994,81.325272000000041],[-93.488051999999982,81.330551000000014],[-93.533324999999991,81.348602000000028],[-93.560546999999929,81.367751999999996],[-93.564712999999927,81.376648000000102],[-93.550551999999925,81.38108799999992],[-93.517501999999979,81.38499500000006],[-93.340285999999992,81.372208000000057],[-93.177490000000034,81.358597000000088],[-93.01556399999987,81.341370000000097],[-92.928054999999972,81.330826000000059],[-92.831680000000006,81.317764000000011],[-92.727782999999931,81.305542000000059]],[[-91.71833799999996,81.549149000000057],[-91.761672999999973,81.548035000000084],[-91.801391999999964,81.548599000000024],[-91.837509000000011,81.551086000000112],[-91.863616999999977,81.555251999999996],[-91.951110999999912,81.584152000000017],[-91.958617999999944,81.588882000000069],[-91.960555999999997,81.594986000000119],[-91.956115999999952,81.600815000000125],[-91.932494999999903,81.605819999999994],[-91.903884999999946,81.608322000000044],[-91.868332000000009,81.608597000000088],[-91.823897999999986,81.606934000000138],[-91.789444000000003,81.603317000000004],[-91.724715999999944,81.596100000000092],[-91.597778000000005,81.580550999999957],[-91.582229999999925,81.578049000000078],[-91.619995000000017,81.562484999999981],[-91.643615999999895,81.557480000000112],[-91.673614999999984,81.552765000000079],[-91.71833799999996,81.549149000000057]],[[-78.365828999999962,82.883605999999986],[-78.383330999999998,82.883605999999986],[-78.419448999999986,82.899155000000064],[-78.417220999999927,82.935532000000023],[-78.414718999999934,82.941925000000026],[-78.405838000000017,82.947754000000032],[-78.389724999999885,82.953323000000012],[-78.361663999999962,82.958603000000096],[-78.323333999999875,82.961929000000112],[-78.273894999999868,82.963043000000084],[-78.223617999999988,82.961104999999975],[-78.145279000000016,82.954712000000029],[-78.119720000000029,82.94859299999996],[-78.116942999999992,82.942200000000014],[-78.122498000000007,82.937194999999974],[-78.150833000000034,82.926925999999924],[-78.212783999999999,82.911377000000016],[-78.336394999999982,82.888046000000145],[-78.365828999999962,82.883605999999986]],[[-70.111937999999952,83.109421000000111],[-70.00140399999998,83.10775799999999],[-69.812209999999993,83.112197999999978],[-69.74888599999997,83.11192299999999],[-69.701675000000023,83.110535000000084],[-69.665008999999998,83.108322000000101],[-69.659164000000033,83.103043000000127],[-69.662215999999944,83.074158000000068],[-69.664168999999958,83.070830999999941],[-69.680557000000022,83.064986999999974],[-69.716109999999958,83.061096000000077],[-69.757506999999976,83.057755000000043],[-69.773894999999982,83.051926000000037],[-69.775283999999942,83.047760000000096],[-69.744445999999982,83.04553199999998],[-69.671936000000017,83.041091999999935],[-69.636123999999995,83.039703000000145],[-69.471389999999985,83.038879000000009],[-69.451110999999969,83.035812000000078],[-69.513335999999981,83.019714000000022],[-69.536117999999988,83.014435000000049],[-69.565001999999936,83.009995000000004],[-69.559722999999963,82.994141000000127],[-69.233062999999959,83.010268999999937],[-69.156386999999938,83.017487000000131],[-69.120543999999995,83.021652000000131],[-69.097777999999948,83.026657],[-69.06361400000003,83.038040000000024],[-69.015563999999927,83.040817000000118],[-68.983063000000016,83.036652000000117],[-68.975280999999995,83.028320000000122],[-68.973891999999978,83.015549000000021],[-68.977218999999991,83.001663000000065],[-68.902785999999935,82.988312000000064],[-68.708344000000011,82.978043000000071],[-68.665008999999941,82.980270000000132],[-68.630829000000006,82.985259999999982],[-68.626663000000008,82.986923000000104],[-68.579726999999991,82.996933000000013],[-68.550551999999925,83.001663000000065],[-68.514724999999999,83.005554000000132],[-68.46665999999999,83.008040999999992],[-68.404723999999987,83.008330999999998],[-68.358046999999885,83.006103999999937],[-68.316101000000003,83.003326000000129],[-68.190826000000015,82.994705000000067],[-68.154175000000009,82.991088999999988],[-68.142226999999934,82.983597000000032],[-68.155272999999966,82.972487999999998],[-68.177779999999984,82.959991000000002],[-68.188599000000011,82.946091000000081],[-68.176391999999964,82.938873000000058],[-68.145554000000004,82.934981999999991],[-68.09973100000002,82.933594000000085],[-68.06806899999998,82.935257000000036],[-68.054169000000002,82.938873000000058],[-67.881667999999934,82.958878000000084],[-67.666945999999996,82.969711000000075],[-67.61082499999992,82.96887200000009],[-67.544158999999979,82.962203999999929],[-67.50140399999998,82.957214000000079],[-67.499999999999943,82.957016000000067],[-67.476104999999961,82.953598000000056],[-67.410003999999958,82.946640000000059],[-67.327788999999939,82.940811000000053],[-67.241669000000002,82.936919999999986],[-67.196655000000021,82.93609600000002],[-67.136123999999938,82.936646000000053],[-67.116942999999992,82.941086000000041],[-67.122771999999998,82.949142000000109],[-67.121658000000025,82.955261000000121],[-67.113327000000027,82.959427000000062],[-67.092223999999931,82.961104999999975],[-67.041107000000011,82.959717000000069],[-66.964721999999995,82.954163000000051],[-66.939986999999917,82.950546000000088],[-66.938323999999909,82.947754000000032],[-66.818893000000003,82.935257000000036],[-66.653060999999866,82.936371000000008],[-66.330001999999922,82.933868000000018],[-66.301391999999964,82.93193100000002],[-66.299437999999952,82.92942800000003],[-66.347503999999958,82.898041000000092],[-66.369155999999919,82.888321000000019],[-66.81138599999997,82.815262000000018],[-66.841110000000015,82.810806000000071],[-66.876663000000008,82.807205000000067],[-66.959732000000031,82.800812000000064],[-67.138335999999981,82.78387500000008],[-67.31527699999998,82.764709000000039],[-67.386123999999995,82.757767000000115],[-67.45777899999996,82.752212999999927],[-67.499999999999943,82.749611000000129],[-67.597778000000005,82.743590999999924],[-67.644729999999925,82.741652999999985],[-67.799164000000019,82.731658999999979],[-67.914168999999958,82.719986000000119],[-68.041381999999999,82.703873000000101],[-68.081679999999949,82.700821000000019],[-68.134170999999981,82.698593000000017],[-68.234726000000023,82.696640000000116],[-68.276108000000022,82.69470199999995],[-68.356658999999979,82.688034000000016],[-68.424437999999896,82.679703000000075],[-68.633621000000005,82.648605000000089],[-68.655838000000017,82.643600000000049],[-68.672225999999966,82.637772000000098],[-68.667220999999984,82.632477000000051],[-68.642501999999979,82.628585999999984],[-68.573623999999938,82.628860000000088],[-68.465011999999945,82.639435000000049],[-68.424437999999896,82.641937000000098],[-68.325835999999981,82.645537999999988],[-67.934998000000007,82.658324999999991],[-67.812774999999988,82.659149000000127],[-67.606658999999922,82.655548000000067],[-67.518065999999862,82.65109300000006],[-67.47084000000001,82.652205999999978],[-67.430557000000022,82.655548000000067],[-67.381942999999978,82.66276600000009],[-67.328063999999983,82.677199999999914],[-67.275283999999999,82.68609600000002],[-67.245834000000002,82.689697000000081],[-67.210830999999928,82.693587999999977],[-66.997771999999998,82.712203999999986],[-66.900283999999999,82.719437000000028],[-66.670837000000006,82.740265000000079],[-66.657227000000034,82.744430999999963],[-66.638335999999981,82.748871000000008],[-66.122771999999998,82.813034000000073],[-66.086670000000026,82.816665999999998],[-65.810271999999941,82.840820000000122],[-65.767776000000026,82.843048000000067],[-65.724166999999909,82.843597000000045],[-65.546660999999915,82.838043000000027],[-65.467772999999852,82.833327999999995],[-65.454726999999991,82.829162999999994],[-65.481673999999998,82.816665999999998],[-65.495834000000002,82.8119200000001],[-65.527221999999938,82.797484999999938],[-65.518065999999976,82.789978000000019],[-65.511123999999995,82.786652000000004],[-65.458617999999888,82.779433999999981],[-65.430832000000009,82.777481000000023],[-65.197494999999947,82.764160000000061],[-65.164444000000003,82.763046000000088],[-65.154723999999987,82.765274000000034],[-65.167496000000028,82.769989000000066],[-65.259170999999924,82.781662000000097],[-65.327498999999989,82.789154000000053],[-65.339721999999938,82.791930999999977],[-65.353057999999976,82.797211000000004],[-65.34445199999999,82.801926000000037],[-65.221938999999963,82.832764000000054],[-65.102782999999931,82.848037999999974],[-65.110001000000011,82.852767999999969],[-65.128052000000025,82.856094000000041],[-65.172775000000001,82.858321999999987],[-65.272781000000009,82.861099000000081],[-65.30749499999996,82.86554000000001],[-65.289168999999958,82.873306000000014],[-65.258057000000008,82.877472000000125],[-65.104720999999984,82.891663000000108],[-64.982223999999974,82.901093000000003],[-64.884734999999921,82.905823000000055],[-64.83555599999994,82.906937000000028],[-64.729720999999927,82.904160000000104],[-64.68472300000002,82.901657000000114],[-64.655562999999972,82.896942000000081],[-64.664168999999902,82.89027399999992],[-64.678604000000007,82.884720000000129],[-64.713897999999915,82.876372999999944],[-64.751953000000015,82.875259000000142],[-64.790558000000033,82.875809000000004],[-64.829726999999934,82.877762000000132],[-64.890288999999939,82.878036000000066],[-64.922501000000011,82.876372999999944],[-64.936934999999949,82.871368000000075],[-64.923614999999984,82.864699999999914],[-64.883895999999993,82.861649000000114],[-64.839995999999985,82.861923000000047],[-64.746384000000035,82.860535000000141],[-64.723052999999993,82.856369000000029],[-64.710555999999997,82.852478000000133],[-64.713897999999915,82.846375000000023],[-64.722777999999948,82.840820000000122],[-64.742217999999923,82.834427000000005],[-64.750838999999928,82.828323000000125],[-64.737777999999992,82.822220000000016],[-64.706954999999994,82.813034000000073],[-64.64805599999994,82.799713000000111],[-64.478607000000011,82.764435000000105],[-64.445266999999944,82.761932000000115],[-64.418059999999912,82.761382999999967],[-64.412780999999939,82.762206999999933],[-64.398055999999997,82.766936999999984],[-64.328888000000006,82.787201000000096],[-64.18638599999997,82.819153000000085],[-64.139998999999989,82.828049000000021],[-64.103058000000033,82.831665000000044],[-64.059722999999963,82.833327999999995],[-63.972770999999966,82.834991000000116],[-63.672775000000001,82.834717000000012],[-63.623610999999926,82.833603000000039],[-63.529723999999987,82.828323000000125],[-63.490836999999942,82.825272000000098],[-63.43472300000002,82.816665999999998],[-63.389167999999927,82.804977000000065],[-63.382499999999993,82.798325000000034],[-63.382216999999912,82.767761000000121],[-63.397223999999994,82.761382999999967],[-63.479163999999855,82.739425999999924],[-63.510284000000013,82.732483000000116],[-63.525832999999977,82.730545000000006],[-63.590836000000024,82.733047000000056],[-63.666106999999954,82.731368999999972],[-63.819449999999961,82.721374999999966],[-63.834998999999982,82.719147000000021],[-63.850280999999995,82.715820000000065],[-63.764450000000011,82.715271000000087],[-63.67888599999992,82.717758000000003],[-63.65166499999998,82.714996000000099],[-63.540001000000018,82.694427000000132],[-63.502040999999906,82.682762000000082],[-63.422226000000023,82.665543000000014],[-63.286948999999993,82.654434000000094],[-63.254447999999968,82.650269000000094],[-63.232215999999994,82.64498900000001],[-63.226105000000018,82.640273999999977],[-63.235557999999855,82.633330999999998],[-63.255835999999988,82.627197000000137],[-63.287223999999981,82.624985000000095],[-63.339721999999995,82.623596000000077],[-63.376388999999961,82.619980000000055],[-63.380829000000006,82.615265000000022],[-63.369445999999982,82.61053499999997],[-63.347495999999978,82.604980000000069],[-63.315001999999936,82.601089000000002],[-63.272223999999937,82.598602000000142],[-63.229720999999984,82.597214000000008],[-63.11361699999992,82.597487999999942],[-63.071113999999966,82.59637500000008],[-63.033614999999941,82.594436999999971],[-62.99639099999996,82.59027100000003],[-62.96416499999998,82.585541000000035],[-62.942496999999946,82.5816650000001],[-62.926108999999997,82.576096000000121],[-62.930557000000022,82.56999200000007],[-62.960555999999997,82.557754999999929],[-63.059440999999936,82.511932000000002],[-63.08943899999997,82.466385000000116],[-63.119994999999903,82.463608000000022],[-63.243889000000024,82.457764000000054],[-63.285004000000015,82.454987000000131],[-63.346106999999904,82.449142000000052],[-63.366111999999987,82.444977000000051],[-63.369995000000017,82.438873000000001],[-63.328613000000018,82.437759000000028],[-63.277221999999938,82.439148000000046],[-63.148887999999999,82.446929999999952],[-63.071670999999981,82.451935000000049],[-63.015838999999971,82.459716999999955],[-62.990836999999885,82.467209000000082],[-62.920836999999949,82.491089000000102],[-62.823616000000015,82.504440000000045],[-62.678336999999999,82.516098000000056],[-62.553328999999962,82.524428999999998],[-62.506667999999877,82.526657000000114],[-62.286948999999993,82.528046000000131],[-62.24500299999994,82.528046000000131],[-62.171669000000009,82.525542999999971],[-62.171386999999982,82.521378000000141],[-62.322776999999974,82.511108000000036],[-62.333060999999987,82.504166000000112],[-62.353057999999976,82.486374000000069],[-62.352782999999931,82.481093999999985],[-62.300835000000006,82.482483000000002],[-62.264449999999954,82.485809000000017],[-62.21566799999988,82.491928000000087],[-62.212497999999869,82.495766000000003],[-62.098052999999936,82.502212999999983],[-61.884170999999981,82.492752000000053],[-61.691665999999998,82.48803700000002],[-61.582503999999972,82.482483000000002],[-61.530829999999867,82.478317000000118],[-61.5,82.474152000000117],[-61.448607999999979,82.464431999999988],[-61.326110999999969,82.439697000000137],[-61.28556100000003,82.430267000000072],[-61.170279999999877,82.395264000000111],[-61.141113000000018,82.383041000000048],[-61.131385999999907,82.377472000000068],[-61.11222099999992,82.363876000000062],[-61.098609999999951,82.350266000000033],[-61.076392999999996,82.320831000000112],[-61.078613000000018,82.301086000000112],[-61.084723999999994,82.293593999999985],[-61.107779999999934,82.267761000000064],[-61.130359999999996,82.252937000000088],[-61.135558999999944,82.247482000000105],[-61.15694400000001,82.235259999999982],[-61.193328999999949,82.223602000000085],[-61.281112999999948,82.202774000000034],[-61.306389000000024,82.197205000000054],[-61.388054000000011,82.18331900000004],[-61.43332700000002,82.176376000000062],[-61.463614999999891,82.172484999999995],[-61.534171999999899,82.165543000000071],[-61.599441999999954,82.160812000000135],[-61.804442999999992,82.146652000000074],[-61.86999499999996,82.106644000000017],[-61.885001999999986,82.100539999999967],[-62.077781999999956,82.053588999999988],[-62.126944999999978,82.043869000000086],[-62.25417299999998,82.019989000000066],[-62.278885000000002,82.015822999999955],[-62.313056999999958,82.01249700000011],[-62.356948999999929,82.010268999999994],[-62.513618000000008,82.004715000000147],[-62.570281999999963,81.976089000000059],[-62.944999999999993,81.922211000000118],[-63.040557999999976,81.909714000000122],[-63.292502999999897,81.877761999999962],[-63.387221999999952,81.867752000000053],[-63.656104999999968,81.837494000000106],[-63.715003999999965,81.820831000000055],[-63.761116000000015,81.811645999999996],[-63.817223000000013,81.804703000000018],[-63.849723999999924,81.801086000000055],[-63.925003000000004,81.795258000000103],[-63.962775999999963,81.792480000000126],[-64.010009999999966,81.790268000000083],[-64.053054999999915,81.789978000000019],[-64.086945000000014,81.791930999999977],[-64.111663999999962,81.794983000000116],[-64.131667999999991,81.799149],[-64.142226999999934,81.803040000000067],[-64.177779999999984,81.810532000000023],[-64.207503999999972,81.81442300000009],[-64.271666999999923,81.821655000000021],[-64.301392000000021,81.824157999999954],[-64.325287000000003,81.824707000000103],[-64.323623999999995,81.819153000000085],[-64.308043999999995,81.814697000000024],[-64.253066999999987,81.806091000000094],[-64.232772999999952,81.800537000000077],[-64.12388599999997,81.768326000000002],[-64.118057000000022,81.764435000000105],[-64.134734999999921,81.754715000000033],[-64.207779000000016,81.74192800000003],[-64.355269999999962,81.726379000000122],[-64.472503999999958,81.721374999999966],[-64.629439999999931,81.722488000000055],[-64.720001000000025,81.723877000000073],[-64.767776000000026,81.725815000000011],[-64.801665999999955,81.728317000000061],[-64.812209999999993,81.730820000000051],[-64.833892999999932,81.738876000000118],[-64.839721999999938,81.742203000000075],[-64.885559000000001,81.750823999999966],[-64.910004000000015,81.752777000000094],[-64.962218999999948,81.752212999999983],[-65.21665999999999,81.74552900000009],[-65.337508999999955,81.737761999999975],[-65.409728999999913,81.728317000000061],[-65.631377999999927,81.70248400000014],[-65.668334999999956,81.700821000000019],[-65.725554999999929,81.701660000000004],[-65.773330999999985,81.702773999999977],[-65.924437999999952,81.70138500000013],[-66.012221999999952,81.696930000000123],[-66.038605000000018,81.692474000000004],[-66.042220999999984,81.690536000000066],[-66.030288999999925,81.684982000000105],[-65.991378999999995,81.682755000000043],[-65.821944999999971,81.684417999999937],[-65.612503000000004,81.680817000000104],[-65.487777999999935,81.687485000000038],[-65.404175000000009,81.69081100000011],[-65.352492999999868,81.691925000000083],[-65.336670000000026,81.688034000000016],[-65.370833999999945,81.678863999999976],[-65.402221999999995,81.674423000000047],[-65.523620999999991,81.659714000000008],[-65.618056999999908,81.648605000000089],[-65.789443999999946,81.632202000000063],[-65.871657999999911,81.627197000000024],[-65.910278000000005,81.629699999999957],[-65.926391999999964,81.634154999999964],[-65.92721599999993,81.635543999999982],[-65.924437999999952,81.639708999999982],[-65.92721599999993,81.645827999999995],[-65.943328999999892,81.650543000000027],[-65.982223999999917,81.65277100000003],[-66.024718999999948,81.653046000000018],[-66.042770000000019,81.651657],[-66.064712999999983,81.647765999999933],[-66.085555999999997,81.642761000000064],[-66.101943999999946,81.637207000000103],[-66.140838999999971,81.620529000000033],[-66.172501000000011,81.618042000000116],[-66.218886999999938,81.616928000000144],[-66.355270000000019,81.617477000000122],[-66.393889999999942,81.619705000000067],[-66.439712999999983,81.62692300000009],[-66.478333000000021,81.628585999999984],[-66.575561999999934,81.626082999999994],[-66.727492999999924,81.6202550000001],[-66.804992999999854,81.615814],[-66.896392999999932,81.611923000000104],[-67.15695199999999,81.608032000000037],[-67.509170999999924,81.60054000000008],[-67.55972300000002,81.599152000000004],[-67.766662999999994,81.593047999999953],[-67.792770000000019,81.589706000000035],[-68.111389000000031,81.56303400000013],[-68.156661999999983,81.56109600000002],[-68.231383999999991,81.561371000000008],[-68.274718999999948,81.562759000000085],[-68.309433000000013,81.565536000000009],[-68.330565999999919,81.56860400000005],[-68.352492999999981,81.573044000000039],[-68.410277999999892,81.588043000000084],[-68.459731999999974,81.597487999999998],[-68.661391999999978,81.633330999999998],[-68.715285999999992,81.642211999999972],[-68.976944000000003,81.684417999999937],[-69.058883999999921,81.697479000000101],[-69.139998999999989,81.70887799999997],[-69.176392000000021,81.712494000000049],[-69.247222999999963,81.71748400000007],[-69.291381999999999,81.718871999999976],[-69.299438000000009,81.717209000000082],[-69.306655999999975,81.714431999999988],[-69.291381999999999,81.707763999999997],[-69.268065999999976,81.70248400000014],[-69.214172000000019,81.695251000000098],[-69.123610999999983,81.683868000000132],[-69.005279999999914,81.667480000000069],[-68.902221999999995,81.651382000000012],[-68.624709999999993,81.604430999999977],[-68.449158000000011,81.570831000000055],[-68.370833999999888,81.553589000000045],[-68.357772999999952,81.548325000000091],[-68.352492999999981,81.541656000000046],[-68.37332200000003,81.537766000000033],[-68.407500999999968,81.533874999999966],[-68.504455999999948,81.532211000000132],[-68.551391999999964,81.532760999999994],[-68.637512000000015,81.535538000000088],[-68.715285999999992,81.539703000000088],[-68.810821999999916,81.548599000000024],[-68.848891999999978,81.549149000000057],[-68.856948999999986,81.547760000000039],[-68.851944000000003,81.541656000000046],[-68.839172000000019,81.536925999999994],[-68.813048999999978,81.533325000000104],[-68.777495999999928,81.529709000000082],[-68.579452999999887,81.514434999999992],[-68.536666999999966,81.513321000000019],[-68.446654999999964,81.517487000000074],[-68.376098999999954,81.522766000000047],[-68.285827999999924,81.526931999999988],[-68.091949,81.529160000000104],[-68.051101999999958,81.53054800000001],[-68.011123999999938,81.533051],[-67.910003999999958,81.542206000000078],[-67.819732999999871,81.546936000000073],[-67.724716000000001,81.551086000000112],[-67.383651999999984,81.56088299999999],[-67.182495000000017,81.564697000000081],[-67.150283999999942,81.564987000000087],[-67.107773000000009,81.564987000000087],[-67.064712999999983,81.562759000000085],[-66.859726000000023,81.546646000000067],[-66.791381999999885,81.540817000000061],[-66.766112999999962,81.537491000000045],[-66.629990000000021,81.518051000000014],[-66.608611999999994,81.512772000000041],[-66.62388599999997,81.506378000000041],[-66.741104000000007,81.491928000000087],[-66.887787000000003,81.480545000000063],[-66.962783999999942,81.474991000000102],[-67.043334999999956,81.469711000000018],[-67.248336999999992,81.44999700000011],[-67.457503999999972,81.423035000000027],[-67.753890999999896,81.391663000000051],[-67.818344000000025,81.385268999999994],[-67.994719999999973,81.368042000000003],[-68.244720000000029,81.33998100000008],[-68.355835000000013,81.32388300000008],[-68.429169000000002,81.31164600000011],[-68.486938000000009,81.303863999999976],[-68.618057000000022,81.290543000000014],[-68.796951000000035,81.275269000000094],[-69.028609999999958,81.258606000000043],[-69.319457999999997,81.260268999999937],[-69.34056099999998,81.263885000000016],[-69.357773000000009,81.268326000000116],[-69.362777999999992,81.268875000000037],[-69.391388000000006,81.270537999999988],[-69.426940999999943,81.26998900000001],[-69.455565999999976,81.265823000000125],[-69.468886999999995,81.259995000000004],[-69.46305799999999,81.253326000000129],[-69.436934999999949,81.249145999999939],[-69.366652999999985,81.246368000000132],[-69.319457999999997,81.243591000000038],[-69.312209999999993,81.240540000000067],[-69.323897999999929,81.238037000000077],[-69.541671999999949,81.212493999999936],[-69.911941999999954,81.182480000000112],[-69.999434999999949,81.179977000000122],[-70.158339999999953,81.181366000000139],[-70.206389999999942,81.179703000000018],[-70.210007000000019,81.173874000000012],[-70.126098999999954,81.165543000000127],[-70.050551999999982,81.161652000000061],[-69.960281000000009,81.160538000000088],[-69.907227000000034,81.161652000000061],[-69.864440999999999,81.16415400000011],[-69.760009999999966,81.173035000000027],[-69.638061999999991,81.177475000000072],[-69.647506999999962,81.172484999999995],[-69.831954999999994,81.137206999999989],[-69.887786999999946,81.129150000000038],[-69.953063999999983,81.122208000000114],[-69.976943999999946,81.118866000000025],[-70.013061999999934,81.109146000000123],[-70.025283999999999,81.102767999999969],[-70.023330999999985,81.100815000000011],[-69.995269999999948,81.099426000000051],[-69.955565999999976,81.099426000000051],[-69.922225999999966,81.102203000000145],[-69.832229999999981,81.111649000000114],[-69.632492000000013,81.139160000000118],[-69.609726000000023,81.14387499999998],[-69.591675000000009,81.14888000000002],[-69.541671999999949,81.164428999999927],[-69.528335999999911,81.169434000000024],[-69.463333000000034,81.183044000000052],[-69.430556999999965,81.187194999999974],[-69.359436000000017,81.193313999999987],[-68.876099000000011,81.231094000000098],[-68.760833999999932,81.239426000000037],[-68.37388599999997,81.266662999999994],[-68.246947999999975,81.272766000000104],[-68.116652999999928,81.280273000000079],[-68.052779999999984,81.286102000000085],[-67.887221999999952,81.30304000000001],[-67.823623999999938,81.310257000000092],[-67.791107000000011,81.315536000000066],[-67.690826000000015,81.329437000000041],[-67.593062999999972,81.340271000000087],[-67.356658999999979,81.363601999999958],[-67.24749799999995,81.371918000000051],[-67.124160999999901,81.379700000000014],[-66.990554999999915,81.385544000000039],[-66.621383999999978,81.413879000000065],[-66.365828999999962,81.434708000000001],[-66.290282999999988,81.440262000000018],[-66.16972399999986,81.447754000000145],[-66.134170999999924,81.450821000000076],[-66.050827000000027,81.459152000000131],[-65.985549999999989,81.468048000000067],[-65.831679999999949,81.484711000000004],[-65.724715999999944,81.493866000000025],[-65.643616000000009,81.498871000000065],[-65.557495000000017,81.503052000000139],[-65.466400000000021,81.506378000000041],[-65.252791999999943,81.517212000000086],[-65.002791999999999,81.530823000000055],[-64.612503000000004,81.544982999999945],[-64.566390999999953,81.545532000000094],[-64.537780999999995,81.543593999999985],[-64.528060999999923,81.541656000000046],[-64.517501999999979,81.537491000000045],[-64.444152999999972,81.490814000000114],[-64.436385999999914,81.479431000000091],[-64.451110999999969,81.466934000000094],[-64.491942999999992,81.448868000000118],[-64.508620999999948,81.441924999999969],[-64.520844000000011,81.4369200000001],[-64.554169000000002,81.425812000000064],[-64.616652999999928,81.404984000000013],[-64.658889999999985,81.393050999999957],[-64.735274999999945,81.374146000000053],[-64.808608999999933,81.360535000000084],[-64.855835000000013,81.352768000000083],[-64.99499499999996,81.333328000000108],[-65.060271999999998,81.326096000000007],[-65.168059999999969,81.309982000000048],[-65.286391999999978,81.287201000000039],[-65.323623999999995,81.278046000000018],[-65.441375999999934,81.256378000000041],[-65.493057000000022,81.250549000000035],[-65.527785999999992,81.247481999999934],[-65.571670999999981,81.244980000000055],[-65.747771999999998,81.235809000000131],[-65.941101000000003,81.226379000000065],[-65.980559999999912,81.22387700000013],[-66.010284000000013,81.220261000000107],[-66.199721999999895,81.183868000000018],[-66.244445999999868,81.17442299999999],[-66.264449999999954,81.169434000000024],[-66.418335000000013,81.128860000000032],[-66.438048999999978,81.12359600000002],[-66.482772999999952,81.106934000000081],[-66.50418099999996,81.095534999999984],[-66.509445000000028,81.08859300000006],[-66.529723999999987,81.076096000000064],[-66.544723999999974,81.070540999999992],[-66.603333000000021,81.05525200000011],[-66.685821999999973,81.035812000000135],[-66.753341999999975,81.021927000000005],[-66.921111999999994,80.991089000000045],[-67.164443999999946,80.948593000000017],[-67.208618000000001,80.941925000000026],[-67.279175000000009,80.93553200000008],[-67.309158000000025,80.934418000000107],[-67.349441999999954,80.936371000000065],[-67.440825999999959,80.936646000000053],[-67.562209999999993,80.93553200000008],[-67.591384999999946,80.933044000000109],[-67.606658999999922,80.929977000000008],[-67.603607000000011,80.92442299999999],[-67.588333000000034,80.913878999999952],[-67.567779999999971,80.908599999999979],[-67.543335000000013,80.90415999999999],[-67.53083799999996,80.897491000000116],[-67.539992999999981,80.891098000000113],[-67.583618000000001,80.876648000000046],[-67.634445000000028,80.860809000000074],[-67.653609999999958,80.856369000000086],[-67.863891999999964,80.834152000000017],[-67.910278000000005,80.8119200000001],[-67.965835999999911,80.797484999999995],[-68.011397999999986,80.788315000000125],[-68.065552000000025,80.779160000000104],[-68.089447000000007,80.776093000000003],[-68.138335999999981,80.772491000000002],[-68.202788999999939,80.765823000000069],[-68.225280999999939,80.761383000000023],[-68.672500999999897,80.66693099999992],[-68.738891999999908,80.647217000000012],[-68.814712999999983,80.628586000000041],[-68.952498999999875,80.603043000000071],[-69.146666999999923,80.529709000000082],[-69.171111999999994,80.517487000000131],[-69.273055999999997,80.463882000000012],[-69.289168999999958,80.451660000000061],[-69.291381999999999,80.444138000000123],[-69.290558000000033,80.437194999999917],[-69.297774999999945,80.424698000000149],[-69.305557000000022,80.418319999999994],[-69.317504999999983,80.412490999999989],[-69.333892999999932,80.406647000000135],[-69.384734999999921,80.391937000000041],[-69.427489999999977,80.382751000000042],[-69.479720999999984,80.37553400000013],[-69.551102000000014,80.366379000000109],[-69.596389999999872,80.361099000000024],[-69.729720999999927,80.352767999999969],[-69.982772999999895,80.344986000000006],[-70.072783999999956,80.344437000000028],[-70.218886999999938,80.346374999999966],[-70.284438999999907,80.351089000000115],[-70.305266999999958,80.356093999999985],[-70.310821999999973,80.363037000000134],[-70.285827999999981,80.372482000000048],[-70.256393000000003,80.381362999999965],[-70.244155999999919,80.386658000000011],[-70.227782999999988,80.401382000000069],[-70.220001000000025,80.416930999999977],[-70.235000999999897,80.429703000000018],[-70.275283999999942,80.44802900000002],[-70.314163000000008,80.464432000000045],[-70.499434999999949,80.513884999999959],[-70.539992999999924,80.521927000000119],[-70.68110699999994,80.548035000000084],[-70.706116000000009,80.552475000000129],[-70.754729999999995,80.559418000000107],[-70.783065999999963,80.56303400000013],[-70.812499999999886,80.562759000000142],[-70.825286999999889,80.558593999999971],[-70.827498999999932,80.551376000000118],[-70.813048999999921,80.544983000000002],[-70.796111999999994,80.540543000000127],[-70.765288999999996,80.534424000000115],[-70.741668999999945,80.531372000000033],[-70.670837000000006,80.518051000000071],[-70.637786999999946,80.509155000000135],[-70.531386999999995,80.474426000000051],[-70.490554999999915,80.460815000000082],[-70.476669000000015,80.454436999999984],[-70.423324999999977,80.42164600000001],[-70.434722999999963,80.391663000000108],[-70.450561999999991,80.385817999999972],[-70.458892999999989,80.381362999999965],[-70.472228999999913,80.368042000000003],[-70.471389999999985,80.362488000000042],[-70.469161999999983,80.354980000000012],[-70.462219000000005,80.346939000000134],[-70.444153000000028,80.340271000000143],[-70.424164000000019,80.336105000000032],[-70.352492999999924,80.324707000000046],[-70.309998000000007,80.318054000000075],[-70.252791999999943,80.313309000000061],[-70.15055799999999,80.299149000000114],[-70.035278000000005,80.278320000000122],[-69.991103999999893,80.268875000000094],[-69.974166999999966,80.263046000000088],[-69.960555999999997,80.256378000000097],[-69.965285999999935,80.252213000000097],[-69.990828999999962,80.24331699999999],[-70.128326000000015,80.19720500000011],[-70.145554000000004,80.193587999999977],[-70.178604000000007,80.189148000000102],[-70.21665999999999,80.186371000000008],[-70.24888599999997,80.18609600000002],[-70.315001999999879,80.187484999999981],[-70.611388999999974,80.19720500000011],[-70.645554000000004,80.199142000000109],[-70.821121000000005,80.195526000000086],[-71.120833999999945,80.172485000000052],[-71.180556999999908,80.166656000000046],[-71.238326999999913,80.158874999999966],[-71.381942999999978,80.139160000000004],[-71.418610000000001,80.131088000000034],[-71.446105999999929,80.121368000000132],[-71.463057999999933,80.118042000000059],[-71.50111400000003,80.11554000000001],[-71.654448999999943,80.111374000000069],[-71.694442999999978,80.110809000000074],[-71.731948999999929,80.111923000000047],[-71.762787000000003,80.114426000000037],[-71.789992999999981,80.117752000000053],[-71.811660999999901,80.123596000000077],[-71.836120999999991,80.131927000000132],[-71.848052999999993,80.143875000000037],[-71.878600999999946,80.162491000000045],[-71.907776000000013,80.171371000000079],[-71.953339000000028,80.180542000000003],[-72.006393000000003,80.188583000000108],[-72.057220000000029,80.19470200000012],[-72.081116000000009,80.194138000000009],[-72.099990999999875,80.192748999999992],[-72.127776999999924,80.187759000000142],[-72.165282999999988,80.188873000000115],[-72.189163000000008,80.192200000000014],[-72.223327999999981,80.201660000000118],[-72.241378999999995,80.207489000000123],[-72.256392999999946,80.213882000000069],[-72.274445000000014,80.219711000000075],[-72.294448999999872,80.223312000000135],[-72.329726999999878,80.22554000000008],[-72.358886999999925,80.226089000000059],[-72.378051999999968,80.224700999999982],[-72.391113000000018,80.221649000000014],[-72.400283999999942,80.218597000000102],[-72.420837000000006,80.211104999999975],[-72.412506000000008,80.207214000000079],[-72.188598999999954,80.163879000000122],[-72.140839000000028,80.156937000000028],[-72.082779000000016,80.151656999999943],[-72.052489999999977,80.149719000000005],[-71.996947999999861,80.143051000000071],[-71.977218999999934,80.139434999999992],[-71.896956999999929,80.11554000000001],[-71.895553999999947,80.114150999999993],[-71.898055999999997,80.108597000000032],[-71.905272999999966,80.103591999999935],[-71.926102000000014,80.099991000000102],[-71.954726999999934,80.096375000000023],[-72.115554999999972,80.087494000000106],[-72.250564999999938,80.085541000000148],[-72.391677999999956,80.085541000000148],[-72.392226999999991,80.081940000000088],[-72.358337000000006,80.064987000000031],[-72.340560999999923,80.059143000000006],[-72.306380999999988,80.057480000000055],[-72.170272999999952,80.053864000000033],[-72.137787000000003,80.053588999999988],[-72.053054999999915,80.057480000000055],[-71.920836999999949,80.066375999999991],[-71.885833999999932,80.067215000000147],[-71.849730999999906,80.067764000000125],[-71.701950000000011,80.064148000000046],[-71.618057000000022,80.06442300000009],[-71.489166000000012,80.068878000000097],[-71.376098999999954,80.076935000000049],[-71.316665999999941,80.081940000000088],[-71.186385999999914,80.093872000000033],[-70.968063000000029,80.114990000000148],[-70.854720999999984,80.12831100000011],[-70.821121000000005,80.131088000000034],[-70.762512000000015,80.133330999999941],[-70.651671999999962,80.131363000000022],[-70.626663000000008,80.130539000000056],[-70.50778200000002,80.099716000000058],[-70.502227999999945,80.093048000000067],[-70.497498000000007,80.082764000000054],[-70.48832699999997,80.057205000000067],[-70.494995000000017,80.050812000000121],[-70.508346999999958,80.047759999999982],[-70.568068999999923,80.042755000000113],[-70.59722899999997,80.039429000000098],[-70.646666999999979,80.031936999999971],[-70.662216000000001,80.026657000000057],[-70.673049999999989,80.020828000000051],[-70.679717999999866,80.014435000000105],[-70.672774999999945,80.006377999999984],[-70.672501000000011,80.001389000000017],[-70.689712999999983,79.993317000000047],[-70.71945199999999,79.986374000000012],[-70.767226999999878,79.981658999999979],[-70.916107000000011,79.974425999999994],[-70.954178000000013,79.972763000000043],[-71.08555599999994,79.968596999999988],[-71.241669000000002,79.960815000000025],[-71.27027899999996,79.957214000000135],[-71.401108000000022,79.93553199999991],[-71.416397000000018,79.930267000000072],[-71.453612999999962,79.906372000000033],[-71.460555999999883,79.901382000000012],[-71.458892999999932,79.894989000000066],[-71.438599000000011,79.88998399999997],[-71.415832999999907,79.886658000000125],[-71.394454999999994,79.884995000000004],[-71.352782999999931,79.886932000000058],[-71.338608000000022,79.888596000000064],[-71.168335000000013,79.914153999999996],[-71.109725999999966,79.915267999999969],[-71.063048999999978,79.911652000000117],[-70.944716999999969,79.894150000000081],[-70.925827000000027,79.890274000000034],[-70.910278000000005,79.885818000000086],[-70.916397000000018,79.879424999999969],[-71.005843999999968,79.819717000000082],[-71.116652999999985,79.789703000000088],[-71.136123999999938,79.784988000000055],[-71.183884000000035,79.77748100000008],[-71.212783999999999,79.774428999999998],[-71.343612999999948,79.76388500000013],[-71.376098999999954,79.760818000000029],[-71.400283999999999,79.757492000000013],[-71.444442999999922,79.741653000000042],[-71.463333000000034,79.736923000000047],[-71.49110399999995,79.733321999999987],[-71.699158000000011,79.709991000000116],[-71.739440999999943,79.707214000000022],[-71.781113000000005,79.706100000000049],[-71.817504999999983,79.703597999999943],[-71.922500999999954,79.695525999999973],[-71.990279999999984,79.689148000000046],[-72.096664000000033,79.674988000000099],[-72.217772999999909,79.659987999999998],[-72.267226999999934,79.659149000000014],[-72.287215999999944,79.659987999999998],[-72.317779999999914,79.667205999999965],[-72.330841000000021,79.672484999999938],[-72.348052999999879,79.678040000000067],[-72.367217999999923,79.681656000000089],[-72.392226999999991,79.683594000000028],[-72.425003000000004,79.685531999999967],[-72.467223999999931,79.684708000000001],[-72.574172999999917,79.679153000000099],[-72.619445999999925,79.677765000000022],[-72.661391999999978,79.677199999999971],[-72.697220000000016,79.678040000000067],[-72.729995999999971,79.679703000000131],[-72.756119000000012,79.682205000000067],[-72.912780999999939,79.702208999999982],[-72.932769999999948,79.706375000000037],[-72.944442999999978,79.710266000000104],[-73.062774999999988,79.79942299999999],[-73.061110999999983,79.805251999999996],[-73.048614999999984,79.808319000000097],[-73.027495999999985,79.80693100000002],[-73.017226999999934,79.804703000000018],[-73.003341999999975,79.803040000000124],[-72.979171999999949,79.802200000000084],[-72.945830999999998,79.804152999999985],[-72.924437999999952,79.806366000000139],[-72.912216000000001,79.809418000000051],[-72.902495999999928,79.815262000000075],[-72.926392000000021,79.819442999999978],[-73.059158000000025,79.825546000000088],[-73.091675000000009,79.826385000000073],[-73.178328999999906,79.822768999999994],[-73.218063000000029,79.822768999999994],[-73.285003999999958,79.826096000000121],[-73.348617999999988,79.83027600000014],[-73.371383999999978,79.833054000000118],[-73.396956999999986,79.834991000000002],[-73.43360899999999,79.835815000000139],[-73.576401000000033,79.832764000000111],[-73.667770000000019,79.829712000000029],[-73.745270000000005,79.828323000000012],[-73.780288999999982,79.82777400000009],[-73.853332999999907,79.829163000000051],[-73.866942999999992,79.830826000000002],[-73.864715999999987,79.835815000000139],[-73.853607000000011,79.839706000000035],[-73.801666000000012,79.84637500000008],[-73.745543999999938,79.849152000000004],[-73.742492999999854,79.849990999999932],[-73.746947999999975,79.854155999999932],[-73.768615999999895,79.858870999999965],[-73.890839000000028,79.875259000000028],[-73.945830999999885,79.881653000000085],[-74.010284000000013,79.885818000000086],[-74.117492999999968,79.888885000000016],[-74.156951999999933,79.888885000000016],[-74.238891999999964,79.887207000000103],[-74.283614999999941,79.881363000000079],[-74.30610699999994,79.876923000000033],[-74.383621000000005,79.868591000000094],[-74.415282999999988,79.865265000000022],[-74.576401000000033,79.856934000000138],[-74.667495999999971,79.853591999999992],[-74.795272999999952,79.850815000000125],[-74.833069000000023,79.849152000000004],[-74.846389999999985,79.847214000000065],[-74.846114999999941,79.84387200000009],[-74.71665999999999,79.796936000000073],[-74.699431999999945,79.792755],[-74.683884000000035,79.789978000000076],[-74.654998999999975,79.788879000000122],[-74.488892000000021,79.791655999999989],[-74.444992000000013,79.794708000000128],[-74.392226999999934,79.800261999999918],[-74.351668999999958,79.802475000000072],[-74.309432999999956,79.803314000000057],[-74.236388999999974,79.801925999999924],[-74.106383999999878,79.795532000000094],[-73.951401000000033,79.784424000000115],[-73.714721999999938,79.76638800000012],[-73.510833999999988,79.756377999999984],[-73.384734999999921,79.748871000000065],[-73.366652999999985,79.718048000000067],[-73.360824999999863,79.712769000000094],[-73.295546999999999,79.688582999999994],[-73.256957999999884,79.678040000000067],[-73.206664999999987,79.663605000000132],[-73.188889000000017,79.658035000000041],[-73.174438000000009,79.651657000000057],[-73.168334999999956,79.646103000000096],[-73.126098999999897,79.569443000000035],[-73.125823999999966,79.558318999999983],[-73.128875999999991,79.554153000000042],[-73.135833999999988,79.549713000000054],[-73.148620999999991,79.543593999999985],[-73.163054999999986,79.538878999999952],[-73.180831999999953,79.534149000000127],[-73.247222999999963,79.520827999999995],[-73.296111999999937,79.512772000000098],[-73.353881999999942,79.505829000000119],[-73.446380999999917,79.499145999999939],[-73.657776000000013,79.496368000000132],[-73.693054000000018,79.496933000000013],[-73.729172000000005,79.498596000000077],[-73.758057000000008,79.500275000000101],[-73.779998999999975,79.503052000000025],[-73.791945999999939,79.506653000000085],[-73.817229999999938,79.515549000000021],[-73.837783999999999,79.527480999999966],[-73.863892000000021,79.540267999999969],[-73.876662999999951,79.544708000000014],[-73.916106999999954,79.552475000000129],[-73.950286999999889,79.555252000000053],[-73.965012000000002,79.554703000000075],[-73.988892000000021,79.55192599999998],[-74.001113999999973,79.545821999999987],[-74.000290000000007,79.541656000000046],[-73.996947999999975,79.535537999999917],[-73.989440999999943,79.528595000000109],[-73.968612999999891,79.516937000000098],[-73.959166999999923,79.508881000000031],[-73.949996999999939,79.493866000000082],[-73.949721999999952,79.479980000000069],[-73.953063999999983,79.472762999999986],[-73.961945000000014,79.466933999999981],[-73.98332199999993,79.455551000000128],[-73.998046999999985,79.451385000000073],[-74.023620999999991,79.446930000000066],[-74.081389999999999,79.440536000000009],[-74.11610399999995,79.43803400000013],[-74.160278000000005,79.436371000000008],[-74.198333999999988,79.436095999999964],[-74.544158999999922,79.43803400000013],[-74.617492999999854,79.438583000000051],[-74.673614999999927,79.444138000000123],[-74.688598999999897,79.446930000000066],[-74.931670999999938,79.498871000000122],[-74.932410999999888,79.504798999999991],[-74.941939999999988,79.510543999999982],[-74.96444699999995,79.513046000000031],[-74.987503000000004,79.509995000000004],[-75.043334999999956,79.49581900000004],[-75.060271999999884,79.490813999999943],[-75.059433000000013,79.483871000000136],[-74.995269999999948,79.453598],[-74.983062999999959,79.449706999999933],[-74.948882999999967,79.440810999999997],[-74.912215999999944,79.429703000000018],[-74.897231999999974,79.423308999999961],[-74.884444999999971,79.416092000000049],[-74.883056999999894,79.408325000000104],[-74.911117999999988,79.39387499999998],[-74.93499799999995,79.385269000000051],[-74.951949999999954,79.380264000000011],[-75,79.375488000000075],[-75.016953000000001,79.374146000000053],[-75.058334000000002,79.373871000000065],[-75.213897999999972,79.376373000000115],[-75.31361400000003,79.379974000000004],[-75.410278000000005,79.384155000000078],[-75.531386999999995,79.392487000000074],[-75.695266999999944,79.409987999999998],[-75.799728000000016,79.431366000000139],[-75.907776000000013,79.426086000000055],[-75.931380999999988,79.423598999999967],[-75.957503999999972,79.426086000000055],[-75.985275000000001,79.429703000000018],[-76.031386999999995,79.438309000000118],[-76.049164000000019,79.443038999999999],[-76.097503999999958,79.461929000000112],[-76.109160999999915,79.467758000000117],[-76.115279999999927,79.472487999999942],[-76.124160999999958,79.476379000000009],[-76.138610999999912,79.481369000000086],[-76.175827000000027,79.488876000000005],[-76.203888000000006,79.492477000000065],[-76.261123999999995,79.497756999999979],[-76.320281999999906,79.501389000000074],[-76.636123999999995,79.519440000000088],[-76.665282999999988,79.520827999999995],[-76.718338000000017,79.51998900000001],[-76.795273000000009,79.51138300000008],[-76.834441999999967,79.508881000000031],[-76.872771999999998,79.508606000000043],[-76.90583799999996,79.509720000000016],[-77.050277999999992,79.518600000000049],[-77.069732999999985,79.523880000000077],[-77.092772999999909,79.539703000000145],[-77.112212999999997,79.545258000000047],[-77.142501999999865,79.547485000000052],[-77.160552999999936,79.543593999999985],[-77.191375999999934,79.511108000000092],[-77.184433000000013,79.503600999999946],[-77.178604000000007,79.499710000000107],[-77.134444999999971,79.490265000000022],[-77.071670999999924,79.486923000000104],[-76.895554000000004,79.48054500000012],[-76.867217999999923,79.479705999999965],[-76.612503000000004,79.474701000000096],[-76.406386999999995,79.473602000000142],[-76.204726999999991,79.461380000000133],[-76.179168999999888,79.459717000000069],[-76.159438999999963,79.456375000000094],[-76.143341000000021,79.449996999999939],[-76.138061999999934,79.443313999999987],[-76.138901000000033,79.441086000000041],[-76.149993999999992,79.437759000000085],[-76.159164000000033,79.436095999999964],[-76.189986999999974,79.433319000000097],[-76.208054000000004,79.429703000000018],[-76.205565999999976,79.424698000000149],[-76.167496000000028,79.396102999999925],[-76.157501000000025,79.391663000000108],[-76.11721799999998,79.384430000000123],[-76.083327999999995,79.378860000000032],[-76.059157999999968,79.374985000000038],[-75.902221999999995,79.357207999999957],[-75.881942999999978,79.353317000000118],[-75.879165999999998,79.351378999999952],[-75.889998999999875,79.348037999999917],[-75.902785999999878,79.346099999999979],[-76.086670000000026,79.332214000000022],[-76.12332200000003,79.331100000000049],[-76.351104999999961,79.341934000000094],[-76.682770000000005,79.352767999999969],[-76.717772999999909,79.353317000000118],[-76.790557999999976,79.353317000000118],[-76.829178000000013,79.350815000000011],[-76.869719999999973,79.349426000000051],[-76.89416499999993,79.353317000000118],[-76.959441999999967,79.367203000000075],[-77.018889999999999,79.381927000000132],[-77.076401000000033,79.398331000000098],[-77.090285999999935,79.40554800000001],[-77.105559999999912,79.416092000000049],[-77.108337000000006,79.420822000000101],[-77.212509000000011,79.447754000000032],[-77.326400999999976,79.454163000000051],[-77.359160999999915,79.455551000000128],[-77.386123999999938,79.452774000000034],[-77.397507000000019,79.447205000000054],[-77.395003999999972,79.440262000000075],[-77.384445000000028,79.433044000000052],[-77.262221999999952,79.372482000000048],[-77.172500999999954,79.336380000000077],[-77.158614999999998,79.329162999999994],[-77.163894999999968,79.324707000000046],[-77.187774999999988,79.322769000000108],[-77.228058000000033,79.321655000000135],[-77.260559000000001,79.322769000000108],[-77.317229999999938,79.327773999999977],[-77.36721799999998,79.336105000000089],[-77.386397999999986,79.33859300000006],[-77.41361999999998,79.34165999999999],[-77.466110000000015,79.346099999999979],[-77.477782999999931,79.346099999999979],[-77.596114999999941,79.345824999999991],[-77.634170999999924,79.345534999999984],[-77.707503999999972,79.343323000000055],[-77.739990000000034,79.344437000000084],[-77.769729999999981,79.346375000000023],[-77.819732999999985,79.351653999999996],[-77.905272999999909,79.365265000000136],[-77.922501000000011,79.366379000000109],[-77.957229999999981,79.363876000000118],[-78.051391999999964,79.354706000000078],[-78.058883999999978,79.349426000000051],[-78.043610000000001,79.344437000000084],[-78.021392999999932,79.339980999999966],[-77.903335999999967,79.322495000000004],[-77.876099000000011,79.319717000000026],[-77.846114999999998,79.317764000000068],[-77.809998000000007,79.316665999999998],[-77.760009999999966,79.316375999999991],[-77.726944000000003,79.317490000000134],[-77.650833000000034,79.317764000000068],[-77.624434999999949,79.315536000000122],[-77.529175000000009,79.30525200000011],[-77.478607000000011,79.29664600000001],[-77.322234999999978,79.267487000000017],[-77.329178000000013,79.261383000000137],[-77.341384999999946,79.259430000000009],[-77.358046999999942,79.257767000000115],[-77.422226000000023,79.254714999999976],[-77.453063999999983,79.252487000000031],[-77.482223999999974,79.248871000000008],[-77.496947999999918,79.24581900000004],[-77.488051999999982,79.244980000000112],[-77.424712999999997,79.246094000000085],[-77.358336999999949,79.249999999999943],[-77.191939999999988,79.263885000000073],[-76.999725000000012,79.273315000000139],[-76.671386999999925,79.277481000000023],[-76.237777999999935,79.271103000000039],[-76.168059999999969,79.269989000000066],[-76.136123999999995,79.268600000000106],[-76.105834999999956,79.265823000000012],[-76.068619000000012,79.25749200000007],[-76.052779999999984,79.251099000000124],[-76.03443900000002,79.24581900000004],[-75.991942999999992,79.236374000000012],[-75.938889000000017,79.230270000000132],[-75.807495000000017,79.227768000000083],[-75.777221999999938,79.227478000000076],[-75.734436000000017,79.229431000000034],[-75.675277999999992,79.236374000000012],[-75.637786999999946,79.239426000000094],[-75.608336999999949,79.239975000000072],[-75.465012000000002,79.239975000000072],[-75.405837999999903,79.237487999999985],[-75.083068999999966,79.235260000000039],[-74.876099000000011,79.238037000000134],[-74.800277999999992,79.240540000000067],[-74.777221999999995,79.240265000000079],[-74.52555799999999,79.227203000000031],[-74.496947999999975,79.224990999999989],[-74.47084000000001,79.22164900000007],[-74.464721999999995,79.219986000000119],[-74.467223999999987,79.215546000000131],[-74.474166999999966,79.211928999999998],[-74.520279000000016,79.203048999999965],[-74.571944999999914,79.196091000000138],[-74.601944000000003,79.192748999999992],[-74.758057000000008,79.18553200000008],[-74.791945999999996,79.182754999999986],[-74.817504999999926,79.17886400000009],[-74.826950000000011,79.174149000000057],[-74.819167999999934,79.167755000000056],[-74.795546999999999,79.163605000000018],[-74.766952999999944,79.161377000000073],[-74.672501000000011,79.156937000000028],[-74.617492999999854,79.151381999999955],[-74.445830999999941,79.065810999999997],[-74.436661000000015,79.0577550000001],[-74.443053999999961,79.046936000000073],[-74.455276000000026,79.041655999999989],[-74.47193900000002,79.036652000000004],[-74.514450000000011,79.028595000000053],[-74.543883999999991,79.025269000000037],[-74.578339000000028,79.023314999999968],[-74.654175000000009,79.022217000000069],[-74.725005999999951,79.022766000000047],[-74.960007000000019,79.028320000000008],[-75.116104000000007,79.035812000000135],[-75.243057000000022,79.043045000000006],[-75.626662999999951,79.066086000000041],[-75.655563000000029,79.068328999999949],[-75.763335999999981,79.080551000000128],[-75.885284000000013,79.097488000000112],[-75.891387999999949,79.102203000000145],[-75.887221999999952,79.12831100000011],[-75.880829000000006,79.134995000000004],[-75.856658999999979,79.139708999999925],[-75.848617999999988,79.14498900000001],[-75.857772999999952,79.152205999999921],[-75.944442999999922,79.173035000000084],[-76.047774999999945,79.192200000000071],[-76.071670999999924,79.196091000000138],[-76.098052999999993,79.199141999999995],[-76.132767000000001,79.199706999999989],[-76.309433000000013,79.190811000000053],[-76.519164999999987,79.190262000000132],[-76.859160999999972,79.185257000000092],[-76.973327999999924,79.183318999999926],[-77.044998000000021,79.183318999999926],[-77.083069000000023,79.183593999999971],[-77.111663999999962,79.184982000000048],[-77.167496000000028,79.189972000000125],[-77.205001999999979,79.195251000000098],[-77.250564999999995,79.198029000000076],[-77.388901000000033,79.199706999999989],[-77.510833999999988,79.194976999999994],[-77.548049999999932,79.194427000000132],[-77.642501999999922,79.199706999999989],[-77.695267000000001,79.204712000000029],[-77.749999999999886,79.208328000000108],[-77.777495999999928,79.208878000000141],[-77.817504999999983,79.207763999999997],[-78.158889999999985,79.189972000000125],[-78.213622999999984,79.183593999999971],[-78.233321999999987,79.17886400000009],[-78.245833999999945,79.174698000000035],[-78.25389100000001,79.169983000000002],[-78.253066999999987,79.164428999999984],[-78.228607000000011,79.160538000000088],[-78.181670999999994,79.159424000000115],[-78.084732000000031,79.168045000000063],[-78.056106999999997,79.171921000000111],[-78.026397999999972,79.174698000000035],[-77.988892000000021,79.177475000000129],[-77.912216000000001,79.17942800000003],[-77.842772999999966,79.178589000000102],[-77.47193900000002,79.167755000000056],[-77.237777999999992,79.156937000000028],[-77.208617999999944,79.154709000000082],[-77.181106999999997,79.153869999999927],[-77.018615999999952,79.153595000000109],[-76.841949,79.153595000000109],[-76.706115999999952,79.153045999999961],[-76.639998999999989,79.15109300000006],[-76.61082499999992,79.149155000000121],[-76.484725999999966,79.136108000000092],[-76.430557000000022,79.132202000000007],[-76.319732999999928,79.124695000000088],[-76.260009999999909,79.121917999999994],[-76.233611999999937,79.121642999999949],[-76.191375999999934,79.123596000000077],[-76.15972899999997,79.122208000000001],[-76.136672999999973,79.11914100000007],[-76.081954999999994,79.099716000000114],[-76.085006999999905,79.093323000000112],[-76.099990999999875,79.08776899999998],[-76.116652999999928,79.083328000000051],[-76.146666999999979,79.077774000000034],[-76.170546999999885,79.075821000000076],[-76.210006999999962,79.074707000000103],[-76.265014999999948,79.074432000000115],[-76.360001000000011,79.078323000000012],[-76.515015000000005,79.085815000000082],[-76.575561999999991,79.089432000000045],[-76.637222000000008,79.090546000000018],[-76.676391999999964,79.089432000000045],[-76.828339000000028,79.082764000000111],[-76.996383999999978,79.074707000000103],[-77.073333999999932,79.070831000000055],[-77.152785999999992,79.066086000000041],[-77.223052999999993,79.060532000000023],[-77.326950000000011,79.051651000000106],[-77.355559999999969,79.048325000000034],[-77.429717999999923,79.037200999999982],[-77.449431999999945,79.032760999999937],[-77.464721999999995,79.027771000000087],[-77.49499499999996,79.017761000000007],[-77.529175000000009,79.018051000000014],[-77.693054000000018,79.033600000000092],[-77.719727000000034,79.036652000000004],[-77.742217999999923,79.041930999999977],[-77.783066000000019,79.062484999999981],[-77.799987999999928,79.066666000000055],[-77.84973100000002,79.069717000000082],[-77.919723999999917,79.068878000000097],[-78.035004000000015,79.065536000000009],[-78.103333000000021,79.066086000000041],[-78.135009999999966,79.067490000000021],[-78.165282999999931,79.06999200000007],[-78.214447000000007,79.075271999999984],[-78.234160999999858,79.078323000000012],[-78.289992999999981,79.083328000000051],[-78.351105000000018,79.086380000000133],[-78.425277999999992,79.083054000000118],[-78.671386999999982,79.071930000000009],[-78.818343999999968,79.069442999999978],[-78.860000999999954,79.067214999999976],[-78.891387999999893,79.063309000000118],[-78.879439999999931,79.060256999999979],[-78.692489999999964,79.058594000000085],[-78.588332999999977,79.059143000000006],[-78.405272999999966,79.064987000000031],[-78.283889999999985,79.066666000000055],[-78.236388999999974,79.064987000000031],[-78.15972899999997,79.051086000000055],[-78.108337000000006,79.04664600000001],[-78.070557000000008,79.04664600000001],[-77.966110000000015,79.049149],[-77.86111499999987,79.049149],[-77.829453000000001,79.048035000000027],[-77.799437999999896,79.045258000000103],[-77.785552999999993,79.041092000000049],[-77.708344000000011,79.013046000000145],[-77.703339000000028,79.006943000000035],[-77.71665999999999,79.003326000000072],[-77.796111999999937,78.988586000000112],[-77.835007000000019,78.979431000000034],[-77.946945000000028,78.951660000000004],[-77.946380999999917,78.945815999999979],[-77.952498999999932,78.939697000000137],[-78.040282999999988,78.906097000000045],[-78.147506999999962,78.865265000000079],[-78.282227000000034,78.80386400000009],[-78.289992999999981,78.799149000000057],[-78.297226000000023,78.788879000000122],[-78.296111999999937,78.783051],[-78.285552999999993,78.775818000000015],[-78.269454999999937,78.772491000000059],[-78.248046999999929,78.770263999999997],[-78.215560999999923,78.770537999999931],[-78.196105999999929,78.772217000000126],[-78.168334999999956,78.780823000000055],[-78.15972899999997,78.784988000000055],[-78.15943900000002,78.789978000000133],[-78.145843999999954,78.800812000000008],[-78.129439999999988,78.812194999999974],[-78.105269999999905,78.828598000000056],[-78.042769999999962,78.861649],[-78.029174999999896,78.867477000000122],[-77.902221999999995,78.91276600000009],[-77.887222000000008,78.917755000000056],[-77.75167799999997,78.95748900000001],[-77.711944999999957,78.966095000000109],[-77.689437999999996,78.968596999999988],[-77.526397999999972,78.979156000000046],[-77.370270000000005,78.984421000000111],[-77.258346999999958,78.986374000000069],[-77.177490000000034,78.989700000000084],[-77.107497999999964,78.99552900000009],[-77.078888000000006,78.998871000000065],[-77.026107999999965,79.006652999999972],[-76.960281000000009,79.012772000000041],[-76.75418099999996,79.027771000000087],[-76.710555999999997,79.028320000000008],[-76.683318999999983,79.027771000000087],[-76.424163999999962,79.022491000000002],[-76.361389000000031,79.019714000000135],[-75.98971599999993,78.99552900000009],[-75.732223999999974,78.969147000000021],[-75.720276000000013,78.965545999999961],[-75.769454999999994,78.939971999999955],[-75.781113000000005,78.934708000000001],[-75.796951000000035,78.929703000000131],[-75.825561999999991,78.926085999999998],[-75.858611999999937,78.923309000000074],[-75.896118000000001,78.920821999999987],[-76.095276000000013,78.910262999999986],[-76.25,78.902205999999978],[-76.287215999999944,78.899719000000118],[-76.315552000000025,78.896103000000039],[-76.335555999999997,78.891663000000051],[-76.375548999999921,78.882750999999985],[-76.415008999999998,78.873870999999951],[-76.446105999999929,78.863876000000062],[-76.456389999999942,78.857758000000103],[-76.460007000000019,78.851929000000098],[-76.458343999999897,78.844986000000119],[-76.440276999999924,78.839432000000102],[-76.41194200000001,78.837203999999986],[-76.394454999999937,78.840820000000008],[-76.391113000000018,78.843872000000147],[-76.37470999999988,78.851089000000059],[-76.344727000000034,78.858871000000022],[-76.330001999999979,78.861649],[-76.231673999999998,78.879149999999981],[-76.204726999999991,78.881088000000091],[-76.178329000000019,78.880264000000125],[-76.15834000000001,78.879149999999981],[-76.133330999999998,78.876648000000046],[-76.077498999999989,78.873032000000023],[-75.975006000000008,78.872756999999979],[-75.791671999999949,78.884155000000021],[-75.461120999999991,78.891372999999987],[-75.316101000000003,78.892211999999972],[-75.292220999999927,78.890274000000034],[-75.180557000000022,78.879149999999981],[-74.964721999999995,78.856094000000098],[-74.775009000000011,78.829987000000074],[-74.760559000000001,78.823607999999979],[-74.752791999999943,78.816940000000045],[-74.719726999999978,78.707489000000066],[-74.727218999999934,78.701385000000016],[-74.755844000000025,78.69802900000002],[-74.823059000000001,78.697478999999987],[-74.84333799999996,78.693039000000113],[-74.86999499999996,78.675812000000121],[-74.869445999999925,78.668594000000098],[-74.857773000000009,78.636107999999979],[-74.819457999999884,78.627472000000068],[-74.789992999999981,78.591370000000097],[-74.862212999999997,78.56721500000009],[-74.878052000000025,78.562485000000038],[-75.024169999999913,78.531937000000084],[-75.048049999999989,78.528046000000018],[-75.072509999999909,78.52777100000003],[-75.079453000000001,78.533875000000023],[-75.101394999999968,78.53776600000009],[-75.131377999999927,78.539153999999996],[-75.16722099999987,78.539703000000145],[-75.200287000000003,78.537491000000102],[-75.219726999999978,78.533051000000057],[-75.235275000000001,78.528046000000018],[-75.261672999999973,78.523315000000082],[-75.290557999999919,78.520537999999988],[-75.479445999999996,78.50999500000006],[-75.830001999999979,78.504715000000147],[-75.888335999999924,78.506103999999993],[-75.965011999999888,78.510818000000086],[-75.989990000000034,78.513885000000016],[-76.030563000000029,78.521103000000039],[-76.073058999999944,78.529709000000139],[-76.095550999999944,78.533600000000035],[-76.120270000000005,78.536652000000117],[-76.151107999999965,78.538589000000002],[-76.404448999999886,78.548035000000141],[-76.437209999999993,78.548599000000081],[-76.468886999999938,78.54553199999998],[-76.642775999999969,78.528320000000122],[-76.684433000000013,78.522217000000012],[-76.691101000000003,78.518875000000094],[-76.692764000000011,78.514708999999982],[-76.693603999999993,78.509720000000016],[-76.684997999999894,78.505829000000119],[-76.668335000000013,78.503875999999991],[-76.645844000000011,78.502777000000037],[-76.539992999999981,78.503325999999959],[-76.468338000000017,78.505264000000125],[-76.36471599999993,78.513321000000076],[-76.324722000000008,78.515274000000034],[-76.289444000000003,78.515549000000021],[-76.261948000000018,78.513611000000083],[-76.243057000000022,78.512207000000103],[-76.124999999999943,78.494141000000127],[-76.114165999999955,78.488312000000121],[-76.112777999999878,78.481094000000098],[-76.108886999999982,78.474990999999989],[-76.100554999999986,78.468322999999998],[-76.081679999999949,78.464432000000102],[-76.057495000000017,78.461929000000112],[-75.761123999999995,78.443862999999965],[-75.61721799999998,78.43803400000013],[-75.49888599999997,78.433044000000052],[-75.443603999999993,78.430542000000003],[-75.410827999999924,78.426651000000106],[-75.269729999999925,78.404160000000104],[-75.089995999999985,78.368866000000025],[-75.031386999999995,78.331375000000037],[-75.038329999999917,78.325546000000031],[-75.051940999999886,78.315810999999997],[-75.0625,78.309708000000001],[-75.086670000000026,78.306366000000082],[-75.189986999999974,78.299713000000111],[-75.22193900000002,78.300262000000032],[-75.246108999999933,78.303314],[-75.273055999999883,78.305542000000116],[-75.307495000000017,78.305542000000116],[-75.358611999999937,78.301651000000049],[-75.377212999999983,78.29664600000001],[-75.385009999999909,78.291367000000037],[-75.392226999999934,78.285262999999986],[-75.39805599999994,78.272491000000002],[-75.479172000000005,78.222214000000122],[-75.494155999999975,78.217209000000082],[-75.513335999999924,78.212769000000037],[-75.582503999999915,78.201096000000007],[-75.61361699999992,78.198029000000076],[-75.650283999999942,78.196930000000123],[-75.679442999999992,78.198318000000029],[-75.776397999999972,78.210541000000092],[-75.902495999999928,78.224152000000061],[-75.985549999999932,78.229979999999955],[-76.157227000000034,78.240540000000124],[-76.188888999999961,78.241089000000045],[-76.225829999999974,78.239975000000072],[-76.291945999999996,78.234421000000054],[-76.324447999999961,78.23275799999999],[-76.361389000000031,78.231658999999979],[-76.393065999999976,78.232208000000128],[-76.474715999999944,78.239425999999924],[-76.520278999999903,78.24552900000009],[-76.548049999999876,78.248322000000087],[-76.574172999999917,78.249709999999993],[-76.608336999999949,78.249419999999986],[-76.630554000000018,78.247757000000036],[-76.831680000000006,78.230820000000051],[-76.855269999999962,78.227478000000076],[-76.888061999999991,78.21804800000001],[-76.898620999999935,78.212494000000049],[-76.912216000000001,78.201096000000007],[-76.90834000000001,78.195525999999916],[-76.883330999999941,78.191925000000083],[-76.688599000000011,78.168869000000029],[-76.664444000000003,78.166092000000106],[-76.641678000000013,78.164429000000041],[-76.537780999999939,78.158324999999991],[-76.021392999999989,78.138046000000031],[-75.763900999999976,78.131653000000085],[-75.735549999999989,78.1308140000001],[-75.621933000000013,78.1244200000001],[-75.59722899999997,78.12081900000004],[-75.581389999999942,78.115814],[-75.575561999999934,78.107758000000103],[-75.575287000000003,78.101379000000065],[-75.588897999999972,78.089432000000102],[-75.599166999999909,78.083328000000051],[-75.692763999999954,78.039978000000076],[-75.707503999999915,78.034988000000055],[-75.723052999999993,78.030823000000055],[-75.761123999999995,78.022491000000059],[-75.809433000000013,78.008331000000112],[-75.838608000000022,77.998322000000087],[-75.922775000000001,77.956650000000081],[-75.965011999999888,77.973037999999917],[-75.984160999999858,77.977478000000133],[-76.157227000000034,78.012497000000053],[-76.214721999999995,78.01527399999992],[-76.246108999999933,78.015823000000069],[-76.276672000000019,78.012772000000041],[-76.303054999999972,78.009430000000123],[-76.444716999999912,77.988586000000112],[-76.466949,77.984710999999947],[-76.481383999999935,77.979706000000078],[-76.491942999999992,77.968597000000045],[-76.499725000000012,77.958327999999995],[-76.526108000000022,77.949142000000052],[-76.548339999999996,77.944977000000051],[-76.595839999999953,77.939697000000137],[-76.669998000000021,77.936371000000122],[-76.694442999999865,77.937195000000088],[-76.730559999999912,77.936096000000077],[-76.757232999999985,77.93331900000004],[-76.780288999999925,77.929977000000065],[-76.802490000000034,77.920258000000103],[-76.805557000000022,77.917205999999965],[-76.806945999999925,77.91304000000008],[-76.825287000000003,77.908325000000048],[-76.86221299999994,77.90277100000003],[-76.93110699999994,77.901382000000069],[-76.959731999999974,77.902481000000023],[-76.986114999999927,77.904708999999968],[-77.036391999999921,77.909714000000008],[-77.077788999999939,77.915817000000004],[-77.089171999999962,77.919708000000071],[-77.095276000000013,77.927199999999971],[-77.104172000000005,77.934417999999994],[-77.120269999999891,77.939148000000046],[-77.160003999999901,77.946091000000024],[-77.210830999999985,77.949142000000052],[-77.244445999999982,77.948593000000074],[-77.272232000000031,77.946365000000128],[-77.298339999999996,77.942749000000106],[-77.336120999999991,77.94081099999994],[-77.838897999999972,77.942749000000106],[-77.997498000000007,77.957214000000022],[-78.03694200000001,77.966384999999946],[-78.140838999999914,77.985260000000096],[-78.162216000000001,77.988312000000008],[-78.237502999999947,77.995818999999983],[-78.260833999999932,77.995254999999986],[-78.411391999999921,77.917755000000113],[-78.420837000000006,77.912491000000102],[-78.426391999999964,77.90637200000009],[-78.419723999999974,77.898880000000133],[-78.410552999999936,77.892211999999972],[-78.330840999999907,77.868591000000094],[-78.317107999999962,77.865814],[-78.282500999999968,77.862762000000089],[-78.260283999999899,77.861374000000012],[-78.173889000000031,77.859984999999995],[-78.139450000000011,77.857208000000128],[-77.97193900000002,77.807204999999954],[-77.958617999999888,77.802200000000084],[-77.947768999999994,77.796371000000079],[-77.940826000000015,77.765549000000021],[-77.940551999999968,77.759995000000004],[-77.981109999999887,77.701385000000073],[-77.920272999999952,77.669983000000116],[-77.882767000000001,77.661652000000004],[-77.862777999999992,77.656372000000147],[-77.742766999999958,77.622208000000114],[-77.724716000000001,77.613312000000008],[-77.718612999999948,77.605820000000051],[-77.723052999999936,77.599152000000061],[-77.730835000000013,77.597214000000122],[-77.87222300000002,77.568329000000119],[-77.952224999999999,77.555817000000104],[-77.958343999999954,77.529709000000139],[-77.944442999999978,77.511383000000137],[-77.946105999999986,77.504714999999976],[-77.948607999999979,77.501938000000109],[-77.981673999999998,77.486374000000012],[-77.99499499999996,77.481094000000098],[-78.256667999999934,77.381926999999962],[-78.303878999999995,77.373306000000071],[-78.690552000000025,77.315535999999952],[-78.741104000000007,77.309418000000051],[-78.777221999999995,77.307205000000067],[-78.806655999999975,77.307205000000067],[-78.834166999999923,77.30831900000004],[-78.839721999999995,77.310256999999979],[-78.833069000000023,77.314987000000031],[-78.786117999999988,77.335815000000082],[-78.733886999999982,77.362762000000032],[-78.726944000000003,77.367477000000065],[-78.725280999999995,77.371094000000028],[-78.727782999999988,77.375259000000028],[-78.764449999999954,77.3808140000001],[-78.784438999999907,77.3808140000001],[-78.816665999999998,77.378036000000122],[-78.841110000000015,77.374420000000043],[-78.861663999999962,77.370255000000043],[-78.89805599999994,77.360809000000074],[-78.920273000000009,77.350815000000068],[-78.939986999999917,77.338882000000012],[-78.948043999999982,77.332489000000066],[-78.955565999999919,77.328322999999955],[-78.968338000000017,77.323317999999915],[-79.00418099999996,77.313873000000058],[-79.083327999999995,77.299987999999985],[-79.139724999999999,77.293594000000098],[-79.171386999999868,77.290817000000004],[-79.207229999999981,77.288315000000125],[-79.270554000000004,77.286926000000108],[-79.321670999999924,77.288589000000059],[-79.373321999999973,77.29304499999995],[-79.493332000000009,77.304428000000144],[-79.631377999999984,77.316666000000055],[-79.653885000000002,77.318603999999993],[-79.712218999999948,77.318328999999949],[-79.83666999999997,77.306931000000134],[-79.860824999999977,77.303314],[-79.881942999999978,77.299713000000111],[-79.896118000000001,77.295822000000044],[-79.92332499999992,77.285263000000043],[-79.960555999999883,77.276932000000102],[-79.988327000000027,77.273604999999975],[-80.01916499999993,77.272217000000069],[-80.042495999999971,77.272766000000047],[-80.456116000000009,77.296097000000088],[-80.753341999999918,77.330551000000128],[-80.775833000000034,77.334427000000005],[-80.879714999999919,77.353043000000014],[-81.005568999999923,77.377197000000137],[-81.015288999999996,77.381363000000022],[-81.019454999999994,77.392761000000064],[-81.027221999999995,77.398041000000092],[-81.035277999999948,77.40109300000006],[-81.095276000000013,77.411925999999994],[-81.121108999999933,77.413605000000018],[-81.150833000000034,77.413605000000018],[-81.207778999999903,77.415817000000061],[-81.254729999999995,77.420532000000094],[-81.277495999999928,77.42442299999999],[-81.294448999999929,77.429153000000042],[-81.310546999999985,77.434982000000048],[-81.316665999999998,77.438873000000115],[-81.321121000000005,77.450272000000041],[-81.325287000000003,77.454987000000074],[-81.337509000000011,77.462769000000037],[-81.351669000000015,77.469711000000075],[-81.370543999999938,77.475540000000137],[-81.388901000000033,77.480819999999994],[-81.442215000000033,77.491364000000033],[-81.533889999999928,77.506942999999978],[-81.573623999999938,77.512771999999984],[-81.587783999999942,77.517487000000017],[-81.589721999999995,77.520828000000051],[-81.608337000000006,77.553588999999988],[-81.610549999999989,77.576096000000064],[-81.820281999999963,77.621918000000107],[-81.839721999999938,77.625809000000004],[-81.845001000000025,77.628860000000032],[-81.848617999999988,77.639434999999935],[-81.847778000000005,77.643326000000002],[-81.836670000000026,77.65498400000007],[-81.847503999999901,77.665817000000004],[-81.860000999999954,77.671371000000022],[-81.876662999999951,77.677475000000072],[-81.89527899999996,77.682480000000112],[-81.913894999999911,77.685532000000023],[-81.928329000000019,77.685806000000127],[-81.930283000000031,77.684981999999991],[-81.935546999999929,77.678040000000067],[-81.949158000000011,77.655258000000003],[-81.949431999999945,77.644989000000123],[-81.911391999999921,77.609421000000111],[-81.895844000000011,77.604156000000046],[-81.857223999999974,77.598877000000073],[-81.810271999999941,77.595260999999994],[-81.798049999999989,77.59165999999999],[-81.787506000000008,77.587494000000049],[-81.678054999999972,77.538315000000068],[-81.670546999999942,77.531662000000097],[-81.667220999999984,77.52526899999998],[-81.666945999999996,77.502213000000097],[-81.670836999999949,77.496094000000085],[-81.690276999999924,77.485260000000039],[-81.710555999999997,77.474990999999989],[-81.71945199999999,77.469986000000119],[-81.748046999999929,77.448029000000076],[-81.743606999999997,77.441086000000098],[-81.739440999999999,77.436371000000065],[-81.728881999999999,77.429977000000008],[-81.700561999999877,77.422760000000096],[-81.523620999999991,77.378036000000122],[-81.484726000000023,77.372208000000001],[-81.432220000000029,77.368042000000059],[-81.336670000000026,77.368591000000038],[-81.25140399999998,77.36914100000007],[-81.203888000000006,77.370529000000147],[-81.189986999999917,77.368042000000059],[-81.178054999999972,77.360259999999926],[-81.172775000000001,77.354705999999965],[-81.167769999999962,77.342758000000117],[-81.165833000000021,77.337204000000099],[-81.165833000000021,77.332764000000054],[-81.169448999999986,77.32249500000006],[-81.283889999999985,77.315262000000018],[-81.425003000000004,77.306366000000082],[-81.538329999999974,77.302765000000079],[-81.874999999999943,77.292480000000126],[-81.953887999999949,77.302200000000028],[-82.091948999999943,77.316376000000048],[-82.151397999999972,77.303864000000033],[-82.166107000000011,77.292480000000126],[-82.081680000000006,77.272766000000047],[-82.043335000000013,77.265548999999908],[-81.978881999999999,77.258331000000112],[-81.90695199999999,77.198318000000029],[-81.906577999999968,77.1933140000001],[-81.902221999999995,77.187195000000031],[-81.876099000000011,77.174698000000092],[-81.868057000000022,77.171646000000123],[-81.834166999999866,77.162491000000102],[-81.796660999999972,77.157486000000063],[-81.78694200000001,77.157486000000063],[-81.715835999999967,77.176926000000037],[-81.696654999999907,77.181366000000025],[-81.634444999999971,77.193863000000022],[-81.607497999999964,77.197479000000101],[-81.395003999999972,77.231659000000036],[-81.149170000000026,77.274703999999986],[-80.960281000000009,77.271378000000141],[-80.592772999999966,77.242477000000008],[-80.526397999999915,77.234985000000052],[-80.280288999999868,77.213608000000022],[-80.258621000000005,77.212204000000042],[-80.205840999999964,77.209427000000119],[-80.154998999999975,77.208037999999931],[-80.135833999999988,77.205826000000059],[-80.116104000000007,77.20138500000013],[-80.114715999999987,77.195525999999973],[-80.136947999999961,77.186096000000077],[-80.152785999999992,77.181656000000032],[-80.255004999999983,77.153320000000122],[-80.401671999999962,77.086655000000007],[-80.40972899999997,77.081100000000106],[-80.40972899999997,77.076660000000118],[-80.394454999999937,77.072769000000051],[-80.373046999999929,77.071380999999917],[-80.34584000000001,77.074996999999996],[-80.328063999999927,77.078323000000012],[-80.206954999999937,77.108597000000088],[-80.159438999999963,77.122756999999979],[-80.135009999999966,77.139435000000049],[-80.118606999999997,77.150818000000072],[-80.094726999999978,77.161102000000085],[-80.072509999999909,77.17053199999998],[-80.013335999999924,77.190536000000066],[-79.93582200000003,77.206650000000025],[-79.785278000000005,77.231368999999972],[-79.725829999999917,77.239975000000072],[-79.660277999999948,77.24443100000002],[-79.633057000000008,77.243317000000047],[-79.445540999999992,77.234421000000111],[-79.424163999999905,77.233047000000113],[-79.255004999999983,77.218596999999988],[-79.216949,77.209717000000126],[-79.041945999999882,77.161102000000085],[-79.033066000000019,77.156647000000078],[-79.02806099999998,77.150543000000027],[-79.003890999999953,77.103592000000049],[-79.005004999999926,77.09693900000002],[-79.013335999999924,77.09137000000004],[-79.029723999999987,77.086929000000112],[-79.132492000000013,77.053589000000045],[-79.328888000000006,76.978591999999935],[-79.365554999999915,76.963318000000072],[-79.376663000000008,76.957489000000066],[-79.391387999999949,76.947204999999997],[-79.395003999999915,76.940536000000122],[-79.393065999999976,76.934143000000006],[-79.386948000000018,76.927475000000015],[-79.37222300000002,76.923309000000131],[-79.34584000000001,76.91804500000012],[-79.317504999999926,76.917755000000113],[-79.244445999999925,76.924987999999928],[-79.193053999999904,76.929152999999928],[-79.005843999999911,76.936096000000134],[-78.980835000000013,76.936371000000122],[-78.954178000000013,76.935256999999979],[-78.886123999999995,76.926926000000094],[-78.870834000000002,76.922211000000061],[-78.866394000000014,76.918869000000086],[-78.910004000000015,76.886658000000011],[-78.915282999999988,76.839706000000092],[-78.748336999999935,76.822494999999947],[-78.721938999999963,76.821380999999974],[-78.712218999999948,76.823318000000029],[-78.708053999999947,76.824997000000053],[-78.56361400000003,76.906647000000135],[-78.566101000000003,76.913605000000132],[-78.567504999999983,76.927200000000028],[-78.562774999999874,76.933043999999995],[-78.553878999999938,76.938582999999994],[-78.547775000000001,76.941360000000088],[-78.384444999999914,76.99971000000005],[-78.344161999999926,77.007767000000001],[-78.32028200000002,77.011658000000068],[-78.292770000000019,77.014709000000096],[-78.196944999999971,77.019440000000031],[-78.140838999999914,77.01998900000001],[-78.087219000000005,77.017761000000007],[-78.07028200000002,77.014434999999992],[-77.896666999999979,76.955551000000128],[-77.886947999999961,76.947754000000145],[-77.881103999999993,76.940262000000018],[-77.779448999999943,76.79136699999998],[-77.789443999999946,76.78166200000004],[-77.813323999999966,76.692748999999992],[-77.813613999999973,76.687759000000085],[-77.813048999999864,76.68193100000002],[-77.804992999999968,76.675261999999918],[-77.769454999999937,76.658325000000104],[-77.78443900000002,76.650269000000037],[-77.810271999999941,76.640823000000069],[-77.841110000000015,76.633331000000112],[-77.861663999999905,76.629700000000071],[-77.918335000000013,76.62831100000011],[-77.947219999999959,76.629425000000083],[-77.985000999999954,76.632476999999994],[-78.013625999999988,76.630814000000044],[-78.027495999999985,76.626922999999977],[-78.089721999999995,76.609420999999941],[-78.097777999999948,76.606094000000041],[-78.178328999999962,76.566085999999984],[-78.186110999999926,76.559708000000001],[-78.206107999999972,76.53914600000013],[-78.256667999999934,76.506653000000142],[-78.364440999999999,76.462493999999992],[-78.377486999999917,76.458038000000101],[-78.435103999999967,76.453171000000111],[-78.443328999999892,76.452209000000096],[-78.473052999999993,76.451660000000118],[-78.519164999999987,76.456940000000031],[-78.552490000000034,76.464157000000114],[-78.607772999999952,76.486649000000057],[-78.61471599999993,76.489975000000072],[-78.619445999999982,76.496094000000085],[-78.616942999999992,76.498871000000008],[-78.615004999999883,76.5],[-78.611388999999917,76.49941999999993],[-78.597228999999913,76.505264000000125],[-78.591949,76.5086060000001],[-78.588332999999977,76.513046000000088],[-78.613327000000027,76.547759999999982],[-78.627212999999927,76.563873000000001],[-78.75111400000003,76.572220000000016],[-78.773330999999985,76.572768999999937],[-78.790558000000033,76.571655000000135],[-78.868331999999953,76.521103000000096],[-78.886947999999961,76.497208000000057],[-78.900833000000034,76.478867000000093],[-78.937774999999988,76.449997000000053],[-78.946655000000021,76.444976999999994],[-78.96945199999999,76.43414300000012],[-78.994155999999975,76.424423000000047],[-79.013061999999991,76.420258000000047],[-79.06138599999997,76.41276600000009],[-79.090285999999992,76.411377000000073],[-79.139174999999966,76.411652000000117],[-79.170837000000006,76.409988000000112],[-79.18971299999987,76.405823000000112],[-79.198043999999868,76.400269000000094],[-79.261123999999995,76.352202999999975],[-79.265563999999927,76.346100000000035],[-79.266402999999968,76.339432000000102],[-79.262786999999946,76.331940000000145],[-79.254181000000017,76.320267000000115],[-79.25306699999993,76.314697000000024],[-79.261123999999995,76.309143000000063],[-79.272780999999952,76.304152999999985],[-79.312774999999988,76.297484999999995],[-79.338608000000022,76.296371000000022],[-79.365828999999962,76.296646000000067],[-79.414168999999902,76.301086000000055],[-79.445540999999992,76.306641000000127],[-79.500838999999928,76.314148000000102],[-79.525283999999886,76.31442300000009],[-79.573623999999995,76.311645999999996],[-79.596664000000033,76.308594000000085],[-79.805556999999965,76.278320000000065],[-79.924438000000009,76.25360100000006],[-80.061385999999914,76.226928999999984],[-80.087218999999948,76.223602000000085],[-80.107223999999974,76.2227630000001],[-80.121658000000025,76.224426000000051],[-80.136123999999995,76.228317000000118],[-80.156386999999881,76.23692299999999],[-80.178329000000019,76.239700000000084],[-80.203613000000018,76.240539999999953],[-80.230285999999978,76.239975000000129],[-80.261123999999995,76.238312000000008],[-80.2933349999999,76.235260000000096],[-80.338332999999977,76.228317000000118],[-80.366942999999992,76.218048000000067],[-80.375548999999921,76.213043000000027],[-80.383056999999951,76.20748900000001],[-80.396666999999923,76.202208999999982],[-80.412216000000001,76.198029000000133],[-80.426940999999886,76.195525999999973],[-80.506957999999941,76.196365000000128],[-80.606383999999991,76.191650000000095],[-80.627486999999917,76.187195000000088],[-80.637787000000003,76.17053199999998],[-80.639724999999885,76.167480000000069],[-80.654175000000009,76.162491000000102],[-80.672501000000011,76.158325000000048],[-80.703338999999971,76.156647000000078],[-80.949996999999996,76.144989000000066],[-81.053329000000019,76.128036000000009],[-81.075835999999924,76.129149999999981],[-81.085830999999928,76.134155000000021],[-81.090285999999935,76.137496999999939],[-81.095551,76.212204000000042],[-81.047501000000011,76.249419999999986],[-81.041106999999954,76.25360100000006],[-81.026397999999915,76.258331000000112],[-80.903885000000002,76.312194999999974],[-80.783614999999998,76.374985000000095],[-80.769454999999994,76.384720000000016],[-80.761123999999995,76.394150000000081],[-80.760009999999909,76.40415999999999],[-80.763625999999874,76.411102000000085],[-80.771666999999923,76.419144000000017],[-80.78472899999997,76.423874000000069],[-80.991668999999945,76.483047000000056],[-81.188889000000017,76.518875000000094],[-81.275008999999955,76.533325000000048],[-81.304169000000002,76.510544000000039],[-81.337218999999891,76.494980000000112],[-81.351944000000003,76.490265000000079],[-81.388901000000033,76.481368999999972],[-81.411117999999988,76.477478000000076],[-81.460830999999928,76.471374999999966],[-81.492492999999911,76.469437000000028],[-81.521941999999967,76.468596999999988],[-81.636948000000018,76.468872000000147],[-81.71665999999999,76.470260999999994],[-81.788605000000018,76.474700999999982],[-81.879990000000021,76.483871000000022],[-82.039718999999934,76.509430000000066],[-82.05860899999999,76.513610999999969],[-82.075835999999981,76.518600000000106],[-82.083617999999944,76.523879999999963],[-82.03195199999999,76.553588999999988],[-81.985000999999954,76.578597999999943],[-81.981948999999929,76.584717000000012],[-81.993331999999953,76.590270999999973],[-82.045273000000009,76.603592000000106],[-82.056655999999862,76.609146000000123],[-82.049438000000009,76.612488000000042],[-81.953338999999914,76.631927000000132],[-81.873610999999869,76.645828000000108],[-81.851394999999968,76.649719000000005],[-81.814163000000008,76.658599999999922],[-81.790282999999931,76.667755],[-81.782227000000034,76.672760000000039],[-81.776947000000007,76.677475000000072],[-81.778885000000002,76.681090999999924],[-81.785827999999924,76.685532000000023],[-81.799163999999962,76.685805999999957],[-81.819457999999997,76.682754999999986],[-81.838057999999933,76.678314000000057],[-81.852782999999988,76.673599000000024],[-81.861938000000009,76.669144000000017],[-81.893341000000021,76.660812000000021],[-82.081115999999952,76.631087999999977],[-82.115554999999915,76.628860000000032],[-82.145553999999947,76.628036000000066],[-82.199996999999996,76.628586000000098],[-82.273330999999928,76.633331000000112],[-82.292495999999971,76.635544000000095],[-82.326950000000011,76.641373000000101],[-82.346114999999998,76.645538000000101],[-82.377486999999917,76.657485999999949],[-82.442490000000021,76.684981999999991],[-82.470276000000013,76.698868000000004],[-82.476668999999958,76.704712000000029],[-82.487212999999997,76.717758000000117],[-82.580291999999986,76.776382000000012],[-82.596114999999998,76.782486000000006],[-82.698607999999979,76.812485000000038],[-82.725005999999951,76.819153000000028],[-82.749725000000012,76.818604000000107],[-82.767226999999991,76.813309000000004],[-82.769729999999925,76.811096000000077],[-82.76556399999987,76.808318999999983],[-82.74610899999999,76.804153000000042],[-82.728333000000021,76.799149000000114],[-82.698607999999979,76.788589000000002],[-82.640563999999983,76.766388000000006],[-82.556106999999997,76.723038000000031],[-82.558333999999945,76.718322999999998],[-82.566665999999941,76.707489000000123],[-82.569457999999941,76.701385000000073],[-82.562499999999943,76.688873000000058],[-82.545546999999942,76.674149000000057],[-82.533324999999991,76.666382000000056],[-82.460555999999997,76.636108000000036],[-82.435271999999998,76.628036000000066],[-82.415008999999884,76.62303199999991],[-82.308884000000035,76.609420999999941],[-82.208054000000004,76.593048000000067],[-82.113891999999908,76.572220000000016],[-82.102218999999991,76.568878000000041],[-82.081115999999952,76.561096000000134],[-82.093886999999995,76.557205000000067],[-82.175002999999947,76.546936000000017],[-82.196944999999971,76.542755000000113],[-82.211394999999925,76.53804000000008],[-82.22222899999997,76.532761000000107],[-82.225280999999995,76.526657000000057],[-82.224715999999887,76.520264000000111],[-82.222504000000015,76.514435000000105],[-82.216399999999965,76.5086060000001],[-82.189437999999882,76.486649000000057],[-82.158050999999944,76.466095000000053],[-82.147232000000031,76.461105000000032],[-82.135558999999944,76.453323000000069],[-82.131377999999927,76.448593000000017],[-82.127212999999927,76.441650000000038],[-82.132216999999912,76.436919999999986],[-82.162505999999951,76.421921000000111],[-82.17971799999998,76.416931000000091],[-82.209441999999967,76.409988000000112],[-82.260284000000013,76.398605000000089],[-82.293335000000013,76.395827999999995],[-82.348342999999943,76.395537999999988],[-82.483063000000016,76.396378000000027],[-82.704453000000001,76.386932000000058],[-82.833327999999881,76.397766000000104],[-82.990554999999915,76.426650999999993],[-83.003615999999965,76.429153000000042],[-83.0625,76.450272000000041],[-83.099730999999963,76.463882000000126],[-83.102492999999981,76.469437000000028],[-83.096953999999982,76.475814999999955],[-83.08944699999995,76.480819999999994],[-83.065001999999993,76.491089000000045],[-83.061935000000005,76.497208000000057],[-83.075012000000015,76.532761000000107],[-83.084441999999967,76.546370999999965],[-83.110001000000011,76.579987000000131],[-83.116652999999985,76.586105000000089],[-83.198607999999979,76.619431000000077],[-83.338897999999858,76.66415400000011],[-83.384170999999981,76.730819999999994],[-83.365279999999927,76.740540000000067],[-83.358611999999937,76.746094000000028],[-83.355834999999956,76.752213000000097],[-83.362212999999997,76.756103999999937],[-83.379989999999964,76.758881000000031],[-83.400833000000034,76.759995000000004],[-83.410003999999901,76.757767000000058],[-83.497498000000007,76.723876999999959],[-83.518340999999964,76.713318000000129],[-83.523620999999935,76.706649999999968],[-83.523330999999928,76.700821000000133],[-83.520553999999947,76.695251000000042],[-83.515014999999948,76.689972000000068],[-83.499161000000015,76.676651000000106],[-83.352218999999991,76.612488000000042],[-83.331116000000009,76.603317000000118],[-83.316101000000003,76.598037999999974],[-83.298614999999984,76.593048000000067],[-83.278060999999923,76.588318000000072],[-83.254181000000017,76.579437000000098],[-83.246383999999978,76.572768999999937],[-83.207503999999915,76.505553999999961],[-83.184432999999899,76.424988000000042],[-83.188323999999966,76.419434000000081],[-83.202224999999942,76.414428999999984],[-83.223617999999874,76.410537999999917],[-83.256667999999991,76.407486000000006],[-83.285827999999981,76.406372000000033],[-83.439986999999917,76.411102000000085],[-83.619995000000017,76.423599000000081],[-83.691100999999946,76.428863999999919],[-83.710555999999997,76.433044000000109],[-83.735000999999954,76.444138000000009],[-83.734160999999915,76.449141999999995],[-83.735275000000001,76.455826000000059],[-83.740554999999972,76.462769000000037],[-83.756667999999991,76.468596999999988],[-83.893616000000009,76.501663000000065],[-83.985001000000011,76.520538000000045],[-84.018616000000009,76.529433999999981],[-84.033614999999941,76.534714000000065],[-84.046660999999972,76.542205999999965],[-84.058334000000002,76.553040000000067],[-84.058884000000035,76.558868000000132],[-84.061661000000015,76.585266000000104],[-84.070846999999901,76.616653000000042],[-84.086670000000026,76.62414600000011],[-84.101944000000003,76.629425000000083],[-84.118880999999988,76.633880999999974],[-84.138610999999912,76.637772000000041],[-84.261123999999995,76.65554800000001],[-84.284438999999963,76.657760999999994],[-84.31082200000003,76.658325000000104],[-84.319732999999871,76.656096999999988],[-84.324722000000008,76.653320000000065],[-84.330841000000021,76.647491000000059],[-84.313323999999909,76.641098000000113],[-84.256667999999991,76.628586000000098],[-84.220551,76.622207999999944],[-84.202498999999932,76.617203000000075],[-84.193053999999961,76.609985000000108],[-84.194442999999978,76.606934000000081],[-84.216948999999886,76.571655000000135],[-84.249725000000012,76.536926000000108],[-84.248336999999992,76.530548000000124],[-84.24499499999996,76.524993999999936],[-84.221114999999941,76.510817999999972],[-84.208617999999888,76.505264000000125],[-84.192490000000021,76.49941999999993],[-84.179717999999923,76.49192800000003],[-84.180832000000009,76.484984999999995],[-84.195540999999935,76.45637499999998],[-84.205565999999976,76.451096000000007],[-84.215835999999967,76.448029000000076],[-84.236938000000009,76.443587999999977],[-84.489166000000012,76.429153000000042],[-84.518615999999952,76.427765000000136],[-84.570846999999958,76.428863999999919],[-84.619720000000029,76.431656000000032],[-84.636947999999961,76.434418000000107],[-84.652785999999992,76.438034000000016],[-84.783889999999985,76.469986000000119],[-84.792770000000019,76.474990999999989],[-84.785278000000005,76.485260000000039],[-84.783889999999985,76.489975000000072],[-84.795273000000009,76.503876000000048],[-84.848891999999921,76.53637700000013],[-84.860001000000011,76.542755000000113],[-84.950561999999934,76.577773999999977],[-84.970550999999944,76.581940000000088],[-84.991378999999938,76.582764000000054],[-85.016402999999912,76.578872999999987],[-85.028335999999967,76.57499700000011],[-85.034163999999976,76.569153000000085],[-85.051391999999964,76.514160000000061],[-85.022507000000019,76.456099999999992],[-84.970276000000013,76.426086000000112],[-84.960281000000009,76.42053199999998],[-84.944442999999978,76.416931000000091],[-84.904175000000009,76.411926000000051],[-84.728058000000033,76.390273999999977],[-84.43638599999997,76.338593000000117],[-84.397506999999962,76.330551000000128],[-84.381377999999927,76.324706999999933],[-84.376098999999954,76.317764000000125],[-84.381942999999978,76.31191999999993],[-84.393889999999999,76.308029000000033],[-84.413054999999986,76.304703000000018],[-84.429169000000002,76.303040000000067],[-84.533614999999941,76.30581699999999],[-84.716659999999933,76.306930999999963],[-84.776397999999972,76.303314],[-84.898055999999997,76.288589000000059],[-84.928328999999962,76.286377000000016],[-85.174438000000009,76.280272999999966],[-85.232223999999917,76.295257999999933],[-85.36221299999994,76.303314],[-85.505004999999983,76.321930000000066],[-85.523055999999883,76.326660000000061],[-85.544448999999986,76.329987000000017],[-85.698333999999988,76.34887700000013],[-85.952498999999932,76.368591000000038],[-85.978058000000033,76.370528999999976],[-86.004181000000017,76.37081900000004],[-86.110274999999945,76.368317000000104],[-86.134734999999978,76.369431000000077],[-86.281677000000002,76.376923000000033],[-86.330565999999976,76.3808140000001],[-86.37222300000002,76.38638300000008],[-86.412216000000001,76.40776100000005],[-86.415008999999884,76.41276600000009],[-86.421386999999925,76.456940000000031],[-86.418610000000001,76.469147000000021],[-86.409728999999913,76.474700999999982],[-86.398055999999997,76.478867000000093],[-86.378875999999991,76.483871000000022],[-86.36082499999992,76.487762000000089],[-86.307769999999948,76.49552900000009],[-86.277785999999935,76.5],[-86.256119000000012,76.503876000000048],[-86.22222899999997,76.513321000000133],[-86.213057999999933,76.518600000000106],[-86.20777899999996,76.524429000000112],[-86.211944999999957,76.535262999999986],[-86.226104999999961,76.542755000000113],[-86.532776000000013,76.623306000000014],[-86.594161999999983,76.634994999999947],[-86.63034099999993,76.635132000000112],[-86.625823999999966,76.629425000000083],[-86.601104999999961,76.619979999999998],[-86.512512000000015,76.586929000000055],[-86.36221299999994,76.541655999999932],[-86.342223999999987,76.512206999999933],[-86.508056999999894,76.487762000000089],[-86.64916999999997,76.458878000000141],[-86.664718999999991,76.419708000000014],[-86.711120999999991,76.348037999999974],[-86.71665999999999,76.346100000000035],[-86.770554000000004,76.350815000000068],[-87.083327999999995,76.379424999999912],[-87.130829000000006,76.384155000000135],[-87.148346000000004,76.388321000000076],[-87.154998999999975,76.39498900000001],[-87.154175000000009,76.40109300000006],[-87.225280999999995,76.448029000000076],[-87.426665999999898,76.468596999999988],[-87.462783999999942,76.586929000000055],[-87.468886999999995,76.59165999999999],[-87.520279000000016,76.612488000000042],[-87.53694200000001,76.617477000000008],[-87.563613999999973,76.616379000000109],[-87.580001999999979,76.611374000000069],[-87.583618000000001,76.604980000000012],[-87.598617999999988,76.540817000000004],[-87.595550999999944,76.534149000000014],[-87.553604000000007,76.451096000000007],[-87.545273000000009,76.443587999999977],[-87.53694200000001,76.439147999999989],[-87.516953000000001,76.432479999999998],[-87.500290000000007,76.428863999999919],[-87.455276000000026,76.423874000000069],[-87.429992999999911,76.417755000000056],[-87.402495999999985,76.352768000000026],[-87.416397000000018,76.348037999999974],[-87.591384999999889,76.341094999999996],[-87.648894999999868,76.338043000000084],[-87.719726999999978,76.343048000000124],[-87.742767000000015,76.34637500000008],[-87.760559000000001,76.352202999999975],[-87.788604999999961,76.366378999999995],[-87.817229999999995,76.390549000000021],[-87.864166000000012,76.38998400000014],[-87.900833000000034,76.363037000000077],[-87.916945999999996,76.359711000000004],[-87.948333999999988,76.357758000000103],[-87.997771999999998,76.358322000000044],[-88.351104999999905,76.384995000000004],[-88.389998999999875,76.389708999999982],[-88.42971799999998,76.398041000000148],[-88.434433000000013,76.402205999999978],[-88.391953000000001,76.454163000000108],[-88.371932999999956,76.476089000000059],[-88.355835000000013,76.481093999999928],[-88.348617999999988,76.487198000000149],[-88.349441999999954,76.514435000000105],[-88.356658999999979,76.521103000000096],[-88.442764000000011,76.59165999999999],[-88.515288999999939,76.636108000000036],[-88.509170999999981,76.697478999999987],[-88.488601999999958,76.765274000000034],[-88.479720999999927,76.776932000000045],[-88.476669000000015,76.783324999999991],[-88.474715999999887,76.788879000000009],[-88.474715999999887,76.794983000000002],[-88.477782999999988,76.807755000000043],[-88.485275000000001,76.814422999999977],[-88.494719999999973,76.81721500000009],[-88.518889999999999,76.816086000000098],[-88.541945999999939,76.812758999999971],[-88.554442999999935,76.807479999999998],[-88.557220000000029,76.805817000000104],[-88.701950000000011,76.707489000000123],[-88.683318999999983,76.701935000000105],[-88.649733999999967,76.684143000000063],[-88.591949,76.642761000000007],[-88.584441999999967,76.635818000000029],[-88.495543999999938,76.552199999999971],[-88.489440999999999,76.503326000000015],[-88.496383999999978,76.497208000000057],[-88.571670999999924,76.473602000000028],[-88.593558999999971,76.455933000000016],[-88.60321799999997,76.449265000000025],[-88.608214999999973,76.442261000000144],[-88.607727000000011,76.439095000000009],[-88.608611999999994,76.416092000000106],[-88.59973100000002,76.409988000000112],[-88.597503999999958,76.405823000000112],[-88.608046999999942,76.399994000000049],[-88.631942999999922,76.397217000000012],[-88.656386999999881,76.398330999999985],[-88.67721599999993,76.401932000000045],[-88.689986999999974,76.408324999999991],[-88.693603999999993,76.414703000000145],[-88.693329000000006,76.420821999999987],[-88.684998000000007,76.432479999999998],[-88.678054999999972,76.441650000000038],[-88.659508000000017,76.478706000000102],[-88.646506999999986,76.489212000000009],[-88.640288999999996,76.558594000000028],[-88.644164999999987,76.565262000000018],[-88.651672000000019,76.571930000000009],[-88.660277999999948,76.577773999999977],[-88.688888999999961,76.591369999999984],[-88.710006999999962,76.594986000000006],[-88.733611999999937,76.593872000000033],[-88.740828999999962,76.587769000000094],[-88.791381999999942,76.513321000000133],[-88.795273000000009,76.479431000000034],[-88.786666999999909,76.473602000000028],[-88.781386999999938,76.466385000000059],[-88.783324999999991,76.460815000000025],[-88.799438000000009,76.449997000000053],[-88.901671999999962,76.408324999999991],[-88.921111999999937,76.40525800000006],[-88.947220000000016,76.40525800000006],[-88.994155999999919,76.409149000000127],[-89.166396999999961,76.424423000000047],[-89.213332999999977,76.429703000000075],[-89.231673999999998,76.433593999999971],[-89.353333000000021,76.479979999999955],[-89.407227000000034,76.515823000000012],[-89.490279999999927,76.557480000000055],[-89.499435000000005,76.54664600000001],[-89.515015000000005,76.541655999999932],[-89.541381999999999,76.541655999999932],[-89.667220999999984,76.564423000000033],[-89.676665999999955,76.567215000000147],[-89.679442999999992,76.571655000000135],[-89.614166000000012,76.616089000000102],[-89.603607000000011,76.621918000000107],[-89.571945000000028,76.631653000000028],[-89.528335999999967,76.640823000000069],[-89.480559999999969,76.649428999999998],[-89.443329000000006,76.658325000000104],[-89.431380999999988,76.663605000000018],[-89.415558000000033,76.67442299999999],[-89.411666999999966,76.680266999999958],[-89.434432999999899,76.724426000000108],[-89.47222899999997,76.784714000000008],[-89.496947999999918,76.820267000000001],[-89.514449999999954,76.835815000000025],[-89.529175000000009,76.847214000000122],[-89.533324999999991,76.853592000000049],[-89.521392999999932,76.858871000000079],[-89.417770000000019,76.886658000000011],[-89.279449,76.906936999999971],[-89.238892000000021,76.916091999999992],[-89.14805599999994,76.925537000000077],[-88.986938000000009,76.954436999999928],[-88.976104999999961,76.959991000000116],[-88.898894999999982,76.985535000000141],[-88.769164999999987,76.998871000000065],[-88.740279999999927,77.00277699999998],[-88.719451999999933,77.007492000000013],[-88.702788999999939,77.012207000000046],[-88.50111400000003,77.071655000000078],[-88.473327999999981,77.096649000000014],[-88.544723999999917,77.098038000000031],[-88.545837000000006,77.100266000000147],[-88.426392000000021,77.12081900000004],[-88.307219999999973,77.128860000000088],[-88.278335999999911,77.129699999999957],[-88.172501000000011,77.128035999999952],[-88.154175000000009,77.116088999999988],[-87.967223999999931,77.127472000000012],[-87.690552000000025,77.135268999999994],[-87.670272999999952,77.133606000000043],[-87.656951999999933,77.130264000000125],[-87.642501999999979,77.124984999999924],[-87.626937999999996,77.117477000000122],[-87.619719999999973,77.110809000000131],[-87.568892999999889,77.099426000000108],[-87.455841000000021,77.101929000000098],[-87.349166999999966,77.106094000000098],[-87.337783999999886,77.110259999999982],[-87.353607000000011,77.114700000000028],[-87.37222300000002,77.117203000000018],[-87.451401000000033,77.122756999999979],[-87.460555999999997,77.125534000000073],[-87.456664999999987,77.131927000000019],[-87.452224999999999,77.136383000000137],[-87.432219999999973,77.149719000000061],[-87.416107000000011,77.156647000000078],[-87.404174999999896,77.160812000000078],[-87.356383999999991,77.17553700000002],[-87.33666999999997,77.179153000000099],[-87.312774999999988,77.180817000000104],[-87.069167999999991,77.182755000000043],[-87.044448999999929,77.180542000000059],[-86.959166999999979,77.161926000000051],[-86.951674999999966,77.158324999999991],[-86.946945000000028,77.154433999999924],[-86.951949999999897,77.149994000000106],[-86.951401000000033,77.144714000000022],[-86.942490000000021,77.141936999999928],[-86.875274999999931,77.132202000000063],[-86.829177999999956,77.127762000000018],[-86.804442999999992,77.127197000000024],[-86.791381999999999,77.130813999999987],[-86.739990000000034,77.174149000000114],[-86.773620999999935,77.185806000000071],[-86.960006999999962,77.195815999999979],[-87.15055799999999,77.199417000000039],[-87.148055999999997,77.198029000000133],[-87.146956999999929,77.195815999999979],[-87.161117999999931,77.194426999999962],[-87.182769999999948,77.196930000000123],[-87.196105999999929,77.199997000000053],[-87.21055599999994,77.205261000000064],[-87.174437999999896,77.229431000000034],[-87.166945999999939,77.233871000000079],[-87.141388000000006,77.238037000000134],[-87.007232999999985,77.255829000000006],[-86.976669000000015,77.257492000000127],[-86.948882999999967,77.255554000000018],[-86.928329000000019,77.255264000000011],[-86.910552999999936,77.260269000000051],[-86.919158999999979,77.266098000000056],[-86.947494999999947,77.271652000000074],[-86.984436000000017,77.274703999999986],[-87.012221999999952,77.274993999999992],[-87.078063999999927,77.273604999999975],[-87.106110000000001,77.272217000000069],[-87.136672999999973,77.272217000000069],[-87.183884000000035,77.273604999999975],[-87.197495000000004,77.27526899999998],[-87.229171999999949,77.285538000000031],[-87.245270000000005,77.298325000000034],[-87.24888599999997,77.303314],[-87.108611999999994,77.338318000000072],[-87.09584000000001,77.34027100000003],[-87.068618999999956,77.342209000000139],[-87.037780999999995,77.342209000000139],[-86.962783999999942,77.339157000000057],[-86.934722999999963,77.338882000000012],[-86.900283999999999,77.342209000000139],[-86.845839999999953,77.349152000000117],[-86.829726999999991,77.353043000000014],[-86.838608000000022,77.357483000000059],[-86.851944000000003,77.360535000000141],[-86.963332999999977,77.366378999999995],[-87.064162999999951,77.366928000000087],[-87.091109999999958,77.366378999999995],[-87.241378999999938,77.356094000000041],[-87.263061999999877,77.351654000000053],[-87.280838000000017,77.34693900000002],[-87.294158999999979,77.34165999999999],[-87.326110999999969,77.333878000000084],[-87.358886999999982,77.331375000000094],[-87.391112999999962,77.330551000000128],[-87.416397000000018,77.330826000000116],[-87.695830999999998,77.35554500000012],[-87.711945000000014,77.359985000000108],[-87.715835999999911,77.363312000000064],[-87.775283999999999,77.415543000000127],[-87.780288999999982,77.421097000000145],[-87.78472899999997,77.429703000000075],[-87.775009000000011,77.441360000000032],[-87.748336999999992,77.451660000000118],[-87.730834999999956,77.45637499999998],[-87.669539999999984,77.469238000000018],[-87.65194699999995,77.474990999999989],[-87.642501999999979,77.480270000000132],[-87.646117999999944,77.486923000000104],[-87.694442999999978,77.537201000000096],[-87.711120999999878,77.541656000000103],[-87.868880999999988,77.578598000000113],[-88.063048999999978,77.618866000000025],[-88.162216000000001,77.626923000000147],[-88.180556999999965,77.631927000000132],[-88.200835999999924,77.642761000000007],[-88.214721999999995,77.650542999999971],[-88.223617999999931,77.662490999999989],[-88.223052999999993,77.667206000000022],[-88.221114999999884,77.672760000000039],[-88.162780999999995,77.758330999999998],[-88.06806899999998,77.820267000000001],[-87.835830999999928,77.840271000000087],[-87.640563999999983,77.862487999999985],[-87.294723999999917,77.898041000000035],[-87.231383999999935,77.898880000000133],[-87.174712999999997,77.897491000000002],[-86.876099000000011,77.8836060000001],[-86.824172999999917,77.879424999999969],[-86.651671999999962,77.860260000000039],[-86.46166999999997,77.836105000000032],[-86.422225999999966,77.830826000000059],[-86.377486999999917,77.822769000000051],[-86.222778000000005,77.794434000000024],[-86.198883000000023,77.786102000000085],[-85.986938000000009,77.711380000000133],[-85.975280999999882,77.705825999999945],[-85.884445000000028,77.632751000000098],[-85.718886999999995,77.472214000000065],[-85.715835999999967,77.467209000000025],[-85.717223999999931,77.462493999999992],[-85.727218999999877,77.451934999999935],[-85.748610999999983,77.446930000000066],[-85.76916499999993,77.443587999999977],[-85.775832999999921,77.439972000000068],[-85.795837000000006,77.423874000000069],[-85.794448999999929,77.419708000000128],[-85.776947000000007,77.421371000000079],[-85.551391999999964,77.458328000000108],[-85.530562999999916,77.461928999999941],[-85.493331999999953,77.430267000000015],[-85.436385999999914,77.404159999999933],[-85.39973399999991,77.395827999999995],[-85.376662999999894,77.392487000000131],[-85.299438000000009,77.387772000000098],[-85.270003999999915,77.386658000000125],[-85.155838000000017,77.387497000000053],[-84.973327999999867,77.377197000000137],[-84.954726999999934,77.374420000000043],[-84.9375,77.370818999999983],[-84.875274999999988,77.351654000000053],[-84.825286999999946,77.334152000000017],[-84.759170999999867,77.318328999999949],[-84.719727000000034,77.311645999999996],[-84.649444999999957,77.304428000000144],[-84.601944000000003,77.300537000000077],[-84.529175000000009,77.295822000000044],[-84.479445999999996,77.294434000000138],[-84.466399999999965,77.296371000000022],[-84.463333000000034,77.300262000000089],[-84.47444200000001,77.3119200000001],[-84.481948999999986,77.317764000000125],[-84.494719999999973,77.321106000000043],[-84.520279000000016,77.324157999999954],[-84.553878999999995,77.331375000000094],[-84.569167999999991,77.339705999999978],[-84.615004999999996,77.383040999999992],[-84.612777999999878,77.389160000000004],[-84.603881999999942,77.393599999999992],[-84.58555599999994,77.398041000000092],[-84.550277999999935,77.401382000000126],[-84.520844000000011,77.401657],[-84.49610899999999,77.399428999999998],[-84.470550999999944,77.396378000000027],[-84.429442999999935,77.388884999999959],[-84.386397999999986,77.383881000000031],[-84.33444199999991,77.383040999999992],[-84.27027899999996,77.384995000000004],[-84.153609999999958,77.39498900000001],[-84.061661000000015,77.398605000000032],[-84.005843999999968,77.397491000000059],[-83.985275000000001,77.395537999999931],[-83.949996999999996,77.388884999999959],[-83.868057000000022,77.376923000000033],[-83.793610000000001,77.36914100000007],[-83.531951999999933,77.346375000000023],[-83.505843999999968,77.344711000000018],[-83.478058000000033,77.344147000000078],[-83.464721999999995,77.348327999999981],[-83.463057999999876,77.349152000000117],[-83.46444699999995,77.35554500000012],[-83.472504000000015,77.387207000000046],[-83.553054999999972,77.393051000000071],[-83.654998999999975,77.395537999999931],[-83.711669999999913,77.404709000000082],[-83.728607000000011,77.408324999999934],[-83.778609999999958,77.423309000000017],[-83.822509999999966,77.442474000000004],[-83.833892999999989,77.448868000000004],[-83.835555999999997,77.455261000000007],[-83.824722000000008,77.460541000000035],[-83.801391999999964,77.464706000000035],[-83.768065999999919,77.466934000000037],[-83.682220000000029,77.46804800000001],[-83.620833999999945,77.471924000000058],[-83.593886999999938,77.475540000000137],[-83.426102000000014,77.499710000000107],[-83.389450000000011,77.507767000000115],[-83.36332699999997,77.518051000000128],[-83.216110000000015,77.577773999999977],[-83.011123999999995,77.665817000000004],[-82.895003999999858,77.717484000000013],[-82.674438000000009,77.836928999999998],[-82.655272999999852,77.847763000000043],[-82.541671999999949,77.920532000000037],[-82.526107999999965,77.961929000000055],[-82.577224999999999,78.003326000000072],[-82.590835999999967,78.011108000000036],[-82.591675000000009,78.017487000000074],[-82.579726999999878,78.022766000000047],[-82.56361400000003,78.027771000000087],[-82.538054999999986,78.031096999999988],[-82.497498000000007,78.03414900000007],[-82.470551,78.034714000000122],[-82.40972899999997,78.03414900000007],[-82.377486999999917,78.035812000000021],[-82.369445999999925,78.039428999999927],[-82.326110999999969,78.065262000000075],[-82.318619000000012,78.070831000000055],[-82.320007000000032,78.075821000000133],[-82.336120999999991,78.078873000000044],[-82.518341000000021,78.074158000000011],[-82.549438000000009,78.071930000000066],[-82.652221999999995,78.056090999999924],[-82.672500999999954,78.051651000000106],[-82.692489999999964,78.044983000000116],[-82.780288999999982,78.014999000000103],[-82.790282999999988,78.010544000000095],[-82.792769999999905,78.005829000000062],[-82.794158999999979,77.994979999999998],[-82.785277999999948,77.969986000000006],[-82.775283999999942,77.964157],[-82.735275000000001,77.947479000000101],[-82.728881999999942,77.939972000000012],[-82.728607000000011,77.929703000000131],[-82.736114999999984,77.924148999999943],[-82.769164999999987,77.914993000000038],[-82.852218999999991,77.896942000000024],[-82.949157999999898,77.874694999999974],[-83.123046999999929,77.780548000000067],[-83.156661999999926,77.744980000000055],[-83.185546999999985,77.716385000000002],[-83.192489999999964,77.710540999999978],[-83.200835999999867,77.705551000000128],[-83.386672999999917,77.616653000000042],[-83.427215999999987,77.600815000000011],[-83.527785999999935,77.572769000000108],[-83.648055999999997,77.540816999999947],[-83.735000999999954,77.518875000000094],[-83.873046999999985,77.49331699999999],[-83.898345999999947,77.490540000000067],[-83.920546999999942,77.491652999999985],[-84.143889999999999,77.509430000000009],[-84.192490000000021,77.515549000000078],[-84.229995999999971,77.521378000000084],[-84.386672999999917,77.528594999999996],[-84.419997999999964,77.52777100000003],[-84.452224999999942,77.524994000000106],[-84.483321999999987,77.521652000000017],[-84.500564999999995,77.518051000000128],[-84.555557000000022,77.51249700000011],[-84.579726999999991,77.51249700000011],[-84.760558999999944,77.519714000000079],[-84.779174999999952,77.522490999999945],[-84.858886999999925,77.542755000000113],[-84.869155999999975,77.562759000000028],[-84.87110899999999,77.569153000000085],[-84.866393999999957,77.574158000000125],[-84.837219000000005,77.583878000000027],[-84.815552000000025,77.588881999999955],[-84.773620999999991,77.5977630000001],[-84.707229999999981,77.609985000000052],[-84.665282999999988,77.618866000000025],[-84.627486999999917,77.628036000000066],[-84.520003999999972,77.664703000000031],[-84.441939999999931,77.706100000000106],[-84.429992999999968,77.718322999999941],[-84.428328999999962,77.722762999999986],[-84.431106999999884,77.726379000000009],[-84.443054000000018,77.736374000000126],[-84.486938000000009,77.750275000000101],[-84.495270000000005,77.751099000000067],[-84.503066999999987,77.74971000000005],[-84.48971599999993,77.746368000000132],[-84.483062999999959,77.74470500000001],[-84.475280999999995,77.738876000000005],[-84.476669000000015,77.728316999999947],[-84.486388999999974,77.711380000000133],[-84.499161000000015,77.699707000000103],[-84.520844000000011,77.689148000000102],[-84.533889999999985,77.684981999999991],[-84.547226000000023,77.68081699999999],[-84.715012000000002,77.639709000000096],[-84.922501000000011,77.601653999999996],[-84.952498999999989,77.601379000000122],[-84.972503999999901,77.606369000000029],[-85.158339999999896,77.641663000000108],[-85.298889000000031,77.660538000000031],[-85.310546999999985,77.664703000000031],[-85.348891999999921,77.72886699999998],[-85.348891999999921,77.733871000000136],[-85.335830999999985,77.738037000000077],[-85.190276999999867,77.779984000000127],[-85.054992999999968,77.79693600000013],[-85.05360399999995,77.830551000000014],[-85.144164999999987,77.817490000000078],[-85.297775000000001,77.797211000000118],[-85.328063999999927,77.79832499999992],[-85.381942999999978,77.807754999999986],[-85.400283999999942,77.813309000000004],[-85.402495999999928,77.819991999999957],[-85.400283999999942,77.83638000000002],[-85.389724999999999,77.841934000000037],[-85.353333000000021,77.855545000000006],[-85.325012000000015,77.866089000000045],[-85.281386999999995,77.87441999999993],[-85.231948999999986,77.881653000000142],[-85.207778999999903,77.883881000000088],[-84.925551999999982,77.891098],[-84.837219000000005,77.887496999999939],[-84.692490000000021,77.898604999999975],[-84.664444000000003,77.902206000000035],[-84.611114999999927,77.90387000000004],[-84.498154,77.900116000000082],[-84.428878999999995,77.896942000000024],[-84.385833999999932,77.891098],[-84.368056999999908,77.887206999999933],[-84.342772999999909,77.88499500000006],[-84.318618999999956,77.886932000000115],[-84.31361400000003,77.891936999999984],[-84.325012000000015,77.896103000000039],[-84.379715000000033,77.90637200000009],[-84.401671999999962,77.910262999999986],[-84.559432999999956,77.92303499999997],[-84.575561999999991,77.923874000000126],[-84.634444999999914,77.926926000000037],[-84.663054999999929,77.925262000000032],[-84.816665999999941,77.911652000000004],[-84.847228999999913,77.90887500000008],[-85.056945999999982,77.900543000000084],[-85.166396999999961,77.902206000000035],[-85.200561999999991,77.901657000000057],[-85.267501999999922,77.898041000000035],[-85.303604000000007,77.894714000000079],[-85.331680000000006,77.890823000000012],[-85.378051999999968,77.882202000000063],[-85.423049999999989,77.874694999999974],[-85.474715999999944,77.868591000000094],[-85.515288999999996,77.8836060000001],[-85.678878999999938,77.929428000000144],[-85.67971799999998,77.936645999999939],[-85.675277999999992,77.941650000000095],[-85.660278000000005,77.946639999999945],[-85.450561999999991,77.991089000000102],[-85.28694200000001,78.021652000000074],[-85.065551999999911,78.056366000000139],[-85.038894999999911,78.057205000000124],[-85.009734999999921,78.055251999999996],[-84.963057999999933,78.04414399999996],[-84.884170999999924,78.033051],[-84.816955999999948,78.026382000000126],[-84.788054999999986,78.024155000000064],[-84.761672999999917,78.023605000000032],[-84.726943999999946,78.025817999999958],[-84.708892999999989,78.029434000000037],[-84.695540999999935,78.033599999999922],[-84.688888999999961,78.03915400000011],[-84.673888999999974,78.04414399999996],[-84.654175000000009,78.048874000000012],[-84.575561999999991,78.067215000000033],[-84.547501000000011,78.0711060000001],[-84.524444999999901,78.072220000000073],[-84.360001000000011,78.070267000000115],[-84.328612999999905,78.070541000000048],[-84.307219999999973,78.07249500000006],[-84.288054999999929,78.075546000000088],[-84.292769999999962,78.078049000000078],[-84.299438000000009,78.079712000000029],[-84.323623999999938,78.082764000000111],[-84.410003999999958,78.086929000000112],[-84.532775999999899,78.085541000000035],[-84.557220000000029,78.083603000000096],[-84.623046999999985,78.071381000000088],[-84.673614999999984,78.064148000000102],[-84.736937999999896,78.058319000000097],[-84.765563999999983,78.056366000000139],[-84.798888999999974,78.055251999999996],[-84.855835000000013,78.056930999999963],[-84.881942999999978,78.059143000000063],[-84.993880999999988,78.074158000000011],[-85.077498999999932,78.090820000000008],[-85.094451999999933,78.097487999999998],[-85.087783999999886,78.103317000000004],[-84.994994999999903,78.163040000000024],[-84.901947000000007,78.170821999999987],[-84.829452999999944,78.168869000000029],[-84.793883999999991,78.171096999999975],[-84.761123999999995,78.174423000000047],[-84.708617999999944,78.182479999999998],[-84.688598999999954,78.187195000000031],[-84.657775999999956,78.19720500000011],[-84.63110399999988,78.199997000000053],[-84.549437999999952,78.19720500000011],[-84.430557000000022,78.186371000000065],[-84.315551999999968,78.173599000000081],[-84.284164000000033,78.166381999999942],[-84.222778000000005,78.158875000000023],[-84.201110999999969,78.156937000000084],[-84.173889000000031,78.15776100000005],[-84.127776999999924,78.171096999999975],[-84.126662999999951,78.179977000000008],[-84.453612999999962,78.214706000000092],[-84.479720999999927,78.216934000000037],[-84.506667999999934,78.217758000000003],[-84.693603999999993,78.217209000000082],[-84.722504000000015,78.216934000000037],[-84.777495999999871,78.210266000000047],[-84.877212999999927,78.193039000000056],[-84.909728999999857,78.191086000000098],[-84.937774999999931,78.192474000000004],[-84.951400999999976,78.195525999999916],[-84.968613000000005,78.202484000000084],[-84.973891999999978,78.208602999999982],[-84.970276000000013,78.214157000000114],[-84.967223999999931,78.21804800000001],[-84.956116000000009,78.232208000000128],[-84.942764000000011,78.243866000000139],[-84.83444199999991,78.314987000000031],[-84.815276999999924,78.321654999999964],[-84.792496000000028,78.32499700000011],[-84.731383999999991,78.325546000000031],[-84.658614999999998,78.329437000000098],[-84.629715000000033,78.333327999999995],[-84.605270000000019,78.337494000000106],[-84.585281000000009,78.341934000000094],[-84.575561999999991,78.346375000000023],[-84.572784000000013,78.350540000000024],[-84.571944999999971,78.355545000000063],[-84.575835999999924,78.361374000000069],[-84.581679999999949,78.366089000000102],[-84.601944000000003,78.368866000000025],[-84.630828999999949,78.364990000000148],[-84.667769999999962,78.348602000000085],[-84.684722999999963,78.344147000000078],[-84.707229999999981,78.341094999999939],[-84.735001000000011,78.340270999999973],[-84.772231999999974,78.342209000000139],[-84.815552000000025,78.349152000000117],[-84.866942999999992,78.36914100000007],[-84.865829000000019,78.372207999999944],[-84.785278000000005,78.501663000000065],[-84.782501000000025,78.505829000000119],[-84.774718999999948,78.509154999999964],[-84.759170999999867,78.514160000000061],[-84.738602000000014,78.518875000000094],[-84.724166999999966,78.524429000000055],[-84.704452999999944,78.534988000000112],[-84.625823999999966,78.584152000000074],[-84.619445999999925,78.588318000000015],[-84.61999499999996,78.590546000000131],[-84.638610999999969,78.594147000000021],[-84.661117999999988,78.59248400000007],[-84.675277999999992,78.588318000000015],[-84.838332999999977,78.516662999999994],[-84.846389999999928,78.511658000000125],[-84.978333000000021,78.414993000000095],[-84.974715999999944,78.358871000000136],[-84.970550999999944,78.353317000000118],[-84.964721999999938,78.348602000000085],[-84.961945000000014,78.343597000000045],[-84.96665999999999,78.338882000000012],[-85.043335000000013,78.299149],[-85.188048999999978,78.228317000000061],[-85.418335000000013,78.118866000000082],[-85.433318999999983,78.113876000000005],[-85.450835999999924,78.109984999999938],[-85.486114999999927,78.102478000000019],[-85.508057000000008,78.099152000000004],[-85.523055999999883,78.099426000000108],[-85.528060999999923,78.101929000000098],[-85.608886999999982,78.100815000000068],[-85.740829000000019,78.093048000000124],[-85.80471799999998,78.088882000000069],[-85.876662999999951,78.08166499999993],[-85.894164999999987,78.078049000000078],[-86.010283999999956,78.066086000000041],[-86.119995000000017,78.056366000000139],[-86.148345999999947,78.054703000000018],[-86.178054999999972,78.054977000000122],[-86.223327999999981,78.057480000000112],[-86.267226999999991,78.066376000000048],[-86.282227000000034,78.071655000000021],[-86.288329999999974,78.076385000000073],[-86.291381999999999,78.081375000000094],[-86.290558000000033,78.085815000000139],[-86.25140399999998,78.156647000000078],[-86.234160999999972,78.160537999999974],[-86.135558999999944,78.165543000000014],[-86.113051999999868,78.17053199999998],[-86.098052999999993,78.17553700000002],[-85.949996999999996,78.228317000000061],[-85.93110699999994,78.236649000000057],[-85.839995999999985,78.325821000000076],[-85.835281000000009,78.332214000000022],[-85.827224999999942,78.344147000000078],[-85.825561999999934,78.348602000000085],[-85.833068999999966,78.379974000000004],[-85.853333000000021,78.379150000000038],[-85.878051999999968,78.376922999999977],[-86.052779999999984,78.297484999999995],[-86.060271999999998,78.292480000000126],[-86.060546999999929,78.280548000000124],[-86.06527699999998,78.263610999999969],[-86.073623999999938,78.24859600000002],[-86.259170999999924,78.196365000000071],[-86.285277999999948,78.193314000000044],[-86.311110999999983,78.193314000000044],[-86.453613000000018,78.211928999999998],[-86.476668999999958,78.215820000000065],[-86.497771999999941,78.215546000000131],[-86.515014999999948,78.211655000000064],[-86.537215999999944,78.19470199999995],[-86.548888999999974,78.183044000000109],[-86.569457999999941,78.172210999999947],[-86.719726999999978,78.121917999999994],[-86.736938000000009,78.118042000000116],[-86.763061999999991,78.114990000000034],[-87.079726999999934,78.102768000000026],[-87.10943599999996,78.103043000000071],[-87.196654999999964,78.106094000000098],[-87.439712999999983,78.121643000000006],[-87.505843999999911,78.12831099999994],[-87.529174999999952,78.132202000000007],[-87.538605000000018,78.138046000000031],[-87.535003999999958,78.143051000000071],[-87.526671999999962,78.149155000000121],[-87.483886999999925,78.164429000000041],[-87.430556999999965,78.178314000000114],[-87.407501000000025,78.183044000000109],[-87.352218999999991,78.191086000000098],[-87.314163000000008,78.193863000000022],[-87.289992999999981,78.19470199999995],[-87.166945999999939,78.195525999999916],[-87.104996000000028,78.199141999999995],[-87.08944699999995,78.201934999999992],[-87.087219000000005,78.206099999999992],[-87.105835000000013,78.209427000000119],[-87.262222000000008,78.22665400000011],[-87.293609999999944,78.226089000000115],[-87.363892000000021,78.221099999999922],[-87.371657999999968,78.219437000000028],[-87.396118000000001,78.217209000000082],[-87.423049999999932,78.216095000000053],[-87.475554999999872,78.216385000000116],[-87.497771999999941,78.219711000000132],[-87.513335999999924,78.224990999999989],[-87.518616000000009,78.230545000000006],[-87.516953000000001,78.24136400000009],[-87.516113000000018,78.245819000000097],[-87.494445999999982,78.298598999999967],[-87.502501999999879,78.30525200000011],[-87.513061999999991,78.316375999999991],[-87.516402999999968,78.322768999999937],[-87.52555799999999,78.410263000000043],[-87.524718999999948,78.416382000000112],[-87.517226999999991,78.426376000000118],[-87.503066999999987,78.436646000000053],[-87.476943999999946,78.44802900000002],[-87.311385999999914,78.509154999999964],[-87.292220999999927,78.513885000000016],[-87.15834000000001,78.546371000000136],[-87.140563999999983,78.550262000000032],[-87.013061999999991,78.554153000000099],[-86.891112999999962,78.54553199999998],[-86.866394000000014,78.546371000000136],[-86.858336999999949,78.547760000000096],[-86.855834999999956,78.551650999999993],[-86.858886999999982,78.566375999999934],[-86.864440999999999,78.568878000000041],[-86.877776999999924,78.573044000000095],[-86.898620999999991,78.575821000000019],[-86.957779000000016,78.574997000000053],[-87.031676999999945,78.569153000000028],[-87.066101000000003,78.567490000000134],[-87.095275999999956,78.568604000000107],[-87.113051999999925,78.573044000000095],[-87.121658000000025,78.576934999999992],[-87.12388599999997,78.581099999999992],[-87.122498000000007,78.587204000000042],[-86.944716999999969,78.704711999999972],[-86.934432999999956,78.709991000000116],[-86.922501000000011,78.714705999999978],[-86.856948999999929,78.734985000000108],[-86.638901000000033,78.79942299999999],[-86.615829000000019,78.803040000000124],[-86.377212999999983,78.809982000000048],[-86.138061999999991,78.816666000000112],[-86.067504999999983,78.819716999999912],[-86.037215999999944,78.821380999999974],[-85.646666999999866,78.848602000000142],[-85.607497999999964,78.85165400000011],[-85.577498999999932,78.855819999999994],[-85.350280999999995,78.88749700000011],[-85.329726999999934,78.892211999999972],[-85.297500999999954,78.902205999999978],[-85.257507000000032,78.910537999999974],[-85.09973100000002,78.917755000000056],[-85.064163000000008,78.919144000000074],[-85.036117999999988,78.91693099999992],[-85.008895999999993,78.913315000000068],[-84.84584000000001,78.888885000000016],[-84.788329999999917,78.878035999999952],[-84.766402999999968,78.873032000000023],[-84.740554999999915,78.869980000000112],[-84.712783999999942,78.86775200000011],[-84.563323999999966,78.859984999999995],[-84.412216000000001,78.85554499999995],[-84.212783999999886,78.856934000000138],[-84.145003999999972,78.85554499999995],[-83.850829999999974,78.845261000000107],[-83.746947999999918,78.836928999999941],[-83.694442999999978,78.829712000000029],[-83.674437999999952,78.825546000000145],[-83.660004000000015,78.819992000000127],[-83.64056399999987,78.813873000000115],[-83.601944000000003,78.802200000000084],[-83.579726999999934,78.796371000000079],[-83.538329999999917,78.787201000000039],[-83.513061999999991,78.783874999999966],[-83.485824999999977,78.781372000000033],[-83.428604000000007,78.779159999999933],[-83.394164999999987,78.778870000000097],[-83.34584000000001,78.773605000000032],[-83.327498999999932,78.769713999999965],[-83.308334000000002,78.76388500000013],[-83.293610000000001,78.756104000000107],[-83.284926999999925,78.750000000000057],[-83.236938000000009,78.74054000000001],[-83.101394999999968,78.714432000000045],[-82.994720000000029,78.699707000000103],[-82.941939999999988,78.695526000000029],[-82.910827999999981,78.694702000000063],[-82.845000999999968,78.697478999999987],[-82.822509999999966,78.695250999999985],[-82.689712999999983,78.664154000000053],[-82.69638099999986,78.657761000000107],[-82.704453000000001,78.651932000000102],[-82.695540999999992,78.645264000000111],[-82.610549999999932,78.611374000000012],[-82.506957999999997,78.591095000000109],[-82.417220999999927,78.574158000000068],[-82.37388599999997,78.568604000000107],[-82.357497999999907,78.567490000000134],[-82.337783999999999,78.566665999999941],[-82.308334000000002,78.568878000000041],[-82.262222000000008,78.578048999999965],[-82.236938000000009,78.588318000000015],[-82.235549999999932,78.595825000000104],[-82.244719999999973,78.598877000000073],[-82.310271999999941,78.616653000000042],[-82.416655999999989,78.64276099999995],[-82.496384000000035,78.661926000000108],[-82.516953000000001,78.666930999999977],[-82.535278000000005,78.672759999999982],[-82.559433000000013,78.682205000000067],[-82.565552000000025,78.685256999999979],[-82.584732000000031,78.695526000000029],[-82.59445199999999,78.703049000000021],[-82.581954999999994,78.708327999999995],[-82.569167999999991,78.711380000000133],[-82.45666499999993,78.730820000000108],[-82.435546999999929,78.731659000000093],[-82.407775999999956,78.730820000000108],[-82.350554999999986,78.726089000000002],[-82.279723999999987,78.71775800000006],[-82.255279999999914,78.71665999999999],[-82.230835000000013,78.71775800000006],[-82.223327999999981,78.719711000000018],[-82.215011999999888,78.723037999999974],[-82.220550999999887,78.732208000000014],[-82.231948999999986,78.736374000000126],[-82.254729999999995,78.740814000000114],[-82.279175000000009,78.74414100000007],[-82.310821999999973,78.746933000000126],[-82.396392999999932,78.74914600000011],[-82.45666499999993,78.74914600000011],[-82.480835000000013,78.748322000000144],[-82.506119000000012,78.745818999999983],[-82.525557999999933,78.742203000000131],[-82.542770000000019,78.737198000000092],[-82.564437999999996,78.732758000000047],[-82.619155999999975,78.728043000000014],[-82.663619999999923,78.728043000000014],[-82.752501999999936,78.729705999999965],[-82.781386999999995,78.731094000000041],[-82.809722999999963,78.734146000000123],[-82.826950000000011,78.737488000000099],[-82.84333799999996,78.742203000000131],[-82.911666999999909,78.76638800000012],[-83.069732999999928,78.792206000000078],[-83.108611999999994,78.796646000000067],[-83.21055599999994,78.798874000000069],[-83.228607000000011,78.804153000000042],[-83.255844000000025,78.829987000000074],[-83.254729999999995,78.834991000000002],[-83.244445999999925,78.839432000000102],[-83.218337999999903,78.843597000000102],[-83.1875,78.847214000000065],[-83.085830999999985,78.85554499999995],[-83.056945999999925,78.856094000000098],[-82.991669000000002,78.85554499999995],[-82.811110999999983,78.848038000000031],[-82.67582699999997,78.842209000000025],[-82.65055799999999,78.838882000000069],[-82.621384000000035,78.837493999999992],[-82.462783999999942,78.833328000000108],[-82.429442999999992,78.833328000000108],[-82.289718999999991,78.837203999999986],[-82.254455999999948,78.840546000000074],[-82.112777999999992,78.857483000000116],[-82.079452999999944,78.859711000000061],[-81.947495000000004,78.865814],[-81.913894999999911,78.865814],[-81.764174999999966,78.859984999999995],[-81.749434999999949,78.858032000000037],[-81.740554999999915,78.855254999999943],[-81.767226999999991,78.853317000000004],[-81.824447999999961,78.853867000000037],[-81.838607999999965,78.851379000000065],[-81.833618000000001,78.846649000000014],[-81.820281999999963,78.845261000000107],[-81.741378999999881,78.839157000000114],[-81.712509000000011,78.839706000000035],[-81.699157999999954,78.842757999999947],[-81.660827999999924,78.877762000000018],[-81.656661999999869,78.883881000000088],[-81.65695199999999,78.888321000000076],[-81.666397000000018,78.895537999999988],[-81.68249499999996,78.900268999999923],[-81.734725999999966,78.90637200000009],[-81.753066999999987,78.912201000000096],[-81.755843999999968,78.91804500000012],[-81.698607999999922,78.973877000000073],[-81.690825999999959,78.980270000000019],[-81.683060000000012,78.984421000000111],[-81.553604000000007,79.024155000000007],[-81.486114999999927,79.041655999999989],[-81.477218999999991,79.047211000000061],[-81.486663999999962,79.052475000000072],[-81.50306699999993,79.059143000000006],[-81.521118000000001,79.061096000000134],[-81.548614999999984,79.061355999999989],[-81.617767000000015,79.051086000000055],[-81.865829000000019,79.013610999999969],[-81.910277999999948,79.004990000000078],[-81.928329000000019,79],[-81.961120999999935,78.98692299999999],[-81.97222899999997,78.982483000000002],[-81.974166999999966,78.979431000000034],[-81.999725000000012,78.960266000000104],[-82.092772999999909,78.918320000000108],[-82.110274999999945,78.913605000000075],[-82.34722899999997,78.894440000000088],[-82.50306699999993,78.882750999999985],[-82.559433000000013,78.884720000000016],[-82.681380999999988,78.903319999999951],[-82.813888999999961,78.923035000000141],[-82.839447000000007,78.926376000000005],[-82.924438000000009,78.934982000000105],[-83.063048999999978,78.939697000000137],[-83.126663000000008,78.941085999999927],[-83.264175000000023,78.939147999999989],[-83.514174999999966,78.930542000000059],[-83.570557000000008,78.929977000000065],[-83.637512000000015,78.930817000000104],[-83.694716999999912,78.934708000000001],[-83.787215999999887,78.942474000000061],[-83.812774999999988,78.945815999999979],[-84.034163999999976,78.956650000000025],[-84.165558000000033,78.956940000000031],[-84.200561999999991,78.957213999999965],[-84.259170999999981,78.959427000000119],[-84.328888000000006,78.965271000000143],[-84.367492999999968,78.972488000000055],[-84.386123999999882,78.977767999999969],[-84.429992999999968,78.987761999999975],[-84.473052999999936,78.99552900000009],[-84.573333999999875,79.009995000000117],[-84.651397999999972,79.019439999999975],[-84.679442999999992,79.021652000000074],[-84.726943999999946,79.027771000000087],[-84.748046999999985,79.031936999999971],[-84.766953000000001,79.037200999999982],[-84.779174999999952,79.04664600000001],[-84.789718999999991,79.064148000000046],[-84.789168999999958,79.069442999999978],[-84.783889999999985,79.074432000000115],[-84.651672000000019,79.114699999999971],[-84.544158999999979,79.141372999999987],[-84.528609999999901,79.143326000000059],[-84.503615999999909,79.144440000000088],[-84.473052999999936,79.143051000000071],[-84.163894999999911,79.12414600000011],[-84.135559000000001,79.121917999999994],[-84.075561999999934,79.10443099999992],[-84.0625,79.090546000000018],[-84.040558000000033,79.075447000000054],[-83.990279999999984,79.051651000000106],[-83.950561999999934,79.043594000000098],[-83.896392999999989,79.038040000000137],[-83.744720000000029,79.028046000000074],[-83.600554999999929,79.025269000000037],[-83.504456000000005,79.023604999999975],[-83.474716000000001,79.024155000000007],[-83.454726999999991,79.025542999999971],[-83.386123999999995,79.039429000000098],[-83.36860699999994,79.044434000000138],[-83.358611999999937,79.050812000000121],[-83.373610999999926,79.056366000000139],[-83.399445000000014,79.059708000000057],[-83.415557999999976,79.059981999999991],[-83.430831999999953,79.05831900000004],[-83.461670000000026,79.052200000000028],[-83.493880999999931,79.043319999999994],[-83.521118000000001,79.041367000000037],[-83.546111999999937,79.042480000000126],[-83.70666499999993,79.077774000000034],[-83.976394999999968,79.141098000000113],[-84.003615999999909,79.148605000000089],[-84.029998999999975,79.151657],[-84.029175000000009,79.156937000000028],[-84.018889999999999,79.161377000000073],[-84.005004999999926,79.166092000000106],[-83.952498999999989,79.180267000000015],[-83.939986999999917,79.18553200000008],[-83.933318999999926,79.191925000000026],[-83.941101000000003,79.216385000000059],[-83.956664999999987,79.221924000000058],[-83.979720999999927,79.22164900000007],[-84.016952999999944,79.213042999999971],[-84.043059999999912,79.203048999999965],[-84.051940999999943,79.198029000000076],[-84.067504999999983,79.192474000000004],[-84.086120999999991,79.188033999999959],[-84.121933000000013,79.184708000000114],[-84.158507999999983,79.183304000000135],[-84.193329000000006,79.183044000000109],[-84.303329000000019,79.186646000000053],[-84.326949999999954,79.188583000000108],[-84.323897999999872,79.19470200000012],[-84.316665999999941,79.200546000000145],[-84.31361400000003,79.206649999999968],[-84.335555999999997,79.252213000000097],[-84.34445199999999,79.258041000000048],[-84.362777999999992,79.264999000000046],[-84.401108000000022,79.27526899999998],[-84.428878999999995,79.290268000000026],[-84.452788999999996,79.328872999999987],[-84.452224999999942,79.34165999999999],[-84.446654999999964,79.353866999999923],[-84.446105999999929,79.358871000000079],[-84.484725999999966,79.406372000000147],[-84.503341999999975,79.413040000000137],[-84.581116000000009,79.433868000000018],[-84.606110000000001,79.43803400000013],[-84.660278000000005,79.444138000000123],[-84.709166999999979,79.451660000000061],[-84.821120999999948,79.473037999999974],[-84.882492000000013,79.486098999999911],[-84.896956999999929,79.492477000000065],[-84.96945199999999,79.537491000000045],[-84.972503999999901,79.542206000000078],[-85.022232000000031,79.611099000000024],[-85.028885000000002,79.615814000000057],[-85.050277999999992,79.621643000000063],[-85.068892999999946,79.626083000000051],[-85.25418099999996,79.667205999999965],[-85.372497999999894,79.684417999999994],[-85.493331999999953,79.700546000000031],[-85.551391999999964,79.705826000000116],[-85.615828999999962,79.708327999999995],[-85.684433000000013,79.709152000000131],[-85.763061999999991,79.705551000000071],[-85.94888299999991,79.708327999999995],[-86.203339000000028,79.735809000000074],[-86.387512000000015,79.747482000000048],[-86.415833000000021,79.750548999999978],[-86.445830999999885,79.754166000000112],[-86.47193900000002,79.759720000000129],[-86.486389000000031,79.763611000000026],[-86.49360699999994,79.768326000000059],[-86.502227999999945,79.775269000000037],[-86.47193900000002,79.890549000000021],[-86.460281000000009,79.919708000000014],[-86.450286999999889,79.931091000000038],[-86.43638599999997,79.942474000000004],[-86.424437999999952,79.948029000000076],[-86.389724999999999,79.958038000000101],[-86.36721799999998,79.962769000000037],[-86.300277999999935,79.968596999999988],[-86.263335999999924,79.969147000000021],[-86.230285999999978,79.96804800000001],[-86.083892999999989,79.95748900000001],[-85.885833999999988,79.941086000000098],[-85.819732999999928,79.938582999999937],[-85.785003999999958,79.938034000000016],[-85.711394999999925,79.937485000000038],[-85.65695199999999,79.938034000000016],[-85.519454999999994,79.924988000000042],[-85.460006999999905,79.910812000000078],[-85.416397000000018,79.901382000000012],[-85.389998999999932,79.897491000000116],[-85.365829000000019,79.896378000000027],[-85.308334000000002,79.900543000000027],[-85.289168999999958,79.904984000000127],[-85.275008999999955,79.909424000000001],[-85.262511999999958,79.914992999999981],[-85.255004999999926,79.920821999999987],[-85.271118000000001,79.923874000000069],[-85.440826000000015,79.938309000000004],[-85.640839000000028,79.962769000000037],[-86.190552000000025,80],[-86.301940999999943,79.998322000000087],[-86.341384999999946,79.99693300000007],[-86.413329999999974,79.99803200000008],[-86.442763999999954,79.999709999999993],[-86.466400000000021,80.003876000000048],[-86.482773000000009,80.0086060000001],[-86.565551999999968,80.035812000000135],[-86.579452999999944,80.04304500000012],[-86.642501999999922,80.098037999999974],[-86.658614999999884,80.117752000000053],[-86.65943900000002,80.128036000000066],[-86.65583799999996,80.135269000000108],[-86.514724999999942,80.299149000000114],[-86.493057000000022,80.304428000000087],[-86.46833799999996,80.308594000000028],[-86.434432999999956,80.312485000000095],[-86.345001000000025,80.319153000000028],[-86.11610399999995,80.333602999999982],[-86.076110999999912,80.333602999999982],[-85.897507000000019,80.333054000000004],[-85.745269999999948,80.320267000000001],[-85.717498999999975,80.316375999999934],[-85.671936000000017,80.306931000000077],[-85.616652999999928,80.298874000000126],[-85.509170999999981,80.285812000000078],[-85.479171999999949,80.28276100000005],[-85.354171999999892,80.273041000000148],[-85.290832999999964,80.268600000000049],[-85.256957999999997,80.267211999999972],[-85.095839999999953,80.262207000000103],[-84.9375,80.267211999999972],[-84.898346000000004,80.269440000000088],[-84.779174999999952,80.272491000000116],[-84.702498999999932,80.273315000000082],[-84.589721999999995,80.273605000000089],[-84.196655000000021,80.271378000000027],[-84.049437999999896,80.267761000000121],[-83.989440999999999,80.264435000000049],[-83.926392000000021,80.259720000000016],[-83.811110999999983,80.249145999999996],[-83.78195199999999,80.24581900000004],[-83.716110000000015,80.233871000000022],[-83.626389000000017,80.213608000000136],[-83.560821999999973,80.195816000000093],[-83.546386999999982,80.189423000000147],[-83.478058000000033,80.164428999999984],[-83.461394999999925,80.15914900000007],[-83.42471299999994,80.148331000000098],[-83.40306099999998,80.142212000000086],[-83.24499499999996,80.103591999999935],[-83.138901000000033,80.078323000000125],[-83.029723999999987,80.053314],[-82.89805599999994,80.02526899999998],[-82.803329000000019,80.006377999999984],[-82.736114999999984,79.992476999999951],[-82.605835000000013,79.964431999999988],[-82.283889999999985,79.893051000000071],[-82.15306099999998,79.858870999999965],[-82.101943999999946,79.839706000000035],[-82.091675000000009,79.834717000000069],[-82.062499999999943,79.816086000000041],[-82.046386999999982,79.801651000000106],[-81.976944000000003,79.735809000000074],[-81.981673999999998,79.723877000000073],[-81.978881999999999,79.718323000000112],[-81.916655999999989,79.703323000000125],[-81.853057999999976,79.693588000000034],[-81.799438000000009,79.686645999999939],[-81.767501999999922,79.684981999999934],[-81.733886999999925,79.686371000000122],[-81.68472300000002,79.675812000000064],[-81.6163939999999,79.623305999999957],[-81.61860699999994,79.61831699999999],[-81.628052000000025,79.614700000000028],[-81.651671999999905,79.610260000000039],[-81.678054999999972,79.607208000000128],[-81.687774999999874,79.608032000000094],[-81.694716999999969,79.609711000000061],[-81.709732000000031,79.615540000000124],[-81.734160999999972,79.619705000000124],[-81.748610999999983,79.621094000000085],[-81.767501999999922,79.62052900000009],[-81.777221999999995,79.619140999999956],[-81.785277999999892,79.614990000000091],[-81.786117999999931,79.609146000000067],[-81.782227000000034,79.604979999999955],[-81.768616000000009,79.600266000000033],[-81.750290000000007,79.594711000000132],[-81.728333000000021,79.589706000000092],[-81.706664999999987,79.586655000000064],[-81.675277999999992,79.584991000000059],[-81.639450000000011,79.584991000000059],[-81.605835000000013,79.588593000000003],[-81.578613000000018,79.59304800000001],[-81.56361400000003,79.597763000000043],[-81.544998000000021,79.609146000000067],[-81.509444999999914,79.624145999999996],[-81.495270000000005,79.629425000000026],[-81.476395000000025,79.634155000000021],[-81.457229999999981,79.636932000000115],[-81.424712999999997,79.636658000000011],[-81.368056999999965,79.634430000000066],[-81.279998999999918,79.628310999999997],[-81.253615999999965,79.624694999999974],[-81.013061999999877,79.598877000000016],[-80.69027699999998,79.56860400000005],[-80.630554000000018,79.564147999999989],[-80.598052999999993,79.566086000000098],[-80.589721999999995,79.568054000000018],[-80.591949,79.573608000000036],[-80.60861199999988,79.576096000000007],[-80.625274999999931,79.580826000000059],[-80.641953000000001,79.588042999999971],[-80.634170999999981,79.592758000000003],[-80.618606999999884,79.597214000000122],[-80.598052999999993,79.601379000000122],[-80.569167999999877,79.605255],[-80.50167799999997,79.61192299999999],[-80.100280999999995,79.644440000000145],[-80.056655999999975,79.646942000000024],[-80.025283999999942,79.647217000000069],[-79.972778000000005,79.644440000000145],[-79.93638599999997,79.644440000000145],[-79.904723999999987,79.646942000000024],[-79.892501999999922,79.649155000000007],[-79.761947999999961,79.695816000000036],[-79.751403999999923,79.701385000000016],[-79.768616000000009,79.701935000000049],[-80.041381999999999,79.697479000000101],[-80.356658999999979,79.685256999999979],[-80.389724999999999,79.68331900000004],[-80.432220000000029,79.677765000000022],[-80.473617999999988,79.669708000000071],[-80.516113000000018,79.664429000000098],[-80.618057000000022,79.654160000000047],[-80.658889999999928,79.652481000000023],[-80.795273000000009,79.648041000000035],[-80.827498999999989,79.648331000000042],[-80.910552999999993,79.651932000000102],[-80.942215000000033,79.653594999999996],[-80.955275999999969,79.658600000000035],[-80.958892999999932,79.664993000000038],[-80.970839999999953,79.671370999999965],[-80.978333000000021,79.67303499999997],[-81.076110999999969,79.688873000000001],[-81.171936000000017,79.703323000000125],[-81.227782999999988,79.709427000000005],[-81.291945999999882,79.713608000000079],[-81.385559000000001,79.713608000000079],[-81.424437999999952,79.712769000000094],[-81.519729999999925,79.730820000000108],[-81.569457999999941,79.819717000000082],[-81.582779000000016,79.836929000000112],[-81.587783999999942,79.841660000000047],[-81.59973100000002,79.851929000000098],[-81.608337000000006,79.858597000000032],[-81.631377999999984,79.872208000000001],[-81.651947000000007,79.882750999999985],[-81.65972899999997,79.888596000000064],[-81.665008999999941,79.897765999999933],[-81.663054999999986,79.903046000000018],[-81.643616000000009,79.909988000000112],[-81.540557999999919,79.922760000000096],[-81.515839000000028,79.924988000000042],[-81.416945999999939,79.927199999999971],[-81.402221999999995,79.932479999999998],[-81.400283999999942,79.937758999999971],[-81.420272999999952,79.943587999999977],[-81.557495000000017,79.960815000000025],[-81.589721999999995,79.962494000000049],[-81.639450000000011,79.962204000000042],[-81.643341000000021,79.962204000000042],[-81.710555999999997,79.964706000000092],[-81.743056999999965,79.966385000000116],[-81.833068999999966,79.973877000000016],[-82.005004999999983,79.993042000000003],[-82.168334999999956,80.013610999999969],[-82.191101000000003,80.018600000000106],[-82.285827999999981,80.046097000000088],[-82.34333799999996,80.063873000000058],[-82.359160999999915,80.069153000000085],[-82.619155999999975,80.150542999999971],[-82.948043999999982,80.247481999999991],[-83.12110899999999,80.292755000000056],[-83.166655999999932,80.301376000000005],[-83.186934999999949,80.30664100000007],[-83.201400999999976,80.313309000000061],[-83.203887999999949,80.318054000000075],[-83.196654999999964,80.320830999999998],[-83.166945999999939,80.326934999999992],[-83.131942999999978,80.330551000000071],[-82.942764000000011,80.345535000000098],[-82.854720999999984,80.350815000000011],[-82.787780999999939,80.352203000000088],[-82.706664999999987,80.352767999999969],[-82.579726999999878,80.358322000000101],[-82.273330999999928,80.377472000000068],[-82.031386999999938,80.398331000000042],[-81.987212999999997,80.40026899999998],[-81.899170000000026,80.401657000000114],[-81.882216999999969,80.401932000000102],[-81.673888999999974,80.406097000000102],[-81.334441999999967,80.420532000000037],[-81.204726999999991,80.427200000000028],[-81.079726999999991,80.436096000000134],[-80.98611499999987,80.443588000000091],[-80.835007000000019,80.452774000000034],[-80.660004000000015,80.460815000000082],[-80.481110000000001,80.462494000000106],[-80.412216000000001,80.460541000000148],[-80.367766999999958,80.462204000000099],[-80.336120999999991,80.465819999999951],[-80.318893000000003,80.470534999999984],[-80.306655999999919,80.47526600000009],[-80.294158999999866,80.486649000000114],[-80.297775000000001,80.488876000000005],[-80.312209999999936,80.491653000000099],[-80.343338000000017,80.49414100000007],[-80.354996000000028,80.498031999999967],[-80.357223999999917,80.501389000000074],[-80.227492999999924,80.519713999999965],[-80.195540999999935,80.523605000000032],[-80.153335999999967,80.526382000000126],[-80.116394000000014,80.527771000000143],[-80.058608999999933,80.527206000000092],[-79.940276999999924,80.528869999999927],[-79.558043999999995,80.536377000000073],[-79.490554999999915,80.539703000000088],[-79.339995999999928,80.549988000000042],[-79.232773000000009,80.553314000000057],[-79.190552000000025,80.55386400000009],[-79.011123999999995,80.553314000000057],[-78.815551999999911,80.555817000000047],[-78.592772999999966,80.562195000000031],[-78.46556099999998,80.563873000000115],[-78.345276000000013,80.564423000000147],[-78.098891999999921,80.562485000000038],[-78.063889000000017,80.564697000000081],[-78.038054999999929,80.567215000000033],[-78.015014999999948,80.586655000000007],[-78.013625999999988,80.591095000000053],[-78.019164999999987,80.594436999999971],[-78.030838000000017,80.596100000000092],[-78.088608000000022,80.596939000000077],[-78.357773000000009,80.60165400000011],[-78.741378999999938,80.60914600000001],[-78.851944000000003,80.612487999999985],[-78.925277999999992,80.616652999999985],[-78.981109999999944,80.616089000000045],[-79.114440999999999,80.612487999999985],[-79.255004999999983,80.605819999999994],[-79.347228999999913,80.601089000000059],[-79.392226999999934,80.599715999999944],[-79.565276999999924,80.596100000000092],[-79.634170999999981,80.595535000000041],[-79.86332699999997,80.603043000000071],[-79.934433000000013,80.606094000000098],[-79.960555999999883,80.608032000000037],[-79.960280999999952,80.614700000000028],[-79.907226999999978,80.623871000000008],[-79.847777999999948,80.631927000000076],[-79.559433000000013,80.669983000000059],[-79.353607000000011,80.696640000000116],[-79.291945999999996,80.703872999999987],[-79.172501000000011,80.713043000000027],[-78.990829000000019,80.729706000000078],[-78.809432999999956,80.746933000000126],[-78.62388599999997,80.769149999999968],[-78.585280999999952,80.772217000000069],[-78.50556899999998,80.77748100000008],[-78.236664000000019,80.793319999999994],[-77.894454999999994,80.813309000000118],[-77.805832000000009,80.818603999999993],[-77.733062999999959,80.825546000000088],[-77.639175000000023,80.83027600000014],[-77.287780999999939,80.83526599999999],[-76.926392000000021,80.841933999999981],[-76.845001000000025,80.841094999999996],[-76.729172000000005,80.838043000000084],[-76.681380999999931,80.838593000000117],[-76.590835999999967,80.842758000000117],[-76.556655999999975,80.84637500000008],[-76.511672999999973,80.854430999999977],[-76.484725999999966,80.86554000000001],[-76.485000999999897,80.871094000000028],[-76.490829000000019,80.874985000000095],[-76.526672000000019,80.88638300000008],[-76.621108999999933,80.900818000000015],[-76.656661999999983,80.898041000000148],[-76.699432000000002,80.891372999999987],[-76.738892000000021,80.888321000000019],[-76.797500999999954,80.886108000000092],[-76.841675000000009,80.885543999999982],[-77.168883999999935,80.886932000000058],[-77.201675000000023,80.887772000000098],[-77.308884000000035,80.893051000000071],[-77.428329000000019,80.903046000000018],[-77.454726999999991,80.90525800000006],[-77.581115999999895,80.911377000000073],[-77.766113000000018,80.906937000000084],[-77.980285999999921,80.90109300000006],[-78.421111999999994,80.879424999999912],[-78.836394999999982,80.85386699999998],[-78.869445999999925,80.852202999999975],[-78.885283999999956,80.853591999999992],[-78.896118000000001,80.854705999999965],[-78.908614999999998,80.858871000000136],[-78.922225999999966,80.866088999999988],[-78.93499799999995,80.875534000000016],[-78.93638599999997,80.881363000000079],[-78.930556999999965,80.981933999999967],[-78.928604000000007,80.990540000000067],[-78.839721999999995,81.016098],[-78.799987999999985,81.026382000000069],[-78.757781999999906,81.035537999999974],[-78.636672999999973,81.058594000000028],[-78.528884999999946,81.081940000000088],[-78.501113999999973,81.09165999999999],[-78.457503999999972,81.107758000000047],[-78.426101999999958,81.120818999999983],[-78.416396999999961,81.125259000000142],[-78.397231999999917,81.137497000000053],[-78.393065999999919,81.142761000000007],[-78.406386999999938,81.144988999999953],[-78.461945000000014,81.147491000000059],[-78.475280999999939,81.149719000000005],[-78.475829999999974,81.15248100000008],[-78.472777999999948,81.158325000000104],[-78.463622999999927,81.160812000000021],[-78.438598999999954,81.164703000000088],[-78.411391999999921,81.167479999999955],[-78.290833000000021,81.174698000000149],[-78.254729999999995,81.177765000000079],[-78.225005999999894,81.181930999999963],[-78.15943900000002,81.193862999999965],[-78.051102000000014,81.218597000000102],[-78.03694200000001,81.223312000000135],[-78.016662999999994,81.232758000000103],[-78.009170999999981,81.238585999999998],[-77.976943999999889,81.249145999999939],[-77.875274999999874,81.272766000000104],[-77.850829999999917,81.277205999999978],[-77.612503000000004,81.318877999999984],[-77.576949999999897,81.322494999999947],[-77.50306699999993,81.328323000000069],[-77.366394000000014,81.336105000000032],[-77.233611999999994,81.351089000000115],[-77.116942999999935,81.367751999999996],[-76.955275999999969,81.393874999999923],[-76.765014999999948,81.428588999999988],[-76.748610999999983,81.4327550000001],[-76.745269999999948,81.439148000000046],[-76.761123999999995,81.442749000000106],[-76.777785999999878,81.444427000000019],[-76.803328999999962,81.445526000000029],[-76.855835000000013,81.445526000000029],[-76.951110999999969,81.440536000000122],[-77.028609999999958,81.43331900000004],[-77.208617999999944,81.409424000000058],[-77.264450000000011,81.400818000000129],[-77.41722099999987,81.380538999999999],[-77.571395999999993,81.366652999999985],[-77.609726000000023,81.364425999999924],[-77.829177999999899,81.34248400000007],[-77.896117999999944,81.335541000000092],[-78.174163999999962,81.30053700000002],[-78.228333000000021,81.291656000000046],[-78.273620999999935,81.283599999999979],[-78.29222099999987,81.278320000000122],[-78.305557000000022,81.272766000000104],[-78.325835999999924,81.261383000000137],[-78.351944000000003,81.250275000000101],[-78.370270000000005,81.2452550000001],[-78.410004000000015,81.236374000000126],[-78.433883999999921,81.231934000000138],[-78.487212999999997,81.223038000000031],[-78.604996000000028,81.206375000000094],[-78.652495999999928,81.197205000000054],[-78.675277999999935,81.191925000000026],[-78.701950000000011,81.181655999999975],[-78.721114999999998,81.172211000000061],[-78.728333000000021,81.166382000000056],[-78.75111400000003,81.141663000000108],[-78.754181000000017,81.135818000000029],[-78.745833999999945,81.129150000000038],[-78.71665999999999,81.123306000000014],[-78.690552000000025,81.12164300000012],[-78.690825999999959,81.11943100000002],[-78.817504999999926,81.106093999999985],[-78.895019999999931,81.098999000000049],[-78.916945999999996,81.098037999999917],[-78.941375999999934,81.101088999999945],[-78.963622999999984,81.107758000000047],[-79.015014999999948,81.115539999999953],[-79.075287000000003,81.122757000000092],[-79.162780999999939,81.13220199999995],[-79.218062999999972,81.136932000000002],[-79.242767000000015,81.139984000000084],[-79.399170000000026,81.174698000000149],[-79.463622999999984,81.193313999999987],[-79.486114999999984,81.194977000000108],[-79.50167799999997,81.193588000000091],[-79.499434999999949,81.189972000000068],[-79.491669000000002,81.186095999999964],[-79.475829999999974,81.180542000000003],[-79.275283999999999,81.12359600000002],[-79.218886999999938,81.111099000000081],[-79.172501000000011,81.10386699999998],[-79.088837000000012,81.094757000000072],[-79.073623999999995,81.090820000000122],[-79.063613999999916,81.085541000000148],[-79.072783999999956,81.080826000000116],[-79.087783999999999,81.076660000000004],[-79.142226999999991,81.069153000000085],[-79.226944000000003,81.063034000000073],[-79.255279999999914,81.058868000000132],[-79.305266999999958,81.029984000000013],[-79.315826000000015,81.023880000000133],[-79.323623999999938,81.018326000000002],[-79.33666999999997,81.0086060000001],[-79.343886999999995,80.99832200000003],[-79.336945000000014,80.992203000000018],[-79.321120999999891,80.988586000000055],[-79.291381999999885,80.984984999999995],[-79.258347000000015,80.984421000000054],[-79.205275999999969,80.987762000000089],[-79.18472300000002,80.986374000000012],[-79.164718999999991,80.983047000000056],[-79.158889999999985,80.977768000000083],[-79.15834000000001,80.972763000000043],[-79.165282999999931,80.966660000000104],[-79.265288999999996,80.924149000000057],[-79.600829999999917,80.824432000000115],[-79.618056999999965,80.819442999999978],[-79.883621000000005,80.783325000000104],[-80.065552000000025,80.759720000000129],[-80.247498000000007,80.73692299999999],[-80.511123999999938,80.705826000000059],[-80.651947000000007,80.691925000000083],[-80.720551,80.684142999999949],[-80.855559999999969,80.663315000000068],[-80.919448999999929,80.655548000000124],[-80.956664999999987,80.651932000000045],[-81.336394999999925,80.623306000000127],[-81.533324999999991,80.607208000000071],[-81.575561999999991,80.604155999999989],[-81.808884000000035,80.59304800000001],[-81.966110000000015,80.579712000000029],[-82.353881999999942,80.556365999999969],[-82.434998000000007,80.553040000000124],[-82.798889000000031,80.539428999999984],[-82.881103999999937,80.536652000000061],[-82.956389999999999,80.536377000000073],[-83.027495999999928,80.538589000000115],[-83.096664000000033,80.541656000000046],[-83.151946999999893,80.546371000000079],[-83.165008999999998,80.55192599999998],[-83.170272999999895,80.564147999999932],[-83.168059999999912,80.576660000000118],[-83.165282999999931,80.589432000000102],[-83.161391999999864,80.601089000000059],[-83.156112999999948,80.606644000000131],[-83.146666999999979,80.612198000000149],[-83.096953999999982,80.639435000000049],[-83.078063999999927,80.644989000000066],[-83.056380999999988,80.649154999999951],[-82.773055999999997,80.68664600000011],[-82.527495999999985,80.703323000000125],[-82.431945999999982,80.708878000000027],[-82.250838999999928,80.716385000000116],[-82.216399999999965,80.719147000000021],[-82.135833999999875,80.729431000000091],[-82.025009000000011,80.746643000000063],[-81.948333999999932,80.759155000000078],[-81.908614999999941,80.767761000000007],[-81.762786999999889,80.810806000000127],[-81.758895999999993,80.813034000000073],[-81.767501999999922,80.821381000000088],[-81.943603999999993,80.833054000000118],[-81.961120999999935,80.833054000000118],[-81.996108999999933,80.83027600000014],[-82.05221599999993,80.822768999999994],[-82.099730999999906,80.813599000000124],[-82.146118000000001,80.803589000000045],[-82.193877999999984,80.796646000000067],[-82.332229999999981,80.781372000000147],[-82.513061999999934,80.763046000000145],[-82.526107999999965,80.752777000000094],[-82.535827999999867,80.747208000000114],[-82.543334999999956,80.74443100000002],[-82.567229999999995,80.740814000000057],[-82.601669000000015,80.738036999999963],[-82.940551999999968,80.714431999999988],[-83.311934999999949,80.687759000000028],[-83.356948999999929,80.685531999999967],[-83.516113000000018,80.701384999999959],[-83.541107000000011,80.704162999999994],[-83.547226000000023,80.706940000000088],[-83.569457999999997,80.739150999999993],[-83.5625,80.743866000000025],[-83.529723999999987,80.747482000000048],[-83.456664999999987,80.751099000000011],[-83.422500999999954,80.753876000000105],[-83.391387999999949,80.758041000000105],[-83.261947999999961,80.786377000000016],[-83.133057000000008,80.818878000000097],[-83.120270000000005,80.823317999999972],[-83.132492000000013,80.828598],[-83.158051,80.833603000000039],[-83.191100999999946,80.835815000000139],[-83.256957999999997,80.838593000000117],[-83.297225999999966,80.836104999999975],[-83.323333999999932,80.8316650000001],[-83.329177999999956,80.828323000000012],[-83.331954999999937,80.823883000000137],[-83.353881999999999,80.813599000000124],[-83.381377999999984,80.803864000000033],[-83.407226999999978,80.799422999999933],[-83.493332000000009,80.787766000000033],[-83.587218999999891,80.775269000000037],[-83.610549999999932,80.771652000000074],[-83.630828999999949,80.766937000000041],[-83.645554000000004,80.761658000000068],[-83.64916999999997,80.755554000000018],[-83.658889999999872,80.751937999999996],[-83.667769999999905,80.75],[-83.696655000000021,80.746643000000063],[-83.712783999999999,80.747757000000092],[-83.827498999999932,80.761383000000023],[-83.859160999999972,80.759155000000078],[-83.863892000000021,80.757492000000127],[-83.836394999999982,80.719710999999961],[-83.821670999999981,80.705826000000059],[-83.812499999999943,80.698318000000086],[-83.801391999999964,80.691925000000083],[-83.783065999999963,80.684142999999949],[-83.757232999999928,80.669708000000014],[-83.734436000000017,80.654160000000047],[-83.723327999999924,80.643875000000094],[-83.720000999999911,80.636658000000011],[-83.719726999999978,80.630813999999987],[-83.73582499999992,80.613037000000077],[-83.779175000000009,80.570831000000112],[-83.794723999999974,80.560257000000036],[-83.821120999999948,80.550536999999963],[-83.840560999999866,80.545532000000094],[-83.871108999999933,80.541367000000093],[-83.93472300000002,80.534424000000115],[-83.973327999999981,80.531937000000028],[-84.313323999999909,80.513611000000026],[-84.381103999999993,80.512207000000046],[-84.48971599999993,80.514434999999992],[-84.551392000000021,80.517761000000064],[-84.689437999999996,80.524994000000049],[-84.763625999999988,80.525818000000015],[-84.846664000000033,80.523315000000025],[-84.890563999999983,80.521102999999982],[-84.964447000000007,80.514434999999992],[-85.027221999999995,80.507217000000026],[-85.066956000000005,80.505264000000068],[-85.232772999999952,80.508881000000031],[-85.334731999999974,80.513611000000026],[-85.366652999999985,80.517487000000131],[-85.42582699999997,80.523041000000092],[-85.462218999999948,80.524994000000049],[-85.594727000000034,80.529159999999933],[-85.809433000000013,80.531937000000028],[-85.864165999999898,80.535538000000088],[-85.865829000000019,80.541367000000093],[-85.812774999999931,80.559143000000063],[-85.705841000000021,80.589706000000035],[-85.689162999999951,80.593872000000147],[-85.665008999999941,80.598601999999971],[-85.613051999999982,80.606368999999972],[-85.571945000000028,80.615265000000079],[-85.564712999999927,80.619431000000134],[-85.594451999999933,80.6202550000001],[-85.636397999999986,80.619141000000127],[-85.694716999999969,80.613602000000128],[-85.744719999999916,80.606368999999972],[-85.793059999999855,80.596939000000077],[-85.854720999999984,80.582214000000135],[-85.889724999999999,80.573044000000039],[-85.925277999999992,80.562485000000038],[-85.950606999999991,80.552947999999958],[-85.95666499999993,80.548325000000091],[-85.982773000000009,80.537491000000045],[-86.011947999999961,80.533324999999934],[-86.037215999999944,80.530823000000055],[-86.080840999999964,80.528320000000065],[-86.148345999999947,80.53166200000004],[-86.177490000000034,80.534149000000127],[-86.428329000000019,80.560257000000036],[-86.639998999999932,80.583054000000004],[-86.718062999999972,80.59304800000001],[-86.739165999999898,80.597487999999998],[-86.744995000000017,80.603043000000071],[-86.732498000000021,80.615265000000079],[-86.680282999999974,80.654984000000013],[-86.660003999999958,80.666091999999992],[-86.638061999999991,80.676651000000049],[-86.514724999999942,80.729431000000091],[-86.497771999999941,80.735260000000096],[-86.466110000000015,80.74552900000009],[-86.410004000000015,80.760818000000029],[-86.338333000000034,80.775542999999971],[-86.244719999999973,80.794144000000131],[-86.225554999999929,80.799149],[-86.174438000000009,80.81442300000009],[-86.050277999999992,80.856644000000074],[-85.964171999999962,80.886932000000058],[-85.846114999999998,80.928589000000102],[-85.828339000000028,80.93414300000012],[-85.77416999999997,80.948868000000061],[-85.698607999999922,80.962769000000037],[-85.605835000000013,80.975815000000125],[-85.556106999999997,80.981933999999967],[-85.003066999999874,81.028320000000008],[-84.928878999999995,81.030822999999941],[-84.726669000000015,81.031097000000102],[-84.404998999999918,81.043869000000086],[-84.368332000000009,81.046097000000032],[-84.20666499999993,81.060531999999967],[-84.119994999999903,81.067490000000134],[-84.025009000000011,81.070830999999998],[-83.908050999999944,81.071381000000031],[-83.823623999999938,81.073608000000092],[-83.529998999999918,81.090271000000143],[-83.31138599999997,81.103317000000118],[-83.15055799999999,81.120529000000147],[-83.12332200000003,81.12303200000008],[-83.053328999999962,81.123306000000014],[-82.943603999999993,81.120818999999983],[-82.869445999999925,81.121368000000075],[-82.826401000000033,81.12303200000008],[-82.785004000000015,81.125534000000016],[-82.760283999999956,81.129150000000038],[-82.738891999999964,81.133880999999974],[-82.707229999999981,81.144440000000031],[-82.688323999999966,81.148331000000098],[-82.64416499999993,81.151657000000114],[-82.599166999999966,81.152771000000087],[-82.531386999999938,81.149993999999992],[-82.50306699999993,81.147766000000047],[-82.466659999999933,81.148331000000098],[-82.37222300000002,81.174698000000149],[-82.364440999999999,81.17942800000003],[-82.389998999999989,81.180266999999958],[-82.420837000000006,81.17942800000003],[-82.484160999999972,81.169983000000116],[-82.52305599999994,81.166382000000056],[-82.565276999999924,81.166092000000049],[-82.665008999999998,81.17442299999999],[-82.828063999999983,81.173308999999961],[-82.866652999999928,81.169708000000128],[-82.894164999999987,81.165268000000083],[-82.926940999999999,81.161102000000028],[-82.962783999999942,81.158325000000104],[-83.14973399999991,81.151382000000126],[-83.453338999999971,81.13220199999995],[-83.757507000000032,81.113312000000008],[-84.116104000000007,81.0977630000001],[-84.372771999999941,81.092209000000082],[-84.58555599999994,81.086380000000077],[-84.797500999999954,81.078323000000125],[-85.065551999999911,81.066375999999991],[-85.211944999999901,81.056931000000077],[-85.25,81.05525200000011],[-85.291381999999999,81.054703000000131],[-85.404448999999943,81.057755000000043],[-85.482773000000009,81.058594000000028],[-85.572509999999966,81.05664100000007],[-85.681670999999938,81.049423000000104],[-85.75556899999998,81.041367000000037],[-85.817779999999971,81.032761000000107],[-85.988602000000014,81.006653000000142],[-86.143340999999907,80.978317000000061],[-86.30972300000002,80.940811000000053],[-86.351944000000003,80.930542000000059],[-87.061935000000005,80.727478000000133],[-87.076401000000033,80.7227630000001],[-87.083618000000001,80.716934000000094],[-87.079078999999979,80.707024000000104],[-87.080291999999986,80.699142000000052],[-87.121383999999921,80.677475000000015],[-87.180557000000022,80.649154999999951],[-87.215011999999945,80.638321000000076],[-87.240554999999972,80.634155000000021],[-87.273055999999997,80.630813999999987],[-87.315001999999936,80.629424999999969],[-87.458054000000004,80.627762000000075],[-87.489715999999873,80.627472000000012],[-87.559433000000013,80.627472000000012],[-87.594726999999978,80.628586000000041],[-87.628051999999968,80.632202000000063],[-87.777221999999938,80.648880000000133],[-87.864166000000012,80.659424000000001],[-87.954726999999878,80.671645999999953],[-88.139724999999999,80.685256999999922],[-88.17721599999993,80.686920000000043],[-88.196105999999986,80.688582999999994],[-88.22222899999997,80.691085999999984],[-88.348891999999921,80.708602999999982],[-88.406661999999926,80.716934000000094],[-88.488601999999958,80.731934000000024],[-88.566956000000005,80.74859600000002],[-88.706116000000009,80.772766000000047],[-88.967498999999862,80.808594000000085],[-89.034163999999976,80.816376000000048],[-89.125823999999966,80.825821000000076],[-89.290557999999976,80.849426000000108],[-89.334731999999917,80.857483000000059],[-89.382492000000013,80.86970500000001],[-89.398055999999997,80.876082999999994],[-89.450561999999934,80.903320000000122],[-89.462218999999948,80.909988000000055],[-89.466110000000015,80.914153999999996],[-89.462218999999948,80.919144000000017],[-89.442763999999897,80.923599000000024],[-89.380828999999892,80.933044000000109],[-89.235274999999945,80.948318000000029],[-89.18638599999997,80.953048999999965],[-88.905563000000029,80.977768000000083],[-88.858611999999994,80.981368999999972],[-88.766861000000006,80.986801000000014],[-88.590285999999992,80.996368000000018],[-88.513901000000033,80.99832200000003],[-88.283324999999991,81.002213000000097],[-88.089721999999938,81.003601000000003],[-88.011397999999986,81.003326000000015],[-87.826674999999966,80.998032000000023],[-87.755004999999983,80.994980000000112],[-87.689437999999939,80.990814],[-87.628051999999968,80.984711000000061],[-87.597504000000015,80.980819999999994],[-87.524169999999913,80.977203000000031],[-87.446380999999974,80.976928999999927],[-87.279448999999943,80.981933999999967],[-87.15943900000002,80.986922999999933],[-87.119719999999973,80.989700000000028],[-87.089172000000019,80.994141000000127],[-87.064712999999983,80.998871000000008],[-87.030562999999972,81.001938000000109],[-86.983062999999902,81.003876000000048],[-86.946105999999986,81.004166000000055],[-86.755004999999983,81.001099000000124],[-86.711670000000026,81.002487000000031],[-86.671936000000017,81.005264000000125],[-86.635559000000001,81.009430000000066],[-86.541945999999996,81.020264000000111],[-86.419448999999986,81.036102000000142],[-86.061110999999983,81.082764000000054],[-85.916396999999961,81.104980000000012],[-85.916396999999961,81.110260000000096],[-85.907227000000034,81.113875999999948],[-85.887512000000015,81.118866000000025],[-85.562774999999988,81.17942800000003],[-85.483063000000016,81.192748999999992],[-85.425277999999935,81.201660000000061],[-85.297500999999954,81.218597000000102],[-85.22193900000002,81.226379000000065],[-85.02027899999996,81.244980000000055],[-84.976394999999968,81.248596000000134],[-84.876388999999961,81.254715000000147],[-84.832503999999972,81.258330999999998],[-84.802490000000034,81.261658000000125],[-84.776108000000022,81.266097999999943],[-84.733886999999982,81.281097000000045],[-84.735549999999989,81.285537999999974],[-84.745834000000002,81.289429000000041],[-84.899993999999936,81.304977000000008],[-84.936660999999958,81.307755000000043],[-84.975554999999986,81.307479999999998],[-85.029175000000009,81.305817000000047],[-85.279174999999952,81.289978000000133],[-85.361388999999974,81.28276100000005],[-85.768340999999964,81.244705000000067],[-85.950561999999991,81.224701000000096],[-86.018341000000021,81.215820000000008],[-86.077498999999932,81.207489000000066],[-86.154174999999952,81.193313999999987],[-86.225006000000008,81.173874000000012],[-86.240829000000019,81.16914399999996],[-86.256957999999941,81.162766000000033],[-86.299437999999896,81.148605000000032],[-86.338333000000034,81.138596000000007],[-86.404998999999975,81.129700000000071],[-86.438048999999921,81.126083000000108],[-86.472777999999892,81.122757000000092],[-86.521118000000001,81.119704999999954],[-86.650833000000034,81.115814000000114],[-86.956389999999999,81.099426000000051],[-87.111388999999917,81.087769000000094],[-87.297225999999966,81.076935000000049],[-87.637512000000015,81.059417999999994],[-87.678878999999995,81.058594000000028],[-87.720000999999911,81.059417999999994],[-87.841385000000002,81.062759000000028],[-88.0625,81.069992000000013],[-88.217772999999852,81.071381000000031],[-88.339995999999985,81.069717000000026],[-88.43499799999995,81.064148000000046],[-88.571670999999924,81.054703000000131],[-88.65834000000001,81.051376000000005],[-88.740828999999962,81.049713000000111],[-88.889998999999932,81.051926000000037],[-88.964721999999938,81.049423000000104],[-89.041672000000005,81.041091999999992],[-89.210555999999997,81.026657000000057],[-89.25556899999998,81.023880000000133],[-89.341675000000009,81.020264000000111],[-89.629165999999998,81.009155000000021],[-89.746658000000025,81.008881000000088],[-89.787505999999951,81.009720000000073],[-89.820847000000015,81.010817999999972],[-89.87388599999997,81.016388000000006],[-90.011947999999961,81.033051000000114],[-90.06361400000003,81.039702999999975],[-90.095275999999899,81.044708000000071],[-90.149170000000026,81.054977000000065],[-90.19776899999988,81.069717000000026],[-90.210007000000019,81.07499700000011],[-90.338057999999933,81.151657000000114],[-90.351944000000003,81.167479999999955],[-90.325561999999934,81.181930999999963],[-90.277221999999995,81.197205000000054],[-90.102218999999991,81.230270000000132],[-90.043059999999969,81.239426000000037],[-90.011123999999995,81.241928000000144],[-89.972778000000005,81.24275200000011],[-89.870543999999938,81.242203000000131],[-89.74610899999999,81.236649],[-89.669158999999866,81.218048000000124],[-89.635009999999909,81.212203999999929],[-89.573059000000001,81.206940000000145],[-89.535004000000015,81.206100000000106],[-89.491104000000007,81.206375000000094],[-89.447219999999902,81.208328000000051],[-89.357223999999974,81.214432000000102],[-89.281386999999995,81.221649000000014],[-89.136672999999973,81.238876000000005],[-89.088333000000034,81.242477000000065],[-89.044448999999986,81.24275200000011],[-88.982223999999974,81.241928000000144],[-88.954178000000013,81.24275200000011],[-88.944152999999972,81.24414100000007],[-88.935821999999973,81.247756999999979],[-88.949721999999895,81.253601000000003],[-88.979445999999996,81.258330999999998],[-89.162215999999944,81.255829000000119],[-89.198607999999865,81.253326000000129],[-89.265014999999948,81.244431000000134],[-89.307220000000029,81.240540000000067],[-89.335280999999952,81.24275200000011],[-89.443603999999937,81.260543999999982],[-89.687774999999988,81.289978000000133],[-89.775008999999955,81.296371000000079],[-89.868056999999965,81.306090999999981],[-89.898620999999935,81.31053199999991],[-89.91722099999987,81.314422999999977],[-89.950287000000003,81.324158000000068],[-89.952498999999875,81.329437000000041],[-89.940552000000025,81.333328000000108],[-89.916396999999904,81.336928999999998],[-89.882216999999969,81.340271000000087],[-89.702224999999999,81.350266000000033],[-89.627212999999983,81.356644000000017],[-89.242492999999968,81.423035000000027],[-89.059158000000025,81.455551000000071],[-88.928328999999962,81.485535000000141],[-88.90943900000002,81.490814000000114],[-88.846953999999982,81.49971000000005],[-88.715835999999967,81.513045999999974],[-88.545272999999952,81.525269000000037],[-88.494995000000017,81.527206000000092],[-88.406113000000005,81.528320000000065],[-88.37110899999999,81.526931999999988],[-88.161391999999921,81.530273000000022],[-88.029998999999975,81.535812000000021],[-87.984160999999972,81.535812000000021],[-87.959732000000031,81.534714000000122],[-87.939437999999996,81.531661999999983],[-87.893699999999967,81.524712000000136],[-87.801391999999964,81.515548999999965],[-87.679442999999935,81.51388500000013],[-87.490279999999984,81.508880999999974],[-87.431380999999931,81.50471500000009],[-87.398894999999982,81.500824000000023],[-87.343063000000029,81.492752000000053],[-87.311110999999983,81.488876000000005],[-87.276672000000019,81.485809000000074],[-87.251403999999923,81.487488000000042],[-87.244719999999973,81.490265000000136],[-87.286391999999921,81.505554000000075],[-87.288329999999974,81.506104000000107],[-87.315551999999968,81.513321000000019],[-87.37860099999989,81.517212000000086],[-87.489166000000012,81.523315000000025],[-87.645844000000011,81.527480999999909],[-87.721664000000033,81.532211000000132],[-87.751952999999958,81.535263000000043],[-87.915008999999941,81.552765000000079],[-88.279449,81.579436999999984],[-88.306380999999931,81.581374999999923],[-88.352218999999991,81.579712000000029],[-88.392226999999991,81.57777400000009],[-88.446944999999971,81.572220000000073],[-88.552215999999987,81.558868000000018],[-88.642226999999934,81.551651000000106],[-88.669448999999986,81.550537000000134],[-88.769164999999987,81.551086000000112],[-88.849990999999989,81.550537000000134],[-88.900283999999886,81.548325000000091],[-88.998046999999985,81.540543000000127],[-89.073058999999944,81.532211000000132],[-89.145844000000011,81.523041000000092],[-89.282500999999911,81.505264000000011],[-89.548339999999882,81.477203000000145],[-89.585555999999997,81.473037999999974],[-89.710280999999952,81.455261000000064],[-90.011397999999929,81.416930999999977],[-90.370833999999945,81.375259000000085],[-90.443053999999961,81.366652999999985],[-90.467498999999918,81.367751999999996],[-90.500564999999938,81.371368000000018],[-90.535827999999981,81.37692300000009],[-90.553329000000019,81.38499500000006],[-90.525283999999999,81.388596000000121],[-90.517226999999934,81.389160000000061],[-90.478881999999999,81.394440000000145],[-90.481383999999991,81.396652000000017],[-90.487777999999935,81.398604999999975],[-90.516953000000001,81.402481000000023],[-90.643616000000009,81.416381999999999],[-90.678328999999962,81.417480000000126],[-90.746658000000025,81.422211000000061],[-90.779998999999975,81.425537000000077],[-90.811385999999914,81.429977000000065],[-90.841110000000015,81.435531999999967],[-90.854171999999949,81.440536000000122],[-90.856658999999922,81.444138000000066],[-90.853881999999942,81.450821000000076],[-90.848342999999943,81.454987000000131],[-90.80082699999997,81.464995999999985],[-90.770554000000004,81.469711000000018],[-90.583069000000023,81.497482000000105],[-90.540282999999988,81.501663000000008],[-90.312209999999993,81.531371999999976],[-90.130553999999904,81.564423000000147],[-89.874709999999936,81.599152000000004],[-89.797500999999954,81.602478000000019],[-89.674438000000009,81.601654000000053],[-89.632492000000013,81.604706000000022],[-89.597503999999958,81.614151000000049],[-89.585006999999962,81.619705000000067],[-89.585006999999962,81.625809000000061],[-89.601943999999889,81.627762000000018],[-89.798889000000031,81.629974000000061],[-89.868056999999965,81.630264000000125],[-89.914169000000015,81.628310999999997],[-89.962218999999948,81.625534000000073],[-90.069457999999941,81.633606000000043],[-90.111580000000004,81.656746000000112],[-90.204726999999934,81.686371000000065],[-90.271392999999989,81.697479000000101],[-90.296950999999979,81.698593000000074],[-90.330291999999986,81.696090999999967],[-90.353057999999976,81.690536000000066],[-90.36082499999992,81.685257000000092],[-90.355270000000019,81.673599000000081],[-90.337218999999948,81.662491000000102],[-90.354720999999984,81.651382000000012],[-90.511123999999995,81.65776100000005],[-90.604720999999927,81.664703000000145],[-90.638901000000033,81.668045000000063],[-90.678878999999995,81.668869000000029],[-90.718886999999938,81.666656000000103],[-90.734725999999966,81.660812000000078],[-90.74221799999998,81.655548000000067],[-90.763625999999931,81.645537999999988],[-90.779723999999987,81.641098],[-90.803878999999995,81.636108000000092],[-90.834731999999974,81.631363000000079],[-90.878052000000025,81.627472000000012],[-90.923888999999974,81.625259000000028],[-90.966948999999943,81.621094000000028],[-90.99110399999995,81.616088999999988],[-91.006957999999997,81.598876999999959],[-91.003341999999918,81.592209000000025],[-90.988602000000014,81.579436999999984],[-90.988602000000014,81.557754999999986],[-91.071670999999981,81.537200999999982],[-91.091949,81.533874999999966],[-91.104445999999996,81.534424000000115],[-91.113891999999964,81.539978000000076],[-91.236938000000009,81.543320000000051],[-91.313888999999961,81.53414900000007],[-91.401397999999972,81.526382000000126],[-91.446380999999974,81.524428999999998],[-91.463332999999977,81.526093000000003],[-91.467772999999909,81.527206000000092],[-91.452498999999932,81.531661999999983],[-91.428604000000007,81.536652000000061],[-91.411117999999988,81.541931000000034],[-91.406386999999938,81.547760000000039],[-91.444153000000028,81.583603000000096],[-91.474441999999954,81.588882000000069],[-91.654175000000009,81.605819999999994],[-91.74722300000002,81.60914600000001],[-91.85722399999986,81.612762000000089],[-91.878326000000015,81.614151000000049],[-91.900283999999999,81.616928000000144],[-91.938599000000011,81.625534000000073],[-91.948607999999922,81.631088000000091],[-91.956664999999987,81.658600000000035],[-91.949432000000002,81.662201000000096],[-91.926940999999999,81.664992999999981],[-91.902221999999938,81.666931000000091],[-91.867767000000015,81.663315000000068],[-91.838897999999858,81.658600000000035],[-91.801101999999958,81.658600000000035],[-91.770844000000011,81.663315000000068],[-91.73721299999994,81.686920000000043],[-91.725829999999917,81.706650000000025],[-91.723617999999874,81.72164900000007],[-91.485549999999989,81.769989000000123],[-91.386123999999995,81.77388000000002],[-91.351395000000025,81.770264000000111],[-91.287506000000008,81.761931999999945],[-91.255004999999983,81.759155000000078],[-91.212508999999898,81.759430000000066],[-91.053328999999906,81.761658000000011],[-91.03443900000002,81.763885000000073],[-91.033324999999991,81.76776099999995],[-91.05749499999996,81.772766000000047],[-91.090560999999923,81.777206000000035],[-91.117766999999958,81.784424000000058],[-91.140563999999983,81.791930999999977],[-91.152495999999928,81.798035000000027],[-91.147232000000031,81.803864000000033],[-91.137511999999958,81.808594000000085],[-91.101104999999961,81.818878000000097],[-91.051665999999955,81.828872999999987],[-91.001113999999973,81.832764000000054],[-90.852218999999991,81.842483999999956],[-90.727492999999981,81.841094999999996],[-90.704178000000013,81.843597000000045],[-90.689986999999917,81.848602000000085],[-90.686377999999991,81.853966000000014],[-90.678328999999962,81.858597000000032],[-90.635009999999966,81.868866000000025],[-90.610001000000011,81.873871000000065],[-90.565276999999867,81.878036000000066],[-90.436661000000015,81.887497000000053],[-90.338057999999933,81.893051000000071],[-90.245270000000005,81.896102999999982],[-90.154449,81.896652000000131],[-89.990828999999962,81.905548000000067],[-89.783324999999934,81.917206000000078],[-89.735824999999977,81.917480000000012],[-89.700835999999981,81.915543000000127],[-89.676940999999999,81.9102630000001],[-89.683051999999975,81.899437000000148],[-89.682494999999903,81.883330999999998],[-89.649445000000014,81.863312000000064],[-89.629989999999964,81.856369000000029],[-89.461394999999982,81.818054000000132],[-89.425003000000004,81.815262000000018],[-89.356383999999935,81.811096000000134],[-89.244720000000029,81.846375000000023],[-89.227218999999991,81.852203000000145],[-89.203223999999977,81.878036000000066],[-89.19923399999999,81.881537999999921],[-89.199059000000034,81.885208000000034],[-89.213218999999981,81.888382000000092],[-89.328063999999927,81.902206000000092],[-89.367217999999923,81.905548000000067],[-89.397506999999962,81.909424000000115],[-89.419158999999979,81.915543000000127],[-89.416945999999939,81.925812000000008],[-89.397780999999895,81.930817000000047],[-89.371658000000025,81.935806000000014],[-89.338897999999972,81.940262000000075],[-89.288895000000025,81.943038999999999],[-89.249724999999955,81.941086000000041],[-89.157393999999954,81.928368000000091],[-89.156218999999908,81.925201000000072],[-89.152556999999945,81.921371000000079],[-89.133057000000008,81.918533000000082],[-89.074721999999952,81.911652000000061],[-89.033324999999991,81.912201000000039],[-89.007232999999871,81.915543000000127],[-88.98971599999993,81.921097000000145],[-88.986388999999974,81.944976999999938],[-88.992767000000015,81.951385000000073],[-89.011947999999904,81.958603000000096],[-89.048339999999996,81.978043000000071],[-89.054442999999992,81.987487999999985],[-89.041106999999954,81.993041999999946],[-89.021117999999944,81.998032000000023],[-88.963897999999972,82.008041000000048],[-88.77305599999994,82.039429000000041],[-88.625548999999978,82.062759000000028],[-88.589721999999938,82.066665999999998],[-88.543059999999912,82.070540999999992],[-88.443054000000018,82.074997000000053],[-88.296660999999915,82.080276000000026],[-88.25,82.080826000000059],[-88.145003999999972,82.086928999999998],[-88.11361699999992,82.090545999999961],[-88.09973100000002,82.093048000000067],[-88.095001000000025,82.096374999999966],[-88.085281000000009,82.101379000000122],[-88.075561999999934,82.104980000000012],[-88.038329999999974,82.103867000000093],[-87.91194200000001,82.090820000000065],[-87.71833799999996,82.083878000000027],[-87.702224999999942,82.086928999999998],[-87.666396999999904,82.089431999999988],[-87.641952999999944,82.090271000000143],[-87.599730999999963,82.089157],[-87.50140399999998,82.084152000000131],[-87.402221999999938,82.07388300000008],[-87.352782999999931,82.06721500000009],[-87.333617999999888,82.063309000000061],[-87.271666999999979,82.047759999999926],[-87.230559999999969,82.036926000000051],[-87.195830999999998,82.026382000000012],[-87.183608999999933,82.022491000000116],[-87.174437999999896,82.014708999999982],[-87.173324999999977,82.011107999999922],[-87.178603999999893,82.007767000000115],[-87.197768999999937,82.002213000000097],[-87.232773000000009,81.99331699999999],[-87.258057000000008,81.989426000000094],[-87.299987999999985,81.979155999999989],[-87.314437999999996,81.973877000000016],[-87.309432999999956,81.967484000000013],[-87.265839000000028,81.958878000000141],[-87.169158999999979,81.945526000000086],[-87.101669000000015,81.937759000000142],[-87.063323999999909,81.934418000000107],[-86.939437999999996,81.918868999999972],[-86.877212999999983,81.909424000000115],[-86.828887999999949,81.897491000000059],[-86.804169000000002,81.893051000000071],[-86.768341000000021,81.890273999999977],[-86.726669000000015,81.891937000000098],[-86.726944000000003,81.897217000000126],[-86.734160999999915,81.902771000000143],[-86.745833999999945,81.906647000000021],[-86.834732000000031,81.927765000000136],[-86.86361699999992,81.933593999999971],[-86.919448999999986,81.942748999999992],[-87.066101000000003,81.954987000000074],[-87.098052999999936,81.958328000000108],[-87.127212999999927,81.963882000000069],[-87.130279999999857,81.968322999999998],[-87.00140399999998,82.036102000000085],[-86.987212999999997,82.039978000000019],[-86.931670999999938,82.049423000000047],[-86.892501999999979,82.054153000000099],[-86.84333799999996,82.05720500000001],[-86.791945999999939,82.058029000000147],[-86.583617999999944,82.053863999999976],[-86.356383999999991,82.053588999999988],[-86.27806099999998,82.050812000000064],[-86.239166000000012,82.048599000000081],[-86.202788999999996,82.04553199999998],[-86.169158999999922,82.041656000000103],[-86.016112999999962,82.016663000000051],[-85.960555999999997,82.00749200000007],[-85.914443999999946,81.997481999999991],[-85.815001999999993,81.973877000000016],[-85.767501999999922,81.961928999999941],[-85.731383999999878,81.949996999999996],[-85.628875999999991,81.916092000000106],[-85.467223999999987,81.867203000000131],[-85.422501000000011,81.857483000000059],[-85.379439999999988,81.856934000000081],[-85.371658000000025,81.859711000000004],[-85.37388599999997,81.863876000000005],[-85.385833999999932,81.874985000000095],[-85.398055999999997,81.881088000000034],[-85.441939999999988,81.893875000000037],[-85.469451999999876,81.899719000000005],[-85.566101000000003,81.924988000000042],[-85.654723999999987,81.950821000000133],[-85.731948999999986,81.983322000000044],[-85.729996000000028,81.987762000000089],[-85.726943999999946,81.990265000000079],[-85.693877999999984,81.994980000000112],[-85.650557999999933,81.99832200000003],[-85.559432999999956,82.001663000000065],[-85.258621000000005,81.996933000000013],[-85.217498999999975,81.995529000000033],[-85.188323999999909,81.99275200000011],[-85.165833000000021,81.985259999999982],[-85.160004000000015,81.979706000000022],[-85.140563999999927,81.966095000000053],[-85.096389999999985,81.945816000000093],[-85.018889999999999,81.919434000000024],[-84.984160999999915,81.911102000000028],[-84.879439999999988,81.887497000000053],[-84.838897999999915,81.882476999999994],[-84.816887000000008,81.885367999999914],[-84.821884000000011,81.888214000000062],[-84.844222999999886,81.894882000000052],[-84.863891999999964,81.900269000000037],[-84.915008999999998,81.918045000000006],[-84.994719999999973,81.948593000000017],[-85.025283999999942,81.960815000000139],[-85.037216000000001,81.966933999999981],[-85.048889000000031,81.974426000000108],[-85.066100999999946,81.987487999999985],[-85.055556999999965,81.990814],[-85.038329999999974,81.994141000000127],[-85.00111400000003,81.994141000000127],[-84.929169000000002,81.993041999999946],[-84.889174999999966,81.990265000000079],[-84.858886999999925,81.985259999999982],[-84.831680000000006,81.979430999999977],[-84.816665999999941,81.970825000000048],[-84.814437999999996,81.966385000000059],[-84.815276999999924,81.961104999999975],[-84.821945000000028,81.949141999999938],[-84.797606999999971,81.930870000000141],[-84.789267999999993,81.924698000000035],[-84.75144199999994,81.910538000000088],[-84.74227899999994,81.908378999999968],[-84.688598999999954,81.891937000000098],[-84.656113000000005,81.887772000000098],[-84.635283999999956,81.886108000000036],[-84.621933000000013,81.886932000000002],[-84.604996000000028,81.88998400000014],[-84.714721999999995,81.969986000000119],[-84.729720999999984,81.977203000000031],[-84.751677999999913,81.984711000000061],[-84.815276999999924,82.00082400000008],[-84.840835999999967,82.006103999999993],[-84.89973399999991,82.015274000000034],[-84.93249499999996,82.019440000000088],[-85.039992999999981,82.028594999999996],[-85.116942999999935,82.033051000000057],[-85.405838000000017,82.042205999999965],[-85.678328999999906,82.054428000000087],[-85.755843999999968,82.058868000000132],[-85.851669000000015,82.06721500000009],[-85.915833000000021,82.07748400000014],[-85.999725000000012,82.094147000000021],[-86.062209999999936,82.103867000000093],[-86.091109999999901,82.104431000000034],[-86.278885000000002,82.107208000000128],[-86.485001000000011,82.114150999999936],[-86.565551999999968,82.118865999999969],[-86.637511999999958,82.124419999999986],[-86.706116000000009,82.131927000000132],[-86.731383999999935,82.136383000000023],[-86.752228000000002,82.141098000000056],[-86.856658999999922,82.184708000000057],[-86.869155999999919,82.195251000000042],[-86.876099000000011,82.202208999999982],[-86.871933000000013,82.207764000000111],[-86.843613000000005,82.212494000000106],[-86.764174999999966,82.221649000000014],[-86.669448999999929,82.228316999999947],[-86.619445999999982,82.229705999999965],[-86.571670999999981,82.230270000000075],[-86.520003999999915,82.229705999999965],[-86.316665999999998,82.224701000000096],[-86.228881999999885,82.224701000000096],[-86.181106999999997,82.225266000000147],[-86.137787000000003,82.226929000000041],[-85.984436000000017,82.237488000000099],[-85.934158000000025,82.238876000000005],[-85.841384999999946,82.239151000000049],[-85.798889000000031,82.237762000000032],[-85.753890999999953,82.237488000000099],[-85.706115999999952,82.23803700000002],[-85.662215999999944,82.239699999999971],[-85.61999499999996,82.243591000000038],[-85.603881999999999,82.24914600000011],[-85.598891999999978,82.254440000000102],[-85.580565999999976,82.264434999999992],[-85.557770000000005,82.269440000000088],[-85.508347000000015,82.273041000000092],[-85.413895000000025,82.27609300000006],[-85.370833999999945,82.279984000000127],[-85.350554999999929,82.283875000000023],[-85.34722899999997,82.286377000000073],[-85.367492999999911,82.291092000000106],[-85.396392999999989,82.29693600000013],[-85.457229999999981,82.307479999999998],[-85.481673999999941,82.313599000000011],[-85.489990000000034,82.319716999999969],[-85.515015000000005,82.343322999999998],[-85.531677000000002,82.369705000000067],[-85.50167799999997,82.393600000000106],[-85.501403999999923,82.398880000000133],[-85.515288999999996,82.403320000000008],[-85.534164000000033,82.407486000000063],[-85.669448999999872,82.409424000000001],[-85.866942999999992,82.421920999999998],[-85.904998999999975,82.424988000000099],[-85.921111999999994,82.429977000000065],[-85.911941999999954,82.435806000000071],[-85.819732999999928,82.454437000000098],[-85.794723999999974,82.458602999999982],[-85.746947999999975,82.461380000000077],[-85.708617999999944,82.463608000000022],[-85.502501999999993,82.471099999999979],[-85.298614999999927,82.478042999999957],[-85.046950999999979,82.481934000000024],[-85.003066999999874,82.480820000000051],[-84.693877999999927,82.471375000000023],[-84.662780999999995,82.468596999999988],[-84.641678000000013,82.465546000000018],[-84.62222300000002,82.459152000000131],[-84.616394000000014,82.453598000000113],[-84.613326999999913,82.447204999999997],[-84.613326999999913,82.4433140000001],[-84.631377999999984,82.440262000000018],[-84.787780999999995,82.434982000000105],[-84.895279000000016,82.433594000000028],[-84.940552000000025,82.431931000000077],[-84.943877999999984,82.425812000000064],[-84.916655999999932,82.42053199999998],[-84.888610999999855,82.416930999999977],[-84.714721999999995,82.405822999999941],[-84.559722999999906,82.394989000000066],[-84.482498000000021,82.389435000000105],[-84.449996999999996,82.386107999999979],[-84.418334999999956,82.381088000000091],[-84.388061999999991,82.371094000000085],[-84.384170999999924,82.366089000000045],[-84.387221999999952,82.361649],[-84.378600999999946,82.356933999999967],[-84.34445199999999,82.352768000000083],[-84.303329000000019,82.355819999999994],[-84.228881999999999,82.363876000000062],[-84.180556999999965,82.368042000000003],[-84.146956999999986,82.369705000000067],[-84.095550999999944,82.371094000000085],[-84.047226000000023,82.371368000000018],[-83.961394999999925,82.368591000000094],[-83.876937999999939,82.364151000000106],[-83.841948999999943,82.361374000000012],[-83.767501999999979,82.353043000000071],[-83.606383999999935,82.33137499999998],[-83.516402999999968,82.316940000000045],[-83.384734999999978,82.282210999999961],[-83.36860699999994,82.276381999999955],[-83.360001000000011,82.269440000000088],[-83.360001000000011,82.263611000000026],[-83.369155999999975,82.251663000000008],[-83.371933000000013,82.24470500000001],[-83.371933000000013,82.239151000000049],[-83.344451999999933,82.227203000000145],[-83.308334000000002,82.218323000000112],[-83.24221799999998,82.204163000000051],[-83.184157999999968,82.194702000000063],[-83.130553999999961,82.184981999999991],[-83.083892999999932,82.175812000000121],[-83.022781000000009,82.159424000000058],[-83,82.151093000000003],[-82.976669000000015,82.138321000000133],[-82.953063999999983,82.119979999999998],[-82.95666499999993,82.109711000000118],[-82.958617999999944,82.104431000000034],[-82.968338000000017,82.098038000000088],[-82.978058000000033,82.093872000000033],[-83.001953000000015,82.089157],[-83.0625,82.080276000000026],[-83.126098999999954,82.072495000000004],[-83.128051999999968,82.06721500000009],[-83.111937999999952,82.065261999999962],[-83.076400999999919,82.061920000000043],[-82.974166999999966,82.064986999999974],[-82.888335999999981,82.072495000000004],[-82.797501000000011,82.077773999999977],[-82.758057000000008,82.076934999999992],[-82.674438000000009,82.073043999999925],[-82.636397999999986,82.070540999999992],[-82.421660999999972,82.066940000000102],[-82.284163999999976,82.066375999999991],[-82.199432000000002,82.064147999999989],[-82.122222999999906,82.058594000000028],[-82.055556999999965,82.050812000000064],[-81.963622999999927,82.037201000000096],[-81.926101999999958,82.034714000000008],[-81.889998999999989,82.034988000000112],[-81.878051999999968,82.03637700000013],[-81.884734999999921,82.041091999999992],[-81.924164000000019,82.058868000000132],[-81.966110000000015,82.071105999999986],[-82.020844000000011,82.082213999999965],[-82.05860899999999,82.084717000000126],[-82.102492999999981,82.085541000000092],[-82.243056999999965,82.084991000000059],[-82.417496000000028,82.087204000000042],[-82.546386999999982,82.090271000000143],[-82.58444199999991,82.09275800000006],[-82.619719999999916,82.096099999999979],[-82.651947000000007,82.100266000000033],[-82.676940999999943,82.10775799999999],[-82.683884000000035,82.118317000000047],[-82.688599000000011,82.126083000000108],[-82.697495000000004,82.131362999999965],[-82.717223999999931,82.142761000000007],[-82.731383999999935,82.149993999999992],[-82.772232000000031,82.163315000000125],[-82.860275000000001,82.187759000000085],[-82.886947999999961,82.193862999999908],[-82.94027699999998,82.203598],[-82.987503000000004,82.214995999999985],[-83.011397999999986,82.221649000000014],[-83.027785999999878,82.235259999999982],[-83.028884999999946,82.264998999999989],[-83.028884999999946,82.276657],[-83.02555799999999,82.283324999999991],[-83.019164999999873,82.288879000000122],[-82.990829000000019,82.292480000000012],[-82.735549999999932,82.286102000000028],[-82.693603999999937,82.284714000000122],[-82.654448999999886,82.282210999999961],[-82.621658000000025,82.278045999999961],[-82.508895999999936,82.258040999999992],[-82.452788999999939,82.249420000000043],[-82.286666999999966,82.229156000000103],[-82.263061999999991,82.222214000000008],[-82.211120999999991,82.204711999999972],[-82.160278000000005,82.193313999999987],[-82.101943999999946,82.183044000000052],[-82.011123999999995,82.168594000000098],[-81.918059999999912,82.15498400000007],[-81.608886999999982,82.118590999999981],[-81.425277999999935,82.0977630000001],[-81.353057999999976,82.091659999999933],[-81.249161000000015,82.081375000000037],[-81.150283999999999,82.068878000000041],[-81.091110000000015,82.059417999999994],[-80.868332000000009,82.03137200000009],[-80.640288999999996,82.018326000000116],[-80.43249499999996,81.997481999999991],[-80.225829999999974,81.986098999999967],[-80.153609999999958,81.981368999999916],[-80.085006999999905,81.973602000000142],[-80.035277999999948,81.963042999999914],[-79.883056999999951,81.924698000000035],[-79.610000999999897,81.851089000000002],[-79.589721999999938,81.844147000000078],[-79.587783999999999,81.838318000000072],[-79.577224999999942,81.828872999999987],[-79.564163000000008,81.825271999999927],[-79.53443900000002,81.820831000000055],[-79.492217999999923,81.819717000000026],[-79.244445999999925,81.816085999999984],[-79.229171999999949,81.816085999999984],[-79.452224999999999,81.88998400000014],[-79.489989999999977,81.900269000000037],[-79.521117999999888,81.905548000000067],[-79.579726999999934,81.913605000000018],[-79.670837000000006,81.927475000000072],[-79.844451999999933,81.97137499999991],[-79.837783999999942,82.007217000000082],[-79.832229999999868,82.013885000000016],[-79.853333000000021,82.018875000000094],[-79.880829000000006,82.021927000000005],[-79.916397000000018,82.023880000000133],[-80.213897999999858,82.032211000000018],[-80.331680000000006,82.038589000000002],[-80.368606999999997,82.041091999999992],[-80.624435000000005,82.061920000000043],[-80.657226999999921,82.064697000000137],[-80.725554999999986,82.071655000000135],[-80.791107000000011,82.079437000000098],[-80.822234999999921,82.083878000000027],[-80.878326000000015,82.094147000000021],[-80.922226000000023,82.103592000000106],[-80.948607999999979,82.110260000000096],[-80.962783999999999,82.116379000000109],[-80.975554999999986,82.12359600000002],[-80.975554999999986,82.127762000000132],[-80.956664999999987,82.137206999999989],[-80.931380999999988,82.142212000000029],[-80.89973399999991,82.146378000000141],[-80.874435000000005,82.151093000000003],[-80.868056999999965,82.15498400000007],[-80.909163999999976,82.156647000000135],[-81.051391999999964,82.154709000000025],[-81.171111999999994,82.156372000000147],[-81.253341999999918,82.159714000000065],[-81.324722000000008,82.164993000000038],[-81.423324999999977,82.176926000000094],[-81.799728000000016,82.222762999999986],[-81.825561999999934,82.226654000000053],[-81.887786999999946,82.23803700000002],[-82.170546999999999,82.286652000000061],[-82.454726999999991,82.328048999999965],[-82.513061999999934,82.337769000000037],[-82.625548999999921,82.359146000000067],[-82.679992999999968,82.37081900000004],[-82.711670000000026,82.382477000000108],[-82.722778000000005,82.388321000000076],[-82.7308349999999,82.395264000000111],[-82.732223999999974,82.401657000000057],[-82.728881999999942,82.408325000000048],[-82.710281000000009,82.419434000000081],[-82.698333999999988,82.424988000000099],[-82.539444000000003,82.497208000000114],[-82.520553999999947,82.502487000000087],[-82.498336999999992,82.506377999999984],[-82.458892999999989,82.508331000000112],[-82.406386999999881,82.509155000000078],[-82.316956000000005,82.506943000000035],[-82.091675000000009,82.501389000000017],[-81.669997999999907,82.492477000000008],[-81.541672000000005,82.496093999999971],[-81.542220999999927,82.504990000000078],[-81.713332999999977,82.51527400000009],[-81.75140399999998,82.516937000000041],[-81.84722899999997,82.515548999999965],[-81.880554000000018,82.517761000000007],[-81.927489999999977,82.522766000000047],[-81.966400000000021,82.528870000000097],[-82.263901000000033,82.576660000000061],[-82.321121000000005,82.589157000000057],[-82.343886999999938,82.595261000000107],[-82.390288999999996,82.611923000000104],[-82.394729999999925,82.617477000000065],[-82.392226999999934,82.622756999999979],[-82.38110399999988,82.634720000000016],[-82.371933000000013,82.639708999999982],[-82.354445999999996,82.645537999999988],[-82.335281000000009,82.650543000000027],[-82.288054999999986,82.659988000000112],[-82.255004999999926,82.664428999999984],[-82.215285999999992,82.668593999999985],[-82.154998999999918,82.671097000000145],[-82.060271999999998,82.669708000000014],[-81.97222899999997,82.666382000000112],[-81.931380999999931,82.663878999999952],[-81.543335000000013,82.637207000000046],[-81.432495000000017,82.629150000000095],[-81.359725999999966,82.62081900000004],[-81.30082699999997,82.611098999999911],[-81.136123999999995,82.578049000000078],[-80.989440999999999,82.547211000000061],[-80.949721999999952,82.538040000000137],[-80.891952999999944,82.532760999999994],[-80.581679999999949,82.543045000000006],[-80.578063999999983,82.546097000000088],[-80.599166999999966,82.55442800000003],[-80.87388599999997,82.629700000000128],[-80.994445999999925,82.650269000000094],[-81.049987999999985,82.660812000000078],[-81.077224999999999,82.666931000000091],[-81.097503999999958,82.672485000000052],[-81.124709999999993,82.686919999999986],[-81.223617999999988,82.715820000000065],[-81.305831999999953,82.733871000000022],[-81.449996999999996,82.755553999999961],[-81.508620999999948,82.764709000000039],[-81.573623999999938,82.788315000000068],[-81.58444199999991,82.794434000000138],[-81.585006999999962,82.800812000000064],[-81.571670999999924,82.806366000000082],[-81.556655999999975,82.811371000000122],[-81.536391999999921,82.816665999999998],[-81.514175000000023,82.821106000000043],[-81.473052999999993,82.82499700000011],[-81.411391999999921,82.827773999999977],[-81.359725999999966,82.827773999999977],[-81.022232000000031,82.821930000000009],[-80.977218999999934,82.820267000000058],[-80.801940999999999,82.812485000000095],[-80.500564999999995,82.797484999999938],[-80.418334999999956,82.792205999999965],[-80.381103999999993,82.788879000000065],[-80.318618999999956,82.779984000000013],[-80.2933349999999,82.774429000000112],[-80.15834000000001,82.727768000000083],[-80.138901000000033,82.719986000000119],[-80.139449999999954,82.715820000000065],[-80.178329000000019,82.699997000000053],[-80.182495000000017,82.69470199999995],[-80.181380999999931,82.687759000000142],[-80.160277999999948,82.681366000000025],[-80.070846999999901,82.665543000000014],[-80.003066999999987,82.656372000000033],[-79.941665999999998,82.649429000000055],[-79.861664000000019,82.644150000000081],[-79.817779999999914,82.644440000000088],[-79.800827000000027,82.646652000000131],[-79.803604000000007,82.649994000000049],[-79.822509999999966,82.65776100000005],[-79.848617999999988,82.663878999999952],[-79.966949,82.684708000000114],[-79.983321999999987,82.689147999999989],[-79.977492999999981,82.695815999999922],[-79.961394999999925,82.700821000000019],[-79.928604000000007,82.705551000000014],[-79.885833999999875,82.708602999999925],[-79.829726999999991,82.708878000000141],[-79.787505999999894,82.707763999999997],[-79.74749799999995,82.704987000000074],[-79.684158000000025,82.699706999999989],[-79.617492999999911,82.693039000000056],[-79.468338000000017,82.677475000000129],[-79.384734999999978,82.672760000000096],[-79.149993999999936,82.667755000000056],[-78.843613000000005,82.664992999999981],[-78.565552000000025,82.674698000000035],[-78.521118000000001,82.67692599999998],[-78.502791999999999,82.681090999999981],[-78.53195199999999,82.684418000000107],[-78.576675000000023,82.686919999999986],[-78.840835999999967,82.680817000000047],[-78.895003999999858,82.680267000000015],[-78.931945999999982,82.681656000000032],[-79.243057000000022,82.695251000000098],[-79.331680000000006,82.699706999999989],[-79.40306099999998,82.70637499999998],[-79.623046999999985,82.727768000000083],[-79.836944999999901,82.750549000000092],[-79.886948000000018,82.759430000000066],[-79.913329999999917,82.765274000000034],[-79.93638599999997,82.772217000000069],[-79.996947999999975,82.803314],[-79.975829999999974,82.808594000000028],[-79.942489999999964,82.811371000000122],[-79.692215000000033,82.818054000000075],[-79.674437999999952,82.820267000000058],[-79.67222599999991,82.823883000000137],[-79.673889000000031,82.824707000000103],[-79.847777999999948,82.834991000000116],[-79.896118000000001,82.835815000000082],[-80.006667999999934,82.834427000000005],[-80.110000999999954,82.834717000000012],[-80.15834000000001,82.835541000000148],[-80.194153000000028,82.838318000000072],[-80.219727000000034,82.84165999999999],[-80.277221999999938,82.850815000000011],[-80.393065999999976,82.875534000000016],[-80.430282999999974,82.887497000000053],[-80.42971799999998,82.894150000000025],[-80.398055999999997,82.899719000000005],[-80.095839999999953,82.937194999999974],[-79.904723999999987,82.951096000000121],[-79.793335000000013,82.957489000000123],[-79.458344000000011,82.974152000000004],[-79.414444000000003,82.975266000000147],[-79.370543999999995,82.974152000000004],[-79.177489999999977,82.951935000000105],[-79.073333999999988,82.901931999999988],[-79.064437999999882,82.895828000000108],[-79.066101000000003,82.889434999999992],[-78.928054999999972,82.898605000000032],[-78.825287000000003,82.928040000000124],[-78.780288999999982,82.93803400000013],[-78.756118999999956,82.942474000000118],[-78.719726999999978,82.946640000000059],[-78.671111999999937,82.945526000000086],[-78.631942999999978,82.941360000000145],[-78.546111999999994,82.926651000000106],[-78.521666999999923,82.921097000000088],[-78.503341999999918,82.913314999999955],[-78.501953000000015,82.907760999999994],[-78.504180999999903,82.901093000000003],[-78.521941999999967,82.889159999999947],[-78.538605000000018,82.876647999999989],[-78.557770000000005,82.860535000000141],[-78.553328999999906,82.853592000000106],[-78.53443900000002,82.8477630000001],[-78.500564999999938,82.845534999999984],[-78.341674999999952,82.850540000000024],[-78.175551999999982,82.827208999999982],[-78.14416499999993,82.823318000000086],[-78.109160999999972,82.825272000000098],[-78.106658999999979,82.831940000000088],[-78.128875999999877,82.836655000000121],[-78.194442999999922,82.845824999999991],[-78.223617999999988,82.851088999999945],[-78.241378999999938,82.858871000000079],[-78.238891999999964,82.865265000000136],[-78.108337000000006,82.893326000000059],[-78.080291999999986,82.898331000000098],[-77.986663999999962,82.909988000000055],[-77.949996999999883,82.91415400000011],[-77.863327000000027,82.921371000000022],[-77.813048999999864,82.92442299999999],[-77.768340999999964,82.922485000000052],[-77.708344000000011,82.916092000000049],[-77.688889000000017,82.912490999999989],[-77.616652999999985,82.902771000000087],[-77.528060999999923,82.891098000000113],[-77.467223999999987,82.883880999999974],[-77.405272999999909,82.878860000000032],[-77.319457999999997,82.873306000000014],[-77.128325999999959,82.863312000000008],[-77.108046999999999,82.859146000000123],[-77.089171999999962,82.852767999999969],[-76.96665999999999,82.804703000000131],[-76.959166999999923,82.774155000000007],[-76.941665999999998,82.768326000000002],[-76.898346000000004,82.766098],[-76.851104999999961,82.764999000000046],[-76.815552000000025,82.761107999999979],[-76.789168999999958,82.756377999999927],[-76.766662999999994,82.750823999999966],[-76.708617999999944,82.733047000000056],[-76.674438000000009,82.721374999999966],[-76.644164999999987,82.709152000000074],[-76.612503000000004,82.696091000000138],[-76.598052999999993,82.688873000000115],[-76.570556999999951,82.666656000000046],[-76.538329999999974,82.664153999999996],[-76.387221999999952,82.651382000000012],[-76.09333799999996,82.62081900000004],[-76.058884000000035,82.616928000000144],[-75.913895000000025,82.597487999999942],[-75.892226999999991,82.591933999999981],[-75.896392999999989,82.588318000000072],[-75.918610000000001,82.579987000000017],[-75.938323999999966,82.575821000000133],[-75.972778000000005,82.571381000000088],[-76.038895000000025,82.557205000000067],[-76.194716999999969,82.511108000000036],[-76.207503999999972,82.506377999999984],[-76.217772999999909,82.500548999999978],[-76.255279999999971,82.471924000000115],[-76.261002000000019,82.466552999999976],[-76.236937999999896,82.445250999999985],[-76.230835000000013,82.444702000000007],[-76.184158000000025,82.453872999999987],[-76.102782999999874,82.470534999999984],[-76.037780999999939,82.484421000000111],[-75.975006000000008,82.499709999999993],[-75.887221999999952,82.522217000000126],[-75.802779999999984,82.546371000000022],[-75.773894999999925,82.557205000000067],[-75.671386999999925,82.586929000000112],[-75.648055999999997,82.591660000000047],[-75.606383999999935,82.595825000000048],[-75.500838999999928,82.600266000000147],[-75.451675000000023,82.603317000000004],[-75.420273000000009,82.606934000000138],[-75.396118000000001,82.614699999999971],[-75.40972899999997,82.61914100000007],[-75.43472300000002,82.623871000000122],[-75.468886999999881,82.627762000000018],[-75.503615999999852,82.628860000000088],[-75.55749499999996,82.628585999999984],[-75.625548999999978,82.633040999999992],[-75.670546999999999,82.642761000000064],[-75.807495000000017,82.654709000000082],[-76.103057999999976,82.68609600000002],[-76.235824999999977,82.712203999999986],[-76.256392999999946,82.717209000000025],[-76.275557999999933,82.724425999999994],[-76.299987999999871,82.739700000000028],[-76.306655999999919,82.745819000000097],[-76.309158000000025,82.752777000000094],[-76.269454999999994,82.760817999999972],[-76.226395000000025,82.764435000000105],[-76.176391999999964,82.767212000000029],[-76.056945999999982,82.771652000000017],[-76.014724999999999,82.775818000000129],[-75.989440999999999,82.779984000000013],[-75.976104999999961,82.784714000000065],[-75.998336999999935,82.787490999999932],[-76.18638599999997,82.78387500000008],[-76.241378999999995,82.783600000000035],[-76.288605000000018,82.784714000000065],[-76.375274999999988,82.789154000000053],[-76.447495000000004,82.797484999999938],[-76.50167799999997,82.8077550000001],[-76.525283999999942,82.813873000000001],[-76.545272999999952,82.821106000000043],[-76.586394999999982,82.83859300000006],[-76.629165999999998,82.859710999999947],[-76.666655999999989,82.872482000000048],[-76.710830999999985,82.885818000000029],[-76.752791999999999,82.894988999999953],[-76.844161999999983,82.90914900000007],[-76.881942999999978,82.913605000000018],[-77.025832999999977,82.927765000000079],[-77.066390999999953,82.93081699999999],[-77.131667999999991,82.939972000000068],[-77.344726999999978,82.972487999999998],[-77.385283999999899,82.983046999999999],[-77.381377999999984,82.994431000000134],[-77.364440999999999,83.000000000000114],[-77.341949,83.005554000000132],[-77.276108000000022,83.020264000000054],[-77.252227999999945,83.025269000000094],[-77.222777999999948,83.030548000000067],[-77.183883999999978,83.033875000000023],[-77.134734999999978,83.032486000000006],[-77.137221999999895,83.028320000000122],[-77.171386999999982,83.017211999999972],[-77.169723999999974,83.013885000000016],[-77.135558999999944,83.011383000000137],[-76.863051999999925,83.010818000000086],[-76.559432999999956,83.011932000000058],[-76.360274999999945,83.021378000000027],[-76.266662999999994,83.02915999999999],[-76.20666499999993,83.036652000000117],[-76.113327000000027,83.05053700000002],[-76.079177999999956,83.053589000000102],[-76.028610000000015,83.054428000000087],[-75.979720999999927,83.05304000000001],[-75.948607999999922,83.051926000000037],[-75.580841000000021,83.038040000000024],[-75.313323999999909,83.027480999999966],[-75.046951000000035,83.041656000000103],[-75,83.043884000000048],[-74.956389999999999,83.04553199999998],[-74.797501000000011,83.043594000000041],[-74.706664999999987,83.041091999999935],[-74.43582200000003,83.027205999999978],[-74.408050999999887,83.024704000000099],[-74.279175000000009,83.009995000000004],[-74.172774999999888,82.991088999999988],[-74.084166999999979,82.972487999999998],[-74.018065999999976,82.956940000000145],[-73.879439999999875,82.897217000000126],[-73.851668999999958,82.866653000000042],[-73.817779999999971,82.852767999999969],[-73.607772999999952,82.81581099999994],[-73.548339999999939,82.806091000000038],[-73.281951999999933,82.766388000000063],[-73.247222999999963,82.761658000000011],[-73.160278000000005,82.751388999999961],[-73.075011999999958,82.745819000000097],[-72.949721999999952,82.738876000000062],[-72.906661999999983,82.735808999999961],[-72.835830999999985,82.728592000000049],[-72.75,82.714706000000092],[-72.700835999999981,82.703323000000069],[-72.672225999999966,82.698593000000017],[-72.633895999999936,82.694427000000132],[-72.603332999999964,82.695815999999922],[-72.594727000000034,82.697479000000044],[-72.49888599999997,82.718323000000055],[-72.502501999999936,82.724425999999994],[-72.648894999999925,82.746643000000063],[-72.716659999999933,82.755553999999961],[-72.912216000000001,82.776657000000057],[-72.983886999999982,82.78387500000008],[-73.027221999999881,82.786926000000108],[-73.211394999999925,82.813873000000001],[-73.257506999999919,82.825821000000076],[-73.401397999999915,82.874985000000038],[-73.420272999999952,82.890548999999965],[-73.430556999999908,82.893599999999992],[-73.460830999999928,82.898605000000032],[-73.49499499999996,82.90248100000008],[-73.577224999999999,82.908035000000098],[-73.607498000000021,82.913040000000137],[-73.633330999999998,82.918593999999985],[-73.65055799999999,82.925811999999951],[-73.644164999999873,82.932205000000124],[-73.634444999999971,82.936646000000053],[-73.619155999999975,82.941086000000041],[-73.261948000000018,83.007767000000058],[-73.033889999999928,83.036652000000117],[-72.948607999999979,83.055252000000053],[-72.927489999999977,83.067490000000078],[-72.650557999999933,83.096374999999966],[-72.59973100000002,83.096939000000077],[-72.57028200000002,83.092758000000003],[-72.568619000000012,83.087769000000037],[-72.556655999999975,83.079712000000086],[-72.523894999999925,83.076934999999992],[-72.477492999999868,83.076659999999947],[-72.424163999999962,83.079163000000108],[-72.407776000000013,83.083602999999982],[-72.393616000000009,83.089431999999988],[-72.365829000000019,83.094147000000021],[-72.336394999999925,83.097763000000043],[-72.226943999999946,83.101379000000122],[-72.111938000000009,83.101089000000115],[-72.005568999999866,83.099152000000061],[-71.831680000000006,83.097763000000043],[-71.712783999999886,83.098877000000016],[-71.611663999999905,83.096099999999979],[-71.581679999999949,83.091095000000109],[-71.596953999999869,83.085266000000047],[-71.654448999999943,83.068878000000041],[-71.696380999999917,83.057755000000043],[-71.75,83.043045000000063],[-71.775008999999898,83.032211000000018],[-71.7933349999999,83.020537999999988],[-71.794998000000021,83.013611000000083],[-71.792220999999984,83.00749200000007],[-71.778335999999911,83.001663000000065],[-71.567229999999938,82.941086000000041],[-71.493606999999997,82.932205000000124],[-71.33666999999997,82.914703000000088],[-71.219726999999978,82.914993000000095],[-71.144164999999987,82.908325000000104],[-71.084166999999979,82.900542999999971],[-71.018340999999964,82.891937000000041],[-70.952224999999999,82.883605999999986],[-70.871384000000035,82.881087999999977],[-70.835006999999962,82.883041000000105],[-70.84333799999996,82.889984000000084],[-70.857773000000009,82.897217000000126],[-70.904174999999952,82.908035000000098],[-70.961944999999957,82.918593999999985],[-71.080841000000021,82.937484999999981],[-71.306380999999931,82.982208000000071],[-71.472777999999948,83.001663000000065],[-71.497498000000007,83.007217000000026],[-71.489990000000034,83.014435000000049],[-71.474166999999852,83.019440000000088],[-71.425002999999947,83.029434000000094],[-71.125274999999988,83.087494000000049],[-70.887221999999895,83.098038000000088],[-70.694152999999972,83.103592000000049],[-70.585280999999952,83.103317000000061],[-70.470000999999968,83.107482999999945],[-70.37388599999997,83.113311999999951],[-70.260009999999966,83.113876000000118],[-70.160003999999958,83.111374000000012],[-70.111937999999952,83.109421000000111]]]} +} +] +} diff --git a/benchmark/data/citm_catalog.json b/benchmark/data/citm_catalog.json new file mode 100644 index 000000000..149b2aa35 --- /dev/null +++ b/benchmark/data/citm_catalog.json @@ -0,0 +1,50469 @@ +{ + "areaNames": { + "205705993": "Arrière-scène central", + "205705994": "1er balcon central", + "205705995": "2ème balcon bergerie cour", + "205705996": "2ème balcon bergerie jardin", + "205705998": "1er balcon bergerie jardin", + "205705999": "1er balcon bergerie cour", + "205706000": "Arrière-scène jardin", + "205706001": "Arrière-scène cour", + "205706002": "2ème balcon jardin", + "205706003": "2ème balcon cour", + "205706004": "2ème Balcon central", + "205706005": "1er balcon jardin", + "205706006": "1er balcon cour", + "205706007": "Orchestre central", + "205706008": "Orchestre jardin", + "205706009": "Orchestre cour", + "342752287": "Zone physique secrète" + }, + "audienceSubCategoryNames": { + "337100890": "Abonné" + }, + "blockNames": {}, + "events": { + "138586341": { + "description": null, + "id": 138586341, + "logo": null, + "name": "30th Anniversary Tour", + "subTopicIds": [ + 337184269, + 337184283 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604 + ] + }, + "138586345": { + "description": null, + "id": 138586345, + "logo": "/images/UE0AAAAACEKo6QAAAAZDSVRN", + "name": "Berliner Philharmoniker", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586349": { + "description": null, + "id": 138586349, + "logo": "/images/UE0AAAAACEKo7QAAAAZDSVRN", + "name": "Berliner Philharmoniker", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586353": { + "description": null, + "id": 138586353, + "logo": "/images/UE0AAAAACEKo8QAAAAZDSVRN", + "name": "Pittsburgh Symphony Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586357": { + "description": null, + "id": 138586357, + "logo": "/images/UE0AAAAACEKo9QAAAAhDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586361": { + "description": null, + "id": 138586361, + "logo": "/images/UE0AAAAACEKo+QAAAAVDSVRN", + "name": "WDR Sinfonieorchester Köln", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586365": { + "description": null, + "id": 138586365, + "logo": "/images/UE0AAAAACEKo/QAAAAVDSVRN", + "name": "Alessandro - G.F. Haendel", + "subTopicIds": [ + 337184284, + 337184263, + 337184298, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586369": { + "description": null, + "id": 138586369, + "logo": "/images/UE0AAAAACEKpAQAAAAVDSVRN", + "name": "Orchestre Colonne", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586373": { + "description": null, + "id": 138586373, + "logo": "/images/UE0AAAAACEKpBQAAAAdDSVRN", + "name": "Christophe", + "subTopicIds": [ + 337184280, + 337184297, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586377": { + "description": null, + "id": 138586377, + "logo": "/images/UE0AAAAACEKpCQAAAAVDSVRN", + "name": "Joshua Redman Quartet", + "subTopicIds": [ + 337184269, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586381": { + "description": null, + "id": 138586381, + "logo": "/images/UE0AAAAACEKpDQAAAAVDSVRN", + "name": "Orchestre Symphonique d'Etat de São Paulo", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586385": { + "description": null, + "id": 138586385, + "logo": "/images/UE0AAAAACEKpEQAAAAVDSVRN", + "name": "Le génie italien", + "subTopicIds": [ + 337184284, + 337184298, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586389": { + "description": null, + "id": 138586389, + "logo": "/images/UE0AAAAACEKpFQAAAAVDSVRN", + "name": "Les Noces de Figaro - W.A. Mozart (version de concert)", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586393": { + "description": null, + "id": 138586393, + "logo": "/images/UE0AAAAACEKpGQAAAAhDSVRN", + "name": "Orchestre Pasdeloup", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586397": { + "description": null, + "id": 138586397, + "logo": null, + "name": "The Saxophone Summit", + "subTopicIds": [ + 337184269, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586401": { + "description": null, + "id": 138586401, + "logo": "/images/UE0AAAAACEKpIQAAAAVDSVRN", + "name": "Patricia Petibon - Nouveau Monde", + "subTopicIds": [ + 337184263, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586405": { + "description": null, + "id": 138586405, + "logo": "/images/UE0AAAAACEKpJQAAAAVDSVRN", + "name": "Russian National Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586409": { + "description": null, + "id": 138586409, + "logo": "/images/UE0AAAAACEKpKQAAAAZDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586413": { + "description": null, + "id": 138586413, + "logo": "/images/UE0AAAAACEKpLQAAAAVDSVRN", + "name": "Evgeny Kissin", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586417": { + "description": null, + "id": 138586417, + "logo": "/images/UE0AAAAACEKpMQAAAAZDSVRN", + "name": "Bach, concertos pour piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586421": { + "description": null, + "id": 138586421, + "logo": "/images/UE0AAAAACEKpNQAAAAVDSVRN", + "name": "Bach, concertos pour piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586425": { + "description": null, + "id": 138586425, + "logo": null, + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586429": { + "description": null, + "id": 138586429, + "logo": "/images/UE0AAAAACEKpPQAAAAVDSVRN", + "name": "Gewandhausorchester Leipzig", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586433": { + "description": null, + "id": 138586433, + "logo": "/images/UE0AAAAACEKpQQAAAAVDSVRN", + "name": "Gewandhausorchester Leipzig", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586437": { + "description": null, + "id": 138586437, + "logo": "/images/UE0AAAAACEKpRQAAAAVDSVRN", + "name": "Budapest Festival Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586441": { + "description": null, + "id": 138586441, + "logo": "/images/UE0AAAAACEKpSQAAAAVDSVRN", + "name": "Orchestre National du Capitole de Toulouse", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586445": { + "description": null, + "id": 138586445, + "logo": "/images/UE0AAAAACEKpTQAAAAVDSVRN", + "name": "Gewandhausorchester Leipzig", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586449": { + "description": null, + "id": 138586449, + "logo": "/images/UE0AAAAACEKpUQAAAAVDSVRN", + "name": "Gewandhausorchester Leipzig", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586453": { + "description": null, + "id": 138586453, + "logo": "/images/UE0AAAAACEKpVQAAAAVDSVRN", + "name": "Remember Shakti", + "subTopicIds": [ + 337184269, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586457": { + "description": null, + "id": 138586457, + "logo": "/images/UE0AAAAACEKpWQAAAAVDSVRN", + "name": "Menahem Pressler - Quatuor Ebène", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586461": { + "description": null, + "id": 138586461, + "logo": "/images/UE0AAAAACEKpXQAAAAZDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586465": { + "description": null, + "id": 138586465, + "logo": "/images/UE0AAAAACEKpYQAAAAVDSVRN", + "name": "Orquesta Buena Vista Social Club", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586469": { + "description": null, + "id": 138586469, + "logo": "/images/UE0AAAAACEKpZQAAAAVDSVRN", + "name": "The Cleveland Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586473": { + "description": null, + "id": 138586473, + "logo": "/images/UE0AAAAACEKpaQAAAAVDSVRN", + "name": "The Cleveland Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586477": { + "description": null, + "id": 138586477, + "logo": "/images/UE0AAAAACEKpbQAAAAZDSVRN", + "name": "Orchestre Philharmonique du Luxembourg", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586481": { + "description": null, + "id": 138586481, + "logo": "/images/UE0AAAAACEKpcQAAAAVDSVRN", + "name": "Maurizio Pollini, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586485": { + "description": null, + "id": 138586485, + "logo": "/images/UE0AAAAACEKpdQAAAAZDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586501": { + "description": null, + "id": 138586501, + "logo": "/images/UE0AAAAACEKphQAAAAVDSVRN", + "name": "Antonio Meneses - Maria-João Pires", + "subTopicIds": [ + 337184268, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586505": { + "description": null, + "id": 138586505, + "logo": "/images/UE0AAAAACEKpiQAAAAVDSVRN", + "name": "Musiques pour la reine Caroline", + "subTopicIds": [ + 337184284, + 337184263, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586509": { + "description": null, + "id": 138586509, + "logo": null, + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586513": { + "description": null, + "id": 138586513, + "logo": "/images/UE0AAAAACEKpkQAAAAVDSVRN", + "name": "Les Mystères d'Isis - W.A. Mozart (cersion de concert)", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586517": { + "description": null, + "id": 138586517, + "logo": "/images/UE0AAAAACEKplQAAAAdDSVRN", + "name": "Martha Argerich - Gidon Kremer", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586521": { + "description": null, + "id": 138586521, + "logo": "/images/UE0AAAAACEKpmQAAAAVDSVRN", + "name": "Cecilia Bartoli - Mozart et la Vienne classique", + "subTopicIds": [ + 337184298, + 337184268, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586525": { + "description": null, + "id": 138586525, + "logo": "/images/UE0AAAAACEKpnQAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586529": { + "description": null, + "id": 138586529, + "logo": null, + "name": "Orchestre Pasdeloup", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586533": { + "description": null, + "id": 138586533, + "logo": "/images/UE0AAAAACEKppQAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586537": { + "description": null, + "id": 138586537, + "logo": "/images/UE0AAAAACEKpqQAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586541": { + "description": null, + "id": 138586541, + "logo": "/images/UE0AAAAACEKprQAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586545": { + "description": null, + "id": 138586545, + "logo": "/images/UE0AAAAACEKpsQAAAAVDSVRN", + "name": "Academy of Saint Martin in the Fields", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586549": { + "description": null, + "id": 138586549, + "logo": "/images/UE0AAAAACEKptQAAAAVDSVRN", + "name": "Quatuor Hagen", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586553": { + "description": null, + "id": 138586553, + "logo": "/images/UE0AAAAACEKpuQAAAAVDSVRN", + "name": "Quatuor Hagen", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586557": { + "description": null, + "id": 138586557, + "logo": "/images/UE0AAAAACEKpvQAAAAVDSVRN", + "name": "Quatuor Hagen", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586561": { + "description": null, + "id": 138586561, + "logo": "/images/UE0AAAAACEKpwQAAAAVDSVRN", + "name": "Sunwook Kim, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586565": { + "description": null, + "id": 138586565, + "logo": null, + "name": "Orchestre Colonne", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586569": { + "description": null, + "id": 138586569, + "logo": "/images/UE0AAAAACEKpyQAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586581": { + "description": null, + "id": 138586581, + "logo": null, + "name": "Orchestre National de France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586585": { + "description": null, + "id": 138586585, + "logo": "/images/UE0AAAAACEKp2QAAAAVDSVRN", + "name": "Messe en si mineur - J.S. Bach", + "subTopicIds": [ + 337184296, + 337184263, + 337184298, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586589": { + "description": null, + "id": 138586589, + "logo": null, + "name": "Le Messie - G.F. Haendel", + "subTopicIds": [ + 337184263, + 337184298, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586593": { + "description": null, + "id": 138586593, + "logo": "/images/UE0AAAAACEKp4QAAAAdDSVRN", + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586597": { + "description": null, + "id": 138586597, + "logo": "/images/UE0AAAAACEKp5QAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586601": { + "description": null, + "id": 138586601, + "logo": "/images/UE0AAAAACEKp6QAAAAdDSVRN", + "name": "Orchestre Pasdeloup", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586605": { + "description": null, + "id": 138586605, + "logo": null, + "name": "Orchestre Colonne", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586609": { + "description": null, + "id": 138586609, + "logo": null, + "name": "Ciné-concert - Le Cuirassé Potemkine", + "subTopicIds": [ + 337184267, + 337184262, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 107888604, + 324846100 + ] + }, + "138586613": { + "description": null, + "id": 138586613, + "logo": "/images/UE0AAAAACEKp9QAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586617": { + "description": null, + "id": 138586617, + "logo": "/images/UE0AAAAACEKp+QAAAAVDSVRN", + "name": "London Symphony Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586625": { + "description": null, + "id": 138586625, + "logo": null, + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586629": { + "description": null, + "id": 138586629, + "logo": "/images/UE0AAAAACEKqBQAAAAVDSVRN", + "name": "Orquesta Sinfonica Simón Bolívar de Venezuela", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586633": { + "description": null, + "id": 138586633, + "logo": "/images/UE0AAAAACEKqCQAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184298, + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586641": { + "description": null, + "id": 138586641, + "logo": "/images/UE0AAAAACEKqEQAAAAVDSVRN", + "name": "Edita Gruberova - Airs de concert", + "subTopicIds": [ + 337184284, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586645": { + "description": null, + "id": 138586645, + "logo": "/images/UE0AAAAACEKqFQAAAAdDSVRN", + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586649": { + "description": null, + "id": 138586649, + "logo": "/images/UE0AAAAACEKqGQAAAAZDSVRN", + "name": "Alexei Volodin, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586653": { + "description": null, + "id": 138586653, + "logo": null, + "name": "Sonya Yoncheva - Diva !", + "subTopicIds": [ + 337184284, + 337184263, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586657": { + "description": null, + "id": 138586657, + "logo": "/images/UE0AAAAACEKqIQAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586661": { + "description": null, + "id": 138586661, + "logo": null, + "name": "Le Ramayana balinais - L'Enlèvement de Sita", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586667": { + "description": null, + "id": 138586667, + "logo": null, + "name": "Dave Holland & friends", + "subTopicIds": [ + 337184269, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586671": { + "description": null, + "id": 138586671, + "logo": "/images/UE0AAAAACEKqLwAAAAlDSVRN", + "name": "Boris Godunov - M.Moussorgski (version de concert)", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586675": { + "description": null, + "id": 138586675, + "logo": "/images/UE0AAAAACEKqMwAAAAVDSVRN", + "name": "Insula orchestra - Accentus", + "subTopicIds": [ + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586679": { + "description": null, + "id": 138586679, + "logo": "/images/UE0AAAAACEKqNwAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586687": { + "description": null, + "id": 138586687, + "logo": "/images/UE0AAAAACEKqPwAAAAVDSVRN", + "name": "Bryn Terfel - Héros légendaires", + "subTopicIds": [ + 337184284, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586691": { + "description": null, + "id": 138586691, + "logo": null, + "name": "Les Siècles", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586695": { + "description": null, + "id": 138586695, + "logo": "/images/UE0AAAAACEKqRwAAAAVDSVRN", + "name": "Gautier Capuçon - Frank Braley", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586699": { + "description": null, + "id": 138586699, + "logo": null, + "name": "Festival Présences 2014 \"Paris Berlin\"", + "subTopicIds": [ + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586703": { + "description": null, + "id": 138586703, + "logo": "/images/UE0AAAAACEKqTwAAAAZDSVRN", + "name": "Autour de Tristan", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586707": { + "description": null, + "id": 138586707, + "logo": "/images/UE0AAAAACEKqUwAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586711": { + "description": null, + "id": 138586711, + "logo": "/images/UE0AAAAACEKqVwAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586715": { + "description": null, + "id": 138586715, + "logo": "/images/UE0AAAAACEKqWwAAAAVDSVRN", + "name": "Orchestre du Théâtre Mariinsky", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586719": { + "description": null, + "id": 138586719, + "logo": "/images/UE0AAAAACEKqXwAAAAVDSVRN", + "name": "Etienne Daho et invités", + "subTopicIds": [ + 337184280, + 337184297, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586723": { + "description": null, + "id": 138586723, + "logo": null, + "name": "Fantasia in concert", + "subTopicIds": [ + 337184299, + 337184268, + 337184267, + 337184275, + 337184282 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846098, + 324846099, + 107888604, + 324846100 + ] + }, + "138586731": { + "description": null, + "id": 138586731, + "logo": "/images/UE0AAAAACEKqawAAAAVDSVRN", + "name": "Khatia Buniatishvili, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586735": { + "description": null, + "id": 138586735, + "logo": "/images/UE0AAAAACEKqbwAAAAVDSVRN", + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586743": { + "description": null, + "id": 138586743, + "logo": null, + "name": "Guy Braunstein - Zvi Plesser - Sunwook Kim", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586747": { + "description": null, + "id": 138586747, + "logo": "/images/UE0AAAAACEKqewAAAAVDSVRN", + "name": "Janine Jansen and friends", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586751": { + "description": null, + "id": 138586751, + "logo": "/images/UE0AAAAACEKqfwAAAAVDSVRN", + "name": "Elena Bashkirova, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586755": { + "description": null, + "id": 138586755, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184284, + 337184298, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586759": { + "description": null, + "id": 138586759, + "logo": null, + "name": "San Francisco Symphony", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586771": { + "description": null, + "id": 138586771, + "logo": null, + "name": "Passion selon saint Jean - J.S. Bach", + "subTopicIds": [ + 337184296, + 337184263, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586775": { + "description": null, + "id": 138586775, + "logo": null, + "name": "Yundi Li , piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586779": { + "description": null, + "id": 138586779, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586783": { + "description": null, + "id": 138586783, + "logo": null, + "name": "Orchestre Pasdeloup", + "subTopicIds": [ + 337184268, + 337184269, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586787": { + "description": null, + "id": 138586787, + "logo": null, + "name": "Orchestre du Conservatoire de Paris", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586795": { + "description": null, + "id": 138586795, + "logo": null, + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586799": { + "description": null, + "id": 138586799, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586803": { + "description": null, + "id": 138586803, + "logo": null, + "name": "Royal Concertgebouw Orchestra Amsterdam", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586807": { + "description": null, + "id": 138586807, + "logo": null, + "name": "Royal Concertgebouw Orchestra Amsterdam", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586811": { + "description": null, + "id": 138586811, + "logo": null, + "name": "Royal Concertgebouw Orchestra Amsterdam", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586815": { + "description": null, + "id": 138586815, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586823": { + "description": null, + "id": 138586823, + "logo": null, + "name": "London Symphony Orchestra", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586827": { + "description": null, + "id": 138586827, + "logo": null, + "name": "London Symphony Orchestra", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586831": { + "description": null, + "id": 138586831, + "logo": null, + "name": "Le Concert des Nations - Jordi Savall", + "subTopicIds": [ + 337184263, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586835": { + "description": null, + "id": 138586835, + "logo": null, + "name": "Leonidas Kavakos - Yuja Wang", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586839": { + "description": null, + "id": 138586839, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586843": { + "description": null, + "id": 138586843, + "logo": null, + "name": "Quatuor Artemis - Gautier Capuçon", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586847": { + "description": null, + "id": 138586847, + "logo": null, + "name": "Quatuor Artemis - Quatuor Ébène", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586851": { + "description": null, + "id": 138586851, + "logo": null, + "name": "Quatuor Artemis - Elisabeth Leonskaja", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586855": { + "description": null, + "id": 138586855, + "logo": null, + "name": "Russian National Orchestra", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586859": { + "description": null, + "id": 138586859, + "logo": null, + "name": "Passion selon saint Matthieu", + "subTopicIds": [ + 337184296, + 337184263, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586863": { + "description": null, + "id": 138586863, + "logo": null, + "name": "Les Arts Florissants - Concert de Pâques", + "subTopicIds": [ + 337184263, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586867": { + "description": null, + "id": 138586867, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586871": { + "description": null, + "id": 138586871, + "logo": null, + "name": "Leylâ et Majnûn ou L'Amour mystique", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586875": { + "description": null, + "id": 138586875, + "logo": null, + "name": "Stephen Kovacevich, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586879": { + "description": null, + "id": 138586879, + "logo": null, + "name": "Orchestra Mozart Bologna - Mahler Chamber Orchestra", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586883": { + "description": null, + "id": 138586883, + "logo": null, + "name": "Ballet Royal du Cambodge", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586889": { + "description": null, + "id": 138586889, + "logo": null, + "name": "MDR Sinfonieorchester Leipzig", + "subTopicIds": [ + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586893": { + "description": null, + "id": 138586893, + "logo": null, + "name": "Orchestre Colonne", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586897": { + "description": null, + "id": 138586897, + "logo": null, + "name": "Elisabeth Leonskaja, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586901": { + "description": null, + "id": 138586901, + "logo": null, + "name": "Yuja Wang, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586905": { + "description": null, + "id": 138586905, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586909": { + "description": null, + "id": 138586909, + "logo": null, + "name": "Anne-Sophie Mutter - Lambert Orkis", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586917": { + "description": null, + "id": 138586917, + "logo": null, + "name": "Orchestre National d'Île-de-France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586921": { + "description": null, + "id": 138586921, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586929": { + "description": null, + "id": 138586929, + "logo": null, + "name": "Orchestre Pasdeloup", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586933": { + "description": null, + "id": 138586933, + "logo": null, + "name": "Gilberto Gil", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586937": { + "description": null, + "id": 138586937, + "logo": null, + "name": "Nelson Freire, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586941": { + "description": null, + "id": 138586941, + "logo": null, + "name": "Orchestre Philharmonique de Radio France", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586945": { + "description": null, + "id": 138586945, + "logo": null, + "name": "Orfeo - C. Monteverdi (version de concert)", + "subTopicIds": [ + 337184284, + 337184263, + 337184298, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586949": { + "description": null, + "id": 138586949, + "logo": null, + "name": "Bamberger Symphoniker", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586953": { + "description": null, + "id": 138586953, + "logo": null, + "name": "Murray Perahia, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586957": { + "description": null, + "id": 138586957, + "logo": null, + "name": "Orchestre National du Capitole de Toulouse", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586961": { + "description": null, + "id": 138586961, + "logo": null, + "name": "Krystian Zimerman, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586965": { + "description": null, + "id": 138586965, + "logo": null, + "name": "Rafal Blechacz, piano", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586969": { + "description": null, + "id": 138586969, + "logo": null, + "name": "Les Voyages musicaux de Marco Polo", + "subTopicIds": [ + 337184279, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586973": { + "description": null, + "id": 138586973, + "logo": null, + "name": "Orchestre National de Lyon", + "subTopicIds": [ + 337184298, + 337184268, + 337184283, + 337184292, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586977": { + "description": null, + "id": 138586977, + "logo": null, + "name": "Guy Braunstein - Zvi Plesser - Sunwook Kim", + "subTopicIds": [ + 337184281, + 337184283, + 337184273 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586981": { + "description": null, + "id": 138586981, + "logo": null, + "name": "La Bohème - G. Puccini (version de concert)", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586989": { + "description": null, + "id": 138586989, + "logo": null, + "name": "Otello - G. Verdi (version de concert)", + "subTopicIds": [ + 337184284, + 337184298, + 337184268, + 337184283, + 337184292 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586993": { + "description": null, + "id": 138586993, + "logo": null, + "name": "Staatskapelle Berlin", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "138586997": { + "description": null, + "id": 138586997, + "logo": null, + "name": "Staatskapelle Berlin", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "151183114": { + "description": null, + "id": 151183114, + "logo": null, + "name": "San Francisco Symphony", + "subTopicIds": [ + 337184298, + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "339420802": { + "description": null, + "id": 339420802, + "logo": null, + "name": "Lou Doillon", + "subTopicIds": [ + 337184280, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "339420805": { + "description": null, + "id": 339420805, + "logo": null, + "name": "Patrick Watson & Orchestre National d'Ile-de-France", + "subTopicIds": [ + 337184280, + 337184283, + 337184262 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341069930": { + "description": null, + "id": 341069930, + "logo": "/images/UE0AAAAAFFRQagAAAAlDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181232": { + "description": null, + "id": 341181232, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181233": { + "description": null, + "id": 341181233, + "logo": "/images/UE0AAAAAFFYDMQAAAAhDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181234": { + "description": null, + "id": 341181234, + "logo": "/images/UE0AAAAAFFYDMgAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181235": { + "description": null, + "id": 341181235, + "logo": "/images/UE0AAAAAFFYDMwAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181236": { + "description": null, + "id": 341181236, + "logo": "/images/UE0AAAAAFFYDNAAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181237": { + "description": null, + "id": 341181237, + "logo": "/images/UE0AAAAAFFYDNQAAAAhDSVRN", + "name": "Paavo Järvi, direction", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181238": { + "description": null, + "id": 341181238, + "logo": "/images/UE0AAAAAFFYDNgAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181239": { + "description": null, + "id": 341181239, + "logo": "/images/UE0AAAAAFFYDNwAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181240": { + "description": null, + "id": 341181240, + "logo": "/images/UE0AAAAAFFYDOAAAAAhDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181241": { + "description": null, + "id": 341181241, + "logo": "/images/UE0AAAAAFFYDOQAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181242": { + "description": null, + "id": 341181242, + "logo": "/images/UE0AAAAAFFYDOgAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181243": { + "description": null, + "id": 341181243, + "logo": "/images/UE0AAAAAFFYDOwAAAAdDSVRN", + "name": "Concert anniversaire des 90 ans de Menahem Pressler", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181244": { + "description": null, + "id": 341181244, + "logo": "/images/UE0AAAAAFFYDPAAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181245": { + "description": null, + "id": 341181245, + "logo": "/images/UE0AAAAAFFYDPQAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181246": { + "description": null, + "id": 341181246, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181247": { + "description": null, + "id": 341181247, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181248": { + "description": null, + "id": 341181248, + "logo": "/images/UE0AAAAAFFYDQAAAAAZDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181249": { + "description": null, + "id": 341181249, + "logo": "/images/UE0AAAAAFFYDQQAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181250": { + "description": null, + "id": 341181250, + "logo": "/images/UE0AAAAAFFYDQgAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181251": { + "description": null, + "id": 341181251, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181252": { + "description": null, + "id": 341181252, + "logo": "/images/UE0AAAAAFFYDRAAAAAdDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181253": { + "description": null, + "id": 341181253, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181254": { + "description": null, + "id": 341181254, + "logo": "/images/UE0AAAAAFFYDRgAAAAlDSVRN", + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181255": { + "description": null, + "id": 341181255, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181256": { + "description": null, + "id": 341181256, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181257": { + "description": null, + "id": 341181257, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181258": { + "description": null, + "id": 341181258, + "logo": null, + "name": "Orchestre de Paris", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "341181259": { + "description": null, + "id": 341181259, + "logo": null, + "name": "14052122 JARVI / GOERNE / SOLBERG / CHŒUR", + "subTopicIds": [ + 337184268, + 337184288, + 337184283, + 337184275 + ], + "subjectCode": null, + "subtitle": null, + "topicIds": [ + 324846099, + 107888604, + 324846100 + ] + }, + "342742592": { + "description": null, + "id": 342742592, + "logo": null, + "name": "event secret 2", + "subTopicIds": [], + "subjectCode": null, + "subtitle": null, + "topicIds": [] + }, + "342742593": { + "description": null, + "id": 342742593, + "logo": null, + "name": "event secret 3", + "subTopicIds": [], + "subjectCode": null, + "subtitle": null, + "topicIds": [] + }, + "342742594": { + "description": null, + "id": 342742594, + "logo": null, + "name": "event secret 4", + "subTopicIds": [], + "subjectCode": null, + "subtitle": null, + "topicIds": [] + }, + "342742595": { + "description": null, + "id": 342742595, + "logo": null, + "name": "event secret 5", + "subTopicIds": [], + "subjectCode": null, + "subtitle": null, + "topicIds": [] + }, + "342742596": { + "description": null, + "id": 342742596, + "logo": null, + "name": "event secret 6", + "subTopicIds": [], + "subjectCode": null, + "subtitle": null, + "topicIds": [] + } + }, + "performances": [ + { + "eventId": 138586341, + "id": 339887544, + "logo": null, + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937295 + }, + { + "amount": 66500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937296 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937295 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937296 + } + ], + "seatMapImage": null, + "start": 1372701600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 339420802, + "id": 339430296, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937295 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937296 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937295 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937296 + } + ], + "seatMapImage": null, + "start": 1372788000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 339420805, + "id": 339430301, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937295 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937296 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937295 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937296 + } + ], + "seatMapImage": null, + "start": 1373220000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586345, + "id": 138586347, + "logo": "/images/UE0AAAAACEKo6QAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 152000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1377972000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586349, + "id": 138586351, + "logo": "/images/UE0AAAAACEKo7QAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 152000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1378044000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586353, + "id": 138586355, + "logo": "/images/UE0AAAAACEKo8QAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1378490400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341069930, + "id": 341070133, + "logo": "/images/UE0AAAAAFFRQagAAAAlDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + } + ], + "seatMapImage": null, + "start": 1378922400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341069930, + "id": 341070132, + "logo": "/images/UE0AAAAAFFRQagAAAAlDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + } + ], + "seatMapImage": null, + "start": 1379008800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586357, + "id": 138586359, + "logo": "/images/UE0AAAAACEKo9QAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1379095200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586361, + "id": 138586363, + "logo": "/images/UE0AAAAACEKo+QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1379440800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586365, + "id": 138586367, + "logo": "/images/UE0AAAAACEKo/QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1379959200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181254, + "id": 341181470, + "logo": "/images/UE0AAAAAFFYDRgAAAAlDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1380132000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181254, + "id": 341181469, + "logo": "/images/UE0AAAAAFFYDRgAAAAlDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1380218400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586369, + "id": 138586371, + "logo": "/images/UE0AAAAACEKpAQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1380650400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181252, + "id": 341181467, + "logo": "/images/UE0AAAAAFFYDRAAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1380736800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586373, + "id": 138586375, + "logo": "/images/UE0AAAAACEKpBQAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1380996000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586377, + "id": 138586379, + "logo": "/images/UE0AAAAACEKpCQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1381082400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586381, + "id": 138586383, + "logo": "/images/UE0AAAAACEKpDQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1381168800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586385, + "id": 138586387, + "logo": "/images/UE0AAAAACEKpEQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1381255200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181234, + "id": 341181437, + "logo": "/images/UE0AAAAAFFYDMgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1381341600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181234, + "id": 341181436, + "logo": "/images/UE0AAAAAFFYDMgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1381428000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586389, + "id": 138586391, + "logo": "/images/UE0AAAAACEKpFQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1381512600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586393, + "id": 138586395, + "logo": "/images/UE0AAAAACEKpGQAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937241 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937242 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937244 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937245 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937246 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937241 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937242 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937244 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937245 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937246 + } + ], + "seatMapImage": null, + "start": 1381586400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586397, + "id": 138586399, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1381672800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586401, + "id": 138586403, + "logo": "/images/UE0AAAAACEKpIQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1381773600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586405, + "id": 138586407, + "logo": "/images/UE0AAAAACEKpJQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1381860000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181233, + "id": 341181435, + "logo": "/images/UE0AAAAAFFYDMQAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1381946400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181237, + "id": 341181442, + "logo": "/images/UE0AAAAAFFYDNQAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1382032800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586409, + "id": 138586411, + "logo": "/images/UE0AAAAACEKpKQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1382119200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586413, + "id": 138586415, + "logo": "/images/UE0AAAAACEKpLQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1382277600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586417, + "id": 138586419, + "logo": "/images/UE0AAAAACEKpMQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1382378400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586421, + "id": 138586423, + "logo": "/images/UE0AAAAACEKpNQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1382464800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181238, + "id": 341181444, + "logo": "/images/UE0AAAAAFFYDNgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1382551200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181238, + "id": 341181443, + "logo": "/images/UE0AAAAAFFYDNgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1382637600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586425, + "id": 138586427, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1382724000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586429, + "id": 138586431, + "logo": "/images/UE0AAAAACEKpPQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1382810400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586433, + "id": 138586435, + "logo": "/images/UE0AAAAACEKpQQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1382886000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586437, + "id": 138586439, + "logo": "/images/UE0AAAAACEKpRQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1383073200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586441, + "id": 138586443, + "logo": "/images/UE0AAAAACEKpSQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1383246000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586445, + "id": 138586447, + "logo": "/images/UE0AAAAACEKpTQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1383332400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586449, + "id": 138586451, + "logo": "/images/UE0AAAAACEKpUQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1383418800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742708, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383555600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742709, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383562800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586453, + "id": 138586455, + "logo": "/images/UE0AAAAACEKpVQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937295 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937296 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937295 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937296 + } + ], + "seatMapImage": null, + "start": 1383591600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742710, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383642000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742711, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383649200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742712, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383728400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742713, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383735600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742714, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383814800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742592, + "id": 342742715, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1383822000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586457, + "id": 138586459, + "logo": "/images/UE0AAAAACEKpWQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1383850800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586461, + "id": 138586463, + "logo": "/images/UE0AAAAACEKpXQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1383937200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586465, + "id": 138586467, + "logo": "/images/UE0AAAAACEKpYQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1384110000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586469, + "id": 138586471, + "logo": "/images/UE0AAAAACEKpZQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937289 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937290 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937292 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937293 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937289 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937290 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937292 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937293 + } + ], + "seatMapImage": null, + "start": 1384196400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586473, + "id": 138586475, + "logo": "/images/UE0AAAAACEKpaQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1384282800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586477, + "id": 138586479, + "logo": "/images/UE0AAAAACEKpbQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1384369200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586481, + "id": 138586483, + "logo": "/images/UE0AAAAACEKpcQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1384455600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586485, + "id": 138586487, + "logo": "/images/UE0AAAAACEKpdQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1384542000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586501, + "id": 138586503, + "logo": "/images/UE0AAAAACEKphQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1384801200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586505, + "id": 138586507, + "logo": "/images/UE0AAAAACEKpiQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1384887600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586509, + "id": 138586511, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1385146800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586513, + "id": 138586515, + "logo": "/images/UE0AAAAACEKpkQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1385231400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586517, + "id": 138586519, + "logo": "/images/UE0AAAAACEKplQAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1385305200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586521, + "id": 138586523, + "logo": "/images/UE0AAAAACEKpmQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 152000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1385492400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181235, + "id": 341181439, + "logo": "/images/UE0AAAAAFFYDMwAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1385665200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586525, + "id": 138586527, + "logo": "/images/UE0AAAAACEKpnQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1385751600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586529, + "id": 138586531, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937241 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937242 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937244 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937245 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937246 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937241 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937242 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937244 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937245 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937246 + } + ], + "seatMapImage": null, + "start": 1385823600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181235, + "id": 341181438, + "logo": "/images/UE0AAAAAFFYDMwAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1385838000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586533, + "id": 138586535, + "logo": "/images/UE0AAAAACEKppQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1385910000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586537, + "id": 138586539, + "logo": "/images/UE0AAAAACEKpqQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1386010800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586541, + "id": 138586543, + "logo": "/images/UE0AAAAACEKprQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1386097200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181236, + "id": 341181440, + "logo": "/images/UE0AAAAAFFYDNAAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1386183600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181236, + "id": 341181441, + "logo": "/images/UE0AAAAAFFYDNAAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1386270000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586545, + "id": 138586547, + "logo": "/images/UE0AAAAACEKpsQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1386356400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586549, + "id": 138586551, + "logo": "/images/UE0AAAAACEKptQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1386428400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586553, + "id": 138586555, + "logo": "/images/UE0AAAAACEKpuQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1386442800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586557, + "id": 138586559, + "logo": "/images/UE0AAAAACEKpvQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1386514800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742716, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386579600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742717, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386586800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586561, + "id": 138586563, + "logo": "/images/UE0AAAAACEKpwQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1386615600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742718, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386666000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742719, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386673200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586565, + "id": 138586567, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1386702000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742720, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386752400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742721, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386759600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181241, + "id": 341181449, + "logo": "/images/UE0AAAAAFFYDOQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1386788400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742722, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386838800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742593, + "id": 342742723, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1386846000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181241, + "id": 341181450, + "logo": "/images/UE0AAAAAFFYDOQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1386874800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586569, + "id": 138586571, + "logo": "/images/UE0AAAAACEKpyQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1386961200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742724, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387184400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742725, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387191600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586581, + "id": 138586583, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264860 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264861 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264863 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264864 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264860 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264861 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264863 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264864 + } + ], + "seatMapImage": null, + "start": 1387220400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742726, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387270800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742727, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387278000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586585, + "id": 138586587, + "logo": "/images/UE0AAAAACEKp2QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1387306800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742728, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387357200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742729, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387364400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181250, + "id": 341181465, + "logo": "/images/UE0AAAAAFFYDQgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1387393200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742730, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387443600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742594, + "id": 342742731, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387450800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586589, + "id": 138586591, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1387566000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586593, + "id": 138586595, + "logo": "/images/UE0AAAAACEKp4QAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1387724400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742732, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387789200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742733, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387796400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742734, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387875600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742735, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387882800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742736, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387962000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742737, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1387969200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742738, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1388048400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742595, + "id": 342742739, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1388055600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742740, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1388998800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742741, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389006000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742742, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389085200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742743, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389092400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742744, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389171600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742745, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389178800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181245, + "id": 341181458, + "logo": "/images/UE0AAAAAFFYDPQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1389207600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742746, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389258000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 342742596, + "id": 342742747, + "logo": null, + "name": null, + "prices": [ + { + "amount": 180500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 342752792 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 342752287, + "blockIds": [] + } + ], + "seatCategoryId": 342752792 + } + ], + "seatMapImage": null, + "start": 1389265200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181245, + "id": 341181457, + "logo": "/images/UE0AAAAAFFYDPQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1389294000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586597, + "id": 138586599, + "logo": "/images/UE0AAAAACEKp5QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1389380400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586601, + "id": 138586603, + "logo": "/images/UE0AAAAACEKp6QAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937241 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937242 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937244 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937245 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937246 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937241 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937242 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937244 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937245 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937246 + } + ], + "seatMapImage": null, + "start": 1389452400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586605, + "id": 138586607, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1389538800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586609, + "id": 138586611, + "logo": null, + "name": null, + "prices": [ + { + "amount": 15000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937314 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937314 + } + ], + "seatMapImage": null, + "start": 1389726000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181242, + "id": 341181451, + "logo": "/images/UE0AAAAAFFYDOgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1389812400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181242, + "id": 341181452, + "logo": "/images/UE0AAAAAFFYDOgAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1389898800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586613, + "id": 138586615, + "logo": "/images/UE0AAAAACEKp9QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086215 + } + ], + "seatMapImage": null, + "start": 1389985200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586617, + "id": 138586619, + "logo": "/images/UE0AAAAACEKp+QAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1390071600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586625, + "id": 138586627, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1390143600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586629, + "id": 138586631, + "logo": "/images/UE0AAAAACEKqBQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937271 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937272 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937274 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937275 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937271 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937272 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937274 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937275 + } + ], + "seatMapImage": null, + "start": 1390159800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181239, + "id": 341181446, + "logo": "/images/UE0AAAAAFFYDNwAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1390417200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181239, + "id": 341181445, + "logo": "/images/UE0AAAAAFFYDNwAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1390503600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586633, + "id": 138586635, + "logo": "/images/UE0AAAAACEKqCQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1390590000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586641, + "id": 138586643, + "logo": "/images/UE0AAAAACEKqEQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1390676400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586645, + "id": 138586647, + "logo": "/images/UE0AAAAACEKqFQAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1390748400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586649, + "id": 138586651, + "logo": "/images/UE0AAAAACEKqGQAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1390849200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586653, + "id": 138586655, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1390935600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181243, + "id": 341181453, + "logo": "/images/UE0AAAAAFFYDOwAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1391022000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181243, + "id": 341181454, + "logo": "/images/UE0AAAAAFFYDOwAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1391108400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586657, + "id": 138586659, + "logo": "/images/UE0AAAAACEKqIQAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1391194800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586661, + "id": 138586663, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1391353200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586661, + "id": 138586665, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1391367600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586667, + "id": 138586669, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937295 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937296 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937295 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937296 + } + ], + "seatMapImage": null, + "start": 1391540400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586671, + "id": 138586673, + "logo": "/images/UE0AAAAACEKqLwAAAAlDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937289 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937290 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937292 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937293 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937289 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937290 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937292 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937293 + } + ], + "seatMapImage": null, + "start": 1391626800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586675, + "id": 138586677, + "logo": "/images/UE0AAAAACEKqMwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1391713200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586679, + "id": 138586681, + "logo": "/images/UE0AAAAACEKqNwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1391799600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586687, + "id": 138586689, + "logo": "/images/UE0AAAAACEKqPwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1391886000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586691, + "id": 138586693, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1391958000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586695, + "id": 138586697, + "logo": "/images/UE0AAAAACEKqRwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1392145200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181240, + "id": 341181448, + "logo": "/images/UE0AAAAAFFYDOAAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1392231600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181240, + "id": 341181447, + "logo": "/images/UE0AAAAAFFYDOAAAAAhDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1392318000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586699, + "id": 138586701, + "logo": null, + "name": null, + "prices": [ + { + "amount": 15000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264872 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264872 + } + ], + "seatMapImage": null, + "start": 1392404400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586703, + "id": 138586705, + "logo": "/images/UE0AAAAACEKqTwAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1392490800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586707, + "id": 138586709, + "logo": "/images/UE0AAAAACEKqUwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1392562800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586711, + "id": 138586713, + "logo": "/images/UE0AAAAACEKqVwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1392663600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586715, + "id": 138586717, + "logo": "/images/UE0AAAAACEKqWwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1392750000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181248, + "id": 341181462, + "logo": "/images/UE0AAAAAFFYDQAAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1392836400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586719, + "id": 138586721, + "logo": "/images/UE0AAAAACEKqXwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1393095600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586723, + "id": 138586729, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937307 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937308 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937310 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937311 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937312 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937307 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937308 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937310 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937311 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937312 + } + ], + "seatMapImage": null, + "start": 1393678800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586723, + "id": 138586725, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937307 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937308 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937310 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937311 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937312 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937307 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937308 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937310 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937311 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937312 + } + ], + "seatMapImage": null, + "start": 1393693200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586723, + "id": 138586727, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937307 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937308 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937310 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937311 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937312 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937307 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937308 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937310 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937311 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937312 + } + ], + "seatMapImage": null, + "start": 1393754400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586731, + "id": 138586733, + "logo": "/images/UE0AAAAACEKqawAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1393959600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181249, + "id": 341181463, + "logo": "/images/UE0AAAAAFFYDQQAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1394046000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181249, + "id": 341181464, + "logo": "/images/UE0AAAAAFFYDQQAAAAdDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1394132400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586735, + "id": 138586737, + "logo": "/images/UE0AAAAACEKqbwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1394218800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586743, + "id": 138586745, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1394305200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586747, + "id": 138586749, + "logo": "/images/UE0AAAAACEKqewAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1394377200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586751, + "id": 138586753, + "logo": "/images/UE0AAAAACEKqfwAAAAVDSVRN", + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1394478000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181244, + "id": 341181455, + "logo": "/images/UE0AAAAAFFYDPAAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1394650800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181244, + "id": 341181456, + "logo": "/images/UE0AAAAAFFYDPAAAAAZDSVRN", + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1394737200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586755, + "id": 138586757, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264866 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264867 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264869 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264870 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264866 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264867 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264869 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264870 + } + ], + "seatMapImage": null, + "start": 1394823600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586759, + "id": 138586761, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1395082800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 151183114, + "id": 151183116, + "logo": null, + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937289 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937290 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937292 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937293 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937289 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937290 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937292 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937293 + } + ], + "seatMapImage": null, + "start": 1395169200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586771, + "id": 138586773, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1395255600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586775, + "id": 138586777, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1395342000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586779, + "id": 138586781, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1395428400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586783, + "id": 138586785, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937241 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937242 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937244 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937245 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937246 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937241 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937242 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937244 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937245 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937246 + } + ], + "seatMapImage": null, + "start": 1395500400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586787, + "id": 138586789, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1395514800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586795, + "id": 138586797, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1395586800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181246, + "id": 341181459, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1395860400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181246, + "id": 341181460, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826019 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826019 + } + ], + "seatMapImage": null, + "start": 1395946800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586799, + "id": 138586801, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1396033200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586803, + "id": 138586805, + "logo": null, + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1396191600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586807, + "id": 138586809, + "logo": null, + "name": null, + "prices": [ + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1396288800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586811, + "id": 138586813, + "logo": null, + "name": null, + "prices": [ + { + "amount": 90250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 71250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1396375200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181255, + "id": 341181472, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1396461600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181255, + "id": 341181471, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1396548000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586815, + "id": 138586817, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1396634400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586823, + "id": 138586825, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1396720800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586827, + "id": 138586829, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1396792800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586831, + "id": 138586833, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1396893600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586835, + "id": 138586837, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1396980000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181256, + "id": 341181473, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1397066400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181256, + "id": 341181474, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1397152800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586839, + "id": 138586841, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264866 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264867 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264869 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264870 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264866 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264867 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264869 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264870 + } + ], + "seatMapImage": null, + "start": 1397239200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586843, + "id": 138586845, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1397311200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586847, + "id": 138586849, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1397325600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586851, + "id": 138586853, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1397397600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586855, + "id": 138586857, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1397498400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586859, + "id": 138586861, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1397584800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586863, + "id": 138586865, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1397930400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181251, + "id": 341181466, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1398276000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181253, + "id": 341181468, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + } + ], + "seatMapImage": null, + "start": 1398362400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586867, + "id": 138586869, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1398448800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586871, + "id": 138586873, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1398607200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586875, + "id": 138586877, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1398708000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586879, + "id": 138586881, + "logo": null, + "name": null, + "prices": [ + { + "amount": 171000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 123500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 66500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1398794400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586883, + "id": 138586887, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1399125600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586883, + "id": 138586885, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1399140000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586889, + "id": 138586891, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937307 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937308 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937310 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937311 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937307 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937308 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937310 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937311 + } + ], + "seatMapImage": null, + "start": 1399312800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586893, + "id": 138586895, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1399399200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181232, + "id": 341181434, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1399485600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586897, + "id": 138586899, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1399917600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586901, + "id": 138586903, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1400176800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586905, + "id": 138586907, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1400263200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586909, + "id": 138586911, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1400349600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586917, + "id": 138586919, + "logo": null, + "name": null, + "prices": [ + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937235 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937236 + }, + { + "amount": 19000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937238 + }, + { + "amount": 14250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937239 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937240 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937235 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937236 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937238 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937239 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937240 + } + ], + "seatMapImage": null, + "start": 1400421600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181259, + "id": 341181480, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + } + ], + "seatMapImage": null, + "start": 1400695200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181259, + "id": 341181479, + "logo": null, + "name": null, + "prices": [ + { + "amount": 80750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826016 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826017 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826015 + }, + { + "amount": 28500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 340826018 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826016 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826017 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 340826015 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 340826018 + } + ], + "seatMapImage": null, + "start": 1400781600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586921, + "id": 138586923, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086210 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086211 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086213 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086214 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086210 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086211 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086214 + } + ], + "seatMapImage": null, + "start": 1400868000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586929, + "id": 138586931, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937241 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937242 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937244 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937245 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937246 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937241 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937242 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937244 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937245 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937246 + } + ], + "seatMapImage": null, + "start": 1400940000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586933, + "id": 138586935, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1401026400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586937, + "id": 138586939, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1401127200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586941, + "id": 138586943, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264860 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264861 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264863 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341264864 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264860 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264861 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264863 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341264864 + } + ], + "seatMapImage": null, + "start": 1401472800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586945, + "id": 138586947, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1401730200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586949, + "id": 138586951, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1401818400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586953, + "id": 138586955, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1401904800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586957, + "id": 138586959, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + } + ], + "seatMapImage": null, + "start": 1401991200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586961, + "id": 138586963, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1402077600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586965, + "id": 138586967, + "logo": null, + "name": null, + "prices": [ + { + "amount": 95000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1402423200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181258, + "id": 341181477, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1402509600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181258, + "id": 341181478, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1402596000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586969, + "id": 138586971, + "logo": null, + "name": null, + "prices": [ + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086196 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 339086197 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086196 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 339086197 + } + ], + "seatMapImage": null, + "start": 1402768800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586973, + "id": 138586975, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + } + ], + "seatMapImage": null, + "start": 1402840800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586977, + "id": 138586979, + "logo": null, + "name": null, + "prices": [ + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 33250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 23750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 16150, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1402941600000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586981, + "id": 138586983, + "logo": null, + "name": null, + "prices": [ + { + "amount": 123500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937289 + }, + { + "amount": 85500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937290 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937292 + }, + { + "amount": 38000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937293 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937294 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937289 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937290 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937292 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937293 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937294 + } + ], + "seatMapImage": null, + "start": 1403028000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181257, + "id": 341181475, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1403114400000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181257, + "id": 341181476, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1403200800000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 341181247, + "id": 341181461, + "logo": null, + "name": null, + "prices": [ + { + "amount": 57000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179212 + }, + { + "amount": 42750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179213 + }, + { + "amount": 32300, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179214 + }, + { + "amount": 20900, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179215 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 341179216 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179212 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179213 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179214 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + } + ], + "seatCategoryId": 341179215 + }, + { + "areas": [ + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 341179216 + } + ], + "seatMapImage": null, + "start": 1403719200000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586989, + "id": 138586991, + "logo": null, + "name": null, + "prices": [ + { + "amount": 152000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937284 + }, + { + "amount": 104500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937285 + }, + { + "amount": 76000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937287 + }, + { + "amount": 52250, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937288 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937283 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937284 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937285 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937287 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937288 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937283 + } + ], + "seatMapImage": null, + "start": 1403892000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586993, + "id": 138586995, + "logo": null, + "name": null, + "prices": [ + { + "amount": 123500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 85500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 38000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1404324000000, + "venueCode": "PLEYEL_PLEYEL" + }, + { + "eventId": 138586997, + "id": 138586999, + "logo": null, + "name": null, + "prices": [ + { + "amount": 123500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937277 + }, + { + "amount": 85500, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937278 + }, + { + "amount": 61750, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937280 + }, + { + "amount": 38000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937281 + }, + { + "amount": 10000, + "audienceSubCategoryId": 337100890, + "seatCategoryId": 338937282 + } + ], + "seatCategories": [ + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937277 + }, + { + "areas": [ + { + "areaId": 205705999, + "blockIds": [] + }, + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937278 + }, + { + "areas": [ + { + "areaId": 205705998, + "blockIds": [] + }, + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205705995, + "blockIds": [] + }, + { + "areaId": 205705996, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205705993, + "blockIds": [] + }, + { + "areaId": 205706007, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937280 + }, + { + "areas": [ + { + "areaId": 205705994, + "blockIds": [] + }, + { + "areaId": 205706006, + "blockIds": [] + }, + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706001, + "blockIds": [] + }, + { + "areaId": 205706000, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937281 + }, + { + "areas": [ + { + "areaId": 205706005, + "blockIds": [] + }, + { + "areaId": 205706004, + "blockIds": [] + }, + { + "areaId": 205706003, + "blockIds": [] + }, + { + "areaId": 205706002, + "blockIds": [] + }, + { + "areaId": 205706009, + "blockIds": [] + }, + { + "areaId": 205706008, + "blockIds": [] + } + ], + "seatCategoryId": 338937282 + } + ], + "seatMapImage": null, + "start": 1404410400000, + "venueCode": "PLEYEL_PLEYEL" + } + ], + "seatCategoryNames": { + "338937235": "1ère catégorie", + "338937236": "2ème catégorie", + "338937238": "3ème catégorie", + "338937239": "4ème catégorie", + "338937240": "5ème catégorie", + "338937241": "1ère catégorie", + "338937242": "2ème catégorie", + "338937244": "3ème catégorie", + "338937245": "4ème catégorie", + "338937246": "5ème catégorie", + "338937271": "1ère catégorie", + "338937272": "2ème catégorie", + "338937274": "3ème catégorie", + "338937275": "4ème catégorie", + "338937277": "1ère catégorie", + "338937278": "2ème catégorie", + "338937280": "3ème catégorie", + "338937281": "4ème catégorie", + "338937282": "5ème catégorie", + "338937283": "5ème catégorie", + "338937284": "1ère catégorie", + "338937285": "2ème catégorie", + "338937287": "3ème catégorie", + "338937288": "4ème catégorie", + "338937289": "1ère catégorie", + "338937290": "2ème catégorie", + "338937292": "3ème catégorie", + "338937293": "4ème catégorie", + "338937294": "5ème catégorie", + "338937295": "1ère catégorie", + "338937296": "2ème catégorie", + "338937307": "1ère catégorie", + "338937308": "2ème catégorie", + "338937310": "3ème catégorie", + "338937311": "4ème catégorie", + "338937312": "5ème catégorie", + "338937314": "Catégorie unique", + "339086196": "1ère catégorie", + "339086197": "2ème catégorie", + "339086210": "1ère catégorie", + "339086211": "2ème catégorie", + "339086213": "3ème catégorie", + "339086214": "4ème catégorie", + "339086215": "5ème catégorie", + "340826015": "Catégorie 3", + "340826016": "Catégorie 1", + "340826017": "Catégorie 2", + "340826018": "Catégorie 4", + "340826019": "Catégorie 5", + "341179212": "CAT1", + "341179213": "CAT2", + "341179214": "CAT3", + "341179215": "CAT4", + "341179216": "CAT5", + "341264860": "1ère catégorie", + "341264861": "2ème catégorie", + "341264863": "3ème catégorie", + "341264864": "4ème catégorie", + "341264866": "1ère catégorie", + "341264867": "2ème catégorie", + "341264869": "3ème catégorie", + "341264870": "4ème catégorie", + "341264872": "1ère catégorie", + "342752792": "catétgorie unique" + }, + "subTopicNames": { + "337184262": "Musique amplifiée", + "337184263": "Musique baroque", + "337184267": "Ciné-concert", + "337184268": "Musique classique", + "337184269": "Jazz", + "337184273": "Musique de chambre", + "337184275": "Musique dirigée", + "337184279": "Musique du monde", + "337184280": "Pop/rock", + "337184281": "Musique de chambre", + "337184282": "Famille", + "337184283": "Concert", + "337184284": "Opéra (version de concert)", + "337184288": "Musique contemporaine", + "337184292": "Musique vocale", + "337184296": "Musique ancienne", + "337184297": "Chanson", + "337184298": "Voix", + "337184299": "famille" + }, + "subjectNames": {}, + "topicNames": { + "107888604": "Activité", + "324846098": "Type de public", + "324846099": "Genre", + "324846100": "Formations musicales" + }, + "topicSubTopics": { + "107888604": [ + 337184283, + 337184267 + ], + "324846098": [ + 337184299 + ], + "324846099": [ + 337184268, + 337184288, + 337184284, + 337184263, + 337184298, + 337184269, + 337184280, + 337184297, + 337184281, + 337184296, + 337184279 + ], + "324846100": [ + 337184275, + 337184262, + 337184292, + 337184273, + 337184282 + ] + }, + "venueNames": { + "PLEYEL_PLEYEL": "Salle Pleyel" + } +} diff --git a/benchmark/data/ohai.json b/benchmark/data/ohai.json new file mode 100644 index 000000000..584bdbd08 --- /dev/null +++ b/benchmark/data/ohai.json @@ -0,0 +1,1216 @@ +{ + "command": { + "ps": "ps -ef" + }, + "kernel": { + "modules": { + "org.virtualbox.kext.VBoxDrv": { + "size": 118784, + "version": "2.2.0", + "index": "114", + "refcount": "3" + }, + "com.cisco.nke.ipsec": { + "size": 454656, + "version": "2.0.1", + "index": "111", + "refcount": "0" + }, + "com.apple.driver.AppleAPIC": { + "size": 12288, + "version": "1.4", + "index": "26", + "refcount": "0" + }, + "com.apple.driver.AirPort.Atheros": { + "size": 593920, + "version": "318.8.3", + "index": "88", + "refcount": "0" + }, + "com.apple.driver.AppleIntelCPUPowerManagement": { + "size": 102400, + "version": "59.0.1", + "index": "22", + "refcount": "0" + }, + "com.apple.iokit.IOStorageFamily": { + "size": 98304, + "version": "1.5.5", + "index": "44", + "refcount": "9" + }, + "com.apple.iokit.IOATAPIProtocolTransport": { + "size": 16384, + "version": "1.5.2", + "index": "52", + "refcount": "0" + }, + "com.apple.iokit.IOPCIFamily": { + "size": 65536, + "version": "2.5", + "index": "17", + "refcount": "18" + }, + "com.apple.driver.AppleHPET": { + "size": 12288, + "version": "1.3", + "index": "33", + "refcount": "0" + }, + "com.apple.driver.AppleUSBHub": { + "size": 49152, + "version": "3.2.7", + "index": "47", + "refcount": "0" + }, + "com.apple.iokit.IOFireWireFamily": { + "size": 258048, + "version": "3.4.6", + "index": "49", + "refcount": "2" + }, + "com.apple.driver.AppleUSBComposite": { + "size": 16384, + "version": "3.2.0", + "index": "60", + "refcount": "1" + }, + "com.apple.driver.AppleIntelPIIXATA": { + "size": 36864, + "version": "2.0.0", + "index": "41", + "refcount": "0" + }, + "com.apple.driver.AppleSmartBatteryManager": { + "size": 28672, + "version": "158.6.0", + "index": "32", + "refcount": "0" + }, + "com.apple.filesystems.udf": { + "size": 233472, + "version": "2.0.2", + "index": "119", + "refcount": "0" + }, + "com.apple.iokit.IOSMBusFamily": { + "size": 12288, + "version": "1.1", + "index": "27", + "refcount": "2" + }, + "com.apple.iokit.IOACPIFamily": { + "size": 16384, + "version": "1.2.0", + "index": "18", + "refcount": "10" + }, + "foo.tap": { + "size": 24576, + "version": "1.0", + "index": "113", + "refcount": "0" + }, + "com.vmware.kext.vmx86": { + "size": 864256, + "version": "2.0.4", + "index": "104", + "refcount": "0" + }, + "com.apple.iokit.CHUDUtils": { + "size": 28672, + "version": "200", + "index": "98", + "refcount": "0" + }, + "org.virtualbox.kext.VBoxNetAdp": { + "size": 8192, + "version": "2.2.0", + "index": "117", + "refcount": "0" + }, + "com.apple.filesystems.autofs": { + "size": 45056, + "version": "2.0.1", + "index": "109", + "refcount": "0" + }, + "com.vmware.kext.vmnet": { + "size": 36864, + "version": "2.0.4", + "index": "108", + "refcount": "0" + }, + "com.apple.driver.AppleACPIButtons": { + "size": 16384, + "version": "1.2.4", + "index": "30", + "refcount": "0" + }, + "com.apple.driver.AppleFWOHCI": { + "size": 139264, + "version": "3.7.2", + "index": "50", + "refcount": "0" + }, + "com.apple.iokit.IOSCSIArchitectureModelFamily": { + "size": 102400, + "version": "2.0.5", + "index": "51", + "refcount": "4" + }, + "com.apple.iokit.IOSCSIBlockCommandsDevice": { + "size": 90112, + "version": "2.0.5", + "index": "57", + "refcount": "1" + }, + "com.apple.driver.AppleACPIPCI": { + "size": 12288, + "version": "1.2.4", + "index": "31", + "refcount": "0" + }, + "com.apple.security.seatbelt": { + "size": 98304, + "version": "107.10", + "index": "25", + "refcount": "0" + }, + "com.apple.driver.AppleUpstreamUserClient": { + "size": 16384, + "version": "2.7.2", + "index": "100", + "refcount": "0" + }, + "com.apple.kext.OSvKernDSPLib": { + "size": 12288, + "version": "1.1", + "index": "79", + "refcount": "1" + }, + "com.apple.iokit.IOBDStorageFamily": { + "size": 20480, + "version": "1.5", + "index": "58", + "refcount": "1" + }, + "com.apple.iokit.IOGraphicsFamily": { + "size": 118784, + "version": "1.7.1", + "index": "70", + "refcount": "5" + }, + "com.apple.iokit.IONetworkingFamily": { + "size": 90112, + "version": "1.6.1", + "index": "82", + "refcount": "4" + }, + "com.apple.iokit.IOATAFamily": { + "size": 53248, + "version": "2.0.0", + "index": "40", + "refcount": "2" + }, + "com.apple.iokit.IOUSBHIDDriver": { + "size": 20480, + "version": "3.2.2", + "index": "63", + "refcount": "2" + }, + "org.virtualbox.kext.VBoxUSB": { + "size": 28672, + "version": "2.2.0", + "index": "115", + "refcount": "0" + }, + "com.vmware.kext.vmioplug": { + "size": 24576, + "version": "2.0.4", + "index": "107", + "refcount": "0" + }, + "com.apple.security.TMSafetyNet": { + "size": 12288, + "version": "3", + "index": "23", + "refcount": "0" + }, + "com.apple.iokit.IONDRVSupport": { + "size": 57344, + "version": "1.7.1", + "index": "71", + "refcount": "3" + }, + "com.apple.BootCache": { + "size": 20480, + "version": "30.3", + "index": "20", + "refcount": "0" + }, + "com.apple.iokit.IOUSBUserClient": { + "size": 8192, + "version": "3.2.4", + "index": "46", + "refcount": "1" + }, + "com.apple.iokit.IOSCSIMultimediaCommandsDevice": { + "size": 90112, + "version": "2.0.5", + "index": "59", + "refcount": "0" + }, + "com.apple.driver.AppleIRController": { + "size": 20480, + "version": "110", + "index": "78", + "refcount": "0" + }, + "com.apple.driver.AudioIPCDriver": { + "size": 16384, + "version": "1.0.5", + "index": "81", + "refcount": "0" + }, + "org.virtualbox.kext.VBoxNetFlt": { + "size": 16384, + "version": "2.2.0", + "index": "116", + "refcount": "0" + }, + "com.apple.driver.AppleLPC": { + "size": 12288, + "version": "1.2.11", + "index": "73", + "refcount": "0" + }, + "com.apple.iokit.CHUDKernLib": { + "size": 20480, + "version": "196", + "index": "93", + "refcount": "2" + }, + "com.apple.iokit.CHUDProf": { + "size": 49152, + "version": "207", + "index": "97", + "refcount": "0" + }, + "com.apple.NVDAResman": { + "size": 2478080, + "version": "5.3.6", + "index": "90", + "refcount": "2" + }, + "com.apple.driver.AppleACPIEC": { + "size": 20480, + "version": "1.2.4", + "index": "28", + "refcount": "0" + }, + "foo.tun": { + "size": 24576, + "version": "1.0", + "index": "118", + "refcount": "0" + }, + "com.apple.iokit.IOSerialFamily": { + "size": 36864, + "version": "9.3", + "index": "102", + "refcount": "1" + }, + "com.apple.GeForce": { + "size": 622592, + "version": "5.3.6", + "index": "96", + "refcount": "0" + }, + "com.apple.iokit.IOCDStorageFamily": { + "size": 32768, + "version": "1.5", + "index": "55", + "refcount": "3" + }, + "com.apple.driver.AppleUSBEHCI": { + "size": 73728, + "version": "3.2.5", + "index": "39", + "refcount": "0" + }, + "com.apple.nvidia.nv50hal": { + "size": 2445312, + "version": "5.3.6", + "index": "91", + "refcount": "0" + }, + "com.apple.driver.AppleSMBIOS": { + "size": 16384, + "version": "1.1.1", + "index": "29", + "refcount": "0" + }, + "com.apple.driver.AppleBacklight": { + "size": 16384, + "version": "1.4.4", + "index": "72", + "refcount": "0" + }, + "com.apple.driver.AppleACPIPlatform": { + "size": 253952, + "version": "1.2.4", + "index": "19", + "refcount": "3" + }, + "com.apple.iokit.SCSITaskUserClient": { + "size": 24576, + "version": "2.0.5", + "index": "54", + "refcount": "0" + }, + "com.apple.iokit.IOHIDFamily": { + "size": 233472, + "version": "1.5.3", + "index": "21", + "refcount": "7" + }, + "com.apple.driver.DiskImages": { + "size": 65536, + "version": "195.2.2", + "index": "101", + "refcount": "0" + }, + "com.apple.iokit.IODVDStorageFamily": { + "size": 24576, + "version": "1.5", + "index": "56", + "refcount": "2" + }, + "com.apple.driver.XsanFilter": { + "size": 20480, + "version": "2.7.91", + "index": "53", + "refcount": "0" + }, + "com.apple.driver.AppleEFIRuntime": { + "size": 12288, + "version": "1.2.0", + "index": "35", + "refcount": "1" + }, + "com.apple.driver.AppleRTC": { + "size": 20480, + "version": "1.2.3", + "index": "34", + "refcount": "0" + }, + "com.apple.iokit.IOFireWireIP": { + "size": 36864, + "version": "1.7.6", + "index": "83", + "refcount": "0" + }, + "com.vmware.kext.vmci": { + "size": 45056, + "version": "2.0.4", + "index": "106", + "refcount": "0" + }, + "com.apple.iokit.IO80211Family": { + "size": 126976, + "version": "215.1", + "index": "87", + "refcount": "1" + }, + "com.apple.nke.applicationfirewall": { + "size": 32768, + "version": "1.0.77", + "index": "24", + "refcount": "0" + }, + "com.apple.iokit.IOAHCIBlockStorage": { + "size": 69632, + "version": "1.2.0", + "index": "48", + "refcount": "0" + }, + "com.apple.driver.AppleUSBUHCI": { + "size": 57344, + "version": "3.2.5", + "index": "38", + "refcount": "0" + }, + "com.apple.iokit.IOAHCIFamily": { + "size": 24576, + "version": "1.5.0", + "index": "42", + "refcount": "2" + }, + "com.apple.driver.AppleAHCIPort": { + "size": 53248, + "version": "1.5.2", + "index": "43", + "refcount": "0" + }, + "com.apple.driver.AppleEFINVRAM": { + "size": 24576, + "version": "1.2.0", + "index": "36", + "refcount": "0" + }, + "com.apple.iokit.IOUSBFamily": { + "size": 167936, + "version": "3.2.7", + "index": "37", + "refcount": "13" + }, + "com.apple.driver.AppleUSBMergeNub": { + "size": 12288, + "version": "3.2.4", + "index": "61", + "refcount": "0" + } + }, + "machine": "i386", + "name": "Darwin", + "os": "Darwin", + "version": "Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; root:xnu-1228.9.59~1\/RELEASE_I386", + "release": "9.6.0" + }, + "platform_version": "10.5.6", + "platform": "mac_os_x", + "ipaddress": "192.168.88.1", + "keys": { + "ssh": { + "host_dsa_public": "private", + "host_rsa_public": "private" + } + }, + "network": { + "settings": { + "net.inet6.ip6.forwarding": "0", + "net.inet.ip.dummynet.debug": "0", + "net.inet.ip.rtexpire": "10", + "net.inet6.ipsec6.esp_trans_deflev": "1", + "net.inet.tcp.tcbhashsize": "4096", + "net.key.esp_auth": "0", + "net.inet6.ip6.hlim": "64", + "net.inet.ip.fw.dyn_fin_lifetime": "1", + "net.inet.ip.fw.dyn_udp_lifetime": "10", + "net.inet.icmp.bmcastecho": "1", + "net.athforceBias": "2 2", + "net.athbgscan": "1 1", + "net.inet.tcp.reass.maxsegments": "2048", + "net.inet6.ip6.auto_flowlabel": "1", + "net.inet6.ip6.rtmaxcache": "128", + "net.inet.tcp.sendspace": "131072", + "net.inet.tcp.keepinit": "75000", + "net.inet.ip.dummynet.max_chain_len": "16", + "net.inet.tcp.rfc1644": "0", + "net.inet.ip.fw.curr_dyn_buckets": "256", + "net.inet.ip.dummynet.ready_heap": "0", + "net.inet.ip.portrange.first": "49152", + "net.inet.tcp.background_io_trigger": "5", + "net.link.ether.inet.host_down_time": "20", + "net.inet6.ipsec6.def_policy": "1", + "net.inet6.ipsec6.ecn": "0", + "net.inet.ip.fastforwarding": "0", + "net.athaddbaignore": "0 0", + "net.inet6.ip6.v6only": "0", + "net.inet.tcp.sack": "1", + "net.inet6.ip6.rtexpire": "3600", + "net.link.ether.inet.proxyall": "0", + "net.inet6.ip6.keepfaith": "0", + "net.key.spi_trycnt": "1000", + "net.link.ether.inet.prune_intvl": "300", + "net.inet.tcp.ecn_initiate_out": "0", + "net.inet.ip.fw.dyn_rst_lifetime": "1", + "net.local.stream.sendspace": "8192", + "net.inet.tcp.socket_unlocked_on_output": "1", + "net.inet.ip.fw.verbose_limit": "0", + "net.local.dgram.recvspace": "4096", + "net.inet.ipsec.debug": "0", + "net.link.ether.inet.log_arp_warnings": "0", + "net.inet.tcp.ecn_negotiate_in": "0", + "net.inet.tcp.rfc3465": "1", + "net.inet.tcp.icmp_may_rst": "1", + "net.link.ether.inet.sendllconflict": "0", + "net.inet.ipsec.ah_offsetmask": "0", + "net.key.blockacq_count": "10", + "net.inet.tcp.delayed_ack": "3", + "net.inet.ip.fw.verbose": "2", + "net.inet.ip.fw.dyn_count": "0", + "net.inet.tcp.slowlink_wsize": "8192", + "net.inet6.ip6.fw.enable": "1", + "net.inet.ip.portrange.hilast": "65535", + "net.inet.icmp.maskrepl": "0", + "net.link.ether.inet.apple_hwcksum_rx": "1", + "net.inet.tcp.drop_synfin": "1", + "net.key.spi_maxval": "268435455", + "net.inet.ipsec.ecn": "0", + "net.inet.ip.fw.dyn_keepalive": "1", + "net.key.int_random": "60", + "net.key.debug": "0", + "net.inet.ip.dummynet.curr_time": "0", + "net.inet.udp.blackhole": "0", + "net.athaggrqmin": "1 1", + "net.athppmenable": "1 1", + "net.inet.ip.fw.dyn_syn_lifetime": "20", + "net.inet.tcp.keepidle": "7200000", + "net.inet6.ip6.tempvltime": "604800", + "net.inet.tcp.recvspace": "358400", + "net.inet.tcp.keepintvl": "75000", + "net.inet.udp.maxdgram": "9216", + "net.inet.ip.maxchainsent": "0", + "net.inet.ipsec.esp_net_deflev": "1", + "net.inet6.icmp6.nd6_useloopback": "1", + "net.inet.tcp.slowstart_flightsize": "1", + "net.inet.ip.fw.debug": "0", + "net.inet.ip.linklocal.in.allowbadttl": "1", + "net.key.spi_minval": "256", + "net.inet.ip.forwarding": "0", + "net.inet.tcp.v6mssdflt": "1024", + "net.key.larval_lifetime": "30", + "net.inet6.ip6.fw.verbose_limit": "0", + "net.inet.ip.dummynet.red_lookup_depth": "256", + "net.inet.tcp.pcbcount": "36", + "net.inet.ip.fw.dyn_ack_lifetime": "300", + "net.inet.ip.portrange.lowlast": "600", + "net.athCCAThreshold": "28 28", + "net.link.ether.inet.useloopback": "1", + "net.athqdepth": "0 0", + "net.inet.ip.ttl": "64", + "net.inet.ip.rtmaxcache": "128", + "net.inet.ipsec.bypass": "0", + "net.inet6.icmp6.nd6_debug": "0", + "net.inet.ip.use_route_genid": "1", + "net.inet6.icmp6.rediraccept": "1", + "net.inet.ip.fw.static_count": "1", + "net.inet6.ip6.fw.debug": "0", + "net.inet.udp.pcbcount": "104", + "net.inet.ipsec.esp_randpad": "-1", + "net.inet6.icmp6.nd6_maxnudhint": "0", + "net.inet.tcp.always_keepalive": "0", + "net.inet.udp.checksum": "1", + "net.link.ether.inet.keep_announcements": "1", + "net.athfixedDropThresh": "150 150", + "net.inet6.ip6.kame_version": "20010528\/apple-darwin", + "net.inet.ip.fw.dyn_max": "4096", + "net.inet.udp.log_in_vain": "0", + "net.inet6.icmp6.nd6_mmaxtries": "3", + "net.inet.ip.rtminexpire": "10", + "net.inet.ip.fw.dyn_buckets": "256", + "net.inet6.ip6.accept_rtadv": "0", + "net.inet6.ip6.rr_prune": "5", + "net.key.ah_keymin": "128", + "net.inet.ip.redirect": "1", + "net.inet.tcp.sack_globalmaxholes": "65536", + "net.inet.ip.keepfaith": "0", + "net.inet.ip.dummynet.expire": "1", + "net.inet.ip.gifttl": "30", + "net.inet.ip.portrange.last": "65535", + "net.inet.ipsec.ah_net_deflev": "1", + "net.inet6.icmp6.nd6_delay": "5", + "net.inet.tcp.packetchain": "50", + "net.inet6.ip6.hdrnestlimit": "50", + "net.inet.tcp.newreno": "0", + "net.inet6.ip6.dad_count": "1", + "net.inet6.ip6.auto_linklocal": "1", + "net.inet6.ip6.temppltime": "86400", + "net.inet.tcp.strict_rfc1948": "0", + "net.athdupie": "1 1", + "net.inet.ip.dummynet.red_max_pkt_size": "1500", + "net.inet.ip.maxfrags": "2048", + "net.inet.tcp.log_in_vain": "0", + "net.inet.tcp.rfc1323": "1", + "net.inet.ip.subnets_are_local": "0", + "net.inet.ip.dummynet.search_steps": "0", + "net.inet.icmp.icmplim": "250", + "net.link.ether.inet.apple_hwcksum_tx": "1", + "net.inet6.icmp6.redirtimeout": "600", + "net.inet.ipsec.ah_cleartos": "1", + "net.inet6.ip6.log_interval": "5", + "net.link.ether.inet.max_age": "1200", + "net.inet.ip.fw.enable": "1", + "net.inet6.ip6.redirect": "1", + "net.athaggrfmax": "28 28", + "net.inet.ip.maxfragsperpacket": "128", + "net.inet6.ip6.use_deprecated": "1", + "net.link.generic.system.dlil_input_sanity_check": "0", + "net.inet.tcp.sack_globalholes": "0", + "net.inet.tcp.reass.cursegments": "0", + "net.inet6.icmp6.nodeinfo": "3", + "net.local.inflight": "0", + "net.inet.ip.dummynet.hash_size": "64", + "net.inet.ip.dummynet.red_avg_pkt_size": "512", + "net.inet.ipsec.dfbit": "0", + "net.inet.tcp.reass.overflows": "0", + "net.inet.tcp.rexmt_thresh": "2", + "net.inet6.ip6.maxfrags": "8192", + "net.inet6.ip6.rtminexpire": "10", + "net.inet6.ipsec6.esp_net_deflev": "1", + "net.inet.tcp.blackhole": "0", + "net.key.esp_keymin": "256", + "net.inet.ip.check_interface": "0", + "net.inet.tcp.minmssoverload": "0", + "net.link.ether.inet.maxtries": "5", + "net.inet.tcp.do_tcpdrain": "0", + "net.inet.ipsec.esp_port": "4500", + "net.inet6.ipsec6.ah_net_deflev": "1", + "net.inet.ip.dummynet.extract_heap": "0", + "net.inet.tcp.path_mtu_discovery": "1", + "net.inet.ip.intr_queue_maxlen": "50", + "net.inet.ipsec.def_policy": "1", + "net.inet.ip.fw.autoinc_step": "100", + "net.inet.ip.accept_sourceroute": "0", + "net.inet.raw.maxdgram": "8192", + "net.inet.ip.maxfragpackets": "1024", + "net.inet.ip.fw.one_pass": "0", + "net.appletalk.routermix": "2000", + "net.inet.tcp.tcp_lq_overflow": "1", + "net.link.generic.system.ifcount": "9", + "net.link.ether.inet.send_conflicting_probes": "1", + "net.inet.tcp.background_io_enabled": "1", + "net.inet6.ipsec6.debug": "0", + "net.inet.tcp.win_scale_factor": "3", + "net.key.natt_keepalive_interval": "20", + "net.inet.tcp.msl": "15000", + "net.inet.ip.portrange.hifirst": "49152", + "net.inet.ipsec.ah_trans_deflev": "1", + "net.inet.tcp.rtt_min": "1", + "net.inet6.ip6.defmcasthlim": "1", + "net.inet6.icmp6.nd6_prune": "1", + "net.inet6.ip6.fw.verbose": "0", + "net.inet.ip.portrange.lowfirst": "1023", + "net.inet.tcp.maxseg_unacked": "8", + "net.local.dgram.maxdgram": "2048", + "net.key.blockacq_lifetime": "20", + "net.inet.tcp.sack_maxholes": "128", + "net.inet6.ip6.maxfragpackets": "1024", + "net.inet6.ip6.use_tempaddr": "0", + "net.athpowermode": "0 0", + "net.inet.udp.recvspace": "73728", + "net.inet.tcp.isn_reseed_interval": "0", + "net.inet.tcp.local_slowstart_flightsize": "8", + "net.inet.ip.dummynet.searches": "0", + "net.inet.ip.intr_queue_drops": "0", + "net.link.generic.system.multi_threaded_input": "1", + "net.inet.raw.recvspace": "8192", + "net.inet.ipsec.esp_trans_deflev": "1", + "net.key.prefered_oldsa": "0", + "net.local.stream.recvspace": "8192", + "net.inet.tcp.sockthreshold": "64", + "net.inet6.icmp6.nd6_umaxtries": "3", + "net.pstimeout": "20 20", + "net.inet.ip.sourceroute": "0", + "net.inet.ip.fw.dyn_short_lifetime": "5", + "net.inet.tcp.minmss": "216", + "net.inet6.ip6.gifhlim": "0", + "net.athvendorie": "1 1", + "net.inet.ip.check_route_selfref": "1", + "net.inet6.icmp6.errppslimit": "100", + "net.inet.tcp.mssdflt": "512", + "net.inet.icmp.log_redirect": "0", + "net.inet6.ipsec6.ah_trans_deflev": "1", + "net.inet6.ipsec6.esp_randpad": "-1", + "net.inet.icmp.drop_redirect": "0", + "net.inet.icmp.timestamp": "0", + "net.inet.ip.random_id": "1" + }, + "interfaces": { + "vmnet1": { + "flags": [ + "UP", + "BROADCAST", + "SMART", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "broadcast": "192.168.88.255", + "netmask": "255.255.255.0", + "family": "inet", + "address": "192.168.88.1" + }, + { + "family": "lladdr", + "address": "private" + } + ], + "number": "1", + "mtu": "1500", + "type": "vmnet", + "encapsulation": "Ethernet" + }, + "stf0": { + "flags": [ + + ], + "number": "0", + "mtu": "1280", + "type": "stf", + "encapsulation": "6to4" + }, + "vboxnet0": { + "flags": [ + "BROADCAST", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "family": "lladdr", + "address": "private" + } + ], + "number": "0", + "mtu": "1500", + "type": "vboxnet", + "encapsulation": "Ethernet" + }, + "lo0": { + "flags": [ + "UP", + "LOOPBACK", + "RUNNING", + "MULTICAST" + ], + "addresses": [ + { + "scope": "Link", + "prefixlen": "64", + "family": "inet6", + "address": "fe80::1" + }, + { + "netmask": "255.0.0.0", + "family": "inet", + "address": "127.0.0.1" + }, + { + "scope": "Node", + "prefixlen": "128", + "family": "inet6", + "address": "::1" + }, + { + "scope": "Node", + "prefixlen": "128", + "family": "inet6", + "address": "private" + } + ], + "number": "0", + "mtu": "16384", + "type": "lo", + "encapsulation": "Loopback" + }, + "vboxn": { + "counters": { + "tx": { + "bytes": "0", + "packets": "0", + "collisions": "0", + "compressed": 0, + "carrier": 0, + "drop": 0, + "errors": "0", + "overrun": 0 + }, + "rx": { + "bytes": "0", + "packets": "0", + "compressed": 0, + "drop": 0, + "errors": "0", + "overrun": 0, + "frame": 0, + "multicast": 0 + } + } + }, + "gif0": { + "flags": [ + "POINTOPOINT", + "MULTICAST" + ], + "number": "0", + "mtu": "1280", + "type": "gif", + "encapsulation": "IPIP" + }, + "vmnet": { + "counters": { + "tx": { + "bytes": "0", + "packets": "0", + "collisions": "0", + "compressed": 0, + "carrier": 0, + "drop": 0, + "errors": "0", + "overrun": 0 + }, + "rx": { + "bytes": "0", + "packets": "0", + "compressed": 0, + "drop": 0, + "errors": "0", + "overrun": 0, + "frame": 0, + "multicast": 0 + } + } + }, + "vmnet8": { + "flags": [ + "UP", + "BROADCAST", + "SMART", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "broadcast": "192.168.237.255", + "netmask": "255.255.255.0", + "family": "inet", + "address": "192.168.237.1" + }, + { + "family": "lladdr", + "address": "private" + } + ], + "number": "8", + "mtu": "1500", + "type": "vmnet", + "encapsulation": "Ethernet" + }, + "en0": { + "status": "inactive", + "flags": [ + "UP", + "BROADCAST", + "SMART", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "family": "lladdr", + "address": "private" + } + ], + "number": "0", + "mtu": "1500", + "media": { + "supported": [ + { + "autoselect": { + "options": [ + + ] + } + }, + { + "10baseT\/UTP": { + "options": [ + "half-duplex" + ] + } + }, + { + "10baseT\/UTP": { + "options": [ + "full-duplex" + ] + } + }, + { + "10baseT\/UTP": { + "options": [ + "full-duplex", + "hw-loopback" + ] + } + }, + { + "10baseT\/UTP": { + "options": [ + "full-duplex", + "flow-control" + ] + } + }, + { + "100baseTX": { + "options": [ + "half-duplex" + ] + } + }, + { + "100baseTX": { + "options": [ + "full-duplex" + ] + } + }, + { + "100baseTX": { + "options": [ + "full-duplex", + "hw-loopback" + ] + } + }, + { + "100baseTX": { + "options": [ + "full-duplex", + "flow-control" + ] + } + }, + { + "1000baseT": { + "options": [ + "full-duplex" + ] + } + }, + { + "1000baseT": { + "options": [ + "full-duplex", + "hw-loopback" + ] + } + }, + { + "1000baseT": { + "options": [ + "full-duplex", + "flow-control" + ] + } + }, + { + "none": { + "options": [ + + ] + } + } + ], + "selected": [ + { + "autoselect": { + "options": [ + + ] + } + } + ] + }, + "type": "en", + "counters": { + "tx": { + "bytes": "342", + "packets": "0", + "collisions": "0", + "compressed": 0, + "carrier": 0, + "drop": 0, + "errors": "0", + "overrun": 0 + }, + "rx": { + "bytes": "0", + "packets": "0", + "compressed": 0, + "drop": 0, + "errors": "0", + "overrun": 0, + "frame": 0, + "multicast": 0 + } + }, + "encapsulation": "Ethernet" + }, + "en1": { + "status": "active", + "flags": [ + "UP", + "BROADCAST", + "SMART", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "scope": "Link", + "prefixlen": "64", + "family": "inet6", + "address": "private" + }, + { + "broadcast": "192.168.1.255", + "netmask": "255.255.255.0", + "family": "inet", + "address": "192.168.1.4" + }, + { + "family": "lladdr", + "address": "private" + } + ], + "number": "1", + "mtu": "1500", + "media": { + "supported": [ + { + "autoselect": { + "options": [ + + ] + } + } + ], + "selected": [ + { + "autoselect": { + "options": [ + + ] + } + } + ] + }, + "type": "en", + "counters": { + "tx": { + "bytes": "449206298", + "packets": "7041789", + "collisions": "0", + "compressed": 0, + "carrier": 0, + "drop": 0, + "errors": "95", + "overrun": 0 + }, + "rx": { + "bytes": "13673879120", + "packets": "19966002", + "compressed": 0, + "drop": 0, + "errors": "1655893", + "overrun": 0, + "frame": 0, + "multicast": 0 + } + }, + "arp": { + "192.168.1.7": "private" + }, + "encapsulation": "Ethernet" + }, + "fw0": { + "status": "inactive", + "flags": [ + "UP", + "BROADCAST", + "SMART", + "RUNNING", + "SIMPLEX", + "MULTICAST" + ], + "addresses": [ + { + "family": "lladdr", + "address": "private" + } + ], + "number": "0", + "mtu": "4078", + "media": { + "supported": [ + { + "autoselect": { + "options": [ + "full-duplex" + ] + } + } + ], + "selected": [ + { + "autoselect": { + "options": [ + "full-duplex" + ] + } + } + ] + }, + "type": "fw", + "counters": { + "tx": { + "bytes": "346", + "packets": "0", + "collisions": "0", + "compressed": 0, + "carrier": 0, + "drop": 0, + "errors": "0", + "overrun": 0 + }, + "rx": { + "bytes": "0", + "packets": "0", + "compressed": 0, + "drop": 0, + "errors": "0", + "overrun": 0, + "frame": 0, + "multicast": 0 + } + }, + "encapsulation": "1394" + } + } + }, + "fqdn": "local.local", + "ohai_time": 1240624355.08575, + "domain": "local", + "os": "darwin", + "platform_build": "9G55", + "os_version": "9.6.0", + "hostname": "local", + "macaddress": "private", + "languages": { + "ruby": { + "target_os": "darwin9.0", + "platform": "universal-darwin9.0", + "host_vendor": "apple", + "target_vendor": "apple", + "target_cpu": "i686", + "host_os": "darwin9.0", + "host_cpu": "i686", + "version": "1.8.6", + "host": "i686-apple-darwin9.0", + "target": "i686-apple-darwin9.0", + "release_date": "2008-03-03" + } + } +} diff --git a/benchmark/data/twitter.json b/benchmark/data/twitter.json new file mode 100644 index 000000000..137fb5162 --- /dev/null +++ b/benchmark/data/twitter.json @@ -0,0 +1,15482 @@ +{ + "statuses": [ + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:15 +0000 2014", + "id": 505874924095815700, + "id_str": "505874924095815681", + "text": "@aym0566x \n\n名前:前田あゆみ\n第一印象:なんか怖っ!\n今の印象:とりあえずキモい。噛み合わない\n好きなところ:ぶすでキモいとこ😋✨✨\n思い出:んーーー、ありすぎ😊❤️\nLINE交換できる?:あぁ……ごめん✋\nトプ画をみて:照れますがな😘✨\n一言:お前は一生もんのダチ💖", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": 866260188, + "in_reply_to_user_id_str": "866260188", + "in_reply_to_screen_name": "aym0566x", + "user": { + "id": 1186275104, + "id_str": "1186275104", + "name": "AYUMI", + "screen_name": "ayuu0123", + "location": "", + "description": "元野球部マネージャー❤︎…最高の夏をありがとう…❤︎", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 262, + "friends_count": 252, + "listed_count": 0, + "created_at": "Sat Feb 16 13:40:25 +0000 2013", + "favourites_count": 235, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 1769, + "lang": "en", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497760886795153410/LDjAwR_y_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497760886795153410/LDjAwR_y_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1186275104/1409318784", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "aym0566x", + "name": "前田あゆみ", + "id": 866260188, + "id_str": "866260188", + "indices": [ + 0, + 9 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:14 +0000 2014", + "id": 505874922023837700, + "id_str": "505874922023837696", + "text": "RT @KATANA77: えっそれは・・・(一同) http://t.co/PkCJAcSuYK", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 903487807, + "id_str": "903487807", + "name": "RT&ファボ魔のむっつんさっm", + "screen_name": "yuttari1998", + "location": "関西 ↓詳しいプロ↓", + "description": "無言フォローはあまり好みません ゲームと動画が好きですシモ野郎ですがよろしく…最近はMGSとブレイブルー、音ゲーをプレイしてます", + "url": "http://t.co/Yg9e1Fl8wd", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/Yg9e1Fl8wd", + "expanded_url": "http://twpf.jp/yuttari1998", + "display_url": "twpf.jp/yuttari1998", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 95, + "friends_count": 158, + "listed_count": 1, + "created_at": "Thu Oct 25 08:27:13 +0000 2012", + "favourites_count": 3652, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 10276, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/500268849275494400/AoXHZ7Ij_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/500268849275494400/AoXHZ7Ij_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/903487807/1409062272", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 23:49:35 +0000 2014", + "id": 505864943636197400, + "id_str": "505864943636197376", + "text": "えっそれは・・・(一同) http://t.co/PkCJAcSuYK", + "source": "Twitter Web Client", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 77915997, + "id_str": "77915997", + "name": "(有)刀", + "screen_name": "KATANA77", + "location": "", + "description": "プリキュア好きのサラリーマンです。好きなプリキュアシリーズはハートキャッチ、最愛のキャラクターは月影ゆりさんです。 http://t.co/QMLJeFmfMTご質問、お問い合わせはこちら http://t.co/LU8T7vmU3h", + "url": null, + "entities": { + "description": { + "urls": [ + { + "url": "http://t.co/QMLJeFmfMT", + "expanded_url": "http://www.pixiv.net/member.php?id=4776", + "display_url": "pixiv.net/member.php?id=…", + "indices": [ + 58, + 80 + ] + }, + { + "url": "http://t.co/LU8T7vmU3h", + "expanded_url": "http://ask.fm/KATANA77", + "display_url": "ask.fm/KATANA77", + "indices": [ + 95, + 117 + ] + } + ] + } + }, + "protected": false, + "followers_count": 1095, + "friends_count": 740, + "listed_count": 50, + "created_at": "Mon Sep 28 03:41:27 +0000 2009", + "favourites_count": 3741, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 19059, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/808597451/45b82f887085d32bd4b87dfc348fe22a.png", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/808597451/45b82f887085d32bd4b87dfc348fe22a.png", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/480210114964504577/MjVIEMS4_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/480210114964504577/MjVIEMS4_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/77915997/1404661392", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 82, + "favorite_count": 42, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [], + "media": [ + { + "id": 505864942575034400, + "id_str": "505864942575034369", + "indices": [ + 13, + 35 + ], + "media_url": "http://pbs.twimg.com/media/BwUxfC6CIAEr-Ye.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwUxfC6CIAEr-Ye.jpg", + "url": "http://t.co/PkCJAcSuYK", + "display_url": "pic.twitter.com/PkCJAcSuYK", + "expanded_url": "http://twitter.com/KATANA77/status/505864943636197376/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 338, + "resize": "fit" + }, + "small": { + "w": 340, + "h": 192, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 765, + "h": 432, + "resize": "fit" + } + } + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 82, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "KATANA77", + "name": "(有)刀", + "id": 77915997, + "id_str": "77915997", + "indices": [ + 3, + 12 + ] + } + ], + "media": [ + { + "id": 505864942575034400, + "id_str": "505864942575034369", + "indices": [ + 27, + 49 + ], + "media_url": "http://pbs.twimg.com/media/BwUxfC6CIAEr-Ye.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwUxfC6CIAEr-Ye.jpg", + "url": "http://t.co/PkCJAcSuYK", + "display_url": "pic.twitter.com/PkCJAcSuYK", + "expanded_url": "http://twitter.com/KATANA77/status/505864943636197376/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 338, + "resize": "fit" + }, + "small": { + "w": 340, + "h": 192, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 765, + "h": 432, + "resize": "fit" + } + }, + "source_status_id": 505864943636197400, + "source_status_id_str": "505864943636197376" + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:14 +0000 2014", + "id": 505874920140591100, + "id_str": "505874920140591104", + "text": "@longhairxMIURA 朝一ライカス辛目だよw", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": 505874728897085440, + "in_reply_to_status_id_str": "505874728897085440", + "in_reply_to_user_id": 114188950, + "in_reply_to_user_id_str": "114188950", + "in_reply_to_screen_name": "longhairxMIURA", + "user": { + "id": 114786346, + "id_str": "114786346", + "name": "PROTECT-T", + "screen_name": "ttm_protect", + "location": "静岡県長泉町", + "description": "24 / XXX / @andprotector / @lifefocus0545 potato design works", + "url": "http://t.co/5EclbQiRX4", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/5EclbQiRX4", + "expanded_url": "http://ap.furtherplatonix.net/index.html", + "display_url": "ap.furtherplatonix.net/index.html", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 1387, + "friends_count": 903, + "listed_count": 25, + "created_at": "Tue Feb 16 16:13:41 +0000 2010", + "favourites_count": 492, + "utc_offset": 32400, + "time_zone": "Osaka", + "geo_enabled": false, + "verified": false, + "statuses_count": 12679, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/481360383253295104/4B9Rcfys_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/481360383253295104/4B9Rcfys_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/114786346/1403600232", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "longhairxMIURA", + "name": "miura desu", + "id": 114188950, + "id_str": "114188950", + "indices": [ + 0, + 15 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:14 +0000 2014", + "id": 505874919020699650, + "id_str": "505874919020699648", + "text": "RT @omo_kko: ラウワン脱出→友達が家に連んで帰ってって言うから友達ん家に乗せて帰る(1度も行ったことない田舎道)→友達おろして迷子→500メートルくらい続く変な一本道進む→墓地で行き止まりでUターン出来ずバックで500メートル元のところまで進まないといけない←今ここ", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 392585658, + "id_str": "392585658", + "name": "原稿", + "screen_name": "chibu4267", + "location": "キミの部屋の燃えるゴミ箱", + "description": "RTしてTLに濁流を起こすからフォローしない方が良いよ 言ってることもつまらないし 詳細→http://t.co/ANSFlYXERJ 相方@1life_5106_hshd 葛西教徒その壱", + "url": "http://t.co/JTFjV89eaN", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/JTFjV89eaN", + "expanded_url": "http://www.pixiv.net/member.php?id=1778417", + "display_url": "pixiv.net/member.php?id=…", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "http://t.co/ANSFlYXERJ", + "expanded_url": "http://twpf.jp/chibu4267", + "display_url": "twpf.jp/chibu4267", + "indices": [ + 45, + 67 + ] + } + ] + } + }, + "protected": false, + "followers_count": 1324, + "friends_count": 1165, + "listed_count": 99, + "created_at": "Mon Oct 17 08:23:46 +0000 2011", + "favourites_count": 9542, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 369420, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/453106940822814720/PcJIZv43.png", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/453106940822814720/PcJIZv43.png", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/505731759216943107/pzhnkMEg_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505731759216943107/pzhnkMEg_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/392585658/1362383911", + "profile_link_color": "5EB9FF", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 16:51:09 +0000 2014", + "id": 505759640164892700, + "id_str": "505759640164892673", + "text": "ラウワン脱出→友達が家に連んで帰ってって言うから友達ん家に乗せて帰る(1度も行ったことない田舎道)→友達おろして迷子→500メートルくらい続く変な一本道進む→墓地で行き止まりでUターン出来ずバックで500メートル元のところまで進まないといけない←今ここ", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 309565423, + "id_str": "309565423", + "name": "おもっこ", + "screen_name": "omo_kko", + "location": "", + "description": "ぱんすと", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 730, + "friends_count": 200, + "listed_count": 23, + "created_at": "Thu Jun 02 09:15:51 +0000 2011", + "favourites_count": 5441, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 30012, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499126939378929664/GLWpIKTW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499126939378929664/GLWpIKTW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/309565423/1409418370", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 67, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "omo_kko", + "name": "おもっこ", + "id": 309565423, + "id_str": "309565423", + "indices": [ + 3, + 11 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:13 +0000 2014", + "id": 505874918198624260, + "id_str": "505874918198624256", + "text": "RT @thsc782_407: #LEDカツカツ選手権\n漢字一文字ぶんのスペースに「ハウステンボス」を収める狂気 http://t.co/vmrreDMziI", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 753161754, + "id_str": "753161754", + "name": "ねこねこみかん*", + "screen_name": "nekonekomikan", + "location": "ソーダ水のあふれるビンの中", + "description": "猫×6、大学・高校・旦那各1と暮らしています。猫、子供、日常思った事をつぶやいています/今年の目標:読書、庭の手入れ、ランニング、手芸/猫*花*写真*詩*林ももこさん*鉄道など好きな方をフォローさせていただいています。よろしくお願いします♬", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 217, + "friends_count": 258, + "listed_count": 8, + "created_at": "Sun Aug 12 14:00:47 +0000 2012", + "favourites_count": 7650, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 20621, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/470627990271848448/m83uy6Vc_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/470627990271848448/m83uy6Vc_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Fri Feb 28 16:04:13 +0000 2014", + "id": 439430848190742500, + "id_str": "439430848190742528", + "text": "#LEDカツカツ選手権\n漢字一文字ぶんのスペースに「ハウステンボス」を収める狂気 http://t.co/vmrreDMziI", + "source": "Twitter Web Client", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 82900665, + "id_str": "82900665", + "name": "[90]青葉台 芦 (第二粟屋) 屋", + "screen_name": "thsc782_407", + "location": "かんましき", + "description": "湯の街の元勃酩姦なんちゃら大 赤い犬の犬(外資系) 肥後で緑ナンバー屋さん勤め\nくだらないことしかつぶやかないし、いちいち訳のわからない記号を連呼するので相当邪魔になると思います。害はないと思います。のりものの画像とかたくさん上げます。さみしい。車輪のついたものならだいたい好き。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 587, + "friends_count": 623, + "listed_count": 30, + "created_at": "Fri Oct 16 15:13:32 +0000 2009", + "favourites_count": 1405, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 60427, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "352726", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/154137819/__813-1103.jpg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/154137819/__813-1103.jpg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/493760276676620289/32oLiTtT_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/493760276676620289/32oLiTtT_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/82900665/1398865798", + "profile_link_color": "D02B55", + "profile_sidebar_border_color": "829D5E", + "profile_sidebar_fill_color": "99CC33", + "profile_text_color": "3E4415", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 3291, + "favorite_count": 1526, + "entities": { + "hashtags": [ + { + "text": "LEDカツカツ選手権", + "indices": [ + 0, + 11 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [], + "media": [ + { + "id": 439430848194936800, + "id_str": "439430848194936832", + "indices": [ + 41, + 63 + ], + "media_url": "http://pbs.twimg.com/media/BhksBzoCAAAJeDS.jpg", + "media_url_https": "https://pbs.twimg.com/media/BhksBzoCAAAJeDS.jpg", + "url": "http://t.co/vmrreDMziI", + "display_url": "pic.twitter.com/vmrreDMziI", + "expanded_url": "http://twitter.com/thsc782_407/status/439430848190742528/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 450, + "resize": "fit" + }, + "large": { + "w": 1024, + "h": 768, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "small": { + "w": 340, + "h": 255, + "resize": "fit" + } + } + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 3291, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "LEDカツカツ選手権", + "indices": [ + 17, + 28 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "thsc782_407", + "name": "[90]青葉台 芦 (第二粟屋) 屋", + "id": 82900665, + "id_str": "82900665", + "indices": [ + 3, + 15 + ] + } + ], + "media": [ + { + "id": 439430848194936800, + "id_str": "439430848194936832", + "indices": [ + 58, + 80 + ], + "media_url": "http://pbs.twimg.com/media/BhksBzoCAAAJeDS.jpg", + "media_url_https": "https://pbs.twimg.com/media/BhksBzoCAAAJeDS.jpg", + "url": "http://t.co/vmrreDMziI", + "display_url": "pic.twitter.com/vmrreDMziI", + "expanded_url": "http://twitter.com/thsc782_407/status/439430848190742528/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 450, + "resize": "fit" + }, + "large": { + "w": 1024, + "h": 768, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "small": { + "w": 340, + "h": 255, + "resize": "fit" + } + }, + "source_status_id": 439430848190742500, + "source_status_id_str": "439430848190742528" + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:13 +0000 2014", + "id": 505874918039228400, + "id_str": "505874918039228416", + "text": "【金一地区太鼓台】川関と小山の見分けがつかない", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2530194984, + "id_str": "2530194984", + "name": "川之江中高生あるある", + "screen_name": "kw_aru", + "location": "DMにてネタ提供待ってますよ", + "description": "川之江中高生の川之江中高生による川之江中高生のためのあるあるアカウントです。タイムリーなネタはお気に入りにあります。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 113, + "friends_count": 157, + "listed_count": 0, + "created_at": "Wed May 28 15:01:43 +0000 2014", + "favourites_count": 30, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 4472, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/471668359314948097/XbIyXiZK_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/471668359314948097/XbIyXiZK_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2530194984/1401289473", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:13 +0000 2014", + "id": 505874915338104800, + "id_str": "505874915338104833", + "text": "おはようございますん♪ SSDSのDVDが朝一で届いた〜(≧∇≦)", + "source": "TweetList!", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 428179337, + "id_str": "428179337", + "name": "サラ", + "screen_name": "sala_mgn", + "location": "東京都", + "description": "bot遊びと実況が主目的の趣味アカウント。成人済♀。時々TLお騒がせします。リフォ率低いですがF/Bご自由に。スパムはブロック![HOT]K[アニメ]タイバニ/K/薄桜鬼/トライガン/進撃[小説]冲方丁/森博嗣[漫画]内藤泰弘/高河ゆん[他]声優/演劇 ※@sano_bot1二代目管理人", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 104, + "friends_count": 421, + "listed_count": 2, + "created_at": "Sun Dec 04 12:51:18 +0000 2011", + "favourites_count": 3257, + "utc_offset": -36000, + "time_zone": "Hawaii", + "geo_enabled": false, + "verified": false, + "statuses_count": 25303, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "1A1B1F", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/601682567/put73jtg48ytjylq00if.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/601682567/put73jtg48ytjylq00if.jpeg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/3350624721/755920942e4f512e6ba489df7eb1147e_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3350624721/755920942e4f512e6ba489df7eb1147e_normal.jpeg", + "profile_link_color": "2FC2EF", + "profile_sidebar_border_color": "181A1E", + "profile_sidebar_fill_color": "252429", + "profile_text_color": "666666", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:13 +0000 2014", + "id": 505874914897690600, + "id_str": "505874914897690624", + "text": "@ran_kirazuki そのようなお言葉を頂けるとは……!この雨太郎、誠心誠意を持って姉御の足の指の第一関節を崇め奉りとうございます", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": 505874276692406300, + "in_reply_to_status_id_str": "505874276692406272", + "in_reply_to_user_id": 531544559, + "in_reply_to_user_id_str": "531544559", + "in_reply_to_screen_name": "ran_kirazuki", + "user": { + "id": 2364828518, + "id_str": "2364828518", + "name": "雨", + "screen_name": "tear_dice", + "location": "変態/日常/創作/室町/たまに版権", + "description": "アイコンは兄さんから!", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 28, + "friends_count": 28, + "listed_count": 0, + "created_at": "Fri Feb 28 00:28:40 +0000 2014", + "favourites_count": 109, + "utc_offset": 32400, + "time_zone": "Seoul", + "geo_enabled": false, + "verified": false, + "statuses_count": 193, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "000000", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/504434510675443713/lvW7ad5b.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/504434510675443713/lvW7ad5b.jpeg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505170142284640256/rnW4XeEJ_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505170142284640256/rnW4XeEJ_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2364828518/1409087198", + "profile_link_color": "0D31BF", + "profile_sidebar_border_color": "000000", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "ran_kirazuki", + "name": "蘭ぴよの日常", + "id": 531544559, + "id_str": "531544559", + "indices": [ + 0, + 13 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:13 +0000 2014", + "id": 505874914591514600, + "id_str": "505874914591514626", + "text": "RT @AFmbsk: @samao21718 \n呼び方☞まおちゃん\n呼ばれ方☞あーちゃん\n第一印象☞平野から?!\n今の印象☞おとなっぽい!!\nLINE交換☞もってるん\\( ˆoˆ )/\nトプ画について☞楽しそうでいーな😳\n家族にするなら☞おねぇちゃん\n最後に一言☞全然会えない…", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2179759316, + "id_str": "2179759316", + "name": "まお", + "screen_name": "samao21718", + "location": "埼玉 UK留学してました✈", + "description": "゚.*97line おさらに貢いでる系女子*.゜ DISH// ✯ 佐野悠斗 ✯ 読モ ✯ WEGO ✯ 嵐 I met @OTYOfficial in the London ;)", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 111, + "friends_count": 121, + "listed_count": 0, + "created_at": "Thu Nov 07 09:47:41 +0000 2013", + "favourites_count": 321, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 1777, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501535615351926784/c5AAh6Sz_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501535615351926784/c5AAh6Sz_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2179759316/1407640217", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 14:59:49 +0000 2014", + "id": 505731620456771600, + "id_str": "505731620456771584", + "text": "@samao21718 \n呼び方☞まおちゃん\n呼ばれ方☞あーちゃん\n第一印象☞平野から?!\n今の印象☞おとなっぽい!!\nLINE交換☞もってるん\\( ˆoˆ )/\nトプ画について☞楽しそうでいーな😳\n家族にするなら☞おねぇちゃん\n最後に一言☞全然会えないねー今度会えたらいいな!", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": 2179759316, + "in_reply_to_user_id_str": "2179759316", + "in_reply_to_screen_name": "samao21718", + "user": { + "id": 1680668713, + "id_str": "1680668713", + "name": "★Shiiiii!☆", + "screen_name": "AFmbsk", + "location": "埼玉", + "description": "2310*basketball#41*UVERworld*Pooh☪Bell +.。*弱さを知って強くなれ*゚", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 429, + "friends_count": 434, + "listed_count": 0, + "created_at": "Sun Aug 18 12:45:00 +0000 2013", + "favourites_count": 2488, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 6352, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/504643170886365185/JN_dlwUd_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/504643170886365185/JN_dlwUd_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1680668713/1408805886", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 1, + "favorite_count": 1, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "samao21718", + "name": "まお", + "id": 2179759316, + "id_str": "2179759316", + "indices": [ + 0, + 11 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 1, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "AFmbsk", + "name": "★Shiiiii!☆", + "id": 1680668713, + "id_str": "1680668713", + "indices": [ + 3, + 10 + ] + }, + { + "screen_name": "samao21718", + "name": "まお", + "id": 2179759316, + "id_str": "2179759316", + "indices": [ + 12, + 23 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:10 +0000 2014", + "id": 505874905712189440, + "id_str": "505874905712189440", + "text": "一、常に身一つ簡素にして、美食を好んではならない", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1330420010, + "id_str": "1330420010", + "name": "獨行道bot", + "screen_name": "dokkodo_bot", + "location": "", + "description": "宮本武蔵の自誓書、「獨行道」に記された二十一箇条をランダムにつぶやくbotです。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 4, + "friends_count": 5, + "listed_count": 1, + "created_at": "Sat Apr 06 01:19:55 +0000 2013", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 9639, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/3482551671/d9e749f7658b523bdd50b7584ed4ba6a_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3482551671/d9e749f7658b523bdd50b7584ed4ba6a_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1330420010/1365212335", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:10 +0000 2014", + "id": 505874903094939650, + "id_str": "505874903094939648", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "モテモテ大作戦★男子編", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2714526565, + "id_str": "2714526565", + "name": "モテモテ大作戦★男子編", + "screen_name": "mote_danshi1", + "location": "", + "description": "やっぱりモテモテ男子になりたい!自分を磨くヒントをみつけたい!応援してくれる人は RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 664, + "friends_count": 1835, + "listed_count": 0, + "created_at": "Thu Aug 07 12:59:59 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 597, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497368689386086400/7hqdKMzG_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497368689386086400/7hqdKMzG_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2714526565/1407416898", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:10 +0000 2014", + "id": 505874902390276100, + "id_str": "505874902390276096", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "心に響くアツい名言集", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2699261263, + "id_str": "2699261263", + "name": "心に響くアツい名言集", + "screen_name": "kokoro_meigen11", + "location": "", + "description": "人生の格言は、人の心や人生を瞬時にに動かしてしまうことがある。\r\nそんな言葉の重みを味わおう。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 183, + "friends_count": 1126, + "listed_count": 0, + "created_at": "Fri Aug 01 22:00:00 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 749, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495328654126112768/1rKnNuWK_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495328654126112768/1rKnNuWK_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2699261263/1406930543", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:10 +0000 2014", + "id": 505874902247677950, + "id_str": "505874902247677954", + "text": "RT @POTENZA_SUPERGT: ありがとうございます!“@8CBR8: @POTENZA_SUPERGT 13時半ごろ一雨きそうですが、無事全車決勝レース完走出来ること祈ってます! http://t.co/FzTyFnt9xH”", + "source": "jigtwi", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1021030416, + "id_str": "1021030416", + "name": "narur", + "screen_name": "narur2", + "location": "晴れの国なのに何故か開幕戦では雨や雪や冰や霰が降る✨", + "description": "F1.GP2.Superformula.SuperGT.F3...\nスーパーGTが大好き♡車が好き!新幹線も好き!飛行機も好き!こっそり別アカです(๑´ㅂ`๑)♡*.+゜", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 257, + "friends_count": 237, + "listed_count": 2, + "created_at": "Wed Dec 19 01:14:41 +0000 2012", + "favourites_count": 547, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 55417, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/462180217574789121/1Jf6m_2L.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/462180217574789121/1Jf6m_2L.jpeg", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/444312241395863552/FKl40ebQ_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/444312241395863552/FKl40ebQ_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:05:11 +0000 2014", + "id": 505868866686169100, + "id_str": "505868866686169089", + "text": "ありがとうございます!“@8CBR8: @POTENZA_SUPERGT 13時半ごろ一雨きそうですが、無事全車決勝レース完走出来ること祈ってます! http://t.co/FzTyFnt9xH”", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": 505868690588303360, + "in_reply_to_status_id_str": "505868690588303360", + "in_reply_to_user_id": 333344408, + "in_reply_to_user_id_str": "333344408", + "in_reply_to_screen_name": "8CBR8", + "user": { + "id": 359324738, + "id_str": "359324738", + "name": "POTENZA_SUPERGT", + "screen_name": "POTENZA_SUPERGT", + "location": "", + "description": "ブリヂストンのスポーツタイヤ「POTENZA」のアカウントです。レースやタイヤの事などをつぶやきます。今シーズンも「チャンピオンタイヤの称号は譲らない」をキャッチコピーに、タイヤ供給チームを全力でサポートしていきますので、応援よろしくお願いします!なお、返信ができない場合もありますので、ご了承よろしくお願い致します。", + "url": "http://t.co/LruVPk5x4K", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/LruVPk5x4K", + "expanded_url": "http://www.bridgestone.co.jp/sc/potenza/", + "display_url": "bridgestone.co.jp/sc/potenza/", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 9612, + "friends_count": 308, + "listed_count": 373, + "created_at": "Sun Aug 21 11:33:38 +0000 2011", + "favourites_count": 26, + "utc_offset": -36000, + "time_zone": "Hawaii", + "geo_enabled": true, + "verified": false, + "statuses_count": 10032, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "131516", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/1507885396/TW_image_normal.jpg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/1507885396/TW_image_normal.jpg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/359324738/1402546267", + "profile_link_color": "FF2424", + "profile_sidebar_border_color": "EEEEEE", + "profile_sidebar_fill_color": "EFEFEF", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 7, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "8CBR8", + "name": "CBR Rider #17 KEIHIN", + "id": 333344408, + "id_str": "333344408", + "indices": [ + 12, + 18 + ] + }, + { + "screen_name": "POTENZA_SUPERGT", + "name": "POTENZA_SUPERGT", + "id": 359324738, + "id_str": "359324738", + "indices": [ + 20, + 36 + ] + } + ], + "media": [ + { + "id": 505868690252779500, + "id_str": "505868690252779521", + "indices": [ + 75, + 97 + ], + "media_url": "http://pbs.twimg.com/media/BwU05MGCUAEY6Wu.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwU05MGCUAEY6Wu.jpg", + "url": "http://t.co/FzTyFnt9xH", + "display_url": "pic.twitter.com/FzTyFnt9xH", + "expanded_url": "http://twitter.com/8CBR8/status/505868690588303360/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 399, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 1024, + "h": 682, + "resize": "fit" + }, + "small": { + "w": 340, + "h": 226, + "resize": "fit" + } + }, + "source_status_id": 505868690588303360, + "source_status_id_str": "505868690588303360" + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 7, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "POTENZA_SUPERGT", + "name": "POTENZA_SUPERGT", + "id": 359324738, + "id_str": "359324738", + "indices": [ + 3, + 19 + ] + }, + { + "screen_name": "8CBR8", + "name": "CBR Rider #17 KEIHIN", + "id": 333344408, + "id_str": "333344408", + "indices": [ + 33, + 39 + ] + }, + { + "screen_name": "POTENZA_SUPERGT", + "name": "POTENZA_SUPERGT", + "id": 359324738, + "id_str": "359324738", + "indices": [ + 41, + 57 + ] + } + ], + "media": [ + { + "id": 505868690252779500, + "id_str": "505868690252779521", + "indices": [ + 96, + 118 + ], + "media_url": "http://pbs.twimg.com/media/BwU05MGCUAEY6Wu.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwU05MGCUAEY6Wu.jpg", + "url": "http://t.co/FzTyFnt9xH", + "display_url": "pic.twitter.com/FzTyFnt9xH", + "expanded_url": "http://twitter.com/8CBR8/status/505868690588303360/photo/1", + "type": "photo", + "sizes": { + "medium": { + "w": 600, + "h": 399, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 1024, + "h": 682, + "resize": "fit" + }, + "small": { + "w": 340, + "h": 226, + "resize": "fit" + } + }, + "source_status_id": 505868690588303360, + "source_status_id_str": "505868690588303360" + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874901689851900, + "id_str": "505874901689851904", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "ここだけの本音★男子編", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2762136439, + "id_str": "2762136439", + "name": "ここだけの本音★男子編", + "screen_name": "danshi_honne1", + "location": "", + "description": "思ってるけど言えない!でもホントは言いたいこと、実はいっぱいあるんです! \r\nそんな男子の本音を、つぶやきます。 \r\nその気持わかるって人は RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 101, + "friends_count": 985, + "listed_count": 0, + "created_at": "Sun Aug 24 11:11:30 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 209, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503500282840354816/CEv8UMay_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503500282840354816/CEv8UMay_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2762136439/1408878822", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874900939046900, + "id_str": "505874900939046912", + "text": "RT @UARROW_Y: ようかい体操第一を踊る国見英 http://t.co/SXoYWH98as", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2454426158, + "id_str": "2454426158", + "name": "ぴかりん", + "screen_name": "gncnToktTtksg", + "location": "", + "description": "銀魂/黒バス/進撃/ハイキュー/BLEACH/うたプリ/鈴木達央さん/神谷浩史さん 気軽にフォローしてください(^∇^)✨", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 1274, + "friends_count": 1320, + "listed_count": 17, + "created_at": "Sun Apr 20 07:48:53 +0000 2014", + "favourites_count": 2314, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 5868, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/457788684146716672/KCOy0S75_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/457788684146716672/KCOy0S75_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2454426158/1409371302", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:45 +0000 2014", + "id": 505871779949051900, + "id_str": "505871779949051904", + "text": "ようかい体操第一を踊る国見英 http://t.co/SXoYWH98as", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1261662588, + "id_str": "1261662588", + "name": "ゆう矢", + "screen_name": "UARROW_Y", + "location": "つくり出そう国影の波 広げよう国影の輪", + "description": "HQ!! 成人済腐女子。日常ツイート多いです。赤葦京治夢豚クソツイ含みます注意。フォローをお考えの際はプロフご一読お願い致します。FRBお気軽に", + "url": "http://t.co/LFX2XOzb0l", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/LFX2XOzb0l", + "expanded_url": "http://twpf.jp/UARROW_Y", + "display_url": "twpf.jp/UARROW_Y", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 265, + "friends_count": 124, + "listed_count": 12, + "created_at": "Tue Mar 12 10:42:17 +0000 2013", + "favourites_count": 6762, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 55946, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/502095104618663937/IzuPYx3E_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/502095104618663937/IzuPYx3E_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1261662588/1408618604", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 29, + "favorite_count": 54, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/SXoYWH98as", + "expanded_url": "http://twitter.com/UARROW_Y/status/505871779949051904/photo/1", + "display_url": "pic.twitter.com/SXoYWH98as", + "indices": [ + 15, + 37 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 29, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/SXoYWH98as", + "expanded_url": "http://twitter.com/UARROW_Y/status/505871779949051904/photo/1", + "display_url": "pic.twitter.com/SXoYWH98as", + "indices": [ + 29, + 51 + ] + } + ], + "user_mentions": [ + { + "screen_name": "UARROW_Y", + "name": "ゆう矢", + "id": 1261662588, + "id_str": "1261662588", + "indices": [ + 3, + 12 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874900561580000, + "id_str": "505874900561580032", + "text": "今日は一高と三桜(・θ・)\n光梨ちゃんに会えないかな〜", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1366375976, + "id_str": "1366375976", + "name": "ゆいの", + "screen_name": "yuino1006", + "location": "", + "description": "さんおう 男バスマネ2ねん(^ω^)", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 270, + "friends_count": 260, + "listed_count": 0, + "created_at": "Sat Apr 20 07:02:08 +0000 2013", + "favourites_count": 1384, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 5202, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505354401448349696/nxVFEQQ4_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505354401448349696/nxVFEQQ4_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1366375976/1399989379", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874899324248060, + "id_str": "505874899324248064", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "共感★絶対あるあるww", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2704420069, + "id_str": "2704420069", + "name": "共感★絶対あるあるww", + "screen_name": "kyoukan_aru", + "location": "", + "description": "みんなにもわかってもらえる、あるあるを見つけたい。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 857, + "friends_count": 1873, + "listed_count": 0, + "created_at": "Sun Aug 03 15:50:40 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 682, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495960812670836737/1LqkoyvU_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495960812670836737/1LqkoyvU_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2704420069/1407081298", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874898493796350, + "id_str": "505874898493796352", + "text": "RT @assam_house: 泉田新潟県知事は、東電の申請書提出を容認させられただけで、再稼働に必要な「同意」はまだ与えていません。今まで柏崎刈羽の再稼働を抑え続けてきた知事に、もう一踏ん張りをお願いする意見を送って下さい。全国の皆様、お願いします!\nhttp://t.co…", + "source": "jigtwi for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 960765968, + "id_str": "960765968", + "name": "さち", + "screen_name": "sachitaka_dears", + "location": "宮城県", + "description": "動物関連のアカウントです。サブアカウント@sachi_dears (さち ❷) もあります。『心あるものは皆、愛し愛されるために生まれてきた。そして愛情を感じながら生を全うするべきなんだ』", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 3212, + "friends_count": 3528, + "listed_count": 91, + "created_at": "Tue Nov 20 16:30:53 +0000 2012", + "favourites_count": 3180, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 146935, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/3659653229/5b698df67f5d105400e9077f5ea50e91_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3659653229/5b698df67f5d105400e9077f5ea50e91_normal.png", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Tue Aug 19 11:00:53 +0000 2014", + "id": 501685228427964400, + "id_str": "501685228427964417", + "text": "泉田新潟県知事は、東電の申請書提出を容認させられただけで、再稼働に必要な「同意」はまだ与えていません。今まで柏崎刈羽の再稼働を抑え続けてきた知事に、もう一踏ん張りをお願いする意見を送って下さい。全国の皆様、お願いします!\nhttp://t.co/9oH5cgpy1q", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1104771276, + "id_str": "1104771276", + "name": "アッサム山中(殺処分ゼロに一票)", + "screen_name": "assam_house", + "location": "新潟県柏崎市", + "description": "アッサム山中の趣味用アカ。当分の間、選挙啓発用としても使っていきます。このアカウントがアッサム山中本人のものである事は @assam_yamanaka のプロフでご確認下さい。\r\n公選法に係る表示\r\n庶民新党 #脱原発 http://t.co/96UqoCo0oU\r\nonestep.revival@gmail.com", + "url": "http://t.co/AEOCATaNZc", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/AEOCATaNZc", + "expanded_url": "http://www.assam-house.net/", + "display_url": "assam-house.net", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "http://t.co/96UqoCo0oU", + "expanded_url": "http://blog.assam-house.net/datsu-genpatsu/index.html", + "display_url": "blog.assam-house.net/datsu-genpatsu…", + "indices": [ + 110, + 132 + ] + } + ] + } + }, + "protected": false, + "followers_count": 2977, + "friends_count": 3127, + "listed_count": 64, + "created_at": "Sat Jan 19 22:10:13 +0000 2013", + "favourites_count": 343, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 18021, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000067217575/e0a85b440429ff50430a41200327dcb8_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000067217575/e0a85b440429ff50430a41200327dcb8_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1104771276/1408948288", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 2, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/9oH5cgpy1q", + "expanded_url": "http://www.pref.niigata.lg.jp/kouhou/info.html", + "display_url": "pref.niigata.lg.jp/kouhou/info.ht…", + "indices": [ + 111, + 133 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 2, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/9oH5cgpy1q", + "expanded_url": "http://www.pref.niigata.lg.jp/kouhou/info.html", + "display_url": "pref.niigata.lg.jp/kouhou/info.ht…", + "indices": [ + 139, + 140 + ] + } + ], + "user_mentions": [ + { + "screen_name": "assam_house", + "name": "アッサム山中(殺処分ゼロに一票)", + "id": 1104771276, + "id_str": "1104771276", + "indices": [ + 3, + 15 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:09 +0000 2014", + "id": 505874898468630500, + "id_str": "505874898468630528", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "おしゃれ★ペアルック", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2708607692, + "id_str": "2708607692", + "name": "おしゃれ★ペアルック", + "screen_name": "osyare_pea", + "location": "", + "description": "ラブラブ度がアップする、素敵なペアルックを見つけて紹介します♪ 気に入ったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 129, + "friends_count": 1934, + "listed_count": 0, + "created_at": "Tue Aug 05 07:09:31 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 641, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496554257676382208/Zgg0bmNu_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496554257676382208/Zgg0bmNu_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2708607692/1407222776", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:08 +0000 2014", + "id": 505874897633951740, + "id_str": "505874897633951745", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "LOVE ♥ ラブライブ", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745389137, + "id_str": "2745389137", + "name": "LOVE ♥ ラブライブ", + "screen_name": "love_live55", + "location": "", + "description": "とにかく「ラブライブが好きで~す♥」 \r\nラブライブファンには、たまらない内容ばかり集めています♪ \r\n気に入ったら RT & 相互フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 251, + "friends_count": 969, + "listed_count": 0, + "created_at": "Tue Aug 19 15:45:40 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 348, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501757482448850944/x2uPpqRx_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501757482448850944/x2uPpqRx_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745389137/1408463342", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:08 +0000 2014", + "id": 505874896795086850, + "id_str": "505874896795086848", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "恋する♡ドレスシリーズ", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2726346560, + "id_str": "2726346560", + "name": "恋する♡ドレスシリーズ", + "screen_name": "koisurudoress", + "location": "", + "description": "どれもこれも、見ているだけで欲しくなっちゃう♪ \r\n特別な日に着る素敵なドレスを見つけたいです。 \r\n着てみたいと思ったら RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 314, + "friends_count": 1900, + "listed_count": 0, + "created_at": "Tue Aug 12 14:10:35 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 471, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499199619465621504/fg7sVusT_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499199619465621504/fg7sVusT_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2726346560/1407853688", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:08 +0000 2014", + "id": 505874895964626940, + "id_str": "505874895964626944", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "胸キュン♥動物図鑑", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2759192574, + "id_str": "2759192574", + "name": "胸キュン♥動物図鑑", + "screen_name": "doubutuzukan", + "location": "", + "description": "ふとした表情に思わずキュンとしてしまう♪ \r\nそんな愛しの動物たちの写真を見つけます。 \r\n気に入ったら RT & フォローを、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 80, + "friends_count": 959, + "listed_count": 1, + "created_at": "Sat Aug 23 15:47:36 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 219, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503211559552688128/Ej_bixna_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503211559552688128/Ej_bixna_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2759192574/1408809101", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:08 +0000 2014", + "id": 505874895079608300, + "id_str": "505874895079608320", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "ディズニー★パラダイス", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2719228561, + "id_str": "2719228561", + "name": "ディズニー★パラダイス", + "screen_name": "disney_para", + "location": "", + "description": "ディズニーのかわいい画像、ニュース情報、あるあるなどをお届けします♪\r\nディズニーファンは RT & フォローもお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 331, + "friends_count": 1867, + "listed_count": 0, + "created_at": "Sat Aug 09 12:01:32 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 540, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498076922488696832/Ti2AEuOT_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498076922488696832/Ti2AEuOT_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2719228561/1407585841", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:08 +0000 2014", + "id": 505874894135898100, + "id_str": "505874894135898112", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "生々しい風刺画", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2714772727, + "id_str": "2714772727", + "name": "生々しい風刺画", + "screen_name": "nama_fuushi", + "location": "", + "description": "深い意味が込められた「生々しい風刺画」を見つけます。\r\n考えさせられたら RT & 相互フォローでみなさん、お願いします", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 298, + "friends_count": 1902, + "listed_count": 1, + "created_at": "Thu Aug 07 15:04:45 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 595, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497398363352875011/tS-5FPJB_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497398363352875011/tS-5FPJB_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2714772727/1407424091", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874893347377150, + "id_str": "505874893347377152", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "嵐★大好きっ娘", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2721682579, + "id_str": "2721682579", + "name": "嵐★大好きっ娘", + "screen_name": "arashi_suki1", + "location": "", + "description": "なんだかんだ言って、やっぱり嵐が好きなんです♪\r\nいろいろ集めたいので、嵐好きな人に見てほしいです。\r\n気に入ったら RT & 相互フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 794, + "friends_count": 1913, + "listed_count": 2, + "created_at": "Sun Aug 10 13:43:56 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 504, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498465364733198336/RO6wupdc_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498465364733198336/RO6wupdc_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2721682579/1407678436", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874893154426900, + "id_str": "505874893154426881", + "text": "RT @Takashi_Shiina: テレビで「成人男性のカロリー摂取量は1900kcal」とか言ってて、それはいままさに私がダイエットのために必死でキープしようとしている量で、「それが普通なら人はいつ天一やココイチに行って大盛りを食えばいいんだ!」と思った。", + "source": "twicca", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 353516742, + "id_str": "353516742", + "name": "おしんこー@土曜西え41a", + "screen_name": "oshin_koko", + "location": "こたつ", + "description": "ROMって楽しんでいる部分もあり無言フォロー多めですすみません…。ツイート数多め・あらぶり多めなのでフォロー非推奨です。最近は早兵・兵部受け中心ですがBLNLなんでも好きです。地雷少ないため雑多に呟きます。腐・R18・ネタバレ有るのでご注意。他好きなジャンルはプロフ参照願います。 主催→@chounou_antholo", + "url": "http://t.co/mM1dG54NiO", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/mM1dG54NiO", + "expanded_url": "http://twpf.jp/oshin_koko", + "display_url": "twpf.jp/oshin_koko", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 479, + "friends_count": 510, + "listed_count": 43, + "created_at": "Fri Aug 12 05:53:13 +0000 2011", + "favourites_count": 3059, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 104086, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "000000", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/799871497/01583a031f83a45eba881c8acde729ee.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/799871497/01583a031f83a45eba881c8acde729ee.jpeg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/484347196523835393/iHaYxm-2_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/484347196523835393/iHaYxm-2_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/353516742/1369039651", + "profile_link_color": "FF96B0", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "95E8EC", + "profile_text_color": "3C3940", + "profile_use_background_image": false, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 09:58:30 +0000 2014", + "id": 505655792733650940, + "id_str": "505655792733650944", + "text": "テレビで「成人男性のカロリー摂取量は1900kcal」とか言ってて、それはいままさに私がダイエットのために必死でキープしようとしている量で、「それが普通なら人はいつ天一やココイチに行って大盛りを食えばいいんだ!」と思った。", + "source": "Janetter", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 126573583, + "id_str": "126573583", + "name": "椎名高志", + "screen_name": "Takashi_Shiina", + "location": "BABEL(超能力支援研究局)", + "description": "漫画家。週刊少年サンデーで『絶対可憐チルドレン』連載中。TVアニメ『THE UNLIMITED 兵部京介』公式サイト>http://t.co/jVqBoBEc", + "url": "http://t.co/K3Oi83wM3w", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/K3Oi83wM3w", + "expanded_url": "http://cnanews.asablo.jp/blog/", + "display_url": "cnanews.asablo.jp/blog/", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "http://t.co/jVqBoBEc", + "expanded_url": "http://unlimited-zc.jp/index.html", + "display_url": "unlimited-zc.jp/index.html", + "indices": [ + 59, + 79 + ] + } + ] + } + }, + "protected": false, + "followers_count": 110756, + "friends_count": 61, + "listed_count": 8159, + "created_at": "Fri Mar 26 08:54:51 +0000 2010", + "favourites_count": 25, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 27364, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "EDECE9", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme3/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme3/bg.gif", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/504597210772688896/Uvt4jgf5_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/504597210772688896/Uvt4jgf5_normal.png", + "profile_link_color": "088253", + "profile_sidebar_border_color": "D3D2CF", + "profile_sidebar_fill_color": "E3E2DE", + "profile_text_color": "634047", + "profile_use_background_image": false, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 221, + "favorite_count": 109, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 221, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "Takashi_Shiina", + "name": "椎名高志", + "id": 126573583, + "id_str": "126573583", + "indices": [ + 3, + 18 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874892567244800, + "id_str": "505874892567244801", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "下ネタ&笑変態雑学", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2762581922, + "id_str": "2762581922", + "name": "下ネタ&笑変態雑学", + "screen_name": "shimo_hentai", + "location": "", + "description": "普通の人には思いつかない、ちょっと変態チックな 笑える下ネタ雑学をお届けします。 \r\nおもしろかったら RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 37, + "friends_count": 990, + "listed_count": 0, + "created_at": "Sun Aug 24 14:13:20 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 212, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503545991950114816/K9yQbh1Q_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503545991950114816/K9yQbh1Q_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2762581922/1408889893", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874891778703360, + "id_str": "505874891778703360", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "超簡単★初心者英語", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744544025, + "id_str": "2744544025", + "name": "超簡単★初心者英語", + "screen_name": "kantaneigo1", + "location": "", + "description": "すぐに使えるフレーズや簡単な会話を紹介します。 \r\n少しづつ練習して、どんどん使ってみよう☆ \r\n使ってみたいと思ったら RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 147, + "friends_count": 970, + "listed_count": 1, + "created_at": "Tue Aug 19 10:11:48 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 345, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501676136321929216/4MLpyHe3_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501676136321929216/4MLpyHe3_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744544025/1408443928", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874891032121340, + "id_str": "505874891032121344", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "現代のハンドサイン", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2762816814, + "id_str": "2762816814", + "name": "現代のハンドサイン", + "screen_name": "ima_handsign", + "location": "", + "description": "イザという時や、困った時に、必ず役に立つハンドサインのオンパレードです♪ \r\n使ってみたくなったら RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 95, + "friends_count": 996, + "listed_count": 0, + "created_at": "Sun Aug 24 15:33:58 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 210, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503566188253687809/7wtdp1AC_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503566188253687809/7wtdp1AC_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2762816814/1408894540", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874890247782400, + "id_str": "505874890247782401", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "今日からアナタもイイ女♪", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2714167411, + "id_str": "2714167411", + "name": "今日からアナタもイイ女♪", + "screen_name": "anata_iionna", + "location": "", + "description": "みんなが知りたい イイ女の秘密を見つけます♪ いいな~と思ってくれた人は RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 390, + "friends_count": 1425, + "listed_count": 0, + "created_at": "Thu Aug 07 09:27:59 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 609, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497314455655436288/dz7P3-fy_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497314455655436288/dz7P3-fy_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2714167411/1407404214", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874890218434560, + "id_str": "505874890218434560", + "text": "@kohecyan3 \n名前:上野滉平\n呼び方:うえの\n呼ばれ方:ずるかわ\n第一印象:過剰な俺イケメンですアピール\n今の印象:バーバリーの時計\n好きなところ:あの自信さ、笑いが絶えない\n一言:大学受かったの?応援してる〜(*^^*)!\n\n#RTした人にやる\nちょっとやってみる笑", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": 2591363659, + "in_reply_to_user_id_str": "2591363659", + "in_reply_to_screen_name": "kohecyan3", + "user": { + "id": 2613282517, + "id_str": "2613282517", + "name": "K", + "screen_name": "kawazurukenna", + "location": "", + "description": "# I surprise even my self", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 113, + "friends_count": 185, + "listed_count": 0, + "created_at": "Wed Jul 09 09:39:13 +0000 2014", + "favourites_count": 157, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 242, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/502436858135973888/PcUU0lov_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/502436858135973888/PcUU0lov_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "RTした人にやる", + "indices": [ + 119, + 128 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "kohecyan3", + "name": "上野滉平", + "id": 2591363659, + "id_str": "2591363659", + "indices": [ + 0, + 10 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:07 +0000 2014", + "id": 505874889392156700, + "id_str": "505874889392156672", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "IQ★力だめし", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2709308887, + "id_str": "2709308887", + "name": "IQ★力だめし", + "screen_name": "iq_tameshi", + "location": "", + "description": "解けると楽しい気分になれる問題を見つけて紹介します♪面白かったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 443, + "friends_count": 1851, + "listed_count": 1, + "created_at": "Tue Aug 05 13:14:30 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 664, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496646485266558977/W_W--qV__normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496646485266558977/W_W--qV__normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2709308887/1407244754", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874888817532900, + "id_str": "505874888817532928", + "text": "第一三軍から2個師団が北へ移動中らしい     この調子では満州に陸軍兵力があふれかえる", + "source": "如月克己", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1171299612, + "id_str": "1171299612", + "name": "如月 克己", + "screen_name": "kisaragi_katumi", + "location": "満州", + "description": "GパングのA型K月克己中尉の非公式botです。 主に七巻と八巻が中心の台詞をつぶやきます。 4/18.台詞追加しました/現在試運転中/現在軽い挨拶だけTL反応。/追加したい台詞や何おかしい所がありましたらDMやリプライで/フォロー返しは手動です/", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 65, + "friends_count": 63, + "listed_count": 0, + "created_at": "Tue Feb 12 08:21:38 +0000 2013", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 27219, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/3242847112/0ce536444c94cbec607229022d43a27a_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3242847112/0ce536444c94cbec607229022d43a27a_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874888616181760, + "id_str": "505874888616181760", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "徳田有希★応援隊", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2766021865, + "id_str": "2766021865", + "name": "徳田有希★応援隊", + "screen_name": "tokuda_ouen1", + "location": "", + "description": "女子中高生に大人気ww いやされるイラストを紹介します。 \r\nみんなで RTして応援しよう~♪ \r\n「非公式アカウントです」", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 123, + "friends_count": 978, + "listed_count": 0, + "created_at": "Mon Aug 25 10:48:41 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 210, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503857235802333184/YS0sDN6q_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503857235802333184/YS0sDN6q_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2766021865/1408963998", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874887802511360, + "id_str": "505874887802511361", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "腐女子の☆部屋", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744683982, + "id_str": "2744683982", + "name": "腐女子の☆部屋", + "screen_name": "fujyoshinoheya", + "location": "", + "description": "腐女子にしかわからないネタや、あるあるを見つけていきます。 \r\n他には、BL~萌えキュン系まで、腐のための画像を集めています♪ \r\n同じ境遇の人には、わかってもらえると思うので、気軽に RT & フォローお願いします☆", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 241, + "friends_count": 990, + "listed_count": 0, + "created_at": "Tue Aug 19 11:47:21 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 345, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501697365590306817/GLP_QH_b_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501697365590306817/GLP_QH_b_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744683982/1408448984", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874887009767400, + "id_str": "505874887009767424", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "萌え芸術★ラテアート", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2763178045, + "id_str": "2763178045", + "name": "萌え芸術★ラテアート", + "screen_name": "moe_rate", + "location": "", + "description": "ここまで来ると、もはや芸術!! 見てるだけで楽しい♪ \r\nそんなラテアートを、とことん探します。 \r\nスゴイと思ったら RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 187, + "friends_count": 998, + "listed_count": 0, + "created_at": "Sun Aug 24 16:53:16 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 210, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503586151764992000/RC80it20_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503586151764992000/RC80it20_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2763178045/1408899447", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874886225448960, + "id_str": "505874886225448960", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "全部★ジャニーズ図鑑", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2724158970, + "id_str": "2724158970", + "name": "全部★ジャニーズ図鑑", + "screen_name": "zenbu_johnnys", + "location": "", + "description": "ジャニーズのカッコイイ画像、おもしろエピソードなどを発信します。\r\n「非公式アカウントです」\r\nジャニーズ好きな人は、是非 RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 738, + "friends_count": 1838, + "listed_count": 0, + "created_at": "Mon Aug 11 15:50:08 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 556, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498859581057945600/ncMKwdvC_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498859581057945600/ncMKwdvC_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2724158970/1407772462", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874885810200600, + "id_str": "505874885810200576", + "text": "RT @naopisu_: 呼び方:\n呼ばれ方:\n第一印象:\n今の印象:\n好きなところ:\n家族にするなら:\n最後に一言:\n#RTした人にやる\n\nお腹痛くて寝れないからやるww\nだれでもどうぞ〜😏🙌", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2347898072, + "id_str": "2347898072", + "name": "にたにた", + "screen_name": "syo6660129", + "location": "", + "description": "", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 64, + "friends_count": 70, + "listed_count": 1, + "created_at": "Mon Feb 17 04:29:46 +0000 2014", + "favourites_count": 58, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 145, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/485603672118669314/73uh_xRS_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/485603672118669314/73uh_xRS_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2347898072/1396957619", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 14:19:31 +0000 2014", + "id": 505721480261300200, + "id_str": "505721480261300224", + "text": "呼び方:\n呼ばれ方:\n第一印象:\n今の印象:\n好きなところ:\n家族にするなら:\n最後に一言:\n#RTした人にやる\n\nお腹痛くて寝れないからやるww\nだれでもどうぞ〜😏🙌", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 856045488, + "id_str": "856045488", + "name": "なおぴす", + "screen_name": "naopisu_", + "location": "Fujino 65th ⇢ Sagaso 12A(LJK", + "description": "\ もうすぐ18歳 “Only One”になる /", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 267, + "friends_count": 259, + "listed_count": 2, + "created_at": "Mon Oct 01 08:36:23 +0000 2012", + "favourites_count": 218, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 1790, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496321592553525249/tuzX9ByR_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496321592553525249/tuzX9ByR_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/856045488/1407118111", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 23, + "favorite_count": 1, + "entities": { + "hashtags": [ + { + "text": "RTした人にやる", + "indices": [ + 47, + 56 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 23, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "RTした人にやる", + "indices": [ + 61, + 70 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "naopisu_", + "name": "なおぴす", + "id": 856045488, + "id_str": "856045488", + "indices": [ + 3, + 12 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:06 +0000 2014", + "id": 505874885474656260, + "id_str": "505874885474656256", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "爆笑★LINE あるある", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2709561589, + "id_str": "2709561589", + "name": "爆笑★LINE あるある", + "screen_name": "line_aru1", + "location": "", + "description": "思わず笑ってしまうLINEでのやりとりや、あるあるを見つけたいです♪面白かったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 496, + "friends_count": 1875, + "listed_count": 1, + "created_at": "Tue Aug 05 15:01:30 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 687, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496673793939492867/p1BN4YaW_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496673793939492867/p1BN4YaW_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2709561589/1407251270", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874884627410940, + "id_str": "505874884627410944", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "全力★ミサワ的w発言", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2734455415, + "id_str": "2734455415", + "name": "全力★ミサワ的w発言!!", + "screen_name": "misawahatugen", + "location": "", + "description": "ウザすぎて笑えるミサワ的名言や、おもしろミサワ画像を集めています。 \r\nミサワを知らない人でも、いきなりツボにハマっちゃう内容をお届けします。 \r\nウザいwと思ったら RT & 相互フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 144, + "friends_count": 1915, + "listed_count": 1, + "created_at": "Fri Aug 15 13:20:04 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 436, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/500271070834749444/HvengMe5_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/500271070834749444/HvengMe5_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2734455415/1408108944", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874883809521660, + "id_str": "505874883809521664", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "お宝ww有名人卒アル特集", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2708183557, + "id_str": "2708183557", + "name": "お宝ww有名人卒アル特集", + "screen_name": "otakara_sotuaru", + "location": "", + "description": "みんな昔は若かったんですね。今からは想像もつかない、あの有名人を見つけます。\r\n面白かったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 286, + "friends_count": 1938, + "listed_count": 0, + "created_at": "Tue Aug 05 03:26:54 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 650, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496499121276985344/hC8RoebP_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496499121276985344/hC8RoebP_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2708183557/1407318758", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874883322970100, + "id_str": "505874883322970112", + "text": "レッドクリフのキャラのこと女装ってくそわろたwww朝一で面白かった( ˘ω゜)笑", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1620730616, + "id_str": "1620730616", + "name": "ひーちゃん@橘芋健ぴ", + "screen_name": "2nd_8hkr", + "location": "北の大地.95年組 ☞ 9/28.10/2(5).12/28", + "description": "THE SECOND/劇団EXILE/EXILE/二代目JSB ☞KENCHI.AKIRA.青柳翔.小森隼.石井杏奈☜ Big Love ♡ Respect ..... ✍ MATSU Origin✧ .た ち ば な '' い も '' け ん い ち ろ う さ んTEAM NACS 安田.戸次 Liebe !", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 109, + "friends_count": 148, + "listed_count": 0, + "created_at": "Thu Jul 25 16:09:29 +0000 2013", + "favourites_count": 783, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 9541, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/458760951060123648/Cocoxi-2_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/458760951060123648/Cocoxi-2_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1620730616/1408681982", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874883067129860, + "id_str": "505874883067129857", + "text": "【状態良好】ペンタックス・デジタル一眼レフカメラ・K20D 入札数=38 現在価格=15000円 http://t.co/4WK1f6V2n6終了=2014年08月31日 20:47:53 #一眼レフ http://t.co/PcSaXzfHMW", + "source": "YahooAuction Degicame", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2278053589, + "id_str": "2278053589", + "name": "AuctionCamera", + "screen_name": "AuctionCamera", + "location": "", + "description": "Yahooオークションのデジカメカテゴリから商品を抽出するボットです。", + "url": "https://t.co/3sB1NDnd0m", + "entities": { + "url": { + "urls": [ + { + "url": "https://t.co/3sB1NDnd0m", + "expanded_url": "https://github.com/AKB428/YahooAuctionBot", + "display_url": "github.com/AKB428/YahooAu…", + "indices": [ + 0, + 23 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 5, + "friends_count": 24, + "listed_count": 0, + "created_at": "Sun Jan 05 20:10:56 +0000 2014", + "favourites_count": 1, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 199546, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/419927606146789376/vko-kd6Q_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/419927606146789376/vko-kd6Q_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "一眼レフ", + "indices": [ + 95, + 100 + ] + } + ], + "symbols": [], + "urls": [ + { + "url": "http://t.co/4WK1f6V2n6", + "expanded_url": "http://atq.ck.valuecommerce.com/servlet/atq/referral?sid=2219441&pid=877510753&vcptn=auct/p/RJH492.PLqoLQQx1Jy8U9LE-&vc_url=http://page8.auctions.yahoo.co.jp/jp/auction/h192024356", + "display_url": "atq.ck.valuecommerce.com/servlet/atq/re…", + "indices": [ + 49, + 71 + ] + } + ], + "user_mentions": [], + "media": [ + { + "id": 505874882828046340, + "id_str": "505874882828046336", + "indices": [ + 101, + 123 + ], + "media_url": "http://pbs.twimg.com/media/BwU6hpPCEAAxnpq.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwU6hpPCEAAxnpq.jpg", + "url": "http://t.co/PcSaXzfHMW", + "display_url": "pic.twitter.com/PcSaXzfHMW", + "expanded_url": "http://twitter.com/AuctionCamera/status/505874883067129857/photo/1", + "type": "photo", + "sizes": { + "large": { + "w": 600, + "h": 450, + "resize": "fit" + }, + "medium": { + "w": 600, + "h": 450, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "small": { + "w": 340, + "h": 255, + "resize": "fit" + } + } + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874882995826700, + "id_str": "505874882995826689", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "ヤバすぎる!!ギネス世界記録", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2762405780, + "id_str": "2762405780", + "name": "ヤバすぎる!!ギネス世界記録", + "screen_name": "yabai_giness", + "location": "", + "description": "世の中には、まだまだ知られていないスゴイ記録があるんです! \r\nそんなギネス世界記録を見つけます☆ \r\nどんどん友達にも教えてあげてくださいねww \r\nヤバイと思ったら RT & フォローを、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 36, + "friends_count": 985, + "listed_count": 0, + "created_at": "Sun Aug 24 13:17:03 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 210, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503531782919045121/NiIC25wL_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503531782919045121/NiIC25wL_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2762405780/1408886328", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874882870009860, + "id_str": "505874882870009856", + "text": "すごく面白い夢見た。魔法科高校通ってて(別に一科二科の区別ない)クラスメイトにヨセアツメ面子や赤僕の拓也がいて、学校対抗合唱コンクールが開催されたり会場入りの際他校の妨害工作受けたり、拓也が連れてきてた実が人質に取られたりとにかくてんこ盛りだった楽しかった赤僕読みたい手元にない", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 597357105, + "id_str": "597357105", + "name": "ふじよし", + "screen_name": "fuji_mark", + "location": "多摩動物公園", + "description": "成人腐女子", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 128, + "friends_count": 126, + "listed_count": 6, + "created_at": "Sat Jun 02 10:06:05 +0000 2012", + "favourites_count": 2842, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 10517, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "0099B9", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme4/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme4/bg.gif", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503553738569560065/D_JW2dCJ_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503553738569560065/D_JW2dCJ_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/597357105/1408864355", + "profile_link_color": "0099B9", + "profile_sidebar_border_color": "5ED4DC", + "profile_sidebar_fill_color": "95E8EC", + "profile_text_color": "3C3940", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874882228281340, + "id_str": "505874882228281345", + "text": "RT @oen_yakyu: ●継続試合(中京対崇徳)46回~ 9時~\n 〈ラジオ中継〉\n らじる★らじる→大阪放送局を選択→NHK-FM\n●決勝戦(三浦対中京or崇徳) 12時30分~\n 〈ラジオ中継〉\n らじる★らじる→大阪放送局を選択→NHK第一\n ※神奈川の方は普通のラ…", + "source": "twicca", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 18477566, + "id_str": "18477566", + "name": "Natit(なち)@そうだ、トップ行こう", + "screen_name": "natit_yso", + "location": "福岡市の端っこ", + "description": "ヤー・チャイカ。紫宝勢の末席くらいでQMAやってます。\r\n9/13(土)「九州杯」今年も宜しくお願いします!キーワードは「そうだ、トップ、行こう。」\r\nmore → http://t.co/ezuHyjF4Qy \r\n【旅の予定】9/20-22 関西 → 9/23-28 北海道ぐるり", + "url": "http://t.co/ll2yu78DGR", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/ll2yu78DGR", + "expanded_url": "http://qma-kyushu.sakura.ne.jp/", + "display_url": "qma-kyushu.sakura.ne.jp", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "http://t.co/ezuHyjF4Qy", + "expanded_url": "http://twpf.jp/natit_yso", + "display_url": "twpf.jp/natit_yso", + "indices": [ + 83, + 105 + ] + } + ] + } + }, + "protected": false, + "followers_count": 591, + "friends_count": 548, + "listed_count": 93, + "created_at": "Tue Dec 30 14:11:44 +0000 2008", + "favourites_count": 11676, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 130145, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "131516", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/1556202861/chibi-Leon_normal.jpg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/1556202861/chibi-Leon_normal.jpg", + "profile_link_color": "009999", + "profile_sidebar_border_color": "EEEEEE", + "profile_sidebar_fill_color": "EFEFEF", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 23:12:39 +0000 2014", + "id": 505855649196953600, + "id_str": "505855649196953600", + "text": "●継続試合(中京対崇徳)46回~ 9時~\n 〈ラジオ中継〉\n らじる★らじる→大阪放送局を選択→NHK-FM\n●決勝戦(三浦対中京or崇徳) 12時30分~\n 〈ラジオ中継〉\n らじる★らじる→大阪放送局を選択→NHK第一\n ※神奈川の方は普通のラジオのNHK-FMでも", + "source": "Twitter Web Client", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2761692762, + "id_str": "2761692762", + "name": "三浦学苑軟式野球部応援団!", + "screen_name": "oen_yakyu", + "location": "", + "description": "兵庫県で開催される「もう一つの甲子園」こと全国高校軟式野球選手権大会に南関東ブロックから出場する三浦学苑軟式野球部を応援する非公式アカウントです。", + "url": "http://t.co/Cn1tPTsBGY", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/Cn1tPTsBGY", + "expanded_url": "http://www.miura.ed.jp/index.html", + "display_url": "miura.ed.jp/index.html", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 464, + "friends_count": 117, + "listed_count": 4, + "created_at": "Sun Aug 24 07:47:29 +0000 2014", + "favourites_count": 69, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 553, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/504299474445811712/zsxJUmL0_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/504299474445811712/zsxJUmL0_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2761692762/1409069337", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 7, + "favorite_count": 2, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 7, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "oen_yakyu", + "name": "三浦学苑軟式野球部応援団!", + "id": 2761692762, + "id_str": "2761692762", + "indices": [ + 3, + 13 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874882110824450, + "id_str": "505874882110824448", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "スマホに密封★アニメ画像", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2725976444, + "id_str": "2725976444", + "name": "スマホに密封★アニメ画像", + "screen_name": "sumahoanime", + "location": "", + "description": "なんともめずらしい、いろんなキャラがスマホに閉じ込められています。 \r\nあなたのスマホにマッチする画像が見つかるかも♪ \r\n気に入ったら是非 RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 227, + "friends_count": 1918, + "listed_count": 0, + "created_at": "Tue Aug 12 11:27:54 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 527, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499155646164393984/l5vSz5zu_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499155646164393984/l5vSz5zu_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2725976444/1407843121", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:05 +0000 2014", + "id": 505874881297133600, + "id_str": "505874881297133568", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "アナタのそばの身近な危険", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2713926078, + "id_str": "2713926078", + "name": "アナタのそばの身近な危険", + "screen_name": "mijika_kiken", + "location": "", + "description": "知らないうちにやっている危険な行動を見つけて自分を守りましょう。 役に立つと思ったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 301, + "friends_count": 1871, + "listed_count": 0, + "created_at": "Thu Aug 07 07:12:50 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 644, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497279579245907968/Ftvms_HR_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497279579245907968/Ftvms_HR_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2713926078/1407395683", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:04 +0000 2014", + "id": 505874880294682600, + "id_str": "505874880294682624", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "人気者♥デイジー大好き", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2726199583, + "id_str": "2726199583", + "name": "人気者♥デイジー大好き", + "screen_name": "ninkimono_daosy", + "location": "", + "description": "デイジーの想いを、代わりにつぶやきます♪ \r\nデイジーのかわいい画像やグッズも大好きw \r\n可愛いと思ったら RT & フォローお願いします。 \r\n「非公式アカウントです」", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 190, + "friends_count": 474, + "listed_count": 0, + "created_at": "Tue Aug 12 12:58:33 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 469, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499178622494576640/EzWKdR_p_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499178622494576640/EzWKdR_p_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2726199583/1407848478", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:04 +0000 2014", + "id": 505874879392919550, + "id_str": "505874879392919552", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "幸せ話でフル充電しよう", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2721453846, + "id_str": "2721453846", + "name": "幸せ話でフル充電しようww", + "screen_name": "shiawasehanashi", + "location": "", + "description": "私が聞いて心に残った感動エピソードをお届けします。\r\n少しでも多くの人へ届けたいと思います。\r\nいいなと思ったら RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 302, + "friends_count": 1886, + "listed_count": 0, + "created_at": "Sun Aug 10 12:16:25 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 508, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498444554916216832/ml8EiQka_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498444554916216832/ml8EiQka_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2721453846/1407673555", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:04 +0000 2014", + "id": 505874879103520800, + "id_str": "505874879103520768", + "text": "RT @Ang_Angel73: 逢坂「くっ…僕の秘められし右目が…!」\n一同「……………。」", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2571968509, + "id_str": "2571968509", + "name": "イイヒト", + "screen_name": "IwiAlohomora", + "location": "草葉の陰", + "description": "大人です。気軽に絡んでくれるとうれしいです! イラスト大好き!(≧∇≦) BF(仮)逢坂紘夢くんにお熱です! マンガも好き♡欲望のままにつぶやきますのでご注意を。雑食♡", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 156, + "friends_count": 165, + "listed_count": 14, + "created_at": "Tue Jun 17 01:18:34 +0000 2014", + "favourites_count": 11926, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 7234, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/504990074862178304/DoBvOb9c_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/504990074862178304/DoBvOb9c_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2571968509/1409106012", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:27:01 +0000 2014", + "id": 505874364596621300, + "id_str": "505874364596621313", + "text": "逢坂「くっ…僕の秘められし右目が…!」\n一同「……………。」", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1600750194, + "id_str": "1600750194", + "name": "臙脂", + "screen_name": "Ang_Angel73", + "location": "逢坂紘夢のそばに", + "description": "自由、気ままに。詳しくはツイプロ。アイコンはまめせろりちゃんからだよ☆~(ゝ。∂)", + "url": "http://t.co/kKCCwHTaph", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/kKCCwHTaph", + "expanded_url": "http://twpf.jp/Ang_Angel73", + "display_url": "twpf.jp/Ang_Angel73", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 155, + "friends_count": 154, + "listed_count": 10, + "created_at": "Wed Jul 17 11:44:31 +0000 2013", + "favourites_count": 2115, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 12342, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000027871001/aa764602922050b22bf9ade3741367dc.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000027871001/aa764602922050b22bf9ade3741367dc.jpeg", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/500293786287603713/Ywyh69eG_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/500293786287603713/Ywyh69eG_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1600750194/1403879183", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 2, + "favorite_count": 2, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 2, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "Ang_Angel73", + "name": "臙脂", + "id": 1600750194, + "id_str": "1600750194", + "indices": [ + 3, + 15 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:04 +0000 2014", + "id": 505874877933314050, + "id_str": "505874877933314048", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "秘密の本音♥女子編", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2762237088, + "id_str": "2762237088", + "name": "秘密の本音♥女子編", + "screen_name": "honne_jyoshi1", + "location": "", + "description": "普段は言えない「お・ん・なの建前と本音」をつぶやきます。 気になる あの人の本音も、わかるかも!? \r\nわかるって人は RT & フォローを、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 123, + "friends_count": 988, + "listed_count": 0, + "created_at": "Sun Aug 24 12:27:07 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 211, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503519190364332032/BVjS_XBD_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503519190364332032/BVjS_XBD_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2762237088/1408883328", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:04 +0000 2014", + "id": 505874877148958700, + "id_str": "505874877148958721", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "美し過ぎる★色鉛筆アート", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2740047343, + "id_str": "2740047343", + "name": "美し過ぎる★色鉛筆アート", + "screen_name": "bi_iroenpitu", + "location": "", + "description": "ほんとにコレ色鉛筆なの~? \r\n本物と見間違える程のリアリティを御覧ください。 \r\n気に入ったら RT & 相互フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 321, + "friends_count": 1990, + "listed_count": 0, + "created_at": "Sun Aug 17 16:15:05 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 396, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501039950972739585/isigil4V_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501039950972739585/isigil4V_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2740047343/1408292283", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874876465295360, + "id_str": "505874876465295361", + "text": "【H15-9-4】道路を利用する利益は反射的利益であり、建築基準法に基づいて道路一の指定がなされている私道の敷地所有者に対し、通行妨害行為の排除を求める人格的権利を認めることはできない。→誤。", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1886570281, + "id_str": "1886570281", + "name": "行政法過去問", + "screen_name": "gyosei_goukaku", + "location": "", + "description": "行政書士の本試験問題の過去問(行政法分野)をランダムにつぶやきます。問題は随時追加中です。基本的に相互フォローします。※140字制限の都合上、表現は一部変えてあります。解説も文字数が可能であればなるべく…。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 1554, + "friends_count": 1772, + "listed_count": 12, + "created_at": "Fri Sep 20 13:24:29 +0000 2013", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 14565, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000487791870/0e45e3c089c6b641cdd8d1b6f1ceb8a4_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000487791870/0e45e3c089c6b641cdd8d1b6f1ceb8a4_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874876318511100, + "id_str": "505874876318511104", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "K点越えの発想力!!", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744863153, + "id_str": "2744863153", + "name": "K点越えの発想力!!", + "screen_name": "kgoehassou", + "location": "", + "description": "いったいどうやったら、その領域にたどりつけるのか!? \r\nそんな思わず笑ってしまう別世界の発想力をお届けします♪ \r\nおもしろかったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 76, + "friends_count": 957, + "listed_count": 0, + "created_at": "Tue Aug 19 13:00:08 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 341, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501715651686178816/Fgpe0B8M_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501715651686178816/Fgpe0B8M_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744863153/1408453328", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874875521581060, + "id_str": "505874875521581056", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "血液型の真実2", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2698625690, + "id_str": "2698625690", + "name": "血液型の真実", + "screen_name": "ketueki_sinjitu", + "location": "", + "description": "やっぱりそうだったのか~♪\r\n意外な、あの人の裏側を見つけます。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 193, + "friends_count": 1785, + "listed_count": 1, + "created_at": "Fri Aug 01 16:11:40 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 769, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495241446706790400/h_0DSFPG_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495241446706790400/h_0DSFPG_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2698625690/1406911319", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874874712072200, + "id_str": "505874874712072192", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "やっぱり神が??を作る時", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2714868440, + "id_str": "2714868440", + "name": "やっぱり神が??を作る時", + "screen_name": "yahari_kamiga", + "location": "", + "description": "やっぱり今日も、神は何かを作ろうとしています 笑。 どうやって作っているのかわかったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 243, + "friends_count": 1907, + "listed_count": 0, + "created_at": "Thu Aug 07 16:12:33 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 590, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497416102108884992/NRMEbKaT_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497416102108884992/NRMEbKaT_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2714868440/1407428237", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874874275864600, + "id_str": "505874874275864576", + "text": "RT @takuramix: 福島第一原発の構内地図がこちら。\nhttp://t.co/ZkU4TZCGPG\nどう見ても、1号機。\nRT @Lightworker19: 【大拡散】  福島第一原発 4号機 爆発動画 40秒~  http://t.co/lmlgp38fgZ", + "source": "ツイタマ", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 62525372, + "id_str": "62525372", + "name": "NANCY-MOON☆ひよこちゃん☆", + "screen_name": "nancy_moon_703", + "location": "JAPAN", + "description": "【無断転載禁止・コピペ禁止・非公式RT禁止】【必読!】⇒ http://t.co/nuUvfUVD 今現在活動中の東方神起YUNHO&CHANGMINの2人を全力で応援しています!!(^_-)-☆ ※東方神起及びYUNHO&CHANGMINを応援していない方・鍵付ユーザーのフォローお断り!", + "url": null, + "entities": { + "description": { + "urls": [ + { + "url": "http://t.co/nuUvfUVD", + "expanded_url": "http://goo.gl/SrGLb", + "display_url": "goo.gl/SrGLb", + "indices": [ + 29, + 49 + ] + } + ] + } + }, + "protected": false, + "followers_count": 270, + "friends_count": 328, + "listed_count": 4, + "created_at": "Mon Aug 03 14:22:24 +0000 2009", + "favourites_count": 3283, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 180310, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "642D8B", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/470849781397336064/ltM6EdFn.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/470849781397336064/ltM6EdFn.jpeg", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/3699005246/9ba2e306518d296b68b7cbfa5e4ce4e6_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3699005246/9ba2e306518d296b68b7cbfa5e4ce4e6_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/62525372/1401094223", + "profile_link_color": "FF0000", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "F065A8", + "profile_text_color": "080808", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 21:21:33 +0000 2014", + "id": 505827689660313600, + "id_str": "505827689660313600", + "text": "福島第一原発の構内地図がこちら。\nhttp://t.co/ZkU4TZCGPG\nどう見ても、1号機。\nRT @Lightworker19: 【大拡散】  福島第一原発 4号機 爆発動画 40秒~  http://t.co/lmlgp38fgZ", + "source": "TweetDeck", + "truncated": false, + "in_reply_to_status_id": 505774460910043140, + "in_reply_to_status_id_str": "505774460910043136", + "in_reply_to_user_id": 238157843, + "in_reply_to_user_id_str": "238157843", + "in_reply_to_screen_name": "Lightworker19", + "user": { + "id": 29599253, + "id_str": "29599253", + "name": "タクラミックス", + "screen_name": "takuramix", + "location": "i7", + "description": "私の機能一覧:歌う、演劇、ネットワークエンジニア、ライター、プログラマ、翻訳、シルバーアクセサリ、……何をやってる人かは良くわからない人なので、「機能」が欲しい人は私にがっかりするでしょう。私って人間に御用があるなら別ですが。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 5136, + "friends_count": 724, + "listed_count": 335, + "created_at": "Wed Apr 08 01:10:58 +0000 2009", + "favourites_count": 21363, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 70897, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/2049751947/takuramix1204_normal.jpg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/2049751947/takuramix1204_normal.jpg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 1, + "favorite_count": 1, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/ZkU4TZCGPG", + "expanded_url": "http://www.tepco.co.jp/nu/fukushima-np/review/images/review1_01.gif", + "display_url": "tepco.co.jp/nu/fukushima-n…", + "indices": [ + 17, + 39 + ] + }, + { + "url": "http://t.co/lmlgp38fgZ", + "expanded_url": "http://youtu.be/gDXEhyuVSDk", + "display_url": "youtu.be/gDXEhyuVSDk", + "indices": [ + 99, + 121 + ] + } + ], + "user_mentions": [ + { + "screen_name": "Lightworker19", + "name": "Lightworker", + "id": 238157843, + "id_str": "238157843", + "indices": [ + 54, + 68 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 1, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/ZkU4TZCGPG", + "expanded_url": "http://www.tepco.co.jp/nu/fukushima-np/review/images/review1_01.gif", + "display_url": "tepco.co.jp/nu/fukushima-n…", + "indices": [ + 32, + 54 + ] + }, + { + "url": "http://t.co/lmlgp38fgZ", + "expanded_url": "http://youtu.be/gDXEhyuVSDk", + "display_url": "youtu.be/gDXEhyuVSDk", + "indices": [ + 114, + 136 + ] + } + ], + "user_mentions": [ + { + "screen_name": "takuramix", + "name": "タクラミックス", + "id": 29599253, + "id_str": "29599253", + "indices": [ + 3, + 13 + ] + }, + { + "screen_name": "Lightworker19", + "name": "Lightworker", + "id": 238157843, + "id_str": "238157843", + "indices": [ + 69, + 83 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874873961308160, + "id_str": "505874873961308160", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "やっぱりアナ雪が好き♥", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2714052962, + "id_str": "2714052962", + "name": "やっぱりアナ雪が好き♥", + "screen_name": "anayuki_suki", + "location": "", + "description": "なんだかんだ言ってもやっぱりアナ雪が好きなんですよね~♪ \r\n私も好きって人は RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 368, + "friends_count": 1826, + "listed_count": 1, + "created_at": "Thu Aug 07 08:29:13 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 670, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/497299646662705153/KMo3gkv7_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/497299646662705153/KMo3gkv7_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2714052962/1407400477", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "zh" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874873759977500, + "id_str": "505874873759977473", + "text": "四川盆地江淮等地将有强降雨 开学日多地将有雨:   中新网8月31日电 据中央气象台消息,江淮东部、四川盆地东北部等地今天(31日)又将迎来一场暴雨或大暴雨天气。明天9月1日,是中小学生开学的日子。预计明天,内蒙古中部、... http://t.co/toQgVlXPyH", + "source": "twitterfeed", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2281979863, + "id_str": "2281979863", + "name": "News 24h China", + "screen_name": "news24hchn", + "location": "", + "description": "", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 719, + "friends_count": 807, + "listed_count": 7, + "created_at": "Wed Jan 08 10:56:04 +0000 2014", + "favourites_count": 0, + "utc_offset": 7200, + "time_zone": "Amsterdam", + "geo_enabled": false, + "verified": false, + "statuses_count": 94782, + "lang": "it", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/452558963754561536/QPID3isM.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/452558963754561536/QPID3isM.jpeg", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/439031926569979904/SlBH9iMg_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/439031926569979904/SlBH9iMg_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2281979863/1393508427", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/toQgVlXPyH", + "expanded_url": "http://news24h.allnews24h.com/FX54", + "display_url": "news24h.allnews24h.com/FX54", + "indices": [ + 114, + 136 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "zh" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874873248268300, + "id_str": "505874873248268288", + "text": "@Take3carnifex それは大変!一大事!命に関わります!\n是非うちに受診して下さい!", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": 505874353716600800, + "in_reply_to_status_id_str": "505874353716600832", + "in_reply_to_user_id": 535179785, + "in_reply_to_user_id_str": "535179785", + "in_reply_to_screen_name": "Take3carnifex", + "user": { + "id": 226897125, + "id_str": "226897125", + "name": "ひかり@hack", + "screen_name": "hikari_thirteen", + "location": "", + "description": "hackというバンドで、ギターを弾いています。 モンハンとポケモンが好き。 \nSPRING WATER リードギター(ヘルプ)\nROCK OUT レギュラーDJ", + "url": "http://t.co/SQLZnvjVxB", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/SQLZnvjVxB", + "expanded_url": "http://s.ameblo.jp/hikarihikarimay", + "display_url": "s.ameblo.jp/hikarihikarimay", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 296, + "friends_count": 348, + "listed_count": 3, + "created_at": "Wed Dec 15 10:51:51 +0000 2010", + "favourites_count": 33, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 3293, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "131516", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme14/bg.gif", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000504584690/8ccba98eda8c0fd1d15a74e401f621d1_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000504584690/8ccba98eda8c0fd1d15a74e401f621d1_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/226897125/1385551752", + "profile_link_color": "009999", + "profile_sidebar_border_color": "EEEEEE", + "profile_sidebar_fill_color": "EFEFEF", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "Take3carnifex", + "name": "Take3", + "id": 535179785, + "id_str": "535179785", + "indices": [ + 0, + 14 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:03 +0000 2014", + "id": 505874873223110660, + "id_str": "505874873223110656", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "今どき女子高生の謎w", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744236873, + "id_str": "2744236873", + "name": "今どき女子高生の謎w", + "screen_name": "imadokijoshiko", + "location": "", + "description": "思わず耳を疑う男性の方の夢を壊してしまう、\r\n女子高生達のディープな世界を見てください☆ \r\nおもしろいと思ったら RT & 相互フォローでお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 79, + "friends_count": 973, + "listed_count": 0, + "created_at": "Tue Aug 19 07:06:47 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 354, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501627015980535808/avWBgkDh_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501627015980535808/avWBgkDh_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744236873/1408432455", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874872463925250, + "id_str": "505874872463925248", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "私の理想の男性像", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2761782601, + "id_str": "2761782601", + "name": "私の理想の男性像", + "screen_name": "risou_dansei", + "location": "", + "description": "こんな男性♥ ほんとにいるのかしら!? \r\n「いたらいいのになぁ」っていう理想の男性像をを、私目線でつぶやきます。 \r\nいいなと思った人は RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 69, + "friends_count": 974, + "listed_count": 0, + "created_at": "Sun Aug 24 08:03:32 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 208, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503452833719410688/tFU509Yk_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503452833719410688/tFU509Yk_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2761782601/1408867519", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874871713157100, + "id_str": "505874871713157120", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "激アツ★6秒動画", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2725690658, + "id_str": "2725690658", + "name": "激アツ★6秒動画", + "screen_name": "gekiatu_6byou", + "location": "", + "description": "話題の6秒動画! \r\n思わず「ほんとかよっ」てツッコんでしまう内容のオンパレード! \r\nおもしろかったら、是非 RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 195, + "friends_count": 494, + "listed_count": 0, + "created_at": "Tue Aug 12 08:17:29 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 477, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499107997444886528/3rl6FrIk_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499107997444886528/3rl6FrIk_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2725690658/1407832963", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874871616671740, + "id_str": "505874871616671744", + "text": "爆笑ww珍解答集!\n先生のツメの甘さと生徒のセンスを感じる一問一答だとFBでも話題!!\nうどん天下一決定戦ウィンドウズ9三重高校竹内由恵アナ花火保険\nhttp://t.co/jRWJt8IrSB http://t.co/okrAoxSbt0", + "source": "笑える博物館", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2748747362, + "id_str": "2748747362", + "name": "笑える博物館", + "screen_name": "waraeru_kan", + "location": "", + "description": "", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 19, + "friends_count": 10, + "listed_count": 0, + "created_at": "Wed Aug 20 11:11:04 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 15137, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://abs.twimg.com/sticky/default_profile_images/default_profile_4_normal.png", + "profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_4_normal.png", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": true, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/jRWJt8IrSB", + "expanded_url": "http://bit.ly/1qBa1nl", + "display_url": "bit.ly/1qBa1nl", + "indices": [ + 75, + 97 + ] + } + ], + "user_mentions": [], + "media": [ + { + "id": 505874871344066560, + "id_str": "505874871344066560", + "indices": [ + 98, + 120 + ], + "media_url": "http://pbs.twimg.com/media/BwU6g-dCcAALxAW.png", + "media_url_https": "https://pbs.twimg.com/media/BwU6g-dCcAALxAW.png", + "url": "http://t.co/okrAoxSbt0", + "display_url": "pic.twitter.com/okrAoxSbt0", + "expanded_url": "http://twitter.com/waraeru_kan/status/505874871616671744/photo/1", + "type": "photo", + "sizes": { + "small": { + "w": 340, + "h": 425, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "large": { + "w": 600, + "h": 750, + "resize": "fit" + }, + "medium": { + "w": 600, + "h": 750, + "resize": "fit" + } + } + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874871268540400, + "id_str": "505874871268540416", + "text": "@nasan_arai \n名前→なーさん\n第一印象→誰。(´・_・`)\n今の印象→れいら♡\nLINE交換できる?→してる(「・ω・)「\n好きなところ→可愛い優しい優しい優しい\n最後に一言→なーさん好き〜(´・_・`)♡GEM現場おいでね(´・_・`)♡\n\n#ふぁぼした人にやる", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": 1717603286, + "in_reply_to_user_id_str": "1717603286", + "in_reply_to_screen_name": "nasan_arai", + "user": { + "id": 2417626784, + "id_str": "2417626784", + "name": "✩.ゆきଘ(*´꒳`)", + "screen_name": "Ymaaya_gem", + "location": "", + "description": "⁽⁽٩( ᐖ )۶⁾⁾ ❤︎ 武 田 舞 彩 ❤︎ ₍₍٩( ᐛ )۶₎₎", + "url": "http://t.co/wR0Qb76TbB", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/wR0Qb76TbB", + "expanded_url": "http://twpf.jp/Ymaaya_gem", + "display_url": "twpf.jp/Ymaaya_gem", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 198, + "friends_count": 245, + "listed_count": 1, + "created_at": "Sat Mar 29 16:03:06 +0000 2014", + "favourites_count": 3818, + "utc_offset": null, + "time_zone": null, + "geo_enabled": true, + "verified": false, + "statuses_count": 8056, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505516858816987136/4gFGjHzu_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505516858816987136/4gFGjHzu_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2417626784/1407764793", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "ふぁぼした人にやる", + "indices": [ + 128, + 138 + ] + } + ], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "nasan_arai", + "name": "なーさん", + "id": 1717603286, + "id_str": "1717603286", + "indices": [ + 0, + 11 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874871218225150, + "id_str": "505874871218225152", + "text": "\"ソードマスター\"剣聖カミイズミ (CV:緑川光)-「ソードマスター」のアスタリスク所持者\n第一師団団長にして「剣聖」の称号を持つ剣士。イデアの剣の師匠。 \n敵味方からも尊敬される一流の武人。", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1435517814, + "id_str": "1435517814", + "name": "俺、関係ないよ?", + "screen_name": "BDFF_LOVE", + "location": "ルクセンダルクorリングアベルさんの隣", + "description": "自分なりに生きる人、最後まであきらめないの。でも、フォローありがとう…。@ringo_BDFFLOVE ←は、妹です。時々、会話します。「現在BOTで、BDFFのこと呟くよ!」夜は、全滅 「BDFFプレイ中」詳しくは、ツイプロみてください!(絶対)", + "url": "http://t.co/5R4dzpbWX2", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/5R4dzpbWX2", + "expanded_url": "http://twpf.jp/BDFF_LOVE", + "display_url": "twpf.jp/BDFF_LOVE", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 1066, + "friends_count": 1799, + "listed_count": 6, + "created_at": "Fri May 17 12:33:23 +0000 2013", + "favourites_count": 1431, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": true, + "verified": false, + "statuses_count": 6333, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505696320380612608/qvaxb_zx_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505696320380612608/qvaxb_zx_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1435517814/1409401948", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874871130136600, + "id_str": "505874871130136576", + "text": "闇「リンと付き合うに当たって歳の差以外にもいろいろ壁があったんだよ。愛し隊の妨害とか風紀厨の生徒会長とか…」\n一号「リンちゃんを泣かせたらシメるかんね!」\n二号「リンちゃんにやましい事したら×す…」\n執行部「不純な交際は僕が取り締まろうじゃないか…」\n闇「(消される)」", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2386208737, + "id_str": "2386208737", + "name": "闇未来Bot", + "screen_name": "StxRinFbot", + "location": "DIVAルーム", + "description": "ProjectDIVAのモジュール・ストレンジダーク×鏡音リンFutureStyleの自己満足非公式Bot マセレン仕様。CP要素あります。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 7, + "friends_count": 2, + "listed_count": 0, + "created_at": "Thu Mar 13 02:58:09 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 4876, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/443948925351755776/6rmljL5C_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/443948925351755776/6rmljL5C_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2386208737/1396259004", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874870933016600, + "id_str": "505874870933016576", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "絶品!!スイーツ天国", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2725681663, + "id_str": "2725681663", + "name": "絶品!!スイーツ天国", + "screen_name": "suitestengoku", + "location": "", + "description": "美味しそうなスイーツって、見てるだけで幸せな気分になれますね♪\r\nそんな素敵なスイーツに出会いたいです。\r\n食べたいと思ったら是非 RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 401, + "friends_count": 1877, + "listed_count": 1, + "created_at": "Tue Aug 12 07:43:52 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 554, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/499099533507178496/g5dNpArt_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/499099533507178496/g5dNpArt_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2725681663/1407829743", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874870148669440, + "id_str": "505874870148669440", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "電車厳禁!!おもしろ話", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2699667800, + "id_str": "2699667800", + "name": "電車厳禁!!おもしろ話w", + "screen_name": "dengeki_omoro", + "location": "", + "description": "日常のオモシロくて笑える場面を探します♪\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 461, + "friends_count": 1919, + "listed_count": 0, + "created_at": "Sat Aug 02 02:16:32 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 728, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495400387961036800/BBMb_hcG_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495400387961036800/BBMb_hcG_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2699667800/1406947654", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874869339189250, + "id_str": "505874869339189249", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "笑えるwwランキング2", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2695745652, + "id_str": "2695745652", + "name": "笑えるwwランキング", + "screen_name": "wara_runk", + "location": "", + "description": "知ってると使えるランキングを探そう。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 314, + "friends_count": 1943, + "listed_count": 1, + "created_at": "Thu Jul 31 13:51:57 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 737, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/494844659856728064/xBQfnm5J_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/494844659856728064/xBQfnm5J_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2695745652/1406815103", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:02 +0000 2014", + "id": 505874868533854200, + "id_str": "505874868533854209", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "スニーカー大好き★図鑑", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2707963890, + "id_str": "2707963890", + "name": "スニーカー大好き★図鑑", + "screen_name": "sunikar_daisuki", + "location": "", + "description": "スニーカー好きを見つけて仲間になろう♪\r\n気に入ったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 394, + "friends_count": 1891, + "listed_count": 0, + "created_at": "Tue Aug 05 01:54:28 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 642, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496474952631996416/f0C_u3_u_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496474952631996416/f0C_u3_u_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2707963890/1407203869", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "zh" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874867997380600, + "id_str": "505874867997380608", + "text": "\"@BelloTexto: ¿Quieres ser feliz? \n一\"No stalkees\" \n一\"No stalkees\" \n一\"No stalkees\" \n一\"No stalkees\" \n一\"No stalkees\" \n一\"No stalkees\".\"", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2249378935, + "id_str": "2249378935", + "name": "Maggie Becerril ", + "screen_name": "maggdesie", + "location": "", + "description": "cambiando la vida de las personas.", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 120, + "friends_count": 391, + "listed_count": 0, + "created_at": "Mon Dec 16 21:56:49 +0000 2013", + "favourites_count": 314, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 1657, + "lang": "es", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505093371665604608/K0x_LV2y_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505093371665604608/K0x_LV2y_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2249378935/1409258479", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "BelloTexto", + "name": "Indirectas... ✉", + "id": 833083404, + "id_str": "833083404", + "indices": [ + 1, + 12 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "zh" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874867720183800, + "id_str": "505874867720183808", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "ザ・異性の裏の顔", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2719746578, + "id_str": "2719746578", + "name": "ザ・異性の裏の顔", + "screen_name": "iseiuragao", + "location": "", + "description": "異性について少し学ぶことで、必然的にモテるようになる!? 相手を理解することで見えてくるもの「それは・・・●●」 いい内容だと思ったら RT & フォローもお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 238, + "friends_count": 1922, + "listed_count": 0, + "created_at": "Sat Aug 09 17:18:43 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 532, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498157077726900224/tW8q4di__normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498157077726900224/tW8q4di__normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2719746578/1407604947", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874866910687200, + "id_str": "505874866910687233", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "超w美女☆アルバム", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744054334, + "id_str": "2744054334", + "name": "超w美女☆アルバム", + "screen_name": "bijyoalbum", + "location": "", + "description": "「おお~っ!いいね~」って、思わず言ってしまう、美女を見つけます☆ \r\nタイプだと思ったら RT & 相互フォローでお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 45, + "friends_count": 966, + "listed_count": 0, + "created_at": "Tue Aug 19 05:36:48 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 352, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501604413312491520/GP66eKWr_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501604413312491520/GP66eKWr_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744054334/1408426814", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874866105376800, + "id_str": "505874866105376769", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "男に見せない女子の裏生態", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744261238, + "id_str": "2744261238", + "name": "男に見せない女子の裏生態", + "screen_name": "jyoshiuraseitai", + "location": "", + "description": "男の知らない女子ならではのあるある☆ \r\nそんな生々しい女子の生態をつぶやきます。 \r\nわかる~って人は RT & フォローでお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 203, + "friends_count": 967, + "listed_count": 0, + "created_at": "Tue Aug 19 08:01:28 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 348, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501641354804346880/Uh1-n1LD_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501641354804346880/Uh1-n1LD_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744261238/1408435630", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874865354584060, + "id_str": "505874865354584064", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "驚きの動物たちの生態", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2759403146, + "id_str": "2759403146", + "name": "驚きの動物たちの生態", + "screen_name": "soubutu_seitai", + "location": "", + "description": "「おお~っ」と 言われるような、動物の生態をツイートします♪ \r\n知っていると、あなたも人気者に!? \r\nおもしろかったら RT & フォローを、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 67, + "friends_count": 954, + "listed_count": 0, + "created_at": "Sat Aug 23 16:39:31 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 219, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503220468128567296/Z8mGDIBS_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503220468128567296/Z8mGDIBS_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2759403146/1408812130", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:01 +0000 2014", + "id": 505874864603820000, + "id_str": "505874864603820032", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "モテ女子★ファションの秘密", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2706659820, + "id_str": "2706659820", + "name": "モテ女子★ファションの秘密", + "screen_name": "mote_woman", + "location": "", + "description": "オシャレかわいい♥モテ度UPの注目アイテムを見つけます。\r\n気に入ったら RT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 217, + "friends_count": 1806, + "listed_count": 0, + "created_at": "Mon Aug 04 14:30:24 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 682, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496303370936668161/s7xP8rTy_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496303370936668161/s7xP8rTy_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2706659820/1407163059", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874863874007040, + "id_str": "505874863874007040", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "男女の違いを解明する", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2761896468, + "id_str": "2761896468", + "name": "男女の違いを解明する", + "screen_name": "danjyonotigai1", + "location": "", + "description": "意外と理解できていない男女それぞれの事情。 \r\n「えっ マジで!?」と驚くような、男女の習性をつぶやきます♪ ためになったら、是非 RT & フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 82, + "friends_count": 992, + "listed_count": 0, + "created_at": "Sun Aug 24 09:47:44 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 237, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503479057380413441/zDLu5Z9o_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503479057380413441/zDLu5Z9o_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2761896468/1408873803", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874862900924400, + "id_str": "505874862900924416", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "神レベル★極限の発想", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744950735, + "id_str": "2744950735", + "name": "神レベル★極限の発想", + "screen_name": "kamihassou", + "location": "", + "description": "見ているだけで、本気がビシバシ伝わってきます! \r\n人生のヒントになるような、そんな究極の発想を集めています。 \r\nいいなと思ったら RT & 相互フォローで、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 84, + "friends_count": 992, + "listed_count": 0, + "created_at": "Tue Aug 19 13:36:05 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 343, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501725053189226496/xZNOTYz2_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501725053189226496/xZNOTYz2_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744950735/1408455571", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874862397591550, + "id_str": "505874862397591552", + "text": "@kaoritoxx そうよ!あたしはそう思うようにしておる。いま職場一やけとる気がする(°_°)!満喫幸せ焼け!!wあー、なるほどね!毎回そうだよね!ティアラちゃんみにいってるもんね♡五月と九月恐ろしい、、、\nハリポタエリアはいった??", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": 505838547308277760, + "in_reply_to_status_id_str": "505838547308277761", + "in_reply_to_user_id": 796000214, + "in_reply_to_user_id_str": "796000214", + "in_reply_to_screen_name": "kaoritoxx", + "user": { + "id": 2256249487, + "id_str": "2256249487", + "name": "はあちゃん@海賊同盟中", + "screen_name": "onepiece_24", + "location": "どえすえろぉたんの助手兼ね妹(願望)", + "description": "ONE PIECE愛しすぎて今年23ちゃい(歴14年目)ゾロ様に一途だったのにロー、このやろー。ロビンちゃんが幸せになればいい。ルフィは無条件にすき。ゾロビン、ローロビ、ルロビ♡usj、声優さん、コナン、進撃、クレしん、H x Hも好き♩", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 415, + "friends_count": 384, + "listed_count": 3, + "created_at": "Sat Dec 21 09:37:25 +0000 2013", + "favourites_count": 1603, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 9636, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501686340564418561/hMQFN4vD_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501686340564418561/hMQFN4vD_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2256249487/1399987924", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "kaoritoxx", + "name": "かおちゃん", + "id": 796000214, + "id_str": "796000214", + "indices": [ + 0, + 10 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874861973991400, + "id_str": "505874861973991424", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "恋愛仙人", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2698885082, + "id_str": "2698885082", + "name": "恋愛仙人", + "screen_name": "renai_sennin", + "location": "", + "description": "豊富でステキな恋愛経験を、シェアしましょう。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 618, + "friends_count": 1847, + "listed_count": 1, + "created_at": "Fri Aug 01 18:09:38 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 726, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495272204641132544/GNA18aOg_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495272204641132544/GNA18aOg_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2698885082/1406917096", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874861881700350, + "id_str": "505874861881700353", + "text": "@itsukibot_ 一稀の俺のソーセージをペロペロする音はデカイ", + "source": "jigtwi", + "truncated": false, + "in_reply_to_status_id": 505871017428795400, + "in_reply_to_status_id_str": "505871017428795392", + "in_reply_to_user_id": 141170845, + "in_reply_to_user_id_str": "141170845", + "in_reply_to_screen_name": "itsukibot_", + "user": { + "id": 2184752048, + "id_str": "2184752048", + "name": "アンドー", + "screen_name": "55dakedayo", + "location": "", + "description": "", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 15, + "friends_count": 24, + "listed_count": 0, + "created_at": "Sat Nov 09 17:42:22 +0000 2013", + "favourites_count": 37249, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 21070, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://abs.twimg.com/sticky/default_profile_images/default_profile_3_normal.png", + "profile_image_url_https": "https://abs.twimg.com/sticky/default_profile_images/default_profile_3_normal.png", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": true, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "itsukibot_", + "name": "前田一稀", + "id": 141170845, + "id_str": "141170845", + "indices": [ + 0, + 11 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874861185437700, + "id_str": "505874861185437697", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "あの伝説の名ドラマ&名場面", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2706951979, + "id_str": "2706951979", + "name": "あの伝説の名ドラマ&名場面", + "screen_name": "densetunodorama", + "location": "", + "description": "誰にでも記憶に残る、ドラマの名場面があると思います。そんな感動のストーリーを、もう一度わかちあいたいです。\r\n「これ知ってる!」とか「あ~懐かしい」と思ったら RT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 300, + "friends_count": 1886, + "listed_count": 0, + "created_at": "Mon Aug 04 16:38:25 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 694, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/496335892152209408/fKzb8Nv3_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/496335892152209408/fKzb8Nv3_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2706951979/1407170704", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:29:00 +0000 2014", + "id": 505874860447260700, + "id_str": "505874860447260672", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "マジで食べたい♥ケーキ特集", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2724328646, + "id_str": "2724328646", + "name": "マジで食べたい♥ケーキ特集", + "screen_name": "tabetaicake1", + "location": "", + "description": "女性の目線から見た、美味しそうなケーキを探し求めています。\r\n見てるだけで、あれもコレも食べたくなっちゃう♪\r\n美味しそうだと思ったら、是非 RT & フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 158, + "friends_count": 1907, + "listed_count": 0, + "created_at": "Mon Aug 11 17:15:22 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 493, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498881289844293632/DAa9No9M_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498881289844293632/DAa9No9M_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2724328646/1407777704", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874859662925800, + "id_str": "505874859662925824", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "アディダス★マニア", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2704003662, + "id_str": "2704003662", + "name": "アディダス★マニア", + "screen_name": "adi_mania11", + "location": "", + "description": "素敵なアディダスのアイテムを見つけたいです♪\r\n気に入ってもらえたららRT & 相互フォローで みなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 340, + "friends_count": 1851, + "listed_count": 0, + "created_at": "Sun Aug 03 12:26:37 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 734, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495911561781727235/06QAMVrR_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495911561781727235/06QAMVrR_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2704003662/1407069046", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874858920513540, + "id_str": "505874858920513537", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "萌えペット大好き", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2719061228, + "id_str": "2719061228", + "name": "萌えペット大好き", + "screen_name": "moe_pet1", + "location": "", + "description": "かわいいペットを見るのが趣味です♥そんな私と一緒にいやされたい人いませんか?かわいいと思ったら RT & フォローもお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 289, + "friends_count": 1812, + "listed_count": 0, + "created_at": "Sat Aug 09 10:20:25 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 632, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498051549537386496/QizThq7N_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498051549537386496/QizThq7N_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2719061228/1407581287", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874858115219460, + "id_str": "505874858115219456", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "恋愛の教科書 ", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2744344514, + "id_str": "2744344514", + "name": "恋愛の教科書", + "screen_name": "renaikyoukasyo", + "location": "", + "description": "もっと早く知っとくべきだった~!知っていればもっと上手くいく♪ \r\n今すぐ役立つ恋愛についての雑学やマメ知識をお届けします。 \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 124, + "friends_count": 955, + "listed_count": 0, + "created_at": "Tue Aug 19 08:32:45 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 346, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501655512018997248/7SznYGWi_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501655512018997248/7SznYGWi_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2744344514/1408439001", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874857335074800, + "id_str": "505874857335074816", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "オモロすぎる★学生の日常", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2699365116, + "id_str": "2699365116", + "name": "オモロすぎる★学生の日常", + "screen_name": "omorogakusei", + "location": "", + "description": "楽しすぎる学生の日常を探していきます。\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 289, + "friends_count": 1156, + "listed_count": 2, + "created_at": "Fri Aug 01 23:35:18 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 770, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495353473886478336/S-4B_RVl_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495353473886478336/S-4B_RVl_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2699365116/1406936481", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874856605257700, + "id_str": "505874856605257728", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "憧れの★インテリア図鑑", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2721907602, + "id_str": "2721907602", + "name": "憧れの★インテリア図鑑", + "screen_name": "akogareinteria", + "location": "", + "description": "自分の住む部屋もこんなふうにしてみたい♪ \r\nそんな素敵なインテリアを、日々探していますw \r\nいいなと思ったら RT & 相互フォローお願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 298, + "friends_count": 1925, + "listed_count": 0, + "created_at": "Sun Aug 10 15:59:13 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 540, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498499374423343105/Wi_izHvT_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498499374423343105/Wi_izHvT_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2721907602/1407686543", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:59 +0000 2014", + "id": 505874856089378800, + "id_str": "505874856089378816", + "text": "天冥の標 VI 宿怨 PART1 / 小川 一水\nhttp://t.co/fXIgRt4ffH\n \n#キンドル #天冥の標VI宿怨PART1", + "source": "waromett", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1953404612, + "id_str": "1953404612", + "name": "わろめっと", + "screen_name": "waromett", + "location": "", + "description": "たのしいついーとしょうかい", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 16980, + "friends_count": 16983, + "listed_count": 18, + "created_at": "Fri Oct 11 05:49:57 +0000 2013", + "favourites_count": 3833, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": false, + "verified": false, + "statuses_count": 98655, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "352726", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme5/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme5/bg.gif", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000578908101/14c4744c7aa34b1f8bbd942b78e59385_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000578908101/14c4744c7aa34b1f8bbd942b78e59385_normal.jpeg", + "profile_link_color": "D02B55", + "profile_sidebar_border_color": "829D5E", + "profile_sidebar_fill_color": "99CC33", + "profile_text_color": "3E4415", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "キンドル", + "indices": [ + 50, + 55 + ] + }, + { + "text": "天冥の標VI宿怨PART1", + "indices": [ + 56, + 70 + ] + } + ], + "symbols": [], + "urls": [ + { + "url": "http://t.co/fXIgRt4ffH", + "expanded_url": "http://j.mp/1kHBOym", + "display_url": "j.mp/1kHBOym", + "indices": [ + 25, + 47 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "zh" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874855770599400, + "id_str": "505874855770599425", + "text": "四川盆地江淮等地将有强降雨 开学日多地将有雨:   中新网8月31日电 据中央气象台消息,江淮东部、四川盆地东北部等地今天(31日)又将迎来一场暴雨或大暴雨天气。明天9月1日,是中小学生开学的日子。预计明天,内蒙古中部、... http://t.co/RNdqIHmTby", + "source": "twitterfeed", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 402427654, + "id_str": "402427654", + "name": "中国新闻", + "screen_name": "zhongwenxinwen", + "location": "", + "description": "中国的新闻,世界的新闻。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 2429, + "friends_count": 15, + "listed_count": 29, + "created_at": "Tue Nov 01 01:56:43 +0000 2011", + "favourites_count": 0, + "utc_offset": -28800, + "time_zone": "Alaska", + "geo_enabled": false, + "verified": false, + "statuses_count": 84564, + "lang": "zh-cn", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "709397", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme6/bg.gif", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme6/bg.gif", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/2700523149/5597e347b2eb880425faef54287995f2_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/2700523149/5597e347b2eb880425faef54287995f2_normal.jpeg", + "profile_link_color": "FF3300", + "profile_sidebar_border_color": "86A4A6", + "profile_sidebar_fill_color": "A0C5C7", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/RNdqIHmTby", + "expanded_url": "http://bit.ly/1tOdNsI", + "display_url": "bit.ly/1tOdNsI", + "indices": [ + 114, + 136 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "zh" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874854877200400, + "id_str": "505874854877200384", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "LDH ★大好き応援団", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2700961603, + "id_str": "2700961603", + "name": "LDH ★大好き応援団", + "screen_name": "LDH_daisuki1", + "location": "", + "description": "LDHファンは、全員仲間です♪\r\n面白かったらRT & 相互フォローでみなさん、お願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 458, + "friends_count": 1895, + "listed_count": 0, + "created_at": "Sat Aug 02 14:23:46 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 735, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/495578007298252800/FOZflgYu_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/495578007298252800/FOZflgYu_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2700961603/1406989928", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874854147407900, + "id_str": "505874854147407872", + "text": "RT @shiawaseomamori: 一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるの…", + "source": "マジ!?怖いアニメ都市伝説", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2719489172, + "id_str": "2719489172", + "name": "マジ!?怖いアニメ都市伝説", + "screen_name": "anime_toshiden1", + "location": "", + "description": "あなたの知らない、怖すぎるアニメの都市伝説を集めています。\r\n「え~知らなかったよww]」って人は RT & フォローお願いします♪", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 377, + "friends_count": 1911, + "listed_count": 1, + "created_at": "Sat Aug 09 14:41:15 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 536, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/498118027322208258/h7XOTTSi_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/498118027322208258/h7XOTTSi_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2719489172/1407595513", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:06 +0000 2014", + "id": 505871615125491700, + "id_str": "505871615125491712", + "text": "一に止まると書いて、正しいという意味だなんて、この年になるまで知りませんでした。 人は生きていると、前へ前へという気持ちばかり急いて、どんどん大切なものを置き去りにしていくものでしょう。本当に正しいことというのは、一番初めの場所にあるのかもしれません。 by神様のカルテ、夏川草介", + "source": "幸せの☆お守り", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2745121514, + "id_str": "2745121514", + "name": "幸せの☆お守り", + "screen_name": "shiawaseomamori", + "location": "", + "description": "自分が幸せだと周りも幸せにできる! \r\nそんな人生を精一杯生きるために必要な言葉をお届けします♪ \r\nいいなと思ったら RT & 相互フォローで、お願いします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 213, + "friends_count": 991, + "listed_count": 0, + "created_at": "Tue Aug 19 14:45:19 +0000 2014", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 349, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/501742437606244354/scXy81ZW_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2745121514/1408459730", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 58, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "shiawaseomamori", + "name": "幸せの☆お守り", + "id": 2745121514, + "id_str": "2745121514", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874854134820860, + "id_str": "505874854134820864", + "text": "@vesperia1985 おはよー!\n今日までなのですよ…!!明日一生来なくていい", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": 505868030329364500, + "in_reply_to_status_id_str": "505868030329364480", + "in_reply_to_user_id": 2286548834, + "in_reply_to_user_id_str": "2286548834", + "in_reply_to_screen_name": "vesperia1985", + "user": { + "id": 2389045190, + "id_str": "2389045190", + "name": "りいこ", + "screen_name": "riiko_dq10", + "location": "", + "description": "サマーエルフです、りいこです。えるおくんラブです!随時ふれぼしゅ〜〜(っ˘ω˘c )*日常のどうでもいいことも呟いてますがよろしくね〜", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 67, + "friends_count": 69, + "listed_count": 0, + "created_at": "Fri Mar 14 13:02:27 +0000 2014", + "favourites_count": 120, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 324, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/503906346815610881/BfSrCoBr_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/503906346815610881/BfSrCoBr_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2389045190/1409232058", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "vesperia1985", + "name": "ユーリ", + "id": 2286548834, + "id_str": "2286548834", + "indices": [ + 0, + 13 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874853778685950, + "id_str": "505874853778685952", + "text": "【映画パンフレット】 永遠の0 (永遠のゼロ) 監督 山崎貴 キャスト 岡田准一、三浦春馬、井上真央東宝(2)11点の新品/中古品を見る: ¥ 500より\n(この商品の現在のランクに関する正式な情報については、アートフレーム... http://t.co/4hbyB1rbQ7", + "source": "IFTTT", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1319883571, + "id_str": "1319883571", + "name": "森林木工家具製作所", + "screen_name": "Furniturewood", + "location": "沖縄", + "description": "家具(かぐ、Furniture)は、家財道具のうち家の中に据え置いて利用する比較的大型の道具類、または元々家に作り付けられている比較的大型の道具類をさす。なお、日本の建築基準法上は、作り付け家具は、建築確認及び完了検査の対象となるが、後から置かれるものについては対象外である。", + "url": "http://t.co/V4oyL0xtZk", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/V4oyL0xtZk", + "expanded_url": "http://astore.amazon.co.jp/furniturewood-22", + "display_url": "astore.amazon.co.jp/furniturewood-…", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 677, + "friends_count": 743, + "listed_count": 1, + "created_at": "Mon Apr 01 07:55:14 +0000 2013", + "favourites_count": 0, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 17210, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/3460466135/c67d9df9b760787b9ed284fe80b1dd31_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3460466135/c67d9df9b760787b9ed284fe80b1dd31_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1319883571/1364804982", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/4hbyB1rbQ7", + "expanded_url": "http://ift.tt/1kT55bk", + "display_url": "ift.tt/1kT55bk", + "indices": [ + 116, + 138 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874852754907140, + "id_str": "505874852754907136", + "text": "RT @siranuga_hotoke: ゴキブリは一世帯に平均して480匹いる。", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 413944345, + "id_str": "413944345", + "name": "泥酔イナバウアー", + "screen_name": "Natade_co_co_21", + "location": "", + "description": "君の瞳にうつる僕に乾杯。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 298, + "friends_count": 300, + "listed_count": 4, + "created_at": "Wed Nov 16 12:52:46 +0000 2011", + "favourites_count": 3125, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 12237, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "FFF04D", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000115928444/9bf5fa13385cc80bfeb097e51af9862a.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000115928444/9bf5fa13385cc80bfeb097e51af9862a.jpeg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/500849752351600640/lMQqIzYj_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/500849752351600640/lMQqIzYj_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/413944345/1403511193", + "profile_link_color": "0099CC", + "profile_sidebar_border_color": "000000", + "profile_sidebar_fill_color": "F6FFD1", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sat Aug 30 23:24:23 +0000 2014", + "id": 505858599411666940, + "id_str": "505858599411666944", + "text": "ゴキブリは一世帯に平均して480匹いる。", + "source": "twittbot.net", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2243896200, + "id_str": "2243896200", + "name": "知らぬが仏bot", + "screen_name": "siranuga_hotoke", + "location": "奈良・京都辺り", + "description": "知らぬが仏な情報をお伝えします。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 3288, + "friends_count": 3482, + "listed_count": 7, + "created_at": "Fri Dec 13 13:16:35 +0000 2013", + "favourites_count": 0, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 1570, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000866399372/ypy5NnPe_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000866399372/ypy5NnPe_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/2243896200/1386997755", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 1, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + "retweet_count": 1, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [], + "user_mentions": [ + { + "screen_name": "siranuga_hotoke", + "name": "知らぬが仏bot", + "id": 2243896200, + "id_str": "2243896200", + "indices": [ + 3, + 19 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:58 +0000 2014", + "id": 505874852603908100, + "id_str": "505874852603908096", + "text": "RT @UARROW_Y: ようかい体操第一を踊る国見英 http://t.co/SXoYWH98as", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 2463035136, + "id_str": "2463035136", + "name": "や", + "screen_name": "yae45", + "location": "", + "description": "きもちわるいことつぶやく用", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 4, + "friends_count": 30, + "listed_count": 0, + "created_at": "Fri Apr 25 10:49:20 +0000 2014", + "favourites_count": 827, + "utc_offset": 32400, + "time_zone": "Irkutsk", + "geo_enabled": false, + "verified": false, + "statuses_count": 390, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/505345820137234433/csFeRxPm_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/505345820137234433/csFeRxPm_normal.jpeg", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:16:45 +0000 2014", + "id": 505871779949051900, + "id_str": "505871779949051904", + "text": "ようかい体操第一を踊る国見英 http://t.co/SXoYWH98as", + "source": "Twitter for Android", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1261662588, + "id_str": "1261662588", + "name": "ゆう矢", + "screen_name": "UARROW_Y", + "location": "つくり出そう国影の波 広げよう国影の輪", + "description": "HQ!! 成人済腐女子。日常ツイート多いです。赤葦京治夢豚クソツイ含みます注意。フォローをお考えの際はプロフご一読お願い致します。FRBお気軽に", + "url": "http://t.co/LFX2XOzb0l", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/LFX2XOzb0l", + "expanded_url": "http://twpf.jp/UARROW_Y", + "display_url": "twpf.jp/UARROW_Y", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 265, + "friends_count": 124, + "listed_count": 12, + "created_at": "Tue Mar 12 10:42:17 +0000 2013", + "favourites_count": 6762, + "utc_offset": 32400, + "time_zone": "Tokyo", + "geo_enabled": true, + "verified": false, + "statuses_count": 55946, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/502095104618663937/IzuPYx3E_normal.png", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/502095104618663937/IzuPYx3E_normal.png", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1261662588/1408618604", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 29, + "favorite_count": 54, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/SXoYWH98as", + "expanded_url": "http://twitter.com/UARROW_Y/status/505871779949051904/photo/1", + "display_url": "pic.twitter.com/SXoYWH98as", + "indices": [ + 15, + 37 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + "retweet_count": 29, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/SXoYWH98as", + "expanded_url": "http://twitter.com/UARROW_Y/status/505871779949051904/photo/1", + "display_url": "pic.twitter.com/SXoYWH98as", + "indices": [ + 29, + 51 + ] + } + ], + "user_mentions": [ + { + "screen_name": "UARROW_Y", + "name": "ゆう矢", + "id": 1261662588, + "id_str": "1261662588", + "indices": [ + 3, + 12 + ] + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "zh" + }, + "created_at": "Sun Aug 31 00:28:57 +0000 2014", + "id": 505874848900341760, + "id_str": "505874848900341760", + "text": "RT @fightcensorship: 李克強總理的臉綠了!在前日南京青奧會閉幕式,觀眾席上一名貪玩韓國少年運動員,竟斗膽用激光筆射向中國總理李克強的臉。http://t.co/HLX9mHcQwe http://t.co/fVVOSML5s8", + "source": "Twitter for iPhone", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 889332218, + "id_str": "889332218", + "name": "民權初步", + "screen_name": "JoeyYoungkm", + "location": "km/cn", + "description": "经历了怎样的曲折才从追求“一致通过”发展到今天人们接受“过半数通过”,正是人们认识到对“一致”甚至是“基本一致”的追求本身就会变成一种独裁。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 313, + "friends_count": 46, + "listed_count": 0, + "created_at": "Thu Oct 18 17:21:17 +0000 2012", + "favourites_count": 24, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 15707, + "lang": "en", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "C0DEED", + "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/378800000563062033/a7e8274752ce36a6cd5bad971ec7d416_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/378800000563062033/a7e8274752ce36a6cd5bad971ec7d416_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/889332218/1388896916", + "profile_link_color": "0084B4", + "profile_sidebar_border_color": "C0DEED", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": true, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweeted_status": { + "metadata": { + "result_type": "recent", + "iso_language_code": "zh" + }, + "created_at": "Sat Aug 30 23:56:27 +0000 2014", + "id": 505866670356070400, + "id_str": "505866670356070401", + "text": "李克強總理的臉綠了!在前日南京青奧會閉幕式,觀眾席上一名貪玩韓國少年運動員,竟斗膽用激光筆射向中國總理李克強的臉。http://t.co/HLX9mHcQwe http://t.co/fVVOSML5s8", + "source": "Twitter Web Client", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 67661086, + "id_str": "67661086", + "name": "※范强※法特姗瑟希蒲※", + "screen_name": "fightcensorship", + "location": "Middle of Nowhere", + "description": "被人指责“封建”、“落后”、“保守”的代表,当代红卫兵攻击对象。致力于言论自由,人权; 倡导资讯公开,反对网络封锁。既不是精英分子,也不是意见领袖,本推言论不代表任何国家、党派和组织,也不标榜伟大、光荣和正确。", + "url": null, + "entities": { + "description": { + "urls": [] + } + }, + "protected": false, + "followers_count": 7143, + "friends_count": 779, + "listed_count": 94, + "created_at": "Fri Aug 21 17:16:22 +0000 2009", + "favourites_count": 364, + "utc_offset": 28800, + "time_zone": "Singapore", + "geo_enabled": false, + "verified": false, + "statuses_count": 16751, + "lang": "en", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "FFFFFF", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/611138516/toeccqnahbpmr0sw9ybv.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/611138516/toeccqnahbpmr0sw9ybv.jpeg", + "profile_background_tile": true, + "profile_image_url": "http://pbs.twimg.com/profile_images/3253137427/3524557d21ef2c04871e985d4d136bdb_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/3253137427/3524557d21ef2c04871e985d4d136bdb_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/67661086/1385608347", + "profile_link_color": "ED1313", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "E0FF92", + "profile_text_color": "000000", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 4, + "favorite_count": 2, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/HLX9mHcQwe", + "expanded_url": "http://is.gd/H3OgTO", + "display_url": "is.gd/H3OgTO", + "indices": [ + 57, + 79 + ] + } + ], + "user_mentions": [], + "media": [ + { + "id": 505866668485386240, + "id_str": "505866668485386241", + "indices": [ + 80, + 102 + ], + "media_url": "http://pbs.twimg.com/media/BwUzDgbIIAEgvhD.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwUzDgbIIAEgvhD.jpg", + "url": "http://t.co/fVVOSML5s8", + "display_url": "pic.twitter.com/fVVOSML5s8", + "expanded_url": "http://twitter.com/fightcensorship/status/505866670356070401/photo/1", + "type": "photo", + "sizes": { + "large": { + "w": 640, + "h": 554, + "resize": "fit" + }, + "medium": { + "w": 600, + "h": 519, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "small": { + "w": 340, + "h": 294, + "resize": "fit" + } + } + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "zh" + }, + "retweet_count": 4, + "favorite_count": 0, + "entities": { + "hashtags": [], + "symbols": [], + "urls": [ + { + "url": "http://t.co/HLX9mHcQwe", + "expanded_url": "http://is.gd/H3OgTO", + "display_url": "is.gd/H3OgTO", + "indices": [ + 78, + 100 + ] + } + ], + "user_mentions": [ + { + "screen_name": "fightcensorship", + "name": "※范强※法特姗瑟希蒲※", + "id": 67661086, + "id_str": "67661086", + "indices": [ + 3, + 19 + ] + } + ], + "media": [ + { + "id": 505866668485386240, + "id_str": "505866668485386241", + "indices": [ + 101, + 123 + ], + "media_url": "http://pbs.twimg.com/media/BwUzDgbIIAEgvhD.jpg", + "media_url_https": "https://pbs.twimg.com/media/BwUzDgbIIAEgvhD.jpg", + "url": "http://t.co/fVVOSML5s8", + "display_url": "pic.twitter.com/fVVOSML5s8", + "expanded_url": "http://twitter.com/fightcensorship/status/505866670356070401/photo/1", + "type": "photo", + "sizes": { + "large": { + "w": 640, + "h": 554, + "resize": "fit" + }, + "medium": { + "w": 600, + "h": 519, + "resize": "fit" + }, + "thumb": { + "w": 150, + "h": 150, + "resize": "crop" + }, + "small": { + "w": 340, + "h": 294, + "resize": "fit" + } + }, + "source_status_id": 505866670356070400, + "source_status_id_str": "505866670356070401" + } + ] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "zh" + }, + { + "metadata": { + "result_type": "recent", + "iso_language_code": "ja" + }, + "created_at": "Sun Aug 31 00:28:56 +0000 2014", + "id": 505874847260352500, + "id_str": "505874847260352513", + "text": "【マイリスト】【彩りりあ】妖怪体操第一 踊ってみた【反転】 http://t.co/PjL9if8OZC #sm24357625", + "source": "ニコニコ動画", + "truncated": false, + "in_reply_to_status_id": null, + "in_reply_to_status_id_str": null, + "in_reply_to_user_id": null, + "in_reply_to_user_id_str": null, + "in_reply_to_screen_name": null, + "user": { + "id": 1609789375, + "id_str": "1609789375", + "name": "食いしん坊前ちゃん", + "screen_name": "2no38mae", + "location": "ニノと二次元の間", + "description": "ニコ動で踊り手やってます!!応援本当に嬉しいですありがとうございます!! ぽっちゃりだけど前向きに頑張る腐女子です。嵐と弱虫ペダルが大好き!【お返事】りぷ(基本は)”○” DM (同業者様を除いて)”×” 動画の転載は絶対にやめてください。 ブログ→http://t.co/8E91tqoeKX  ", + "url": "http://t.co/ulD2e9mcwb", + "entities": { + "url": { + "urls": [ + { + "url": "http://t.co/ulD2e9mcwb", + "expanded_url": "http://www.nicovideo.jp/mylist/37917495", + "display_url": "nicovideo.jp/mylist/37917495", + "indices": [ + 0, + 22 + ] + } + ] + }, + "description": { + "urls": [ + { + "url": "http://t.co/8E91tqoeKX", + "expanded_url": "http://ameblo.jp/2no38mae/", + "display_url": "ameblo.jp/2no38mae/", + "indices": [ + 125, + 147 + ] + } + ] + } + }, + "protected": false, + "followers_count": 560, + "friends_count": 875, + "listed_count": 11, + "created_at": "Sun Jul 21 05:09:43 +0000 2013", + "favourites_count": 323, + "utc_offset": null, + "time_zone": null, + "geo_enabled": false, + "verified": false, + "statuses_count": 3759, + "lang": "ja", + "contributors_enabled": false, + "is_translator": false, + "is_translation_enabled": false, + "profile_background_color": "F2C6E4", + "profile_background_image_url": "http://pbs.twimg.com/profile_background_images/378800000029400927/114b242f5d838ec7cb098ea5db6df413.jpeg", + "profile_background_image_url_https": "https://pbs.twimg.com/profile_background_images/378800000029400927/114b242f5d838ec7cb098ea5db6df413.jpeg", + "profile_background_tile": false, + "profile_image_url": "http://pbs.twimg.com/profile_images/487853237723095041/LMBMGvOc_normal.jpeg", + "profile_image_url_https": "https://pbs.twimg.com/profile_images/487853237723095041/LMBMGvOc_normal.jpeg", + "profile_banner_url": "https://pbs.twimg.com/profile_banners/1609789375/1375752225", + "profile_link_color": "FF9EDD", + "profile_sidebar_border_color": "FFFFFF", + "profile_sidebar_fill_color": "DDEEF6", + "profile_text_color": "333333", + "profile_use_background_image": true, + "default_profile": false, + "default_profile_image": false, + "following": false, + "follow_request_sent": false, + "notifications": false + }, + "geo": null, + "coordinates": null, + "place": null, + "contributors": null, + "retweet_count": 0, + "favorite_count": 0, + "entities": { + "hashtags": [ + { + "text": "sm24357625", + "indices": [ + 53, + 64 + ] + } + ], + "symbols": [], + "urls": [ + { + "url": "http://t.co/PjL9if8OZC", + "expanded_url": "http://nico.ms/sm24357625", + "display_url": "nico.ms/sm24357625", + "indices": [ + 30, + 52 + ] + } + ], + "user_mentions": [] + }, + "favorited": false, + "retweeted": false, + "possibly_sensitive": false, + "lang": "ja" + } + ], + "search_metadata": { + "completed_in": 0.087, + "max_id": 505874924095815700, + "max_id_str": "505874924095815681", + "next_results": "?max_id=505874847260352512&q=%E4%B8%80&count=100&include_entities=1", + "query": "%E4%B8%80", + "refresh_url": "?since_id=505874924095815681&q=%E4%B8%80&include_entities=1", + "count": 100, + "since_id": 0, + "since_id_str": "0" + } +} \ No newline at end of file diff --git a/benchmark/encoder.rb b/benchmark/encoder.rb new file mode 100644 index 000000000..f29334bd9 --- /dev/null +++ b/benchmark/encoder.rb @@ -0,0 +1,80 @@ +require "benchmark/ips" +require "json" +require "date" +begin + require "oj" + Oj.default_options = Oj.default_options.merge(mode: :compat) +rescue LoadError +end + +if ENV["ONLY"] + RUN = ENV["ONLY"].split(/[,: ]/).map{|x| [x.to_sym, true] }.to_h + RUN.default = false +elsif ENV["EXCEPT"] + RUN = ENV["EXCEPT"].split(/[,: ]/).map{|x| [x.to_sym, false] }.to_h + RUN.default = true +else + RUN = Hash.new(true) +end + +def implementations(ruby_obj) + coder = JSON::Coder.new + implementations = { + json: ["json", proc { JSON.generate(ruby_obj) }], + json_coder: ["json_coder", proc { coder.dump(ruby_obj) }], + } + + if defined?(Oj) + implementations[:oj] = ["oj", proc { Oj.dump(ruby_obj) }] + end + + implementations +end + +def benchmark_encoding(benchmark_name, ruby_obj, check_expected: true, except: []) + json_output = JSON.dump(ruby_obj) + puts "== Encoding #{benchmark_name} (#{json_output.bytesize} bytes)" + + impls = implementations(ruby_obj).select { |name| RUN[name] } + except.each { |i| impls.delete(i) } + + Benchmark.ips do |x| + expected = ::JSON.dump(ruby_obj) if check_expected + impls.values.each do |name, block| + begin + result = block.call + if check_expected && expected != result + puts "#{name} does not match expected output. Skipping" + puts "Expected:" + '-' * 40 + puts expected + puts "Actual:" + '-' * 40 + puts result + puts '-' * 40 + next + end + rescue => error + puts "#{name} unsupported (#{error})" + next + end + x.report(name, &block) + end + x.compare!(order: :baseline) + end + puts +end + +benchmark_encoding "small mixed", [1, "string", { a: 1, b: 2 }, [3, 4, 5]] +benchmark_encoding "small nested array", [[1,2,3,4,5]]*10 +benchmark_encoding "small hash", { "username" => "jhawthorn", "id" => 123, "event" => "wrote json serializer" } + +benchmark_encoding "mixed utf8", ([("a" * 5000) + "€" + ("a" * 5000)] * 500) +benchmark_encoding "mostly utf8", ([("€" * 3333)] * 500) + +benchmark_encoding "integers", (1_000_000..1_001_000).to_a, except: %i(json_state) +benchmark_encoding "activitypub.json", JSON.load_file("#{__dir__}/data/activitypub.json") +benchmark_encoding "citm_catalog.json", JSON.load_file("#{__dir__}/data/citm_catalog.json") +benchmark_encoding "twitter.json", JSON.load_file("#{__dir__}/data/twitter.json") + +benchmark_encoding "canada.json", JSON.load_file("#{__dir__}/data/canada.json"), check_expected: false + +benchmark_encoding "many #to_json calls", [{object: Object.new, int: 12, float: 54.3, class: Float, time: Time.now, date: Date.today}] * 20 diff --git a/benchmark/parser.rb b/benchmark/parser.rb new file mode 100644 index 000000000..0ec73f4c1 --- /dev/null +++ b/benchmark/parser.rb @@ -0,0 +1,56 @@ +require "benchmark/ips" +require "json" +begin + require "oj" +rescue LoadError +end + +begin + require "rapidjson" +rescue LoadError +end + +if ENV["ONLY"] + RUN = ENV["ONLY"].split(/[,: ]/).map{|x| [x.to_sym, true] }.to_h + RUN.default = false +elsif ENV["EXCEPT"] + RUN = ENV["EXCEPT"].split(/[,: ]/).map{|x| [x.to_sym, false] }.to_h + RUN.default = true +else + RUN = Hash.new(true) +end + +def benchmark_parsing(name, json_output) + puts "== Parsing #{name} (#{json_output.bytesize} bytes)" + coder = JSON::Coder.new + + Benchmark.ips do |x| + x.report("json") { JSON.parse(json_output) } if RUN[:json] + x.report("json_coder") { coder.load(json_output) } if RUN[:json_coder] + + if defined?(Oj) + x.report("oj") { Oj.load(json_output) } if RUN[:oj] + x.report("Oj::Parser") { Oj::Parser.new(:usual).parse(json_output) } if RUN[:oj] + end + + if defined?(RapidJSON) + x.report("rapidjson") { RapidJSON.parse(json_output) } if RUN[:rapidjson] + end + + x.compare!(order: :baseline) + end + puts +end + +benchmark_parsing "small nested array", JSON.dump([[1,2,3,4,5]]*10) +benchmark_parsing "small hash", JSON.dump({ "username" => "jhawthorn", "id" => 123, "event" => "wrote json serializer" }) +benchmark_parsing "test from oj", <<~'JSON' + {"a":"Alpha","b":true,"c":12345,"d":[true,[false,[-123456789,null],3.9676,["Something else.",false],null]], + "e":{"zero":null,"one":1,"two":2,"three":[3],"four":[0,1,2,3,4]},"f":null, + "h":{"a":{"b":{"c":{"d":{"e":{"f":{"g":null}}}}}}},"i":[[[[[[[null]]]]]]]} +JSON + +benchmark_parsing "activitypub.json", File.read("#{__dir__}/data/activitypub.json") +benchmark_parsing "twitter.json", File.read("#{__dir__}/data/twitter.json") +benchmark_parsing "citm_catalog.json", File.read("#{__dir__}/data/citm_catalog.json") +benchmark_parsing "float parsing", File.read("#{__dir__}/data/canada.json") diff --git a/benchmark/standalone.rb b/benchmark/standalone.rb new file mode 100644 index 000000000..ebe759c5f --- /dev/null +++ b/benchmark/standalone.rb @@ -0,0 +1,41 @@ +require 'benchmark/ips' + +$:.unshift File.expand_path('../ext', __dir__) +$:.unshift File.expand_path('../lib', __dir__) + +bench, mode = ARGV + +if mode == 'pure' + require 'json/pure' +else + require 'json/ext' +end + +bench_dump = bench == 'dump' +if bench_dump + p JSON.generator +else + p JSON.parser +end + +str = File.read("#{__dir__}/data/ohai.json") +obj = JSON.load(str) + +Benchmark.ips do |x| + unless RUBY_ENGINE == 'ruby' + x.warmup = 5 + x.iterations = 5 + end + + if bench_dump + x.report('JSON.dump(obj)') do # max_nesting: false, allow_nan: true + JSON.dump(obj) + end + else + x.report('JSON.load(str)') do # max_nesting: false, allow_nan: true, allow_blank: true + JSON.load(str) + end + end + + x.compare! +end diff --git a/ext/json/ext/fbuffer/fbuffer.h b/ext/json/ext/fbuffer/fbuffer.h index dc8f406b5..3f95f1f76 100644 --- a/ext/json/ext/fbuffer/fbuffer.h +++ b/ext/json/ext/fbuffer/fbuffer.h @@ -1,89 +1,75 @@ - #ifndef _FBUFFER_H_ #define _FBUFFER_H_ -#include "ruby.h" - -#ifndef RHASH_SIZE -#define RHASH_SIZE(hsh) (RHASH(hsh)->tbl->num_entries) -#endif - -#ifndef RFLOAT_VALUE -#define RFLOAT_VALUE(val) (RFLOAT(val)->value) -#endif - -#ifndef RARRAY_LEN -#define RARRAY_LEN(ARRAY) RARRAY(ARRAY)->len -#endif -#ifndef RSTRING_PTR -#define RSTRING_PTR(string) RSTRING(string)->ptr -#endif -#ifndef RSTRING_LEN -#define RSTRING_LEN(string) RSTRING(string)->len -#endif - -#ifdef PRIsVALUE -# define RB_OBJ_CLASSNAME(obj) rb_obj_class(obj) -# define RB_OBJ_STRING(obj) (obj) -#else -# define PRIsVALUE "s" -# define RB_OBJ_CLASSNAME(obj) rb_obj_classname(obj) -# define RB_OBJ_STRING(obj) StringValueCStr(obj) -#endif +#include "../json.h" +#include "../vendor/jeaiii-ltoa.h" -#ifdef HAVE_RUBY_ENCODING_H -#include "ruby/encoding.h" -#define FORCE_UTF8(obj) rb_enc_associate((obj), rb_utf8_encoding()) -#else -#define FORCE_UTF8(obj) -#endif - -/* We don't need to guard objects for rbx, so let's do nothing at all. */ -#ifndef RB_GC_GUARD -#define RB_GC_GUARD(object) -#endif +enum fbuffer_type { + FBUFFER_HEAP_ALLOCATED = 0, + FBUFFER_STACK_ALLOCATED = 1, +}; typedef struct FBufferStruct { - unsigned long initial_length; + enum fbuffer_type type; + size_t initial_length; + size_t len; + size_t capa; +#if JSON_DEBUG + size_t requested; +#endif char *ptr; - unsigned long len; - unsigned long capa; + VALUE io; } FBuffer; +#define FBUFFER_STACK_SIZE 512 +#define FBUFFER_IO_BUFFER_SIZE (16384 - 1) #define FBUFFER_INITIAL_LENGTH_DEFAULT 1024 -#define FBUFFER_PTR(fb) (fb->ptr) -#define FBUFFER_LEN(fb) (fb->len) -#define FBUFFER_CAPA(fb) (fb->capa) +#define FBUFFER_PTR(fb) ((fb)->ptr) +#define FBUFFER_LEN(fb) ((fb)->len) +#define FBUFFER_CAPA(fb) ((fb)->capa) #define FBUFFER_PAIR(fb) FBUFFER_PTR(fb), FBUFFER_LEN(fb) -static FBuffer *fbuffer_alloc(unsigned long initial_length); static void fbuffer_free(FBuffer *fb); static void fbuffer_clear(FBuffer *fb); -static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len); -#ifdef JSON_GENERATOR +static void fbuffer_append(FBuffer *fb, const char *newstr, size_t len); static void fbuffer_append_long(FBuffer *fb, long number); +static inline void fbuffer_append_char(FBuffer *fb, char newchr); +static VALUE fbuffer_finalize(FBuffer *fb); + +static void fbuffer_init(FBuffer *fb, size_t initial_length, VALUE io, char *stack_buffer, size_t stack_buffer_size) +{ + if (RTEST(io)) { + JSON_ASSERT(fb->type == FBUFFER_HEAP_ALLOCATED); + fb->io = io; + fb->initial_length = (initial_length > 0) ? initial_length : FBUFFER_IO_BUFFER_SIZE; + } else { + fb->type = FBUFFER_STACK_ALLOCATED; + fb->ptr = stack_buffer; + fb->capa = stack_buffer_size; + fb->initial_length = (initial_length > 0) ? initial_length : FBUFFER_INITIAL_LENGTH_DEFAULT; + } +#if JSON_DEBUG + fb->requested = 0; #endif -static void fbuffer_append_char(FBuffer *fb, char newchr); -#ifdef JSON_GENERATOR -static FBuffer *fbuffer_dup(FBuffer *fb); -static VALUE fbuffer_to_s(FBuffer *fb); -#endif +} -static FBuffer *fbuffer_alloc(unsigned long initial_length) +static inline void fbuffer_consumed(FBuffer *fb, size_t consumed) { - FBuffer *fb; - if (initial_length <= 0) initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT; - fb = ALLOC(FBuffer); - memset((void *) fb, 0, sizeof(FBuffer)); - fb->initial_length = initial_length; - return fb; +#if JSON_DEBUG + if (consumed > fb->requested) { + rb_bug("fbuffer: Out of bound write"); + } + fb->requested = 0; +#endif + fb->len += consumed; } static void fbuffer_free(FBuffer *fb) { - if (fb->ptr) ruby_xfree(fb->ptr); - ruby_xfree(fb); + if (fb->ptr && fb->type == FBUFFER_HEAP_ALLOCATED) { + JSON_SIZED_FREE_N(fb->ptr, fb->capa); + } } static void fbuffer_clear(FBuffer *fb) @@ -91,97 +77,187 @@ static void fbuffer_clear(FBuffer *fb) fb->len = 0; } -static void fbuffer_inc_capa(FBuffer *fb, unsigned long requested) +static void fbuffer_flush(FBuffer *fb) { - unsigned long required; + rb_io_write(fb->io, rb_utf8_str_new(fb->ptr, fb->len)); + fbuffer_clear(fb); +} + +static void fbuffer_realloc(FBuffer *fb, size_t new_capa) +{ + if (new_capa > fb->capa) { + if (fb->type == FBUFFER_STACK_ALLOCATED) { + const char *old_buffer = fb->ptr; + fb->ptr = ALLOC_N(char, new_capa); + fb->type = FBUFFER_HEAP_ALLOCATED; + MEMCPY(fb->ptr, old_buffer, char, fb->len); + } else { + JSON_SIZED_REALLOC_N(fb->ptr, char, new_capa, fb->capa); + } + fb->capa = new_capa; + } +} - if (!fb->ptr) { - fb->ptr = ALLOC_N(char, fb->initial_length); - fb->capa = fb->initial_length; +static void fbuffer_do_inc_capa(FBuffer *fb, size_t requested) +{ + if (RB_UNLIKELY(fb->io)) { + if (fb->capa != 0) { + fbuffer_flush(fb); + if (RB_LIKELY(requested < fb->capa)) { + return; + } + } } - for (required = fb->capa; requested > required - fb->len; required <<= 1); + size_t new_capa = fb->capa ? fb->capa : fb->initial_length; + size_t needed_capa = requested + fb->len; - if (required > fb->capa) { - REALLOC_N(fb->ptr, char, required); - fb->capa = required; + while (new_capa < needed_capa) { + new_capa *= 2; } + + fbuffer_realloc(fb, new_capa); } -static void fbuffer_append(FBuffer *fb, const char *newstr, unsigned long len) +static inline void fbuffer_inc_capa(FBuffer *fb, size_t requested) { - if (len > 0) { - fbuffer_inc_capa(fb, len); - MEMCPY(fb->ptr + fb->len, newstr, char, len); - fb->len += len; +#if JSON_DEBUG + fb->requested = requested; +#endif + + if (RB_UNLIKELY(requested > fb->capa - fb->len)) { + fbuffer_do_inc_capa(fb, requested); } } -#ifdef JSON_GENERATOR -static void fbuffer_append_str(FBuffer *fb, VALUE str) +static inline size_t fbuffer_size_mul_or_raise(size_t a, size_t b) { - const char *newstr = StringValuePtr(str); - unsigned long len = RSTRING_LEN(str); + size_t result = a * b; + if (RB_UNLIKELY(a != 0 && (result / a) != b)) { + rb_raise(rb_eArgError, "Buffer overflow, the resulting document is too large to be generated"); + } + return result; +} - RB_GC_GUARD(str); +static inline void fbuffer_append_reserved(FBuffer *fb, const char *newstr, size_t len) +{ + MEMCPY(fb->ptr + fb->len, newstr, char, len); + fbuffer_consumed(fb, len); +} - fbuffer_append(fb, newstr, len); +static inline void fbuffer_append(FBuffer *fb, const char *newstr, size_t len) +{ + if (len > 0) { + fbuffer_inc_capa(fb, len); + fbuffer_append_reserved(fb, newstr, len); + } } -#endif -static void fbuffer_append_char(FBuffer *fb, char newchr) +/* Appends a character into a buffer. The buffer needs to have sufficient capacity, via fbuffer_inc_capa(...). */ +static inline void fbuffer_append_reserved_char(FBuffer *fb, char chr) { - fbuffer_inc_capa(fb, 1); - *(fb->ptr + fb->len) = newchr; +#if JSON_DEBUG + if (fb->requested < 1) { + rb_bug("fbuffer: unreserved write"); + } + fb->requested--; +#endif + + fb->ptr[fb->len] = chr; fb->len++; } -#ifdef JSON_GENERATOR -static void freverse(char *start, char *end) +static void fbuffer_append_str(FBuffer *fb, VALUE str) { - char c; + if (RB_UNLIKELY(fb->io)) { + // Growing the buffer may flush it and invoke arbitrary Ruby code. + str = rb_str_new_frozen(str); + } + const char *ptr; + size_t len; + RSTRING_GETMEM(str, ptr, len); + + fbuffer_append(fb, ptr, len); + RB_GC_GUARD(str); +} - while (end > start) { - c = *end, *end-- = *start, *start++ = c; +static void fbuffer_append_str_repeat(FBuffer *fb, VALUE str, size_t repeat) +{ + const char *ptr; + size_t len; + RSTRING_GETMEM(str, ptr, len); + + fbuffer_inc_capa(fb, fbuffer_size_mul_or_raise(repeat, len)); + while (repeat) { +#if JSON_DEBUG + fb->requested = len; +#endif + fbuffer_append_reserved(fb, ptr, len); + repeat--; } + RB_GC_GUARD(str); } -static long fltoa(long number, char *buf) +static inline void fbuffer_append_char(FBuffer *fb, char newchr) { - static char digits[] = "0123456789"; - long sign = number; - char* tmp = buf; + fbuffer_inc_capa(fb, 1); + *(fb->ptr + fb->len) = newchr; + fbuffer_consumed(fb, 1); +} - if (sign < 0) number = -number; - do *tmp++ = digits[number % 10]; while (number /= 10); - if (sign < 0) *tmp++ = '-'; - freverse(buf, tmp - 1); - return tmp - buf; +static inline char *fbuffer_cursor(FBuffer *fb) +{ + return fb->ptr + fb->len; } -static void fbuffer_append_long(FBuffer *fb, long number) +static inline void fbuffer_advance_to(FBuffer *fb, char *end) { - char buf[20]; - unsigned long len = fltoa(number, buf); - fbuffer_append(fb, buf, len); + fbuffer_consumed(fb, (end - fb->ptr) - fb->len); } -static FBuffer *fbuffer_dup(FBuffer *fb) +/* + * Appends the decimal string representation of \a number into the buffer. + */ +static void fbuffer_append_long(FBuffer *fb, long number) { - unsigned long len = fb->len; - FBuffer *result; + /* + * The jeaiii_ultoa() function produces digits left-to-right, + * allowing us to write directly into the buffer, but we don't know + * the number of resulting characters. + * + * We do know, however, that the `number` argument is always in the + * range 0xc000000000000000 to 0x3fffffffffffffff, or, in decimal, + * -4611686018427387904 to 4611686018427387903. The max number of chars + * generated is therefore 20 (including a potential sign character). + */ + + static const int MAX_CHARS_FOR_LONG = 20; + + fbuffer_inc_capa(fb, MAX_CHARS_FOR_LONG); + + if (number < 0) { + fbuffer_append_reserved_char(fb, '-'); + + /* + * Since number is always > LONG_MIN, `-number` will not overflow + * and is always the positive abs() value. + */ + number = -number; + } - result = fbuffer_alloc(len); - fbuffer_append(result, FBUFFER_PAIR(fb)); - return result; + char *end = jeaiii_ultoa(fbuffer_cursor(fb), number); + fbuffer_advance_to(fb, end); } -static VALUE fbuffer_to_s(FBuffer *fb) +static VALUE fbuffer_finalize(FBuffer *fb) { - VALUE result = rb_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb)); - fbuffer_free(fb); - FORCE_UTF8(result); - return result; + if (fb->io) { + fbuffer_flush(fb); + rb_io_flush(fb->io); + return fb->io; + } else { + return rb_utf8_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb)); + } } -#endif -#endif + +#endif // _FBUFFER_H_ diff --git a/ext/json/ext/generator/depend b/ext/json/ext/generator/depend index 1a042a250..43fd7d33a 100644 --- a/ext/json/ext/generator/depend +++ b/ext/json/ext/generator/depend @@ -1 +1,8 @@ -generator.o: generator.c generator.h $(srcdir)/../fbuffer/fbuffer.h +# AUTOGENERATED DEPENDENCIES START +generator.o: $(srcdir)/../fbuffer/fbuffer.h +generator.o: $(srcdir)/../json.h +generator.o: $(srcdir)/../simd/simd.h +generator.o: $(srcdir)/../vendor/fpconv.c +generator.o: $(srcdir)/../vendor/jeaiii-ltoa.h +generator.o: generator.c +# AUTOGENERATED DEPENDENCIES END diff --git a/ext/json/ext/generator/extconf.rb b/ext/json/ext/generator/extconf.rb index 8627c5f4b..33af03ea3 100644 --- a/ext/json/ext/generator/extconf.rb +++ b/ext/json/ext/generator/extconf.rb @@ -1,4 +1,19 @@ require 'mkmf' -$defs << "-DJSON_GENERATOR" -create_makefile 'json/ext/generator' +if RUBY_ENGINE == 'truffleruby' + # The pure-Ruby generator is faster on TruffleRuby, so skip compiling the generator extension + File.write('Makefile', dummy_makefile("").join) +else + append_cflags("-std=c99") + have_const("RUBY_TYPED_EMBEDDABLE", "ruby.h") # RUBY_VERSION >= 3.3 + have_func("ruby_xfree_sized", "ruby.h") # RUBY_VERSION >= 4.1 + + $defs << "-DJSON_GENERATOR" + $defs << "-DJSON_DEBUG" if ENV.fetch("JSON_DEBUG", "0") != "0" + + if enable_config('generator-use-simd', default=!ENV["JSON_DISABLE_SIMD"]) + load __dir__ + "/../simd/conf.rb" + end + + create_makefile 'json/ext/generator' +end diff --git a/ext/json/ext/generator/generator.c b/ext/json/ext/generator/generator.c index cc8c3a7c3..87da10027 100644 --- a/ext/json/ext/generator/generator.c +++ b/ext/json/ext/generator/generator.c @@ -1,1034 +1,1405 @@ +#include "../json.h" #include "../fbuffer/fbuffer.h" -#include "generator.h" +#include "../vendor/fpconv.c" -#ifdef HAVE_RUBY_ENCODING_H -static VALUE CEncoding_UTF_8; -static ID i_encoding, i_encode; +#include +#include + +#include "../simd/simd.h" + +/* ruby api and some helpers */ + +typedef struct JSON_Generator_StateStruct { + VALUE indent; + VALUE space; + VALUE space_before; + VALUE object_nl; + VALUE array_nl; + VALUE as_json; + + long max_nesting; + long depth; + long buffer_initial_length; + + bool allow_duplicate_key; + bool as_json_single_arg; + bool allow_nan; + bool ascii_only; + bool script_safe; + bool strict; + bool rfc8785; + VALUE sort_keys; +} JSON_Generator_State; + +static VALUE mJSON, cState, cFragment, eGeneratorError, eNestingError, Encoding_UTF_8, default_sort_keys_proc, + rfc8785_number_formatter_proc, rfc8785_sort_keys_proc; + +static ID i_to_s, i_to_json, i_new, i_encode; +static VALUE sym_indent, sym_space, sym_space_before, sym_object_nl, sym_array_nl, sym_max_nesting, sym_allow_nan, sym_allow_duplicate_key, + sym_ascii_only, sym_depth, sym_buffer_initial_length, sym_script_safe, sym_strict, sym_as_json, sym_sort_keys, sym_rfc8785; + + +#define GET_STATE_TO(self, state) \ + TypedData_Get_Struct(self, JSON_Generator_State, &JSON_Generator_State_type, state) + +#define GET_STATE(self) \ + JSON_Generator_State *state; \ + GET_STATE_TO(self, state) + +struct generate_json_data; + +typedef void (*generator_func)(FBuffer *buffer, struct generate_json_data *data, VALUE obj); + +struct generate_json_data { + FBuffer *buffer; + VALUE vstate; + JSON_Generator_State *state; + VALUE obj; + generator_func func; + long depth; +}; + +static SIMD_Implementation simd_impl; + +static VALUE cState_from_state_s(VALUE self, VALUE opts); +static VALUE cState_partial_generate(VALUE self, VALUE obj, generator_func, VALUE io); +static void generate_json(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, VALUE obj); +static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, VALUE obj); + +static int usascii_encindex, utf8_encindex; + +NORETURN(static void) raise_generator_error_str(VALUE invalid_object, VALUE str) +{ + rb_enc_associate_index(str, utf8_encindex); + VALUE exc = rb_exc_new_str(eGeneratorError, str); + rb_ivar_set(exc, rb_intern("@invalid_object"), invalid_object); + rb_exc_raise(exc); +} + +#ifdef RBIMPL_ATTR_FORMAT +RBIMPL_ATTR_FORMAT(RBIMPL_PRINTF_FORMAT, 2, 3) #endif +NORETURN(static void) raise_generator_error(VALUE invalid_object, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + VALUE str = rb_vsprintf(fmt, args); + va_end(args); + raise_generator_error_str(invalid_object, str); +} -static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject, - mHash, mArray, -#ifdef RUBY_INTEGER_UNIFICATION - mInteger, +// 0 - single byte char that don't need to be escaped. +// (x | 8) - char that needs to be escaped. +static const unsigned char CHAR_LENGTH_MASK = 7; +static const unsigned char ESCAPE_MASK = 8; + +typedef struct _search_state { + const char *ptr; + const char *end; + const char *cursor; + FBuffer *buffer; + +#ifdef HAVE_SIMD + const char *chunk_base; + const char *chunk_end; + bool has_matches; + +#if defined(HAVE_SIMD_NEON) + uint64_t matches_mask; +#elif defined(HAVE_SIMD_SSE2) + int matches_mask; #else - mFixnum, mBignum, -#endif - mFloat, mString, mString_Extend, - mTrueClass, mFalseClass, mNilClass, eGeneratorError, - eNestingError, CRegexp_MULTILINE, CJSON_SAFE_STATE_PROTOTYPE, - i_SAFE_STATE_PROTOTYPE; +#error "Unknown SIMD Implementation." +#endif /* HAVE_SIMD_NEON */ +#endif /* HAVE_SIMD */ +} search_state; + +ALWAYS_INLINE(static) void search_flush(search_state *search) +{ + // Do not remove this conditional without profiling, specifically escape-heavy text. + // escape_UTF8_char_basic will advance search->ptr and search->cursor (effectively a search_flush). + // For back-to-back characters that need to be escaped, specifically for the SIMD code paths, this method + // will be called just before calling escape_UTF8_char_basic. There will be no characters to append for the + // consecutive characters that need to be escaped. While the fbuffer_append is a no-op if + // nothing needs to be flushed, we can save a few memory references with this conditional. + if (search->ptr > search->cursor) { + fbuffer_append(search->buffer, search->cursor, search->ptr - search->cursor); + search->cursor = search->ptr; + } +} -static ID i_to_s, i_to_json, i_new, i_indent, i_space, i_space_before, - i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only, - i_pack, i_unpack, i_create_id, i_extend, i_key_p, - i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth, - i_buffer_initial_length, i_dup; +static const unsigned char escape_table_basic[256] = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; -/* - * Copyright 2001-2004 Unicode, Inc. +static inline unsigned char search_escape_basic(search_state *search) +{ + while (search->ptr < search->end) { + if (RB_UNLIKELY(escape_table_basic[(const unsigned char)*search->ptr])) { + search_flush(search); + return 1; + } else { + search->ptr++; + } + } + search_flush(search); + return 0; +} + +ALWAYS_INLINE(static) void escape_UTF8_char_basic(search_state *search) +{ + const unsigned char ch = (unsigned char)*search->ptr; + switch (ch) { + case '"': fbuffer_append(search->buffer, "\\\"", 2); break; + case '\\': fbuffer_append(search->buffer, "\\\\", 2); break; + case '/': fbuffer_append(search->buffer, "\\/", 2); break; + case '\b': fbuffer_append(search->buffer, "\\b", 2); break; + case '\f': fbuffer_append(search->buffer, "\\f", 2); break; + case '\n': fbuffer_append(search->buffer, "\\n", 2); break; + case '\r': fbuffer_append(search->buffer, "\\r", 2); break; + case '\t': fbuffer_append(search->buffer, "\\t", 2); break; + default: { + const char *hexdig = "0123456789abcdef"; + char scratch[6] = { '\\', 'u', '0', '0', 0, 0 }; + scratch[4] = hexdig[(ch >> 4) & 0xf]; + scratch[5] = hexdig[ch & 0xf]; + fbuffer_append(search->buffer, scratch, 6); + break; + } + } + search->ptr++; + search->cursor = search->ptr; +} + +/* Converts in_string to a JSON string (without the wrapping '"' + * characters) in FBuffer out_buffer. + * + * Character are JSON-escaped according to: * - * Disclaimer + * - Always: ASCII control characters (0x00-0x1F), dquote, and + * backslash. * - * This source code is provided as is by Unicode, Inc. No claims are - * made as to fitness for any particular purpose. No warranties of any - * kind are expressed or implied. The recipient agrees to determine - * applicability of information provided. If this file has been - * purchased on magnetic or optical media from Unicode, Inc., the - * sole remedy for any claim will be exchange of defective media - * within 90 days of receipt. + * - If out_ascii_only: non-ASCII characters (>0x7F) * - * Limitations on Rights to Redistribute This Code + * - If script_safe: forwardslash (/), line separator (U+2028), and + * paragraph separator (U+2029) * - * Unicode, Inc. hereby grants the right to freely use the information - * supplied in this file in the creation of products supporting the - * Unicode Standard, and to make copies of this file in any form - * for internal or external distribution as long as this notice - * remains attached. + * Everything else (should be UTF-8) is just passed through and + * appended to the result. */ -/* - * Index into the table below with the first byte of a UTF-8 sequence to - * get the number of trailing bytes that are supposed to follow it. - * Note that *legal* UTF-8 values can't have 4 or 5-bytes. The table is - * left as-is for anyone who may want to do such conversion, which was - * allowed in earlier algorithms. - */ -static const char trailingBytesForUTF8[256] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5 -}; -/* - * Magic values subtracted from a buffer value during UTF8 conversion. - * This table contains as many values as there might be trailing bytes - * in a UTF-8 sequence. - */ -static const UTF32 offsetsFromUTF8[6] = { 0x00000000UL, 0x00003080UL, 0x000E2080UL, - 0x03C82080UL, 0xFA082080UL, 0x82082080UL }; +#if defined(HAVE_SIMD_NEON) +static inline unsigned char search_escape_basic_neon(search_state *search); +#elif defined(HAVE_SIMD_SSE2) +static inline unsigned char search_escape_basic_sse2(search_state *search); +#endif -/* - * Utility routine to tell whether a sequence of bytes is legal UTF-8. - * This must be called with the length pre-determined by the first byte. - * If not calling this from ConvertUTF8to*, then the length can be set by: - * length = trailingBytesForUTF8[*source]+1; - * and the sequence is illegal right away if there aren't that many bytes - * available. - * If presented with a length > 4, this returns 0. The Unicode - * definition of UTF-8 goes up to 4-byte sequences. - */ -static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length) -{ - UTF8 a; - const UTF8 *srcptr = source+length; - switch (length) { - default: return 0; - /* Everything else falls through when "1"... */ - case 4: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; - case 3: if ((a = (*--srcptr)) < 0x80 || a > 0xBF) return 0; - case 2: if ((a = (*--srcptr)) > 0xBF) return 0; - - switch (*source) { - /* no fall-through in this inner switch */ - case 0xE0: if (a < 0xA0) return 0; break; - case 0xED: if (a > 0x9F) return 0; break; - case 0xF0: if (a < 0x90) return 0; break; - case 0xF4: if (a > 0x8F) return 0; break; - default: if (a < 0x80) return 0; - } +static inline unsigned char search_escape_basic(search_state *search); - case 1: if (*source >= 0x80 && *source < 0xC2) return 0; +static inline void convert_UTF8_to_JSON(search_state *search) +{ +#ifdef HAVE_SIMD +#if defined(HAVE_SIMD_NEON) + while (search_escape_basic_neon(search)) { + escape_UTF8_char_basic(search); } - if (*source > 0xF4) return 0; - return 1; +#elif defined(HAVE_SIMD_SSE2) + if (simd_impl == SIMD_SSE2) { + while (search_escape_basic_sse2(search)) { + escape_UTF8_char_basic(search); + } + return; + } + while (search_escape_basic(search)) { + escape_UTF8_char_basic(search); + } +#endif +#else + while (search_escape_basic(search)) { + escape_UTF8_char_basic(search); + } +#endif /* HAVE_SIMD */ +} + +static inline void escape_UTF8_char(search_state *search, unsigned char ch_len) +{ + const unsigned char ch = (unsigned char)*search->ptr; + switch (ch_len) { + case 1: { + switch (ch) { + case '"': fbuffer_append(search->buffer, "\\\"", 2); break; + case '\\': fbuffer_append(search->buffer, "\\\\", 2); break; + case '/': fbuffer_append(search->buffer, "\\/", 2); break; + case '\b': fbuffer_append(search->buffer, "\\b", 2); break; + case '\f': fbuffer_append(search->buffer, "\\f", 2); break; + case '\n': fbuffer_append(search->buffer, "\\n", 2); break; + case '\r': fbuffer_append(search->buffer, "\\r", 2); break; + case '\t': fbuffer_append(search->buffer, "\\t", 2); break; + default: { + const char *hexdig = "0123456789abcdef"; + char scratch[6] = { '\\', 'u', '0', '0', 0, 0 }; + scratch[4] = hexdig[(ch >> 4) & 0xf]; + scratch[5] = hexdig[ch & 0xf]; + fbuffer_append(search->buffer, scratch, 6); + break; + } + } + break; + } + case 3: { + if (search->ptr[2] & 1) { + fbuffer_append(search->buffer, "\\u2029", 6); + } else { + fbuffer_append(search->buffer, "\\u2028", 6); + } + break; + } + } + search->cursor = (search->ptr += ch_len); } -/* Escapes the UTF16 character and stores the result in the buffer buf. */ -static void unicode_escape(char *buf, UTF16 character) +#ifdef HAVE_SIMD + +ALWAYS_INLINE(static) char *copy_remaining_bytes(search_state *search, unsigned long vec_len, unsigned long len) { - const char *digits = "0123456789abcdef"; + RBIMPL_ASSERT_OR_ASSUME(len < vec_len); + + // Flush the buffer so everything up until the last 'len' characters are unflushed. + search_flush(search); + + FBuffer *buf = search->buffer; + fbuffer_inc_capa(buf, vec_len); - buf[2] = digits[character >> 12]; - buf[3] = digits[(character >> 8) & 0xf]; - buf[4] = digits[(character >> 4) & 0xf]; - buf[5] = digits[character & 0xf]; + char *s = (buf->ptr + buf->len); + + // Pad the buffer with dummy characters that won't need escaping. + // This seem wasteful at first sight, but memset of vector length is very fast. + // This is a space as it can be directly represented as an immediate on AArch64. + memset(s, ' ', vec_len); + + // Optimistically copy the remaining 'len' characters to the output FBuffer. If there are no characters + // to escape, then everything ends up in the correct spot. Otherwise it was convenient temporary storage. + if (vec_len == 16) { + RBIMPL_ASSERT_OR_ASSUME(len >= SIMD_MINIMUM_THRESHOLD); + json_fast_memcpy16(s, search->ptr, len); + } else { + MEMCPY(s, search->ptr, char, len); + } + + return s; } -/* Escapes the UTF16 character and stores the result in the buffer buf, then - * the buffer buf is appended to the FBuffer buffer. */ -static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16 - character) +#ifdef HAVE_SIMD_NEON + +ALWAYS_INLINE(static) unsigned char neon_next_match(search_state *search) { - unicode_escape(buf, character); - fbuffer_append(buffer, buf, 6); + uint64_t mask = search->matches_mask; + uint32_t index = trailing_zeros64(mask) >> 2; + + // It is assumed escape_UTF8_char_basic will only ever increase search->ptr by at most one character. + // If we want to use a similar approach for full escaping we'll need to ensure: + // search->chunk_base + index >= search->ptr + // However, since we know escape_UTF8_char_basic only increases search->ptr by one, if the next match + // is one byte after the previous match then: + // search->chunk_base + index == search->ptr + search->ptr = search->chunk_base + index; + mask &= mask - 1; + search->matches_mask = mask; + search_flush(search); + return 1; } -/* Converts string to a JSON string in FBuffer buffer, where all but the ASCII - * and control characters are JSON escaped. */ -static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string) +static inline unsigned char search_escape_basic_neon(search_state *search) { - const UTF8 *source = (UTF8 *) RSTRING_PTR(string); - const UTF8 *sourceEnd = source + RSTRING_LEN(string); - char buf[6] = { '\\', 'u' }; - - while (source < sourceEnd) { - UTF32 ch = 0; - unsigned short extraBytesToRead = trailingBytesForUTF8[*source]; - if (source + extraBytesToRead >= sourceEnd) { - rb_raise(rb_path2class("JSON::GeneratorError"), - "partial character in source, but hit end"); - } - if (!isLegalUTF8(source, extraBytesToRead+1)) { - rb_raise(rb_path2class("JSON::GeneratorError"), - "source sequence is illegal/malformed utf-8"); + if (RB_UNLIKELY(search->has_matches)) { + // There are more matches if search->matches_mask > 0. + if (search->matches_mask > 0) { + return neon_next_match(search); + } else { + // neon_next_match will only advance search->ptr up to the last matching character. + // Skip over any characters in the last chunk that occur after the last match. + search->has_matches = false; + search->ptr = search->chunk_end; } - /* - * The cases all fall through. See "Note A" below. - */ - switch (extraBytesToRead) { - case 5: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 4: ch += *source++; ch <<= 6; /* remember, illegal UTF-8 */ - case 3: ch += *source++; ch <<= 6; - case 2: ch += *source++; ch <<= 6; - case 1: ch += *source++; ch <<= 6; - case 0: ch += *source++; + } + + /* + * The code below implements an SIMD-based algorithm to determine if N bytes at a time + * need to be escaped. + * + * Assume the ptr = "Te\sting!" (the double quotes are included in the string) + * + * The explanation will be limited to the first 8 bytes of the string for simplicity. However + * the vector insructions may work on larger vectors. + * + * First, we load three constants 'lower_bound', 'backslash' and 'dblquote" in vector registers. + * + * lower_bound: [20 20 20 20 20 20 20 20] + * backslash: [5C 5C 5C 5C 5C 5C 5C 5C] + * dblquote: [22 22 22 22 22 22 22 22] + * + * Next we load the first chunk of the ptr: + * [22 54 65 5C 73 74 69 6E] (" T e \ s t i n) + * + * First we check if any byte in chunk is less than 32 (0x20). This returns the following vector + * as no bytes are less than 32 (0x20): + * [0 0 0 0 0 0 0 0] + * + * Next, we check if any byte in chunk is equal to a backslash: + * [0 0 0 FF 0 0 0 0] + * + * Finally we check if any byte in chunk is equal to a double quote: + * [FF 0 0 0 0 0 0 0] + * + * Now we have three vectors where each byte indicates if the corresponding byte in chunk + * needs to be escaped. We combine these vectors with a series of logical OR instructions. + * This is the needs_escape vector and it is equal to: + * [FF 0 0 FF 0 0 0 0] + * + * Next we compute the bitwise AND between each byte and 0x1 and compute the horizontal sum of + * the values in the vector. This computes how many bytes need to be escaped within this chunk. + * + * Finally we compute a mask that indicates which bytes need to be escaped. If the mask is 0 then, + * no bytes need to be escaped and we can continue to the next chunk. If the mask is not 0 then we + * have at least one byte that needs to be escaped. + */ + + if (string_scan_simd_neon(&search->ptr, search->end, &search->matches_mask)) { + search->has_matches = true; + search->chunk_base = search->ptr; + search->chunk_end = search->ptr + sizeof(uint8x16_t); + return neon_next_match(search); + } + + // There are fewer than 16 bytes left. + unsigned long remaining = (search->end - search->ptr); + if (remaining >= SIMD_MINIMUM_THRESHOLD) { + char *s = copy_remaining_bytes(search, sizeof(uint8x16_t), remaining); + + uint64_t mask = compute_chunk_mask_neon(s); + + if (!mask) { + // Nothing to escape, ensure search_flush doesn't do anything by setting + // search->cursor to search->ptr. + fbuffer_consumed(search->buffer, remaining); + search->ptr = search->end; + search->cursor = search->end; + return 0; } - ch -= offsetsFromUTF8[extraBytesToRead]; - - if (ch <= UNI_MAX_BMP) { /* Target is a character <= 0xFFFF */ - /* UTF-16 surrogate values are illegal in UTF-32 */ - if (ch >= UNI_SUR_HIGH_START && ch <= UNI_SUR_LOW_END) { -#if UNI_STRICT_CONVERSION - source -= (extraBytesToRead+1); /* return to the illegal value itself */ - rb_raise(rb_path2class("JSON::GeneratorError"), - "source sequence is illegal/malformed utf-8"); + + search->matches_mask = mask; + search->has_matches = true; + search->chunk_end = search->end; + search->chunk_base = search->ptr; + return neon_next_match(search); + } + + if (search->ptr < search->end) { + return search_escape_basic(search); + } + + search_flush(search); + return 0; +} +#endif /* HAVE_SIMD_NEON */ + +#ifdef HAVE_SIMD_SSE2 + +ALWAYS_INLINE(static) unsigned char sse2_next_match(search_state *search) +{ + int mask = search->matches_mask; + int index = trailing_zeros(mask); + + // It is assumed escape_UTF8_char_basic will only ever increase search->ptr by at most one character. + // If we want to use a similar approach for full escaping we'll need to ensure: + // search->chunk_base + index >= search->ptr + // However, since we know escape_UTF8_char_basic only increases search->ptr by one, if the next match + // is one byte after the previous match then: + // search->chunk_base + index == search->ptr + search->ptr = search->chunk_base + index; + mask &= mask - 1; + search->matches_mask = mask; + search_flush(search); + return 1; +} + +#if defined(__clang__) || defined(__GNUC__) +#define TARGET_SSE2 __attribute__((target("sse2"))) #else - unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR); +#define TARGET_SSE2 #endif + +ALWAYS_INLINE(static) TARGET_SSE2 unsigned char search_escape_basic_sse2(search_state *search) +{ + if (RB_UNLIKELY(search->has_matches)) { + // There are more matches if search->matches_mask > 0. + if (search->matches_mask > 0) { + return sse2_next_match(search); + } else { + // sse2_next_match will only advance search->ptr up to the last matching character. + // Skip over any characters in the last chunk that occur after the last match. + search->has_matches = false; + if (RB_UNLIKELY(search->chunk_base + sizeof(__m128i) >= search->end)) { + search->ptr = search->end; } else { - /* normal case */ - if (ch >= 0x20 && ch <= 0x7f) { - switch (ch) { - case '\\': - fbuffer_append(buffer, "\\\\", 2); - break; - case '"': - fbuffer_append(buffer, "\\\"", 2); - break; - default: - fbuffer_append_char(buffer, (char)ch); - break; - } - } else { - switch (ch) { - case '\n': - fbuffer_append(buffer, "\\n", 2); - break; - case '\r': - fbuffer_append(buffer, "\\r", 2); - break; - case '\t': - fbuffer_append(buffer, "\\t", 2); - break; - case '\f': - fbuffer_append(buffer, "\\f", 2); - break; - case '\b': - fbuffer_append(buffer, "\\b", 2); - break; - default: - unicode_escape_to_buffer(buffer, buf, (UTF16) ch); - break; + search->ptr = search->chunk_base + sizeof(__m128i); + } + } + } + + if (string_scan_simd_sse2(&search->ptr, search->end, &search->matches_mask)) { + search->has_matches = true; + search->chunk_base = search->ptr; + search->chunk_end = search->ptr + sizeof(__m128i); + return sse2_next_match(search); + } + + // There are fewer than 16 bytes left. + unsigned long remaining = (search->end - search->ptr); + if (remaining >= SIMD_MINIMUM_THRESHOLD) { + char *s = copy_remaining_bytes(search, sizeof(__m128i), remaining); + + int needs_escape_mask = compute_chunk_mask_sse2(s); + + if (needs_escape_mask == 0) { + // Nothing to escape, ensure search_flush doesn't do anything by setting + // search->cursor to search->ptr. + fbuffer_consumed(search->buffer, remaining); + search->ptr = search->end; + search->cursor = search->end; + return 0; + } + + search->has_matches = true; + search->matches_mask = needs_escape_mask; + search->chunk_base = search->ptr; + return sse2_next_match(search); + } + + if (search->ptr < search->end) { + return search_escape_basic(search); + } + + search_flush(search); + return 0; +} + +#endif /* HAVE_SIMD_SSE2 */ + +#endif /* HAVE_SIMD */ + +static const unsigned char script_safe_escape_table[256] = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, // '"' and '/' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // Continuation byte + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // First byte of a 2-byte code point + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + // First byte of a 3-byte code point + 3, 3,11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xE2 is the start of \u2028 and \u2029 + //First byte of a 4+ byte code point + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 9, 9, +}; + +static inline unsigned char search_script_safe_escape(search_state *search) +{ + while (search->ptr < search->end) { + unsigned char ch = (unsigned char)*search->ptr; + unsigned char ch_len = script_safe_escape_table[ch]; + + if (RB_UNLIKELY(ch_len)) { + if (ch_len & ESCAPE_MASK) { + if (RB_UNLIKELY(ch_len == 11)) { + const unsigned char *uptr = (const unsigned char *)search->ptr; + if (!(uptr[1] == 0x80 && (uptr[2] >> 1) == 0x54)) { + search->ptr += 3; + continue; } } + search_flush(search); + return ch_len & CHAR_LENGTH_MASK; + } else { + search->ptr += ch_len; } - } else if (ch > UNI_MAX_UTF16) { -#if UNI_STRICT_CONVERSION - source -= (extraBytesToRead+1); /* return to the start */ - rb_raise(rb_path2class("JSON::GeneratorError"), - "source sequence is illegal/malformed utf8"); -#else - unicode_escape_to_buffer(buffer, buf, UNI_REPLACEMENT_CHAR); -#endif } else { - /* target is a character in range 0xFFFF - 0x10FFFF. */ - ch -= halfBase; - unicode_escape_to_buffer(buffer, buf, (UTF16)((ch >> halfShift) + UNI_SUR_HIGH_START)); - unicode_escape_to_buffer(buffer, buf, (UTF16)((ch & halfMask) + UNI_SUR_LOW_START)); + search->ptr++; } } - RB_GC_GUARD(string); -} - -/* Converts string to a JSON string in FBuffer buffer, where only the - * characters required by the JSON standard are JSON escaped. The remaining - * characters (should be UTF8) are just passed through and appended to the - * result. */ -static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string) -{ - const char *ptr = RSTRING_PTR(string), *p; - unsigned long len = RSTRING_LEN(string), start = 0, end = 0; - const char *escape = NULL; - int escape_len; - unsigned char c; - char buf[6] = { '\\', 'u' }; - int ascii_only = rb_enc_str_asciionly_p(string); - - for (start = 0, end = 0; end < len;) { - p = ptr + end; - c = (unsigned char) *p; - if (c < 0x20) { - switch (c) { - case '\n': - escape = "\\n"; - escape_len = 2; - break; - case '\r': - escape = "\\r"; - escape_len = 2; - break; - case '\t': - escape = "\\t"; - escape_len = 2; - break; - case '\f': - escape = "\\f"; - escape_len = 2; - break; - case '\b': - escape = "\\b"; - escape_len = 2; - break; - default: - unicode_escape(buf, (UTF16) *p); - escape = buf; - escape_len = 6; + search_flush(search); + return 0; +} + +static void convert_UTF8_to_script_safe_JSON(search_state *search) +{ + unsigned char ch_len; + while ((ch_len = search_script_safe_escape(search))) { + escape_UTF8_char(search, ch_len); + } +} + +static const unsigned char ascii_only_escape_table[256] = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // Continuation byte + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // First byte of a 2-byte code point + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + // First byte of a 3-byte code point + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + //First byte of a 4+ byte code point + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 9, 9, +}; + +static inline unsigned char search_ascii_only_escape(search_state *search, const unsigned char escape_table[256]) +{ + while (search->ptr < search->end) { + unsigned char ch = (unsigned char)*search->ptr; + unsigned char ch_len = escape_table[ch]; + + if (RB_UNLIKELY(ch_len)) { + search_flush(search); + return ch_len & CHAR_LENGTH_MASK; + } else { + search->ptr++; + } + } + search_flush(search); + return 0; +} + +static inline void full_escape_UTF8_char(search_state *search, unsigned char ch_len) +{ + const unsigned char ch = (unsigned char)*search->ptr; + switch (ch_len) { + case 1: { + switch (ch) { + case '"': fbuffer_append(search->buffer, "\\\"", 2); break; + case '\\': fbuffer_append(search->buffer, "\\\\", 2); break; + case '/': fbuffer_append(search->buffer, "\\/", 2); break; + case '\b': fbuffer_append(search->buffer, "\\b", 2); break; + case '\f': fbuffer_append(search->buffer, "\\f", 2); break; + case '\n': fbuffer_append(search->buffer, "\\n", 2); break; + case '\r': fbuffer_append(search->buffer, "\\r", 2); break; + case '\t': fbuffer_append(search->buffer, "\\t", 2); break; + default: { + const char *hexdig = "0123456789abcdef"; + char scratch[6] = { '\\', 'u', '0', '0', 0, 0 }; + scratch[4] = hexdig[(ch >> 4) & 0xf]; + scratch[5] = hexdig[ch & 0xf]; + fbuffer_append(search->buffer, scratch, 6); break; + } } - } else { - switch (c) { - case '\\': - escape = "\\\\"; - escape_len = 2; + break; + } + default: { + const char *hexdig = "0123456789abcdef"; + char scratch[12] = { '\\', 'u', 0, 0, 0, 0, '\\', 'u' }; + + uint32_t wchar = 0; + + switch (ch_len) { + case 2: + wchar = ch & 0x1F; break; - case '"': - escape = "\\\""; - escape_len = 2; + case 3: + wchar = ch & 0x0F; break; - default: - { - unsigned short clen = 1; - if (!ascii_only) { - clen += trailingBytesForUTF8[c]; - if (end + clen > len) { - rb_raise(rb_path2class("JSON::GeneratorError"), - "partial character in source, but hit end"); - } - if (!isLegalUTF8((UTF8 *) p, clen)) { - rb_raise(rb_path2class("JSON::GeneratorError"), - "source sequence is illegal/malformed utf-8"); - } - } - end += clen; - } - continue; + case 4: + wchar = ch & 0x07; break; } - } - fbuffer_append(buffer, ptr + start, end - start); - fbuffer_append(buffer, escape, escape_len); - start = ++end; - escape = NULL; - } - fbuffer_append(buffer, ptr + start, end - start); -} -static char *fstrndup(const char *ptr, unsigned long len) { - char *result; - if (len <= 0) return NULL; - result = ALLOC_N(char, len); - memcpy(result, ptr, len); - return result; -} - -/* - * Document-module: JSON::Ext::Generator - * - * This is the JSON generator implemented as a C extension. It can be - * configured to be used by setting - * - * JSON.generator = JSON::Ext::Generator - * - * with the method generator= in JSON. - * - */ + for (short i = 1; i < ch_len; i++) { + wchar = (wchar << 6) | (search->ptr[i] & 0x3F); + } -/* - * call-seq: to_json(state = nil) - * - * Returns a JSON string containing a JSON object, that is generated from - * this Hash instance. - * _state_ is a JSON::State object, that can also be used to configure the - * produced JSON string output further. - */ -static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self) -{ - GENERATE_JSON(object); -} + if (wchar <= 0xFFFF) { + scratch[2] = hexdig[wchar >> 12]; + scratch[3] = hexdig[(wchar >> 8) & 0xf]; + scratch[4] = hexdig[(wchar >> 4) & 0xf]; + scratch[5] = hexdig[wchar & 0xf]; + fbuffer_append(search->buffer, scratch, 6); + } else { + uint16_t hi, lo; + wchar -= 0x10000; + hi = 0xD800 + (uint16_t)(wchar >> 10); + lo = 0xDC00 + (uint16_t)(wchar & 0x3FF); + + scratch[2] = hexdig[hi >> 12]; + scratch[3] = hexdig[(hi >> 8) & 0xf]; + scratch[4] = hexdig[(hi >> 4) & 0xf]; + scratch[5] = hexdig[hi & 0xf]; + + scratch[8] = hexdig[lo >> 12]; + scratch[9] = hexdig[(lo >> 8) & 0xf]; + scratch[10] = hexdig[(lo >> 4) & 0xf]; + scratch[11] = hexdig[lo & 0xf]; + + fbuffer_append(search->buffer, scratch, 12); + } -/* - * call-seq: to_json(state = nil) - * - * Returns a JSON string containing a JSON array, that is generated from - * this Array instance. - * _state_ is a JSON::State object, that can also be used to configure the - * produced JSON string output further. - */ -static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) { - GENERATE_JSON(array); + break; + } + } + search->cursor = (search->ptr += ch_len); } -#ifdef RUBY_INTEGER_UNIFICATION -/* - * call-seq: to_json(*) - * - * Returns a JSON string representation for this Integer number. - */ -static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self) +static void convert_UTF8_to_ASCII_only_JSON(search_state *search, const unsigned char escape_table[256]) { - GENERATE_JSON(integer); + unsigned char ch_len; + while ((ch_len = search_ascii_only_escape(search, escape_table))) { + full_escape_UTF8_char(search, ch_len); + } } -#else -/* - * call-seq: to_json(*) - * - * Returns a JSON string representation for this Integer number. - */ -static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self) +static void State_mark(void *ptr) { - GENERATE_JSON(fixnum); + JSON_Generator_State *state = ptr; + rb_gc_mark_movable(state->indent); + rb_gc_mark_movable(state->space); + rb_gc_mark_movable(state->space_before); + rb_gc_mark_movable(state->object_nl); + rb_gc_mark_movable(state->array_nl); + rb_gc_mark_movable(state->as_json); + rb_gc_mark_movable(state->sort_keys); } -/* - * call-seq: to_json(*) - * - * Returns a JSON string representation for this Integer number. - */ -static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self) +static void State_compact(void *ptr) { - GENERATE_JSON(bignum); + JSON_Generator_State *state = ptr; + state->indent = rb_gc_location(state->indent); + state->space = rb_gc_location(state->space); + state->space_before = rb_gc_location(state->space_before); + state->object_nl = rb_gc_location(state->object_nl); + state->array_nl = rb_gc_location(state->array_nl); + state->as_json = rb_gc_location(state->as_json); + state->sort_keys = rb_gc_location(state->sort_keys); } -#endif -/* - * call-seq: to_json(*) - * - * Returns a JSON string representation for this Float number. - */ -static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self) +static size_t State_memsize(const void *ptr) { - GENERATE_JSON(float); +#ifdef HAVE_RUBY_TYPED_EMBEDDABLE + return 0; +#else + return sizeof(JSON_Generator_State); +#endif } -/* - * call-seq: String.included(modul) - * - * Extends _modul_ with the String::Extend module. - */ -static VALUE mString_included_s(VALUE self, VALUE modul) { - VALUE result = rb_funcall(modul, i_extend, 1, mString_Extend); - return result; -} +static const rb_data_type_t JSON_Generator_State_type = { + .wrap_struct_name = "JSON/Generator/State", + .function = { + .dmark = State_mark, + .dfree = RUBY_DEFAULT_FREE, + .dsize = State_memsize, + .dcompact = State_compact, + }, + .flags = RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE, +}; -/* - * call-seq: to_json(*) - * - * This string should be encoded with UTF-8 A call to this method - * returns a JSON string encoded with UTF16 big endian characters as - * \u????. - */ -static VALUE mString_to_json(int argc, VALUE *argv, VALUE self) +static void state_init(JSON_Generator_State *state) { - GENERATE_JSON(string); + state->max_nesting = 100; + state->buffer_initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT; } -/* - * call-seq: to_json_raw_object() - * - * This method creates a raw object hash, that can be nested into - * other data structures and will be generated as a raw string. This - * method should be used, if you want to convert raw strings to JSON - * instead of UTF-8 strings, e. g. binary data. - */ -static VALUE mString_to_json_raw_object(VALUE self) +static VALUE cState_s_allocate(VALUE klass) { - VALUE ary; - VALUE result = rb_hash_new(); - rb_hash_aset(result, rb_funcall(mJSON, i_create_id, 0), rb_class_name(rb_obj_class(self))); - ary = rb_funcall(self, i_unpack, 1, rb_str_new2("C*")); - rb_hash_aset(result, rb_str_new2("raw"), ary); - return result; + JSON_Generator_State *state; + VALUE obj = TypedData_Make_Struct(klass, JSON_Generator_State, &JSON_Generator_State_type, state); + state_init(state); + return obj; } -/* - * call-seq: to_json_raw(*args) - * - * This method creates a JSON text from the result of a call to - * to_json_raw_object of this String. - */ -static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self) +static void vstate_spill(struct generate_json_data *data) { - VALUE obj = mString_to_json_raw_object(self); - Check_Type(obj, T_HASH); - return mHash_to_json(argc, argv, obj); + VALUE vstate = cState_s_allocate(cState); + GET_STATE(vstate); + MEMCPY(state, data->state, JSON_Generator_State, 1); + data->state = state; + data->vstate = vstate; + RB_OBJ_WRITTEN(vstate, Qundef, state->indent); + RB_OBJ_WRITTEN(vstate, Qundef, state->space); + RB_OBJ_WRITTEN(vstate, Qundef, state->space_before); + RB_OBJ_WRITTEN(vstate, Qundef, state->object_nl); + RB_OBJ_WRITTEN(vstate, Qundef, state->array_nl); + RB_OBJ_WRITTEN(vstate, Qundef, state->as_json); + RB_OBJ_WRITTEN(vstate, Qundef, state->sort_keys); } -/* - * call-seq: json_create(o) - * - * Raw Strings are JSON Objects (the raw bytes are stored in an array for the - * key "raw"). The Ruby String can be created by this module method. - */ -static VALUE mString_Extend_json_create(VALUE self, VALUE o) +static inline VALUE json_to_s(VALUE obj) { - VALUE ary; - Check_Type(o, T_HASH); - ary = rb_hash_aref(o, rb_str_new2("raw")); - return rb_funcall(ary, i_pack, 1, rb_str_new2("C*")); + VALUE tmp = rb_funcall(obj, i_to_s, 0); + return StringValue(tmp); } -/* - * call-seq: to_json(*) - * - * Returns a JSON string for true: 'true'. - */ -static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self) +static inline VALUE json_call_to_json(struct generate_json_data *data, VALUE obj) { - GENERATE_JSON(true); + if (RB_UNLIKELY(!data->vstate)) { + vstate_spill(data); + } + GET_STATE(data->vstate); + state->depth = data->depth; + VALUE tmp = rb_funcall(obj, i_to_json, 1, data->vstate); + // no need to restore state->depth, vstate is just a temporary State + return tmp; } -/* - * call-seq: to_json(*) - * - * Returns a JSON string for false: 'false'. - */ -static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self) +static VALUE +json_call_as_json(JSON_Generator_State *state, VALUE object, VALUE is_key) { - GENERATE_JSON(false); + VALUE proc_args[2] = {object, is_key}; + return rb_proc_call_with_block(state->as_json, 2, proc_args, Qnil); } -/* - * call-seq: to_json(*) - * - * Returns a JSON string for nil: 'null'. - */ -static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self) +static VALUE +convert_string_subclass(VALUE key) { - GENERATE_JSON(null); + VALUE key_to_s = rb_funcall(key, i_to_s, 0); + + if (RB_UNLIKELY(!RB_TYPE_P(key_to_s, T_STRING))) { + VALUE cname = rb_obj_class(key); + rb_raise(rb_eTypeError, + "can't convert %"PRIsVALUE" to %s (%"PRIsVALUE"#%s gives %"PRIsVALUE")", + cname, "String", cname, "to_s", rb_obj_class(key_to_s)); + } + + return key_to_s; } -/* - * call-seq: to_json(*) - * - * Converts this object to a string (calling #to_s), converts - * it to a JSON string, and returns the result. This is a fallback, if no - * special method #to_json was defined for some object. - */ -static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self) +static bool enc_utf8_compatible_p(int enc_idx) { - VALUE state; - VALUE string = rb_funcall(self, i_to_s, 0); - rb_scan_args(argc, argv, "01", &state); - Check_Type(string, T_STRING); - state = cState_from_state_s(cState, state); - return cState_partial_generate(state, string); + if (enc_idx == usascii_encindex) return true; + if (enc_idx == utf8_encindex) return true; + return false; } -static void State_free(void *ptr) +static VALUE encode_json_string_try(VALUE str) { - JSON_Generator_State *state = ptr; - if (state->indent) ruby_xfree(state->indent); - if (state->space) ruby_xfree(state->space); - if (state->space_before) ruby_xfree(state->space_before); - if (state->object_nl) ruby_xfree(state->object_nl); - if (state->array_nl) ruby_xfree(state->array_nl); - if (state->array_delim) fbuffer_free(state->array_delim); - if (state->object_delim) fbuffer_free(state->object_delim); - if (state->object_delim2) fbuffer_free(state->object_delim2); - ruby_xfree(state); + return rb_funcall(str, i_encode, 1, Encoding_UTF_8); } -static size_t State_memsize(const void *ptr) +static VALUE encode_json_string_rescue(VALUE str, VALUE exception) { - const JSON_Generator_State *state = ptr; - size_t size = sizeof(*state); - if (state->indent) size += state->indent_len + 1; - if (state->space) size += state->space_len + 1; - if (state->space_before) size += state->space_before_len + 1; - if (state->object_nl) size += state->object_nl_len + 1; - if (state->array_nl) size += state->array_nl_len + 1; - if (state->array_delim) size += FBUFFER_CAPA(state->array_delim); - if (state->object_delim) size += FBUFFER_CAPA(state->object_delim); - if (state->object_delim2) size += FBUFFER_CAPA(state->object_delim2); - return size; + raise_generator_error_str(str, rb_funcall(exception, rb_intern("message"), 0)); + return Qundef; } -#ifdef NEW_TYPEDDATA_WRAPPER -static const rb_data_type_t JSON_Generator_State_type = { - "JSON/Generator/State", - {NULL, State_free, State_memsize,}, -#ifdef RUBY_TYPED_FREE_IMMEDIATELY - 0, 0, - RUBY_TYPED_FREE_IMMEDIATELY, -#endif -}; -#endif - -static VALUE cState_s_allocate(VALUE klass) -{ - JSON_Generator_State *state; - return TypedData_Make_Struct(klass, JSON_Generator_State, - &JSON_Generator_State_type, state); +static inline int json_str_coderange(VALUE str) { + int coderange = RB_ENC_CODERANGE(str); + if (coderange == RUBY_ENC_CODERANGE_UNKNOWN) { + coderange = rb_enc_str_coderange(str); + } + return coderange; } -/* - * call-seq: configure(opts) - * - * Configure this State instance with the Hash _opts_, and return - * itself. - */ -static VALUE cState_configure(VALUE self, VALUE opts) +static inline bool valid_json_string_p(VALUE str) { - VALUE tmp; - GET_STATE(self); - tmp = rb_check_convert_type(opts, T_HASH, "Hash", "to_hash"); - if (NIL_P(tmp)) tmp = rb_convert_type(opts, T_HASH, "Hash", "to_h"); - opts = tmp; - tmp = rb_hash_aref(opts, ID2SYM(i_indent)); - if (RTEST(tmp)) { - unsigned long len; - Check_Type(tmp, T_STRING); - len = RSTRING_LEN(tmp); - state->indent = fstrndup(RSTRING_PTR(tmp), len + 1); - state->indent_len = len; - } - tmp = rb_hash_aref(opts, ID2SYM(i_space)); - if (RTEST(tmp)) { - unsigned long len; - Check_Type(tmp, T_STRING); - len = RSTRING_LEN(tmp); - state->space = fstrndup(RSTRING_PTR(tmp), len + 1); - state->space_len = len; - } - tmp = rb_hash_aref(opts, ID2SYM(i_space_before)); - if (RTEST(tmp)) { - unsigned long len; - Check_Type(tmp, T_STRING); - len = RSTRING_LEN(tmp); - state->space_before = fstrndup(RSTRING_PTR(tmp), len + 1); - state->space_before_len = len; - } - tmp = rb_hash_aref(opts, ID2SYM(i_array_nl)); - if (RTEST(tmp)) { - unsigned long len; - Check_Type(tmp, T_STRING); - len = RSTRING_LEN(tmp); - state->array_nl = fstrndup(RSTRING_PTR(tmp), len + 1); - state->array_nl_len = len; - } - tmp = rb_hash_aref(opts, ID2SYM(i_object_nl)); - if (RTEST(tmp)) { - unsigned long len; - Check_Type(tmp, T_STRING); - len = RSTRING_LEN(tmp); - state->object_nl = fstrndup(RSTRING_PTR(tmp), len + 1); - state->object_nl_len = len; + int coderange = json_str_coderange(str); + + if (RB_LIKELY(coderange == ENC_CODERANGE_7BIT)) { + return true; } - tmp = ID2SYM(i_max_nesting); - state->max_nesting = 100; - if (option_given_p(opts, tmp)) { - VALUE max_nesting = rb_hash_aref(opts, tmp); - if (RTEST(max_nesting)) { - Check_Type(max_nesting, T_FIXNUM); - state->max_nesting = FIX2LONG(max_nesting); - } else { - state->max_nesting = 0; - } + + if (RB_LIKELY(coderange == ENC_CODERANGE_VALID)) { + return enc_utf8_compatible_p(RB_ENCODING_GET_INLINED(str)); } - tmp = ID2SYM(i_depth); - state->depth = 0; - if (option_given_p(opts, tmp)) { - VALUE depth = rb_hash_aref(opts, tmp); - if (RTEST(depth)) { - Check_Type(depth, T_FIXNUM); - state->depth = FIX2LONG(depth); - } else { - state->depth = 0; + + return false; +} + +NOINLINE(static) VALUE convert_invalid_encoding(struct generate_json_data *data, VALUE str, bool as_json_called, bool is_key) +{ + if (!as_json_called && data->state->strict && RTEST(data->state->as_json)) { + VALUE coerced_str = json_call_as_json(data->state, str, Qfalse); + if (coerced_str != str) { + if (RB_TYPE_P(coerced_str, T_STRING)) { + if (!valid_json_string_p(coerced_str)) { + raise_generator_error(str, "source sequence is illegal/malformed utf-8"); + } + } else { + // as_json could return another type than T_STRING + if (is_key) { + raise_generator_error(coerced_str, "%"PRIsVALUE" not allowed as object key in JSON", CLASS_OF(coerced_str)); + } + } + + return coerced_str; } } - tmp = ID2SYM(i_buffer_initial_length); - if (option_given_p(opts, tmp)) { - VALUE buffer_initial_length = rb_hash_aref(opts, tmp); - if (RTEST(buffer_initial_length)) { - long initial_length; - Check_Type(buffer_initial_length, T_FIXNUM); - initial_length = FIX2LONG(buffer_initial_length); - if (initial_length > 0) state->buffer_initial_length = initial_length; - } + + str = rb_rescue(encode_json_string_try, str, encode_json_string_rescue, str); + Check_Type(str, T_STRING); + if (!valid_json_string_p(str)) { + raise_generator_error(str, "source sequence is illegal/malformed utf-8"); } - tmp = rb_hash_aref(opts, ID2SYM(i_allow_nan)); - state->allow_nan = RTEST(tmp); - tmp = rb_hash_aref(opts, ID2SYM(i_ascii_only)); - state->ascii_only = RTEST(tmp); - return self; + return str; } -static void set_state_ivars(VALUE hash, VALUE state) +ALWAYS_INLINE(static) VALUE ensure_valid_encoding(struct generate_json_data *data, VALUE str, bool as_json_called, bool is_key) { - VALUE ivars = rb_obj_instance_variables(state); - int i = 0; - for (i = 0; i < RARRAY_LEN(ivars); i++) { - VALUE key = rb_funcall(rb_ary_entry(ivars, i), i_to_s, 0); - long key_len = RSTRING_LEN(key); - VALUE value = rb_iv_get(state, StringValueCStr(key)); - rb_hash_aset(hash, rb_str_intern(rb_str_substr(key, 1, key_len - 1)), value); + if (RB_LIKELY(valid_json_string_p(str))) { + return str; + } + else { + return convert_invalid_encoding(data, str, as_json_called, is_key); } } -/* - * call-seq: to_h - * - * Returns the configuration instance variables as a hash, that can be - * passed to the configure method. - */ -static VALUE cState_to_h(VALUE self) +static void raw_generate_json_string(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - VALUE result = rb_hash_new(); - GET_STATE(self); - set_state_ivars(result, self); - rb_hash_aset(result, ID2SYM(i_indent), rb_str_new(state->indent, state->indent_len)); - rb_hash_aset(result, ID2SYM(i_space), rb_str_new(state->space, state->space_len)); - rb_hash_aset(result, ID2SYM(i_space_before), rb_str_new(state->space_before, state->space_before_len)); - rb_hash_aset(result, ID2SYM(i_object_nl), rb_str_new(state->object_nl, state->object_nl_len)); - rb_hash_aset(result, ID2SYM(i_array_nl), rb_str_new(state->array_nl, state->array_nl_len)); - rb_hash_aset(result, ID2SYM(i_allow_nan), state->allow_nan ? Qtrue : Qfalse); - rb_hash_aset(result, ID2SYM(i_ascii_only), state->ascii_only ? Qtrue : Qfalse); - rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting)); - rb_hash_aset(result, ID2SYM(i_depth), LONG2FIX(state->depth)); - rb_hash_aset(result, ID2SYM(i_buffer_initial_length), LONG2FIX(state->buffer_initial_length)); - return result; -} + VALUE str = obj; + if (RB_UNLIKELY(buffer->io)) { + // IO writes can mutate the original string while we are reading it. + str = rb_str_new_frozen(str); + } + fbuffer_append_char(buffer, '"'); -/* -* call-seq: [](name) -* -* Returns the value returned by method +name+. -*/ -static VALUE cState_aref(VALUE self, VALUE name) -{ - name = rb_funcall(name, i_to_s, 0); - if (RTEST(rb_funcall(self, i_respond_to_p, 1, name))) { - return rb_funcall(self, i_send, 1, name); - } else { - return rb_ivar_get(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name))); + rb_len_t len; + search_state search; + search.buffer = buffer; + RSTRING_GETMEM(str, search.ptr, len); + search.cursor = search.ptr; + search.end = search.ptr + len; + +#ifdef HAVE_SIMD + search.matches_mask = 0; + search.has_matches = false; + search.chunk_base = NULL; + search.chunk_end = NULL; +#endif /* HAVE_SIMD */ + + switch (json_str_coderange(str)) { + case ENC_CODERANGE_7BIT: + case ENC_CODERANGE_VALID: + if (RB_UNLIKELY(data->state->ascii_only)) { + convert_UTF8_to_ASCII_only_JSON(&search, data->state->script_safe ? script_safe_escape_table : ascii_only_escape_table); + } else if (RB_UNLIKELY(data->state->script_safe)) { + convert_UTF8_to_script_safe_JSON(&search); + } else { + convert_UTF8_to_JSON(&search); + } + break; + default: + raise_generator_error(obj, "source sequence is illegal/malformed utf-8"); + break; } + fbuffer_append_char(buffer, '"'); + RB_GC_GUARD(str); } -/* -* call-seq: []=(name, value) -* -* Sets the attribute name to value. -*/ -static VALUE cState_aset(VALUE self, VALUE name, VALUE value) +static void generate_json_string(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - VALUE name_writer; - - name = rb_funcall(name, i_to_s, 0); - name_writer = rb_str_cat2(rb_str_dup(name), "="); - if (RTEST(rb_funcall(self, i_respond_to_p, 1, name_writer))) { - return rb_funcall(self, i_send, 2, name_writer, value); - } else { - rb_ivar_set(self, rb_intern_str(rb_str_concat(rb_str_new2("@"), name)), value); - } - return Qnil; + obj = ensure_valid_encoding(data, obj, false, false); + raw_generate_json_string(buffer, data, obj); } struct hash_foreach_arg { - FBuffer *buffer; - JSON_Generator_State *state; - VALUE Vstate; - int iter; + VALUE hash; + struct generate_json_data *data; + int first_key_type; + bool first; + bool mixed_keys_encountered; }; +NOINLINE(static) void +json_inspect_hash_with_mixed_keys(struct hash_foreach_arg *arg) +{ + if (arg->mixed_keys_encountered) { + return; + } + arg->mixed_keys_encountered = true; + + JSON_Generator_State *state = arg->data->state; + if (!state->allow_duplicate_key) { + rb_funcall(mJSON, rb_intern("on_mixed_keys_hash"), 1, arg->hash); + } +} + static int json_object_i(VALUE key, VALUE val, VALUE _arg) { struct hash_foreach_arg *arg = (struct hash_foreach_arg *)_arg; - FBuffer *buffer = arg->buffer; - JSON_Generator_State *state = arg->state; - VALUE Vstate = arg->Vstate; - - char *object_nl = state->object_nl; - long object_nl_len = state->object_nl_len; - char *indent = state->indent; - long indent_len = state->indent_len; - char *delim = FBUFFER_PTR(state->object_delim); - long delim_len = FBUFFER_LEN(state->object_delim); - char *delim2 = FBUFFER_PTR(state->object_delim2); - long delim2_len = FBUFFER_LEN(state->object_delim2); - long depth = state->depth; - int j; - VALUE klass, key_to_s; - - if (arg->iter > 0) fbuffer_append(buffer, delim, delim_len); - if (object_nl) { - fbuffer_append(buffer, object_nl, object_nl_len); - } - if (indent) { - for (j = 0; j < depth; j++) { - fbuffer_append(buffer, indent, indent_len); - } + struct generate_json_data *data = arg->data; + + FBuffer *buffer = data->buffer; + JSON_Generator_State *state = data->state; + + long depth = data->depth; + int key_type = rb_type(key); + + if (arg->first) { + arg->first = false; + arg->first_key_type = key_type; + } + else { + fbuffer_append_char(buffer, ','); + } + + if (RB_UNLIKELY(data->state->object_nl)) { + fbuffer_append_str(buffer, data->state->object_nl); + } + if (RB_UNLIKELY(data->state->indent)) { + fbuffer_append_str_repeat(buffer, data->state->indent, depth); } - klass = CLASS_OF(key); - if (klass == rb_cString) { - key_to_s = key; - } else if (klass == rb_cSymbol) { - key_to_s = rb_id2str(SYM2ID(key)); + VALUE key_to_s; + bool as_json_called = false; + + start: + switch (key_type) { + case T_STRING: + if (RB_UNLIKELY(arg->first_key_type != T_STRING)) { + json_inspect_hash_with_mixed_keys(arg); + } + + if (RB_LIKELY(RBASIC_CLASS(key) == rb_cString)) { + key_to_s = key; + } else { + key_to_s = convert_string_subclass(key); + } + break; + case T_SYMBOL: + if (RB_UNLIKELY(arg->first_key_type != T_SYMBOL)) { + json_inspect_hash_with_mixed_keys(arg); + } + + key_to_s = rb_sym2str(key); + break; + default: + if (data->state->strict) { + if (RTEST(data->state->as_json) && !as_json_called) { + key = json_call_as_json(data->state, key, Qtrue); + key_type = rb_type(key); + as_json_called = true; + goto start; + } else { + raise_generator_error(key, "%"PRIsVALUE" not allowed as object key in JSON", CLASS_OF(key)); + } + } + + json_inspect_hash_with_mixed_keys(arg); + + key_to_s = rb_convert_type(key, T_STRING, "String", "to_s"); + break; + } + + key_to_s = ensure_valid_encoding(data, key_to_s, as_json_called, true); + + if (RB_LIKELY(RBASIC_CLASS(key_to_s) == rb_cString)) { + raw_generate_json_string(buffer, data, key_to_s); } else { - key_to_s = rb_funcall(key, i_to_s, 0); + generate_json(buffer, data, key_to_s); } - Check_Type(key_to_s, T_STRING); - generate_json(buffer, Vstate, state, key_to_s); - fbuffer_append(buffer, delim2, delim2_len); - generate_json(buffer, Vstate, state, val); + if (RB_UNLIKELY(state->space_before)) fbuffer_append_str(buffer, data->state->space_before); + fbuffer_append_char(buffer, ':'); + if (RB_UNLIKELY(state->space)) fbuffer_append_str(buffer, data->state->space); + generate_json(buffer, data, val); - arg->iter++; return ST_CONTINUE; } -static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static inline long increase_depth(struct generate_json_data *data) +{ + JSON_Generator_State *state = data->state; + if (RB_UNLIKELY(data->depth >= state->max_nesting && state->max_nesting)) { + rb_raise(eNestingError, "nesting of %ld is too deep. Did you try to serialize objects with circular references?", data->depth + 1); + } + return ++data->depth; +} + +static void generate_json_object(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - char *object_nl = state->object_nl; - long object_nl_len = state->object_nl_len; - char *indent = state->indent; - long indent_len = state->indent_len; - long max_nesting = state->max_nesting; - long depth = ++state->depth; - int j; - struct hash_foreach_arg arg; + if (RB_UNLIKELY(data->state->rfc8785)) { + VALUE args[2] = {obj, data->state->strict ? data->state->as_json : Qnil}; + obj = rb_proc_call_with_block(rfc8785_sort_keys_proc, 2, args, Qnil); + Check_Type(obj, T_HASH); + } else if (RB_UNLIKELY(data->state->sort_keys)) { + obj = rb_proc_call_with_block(data->state->sort_keys, 1, &obj, Qnil); + Check_Type(obj, T_HASH); + } + + long depth = increase_depth(data); - if (max_nesting != 0 && depth > max_nesting) { - fbuffer_free(buffer); - rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth); + if (RHASH_SIZE(obj) == 0) { + fbuffer_append(buffer, "{}", 2); + --data->depth; + return; } + fbuffer_append_char(buffer, '{'); - arg.buffer = buffer; - arg.state = state; - arg.Vstate = Vstate; - arg.iter = 0; + struct hash_foreach_arg arg = { + .hash = obj, + .data = data, + .first = true, + }; rb_hash_foreach(obj, json_object_i, (VALUE)&arg); - depth = --state->depth; - if (object_nl) { - fbuffer_append(buffer, object_nl, object_nl_len); - if (indent) { - for (j = 0; j < depth; j++) { - fbuffer_append(buffer, indent, indent_len); - } + depth = --data->depth; + if (RB_UNLIKELY(data->state->object_nl)) { + fbuffer_append_str(buffer, data->state->object_nl); + if (RB_UNLIKELY(data->state->indent)) { + fbuffer_append_str_repeat(buffer, data->state->indent, depth); } } fbuffer_append_char(buffer, '}'); } -static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_array(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - char *array_nl = state->array_nl; - long array_nl_len = state->array_nl_len; - char *indent = state->indent; - long indent_len = state->indent_len; - long max_nesting = state->max_nesting; - char *delim = FBUFFER_PTR(state->array_delim); - long delim_len = FBUFFER_LEN(state->array_delim); - long depth = ++state->depth; - int i, j; - if (max_nesting != 0 && depth > max_nesting) { - fbuffer_free(buffer); - rb_raise(eNestingError, "nesting of %ld is too deep", --state->depth); + long depth = increase_depth(data); + + if (RARRAY_LEN(obj) == 0) { + fbuffer_append(buffer, "[]", 2); + --data->depth; + return; } + fbuffer_append_char(buffer, '['); - if (array_nl) fbuffer_append(buffer, array_nl, array_nl_len); - for(i = 0; i < RARRAY_LEN(obj); i++) { - if (i > 0) fbuffer_append(buffer, delim, delim_len); - if (indent) { - for (j = 0; j < depth; j++) { - fbuffer_append(buffer, indent, indent_len); - } + if (RB_UNLIKELY(data->state->array_nl)) fbuffer_append_str(buffer, data->state->array_nl); + for (rb_len_t i = 0; i < RARRAY_LEN(obj); i++) { + if (i > 0) { + fbuffer_append_char(buffer, ','); + if (RB_UNLIKELY(data->state->array_nl)) fbuffer_append_str(buffer, data->state->array_nl); } - generate_json(buffer, Vstate, state, rb_ary_entry(obj, i)); - } - state->depth = --depth; - if (array_nl) { - fbuffer_append(buffer, array_nl, array_nl_len); - if (indent) { - for (j = 0; j < depth; j++) { - fbuffer_append(buffer, indent, indent_len); - } + if (RB_UNLIKELY(data->state->indent)) { + fbuffer_append_str_repeat(buffer, data->state->indent, depth); + } + generate_json(buffer, data, RARRAY_AREF(obj, i)); + } + data->depth = --depth; + if (RB_UNLIKELY(data->state->array_nl)) { + fbuffer_append_str(buffer, data->state->array_nl); + if (RB_UNLIKELY(data->state->indent)) { + fbuffer_append_str_repeat(buffer, data->state->indent, depth); } } fbuffer_append_char(buffer, ']'); } -static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_fallback(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - fbuffer_append_char(buffer, '"'); -#ifdef HAVE_RUBY_ENCODING_H - if (!rb_enc_str_asciicompat_p(obj)) { - obj = rb_str_encode(obj, CEncoding_UTF_8, 0, Qnil); - } -#endif - if (state->ascii_only) { - convert_UTF8_to_JSON_ASCII(buffer, obj); + VALUE tmp; + if (rb_respond_to(obj, i_to_json)) { + tmp = json_call_to_json(data, obj); + Check_Type(tmp, T_STRING); + fbuffer_append_str(buffer, tmp); } else { - convert_UTF8_to_JSON(buffer, obj); + generate_json_string(buffer, data, json_to_s(obj)); } - fbuffer_append_char(buffer, '"'); } -static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_null(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { fbuffer_append(buffer, "null", 4); } -static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_false(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { fbuffer_append(buffer, "false", 5); } -static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_true(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { fbuffer_append(buffer, "true", 4); } -static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_rfc8785_number(FBuffer *buffer, VALUE obj) { - fbuffer_append_long(buffer, FIX2LONG(obj)); + VALUE str = rb_proc_call_with_block(rfc8785_number_formatter_proc, 1, &obj, Qnil); + Check_Type(str, T_STRING); + fbuffer_append_str(buffer, str); } -static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_fixnum(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - VALUE tmp = rb_funcall(obj, i_to_s, 0); - fbuffer_append_str(buffer, tmp); + if (RB_UNLIKELY(data->state->rfc8785)) { + generate_json_rfc8785_number(buffer, obj); + return; + } + fbuffer_append_long(buffer, FIX2LONG(obj)); } -#ifdef RUBY_INTEGER_UNIFICATION -static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_bignum(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - if (FIXNUM_P(obj)) - generate_json_fixnum(buffer, Vstate, state, obj); - else - generate_json_bignum(buffer, Vstate, state, obj); + if (RB_UNLIKELY(data->state->rfc8785)) { + generate_json_rfc8785_number(buffer, obj); + return; + } + fbuffer_append_str(buffer, json_to_s(obj)); } -#endif -static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) + +static void generate_json_float(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { double value = RFLOAT_VALUE(obj); - char allow_nan = state->allow_nan; - VALUE tmp = rb_funcall(obj, i_to_s, 0); - if (!allow_nan) { - if (isinf(value)) { - fbuffer_free(buffer); - rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp)); - } else if (isnan(value)) { - fbuffer_free(buffer); - rb_raise(eGeneratorError, "%u: %"PRIsVALUE" not allowed in JSON", __LINE__, RB_OBJ_STRING(tmp)); + char allow_nan = data->state->allow_nan; + if (isinf(value) || isnan(value)) { + /* for NaN and Infinity values we either raise an error or rely on Float#to_s. */ + if (!allow_nan) { + if (data->state->strict && data->state->as_json) { + VALUE casted_obj = json_call_as_json(data->state, obj, Qfalse); + if (casted_obj != obj) { + increase_depth(data); + generate_json(buffer, data, casted_obj); + data->depth--; + return; + } + } + raise_generator_error(obj, "%"PRIsVALUE" not allowed in JSON", json_to_s(obj)); } + + fbuffer_append_str(buffer, json_to_s(obj)); + return; + } + + if (RB_UNLIKELY(data->state->rfc8785)) { + generate_json_rfc8785_number(buffer, obj); + return; } - fbuffer_append_str(buffer, tmp); + + /* This implementation writes directly into the buffer. We reserve + * the 32 characters that fpconv_dtoa states as its maximum. + */ + fbuffer_inc_capa(buffer, 32); + char* d = buffer->ptr + buffer->len; + int len = fpconv_dtoa(value, d); + /* fpconv_dtoa converts a float to its shortest string representation, + * but it adds a ".0" if this is a plain integer. + */ + fbuffer_consumed(buffer, len); } -static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj) +static void generate_json_fragment(FBuffer *buffer, struct generate_json_data *data, VALUE obj) { - VALUE tmp; - VALUE klass = CLASS_OF(obj); - if (klass == rb_cHash) { - generate_json_object(buffer, Vstate, state, obj); - } else if (klass == rb_cArray) { - generate_json_array(buffer, Vstate, state, obj); - } else if (klass == rb_cString) { - generate_json_string(buffer, Vstate, state, obj); - } else if (obj == Qnil) { - generate_json_null(buffer, Vstate, state, obj); + VALUE fragment = RSTRUCT_GET(obj, 0); + Check_Type(fragment, T_STRING); + fbuffer_append_str(buffer, fragment); +} + +static inline void generate_json_general(FBuffer *buffer, struct generate_json_data *data, VALUE obj, bool fallback) +{ + bool as_json_called = false; +start: + if (obj == Qnil) { + generate_json_null(buffer, data, obj); } else if (obj == Qfalse) { - generate_json_false(buffer, Vstate, state, obj); + generate_json_false(buffer, data, obj); } else if (obj == Qtrue) { - generate_json_true(buffer, Vstate, state, obj); - } else if (FIXNUM_P(obj)) { - generate_json_fixnum(buffer, Vstate, state, obj); - } else if (RB_TYPE_P(obj, T_BIGNUM)) { - generate_json_bignum(buffer, Vstate, state, obj); - } else if (klass == rb_cFloat) { - generate_json_float(buffer, Vstate, state, obj); - } else if (rb_respond_to(obj, i_to_json)) { - tmp = rb_funcall(obj, i_to_json, 1, Vstate); - Check_Type(tmp, T_STRING); - fbuffer_append_str(buffer, tmp); + generate_json_true(buffer, data, obj); + } else if (RB_SPECIAL_CONST_P(obj)) { + if (RB_FIXNUM_P(obj)) { + generate_json_fixnum(buffer, data, obj); + } else if (RB_FLONUM_P(obj)) { + generate_json_float(buffer, data, obj); + } else if (RB_STATIC_SYM_P(obj)) { + if (data->state->strict) { + obj = rb_sym2str(obj); + JSON_ASSERT(RBASIC_CLASS(obj) == rb_cString); + goto generate_string; + } + + generate_json_fallback(buffer, data, obj); + } else { + goto general; + } } else { - tmp = rb_funcall(obj, i_to_s, 0); - Check_Type(tmp, T_STRING); - generate_json_string(buffer, Vstate, state, tmp); + VALUE klass = RBASIC_CLASS(obj); + switch (RB_BUILTIN_TYPE(obj)) { + case T_BIGNUM: + generate_json_bignum(buffer, data, obj); + break; + case T_HASH: + if (fallback && klass != rb_cHash) goto general; + generate_json_object(buffer, data, obj); + break; + case T_ARRAY: + if (fallback && klass != rb_cArray) goto general; + generate_json_array(buffer, data, obj); + break; + case T_STRING: + if (fallback && klass != rb_cString) goto general; + + generate_string: + if (RB_LIKELY(valid_json_string_p(obj))) { + raw_generate_json_string(buffer, data, obj); + } else if (as_json_called) { + raise_generator_error(obj, "source sequence is illegal/malformed utf-8"); + } else { + obj = ensure_valid_encoding(data, obj, false, false); + as_json_called = true; + goto start; + } + break; + case T_SYMBOL: + if (data->state->strict) { + obj = rb_sym2str(obj); + JSON_ASSERT(RBASIC_CLASS(obj) == rb_cString); + goto generate_string; + } + + generate_json_fallback(buffer, data, obj); + break; + case T_FLOAT: + if (fallback && klass != rb_cFloat) goto general; + generate_json_float(buffer, data, obj); + break; + case T_STRUCT: + if (klass != cFragment) goto general; + generate_json_fragment(buffer, data, obj); + break; + default: + general: + if (data->state->strict) { + if (RTEST(data->state->as_json) && !as_json_called) { + obj = json_call_as_json(data->state, obj, Qfalse); + as_json_called = true; + goto start; + } else { + raise_generator_error(obj, "%"PRIsVALUE" not allowed in JSON", CLASS_OF(obj)); + } + } else { + generate_json_fallback(buffer, data, obj); + } + } } } -static FBuffer *cState_prepare_buffer(VALUE self) +static void generate_json(FBuffer *buffer, struct generate_json_data *data, VALUE obj) +{ + generate_json_general(buffer, data, obj, true); +} + +static void generate_json_no_fallback(FBuffer *buffer, struct generate_json_data *data, VALUE obj) +{ + generate_json_general(buffer, data, obj, false); +} + +static void validate_rfc8785(JSON_Generator_State *state) { - FBuffer *buffer; - GET_STATE(self); - buffer = fbuffer_alloc(state->buffer_initial_length); + if (!state->rfc8785) return; - if (state->object_delim) { - fbuffer_clear(state->object_delim); - } else { - state->object_delim = fbuffer_alloc(16); - } - fbuffer_append_char(state->object_delim, ','); - if (state->object_delim2) { - fbuffer_clear(state->object_delim2); - } else { - state->object_delim2 = fbuffer_alloc(16); + const char *option = state->indent ? "indent" : + state->space ? "space" : + state->space_before ? "space_before" : + state->object_nl ? "object_nl" : + state->array_nl ? "array_nl" : + state->ascii_only ? "ascii_only" : + state->script_safe ? "script_safe" : + state->allow_nan ? "allow_nan" : NULL; + if (option) { + rb_raise(rb_eArgError, "%s cannot be used with rfc8785", option); } - if (state->space_before) fbuffer_append(state->object_delim2, state->space_before, state->space_before_len); - fbuffer_append_char(state->object_delim2, ':'); - if (state->space) fbuffer_append(state->object_delim2, state->space, state->space_len); +} - if (state->array_delim) { - fbuffer_clear(state->array_delim); - } else { - state->array_delim = fbuffer_alloc(16); - } - fbuffer_append_char(state->array_delim, ','); - if (state->array_nl) fbuffer_append(state->array_delim, state->array_nl, state->array_nl_len); - return buffer; +static VALUE generate_json_try(VALUE d) +{ + struct generate_json_data *data = (struct generate_json_data *)d; + + validate_rfc8785(data->state); + data->func(data->buffer, data, data->obj); + + return fbuffer_finalize(data->buffer); +} + +static VALUE generate_json_ensure(VALUE d) +{ + struct generate_json_data *data = (struct generate_json_data *)d; + fbuffer_free(data->buffer); + + return Qundef; } -static VALUE cState_partial_generate(VALUE self, VALUE obj) +static inline VALUE cState_partial_generate(VALUE self, VALUE obj, generator_func func, VALUE io) { - FBuffer *buffer = cState_prepare_buffer(self); GET_STATE(self); - generate_json(buffer, self, state, obj); - return fbuffer_to_s(buffer); + + char stack_buffer[FBUFFER_STACK_SIZE]; + FBuffer buffer = { 0 }; + fbuffer_init(&buffer, state->buffer_initial_length, io, stack_buffer, FBUFFER_STACK_SIZE); + + struct generate_json_data data = { + .buffer = &buffer, + .vstate = Qfalse, // don't use self as it may be frozen and its depth is mutated when calling to_json + .state = state, + .depth = state->depth, + .obj = obj, + .func = func + }; + return rb_ensure(generate_json_try, (VALUE)&data, generate_json_ensure, (VALUE)&data); } -/* - * call-seq: generate(obj) +/* call-seq: + * generate(obj) -> String + * generate(obj, anIO) -> anIO * * Generates a valid JSON document from object +obj+ and returns the * result. If no valid JSON document can be created this method raises a * GeneratorError exception. */ -static VALUE cState_generate(VALUE self, VALUE obj) +static VALUE cState_generate(int argc, VALUE *argv, VALUE self) { - VALUE result = cState_partial_generate(self, obj); - GET_STATE(self); - (void)state; - return result; + rb_check_arity(argc, 1, 2); + VALUE obj = argv[0]; + VALUE io = argc > 1 ? argv[1] : Qnil; + return cState_partial_generate(self, obj, generate_json, io); +} + +/* :nodoc: */ +static VALUE cState_generate_no_fallback(int argc, VALUE *argv, VALUE self) +{ + rb_check_arity(argc, 1, 2); + VALUE obj = argv[0]; + VALUE io = argc > 1 ? argv[1] : Qnil; + return cState_partial_generate(self, obj, generate_json_no_fallback, io); } -/* - * call-seq: new(opts = {}) - * - * Instantiates a new State object, configured by _opts_. - * - * _opts_ can have the following keys: - * - * * *indent*: a string used to indent levels (default: ''), - * * *space*: a string that is put after, a : or , delimiter (default: ''), - * * *space_before*: a string that is put before a : pair delimiter (default: ''), - * * *object_nl*: a string that is put at the end of a JSON object (default: ''), - * * *array_nl*: a string that is put at the end of a JSON array (default: ''), - * * *allow_nan*: true if NaN, Infinity, and -Infinity should be - * generated, otherwise an exception is thrown, if these values are - * encountered. This options defaults to false. - * * *ascii_only*: true if only ASCII characters should be generated. This - * ontions defaults to false. - * * *buffer_initial_length*: sets the initial length of the generator's - * internal buffer. - */ static VALUE cState_initialize(int argc, VALUE *argv, VALUE self) { - VALUE opts; - GET_STATE(self); - state->max_nesting = 100; - state->buffer_initial_length = FBUFFER_INITIAL_LENGTH_DEFAULT; - rb_scan_args(argc, argv, "01", &opts); - if (!NIL_P(opts)) cState_configure(self, opts); + rb_warn("The json gem extension was loaded with the stdlib ruby code. You should upgrade rubygems with `gem update --system`"); return self; } @@ -1048,14 +1419,15 @@ static VALUE cState_init_copy(VALUE obj, VALUE orig) if (!objState) rb_raise(rb_eArgError, "unallocated JSON::State"); MEMCPY(objState, origState, JSON_Generator_State, 1); - objState->indent = fstrndup(origState->indent, origState->indent_len); - objState->space = fstrndup(origState->space, origState->space_len); - objState->space_before = fstrndup(origState->space_before, origState->space_before_len); - objState->object_nl = fstrndup(origState->object_nl, origState->object_nl_len); - objState->array_nl = fstrndup(origState->array_nl, origState->array_nl_len); - if (origState->array_delim) objState->array_delim = fbuffer_dup(origState->array_delim); - if (origState->object_delim) objState->object_delim = fbuffer_dup(origState->object_delim); - if (origState->object_delim2) objState->object_delim2 = fbuffer_dup(origState->object_delim2); + + RB_OBJ_WRITTEN(obj, Qundef, objState->indent); + RB_OBJ_WRITTEN(obj, Qundef, objState->space); + RB_OBJ_WRITTEN(obj, Qundef, objState->space_before); + RB_OBJ_WRITTEN(obj, Qundef, objState->object_nl); + RB_OBJ_WRITTEN(obj, Qundef, objState->array_nl); + RB_OBJ_WRITTEN(obj, Qundef, objState->as_json); + RB_OBJ_WRITTEN(obj, Qundef, objState->sort_keys); + return obj; } @@ -1073,10 +1445,7 @@ static VALUE cState_from_state_s(VALUE self, VALUE opts) } else if (rb_obj_is_kind_of(opts, rb_cHash)) { return rb_funcall(self, i_new, 1, opts); } else { - if (NIL_P(CJSON_SAFE_STATE_PROTOTYPE)) { - CJSON_SAFE_STATE_PROTOTYPE = rb_const_get(mJSON, i_SAFE_STATE_PROTOTYPE); - } - return rb_funcall(CJSON_SAFE_STATE_PROTOTYPE, i_dup, 0); + return rb_class_new_instance(0, NULL, cState); } } @@ -1088,7 +1457,18 @@ static VALUE cState_from_state_s(VALUE self, VALUE opts) static VALUE cState_indent(VALUE self) { GET_STATE(self); - return state->indent ? rb_str_new(state->indent, state->indent_len) : rb_str_new2(""); + return state->indent ? state->indent : rb_str_freeze(rb_utf8_str_new("", 0)); +} + +static VALUE string_config(VALUE config) +{ + if (RTEST(config)) { + Check_Type(config, T_STRING); + if (RSTRING_LEN(config)) { + return rb_str_new_frozen(config); + } + } + return Qfalse; } /* @@ -1098,21 +1478,9 @@ static VALUE cState_indent(VALUE self) */ static VALUE cState_indent_set(VALUE self, VALUE indent) { - unsigned long len; + rb_check_frozen(self); GET_STATE(self); - Check_Type(indent, T_STRING); - len = RSTRING_LEN(indent); - if (len == 0) { - if (state->indent) { - ruby_xfree(state->indent); - state->indent = NULL; - state->indent_len = 0; - } - } else { - if (state->indent) ruby_xfree(state->indent); - state->indent = fstrndup(RSTRING_PTR(indent), len); - state->indent_len = len; - } + RB_OBJ_WRITE(self, &state->indent, string_config(indent)); return Qnil; } @@ -1125,7 +1493,7 @@ static VALUE cState_indent_set(VALUE self, VALUE indent) static VALUE cState_space(VALUE self) { GET_STATE(self); - return state->space ? rb_str_new(state->space, state->space_len) : rb_str_new2(""); + return state->space ? state->space : rb_str_freeze(rb_utf8_str_new("", 0)); } /* @@ -1136,21 +1504,9 @@ static VALUE cState_space(VALUE self) */ static VALUE cState_space_set(VALUE self, VALUE space) { - unsigned long len; + rb_check_frozen(self); GET_STATE(self); - Check_Type(space, T_STRING); - len = RSTRING_LEN(space); - if (len == 0) { - if (state->space) { - ruby_xfree(state->space); - state->space = NULL; - state->space_len = 0; - } - } else { - if (state->space) ruby_xfree(state->space); - state->space = fstrndup(RSTRING_PTR(space), len); - state->space_len = len; - } + RB_OBJ_WRITE(self, &state->space, string_config(space)); return Qnil; } @@ -1162,7 +1518,7 @@ static VALUE cState_space_set(VALUE self, VALUE space) static VALUE cState_space_before(VALUE self) { GET_STATE(self); - return state->space_before ? rb_str_new(state->space_before, state->space_before_len) : rb_str_new2(""); + return state->space_before ? state->space_before : rb_str_freeze(rb_utf8_str_new("", 0)); } /* @@ -1172,21 +1528,9 @@ static VALUE cState_space_before(VALUE self) */ static VALUE cState_space_before_set(VALUE self, VALUE space_before) { - unsigned long len; + rb_check_frozen(self); GET_STATE(self); - Check_Type(space_before, T_STRING); - len = RSTRING_LEN(space_before); - if (len == 0) { - if (state->space_before) { - ruby_xfree(state->space_before); - state->space_before = NULL; - state->space_before_len = 0; - } - } else { - if (state->space_before) ruby_xfree(state->space_before); - state->space_before = fstrndup(RSTRING_PTR(space_before), len); - state->space_before_len = len; - } + RB_OBJ_WRITE(self, &state->space_before, string_config(space_before)); return Qnil; } @@ -1199,7 +1543,7 @@ static VALUE cState_space_before_set(VALUE self, VALUE space_before) static VALUE cState_object_nl(VALUE self) { GET_STATE(self); - return state->object_nl ? rb_str_new(state->object_nl, state->object_nl_len) : rb_str_new2(""); + return state->object_nl ? state->object_nl : rb_str_freeze(rb_utf8_str_new("", 0)); } /* @@ -1210,20 +1554,9 @@ static VALUE cState_object_nl(VALUE self) */ static VALUE cState_object_nl_set(VALUE self, VALUE object_nl) { - unsigned long len; + rb_check_frozen(self); GET_STATE(self); - Check_Type(object_nl, T_STRING); - len = RSTRING_LEN(object_nl); - if (len == 0) { - if (state->object_nl) { - ruby_xfree(state->object_nl); - state->object_nl = NULL; - } - } else { - if (state->object_nl) ruby_xfree(state->object_nl); - state->object_nl = fstrndup(RSTRING_PTR(object_nl), len); - state->object_nl_len = len; - } + RB_OBJ_WRITE(self, &state->object_nl, string_config(object_nl)); return Qnil; } @@ -1235,7 +1568,7 @@ static VALUE cState_object_nl_set(VALUE self, VALUE object_nl) static VALUE cState_array_nl(VALUE self) { GET_STATE(self); - return state->array_nl ? rb_str_new(state->array_nl, state->array_nl_len) : rb_str_new2(""); + return state->array_nl ? state->array_nl : rb_str_freeze(rb_utf8_str_new("", 0)); } /* @@ -1245,23 +1578,47 @@ static VALUE cState_array_nl(VALUE self) */ static VALUE cState_array_nl_set(VALUE self, VALUE array_nl) { - unsigned long len; + rb_check_frozen(self); GET_STATE(self); - Check_Type(array_nl, T_STRING); - len = RSTRING_LEN(array_nl); - if (len == 0) { - if (state->array_nl) { - ruby_xfree(state->array_nl); - state->array_nl = NULL; - } - } else { - if (state->array_nl) ruby_xfree(state->array_nl); - state->array_nl = fstrndup(RSTRING_PTR(array_nl), len); - state->array_nl_len = len; - } + RB_OBJ_WRITE(self, &state->array_nl, string_config(array_nl)); return Qnil; } +/* + * call-seq: as_json() + * + * Returns the callback used to convert unsupported objects in strict mode. + */ +static VALUE cState_as_json(VALUE self) +{ + GET_STATE(self); + return state->as_json; +} + +static VALUE as_json_config(VALUE value) +{ + if (rb_obj_is_proc(value)) { + return value; + } + VALUE proc = rb_check_funcall(value, rb_intern("to_proc"), 0, NULL); + if (proc == Qundef || !rb_obj_is_proc(proc)) { + rb_raise(rb_eTypeError, "as_json must be a Proc"); + } + return proc; +} + +/* + * call-seq: as_json=(as_json) + * + * Sets the Proc used to convert unsupported objects in strict mode. + */ +static VALUE cState_as_json_set(VALUE self, VALUE as_json) +{ + rb_check_frozen(self); + GET_STATE(self); + RB_OBJ_WRITE(self, &state->as_json, as_json_config(as_json)); + return Qnil; +} /* * call-seq: check_circular? @@ -1287,6 +1644,25 @@ static VALUE cState_max_nesting(VALUE self) return LONG2FIX(state->max_nesting); } +static long long_config(VALUE num) +{ + return RTEST(num) ? NUM2LONG(num) : 0; +} + +// depth must never be negative; reject early with a clear error. +static long depth_config(VALUE num) +{ + if (!RTEST(num)) return 0; + long d = NUM2LONG(num); + if (RB_UNLIKELY(d < 0)) { + rb_raise(rb_eArgError, "depth must be >= 0 (got %ld)", d); + } + if (RB_UNLIKELY(d > INT_MAX)) { + rb_raise(rb_eArgError, "depth is too large (got %ld)", d); + } + return d; +} + /* * call-seq: max_nesting=(depth) * @@ -1295,9 +1671,68 @@ static VALUE cState_max_nesting(VALUE self) */ static VALUE cState_max_nesting_set(VALUE self, VALUE depth) { + rb_check_frozen(self); + GET_STATE(self); + state->max_nesting = long_config(depth); + return Qnil; +} + +/* + * call-seq: script_safe + * + * If this boolean is true, the forward slashes will be escaped in + * the json output. + */ +static VALUE cState_script_safe(VALUE self) +{ + GET_STATE(self); + return state->script_safe ? Qtrue : Qfalse; +} + +/* + * call-seq: script_safe=(enable) + * + * This sets whether or not the forward slashes will be escaped in + * the json output. + */ +static VALUE cState_script_safe_set(VALUE self, VALUE enable) +{ + rb_check_frozen(self); + GET_STATE(self); + state->script_safe = RTEST(enable); + return Qnil; +} + +/* + * call-seq: strict + * + * If this boolean is false, types unsupported by the JSON format will + * be serialized as strings. + * If this boolean is true, types unsupported by the JSON format will + * raise a JSON::GeneratorError. + */ +static VALUE cState_strict(VALUE self) +{ + GET_STATE(self); + return state->strict ? Qtrue : Qfalse; +} + +/* + * call-seq: strict=(enable) + * + * This sets whether or not to serialize types unsupported by the + * JSON format as strings. + * If this boolean is false, types unsupported by the JSON format will + * be serialized as strings. + * If this boolean is true, types unsupported by the JSON format will + * raise a JSON::GeneratorError. + */ +static VALUE cState_strict_set(VALUE self, VALUE enable) +{ + rb_check_frozen(self); GET_STATE(self); - Check_Type(depth, T_FIXNUM); - return state->max_nesting = FIX2LONG(depth); + state->strict = RTEST(enable); + return Qnil; } /* @@ -1312,6 +1747,19 @@ static VALUE cState_allow_nan_p(VALUE self) return state->allow_nan ? Qtrue : Qfalse; } +/* + * call-seq: allow_nan=(enable) + * + * This sets whether or not to serialize NaN, Infinity, and -Infinity + */ +static VALUE cState_allow_nan_set(VALUE self, VALUE enable) +{ + rb_check_frozen(self); + GET_STATE(self); + state->allow_nan = RTEST(enable); + return Qnil; +} + /* * call-seq: ascii_only? * @@ -1324,6 +1772,125 @@ static VALUE cState_ascii_only_p(VALUE self) return state->ascii_only ? Qtrue : Qfalse; } +/* + * call-seq: ascii_only=(enable) + * + * This sets whether only ASCII characters should be generated. + */ +static VALUE cState_ascii_only_set(VALUE self, VALUE enable) +{ + rb_check_frozen(self); + GET_STATE(self); + state->ascii_only = RTEST(enable); + return Qnil; +} + +static VALUE cState_set_default_sort_keys_proc(VALUE self, VALUE proc) +{ + if (!rb_obj_is_proc(proc)) { + rb_raise(rb_eTypeError, "sort_key_proc must be a Proc"); + } + if (default_sort_keys_proc) { + rb_raise(rb_eArgError, "sort_key_proc can only be set once"); + } + return default_sort_keys_proc = proc; +} + +static VALUE cState_set_rfc8785_number_formatter_proc(VALUE self, VALUE proc) +{ + if (!rb_obj_is_proc(proc)) { + rb_raise(rb_eTypeError, "rfc8785_number_formatter_proc must be a Proc"); + } + if (rfc8785_number_formatter_proc) { + rb_raise(rb_eArgError, "rfc8785_number_formatter_proc can only be set once"); + } + return rfc8785_number_formatter_proc = proc; +} + +static VALUE cState_set_rfc8785_sort_keys_proc(VALUE self, VALUE proc) +{ + if (!rb_obj_is_proc(proc)) { + rb_raise(rb_eTypeError, "rfc8785_sort_keys_proc must be a Proc"); + } + if (rfc8785_sort_keys_proc) { + rb_raise(rb_eArgError, "rfc8785_sort_keys_proc can only be set once"); + } + return rfc8785_sort_keys_proc = proc; +} + +static VALUE normalize_sort_keys(VALUE value) +{ + if (rb_obj_is_proc(value)) { + return value; + } else if (value == Qtrue) { + return default_sort_keys_proc; + } else if (RTEST(value)) { + rb_raise(rb_eTypeError, "The `sort_keys` argument must be a boolean or a Proc"); + } else { + return Qfalse; + } +} + +/* + * call-seq: sort_keys + * + * Get the value of sort_keys. + */ +static VALUE cState_sort_keys(VALUE self) +{ + GET_STATE(self); + return state->sort_keys; +} + +/* + * call-seq: sort_keys=(value) + * + * value is a boolean or a proc. If the value is the boolean true, object keys + * will be sorted lexicographically in ascending order. + * + * If the value is a proc, it receives the entire Hash and must return a Hash + * with its pairs in the desired order, allowing for arbitrary sorting. + */ +static VALUE cState_sort_keys_set(VALUE self, VALUE value) +{ + rb_check_frozen(self); + GET_STATE(self); + RB_OBJ_WRITE(self, &state->sort_keys, normalize_sort_keys(value)); + return state->sort_keys; +} + + +/* + * call-seq: rfc8785? + * + * Get whether RFC8785 (canonicalization) is enabled. + */ +static VALUE cState_rfc8785_p(VALUE self) +{ + GET_STATE(self); + return state->rfc8785 ? Qtrue : Qfalse; +} + +/* + * call-seq: rfc8785= + * + * Sets whether RFC8785 (canonicalization) is enabled. + */ + +static VALUE cState_rfc8785_set(VALUE self, VALUE value) +{ + rb_check_frozen(self); + GET_STATE(self); + state->rfc8785 = RTEST(value); + return state->rfc8785 ? Qtrue : Qfalse; +} + +static VALUE cState_allow_duplicate_key_p(VALUE self) +{ + GET_STATE(self); + return state->allow_duplicate_key ? Qtrue : Qfalse; +} + /* * call-seq: depth * @@ -1338,14 +1905,13 @@ static VALUE cState_depth(VALUE self) /* * call-seq: depth=(depth) * - * This sets the maximum level of data structure nesting in the generated JSON - * to the integer depth, max_nesting = 0 if no maximum should be checked. + * Sets the current depth of data structure nesting to the integer +depth+. */ static VALUE cState_depth_set(VALUE self, VALUE depth) { + rb_check_frozen(self); GET_STATE(self); - Check_Type(depth, T_FIXNUM); - state->depth = FIX2LONG(depth); + state->depth = depth_config(depth); return Qnil; } @@ -1360,6 +1926,15 @@ static VALUE cState_buffer_initial_length(VALUE self) return LONG2FIX(state->buffer_initial_length); } +static void buffer_initial_length_set(JSON_Generator_State *state, VALUE buffer_initial_length) +{ + Check_Type(buffer_initial_length, T_FIXNUM); + long initial_length = FIX2LONG(buffer_initial_length); + if (initial_length > 0) { + state->buffer_initial_length = initial_length; + } +} + /* * call-seq: buffer_initial_length=(length) * @@ -1368,35 +1943,162 @@ static VALUE cState_buffer_initial_length(VALUE self) */ static VALUE cState_buffer_initial_length_set(VALUE self, VALUE buffer_initial_length) { - long initial_length; + rb_check_frozen(self); GET_STATE(self); - Check_Type(buffer_initial_length, T_FIXNUM); - initial_length = FIX2LONG(buffer_initial_length); - if (initial_length > 0) { - state->buffer_initial_length = initial_length; - } + buffer_initial_length_set(state, buffer_initial_length); return Qnil; } -/* - * - */ +struct configure_state_data { + JSON_Generator_State *state; + VALUE vstate; // Ruby object that owns the state, or Qfalse if stack-allocated + VALUE unknown_keywords; +}; + +static inline void state_write_value(struct configure_state_data *data, VALUE *field, VALUE value) +{ + if (RTEST(data->vstate)) { + RB_OBJ_WRITE(data->vstate, field, value); + } else { + *field = value; + } +} + +static int configure_state_i(VALUE key, VALUE val, VALUE _arg) +{ + struct configure_state_data *data = (struct configure_state_data *)_arg; + JSON_Generator_State *state = data->state; + + if (key == sym_indent) { state_write_value(data, &state->indent, string_config(val)); } + else if (key == sym_space) { state_write_value(data, &state->space, string_config(val)); } + else if (key == sym_space_before) { state_write_value(data, &state->space_before, string_config(val)); } + else if (key == sym_object_nl) { state_write_value(data, &state->object_nl, string_config(val)); } + else if (key == sym_array_nl) { state_write_value(data, &state->array_nl, string_config(val)); } + else if (key == sym_max_nesting) { state->max_nesting = long_config(val); } + else if (key == sym_allow_nan) { state->allow_nan = RTEST(val); } + else if (key == sym_ascii_only) { state->ascii_only = RTEST(val); } + else if (key == sym_depth) { state->depth = depth_config(val); } + else if (key == sym_buffer_initial_length) { buffer_initial_length_set(state, val); } + else if (key == sym_script_safe) { state->script_safe = RTEST(val); } + else if (key == sym_strict) { state->strict = RTEST(val); } + else if (key == sym_allow_duplicate_key) { state->allow_duplicate_key = RTEST(val); } + else if (key == sym_rfc8785) { state->rfc8785 = RTEST(val); } + else if (key == sym_as_json) { + VALUE proc = RTEST(val) ? as_json_config(val) : Qfalse; + state->as_json_single_arg = proc && rb_proc_arity(proc) == 1; + state_write_value(data, &state->as_json, proc); + } + else if (key == sym_sort_keys) { + state_write_value(data, &state->sort_keys, normalize_sort_keys(val)); + } + else { + if (!data->unknown_keywords) { + data->unknown_keywords = rb_obj_hide(rb_ary_new()); + } + rb_ary_push(data->unknown_keywords, key); + } + return ST_CONTINUE; +} + +static void configure_state(JSON_Generator_State *state, VALUE vstate, VALUE config) +{ + if (!RTEST(config)) return; + + Check_Type(config, T_HASH); + + if (!RHASH_SIZE(config)) return; + + struct configure_state_data data = { + .state = state, + .vstate = vstate, + .unknown_keywords = Qfalse, + }; + + // We assume in most cases few keys are set so it's faster to go over + // the provided keys than to check all possible keys. + rb_hash_foreach(config, configure_state_i, (VALUE)&data); + + raise_argument_error_on_unknown_keywords(data.unknown_keywords); + validate_rfc8785(state); +} + +static VALUE cState_configure(VALUE self, VALUE opts) +{ + rb_check_frozen(self); + GET_STATE(self); + configure_state(state, self, opts); + return self; +} + +static VALUE cState_m_do_generate(VALUE klass, VALUE obj, VALUE opts, VALUE io, generator_func func) +{ + JSON_Generator_State state = {0}; + state_init(&state); + configure_state(&state, Qfalse, opts); + + char stack_buffer[FBUFFER_STACK_SIZE]; + FBuffer buffer = { 0 }; + fbuffer_init(&buffer, state.buffer_initial_length, io, stack_buffer, FBUFFER_STACK_SIZE); + + struct generate_json_data data = { + .buffer = &buffer, + .vstate = Qfalse, + .state = &state, + .depth = state.depth, + .obj = obj, + .func = func, + }; + return rb_ensure(generate_json_try, (VALUE)&data, generate_json_ensure, (VALUE)&data); +} + +static VALUE cState_m_generate(VALUE klass, VALUE obj, VALUE opts, VALUE io) +{ + return cState_m_do_generate(klass, obj, opts, io, generate_json); +} + +static VALUE cState_m_generate_no_fallback(VALUE klass, VALUE obj, VALUE opts, VALUE io) +{ + return cState_m_do_generate(klass, obj, opts, io, generate_json_no_fallback); +} + void Init_generator(void) { +#ifdef HAVE_RB_EXT_RACTOR_SAFE + rb_ext_ractor_safe(true); +#endif + #undef rb_intern rb_require("json/common"); mJSON = rb_define_module("JSON"); - mExt = rb_define_module_under(mJSON, "Ext"); - mGenerator = rb_define_module_under(mExt, "Generator"); + rb_global_variable(&cFragment); + cFragment = rb_const_get(mJSON, rb_intern("Fragment")); + + VALUE mExt = rb_define_module_under(mJSON, "Ext"); + VALUE mGenerator = rb_define_module_under(mExt, "Generator"); + + rb_global_variable(&default_sort_keys_proc); + rb_global_variable(&rfc8785_number_formatter_proc); + rb_global_variable(&rfc8785_sort_keys_proc); + + rb_global_variable(&eGeneratorError); eGeneratorError = rb_path2class("JSON::GeneratorError"); + + rb_global_variable(&eNestingError); eNestingError = rb_path2class("JSON::NestingError"); cState = rb_define_class_under(mGenerator, "State", rb_cObject); rb_define_alloc_func(cState, cState_s_allocate); rb_define_singleton_method(cState, "from_state", cState_from_state_s, 1); + rb_define_singleton_method(cState, "default_sort_keys_proc=", cState_set_default_sort_keys_proc, 1); + rb_define_singleton_method(cState, "rfc8785_number_formatter_proc=", cState_set_rfc8785_number_formatter_proc, 1); + rb_define_singleton_method(cState, "rfc8785_sort_keys_proc=", cState_set_rfc8785_sort_keys_proc, 1); + rb_define_method(cState, "initialize", cState_initialize, -1); + rb_define_alias(cState, "initialize", "initialize"); // avoid method redefinition warnings + rb_define_private_method(cState, "_configure", cState_configure, 1); + rb_define_method(cState, "initialize_copy", cState_init_copy, 1); rb_define_method(cState, "indent", cState_indent, 0); rb_define_method(cState, "indent=", cState_indent_set, 1); @@ -1408,85 +2110,66 @@ void Init_generator(void) rb_define_method(cState, "object_nl=", cState_object_nl_set, 1); rb_define_method(cState, "array_nl", cState_array_nl, 0); rb_define_method(cState, "array_nl=", cState_array_nl_set, 1); + rb_define_method(cState, "as_json", cState_as_json, 0); + rb_define_method(cState, "as_json=", cState_as_json_set, 1); rb_define_method(cState, "max_nesting", cState_max_nesting, 0); rb_define_method(cState, "max_nesting=", cState_max_nesting_set, 1); + rb_define_method(cState, "script_safe", cState_script_safe, 0); + rb_define_method(cState, "script_safe?", cState_script_safe, 0); + rb_define_method(cState, "script_safe=", cState_script_safe_set, 1); + rb_define_method(cState, "strict", cState_strict, 0); + rb_define_method(cState, "strict?", cState_strict, 0); + rb_define_method(cState, "strict=", cState_strict_set, 1); rb_define_method(cState, "check_circular?", cState_check_circular_p, 0); rb_define_method(cState, "allow_nan?", cState_allow_nan_p, 0); + rb_define_method(cState, "allow_nan=", cState_allow_nan_set, 1); rb_define_method(cState, "ascii_only?", cState_ascii_only_p, 0); + rb_define_method(cState, "ascii_only=", cState_ascii_only_set, 1); rb_define_method(cState, "depth", cState_depth, 0); rb_define_method(cState, "depth=", cState_depth_set, 1); rb_define_method(cState, "buffer_initial_length", cState_buffer_initial_length, 0); rb_define_method(cState, "buffer_initial_length=", cState_buffer_initial_length_set, 1); - rb_define_method(cState, "configure", cState_configure, 1); - rb_define_alias(cState, "merge", "configure"); - rb_define_method(cState, "to_h", cState_to_h, 0); - rb_define_alias(cState, "to_hash", "to_h"); - rb_define_method(cState, "[]", cState_aref, 1); - rb_define_method(cState, "[]=", cState_aset, 2); - rb_define_method(cState, "generate", cState_generate, 1); - - mGeneratorMethods = rb_define_module_under(mGenerator, "GeneratorMethods"); - mObject = rb_define_module_under(mGeneratorMethods, "Object"); - rb_define_method(mObject, "to_json", mObject_to_json, -1); - mHash = rb_define_module_under(mGeneratorMethods, "Hash"); - rb_define_method(mHash, "to_json", mHash_to_json, -1); - mArray = rb_define_module_under(mGeneratorMethods, "Array"); - rb_define_method(mArray, "to_json", mArray_to_json, -1); -#ifdef RUBY_INTEGER_UNIFICATION - mInteger = rb_define_module_under(mGeneratorMethods, "Integer"); - rb_define_method(mInteger, "to_json", mInteger_to_json, -1); -#else - mFixnum = rb_define_module_under(mGeneratorMethods, "Fixnum"); - rb_define_method(mFixnum, "to_json", mFixnum_to_json, -1); - mBignum = rb_define_module_under(mGeneratorMethods, "Bignum"); - rb_define_method(mBignum, "to_json", mBignum_to_json, -1); -#endif - mFloat = rb_define_module_under(mGeneratorMethods, "Float"); - rb_define_method(mFloat, "to_json", mFloat_to_json, -1); - mString = rb_define_module_under(mGeneratorMethods, "String"); - rb_define_singleton_method(mString, "included", mString_included_s, 1); - rb_define_method(mString, "to_json", mString_to_json, -1); - rb_define_method(mString, "to_json_raw", mString_to_json_raw, -1); - rb_define_method(mString, "to_json_raw_object", mString_to_json_raw_object, 0); - mString_Extend = rb_define_module_under(mString, "Extend"); - rb_define_method(mString_Extend, "json_create", mString_Extend_json_create, 1); - mTrueClass = rb_define_module_under(mGeneratorMethods, "TrueClass"); - rb_define_method(mTrueClass, "to_json", mTrueClass_to_json, -1); - mFalseClass = rb_define_module_under(mGeneratorMethods, "FalseClass"); - rb_define_method(mFalseClass, "to_json", mFalseClass_to_json, -1); - mNilClass = rb_define_module_under(mGeneratorMethods, "NilClass"); - rb_define_method(mNilClass, "to_json", mNilClass_to_json, -1); - - CRegexp_MULTILINE = rb_const_get(rb_cRegexp, rb_intern("MULTILINE")); + rb_define_method(cState, "generate", cState_generate, -1); + rb_define_method(cState, "_generate_no_fallback", cState_generate_no_fallback, -1); + rb_define_method(cState, "sort_keys", cState_sort_keys, 0); + rb_define_method(cState, "sort_keys=", cState_sort_keys_set, 1); + rb_define_method(cState, "rfc8785?", cState_rfc8785_p, 0); + rb_define_method(cState, "rfc8785=", cState_rfc8785_set, 1); + + rb_define_private_method(cState, "allow_duplicate_key?", cState_allow_duplicate_key_p, 0); + + rb_define_singleton_method(cState, "generate", cState_m_generate, 3); + rb_define_singleton_method(cState, "_generate_no_fallback", cState_m_generate_no_fallback, 3); + + rb_global_variable(&Encoding_UTF_8); + Encoding_UTF_8 = rb_const_get(rb_path2class("Encoding"), rb_intern("UTF_8")); + i_to_s = rb_intern("to_s"); i_to_json = rb_intern("to_json"); i_new = rb_intern("new"); - i_indent = rb_intern("indent"); - i_space = rb_intern("space"); - i_space_before = rb_intern("space_before"); - i_object_nl = rb_intern("object_nl"); - i_array_nl = rb_intern("array_nl"); - i_max_nesting = rb_intern("max_nesting"); - i_allow_nan = rb_intern("allow_nan"); - i_ascii_only = rb_intern("ascii_only"); - i_depth = rb_intern("depth"); - i_buffer_initial_length = rb_intern("buffer_initial_length"); - i_pack = rb_intern("pack"); - i_unpack = rb_intern("unpack"); - i_create_id = rb_intern("create_id"); - i_extend = rb_intern("extend"); - i_key_p = rb_intern("key?"); - i_aref = rb_intern("[]"); - i_send = rb_intern("__send__"); - i_respond_to_p = rb_intern("respond_to?"); - i_match = rb_intern("match"); - i_keys = rb_intern("keys"); - i_dup = rb_intern("dup"); -#ifdef HAVE_RUBY_ENCODING_H - CEncoding_UTF_8 = rb_funcall(rb_path2class("Encoding"), rb_intern("find"), 1, rb_str_new2("utf-8")); - i_encoding = rb_intern("encoding"); i_encode = rb_intern("encode"); -#endif - i_SAFE_STATE_PROTOTYPE = rb_intern("SAFE_STATE_PROTOTYPE"); - CJSON_SAFE_STATE_PROTOTYPE = Qnil; + + sym_indent = ID2SYM(rb_intern("indent")); + sym_space = ID2SYM(rb_intern("space")); + sym_space_before = ID2SYM(rb_intern("space_before")); + sym_object_nl = ID2SYM(rb_intern("object_nl")); + sym_array_nl = ID2SYM(rb_intern("array_nl")); + sym_max_nesting = ID2SYM(rb_intern("max_nesting")); + sym_allow_nan = ID2SYM(rb_intern("allow_nan")); + sym_ascii_only = ID2SYM(rb_intern("ascii_only")); + sym_depth = ID2SYM(rb_intern("depth")); + sym_buffer_initial_length = ID2SYM(rb_intern("buffer_initial_length")); + sym_script_safe = ID2SYM(rb_intern("script_safe")); + sym_strict = ID2SYM(rb_intern("strict")); + sym_as_json = ID2SYM(rb_intern("as_json")); + sym_allow_duplicate_key = ID2SYM(rb_intern("allow_duplicate_key")); + sym_sort_keys = ID2SYM(rb_intern("sort_keys")); + sym_rfc8785 = ID2SYM(rb_intern("rfc8785")); + + usascii_encindex = rb_usascii_encindex(); + utf8_encindex = rb_utf8_encindex(); + + rb_require("json/ext/generator/state"); + + simd_impl = find_simd_implementation(); } diff --git a/ext/json/ext/generator/generator.h b/ext/json/ext/generator/generator.h deleted file mode 100644 index c367a6209..000000000 --- a/ext/json/ext/generator/generator.h +++ /dev/null @@ -1,171 +0,0 @@ -#ifndef _GENERATOR_H_ -#define _GENERATOR_H_ - -#include -#include - -#include "ruby.h" - -#ifdef HAVE_RUBY_RE_H -#include "ruby/re.h" -#else -#include "re.h" -#endif - -#ifndef rb_intern_str -#define rb_intern_str(string) SYM2ID(rb_str_intern(string)) -#endif - -#ifndef rb_obj_instance_variables -#define rb_obj_instance_variables(object) rb_funcall(object, rb_intern("instance_variables"), 0) -#endif - -#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key)) - -/* unicode definitions */ - -#define UNI_STRICT_CONVERSION 1 - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ - -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_MAX_BMP (UTF32)0x0000FFFF -#define UNI_MAX_UTF16 (UTF32)0x0010FFFF -#define UNI_MAX_UTF32 (UTF32)0x7FFFFFFF -#define UNI_MAX_LEGAL_UTF32 (UTF32)0x0010FFFF - -#define UNI_SUR_HIGH_START (UTF32)0xD800 -#define UNI_SUR_HIGH_END (UTF32)0xDBFF -#define UNI_SUR_LOW_START (UTF32)0xDC00 -#define UNI_SUR_LOW_END (UTF32)0xDFFF - -static const int halfShift = 10; /* used for shifting by 10 bits */ - -static const UTF32 halfBase = 0x0010000UL; -static const UTF32 halfMask = 0x3FFUL; - -static unsigned char isLegalUTF8(const UTF8 *source, unsigned long length); -static void unicode_escape(char *buf, UTF16 character); -static void unicode_escape_to_buffer(FBuffer *buffer, char buf[6], UTF16 character); -static void convert_UTF8_to_JSON_ASCII(FBuffer *buffer, VALUE string); -static void convert_UTF8_to_JSON(FBuffer *buffer, VALUE string); -static char *fstrndup(const char *ptr, unsigned long len); - -/* ruby api and some helpers */ - -typedef struct JSON_Generator_StateStruct { - char *indent; - long indent_len; - char *space; - long space_len; - char *space_before; - long space_before_len; - char *object_nl; - long object_nl_len; - char *array_nl; - long array_nl_len; - FBuffer *array_delim; - FBuffer *object_delim; - FBuffer *object_delim2; - long max_nesting; - char allow_nan; - char ascii_only; - long depth; - long buffer_initial_length; -} JSON_Generator_State; - -#define GET_STATE_TO(self, state) \ - TypedData_Get_Struct(self, JSON_Generator_State, &JSON_Generator_State_type, state) - -#define GET_STATE(self) \ - JSON_Generator_State *state; \ - GET_STATE_TO(self, state) - -#define GENERATE_JSON(type) \ - FBuffer *buffer; \ - VALUE Vstate; \ - JSON_Generator_State *state; \ - \ - rb_scan_args(argc, argv, "01", &Vstate); \ - Vstate = cState_from_state_s(cState, Vstate); \ - TypedData_Get_Struct(Vstate, JSON_Generator_State, &JSON_Generator_State_type, state); \ - buffer = cState_prepare_buffer(Vstate); \ - generate_json_##type(buffer, Vstate, state, self); \ - return fbuffer_to_s(buffer) - -static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self); -#ifdef RUBY_INTEGER_UNIFICATION -static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self); -#else -static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self); -#endif -static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mString_included_s(VALUE self, VALUE modul); -static VALUE mString_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mString_to_json_raw_object(VALUE self); -static VALUE mString_to_json_raw(int argc, VALUE *argv, VALUE self); -static VALUE mString_Extend_json_create(VALUE self, VALUE o); -static VALUE mTrueClass_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mFalseClass_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self); -static VALUE mObject_to_json(int argc, VALUE *argv, VALUE self); -static void State_free(void *state); -static VALUE cState_s_allocate(VALUE klass); -static VALUE cState_configure(VALUE self, VALUE opts); -static VALUE cState_to_h(VALUE self); -static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_object(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_array(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -#ifdef RUBY_INTEGER_UNIFICATION -static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -#endif -static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj); -static VALUE cState_partial_generate(VALUE self, VALUE obj); -static VALUE cState_generate(VALUE self, VALUE obj); -static VALUE cState_initialize(int argc, VALUE *argv, VALUE self); -static VALUE cState_from_state_s(VALUE self, VALUE opts); -static VALUE cState_indent(VALUE self); -static VALUE cState_indent_set(VALUE self, VALUE indent); -static VALUE cState_space(VALUE self); -static VALUE cState_space_set(VALUE self, VALUE space); -static VALUE cState_space_before(VALUE self); -static VALUE cState_space_before_set(VALUE self, VALUE space_before); -static VALUE cState_object_nl(VALUE self); -static VALUE cState_object_nl_set(VALUE self, VALUE object_nl); -static VALUE cState_array_nl(VALUE self); -static VALUE cState_array_nl_set(VALUE self, VALUE array_nl); -static VALUE cState_max_nesting(VALUE self); -static VALUE cState_max_nesting_set(VALUE self, VALUE depth); -static VALUE cState_allow_nan_p(VALUE self); -static VALUE cState_ascii_only_p(VALUE self); -static VALUE cState_depth(VALUE self); -static VALUE cState_depth_set(VALUE self, VALUE depth); -static FBuffer *cState_prepare_buffer(VALUE self); -#ifndef ZALLOC -#define ZALLOC(type) ((type *)ruby_zalloc(sizeof(type))) -static inline void *ruby_zalloc(size_t n) -{ - void *p = ruby_xmalloc(n); - memset(p, 0, n); - return p; -} -#endif -#ifdef TypedData_Make_Struct -static const rb_data_type_t JSON_Generator_State_type; -#define NEW_TYPEDDATA_WRAPPER 1 -#else -#define TypedData_Make_Struct(klass, type, ignore, json) Data_Make_Struct(klass, type, NULL, State_free, json) -#define TypedData_Get_Struct(self, JSON_Generator_State, ignore, json) Data_Get_Struct(self, JSON_Generator_State, json) -#endif - -#endif diff --git a/ext/json/ext/json.h b/ext/json/ext/json.h new file mode 100644 index 000000000..a402182d0 --- /dev/null +++ b/ext/json/ext/json.h @@ -0,0 +1,202 @@ +#ifndef _JSON_H_ +#define _JSON_H_ + +#include "ruby.h" +#include "ruby/encoding.h" +#include + +#ifndef HAVE_RB_LEN_T +typedef long rb_len_t; +# define LEN2NUM LONG2NUM +# define PRIdLEN "ld" +#endif + +#ifndef RBIMPL_ASSERT_OR_ASSUME +# define RBIMPL_ASSERT_OR_ASSUME(x) +#endif + +#if defined(RUBY_DEBUG) && RUBY_DEBUG +# define JSON_ASSERT RUBY_ASSERT +# ifndef JSON_DEBUG +# define JSON_DEBUG 1 +# endif +#else +# ifdef JSON_DEBUG +# include +# define JSON_ASSERT(x) assert(x) +# else +# define JSON_ASSERT(x) +# endif +#endif + +#ifdef JSON_DEBUG +# define JSON_UNREACHABLE_RETURN(val) rb_bug("Unreachable") +#else +# define JSON_UNREACHABLE_RETURN UNREACHABLE_RETURN +#endif + +/* shims */ + +#ifndef RUBY_TYPED_THREAD_SAFE_FREE +#define RUBY_TYPED_THREAD_SAFE_FREE RUBY_TYPED_FREE_IMMEDIATELY +#endif + +#ifndef UNDEF_P +#define UNDEF_P(val) (val == Qundef) +#endif + +#if SIZEOF_UINT64_T == SIZEOF_LONG_LONG +# define INT64T2NUM(x) LL2NUM(x) +# define UINT64T2NUM(x) ULL2NUM(x) +#elif SIZEOF_UINT64_T == SIZEOF_LONG +# define INT64T2NUM(x) LONG2NUM(x) +# define UINT64T2NUM(x) ULONG2NUM(x) +#else +# error No uint64_t conversion +#endif + +/* This is the fallback definition from Ruby 3.4 */ +#ifndef RBIMPL_STDBOOL_H +#if defined(__cplusplus) +# if defined(HAVE_STDBOOL_H) && (__cplusplus >= 201103L) +# include +# endif +#elif defined(HAVE_STDBOOL_H) +# include +#elif !defined(HAVE__BOOL) +typedef unsigned char _Bool; +# define bool _Bool +# define true ((_Bool)+1) +# define false ((_Bool)+0) +# define __bool_true_false_are_defined +#endif +#endif + +#ifndef HAVE_RUBY_XFREE_SIZED +static inline void ruby_xfree_sized(void *ptr, size_t oldsize) +{ + ruby_xfree(ptr); +} + +static inline void *ruby_xrealloc2_sized(void *ptr, size_t new_elems, size_t elem_size, size_t old_elems) +{ + return ruby_xrealloc2(ptr, new_elems, elem_size); +} +#endif + +# define JSON_SIZED_REALLOC_N(v, T, m, n) \ + ((v) = (T *)ruby_xrealloc2_sized((void *)(v), (m), sizeof(T), (n))) + +# define JSON_SIZED_FREE(v) ruby_xfree_sized((void *)(v), sizeof(*(v))) +# define JSON_SIZED_FREE_N(v, n) ruby_xfree_sized((void *)(v), sizeof(*(v)) * (n)) + +#ifndef HAVE_RB_EXT_RACTOR_SAFE +# undef RUBY_TYPED_FROZEN_SHAREABLE +# define RUBY_TYPED_FROZEN_SHAREABLE 0 +#endif + +#ifdef RUBY_TYPED_EMBEDDABLE +# define HAVE_RUBY_TYPED_EMBEDDABLE 1 +#else +# ifdef HAVE_CONST_RUBY_TYPED_EMBEDDABLE +# define RUBY_TYPED_EMBEDDABLE RUBY_TYPED_EMBEDDABLE +# define HAVE_RUBY_TYPED_EMBEDDABLE 1 +# else +# define RUBY_TYPED_EMBEDDABLE 0 +# endif +#endif + +#ifndef NORETURN +#if defined(__has_attribute) && __has_attribute(noreturn) +#define NORETURN(x) __attribute__((noreturn)) x +#else +#define NORETURN(x) x +#endif +#endif + +#ifndef NOINLINE +#if defined(__has_attribute) && __has_attribute(noinline) +#define NOINLINE(x) __attribute__((noinline)) x +#else +#define NOINLINE(x) x +#endif +#endif + +#ifndef ALWAYS_INLINE +#if defined(__has_attribute) && __has_attribute(always_inline) +#define ALWAYS_INLINE(x) inline __attribute__((always_inline)) x +#else +#define ALWAYS_INLINE(x) inline x +#endif +#endif + +#ifndef RB_UNLIKELY +#define RB_UNLIKELY(expr) expr +#endif + +#ifndef RB_LIKELY +#define RB_LIKELY(expr) expr +#endif + +#ifndef MAYBE_UNUSED +# define MAYBE_UNUSED(x) x +#endif + +#ifdef RUBY_DEBUG +#ifndef JSON_DEBUG +#define JSON_DEBUG RUBY_DEBUG +#endif +#endif + +#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ && INTPTR_MAX == INT64_MAX +#define JSON_CPU_LITTLE_ENDIAN_64BITS 1 +#else +#define JSON_CPU_LITTLE_ENDIAN_64BITS 0 +#endif + +#ifdef JSON_TRUFFLERUBY_RB_CATCH_BUG + +#undef RB_BLOCK_CALL_FUNC_ARGLIST +#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, func_args) VALUE func_args + +NORETURN(static inline) void json_rb_throw_obj(VALUE tag, VALUE obj) +{ + VALUE exc = rb_exc_new_str(rb_eException, rb_utf8_str_new_cstr("throw_workaround")); + rb_ivar_set(exc, rb_intern("@throw_tag"), tag); + rb_ivar_set(exc, rb_intern("@throw_obj"), obj); + rb_exc_raise(exc); +} +#define rb_throw_obj json_rb_throw_obj + +static inline VALUE json_rb_catch_obj(VALUE tag, VALUE (*func)(VALUE args), VALUE func_args) +{ + int status; + VALUE result = rb_protect(func, func_args, &status); + if (status) { + VALUE exc = rb_errinfo(); + if (tag == rb_ivar_get(exc, rb_intern("@throw_tag"))) { + rb_set_errinfo(Qnil); + return rb_ivar_get(exc, rb_intern("@throw_obj")); + } + rb_jump_tag(status); + } + return result; +} +#define rb_catch_obj json_rb_catch_obj + +#endif // JSON_TRUFFLERUBY_RB_CATCH_BUG + +static inline void raise_argument_error_on_unknown_keywords(VALUE unknown_keywords) +{ + if (RB_UNLIKELY(unknown_keywords)) { + if (RARRAY_LEN(unknown_keywords) == 1) { + rb_raise(rb_eArgError, "unknown keyword: %" PRIsVALUE, RARRAY_AREF(unknown_keywords, 0)); + } + else { + VALUE keywords = rb_ary_join(unknown_keywords, rb_utf8_str_new_cstr(", ")); + rb_raise(rb_eArgError, "unknown keywords: %" PRIsVALUE, keywords); + } + } +} + +#endif // _JSON_H_ diff --git a/ext/json/ext/parser/depend b/ext/json/ext/parser/depend index 498ffa964..c46071561 100644 --- a/ext/json/ext/parser/depend +++ b/ext/json/ext/parser/depend @@ -1 +1,6 @@ -parser.o: parser.c parser.h $(srcdir)/../fbuffer/fbuffer.h +# AUTOGENERATED DEPENDENCIES START +parser.o: $(srcdir)/../json.h +parser.o: $(srcdir)/../simd/simd.h +parser.o: $(srcdir)/../vendor/fast_float_parser.h +parser.o: parser.c +# AUTOGENERATED DEPENDENCIES END diff --git a/ext/json/ext/parser/extconf.rb b/ext/json/ext/parser/extconf.rb index f7360d46b..18aa546a9 100644 --- a/ext/json/ext/parser/extconf.rb +++ b/ext/json/ext/parser/extconf.rb @@ -1,6 +1,43 @@ -# frozen_string_literal: false +# frozen_string_literal: true require 'mkmf' -have_func("rb_enc_raise", "ruby.h") +$defs << "-DJSON_DEBUG" if ENV.fetch("JSON_DEBUG", "0") != "0" + +if RUBY_ENGINE == 'truffleruby' && RUBY_ENGINE_VERSION < '40.0' + # Ref: https://github.com/truffleruby/truffleruby/issues/4329 + # Ref: https://github.com/truffleruby/truffleruby/pull/4333 + $defs << "-DJSON_TRUFFLERUBY_RB_CATCH_BUG" +end + +have_func("rb_enc_interned_str", "ruby/encoding.h") # RUBY_VERSION >= 3.0 +have_func("rb_str_to_interned_str", "ruby.h") # RUBY_VERSION >= 3.0 +have_func("rb_hash_new_capa", "ruby.h") # RUBY_VERSION >= 3.2 +have_func("rb_hash_bulk_insert", "ruby.h") # Missing on TruffleRuby +have_func("ruby_xfree_sized", "ruby.h") # RUBY_VERSION >= 4.1 + +if have_header("x86intrin.h") + have_func("_lzcnt_u64", "x86intrin.h") +end + +if have_header("intrin.h") + have_func("__lzcnt64", "intrin.h") + have_func("_BitScanReverse64", "intrin.h") +end + +if RUBY_ENGINE == "ruby" + have_const("RUBY_TYPED_EMBEDDABLE", "ruby.h") # RUBY_VERSION >= 3.3 +end + +append_cflags("-std=c99") + +# Disable function outlining on clang to prevent some of the repeated instructions +# in json_eat_whitespace being outlined into function calls. +# Note: This verifies '-mno-outline' is accepted as a valid compiler flag +# and will not pass it if unsupported. +append_cflags("-mno-outline") + +if enable_config('parser-use-simd', default=!ENV["JSON_DISABLE_SIMD"]) + load __dir__ + "/../simd/conf.rb" +end create_makefile 'json/ext/parser' diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c index 63b895eb4..b456a4e23 100644 --- a/ext/json/ext/parser/parser.c +++ b/ext/json/ext/parser/parser.c @@ -1,2129 +1,2925 @@ +#include "../json.h" +#include "../vendor/fast_float_parser.h" +#include "../simd/simd.h" -#line 1 "parser.rl" -#include "../fbuffer/fbuffer.h" -#include "parser.h" +static VALUE mJSON, eNestingError, eParserError, Encoding_UTF_8; +static VALUE CNaN, CInfinity, CMinusInfinity, JSON_empty_string; -#if defined HAVE_RUBY_ENCODING_H -# define EXC_ENCODING rb_utf8_encoding(), -# ifndef HAVE_RB_ENC_RAISE +static ID i_new, i_try_convert, i_encode, i_at_line, i_at_column, i_at_json_path; +#ifndef HAVE_RB_STR_TO_INTERNED_STR +static ID i_uminus; +#endif + +static VALUE sym_max_nesting, sym_allow_nan, sym_allow_trailing_comma, sym_allow_comments, + sym_allow_control_characters, sym_allow_invalid_escape, sym_symbolize_names, + sym_freeze, sym_decimal_class, sym_on_load, sym_allow_duplicate_key; + +static int binary_encindex; +static int utf8_encindex; + +#ifndef HAVE_RB_HASH_BULK_INSERT +// For TruffleRuby static void -enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...) +rb_hash_bulk_insert(rb_len_t count, const VALUE *pairs, VALUE hash) +{ + rb_len_t index = 0; + while (index < count) { + VALUE name = pairs[index++]; + VALUE value = pairs[index++]; + rb_hash_aset(hash, name, value); + } + RB_GC_GUARD(hash); +} +#endif + +#ifndef HAVE_RB_HASH_NEW_CAPA +#define rb_hash_new_capa(n) rb_hash_new() +#endif + +#ifndef HAVE_RB_STR_TO_INTERNED_STR +static VALUE rb_str_to_interned_str(VALUE str) +{ + return rb_funcall(rb_str_freeze(str), i_uminus, 0); +} +#endif + +/* name cache */ + +#include +#include + +// Object names are likely to be repeated, and are frozen. +// As such we can re-use them if we keep a cache of the ones we've seen so far, +// and save much more expensive lookups into the global fstring table. +// This cache implementation is deliberately simple, as we're optimizing for compactness, +// to be able to fit safely on the stack. +// As such, binary search into a sorted array gives a good tradeoff between compactness and +// performance. +#define JSON_RVALUE_CACHE_CAPA 63 +typedef struct rvalue_cache_struct { + int length; + VALUE entries[JSON_RVALUE_CACHE_CAPA]; +} rvalue_cache; + +static void rvalue_cache_mark(rvalue_cache *cache) +{ + for (int index = 0; index < cache->length; index++) { + rb_gc_mark_movable(cache->entries[index]); + } +} + +static void rvalue_cache_compact(rvalue_cache *cache) +{ + for (int index = 0; index < cache->length; index++) { + cache->entries[index] = rb_gc_location(cache->entries[index]); + } +} + +static rb_encoding *enc_utf8; + +#define JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH 55 + +static inline VALUE build_interned_string(const char *str, const rb_len_t length) +{ +# ifdef HAVE_RB_ENC_INTERNED_STR + return rb_enc_interned_str(str, length, enc_utf8); +# else + VALUE rstring = rb_utf8_str_new(str, length); + return rb_funcall(rb_str_freeze(rstring), i_uminus, 0); +# endif +} + +static inline VALUE build_symbol(const char *str, const rb_len_t length) +{ + return rb_str_intern(build_interned_string(str, length)); +} + +static void rvalue_cache_insert_at(rvalue_cache *cache, int index, VALUE rstring) +{ + MEMMOVE(&cache->entries[index + 1], &cache->entries[index], VALUE, cache->length - index); + cache->length++; + cache->entries[index] = rstring; +} + +#define rstring_cache_memcmp memcmp + +#if JSON_CPU_LITTLE_ENDIAN_64BITS +#if __has_builtin(__builtin_bswap64) +#undef rstring_cache_memcmp +ALWAYS_INLINE(static) int rstring_cache_memcmp(const char *str, const char *rptr, const long length) +{ + // The libc memcmp has numerous complex optimizations, but in this particular case, + // we know the string is small (JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH), so being able to + // inline a simpler memcmp outperforms calling the libc version. + long i = 0; + + for (; i + 8 <= length; i += 8) { + uint64_t a, b; + memcpy(&a, str + i, 8); + memcpy(&b, rptr + i, 8); + if (a != b) { + a = __builtin_bswap64(a); + b = __builtin_bswap64(b); + return (a < b) ? -1 : 1; + } + } + + for (; i < length; i++) { + if (str[i] != rptr[i]) { + return (str[i] < rptr[i]) ? -1 : 1; + } + } + + return 0; +} +#endif +#endif + +ALWAYS_INLINE(static) int rstring_cache_cmp(const char *str, const long length, VALUE rstring) +{ + const char *rstring_ptr; + rb_len_t rstring_length; + + RSTRING_GETMEM(rstring, rstring_ptr, rstring_length); + + if (length == rstring_length) { + return rstring_cache_memcmp(str, rstring_ptr, length); + } else { + return (int)(length - rstring_length); + } +} + +ALWAYS_INLINE(static) VALUE rstring_cache_fetch(rvalue_cache *cache, const char *str, const long length) +{ + int low = 0; + int high = cache->length - 1; + + while (low <= high) { + int mid = (high + low) >> 1; + VALUE entry = cache->entries[mid]; + int cmp = rstring_cache_cmp(str, length, entry); + + if (cmp == 0) { + return entry; + } else if (cmp > 0) { + low = mid + 1; + } else { + high = mid - 1; + } + } + + VALUE rstring = build_interned_string(str, length); + + if (cache->length < JSON_RVALUE_CACHE_CAPA) { + rvalue_cache_insert_at(cache, low, rstring); + } + return rstring; +} + +static VALUE rsymbol_cache_fetch(rvalue_cache *cache, const char *str, const long length) +{ + int low = 0; + int high = cache->length - 1; + + while (low <= high) { + int mid = (high + low) >> 1; + VALUE entry = cache->entries[mid]; + int cmp = rstring_cache_cmp(str, length, rb_sym2str(entry)); + + if (cmp == 0) { + return entry; + } else if (cmp > 0) { + low = mid + 1; + } else { + high = mid - 1; + } + } + + VALUE rsymbol = build_symbol(str, length); + + if (cache->length < JSON_RVALUE_CACHE_CAPA) { + rvalue_cache_insert_at(cache, low, rsymbol); + } + return rsymbol; +} + +/* rvalue stack */ + +#define RVALUE_STACK_INITIAL_CAPA 128 + +enum rvalue_stack_type { + RVALUE_STACK_HEAP_ALLOCATED = 0, + RVALUE_STACK_STACK_ALLOCATED = 1, +}; + +typedef struct rvalue_stack_struct { + enum rvalue_stack_type type; + long capa; + long head; + VALUE *ptr; +} rvalue_stack; + +static rvalue_stack *rvalue_stack_spill(rvalue_stack *old_stack, VALUE *handle, rvalue_stack **stack_ref); + +static rvalue_stack *rvalue_stack_grow(rvalue_stack *stack, VALUE *handle, rvalue_stack **stack_ref) +{ + long required = stack->capa ? stack->capa * 2 : RVALUE_STACK_INITIAL_CAPA; + + if (stack->type == RVALUE_STACK_STACK_ALLOCATED) { + stack = rvalue_stack_spill(stack, handle, stack_ref); + } else { + JSON_SIZED_REALLOC_N(stack->ptr, VALUE, required, stack->capa); + stack->capa = required; + } + return stack; +} + +static VALUE rvalue_stack_push(rvalue_stack *stack, VALUE value, VALUE *handle, rvalue_stack **stack_ref) +{ + JSON_ASSERT(stack->type != RVALUE_STACK_STACK_ALLOCATED || handle); + + if (RB_UNLIKELY(stack->head >= stack->capa)) { + stack = rvalue_stack_grow(stack, handle, stack_ref); + } + + stack->ptr[stack->head] = value; + stack->head++; + + return value; +} + +static inline VALUE *rvalue_stack_peek(rvalue_stack *stack, long count) +{ + return stack->ptr + (stack->head - count); +} + +static inline void rvalue_stack_pop(rvalue_stack *stack, long count) +{ + stack->head -= count; +} + +static void rvalue_stack_mark(void *ptr) +{ + rvalue_stack *stack = (rvalue_stack *)ptr; + long index; + if (stack && stack->ptr) { + for (index = 0; index < stack->head; index++) { + rb_gc_mark_movable(stack->ptr[index]); + } + } +} + +static void rvalue_stack_free_buffer(rvalue_stack *stack) +{ + JSON_SIZED_FREE_N(stack->ptr, stack->capa); + stack->ptr = NULL; +} + +static void rvalue_stack_free(void *ptr) +{ + rvalue_stack *stack = (rvalue_stack *)ptr; + if (stack) { + rvalue_stack_free_buffer(stack); +#ifndef HAVE_RUBY_TYPED_EMBEDDABLE + JSON_SIZED_FREE(stack); +#endif + } +} + +static size_t rvalue_stack_memsize(const void *ptr) +{ + const rvalue_stack *stack = (const rvalue_stack *)ptr; + size_t memsize = sizeof(VALUE) * stack->capa; +#ifndef HAVE_RUBY_TYPED_EMBEDDABLE + memsize += sizeof(rvalue_stack); +#endif + return memsize; +} + +static void rvalue_stack_compact(void *ptr) +{ + rvalue_stack *stack = (rvalue_stack *)ptr; + long index; + if (stack && stack->ptr) { + for (index = 0; index < stack->head; index++) { + stack->ptr[index] = rb_gc_location(stack->ptr[index]); + } + } +} + +static const rb_data_type_t JSON_Parser_rvalue_stack_type = { + .wrap_struct_name = "JSON::Ext::Parser/rvalue_stack", + .function = { + .dmark = rvalue_stack_mark, + .dfree = rvalue_stack_free, + .dsize = rvalue_stack_memsize, + .dcompact = rvalue_stack_compact, + }, + // We deliberately don't declare rvalue_stack as RUBY_TYPED_WB_PROTECTED + // because it churns a lot of values so trigering write barriers every time is very costly. + .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE, +}; + +static rvalue_stack *rvalue_stack_spill(rvalue_stack *old_stack, VALUE *handle, rvalue_stack **stack_ref) +{ + rvalue_stack *stack; + VALUE stack_handle = TypedData_Make_Struct(0, rvalue_stack, &JSON_Parser_rvalue_stack_type, stack); + MEMCPY(stack, old_stack, rvalue_stack, 1); + + stack->capa = old_stack->capa << 1; + stack->ptr = ALLOC_N(VALUE, stack->capa); + stack->type = RVALUE_STACK_HEAP_ALLOCATED; + MEMCPY(stack->ptr, old_stack->ptr, VALUE, old_stack->head); + + *handle = stack_handle; + *stack_ref = stack; + + return stack; +} + +static void rvalue_stack_eagerly_release(VALUE handle) +{ + if (handle) { + rvalue_stack *stack; + TypedData_Get_Struct(handle, rvalue_stack, &JSON_Parser_rvalue_stack_type, stack); +#ifdef HAVE_RUBY_TYPED_EMBEDDABLE + rvalue_stack_free_buffer(stack); +#else + rvalue_stack_free(stack); + RTYPEDDATA_DATA(handle) = NULL; +#endif + } +} + +/* frame stack */ + +// Iterative (non-recursive) parsing keeps an explicit stack of the containers +// currently being built, instead of relying on the C call stack. Each frame +// only needs enough bookkeeping to close its container: which kind it is, the +// rvalue_stack position where its children start (so we know how many to pop), +// and the cursor at its opening brace (used to rewind for duplicate key +// errors). Frames hold no VALUEs, so this stack needs no GC marking; it reuses +// the same stack-allocated-with-heap-spill strategy as the rvalue_stack so that +// it's freed even if parsing raises. +// +// The lifecycle helpers below (grow/push/peek/pop/spill/free/eagerly_release +// and the rb_data_type_t) deliberately mirror their rvalue_stack counterparts +// -- the element type and the absence of a mark function are the only real +// differences. Keep the two in sync: a fix to the spill/release or +// HAVE_RUBY_TYPED_EMBEDDABLE handling in one almost certainly belongs in the +// other. +#define JSON_FRAME_STACK_INITIAL_CAPA 32 + +enum json_frame_type { + JSON_FRAME_ROOT, // == JSON_PHASE_DONE + JSON_FRAME_ARRAY, // == JSON_PHASE_ARRAY_COMMA + JSON_FRAME_OBJECT, // = JSON_PHASE_OBJECT_COMMA +}; + +// Where a frame is within its container's grammar. This is the entirety of the +// parser's "what to do next" state: json_parse_any dispatches on the top +// frame's phase and holds no resume state in C locals, so a parse can stop at +// any value boundary and be resumed purely from the (persistable) frame stack. +// +// The first three phases are deliberately equal to the corresponding json_frame_type +// to simplify the transition of phase in json_value_completed. +enum json_frame_phase { + JSON_PHASE_DONE = JSON_FRAME_ROOT, // root only: the document value has been parsed + JSON_PHASE_ARRAY_COMMA = JSON_FRAME_ARRAY, // after a value: expecting ',' or the closing ']' + JSON_PHASE_OBJECT_COMMA = JSON_FRAME_OBJECT, // after a value: expecting ',' or the closing '}' + JSON_PHASE_VALUE, // expecting a value (document root, array element, or object value after ':') + JSON_PHASE_OBJECT_KEY, // expecting a '"' key (after '{' or ',') + JSON_PHASE_OBJECT_COLON, // object only: after a key, expecting ':' +}; + +typedef struct json_frame_struct { + enum json_frame_type type; + enum json_frame_phase phase; + long value_stack_head; // rvalue_stack->head when this container opened + size_t start_offset; // object frames only (the '{'); NULL otherwise +} json_frame; + +typedef struct json_frame_stack_struct { + enum rvalue_stack_type type; // shared with rvalue_stack: is ptr stack- or heap-allocated + long capa; + long head; + json_frame *ptr; +} json_frame_stack; + +typedef struct JSON_ParserStruct { + VALUE on_load_proc; + VALUE decimal_class; + ID decimal_method_id; + int max_nesting; + bool allow_comments; + bool allow_duplicate_key; + bool allow_nan; + bool allow_trailing_comma; + bool allow_control_characters; + bool allow_invalid_escape; + bool symbolize_names; + bool freeze; +} JSON_ParserConfig; + +typedef struct JSON_ParserStateStruct { + VALUE *value_stack_handle; + VALUE *frame_stack_handle; + const char *start; + const char *cursor; + const char *end; + rvalue_stack *value_stack; + json_frame_stack *frames; + rvalue_cache name_cache; + int in_array; + int current_nesting; + VALUE parser; +} JSON_ParserState; + +static json_frame_stack *json_frame_stack_spill(json_frame_stack *old_stack, VALUE *handle, json_frame_stack **stack_ref); + +static json_frame_stack *json_frame_stack_grow(json_frame_stack *stack, VALUE *handle, json_frame_stack **stack_ref) +{ + long required = stack->capa ? stack->capa * 2 : JSON_FRAME_STACK_INITIAL_CAPA; + + if (stack->type == RVALUE_STACK_STACK_ALLOCATED) { + stack = json_frame_stack_spill(stack, handle, stack_ref); + } else { + JSON_SIZED_REALLOC_N(stack->ptr, json_frame, required, stack->capa); + stack->capa = required; + } + return stack; +} + +static json_frame *json_frame_stack_push(JSON_ParserState *state, json_frame frame) +{ + json_frame_stack *stack = state->frames; + + JSON_ASSERT(stack->type != RVALUE_STACK_STACK_ALLOCATED || state->frame_stack_handle); + + if (RB_UNLIKELY(stack->head >= stack->capa)) { + stack = json_frame_stack_grow(stack, state->frame_stack_handle, &state->frames); + } + + json_frame *frame_ptr = &stack->ptr[stack->head++]; + *frame_ptr = frame; + return frame_ptr; +} + +static inline json_frame *json_frame_stack_peek(json_frame_stack *stack) +{ + return &stack->ptr[stack->head - 1]; +} + +static inline void json_frame_stack_pop(json_frame_stack *stack) +{ + stack->head--; +} + +static void json_frame_stack_free_buffer(json_frame_stack *stack) +{ + JSON_SIZED_FREE_N(stack->ptr, stack->capa); + stack->ptr = NULL; +} + +static void json_frame_stack_free(void *ptr) +{ + json_frame_stack *stack = (json_frame_stack *)ptr; + if (stack) { + json_frame_stack_free_buffer(stack); +#ifndef HAVE_RUBY_TYPED_EMBEDDABLE + JSON_SIZED_FREE(stack); +#endif + } +} + +static size_t json_frame_stack_memsize(const void *ptr) +{ + const json_frame_stack *stack = (const json_frame_stack *)ptr; + + size_t memsize = sizeof(json_frame) * stack->capa; +#ifndef HAVE_RUBY_TYPED_EMBEDDABLE + memsize += sizeof(json_frame_stack); +#endif + return memsize; +} + +static const rb_data_type_t JSON_Parser_frame_stack_type = { + .wrap_struct_name = "JSON::Ext::Parser/frame_stack", + .function = { + .dmark = NULL, + .dfree = json_frame_stack_free, + .dsize = json_frame_stack_memsize, + }, + .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_EMBEDDABLE, +}; + +static json_frame_stack *json_frame_stack_spill(json_frame_stack *old_stack, VALUE *handle, json_frame_stack **stack_ref) +{ + json_frame_stack *stack; + *handle = TypedData_Make_Struct(0, json_frame_stack, &JSON_Parser_frame_stack_type, stack); + *stack_ref = stack; + MEMCPY(stack, old_stack, json_frame_stack, 1); + + stack->capa = old_stack->capa << 1; + stack->ptr = ALLOC_N(json_frame, stack->capa); + stack->type = RVALUE_STACK_HEAP_ALLOCATED; + MEMCPY(stack->ptr, old_stack->ptr, json_frame, old_stack->head); + return stack; +} + +static void json_frame_stack_eagerly_release(VALUE handle) +{ + if (handle) { + json_frame_stack *stack; + TypedData_Get_Struct(handle, json_frame_stack, &JSON_Parser_frame_stack_type, stack); +#ifdef HAVE_RUBY_TYPED_EMBEDDABLE + json_frame_stack_free_buffer(stack); +#else + json_frame_stack_free(stack); + RTYPEDDATA_DATA(handle) = NULL; +#endif + } +} + +static int convert_UTF32_to_UTF8(char *buf, uint32_t ch) +{ + int len = 1; + if (ch <= 0x7F) { + buf[0] = (char) ch; + } else if (ch <= 0x07FF) { + buf[0] = (char) ((ch >> 6) | 0xC0); + buf[1] = (char) ((ch & 0x3F) | 0x80); + len++; + } else if (ch <= 0xFFFF) { + buf[0] = (char) ((ch >> 12) | 0xE0); + buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80); + buf[2] = (char) ((ch & 0x3F) | 0x80); + len += 2; + } else if (ch <= 0x1fffff) { + buf[0] =(char) ((ch >> 18) | 0xF0); + buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80); + buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80); + buf[3] =(char) ((ch & 0x3F) | 0x80); + len += 3; + } else { + buf[0] = '?'; + } + return len; +} + +static inline size_t rest(JSON_ParserState *state) { + return state->end - state->cursor; +} + +static inline bool eos(JSON_ParserState *state) { + return state->cursor >= state->end; +} + +static inline char peek(JSON_ParserState *state) +{ + if (RB_UNLIKELY(eos(state))) { + return 0; + } + return *state->cursor; +} + +static void cursor_position(JSON_ParserState *state, long *line_out, rb_len_t *column_out) +{ + JSON_ASSERT(!state->parser); + JSON_ASSERT(state->cursor); + JSON_ASSERT(state->cursor <= state->end); + + // Redundant but helpful for hardening + if (RB_UNLIKELY(state->cursor > state->end)) { + state->cursor = state->end; + } + + const char *cursor = state->cursor; + long line = 1; + + while (cursor > state->start && cursor[-1] != '\n') { + cursor--; + } + rb_len_t column = rb_enc_strlen(cursor, state->cursor, enc_utf8) + 1; + + while (cursor > state->start) { + if (*--cursor == '\n') { + line++; + } + } + *line_out = line; + *column_out = column; +} + +#define PARSE_ERROR_FRAGMENT_LEN 32 + +static VALUE build_parse_error_message(const char *format, JSON_ParserState *state) +{ + unsigned char buffer[PARSE_ERROR_FRAGMENT_LEN + 3]; + + const char *ptr = "EOF"; + if (state->cursor && state->cursor < state->end) { + ptr = state->cursor; + size_t len = 0; + while (len < PARSE_ERROR_FRAGMENT_LEN) { + char ch = ptr[len]; + if (!ch || ch == '\n' || ch == ' ' || ch == '\t' || ch == '\r') { + break; + } + len++; + } + + if (len) { + if (len == PARSE_ERROR_FRAGMENT_LEN) { + // Only trim when the byte limit splits a multibyte character. + while (len && (unsigned char)ptr[len] >= 0x80 && (unsigned char)ptr[len] < 0xC0) { + len--; + } + } + + buffer[0] = '\''; + MEMCPY(buffer + 1, ptr, char, len); + buffer[len + 1] = '\''; + buffer[len + 2] = '\0'; + ptr = (const char *)buffer; + } + } + + return rb_enc_sprintf(enc_utf8, format, ptr); +} + +static VALUE json_path_new(JSON_ParserState *state, VALUE duplicate_key) +{ + VALUE path = rb_ary_new_capa(state->current_nesting); + + json_frame_stack *frames = state->frames; + rvalue_stack *values = state->value_stack; + + for (long depth = 1; depth < frames->head; depth++) { + json_frame *frame = &frames->ptr[depth]; + + bool innermost = depth == frames->head - 1; + long child_head = innermost ? values->head : frames->ptr[depth + 1].value_stack_head; + long count = child_head - frame->value_stack_head; + + if (frame->type == JSON_FRAME_ARRAY) { + rb_ary_push(path, LONG2NUM(frame->phase == JSON_PHASE_ARRAY_COMMA ? count - 1 : count)); + } else if (innermost && !UNDEF_P(duplicate_key)) { + rb_ary_push(path, duplicate_key); + } else if (count & 1) { + rb_ary_push(path, values->ptr[child_head - 1]); + } else if (frame->phase == JSON_PHASE_OBJECT_COMMA && count >= 2) { + rb_ary_push(path, values->ptr[child_head - 2]); + } else { + break; + } + } + + return path; +} + +static VALUE parse_error_new(JSON_ParserState *state, VALUE message, long line, rb_len_t column, bool eos) +{ + VALUE exc = rb_exc_new_str(eParserError, message); + rb_ivar_set(exc, i_at_line, LONG2NUM(line)); + rb_ivar_set(exc, i_at_column, LEN2NUM(column)); + rb_ivar_set(exc, i_at_json_path, json_path_new(state, Qundef)); + return exc; +} + +NORETURN(static) void raise_parse_error(const char *format, JSON_ParserState *state, bool eos) +{ + if (state->parser) { + if (eos) { + // the error will be swallowed by ResumableParser#parse, so no + // point building a message or backtrace. + rb_throw_obj(state->parser, state->parser); + } else { + // line and columns can't be accurate in resumable + rb_exc_raise(parse_error_new(state, build_parse_error_message(format, state), 0, 0, eos)); + } + } else { + VALUE message = build_parse_error_message(format, state); + long line; + rb_len_t column; + cursor_position(state, &line, &column); + rb_str_catf(message, " at line %ld column %"PRIdLEN, line, column); + rb_exc_raise(parse_error_new(state, message, line, column, eos)); + } +} + +NORETURN(static) void raise_eos_error(const char *format, JSON_ParserState *state) +{ + raise_parse_error(format, state, true); +} + +NORETURN(static) void raise_syntax_error(const char *format, JSON_ParserState *state) +{ + raise_parse_error(format, state, false); +} + +NORETURN(static) void raise_parse_error_at(const char *format, JSON_ParserState *state, const char *at, bool eos) +{ + state->cursor = at; + raise_parse_error(format, state, eos); +} + +NORETURN(static) void raise_eos_error_at(const char *format, JSON_ParserState *state, const char *at) +{ + raise_parse_error_at(format, state, at, true); +} + +NORETURN(static) void raise_syntax_error_at(const char *format, JSON_ParserState *state, const char *at) +{ + raise_parse_error_at(format, state, at, false); +} + +/* unicode */ + +static const signed char digit_values[256] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, + -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -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, + 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1 +}; + +static uint32_t unescape_unicode(JSON_ParserState *state, const char *sp, const char *spe) +{ + if (RB_UNLIKELY(sp > spe - 4)) { + raise_syntax_error_at("incomplete unicode character escape sequence at %s", state, sp - 2); + } + + const unsigned char *p = (const unsigned char *)sp; + + const signed char b0 = digit_values[p[0]]; + const signed char b1 = digit_values[p[1]]; + const signed char b2 = digit_values[p[2]]; + const signed char b3 = digit_values[p[3]]; + + if (RB_UNLIKELY((signed char)(b0 | b1 | b2 | b3) < 0)) { + raise_syntax_error_at("incomplete unicode character escape sequence at %s", state, sp - 2); + } + + return ((uint32_t)b0 << 12) | ((uint32_t)b1 << 8) | ((uint32_t)b2 << 4) | (uint32_t)b3; +} + +#define GET_PARSER_CONFIG \ + JSON_ParserConfig *config; \ + TypedData_Get_Struct(self, JSON_ParserConfig, &JSON_ParserConfig_type, config) + +static const rb_data_type_t JSON_ParserConfig_type; + +NOINLINE(static) void +json_eat_comments(JSON_ParserState *state, JSON_ParserConfig *config, const char *resume_pos) +{ + if (!config->allow_comments) { + raise_syntax_error("unexpected token %s", state); + } + + const char *start = state->cursor; + // An incomplete comment suspends a resumable parse by rewinding the cursor + // and throwing. Callers that already consumed a token not yet committed to + // the frame stack pass resume_pos so the rewind re-reads that token too. + // Non-resumable error positions keep pointing at the comment either way. + const char *rewind_pos = (state->parser && resume_pos) ? resume_pos : start; + state->cursor++; + + switch (peek(state)) { + case '/': { + const char *newline = memchr(state->cursor, '\n', state->end - state->cursor); + if (!newline) { + // state->parser marks resumable mode, where the buffer end is only a + // chunk boundary: the terminating newline may still arrive, so leave + // the comment unterminated instead of consuming to end as a one-shot + // parse would. + if (state->parser) { + raise_eos_error_at("unterminated comment, expected end of line", state, rewind_pos); + } + state->cursor = state->end; + } else { + state->cursor = newline + 1; + } + break; + } + case '*': { + state->cursor++; + + while (true) { + const char *next_match = memchr(state->cursor, '*', state->end - state->cursor); + if (!next_match) { + raise_eos_error_at("unterminated comment, expected closing '*/'", state, rewind_pos); + } + + state->cursor = next_match + 1; + if (peek(state) == '/') { + state->cursor++; + break; + } + } + break; + } + default: + raise_parse_error_at("unexpected token %s", state, eos(state) ? rewind_pos : start, eos(state)); + break; + } +} + +ALWAYS_INLINE(static) void +json_eat_whitespace_resume_at(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments, const char *resume_pos) +{ + while (true) { + switch (peek(state)) { + case ' ': + state->cursor++; + break; + case '\n': + state->cursor++; + + // Heuristic: if we see a newline, there is likely consecutive spaces after it. +#if JSON_CPU_LITTLE_ENDIAN_64BITS + while (rest(state) > 8) { + uint64_t chunk; + memcpy(&chunk, state->cursor, sizeof(uint64_t)); + if (chunk == 0x2020202020202020) { + state->cursor += 8; + continue; + } + + uint32_t consecutive_spaces = trailing_zeros64(chunk ^ 0x2020202020202020) / CHAR_BIT; + state->cursor += consecutive_spaces; + break; + } +#endif + break; + case '\t': + case '\r': + state->cursor++; + break; + case '/': + if (!include_comments) { + return; + } + + json_eat_comments(state, config, resume_pos); + break; + + default: + return; + } + } +} + +ALWAYS_INLINE(static) void +json_eat_whitespace(JSON_ParserState *state, JSON_ParserConfig *config, bool include_comments) +{ + json_eat_whitespace_resume_at(state, config, include_comments, NULL); +} + +static inline VALUE build_string(const char *start, const char *end, bool intern, bool symbolize) +{ + if (symbolize) { + intern = true; + } + VALUE result; +# ifdef HAVE_RB_ENC_INTERNED_STR + if (intern) { + result = rb_enc_interned_str(start, (rb_len_t)(end - start), enc_utf8); + } else { + result = rb_utf8_str_new(start, (rb_len_t)(end - start)); + } +# else + result = rb_utf8_str_new(start, (rb_len_t)(end - start)); + if (intern) { + result = rb_funcall(rb_str_freeze(result), i_uminus, 0); + } +# endif + + if (symbolize) { + result = rb_str_intern(result); + } + + return result; +} + +static inline bool json_string_cacheable_p(const char *string, size_t length) +{ + // We mostly want to cache strings that are likely to be repeated. + // Simple heuristics: + // - Common names aren't likely to be very long. So we just don't cache names above an arbitrary threshold. + // - If the first character isn't a letter, we're much less likely to see this string again. + return length <= JSON_RVALUE_CACHE_MAX_ENTRY_LENGTH && rb_isalpha(string[0]); +} + +static inline VALUE json_string_fastpath(JSON_ParserState *state, JSON_ParserConfig *config, const char *string, const char *stringEnd, bool is_name) +{ + bool intern = is_name || config->freeze; + bool symbolize = is_name && config->symbolize_names; + size_t bufferSize = stringEnd - string; + + if (is_name && state->in_array && RB_LIKELY(json_string_cacheable_p(string, bufferSize))) { + VALUE cached_key; + if (RB_UNLIKELY(symbolize)) { + cached_key = rsymbol_cache_fetch(&state->name_cache, string, bufferSize); + } else { + cached_key = rstring_cache_fetch(&state->name_cache, string, bufferSize); + } + + if (RB_LIKELY(cached_key)) { + return cached_key; + } + } + + return build_string(string, stringEnd, intern, symbolize); +} + +#define JSON_MAX_UNESCAPE_POSITIONS 16 +typedef struct _json_unescape_positions { + long size; + const char **positions; + unsigned long additional_backslashes; +} JSON_UnescapePositions; + +static inline const char *json_next_backslash(const char *pe, const char *stringEnd, JSON_UnescapePositions *positions) +{ + while (positions->size) { + positions->size--; + const char *next_position = positions->positions[0]; + positions->positions++; + if (next_position >= pe) { + return next_position; + } + } + + if (positions->additional_backslashes) { + positions->additional_backslashes--; + return memchr(pe, '\\', stringEnd - pe); + } + + return NULL; +} + +NOINLINE(static) VALUE json_string_unescape(JSON_ParserState *state, JSON_ParserConfig *config, const char *string, const char *stringEnd, bool is_name, JSON_UnescapePositions *positions) +{ + bool intern = is_name || config->freeze; + bool symbolize = is_name && config->symbolize_names; + size_t bufferSize = stringEnd - string; + const char *p = string, *pe = string, *bufferStart; + char *buffer; + + VALUE result = rb_str_buf_new(bufferSize); + rb_enc_associate_index(result, utf8_encindex); + buffer = RSTRING_PTR(result); + bufferStart = buffer; + +#define APPEND_CHAR(chr) *buffer++ = chr; p = ++pe; + + while (pe < stringEnd && (pe = json_next_backslash(pe, stringEnd, positions))) { + if (pe > p) { + MEMCPY(buffer, p, char, pe - p); + buffer += pe - p; + } + switch (*++pe) { + case '"': + case '/': + p = pe; // nothing to unescape just need to skip the backslash + break; + case '\\': + APPEND_CHAR('\\'); + break; + case 'n': + APPEND_CHAR('\n'); + break; + case 'r': + APPEND_CHAR('\r'); + break; + case 't': + APPEND_CHAR('\t'); + break; + case 'b': + APPEND_CHAR('\b'); + break; + case 'f': + APPEND_CHAR('\f'); + break; + case 'u': { + uint32_t ch = unescape_unicode(state, ++pe, stringEnd); + pe += 3; + /* To handle values above U+FFFF, we take a sequence of + * \uXXXX escapes in the U+D800..U+DBFF then + * U+DC00..U+DFFF ranges, take the low 10 bits from each + * to make a 20-bit number, then add 0x10000 to get the + * final codepoint. + * + * See Unicode 15: 3.8 "Surrogates", 5.3 "Handling + * Surrogate Pairs in UTF-16", and 23.6 "Surrogates + * Area". + */ + if ((ch & 0xFC00) == 0xD800) { + pe++; + if (RB_LIKELY((pe <= stringEnd - 6) && memcmp(pe, "\\u", 2) == 0)) { + uint32_t sur = unescape_unicode(state, pe + 2, stringEnd); + + if (RB_UNLIKELY((sur & 0xFC00) != 0xDC00)) { + raise_syntax_error_at("invalid surrogate pair at %s", state, p); + } + + ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16) | (sur & 0x3FF)); + pe += 5; + } else { + raise_syntax_error_at("incomplete surrogate pair at %s", state, p); + break; + } + } else if ((ch & 0xFC00) == 0xDC00) { + raise_syntax_error_at("unpaired trailing surrogate at %s", state, p); + break; + } + + int unescape_len = convert_UTF32_to_UTF8(buffer, ch); + buffer += unescape_len; + p = ++pe; + break; + } + default: + if ((unsigned char)*pe < 0x20) { + if (!config->allow_control_characters) { + if (*pe == '\n') { + raise_syntax_error_at("Invalid unescaped newline character (\\n) in string: %s", state, pe - 1); + } else if (*pe == '\0') { + raise_syntax_error_at("Invalid unescaped NULL character (\\0) in string: %s", state, pe - 1); + } + raise_syntax_error_at("invalid ASCII control character in string: %s", state, pe - 1); + } + } + + if (config->allow_invalid_escape) { + APPEND_CHAR(*pe); + } else { + raise_syntax_error_at("invalid escape character in string: %s", state, pe - 1); + } + break; + } + } +#undef APPEND_CHAR + + if (stringEnd > p) { + MEMCPY(buffer, p, char, stringEnd - p); + buffer += stringEnd - p; + } + rb_str_set_len(result, buffer - bufferStart); + + if (symbolize) { + result = rb_str_intern(result); + } else if (intern) { + result = rb_str_to_interned_str(result); + } + + return result; +} + +#define MAX_FAST_INTEGER_SIZE 19 +#define MAX_FAST_UINT64_SIZE 20 +#define MAX_NUMBER_STACK_BUFFER 128 + +typedef VALUE (*json_number_decode_func_t)(const char *ptr); + +static inline VALUE json_decode_large_number(const char *start, rb_len_t len, json_number_decode_func_t func) +{ + if (RB_LIKELY(len < MAX_NUMBER_STACK_BUFFER)) { + char buffer[MAX_NUMBER_STACK_BUFFER]; + MEMCPY(buffer, start, char, len); + buffer[len] = '\0'; + return func(buffer); + } else { + VALUE buffer_v = rb_str_tmp_new(len); + char *buffer = RSTRING_PTR(buffer_v); + MEMCPY(buffer, start, char, len); + buffer[len] = '\0'; + VALUE number = func(buffer); + RB_GC_GUARD(buffer_v); + return number; + } +} + +static VALUE json_decode_inum(const char *buffer) +{ + return rb_cstr2inum(buffer, 10); +} + +NOINLINE(static) VALUE json_decode_large_integer(const char *start, rb_len_t len) +{ + return json_decode_large_number(start, len, json_decode_inum); +} + +static inline VALUE json_decode_integer(uint64_t mantissa, int mantissa_digits, bool negative, const char *start, const char *end) +{ + if (RB_LIKELY(mantissa_digits <= MAX_FAST_INTEGER_SIZE)) { + if (RB_LIKELY(!negative)) { + return UINT64T2NUM(mantissa); + } + + // For a negative number 19 digits in length, we only get half of the range, + // so ensure this negative number is less than INT64_MAX. + // + // Note: This does miss INT64_MIN as it's value is one past INT64_MAX + // when converted to a uint64_t. It will still be parsed correctly by + // falling through to json_decode_large_integer. + if (RB_LIKELY(mantissa <= (uint64_t)INT64_MAX)) { + return INT64T2NUM(-((int64_t)mantissa)); + } + } + + if (!negative && mantissa_digits == MAX_FAST_UINT64_SIZE) { + // Not all 20 digit integers can be safely represented by a uint64_t but + // some can. The memcmp with uint64_max is safe as we've rejected leading + // zeros and we have guaranteed we're comparing it with a 20 digit number. + static const char uint64_max[] = "18446744073709551615"; + if (memcmp(end - MAX_FAST_UINT64_SIZE, uint64_max, MAX_FAST_UINT64_SIZE) <= 0) { + return UINT64T2NUM(mantissa); + } + } + + return json_decode_large_integer(start, end - start); +} + +static VALUE json_decode_dnum(const char *buffer) +{ + return DBL2NUM(rb_cstr_to_dbl(buffer, 1)); +} + +NOINLINE(static) VALUE json_decode_large_float(const char *start, rb_len_t len) +{ + return json_decode_large_number(start, len, json_decode_dnum); +} + +/* Ruby JSON optimized float decoder using vendored Ryu algorithm + * Accepts pre-extracted mantissa and exponent from first-pass validation + */ +static inline VALUE json_decode_float(JSON_ParserConfig *config, uint64_t mantissa, int mantissa_digits, int64_t exponent, bool negative, + const char *start, const char *end) +{ + if (RB_UNLIKELY(config->decimal_class)) { + VALUE text = rb_str_new(start, end - start); + return rb_funcallv(config->decimal_class, config->decimal_method_id, 1, &text); + } + + if (RB_UNLIKELY(exponent >= (int64_t)INT32_MAX)) { + return negative ? CMinusInfinity : CInfinity; + } + + if (RB_UNLIKELY(exponent <= INT32_MIN)) { + return rb_float_new(negative ? -0.0 : 0.0); + } + + if (RB_UNLIKELY(mantissa_digits > 18 || mantissa_digits + exponent < -307)) { + // If the value is so small that it definitely underflows to 0.0, return early + // to avoid triggering a "Float out of range" warning from rb_cstr_to_dbl. + // When mantissa_digits + exponent < -324, value < 10^(-324) < DBL_TRUE_MIN/2, + // so it rounds to 0 in IEEE 754 round-to-nearest. + if (RB_UNLIKELY(mantissa_digits + exponent < -324)) { + return rb_float_new(negative ? -0.0 : 0.0); + } + return json_decode_large_float(start, end - start); + } + + return DBL2NUM(ffp_s2d(exponent, mantissa, negative)); +} + +static inline VALUE json_decode_array(JSON_ParserState *state, JSON_ParserConfig *config, long count) +{ + VALUE array = rb_ary_new_from_values(count, rvalue_stack_peek(state->value_stack, count)); + rvalue_stack_pop(state->value_stack, count); + + if (config->freeze) { + RB_OBJ_FREEZE(array); + } + + return array; +} + +static VALUE json_find_duplicated_key(size_t count, const VALUE *pairs) +{ + VALUE set = rb_hash_new_capa(count / 2); + for (size_t index = 0; index < count; index += 2) { + size_t before = RHASH_SIZE(set); + VALUE key = pairs[index]; + rb_hash_aset(set, key, Qtrue); + if (RHASH_SIZE(set) == before) { + if (RB_SYMBOL_P(key)) { + return rb_sym2str(key); + } + return key; + } + } + return Qfalse; +} + +NORETURN(static) void raise_duplicate_key_error(JSON_ParserState *state, VALUE duplicate_key) +{ + VALUE message = rb_sprintf( + "duplicate key %"PRIsVALUE, + rb_inspect(duplicate_key) + ); + + rb_str_concat(message, build_parse_error_message("", state)); + VALUE exc; + if (state->parser) { // line and columns can't be accurate in resumable + exc = parse_error_new(state, message, 0, 0, false); + } else { + long line; + rb_len_t column; + cursor_position(state, &line, &column); + rb_str_catf(message, " at line %ld column %"PRIdLEN, line, column); + exc = parse_error_new(state, message, line, column, false); + } + rb_ivar_set(exc, i_at_json_path, json_path_new(state, duplicate_key)); + rb_exc_raise(exc); +} + +NOINLINE(static) void json_on_duplicate_key(JSON_ParserState *state, JSON_ParserConfig *config, size_t count, const VALUE *pairs) +{ + if (!config->allow_duplicate_key) { + raise_duplicate_key_error(state, json_find_duplicated_key(count, pairs)); + } +} + +static inline VALUE json_decode_object(JSON_ParserState *state, JSON_ParserConfig *config, size_t count) +{ + size_t entries_count = count / 2; + VALUE object = rb_hash_new_capa(entries_count); + const VALUE *pairs = rvalue_stack_peek(state->value_stack, count); + rb_hash_bulk_insert(count, pairs, object); + + if (RB_UNLIKELY(RHASH_SIZE(object) < entries_count)) { + json_on_duplicate_key(state, config, count, pairs); + } + + rvalue_stack_pop(state->value_stack, count); + + if (config->freeze) { + RB_OBJ_FREEZE(object); + } + + return object; +} + +static inline VALUE json_push_value(JSON_ParserState *state, JSON_ParserConfig *config, VALUE value) +{ + if (RB_UNLIKELY(config->on_load_proc)) { + value = rb_proc_call_with_block(config->on_load_proc, 1, &value, Qnil); + } + rvalue_stack_push(state->value_stack, value, state->value_stack_handle, &state->value_stack); + return value; +} + +static const bool string_scan_table[256] = { + // ASCII Control Characters + 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, + // ASCII Characters + 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +#ifdef HAVE_SIMD +static SIMD_Implementation simd_impl = SIMD_NONE; +#endif /* HAVE_SIMD */ + +ALWAYS_INLINE(static) bool string_scan(JSON_ParserState *state) +{ +#ifdef HAVE_SIMD +#if defined(HAVE_SIMD_NEON) + + uint64_t mask = 0; + if (string_scan_simd_neon(&state->cursor, state->end, &mask)) { + state->cursor += trailing_zeros64(mask) >> 2; + return true; + } + +#elif defined(HAVE_SIMD_SSE2) + if (simd_impl == SIMD_SSE2) { + int mask = 0; + if (string_scan_simd_sse2(&state->cursor, state->end, &mask)) { + state->cursor += trailing_zeros(mask); + return true; + } + } +#endif /* HAVE_SIMD_NEON or HAVE_SIMD_SSE2 */ +#endif /* HAVE_SIMD */ + + while (!eos(state)) { + if (RB_UNLIKELY(string_scan_table[(unsigned char)*state->cursor])) { + return true; + } + state->cursor++; + } + + // If the string ended with an unterminated escape sequence, we might + // have gone past the end. + if (RB_UNLIKELY(state->cursor > state->end)) { + state->cursor = state->end; + } + + return false; +} + +static VALUE json_parse_escaped_string(JSON_ParserState *state, JSON_ParserConfig *config, bool is_name, const char *start) +{ + const char *backslashes[JSON_MAX_UNESCAPE_POSITIONS]; + JSON_UnescapePositions positions = { + .size = 0, + .positions = backslashes, + .additional_backslashes = 0, + }; + + do { + switch (*state->cursor) { + case '"': { + VALUE string = json_string_unescape(state, config, start, state->cursor, is_name, &positions); + state->cursor++; + return string; + } + case '\\': { + if (RB_LIKELY(positions.size < JSON_MAX_UNESCAPE_POSITIONS)) { + backslashes[positions.size] = state->cursor; + positions.size++; + } else { + positions.additional_backslashes++; + } + state->cursor++; + break; + } + default: + if (!config->allow_control_characters) { + raise_syntax_error("invalid ASCII control character in string: %s", state); + } + break; + } + + state->cursor++; + } while (string_scan(state)); + + return Qundef; +} + +ALWAYS_INLINE(static) VALUE json_parse_string(JSON_ParserState *state, JSON_ParserConfig *config, bool is_name) +{ + state->cursor++; + const char *start = state->cursor; + + if (RB_UNLIKELY(!string_scan(state))) { + return Qundef; + } + + VALUE string; + if (RB_LIKELY(*state->cursor == '"')) { + string = json_string_fastpath(state, config, start, state->cursor, is_name); + state->cursor++; + } + else { + string = json_parse_escaped_string(state, config, is_name, start); + } + + return string; +} + +#if JSON_CPU_LITTLE_ENDIAN_64BITS +// From: https://lemire.me/blog/2022/01/21/swar-explained-parsing-eight-digits/ +// Additional References: +// https://johnnylee-sde.github.io/Fast-numeric-string-to-int/ +// http://0x80.pl/notesen/2014-10-12-parsing-decimal-numbers-part-1-swar.html +static inline uint64_t decode_8digits_unrolled(uint64_t val) { + const uint64_t mask = 0x000000FF000000FF; + const uint64_t mul1 = 0x000F424000000064; // 100 + (1000000ULL << 32) + const uint64_t mul2 = 0x0000271000000001; // 1 + (10000ULL << 32) + val -= 0x3030303030303030; + val = (val * 10) + (val >> 8); // val = (val * 2561) >> 8; + val = (((val & mask) * mul1) + (((val >> 16) & mask) * mul2)) >> 32; + return val; +} + +static inline uint64_t decode_4digits_unrolled(uint32_t val) { + const uint32_t mask = 0x000000FF; + const uint32_t mul1 = 100; + val -= 0x30303030; + val = (val * 10) + (val >> 8); // val = (val * 2561) >> 8; + val = ((val & mask) * mul1) + (((val >> 16) & mask)); + return val; +} +#endif + +static inline int json_parse_digits(JSON_ParserState *state, uint64_t *accumulator) +{ + const char *start = state->cursor; + +#if JSON_CPU_LITTLE_ENDIAN_64BITS + while (rest(state) >= sizeof(uint64_t)) { + uint64_t next_8bytes; + memcpy(&next_8bytes, state->cursor, sizeof(uint64_t)); + + // From: https://github.com/simdjson/simdjson/blob/32b301893c13d058095a07d9868edaaa42ee07aa/include/simdjson/generic/numberparsing.h#L333 + // Branchless version of: http://0x80.pl/articles/swar-digits-validate.html + uint64_t match = (next_8bytes & 0xF0F0F0F0F0F0F0F0) | (((next_8bytes + 0x0606060606060606) & 0xF0F0F0F0F0F0F0F0) >> 4); + + if (match == 0x3333333333333333) { // 8 consecutive digits + *accumulator = (*accumulator * 100000000) + decode_8digits_unrolled(next_8bytes); + state->cursor += 8; + continue; + } + + uint32_t consecutive_digits = trailing_zeros64(match ^ 0x3333333333333333) / CHAR_BIT; + + if (consecutive_digits >= 4) { + *accumulator = (*accumulator * 10000) + decode_4digits_unrolled((uint32_t)next_8bytes); + state->cursor += 4; + consecutive_digits -= 4; + } + + while (consecutive_digits) { + *accumulator = *accumulator * 10 + (*state->cursor - '0'); + consecutive_digits--; + state->cursor++; + } + + return (int)(state->cursor - start); + } +#endif + + char next_char; + while (rb_isdigit(next_char = peek(state))) { + *accumulator = *accumulator * 10 + (next_char - '0'); + state->cursor++; + } + return (int)(state->cursor - start); +} + +static inline VALUE json_parse_number(JSON_ParserState *state, JSON_ParserConfig *config, bool negative, const char *start, bool resumable) +{ + bool integer = true; + const char first_digit = *state->cursor; + + // Variables for Ryu optimization - extract digits during parsing + int64_t exponent = 0; + int decimal_point_pos = -1; + uint64_t mantissa = 0; + + // Parse integer part and extract mantissa digits + int mantissa_digits = json_parse_digits(state, &mantissa); + + if (RB_UNLIKELY((first_digit == '0' && mantissa_digits > 1) || (negative && mantissa_digits == 0))) { + return Qundef; + } + + // Parse fractional part + if (peek(state) == '.') { + integer = false; + decimal_point_pos = mantissa_digits; // Remember position of decimal point + state->cursor++; + + int fractional_digits = json_parse_digits(state, &mantissa); + mantissa_digits += fractional_digits; + + if (RB_UNLIKELY(!fractional_digits)) { + return Qundef; + } + } + + // Parse exponent + if (rb_tolower(peek(state)) == 'e') { + integer = false; + state->cursor++; + + bool negative_exponent = false; + const char next_char = peek(state); + if (next_char == '-' || next_char == '+') { + negative_exponent = next_char == '-'; + state->cursor++; + } + + uint64_t abs_exponent = 0; + int exponent_digits = json_parse_digits(state, &abs_exponent); + + if (RB_UNLIKELY(!exponent_digits)) { + return Qundef; + } + + if (RB_UNLIKELY(exponent_digits >= 20 || abs_exponent > (uint64_t)INT64_MAX)) { + exponent = negative_exponent ? INT32_MIN : INT32_MAX; + } else { + exponent = negative_exponent ? -(int64_t)abs_exponent : (int64_t)abs_exponent; + } + } + + // A number touching the end of the buffer may still grow in a later chunk, + // so the caller will rewind and wait. Decoding it now would build a value + // -- for a long run of digits, an expensive bignum -- only to discard it, + // and repeating that on every resumed chunk is quadratic in the number's + // length. The digit scan above already advanced the cursor, which is all + // the caller needs to detect the incomplete number. + if (RB_UNLIKELY(resumable && eos(state))) { + return Qundef; + } + + if (integer) { + return json_decode_integer(mantissa, mantissa_digits, negative, start, state->cursor); + } + + // Adjust exponent based on decimal point position + if (decimal_point_pos >= 0) { + exponent -= (mantissa_digits - decimal_point_pos); + } + + return json_decode_float(config, mantissa, mantissa_digits, exponent, negative, start, state->cursor); +} + +// How many values (array elements, or interleaved object keys+values) have been +// pushed onto the rvalue stack since this container opened. Used to size the +// bulk decode on close, and to tell the first key/colon from later ones. +static inline long json_frame_entry_count(const json_frame *frame, const rvalue_stack *value_stack) +{ + return value_stack->head - frame->value_stack_head; +} + +// A complete value now sits on top of the rvalue stack. Advance the frame that +// was waiting for it: the root document is done, or the enclosing container +// moves on to expecting a ',' or its closing bracket. The caller passes the +// frame it already has in hand -- the one that was expecting the value -- which +// after a container close is the freshly re-exposed parent. +static inline enum json_frame_phase json_value_completed(json_frame *frame) +{ + JSON_ASSERT((int)JSON_PHASE_DONE == (int)JSON_FRAME_ROOT); + JSON_ASSERT((int)JSON_PHASE_ARRAY_COMMA == (int)JSON_FRAME_ARRAY); + JSON_ASSERT((int)JSON_PHASE_OBJECT_COMMA == (int)JSON_FRAME_OBJECT); + + return frame->phase = (enum json_frame_phase) frame->type; +} + +ALWAYS_INLINE(static) void json_match_keyword(JSON_ParserState *state, const char *keyword, size_t offset) +{ + // It is assumed that since `keyword` is always a literal, the compiler is able to constantize this + // `strlen` and several other computations in that routine. + + size_t len = strlen(keyword); + + // Note: memcmp with a small power of two and a literal string compile to an integer comparison / + // That's why we sometime compare starting from the first byte and sometimes from the second. + if (rest(state) >= len && (memcmp(state->cursor + offset, keyword + offset, len - offset) == 0)) { + state->cursor += len; + return; + } + + bool eos = rest(state) < len && memcmp(state->cursor, keyword, rest(state)) == 0; + raise_parse_error("unexpected token %s", state, eos); +} + +// Parse an arbitrary JSON value iteratively. This is a state machine driven +// entirely by the top frame's phase so it can stop at any value boundary and +// resume purely from the frame stack. A JSON_FRAME_ROOT frame sits at the +// bottom of the stack, so the stack is never empty mid-parse and the document +// itself is just another frame whose value, once parsed, leaves its phase DONE. +// When invoked in resumable mode, it returns true after parsing a complete document. +// If reaching EOS without having parsed a complete document, either returns false +// of raise a JSON::ParserError tagged with `@eos=true`. +ALWAYS_INLINE(static) bool json_parse_any(JSON_ParserState *state, JSON_ParserConfig *config, bool resumable) +{ + json_frame *frame = json_frame_stack_peek(state->frames); + + switch (frame->phase) { + case JSON_PHASE_DONE: JSON_UNREACHABLE_RETURN(false); + case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA; + case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA; + case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE; + case JSON_PHASE_OBJECT_KEY: goto JSON_PHASE_OBJECT_KEY; + case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON; + } + JSON_UNREACHABLE_RETURN(false); + + JSON_PHASE_VALUE: { + json_eat_whitespace(state, config, true); + + // A trailing comma lands us here expecting an element but finding the + // closing bracket; hand off to ARRAY_COMMA to close. An empty array + // closes inline at '[', so this position is only reached after a ','. + if (config->allow_trailing_comma && frame->type == JSON_FRAME_ARRAY && peek(state) == ']') { + goto JSON_PHASE_ARRAY_COMMA; + } + + VALUE value; + const char *value_start = state->cursor; + + switch (peek(state)) { + case 'n': + json_match_keyword(state, "null", 0); + value = Qnil; + break; + + case 't': + json_match_keyword(state, "true", 0); + value = Qtrue; + break; + + case 'f': + json_match_keyword(state, "false", 1); + value = Qfalse; + break; + + case 'N': + if (!config->allow_nan) { + raise_syntax_error("unexpected token %s", state); + } + + json_match_keyword(state, "NaN", 1); + value = CNaN; + break; + + case 'I': + if (!config->allow_nan) { + raise_syntax_error("unexpected token %s", state); + } + + json_match_keyword(state, "Infinity", 0); + value = CInfinity; + break; + + case '-': { + state->cursor++; + + value = json_parse_number(state, config, true, value_start, resumable); + + if (RB_UNLIKELY(UNDEF_P(value) && config->allow_nan && peek(state) == 'I')) { + state->cursor = value_start; + json_match_keyword(state, "-Infinity", 1); + value = CMinusInfinity; + break; + } + + // Top level numbers are ambiguous when parsing streams, we can't + // know if we parsed all the digits if we hit EOS. + if (RB_UNLIKELY(resumable && eos(state))) { + state->cursor = value_start; + return false; + } + + if (RB_UNLIKELY(UNDEF_P(value))) { + raise_syntax_error_at("invalid number: %s", state, value_start); + } + break; + } + + case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { + value = json_parse_number(state, config, false, value_start, resumable); + + // Top level numbers are ambiguous when parsing streams, we can't + // know if we parsed all the digits if we hit EOS. + if (RB_UNLIKELY(resumable && eos(state))) { + state->cursor = value_start; + return false; + } + + if (RB_UNLIKELY(UNDEF_P(value))) { + raise_syntax_error_at("invalid number: %s", state, value_start); + } + break; + } + + case '"': { + // %r{\A"[^"\\\t\n\x00]*(?:\\[bfnrtu\\/"][^"\\]*)*"} + value = json_parse_string(state, config, false); + + if (RB_UNLIKELY(UNDEF_P(value))) { + bool is_eos = eos(state); + if (resumable && is_eos) { + state->cursor = value_start; + return false; + } + raise_parse_error("unexpected end of input, expected closing \"", state, is_eos); + } + break; + } + + case '[': { + state->cursor++; + // The '[' is consumed but its frame is only pushed below, so a + // comment suspending here must resume from the bracket. + json_eat_whitespace_resume_at(state, config, true, value_start); + + const char next = peek(state); + if (next == ']') { + state->cursor++; + value = json_decode_array(state, config, 0); + break; + } else if (resumable && eos(state)) { + state->cursor = value_start; + return false; + } + + state->current_nesting++; + if (RB_UNLIKELY(config->max_nesting && (config->max_nesting < state->current_nesting))) { + rb_raise(eNestingError, "nesting of %d is too deep", state->current_nesting); + } + state->in_array++; + + // Phase stays VALUE: the next iteration reads the first element. + frame = json_frame_stack_push(state, (json_frame){ + .type = JSON_FRAME_ARRAY, + .phase = JSON_PHASE_VALUE, + .value_stack_head = state->value_stack->head, + }); + goto JSON_PHASE_VALUE; + } + + case '{': { + state->cursor++; + // Same as '[': the frame is only pushed below. + json_eat_whitespace_resume_at(state, config, true, value_start); + + if (peek(state) == '}') { + state->cursor++; + value = json_decode_object(state, config, 0); + break; + } else if (resumable && eos(state)) { + state->cursor = value_start; + return false; + } + + state->current_nesting++; + if (RB_UNLIKELY(config->max_nesting && (config->max_nesting < state->current_nesting))) { + rb_raise(eNestingError, "nesting of %d is too deep", state->current_nesting); + } + + // Phase KEY: the next iteration reads the first key. + frame = json_frame_stack_push(state, (json_frame){ + .type = JSON_FRAME_OBJECT, + .phase = JSON_PHASE_OBJECT_KEY, + .value_stack_head = state->value_stack->head, + .start_offset = value_start - state->start, + }); + goto JSON_PHASE_OBJECT_KEY; + } + + case 0: + // peek() returns 0 both at end-of-stream and for a literal NUL byte in the + // buffer. Only a genuine EOS means "feed me more"; a NUL byte that is not at + // EOS is just an invalid character. + if (eos(state)) { + return false; + } else { + raise_syntax_error("unexpected NULL byte: %s", state); + } + default: + raise_syntax_error("unexpected character: %s", state); + } + + json_push_value(state, config, value); + json_value_completed(frame); + + switch (frame->phase) { + case JSON_PHASE_DONE: return true; + case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA; + case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA; + case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE; + case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false); + case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON; + } + JSON_UNREACHABLE_RETURN(false); + } + + JSON_PHASE_OBJECT_KEY: { + JSON_ASSERT(frame->type == JSON_FRAME_OBJECT); + + json_eat_whitespace(state, config, true); + + // A trailing comma lands us here expecting a key but finding the closing + // brace; hand off to OBJECT_COMMA to close. An empty object closes inline + // at '{', so this position is only reached after a ','. + if (config->allow_trailing_comma && peek(state) == '}') { + goto JSON_PHASE_OBJECT_COMMA; + } + + const char *start = state->cursor; + + if (RB_LIKELY(peek(state) == '"')) { + VALUE string = json_parse_string(state, config, true); + if (UNDEF_P(string)) { + if (resumable && eos(state)) { + state->cursor = start; + return false; + } else { + raise_syntax_error("unexpected end of input, expected closing \"", state); + } + } + json_push_value(state, config, string); + frame->phase = JSON_PHASE_OBJECT_COLON; + goto JSON_PHASE_OBJECT_COLON; + } else if (resumable && eos(state)) { + return false; + } else { + // The message differs for the first key vs. a key after a + // ',': the first is the only one reached with nothing pushed + // for this object yet. + if (json_frame_entry_count(frame, state->value_stack) == 0) { + raise_syntax_error("expected object key, got %s", state); + } else { + raise_syntax_error("expected object key, got: %s", state); + } + } + JSON_UNREACHABLE_RETURN(false); + } + + JSON_PHASE_OBJECT_COLON: { + JSON_ASSERT(frame->type == JSON_FRAME_OBJECT); + + json_eat_whitespace(state, config, true); + + if (RB_LIKELY(peek(state) == ':')) { + state->cursor++; + frame->phase = JSON_PHASE_VALUE; + goto JSON_PHASE_VALUE; + } else if (resumable && eos(state)) { + return false; + } else { + // First colon (only the first pair's key is pushed, nothing + // else) vs. a later one. + if (json_frame_entry_count(frame, state->value_stack) == 1) { + raise_syntax_error("expected ':' after object key", state); + } else { + raise_syntax_error("expected ':' after object key, got: %s", state); + } + } + JSON_UNREACHABLE_RETURN(false); + } + + JSON_PHASE_ARRAY_COMMA: { + JSON_ASSERT(frame->type == JSON_FRAME_ARRAY); + + json_eat_whitespace(state, config, true); + + const char next_char = peek(state); + + if (RB_LIKELY(next_char == ',')) { + state->cursor++; + // Commit the phase before eating the whitespace that follows: an + // incomplete comment there would suspend the parse, and a phase not + // yet advanced past the ',' would drop it on resume. A trailing comma + // is recognized in JSON_PHASE_VALUE once the ']' is in the buffer. + frame->phase = JSON_PHASE_VALUE; + goto JSON_PHASE_VALUE; + } else if (next_char == ']') { + state->cursor++; + long count = json_frame_entry_count(frame, state->value_stack); + state->current_nesting--; + state->in_array--; + + json_push_value(state, config, json_decode_array(state, config, count)); + json_frame_stack_pop(state->frames); + frame = json_frame_stack_peek(state->frames); + + json_value_completed(frame); + + switch (frame->phase) { + case JSON_PHASE_DONE: return true; + case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA; + case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA; + case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE; + case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false); + case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON; + } + } else if (resumable && eos(state)) { + return false; + } else { + raise_syntax_error("expected ',' or ']' after array value", state); + } + JSON_UNREACHABLE_RETURN(false); + } + + JSON_PHASE_OBJECT_COMMA: { + JSON_ASSERT(frame->type == JSON_FRAME_OBJECT); + + json_eat_whitespace(state, config, true); + const char next_char = peek(state); + + if (RB_LIKELY(next_char == ',')) { + state->cursor++; + // Commit the phase before eating the whitespace that follows: an + // incomplete comment there would suspend the parse, and a phase not + // yet advanced past the ',' would drop it on resume. A trailing comma + // is recognized in JSON_PHASE_OBJECT_KEY once the '}' is in the buffer. + frame->phase = JSON_PHASE_OBJECT_KEY; + goto JSON_PHASE_OBJECT_KEY; + } else if (next_char == '}') { + state->cursor++; + state->current_nesting--; + size_t count = json_frame_entry_count(frame, state->value_stack); + + // Temporary rewind cursor in case an error is raised + const char *final_cursor = state->cursor; + state->cursor = state->start + frame->start_offset; + VALUE object = json_decode_object(state, config, count); + state->cursor = final_cursor; + + json_push_value(state, config, object); + json_frame_stack_pop(state->frames); + frame = json_frame_stack_peek(state->frames); + json_value_completed(frame); + + switch (frame->phase) { + case JSON_PHASE_DONE: return true; + case JSON_PHASE_ARRAY_COMMA: goto JSON_PHASE_ARRAY_COMMA; + case JSON_PHASE_OBJECT_COMMA: goto JSON_PHASE_OBJECT_COMMA; + case JSON_PHASE_VALUE: goto JSON_PHASE_VALUE; + case JSON_PHASE_OBJECT_KEY: JSON_UNREACHABLE_RETURN(false); + case JSON_PHASE_OBJECT_COLON: goto JSON_PHASE_OBJECT_COLON; + } + } else if (resumable && eos(state)) { + return false; + } else { + raise_syntax_error("expected ',' or '}' after object value, got: %s", state); + } + JSON_UNREACHABLE_RETURN(false); + } + + JSON_UNREACHABLE_RETURN(false); +} + +static void json_ensure_eof(JSON_ParserState *state, JSON_ParserConfig *config) +{ + json_eat_whitespace(state, config, true); + if (!eos(state)) { + raise_syntax_error("unexpected token at end of stream %s", state); + } +} + +/* + * Document-class: JSON::Ext::Parser + * + * This is the JSON parser implemented as a C extension. It can be configured + * to be used by setting + * + * JSON.parser = JSON::Ext::Parser + * + * with the method parser= in JSON. + * + */ + +static VALUE convert_encoding(VALUE source) +{ + StringValue(source); + int encindex = RB_ENCODING_GET(source); + + if (RB_LIKELY(encindex == utf8_encindex)) { + return source; + } + + if (encindex == binary_encindex) { + // For historical reason, we silently reinterpret binary strings as UTF-8 + return rb_enc_associate_index(rb_str_dup(source), utf8_encindex); + } + + source = rb_funcall(source, i_encode, 1, Encoding_UTF_8); + StringValue(source); + return source; +} + +struct parser_config_init_args { + JSON_ParserConfig *config; + VALUE self; + VALUE unknown_keywords; + bool strict; +}; + +static void parser_config_wb_write(VALUE self, VALUE *dest, VALUE val) +{ + *dest = val; + if (self) RB_OBJ_WRITTEN(self, Qundef, val); +} + +static int parser_config_init_i(VALUE key, VALUE val, VALUE data) +{ + struct parser_config_init_args *args = (struct parser_config_init_args *)data; + JSON_ParserConfig *config = args->config; + VALUE self = args->self; + + if (key == sym_max_nesting) { config->max_nesting = RTEST(val) ? FIX2INT(val) : 0; } + else if (key == sym_allow_nan) { config->allow_nan = RTEST(val); } + else if (key == sym_allow_trailing_comma) { config->allow_trailing_comma = RTEST(val); } + else if (key == sym_allow_comments) { config->allow_comments = RTEST(val); } + else if (key == sym_allow_control_characters) { config->allow_control_characters = RTEST(val); } + else if (key == sym_allow_invalid_escape) { config->allow_invalid_escape = RTEST(val); } + else if (key == sym_symbolize_names) { config->symbolize_names = RTEST(val); } + else if (key == sym_freeze) { config->freeze = RTEST(val); } + else if (key == sym_on_load) { + if (RTEST(val) && !rb_obj_is_proc(val)) { + val = rb_check_funcall(val, rb_intern("to_proc"), 0, NULL); + if (val == Qundef || !rb_obj_is_proc(val)) { + rb_raise(rb_eTypeError, "on_load must be a Proc"); + } + } + parser_config_wb_write(self, &config->on_load_proc, RTEST(val) ? val : Qfalse); + } + else if (key == sym_allow_duplicate_key) { config->allow_duplicate_key = RTEST(val); } + else if (key == sym_decimal_class) { + if (RTEST(val)) { + if (rb_respond_to(val, i_try_convert)) { + parser_config_wb_write(self, &config->decimal_class, val); + config->decimal_method_id = i_try_convert; + } else if (rb_respond_to(val, i_new)) { + parser_config_wb_write(self, &config->decimal_class, val); + config->decimal_method_id = i_new; + } else if (RB_TYPE_P(val, T_CLASS)) { + VALUE name = rb_class_name(val); + const char *name_cstr = RSTRING_PTR(name); + const char *last_colon = strrchr(name_cstr, ':'); + if (last_colon) { + const char *mod_path_end = last_colon - 1; + VALUE mod_path = rb_str_substr(name, 0, mod_path_end - name_cstr); + parser_config_wb_write(self, &config->decimal_class, rb_path_to_class(mod_path)); + + const char *method_name_beg = last_colon + 1; + rb_len_t before_len = method_name_beg - name_cstr; + rb_len_t len = RSTRING_LEN(name) - before_len; + VALUE method_name = rb_str_substr(name, before_len, len); + config->decimal_method_id = SYM2ID(rb_str_intern(method_name)); + } else { + parser_config_wb_write(self, &config->decimal_class, rb_mKernel); + config->decimal_method_id = SYM2ID(rb_str_intern(name)); + } + } + } + } + else { + if (!args->unknown_keywords) { + args->unknown_keywords = rb_obj_hide(rb_ary_new()); + } + rb_ary_push(args->unknown_keywords, key); + } + + return ST_CONTINUE; +} + +static void parser_config_init(JSON_ParserConfig *config, VALUE opts, VALUE self, bool strict) +{ + config->max_nesting = 100; + + struct parser_config_init_args args = { + .config = config, + .self = self, + .strict = strict, + }; + + if (NIL_P(opts)) return; + Check_Type(opts, T_HASH); + if (RHASH_SIZE(opts) == 0) return; + + // We assume in most cases few keys are set so it's faster to go over + // the provided keys than to check all possible keys. + rb_hash_foreach(opts, parser_config_init_i, (VALUE)&args); + + raise_argument_error_on_unknown_keywords(args.unknown_keywords); +} + +/* + * call-seq: new(opts => {}) + * + * Creates a new JSON::Ext::ParserConfig instance. + * + * Argument +opts+, if given, contains a \Hash of options for the parsing. + * See {Parsing Options}[#module-JSON-label-Parsing+Options]. + * + */ +static VALUE cParserConfig_initialize(VALUE self, VALUE opts) +{ + rb_check_frozen(self); + GET_PARSER_CONFIG; + + parser_config_init(config, opts, self, false); + + return self; +} + +static VALUE cParser_parse(JSON_ParserConfig *config, VALUE src) +{ + VALUE Vsource = convert_encoding(src); + + // Ensure the string isn't mutated under us. + // The classic API to use is `rb_str_locktmp`, but then we'd + // need to use `rb_protect` to make sure we always unlock. + Vsource = rb_str_new_frozen(Vsource); + + VALUE rvalue_stack_buffer[RVALUE_STACK_INITIAL_CAPA]; + rvalue_stack value_stack = { + .type = RVALUE_STACK_STACK_ALLOCATED, + .ptr = rvalue_stack_buffer, + .capa = RVALUE_STACK_INITIAL_CAPA, + }; + + // Seed the frame stack with the root frame, establishing the invariant that + // json_parse_any always has a top frame to dispatch on (so the stack is never + // empty mid-parse). + json_frame frame_stack_buffer[JSON_FRAME_STACK_INITIAL_CAPA]; + frame_stack_buffer[0] = (json_frame){ + .type = JSON_FRAME_ROOT, + .phase = JSON_PHASE_VALUE, + }; + json_frame_stack frames = { + .type = RVALUE_STACK_STACK_ALLOCATED, + .ptr = frame_stack_buffer, + .capa = JSON_FRAME_STACK_INITIAL_CAPA, + .head = 1, + }; + + rb_len_t len; + const char *start; + + RSTRING_GETMEM(Vsource, start, len); + + VALUE value_stack_handle = 0; + VALUE frame_stack_handle = 0; + JSON_ParserState _state = { + .start = start, + .cursor = start, + .end = start + len, + .value_stack = &value_stack, + .value_stack_handle = &value_stack_handle, + .frames = &frames, + .frame_stack_handle = &frame_stack_handle, + }; + JSON_ParserState *state = &_state; + + bool complete = json_parse_any(state, config, false); + + // The root document value is parsed; it is the lone survivor on + // the rvalue stack. + VALUE result = complete ? *rvalue_stack_peek(state->value_stack, 1) : Qundef; + + if (complete) { + json_ensure_eof(state, config); + } else { + raise_eos_error("unexpected end of input", state); + } + + // This may be skipped in case of exception, but + // it won't cause a leak. + rvalue_stack_eagerly_release(value_stack_handle); + json_frame_stack_eagerly_release(frame_stack_handle); + RB_GC_GUARD(value_stack_handle); + RB_GC_GUARD(frame_stack_handle); + RB_GC_GUARD(Vsource); + + return result; +} + +/* + * call-seq: parse(source) + * + * Parses the current JSON text _source_ and returns the complete data + * structure as a result. + * It raises JSON::ParserError if fail to parse. + */ +static VALUE cParserConfig_parse(VALUE self, VALUE Vsource) +{ + GET_PARSER_CONFIG; + return cParser_parse(config, Vsource); +} + +static VALUE cParser_m_parse(VALUE klass, VALUE Vsource, VALUE opts) +{ + JSON_ParserConfig _config = {0}; + JSON_ParserConfig *config = &_config; + parser_config_init(config, opts, Qfalse, false); + + return cParser_parse(config, Vsource); +} + +static void JSON_ParserConfig_mark(void *ptr) +{ + JSON_ParserConfig *config = ptr; + rb_gc_mark_movable(config->on_load_proc); + rb_gc_mark_movable(config->decimal_class); +} + +static size_t JSON_ParserConfig_memsize(const void *ptr) +{ +#ifdef HAVE_RUBY_TYPED_EMBEDDABLE + return 0; +#else + return sizeof(JSON_ParserConfig); +#endif +} + +static void JSON_ParserConfig_compact(void *ptr) +{ + JSON_ParserConfig *config = ptr; + config->on_load_proc = rb_gc_location(config->on_load_proc); + config->decimal_class = rb_gc_location(config->decimal_class); +} + +static const rb_data_type_t JSON_ParserConfig_type = { + .wrap_struct_name = "JSON::Ext::Parser/ParserConfig", + .function = { + .dmark = JSON_ParserConfig_mark, + .dfree = RUBY_DEFAULT_FREE, + .dsize = JSON_ParserConfig_memsize, + .dcompact = JSON_ParserConfig_compact, + }, + .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_WB_PROTECTED | RUBY_TYPED_FROZEN_SHAREABLE | RUBY_TYPED_EMBEDDABLE, +}; + +static VALUE cJSON_parser_s_allocate(VALUE klass) +{ + JSON_ParserConfig *config; + return TypedData_Make_Struct(klass, JSON_ParserConfig, &JSON_ParserConfig_type, config); +} + +static void json_str_clear(VALUE str) +{ + if (RB_OBJ_FROZEN_RAW(str)) { + return; + } + rb_str_replace(str, JSON_empty_string); +} + +typedef struct JSON_ResumableParserStruct { + JSON_ParserConfig config; + JSON_ParserState state; + rvalue_stack value_stack; + json_frame_stack frames; + VALUE buffer; + size_t parsed_bytes; + size_t incomplete_bytes; + bool complete; + bool in_use; +} JSON_ResumableParser; + +static void JSON_ResumableParser_mark(void *ptr) +{ + JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr; + JSON_ParserConfig_mark(&parser->config); + rvalue_stack_mark(&parser->value_stack); + rvalue_cache_mark(&parser->state.name_cache); + rb_gc_mark(parser->buffer); // pin the buffer + rb_gc_mark_movable(parser->state.parser); +} + +static void JSON_ResumableParser_free(void *ptr) +{ + JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr; + rvalue_stack_free_buffer(&parser->value_stack); + json_frame_stack_free_buffer(&parser->frames); +} + +static size_t JSON_ResumableParser_memsize(const void *ptr) +{ + const JSON_ResumableParser *parser = (const JSON_ResumableParser *)ptr; + size_t memsize = JSON_ParserConfig_memsize(&parser->config); + memsize += rvalue_stack_memsize(&parser->value_stack); + memsize += json_frame_stack_memsize(&parser->frames); +#ifndef HAVE_RUBY_TYPED_EMBEDDABLE + memsize += ( + sizeof(JSON_ResumableParser) + - sizeof(JSON_ParserState) + - sizeof(JSON_ParserConfig) + - sizeof(rvalue_stack) + - sizeof(json_frame_stack) + ); +#endif + return memsize; +} + +static void JSON_ResumableParser_compact(void *ptr) +{ + JSON_ResumableParser *parser = (JSON_ResumableParser *)ptr; + JSON_ParserConfig_compact(&parser->config); + rvalue_stack_compact(&parser->value_stack); + rvalue_cache_compact(&parser->state.name_cache); + parser->buffer = rb_gc_location(parser->buffer); + parser->state.parser = rb_gc_location(parser->state.parser); +} + +static const rb_data_type_t JSON_ResumableParser_type = { + .wrap_struct_name = "JSON::Ext::ResumableParser", + .function = { + JSON_ResumableParser_mark, + JSON_ResumableParser_free, + JSON_ResumableParser_memsize, + JSON_ResumableParser_compact, + }, + // RUBY_TYPED_WB_PROTECTED is deliberately not declared because + // this is a superset of JSON_Parser_rvalue_stack_type, so we'd need + // to trigger a lot of write barriers. + .flags = RUBY_TYPED_THREAD_SAFE_FREE | RUBY_TYPED_EMBEDDABLE, +}; + +static VALUE cResumableParser_allocate(VALUE klass) +{ + JSON_ResumableParser *parser; + VALUE obj = TypedData_Make_Struct(klass, JSON_ResumableParser, &JSON_ResumableParser_type, parser); + parser->state.in_array++; + parser->state.parser = obj; + return obj; +} + +static inline JSON_ResumableParser *cResumableParser_get(VALUE self) +{ + JSON_ResumableParser *parser; + TypedData_Get_Struct(self, JSON_ResumableParser, &JSON_ResumableParser_type, parser); + return parser; +} + +/* + * call-seq: new(opts => {}) + * + * Creates a new JSON::ResumableParser instance. + * + * Argument +opts+, if given, contains a \Hash of options for the parsing. + * See {Parsing Options}[#module-JSON-label-Parsing+Options]. + * + * A ResumableParser is able to parse partial documents and resume parsing later + * when more of the document is provided: + * + * parser = JSON::ResumableParser.new + * parser << '{"user": "george", "role": "ad' + * parser.parse # => false + * parser.eos? # => true + * parser.partial_value # => { "user" => "george", "role" => nil } + * parser.rest # => '"ad' + * + * parser << 'min" }[1, 2, 3]' + * parser.parse # => true + * parser.value # => { "user" => "george", "role" => "admin" } + * + * parser.parse # => true + * parser.value # => [1, 2, 3] + * + * === Limitations + * + * While ResumableParser is able to parse streams of documents without any + * explicit separators between them, it is highly recommended to separate documents + * by either spaces or newlines, as otherwise the \JSON syntax for numbers may be ambiguous. + * When parsing a number, ResumableParser will not consider the number complete until something follows: + * + * parser << '123' + * parser.parse # => false + * parser << ' ' + * parser.parse # => true + * parser.value # => 123 + * + * === Security + * + * An incomplete document is buffered in full and there is no size limit, so when reading + * from an untrusted source the caller is responsible for bounding how much data is fed. + * For example: + * + * loop do + * if parser.parsed_bytes > DOCUMENT_MAX_SIZE + * raise "document too large" + * end + * + * parser << read_chunk + * while parser.parse + * process(parser.value) + * end + * end + */ +static VALUE cResumableParser_initialize(int argc, VALUE *argv, VALUE self) { - va_list args; - VALUE mesg; + rb_check_frozen(self); + + VALUE opts = Qfalse; + rb_scan_args_kw(RB_SCAN_ARGS_LAST_HASH_KEYWORDS, argc, argv, "0:", &opts); + JSON_ResumableParser *parser = cResumableParser_get(self); - va_start(args, fmt); - mesg = rb_enc_vsprintf(enc, fmt, args); - va_end(args); + opts = argc > 0 ? argv[0] : Qnil; + parser_config_init(&parser->config, opts, self, true); - rb_exc_raise(rb_exc_new3(exc, mesg)); + return self; } -# define rb_enc_raise enc_raise -# endif -#else -# define EXC_ENCODING /* nothing */ -# define rb_enc_raise rb_raise -#endif -/* unicode */ +static JSON_ResumableParser *ResumableParser_acquire(VALUE self, bool lock); -static const char digit_values[256] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -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, - 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1 -}; +/* + * call-seq: self << string -> self + * + * Appends the given string to the parser's buffer. + */ +static VALUE cResumableParser_feed(VALUE self, VALUE str) +{ + rb_check_frozen(self); -static UTF32 unescape_unicode(const unsigned char *p) -{ - char b; - UTF32 result = 0; - b = digit_values[p[0]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[1]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[2]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[3]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - return result; -} + JSON_ResumableParser *parser = ResumableParser_acquire(self, false); -static int convert_UTF32_to_UTF8(char *buf, UTF32 ch) -{ - int len = 1; - if (ch <= 0x7F) { - buf[0] = (char) ch; - } else if (ch <= 0x07FF) { - buf[0] = (char) ((ch >> 6) | 0xC0); - buf[1] = (char) ((ch & 0x3F) | 0x80); - len++; - } else if (ch <= 0xFFFF) { - buf[0] = (char) ((ch >> 12) | 0xE0); - buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80); - buf[2] = (char) ((ch & 0x3F) | 0x80); - len += 2; - } else if (ch <= 0x1fffff) { - buf[0] =(char) ((ch >> 18) | 0xF0); - buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80); - buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80); - buf[3] =(char) ((ch & 0x3F) | 0x80); - len += 3; - } else { - buf[0] = '?'; + str = convert_encoding(str); + if (!RSTRING_LEN(str)) { + return self; } - return len; -} -static VALUE mJSON, mExt, cParser, eParserError, eNestingError; -static VALUE CNaN, CInfinity, CMinusInfinity; -static VALUE cBigDecimal = Qundef; - -static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions, - i_chr, i_max_nesting, i_allow_nan, i_symbolize_names, - i_object_class, i_array_class, i_decimal_class, i_key_p, - i_deep_const_get, i_match, i_match_string, i_aset, i_aref, - i_leftshift, i_new, i_BigDecimal; - - -#line 126 "parser.rl" - - - -#line 108 "parser.c" -enum {JSON_object_start = 1}; -enum {JSON_object_first_final = 27}; -enum {JSON_object_error = 0}; - -enum {JSON_object_en_main = 1}; - - -#line 167 "parser.rl" - - -static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - VALUE last_name = Qnil; - VALUE object_class = json->object_class; - - if (json->max_nesting && current_nesting > json->max_nesting) { - rb_raise(eNestingError, "nesting of %d is too deep", current_nesting); - } - - *result = NIL_P(object_class) ? rb_hash_new() : rb_class_new_instance(0, 0, object_class); - - -#line 132 "parser.c" - { - cs = JSON_object_start; - } - -#line 182 "parser.rl" - -#line 139 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - if ( (*p) == 123 ) - goto st2; - goto st0; -st0: -cs = 0; - goto _out; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - switch( (*p) ) { - case 13: goto st2; - case 32: goto st2; - case 34: goto tr2; - case 47: goto st23; - case 125: goto tr4; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st2; - goto st0; -tr2: -#line 149 "parser.rl" - { - char *np; - json->parsing_name = 1; - np = JSON_parse_string(json, p, pe, &last_name); - json->parsing_name = 0; - if (np == NULL) { p--; {p++; cs = 3; goto _out;} } else {p = (( np))-1;} - } - goto st3; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: -#line 180 "parser.c" - switch( (*p) ) { - case 13: goto st3; - case 32: goto st3; - case 47: goto st4; - case 58: goto st8; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st3; - goto st0; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - switch( (*p) ) { - case 42: goto st5; - case 47: goto st7; - } - goto st0; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - if ( (*p) == 42 ) - goto st6; - goto st5; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - switch( (*p) ) { - case 42: goto st6; - case 47: goto st3; - } - goto st5; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - if ( (*p) == 10 ) - goto st3; - goto st7; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - switch( (*p) ) { - case 13: goto st8; - case 32: goto st8; - case 34: goto tr11; - case 45: goto tr11; - case 47: goto st19; - case 73: goto tr11; - case 78: goto tr11; - case 91: goto tr11; - case 102: goto tr11; - case 110: goto tr11; - case 116: goto tr11; - case 123: goto tr11; - } - if ( (*p) > 10 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr11; - } else if ( (*p) >= 9 ) - goto st8; - goto st0; -tr11: -#line 134 "parser.rl" - { - VALUE v = Qnil; - char *np = JSON_parse_value(json, p, pe, &v, current_nesting); - if (np == NULL) { - p--; {p++; cs = 9; goto _out;} - } else { - if (NIL_P(json->object_class)) { - rb_hash_aset(*result, last_name, v); - } else { - rb_funcall(*result, i_aset, 2, last_name, v); - } - {p = (( np))-1;} - } - } - goto st9; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: -#line 267 "parser.c" - switch( (*p) ) { - case 13: goto st9; - case 32: goto st9; - case 44: goto st10; - case 47: goto st15; - case 125: goto tr4; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st9; - goto st0; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: - switch( (*p) ) { - case 13: goto st10; - case 32: goto st10; - case 34: goto tr2; - case 47: goto st11; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st10; - goto st0; -st11: - if ( ++p == pe ) - goto _test_eof11; -case 11: - switch( (*p) ) { - case 42: goto st12; - case 47: goto st14; - } - goto st0; -st12: - if ( ++p == pe ) - goto _test_eof12; -case 12: - if ( (*p) == 42 ) - goto st13; - goto st12; -st13: - if ( ++p == pe ) - goto _test_eof13; -case 13: - switch( (*p) ) { - case 42: goto st13; - case 47: goto st10; - } - goto st12; -st14: - if ( ++p == pe ) - goto _test_eof14; -case 14: - if ( (*p) == 10 ) - goto st10; - goto st14; -st15: - if ( ++p == pe ) - goto _test_eof15; -case 15: - switch( (*p) ) { - case 42: goto st16; - case 47: goto st18; - } - goto st0; -st16: - if ( ++p == pe ) - goto _test_eof16; -case 16: - if ( (*p) == 42 ) - goto st17; - goto st16; -st17: - if ( ++p == pe ) - goto _test_eof17; -case 17: - switch( (*p) ) { - case 42: goto st17; - case 47: goto st9; - } - goto st16; -st18: - if ( ++p == pe ) - goto _test_eof18; -case 18: - if ( (*p) == 10 ) - goto st9; - goto st18; -tr4: -#line 157 "parser.rl" - { p--; {p++; cs = 27; goto _out;} } - goto st27; -st27: - if ( ++p == pe ) - goto _test_eof27; -case 27: -#line 363 "parser.c" - goto st0; -st19: - if ( ++p == pe ) - goto _test_eof19; -case 19: - switch( (*p) ) { - case 42: goto st20; - case 47: goto st22; - } - goto st0; -st20: - if ( ++p == pe ) - goto _test_eof20; -case 20: - if ( (*p) == 42 ) - goto st21; - goto st20; -st21: - if ( ++p == pe ) - goto _test_eof21; -case 21: - switch( (*p) ) { - case 42: goto st21; - case 47: goto st8; - } - goto st20; -st22: - if ( ++p == pe ) - goto _test_eof22; -case 22: - if ( (*p) == 10 ) - goto st8; - goto st22; -st23: - if ( ++p == pe ) - goto _test_eof23; -case 23: - switch( (*p) ) { - case 42: goto st24; - case 47: goto st26; - } - goto st0; -st24: - if ( ++p == pe ) - goto _test_eof24; -case 24: - if ( (*p) == 42 ) - goto st25; - goto st24; -st25: - if ( ++p == pe ) - goto _test_eof25; -case 25: - switch( (*p) ) { - case 42: goto st25; - case 47: goto st2; - } - goto st24; -st26: - if ( ++p == pe ) - goto _test_eof26; -case 26: - if ( (*p) == 10 ) - goto st2; - goto st26; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof11: cs = 11; goto _test_eof; - _test_eof12: cs = 12; goto _test_eof; - _test_eof13: cs = 13; goto _test_eof; - _test_eof14: cs = 14; goto _test_eof; - _test_eof15: cs = 15; goto _test_eof; - _test_eof16: cs = 16; goto _test_eof; - _test_eof17: cs = 17; goto _test_eof; - _test_eof18: cs = 18; goto _test_eof; - _test_eof27: cs = 27; goto _test_eof; - _test_eof19: cs = 19; goto _test_eof; - _test_eof20: cs = 20; goto _test_eof; - _test_eof21: cs = 21; goto _test_eof; - _test_eof22: cs = 22; goto _test_eof; - _test_eof23: cs = 23; goto _test_eof; - _test_eof24: cs = 24; goto _test_eof; - _test_eof25: cs = 25; goto _test_eof; - _test_eof26: cs = 26; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 183 "parser.rl" - - if (cs >= JSON_object_first_final) { - if (json->create_additions) { - VALUE klassname; - if (NIL_P(json->object_class)) { - klassname = rb_hash_aref(*result, json->create_id); - } else { - klassname = rb_funcall(*result, i_aref, 1, json->create_id); - } - if (!NIL_P(klassname)) { - VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname); - if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) { - *result = rb_funcall(klass, i_json_create, 1, *result); - } - } + size_t offset = parser->state.cursor - parser->state.start; + const size_t remaining = parser->state.end - parser->state.cursor; + + if (!remaining) { + if (parser->buffer) { + json_str_clear(parser->buffer); } - return p + 1; + parser->buffer = RB_OBJ_FROZEN_RAW(str) ? str : rb_obj_hide(rb_str_new_shared(str)); + offset = 0; } else { - return NULL; - } -} - - - -#line 486 "parser.c" -enum {JSON_value_start = 1}; -enum {JSON_value_first_final = 29}; -enum {JSON_value_error = 0}; - -enum {JSON_value_en_main = 1}; - - -#line 283 "parser.rl" - - -static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - - -#line 502 "parser.c" - { - cs = JSON_value_start; - } - -#line 290 "parser.rl" - -#line 509 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -st1: - if ( ++p == pe ) - goto _test_eof1; -case 1: - switch( (*p) ) { - case 13: goto st1; - case 32: goto st1; - case 34: goto tr2; - case 45: goto tr3; - case 47: goto st6; - case 73: goto st10; - case 78: goto st17; - case 91: goto tr7; - case 102: goto st19; - case 110: goto st23; - case 116: goto st26; - case 123: goto tr11; - } - if ( (*p) > 10 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr3; - } else if ( (*p) >= 9 ) - goto st1; - goto st0; -st0: -cs = 0; - goto _out; -tr2: -#line 235 "parser.rl" - { - char *np = JSON_parse_string(json, p, pe, result); - if (np == NULL) { p--; {p++; cs = 29; goto _out;} } else {p = (( np))-1;} - } - goto st29; -tr3: -#line 240 "parser.rl" - { - char *np; - if(pe > p + 8 && !strncmp(MinusInfinity, p, 9)) { - if (json->allow_nan) { - *result = CMinusInfinity; - {p = (( p + 10))-1;} - p--; {p++; cs = 29; goto _out;} - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - } - } - np = JSON_parse_float(json, p, pe, result); - if (np != NULL) {p = (( np))-1;} - np = JSON_parse_integer(json, p, pe, result); - if (np != NULL) {p = (( np))-1;} - p--; {p++; cs = 29; goto _out;} - } - goto st29; -tr7: -#line 258 "parser.rl" - { - char *np; - np = JSON_parse_array(json, p, pe, result, current_nesting + 1); - if (np == NULL) { p--; {p++; cs = 29; goto _out;} } else {p = (( np))-1;} - } - goto st29; -tr11: -#line 264 "parser.rl" - { - char *np; - np = JSON_parse_object(json, p, pe, result, current_nesting + 1); - if (np == NULL) { p--; {p++; cs = 29; goto _out;} } else {p = (( np))-1;} - } - goto st29; -tr25: -#line 228 "parser.rl" - { - if (json->allow_nan) { - *result = CInfinity; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p - 8); - } - } - goto st29; -tr27: -#line 221 "parser.rl" - { - if (json->allow_nan) { - *result = CNaN; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p - 2); + JSON_ASSERT(parser->buffer); + + const size_t size = parser->state.end - parser->state.start; + const size_t consumed = size - remaining; + + if (RB_OBJ_FROZEN_RAW(parser->buffer)) { + VALUE new_buffer = rb_obj_hide(rb_str_buf_new(remaining + RSTRING_LEN(str))); + rb_enc_associate_index(new_buffer, utf8_encindex); + + char *old_ptr = RSTRING_PTR(parser->buffer); + memcpy(RSTRING_PTR(new_buffer), old_ptr + consumed, remaining); + rb_str_set_len(new_buffer, remaining); + offset = 0; + parser->buffer = new_buffer; + } else if (consumed > (size / 2) && size >= 512) { + rb_str_modify(parser->buffer); + char *old_ptr = RSTRING_PTR(parser->buffer); + memmove(old_ptr, old_ptr + consumed, remaining); + rb_str_set_len(parser->buffer, remaining); + offset = 0; } + rb_str_append(parser->buffer, str); } - goto st29; -tr31: -#line 215 "parser.rl" - { - *result = Qfalse; - } - goto st29; -tr34: -#line 212 "parser.rl" - { - *result = Qnil; - } - goto st29; -tr37: -#line 218 "parser.rl" - { - *result = Qtrue; - } - goto st29; -st29: - if ( ++p == pe ) - goto _test_eof29; -case 29: -#line 270 "parser.rl" - { p--; {p++; cs = 29; goto _out;} } -#line 629 "parser.c" - switch( (*p) ) { - case 13: goto st29; - case 32: goto st29; - case 47: goto st2; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st29; - goto st0; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - switch( (*p) ) { - case 42: goto st3; - case 47: goto st5; - } - goto st0; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: - if ( (*p) == 42 ) - goto st4; - goto st3; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - switch( (*p) ) { - case 42: goto st4; - case 47: goto st29; - } - goto st3; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - if ( (*p) == 10 ) - goto st29; - goto st5; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - switch( (*p) ) { - case 42: goto st7; - case 47: goto st9; - } - goto st0; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - if ( (*p) == 42 ) - goto st8; - goto st7; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - switch( (*p) ) { - case 42: goto st8; - case 47: goto st1; - } - goto st7; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: - if ( (*p) == 10 ) - goto st1; - goto st9; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: - if ( (*p) == 110 ) - goto st11; - goto st0; -st11: - if ( ++p == pe ) - goto _test_eof11; -case 11: - if ( (*p) == 102 ) - goto st12; - goto st0; -st12: - if ( ++p == pe ) - goto _test_eof12; -case 12: - if ( (*p) == 105 ) - goto st13; - goto st0; -st13: - if ( ++p == pe ) - goto _test_eof13; -case 13: - if ( (*p) == 110 ) - goto st14; - goto st0; -st14: - if ( ++p == pe ) - goto _test_eof14; -case 14: - if ( (*p) == 105 ) - goto st15; - goto st0; -st15: - if ( ++p == pe ) - goto _test_eof15; -case 15: - if ( (*p) == 116 ) - goto st16; - goto st0; -st16: - if ( ++p == pe ) - goto _test_eof16; -case 16: - if ( (*p) == 121 ) - goto tr25; - goto st0; -st17: - if ( ++p == pe ) - goto _test_eof17; -case 17: - if ( (*p) == 97 ) - goto st18; - goto st0; -st18: - if ( ++p == pe ) - goto _test_eof18; -case 18: - if ( (*p) == 78 ) - goto tr27; - goto st0; -st19: - if ( ++p == pe ) - goto _test_eof19; -case 19: - if ( (*p) == 97 ) - goto st20; - goto st0; -st20: - if ( ++p == pe ) - goto _test_eof20; -case 20: - if ( (*p) == 108 ) - goto st21; - goto st0; -st21: - if ( ++p == pe ) - goto _test_eof21; -case 21: - if ( (*p) == 115 ) - goto st22; - goto st0; -st22: - if ( ++p == pe ) - goto _test_eof22; -case 22: - if ( (*p) == 101 ) - goto tr31; - goto st0; -st23: - if ( ++p == pe ) - goto _test_eof23; -case 23: - if ( (*p) == 117 ) - goto st24; - goto st0; -st24: - if ( ++p == pe ) - goto _test_eof24; -case 24: - if ( (*p) == 108 ) - goto st25; - goto st0; -st25: - if ( ++p == pe ) - goto _test_eof25; -case 25: - if ( (*p) == 108 ) - goto tr34; - goto st0; -st26: - if ( ++p == pe ) - goto _test_eof26; -case 26: - if ( (*p) == 114 ) - goto st27; - goto st0; -st27: - if ( ++p == pe ) - goto _test_eof27; -case 27: - if ( (*p) == 117 ) - goto st28; - goto st0; -st28: - if ( ++p == pe ) - goto _test_eof28; -case 28: - if ( (*p) == 101 ) - goto tr37; - goto st0; - } - _test_eof1: cs = 1; goto _test_eof; - _test_eof29: cs = 29; goto _test_eof; - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof11: cs = 11; goto _test_eof; - _test_eof12: cs = 12; goto _test_eof; - _test_eof13: cs = 13; goto _test_eof; - _test_eof14: cs = 14; goto _test_eof; - _test_eof15: cs = 15; goto _test_eof; - _test_eof16: cs = 16; goto _test_eof; - _test_eof17: cs = 17; goto _test_eof; - _test_eof18: cs = 18; goto _test_eof; - _test_eof19: cs = 19; goto _test_eof; - _test_eof20: cs = 20; goto _test_eof; - _test_eof21: cs = 21; goto _test_eof; - _test_eof22: cs = 22; goto _test_eof; - _test_eof23: cs = 23; goto _test_eof; - _test_eof24: cs = 24; goto _test_eof; - _test_eof25: cs = 25; goto _test_eof; - _test_eof26: cs = 26; goto _test_eof; - _test_eof27: cs = 27; goto _test_eof; - _test_eof28: cs = 28; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 291 "parser.rl" - - if (cs >= JSON_value_first_final) { - return p; - } else { - return NULL; - } -} - - -#line 880 "parser.c" -enum {JSON_integer_start = 1}; -enum {JSON_integer_first_final = 3}; -enum {JSON_integer_error = 0}; - -enum {JSON_integer_en_main = 1}; - - -#line 307 "parser.rl" - - -static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - - -#line 896 "parser.c" - { - cs = JSON_integer_start; - } - -#line 314 "parser.rl" - json->memo = p; - -#line 904 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - switch( (*p) ) { - case 45: goto st2; - case 48: goto st3; - } - if ( 49 <= (*p) && (*p) <= 57 ) - goto st5; - goto st0; -st0: -cs = 0; - goto _out; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - if ( (*p) == 48 ) - goto st3; - if ( 49 <= (*p) && (*p) <= 57 ) - goto st5; - goto st0; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st0; - goto tr4; -tr4: -#line 304 "parser.rl" - { p--; {p++; cs = 4; goto _out;} } - goto st4; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: -#line 945 "parser.c" - goto st0; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st5; - goto tr4; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 316 "parser.rl" - - if (cs >= JSON_integer_first_final) { - long len = p - json->memo; - fbuffer_clear(json->fbuffer); - fbuffer_append(json->fbuffer, json->memo, len); - fbuffer_append_char(json->fbuffer, '\0'); - *result = rb_cstr2inum(FBUFFER_PTR(json->fbuffer), 10); - return p + 1; - } else { - return NULL; - } -} + rb_len_t len; + const char *start; + RSTRING_GETMEM(parser->buffer, start, len); + parser->state.start = start; + parser->state.end = start + len; + parser->state.cursor = parser->state.start + offset; -#line 979 "parser.c" -enum {JSON_float_start = 1}; -enum {JSON_float_first_final = 8}; -enum {JSON_float_error = 0}; - -enum {JSON_float_en_main = 1}; + return self; +} +struct json_parse_any_args { + JSON_ParserState *state; + JSON_ParserConfig *config; + VALUE parser; +}; -#line 341 "parser.rl" +static VALUE json_parse_any_resumable_safe0(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, _args)) +{ + struct json_parse_any_args *args = (struct json_parse_any_args *)_args; + return (VALUE)json_parse_any(args->state, args->config, true); +} +static VALUE json_parse_any_resumable_safe(VALUE _args) +{ + struct json_parse_any_args *args = (struct json_parse_any_args *)_args; + VALUE result = rb_catch_obj(args->parser, json_parse_any_resumable_safe0, _args); + return result == args->parser ? Qfalse : result; +} -static int is_bigdecimal_class(VALUE obj) +static JSON_ResumableParser *ResumableParser_acquire(VALUE self, bool lock) { - if (cBigDecimal == Qundef) { - if (rb_const_defined(rb_cObject, i_BigDecimal)) { - cBigDecimal = rb_const_get_at(rb_cObject, i_BigDecimal); - } - else { - return 0; - } - } - return obj == cBigDecimal; -} - -static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - - -#line 1008 "parser.c" - { - cs = JSON_float_start; - } - -#line 361 "parser.rl" - json->memo = p; - -#line 1016 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - switch( (*p) ) { - case 45: goto st2; - case 48: goto st3; - } - if ( 49 <= (*p) && (*p) <= 57 ) - goto st7; - goto st0; -st0: -cs = 0; - goto _out; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - if ( (*p) == 48 ) - goto st3; - if ( 49 <= (*p) && (*p) <= 57 ) - goto st7; - goto st0; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: - switch( (*p) ) { - case 46: goto st4; - case 69: goto st5; - case 101: goto st5; - } - goto st0; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st8; - goto st0; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - switch( (*p) ) { - case 69: goto st5; - case 101: goto st5; - } - if ( (*p) > 46 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st8; - } else if ( (*p) >= 45 ) - goto st0; - goto tr9; -tr9: -#line 335 "parser.rl" - { p--; {p++; cs = 9; goto _out;} } - goto st9; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: -#line 1081 "parser.c" - goto st0; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - switch( (*p) ) { - case 43: goto st6; - case 45: goto st6; - } - if ( 48 <= (*p) && (*p) <= 57 ) - goto st10; - goto st0; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - if ( 48 <= (*p) && (*p) <= 57 ) - goto st10; - goto st0; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: - switch( (*p) ) { - case 69: goto st0; - case 101: goto st0; - } - if ( (*p) > 46 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st10; - } else if ( (*p) >= 45 ) - goto st0; - goto tr9; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - switch( (*p) ) { - case 46: goto st4; - case 69: goto st5; - case 101: goto st5; - } - if ( 48 <= (*p) && (*p) <= 57 ) - goto st7; - goto st0; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 363 "parser.rl" - - if (cs >= JSON_float_first_final) { - long len = p - json->memo; - fbuffer_clear(json->fbuffer); - fbuffer_append(json->fbuffer, json->memo, len); - fbuffer_append_char(json->fbuffer, '\0'); - if (NIL_P(json->decimal_class)) { - *result = rb_float_new(rb_cstr_to_dbl(FBUFFER_PTR(json->fbuffer), 1)); - } else { - VALUE text; - text = rb_str_new2(FBUFFER_PTR(json->fbuffer)); - if (is_bigdecimal_class(json->decimal_class)) { - *result = rb_funcall(Qnil, i_BigDecimal, 1, text); - } else { - *result = rb_funcall(json->decimal_class, i_new, 1, text); - } - } - return p + 1; - } else { - return NULL; - } -} - - - -#line 1168 "parser.c" -enum {JSON_array_start = 1}; -enum {JSON_array_first_final = 17}; -enum {JSON_array_error = 0}; - -enum {JSON_array_en_main = 1}; - - -#line 416 "parser.rl" - - -static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - VALUE array_class = json->array_class; - - if (json->max_nesting && current_nesting > json->max_nesting) { - rb_raise(eNestingError, "nesting of %d is too deep", current_nesting); - } - *result = NIL_P(array_class) ? rb_ary_new() : rb_class_new_instance(0, 0, array_class); - - -#line 1190 "parser.c" - { - cs = JSON_array_start; - } - -#line 429 "parser.rl" - -#line 1197 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - if ( (*p) == 91 ) - goto st2; - goto st0; -st0: -cs = 0; - goto _out; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - switch( (*p) ) { - case 13: goto st2; - case 32: goto st2; - case 34: goto tr2; - case 45: goto tr2; - case 47: goto st13; - case 73: goto tr2; - case 78: goto tr2; - case 91: goto tr2; - case 93: goto tr4; - case 102: goto tr2; - case 110: goto tr2; - case 116: goto tr2; - case 123: goto tr2; - } - if ( (*p) > 10 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr2; - } else if ( (*p) >= 9 ) - goto st2; - goto st0; -tr2: -#line 393 "parser.rl" - { - VALUE v = Qnil; - char *np = JSON_parse_value(json, p, pe, &v, current_nesting); - if (np == NULL) { - p--; {p++; cs = 3; goto _out;} - } else { - if (NIL_P(json->array_class)) { - rb_ary_push(*result, v); - } else { - rb_funcall(*result, i_leftshift, 1, v); - } - {p = (( np))-1;} - } + JSON_ResumableParser *parser = cResumableParser_get(self); + + if (parser->in_use) { + rb_raise(rb_eArgError, "ResumableParser can't be used recursively"); } - goto st3; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: -#line 1256 "parser.c" - switch( (*p) ) { - case 13: goto st3; - case 32: goto st3; - case 44: goto st4; - case 47: goto st9; - case 93: goto tr4; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st3; - goto st0; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - switch( (*p) ) { - case 13: goto st4; - case 32: goto st4; - case 34: goto tr2; - case 45: goto tr2; - case 47: goto st5; - case 73: goto tr2; - case 78: goto tr2; - case 91: goto tr2; - case 102: goto tr2; - case 110: goto tr2; - case 116: goto tr2; - case 123: goto tr2; - } - if ( (*p) > 10 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr2; - } else if ( (*p) >= 9 ) - goto st4; - goto st0; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - switch( (*p) ) { - case 42: goto st6; - case 47: goto st8; - } - goto st0; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - if ( (*p) == 42 ) - goto st7; - goto st6; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - switch( (*p) ) { - case 42: goto st7; - case 47: goto st4; - } - goto st6; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - if ( (*p) == 10 ) - goto st4; - goto st8; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: - switch( (*p) ) { - case 42: goto st10; - case 47: goto st12; - } - goto st0; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: - if ( (*p) == 42 ) - goto st11; - goto st10; -st11: - if ( ++p == pe ) - goto _test_eof11; -case 11: - switch( (*p) ) { - case 42: goto st11; - case 47: goto st3; - } - goto st10; -st12: - if ( ++p == pe ) - goto _test_eof12; -case 12: - if ( (*p) == 10 ) - goto st3; - goto st12; -tr4: -#line 408 "parser.rl" - { p--; {p++; cs = 17; goto _out;} } - goto st17; -st17: - if ( ++p == pe ) - goto _test_eof17; -case 17: -#line 1363 "parser.c" - goto st0; -st13: - if ( ++p == pe ) - goto _test_eof13; -case 13: - switch( (*p) ) { - case 42: goto st14; - case 47: goto st16; - } - goto st0; -st14: - if ( ++p == pe ) - goto _test_eof14; -case 14: - if ( (*p) == 42 ) - goto st15; - goto st14; -st15: - if ( ++p == pe ) - goto _test_eof15; -case 15: - switch( (*p) ) { - case 42: goto st15; - case 47: goto st2; - } - goto st14; -st16: - if ( ++p == pe ) - goto _test_eof16; -case 16: - if ( (*p) == 10 ) - goto st2; - goto st16; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof11: cs = 11; goto _test_eof; - _test_eof12: cs = 12; goto _test_eof; - _test_eof17: cs = 17; goto _test_eof; - _test_eof13: cs = 13; goto _test_eof; - _test_eof14: cs = 14; goto _test_eof; - _test_eof15: cs = 15; goto _test_eof; - _test_eof16: cs = 16; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 430 "parser.rl" - - if(cs >= JSON_array_first_final) { - return p + 1; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - return NULL; + + if (lock) { + parser->in_use = true; } + + // self may have moved, so we need to update all pointers + // Investigate: We might be better off keeping JSON_ParserState on the stack + // and only persist what we need. + parser->state.value_stack = &parser->value_stack; + parser->state.frames = &parser->frames; + + return parser; } -static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd) +/* + * call-seq: parse -> true or false + * + * Attemps to parse a JSON document from the internal buffer. + * Returns whether a complete document could be parsed. + * + * It does raise +JSON::ParserError+ when encountering invalid \JSON syntax. + * + * The parsed object can be retrieved by calling #value + */ +static VALUE cResumableParser_parse(VALUE self) { - char *p = string, *pe = string, *unescape; - int unescape_len; - char buf[4]; + JSON_ResumableParser *parser = ResumableParser_acquire(self, true); - while (pe < stringEnd) { - if (*pe == '\\') { - unescape = (char *) "?"; - unescape_len = 1; - if (pe > p) rb_str_buf_cat(result, p, pe - p); - switch (*++pe) { - case 'n': - unescape = (char *) "\n"; - break; - case 'r': - unescape = (char *) "\r"; - break; - case 't': - unescape = (char *) "\t"; - break; - case '"': - unescape = (char *) "\""; - break; - case '\\': - unescape = (char *) "\\"; - break; - case 'b': - unescape = (char *) "\b"; - break; - case 'f': - unescape = (char *) "\f"; - break; - case 'u': - if (pe > stringEnd - 4) { - rb_enc_raise( - EXC_ENCODING eParserError, - "%u: incomplete unicode character escape sequence at '%s'", __LINE__, p - ); - } else { - UTF32 ch = unescape_unicode((unsigned char *) ++pe); - pe += 3; - if (UNI_SUR_HIGH_START == (ch & 0xFC00)) { - pe++; - if (pe > stringEnd - 6) { - rb_enc_raise( - EXC_ENCODING eParserError, - "%u: incomplete surrogate pair at '%s'", __LINE__, p - ); - } - if (pe[0] == '\\' && pe[1] == 'u') { - UTF32 sur = unescape_unicode((unsigned char *) pe + 2); - ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16) - | (sur & 0x3FF)); - pe += 5; - } else { - unescape = (char *) "?"; - break; - } - } - unescape_len = convert_UTF32_to_UTF8(buf, ch); - unescape = buf; - } - break; - default: - p = pe; - continue; - } - rb_str_buf_cat(result, unescape, unescape_len); - p = ++pe; - } else { - pe++; - } + if (parser->complete) { + parser->parsed_bytes = 0; + parser->incomplete_bytes = 0; + parser->complete = false; } - rb_str_buf_cat(result, p, pe - p); - return result; -} + if (!parser->buffer) { + parser->in_use = false; + return Qfalse; + } -#line 1508 "parser.c" -enum {JSON_string_start = 1}; -enum {JSON_string_first_final = 8}; -enum {JSON_string_error = 0}; + if (parser->frames.head == 0) { + json_frame_stack_push(&parser->state, (json_frame){ + .type = JSON_FRAME_ROOT, + .phase = JSON_PHASE_VALUE, + }); + } -enum {JSON_string_en_main = 1}; + VALUE Vsource = parser->buffer; // Prevent compaction + json_frame *frame = json_frame_stack_peek(&parser->frames); -#line 537 "parser.rl" + if (frame->phase == JSON_PHASE_DONE) { + JSON_ASSERT(parser->value_stack.head == 1); + JSON_ASSERT(parser->frames.head == 1); + frame->phase = JSON_PHASE_VALUE; + rvalue_stack_pop(parser->state.value_stack, 1); + } -static int -match_i(VALUE regexp, VALUE klass, VALUE memo) -{ - if (regexp == Qundef) return ST_STOP; - if (RTEST(rb_funcall(klass, i_json_creatable_p, 0)) && - RTEST(rb_funcall(regexp, i_match, 1, rb_ary_entry(memo, 0)))) { - rb_ary_push(memo, klass); - return ST_STOP; + struct json_parse_any_args args = { + .state = &parser->state, + .config = &parser->config, + .parser = self, + }; + int status; + const char *initial_cursor = parser->state.cursor; + parser->complete = rb_protect(json_parse_any_resumable_safe, (VALUE)&args, &status); + + if (status) { + parser->complete = true; // a parse error is considered complete } - return ST_CONTINUE; -} -static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - VALUE match_string; - - *result = rb_str_buf_new(0); - -#line 1538 "parser.c" - { - cs = JSON_string_start; - } - -#line 558 "parser.rl" - json->memo = p; - -#line 1546 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -case 1: - if ( (*p) == 34 ) - goto st2; - goto st0; -st0: -cs = 0; - goto _out; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - switch( (*p) ) { - case 34: goto tr2; - case 92: goto st3; - } - if ( 0 <= (*p) && (*p) <= 31 ) - goto st0; - goto st2; -tr2: -#line 523 "parser.rl" - { - *result = json_string_unescape(*result, json->memo + 1, p); - if (NIL_P(*result)) { - p--; - {p++; cs = 8; goto _out;} - } else { - FORCE_UTF8(*result); - {p = (( p + 1))-1;} - } + parser->parsed_bytes += parser->state.cursor - initial_cursor; + parser->incomplete_bytes = parser->complete ? 0 : parser->state.end - parser->state.cursor; + + json_eat_whitespace(&parser->state, &parser->config, false); + if (eos(&parser->state)) { + json_str_clear(parser->buffer); + parser->buffer = Qfalse; + parser->state.start = parser->state.cursor = parser->state.end = 0; } -#line 534 "parser.rl" - { p--; {p++; cs = 8; goto _out;} } - goto st8; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: -#line 1589 "parser.c" - goto st0; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: - if ( (*p) == 117 ) - goto st4; - if ( 0 <= (*p) && (*p) <= 31 ) - goto st0; - goto st2; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st5; - } else if ( (*p) > 70 ) { - if ( 97 <= (*p) && (*p) <= 102 ) - goto st5; - } else - goto st5; - goto st0; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st6; - } else if ( (*p) > 70 ) { - if ( 97 <= (*p) && (*p) <= 102 ) - goto st6; - } else - goto st6; - goto st0; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st7; - } else if ( (*p) > 70 ) { - if ( 97 <= (*p) && (*p) <= 102 ) - goto st7; - } else - goto st7; - goto st0; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - if ( (*p) < 65 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto st2; - } else if ( (*p) > 70 ) { - if ( 97 <= (*p) && (*p) <= 102 ) - goto st2; - } else - goto st2; - goto st0; - } - _test_eof2: cs = 2; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 560 "parser.rl" - - if (json->create_additions && RTEST(match_string = json->match_string)) { - VALUE klass; - VALUE memo = rb_ary_new2(2); - rb_ary_push(memo, *result); - rb_hash_foreach(match_string, match_i, memo); - klass = rb_ary_entry(memo, 1); - if (RTEST(klass)) { - *result = rb_funcall(klass, i_json_create, 1, *result); - } - } - - if (json->symbolize_names && json->parsing_name) { - *result = rb_str_intern(*result); - } else if (RB_TYPE_P(*result, T_STRING)) { - rb_str_resize(*result, RSTRING_LEN(*result)); - } - if (cs >= JSON_string_first_final) { - return p + 1; - } else { - return NULL; + parser->in_use = false; + + if (status) { + rb_jump_tag(status); // reraise } + RB_GC_GUARD(Vsource); + return parser->complete ? Qtrue : Qfalse; } /* - * Document-class: JSON::Ext::Parser - * - * This is the JSON parser implemented as a C extension. It can be configured - * to be used by setting - * - * JSON.parser = JSON::Ext::Parser - * - * with the method parser= in JSON. + * call-seq: value? -> true or false * + * Returns whether a parsed value is available. */ - -static VALUE convert_encoding(VALUE source) +static VALUE cResumableParser_value_p(VALUE self) { -#ifdef HAVE_RUBY_ENCODING_H - rb_encoding *enc = rb_enc_get(source); - if (enc == rb_ascii8bit_encoding()) { - if (OBJ_FROZEN(source)) { - source = rb_str_dup(source); + JSON_ResumableParser *parser = ResumableParser_acquire(self, false); + + if (parser->value_stack.head > 0) { + json_frame *frame = json_frame_stack_peek(&parser->frames); + if (frame->phase == JSON_PHASE_DONE) { + return Qtrue; + } } - FORCE_UTF8(source); - } else { - source = rb_str_conv_enc(source, rb_enc_get(source), rb_utf8_encoding()); - } -#endif - return source; + return Qfalse; } /* - * call-seq: new(source, opts => {}) + * call-seq: value -> object * - * Creates a new JSON::Ext::Parser instance for the string _source_. - * - * Creates a new JSON::Ext::Parser instance for the string _source_. - * - * It will be configured by the _opts_ hash. _opts_ can have the following - * keys: - * - * _opts_ can have the following keys: - * * *max_nesting*: The maximum depth of nesting allowed in the parsed data - * structures. Disable depth checking with :max_nesting => false|nil|0, it - * defaults to 100. - * * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in - * defiance of RFC 4627 to be parsed by the Parser. This option defaults to - * false. - * * *symbolize_names*: If set to true, returns symbols for the names - * (keys) in a JSON object. Otherwise strings are returned, which is - * also the default. It's not possible to use this option in - * conjunction with the *create_additions* option. - * * *create_additions*: If set to false, the Parser doesn't create - * additions even if a matching class and create_id was found. This option - * defaults to false. - * * *object_class*: Defaults to Hash - * * *array_class*: Defaults to Array + * Returns and consume the last parsed value. + * Raises ArgumentError if there is no parsed value or if it was already retrieved: + * parser << '[1][2]' + * parser.value # ArgumentError no ready value + * parser.parse # => true + * parser.value # => [1] + * parser.value # ArgumentError no ready value */ -static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self) +static VALUE cResumableParser_value(VALUE self) { - VALUE source, opts; - GET_PARSER_INIT; + JSON_ResumableParser *parser = ResumableParser_acquire(self, false); - if (json->Vsource) { - rb_raise(rb_eTypeError, "already initialized instance"); - } -#ifdef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH - rb_scan_args(argc, argv, "1:", &source, &opts); -#else - rb_scan_args(argc, argv, "11", &source, &opts); -#endif - if (!NIL_P(opts)) { -#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH - opts = rb_convert_type(opts, T_HASH, "Hash", "to_hash"); - if (NIL_P(opts)) { - rb_raise(rb_eArgError, "opts needs to be like a hash"); - } else { -#endif - VALUE tmp = ID2SYM(i_max_nesting); - if (option_given_p(opts, tmp)) { - VALUE max_nesting = rb_hash_aref(opts, tmp); - if (RTEST(max_nesting)) { - Check_Type(max_nesting, T_FIXNUM); - json->max_nesting = FIX2INT(max_nesting); - } else { - json->max_nesting = 0; - } - } else { - json->max_nesting = 100; - } - tmp = ID2SYM(i_allow_nan); - if (option_given_p(opts, tmp)) { - json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0; - } else { - json->allow_nan = 0; - } - tmp = ID2SYM(i_symbolize_names); - if (option_given_p(opts, tmp)) { - json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0; - } else { - json->symbolize_names = 0; - } - tmp = ID2SYM(i_create_additions); - if (option_given_p(opts, tmp)) { - json->create_additions = RTEST(rb_hash_aref(opts, tmp)); - } else { - json->create_additions = 0; - } - if (json->symbolize_names && json->create_additions) { - rb_raise(rb_eArgError, - "options :symbolize_names and :create_additions cannot be " - " used in conjunction"); - } - tmp = ID2SYM(i_create_id); - if (option_given_p(opts, tmp)) { - json->create_id = rb_hash_aref(opts, tmp); - } else { - json->create_id = rb_funcall(mJSON, i_create_id, 0); - } - tmp = ID2SYM(i_object_class); - if (option_given_p(opts, tmp)) { - json->object_class = rb_hash_aref(opts, tmp); - } else { - json->object_class = Qnil; - } - tmp = ID2SYM(i_array_class); - if (option_given_p(opts, tmp)) { - json->array_class = rb_hash_aref(opts, tmp); - } else { - json->array_class = Qnil; - } - tmp = ID2SYM(i_decimal_class); - if (option_given_p(opts, tmp)) { - json->decimal_class = rb_hash_aref(opts, tmp); - } else { - json->decimal_class = Qnil; - } - tmp = ID2SYM(i_match_string); - if (option_given_p(opts, tmp)) { - VALUE match_string = rb_hash_aref(opts, tmp); - json->match_string = RTEST(match_string) ? match_string : Qnil; - } else { - json->match_string = Qnil; - } -#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH + if (parser->frames.head > 0) { + json_frame *frame = json_frame_stack_peek(&parser->frames); + + if (frame->phase == JSON_PHASE_DONE) { + VALUE result = *rvalue_stack_peek(parser->state.value_stack, 1); + rvalue_stack_pop(parser->state.value_stack, 1); + json_frame_stack_pop(parser->state.frames); + return result; } -#endif - } else { - json->max_nesting = 100; - json->allow_nan = 0; - json->create_additions = 1; - json->create_id = rb_funcall(mJSON, i_create_id, 0); - json->object_class = Qnil; - json->array_class = Qnil; - json->decimal_class = Qnil; - } - source = convert_encoding(StringValue(source)); - StringValue(source); - json->len = RSTRING_LEN(source); - json->source = RSTRING_PTR(source);; - json->Vsource = source; + } + rb_raise(rb_eArgError, "no ready value"); +} + +/* + * call-seq: clear -> self + * + * Entirely reset the parser state and buffer. + */ +static VALUE cResumableParser_clear(VALUE self) +{ + JSON_ResumableParser *parser = ResumableParser_acquire(self, false); + parser->buffer = 0; + parser->complete = true; + parser->parsed_bytes = 0; + parser->incomplete_bytes = 0; + parser->frames.head = 0; + parser->value_stack.head = 0; + parser->state.name_cache.length = 0; + parser->state.current_nesting = 0; + parser->state.in_array = 1; + parser->state.start = parser->state.cursor = parser->state.end = NULL; return self; } +static VALUE cResumableParser_partial_value_body(VALUE self) +{ + JSON_ResumableParser *original_parser = cResumableParser_get(self); + JSON_ResumableParser parser = *original_parser; + + parser.state.frames = &parser.frames; + parser.state.value_stack = &parser.value_stack; + + if (parser.value_stack.head == 0) { + return Qnil; + } + + json_frame *frame = json_frame_stack_peek(parser.state.frames); + long missing_object_value = 0; + if (frame->type == JSON_FRAME_OBJECT && (frame->phase == JSON_PHASE_VALUE || frame->phase == JSON_PHASE_OBJECT_COLON)) { + missing_object_value = 1; + } + + // Copy the value stack as we need to mutate it. The collapse loop folds each + // open container by popping its entries and pushing the single result, so a + // parent always reclaims its child's slot; head exceeds its live size by at + // most one, either for the missing-value placeholder pushed below or for the + // result of folding an empty innermost container. That one spare slot keeps + // rvalue_stack_push from growing (reallocating) this ALLOCV buffer. + long capa = parser.value_stack.head; + parser.value_stack.capa = capa + 1; + VALUE tmpbuf, *value_stack_buffer = ALLOCV_N(VALUE, tmpbuf, parser.value_stack.capa); + MEMCPY(value_stack_buffer, parser.value_stack.ptr, VALUE, capa); + parser.value_stack.ptr = value_stack_buffer; + + JSON_ParserState *state = &parser.state; + JSON_ParserConfig *config = &parser.config; + + if (missing_object_value) { + rvalue_stack_push(state->value_stack, Qnil, NULL, &state->value_stack); + } -#line 1852 "parser.c" -enum {JSON_start = 1}; -enum {JSON_first_final = 10}; -enum {JSON_error = 0}; + VALUE partial_result = Qundef; -enum {JSON_en_main = 1}; + while (UNDEF_P(partial_result)) { + frame = json_frame_stack_peek(state->frames); + switch (frame->type) { + case JSON_FRAME_ROOT: { + partial_result = *rvalue_stack_peek(state->value_stack, 1); + break; + } + + case JSON_FRAME_ARRAY: { + long count = json_frame_entry_count(frame, state->value_stack); + json_push_value(state, config, json_decode_array(state, config, count)); + json_frame_stack_pop(state->frames); + + break; + } -#line 760 "parser.rl" + case JSON_FRAME_OBJECT: { + long count = json_frame_entry_count(frame, state->value_stack); + json_push_value(state, config, json_decode_object(state, config, count)); + json_frame_stack_pop(state->frames); + break; + } + + default: { + JSON_UNREACHABLE_RETURN(Qundef); + break; + } + } + } + ALLOCV_END(tmpbuf); + return partial_result; +} /* - * call-seq: parse() + * call-seq: partial_value -> object * - * Parses the current JSON text _source_ and returns the complete data - * structure as a result. + * Returns the Ruby objects parsed up to this point: + * parser << '[1, [2, 3,' + * parser.parse # => false + * parser.value # ArgumentError no ready value + * parser.partial_value # => [1, [2, 3]] */ -static VALUE cParser_parse(VALUE self) -{ - char *p, *pe; - int cs = EVIL; - VALUE result = Qnil; - GET_PARSER; - - -#line 1877 "parser.c" - { - cs = JSON_start; - } - -#line 776 "parser.rl" - p = json->source; - pe = p + json->len; - -#line 1886 "parser.c" - { - if ( p == pe ) - goto _test_eof; - switch ( cs ) - { -st1: - if ( ++p == pe ) - goto _test_eof1; -case 1: - switch( (*p) ) { - case 13: goto st1; - case 32: goto st1; - case 34: goto tr2; - case 45: goto tr2; - case 47: goto st6; - case 73: goto tr2; - case 78: goto tr2; - case 91: goto tr2; - case 102: goto tr2; - case 110: goto tr2; - case 116: goto tr2; - case 123: goto tr2; - } - if ( (*p) > 10 ) { - if ( 48 <= (*p) && (*p) <= 57 ) - goto tr2; - } else if ( (*p) >= 9 ) - goto st1; - goto st0; -st0: -cs = 0; - goto _out; -tr2: -#line 752 "parser.rl" - { - char *np = JSON_parse_value(json, p, pe, &result, 0); - if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;} - } - goto st10; -st10: - if ( ++p == pe ) - goto _test_eof10; -case 10: -#line 1930 "parser.c" - switch( (*p) ) { - case 13: goto st10; - case 32: goto st10; - case 47: goto st2; - } - if ( 9 <= (*p) && (*p) <= 10 ) - goto st10; - goto st0; -st2: - if ( ++p == pe ) - goto _test_eof2; -case 2: - switch( (*p) ) { - case 42: goto st3; - case 47: goto st5; - } - goto st0; -st3: - if ( ++p == pe ) - goto _test_eof3; -case 3: - if ( (*p) == 42 ) - goto st4; - goto st3; -st4: - if ( ++p == pe ) - goto _test_eof4; -case 4: - switch( (*p) ) { - case 42: goto st4; - case 47: goto st10; - } - goto st3; -st5: - if ( ++p == pe ) - goto _test_eof5; -case 5: - if ( (*p) == 10 ) - goto st10; - goto st5; -st6: - if ( ++p == pe ) - goto _test_eof6; -case 6: - switch( (*p) ) { - case 42: goto st7; - case 47: goto st9; - } - goto st0; -st7: - if ( ++p == pe ) - goto _test_eof7; -case 7: - if ( (*p) == 42 ) - goto st8; - goto st7; -st8: - if ( ++p == pe ) - goto _test_eof8; -case 8: - switch( (*p) ) { - case 42: goto st8; - case 47: goto st1; - } - goto st7; -st9: - if ( ++p == pe ) - goto _test_eof9; -case 9: - if ( (*p) == 10 ) - goto st1; - goto st9; - } - _test_eof1: cs = 1; goto _test_eof; - _test_eof10: cs = 10; goto _test_eof; - _test_eof2: cs = 2; goto _test_eof; - _test_eof3: cs = 3; goto _test_eof; - _test_eof4: cs = 4; goto _test_eof; - _test_eof5: cs = 5; goto _test_eof; - _test_eof6: cs = 6; goto _test_eof; - _test_eof7: cs = 7; goto _test_eof; - _test_eof8: cs = 8; goto _test_eof; - _test_eof9: cs = 9; goto _test_eof; - - _test_eof: {} - _out: {} - } - -#line 779 "parser.rl" - - if (cs >= JSON_first_final && p == pe) { +static VALUE cResumableParser_partial_value(VALUE self) +{ + JSON_ResumableParser *parser = ResumableParser_acquire(self, true); + + int status; + VALUE result = rb_protect(cResumableParser_partial_value_body, self, &status); + parser->in_use = false; + if (status) { + rb_jump_tag(status); + } return result; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - return Qnil; - } } -static void JSON_mark(void *ptr) +/* + * call-seq: rest -> string + * + * Returns a string containing what remains to be parsed in the buffer + * parser << '{ "message": "unterminated message' + * parser.parse # => false + * parser.rest # => '"unterminated message"' + */ +static VALUE cResumableParser_rest(VALUE self) { - JSON_Parser *json = ptr; - rb_gc_mark_maybe(json->Vsource); - rb_gc_mark_maybe(json->create_id); - rb_gc_mark_maybe(json->object_class); - rb_gc_mark_maybe(json->array_class); - rb_gc_mark_maybe(json->decimal_class); - rb_gc_mark_maybe(json->match_string); -} + JSON_ResumableParser *parser = cResumableParser_get(self); -static void JSON_free(void *ptr) -{ - JSON_Parser *json = ptr; - fbuffer_free(json->fbuffer); - ruby_xfree(json); + if (!parser->buffer) { + return rb_utf8_str_new("", 0); + } + + size_t offset = parser->state.cursor - parser->state.start; + const char *ptr; + rb_len_t len; + RSTRING_GETMEM(parser->buffer, ptr, len); + return rb_utf8_str_new(ptr + offset, len - offset); } -static size_t JSON_memsize(const void *ptr) +/* + * call-seq: eos? -> true or false + * + * Returns whether the internal buffer has been entirely consumed. + */ +static VALUE cResumableParser_eos_p(VALUE self) { - const JSON_Parser *json = ptr; - return sizeof(*json) + FBUFFER_CAPA(json->fbuffer); + JSON_ResumableParser *parser = cResumableParser_get(self); + return eos(&parser->state) ? Qtrue : Qfalse; } -#ifdef NEW_TYPEDDATA_WRAPPER -static const rb_data_type_t JSON_Parser_type = { - "JSON/Parser", - {JSON_mark, JSON_free, JSON_memsize,}, -#ifdef RUBY_TYPED_FREE_IMMEDIATELY - 0, 0, - RUBY_TYPED_FREE_IMMEDIATELY, -#endif -}; -#endif - -static VALUE cJSON_parser_s_allocate(VALUE klass) +/* + * call-seq: partial_value? -> true or false + * + * Returns whether a document is currently under construction: an unclosed + * container, a key awaiting its value, etc. + * + * It answers the same question as !partial_value.nil?, but as a + * cheap predicate on the parser's internal state, without materializing the + * partially parsed Ruby objects: + * parser << '{"a":1,' + * parser.parse # => false + * parser.partial_value? # => true + * + * A fully parsed document whose value hasn't been retrieved yet is not under + * construction: #value? returns true and #partial_value? returns false. + */ +static VALUE cResumableParser_partial_value_p(VALUE self) { - JSON_Parser *json; - VALUE obj = TypedData_Make_Struct(klass, JSON_Parser, &JSON_Parser_type, json); - json->fbuffer = fbuffer_alloc(0); - return obj; + JSON_ResumableParser *parser = cResumableParser_get(self); + + // Mirror of #value?: values on the stack while the document isn't DONE + // belong to a partially built document. A container whose first key or + // element hasn't been parsed yet has no frame nor value registered (the + // tokenizer rewinds to the container start on EOS), so that state is + // observable through the buffer (#eos?/#rest) instead, keeping this + // predicate consistent with #partial_value returning nil. + if (parser->value_stack.head > 0) { + json_frame *frame = json_frame_stack_peek(&parser->frames); + if (frame->phase != JSON_PHASE_DONE) { + return Qtrue; + } + } + return Qfalse; } /* - * call-seq: source() + * call-seq: parsed_bytes -> integer + * + * Returns the number of bytes parsed since the start of the current partial value. + * This is intended to be used for securing against untrusted input: + * + * loop do + * if parser.parsed_bytes > DOCUMENT_MAX_SIZE + * raise "document too large" + * end * - * Returns a copy of the current _source_ string, that was used to construct - * this Parser. + * parser << read_chunk + * while parser.parse + * process(parser.value) + * end + * end */ -static VALUE cParser_source(VALUE self) +static VALUE cResumableParser_parsed_bytes(VALUE self) { - GET_PARSER; - return rb_str_dup(json->Vsource); + JSON_ResumableParser *parser = cResumableParser_get(self); + return ULL2NUM(parser->parsed_bytes + parser->incomplete_bytes); } void Init_parser(void) { +#ifdef HAVE_RB_EXT_RACTOR_SAFE + rb_ext_ractor_safe(true); +#endif + #undef rb_intern rb_require("json/common"); mJSON = rb_define_module("JSON"); - mExt = rb_define_module_under(mJSON, "Ext"); - cParser = rb_define_class_under(mExt, "Parser", rb_cObject); + VALUE mExt = rb_define_module_under(mJSON, "Ext"); + VALUE cParserConfig = rb_define_class_under(mExt, "ParserConfig", rb_cObject); + + rb_global_variable(&eParserError); eParserError = rb_path2class("JSON::ParserError"); + + rb_global_variable(&eNestingError); eNestingError = rb_path2class("JSON::NestingError"); - rb_define_alloc_func(cParser, cJSON_parser_s_allocate); - rb_define_method(cParser, "initialize", cParser_initialize, -1); - rb_define_method(cParser, "parse", cParser_parse, 0); - rb_define_method(cParser, "source", cParser_source, 0); + rb_define_alloc_func(cParserConfig, cJSON_parser_s_allocate); + rb_define_private_method(cParserConfig, "initialize", cParserConfig_initialize, 1); + rb_define_method(cParserConfig, "parse", cParserConfig_parse, 1); + + VALUE cParser = rb_define_class_under(mExt, "Parser", rb_cObject); + rb_define_singleton_method(cParser, "parse", cParser_m_parse, 2); + + VALUE cResumableParser = rb_define_class_under(mJSON, "ResumableParser", rb_cObject); + rb_define_alloc_func(cResumableParser, cResumableParser_allocate); + rb_define_private_method(cResumableParser, "initialize", cResumableParser_initialize, -1); + rb_define_method(cResumableParser, "<<", cResumableParser_feed, 1); + rb_define_method(cResumableParser, "parse", cResumableParser_parse, 0); + rb_define_method(cResumableParser, "value", cResumableParser_value, 0); + rb_define_method(cResumableParser, "value?", cResumableParser_value_p, 0); + rb_define_method(cResumableParser, "partial_value", cResumableParser_partial_value, 0); + rb_define_method(cResumableParser, "partial_value?", cResumableParser_partial_value_p, 0); + rb_define_method(cResumableParser, "clear", cResumableParser_clear, 0); + rb_define_method(cResumableParser, "rest", cResumableParser_rest, 0); + rb_define_method(cResumableParser, "eos?", cResumableParser_eos_p, 0); + rb_define_method(cResumableParser, "parsed_bytes", cResumableParser_parsed_bytes, 0); + + rb_global_variable(&CNaN); CNaN = rb_const_get(mJSON, rb_intern("NaN")); + + rb_global_variable(&CInfinity); CInfinity = rb_const_get(mJSON, rb_intern("Infinity")); + + rb_global_variable(&CMinusInfinity); CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity")); - i_json_creatable_p = rb_intern("json_creatable?"); - i_json_create = rb_intern("json_create"); - i_create_id = rb_intern("create_id"); - i_create_additions = rb_intern("create_additions"); - i_chr = rb_intern("chr"); - i_max_nesting = rb_intern("max_nesting"); - i_allow_nan = rb_intern("allow_nan"); - i_symbolize_names = rb_intern("symbolize_names"); - i_object_class = rb_intern("object_class"); - i_array_class = rb_intern("array_class"); - i_decimal_class = rb_intern("decimal_class"); - i_match = rb_intern("match"); - i_match_string = rb_intern("match_string"); - i_key_p = rb_intern("key?"); - i_deep_const_get = rb_intern("deep_const_get"); - i_aset = rb_intern("[]="); - i_aref = rb_intern("[]"); - i_leftshift = rb_intern("<<"); + rb_global_variable(&Encoding_UTF_8); + Encoding_UTF_8 = rb_const_get(rb_path2class("Encoding"), rb_intern("UTF_8")); + + rb_global_variable(&JSON_empty_string); + JSON_empty_string = rb_obj_hide(rb_utf8_str_new("", 0)); + + sym_max_nesting = ID2SYM(rb_intern("max_nesting")); + sym_allow_nan = ID2SYM(rb_intern("allow_nan")); + sym_allow_trailing_comma = ID2SYM(rb_intern("allow_trailing_comma")); + sym_allow_comments = ID2SYM(rb_intern("allow_comments")); + sym_allow_control_characters = ID2SYM(rb_intern("allow_control_characters")); + sym_allow_invalid_escape = ID2SYM(rb_intern("allow_invalid_escape")); + sym_symbolize_names = ID2SYM(rb_intern("symbolize_names")); + sym_freeze = ID2SYM(rb_intern("freeze")); + sym_on_load = ID2SYM(rb_intern("on_load")); + sym_decimal_class = ID2SYM(rb_intern("decimal_class")); + sym_allow_duplicate_key = ID2SYM(rb_intern("allow_duplicate_key")); + i_new = rb_intern("new"); - i_BigDecimal = rb_intern("BigDecimal"); -} + i_try_convert = rb_intern("try_convert"); +#ifndef HAVE_RB_STR_TO_INTERNED_STR + i_uminus = rb_intern("-@"); +#endif + i_encode = rb_intern("encode"); + i_at_line = rb_intern("@line"); + i_at_column = rb_intern("@column"); + i_at_json_path = rb_intern("@json_path"); -/* - * Local variables: - * mode: c - * c-file-style: ruby - * indent-tabs-mode: nil - * End: - */ + binary_encindex = rb_ascii8bit_encindex(); + utf8_encindex = rb_utf8_encindex(); + enc_utf8 = rb_utf8_encoding(); + +#ifdef HAVE_SIMD + simd_impl = find_simd_implementation(); +#endif +} diff --git a/ext/json/ext/parser/parser.h b/ext/json/ext/parser/parser.h deleted file mode 100644 index e6cf77902..000000000 --- a/ext/json/ext/parser/parser.h +++ /dev/null @@ -1,91 +0,0 @@ -#ifndef _PARSER_H_ -#define _PARSER_H_ - -#include "ruby.h" - -#ifndef HAVE_RUBY_RE_H -#include "re.h" -#endif - -#ifdef HAVE_RUBY_ST_H -#include "ruby/st.h" -#else -#include "st.h" -#endif - -#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key)) - -/* unicode */ - -typedef unsigned long UTF32; /* at least 32 bits */ -typedef unsigned short UTF16; /* at least 16 bits */ -typedef unsigned char UTF8; /* typically 8 bits */ - -#define UNI_REPLACEMENT_CHAR (UTF32)0x0000FFFD -#define UNI_SUR_HIGH_START (UTF32)0xD800 -#define UNI_SUR_HIGH_END (UTF32)0xDBFF -#define UNI_SUR_LOW_START (UTF32)0xDC00 -#define UNI_SUR_LOW_END (UTF32)0xDFFF - -typedef struct JSON_ParserStruct { - VALUE Vsource; - char *source; - long len; - char *memo; - VALUE create_id; - int max_nesting; - int allow_nan; - int parsing_name; - int symbolize_names; - VALUE object_class; - VALUE array_class; - VALUE decimal_class; - int create_additions; - VALUE match_string; - FBuffer *fbuffer; -} JSON_Parser; - -#define GET_PARSER \ - GET_PARSER_INIT; \ - if (!json->Vsource) rb_raise(rb_eTypeError, "uninitialized instance") -#define GET_PARSER_INIT \ - JSON_Parser *json; \ - TypedData_Get_Struct(self, JSON_Parser, &JSON_Parser_type, json) - -#define MinusInfinity "-Infinity" -#define EVIL 0x666 - -static UTF32 unescape_unicode(const unsigned char *p); -static int convert_UTF32_to_UTF8(char *buf, UTF32 ch); -static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting); -static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting); -static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result); -static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result); -static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting); -static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd); -static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result); -static VALUE convert_encoding(VALUE source); -static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self); -static VALUE cParser_parse(VALUE self); -static void JSON_mark(void *json); -static void JSON_free(void *json); -static VALUE cJSON_parser_s_allocate(VALUE klass); -static VALUE cParser_source(VALUE self); -#ifndef ZALLOC -#define ZALLOC(type) ((type *)ruby_zalloc(sizeof(type))) -static inline void *ruby_zalloc(size_t n) -{ - void *p = ruby_xmalloc(n); - memset(p, 0, n); - return p; -} -#endif -#ifdef TypedData_Make_Struct -static const rb_data_type_t JSON_Parser_type; -#define NEW_TYPEDDATA_WRAPPER 1 -#else -#define TypedData_Make_Struct(klass, type, ignore, json) Data_Make_Struct(klass, type, NULL, JSON_free, json) -#define TypedData_Get_Struct(self, JSON_Parser, ignore, json) Data_Get_Struct(self, JSON_Parser, json) -#endif - -#endif diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl deleted file mode 100644 index e7738d656..000000000 --- a/ext/json/ext/parser/parser.rl +++ /dev/null @@ -1,889 +0,0 @@ -#include "../fbuffer/fbuffer.h" -#include "parser.h" - -#if defined HAVE_RUBY_ENCODING_H -# define EXC_ENCODING rb_utf8_encoding(), -# ifndef HAVE_RB_ENC_RAISE -static void -enc_raise(rb_encoding *enc, VALUE exc, const char *fmt, ...) -{ - va_list args; - VALUE mesg; - - va_start(args, fmt); - mesg = rb_enc_vsprintf(enc, fmt, args); - va_end(args); - - rb_exc_raise(rb_exc_new3(exc, mesg)); -} -# define rb_enc_raise enc_raise -# endif -#else -# define EXC_ENCODING /* nothing */ -# define rb_enc_raise rb_raise -#endif - -/* unicode */ - -static const char digit_values[256] = { - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, -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, - 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1 -}; - -static UTF32 unescape_unicode(const unsigned char *p) -{ - char b; - UTF32 result = 0; - b = digit_values[p[0]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[1]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[2]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - b = digit_values[p[3]]; - if (b < 0) return UNI_REPLACEMENT_CHAR; - result = (result << 4) | (unsigned char)b; - return result; -} - -static int convert_UTF32_to_UTF8(char *buf, UTF32 ch) -{ - int len = 1; - if (ch <= 0x7F) { - buf[0] = (char) ch; - } else if (ch <= 0x07FF) { - buf[0] = (char) ((ch >> 6) | 0xC0); - buf[1] = (char) ((ch & 0x3F) | 0x80); - len++; - } else if (ch <= 0xFFFF) { - buf[0] = (char) ((ch >> 12) | 0xE0); - buf[1] = (char) (((ch >> 6) & 0x3F) | 0x80); - buf[2] = (char) ((ch & 0x3F) | 0x80); - len += 2; - } else if (ch <= 0x1fffff) { - buf[0] =(char) ((ch >> 18) | 0xF0); - buf[1] =(char) (((ch >> 12) & 0x3F) | 0x80); - buf[2] =(char) (((ch >> 6) & 0x3F) | 0x80); - buf[3] =(char) ((ch & 0x3F) | 0x80); - len += 3; - } else { - buf[0] = '?'; - } - return len; -} - -static VALUE mJSON, mExt, cParser, eParserError, eNestingError; -static VALUE CNaN, CInfinity, CMinusInfinity; -static VALUE cBigDecimal = Qundef; - -static ID i_json_creatable_p, i_json_create, i_create_id, i_create_additions, - i_chr, i_max_nesting, i_allow_nan, i_symbolize_names, - i_object_class, i_array_class, i_decimal_class, i_key_p, - i_deep_const_get, i_match, i_match_string, i_aset, i_aref, - i_leftshift, i_new, i_BigDecimal; - -%%{ - machine JSON_common; - - cr = '\n'; - cr_neg = [^\n]; - ws = [ \t\r\n]; - c_comment = '/*' ( any* - (any* '*/' any* ) ) '*/'; - cpp_comment = '//' cr_neg* cr; - comment = c_comment | cpp_comment; - ignore = ws | comment; - name_separator = ':'; - value_separator = ','; - Vnull = 'null'; - Vfalse = 'false'; - Vtrue = 'true'; - VNaN = 'NaN'; - VInfinity = 'Infinity'; - VMinusInfinity = '-Infinity'; - begin_value = [nft\"\-\[\{NI] | digit; - begin_object = '{'; - end_object = '}'; - begin_array = '['; - end_array = ']'; - begin_string = '"'; - begin_name = begin_string; - begin_number = digit | '-'; -}%% - -%%{ - machine JSON_object; - include JSON_common; - - write data; - - action parse_value { - VALUE v = Qnil; - char *np = JSON_parse_value(json, fpc, pe, &v, current_nesting); - if (np == NULL) { - fhold; fbreak; - } else { - if (NIL_P(json->object_class)) { - rb_hash_aset(*result, last_name, v); - } else { - rb_funcall(*result, i_aset, 2, last_name, v); - } - fexec np; - } - } - - action parse_name { - char *np; - json->parsing_name = 1; - np = JSON_parse_string(json, fpc, pe, &last_name); - json->parsing_name = 0; - if (np == NULL) { fhold; fbreak; } else fexec np; - } - - action exit { fhold; fbreak; } - - pair = ignore* begin_name >parse_name ignore* name_separator ignore* begin_value >parse_value; - next_pair = ignore* value_separator pair; - - main := ( - begin_object - (pair (next_pair)*)? ignore* - end_object - ) @exit; -}%% - -static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - VALUE last_name = Qnil; - VALUE object_class = json->object_class; - - if (json->max_nesting && current_nesting > json->max_nesting) { - rb_raise(eNestingError, "nesting of %d is too deep", current_nesting); - } - - *result = NIL_P(object_class) ? rb_hash_new() : rb_class_new_instance(0, 0, object_class); - - %% write init; - %% write exec; - - if (cs >= JSON_object_first_final) { - if (json->create_additions) { - VALUE klassname; - if (NIL_P(json->object_class)) { - klassname = rb_hash_aref(*result, json->create_id); - } else { - klassname = rb_funcall(*result, i_aref, 1, json->create_id); - } - if (!NIL_P(klassname)) { - VALUE klass = rb_funcall(mJSON, i_deep_const_get, 1, klassname); - if (RTEST(rb_funcall(klass, i_json_creatable_p, 0))) { - *result = rb_funcall(klass, i_json_create, 1, *result); - } - } - } - return p + 1; - } else { - return NULL; - } -} - - -%%{ - machine JSON_value; - include JSON_common; - - write data; - - action parse_null { - *result = Qnil; - } - action parse_false { - *result = Qfalse; - } - action parse_true { - *result = Qtrue; - } - action parse_nan { - if (json->allow_nan) { - *result = CNaN; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p - 2); - } - } - action parse_infinity { - if (json->allow_nan) { - *result = CInfinity; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p - 8); - } - } - action parse_string { - char *np = JSON_parse_string(json, fpc, pe, result); - if (np == NULL) { fhold; fbreak; } else fexec np; - } - - action parse_number { - char *np; - if(pe > fpc + 8 && !strncmp(MinusInfinity, fpc, 9)) { - if (json->allow_nan) { - *result = CMinusInfinity; - fexec p + 10; - fhold; fbreak; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - } - } - np = JSON_parse_float(json, fpc, pe, result); - if (np != NULL) fexec np; - np = JSON_parse_integer(json, fpc, pe, result); - if (np != NULL) fexec np; - fhold; fbreak; - } - - action parse_array { - char *np; - np = JSON_parse_array(json, fpc, pe, result, current_nesting + 1); - if (np == NULL) { fhold; fbreak; } else fexec np; - } - - action parse_object { - char *np; - np = JSON_parse_object(json, fpc, pe, result, current_nesting + 1); - if (np == NULL) { fhold; fbreak; } else fexec np; - } - - action exit { fhold; fbreak; } - -main := ignore* ( - Vnull @parse_null | - Vfalse @parse_false | - Vtrue @parse_true | - VNaN @parse_nan | - VInfinity @parse_infinity | - begin_number >parse_number | - begin_string >parse_string | - begin_array >parse_array | - begin_object >parse_object - ) ignore* %*exit; -}%% - -static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - - %% write init; - %% write exec; - - if (cs >= JSON_value_first_final) { - return p; - } else { - return NULL; - } -} - -%%{ - machine JSON_integer; - - write data; - - action exit { fhold; fbreak; } - - main := '-'? ('0' | [1-9][0-9]*) (^[0-9]? @exit); -}%% - -static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - - %% write init; - json->memo = p; - %% write exec; - - if (cs >= JSON_integer_first_final) { - long len = p - json->memo; - fbuffer_clear(json->fbuffer); - fbuffer_append(json->fbuffer, json->memo, len); - fbuffer_append_char(json->fbuffer, '\0'); - *result = rb_cstr2inum(FBUFFER_PTR(json->fbuffer), 10); - return p + 1; - } else { - return NULL; - } -} - -%%{ - machine JSON_float; - include JSON_common; - - write data; - - action exit { fhold; fbreak; } - - main := '-'? ( - (('0' | [1-9][0-9]*) '.' [0-9]+ ([Ee] [+\-]?[0-9]+)?) - | (('0' | [1-9][0-9]*) ([Ee] [+\-]?[0-9]+)) - ) (^[0-9Ee.\-]? @exit ); -}%% - -static int is_bigdecimal_class(VALUE obj) -{ - if (cBigDecimal == Qundef) { - if (rb_const_defined(rb_cObject, i_BigDecimal)) { - cBigDecimal = rb_const_get_at(rb_cObject, i_BigDecimal); - } - else { - return 0; - } - } - return obj == cBigDecimal; -} - -static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - - %% write init; - json->memo = p; - %% write exec; - - if (cs >= JSON_float_first_final) { - long len = p - json->memo; - fbuffer_clear(json->fbuffer); - fbuffer_append(json->fbuffer, json->memo, len); - fbuffer_append_char(json->fbuffer, '\0'); - if (NIL_P(json->decimal_class)) { - *result = rb_float_new(rb_cstr_to_dbl(FBUFFER_PTR(json->fbuffer), 1)); - } else { - VALUE text; - text = rb_str_new2(FBUFFER_PTR(json->fbuffer)); - if (is_bigdecimal_class(json->decimal_class)) { - *result = rb_funcall(Qnil, i_BigDecimal, 1, text); - } else { - *result = rb_funcall(json->decimal_class, i_new, 1, text); - } - } - return p + 1; - } else { - return NULL; - } -} - - -%%{ - machine JSON_array; - include JSON_common; - - write data; - - action parse_value { - VALUE v = Qnil; - char *np = JSON_parse_value(json, fpc, pe, &v, current_nesting); - if (np == NULL) { - fhold; fbreak; - } else { - if (NIL_P(json->array_class)) { - rb_ary_push(*result, v); - } else { - rb_funcall(*result, i_leftshift, 1, v); - } - fexec np; - } - } - - action exit { fhold; fbreak; } - - next_element = value_separator ignore* begin_value >parse_value; - - main := begin_array ignore* - ((begin_value >parse_value ignore*) - (ignore* next_element ignore*)*)? - end_array @exit; -}%% - -static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *result, int current_nesting) -{ - int cs = EVIL; - VALUE array_class = json->array_class; - - if (json->max_nesting && current_nesting > json->max_nesting) { - rb_raise(eNestingError, "nesting of %d is too deep", current_nesting); - } - *result = NIL_P(array_class) ? rb_ary_new() : rb_class_new_instance(0, 0, array_class); - - %% write init; - %% write exec; - - if(cs >= JSON_array_first_final) { - return p + 1; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - return NULL; - } -} - -static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd) -{ - char *p = string, *pe = string, *unescape; - int unescape_len; - char buf[4]; - - while (pe < stringEnd) { - if (*pe == '\\') { - unescape = (char *) "?"; - unescape_len = 1; - if (pe > p) rb_str_buf_cat(result, p, pe - p); - switch (*++pe) { - case 'n': - unescape = (char *) "\n"; - break; - case 'r': - unescape = (char *) "\r"; - break; - case 't': - unescape = (char *) "\t"; - break; - case '"': - unescape = (char *) "\""; - break; - case '\\': - unescape = (char *) "\\"; - break; - case 'b': - unescape = (char *) "\b"; - break; - case 'f': - unescape = (char *) "\f"; - break; - case 'u': - if (pe > stringEnd - 4) { - rb_enc_raise( - EXC_ENCODING eParserError, - "%u: incomplete unicode character escape sequence at '%s'", __LINE__, p - ); - } else { - UTF32 ch = unescape_unicode((unsigned char *) ++pe); - pe += 3; - if (UNI_SUR_HIGH_START == (ch & 0xFC00)) { - pe++; - if (pe > stringEnd - 6) { - rb_enc_raise( - EXC_ENCODING eParserError, - "%u: incomplete surrogate pair at '%s'", __LINE__, p - ); - } - if (pe[0] == '\\' && pe[1] == 'u') { - UTF32 sur = unescape_unicode((unsigned char *) pe + 2); - ch = (((ch & 0x3F) << 10) | ((((ch >> 6) & 0xF) + 1) << 16) - | (sur & 0x3FF)); - pe += 5; - } else { - unescape = (char *) "?"; - break; - } - } - unescape_len = convert_UTF32_to_UTF8(buf, ch); - unescape = buf; - } - break; - default: - p = pe; - continue; - } - rb_str_buf_cat(result, unescape, unescape_len); - p = ++pe; - } else { - pe++; - } - } - rb_str_buf_cat(result, p, pe - p); - return result; -} - -%%{ - machine JSON_string; - include JSON_common; - - write data; - - action parse_string { - *result = json_string_unescape(*result, json->memo + 1, p); - if (NIL_P(*result)) { - fhold; - fbreak; - } else { - FORCE_UTF8(*result); - fexec p + 1; - } - } - - action exit { fhold; fbreak; } - - main := '"' ((^([\"\\] | 0..0x1f) | '\\'[\"\\/bfnrt] | '\\u'[0-9a-fA-F]{4} | '\\'^([\"\\/bfnrtu]|0..0x1f))* %parse_string) '"' @exit; -}%% - -static int -match_i(VALUE regexp, VALUE klass, VALUE memo) -{ - if (regexp == Qundef) return ST_STOP; - if (RTEST(rb_funcall(klass, i_json_creatable_p, 0)) && - RTEST(rb_funcall(regexp, i_match, 1, rb_ary_entry(memo, 0)))) { - rb_ary_push(memo, klass); - return ST_STOP; - } - return ST_CONTINUE; -} - -static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *result) -{ - int cs = EVIL; - VALUE match_string; - - *result = rb_str_buf_new(0); - %% write init; - json->memo = p; - %% write exec; - - if (json->create_additions && RTEST(match_string = json->match_string)) { - VALUE klass; - VALUE memo = rb_ary_new2(2); - rb_ary_push(memo, *result); - rb_hash_foreach(match_string, match_i, memo); - klass = rb_ary_entry(memo, 1); - if (RTEST(klass)) { - *result = rb_funcall(klass, i_json_create, 1, *result); - } - } - - if (json->symbolize_names && json->parsing_name) { - *result = rb_str_intern(*result); - } else if (RB_TYPE_P(*result, T_STRING)) { - rb_str_resize(*result, RSTRING_LEN(*result)); - } - if (cs >= JSON_string_first_final) { - return p + 1; - } else { - return NULL; - } -} - -/* - * Document-class: JSON::Ext::Parser - * - * This is the JSON parser implemented as a C extension. It can be configured - * to be used by setting - * - * JSON.parser = JSON::Ext::Parser - * - * with the method parser= in JSON. - * - */ - -static VALUE convert_encoding(VALUE source) -{ -#ifdef HAVE_RUBY_ENCODING_H - rb_encoding *enc = rb_enc_get(source); - if (enc == rb_ascii8bit_encoding()) { - if (OBJ_FROZEN(source)) { - source = rb_str_dup(source); - } - FORCE_UTF8(source); - } else { - source = rb_str_conv_enc(source, rb_enc_get(source), rb_utf8_encoding()); - } -#endif - return source; -} - -/* - * call-seq: new(source, opts => {}) - * - * Creates a new JSON::Ext::Parser instance for the string _source_. - * - * Creates a new JSON::Ext::Parser instance for the string _source_. - * - * It will be configured by the _opts_ hash. _opts_ can have the following - * keys: - * - * _opts_ can have the following keys: - * * *max_nesting*: The maximum depth of nesting allowed in the parsed data - * structures. Disable depth checking with :max_nesting => false|nil|0, it - * defaults to 100. - * * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in - * defiance of RFC 4627 to be parsed by the Parser. This option defaults to - * false. - * * *symbolize_names*: If set to true, returns symbols for the names - * (keys) in a JSON object. Otherwise strings are returned, which is - * also the default. It's not possible to use this option in - * conjunction with the *create_additions* option. - * * *create_additions*: If set to false, the Parser doesn't create - * additions even if a matching class and create_id was found. This option - * defaults to false. - * * *object_class*: Defaults to Hash - * * *array_class*: Defaults to Array - */ -static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self) -{ - VALUE source, opts; - GET_PARSER_INIT; - - if (json->Vsource) { - rb_raise(rb_eTypeError, "already initialized instance"); - } -#ifdef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH - rb_scan_args(argc, argv, "1:", &source, &opts); -#else - rb_scan_args(argc, argv, "11", &source, &opts); -#endif - if (!NIL_P(opts)) { -#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH - opts = rb_convert_type(opts, T_HASH, "Hash", "to_hash"); - if (NIL_P(opts)) { - rb_raise(rb_eArgError, "opts needs to be like a hash"); - } else { -#endif - VALUE tmp = ID2SYM(i_max_nesting); - if (option_given_p(opts, tmp)) { - VALUE max_nesting = rb_hash_aref(opts, tmp); - if (RTEST(max_nesting)) { - Check_Type(max_nesting, T_FIXNUM); - json->max_nesting = FIX2INT(max_nesting); - } else { - json->max_nesting = 0; - } - } else { - json->max_nesting = 100; - } - tmp = ID2SYM(i_allow_nan); - if (option_given_p(opts, tmp)) { - json->allow_nan = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0; - } else { - json->allow_nan = 0; - } - tmp = ID2SYM(i_symbolize_names); - if (option_given_p(opts, tmp)) { - json->symbolize_names = RTEST(rb_hash_aref(opts, tmp)) ? 1 : 0; - } else { - json->symbolize_names = 0; - } - tmp = ID2SYM(i_create_additions); - if (option_given_p(opts, tmp)) { - json->create_additions = RTEST(rb_hash_aref(opts, tmp)); - } else { - json->create_additions = 0; - } - if (json->symbolize_names && json->create_additions) { - rb_raise(rb_eArgError, - "options :symbolize_names and :create_additions cannot be " - " used in conjunction"); - } - tmp = ID2SYM(i_create_id); - if (option_given_p(opts, tmp)) { - json->create_id = rb_hash_aref(opts, tmp); - } else { - json->create_id = rb_funcall(mJSON, i_create_id, 0); - } - tmp = ID2SYM(i_object_class); - if (option_given_p(opts, tmp)) { - json->object_class = rb_hash_aref(opts, tmp); - } else { - json->object_class = Qnil; - } - tmp = ID2SYM(i_array_class); - if (option_given_p(opts, tmp)) { - json->array_class = rb_hash_aref(opts, tmp); - } else { - json->array_class = Qnil; - } - tmp = ID2SYM(i_decimal_class); - if (option_given_p(opts, tmp)) { - json->decimal_class = rb_hash_aref(opts, tmp); - } else { - json->decimal_class = Qnil; - } - tmp = ID2SYM(i_match_string); - if (option_given_p(opts, tmp)) { - VALUE match_string = rb_hash_aref(opts, tmp); - json->match_string = RTEST(match_string) ? match_string : Qnil; - } else { - json->match_string = Qnil; - } -#ifndef HAVE_RB_SCAN_ARGS_OPTIONAL_HASH - } -#endif - } else { - json->max_nesting = 100; - json->allow_nan = 0; - json->create_additions = 1; - json->create_id = rb_funcall(mJSON, i_create_id, 0); - json->object_class = Qnil; - json->array_class = Qnil; - json->decimal_class = Qnil; - } - source = convert_encoding(StringValue(source)); - StringValue(source); - json->len = RSTRING_LEN(source); - json->source = RSTRING_PTR(source);; - json->Vsource = source; - return self; -} - -%%{ - machine JSON; - - write data; - - include JSON_common; - - action parse_value { - char *np = JSON_parse_value(json, fpc, pe, &result, 0); - if (np == NULL) { fhold; fbreak; } else fexec np; - } - - main := ignore* ( - begin_value >parse_value - ) ignore*; -}%% - -/* - * call-seq: parse() - * - * Parses the current JSON text _source_ and returns the complete data - * structure as a result. - */ -static VALUE cParser_parse(VALUE self) -{ - char *p, *pe; - int cs = EVIL; - VALUE result = Qnil; - GET_PARSER; - - %% write init; - p = json->source; - pe = p + json->len; - %% write exec; - - if (cs >= JSON_first_final && p == pe) { - return result; - } else { - rb_enc_raise(EXC_ENCODING eParserError, "%u: unexpected token at '%s'", __LINE__, p); - return Qnil; - } -} - -static void JSON_mark(void *ptr) -{ - JSON_Parser *json = ptr; - rb_gc_mark_maybe(json->Vsource); - rb_gc_mark_maybe(json->create_id); - rb_gc_mark_maybe(json->object_class); - rb_gc_mark_maybe(json->array_class); - rb_gc_mark_maybe(json->decimal_class); - rb_gc_mark_maybe(json->match_string); -} - -static void JSON_free(void *ptr) -{ - JSON_Parser *json = ptr; - fbuffer_free(json->fbuffer); - ruby_xfree(json); -} - -static size_t JSON_memsize(const void *ptr) -{ - const JSON_Parser *json = ptr; - return sizeof(*json) + FBUFFER_CAPA(json->fbuffer); -} - -#ifdef NEW_TYPEDDATA_WRAPPER -static const rb_data_type_t JSON_Parser_type = { - "JSON/Parser", - {JSON_mark, JSON_free, JSON_memsize,}, -#ifdef RUBY_TYPED_FREE_IMMEDIATELY - 0, 0, - RUBY_TYPED_FREE_IMMEDIATELY, -#endif -}; -#endif - -static VALUE cJSON_parser_s_allocate(VALUE klass) -{ - JSON_Parser *json; - VALUE obj = TypedData_Make_Struct(klass, JSON_Parser, &JSON_Parser_type, json); - json->fbuffer = fbuffer_alloc(0); - return obj; -} - -/* - * call-seq: source() - * - * Returns a copy of the current _source_ string, that was used to construct - * this Parser. - */ -static VALUE cParser_source(VALUE self) -{ - GET_PARSER; - return rb_str_dup(json->Vsource); -} - -void Init_parser(void) -{ -#undef rb_intern - rb_require("json/common"); - mJSON = rb_define_module("JSON"); - mExt = rb_define_module_under(mJSON, "Ext"); - cParser = rb_define_class_under(mExt, "Parser", rb_cObject); - eParserError = rb_path2class("JSON::ParserError"); - eNestingError = rb_path2class("JSON::NestingError"); - rb_define_alloc_func(cParser, cJSON_parser_s_allocate); - rb_define_method(cParser, "initialize", cParser_initialize, -1); - rb_define_method(cParser, "parse", cParser_parse, 0); - rb_define_method(cParser, "source", cParser_source, 0); - - CNaN = rb_const_get(mJSON, rb_intern("NaN")); - CInfinity = rb_const_get(mJSON, rb_intern("Infinity")); - CMinusInfinity = rb_const_get(mJSON, rb_intern("MinusInfinity")); - - i_json_creatable_p = rb_intern("json_creatable?"); - i_json_create = rb_intern("json_create"); - i_create_id = rb_intern("create_id"); - i_create_additions = rb_intern("create_additions"); - i_chr = rb_intern("chr"); - i_max_nesting = rb_intern("max_nesting"); - i_allow_nan = rb_intern("allow_nan"); - i_symbolize_names = rb_intern("symbolize_names"); - i_object_class = rb_intern("object_class"); - i_array_class = rb_intern("array_class"); - i_decimal_class = rb_intern("decimal_class"); - i_match = rb_intern("match"); - i_match_string = rb_intern("match_string"); - i_key_p = rb_intern("key?"); - i_deep_const_get = rb_intern("deep_const_get"); - i_aset = rb_intern("[]="); - i_aref = rb_intern("[]"); - i_leftshift = rb_intern("<<"); - i_new = rb_intern("new"); - i_BigDecimal = rb_intern("BigDecimal"); -} - -/* - * Local variables: - * mode: c - * c-file-style: ruby - * indent-tabs-mode: nil - * End: - */ diff --git a/ext/json/ext/simd/conf.rb b/ext/json/ext/simd/conf.rb new file mode 100644 index 000000000..9b87473d5 --- /dev/null +++ b/ext/json/ext/simd/conf.rb @@ -0,0 +1,21 @@ +case RbConfig::CONFIG['host_cpu'] +when /^(arm|aarch64)/ + # Try to compile a small program using NEON instructions + header, type, init = 'arm_neon.h', 'uint8x16_t', 'vdupq_n_u8(32)' +when /^(x86_64|x64)/ + header, type, init = 'x86intrin.h', '__m128i', '_mm_set1_epi8(32)' +end +if header + if have_header(header) && try_compile(<<~SRC, '-Werror=implicit-function-declaration') + #{cpp_include(header)} + int main(int argc, char **argv) { + #{type} test = #{init}; + if (argc > 100000) printf("%p", &test); + return 0; + } + SRC + $defs.push("-DJSON_ENABLE_SIMD") + else + puts "Disable SIMD" + end +end diff --git a/ext/json/ext/simd/simd.h b/ext/json/ext/simd/simd.h new file mode 100644 index 000000000..2f3f838a9 --- /dev/null +++ b/ext/json/ext/simd/simd.h @@ -0,0 +1,200 @@ +#include "../json.h" + +typedef enum { + SIMD_NONE, + SIMD_NEON, + SIMD_SSE2 +} SIMD_Implementation; + +#ifndef __has_builtin // Optional of course. + #define __has_builtin(x) 0 // Compatibility with non-clang compilers. +#endif + +#ifdef __clang__ +# if __has_builtin(__builtin_ctzll) +# define HAVE_BUILTIN_CTZLL 1 +# else +# define HAVE_BUILTIN_CTZLL 0 +# endif +#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAVE_BUILTIN_CTZLL 1 +#else +# define HAVE_BUILTIN_CTZLL 0 +#endif + +static inline uint32_t trailing_zeros64(uint64_t input) +{ + JSON_ASSERT(input > 0); // __builtin_ctz(0) is undefined behavior + +#if HAVE_BUILTIN_CTZLL + return __builtin_ctzll(input); +#else + uint32_t trailing_zeros = 0; + uint64_t temp = input; + while ((temp & 1) == 0 && temp > 0) { + trailing_zeros++; + temp >>= 1; + } + return trailing_zeros; +#endif +} + +static inline int trailing_zeros(int input) +{ + JSON_ASSERT(input > 0); // __builtin_ctz(0) is undefined behavior + +#if HAVE_BUILTIN_CTZLL + return __builtin_ctz(input); +#else + int trailing_zeros = 0; + int temp = input; + while ((temp & 1) == 0 && temp > 0) { + trailing_zeros++; + temp >>= 1; + } + return trailing_zeros; +#endif +} + +#ifdef JSON_ENABLE_SIMD + +#define SIMD_MINIMUM_THRESHOLD 4 + +ALWAYS_INLINE(static) void json_fast_memcpy16(char *dst, const char *src, size_t len) +{ + RBIMPL_ASSERT_OR_ASSUME(len < 16); + RBIMPL_ASSERT_OR_ASSUME(len >= SIMD_MINIMUM_THRESHOLD); // 4 +#if defined(__has_builtin) && __has_builtin(__builtin_memcpy) + // If __builtin_memcpy is available, use it to copy between SIMD_MINIMUM_THRESHOLD (4) and vec_len-1 (15) bytes. + // These copies overlap. The first copy will copy the first 8 (or 4) bytes. The second copy will copy + // the last 8 (or 4) bytes but overlap with the first copy. The overlapping bytes will be in the correct + // position in both copies. + + // Please do not attempt to replace __builtin_memcpy with memcpy without profiling and/or looking at the + // generated assembly. On clang-specifically (tested on Apple clang version 17.0.0 (clang-1700.0.13.3)), + // when using memcpy, the compiler will notice the only difference is a 4 or 8 and generate a conditional + // select instruction instead of direct loads and stores with a branch. This ends up slower than the branch + // plus two loads and stores generated when using __builtin_memcpy. + if (len >= 8) { + __builtin_memcpy(dst, src, 8); + __builtin_memcpy(dst + len - 8, src + len - 8, 8); + } else { + __builtin_memcpy(dst, src, 4); + __builtin_memcpy(dst + len - 4, src + len - 4, 4); + } +#else + MEMCPY(dst, src, char, len); +#endif +} + +#if defined(__ARM_NEON) || defined(__ARM_NEON__) || defined(__aarch64__) || defined(_M_ARM64) +#include + +#define FIND_SIMD_IMPLEMENTATION_DEFINED 1 +static inline SIMD_Implementation find_simd_implementation(void) +{ + return SIMD_NEON; +} + +#define HAVE_SIMD 1 +#define HAVE_SIMD_NEON 1 + +// See: https://community.arm.com/arm-community-blogs/b/servers-and-cloud-computing-blog/posts/porting-x86-vector-bitmask-optimizations-to-arm-neon +ALWAYS_INLINE(static) uint64_t neon_match_mask(uint8x16_t matches) +{ + const uint8x8_t res = vshrn_n_u16(vreinterpretq_u16_u8(matches), 4); + const uint64_t mask = vget_lane_u64(vreinterpret_u64_u8(res), 0); + return mask & 0x8888888888888888ull; +} + +ALWAYS_INLINE(static) uint64_t compute_chunk_mask_neon(const char *ptr) +{ + uint8x16_t chunk = vld1q_u8((const unsigned char *)ptr); + + // Trick: c < 32 || c == 34 can be factored as c ^ 2 < 33 + // https://lemire.me/blog/2025/04/13/detect-control-characters-quotes-and-backslashes-efficiently-using-swar/ + const uint8x16_t too_low_or_dbl_quote = vcltq_u8(veorq_u8(chunk, vdupq_n_u8(2)), vdupq_n_u8(33)); + + uint8x16_t has_backslash = vceqq_u8(chunk, vdupq_n_u8('\\')); + uint8x16_t needs_escape = vorrq_u8(too_low_or_dbl_quote, has_backslash); + return neon_match_mask(needs_escape); +} + +ALWAYS_INLINE(static) int string_scan_simd_neon(const char **ptr, const char *end, uint64_t *mask) +{ + while (*ptr + sizeof(uint8x16_t) <= end) { + uint64_t chunk_mask = compute_chunk_mask_neon(*ptr); + if (chunk_mask) { + *mask = chunk_mask; + return 1; + } + *ptr += sizeof(uint8x16_t); + } + return 0; +} + +#endif /* ARM Neon Support.*/ + +#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64) + +#ifdef HAVE_X86INTRIN_H +#include + +#define HAVE_SIMD 1 +#define HAVE_SIMD_SSE2 1 + +#define FIND_SIMD_IMPLEMENTATION_DEFINED 1 + +#if defined(__clang__) || defined(__GNUC__) +#define TARGET_SSE2 __attribute__((target("sse2"))) +#else +#define TARGET_SSE2 +#endif + +#define _mm_cmpge_epu8(a, b) _mm_cmpeq_epi8(_mm_max_epu8(a, b), a) +#define _mm_cmple_epu8(a, b) _mm_cmpge_epu8(b, a) +#define _mm_cmpgt_epu8(a, b) _mm_xor_si128(_mm_cmple_epu8(a, b), _mm_set1_epi8(-1)) +#define _mm_cmplt_epu8(a, b) _mm_cmpgt_epu8(b, a) + +ALWAYS_INLINE(static) TARGET_SSE2 int compute_chunk_mask_sse2(const char *ptr) +{ + __m128i chunk = _mm_loadu_si128((__m128i const*)ptr); + // Trick: c < 32 || c == 34 can be factored as c ^ 2 < 33 + // https://lemire.me/blog/2025/04/13/detect-control-characters-quotes-and-backslashes-efficiently-using-swar/ + __m128i too_low_or_dbl_quote = _mm_cmplt_epu8(_mm_xor_si128(chunk, _mm_set1_epi8(2)), _mm_set1_epi8(33)); + __m128i has_backslash = _mm_cmpeq_epi8(chunk, _mm_set1_epi8('\\')); + __m128i needs_escape = _mm_or_si128(too_low_or_dbl_quote, has_backslash); + return _mm_movemask_epi8(needs_escape); +} + +ALWAYS_INLINE(static) TARGET_SSE2 int string_scan_simd_sse2(const char **ptr, const char *end, int *mask) +{ + while (*ptr + sizeof(__m128i) <= end) { + int chunk_mask = compute_chunk_mask_sse2(*ptr); + if (chunk_mask) { + *mask = chunk_mask; + return 1; + } + *ptr += sizeof(__m128i); + } + + return 0; +} + +static inline SIMD_Implementation find_simd_implementation(void) +{ + // SSE2 is part of the x86-64 baseline. + return SIMD_SSE2; +} + +#endif /* HAVE_X86INTRIN_H */ +#endif /* X86_64 Support */ + +#endif /* JSON_ENABLE_SIMD */ + +#ifndef FIND_SIMD_IMPLEMENTATION_DEFINED +static inline SIMD_Implementation find_simd_implementation(void) +{ + return SIMD_NONE; +} +#endif diff --git a/ext/json/ext/vendor/fast_float_parser.h b/ext/json/ext/vendor/fast_float_parser.h new file mode 100644 index 000000000..6e43b254c --- /dev/null +++ b/ext/json/ext/vendor/fast_float_parser.h @@ -0,0 +1,814 @@ +/* Eisel-Lemire decimal->double, ported from fast_float: + * include/fast_float/decimal_to_binary.h, the compute_float> + * + compute_product_approximation routines. + * + * Algorithm authors: Michael Eisel (original approach) and Daniel Lemire + * (formalization, proof, and the fast_float implementation) — hence "Eisel-Lemire". + * + * Copyright (c) 2021 The fast_float authors. Tri-licensed Apache-2.0 / MIT / BSL-1.0; + * used here under MIT — see LICENSE-fast_float-MIT in this directory. + * + * C99 Port by Tilo Sloboda. + */ + +#ifndef FFP_H +#define FFP_H +#include +#include +#include + +#define FFP_SMALLEST_POWER_OF_FIVE (-342) +#define FFP_LARGEST_POWER_OF_FIVE (308) +static const uint64_t ffp_power_of_five_128[2 * (308 - (-342) + 1)] = { + 0xeef453d6923bd65a, 0x113faa2906a13b3f, + 0x9558b4661b6565f8, 0x4ac7ca59a424c507, + 0xbaaee17fa23ebf76, 0x5d79bcf00d2df649, + 0xe95a99df8ace6f53, 0xf4d82c2c107973dc, + 0x91d8a02bb6c10594, 0x79071b9b8a4be869, + 0xb64ec836a47146f9, 0x9748e2826cdee284, + 0xe3e27a444d8d98b7, 0xfd1b1b2308169b25, + 0x8e6d8c6ab0787f72, 0xfe30f0f5e50e20f7, + 0xb208ef855c969f4f, 0xbdbd2d335e51a935, + 0xde8b2b66b3bc4723, 0xad2c788035e61382, + 0x8b16fb203055ac76, 0x4c3bcb5021afcc31, + 0xaddcb9e83c6b1793, 0xdf4abe242a1bbf3d, + 0xd953e8624b85dd78, 0xd71d6dad34a2af0d, + 0x87d4713d6f33aa6b, 0x8672648c40e5ad68, + 0xa9c98d8ccb009506, 0x680efdaf511f18c2, + 0xd43bf0effdc0ba48, 0x212bd1b2566def2, + 0x84a57695fe98746d, 0x14bb630f7604b57, + 0xa5ced43b7e3e9188, 0x419ea3bd35385e2d, + 0xcf42894a5dce35ea, 0x52064cac828675b9, + 0x818995ce7aa0e1b2, 0x7343efebd1940993, + 0xa1ebfb4219491a1f, 0x1014ebe6c5f90bf8, + 0xca66fa129f9b60a6, 0xd41a26e077774ef6, + 0xfd00b897478238d0, 0x8920b098955522b4, + 0x9e20735e8cb16382, 0x55b46e5f5d5535b0, + 0xc5a890362fddbc62, 0xeb2189f734aa831d, + 0xf712b443bbd52b7b, 0xa5e9ec7501d523e4, + 0x9a6bb0aa55653b2d, 0x47b233c92125366e, + 0xc1069cd4eabe89f8, 0x999ec0bb696e840a, + 0xf148440a256e2c76, 0xc00670ea43ca250d, + 0x96cd2a865764dbca, 0x380406926a5e5728, + 0xbc807527ed3e12bc, 0xc605083704f5ecf2, + 0xeba09271e88d976b, 0xf7864a44c633682e, + 0x93445b8731587ea3, 0x7ab3ee6afbe0211d, + 0xb8157268fdae9e4c, 0x5960ea05bad82964, + 0xe61acf033d1a45df, 0x6fb92487298e33bd, + 0x8fd0c16206306bab, 0xa5d3b6d479f8e056, + 0xb3c4f1ba87bc8696, 0x8f48a4899877186c, + 0xe0b62e2929aba83c, 0x331acdabfe94de87, + 0x8c71dcd9ba0b4925, 0x9ff0c08b7f1d0b14, + 0xaf8e5410288e1b6f, 0x7ecf0ae5ee44dd9, + 0xdb71e91432b1a24a, 0xc9e82cd9f69d6150, + 0x892731ac9faf056e, 0xbe311c083a225cd2, + 0xab70fe17c79ac6ca, 0x6dbd630a48aaf406, + 0xd64d3d9db981787d, 0x92cbbccdad5b108, + 0x85f0468293f0eb4e, 0x25bbf56008c58ea5, + 0xa76c582338ed2621, 0xaf2af2b80af6f24e, + 0xd1476e2c07286faa, 0x1af5af660db4aee1, + 0x82cca4db847945ca, 0x50d98d9fc890ed4d, + 0xa37fce126597973c, 0xe50ff107bab528a0, + 0xcc5fc196fefd7d0c, 0x1e53ed49a96272c8, + 0xff77b1fcbebcdc4f, 0x25e8e89c13bb0f7a, + 0x9faacf3df73609b1, 0x77b191618c54e9ac, + 0xc795830d75038c1d, 0xd59df5b9ef6a2417, + 0xf97ae3d0d2446f25, 0x4b0573286b44ad1d, + 0x9becce62836ac577, 0x4ee367f9430aec32, + 0xc2e801fb244576d5, 0x229c41f793cda73f, + 0xf3a20279ed56d48a, 0x6b43527578c1110f, + 0x9845418c345644d6, 0x830a13896b78aaa9, + 0xbe5691ef416bd60c, 0x23cc986bc656d553, + 0xedec366b11c6cb8f, 0x2cbfbe86b7ec8aa8, + 0x94b3a202eb1c3f39, 0x7bf7d71432f3d6a9, + 0xb9e08a83a5e34f07, 0xdaf5ccd93fb0cc53, + 0xe858ad248f5c22c9, 0xd1b3400f8f9cff68, + 0x91376c36d99995be, 0x23100809b9c21fa1, + 0xb58547448ffffb2d, 0xabd40a0c2832a78a, + 0xe2e69915b3fff9f9, 0x16c90c8f323f516c, + 0x8dd01fad907ffc3b, 0xae3da7d97f6792e3, + 0xb1442798f49ffb4a, 0x99cd11cfdf41779c, + 0xdd95317f31c7fa1d, 0x40405643d711d583, + 0x8a7d3eef7f1cfc52, 0x482835ea666b2572, + 0xad1c8eab5ee43b66, 0xda3243650005eecf, + 0xd863b256369d4a40, 0x90bed43e40076a82, + 0x873e4f75e2224e68, 0x5a7744a6e804a291, + 0xa90de3535aaae202, 0x711515d0a205cb36, + 0xd3515c2831559a83, 0xd5a5b44ca873e03, + 0x8412d9991ed58091, 0xe858790afe9486c2, + 0xa5178fff668ae0b6, 0x626e974dbe39a872, + 0xce5d73ff402d98e3, 0xfb0a3d212dc8128f, + 0x80fa687f881c7f8e, 0x7ce66634bc9d0b99, + 0xa139029f6a239f72, 0x1c1fffc1ebc44e80, + 0xc987434744ac874e, 0xa327ffb266b56220, + 0xfbe9141915d7a922, 0x4bf1ff9f0062baa8, + 0x9d71ac8fada6c9b5, 0x6f773fc3603db4a9, + 0xc4ce17b399107c22, 0xcb550fb4384d21d3, + 0xf6019da07f549b2b, 0x7e2a53a146606a48, + 0x99c102844f94e0fb, 0x2eda7444cbfc426d, + 0xc0314325637a1939, 0xfa911155fefb5308, + 0xf03d93eebc589f88, 0x793555ab7eba27ca, + 0x96267c7535b763b5, 0x4bc1558b2f3458de, + 0xbbb01b9283253ca2, 0x9eb1aaedfb016f16, + 0xea9c227723ee8bcb, 0x465e15a979c1cadc, + 0x92a1958a7675175f, 0xbfacd89ec191ec9, + 0xb749faed14125d36, 0xcef980ec671f667b, + 0xe51c79a85916f484, 0x82b7e12780e7401a, + 0x8f31cc0937ae58d2, 0xd1b2ecb8b0908810, + 0xb2fe3f0b8599ef07, 0x861fa7e6dcb4aa15, + 0xdfbdcece67006ac9, 0x67a791e093e1d49a, + 0x8bd6a141006042bd, 0xe0c8bb2c5c6d24e0, + 0xaecc49914078536d, 0x58fae9f773886e18, + 0xda7f5bf590966848, 0xaf39a475506a899e, + 0x888f99797a5e012d, 0x6d8406c952429603, + 0xaab37fd7d8f58178, 0xc8e5087ba6d33b83, + 0xd5605fcdcf32e1d6, 0xfb1e4a9a90880a64, + 0x855c3be0a17fcd26, 0x5cf2eea09a55067f, + 0xa6b34ad8c9dfc06f, 0xf42faa48c0ea481e, + 0xd0601d8efc57b08b, 0xf13b94daf124da26, + 0x823c12795db6ce57, 0x76c53d08d6b70858, + 0xa2cb1717b52481ed, 0x54768c4b0c64ca6e, + 0xcb7ddcdda26da268, 0xa9942f5dcf7dfd09, + 0xfe5d54150b090b02, 0xd3f93b35435d7c4c, + 0x9efa548d26e5a6e1, 0xc47bc5014a1a6daf, + 0xc6b8e9b0709f109a, 0x359ab6419ca1091b, + 0xf867241c8cc6d4c0, 0xc30163d203c94b62, + 0x9b407691d7fc44f8, 0x79e0de63425dcf1d, + 0xc21094364dfb5636, 0x985915fc12f542e4, + 0xf294b943e17a2bc4, 0x3e6f5b7b17b2939d, + 0x979cf3ca6cec5b5a, 0xa705992ceecf9c42, + 0xbd8430bd08277231, 0x50c6ff782a838353, + 0xece53cec4a314ebd, 0xa4f8bf5635246428, + 0x940f4613ae5ed136, 0x871b7795e136be99, + 0xb913179899f68584, 0x28e2557b59846e3f, + 0xe757dd7ec07426e5, 0x331aeada2fe589cf, + 0x9096ea6f3848984f, 0x3ff0d2c85def7621, + 0xb4bca50b065abe63, 0xfed077a756b53a9, + 0xe1ebce4dc7f16dfb, 0xd3e8495912c62894, + 0x8d3360f09cf6e4bd, 0x64712dd7abbbd95c, + 0xb080392cc4349dec, 0xbd8d794d96aacfb3, + 0xdca04777f541c567, 0xecf0d7a0fc5583a0, + 0x89e42caaf9491b60, 0xf41686c49db57244, + 0xac5d37d5b79b6239, 0x311c2875c522ced5, + 0xd77485cb25823ac7, 0x7d633293366b828b, + 0x86a8d39ef77164bc, 0xae5dff9c02033197, + 0xa8530886b54dbdeb, 0xd9f57f830283fdfc, + 0xd267caa862a12d66, 0xd072df63c324fd7b, + 0x8380dea93da4bc60, 0x4247cb9e59f71e6d, + 0xa46116538d0deb78, 0x52d9be85f074e608, + 0xcd795be870516656, 0x67902e276c921f8b, + 0x806bd9714632dff6, 0xba1cd8a3db53b6, + 0xa086cfcd97bf97f3, 0x80e8a40eccd228a4, + 0xc8a883c0fdaf7df0, 0x6122cd128006b2cd, + 0xfad2a4b13d1b5d6c, 0x796b805720085f81, + 0x9cc3a6eec6311a63, 0xcbe3303674053bb0, + 0xc3f490aa77bd60fc, 0xbedbfc4411068a9c, + 0xf4f1b4d515acb93b, 0xee92fb5515482d44, + 0x991711052d8bf3c5, 0x751bdd152d4d1c4a, + 0xbf5cd54678eef0b6, 0xd262d45a78a0635d, + 0xef340a98172aace4, 0x86fb897116c87c34, + 0x9580869f0e7aac0e, 0xd45d35e6ae3d4da0, + 0xbae0a846d2195712, 0x8974836059cca109, + 0xe998d258869facd7, 0x2bd1a438703fc94b, + 0x91ff83775423cc06, 0x7b6306a34627ddcf, + 0xb67f6455292cbf08, 0x1a3bc84c17b1d542, + 0xe41f3d6a7377eeca, 0x20caba5f1d9e4a93, + 0x8e938662882af53e, 0x547eb47b7282ee9c, + 0xb23867fb2a35b28d, 0xe99e619a4f23aa43, + 0xdec681f9f4c31f31, 0x6405fa00e2ec94d4, + 0x8b3c113c38f9f37e, 0xde83bc408dd3dd04, + 0xae0b158b4738705e, 0x9624ab50b148d445, + 0xd98ddaee19068c76, 0x3badd624dd9b0957, + 0x87f8a8d4cfa417c9, 0xe54ca5d70a80e5d6, + 0xa9f6d30a038d1dbc, 0x5e9fcf4ccd211f4c, + 0xd47487cc8470652b, 0x7647c3200069671f, + 0x84c8d4dfd2c63f3b, 0x29ecd9f40041e073, + 0xa5fb0a17c777cf09, 0xf468107100525890, + 0xcf79cc9db955c2cc, 0x7182148d4066eeb4, + 0x81ac1fe293d599bf, 0xc6f14cd848405530, + 0xa21727db38cb002f, 0xb8ada00e5a506a7c, + 0xca9cf1d206fdc03b, 0xa6d90811f0e4851c, + 0xfd442e4688bd304a, 0x908f4a166d1da663, + 0x9e4a9cec15763e2e, 0x9a598e4e043287fe, + 0xc5dd44271ad3cdba, 0x40eff1e1853f29fd, + 0xf7549530e188c128, 0xd12bee59e68ef47c, + 0x9a94dd3e8cf578b9, 0x82bb74f8301958ce, + 0xc13a148e3032d6e7, 0xe36a52363c1faf01, + 0xf18899b1bc3f8ca1, 0xdc44e6c3cb279ac1, + 0x96f5600f15a7b7e5, 0x29ab103a5ef8c0b9, + 0xbcb2b812db11a5de, 0x7415d448f6b6f0e7, + 0xebdf661791d60f56, 0x111b495b3464ad21, + 0x936b9fcebb25c995, 0xcab10dd900beec34, + 0xb84687c269ef3bfb, 0x3d5d514f40eea742, + 0xe65829b3046b0afa, 0xcb4a5a3112a5112, + 0x8ff71a0fe2c2e6dc, 0x47f0e785eaba72ab, + 0xb3f4e093db73a093, 0x59ed216765690f56, + 0xe0f218b8d25088b8, 0x306869c13ec3532c, + 0x8c974f7383725573, 0x1e414218c73a13fb, + 0xafbd2350644eeacf, 0xe5d1929ef90898fa, + 0xdbac6c247d62a583, 0xdf45f746b74abf39, + 0x894bc396ce5da772, 0x6b8bba8c328eb783, + 0xab9eb47c81f5114f, 0x66ea92f3f326564, + 0xd686619ba27255a2, 0xc80a537b0efefebd, + 0x8613fd0145877585, 0xbd06742ce95f5f36, + 0xa798fc4196e952e7, 0x2c48113823b73704, + 0xd17f3b51fca3a7a0, 0xf75a15862ca504c5, + 0x82ef85133de648c4, 0x9a984d73dbe722fb, + 0xa3ab66580d5fdaf5, 0xc13e60d0d2e0ebba, + 0xcc963fee10b7d1b3, 0x318df905079926a8, + 0xffbbcfe994e5c61f, 0xfdf17746497f7052, + 0x9fd561f1fd0f9bd3, 0xfeb6ea8bedefa633, + 0xc7caba6e7c5382c8, 0xfe64a52ee96b8fc0, + 0xf9bd690a1b68637b, 0x3dfdce7aa3c673b0, + 0x9c1661a651213e2d, 0x6bea10ca65c084e, + 0xc31bfa0fe5698db8, 0x486e494fcff30a62, + 0xf3e2f893dec3f126, 0x5a89dba3c3efccfa, + 0x986ddb5c6b3a76b7, 0xf89629465a75e01c, + 0xbe89523386091465, 0xf6bbb397f1135823, + 0xee2ba6c0678b597f, 0x746aa07ded582e2c, + 0x94db483840b717ef, 0xa8c2a44eb4571cdc, + 0xba121a4650e4ddeb, 0x92f34d62616ce413, + 0xe896a0d7e51e1566, 0x77b020baf9c81d17, + 0x915e2486ef32cd60, 0xace1474dc1d122e, + 0xb5b5ada8aaff80b8, 0xd819992132456ba, + 0xe3231912d5bf60e6, 0x10e1fff697ed6c69, + 0x8df5efabc5979c8f, 0xca8d3ffa1ef463c1, + 0xb1736b96b6fd83b3, 0xbd308ff8a6b17cb2, + 0xddd0467c64bce4a0, 0xac7cb3f6d05ddbde, + 0x8aa22c0dbef60ee4, 0x6bcdf07a423aa96b, + 0xad4ab7112eb3929d, 0x86c16c98d2c953c6, + 0xd89d64d57a607744, 0xe871c7bf077ba8b7, + 0x87625f056c7c4a8b, 0x11471cd764ad4972, + 0xa93af6c6c79b5d2d, 0xd598e40d3dd89bcf, + 0xd389b47879823479, 0x4aff1d108d4ec2c3, + 0x843610cb4bf160cb, 0xcedf722a585139ba, + 0xa54394fe1eedb8fe, 0xc2974eb4ee658828, + 0xce947a3da6a9273e, 0x733d226229feea32, + 0x811ccc668829b887, 0x806357d5a3f525f, + 0xa163ff802a3426a8, 0xca07c2dcb0cf26f7, + 0xc9bcff6034c13052, 0xfc89b393dd02f0b5, + 0xfc2c3f3841f17c67, 0xbbac2078d443ace2, + 0x9d9ba7832936edc0, 0xd54b944b84aa4c0d, + 0xc5029163f384a931, 0xa9e795e65d4df11, + 0xf64335bcf065d37d, 0x4d4617b5ff4a16d5, + 0x99ea0196163fa42e, 0x504bced1bf8e4e45, + 0xc06481fb9bcf8d39, 0xe45ec2862f71e1d6, + 0xf07da27a82c37088, 0x5d767327bb4e5a4c, + 0x964e858c91ba2655, 0x3a6a07f8d510f86f, + 0xbbe226efb628afea, 0x890489f70a55368b, + 0xeadab0aba3b2dbe5, 0x2b45ac74ccea842e, + 0x92c8ae6b464fc96f, 0x3b0b8bc90012929d, + 0xb77ada0617e3bbcb, 0x9ce6ebb40173744, + 0xe55990879ddcaabd, 0xcc420a6a101d0515, + 0x8f57fa54c2a9eab6, 0x9fa946824a12232d, + 0xb32df8e9f3546564, 0x47939822dc96abf9, + 0xdff9772470297ebd, 0x59787e2b93bc56f7, + 0x8bfbea76c619ef36, 0x57eb4edb3c55b65a, + 0xaefae51477a06b03, 0xede622920b6b23f1, + 0xdab99e59958885c4, 0xe95fab368e45eced, + 0x88b402f7fd75539b, 0x11dbcb0218ebb414, + 0xaae103b5fcd2a881, 0xd652bdc29f26a119, + 0xd59944a37c0752a2, 0x4be76d3346f0495f, + 0x857fcae62d8493a5, 0x6f70a4400c562ddb, + 0xa6dfbd9fb8e5b88e, 0xcb4ccd500f6bb952, + 0xd097ad07a71f26b2, 0x7e2000a41346a7a7, + 0x825ecc24c873782f, 0x8ed400668c0c28c8, + 0xa2f67f2dfa90563b, 0x728900802f0f32fa, + 0xcbb41ef979346bca, 0x4f2b40a03ad2ffb9, + 0xfea126b7d78186bc, 0xe2f610c84987bfa8, + 0x9f24b832e6b0f436, 0xdd9ca7d2df4d7c9, + 0xc6ede63fa05d3143, 0x91503d1c79720dbb, + 0xf8a95fcf88747d94, 0x75a44c6397ce912a, + 0x9b69dbe1b548ce7c, 0xc986afbe3ee11aba, + 0xc24452da229b021b, 0xfbe85badce996168, + 0xf2d56790ab41c2a2, 0xfae27299423fb9c3, + 0x97c560ba6b0919a5, 0xdccd879fc967d41a, + 0xbdb6b8e905cb600f, 0x5400e987bbc1c920, + 0xed246723473e3813, 0x290123e9aab23b68, + 0x9436c0760c86e30b, 0xf9a0b6720aaf6521, + 0xb94470938fa89bce, 0xf808e40e8d5b3e69, + 0xe7958cb87392c2c2, 0xb60b1d1230b20e04, + 0x90bd77f3483bb9b9, 0xb1c6f22b5e6f48c2, + 0xb4ecd5f01a4aa828, 0x1e38aeb6360b1af3, + 0xe2280b6c20dd5232, 0x25c6da63c38de1b0, + 0x8d590723948a535f, 0x579c487e5a38ad0e, + 0xb0af48ec79ace837, 0x2d835a9df0c6d851, + 0xdcdb1b2798182244, 0xf8e431456cf88e65, + 0x8a08f0f8bf0f156b, 0x1b8e9ecb641b58ff, + 0xac8b2d36eed2dac5, 0xe272467e3d222f3f, + 0xd7adf884aa879177, 0x5b0ed81dcc6abb0f, + 0x86ccbb52ea94baea, 0x98e947129fc2b4e9, + 0xa87fea27a539e9a5, 0x3f2398d747b36224, + 0xd29fe4b18e88640e, 0x8eec7f0d19a03aad, + 0x83a3eeeef9153e89, 0x1953cf68300424ac, + 0xa48ceaaab75a8e2b, 0x5fa8c3423c052dd7, + 0xcdb02555653131b6, 0x3792f412cb06794d, + 0x808e17555f3ebf11, 0xe2bbd88bbee40bd0, + 0xa0b19d2ab70e6ed6, 0x5b6aceaeae9d0ec4, + 0xc8de047564d20a8b, 0xf245825a5a445275, + 0xfb158592be068d2e, 0xeed6e2f0f0d56712, + 0x9ced737bb6c4183d, 0x55464dd69685606b, + 0xc428d05aa4751e4c, 0xaa97e14c3c26b886, + 0xf53304714d9265df, 0xd53dd99f4b3066a8, + 0x993fe2c6d07b7fab, 0xe546a8038efe4029, + 0xbf8fdb78849a5f96, 0xde98520472bdd033, + 0xef73d256a5c0f77c, 0x963e66858f6d4440, + 0x95a8637627989aad, 0xdde7001379a44aa8, + 0xbb127c53b17ec159, 0x5560c018580d5d52, + 0xe9d71b689dde71af, 0xaab8f01e6e10b4a6, + 0x9226712162ab070d, 0xcab3961304ca70e8, + 0xb6b00d69bb55c8d1, 0x3d607b97c5fd0d22, + 0xe45c10c42a2b3b05, 0x8cb89a7db77c506a, + 0x8eb98a7a9a5b04e3, 0x77f3608e92adb242, + 0xb267ed1940f1c61c, 0x55f038b237591ed3, + 0xdf01e85f912e37a3, 0x6b6c46dec52f6688, + 0x8b61313bbabce2c6, 0x2323ac4b3b3da015, + 0xae397d8aa96c1b77, 0xabec975e0a0d081a, + 0xd9c7dced53c72255, 0x96e7bd358c904a21, + 0x881cea14545c7575, 0x7e50d64177da2e54, + 0xaa242499697392d2, 0xdde50bd1d5d0b9e9, + 0xd4ad2dbfc3d07787, 0x955e4ec64b44e864, + 0x84ec3c97da624ab4, 0xbd5af13bef0b113e, + 0xa6274bbdd0fadd61, 0xecb1ad8aeacdd58e, + 0xcfb11ead453994ba, 0x67de18eda5814af2, + 0x81ceb32c4b43fcf4, 0x80eacf948770ced7, + 0xa2425ff75e14fc31, 0xa1258379a94d028d, + 0xcad2f7f5359a3b3e, 0x96ee45813a04330, + 0xfd87b5f28300ca0d, 0x8bca9d6e188853fc, + 0x9e74d1b791e07e48, 0x775ea264cf55347e, + 0xc612062576589dda, 0x95364afe032a819e, + 0xf79687aed3eec551, 0x3a83ddbd83f52205, + 0x9abe14cd44753b52, 0xc4926a9672793543, + 0xc16d9a0095928a27, 0x75b7053c0f178294, + 0xf1c90080baf72cb1, 0x5324c68b12dd6339, + 0x971da05074da7bee, 0xd3f6fc16ebca5e04, + 0xbce5086492111aea, 0x88f4bb1ca6bcf585, + 0xec1e4a7db69561a5, 0x2b31e9e3d06c32e6, + 0x9392ee8e921d5d07, 0x3aff322e62439fd0, + 0xb877aa3236a4b449, 0x9befeb9fad487c3, + 0xe69594bec44de15b, 0x4c2ebe687989a9b4, + 0x901d7cf73ab0acd9, 0xf9d37014bf60a11, + 0xb424dc35095cd80f, 0x538484c19ef38c95, + 0xe12e13424bb40e13, 0x2865a5f206b06fba, + 0x8cbccc096f5088cb, 0xf93f87b7442e45d4, + 0xafebff0bcb24aafe, 0xf78f69a51539d749, + 0xdbe6fecebdedd5be, 0xb573440e5a884d1c, + 0x89705f4136b4a597, 0x31680a88f8953031, + 0xabcc77118461cefc, 0xfdc20d2b36ba7c3e, + 0xd6bf94d5e57a42bc, 0x3d32907604691b4d, + 0x8637bd05af6c69b5, 0xa63f9a49c2c1b110, + 0xa7c5ac471b478423, 0xfcf80dc33721d54, + 0xd1b71758e219652b, 0xd3c36113404ea4a9, + 0x83126e978d4fdf3b, 0x645a1cac083126ea, + 0xa3d70a3d70a3d70a, 0x3d70a3d70a3d70a4, + 0xcccccccccccccccc, 0xcccccccccccccccd, + 0x8000000000000000, 0x0, + 0xa000000000000000, 0x0, + 0xc800000000000000, 0x0, + 0xfa00000000000000, 0x0, + 0x9c40000000000000, 0x0, + 0xc350000000000000, 0x0, + 0xf424000000000000, 0x0, + 0x9896800000000000, 0x0, + 0xbebc200000000000, 0x0, + 0xee6b280000000000, 0x0, + 0x9502f90000000000, 0x0, + 0xba43b74000000000, 0x0, + 0xe8d4a51000000000, 0x0, + 0x9184e72a00000000, 0x0, + 0xb5e620f480000000, 0x0, + 0xe35fa931a0000000, 0x0, + 0x8e1bc9bf04000000, 0x0, + 0xb1a2bc2ec5000000, 0x0, + 0xde0b6b3a76400000, 0x0, + 0x8ac7230489e80000, 0x0, + 0xad78ebc5ac620000, 0x0, + 0xd8d726b7177a8000, 0x0, + 0x878678326eac9000, 0x0, + 0xa968163f0a57b400, 0x0, + 0xd3c21bcecceda100, 0x0, + 0x84595161401484a0, 0x0, + 0xa56fa5b99019a5c8, 0x0, + 0xcecb8f27f4200f3a, 0x0, + 0x813f3978f8940984, 0x4000000000000000, + 0xa18f07d736b90be5, 0x5000000000000000, + 0xc9f2c9cd04674ede, 0xa400000000000000, + 0xfc6f7c4045812296, 0x4d00000000000000, + 0x9dc5ada82b70b59d, 0xf020000000000000, + 0xc5371912364ce305, 0x6c28000000000000, + 0xf684df56c3e01bc6, 0xc732000000000000, + 0x9a130b963a6c115c, 0x3c7f400000000000, + 0xc097ce7bc90715b3, 0x4b9f100000000000, + 0xf0bdc21abb48db20, 0x1e86d40000000000, + 0x96769950b50d88f4, 0x1314448000000000, + 0xbc143fa4e250eb31, 0x17d955a000000000, + 0xeb194f8e1ae525fd, 0x5dcfab0800000000, + 0x92efd1b8d0cf37be, 0x5aa1cae500000000, + 0xb7abc627050305ad, 0xf14a3d9e40000000, + 0xe596b7b0c643c719, 0x6d9ccd05d0000000, + 0x8f7e32ce7bea5c6f, 0xe4820023a2000000, + 0xb35dbf821ae4f38b, 0xdda2802c8a800000, + 0xe0352f62a19e306e, 0xd50b2037ad200000, + 0x8c213d9da502de45, 0x4526f422cc340000, + 0xaf298d050e4395d6, 0x9670b12b7f410000, + 0xdaf3f04651d47b4c, 0x3c0cdd765f114000, + 0x88d8762bf324cd0f, 0xa5880a69fb6ac800, + 0xab0e93b6efee0053, 0x8eea0d047a457a00, + 0xd5d238a4abe98068, 0x72a4904598d6d880, + 0x85a36366eb71f041, 0x47a6da2b7f864750, + 0xa70c3c40a64e6c51, 0x999090b65f67d924, + 0xd0cf4b50cfe20765, 0xfff4b4e3f741cf6d, + 0x82818f1281ed449f, 0xbff8f10e7a8921a4, + 0xa321f2d7226895c7, 0xaff72d52192b6a0d, + 0xcbea6f8ceb02bb39, 0x9bf4f8a69f764490, + 0xfee50b7025c36a08, 0x2f236d04753d5b4, + 0x9f4f2726179a2245, 0x1d762422c946590, + 0xc722f0ef9d80aad6, 0x424d3ad2b7b97ef5, + 0xf8ebad2b84e0d58b, 0xd2e0898765a7deb2, + 0x9b934c3b330c8577, 0x63cc55f49f88eb2f, + 0xc2781f49ffcfa6d5, 0x3cbf6b71c76b25fb, + 0xf316271c7fc3908a, 0x8bef464e3945ef7a, + 0x97edd871cfda3a56, 0x97758bf0e3cbb5ac, + 0xbde94e8e43d0c8ec, 0x3d52eeed1cbea317, + 0xed63a231d4c4fb27, 0x4ca7aaa863ee4bdd, + 0x945e455f24fb1cf8, 0x8fe8caa93e74ef6a, + 0xb975d6b6ee39e436, 0xb3e2fd538e122b44, + 0xe7d34c64a9c85d44, 0x60dbbca87196b616, + 0x90e40fbeea1d3a4a, 0xbc8955e946fe31cd, + 0xb51d13aea4a488dd, 0x6babab6398bdbe41, + 0xe264589a4dcdab14, 0xc696963c7eed2dd1, + 0x8d7eb76070a08aec, 0xfc1e1de5cf543ca2, + 0xb0de65388cc8ada8, 0x3b25a55f43294bcb, + 0xdd15fe86affad912, 0x49ef0eb713f39ebe, + 0x8a2dbf142dfcc7ab, 0x6e3569326c784337, + 0xacb92ed9397bf996, 0x49c2c37f07965404, + 0xd7e77a8f87daf7fb, 0xdc33745ec97be906, + 0x86f0ac99b4e8dafd, 0x69a028bb3ded71a3, + 0xa8acd7c0222311bc, 0xc40832ea0d68ce0c, + 0xd2d80db02aabd62b, 0xf50a3fa490c30190, + 0x83c7088e1aab65db, 0x792667c6da79e0fa, + 0xa4b8cab1a1563f52, 0x577001b891185938, + 0xcde6fd5e09abcf26, 0xed4c0226b55e6f86, + 0x80b05e5ac60b6178, 0x544f8158315b05b4, + 0xa0dc75f1778e39d6, 0x696361ae3db1c721, + 0xc913936dd571c84c, 0x3bc3a19cd1e38e9, + 0xfb5878494ace3a5f, 0x4ab48a04065c723, + 0x9d174b2dcec0e47b, 0x62eb0d64283f9c76, + 0xc45d1df942711d9a, 0x3ba5d0bd324f8394, + 0xf5746577930d6500, 0xca8f44ec7ee36479, + 0x9968bf6abbe85f20, 0x7e998b13cf4e1ecb, + 0xbfc2ef456ae276e8, 0x9e3fedd8c321a67e, + 0xefb3ab16c59b14a2, 0xc5cfe94ef3ea101e, + 0x95d04aee3b80ece5, 0xbba1f1d158724a12, + 0xbb445da9ca61281f, 0x2a8a6e45ae8edc97, + 0xea1575143cf97226, 0xf52d09d71a3293bd, + 0x924d692ca61be758, 0x593c2626705f9c56, + 0xb6e0c377cfa2e12e, 0x6f8b2fb00c77836c, + 0xe498f455c38b997a, 0xb6dfb9c0f956447, + 0x8edf98b59a373fec, 0x4724bd4189bd5eac, + 0xb2977ee300c50fe7, 0x58edec91ec2cb657, + 0xdf3d5e9bc0f653e1, 0x2f2967b66737e3ed, + 0x8b865b215899f46c, 0xbd79e0d20082ee74, + 0xae67f1e9aec07187, 0xecd8590680a3aa11, + 0xda01ee641a708de9, 0xe80e6f4820cc9495, + 0x884134fe908658b2, 0x3109058d147fdcdd, + 0xaa51823e34a7eede, 0xbd4b46f0599fd415, + 0xd4e5e2cdc1d1ea96, 0x6c9e18ac7007c91a, + 0x850fadc09923329e, 0x3e2cf6bc604ddb0, + 0xa6539930bf6bff45, 0x84db8346b786151c, + 0xcfe87f7cef46ff16, 0xe612641865679a63, + 0x81f14fae158c5f6e, 0x4fcb7e8f3f60c07e, + 0xa26da3999aef7749, 0xe3be5e330f38f09d, + 0xcb090c8001ab551c, 0x5cadf5bfd3072cc5, + 0xfdcb4fa002162a63, 0x73d9732fc7c8f7f6, + 0x9e9f11c4014dda7e, 0x2867e7fddcdd9afa, + 0xc646d63501a1511d, 0xb281e1fd541501b8, + 0xf7d88bc24209a565, 0x1f225a7ca91a4226, + 0x9ae757596946075f, 0x3375788de9b06958, + 0xc1a12d2fc3978937, 0x52d6b1641c83ae, + 0xf209787bb47d6b84, 0xc0678c5dbd23a49a, + 0x9745eb4d50ce6332, 0xf840b7ba963646e0, + 0xbd176620a501fbff, 0xb650e5a93bc3d898, + 0xec5d3fa8ce427aff, 0xa3e51f138ab4cebe, + 0x93ba47c980e98cdf, 0xc66f336c36b10137, + 0xb8a8d9bbe123f017, 0xb80b0047445d4184, + 0xe6d3102ad96cec1d, 0xa60dc059157491e5, + 0x9043ea1ac7e41392, 0x87c89837ad68db2f, + 0xb454e4a179dd1877, 0x29babe4598c311fb, + 0xe16a1dc9d8545e94, 0xf4296dd6fef3d67a, + 0x8ce2529e2734bb1d, 0x1899e4a65f58660c, + 0xb01ae745b101e9e4, 0x5ec05dcff72e7f8f, + 0xdc21a1171d42645d, 0x76707543f4fa1f73, + 0x899504ae72497eba, 0x6a06494a791c53a8, + 0xabfa45da0edbde69, 0x487db9d17636892, + 0xd6f8d7509292d603, 0x45a9d2845d3c42b6, + 0x865b86925b9bc5c2, 0xb8a2392ba45a9b2, + 0xa7f26836f282b732, 0x8e6cac7768d7141e, + 0xd1ef0244af2364ff, 0x3207d795430cd926, + 0x8335616aed761f1f, 0x7f44e6bd49e807b8, + 0xa402b9c5a8d3a6e7, 0x5f16206c9c6209a6, + 0xcd036837130890a1, 0x36dba887c37a8c0f, + 0x802221226be55a64, 0xc2494954da2c9789, + 0xa02aa96b06deb0fd, 0xf2db9baa10b7bd6c, + 0xc83553c5c8965d3d, 0x6f92829494e5acc7, + 0xfa42a8b73abbf48c, 0xcb772339ba1f17f9, + 0x9c69a97284b578d7, 0xff2a760414536efb, + 0xc38413cf25e2d70d, 0xfef5138519684aba, + 0xf46518c2ef5b8cd1, 0x7eb258665fc25d69, + 0x98bf2f79d5993802, 0xef2f773ffbd97a61, + 0xbeeefb584aff8603, 0xaafb550ffacfd8fa, + 0xeeaaba2e5dbf6784, 0x95ba2a53f983cf38, + 0x952ab45cfa97a0b2, 0xdd945a747bf26183, + 0xba756174393d88df, 0x94f971119aeef9e4, + 0xe912b9d1478ceb17, 0x7a37cd5601aab85d, + 0x91abb422ccb812ee, 0xac62e055c10ab33a, + 0xb616a12b7fe617aa, 0x577b986b314d6009, + 0xe39c49765fdf9d94, 0xed5a7e85fda0b80b, + 0x8e41ade9fbebc27d, 0x14588f13be847307, + 0xb1d219647ae6b31c, 0x596eb2d8ae258fc8, + 0xde469fbd99a05fe3, 0x6fca5f8ed9aef3bb, + 0x8aec23d680043bee, 0x25de7bb9480d5854, + 0xada72ccc20054ae9, 0xaf561aa79a10ae6a, + 0xd910f7ff28069da4, 0x1b2ba1518094da04, + 0x87aa9aff79042286, 0x90fb44d2f05d0842, + 0xa99541bf57452b28, 0x353a1607ac744a53, + 0xd3fa922f2d1675f2, 0x42889b8997915ce8, + 0x847c9b5d7c2e09b7, 0x69956135febada11, + 0xa59bc234db398c25, 0x43fab9837e699095, + 0xcf02b2c21207ef2e, 0x94f967e45e03f4bb, + 0x8161afb94b44f57d, 0x1d1be0eebac278f5, + 0xa1ba1ba79e1632dc, 0x6462d92a69731732, + 0xca28a291859bbf93, 0x7d7b8f7503cfdcfe, + 0xfcb2cb35e702af78, 0x5cda735244c3d43e, + 0x9defbf01b061adab, 0x3a0888136afa64a7, + 0xc56baec21c7a1916, 0x88aaa1845b8fdd0, + 0xf6c69a72a3989f5b, 0x8aad549e57273d45, + 0x9a3c2087a63f6399, 0x36ac54e2f678864b, + 0xc0cb28a98fcf3c7f, 0x84576a1bb416a7dd, + 0xf0fdf2d3f3c30b9f, 0x656d44a2a11c51d5, + 0x969eb7c47859e743, 0x9f644ae5a4b1b325, + 0xbc4665b596706114, 0x873d5d9f0dde1fee, + 0xeb57ff22fc0c7959, 0xa90cb506d155a7ea, + 0x9316ff75dd87cbd8, 0x9a7f12442d588f2, + 0xb7dcbf5354e9bece, 0xc11ed6d538aeb2f, + 0xe5d3ef282a242e81, 0x8f1668c8a86da5fa, + 0x8fa475791a569d10, 0xf96e017d694487bc, + 0xb38d92d760ec4455, 0x37c981dcc395a9ac, + 0xe070f78d3927556a, 0x85bbe253f47b1417, + 0x8c469ab843b89562, 0x93956d7478ccec8e, + 0xaf58416654a6babb, 0x387ac8d1970027b2, + 0xdb2e51bfe9d0696a, 0x6997b05fcc0319e, + 0x88fcf317f22241e2, 0x441fece3bdf81f03, + 0xab3c2fddeeaad25a, 0xd527e81cad7626c3, + 0xd60b3bd56a5586f1, 0x8a71e223d8d3b074, + 0x85c7056562757456, 0xf6872d5667844e49, + 0xa738c6bebb12d16c, 0xb428f8ac016561db, + 0xd106f86e69d785c7, 0xe13336d701beba52, + 0x82a45b450226b39c, 0xecc0024661173473, + 0xa34d721642b06084, 0x27f002d7f95d0190, + 0xcc20ce9bd35c78a5, 0x31ec038df7b441f4, + 0xff290242c83396ce, 0x7e67047175a15271, + 0x9f79a169bd203e41, 0xf0062c6e984d386, + 0xc75809c42c684dd1, 0x52c07b78a3e60868, + 0xf92e0c3537826145, 0xa7709a56ccdf8a82, + 0x9bbcc7a142b17ccb, 0x88a66076400bb691, + 0xc2abf989935ddbfe, 0x6acff893d00ea435, + 0xf356f7ebf83552fe, 0x583f6b8c4124d43, + 0x98165af37b2153de, 0xc3727a337a8b704a, + 0xbe1bf1b059e9a8d6, 0x744f18c0592e4c5c, + 0xeda2ee1c7064130c, 0x1162def06f79df73, + 0x9485d4d1c63e8be7, 0x8addcb5645ac2ba8, + 0xb9a74a0637ce2ee1, 0x6d953e2bd7173692, + 0xe8111c87c5c1ba99, 0xc8fa8db6ccdd0437, + 0x910ab1d4db9914a0, 0x1d9c9892400a22a2, + 0xb54d5e4a127f59c8, 0x2503beb6d00cab4b, + 0xe2a0b5dc971f303a, 0x2e44ae64840fd61d, + 0x8da471a9de737e24, 0x5ceaecfed289e5d2, + 0xb10d8e1456105dad, 0x7425a83e872c5f47, + 0xdd50f1996b947518, 0xd12f124e28f77719, + 0x8a5296ffe33cc92f, 0x82bd6b70d99aaa6f, + 0xace73cbfdc0bfb7b, 0x636cc64d1001550b, + 0xd8210befd30efa5a, 0x3c47f7e05401aa4e, + 0x8714a775e3e95c78, 0x65acfaec34810a71, + 0xa8d9d1535ce3b396, 0x7f1839a741a14d0d, + 0xd31045a8341ca07c, 0x1ede48111209a050, + 0x83ea2b892091e44d, 0x934aed0aab460432, + 0xa4e4b66b68b65d60, 0xf81da84d5617853f, + 0xce1de40642e3f4b9, 0x36251260ab9d668e, + 0x80d2ae83e9ce78f3, 0xc1d72b7c6b426019, + 0xa1075a24e4421730, 0xb24cf65b8612f81f, + 0xc94930ae1d529cfc, 0xdee033f26797b627, + 0xfb9b7cd9a4a7443c, 0x169840ef017da3b1, + 0x9d412e0806e88aa5, 0x8e1f289560ee864e, + 0xc491798a08a2ad4e, 0xf1a6f2bab92a27e2, + 0xf5b5d7ec8acb58a2, 0xae10af696774b1db, + 0x9991a6f3d6bf1765, 0xacca6da1e0a8ef29, + 0xbff610b0cc6edd3f, 0x17fd090a58d32af3, + 0xeff394dcff8a948e, 0xddfc4b4cef07f5b0, + 0x95f83d0a1fb69cd9, 0x4abdaf101564f98e, + 0xbb764c4ca7a4440f, 0x9d6d1ad41abe37f1, + 0xea53df5fd18d5513, 0x84c86189216dc5ed, + 0x92746b9be2f8552c, 0x32fd3cf5b4e49bb4, + 0xb7118682dbb66a77, 0x3fbc8c33221dc2a1, + 0xe4d5e82392a40515, 0xfabaf3feaa5334a, + 0x8f05b1163ba6832d, 0x29cb4d87f2a7400e, + 0xb2c71d5bca9023f8, 0x743e20e9ef511012, + 0xdf78e4b2bd342cf6, 0x914da9246b255416, + 0x8bab8eefb6409c1a, 0x1ad089b6c2f7548e, + 0xae9672aba3d0c320, 0xa184ac2473b529b1, + 0xda3c0f568cc4f3e8, 0xc9e5d72d90a2741e, + 0x8865899617fb1871, 0x7e2fa67c7a658892, + 0xaa7eebfb9df9de8d, 0xddbb901b98feeab7, + 0xd51ea6fa85785631, 0x552a74227f3ea565, + 0x8533285c936b35de, 0xd53a88958f87275f, + 0xa67ff273b8460356, 0x8a892abaf368f137, + 0xd01fef10a657842c, 0x2d2b7569b0432d85, + 0x8213f56a67f6b29b, 0x9c3b29620e29fc73, + 0xa298f2c501f45f42, 0x8349f3ba91b47b8f, + 0xcb3f2f7642717713, 0x241c70a936219a73, + 0xfe0efb53d30dd4d7, 0xed238cd383aa0110, + 0x9ec95d1463e8a506, 0xf4363804324a40aa, + 0xc67bb4597ce2ce48, 0xb143c6053edcd0d5, + 0xf81aa16fdc1b81da, 0xdd94b7868e94050a, + 0x9b10a4e5e9913128, 0xca7cf2b4191c8326, + 0xc1d4ce1f63f57d72, 0xfd1c2f611f63a3f0, + 0xf24a01a73cf2dccf, 0xbc633b39673c8cec, + 0x976e41088617ca01, 0xd5be0503e085d813, + 0xbd49d14aa79dbc82, 0x4b2d8644d8a74e18, + 0xec9c459d51852ba2, 0xddf8e7d60ed1219e, + 0x93e1ab8252f33b45, 0xcabb90e5c942b503, + 0xb8da1662e7b00a17, 0x3d6a751f3b936243, + 0xe7109bfba19c0c9d, 0xcc512670a783ad4, + 0x906a617d450187e2, 0x27fb2b80668b24c5, + 0xb484f9dc9641e9da, 0xb1f9f660802dedf6, + 0xe1a63853bbd26451, 0x5e7873f8a0396973, + 0x8d07e33455637eb2, 0xdb0b487b6423e1e8, + 0xb049dc016abc5e5f, 0x91ce1a9a3d2cda62, + 0xdc5c5301c56b75f7, 0x7641a140cc7810fb, + 0x89b9b3e11b6329ba, 0xa9e904c87fcb0a9d, + 0xac2820d9623bf429, 0x546345fa9fbdcd44, + 0xd732290fbacaf133, 0xa97c177947ad4095, + 0x867f59a9d4bed6c0, 0x49ed8eabcccc485d, + 0xa81f301449ee8c70, 0x5c68f256bfff5a74, + 0xd226fc195c6a2f8c, 0x73832eec6fff3111, + 0x83585d8fd9c25db7, 0xc831fd53c5ff7eab, + 0xa42e74f3d032f525, 0xba3e7ca8b77f5e55, + 0xcd3a1230c43fb26f, 0x28ce1bd2e55f35eb, + 0x80444b5e7aa7cf85, 0x7980d163cf5b81b3, + 0xa0555e361951c366, 0xd7e105bcc332621f, + 0xc86ab5c39fa63440, 0x8dd9472bf3fefaa7, + 0xfa856334878fc150, 0xb14f98f6f0feb951, + 0x9c935e00d4b9d8d2, 0x6ed1bf9a569f33d3, + 0xc3b8358109e84f07, 0xa862f80ec4700c8, + 0xf4a642e14c6262c8, 0xcd27bb612758c0fa, + 0x98e7e9cccfbd7dbd, 0x8038d51cb897789c, + 0xbf21e44003acdd2c, 0xe0470a63e6bd56c3, + 0xeeea5d5004981478, 0x1858ccfce06cac74, + 0x95527a5202df0ccb, 0xf37801e0c43ebc8, + 0xbaa718e68396cffd, 0xd30560258f54e6ba, + 0xe950df20247c83fd, 0x47c6b82ef32a2069, + 0x91d28b7416cdd27e, 0x4cdc331d57fa5441, + 0xb6472e511c81471d, 0xe0133fe4adf8e952, + 0xe3d8f9e563a198e5, 0x58180fddd97723a6, + 0x8e679c2f5e44ff8f, 0x570f09eaa7ea7648, +}; + +/* binary_format constants from fast_float. */ +#define FFP_MANTISSA_BITS 52 +#define FFP_MIN_EXPONENT (-1023) +#define FFP_INFINITE_POWER 0x7FF +#define FFP_SMALLEST_POW10 (-342) +#define FFP_LARGEST_POW10 308 +#define FFP_MIN_RTE (-4) /* min_exponent_round_to_even */ +#define FFP_MAX_RTE 23 /* max_exponent_round_to_even */ + +/* (((152170 + 65536) * q) >> 16) + 63 == floor(log2(10^q)) + q + 63, see paper. */ +static inline int32_t ffp_power(int32_t q) { + return (((152170 + 65536) * q) >> 16) + 63; +} + +static inline void ffp_mul128(uint64_t a, uint64_t b, uint64_t *hi, uint64_t *lo) { +#if defined(__SIZEOF_INT128__) + __uint128_t p = (__uint128_t)a * (__uint128_t)b; + *lo = (uint64_t)p; + *hi = (uint64_t)(p >> 64); +#else + uint64_t a0 = (uint32_t)a, a1 = a >> 32, b0 = (uint32_t)b, b1 = b >> 32; + uint64_t p00 = a0 * b0, p01 = a0 * b1, p10 = a1 * b0, p11 = a1 * b1; + uint64_t mid = p10 + (p00 >> 32) + (uint32_t)p01; + *hi = p11 + (mid >> 32) + (p01 >> 32); + *lo = (mid << 32) | (uint32_t)p00; +#endif +} + +static inline double ffp_bits2double(uint64_t bits) { + double d; + memcpy(&d, &bits, sizeof(d)); + return d; +} + +#if defined(__x86_64__) && defined(HAVE_X86INTRIN_H) +# include +#elif defined(_MSC_VER) && defined(HAVE_INTRIN_H) +# include +#endif + +#if defined(_MSC_VER) && defined(__AVX2__) +# pragma intrinsic(__lzcnt64) +#endif + +static inline unsigned int +ffc_nlz_int64(uint64_t x) +{ +#if defined(HAVE_BUILTIN___BUILTIN_CLZLL) && !(defined(__sun) && defined(__sparc)) + return (unsigned int)__builtin_clzll((unsigned long long)x); + +#elif defined(_MSC_VER) && defined(__AVX2__) && defined(HAVE___LZCNT64) + return (unsigned int)__lzcnt64(x); + +#elif defined(__x86_64__) && defined(__LZCNT__) && defined(HAVE__LZCNT_U64) + return (unsigned int)_lzcnt_u64(x); + +#elif defined(_WIN64) && defined(_MSC_VER) && defined(HAVE__BITSCANREVERSE64) + unsigned long r; + return _BitScanReverse64(&r, x) ? (63u - (unsigned int)r) : 64; + +#else + uint64_t y; + unsigned int n = 64; + y = x >> 32; if (y) {n -= 32; x = y;} + y = x >> 16; if (y) {n -= 16; x = y;} + y = x >> 8; if (y) {n -= 8; x = y;} + y = x >> 4; if (y) {n -= 4; x = y;} + y = x >> 2; if (y) {n -= 2; x = y;} + y = x >> 1; if (y) {return n - 2;} + return (unsigned int)(n - x); + +#endif +} + +/* q = power of ten, w = mantissa (exact, fits in uint64). neg = sign. */ +static inline double ffp_s2d(int64_t q, uint64_t w, bool neg) { + if (w == 0) { + return neg ? -0.0 : 0.0; + } + + const uint64_t sign = (uint64_t)(neg != 0) << 63; + uint64_t mantissa, prod_hi, prod_lo, sp_hi, sp_lo; + int32_t power2; + int upperbit, shift, index; + + if (q < FFP_SMALLEST_POW10) return ffp_bits2double(sign); /* underflow -> 0 */ + if (q > FFP_LARGEST_POW10) { + return ffp_bits2double(sign | ((uint64_t)FFP_INFINITE_POWER << FFP_MANTISSA_BITS)); + } + + unsigned int lz = ffc_nlz_int64(w); + w <<= lz; + + /* compute_product_approximation: precision_mask = 0x1FF. */ + index = 2 * (int)(q - FFP_SMALLEST_POWER_OF_FIVE); + ffp_mul128(w, ffp_power_of_five_128[index], &prod_hi, &prod_lo); + if ((prod_hi & 0x1FF) == 0x1FF) { + ffp_mul128(w, ffp_power_of_five_128[index + 1], &sp_hi, &sp_lo); + prod_lo += sp_hi; + if (sp_hi > prod_lo) { + prod_hi++; + } + } + + upperbit = (int)(prod_hi >> 63); + shift = upperbit + 64 - FFP_MANTISSA_BITS - 3; /* upperbit + 9 */ + mantissa = prod_hi >> shift; + power2 = (int32_t)(ffp_power((int32_t)q) + upperbit - lz - FFP_MIN_EXPONENT); + + if (power2 <= 0) { /* subnormal */ + if (-power2 + 1 >= 64) return ffp_bits2double(sign); /* far below min -> 0 */ + mantissa >>= (-power2 + 1); + mantissa += (mantissa & 1); + mantissa >>= 1; + power2 = (mantissa < ((uint64_t)1 << FFP_MANTISSA_BITS)) ? 0 : 1; + return ffp_bits2double(sign | ((uint64_t)power2 << FFP_MANTISSA_BITS) | mantissa); + } + + /* round-to-even: if we land exactly between two doubles, round down. */ + if ((prod_lo <= 1) && (q >= FFP_MIN_RTE) && (q <= FFP_MAX_RTE) && + ((mantissa & 3) == 1) && ((mantissa << shift) == prod_hi)) { + mantissa &= ~(uint64_t)1; + } + + mantissa += (mantissa & 1); + mantissa >>= 1; + if (mantissa >= ((uint64_t)2 << FFP_MANTISSA_BITS)) { + mantissa = (uint64_t)1 << FFP_MANTISSA_BITS; + power2++; + } + + mantissa &= ~((uint64_t)1 << FFP_MANTISSA_BITS); /* drop implicit bit */ + if (power2 >= FFP_INFINITE_POWER) { + return ffp_bits2double(sign | ((uint64_t)FFP_INFINITE_POWER << FFP_MANTISSA_BITS)); + } + return ffp_bits2double(sign | ((uint64_t)power2 << FFP_MANTISSA_BITS) | mantissa); +} + +#endif // FFP_H diff --git a/ext/json/ext/vendor/fpconv.c b/ext/json/ext/vendor/fpconv.c new file mode 100644 index 000000000..6c9bc2c10 --- /dev/null +++ b/ext/json/ext/vendor/fpconv.c @@ -0,0 +1,480 @@ +// Boost Software License - Version 1.0 - August 17th, 2003 +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. + +// The contents of this file is extracted from https://github.com/night-shift/fpconv +// It was slightly modified to append ".0" to plain floats, for use with the https://github.com/ruby/json package. + +#include +#include +#include + +#if JSON_DEBUG +#include +#endif + +#define npowers 87 +#define steppowers 8 +#define firstpower -348 /* 10 ^ -348 */ + +#define expmax -32 +#define expmin -60 + +typedef struct Fp { + uint64_t frac; + int exp; +} Fp; + +static const Fp powers_ten[] = { + { 18054884314459144840U, -1220 }, { 13451937075301367670U, -1193 }, + { 10022474136428063862U, -1166 }, { 14934650266808366570U, -1140 }, + { 11127181549972568877U, -1113 }, { 16580792590934885855U, -1087 }, + { 12353653155963782858U, -1060 }, { 18408377700990114895U, -1034 }, + { 13715310171984221708U, -1007 }, { 10218702384817765436U, -980 }, + { 15227053142812498563U, -954 }, { 11345038669416679861U, -927 }, + { 16905424996341287883U, -901 }, { 12595523146049147757U, -874 }, + { 9384396036005875287U, -847 }, { 13983839803942852151U, -821 }, + { 10418772551374772303U, -794 }, { 15525180923007089351U, -768 }, + { 11567161174868858868U, -741 }, { 17236413322193710309U, -715 }, + { 12842128665889583758U, -688 }, { 9568131466127621947U, -661 }, + { 14257626930069360058U, -635 }, { 10622759856335341974U, -608 }, + { 15829145694278690180U, -582 }, { 11793632577567316726U, -555 }, + { 17573882009934360870U, -529 }, { 13093562431584567480U, -502 }, + { 9755464219737475723U, -475 }, { 14536774485912137811U, -449 }, + { 10830740992659433045U, -422 }, { 16139061738043178685U, -396 }, + { 12024538023802026127U, -369 }, { 17917957937422433684U, -343 }, + { 13349918974505688015U, -316 }, { 9946464728195732843U, -289 }, + { 14821387422376473014U, -263 }, { 11042794154864902060U, -236 }, + { 16455045573212060422U, -210 }, { 12259964326927110867U, -183 }, + { 18268770466636286478U, -157 }, { 13611294676837538539U, -130 }, + { 10141204801825835212U, -103 }, { 15111572745182864684U, -77 }, + { 11258999068426240000U, -50 }, { 16777216000000000000U, -24 }, + { 12500000000000000000U, 3 }, { 9313225746154785156U, 30 }, + { 13877787807814456755U, 56 }, { 10339757656912845936U, 83 }, + { 15407439555097886824U, 109 }, { 11479437019748901445U, 136 }, + { 17105694144590052135U, 162 }, { 12744735289059618216U, 189 }, + { 9495567745759798747U, 216 }, { 14149498560666738074U, 242 }, + { 10542197943230523224U, 269 }, { 15709099088952724970U, 295 }, + { 11704190886730495818U, 322 }, { 17440603504673385349U, 348 }, + { 12994262207056124023U, 375 }, { 9681479787123295682U, 402 }, + { 14426529090290212157U, 428 }, { 10748601772107342003U, 455 }, + { 16016664761464807395U, 481 }, { 11933345169920330789U, 508 }, + { 17782069995880619868U, 534 }, { 13248674568444952270U, 561 }, + { 9871031767461413346U, 588 }, { 14708983551653345445U, 614 }, + { 10959046745042015199U, 641 }, { 16330252207878254650U, 667 }, + { 12166986024289022870U, 694 }, { 18130221999122236476U, 720 }, + { 13508068024458167312U, 747 }, { 10064294952495520794U, 774 }, + { 14996968138956309548U, 800 }, { 11173611982879273257U, 827 }, + { 16649979327439178909U, 853 }, { 12405201291620119593U, 880 }, + { 9242595204427927429U, 907 }, { 13772540099066387757U, 933 }, + { 10261342003245940623U, 960 }, { 15290591125556738113U, 986 }, + { 11392378155556871081U, 1013 }, { 16975966327722178521U, 1039 }, + { 12648080533535911531U, 1066 } +}; + +static Fp find_cachedpow10(int exp, int* k) +{ + const double one_log_ten = 0.30102999566398114; + + int approx = (int)(-(exp + npowers) * one_log_ten); + int idx = (approx - firstpower) / steppowers; + + while(1) { + int current = exp + powers_ten[idx].exp + 64; + + if(current < expmin) { + idx++; + continue; + } + + if(current > expmax) { + idx--; + continue; + } + + *k = (firstpower + idx * steppowers); + + return powers_ten[idx]; + } +} + +#define fracmask 0x000FFFFFFFFFFFFFU +#define expmask 0x7FF0000000000000U +#define hiddenbit 0x0010000000000000U +#define signmask 0x8000000000000000U +#define expbias (1023 + 52) + +#define absv(n) ((n) < 0 ? -(n) : (n)) +#define minv(a, b) ((a) < (b) ? (a) : (b)) + +static const uint64_t tens[] = { + 10000000000000000000U, 1000000000000000000U, 100000000000000000U, + 10000000000000000U, 1000000000000000U, 100000000000000U, + 10000000000000U, 1000000000000U, 100000000000U, + 10000000000U, 1000000000U, 100000000U, + 10000000U, 1000000U, 100000U, + 10000U, 1000U, 100U, + 10U, 1U +}; + +static inline uint64_t get_dbits(double d) +{ + union { + double dbl; + uint64_t i; + } dbl_bits = { d }; + + return dbl_bits.i; +} + +static Fp build_fp(double d) +{ + uint64_t bits = get_dbits(d); + + Fp fp; + fp.frac = bits & fracmask; + fp.exp = (bits & expmask) >> 52; + + if(fp.exp) { + fp.frac += hiddenbit; + fp.exp -= expbias; + + } else { + fp.exp = -expbias + 1; + } + + return fp; +} + +static void normalize(Fp* fp) +{ + while ((fp->frac & hiddenbit) == 0) { + fp->frac <<= 1; + fp->exp--; + } + + int shift = 64 - 52 - 1; + fp->frac <<= shift; + fp->exp -= shift; +} + +static void get_normalized_boundaries(Fp* fp, Fp* lower, Fp* upper) +{ + upper->frac = (fp->frac << 1) + 1; + upper->exp = fp->exp - 1; + + while ((upper->frac & (hiddenbit << 1)) == 0) { + upper->frac <<= 1; + upper->exp--; + } + + int u_shift = 64 - 52 - 2; + + upper->frac <<= u_shift; + upper->exp = upper->exp - u_shift; + + + int l_shift = fp->frac == hiddenbit ? 2 : 1; + + lower->frac = (fp->frac << l_shift) - 1; + lower->exp = fp->exp - l_shift; + + + lower->frac <<= lower->exp - upper->exp; + lower->exp = upper->exp; +} + +static Fp multiply(Fp* a, Fp* b) +{ + const uint64_t lomask = 0x00000000FFFFFFFF; + + uint64_t ah_bl = (a->frac >> 32) * (b->frac & lomask); + uint64_t al_bh = (a->frac & lomask) * (b->frac >> 32); + uint64_t al_bl = (a->frac & lomask) * (b->frac & lomask); + uint64_t ah_bh = (a->frac >> 32) * (b->frac >> 32); + + uint64_t tmp = (ah_bl & lomask) + (al_bh & lomask) + (al_bl >> 32); + /* round up */ + tmp += 1U << 31; + + Fp fp = { + ah_bh + (ah_bl >> 32) + (al_bh >> 32) + (tmp >> 32), + a->exp + b->exp + 64 + }; + + return fp; +} + +static void round_digit(char* digits, int ndigits, uint64_t delta, uint64_t rem, uint64_t kappa, uint64_t frac) +{ + while (rem < frac && delta - rem >= kappa && + (rem + kappa < frac || frac - rem > rem + kappa - frac)) { + + digits[ndigits - 1]--; + rem += kappa; + } +} + +static int generate_digits(Fp* fp, Fp* upper, Fp* lower, char* digits, int* K) +{ + uint64_t wfrac = upper->frac - fp->frac; + uint64_t delta = upper->frac - lower->frac; + + Fp one; + one.frac = 1ULL << -upper->exp; + one.exp = upper->exp; + + uint64_t part1 = upper->frac >> -one.exp; + uint64_t part2 = upper->frac & (one.frac - 1); + + int idx = 0, kappa = 10; + const uint64_t* divp; + /* 1000000000 */ + for(divp = tens + 10; kappa > 0; divp++) { + + uint64_t div = *divp; + unsigned digit = (unsigned) (part1 / div); + + if (digit || idx) { + digits[idx++] = digit + '0'; + } + + part1 -= digit * div; + kappa--; + + uint64_t tmp = (part1 <<-one.exp) + part2; + if (tmp <= delta) { + *K += kappa; + round_digit(digits, idx, delta, tmp, div << -one.exp, wfrac); + + return idx; + } + } + + /* 10 */ + const uint64_t* unit = tens + 18; + + while(true) { + part2 *= 10; + delta *= 10; + kappa--; + + unsigned digit = (unsigned) (part2 >> -one.exp); + if (digit || idx) { + digits[idx++] = digit + '0'; + } + + part2 &= one.frac - 1; + if (part2 < delta) { + *K += kappa; + round_digit(digits, idx, delta, part2, one.frac, wfrac * *unit); + + return idx; + } + + unit--; + } +} + +static int grisu2(double d, char* digits, int* K) +{ + Fp w = build_fp(d); + + Fp lower, upper; + get_normalized_boundaries(&w, &lower, &upper); + + normalize(&w); + + int k; + Fp cp = find_cachedpow10(upper.exp, &k); + + w = multiply(&w, &cp); + upper = multiply(&upper, &cp); + lower = multiply(&lower, &cp); + + lower.frac++; + upper.frac--; + + *K = -k; + + return generate_digits(&w, &upper, &lower, digits, K); +} + +static int emit_digits(char* digits, int ndigits, char* dest, int K, bool neg) +{ + int exp = absv(K + ndigits - 1); + + if(K >= 0 && exp < 15) { + memcpy(dest, digits, ndigits); + memset(dest + ndigits, '0', K); + + /* add a .0 to mark this as a float. */ + dest[ndigits + K] = '.'; + dest[ndigits + K + 1] = '0'; + + return ndigits + K + 2; + } + + /* write decimal w/o scientific notation */ + if(K < 0 && (K > -7 || exp < 10)) { + int offset = ndigits - absv(K); + /* fp < 1.0 -> write leading zero */ + if(offset <= 0) { + offset = -offset; + dest[0] = '0'; + dest[1] = '.'; + memset(dest + 2, '0', offset); + memcpy(dest + offset + 2, digits, ndigits); + + return ndigits + 2 + offset; + + /* fp > 1.0 */ + } else { + memcpy(dest, digits, offset); + dest[offset] = '.'; + memcpy(dest + offset + 1, digits + offset, ndigits - offset); + + return ndigits + 1; + } + } + + /* write decimal w/ scientific notation */ + ndigits = minv(ndigits, 18 - neg); + + int idx = 0; + dest[idx++] = digits[0]; + + if(ndigits > 1) { + dest[idx++] = '.'; + memcpy(dest + idx, digits + 1, ndigits - 1); + idx += ndigits - 1; + } + + dest[idx++] = 'e'; + + char sign = K + ndigits - 1 < 0 ? '-' : '+'; + dest[idx++] = sign; + + int cent = 0; + + if(exp > 99) { + cent = exp / 100; + dest[idx++] = cent + '0'; + exp -= cent * 100; + } + if(exp > 9) { + int dec = exp / 10; + dest[idx++] = dec + '0'; + exp -= dec * 10; + + } else if(cent) { + dest[idx++] = '0'; + } + + dest[idx++] = exp % 10 + '0'; + + return idx; +} + +static int filter_special(double fp, char* dest) +{ + if(fp == 0.0) { + dest[0] = '0'; + dest[1] = '.'; + dest[2] = '0'; + return 3; + } + + uint64_t bits = get_dbits(fp); + + bool nan = (bits & expmask) == expmask; + + if(!nan) { + return 0; + } + + if(bits & fracmask) { + dest[0] = 'n'; dest[1] = 'a'; dest[2] = 'n'; + + } else { + dest[0] = 'i'; dest[1] = 'n'; dest[2] = 'f'; + } + + return 3; +} + +/* Fast and accurate double to string conversion based on Florian Loitsch's + * Grisu-algorithm[1]. + * + * Input: + * fp -> the double to convert, dest -> destination buffer. + * The generated string will never be longer than 32 characters. + * Make sure to pass a pointer to at least 32 bytes of memory. + * The emitted string will not be null terminated. + * + * + * + * Output: + * The number of written characters. + * + * Exemplary usage: + * + * void print(double d) + * { + * char buf[28 + 1] // plus null terminator + * int str_len = fpconv_dtoa(d, buf); + * + * buf[str_len] = '\0'; + * printf("%s", buf); + * } + * + */ +static int fpconv_dtoa(double d, char dest[32]) +{ + char digits[18]; + + int str_len = 0; + bool neg = false; + + if(get_dbits(d) & signmask) { + dest[0] = '-'; + str_len++; + neg = true; + } + + int spec = filter_special(d, dest + str_len); + + if(spec) { + return str_len + spec; + } + + int K = 0; + int ndigits = grisu2(d, digits, &K); + + str_len += emit_digits(digits, ndigits, dest + str_len, K, neg); +#if JSON_DEBUG + assert(str_len <= 32); +#endif + + return str_len; +} diff --git a/ext/json/ext/vendor/jeaiii-ltoa.h b/ext/json/ext/vendor/jeaiii-ltoa.h new file mode 100644 index 000000000..ba4f497fc --- /dev/null +++ b/ext/json/ext/vendor/jeaiii-ltoa.h @@ -0,0 +1,267 @@ +/* + +This file is released under the terms of the MIT License. It is based on the +work of James Edward Anhalt III, with the original license listed below. + +MIT License + +Copyright (c) 2024,2025 Enrico Thierbach - https://github.com/radiospiel +Copyright (c) 2022 James Edward Anhalt III - https://github.com/jeaiii/itoa + +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 JEAIII_TO_TEXT_H_ +#define JEAIII_TO_TEXT_H_ + +#include + +typedef uint_fast32_t u32_t; +typedef uint_fast64_t u64_t; + +#define u32(x) ((u32_t)(x)) +#define u64(x) ((u64_t)(x)) + +struct digit_pair +{ + char dd[2]; +}; + +static const struct digit_pair *digits_dd = (struct digit_pair *)( + "00" "01" "02" "03" "04" "05" "06" "07" "08" "09" + "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" + "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" + "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" + "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" + "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" + "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" + "70" "71" "72" "73" "74" "75" "76" "77" "78" "79" + "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" + "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" +); + +static const struct digit_pair *digits_fd = (struct digit_pair *)( + "0_" "1_" "2_" "3_" "4_" "5_" "6_" "7_" "8_" "9_" + "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" + "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" + "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" + "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" + "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" + "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" + "70" "71" "72" "73" "74" "75" "76" "77" "78" "79" + "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" + "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" +); + +static const u64_t mask24 = (u64(1) << 24) - 1; +static const u64_t mask32 = (u64(1) << 32) - 1; +static const u64_t mask57 = (u64(1) << 57) - 1; + +#define COPY(buffer, digits) memcpy(buffer, &(digits), sizeof(struct digit_pair)) + +static char * +jeaiii_ultoa(char *b, u64_t n) +{ + if (n < u32(1e2)) { + COPY(b, digits_fd[n]); + return n < 10 ? b + 1 : b + 2; + } + + if (n < u32(1e6)) { + if (n < u32(1e4)) { + u32_t f0 = u32((10 * (1 << 24) / 1e3 + 1) * n); + COPY(b, digits_fd[f0 >> 24]); + + b -= n < u32(1e3); + u32_t f2 = (f0 & mask24) * 100; + COPY(b + 2, digits_dd[f2 >> 24]); + + return b + 4; + } + + u64_t f0 = u64(10 * (1ull << 32ull)/ 1e5 + 1) * n; + COPY(b, digits_fd[f0 >> 32]); + + b -= n < u32(1e5); + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + return b + 6; + } + + if (n < u64(1ull << 32ull)) { + if (n < u32(1e8)) { + u64_t f0 = u64(10 * (1ull << 48ull) / 1e7 + 1) * n >> 16; + COPY(b, digits_fd[f0 >> 32]); + + b -= n < u32(1e7); + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + + u64_t f6 = (f4 & mask32) * 100; + COPY(b + 6, digits_dd[f6 >> 32]); + + return b + 8; + } + + u64_t f0 = u64(10 * (1ull << 57ull) / 1e9 + 1) * n; + COPY(b, digits_fd[f0 >> 57]); + + b -= n < u32(1e9); + u64_t f2 = (f0 & mask57) * 100; + COPY(b + 2, digits_dd[f2 >> 57]); + + u64_t f4 = (f2 & mask57) * 100; + COPY(b + 4, digits_dd[f4 >> 57]); + + u64_t f6 = (f4 & mask57) * 100; + COPY(b + 6, digits_dd[f6 >> 57]); + + u64_t f8 = (f6 & mask57) * 100; + COPY(b + 8, digits_dd[f8 >> 57]); + + return b + 10; + } + + // if we get here U must be u64 but some compilers don't know that, so reassign n to a u64 to avoid warnings + u32_t z = n % u32(1e8); + u64_t u = n / u32(1e8); + + if (u < u32(1e2)) { + // u can't be 1 digit (if u < 10 it would have been handled above as a 9 digit 32bit number) + COPY(b, digits_dd[u]); + b += 2; + } + else if (u < u32(1e6)) { + if (u < u32(1e4)) { + u32_t f0 = u32((10 * (1 << 24) / 1e3 + 1) * u); + COPY(b, digits_fd[f0 >> 24]); + + b -= u < u32(1e3); + u32_t f2 = (f0 & mask24) * 100; + COPY(b + 2, digits_dd[f2 >> 24]); + b += 4; + } + else { + u64_t f0 = u64(10 * (1ull << 32ull) / 1e5 + 1) * u; + COPY(b, digits_fd[f0 >> 32]); + + b -= u < u32(1e5); + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + b += 6; + } + } + else if (u < u32(1e8)) { + u64_t f0 = u64(10 * (1ull << 48ull) / 1e7 + 1) * u >> 16; + COPY(b, digits_fd[f0 >> 32]); + + b -= u < u32(1e7); + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + + u64_t f6 = (f4 & mask32) * 100; + COPY(b + 6, digits_dd[f6 >> 32]); + + b += 8; + } + else if (u < u64(1ull << 32ull)) { + u64_t f0 = u64(10 * (1ull << 57ull) / 1e9 + 1) * u; + COPY(b, digits_fd[f0 >> 57]); + + b -= u < u32(1e9); + u64_t f2 = (f0 & mask57) * 100; + COPY(b + 2, digits_dd[f2 >> 57]); + + u64_t f4 = (f2 & mask57) * 100; + COPY(b + 4, digits_dd[f4 >> 57]); + + u64_t f6 = (f4 & mask57) * 100; + COPY(b + 6, digits_dd[f6 >> 57]); + + u64_t f8 = (f6 & mask57) * 100; + COPY(b + 8, digits_dd[f8 >> 57]); + b += 10; + } + else { + u32_t y = u % u32(1e8); + u /= u32(1e8); + + // u is 2, 3, or 4 digits (if u < 10 it would have been handled above) + if (u < u32(1e2)) { + COPY(b, digits_dd[u]); + b += 2; + } + else { + u32_t f0 = u32((10 * (1 << 24) / 1e3 + 1) * u); + COPY(b, digits_fd[f0 >> 24]); + + b -= u < u32(1e3); + u32_t f2 = (f0 & mask24) * 100; + COPY(b + 2, digits_dd[f2 >> 24]); + + b += 4; + } + // do 8 digits + u64_t f0 = (u64((1ull << 48ull) / 1e6 + 1) * y >> 16) + 1; + COPY(b, digits_dd[f0 >> 32]); + + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + + u64_t f6 = (f4 & mask32) * 100; + COPY(b + 6, digits_dd[f6 >> 32]); + b += 8; + } + + // do 8 digits + u64_t f0 = (u64((1ull << 48ull) / 1e6 + 1) * z >> 16) + 1; + COPY(b, digits_dd[f0 >> 32]); + + u64_t f2 = (f0 & mask32) * 100; + COPY(b + 2, digits_dd[f2 >> 32]); + + u64_t f4 = (f2 & mask32) * 100; + COPY(b + 4, digits_dd[f4 >> 32]); + + u64_t f6 = (f4 & mask32) * 100; + COPY(b + 6, digits_dd[f6 >> 32]); + + return b + 8; +} + +#undef u32 +#undef u64 +#undef COPY + +#endif // JEAIII_TO_TEXT_H_ diff --git a/ext/json/extconf.rb b/ext/json/extconf.rb deleted file mode 100644 index 7595d58a9..000000000 --- a/ext/json/extconf.rb +++ /dev/null @@ -1,2 +0,0 @@ -require 'mkmf' -create_makefile('json') diff --git a/install.rb b/install.rb deleted file mode 100755 index 9d3ae12d8..000000000 --- a/install.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'fileutils' -include FileUtils::Verbose -require 'rbconfig' -include\ - begin - RbConfig - rescue NameError - Config - end - -sitelibdir = CONFIG["sitelibdir"] -cd 'lib' do - install('json.rb', sitelibdir) - mkdir_p File.join(sitelibdir, 'json') - for file in Dir['json/**/*}'] - d = File.join(sitelibdir, file) - mkdir_p File.dirname(d) - install(file, d) - end -end -warn " *** Installed PURE ruby library." diff --git a/java/src/json/ext/AbstractByteListDirectOutputStream.java b/java/src/json/ext/AbstractByteListDirectOutputStream.java new file mode 100644 index 000000000..b94d7f59a --- /dev/null +++ b/java/src/json/ext/AbstractByteListDirectOutputStream.java @@ -0,0 +1,29 @@ +package json.ext; + +import java.io.OutputStream; + +import org.jcodings.Encoding; +import org.jruby.util.ByteList; + +abstract class AbstractByteListDirectOutputStream extends OutputStream { + + private static final String PROP_SEGMENTED_BUFFER = "jruby.json.useSegmentedOutputStream"; + private static final String PROP_SEGMENTED_BUFFER_DEFAULT = "true"; + + private static final boolean USE_SEGMENTED_BUFFER; + + static { + String useSegmentedOutputStream = System.getProperty(PROP_SEGMENTED_BUFFER, PROP_SEGMENTED_BUFFER_DEFAULT); + USE_SEGMENTED_BUFFER = Boolean.parseBoolean(useSegmentedOutputStream); + } + + public static AbstractByteListDirectOutputStream create(int estimatedSize) { + if (USE_SEGMENTED_BUFFER) { + return new SegmentedByteListDirectOutputStream(estimatedSize); + } else { + return new ByteListDirectOutputStream(estimatedSize); + } + } + + public abstract ByteList toByteListDirect(Encoding encoding); +} diff --git a/java/src/json/ext/ByteListDirectOutputStream.java b/java/src/json/ext/ByteListDirectOutputStream.java new file mode 100644 index 000000000..a92753ca3 --- /dev/null +++ b/java/src/json/ext/ByteListDirectOutputStream.java @@ -0,0 +1,73 @@ +package json.ext; + +import org.jcodings.Encoding; +import org.jruby.util.ByteList; + +import java.io.IOException; +import java.util.Arrays; + +public class ByteListDirectOutputStream extends AbstractByteListDirectOutputStream { + private byte[] buffer; + private int length; + + ByteListDirectOutputStream(int size) { + buffer = new byte[size]; + } + + public ByteList toByteListDirect(Encoding encoding) { + return new ByteList(buffer, 0, length, encoding, false); + } + + @Override + public void write(int b) throws IOException { + int currentLength = this.length; + int newLength = currentLength + 1; + byte[] buffer = ensureBuffer(this, newLength); + buffer[currentLength] = (byte) b; + this.length = newLength; + } + + @Override + public void write(byte[] bytes, int start, int length) throws IOException { + int currentLength = this.length; + int newLength = currentLength + length; + byte[] buffer = ensureBuffer(this, newLength); + System.arraycopy(bytes, start, buffer, currentLength, length); + this.length = newLength; + } + + @Override + public void write(byte[] bytes) throws IOException { + int myLength = this.length; + int moreLength = bytes.length; + int newLength = myLength + moreLength; + byte[] buffer = ensureBuffer(this, newLength); + System.arraycopy(bytes, 0, buffer, myLength, moreLength); + this.length = newLength; + } + + private static byte[] ensureBuffer(ByteListDirectOutputStream self, int minimumLength) { + byte[] buffer = self.buffer; + int myCapacity = buffer.length; + int diff = minimumLength - myCapacity; + if (diff > 0) { + buffer = self.buffer = grow(buffer, myCapacity, diff); + } + + return buffer; + } + + private static byte[] grow(byte[] oldBuffer, int myCapacity, int diff) { + // grow to double current buffer length or capacity + diff, whichever is greater + int newLength = myCapacity + Math.max(myCapacity, diff); + // check overflow + if (newLength < 0) { + // try just diff length in case it can fit + newLength = myCapacity + diff; + if (newLength < 0) { + throw new ArrayIndexOutOfBoundsException("cannot allocate array of size " + myCapacity + "+" + diff); + } + } + return Arrays.copyOf(oldBuffer, newLength); + } +} diff --git a/java/src/json/ext/ByteListTranscoder.java b/java/src/json/ext/ByteListTranscoder.java index 6f6ab66c1..7ee9de344 100644 --- a/java/src/json/ext/ByteListTranscoder.java +++ b/java/src/json/ext/ByteListTranscoder.java @@ -9,13 +9,14 @@ import org.jruby.runtime.ThreadContext; import org.jruby.util.ByteList; +import java.io.IOException; +import java.io.OutputStream; + /** * A class specialized in transcoding a certain String format into another, * using UTF-8 ByteLists as both input and output. */ abstract class ByteListTranscoder { - protected final ThreadContext context; - protected ByteList src; protected int srcEnd; /** Position where the last read character started */ @@ -23,7 +24,6 @@ abstract class ByteListTranscoder { /** Position of the next character to read */ protected int pos; - private ByteList out; /** * When a character that can be copied straight into the output is found, * its index is stored on this variable, and copying is delayed until @@ -33,20 +33,15 @@ abstract class ByteListTranscoder { */ private int quoteStart = -1; - protected ByteListTranscoder(ThreadContext context) { - this.context = context; + protected void init(ByteList src) { + this.init(src, 0, src.length()); } - protected void init(ByteList src, ByteList out) { - this.init(src, 0, src.length(), out); - } - - protected void init(ByteList src, int start, int end, ByteList out) { + protected void init(ByteList src, int start, int end) { this.src = src; this.pos = start; this.charStart = start; this.srcEnd = end; - this.out = out; } /** @@ -67,52 +62,57 @@ private char next() { * Reads an UTF-8 character from the input and returns its code point, * while advancing the input position. * - *

Raises an {@link #invalidUtf8()} exception if an invalid byte + *

Raises an {@link #invalidUtf8(ThreadContext)} exception if an invalid byte * is found. */ - protected int readUtf8Char() { + protected int readUtf8Char(ThreadContext context) { charStart = pos; char head = next(); if (head <= 0x7f) { // 0b0xxxxxxx (ASCII) return head; } if (head <= 0xbf) { // 0b10xxxxxx - throw invalidUtf8(); // tail byte with no head + throw invalidUtf8(context); // tail byte with no head } if (head <= 0xdf) { // 0b110xxxxx - ensureMin(1); + ensureMin(context, 1); int cp = ((head & 0x1f) << 6) - | nextPart(); - if (cp < 0x0080) throw invalidUtf8(); + | nextPart(context); + if (cp < 0x0080) throw invalidUtf8(context); return cp; } if (head <= 0xef) { // 0b1110xxxx - ensureMin(2); + ensureMin(context, 2); int cp = ((head & 0x0f) << 12) - | (nextPart() << 6) - | nextPart(); - if (cp < 0x0800) throw invalidUtf8(); + | (nextPart(context) << 6) + | nextPart(context); + if (cp < 0x0800) throw invalidUtf8(context); return cp; } if (head <= 0xf7) { // 0b11110xxx - ensureMin(3); + ensureMin(context, 3); int cp = ((head & 0x07) << 18) - | (nextPart() << 12) - | (nextPart() << 6) - | nextPart(); - if (!Character.isValidCodePoint(cp)) throw invalidUtf8(); + | (nextPart(context) << 12) + | (nextPart(context) << 6) + | nextPart(context); + if (!Character.isValidCodePoint(cp)) throw invalidUtf8(context); return cp; } // 0b11111xxx? - throw invalidUtf8(); + throw invalidUtf8(context); + } + + protected int readASCIIChar() { + charStart = pos; + return next(); } /** * Throws a GeneratorError if the input list doesn't have at least this * many bytes left. */ - protected void ensureMin(int n) { - if (pos + n > srcEnd) throw incompleteUtf8(); + protected void ensureMin(ThreadContext context, int n) { + if (pos + n > srcEnd) throw incompleteUtf8(context); } /** @@ -121,10 +121,10 @@ protected void ensureMin(int n) { * *

Throws a GeneratorError if the byte is not a valid tail. */ - private int nextPart() { + private int nextPart(ThreadContext context) { char c = next(); // tail bytes must be 0b10xxxxxx - if ((c & 0xc0) != 0x80) throw invalidUtf8(); + if ((c & 0xc0) != 0x80) throw invalidUtf8(context); return c & 0x3f; } @@ -142,25 +142,23 @@ protected void quoteStart() { * recently read character, or {@link #charStart} to quote * until the character before it. */ - protected void quoteStop(int endPos) { + protected void quoteStop(int endPos) throws IOException { + int quoteStart = this.quoteStart; if (quoteStart != -1) { - out.append(src, quoteStart, endPos - quoteStart); - quoteStart = -1; + ByteList src = this.src; + append(src.unsafeBytes(), src.begin() + quoteStart, endPos - quoteStart); + this.quoteStart = -1; } } - protected void append(int b) { - out.append(b); - } + protected abstract void append(int b) throws IOException; - protected void append(byte[] origin, int start, int length) { - out.append(origin, start, length); - } + protected abstract void append(byte[] origin, int start, int length) throws IOException; - protected abstract RaiseException invalidUtf8(); + protected abstract RaiseException invalidUtf8(ThreadContext context); - protected RaiseException incompleteUtf8() { - return invalidUtf8(); + protected RaiseException incompleteUtf8(ThreadContext context) { + return invalidUtf8(context); } } diff --git a/java/src/json/ext/Generator.java b/java/src/json/ext/Generator.java index 24bf04974..750be6bf6 100644 --- a/java/src/json/ext/Generator.java +++ b/java/src/json/ext/Generator.java @@ -5,6 +5,8 @@ */ package json.ext; +import org.jcodings.Encoding; +import org.jcodings.specific.UTF8Encoding; import org.jruby.Ruby; import org.jruby.RubyArray; import org.jruby.RubyBasicObject; @@ -14,14 +16,31 @@ import org.jruby.RubyFixnum; import org.jruby.RubyFloat; import org.jruby.RubyHash; -import org.jruby.RubyNumeric; +import org.jruby.RubyIO; +import org.jruby.RubyProc; import org.jruby.RubyString; -import org.jruby.runtime.ClassIndex; +import org.jruby.RubySymbol; +import org.jruby.runtime.Helpers; import org.jruby.runtime.ThreadContext; import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ByteList; +import org.jruby.util.IOOutputStream; +import org.jruby.util.TypeConverter; + +import json.ext.ByteListDirectOutputStream; + +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.math.BigInteger; +import java.util.Set; + +import static java.nio.charset.StandardCharsets.UTF_8; public final class Generator { + + private static final int IO_BUFFER_SIZE = 8192; + private Generator() { throw new RuntimeException(); } @@ -29,48 +48,93 @@ private Generator() { /** * Encodes the given object as a JSON string, using the given handler. */ - static RubyString - generateJson(ThreadContext context, T object, - Handler handler, IRubyObject[] args) { - Session session = new Session(context, args.length > 0 ? args[0] - : null); - return session.infect(handler.generateNew(session, object)); + static RubyString generateJson(ThreadContext context, T object, Handler handler) { + Session session = new Session(null); + return handler.generateNew(context, session, object); + } + + static RubyString generateJson(ThreadContext context, T object, Handler handler, IRubyObject arg0) { + Session session = new Session(arg0); + GeneratorState state = session.getState(context); + state.validateRfc8785(context); + int depth = state.depth; + try { + return handler.generateNew(context, session, object); + } finally { + state.depth = depth; + } } /** * Encodes the given object as a JSON string, detecting the appropriate handler * for the given object. */ - static RubyString - generateJson(ThreadContext context, T object, IRubyObject[] args) { - Handler handler = getHandlerFor(context.getRuntime(), object); - return generateJson(context, object, handler, args); + static RubyString generateJson(ThreadContext context, T object) { + Handler handler = getHandlerFor(context.runtime, object); + return generateJson(context, object, handler); + } + + static RubyString generateJson(ThreadContext context, T object, IRubyObject arg0) { + Handler handler = getHandlerFor(context.runtime, object); + return generateJson(context, object, handler, arg0); } /** * Encodes the given object as a JSON string, using the appropriate * handler if one is found or calling #to_json if not. */ - public static RubyString + public static IRubyObject generateJson(ThreadContext context, T object, - GeneratorState config) { - Session session = new Session(context, config); - Handler handler = getHandlerFor(context.getRuntime(), object); - return handler.generateNew(session, object); - } - - // NOTE: drop this once Ruby 1.9.3 support is gone! - private static final int FIXNUM = 1; - private static final int BIGNUM = 2; - private static final int ARRAY = 3; - private static final int STRING = 4; - private static final int NIL = 5; - private static final int TRUE = 6; - private static final int FALSE = 7; - private static final int HASH = 10; - private static final int FLOAT = 11; - // hard-coded due JRuby 1.7 compatibility - // https://github.com/jruby/jruby/blob/1.7.27/core/src/main/java/org/jruby/runtime/ClassIndex.java + GeneratorState config, IRubyObject io) { + Session session = new Session(config); + GeneratorState state = session.getState(context); + state.validateRfc8785(context); + int depth = state.depth; + + try { + Handler handler = getHandlerFor(context.runtime, object); + + if (io.isNil()) { + return handler.generateNew(context, session, object); + } + + BufferedOutputStream buffer = + new BufferedOutputStream( + new PatchedIOOutputStream(io, UTF8Encoding.INSTANCE), + IO_BUFFER_SIZE); + handler.generateToBuffer(context, session, object, buffer); + return io; + } finally { + state.depth = depth; + } + } + + /** + * A version of IOOutputStream hacked to avoid fast-path RubyIO calls when the target IO has an external encoding. + * + * All calls to the underlying IO will be done dynamically and all incoming bytes wrapped in RubyString instances. + * This avoids bugs in the fast-path logic in JRuby 9.4.12.0 and earlier that fails to properly handle writing bytes + * when the source and target destination are the same. + * + * See https://github.com/jruby/jruby/issues/8682 + */ + private static class PatchedIOOutputStream extends IOOutputStream { + public PatchedIOOutputStream(IRubyObject io, Encoding encoding) { + super(io, encoding); + } + + @Override + public RubyIO getRealIO(IRubyObject io) { + RubyIO realIO = super.getRealIO(io); + + // if the real IO has an external encoding, don't use fast path + if (realIO == null || realIO.getEnc() != null) { + return null; + } + + return realIO; + } + } /** * Returns the best serialization handler for the given object. @@ -78,29 +142,60 @@ private Generator() { // Java's generics can't handle this satisfactorily, so I'll just leave // the best I could get and ignore the warnings @SuppressWarnings("unchecked") - private static - Handler getHandlerFor(Ruby runtime, T object) { - switch (((RubyBasicObject) object).getNativeTypeIndex()) { - // can not use getNativeClassIndex due 1.7 compatibility - case NIL : return (Handler) NIL_HANDLER; - case TRUE : return (Handler) TRUE_HANDLER; - case FALSE : return (Handler) FALSE_HANDLER; - case FLOAT : return (Handler) FLOAT_HANDLER; - case FIXNUM : return (Handler) FIXNUM_HANDLER; - case BIGNUM : return (Handler) BIGNUM_HANDLER; + private static Handler getHandlerFor(Ruby runtime, T object) { + switch (((RubyBasicObject) object).getNativeClassIndex()) { + case NIL : return NIL_HANDLER; + case TRUE : return (Handler) TRUE_HANDLER; + case FALSE : return (Handler) FALSE_HANDLER; + case FLOAT : return (Handler) FLOAT_HANDLER; + case FIXNUM : return (Handler) FIXNUM_HANDLER; + case BIGNUM : return (Handler) BIGNUM_HANDLER; + case SYMBOL : + return (Handler) SYMBOL_HANDLER; case STRING : - if (((RubyBasicObject) object).getMetaClass() != runtime.getString()) break; - return (Handler) STRING_HANDLER; + if (Helpers.metaclass(object) != runtime.getString()) break; + return (Handler) STRING_HANDLER; case ARRAY : - if (((RubyBasicObject) object).getMetaClass() != runtime.getArray()) break; - return (Handler) ARRAY_HANDLER; + if (Helpers.metaclass(object) != runtime.getArray()) break; + return (Handler) ARRAY_HANDLER; case HASH : - if (((RubyBasicObject) object).getMetaClass() != runtime.getHash()) break; - return (Handler) HASH_HANDLER; + if (Helpers.metaclass(object) != runtime.getHash()) break; + return (Handler) HASH_HANDLER; + case STRUCT : + RuntimeInfo info = RuntimeInfo.forRuntime(runtime); + RubyClass fragmentClass = info.jsonModule.get().getClass("Fragment"); + if (Helpers.metaclass(object) != fragmentClass) break; + return FRAGMENT_HANDLER; } return GENERIC_HANDLER; } + private static void generateFor(ThreadContext context, Session session, T object, OutputStream buffer) throws IOException { + switch (((RubyBasicObject) object).getNativeClassIndex()) { + case NIL : buffer.write(NULL_STRING); return; + case TRUE : buffer.write(TRUE_STRING); return; + case FALSE : buffer.write(FALSE_STRING); return; + case FLOAT : generateFloat(context, session, (RubyFloat) object, buffer); return; + case FIXNUM : generateFixnum(context, session, (RubyFixnum) object, buffer); return; + case BIGNUM : generateBignum(context, session, (RubyBignum) object, buffer); return; + case SYMBOL : generateSymbol(context, session, (RubySymbol) object, buffer); return; + case STRING : + if (Helpers.metaclass(object) != context.runtime.getString()) break; + generateString(context, session, (RubyString) object, buffer); return; + case ARRAY : + if (Helpers.metaclass(object) != context.runtime.getArray()) break; + generateArray(context, session, (RubyArray) object, buffer); return; + case HASH : + if (Helpers.metaclass(object) != context.runtime.getHash()) break; + generateHash(context, session, (RubyHash) object, buffer); return; + case STRUCT : + RuntimeInfo info = RuntimeInfo.forRuntime(context.runtime); + RubyClass fragmentClass = info.jsonModule.get().getClass("Fragment"); + if (Helpers.metaclass(object) != fragmentClass) break; + generateFragment(context, session, object, buffer); return; + } + generateGeneric(context, session, object, buffer); + } /* Generator context */ @@ -112,67 +207,53 @@ Handler getHandlerFor(Ruby runtime, T object) { * object; any handler directly called by container handlers (arrays and * hashes/objects) shares this object with its caller. * - *

Note that anything called indirectly (via {@link GENERIC_HANDLER}) + *

Note that anything called indirectly (via {@link #GENERIC_HANDLER}) * won't be part of the session. */ static class Session { - private final ThreadContext context; + private static final int MAX_LONG_CHARS = Long.toString(Long.MIN_VALUE).length(); private GeneratorState state; private IRubyObject possibleState; private RuntimeInfo info; private StringEncoder stringEncoder; + private byte[] charBytes; - private boolean tainted = false; - private boolean untrusted = false; - - Session(ThreadContext context, GeneratorState state) { - this.context = context; + Session(GeneratorState state) { this.state = state; } - Session(ThreadContext context, IRubyObject possibleState) { - this.context = context; + Session(IRubyObject possibleState) { this.possibleState = possibleState == null || possibleState.isNil() ? null : possibleState; } - public ThreadContext getContext() { - return context; - } - - public Ruby getRuntime() { - return context.getRuntime(); - } - - public GeneratorState getState() { + public GeneratorState getState(ThreadContext context) { if (state == null) { - state = GeneratorState.fromState(context, getInfo(), possibleState); + state = GeneratorState.fromState(context, getInfo(context), possibleState); } return state; } - public RuntimeInfo getInfo() { - if (info == null) info = RuntimeInfo.forRuntime(getRuntime()); + public RuntimeInfo getInfo(ThreadContext context) { + if (info == null) info = RuntimeInfo.forRuntime(context.runtime); return info; } - public StringEncoder getStringEncoder() { + public byte[] getCharBytes() { + byte[] charBytes = this.charBytes; + if (charBytes == null) charBytes = this.charBytes = new byte[MAX_LONG_CHARS]; + return charBytes; + } + + public StringEncoder getStringEncoder(ThreadContext context) { if (stringEncoder == null) { - stringEncoder = new StringEncoder(context, getState().asciiOnly()); + GeneratorState state = getState(context); + stringEncoder = state.asciiOnly() ? + new StringEncoderAsciiOnly(state.scriptSafe()) : + (state.scriptSafe()) ? new StringEncoder(state.scriptSafe()) : StringEncoder.createBasicEncoder(); } return stringEncoder; } - - public void infectBy(IRubyObject object) { - if (object.isTaint()) tainted = true; - if (object.isUntrusted()) untrusted = true; - } - - public T infect(T object) { - if (tainted) object.setTaint(true); - if (untrusted) object.setUntrusted(true); - return object; - } } @@ -184,22 +265,26 @@ private static abstract class Handler { * given object will take. Used for allocating enough buffer space * before invoking other methods. */ - int guessSize(Session session, T object) { + int guessSize(ThreadContext context, Session session, T object) { return 4; } - RubyString generateNew(Session session, T object) { - RubyString result; - ByteList buffer = new ByteList(guessSize(session, object)); - generate(session, object, buffer); - result = RubyString.newString(session.getRuntime(), buffer); - ThreadContext context = session.getContext(); - RuntimeInfo info = session.getInfo(); - result.force_encoding(context, info.utf8.get()); - return result; + RubyString generateNew(ThreadContext context, Session session, T object) { + AbstractByteListDirectOutputStream buffer = AbstractByteListDirectOutputStream.create(guessSize(context, session, object)); + generateToBuffer(context, session, object, buffer); + return RubyString.newString(context.runtime, buffer.toByteListDirect(UTF8Encoding.INSTANCE)); + } + + void generateToBuffer(ThreadContext context, Session session, T object, OutputStream buffer) { + try { + generate(context, session, object, buffer); + buffer.flush(); + } catch (IOException ioe) { + throw context.runtime.newIOErrorFromException(ioe); + } } - abstract void generate(Session session, T object, ByteList buffer); + abstract void generate(ThreadContext context, Session session, T object, OutputStream buffer) throws IOException; } /** @@ -207,260 +292,559 @@ RubyString generateNew(Session session, T object) { */ private static class KeywordHandler extends Handler { - private final ByteList keyword; + private final byte[] keyword; - private KeywordHandler(String keyword) { - this.keyword = new ByteList(ByteList.plain(keyword), false); + private KeywordHandler(byte[] keyword) { + this.keyword = keyword; } @Override - int guessSize(Session session, T object) { - return keyword.length(); + int guessSize(ThreadContext context, Session session, T object) { + return keyword.length; } @Override - RubyString generateNew(Session session, T object) { - return RubyString.newStringShared(session.getRuntime(), keyword); + RubyString generateNew(ThreadContext context, Session session, T object) { + return RubyString.newStringShared(context.runtime, keyword); } @Override - void generate(Session session, T object, ByteList buffer) { - buffer.append(keyword); + void generate(ThreadContext context, Session session, T object, OutputStream buffer) throws IOException { + buffer.write(keyword); } } /* Handlers */ - static final Handler BIGNUM_HANDLER = - new Handler() { - @Override - void generate(Session session, RubyBignum object, ByteList buffer) { - // JRUBY-4751: RubyBignum.to_s() returns generic object - // representation (fixed in 1.5, but we maintain backwards - // compatibility; call to_s(IRubyObject[]) then - buffer.append(((RubyString)object.to_s(IRubyObject.NULL_ARRAY)).getByteList()); - } - }; + static final Handler BIGNUM_HANDLER = new BignumHandler(); + static final Handler FIXNUM_HANDLER = new FixnumHandler(); + static final Handler FLOAT_HANDLER = new FloatHandler(); + static final Handler> ARRAY_HANDLER = new ArrayHandler(); + static final Handler HASH_HANDLER = new HashHandler(); + static final Handler STRING_HANDLER = new StringHandler(); + private static final byte[] TRUE_STRING = "true".getBytes(); + static final Handler TRUE_HANDLER = new KeywordHandler<>(TRUE_STRING); + private static final byte[] FALSE_STRING = "false".getBytes(); + static final Handler FALSE_HANDLER = new KeywordHandler<>(FALSE_STRING); + private static final byte[] NULL_STRING = "null".getBytes(); + static final Handler NIL_HANDLER = new KeywordHandler<>(NULL_STRING); + static final Handler FRAGMENT_HANDLER = new FragmentHandler(); + static final Handler SYMBOL_HANDLER = new SymbolHandler(); - static final Handler FIXNUM_HANDLER = - new Handler() { - @Override - void generate(Session session, RubyFixnum object, ByteList buffer) { - buffer.append(object.to_s().getByteList()); - } - }; + /** + * The default handler (Object#to_json): coerces the object + * to string using #to_s, and serializes that string. + */ + static final Handler OBJECT_HANDLER = new ObjectHandler(); + + /** + * A handler that simply calls #to_json(state) on the + * given object. + */ + static final Handler GENERIC_HANDLER = new GenericHandler(); + + private static class BignumHandler extends Handler { + @Override + void generate(ThreadContext context, Session session, RubyBignum object, OutputStream buffer) throws IOException { + generateBignum(context, session, object, buffer); + } + } + + private static void generateBignum(ThreadContext context, Session session, RubyBignum object, OutputStream buffer) throws IOException { + if (session.getState(context).rfc8785()) { + generateRfc8785Number(context, object, buffer); + return; + } + BigInteger bigInt = object.getValue(); + buffer.write(bigInt.toString().getBytes(UTF_8)); + } + + private static class FixnumHandler extends Handler { + @Override + void generate(ThreadContext context, Session session, RubyFixnum object, OutputStream buffer) throws IOException { + generateFixnum(context, session, object, buffer); + } + } + + static void generateFixnum(ThreadContext context, Session session, RubyFixnum object, OutputStream buffer) throws IOException { + if (session.getState(context).rfc8785()) { + generateRfc8785Number(context, object, buffer); + return; + } + long i = object.getLongValue(); + if (i == 0) { + buffer.write('0'); + } else if (i == Long.MIN_VALUE) { + // special case to avoid -i + buffer.write(MIN_VALUE_BYTES_RADIX_10); + } else { + byte[] charBytes = session.getCharBytes(); + appendFixnum(buffer, charBytes, i); + } + } - static final Handler FLOAT_HANDLER = - new Handler() { - @Override - void generate(Session session, RubyFloat object, ByteList buffer) { - double value = RubyFloat.num2dbl(object); - - if (Double.isInfinite(value) || Double.isNaN(value)) { - if (!session.getState().allowNaN()) { - throw Utils.newException(session.getContext(), - Utils.M_GENERATOR_ERROR, - object + " not allowed in JSON"); + private static final byte[] MIN_VALUE_BYTES_RADIX_10 = ByteList.plain(Long.toString(Long.MIN_VALUE, 10)); + + // C: fbuffer_append_long + static void appendFixnum(OutputStream buffer, byte[] buf, long number) throws IOException { + int end = buf.length; + int len = fltoa(number, buf, end); + buffer.write(buf, end - len, len); + } + + static int fltoa(long number, byte[] buf, int end) { + boolean negative = number < 0; + int tmp = end; + + if (negative) number = -number; + do { + buf[--tmp] = (byte) ((int) (number % 10) + '0'); + } while ((number /= 10) != 0); + if (negative) buf[--tmp] = '-'; + return end - tmp; + } + + private static class FloatHandler extends Handler { + @Override + void generate(ThreadContext context, Session session, RubyFloat object, OutputStream buffer) throws IOException { + generateFloat(context, session, object, buffer); + } + } + + static void generateFloat(ThreadContext context, Session session, RubyFloat object, OutputStream buffer) throws IOException { + final GeneratorState state = session.getState(context); + double value = object.getValue(); + + if (Double.isInfinite(value) || Double.isNaN(value)) { + if (!state.allowNaN()) { + if (state.strict() && state.getAsJSON() != null) { + IRubyObject castedValue = state.getAsJSON().call(context, object, context.getRuntime().getFalse()); + if (castedValue != object) { + getHandlerFor(context.runtime, castedValue).generate(context, session, castedValue, buffer); + return; } } - buffer.append(((RubyString)object.to_s()).getByteList()); + + throw Utils.buildGeneratorError(context, object, object + " not allowed in JSON").toThrowable(); } - }; + } + + if (state.rfc8785()) { + generateRfc8785Number(context, object, buffer); + } else { + buffer.write(Double.toString(value).getBytes(UTF_8)); + } + } + + private static void generateRfc8785Number(ThreadContext context, IRubyObject object, OutputStream buffer) throws IOException { + RubyProc numberProc = (RubyProc)GeneratorState.rfc8785NumberFormatterProc; + RubyString numberString = (RubyString)Helpers.invoke(context, numberProc, "call", object); + buffer.write(numberString.toString().getBytes(UTF_8)); + } - static final Handler ARRAY_HANDLER = - new Handler() { - @Override - int guessSize(Session session, RubyArray object) { - GeneratorState state = session.getState(); - int depth = state.getDepth(); - int perItem = + private static final byte[] EMPTY_ARRAY_BYTES = "[]".getBytes(); + private static class ArrayHandler extends Handler> { + @Override + int guessSize(ThreadContext context, Session session, RubyArray object) { + GeneratorState state = session.getState(context); + int depth = state.getDepth(); + int perItem = 4 // prealloc - + (depth + 1) * state.getIndent().length() // indent - + 1 + state.getArrayNl().length(); // ',' arrayNl - return 2 + object.size() * perItem; - } + + (depth + 1) * state.getIndent().length() // indent + + 1 + state.getArrayNl().length(); // ',' arrayNl + return 2 + object.size() * perItem; + } - @Override - void generate(Session session, RubyArray object, ByteList buffer) { - ThreadContext context = session.getContext(); - Ruby runtime = context.getRuntime(); - GeneratorState state = session.getState(); - int depth = state.increaseDepth(); - - ByteList indentUnit = state.getIndent(); - byte[] shift = Utils.repeat(indentUnit, depth); - - ByteList arrayNl = state.getArrayNl(); - byte[] delim = new byte[1 + arrayNl.length()]; - delim[0] = ','; - System.arraycopy(arrayNl.unsafeBytes(), arrayNl.begin(), delim, 1, - arrayNl.length()); - - session.infectBy(object); - - buffer.append((byte)'['); - buffer.append(arrayNl); - boolean firstItem = true; - for (int i = 0, t = object.getLength(); i < t; i++) { - IRubyObject element = object.eltInternal(i); - session.infectBy(element); - if (firstItem) { - firstItem = false; - } else { - buffer.append(delim); - } - buffer.append(shift); - Handler handler = getHandlerFor(runtime, element); - handler.generate(session, element, buffer); - } + @Override + void generate(ThreadContext context, Session session, RubyArray object, OutputStream buffer) throws IOException { + generateArray(context, session, object, buffer); + } + } - state.decreaseDepth(); - if (arrayNl.length() != 0) { - buffer.append(arrayNl); - buffer.append(shift, 0, state.getDepth() * indentUnit.length()); - } + static void generateArray(ThreadContext context, Session session, RubyArray object, OutputStream buffer) throws IOException { + GeneratorState state = session.getState(context); + int depth = state.increaseDepth(context); + + if (object.isEmpty()) { + buffer.write(EMPTY_ARRAY_BYTES); + state.decreaseDepth(); + return; + } - buffer.append((byte)']'); + ByteList indentUnit = state.getIndent(); + ByteList arrayNl = state.getArrayNl(); + byte[] arrayNLBytes = arrayNl.unsafeBytes(); + int arrayNLBegin = arrayNl.begin(); + int arrayNLSize = arrayNl.realSize(); + boolean arrayNLEmpty = arrayNLSize == 0; + + buffer.write('['); + buffer.write(arrayNLBytes, arrayNLBegin, arrayNLSize); + + int length = object.getLength(); + for (int i = 0; i < length; i++) { + IRubyObject element = object.eltInternal(i); + if (i > 0) { + buffer.write(','); + if (!arrayNLEmpty) { + buffer.write(arrayNLBytes, arrayNLBegin, arrayNLSize); + } } - }; + Utils.repeatWrite(buffer, indentUnit, depth); + generateFor(context, session, element, buffer); + } + + state.depth = --depth; + if (!arrayNLEmpty) { + buffer.write(arrayNLBytes, arrayNLBegin, arrayNLSize); + Utils.repeatWrite(buffer, indentUnit, depth); + } + + buffer.write((byte) ']'); + } - static final Handler HASH_HANDLER = - new Handler() { - @Override - int guessSize(Session session, RubyHash object) { - GeneratorState state = session.getState(); - int perItem = + private static final byte[] EMPTY_HASH_BYTES = "{}".getBytes(); + private static class HashHandler extends Handler { + @Override + int guessSize(ThreadContext context, Session session, RubyHash object) { + GeneratorState state = session.getState(context); + int perItem = 12 // key, colon, comma - + (state.getDepth() + 1) * state.getIndent().length() - + state.getSpaceBefore().length() - + state.getSpace().length(); - return 2 + object.size() * perItem; + + (state.getDepth() + 1) * state.getIndent().length() + + state.getSpaceBefore().length() + + state.getSpace().length(); + return 2 + object.size() * perItem; + } + + @Override + void generate(ThreadContext context, final Session session, RubyHash object, final OutputStream buffer) throws IOException { + generateHash(context, session, object, buffer); + } + } + + private static class HashKeyTracker { + enum KeyType { + UNKNOWN, + STRING, + SYMBOL, + }; + + private KeyType keyType; + private boolean done; + private RubyHash hash; + + private HashKeyTracker(RubyHash hash) { + this.hash = hash; + this.done = false; + this.keyType = KeyType.UNKNOWN; + } + + public void trackFirst(ThreadContext context, Session session, IRubyObject key) { + if (key instanceof RubyString) { + this.keyType = KeyType.STRING; + } else if (key.getType() == context.runtime.getSymbol()) { + this.keyType = KeyType.SYMBOL; + } else { + this.done = true; + report(context, session); } + } - @Override - void generate(final Session session, RubyHash object, - final ByteList buffer) { - ThreadContext context = session.getContext(); - final Ruby runtime = context.getRuntime(); - final GeneratorState state = session.getState(); - final int depth = state.increaseDepth(); - - final ByteList objectNl = state.getObjectNl(); - final byte[] indent = Utils.repeat(state.getIndent(), depth); - final ByteList spaceBefore = state.getSpaceBefore(); - final ByteList space = state.getSpace(); - - buffer.append((byte)'{'); - buffer.append(objectNl); - object.visitAll(new RubyHash.Visitor() { - private boolean firstPair = true; - - @Override - public void visit(IRubyObject key, IRubyObject value) { - if (firstPair) { - firstPair = false; - } else { - buffer.append((byte)','); - buffer.append(objectNl); - } - if (objectNl.length() != 0) buffer.append(indent); - - STRING_HANDLER.generate(session, key.asString(), buffer); - session.infectBy(key); - - buffer.append(spaceBefore); - buffer.append((byte)':'); - buffer.append(space); - - Handler valueHandler = getHandlerFor(runtime, value); - valueHandler.generate(session, value, buffer); - session.infectBy(value); + public void track(ThreadContext context, Session session, IRubyObject key) { + if (!done) { + if (keyType == KeyType.STRING) { + if (!(key instanceof RubyString)) { + this.report(context, session); + } + } else { + if (!(key.getType() == context.runtime.getSymbol())) { + this.report(context, session); } - }); - state.decreaseDepth(); - if (objectNl.length() != 0) { - buffer.append(objectNl); - buffer.append(Utils.repeat(state.getIndent(), state.getDepth())); } - buffer.append((byte)'}'); } - }; + } - static final Handler STRING_HANDLER = - new Handler() { - @Override - int guessSize(Session session, RubyString object) { - // for most applications, most strings will be just a set of - // printable ASCII characters without any escaping, so let's - // just allocate enough space for that + the quotes - return 2 + object.getByteList().length(); + private void report(ThreadContext context, Session session) { + this.done = true; + + final RuntimeInfo info = session.getInfo(context); + final GeneratorState state = session.getState(context); + + if (!state.getAllowDuplicateKey()) { + IRubyObject args[] = new IRubyObject[]{hash}; + info.jsonModule.get().callMethod(context, "on_mixed_keys_hash", args); } + } + } - @Override - void generate(Session session, RubyString object, ByteList buffer) { - RuntimeInfo info = session.getInfo(); - RubyString src; + static void generateHash(ThreadContext context, Session session, RubyHash object, OutputStream buffer) throws IOException { + final GeneratorState state = session.getState(context); + final int depth = state.increaseDepth(context); - if (object.encoding(session.getContext()) != info.utf8.get()) { - src = (RubyString)object.encode(session.getContext(), - info.utf8.get()); - } else { - src = object; + if (object.isEmpty()) { + buffer.write(EMPTY_HASH_BYTES); + state.decreaseDepth(); + return; + } + + if (state.rfc8785()) { + IRubyObject asJSON = state.strict() ? state.as_json_get(context) : context.nil; + object = (RubyHash)Helpers.invoke(context, GeneratorState.rfc8785SortKeysProc, "call", object, asJSON); + } else if (state.getSortKeysProc() != null) { + object = (RubyHash)Helpers.invoke(context, state.getSortKeysProc(), "call", object); + } + + final ByteList objectNl = state.getObjectNl(); + byte[] objectNLBytes = objectNl.unsafeBytes(); + final byte[] indent = Utils.repeat(state.getIndent(), depth); + final ByteList spaceBefore = state.getSpaceBefore(); + final ByteList space = state.getSpace(); + + buffer.write('{'); + buffer.write(objectNLBytes); + + boolean firstPair = true; + HashKeyTracker tracker = new HashKeyTracker(object); + for (RubyHash.RubyHashEntry entry : (Set) object.directEntrySet()) { + if (firstPair) { + tracker.trackFirst(context, session, (IRubyObject)entry.getKey()); + } else { + tracker.track(context, session, (IRubyObject)entry.getKey()); + } + processEntry(context, session, buffer, entry, firstPair, objectNl, indent, spaceBefore, space); + firstPair = false; + } + int oldDepth = state.decreaseDepth(); + if (!firstPair && !objectNl.isEmpty()) { + buffer.write(objectNLBytes); + } + Utils.repeatWrite(buffer, state.getIndent(), oldDepth); + buffer.write('}'); + } + + private static IRubyObject castKey(ThreadContext context, IRubyObject key) { + RubyClass keyClass = key.getType(); + Ruby runtime = context.runtime; + + if (key instanceof RubyString) { + if (keyClass == runtime.getString()) { + return key; + } else { + // C: convert_string_subclass + IRubyObject keyStr = key.callMethod(context, "to_s"); + if (!(keyStr instanceof RubyString)) { + IRubyObject className = keyClass.getRealClass().callMethod(context, "to_s"); + throw runtime.newTypeError("can't convert " + className + " to String (" + + className + "#to_s gives " + keyStr.getMetaClass().getRealClass().callMethod(context, "to_s") + ")"); } + return keyStr; + } + } else if (keyClass == runtime.getSymbol()) { + return ((RubySymbol) key).id2name(context); + } else { + return null; + } + } - session.getStringEncoder().encode(src.getByteList(), buffer); + private static void processEntry(ThreadContext context, Session session, OutputStream buffer, RubyHash.RubyHashEntry entry, boolean firstPair, ByteList objectNl, byte[] indent, ByteList spaceBefore, ByteList space) { + StringEncoder encoder = session.getStringEncoder(context); + + IRubyObject key = (IRubyObject) entry.getKey(); + IRubyObject value = (IRubyObject) entry.getValue(); + + try { + if (!firstPair) { + buffer.write((byte) ','); + buffer.write(objectNl.unsafeBytes()); } - }; + if (!objectNl.isEmpty()) buffer.write(indent); - static final Handler TRUE_HANDLER = - new KeywordHandler("true"); - static final Handler FALSE_HANDLER = - new KeywordHandler("false"); - static final Handler NIL_HANDLER = - new KeywordHandler("null"); + Ruby runtime = context.runtime; - /** - * The default handler (Object#to_json): coerces the object - * to string using #to_s, and serializes that string. - */ - static final Handler OBJECT_HANDLER = - new Handler() { - @Override - RubyString generateNew(Session session, IRubyObject object) { - RubyString str = object.asString(); - return STRING_HANDLER.generateNew(session, str); + IRubyObject keyStr = castKey(context, key); + if (keyStr == null || !(keyStr instanceof RubyString) || !encoder.hasValidEncoding((RubyString)keyStr)) { + GeneratorState state = session.getState(context); + if (state.strict()) { + if (state.getAsJSON() != null) { + key = state.getAsJSON().call(context, key, context.getRuntime().getTrue()); + keyStr = castKey(context, key); + } + + if (keyStr == null) { + throw Utils.buildGeneratorError(context, key, key.getType().name(context) + " not allowed as object key in JSON").toThrowable(); + } + } + else { + keyStr = TypeConverter.convertToType(key, runtime.getString(), "to_s"); + } } - @Override - void generate(Session session, IRubyObject object, ByteList buffer) { - RubyString str = object.asString(); - STRING_HANDLER.generate(session, str, buffer); + if (keyStr.getMetaClass() == runtime.getString()) { + generateString(context, session, (RubyString) keyStr, buffer); + } else { + Utils.ensureString(keyStr); + generateFor(context, session, keyStr, buffer); } - }; - /** - * A handler that simply calls #to_json(state) on the - * given object. - */ - static final Handler GENERIC_HANDLER = - new Handler() { - @Override - RubyString generateNew(Session session, IRubyObject object) { - if (object.respondsTo("to_json")) { - IRubyObject result = object.callMethod(session.getContext(), "to_json", - new IRubyObject[] {session.getState()}); - if (result instanceof RubyString) return (RubyString)result; - throw session.getRuntime().newTypeError("to_json must return a String"); + buffer.write(spaceBefore.unsafeBytes()); + buffer.write((byte) ':'); + buffer.write(space.unsafeBytes()); + + generateFor(context, session, value, buffer); + } catch (Throwable t) { + Helpers.throwException(t); + } + } + + private static class StringHandler extends Handler { + @Override + int guessSize(ThreadContext context, Session session, RubyString object) { + // for most applications, most strings will be just a set of + // printable ASCII characters without any escaping, so let's + // just allocate enough space for that + the quotes + return 2 + object.getByteList().length(); + } + + @Override + void generate(ThreadContext context, Session session, RubyString object, OutputStream buffer) throws IOException { + GeneratorState state = session.getState(context); + StringEncoder encoder = session.getStringEncoder(context); + + if (state.strict() && !encoder.hasValidEncoding(object) && state.getAsJSON() != null) { + IRubyObject value = state.getAsJSON().call(context, object, context.getRuntime().getFalse()); + if (value instanceof RubyString) { + object = (RubyString)value; } else { - return OBJECT_HANDLER.generateNew(session, object); + Handler handler = getHandlerFor(context.runtime, value); + handler.generate(context, session, value, buffer); + return; } } + generateString(context, session, object, buffer); + } + } + + static void generateString(ThreadContext context, Session session, RubyString object, OutputStream buffer) throws IOException { + session.getStringEncoder(context).generate(context, object, buffer); + } + + private static class FragmentHandler extends Handler { + @Override + RubyString generateNew(ThreadContext context, Session session, IRubyObject object) { + return generateFragmentNew(context, session, object); + } + + @Override + void generate(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + generateFragment(context, session, object, buffer); + } + } + + static RubyString generateFragmentNew(ThreadContext context, Session session, IRubyObject object) { + GeneratorState state = session.getState(context); + IRubyObject result = object.callMethod(context, "to_json", state); + if (result instanceof RubyString) return (RubyString) result; + throw context.runtime.newTypeError("to_json must return a String"); + } - @Override - void generate(Session session, IRubyObject object, ByteList buffer) { - RubyString result = generateNew(session, object); - buffer.append(result.getByteList()); + static void generateFragment(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + RubyString result = generateFragmentNew(context, session, object); + if (buffer instanceof BufferedOutputStream) result = result.newFrozen(); + ByteList bytes = result.getByteList(); + buffer.write(bytes.unsafeBytes(), bytes.begin(), bytes.length()); + } + + private static class SymbolHandler extends Handler { + @Override + int guessSize(ThreadContext context, Session session, RubySymbol object) { + GeneratorState state = session.getState(context); + if (state.strict()) { + return STRING_HANDLER.guessSize(context, session, object.asString()); + } else { + return GENERIC_HANDLER.guessSize(context, session, object); } - }; + } + + @Override + void generate(ThreadContext context, Session session, RubySymbol object, OutputStream buffer) throws IOException { + generateSymbol(context, session, object, buffer); + } + } + + static void generateSymbol(ThreadContext context, Session session, RubySymbol object, OutputStream buffer) throws IOException { + GeneratorState state = session.getState(context); + if (state.strict()) { + STRING_HANDLER.generate(context, session, object.asString(), buffer); + } else { + GENERIC_HANDLER.generate(context, session, object, buffer); + } + } + + private static class ObjectHandler extends Handler { + @Override + RubyString generateNew(ThreadContext context, Session session, IRubyObject object) { + return generateObjectNew(context, session, object); + } + + @Override + void generate(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + generateObject(context, session, object, buffer); + } + } + + static RubyString generateObjectNew(ThreadContext context, Session session, IRubyObject object) { + RubyString str = object.asString(); + return STRING_HANDLER.generateNew(context, session, str); + } + + static void generateObject(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + generateString(context, session, object.asString(), buffer); + } + + private static class GenericHandler extends Handler { + @Override + RubyString generateNew(ThreadContext context, Session session, IRubyObject object) { + return generateGenericNew(context, session, object); + } + + @Override + void generate(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + generateGeneric(context, session, object, buffer); + } + } + + static RubyString generateGenericNew(ThreadContext context, Session session, IRubyObject object) { + GeneratorState state = session.getState(context); + if (state.strict()) { + if (state.getAsJSON() != null) { + IRubyObject value = state.getAsJSON().call(context, object, context.getRuntime().getFalse()); + Handler handler = getHandlerFor(context.runtime, value); + if (handler == GENERIC_HANDLER) { + throw Utils.buildGeneratorError(context, object, value + " returned by as_json not allowed in JSON").toThrowable(); + } + return handler.generateNew(context, session, value); + } + throw Utils.buildGeneratorError(context, object, object + " not allowed in JSON").toThrowable(); + } else if (object.respondsTo("to_json")) { + int depth = state.depth; + IRubyObject result; + try { + result = object.callMethod(context, "to_json", state); + } finally { + state.depth = depth; + } + if (result instanceof RubyString) return (RubyString)result; + throw context.runtime.newTypeError("to_json must return a String"); + } else { + return OBJECT_HANDLER.generateNew(context, session, object); + } + } + + static void generateGeneric(ThreadContext context, Session session, IRubyObject object, OutputStream buffer) throws IOException { + RubyString result = generateGenericNew(context, session, object); + if (buffer instanceof BufferedOutputStream) result = result.newFrozen(); + ByteList bytes = result.getByteList(); + buffer.write(bytes.unsafeBytes(), bytes.begin(), bytes.length()); + } } diff --git a/java/src/json/ext/GeneratorMethods.java b/java/src/json/ext/GeneratorMethods.java index bde7a18d9..3019ae091 100644 --- a/java/src/json/ext/GeneratorMethods.java +++ b/java/src/json/ext/GeneratorMethods.java @@ -12,7 +12,6 @@ import org.jruby.RubyFixnum; import org.jruby.RubyFloat; import org.jruby.RubyHash; -import org.jruby.RubyInteger; import org.jruby.RubyModule; import org.jruby.RubyNumeric; import org.jruby.RubyString; @@ -30,8 +29,8 @@ class GeneratorMethods { /** * Populates the given module with all modules and their methods - * @param info - * @param generatorMethodsModule The module to populate + * @param info The current RuntimeInfo + * @param module The module to populate * (normally JSON::Generator::GeneratorMethods) */ static void populate(RuntimeInfo info, RubyModule module) { @@ -44,188 +43,125 @@ static void populate(RuntimeInfo info, RubyModule module) { defineMethods(module, "Object", RbObject.class); defineMethods(module, "String", RbString.class); defineMethods(module, "TrueClass", RbTrue.class); - - info.stringExtendModule = new WeakReference(module.defineModuleUnder("String") - .defineModuleUnder("Extend")); - info.stringExtendModule.get().defineAnnotatedMethods(StringExtend.class); } /** * Convenience method for defining methods on a submodule. - * @param parentModule - * @param submoduleName - * @param klass + * @param parentModule the parent module + * @param submoduleName the submodule + * @param klass the class from which to define methods */ private static void defineMethods(RubyModule parentModule, - String submoduleName, Class klass) { + String submoduleName, Class klass) { RubyModule submodule = parentModule.defineModuleUnder(submoduleName); submodule.defineAnnotatedMethods(klass); } - public static class RbHash { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyHash)vSelf, - Generator.HASH_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyHash)vSelf, Generator.HASH_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyHash)vSelf, Generator.HASH_HANDLER, arg0); } } public static class RbArray { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyArray)vSelf, - Generator.ARRAY_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyArray)vSelf, Generator.ARRAY_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyArray)vSelf, Generator.ARRAY_HANDLER, arg0); } } public static class RbInteger { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, vSelf, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, vSelf); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, vSelf, arg0); } } public static class RbFloat { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyFloat)vSelf, - Generator.FLOAT_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyFloat)vSelf, Generator.FLOAT_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyFloat)vSelf, Generator.FLOAT_HANDLER, arg0); } } public static class RbString { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyString)vSelf, - Generator.STRING_HANDLER, args); - } - - /** - * {@link RubyString String}#to_json_raw(*) - * - *

This method creates a JSON text from the result of a call to - * {@link #to_json_raw_object} of this String. - */ - @JRubyMethod(rest=true) - public static IRubyObject to_json_raw(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - RubyHash obj = toJsonRawObject(context, Utils.ensureString(vSelf)); - return Generator.generateJson(context, obj, - Generator.HASH_HANDLER, args); - } - - /** - * {@link RubyString String}#to_json_raw_object(*) - * - *

This method creates a raw object Hash, that can be nested into - * other data structures and will be unparsed as a raw string. This - * method should be used if you want to convert raw strings to JSON - * instead of UTF-8 strings, e.g. binary data. - */ - @JRubyMethod(rest=true) - public static IRubyObject to_json_raw_object(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return toJsonRawObject(context, Utils.ensureString(vSelf)); - } - - private static RubyHash toJsonRawObject(ThreadContext context, - RubyString self) { - Ruby runtime = context.getRuntime(); - RubyHash result = RubyHash.newHash(runtime); - - IRubyObject createId = RuntimeInfo.forRuntime(runtime) - .jsonModule.get().callMethod(context, "create_id"); - result.op_aset(context, createId, self.getMetaClass().to_s()); - - ByteList bl = self.getByteList(); - byte[] uBytes = bl.unsafeBytes(); - RubyArray array = runtime.newArray(bl.length()); - for (int i = bl.begin(), t = bl.begin() + bl.length(); i < t; i++) { - array.store(i, runtime.newFixnum(uBytes[i] & 0xff)); - } - - result.op_aset(context, runtime.newString("raw"), array); - return result; - } - - @JRubyMethod(required=1, module=true) - public static IRubyObject included(ThreadContext context, - IRubyObject vSelf, IRubyObject module) { - RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime()); - return module.callMethod(context, "extend", info.stringExtendModule.get()); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyString)vSelf, Generator.STRING_HANDLER); } - } - public static class StringExtend { - /** - * {@link RubyString String}#json_create(o) - * - *

Raw Strings are JSON Objects (the raw bytes are stored in an - * array for the key "raw"). The Ruby String can be created by this - * module method. - */ - @JRubyMethod(required=1) - public static IRubyObject json_create(ThreadContext context, - IRubyObject vSelf, IRubyObject vHash) { - Ruby runtime = context.getRuntime(); - RubyHash o = vHash.convertToHash(); - IRubyObject rawData = o.fastARef(runtime.newString("raw")); - if (rawData == null) { - throw runtime.newArgumentError("\"raw\" value not defined " - + "for encoded String"); - } - RubyArray ary = Utils.ensureArray(rawData); - byte[] bytes = new byte[ary.getLength()]; - for (int i = 0, t = ary.getLength(); i < t; i++) { - IRubyObject element = ary.eltInternal(i); - if (element instanceof RubyFixnum) { - bytes[i] = (byte)RubyNumeric.fix2long(element); - } else { - throw runtime.newTypeError(element, runtime.getFixnum()); - } - } - return runtime.newString(new ByteList(bytes, false)); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyString)vSelf, Generator.STRING_HANDLER, arg0); } } public static class RbTrue { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyBoolean)vSelf, - Generator.TRUE_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyBoolean)vSelf, Generator.TRUE_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyBoolean)vSelf, Generator.TRUE_HANDLER, arg0); } } public static class RbFalse { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, (RubyBoolean)vSelf, - Generator.FALSE_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, (RubyBoolean)vSelf, Generator.FALSE_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, (RubyBoolean)vSelf, Generator.FALSE_HANDLER, arg0); } } public static class RbNil { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject vSelf, IRubyObject[] args) { - return Generator.generateJson(context, vSelf, - Generator.NIL_HANDLER, args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf) { + return Generator.generateJson(context, vSelf, Generator.NIL_HANDLER); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject vSelf, IRubyObject arg0) { + return Generator.generateJson(context, vSelf, Generator.NIL_HANDLER, arg0); } } public static class RbObject { - @JRubyMethod(rest=true) - public static IRubyObject to_json(ThreadContext context, - IRubyObject self, IRubyObject[] args) { - return RbString.to_json(context, self.asString(), args); + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject self) { + return RbString.to_json(context, self.asString()); + } + + @JRubyMethod + public static IRubyObject to_json(ThreadContext context, IRubyObject self, IRubyObject arg0) { + return RbString.to_json(context, self.asString(), arg0); } } } diff --git a/java/src/json/ext/GeneratorService.java b/java/src/json/ext/GeneratorService.java index e665ad144..7d3f86e53 100644 --- a/java/src/json/ext/GeneratorService.java +++ b/java/src/json/ext/GeneratorService.java @@ -23,7 +23,8 @@ public boolean basicLoad(Ruby runtime) throws IOException { runtime.getLoadService().require("json/common"); RuntimeInfo info = RuntimeInfo.initRuntime(runtime); - info.jsonModule = new WeakReference(runtime.defineModule("JSON")); + RubyModule jsonModule = runtime.defineModule("JSON"); + info.jsonModule = new WeakReference(jsonModule); RubyModule jsonExtModule = info.jsonModule.get().defineModuleUnder("Ext"); RubyModule generatorModule = jsonExtModule.defineModuleUnder("Generator"); @@ -37,6 +38,8 @@ public boolean basicLoad(Ruby runtime) throws IOException { generatorModule.defineModuleUnder("GeneratorMethods"); GeneratorMethods.populate(info, generatorMethods); + runtime.getLoadService().require("json/ext/generator/state"); + return true; } } diff --git a/java/src/json/ext/GeneratorState.java b/java/src/json/ext/GeneratorState.java index 44a931132..a0f3dfc21 100644 --- a/java/src/json/ext/GeneratorState.java +++ b/java/src/json/ext/GeneratorState.java @@ -5,6 +5,8 @@ */ package json.ext; +import org.jcodings.specific.UTF8Encoding; + import org.jruby.Ruby; import org.jruby.RubyBoolean; import org.jruby.RubyClass; @@ -12,6 +14,7 @@ import org.jruby.RubyInteger; import org.jruby.RubyNumeric; import org.jruby.RubyObject; +import org.jruby.RubyProc; import org.jruby.RubyString; import org.jruby.anno.JRubyMethod; import org.jruby.runtime.Block; @@ -20,6 +23,7 @@ import org.jruby.runtime.Visibility; import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ByteList; +import org.jruby.util.TypeConverter; /** * The JSON::Ext::Generator::State class. @@ -30,6 +34,12 @@ * @author mernen */ public class GeneratorState extends RubyObject { + private boolean allowDuplicateKey = false; + + private static IRubyObject defaultSortKeyProc; + public static IRubyObject rfc8785NumberFormatterProc; + public static IRubyObject rfc8785SortKeysProc; + /** * The indenting unit string. Will be repeated several times for larger * indenting levels. @@ -56,6 +66,8 @@ public class GeneratorState extends RubyObject { */ private ByteList arrayNl = ByteList.EMPTY_BYTELIST; + private RubyProc asJSON; + /** * The maximum level of nesting of structures allowed. * 0 means disabled. @@ -77,11 +89,17 @@ public class GeneratorState extends RubyObject { private boolean asciiOnly = DEFAULT_ASCII_ONLY; static final boolean DEFAULT_ASCII_ONLY = false; /** - * If set to true all JSON values generated might not be - * RFC-conform JSON documents. + * If set to true the forward slash will be escaped in + * json output. */ - private boolean quirksMode = DEFAULT_QUIRKS_MODE; - static final boolean DEFAULT_QUIRKS_MODE = false; + private boolean scriptSafe = DEFAULT_SCRIPT_SAFE; + static final boolean DEFAULT_SCRIPT_SAFE = false; + /** + * If set to true types unsupported by the JSON format will + * raise a JSON::GeneratorError. + */ + private boolean strict = DEFAULT_STRICT; + static final boolean DEFAULT_STRICT = false; /** * The initial buffer length of this state. (This isn't really used on all * non-C implementations.) @@ -89,16 +107,21 @@ public class GeneratorState extends RubyObject { private int bufferInitialLength = DEFAULT_BUFFER_INITIAL_LENGTH; static final int DEFAULT_BUFFER_INITIAL_LENGTH = 1024; + /** + * Controls key sorting when generating JSON. null means keys + * are emitted in insertion order; a true value sorts keys lexicographically; + * a {@link RubyProc} is used as a comparator receiving two [key, value] pairs. + */ + private IRubyObject sortKeys; + + private boolean rfc8785 = false; + /** * The current depth (inside a #to_json call) */ - private int depth = 0; + protected int depth = 0; - static final ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klazz) { - return new GeneratorState(runtime, klazz); - } - }; + static final ObjectAllocator ALLOCATOR = GeneratorState::new; public GeneratorState(Ruby runtime, RubyClass metaClass) { super(runtime, metaClass); @@ -112,20 +135,23 @@ public GeneratorState(Ruby runtime, RubyClass metaClass) { * configured by opts, something else to create an * unconfigured instance. If opts is a State * object, it is just returned. - * @param clazzParam The receiver of the method call - * ({@link RubyClass} State) + * @param context The current thread context + * @param klass The receiver of the method call ({@link RubyClass} State) * @param opts The object to use as a base for the new State - * @param block The block passed to the method * @return A GeneratorState as determined above */ @JRubyMethod(meta=true) - public static IRubyObject from_state(ThreadContext context, - IRubyObject klass, IRubyObject opts) { + public static IRubyObject from_state(ThreadContext context, IRubyObject klass, IRubyObject opts) { return fromState(context, opts); } + @JRubyMethod(meta=true) + public static IRubyObject generate(ThreadContext context, IRubyObject klass, IRubyObject obj, IRubyObject opts, IRubyObject io) { + return fromState(context, opts).generate(context, obj, io); + } + static GeneratorState fromState(ThreadContext context, IRubyObject opts) { - return fromState(context, RuntimeInfo.forRuntime(context.getRuntime()), opts); + return fromState(context, RuntimeInfo.forRuntime(context.runtime), opts); } static GeneratorState fromState(ThreadContext context, RuntimeInfo info, @@ -136,21 +162,37 @@ static GeneratorState fromState(ThreadContext context, RuntimeInfo info, if (klass.isInstance(opts)) return (GeneratorState)opts; // if the given parameter is a Hash, pass it to the instantiator - if (context.getRuntime().getHash().isInstance(opts)) { - return (GeneratorState)klass.newInstance(context, - new IRubyObject[] {opts}, Block.NULL_BLOCK); + if (context.runtime.getHash().isInstance(opts)) { + return (GeneratorState)klass.newInstance(context, opts, Block.NULL_BLOCK); } } - // for other values, return the safe prototype - return (GeneratorState)info.getSafeStatePrototype(context).dup(); + return (GeneratorState)klass.newInstance(context, context.nil); + } + + @JRubyMethod(meta=true, name="default_sort_keys_proc=") + public static IRubyObject setDefaultSortKeyProc(IRubyObject klass, IRubyObject proc) { + defaultSortKeyProc = proc; + return proc; + } + + @JRubyMethod(meta=true, name="rfc8785_number_formatter_proc=") + public static IRubyObject setRfc8785NumberFormatterProc(IRubyObject klass, IRubyObject proc) { + rfc8785NumberFormatterProc = proc; + return proc; + } + + @JRubyMethod(meta=true, name="rfc8785_sort_keys_proc=") + public static IRubyObject setRfc8785SortKeysProc(IRubyObject klass, IRubyObject proc) { + rfc8785SortKeysProc = proc; + return proc; } /** * State#initialize(opts = {}) - * + *

* Instantiates a new State object, configured by opts. - * + *

* opts can have the following keys: * *

@@ -171,16 +213,25 @@ static GeneratorState fromState(ThreadContext context, RuntimeInfo info, * -Infinity should be generated, otherwise an exception is * thrown if these values are encountered. * This options defaults to false. + *
:script_safe + *
set to true if U+2028, U+2029 and forward slashes should be escaped + * in the json output to make it safe to include in a JavaScript tag (default: false) */ - @JRubyMethod(optional=1, visibility=Visibility.PRIVATE) - public IRubyObject initialize(ThreadContext context, IRubyObject[] args) { - configure(context, args.length > 0 ? args[0] : null); + @JRubyMethod(visibility=Visibility.PRIVATE) + public IRubyObject initialize(ThreadContext context) { + _configure(context, null); + return this; + } + + @JRubyMethod(visibility=Visibility.PRIVATE) + public IRubyObject initialize(ThreadContext context, IRubyObject arg0) { + _configure(context, arg0); return this; } @JRubyMethod public IRubyObject initialize_copy(ThreadContext context, IRubyObject vOrig) { - Ruby runtime = context.getRuntime(); + Ruby runtime = context.runtime; if (!(vOrig instanceof GeneratorState)) { throw runtime.newTypeError(vOrig, getType()); } @@ -190,12 +241,18 @@ public IRubyObject initialize_copy(ThreadContext context, IRubyObject vOrig) { this.spaceBefore = orig.spaceBefore; this.objectNl = orig.objectNl; this.arrayNl = orig.arrayNl; + this.asJSON = orig.asJSON; this.maxNesting = orig.maxNesting; this.allowNaN = orig.allowNaN; this.asciiOnly = orig.asciiOnly; - this.quirksMode = orig.quirksMode; + this.scriptSafe = orig.scriptSafe; + this.strict = orig.strict; this.bufferInitialLength = orig.bufferInitialLength; this.depth = orig.depth; + + this.allowDuplicateKey = orig.allowDuplicateKey; + this.sortKeys = orig.sortKeys; + return this; } @@ -205,44 +262,28 @@ public IRubyObject initialize_copy(ThreadContext context, IRubyObject vOrig) { * a GeneratorError exception. */ @JRubyMethod - public IRubyObject generate(ThreadContext context, IRubyObject obj) { - RubyString result = Generator.generateJson(context, obj, this); - RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime()); - result.force_encoding(context, info.utf8.get()); - return result; - } - - private static boolean matchClosingBrace(ByteList bl, int pos, int len, - int brace) { - for (int endPos = len - 1; endPos > pos; endPos--) { - int b = bl.get(endPos); - if (Character.isWhitespace(b)) continue; - return b == brace; + public IRubyObject generate(ThreadContext context, IRubyObject obj, IRubyObject io) { + IRubyObject result = Generator.generateJson(context, obj, this, io); + RuntimeInfo info = RuntimeInfo.forRuntime(context.runtime); + if (!(result instanceof RubyString)) { + return result; } - return false; - } - @JRubyMethod(name="[]", required=1) - public IRubyObject op_aref(ThreadContext context, IRubyObject vName) { - String name = vName.asJavaString(); - if (getMetaClass().isMethodBound(name, true)) { - return send(context, vName, Block.NULL_BLOCK); - } else { - IRubyObject value = getInstanceVariables().getInstanceVariable("@" + name); - return value == null ? context.nil : value; + RubyString resultString = result.convertToString(); + if (resultString.getEncoding() != UTF8Encoding.INSTANCE) { + if (resultString.isFrozen()) { + resultString = resultString.strDup(context.runtime); + } + resultString.setEncoding(UTF8Encoding.INSTANCE); + resultString.clearCodeRange(); } + + return resultString; } - @JRubyMethod(name="[]=", required=2) - public IRubyObject op_aset(ThreadContext context, IRubyObject vName, IRubyObject value) { - String name = vName.asJavaString(); - String nameWriter = name + "="; - if (getMetaClass().isMethodBound(nameWriter, true)) { - return send(context, context.getRuntime().newString(nameWriter), value, Block.NULL_BLOCK); - } else { - getInstanceVariables().setInstanceVariable("@" + name, value); - } - return context.getRuntime().getNil(); + @JRubyMethod + public IRubyObject generate(ThreadContext context, IRubyObject obj) { + return generate(context, obj, context.nil); } public ByteList getIndent() { @@ -251,11 +292,12 @@ public ByteList getIndent() { @JRubyMethod(name="indent") public RubyString indent_get(ThreadContext context) { - return context.getRuntime().newString(indent); + return context.runtime.newString(indent); } @JRubyMethod(name="indent=") public IRubyObject indent_set(ThreadContext context, IRubyObject indent) { + checkFrozen(); this.indent = prepareByteList(context, indent); return indent; } @@ -266,11 +308,12 @@ public ByteList getSpace() { @JRubyMethod(name="space") public RubyString space_get(ThreadContext context) { - return context.getRuntime().newString(space); + return context.runtime.newString(space); } @JRubyMethod(name="space=") public IRubyObject space_set(ThreadContext context, IRubyObject space) { + checkFrozen(); this.space = prepareByteList(context, space); return space; } @@ -281,12 +324,13 @@ public ByteList getSpaceBefore() { @JRubyMethod(name="space_before") public RubyString space_before_get(ThreadContext context) { - return context.getRuntime().newString(spaceBefore); + return context.runtime.newString(spaceBefore); } @JRubyMethod(name="space_before=") public IRubyObject space_before_set(ThreadContext context, IRubyObject spaceBefore) { + checkFrozen(); this.spaceBefore = prepareByteList(context, spaceBefore); return spaceBefore; } @@ -297,12 +341,13 @@ public ByteList getObjectNl() { @JRubyMethod(name="object_nl") public RubyString object_nl_get(ThreadContext context) { - return context.getRuntime().newString(objectNl); + return context.runtime.newString(objectNl); } @JRubyMethod(name="object_nl=") public IRubyObject object_nl_set(ThreadContext context, IRubyObject objectNl) { + checkFrozen(); this.objectNl = prepareByteList(context, objectNl); return objectNl; } @@ -313,46 +358,121 @@ public ByteList getArrayNl() { @JRubyMethod(name="array_nl") public RubyString array_nl_get(ThreadContext context) { - return context.getRuntime().newString(arrayNl); + return context.runtime.newString(arrayNl); } @JRubyMethod(name="array_nl=") public IRubyObject array_nl_set(ThreadContext context, IRubyObject arrayNl) { + checkFrozen(); this.arrayNl = prepareByteList(context, arrayNl); return arrayNl; } - @JRubyMethod(name="check_circular?") - public RubyBoolean check_circular_p(ThreadContext context) { - return context.getRuntime().newBoolean(maxNesting != 0); + public RubyProc getAsJSON() { + return asJSON; } - /** - * Returns the maximum level of nesting configured for this state. - */ - public int getMaxNesting() { - return maxNesting; + @JRubyMethod(name="as_json") + public IRubyObject as_json_get(ThreadContext context) { + return asJSON == null ? context.getRuntime().getFalse() : asJSON; + } + + @JRubyMethod(name="as_json=") + public IRubyObject as_json_set(ThreadContext context, IRubyObject asJSON) { + checkFrozen(); + if (asJSON.isNil() || asJSON == context.getRuntime().getFalse()) { + this.asJSON = null; + } else { + this.asJSON = (RubyProc)TypeConverter.convertToType(asJSON, context.getRuntime().getProc(), "to_proc"); + } + return asJSON; + } + + @JRubyMethod(name="check_circular?") + public RubyBoolean check_circular_p(ThreadContext context) { + return RubyBoolean.newBoolean(context, maxNesting != 0); } @JRubyMethod(name="max_nesting") public RubyInteger max_nesting_get(ThreadContext context) { - return context.getRuntime().newFixnum(maxNesting); + return context.runtime.newFixnum(maxNesting); } @JRubyMethod(name="max_nesting=") public IRubyObject max_nesting_set(IRubyObject max_nesting) { + checkFrozen(); maxNesting = RubyNumeric.fix2int(max_nesting); return max_nesting; } + /** + * Returns true if forward slashes are escaped in the json output. + */ + public boolean scriptSafe() { + return scriptSafe; + } + + @JRubyMethod(name="script_safe") + public RubyBoolean script_safe_get(ThreadContext context) { + return RubyBoolean.newBoolean(context, scriptSafe); + } + + @JRubyMethod(name="script_safe=") + public IRubyObject script_safe_set(IRubyObject script_safe) { + checkFrozen(); + scriptSafe = script_safe.isTrue(); + return script_safe.getRuntime().newBoolean(scriptSafe); + } + + @JRubyMethod(name="script_safe?") + public RubyBoolean script_safe_p(ThreadContext context) { + return RubyBoolean.newBoolean(context, scriptSafe); + } + + /** + * Returns true if strict mode is enabled. + */ + public boolean strict() { + return strict; + } + + /** + * Returns the proc used to sort the keys of an object, or + * null if keys should not be sorted. The proc receives the + * entire Hash and returns a Hash with its pairs in the desired order. + */ + public RubyProc getSortKeysProc() { + return sortKeys instanceof RubyProc ? (RubyProc) sortKeys : null; + } + + private static IRubyObject normalizeSortKeys(ThreadContext context, IRubyObject value) { + if (value instanceof RubyProc) return value; + if (value != null && value.isTrue()) { + return defaultSortKeyProc; + } + return null; + } + + @JRubyMethod(name={"strict","strict?"}) + public RubyBoolean strict_get(ThreadContext context) { + return RubyBoolean.newBoolean(context, strict); + } + + @JRubyMethod(name="strict=") + public IRubyObject strict_set(IRubyObject isStrict) { + checkFrozen(); + strict = isStrict.isTrue(); + return isStrict.getRuntime().newBoolean(strict); + } + public boolean allowNaN() { return allowNaN; } @JRubyMethod(name="allow_nan?") public RubyBoolean allow_nan_p(ThreadContext context) { - return context.getRuntime().newBoolean(allowNaN); + return RubyBoolean.newBoolean(context, allowNaN); } public boolean asciiOnly() { @@ -361,45 +481,105 @@ public boolean asciiOnly() { @JRubyMethod(name="ascii_only?") public RubyBoolean ascii_only_p(ThreadContext context) { - return context.getRuntime().newBoolean(asciiOnly); + return RubyBoolean.newBoolean(context, asciiOnly); } @JRubyMethod(name="buffer_initial_length") public RubyInteger buffer_initial_length_get(ThreadContext context) { - return context.getRuntime().newFixnum(bufferInitialLength); + return context.runtime.newFixnum(bufferInitialLength); } @JRubyMethod(name="buffer_initial_length=") public IRubyObject buffer_initial_length_set(IRubyObject buffer_initial_length) { + checkFrozen(); int newLength = RubyNumeric.fix2int(buffer_initial_length); if (newLength > 0) bufferInitialLength = newLength; return buffer_initial_length; } + @JRubyMethod(name="sort_keys") + public IRubyObject sort_keys_get(ThreadContext context) { + return sortKeys == null ? context.getRuntime().getFalse() : sortKeys; + } + + @JRubyMethod(name="sort_keys=") + public IRubyObject sort_keys_set(ThreadContext context, IRubyObject sortKeys) { + checkFrozen(); + this.sortKeys = normalizeSortKeys(context, sortKeys); + return sortKeys; + } + + @JRubyMethod(name="rfc8785?") + public IRubyObject rfc8785_p(ThreadContext context) { + return RubyBoolean.newBoolean(context, rfc8785); + } + + @JRubyMethod(name="rfc8785=") + public IRubyObject rfc8785_set(ThreadContext context, IRubyObject rfc8785) { + checkFrozen(); + this.rfc8785 = rfc8785.isTrue(); + return rfc8785; + } + + public boolean rfc8785() { + return this.rfc8785; + } + + public void validateRfc8785(ThreadContext context) { + if (!rfc8785) return; + + String option = !indent.isEmpty() ? "indent" : + !space.isEmpty() ? "space" : + !spaceBefore.isEmpty() ? "space_before" : + !objectNl.isEmpty() ? "object_nl" : + !arrayNl.isEmpty() ? "array_nl" : + asciiOnly ? "ascii_only" : + scriptSafe ? "script_safe" : + allowNaN ? "allow_nan" : null; + if (option != null) { + throw context.runtime.newArgumentError(option + " cannot be used with rfc8785"); + } + } + public int getDepth() { return depth; } @JRubyMethod(name="depth") public RubyInteger depth_get(ThreadContext context) { - return context.getRuntime().newFixnum(depth); + return context.runtime.newFixnum(depth); } @JRubyMethod(name="depth=") - public IRubyObject depth_set(IRubyObject vDepth) { + public IRubyObject depth_set(ThreadContext context, IRubyObject vDepth) { + checkFrozen(); depth = RubyNumeric.fix2int(vDepth); + if (depth < 0) { + throw context.runtime.newArgumentError("depth must be >= 0 (got: " + depth + ")"); + } return vDepth; } private ByteList prepareByteList(ThreadContext context, IRubyObject value) { RubyString str = value.convertToString(); - RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime()); - if (str.encoding(context) != info.utf8.get()) { - str = (RubyString)str.encode(context, info.utf8.get()); + if (str.getEncoding() != UTF8Encoding.INSTANCE) { + str = (RubyString)str.encode(context, context.runtime.getEncodingService().convertEncodingToRubyEncoding(UTF8Encoding.INSTANCE)); } return str.getByteList().dup(); } + @JRubyMethod(name="allow_duplicate_key?", visibility=Visibility.PRIVATE) + public IRubyObject allow_duplicate_key_p(ThreadContext context) { + if (allowDuplicateKey) { + return context.runtime.getTrue(); + } + return context.runtime.getFalse(); + } + + public boolean getAllowDuplicateKey() { + return allowDuplicateKey; + } + /** * State#configure(opts) * @@ -408,35 +588,49 @@ private ByteList prepareByteList(ThreadContext context, IRubyObject value) { * @param vOpts The options hash * @return The receiver */ - @JRubyMethod(alias = "merge") - public IRubyObject configure(ThreadContext context, IRubyObject vOpts) { + @JRubyMethod(visibility=Visibility.PRIVATE) + public IRubyObject _configure(ThreadContext context, IRubyObject vOpts) { + checkFrozen(); OptionsReader opts = new OptionsReader(context, vOpts); - ByteList indent = opts.getString("indent"); - if (indent != null) this.indent = indent; + this.indent = stringConfig(opts, "indent", this.indent); + this.space = stringConfig(opts, "space", this.space); + this.spaceBefore = stringConfig(opts, "space_before", this.spaceBefore); + this.arrayNl = stringConfig(opts, "array_nl", this.arrayNl); + this.objectNl = stringConfig(opts, "object_nl", this.objectNl); - ByteList space = opts.getString("space"); - if (space != null) this.space = space; + if (opts.hasKey("as_json")) this.asJSON = opts.getProc("as_json"); - ByteList spaceBefore = opts.getString("space_before"); - if (spaceBefore != null) this.spaceBefore = spaceBefore; + maxNesting = opts.getInt("max_nesting", maxNesting); + allowNaN = opts.getBool("allow_nan", allowNaN); + asciiOnly = opts.getBool("ascii_only", asciiOnly); + scriptSafe = opts.getBool("script_safe", scriptSafe); + strict = opts.getBool("strict", strict); + bufferInitialLength = opts.getInt("buffer_initial_length", bufferInitialLength); - ByteList arrayNl = opts.getString("array_nl"); - if (arrayNl != null) this.arrayNl = arrayNl; + depth = opts.getInt("depth", depth); + if (depth < 0) { + throw context.runtime.newArgumentError("depth must be >= 0 (got: " + depth + ")"); + } + this.allowDuplicateKey = opts.getBool("allow_duplicate_key", allowDuplicateKey); - ByteList objectNl = opts.getString("object_nl"); - if (objectNl != null) this.objectNl = objectNl; + if (opts.hasKey("sort_keys")) sortKeys = normalizeSortKeys(context, opts.get("sort_keys")); - maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING); - allowNaN = opts.getBool("allow_nan", DEFAULT_ALLOW_NAN); - asciiOnly = opts.getBool("ascii_only", DEFAULT_ASCII_ONLY); - bufferInitialLength = opts.getInt("buffer_initial_length", DEFAULT_BUFFER_INITIAL_LENGTH); + rfc8785 = opts.getBool("rfc8785", rfc8785); - depth = opts.getInt("depth", 0); + opts.ensureEmpty(); + validateRfc8785(context); return this; } + // A falsy value writes the empty string, as string_config() does in the C extension. + private static ByteList stringConfig(OptionsReader opts, String key, ByteList current) { + if (!opts.hasKey(key)) return current; + ByteList value = opts.getString(key); + return value == null ? ByteList.EMPTY_BYTELIST : value; + } + /** * State#to_h() * @@ -446,7 +640,7 @@ public IRubyObject configure(ThreadContext context, IRubyObject vOpts) { */ @JRubyMethod(alias = "to_hash") public RubyHash to_h(ThreadContext context) { - Ruby runtime = context.getRuntime(); + Ruby runtime = context.runtime; RubyHash result = RubyHash.newHash(runtime); result.op_aset(context, runtime.newSymbol("indent"), indent_get(context)); @@ -454,21 +648,26 @@ public RubyHash to_h(ThreadContext context) { result.op_aset(context, runtime.newSymbol("space_before"), space_before_get(context)); result.op_aset(context, runtime.newSymbol("object_nl"), object_nl_get(context)); result.op_aset(context, runtime.newSymbol("array_nl"), array_nl_get(context)); + result.op_aset(context, runtime.newSymbol("as_json"), as_json_get(context)); result.op_aset(context, runtime.newSymbol("allow_nan"), allow_nan_p(context)); result.op_aset(context, runtime.newSymbol("ascii_only"), ascii_only_p(context)); result.op_aset(context, runtime.newSymbol("max_nesting"), max_nesting_get(context)); + result.op_aset(context, runtime.newSymbol("script_safe"), script_safe_get(context)); + result.op_aset(context, runtime.newSymbol("strict"), strict_get(context)); result.op_aset(context, runtime.newSymbol("depth"), depth_get(context)); result.op_aset(context, runtime.newSymbol("buffer_initial_length"), buffer_initial_length_get(context)); + result.op_aset(context, runtime.newSymbol("sort_keys"), sort_keys_get(context)); + result.op_aset(context, runtime.newSymbol("allow_duplicate_key"), allow_duplicate_key_p(context)); + for (String name: getInstanceVariableNameList()) { result.op_aset(context, runtime.newSymbol(name.substring(1)), getInstanceVariables().getInstanceVariable(name)); } return result; } - public int increaseDepth() { - depth++; - checkMaxNesting(); - return depth; + public int increaseDepth(ThreadContext context) { + checkMaxNesting(context); + return ++depth; } public int decreaseDepth() { @@ -476,15 +675,12 @@ public int decreaseDepth() { } /** - * Checks if the current depth is allowed as per this state's options. - * @param context - * @param depth The corrent depth + * Checks if increasing the depth is allowed as per this state's options. + * @param context The current context */ - private void checkMaxNesting() { - if (maxNesting != 0 && depth > maxNesting) { - depth--; - throw Utils.newException(getRuntime().getCurrentContext(), - Utils.M_NESTING_ERROR, "nesting of " + depth + " is too deep"); + private void checkMaxNesting(ThreadContext context) { + if (maxNesting != 0 && depth >= maxNesting) { + throw Utils.newException(context, Utils.M_NESTING_ERROR, "nesting of " + (depth + 1) + " is too deep. Did you try to serialize objects with circular references?"); } } } diff --git a/java/src/json/ext/OptionsReader.java b/java/src/json/ext/OptionsReader.java index 70426d427..d93d3cd79 100644 --- a/java/src/json/ext/OptionsReader.java +++ b/java/src/json/ext/OptionsReader.java @@ -5,14 +5,17 @@ */ package json.ext; +import org.jcodings.specific.UTF8Encoding; import org.jruby.Ruby; import org.jruby.RubyClass; import org.jruby.RubyHash; import org.jruby.RubyNumeric; +import org.jruby.RubyProc; import org.jruby.RubyString; import org.jruby.runtime.ThreadContext; import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ByteList; +import org.jruby.util.TypeConverter; final class OptionsReader { private final ThreadContext context; @@ -22,16 +25,20 @@ final class OptionsReader { OptionsReader(ThreadContext context, IRubyObject vOpts) { this.context = context; - this.runtime = context.getRuntime(); + this.runtime = context.runtime; + + RubyHash options; if (vOpts == null || vOpts.isNil()) { - opts = null; + options = null; } else if (vOpts.respondsTo("to_hash")) { - opts = vOpts.convertToHash(); + options = vOpts.convertToHash(); } else if (vOpts.respondsTo("to_h")) { - opts = vOpts.callMethod(context, "to_h").convertToHash(); + options = vOpts.callMethod(context, "to_h").convertToHash(); } else { - opts = vOpts.convertToHash(); /* Should just raise the correct TypeError */ + options = vOpts.convertToHash(); /* Should just raise the correct TypeError */ } + + this.opts = options == null ? null : (RubyHash)options.dup(); } private RuntimeInfo getRuntimeInfo() { @@ -40,14 +47,37 @@ private RuntimeInfo getRuntimeInfo() { return info; } + + void ensureEmpty() { + if (opts == null) return; + + if (opts.size() == 1) { + throw context.runtime.newArgumentError("unknown keyword: " + opts.keys().first()); + } + + if (opts.size() > 1) { + throw context.runtime.newArgumentError("unknown keywords: " + opts.keys().join(context, runtime.newString(", "))); + } + } + /** - * Efficiently looks up items with a {@link RubySymbol Symbol} key + * Efficiently looks up items with a {@link org.jruby.RubySymbol Symbol} key * @param key The Symbol name to look up for * @return The item in the {@link RubyHash Hash}, or null * if not found */ IRubyObject get(String key) { - return opts == null ? null : opts.fastARef(runtime.newSymbol(key)); + if (opts == null) { + return null; + } + return opts.delete(runtime.newSymbol(key)); + } + + boolean hasKey(String key) { + if (opts == null) { + return false; + } + return opts.hasKey(runtime.newSymbol(key)); } boolean getBool(String key, boolean defaultValue) { @@ -69,7 +99,7 @@ int getInt(String key, int defaultValue) { * @param key The Symbol name to look up for * @return null if the key is not in the Hash or if * its value evaluates to false - * @throws RaiseException TypeError if the value does not + * @throws org.jruby.exceptions.RaiseException TypeError if the value does not * evaluate to false and can't be * converted to string */ @@ -83,9 +113,8 @@ RubyString getString(String key, RubyString defaultValue) { if (value == null || !value.isTrue()) return defaultValue; RubyString str = value.convertToString(); - RuntimeInfo info = getRuntimeInfo(); - if (str.encoding(context) != info.utf8.get()) { - str = (RubyString)str.encode(context, info.utf8.get()); + if (str.getEncoding() != UTF8Encoding.INSTANCE) { + str = (RubyString)str.encode(context, context.runtime.getEncodingService().convertEncodingToRubyEncoding(UTF8Encoding.INSTANCE)); } return str; } @@ -110,4 +139,10 @@ public RubyHash getHash(String key) { if (value == null || value.isNil()) return new RubyHash(runtime); return (RubyHash) value; } + + RubyProc getProc(String key) { + IRubyObject value = get(key); + if (value == null || value.isNil() || value == runtime.getFalse()) return null; + return (RubyProc)TypeConverter.convertToType(value, runtime.getProc(), "to_proc"); + } } diff --git a/java/src/json/ext/Parser.java b/java/src/json/ext/Parser.java index 647afca89..eb5ce3a9a 100644 --- a/java/src/json/ext/Parser.java +++ b/java/src/json/ext/Parser.java @@ -1,25 +1,19 @@ - -// line 1 "Parser.rl" -/* - * This code is copyrighted work by Daniel Luz . - * - * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt - */ package json.ext; +import org.jcodings.Encoding; +import org.jcodings.specific.ASCIIEncoding; +import org.jcodings.specific.UTF8Encoding; import org.jruby.Ruby; import org.jruby.RubyArray; import org.jruby.RubyClass; -import org.jruby.RubyEncoding; +import org.jruby.RubyException; import org.jruby.RubyFloat; import org.jruby.RubyHash; -import org.jruby.RubyInteger; -import org.jruby.RubyModule; -import org.jruby.RubyNumeric; import org.jruby.RubyObject; +import org.jruby.RubyProc; import org.jruby.RubyString; +import org.jruby.RubySymbol; import org.jruby.anno.JRubyMethod; -import org.jruby.exceptions.JumpException; import org.jruby.exceptions.RaiseException; import org.jruby.runtime.Block; import org.jruby.runtime.ObjectAllocator; @@ -28,203 +22,140 @@ import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ByteList; import org.jruby.util.ConvertBytes; +import org.jruby.util.StringSupport; +import org.jruby.util.ConvertDouble.DoubleConverter; +import org.jruby.util.ConvertBytes; +import org.jruby.util.ConvertDouble.DoubleConverter; +import org.jruby.util.ConvertBytes; +import org.jruby.util.ConvertDouble.DoubleConverter; +import org.jruby.util.ConvertBytes; +import org.jruby.util.ConvertDouble.DoubleConverter; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.Arrays; +import java.util.function.BiFunction; + +import static json.ext.Ryu.ryuS2dFromParts; import static org.jruby.util.ConvertDouble.DoubleConverter; /** - * The JSON::Ext::Parser class. - * - *

This is the JSON parser implemented as a Java class. To use it as the - * standard parser, set - *

JSON.parser = JSON::Ext::Parser
- * This is performed for you when you include "json/ext". - * - *

This class does not perform the actual parsing, just acts as an interface - * to Ruby code. When the {@link #parse()} method is invoked, a - * Parser.ParserSession object is instantiated, which handles the process. - * - * @author mernen + * This is a port of the parser from the C extension. */ public class Parser extends RubyObject { private final RuntimeInfo info; - private RubyString vSource; - private RubyString createId; - private boolean createAdditions; private int maxNesting; private boolean allowNaN; + private boolean allowTrailingComma; + private boolean allowComments; + private boolean allowControlCharacters; + private boolean allowInvalidEscape; + private boolean allowDuplicateKey; private boolean symbolizeNames; - private RubyClass objectClass; - private RubyClass arrayClass; + private boolean freeze; + private RubyProc onLoadProc; private RubyClass decimalClass; - private RubyHash match_string; + BiFunction decimalFactory; private static final int DEFAULT_MAX_NESTING = 100; - private static final ByteList JSON_MINUS_INFINITY = new ByteList(ByteList.plain("-Infinity")); + // Maximum number of deprecation warnings emitted per parse, to avoid + // flooding output on pathological inputs. + private static final int MAX_DEPRECATIONS = 5; + // constant names in the JSON module containing those values private static final String CONST_NAN = "NaN"; private static final String CONST_INFINITY = "Infinity"; private static final String CONST_MINUS_INFINITY = "MinusInfinity"; - static final ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klazz) { - return new Parser(runtime, klazz); - } - }; - - /** - * Multiple-value return for internal parser methods. - * - *

All the parseStuff methods return instances of - * ParserResult when successful, or null when - * there's a problem with the input data. - */ - static final class ParserResult { - /** - * The result of the successful parsing. Should never be - * null. - */ - IRubyObject result; - /** - * The point where the parser returned. - */ - int p; + private static final String VALIDATE_UTF8_STRINGS = "jruby.json.validateUTF8Strings"; + private static final String VALIDATE_UTF8_STRINGS_DEFAULT = "true"; + private static final boolean validateUTF8Strings; - void update(IRubyObject result, int p) { - this.result = result; - this.p = p; - } + static { + String enable = System.getProperty(VALIDATE_UTF8_STRINGS, VALIDATE_UTF8_STRINGS_DEFAULT); + validateUTF8Strings = "true".equalsIgnoreCase(enable) || "1".equals(enable); } + static final ObjectAllocator ALLOCATOR = Parser::new; + public Parser(Ruby runtime, RubyClass metaClass) { super(runtime, metaClass); info = RuntimeInfo.forRuntime(runtime); } - /** - * Parser.new(source, opts = {}) - * - *

Creates a new JSON::Ext::Parser instance for the string - * source. - * It will be configured by the opts Hash. - * opts can have the following keys: - * - *

- *
:max_nesting - *
The maximum depth of nesting allowed in the parsed data - * structures. Disable depth checking with :max_nesting => false|nil|0, - * it defaults to 100. - * - *
:allow_nan - *
If set to true, allow NaN, - * Infinity and -Infinity in defiance of RFC 4627 - * to be parsed by the Parser. This option defaults to false. - * - *
:symbolize_names - *
If set to true, returns symbols for the names (keys) in - * a JSON object. Otherwise strings are returned, which is also the default. - * - *
:create_additions - *
If set to false, the Parser doesn't create additions - * even if a matching class and create_id was found. This option - * defaults to true. - * - *
:object_class - *
Defaults to Hash. - * - *
:array_class - *
Defaults to Array. - * - *
:decimal_class - *
Specifies which class to use instead of the default (Float) when - * parsing decimal numbers. This class must accept a single string argument - * in its constructor. - *
- */ - @JRubyMethod(name = "new", required = 1, optional = 1, meta = true) - public static IRubyObject newInstance(IRubyObject clazz, IRubyObject[] args, Block block) { - Parser parser = (Parser)((RubyClass)clazz).allocate(); - - parser.callInit(args, block); + @JRubyMethod(name = "new", meta = true) + public static IRubyObject newInstance(IRubyObject clazz, IRubyObject arg0, Block block) { + Parser config = (Parser)((RubyClass)clazz).allocate(); + config.callInit(arg0, block); + return config; + } - return parser; + @JRubyMethod(name = "new", meta = true) + public static IRubyObject newInstance(IRubyObject clazz, IRubyObject arg0, IRubyObject arg1, Block block) { + Parser config = (Parser)((RubyClass)clazz).allocate(); + config.callInit(arg0, arg1, block); + return config; } - @JRubyMethod(required = 1, optional = 1, visibility = Visibility.PRIVATE) - public IRubyObject initialize(ThreadContext context, IRubyObject[] args) { - Ruby runtime = context.getRuntime(); - if (this.vSource != null) { - throw runtime.newTypeError("already initialized instance"); - } + @JRubyMethod(visibility = Visibility.PRIVATE) + public IRubyObject initialize(ThreadContext context, IRubyObject options) { + checkFrozen(); + Ruby runtime = context.runtime; - OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null); + OptionsReader opts = new OptionsReader(context, options); this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING); this.allowNaN = opts.getBool("allow_nan", false); + this.allowComments = opts.getBool("allow_comments", false); + this.allowControlCharacters = opts.getBool("allow_control_characters", false); + this.allowInvalidEscape = opts.getBool("allow_invalid_escape", false); + this.allowTrailingComma = opts.getBool("allow_trailing_comma", false); this.symbolizeNames = opts.getBool("symbolize_names", false); - this.createId = opts.getString("create_id", getCreateId(context)); - this.createAdditions = opts.getBool("create_additions", false); - this.objectClass = opts.getClass("object_class", runtime.getHash()); - this.arrayClass = opts.getClass("array_class", runtime.getArray()); + this.allowDuplicateKey = opts.getBool("allow_duplicate_key", false); + + this.freeze = opts.getBool("freeze", false); + this.onLoadProc = opts.getProc("on_load"); + this.decimalClass = opts.getClass("decimal_class", null); - this.match_string = opts.getHash("match_string"); - if(symbolizeNames && createAdditions) { - throw runtime.newArgumentError( - "options :symbolize_names and :create_additions cannot be " + - " used in conjunction" - ); + if (decimalClass == null) { + this.decimalFactory = this::createFloat; + } else if (decimalClass == runtime.getClass("BigDecimal")) { + this.decimalFactory = this::createBigDecimal; + } else { + this.decimalFactory = this::createCustomDecimal; } - this.vSource = args[0].convertToString(); - this.vSource = convertEncoding(context, vSource); + + opts.ensureEmpty(); return this; } + public IRubyObject onLoad(ThreadContext context, IRubyObject object) { + if (onLoadProc == null) { + return object; + } else { + return onLoadProc.call(context, object); + } + } + /** * Checks the given string's encoding. If a non-UTF-8 encoding is detected, * a converted copy is returned. * Returns the source string if no conversion is needed. */ private RubyString convertEncoding(ThreadContext context, RubyString source) { - RubyEncoding encoding = (RubyEncoding)source.encoding(context); - if (encoding == info.ascii8bit.get()) { - if (source.isFrozen()) { - source = (RubyString) source.dup(); - } - source.force_encoding(context, info.utf8.get()); - } else { - source = (RubyString) source.encode(context, info.utf8.get()); + Encoding encoding = source.getEncoding(); + if (encoding == ASCIIEncoding.INSTANCE) { + source = (RubyString) source.dup(); + source.setEncoding(UTF8Encoding.INSTANCE); + source.clearCodeRange(); + } else if (encoding != UTF8Encoding.INSTANCE) { + source = (RubyString) source.encode(context, context.runtime.getEncodingService().convertEncodingToRubyEncoding(UTF8Encoding.INSTANCE)); } return source; } - /** - * Checks the first four bytes of the given ByteList to infer its encoding, - * using the principle demonstrated on section 3 of RFC 4627 (JSON). - */ - private static String sniffByteList(ByteList bl) { - if (bl.length() < 4) return null; - if (bl.get(0) == 0 && bl.get(2) == 0) { - return bl.get(1) == 0 ? "utf-32be" : "utf-16be"; - } - if (bl.get(1) == 0 && bl.get(3) == 0) { - return bl.get(2) == 0 ? "utf-32le" : "utf-16le"; - } - return null; - } - - /** - * Assumes the given (binary) RubyString to be in the given encoding, then - * converts it to UTF-8. - */ - private RubyString reinterpretEncoding(ThreadContext context, - RubyString str, String sniffedEncoding) { - RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding); - RubyEncoding targetEncoding = info.utf8.get(); - RubyString dup = (RubyString)str.dup(); - dup.force_encoding(context, actualEncoding); - return (RubyString)dup.encode_bang(context, targetEncoding); - } - /** * Parser#parse() * @@ -232,40 +163,28 @@ private RubyString reinterpretEncoding(ThreadContext context, * complete data structure as a result. */ @JRubyMethod - public IRubyObject parse(ThreadContext context) { - return new ParserSession(this, context, info).parse(); + public IRubyObject parse(ThreadContext context, IRubyObject source) { + // Like rb_str_new_frozen in parser.c: the caller's string becomes shared, so mutating it during parsing + // (e.g. from a decimal_class callback) copies its bytes instead of changing the ones being parsed. + RubyString frozenSource = convertEncoding(context, source.convertToString()).newFrozen(); + return new ParserSession(this, frozenSource, info).parse(context); } - /** - * Parser#source() - * - *

Returns a copy of the current source string, that was - * used to construct this Parser. - */ - @JRubyMethod(name = "source") - public IRubyObject source_get() { - return checkAndGetSource().dup(); + private RubyFloat createFloat(final ThreadContext context, final ByteList num) { + return RubyFloat.newFloat(context.runtime, new DoubleConverter().parse(num, true, true)); } - public RubyString checkAndGetSource() { - if (vSource != null) { - return vSource; - } else { - throw getRuntime().newTypeError("uninitialized instance"); - } + private IRubyObject createBigDecimal(final ThreadContext context, final ByteList num) { + final Ruby runtime = context.runtime; + return runtime.getKernel().callMethod(context, "BigDecimal", runtime.newString(num)); } - /** - * Queries JSON.create_id. Returns null if it is - * set to nil or false, and a String if not. - */ - private RubyString getCreateId(ThreadContext context) { - IRubyObject v = info.jsonModule.get().callMethod(context, "create_id"); - return v.isTrue() ? v.convertToString() : null; + private IRubyObject createCustomDecimal(final ThreadContext context, final ByteList num) { + return decimalClass.newInstance(context, context.runtime.newString(num), Block.NULL_BLOCK); } /** - * A string parsing session. + * A single parsing session over one source string. * *

Once a ParserSession is instantiated, the source string should not * change until the parsing is complete. The ParserSession object assumes @@ -273,2063 +192,703 @@ private RubyString getCreateId(ThreadContext context) { * {@link ByteList}, which in turn must still be bound to the same * byte[] value (and on the same offset). */ - // Ragel uses lots of fall-through - @SuppressWarnings("fallthrough") - private static class ParserSession { - private final Parser parser; - private final ThreadContext context; - private final RuntimeInfo info; - private final ByteList byteList; - private final ByteList view; - private final byte[] data; - private final StringDecoder decoder; - private int currentNesting = 0; - private final DoubleConverter dc; - - // initialization value for all state variables. - // no idea about the origins of this value, ask Flori ;) - private static final int EVIL = 0x666; - - private ParserSession(Parser parser, ThreadContext context, RuntimeInfo info) { - this.parser = parser; - this.context = context; - this.info = info; - this.byteList = parser.checkAndGetSource().getByteList(); - this.data = byteList.unsafeBytes(); - this.view = new ByteList(data, false); - this.decoder = new StringDecoder(context); - this.dc = new DoubleConverter(); - } - - private RaiseException unexpectedToken(int absStart, int absEnd) { - RubyString msg = getRuntime().newString("unexpected token at '") - .cat(data, absStart, absEnd - absStart) - .cat((byte)'\''); - return newException(Utils.M_PARSER_ERROR, msg); - } - - private Ruby getRuntime() { - return context.getRuntime(); - } - - -// line 339 "Parser.rl" - - - -// line 321 "Parser.java" -private static byte[] init__JSON_value_actions_0() -{ - return new byte [] { - 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, - 5, 1, 6, 1, 7, 1, 8, 1, 9 - }; -} - -private static final byte _JSON_value_actions[] = init__JSON_value_actions_0(); + private static final class ParserSession { + private static final int INITIAL_FRAME_CAPACITY = 32; + private static final int INITIAL_VALUE_CAPACITY = 64; + // Integers with fewer than this many digits are built directly from a + // long accumulated during the digit scan; longer ones fall back to + // ConvertBytes (Bignum). 17 digits (< 1e17) always fit a signed long, + // including after negation. Mirrors parser.c's MAX_FAST_INTEGER_SIZE. + private static final int MAX_FAST_INTEGER_SIZE = 18; -private static byte[] init__JSON_value_key_offsets_0() -{ - return new byte [] { - 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 - }; -} - -private static final byte _JSON_value_key_offsets[] = init__JSON_value_key_offsets_0(); + // Same idea as the rvalue_cache in the C extension. + // + // This is bigger than the C implementation as this is + // heap allocated. + private static final int KEY_CACHE_CAPA = 128; + private static final int KEY_CACHE_MAX_ENTRY_LENGTH = 55; + private static final long SPACES = 0x2020202020202020L; -private static char[] init__JSON_value_trans_keys_0() -{ - return new char [] { - 34, 45, 73, 78, 91, 102, 110, 116, 123, 48, 57, 110, - 102, 105, 110, 105, 116, 121, 97, 78, 97, 108, 115, 101, - 117, 108, 108, 114, 117, 101, 0 - }; -} - -private static final char _JSON_value_trans_keys[] = init__JSON_value_trans_keys_0(); - - -private static byte[] init__JSON_value_single_lengths_0() -{ - return new byte [] { - 0, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 - }; -} + private enum FrameType { + ROOT(FramePhase.DONE), + ARRAY(FramePhase.ARRAY_COMMA), + OBJECT(FramePhase.OBJECT_COMMA); -private static final byte _JSON_value_single_lengths[] = init__JSON_value_single_lengths_0(); + private final FramePhase nextPhase; - -private static byte[] init__JSON_value_range_lengths_0() -{ - return new byte [] { - 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_value_range_lengths[] = init__JSON_value_range_lengths_0(); - - -private static byte[] init__JSON_value_index_offsets_0() -{ - return new byte [] { - 0, 0, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, - 31, 33, 35, 37, 39, 41, 43, 45, 47, 49 - }; -} - -private static final byte _JSON_value_index_offsets[] = init__JSON_value_index_offsets_0(); - - -private static byte[] init__JSON_value_trans_targs_0() -{ - return new byte [] { - 21, 21, 2, 9, 21, 11, 15, 18, 21, 21, 0, 3, - 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 21, - 0, 10, 0, 21, 0, 12, 0, 13, 0, 14, 0, 21, - 0, 16, 0, 17, 0, 21, 0, 19, 0, 20, 0, 21, - 0, 0, 0 - }; -} - -private static final byte _JSON_value_trans_targs[] = init__JSON_value_trans_targs_0(); - - -private static byte[] init__JSON_value_trans_actions_0() -{ - return new byte [] { - 13, 11, 0, 0, 15, 0, 0, 0, 17, 11, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 3, - 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 5, - 0, 0, 0 - }; -} - -private static final byte _JSON_value_trans_actions[] = init__JSON_value_trans_actions_0(); - - -private static byte[] init__JSON_value_from_state_actions_0() -{ - return new byte [] { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19 - }; -} - -private static final byte _JSON_value_from_state_actions[] = init__JSON_value_from_state_actions_0(); - - -static final int JSON_value_start = 1; -static final int JSON_value_first_final = 21; -static final int JSON_value_error = 0; - -static final int JSON_value_en_main = 1; - - -// line 445 "Parser.rl" - - - void parseValue(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject result = null; - - -// line 443 "Parser.java" - { - cs = JSON_value_start; - } - -// line 452 "Parser.rl" - -// line 450 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _acts = _JSON_value_from_state_actions[cs]; - _nacts = (int) _JSON_value_actions[_acts++]; - while ( _nacts-- > 0 ) { - switch ( _JSON_value_actions[_acts++] ) { - case 9: -// line 430 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } - break; -// line 482 "Parser.java" - } - } - - _match: do { - _keys = _JSON_value_key_offsets[cs]; - _trans = _JSON_value_index_offsets[cs]; - _klen = _JSON_value_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_value_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_value_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_value_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_value_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_value_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - cs = _JSON_value_trans_targs[_trans]; - - if ( _JSON_value_trans_actions[_trans] != 0 ) { - _acts = _JSON_value_trans_actions[_trans]; - _nacts = (int) _JSON_value_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_value_actions[_acts++] ) - { - case 0: -// line 347 "Parser.rl" - { - result = getRuntime().getNil(); - } - break; - case 1: -// line 350 "Parser.rl" - { - result = getRuntime().getFalse(); - } - break; - case 2: -// line 353 "Parser.rl" - { - result = getRuntime().getTrue(); - } - break; - case 3: -// line 356 "Parser.rl" - { - if (parser.allowNaN) { - result = getConstant(CONST_NAN); - } else { - throw unexpectedToken(p - 2, pe); - } - } - break; - case 4: -// line 363 "Parser.rl" - { - if (parser.allowNaN) { - result = getConstant(CONST_INFINITY); - } else { - throw unexpectedToken(p - 7, pe); - } - } - break; - case 5: -// line 370 "Parser.rl" - { - if (pe > p + 8 && - absSubSequence(p, p + 9).equals(JSON_MINUS_INFINITY)) { - - if (parser.allowNaN) { - result = getConstant(CONST_MINUS_INFINITY); - {p = (( p + 10))-1;} - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - throw unexpectedToken(p, pe); - } - } - parseFloat(res, p, pe); - if (res.result != null) { - result = res.result; - {p = (( res.p))-1;} - } - parseInteger(res, p, pe); - if (res.result != null) { - result = res.result; - {p = (( res.p))-1;} - } - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } - break; - case 6: -// line 396 "Parser.rl" - { - parseString(res, p, pe); - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - result = res.result; - {p = (( res.p))-1;} - } - } - break; - case 7: -// line 406 "Parser.rl" - { - currentNesting++; - parseArray(res, p, pe); - currentNesting--; - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - result = res.result; - {p = (( res.p))-1;} - } - } - break; - case 8: -// line 418 "Parser.rl" - { - currentNesting++; - parseObject(res, p, pe); - currentNesting--; - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - result = res.result; - {p = (( res.p))-1;} - } + FrameType(FramePhase nextPhase) { + this.nextPhase = nextPhase; } - break; -// line 654 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 453 "Parser.rl" - - if (cs >= JSON_value_first_final && result != null) { - res.update(result, p); - } else { - res.update(null, p); + + FramePhase nextPhase() { + return nextPhase; } } - -// line 684 "Parser.java" -private static byte[] init__JSON_integer_actions_0() -{ - return new byte [] { - 0, 1, 0 - }; -} - -private static final byte _JSON_integer_actions[] = init__JSON_integer_actions_0(); - - -private static byte[] init__JSON_integer_key_offsets_0() -{ - return new byte [] { - 0, 0, 4, 7, 9, 9 - }; -} - -private static final byte _JSON_integer_key_offsets[] = init__JSON_integer_key_offsets_0(); - - -private static char[] init__JSON_integer_trans_keys_0() -{ - return new char [] { - 45, 48, 49, 57, 48, 49, 57, 48, 57, 48, 57, 0 - }; -} - -private static final char _JSON_integer_trans_keys[] = init__JSON_integer_trans_keys_0(); - - -private static byte[] init__JSON_integer_single_lengths_0() -{ - return new byte [] { - 0, 2, 1, 0, 0, 0 - }; -} - -private static final byte _JSON_integer_single_lengths[] = init__JSON_integer_single_lengths_0(); - + private enum FramePhase { + DONE, + ARRAY_COMMA, + OBJECT_COMMA, + VALUE, + OBJECT_KEY, + OBJECT_COLON + } -private static byte[] init__JSON_integer_range_lengths_0() -{ - return new byte [] { - 0, 1, 1, 1, 0, 1 - }; -} + private static final class Frame { + FrameType type; + FramePhase phase; + // The position within the value stack when this frame was created. + int valueStackHead; + // The cursor position when we encountered a '{'. + // Used for error message reporting when decoding an JSON object. + int startCursor; + } -private static final byte _JSON_integer_range_lengths[] = init__JSON_integer_range_lengths_0(); + private final Parser config; + private final RuntimeInfo info; + private final ByteList byteList; + private final ByteList view; + private final byte[] data; + // Little-endian view over {@link #data}, used by the SWAR string scan + // so that {@link Long#numberOfTrailingZeros} locates the first + // interesting" byte within an 8-byte chunk. + private final ByteBuffer chunks; + private final StringScanner scanner; + private final StringDecoder decoder; + private final int begin; + private final int end; + private int cursor; -private static byte[] init__JSON_integer_index_offsets_0() -{ - return new byte [] { - 0, 0, 4, 7, 9, 10 - }; -} + private ThreadContext context; -private static final byte _JSON_integer_index_offsets[] = init__JSON_integer_index_offsets_0(); + // Integer value accumulated by the most recent scanDigits() call. + private long digitsValue; + private int currentNesting = 0; + private int inArray = 0; -private static byte[] init__JSON_integer_indicies_0() -{ - return new byte [] { - 0, 2, 3, 1, 2, 3, 1, 1, 4, 1, 3, 4, - 0 - }; -} + private final IRubyObject[] keyCache = new IRubyObject[KEY_CACHE_CAPA]; + private int keyCacheLength = 0; + private int emittedDeprecations = 0; -private static final byte _JSON_integer_indicies[] = init__JSON_integer_indicies_0(); + private Frame[] frameStack = new Frame[INITIAL_FRAME_CAPACITY]; + private int frameDepth = 0; -private static byte[] init__JSON_integer_trans_targs_0() -{ - return new byte [] { - 2, 0, 3, 5, 4 - }; -} + private IRubyObject[] valueStack = new IRubyObject[INITIAL_VALUE_CAPACITY]; + private int valueTop = 0; -private static final byte _JSON_integer_trans_targs[] = init__JSON_integer_trans_targs_0(); + private ParserSession(Parser config, RubyString source, RuntimeInfo info) { + this.config = config; + this.info = info; + this.byteList = source.getByteList(); + this.data = byteList.unsafeBytes(); + this.chunks = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN); + this.scanner = StringScanner.getInstance(); + this.view = new ByteList(data, false); + this.begin = byteList.begin(); + this.end = begin + byteList.length(); + this.decoder = new StringDecoder(config.allowControlCharacters, config.allowInvalidEscape); + } + public IRubyObject parse(ThreadContext context) { + this.context = context; + this.cursor = begin; + pushFrame(FrameType.ROOT, FramePhase.VALUE, 0, -1); -private static byte[] init__JSON_integer_trans_actions_0() -{ - return new byte [] { - 0, 0, 0, 0, 1 - }; -} + IRubyObject result = run(); -private static final byte _JSON_integer_trans_actions[] = init__JSON_integer_trans_actions_0(); + // Only trailing whitespace (and comments) may follow the document. + eatWhitespace(); + if (cursor < end) { + throw unexpectedToken(cursor, end); + } + return result; + } + private IRubyObject run() { + while (true) { + Frame frame = topFrame(); + + switch (frame.phase) { + case DONE: + return valueStack[valueTop - 1]; + + case VALUE: { + eatWhitespace(); + IRubyObject value; + byte c = peek(); + switch (c) { + case 'n': + if (matchKeyword("null")) { value = context.nil; break; } + throw unexpectedToken(cursor, end); + case 't': + if (matchKeyword("true")) { value = context.tru; break; } + throw unexpectedToken(cursor, end); + case 'f': + if (matchKeyword("false")) { value = context.fals; break; } + throw unexpectedToken(cursor, end); + case 'N': + if (config.allowNaN && matchKeyword("NaN")) { + value = getConstant(CONST_NAN); + break; + } + throw unexpectedToken(cursor, end); + case 'I': + if (config.allowNaN && matchKeyword("Infinity")) { + value = getConstant(CONST_INFINITY); + break; + } + throw unexpectedToken(cursor, end); + case '-': + cursor++; + if (config.allowNaN && matchKeyword("Infinity")) { + value = getConstant(CONST_MINUS_INFINITY); + } else { + value = parseNumber(cursor - 1, peek(), true); + } + break; + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + value = parseNumber(cursor, c, false); + break; + case '"': + value = parseString(false); + break; + case '[': { + cursor++; + eatWhitespace(); + if (peek() == ']') { + cursor++; + value = decodeArray(0); + break; + } + currentNesting++; + checkNesting(); + inArray++; + // Phase stays VALUE: the next iteration reads + // the first element. + pushFrame(FrameType.ARRAY, FramePhase.VALUE, valueTop, -1); + continue; + } + case '{': { + int objectStart = cursor; + cursor++; + eatWhitespace(); + if (peek() == '}') { + cursor++; + value = decodeObject(0); + break; + } + currentNesting++; + checkNesting(); + // Phase KEY: the next iteration reads the first key. + pushFrame(FrameType.OBJECT, FramePhase.OBJECT_KEY, valueTop, objectStart); + continue; + } + case 0: + throw parseError("unexpected end of input"); + default: + throw unexpectedToken(cursor, end); + } -static final int JSON_integer_start = 1; -static final int JSON_integer_first_final = 3; -static final int JSON_integer_error = 0; + pushValue(value); + valueCompleted(frame); + continue; + } -static final int JSON_integer_en_main = 1; + case OBJECT_KEY: { + eatWhitespace(); + if (peek() == '"') { + pushValue(parseString(true)); + frame.phase = FramePhase.OBJECT_COLON; + continue; + } + throw unexpectedToken(cursor, end); + } + case OBJECT_COLON: { + eatWhitespace(); + if (peek() == ':') { + cursor++; + frame.phase = FramePhase.VALUE; + continue; + } + throw unexpectedToken(cursor, end); + } -// line 472 "Parser.rl" + case ARRAY_COMMA: { + eatWhitespace(); + byte b = peek(); + if (b == ',') { + cursor++; + if (config.allowTrailingComma) { + eatWhitespace(); + if (peek() == ']') { + // Trailing comma: re-enter COMMA to close. + continue; + } + } + frame.phase = FramePhase.VALUE; + continue; + } else if (b == ']') { + cursor++; + int count = entryCount(frame); + currentNesting--; + inArray--; + popFrame(); + pushValue(decodeArray(count)); + valueCompleted(topFrame()); + continue; + } + throw unexpectedToken(cursor, end); + } + case OBJECT_COMMA: { + eatWhitespace(); + byte b = peek(); + if (b == ',') { + cursor++; + if (config.allowTrailingComma) { + eatWhitespace(); + if (peek() == '}') { + // Trailing comma: re-enter COMMA to close. + continue; + } + } + frame.phase = FramePhase.OBJECT_KEY; + continue; + } else if (b == '}') { + cursor++; + currentNesting--; + int count = entryCount(frame); + // Temporarily rewind the cursor so a duplicate-key + // error points at the object's opening brace. + int finalCursor = cursor; + cursor = frame.startCursor; + IRubyObject object = decodeObject(count); + cursor = finalCursor; + popFrame(); + pushValue(object); + valueCompleted(topFrame()); + continue; + } + throw unexpectedToken(cursor, end); + } - void parseInteger(ParserResult res, int p, int pe) { - int new_p = parseIntegerInternal(p, pe); - if (new_p == -1) { - res.update(null, p); - return; + default: + throw context.runtime.newRuntimeError("unreachable parser state"); + } } - RubyInteger number = createInteger(p, new_p); - res.update(number, new_p + 1); - return; } - int parseIntegerInternal(int p, int pe) { - int cs = EVIL; - - -// line 801 "Parser.java" - { - cs = JSON_integer_start; - } - -// line 489 "Parser.rl" - int memo = p; - -// line 809 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_integer_key_offsets[cs]; - _trans = _JSON_integer_index_offsets[cs]; - _klen = _JSON_integer_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_integer_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_integer_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_integer_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_integer_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_integer_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_integer_indicies[_trans]; - cs = _JSON_integer_trans_targs[_trans]; - - if ( _JSON_integer_trans_actions[_trans] != 0 ) { - _acts = _JSON_integer_trans_actions[_trans]; - _nacts = (int) _JSON_integer_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_integer_actions[_acts++] ) - { - case 0: -// line 466 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} + private void pushValue(IRubyObject value) { + if (valueTop == valueStack.length) { + valueStack = Arrays.copyOf(valueStack, valueStack.length * 2); } - break; -// line 896 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 491 "Parser.rl" - - if (cs < JSON_integer_first_final) { - return -1; - } - - return p; + valueStack[valueTop++] = config.onLoad(context, value); } - RubyInteger createInteger(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - return bytesToInum(runtime, num); + private void valueCompleted(Frame frame) { + frame.phase = frame.type.nextPhase(); } - RubyInteger bytesToInum(Ruby runtime, ByteList num) { - return runtime.is1_9() ? - ConvertBytes.byteListToInum19(runtime, num, 10, true) : - ConvertBytes.byteListToInum(runtime, num, 10, true); + private int entryCount(Frame frame) { + return valueTop - frame.valueStackHead; } - -// line 938 "Parser.java" -private static byte[] init__JSON_float_actions_0() -{ - return new byte [] { - 0, 1, 0 - }; -} - -private static final byte _JSON_float_actions[] = init__JSON_float_actions_0(); - - -private static byte[] init__JSON_float_key_offsets_0() -{ - return new byte [] { - 0, 0, 4, 7, 10, 12, 16, 18, 23, 29, 29 - }; -} - -private static final byte _JSON_float_key_offsets[] = init__JSON_float_key_offsets_0(); - - -private static char[] init__JSON_float_trans_keys_0() -{ - return new char [] { - 45, 48, 49, 57, 48, 49, 57, 46, 69, 101, 48, 57, - 43, 45, 48, 57, 48, 57, 46, 69, 101, 48, 57, 69, - 101, 45, 46, 48, 57, 69, 101, 45, 46, 48, 57, 0 - }; -} - -private static final char _JSON_float_trans_keys[] = init__JSON_float_trans_keys_0(); - - -private static byte[] init__JSON_float_single_lengths_0() -{ - return new byte [] { - 0, 2, 1, 3, 0, 2, 0, 3, 2, 0, 2 - }; -} - -private static final byte _JSON_float_single_lengths[] = init__JSON_float_single_lengths_0(); - - -private static byte[] init__JSON_float_range_lengths_0() -{ - return new byte [] { - 0, 1, 1, 0, 1, 1, 1, 1, 2, 0, 2 - }; -} - -private static final byte _JSON_float_range_lengths[] = init__JSON_float_range_lengths_0(); - - -private static byte[] init__JSON_float_index_offsets_0() -{ - return new byte [] { - 0, 0, 4, 7, 11, 13, 17, 19, 24, 29, 30 - }; -} - -private static final byte _JSON_float_index_offsets[] = init__JSON_float_index_offsets_0(); - - -private static byte[] init__JSON_float_indicies_0() -{ - return new byte [] { - 0, 2, 3, 1, 2, 3, 1, 4, 5, 5, 1, 6, - 1, 7, 7, 8, 1, 8, 1, 4, 5, 5, 3, 1, - 5, 5, 1, 6, 9, 1, 1, 1, 1, 8, 9, 0 - }; -} - -private static final byte _JSON_float_indicies[] = init__JSON_float_indicies_0(); - - -private static byte[] init__JSON_float_trans_targs_0() -{ - return new byte [] { - 2, 0, 3, 7, 4, 5, 8, 6, 10, 9 - }; -} - -private static final byte _JSON_float_trans_targs[] = init__JSON_float_trans_targs_0(); - - -private static byte[] init__JSON_float_trans_actions_0() -{ - return new byte [] { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 - }; -} - -private static final byte _JSON_float_trans_actions[] = init__JSON_float_trans_actions_0(); - - -static final int JSON_float_start = 1; -static final int JSON_float_first_final = 8; -static final int JSON_float_error = 0; - -static final int JSON_float_en_main = 1; - + private Frame topFrame() { + return frameStack[frameDepth - 1]; + } -// line 526 "Parser.rl" + private void pushFrame(FrameType type, FramePhase phase, + int valueStackHead, int startCursor) { + if (frameDepth == frameStack.length) { + frameStack = Arrays.copyOf(frameStack, frameStack.length * 2); + } + Frame frame = frameStack[frameDepth]; + if (frame == null) { + frame = new Frame(); + frameStack[frameDepth] = frame; + } + frame.type = type; + frame.phase = phase; + frame.valueStackHead = valueStackHead; + frame.startCursor = startCursor; + frameDepth++; + } + private void popFrame() { + frameDepth--; + } - void parseFloat(ParserResult res, int p, int pe) { - int new_p = parseFloatInternal(p, pe); - if (new_p == -1) { - res.update(null, p); - return; + private void checkNesting() { + if (config.maxNesting > 0 && currentNesting > config.maxNesting) { + throw newException(Utils.M_NESTING_ERROR, + "nesting of " + currentNesting + " is too deep"); } - IRubyObject number = parser.decimalClass == null ? - createFloat(p, new_p) : createCustomDecimal(p, new_p); + } - res.update(number, new_p + 1); - return; + private IRubyObject decodeArray(int count) { + int base = valueTop - count; + IRubyObject[] elements = new IRubyObject[count]; + System.arraycopy(valueStack, base, elements, 0, count); + valueTop = base; + RubyArray array = RubyArray.newArrayNoCopy(context.runtime, elements); + if (config.freeze) { + array.setFrozen(true); + } + return array; } - int parseFloatInternal(int p, int pe) { - int cs = EVIL; - - -// line 1060 "Parser.java" - { - cs = JSON_float_start; - } - -// line 545 "Parser.rl" - int memo = p; - -// line 1068 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_float_key_offsets[cs]; - _trans = _JSON_float_index_offsets[cs]; - _klen = _JSON_float_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_float_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_float_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_float_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_float_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_float_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_float_indicies[_trans]; - cs = _JSON_float_trans_targs[_trans]; - - if ( _JSON_float_trans_actions[_trans] != 0 ) { - _acts = _JSON_float_trans_actions[_trans]; - _nacts = (int) _JSON_float_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_float_actions[_acts++] ) - { - case 0: -// line 517 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} + private IRubyObject decodeObject(int count) { + final Ruby runtime = context.runtime; + int base = valueTop - count; + int limit = valueTop; + RubyHash hash = RubyHash.newHash(runtime); + for (int i = base; i < limit; i += 2) { + // We use RubyHash#fastASet because all object keys have already been + // frozen and deduplicated. + // + // This was significantly faster than RubyHash#op_aset. + hash.fastASet(valueStack[i], valueStack[i + 1]); } - break; -// line 1155 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 547 "Parser.rl" - - if (cs < JSON_float_first_final) { - return -1; + valueTop = base; + + if (!config.allowDuplicateKey && hash.size() < count / 2) { + onDuplicateKey(findDuplicateKey(base, limit)); } - return p; + if (config.freeze) { + hash.setFrozen(true); + } + return hash; } - RubyFloat createFloat(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - return RubyFloat.newFloat(runtime, dc.parse(num, true, runtime.is1_9())); + private IRubyObject findDuplicateKey(int base, int limit) { + RubyHash seen = RubyHash.newHash(context.runtime); + for (int i = base; i < limit; i += 2) { + int before = seen.size(); + IRubyObject key = valueStack[i]; + seen.fastASetCheckString(context.runtime, key, context.tru); + if (seen.size() == before) { + return key; + } + } + return context.nil; } - IRubyObject createCustomDecimal(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - IRubyObject numString = runtime.newString(num.toString()); - return parser.decimalClass.callMethod(context, "new", numString); + private void onDuplicateKey(IRubyObject key) { + // Symbol keys are reported by their string form (":a" -> "a") to + // match the C parser's message. + String keyInspect = key.callMethod(context, "to_s") + .callMethod(context, "inspect").asJavaString(); + throw parseError(context.runtime.newString("duplicate key " + keyInspect), key); } - -// line 1198 "Parser.java" -private static byte[] init__JSON_string_actions_0() -{ - return new byte [] { - 0, 2, 0, 1 - }; -} - -private static final byte _JSON_string_actions[] = init__JSON_string_actions_0(); - - -private static byte[] init__JSON_string_key_offsets_0() -{ - return new byte [] { - 0, 0, 1, 5, 8, 14, 20, 26, 32 - }; -} - -private static final byte _JSON_string_key_offsets[] = init__JSON_string_key_offsets_0(); - - -private static char[] init__JSON_string_trans_keys_0() -{ - return new char [] { - 34, 34, 92, 0, 31, 117, 0, 31, 48, 57, 65, 70, - 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, - 97, 102, 48, 57, 65, 70, 97, 102, 0 - }; -} - -private static final char _JSON_string_trans_keys[] = init__JSON_string_trans_keys_0(); - - -private static byte[] init__JSON_string_single_lengths_0() -{ - return new byte [] { - 0, 1, 2, 1, 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_string_single_lengths[] = init__JSON_string_single_lengths_0(); - - -private static byte[] init__JSON_string_range_lengths_0() -{ - return new byte [] { - 0, 0, 1, 1, 3, 3, 3, 3, 0 - }; -} - -private static final byte _JSON_string_range_lengths[] = init__JSON_string_range_lengths_0(); - - -private static byte[] init__JSON_string_index_offsets_0() -{ - return new byte [] { - 0, 0, 2, 6, 9, 13, 17, 21, 25 - }; -} - -private static final byte _JSON_string_index_offsets[] = init__JSON_string_index_offsets_0(); - - -private static byte[] init__JSON_string_indicies_0() -{ - return new byte [] { - 0, 1, 2, 3, 1, 0, 4, 1, 0, 5, 5, 5, - 1, 6, 6, 6, 1, 7, 7, 7, 1, 0, 0, 0, - 1, 1, 0 - }; -} - -private static final byte _JSON_string_indicies[] = init__JSON_string_indicies_0(); + private int parseDigits(long value) { + int start = cursor; + byte c = peek(); + for (; c >= '0' && c <= '9'; c = advance()) { + value = value * 10 + (c - '0'); + } + digitsValue = value; + return cursor - start; + } + private IRubyObject parseNumber(int numberStart, byte first, boolean negative) { + int mantissaDigits = parseDigits(0); + long mantissa = digitsValue; -private static byte[] init__JSON_string_trans_targs_0() -{ - return new byte [] { - 2, 0, 8, 3, 4, 5, 6, 7 - }; -} - -private static final byte _JSON_string_trans_targs[] = init__JSON_string_trans_targs_0(); + if ((first == '0' && mantissaDigits > 1) || mantissaDigits == 0) { + throw unexpectedToken(numberStart, end); + } + boolean integer = true; + int decimal_point_pos = -1; -private static byte[] init__JSON_string_trans_actions_0() -{ - return new byte [] { - 0, 0, 1, 0, 0, 0, 0, 0 - }; -} + if (peek() == '.') { + integer = false; + decimal_point_pos = mantissaDigits; + cursor++; + int fracDigits = parseDigits(mantissa); + if (fracDigits == 0) { + throw unexpectedToken(numberStart, end); + } + mantissaDigits += fracDigits; + mantissa = digitsValue; + } + + int c = peek(); + long exponent = 0; + if (c == 'e' || c == 'E') { + integer = false; + c = advance(); + boolean negative_exponent = c == '-'; + if (negative_exponent || c == '+') advance(); + + int exponent_digits = parseDigits(0); + long abs_exponent = digitsValue; + if (exponent_digits == 0) { + throw unexpectedToken(numberStart, end); + } -private static final byte _JSON_string_trans_actions[] = init__JSON_string_trans_actions_0(); - - -static final int JSON_string_start = 1; -static final int JSON_string_first_final = 8; -static final int JSON_string_error = 0; - -static final int JSON_string_en_main = 1; - - -// line 599 "Parser.rl" - - - void parseString(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject result = null; - - -// line 1308 "Parser.java" - { - cs = JSON_string_start; - } - -// line 606 "Parser.rl" - int memo = p; - -// line 1316 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_string_key_offsets[cs]; - _trans = _JSON_string_index_offsets[cs]; - _klen = _JSON_string_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_string_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_string_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_string_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_string_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_string_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_string_indicies[_trans]; - cs = _JSON_string_trans_targs[_trans]; - - if ( _JSON_string_trans_actions[_trans] != 0 ) { - _acts = _JSON_string_trans_actions[_trans]; - _nacts = (int) _JSON_string_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_string_actions[_acts++] ) - { - case 0: -// line 574 "Parser.rl" - { - int offset = byteList.begin(); - ByteList decoded = decoder.decode(byteList, memo + 1 - offset, - p - offset); - result = getRuntime().newString(decoded); - if (result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} + if (exponent_digits >= 20 || Long.compareUnsigned(abs_exponent, Long.MAX_VALUE) > 0) { + exponent = negative_exponent ? Integer.MIN_VALUE : Integer.MAX_VALUE; } else { - {p = (( p + 1))-1;} - } - } - break; - case 1: -// line 587 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } - break; -// line 1418 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 608 "Parser.rl" - - if (parser.createAdditions) { - RubyHash matchString = parser.match_string; - if (matchString != null) { - final IRubyObject[] memoArray = { result, null }; - try { - matchString.visitAll(new RubyHash.Visitor() { - @Override - public void visit(IRubyObject pattern, IRubyObject klass) { - if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) { - memoArray[1] = klass; - throw JumpException.SPECIAL_JUMP; - } - } - }); - } catch (JumpException e) { } - if (memoArray[1] != null) { - RubyClass klass = (RubyClass) memoArray[1]; - if (klass.respondsTo("json_creatable?") && - klass.callMethod(context, "json_creatable?").isTrue()) { - result = klass.callMethod(context, "json_create", result); - } - } + exponent = negative_exponent ? -abs_exponent : abs_exponent; } } - if (cs >= JSON_string_first_final && result != null) { - if (result instanceof RubyString) { - ((RubyString)result).force_encoding(context, info.utf8.get()); + if (integer) { + if (mantissaDigits < MAX_FAST_INTEGER_SIZE) { + return context.runtime.newFixnum(negative ? -mantissa : mantissa); } - res.update(result, p + 1); - } else { - res.update(null, p + 1); + return ConvertBytes.byteListToInum(context.runtime, absSubSequence(numberStart, cursor), 10, true); } - } - - -// line 1476 "Parser.java" -private static byte[] init__JSON_array_actions_0() -{ - return new byte [] { - 0, 1, 0, 1, 1 - }; -} - -private static final byte _JSON_array_actions[] = init__JSON_array_actions_0(); - - -private static byte[] init__JSON_array_key_offsets_0() -{ - return new byte [] { - 0, 0, 1, 18, 25, 41, 43, 44, 46, 47, 49, 50, - 52, 53, 55, 56, 58, 59 - }; -} - -private static final byte _JSON_array_key_offsets[] = init__JSON_array_key_offsets_0(); + // Adjust exponent based on decimal point position + if (decimal_point_pos >= 0) exponent -= (mantissaDigits - decimal_point_pos); -private static char[] init__JSON_array_trans_keys_0() -{ - return new char [] { - 91, 13, 32, 34, 45, 47, 73, 78, 91, 93, 102, 110, - 116, 123, 9, 10, 48, 57, 13, 32, 44, 47, 93, 9, - 10, 13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116, - 123, 9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42, - 47, 42, 42, 47, 10, 42, 47, 42, 42, 47, 10, 0 - }; -} - -private static final char _JSON_array_trans_keys[] = init__JSON_array_trans_keys_0(); - - -private static byte[] init__JSON_array_single_lengths_0() -{ - return new byte [] { - 0, 1, 13, 5, 12, 2, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 2, 1, 0 - }; -} - -private static final byte _JSON_array_single_lengths[] = init__JSON_array_single_lengths_0(); - - -private static byte[] init__JSON_array_range_lengths_0() -{ - return new byte [] { - 0, 0, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_array_range_lengths[] = init__JSON_array_range_lengths_0(); - - -private static byte[] init__JSON_array_index_offsets_0() -{ - return new byte [] { - 0, 0, 2, 18, 25, 40, 43, 45, 48, 50, 53, 55, - 58, 60, 63, 65, 68, 70 - }; -} - -private static final byte _JSON_array_index_offsets[] = init__JSON_array_index_offsets_0(); - - -private static byte[] init__JSON_array_indicies_0() -{ - return new byte [] { - 0, 1, 0, 0, 2, 2, 3, 2, 2, 2, 4, 2, - 2, 2, 2, 0, 2, 1, 5, 5, 6, 7, 4, 5, - 1, 6, 6, 2, 2, 8, 2, 2, 2, 2, 2, 2, - 2, 6, 2, 1, 9, 10, 1, 11, 9, 11, 6, 9, - 6, 10, 12, 13, 1, 14, 12, 14, 5, 12, 5, 13, - 15, 16, 1, 17, 15, 17, 0, 15, 0, 16, 1, 0 - }; -} - -private static final byte _JSON_array_indicies[] = init__JSON_array_indicies_0(); - - -private static byte[] init__JSON_array_trans_targs_0() -{ - return new byte [] { - 2, 0, 3, 13, 17, 3, 4, 9, 5, 6, 8, 7, - 10, 12, 11, 14, 16, 15 - }; -} - -private static final byte _JSON_array_trans_targs[] = init__JSON_array_trans_targs_0(); - - -private static byte[] init__JSON_array_trans_actions_0() -{ - return new byte [] { - 0, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_array_trans_actions[] = init__JSON_array_trans_actions_0(); - - -static final int JSON_array_start = 1; -static final int JSON_array_first_final = 17; -static final int JSON_array_error = 0; - -static final int JSON_array_en_main = 1; - - -// line 681 "Parser.rl" - + return decodeFloat(context, mantissa, mantissaDigits, exponent, negative, numberStart); + } - void parseArray(ParserResult res, int p, int pe) { - int cs = EVIL; + IRubyObject decodeFloat(ThreadContext context, long mantissa, int mantissa_digits, long exponent, boolean negative, int start) { + if (config.decimalClass != null) return config.decimalFactory.apply(context, absSubSequence(start, cursor)); + if (exponent >= Integer.MAX_VALUE) return getConstant(negative ? CONST_MINUS_INFINITY : CONST_INFINITY); + if (exponent <= Integer.MIN_VALUE) return RubyFloat.newFloat(context.runtime, negative ? -0.0 : 0.0); - if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) { - throw newException(Utils.M_NESTING_ERROR, - "nesting of " + currentNesting + " is too deep"); + // Ryu has rounding issues with subnormals around 1e-310 (< 2.225e-308) + if (mantissa_digits > 17 || mantissa_digits + exponent < -307) { + return RubyFloat.newFloat(context.runtime, Double.parseDouble(new String(data, start, cursor - start))); } - IRubyObject result; - if (parser.arrayClass == getRuntime().getArray()) { - result = RubyArray.newArray(getRuntime()); - } else { - result = parser.arrayClass.newInstance(context, - IRubyObject.NULL_ARRAY, Block.NULL_BLOCK); - } + return RubyFloat.newFloat(context.runtime, ryuS2dFromParts(mantissa, mantissa_digits, (int) exponent, negative)); + } - -// line 1609 "Parser.java" - { - cs = JSON_array_start; - } - -// line 700 "Parser.rl" - -// line 1616 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_array_key_offsets[cs]; - _trans = _JSON_array_index_offsets[cs]; - _klen = _JSON_array_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_array_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_array_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_array_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_array_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_array_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_array_indicies[_trans]; - cs = _JSON_array_trans_targs[_trans]; - - if ( _JSON_array_trans_actions[_trans] != 0 ) { - _acts = _JSON_array_trans_actions[_trans]; - _nacts = (int) _JSON_array_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_array_actions[_acts++] ) - { - case 0: -// line 650 "Parser.rl" - { - parseValue(res, p, pe); - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} + private IRubyObject parseString(boolean isName) { + final byte[] data = this.data; + final int contentStart = cursor + 1; // skip opening quote + + long scanned = scanner.scan(data, chunks, contentStart, end, validateUTF8Strings); + final int q = (int) scanned; + if (q < 0) { + throw parseError("unexpected end of input, expected closing \""); + } + + boolean plain = (scanned & StringScanner.PLAIN_BIT) != 0; + boolean isAscii = (scanned & StringScanner.ASCII_BIT) != 0; + + cursor = q + 1; // past closing quote + + // Note: When running multiple read-world benchmarks in the same JVM, + // this seems consistently faster than "if (isName && plain)" + // and only handling the ASCII-only path in the cache. + // + // Note 2: It's important that all object keys are frozen and deduplicated, + // decodeObject relies this. + if (isName) { + // Resolve the key's decoded bytes without building a RubyString + // yet, so a cache hit skips allocation entirely. + byte[] buf; + int off; + int len; + if (plain) { + buf = data; + off = contentStart; + len = q - contentStart; } else { - if (parser.arrayClass == getRuntime().getArray()) { - ((RubyArray)result).append(res.result); - } else { - result.callMethod(context, "<<", res.result); - } - {p = (( res.p))-1;} + ByteList decoded = decodeString(context, byteList, contentStart - begin, q - begin, isAscii); + buf = decoded.getUnsafeBytes(); + off = decoded.begin(); + len = decoded.realSize(); } + // Same as the C extension. + if (inArray > 0 && len > 0 && len <= KEY_CACHE_MAX_ENTRY_LENGTH && isLetter(buf[off])) { + return cachedKey(buf, off, len); + } + return internedKey(buf, off, len); } - break; - case 1: -// line 665 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } - break; -// line 1720 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 701 "Parser.rl" - - if (cs >= JSON_array_first_final) { - res.update(result, p + 1); + + RubyString string; + if (plain) { + string = RubyString.newString(context.runtime, data, contentStart, + q - contentStart, UTF8Encoding.INSTANCE); } else { - throw unexpectedToken(p, pe); + ByteList content = decodeString(context, byteList, contentStart - begin, q - begin, isAscii); + string = context.runtime.newString(content); + string.setEncoding(UTF8Encoding.INSTANCE); + string.clearCodeRange(); } - } - - -// line 1750 "Parser.java" -private static byte[] init__JSON_object_actions_0() -{ - return new byte [] { - 0, 1, 0, 1, 1, 1, 2 - }; -} - -private static final byte _JSON_object_actions[] = init__JSON_object_actions_0(); - - -private static byte[] init__JSON_object_key_offsets_0() -{ - return new byte [] { - 0, 0, 1, 8, 14, 16, 17, 19, 20, 36, 43, 49, - 51, 52, 54, 55, 57, 58, 60, 61, 63, 64, 66, 67, - 69, 70, 72, 73 - }; -} - -private static final byte _JSON_object_key_offsets[] = init__JSON_object_key_offsets_0(); - - -private static char[] init__JSON_object_trans_keys_0() -{ - return new char [] { - 123, 13, 32, 34, 47, 125, 9, 10, 13, 32, 47, 58, - 9, 10, 42, 47, 42, 42, 47, 10, 13, 32, 34, 45, - 47, 73, 78, 91, 102, 110, 116, 123, 9, 10, 48, 57, - 13, 32, 44, 47, 125, 9, 10, 13, 32, 34, 47, 9, - 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47, - 10, 42, 47, 42, 42, 47, 10, 42, 47, 42, 42, 47, - 10, 0 - }; -} - -private static final char _JSON_object_trans_keys[] = init__JSON_object_trans_keys_0(); - - -private static byte[] init__JSON_object_single_lengths_0() -{ - return new byte [] { - 0, 1, 5, 4, 2, 1, 2, 1, 12, 5, 4, 2, - 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, - 1, 2, 1, 0 - }; -} - -private static final byte _JSON_object_single_lengths[] = init__JSON_object_single_lengths_0(); - - -private static byte[] init__JSON_object_range_lengths_0() -{ - return new byte [] { - 0, 0, 1, 1, 0, 0, 0, 0, 2, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 - }; -} - -private static final byte _JSON_object_range_lengths[] = init__JSON_object_range_lengths_0(); - - -private static byte[] init__JSON_object_index_offsets_0() -{ - return new byte [] { - 0, 0, 2, 9, 15, 18, 20, 23, 25, 40, 47, 53, - 56, 58, 61, 63, 66, 68, 71, 73, 76, 78, 81, 83, - 86, 88, 91, 93 - }; -} - -private static final byte _JSON_object_index_offsets[] = init__JSON_object_index_offsets_0(); - - -private static byte[] init__JSON_object_indicies_0() -{ - return new byte [] { - 0, 1, 0, 0, 2, 3, 4, 0, 1, 5, 5, 6, - 7, 5, 1, 8, 9, 1, 10, 8, 10, 5, 8, 5, - 9, 7, 7, 11, 11, 12, 11, 11, 11, 11, 11, 11, - 11, 7, 11, 1, 13, 13, 14, 15, 4, 13, 1, 14, - 14, 2, 16, 14, 1, 17, 18, 1, 19, 17, 19, 14, - 17, 14, 18, 20, 21, 1, 22, 20, 22, 13, 20, 13, - 21, 23, 24, 1, 25, 23, 25, 7, 23, 7, 24, 26, - 27, 1, 28, 26, 28, 0, 26, 0, 27, 1, 0 - }; -} - -private static final byte _JSON_object_indicies[] = init__JSON_object_indicies_0(); - - -private static byte[] init__JSON_object_trans_targs_0() -{ - return new byte [] { - 2, 0, 3, 23, 27, 3, 4, 8, 5, 7, 6, 9, - 19, 9, 10, 15, 11, 12, 14, 13, 16, 18, 17, 20, - 22, 21, 24, 26, 25 - }; -} - -private static final byte _JSON_object_trans_targs[] = init__JSON_object_trans_targs_0(); - - -private static byte[] init__JSON_object_trans_actions_0() -{ - return new byte [] { - 0, 0, 3, 0, 5, 0, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_object_trans_actions[] = init__JSON_object_trans_actions_0(); - - -static final int JSON_object_start = 1; -static final int JSON_object_first_final = 27; -static final int JSON_object_error = 0; - -static final int JSON_object_en_main = 1; - - -// line 760 "Parser.rl" + if (config.freeze) { + return context.runtime.freezeAndDedupString(string); + } - void parseObject(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject lastName = null; - boolean objectDefault = true; + return string; + } - if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) { - throw newException(Utils.M_NESTING_ERROR, - "nesting of " + currentNesting + " is too deep"); + private ByteList decodeString(ThreadContext context, ByteList byteList, int start, int end, boolean isAscii) { + if (isAscii) { + return decoder.decodeNoValidate(context, byteList, start, end, chunks); } - - // this is guaranteed to be a RubyHash due to the earlier - // allocator test at OptionsReader#getClass - IRubyObject result; - if (parser.objectClass == getRuntime().getHash()) { - result = RubyHash.newHash(getRuntime()); - } else { - objectDefault = false; - result = parser.objectClass.newInstance(context, - IRubyObject.NULL_ARRAY, Block.NULL_BLOCK); + if (!validateUTF8Strings) { + return decoder.decodeNoValidate(context, byteList, start, end, chunks); } + return decoder.decode(context, byteList, start, end); + } - -// line 1898 "Parser.java" - { - cs = JSON_object_start; - } - -// line 784 "Parser.rl" - -// line 1905 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_object_key_offsets[cs]; - _trans = _JSON_object_index_offsets[cs]; - _klen = _JSON_object_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_object_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_object_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_object_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_object_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_object_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_object_indicies[_trans]; - cs = _JSON_object_trans_targs[_trans]; - - if ( _JSON_object_trans_actions[_trans] != 0 ) { - _acts = _JSON_object_trans_actions[_trans]; - _nacts = (int) _JSON_object_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_object_actions[_acts++] ) - { - case 0: -// line 715 "Parser.rl" - { - parseValue(res, p, pe); - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - if (parser.objectClass == getRuntime().getHash()) { - ((RubyHash)result).op_aset(context, lastName, res.result); - } else { - result.callMethod(context, "[]=", new IRubyObject[] { lastName, res.result }); - } - {p = (( res.p))-1;} - } + private static boolean isLetter(byte b) { + return (b >= 'a' && b <= 'z') || (b >= 'A' && b <= 'Z'); + } + + private IRubyObject internedKey(byte[] buf, int off, int len) { + RubyString string = context.runtime.newString( + new ByteList(buf, off, len, UTF8Encoding.INSTANCE, true)); + if (config.symbolizeNames) { + return string.intern(); } - break; - case 1: -// line 730 "Parser.rl" - { - parseString(res, p, pe); - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} + string.setFrozen(true); + return context.runtime.freezeAndDedupString(string); + } + + private IRubyObject cachedKey(byte[] buf, int off, int len) { + int low = 0; + int high = keyCacheLength - 1; + while (low <= high) { + int mid = (low + high) >>> 1; + int cmp = compareKey(buf, off, len, keyCache[mid]); + if (cmp == 0) { + return keyCache[mid]; + } else if (cmp > 0) { + low = mid + 1; } else { - RubyString name = (RubyString)res.result; - if (parser.symbolizeNames) { - lastName = context.getRuntime().is1_9() - ? name.intern19() - : name.intern(); - } else { - lastName = name; - } - {p = (( res.p))-1;} + high = mid - 1; } } - break; - case 2: -// line 748 "Parser.rl" - { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } - break; -// line 2029 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 785 "Parser.rl" - - if (cs < JSON_object_first_final) { - res.update(null, p + 1); - return; - } - IRubyObject returnedResult = result; + IRubyObject key = internedKey(buf, off, len); + if (keyCacheLength < KEY_CACHE_CAPA) { + System.arraycopy(keyCache, low, keyCache, low + 1, keyCacheLength - low); + keyCache[low] = key; + keyCacheLength++; + } + return key; + } - // attempt to de-serialize object - if (parser.createAdditions) { - IRubyObject vKlassName; - if (objectDefault) { - vKlassName = ((RubyHash)result).op_aref(context, parser.createId); - } else { - vKlassName = result.callMethod(context, "[]", parser.createId); + // Orders by length first, then unsigned byte value + private static int compareKey(byte[] buf, int off, int len, IRubyObject entry) { + ByteList eb = entry instanceof RubySymbol + ? ((RubySymbol) entry).getBytes() + : ((RubyString) entry).getByteList(); + int elen = eb.realSize(); + if (len != elen) { + return len - elen; + } + byte[] ebuf = eb.getUnsafeBytes(); + int ebeg = eb.begin(); + for (int i = 0; i < len; i++) { + int cmp = Byte.toUnsignedInt(buf[off + i]) - Byte.toUnsignedInt(ebuf[ebeg + i]); + if (cmp != 0) { + return cmp; } + } + return 0; + } - if (!vKlassName.isNil()) { - // might throw ArgumentError, we let it propagate - IRubyObject klass = parser.info.jsonModule.get(). - callMethod(context, "deep_const_get", vKlassName); - if (klass.respondsTo("json_creatable?") && - klass.callMethod(context, "json_creatable?").isTrue()) { + private byte peek() { + return cursor < end ? data[cursor] : 0; + } + private byte advance() { + cursor++; + return peek(); + } - returnedResult = klass.callMethod(context, "json_create", result); - } + private boolean matchKeyword(String keyword) { + int len = keyword.length(); + if (end - cursor < len) { + return false; + } + for (int i = 0; i < len; i++) { + if (data[cursor + i] != (byte) keyword.charAt(i)) { + return false; } } - res.update(returnedResult, p + 1); + cursor += len; + return true; } - -// line 2082 "Parser.java" -private static byte[] init__JSON_actions_0() -{ - return new byte [] { - 0, 1, 0 - }; -} - -private static final byte _JSON_actions[] = init__JSON_actions_0(); - - -private static byte[] init__JSON_key_offsets_0() -{ - return new byte [] { - 0, 0, 16, 18, 19, 21, 22, 24, 25, 27, 28 - }; -} - -private static final byte _JSON_key_offsets[] = init__JSON_key_offsets_0(); - - -private static char[] init__JSON_trans_keys_0() -{ - return new char [] { - 13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116, 123, - 9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42, 47, - 42, 42, 47, 10, 13, 32, 47, 9, 10, 0 - }; -} - -private static final char _JSON_trans_keys[] = init__JSON_trans_keys_0(); - - -private static byte[] init__JSON_single_lengths_0() -{ - return new byte [] { - 0, 12, 2, 1, 2, 1, 2, 1, 2, 1, 3 - }; -} - -private static final byte _JSON_single_lengths[] = init__JSON_single_lengths_0(); - - -private static byte[] init__JSON_range_lengths_0() -{ - return new byte [] { - 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1 - }; -} - -private static final byte _JSON_range_lengths[] = init__JSON_range_lengths_0(); - - -private static byte[] init__JSON_index_offsets_0() -{ - return new byte [] { - 0, 0, 15, 18, 20, 23, 25, 28, 30, 33, 35 - }; -} - -private static final byte _JSON_index_offsets[] = init__JSON_index_offsets_0(); - - -private static byte[] init__JSON_indicies_0() -{ - return new byte [] { - 0, 0, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 0, 2, 1, 4, 5, 1, 6, 4, 6, 7, 4, 7, - 5, 8, 9, 1, 10, 8, 10, 0, 8, 0, 9, 7, - 7, 11, 7, 1, 0 - }; -} - -private static final byte _JSON_indicies[] = init__JSON_indicies_0(); - - -private static byte[] init__JSON_trans_targs_0() -{ - return new byte [] { - 1, 0, 10, 6, 3, 5, 4, 10, 7, 9, 8, 2 - }; -} - -private static final byte _JSON_trans_targs[] = init__JSON_trans_targs_0(); - - -private static byte[] init__JSON_trans_actions_0() -{ - return new byte [] { - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 - }; -} - -private static final byte _JSON_trans_actions[] = init__JSON_trans_actions_0(); - - -static final int JSON_start = 1; -static final int JSON_first_final = 10; -static final int JSON_error = 0; - -static final int JSON_en_main = 1; - - -// line 836 "Parser.rl" - - - public IRubyObject parseImplemetation() { - int cs = EVIL; - int p, pe; - IRubyObject result = null; - ParserResult res = new ParserResult(); - - -// line 2195 "Parser.java" - { - cs = JSON_start; - } - -// line 845 "Parser.rl" - p = byteList.begin(); - pe = p + byteList.length(); - -// line 2204 "Parser.java" - { - int _klen; - int _trans = 0; - int _acts; - int _nacts; - int _keys; - int _goto_targ = 0; - - _goto: while (true) { - switch ( _goto_targ ) { - case 0: - if ( p == pe ) { - _goto_targ = 4; - continue _goto; - } - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } -case 1: - _match: do { - _keys = _JSON_key_offsets[cs]; - _trans = _JSON_index_offsets[cs]; - _klen = _JSON_single_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + _klen - 1; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( data[p] < _JSON_trans_keys[_mid] ) - _upper = _mid - 1; - else if ( data[p] > _JSON_trans_keys[_mid] ) - _lower = _mid + 1; - else { - _trans += (_mid - _keys); - break _match; - } - } - _keys += _klen; - _trans += _klen; - } - - _klen = _JSON_range_lengths[cs]; - if ( _klen > 0 ) { - int _lower = _keys; - int _mid; - int _upper = _keys + (_klen<<1) - 2; - while (true) { - if ( _upper < _lower ) - break; - - _mid = _lower + (((_upper-_lower) >> 1) & ~1); - if ( data[p] < _JSON_trans_keys[_mid] ) - _upper = _mid - 2; - else if ( data[p] > _JSON_trans_keys[_mid+1] ) - _lower = _mid + 2; - else { - _trans += ((_mid - _keys)>>1); - break _match; - } - } - _trans += _klen; - } - } while (false); - - _trans = _JSON_indicies[_trans]; - cs = _JSON_trans_targs[_trans]; - - if ( _JSON_trans_actions[_trans] != 0 ) { - _acts = _JSON_trans_actions[_trans]; - _nacts = (int) _JSON_actions[_acts++]; - while ( _nacts-- > 0 ) - { - switch ( _JSON_actions[_acts++] ) - { - case 0: -// line 822 "Parser.rl" - { - parseValue(res, p, pe); - if (res.result == null) { - p--; - { p += 1; _goto_targ = 5; if (true) continue _goto;} - } else { - result = res.result; - {p = (( res.p))-1;} + private void eatWhitespace() { + while (cursor < end) { + switch (data[cursor]) { + case ' ': + case '\t': + case '\r': + cursor++; + break; + case '\n': + cursor++; + // Same heuristic from the C parser: a newline in + // pretty-printed JSON is almost always followed by a run + // of indentation spaces, so skip them eight at a time. + while (cursor + 8 <= end) { + long x = chunks.getLong(cursor); + if (x == SPACES) { + cursor += 8; + } else { + cursor += Long.numberOfTrailingZeros(x ^ SPACES) >>> 3; + break; + } + } + break; + case '/': + eatComments(); + break; + default: + return; } } - break; -// line 2297 "Parser.java" - } - } - } - -case 2: - if ( cs == 0 ) { - _goto_targ = 5; - continue _goto; - } - if ( ++p != pe ) { - _goto_targ = 1; - continue _goto; - } -case 4: -case 5: - } - break; } - } - -// line 848 "Parser.rl" - - if (cs >= JSON_first_final && p == pe) { - return result; - } else { - throw unexpectedToken(p, pe); - } } - public IRubyObject parse() { - return parseImplemetation(); + private void eatComments() { + if (!config.allowComments) { + throw unexpectedToken(cursor, end); + } + + int start = cursor; + cursor++; // skip '/' + switch (peek()) { + case '/': + cursor++; + while (cursor < end && data[cursor] != '\n') cursor++; + if (cursor < end) cursor++; // consume newline + break; + case '*': + cursor++; + while (true) { + while (cursor < end && data[cursor] != '*') cursor++; + if (cursor >= end) { + throw parseError("unterminated comment, expected closing '*/'"); + } + cursor++; // past '*' + if (peek() == '/') { + cursor++; + break; + } + } + break; + default: + throw unexpectedToken(start, end); + } } /** - * Updates the "view" bytelist with the new offsets and returns it. - * @param start - * @param end + * Updates the "view" ByteList with the new offsets and returns it. The + * returned ByteList must be consumed before the next call, since the + * same instance is reused. */ private ByteList absSubSequence(int absStart, int absEnd) { view.setBegin(absStart); @@ -2337,26 +896,82 @@ private ByteList absSubSequence(int absStart, int absEnd) { return view; } - /** - * Retrieves a constant directly descended from the JSON module. - * @param name The constant name - */ private IRubyObject getConstant(String name) { - return parser.info.jsonModule.get().getConstant(name); + return info.jsonModule.get().getConstant(name); } - private RaiseException newException(String className, String message) { - return Utils.newException(context, className, message); + private long cursorPosition(int position) { + position = Math.min(position, end); + int i = position; + int line = 1; + while (i > begin && data[i - 1] != '\n') { + i--; + } + long column = StringSupport.strLength(UTF8Encoding.INSTANCE, data, i, position) + 1; + while (i > begin) { + if (data[--i] == '\n') { + line++; + } + } + return ((long) line << 32) | column; } - private RaiseException newException(String className, RubyString message) { - return Utils.newException(context, className, message); + private RubyArray jsonPathSegments(IRubyObject duplicateKey) { + Ruby runtime = context.runtime; + RubyArray segments = RubyArray.newArray(runtime); + for (int depth = 1; depth < frameDepth; depth++) { + Frame frame = frameStack[depth]; + boolean innermost = depth == frameDepth - 1; + int childHead = innermost ? valueTop : frameStack[depth + 1].valueStackHead; + int count = childHead - frame.valueStackHead; + + if (frame.type == FrameType.ARRAY) { + segments.append(runtime.newFixnum(frame.phase == FramePhase.ARRAY_COMMA ? count - 1 : count)); + } else if (innermost && duplicateKey != null) { + segments.append(duplicateKey); + } else if ((count & 1) == 1) { + segments.append(valueStack[childHead - 1]); + } else if (frame.phase == FramePhase.OBJECT_COMMA && count >= 2) { + segments.append(valueStack[childHead - 2]); + } else { + break; + } + } + return segments; + } + + private RaiseException parseError(String message) { + return parseError(context.runtime.newString(message), null); } - private RaiseException newException(String className, - String messageBegin, ByteList messageEnd) { - return newException(className, - getRuntime().newString(messageBegin).cat(messageEnd)); + private RaiseException parseError(RubyString message, IRubyObject duplicateKey) { + Ruby runtime = context.runtime; + long position = cursorPosition(cursor); + int line = (int) (position >>> 32); + int column = (int) position; + message.catString(" at line " + line + " column " + column); + RaiseException error = Utils.newException(context, Utils.M_PARSER_ERROR, message); + RubyException exception = error.getException(); + exception.setInstanceVariable("@line", runtime.newFixnum(line)); + exception.setInstanceVariable("@column", runtime.newFixnum(column)); + exception.setInstanceVariable("@json_path", jsonPathSegments(duplicateKey)); + return error; + } + + private RaiseException parsingError(int absStart, int absEnd) { + cursor = absStart; + RubyString msg = context.runtime.newString("unexpected token at '") + .cat(data, absStart, Math.min(absEnd - absStart, 32)) + .cat((byte)'\''); + return parseError(msg, null); + } + + private RaiseException unexpectedToken(int absStart, int absEnd) { + return parsingError(absStart, absEnd); + } + + private RaiseException newException(String className, String message) { + return Utils.newException(context, className, message); } } } diff --git a/java/src/json/ext/Parser.rl b/java/src/json/ext/Parser.rl deleted file mode 100644 index c0c72adc1..000000000 --- a/java/src/json/ext/Parser.rl +++ /dev/null @@ -1,893 +0,0 @@ -/* - * This code is copyrighted work by Daniel Luz . - * - * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt - */ -package json.ext; - -import org.jruby.Ruby; -import org.jruby.RubyArray; -import org.jruby.RubyClass; -import org.jruby.RubyEncoding; -import org.jruby.RubyFloat; -import org.jruby.RubyHash; -import org.jruby.RubyInteger; -import org.jruby.RubyModule; -import org.jruby.RubyNumeric; -import org.jruby.RubyObject; -import org.jruby.RubyString; -import org.jruby.anno.JRubyMethod; -import org.jruby.exceptions.JumpException; -import org.jruby.exceptions.RaiseException; -import org.jruby.runtime.Block; -import org.jruby.runtime.ObjectAllocator; -import org.jruby.runtime.ThreadContext; -import org.jruby.runtime.Visibility; -import org.jruby.runtime.builtin.IRubyObject; -import org.jruby.util.ByteList; -import org.jruby.util.ConvertBytes; -import static org.jruby.util.ConvertDouble.DoubleConverter; - -/** - * The JSON::Ext::Parser class. - * - *

This is the JSON parser implemented as a Java class. To use it as the - * standard parser, set - *

JSON.parser = JSON::Ext::Parser
- * This is performed for you when you include "json/ext". - * - *

This class does not perform the actual parsing, just acts as an interface - * to Ruby code. When the {@link #parse()} method is invoked, a - * Parser.ParserSession object is instantiated, which handles the process. - * - * @author mernen - */ -public class Parser extends RubyObject { - private final RuntimeInfo info; - private RubyString vSource; - private RubyString createId; - private boolean createAdditions; - private int maxNesting; - private boolean allowNaN; - private boolean symbolizeNames; - private RubyClass objectClass; - private RubyClass arrayClass; - private RubyClass decimalClass; - private RubyHash match_string; - - private static final int DEFAULT_MAX_NESTING = 100; - - private static final ByteList JSON_MINUS_INFINITY = new ByteList(ByteList.plain("-Infinity")); - // constant names in the JSON module containing those values - private static final String CONST_NAN = "NaN"; - private static final String CONST_INFINITY = "Infinity"; - private static final String CONST_MINUS_INFINITY = "MinusInfinity"; - - static final ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klazz) { - return new Parser(runtime, klazz); - } - }; - - /** - * Multiple-value return for internal parser methods. - * - *

All the parseStuff methods return instances of - * ParserResult when successful, or null when - * there's a problem with the input data. - */ - static final class ParserResult { - /** - * The result of the successful parsing. Should never be - * null. - */ - IRubyObject result; - /** - * The point where the parser returned. - */ - int p; - - void update(IRubyObject result, int p) { - this.result = result; - this.p = p; - } - } - - public Parser(Ruby runtime, RubyClass metaClass) { - super(runtime, metaClass); - info = RuntimeInfo.forRuntime(runtime); - } - - /** - * Parser.new(source, opts = {}) - * - *

Creates a new JSON::Ext::Parser instance for the string - * source. - * It will be configured by the opts Hash. - * opts can have the following keys: - * - *

- *
:max_nesting - *
The maximum depth of nesting allowed in the parsed data - * structures. Disable depth checking with :max_nesting => false|nil|0, - * it defaults to 100. - * - *
:allow_nan - *
If set to true, allow NaN, - * Infinity and -Infinity in defiance of RFC 4627 - * to be parsed by the Parser. This option defaults to false. - * - *
:symbolize_names - *
If set to true, returns symbols for the names (keys) in - * a JSON object. Otherwise strings are returned, which is also the default. - * - *
:create_additions - *
If set to false, the Parser doesn't create additions - * even if a matching class and create_id was found. This option - * defaults to true. - * - *
:object_class - *
Defaults to Hash. - * - *
:array_class - *
Defaults to Array. - * - *
:decimal_class - *
Specifies which class to use instead of the default (Float) when - * parsing decimal numbers. This class must accept a single string argument - * in its constructor. - *
- */ - @JRubyMethod(name = "new", required = 1, optional = 1, meta = true) - public static IRubyObject newInstance(IRubyObject clazz, IRubyObject[] args, Block block) { - Parser parser = (Parser)((RubyClass)clazz).allocate(); - - parser.callInit(args, block); - - return parser; - } - - @JRubyMethod(required = 1, optional = 1, visibility = Visibility.PRIVATE) - public IRubyObject initialize(ThreadContext context, IRubyObject[] args) { - Ruby runtime = context.getRuntime(); - if (this.vSource != null) { - throw runtime.newTypeError("already initialized instance"); - } - - OptionsReader opts = new OptionsReader(context, args.length > 1 ? args[1] : null); - this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING); - this.allowNaN = opts.getBool("allow_nan", false); - this.symbolizeNames = opts.getBool("symbolize_names", false); - this.createId = opts.getString("create_id", getCreateId(context)); - this.createAdditions = opts.getBool("create_additions", false); - this.objectClass = opts.getClass("object_class", runtime.getHash()); - this.arrayClass = opts.getClass("array_class", runtime.getArray()); - this.decimalClass = opts.getClass("decimal_class", null); - this.match_string = opts.getHash("match_string"); - - if(symbolizeNames && createAdditions) { - throw runtime.newArgumentError( - "options :symbolize_names and :create_additions cannot be " + - " used in conjunction" - ); - } - this.vSource = args[0].convertToString(); - this.vSource = convertEncoding(context, vSource); - - return this; - } - - /** - * Checks the given string's encoding. If a non-UTF-8 encoding is detected, - * a converted copy is returned. - * Returns the source string if no conversion is needed. - */ - private RubyString convertEncoding(ThreadContext context, RubyString source) { - RubyEncoding encoding = (RubyEncoding)source.encoding(context); - if (encoding == info.ascii8bit.get()) { - if (source.isFrozen()) { - source = (RubyString) source.dup(); - } - source.force_encoding(context, info.utf8.get()); - } else { - source = (RubyString) source.encode(context, info.utf8.get()); - } - return source; - } - - /** - * Checks the first four bytes of the given ByteList to infer its encoding, - * using the principle demonstrated on section 3 of RFC 4627 (JSON). - */ - private static String sniffByteList(ByteList bl) { - if (bl.length() < 4) return null; - if (bl.get(0) == 0 && bl.get(2) == 0) { - return bl.get(1) == 0 ? "utf-32be" : "utf-16be"; - } - if (bl.get(1) == 0 && bl.get(3) == 0) { - return bl.get(2) == 0 ? "utf-32le" : "utf-16le"; - } - return null; - } - - /** - * Assumes the given (binary) RubyString to be in the given encoding, then - * converts it to UTF-8. - */ - private RubyString reinterpretEncoding(ThreadContext context, - RubyString str, String sniffedEncoding) { - RubyEncoding actualEncoding = info.getEncoding(context, sniffedEncoding); - RubyEncoding targetEncoding = info.utf8.get(); - RubyString dup = (RubyString)str.dup(); - dup.force_encoding(context, actualEncoding); - return (RubyString)dup.encode_bang(context, targetEncoding); - } - - /** - * Parser#parse() - * - *

Parses the current JSON text source and returns the - * complete data structure as a result. - */ - @JRubyMethod - public IRubyObject parse(ThreadContext context) { - return new ParserSession(this, context, info).parse(); - } - - /** - * Parser#source() - * - *

Returns a copy of the current source string, that was - * used to construct this Parser. - */ - @JRubyMethod(name = "source") - public IRubyObject source_get() { - return checkAndGetSource().dup(); - } - - public RubyString checkAndGetSource() { - if (vSource != null) { - return vSource; - } else { - throw getRuntime().newTypeError("uninitialized instance"); - } - } - - /** - * Queries JSON.create_id. Returns null if it is - * set to nil or false, and a String if not. - */ - private RubyString getCreateId(ThreadContext context) { - IRubyObject v = info.jsonModule.get().callMethod(context, "create_id"); - return v.isTrue() ? v.convertToString() : null; - } - - /** - * A string parsing session. - * - *

Once a ParserSession is instantiated, the source string should not - * change until the parsing is complete. The ParserSession object assumes - * the source {@link RubyString} is still associated to its original - * {@link ByteList}, which in turn must still be bound to the same - * byte[] value (and on the same offset). - */ - // Ragel uses lots of fall-through - @SuppressWarnings("fallthrough") - private static class ParserSession { - private final Parser parser; - private final ThreadContext context; - private final RuntimeInfo info; - private final ByteList byteList; - private final ByteList view; - private final byte[] data; - private final StringDecoder decoder; - private int currentNesting = 0; - private final DoubleConverter dc; - - // initialization value for all state variables. - // no idea about the origins of this value, ask Flori ;) - private static final int EVIL = 0x666; - - private ParserSession(Parser parser, ThreadContext context, RuntimeInfo info) { - this.parser = parser; - this.context = context; - this.info = info; - this.byteList = parser.checkAndGetSource().getByteList(); - this.data = byteList.unsafeBytes(); - this.view = new ByteList(data, false); - this.decoder = new StringDecoder(context); - this.dc = new DoubleConverter(); - } - - private RaiseException unexpectedToken(int absStart, int absEnd) { - RubyString msg = getRuntime().newString("unexpected token at '") - .cat(data, absStart, absEnd - absStart) - .cat((byte)'\''); - return newException(Utils.M_PARSER_ERROR, msg); - } - - private Ruby getRuntime() { - return context.getRuntime(); - } - - %%{ - machine JSON_common; - - cr = '\n'; - cr_neg = [^\n]; - ws = [ \t\r\n]; - c_comment = '/*' ( any* - (any* '*/' any* ) ) '*/'; - cpp_comment = '//' cr_neg* cr; - comment = c_comment | cpp_comment; - ignore = ws | comment; - name_separator = ':'; - value_separator = ','; - Vnull = 'null'; - Vfalse = 'false'; - Vtrue = 'true'; - VNaN = 'NaN'; - VInfinity = 'Infinity'; - VMinusInfinity = '-Infinity'; - begin_value = [nft"\-[{NI] | digit; - begin_object = '{'; - end_object = '}'; - begin_array = '['; - end_array = ']'; - begin_string = '"'; - begin_name = begin_string; - begin_number = digit | '-'; - }%% - - %%{ - machine JSON_value; - include JSON_common; - - write data; - - action parse_null { - result = getRuntime().getNil(); - } - action parse_false { - result = getRuntime().getFalse(); - } - action parse_true { - result = getRuntime().getTrue(); - } - action parse_nan { - if (parser.allowNaN) { - result = getConstant(CONST_NAN); - } else { - throw unexpectedToken(p - 2, pe); - } - } - action parse_infinity { - if (parser.allowNaN) { - result = getConstant(CONST_INFINITY); - } else { - throw unexpectedToken(p - 7, pe); - } - } - action parse_number { - if (pe > fpc + 8 && - absSubSequence(fpc, fpc + 9).equals(JSON_MINUS_INFINITY)) { - - if (parser.allowNaN) { - result = getConstant(CONST_MINUS_INFINITY); - fexec p + 10; - fhold; - fbreak; - } else { - throw unexpectedToken(p, pe); - } - } - parseFloat(res, fpc, pe); - if (res.result != null) { - result = res.result; - fexec res.p; - } - parseInteger(res, fpc, pe); - if (res.result != null) { - result = res.result; - fexec res.p; - } - fhold; - fbreak; - } - action parse_string { - parseString(res, fpc, pe); - if (res.result == null) { - fhold; - fbreak; - } else { - result = res.result; - fexec res.p; - } - } - action parse_array { - currentNesting++; - parseArray(res, fpc, pe); - currentNesting--; - if (res.result == null) { - fhold; - fbreak; - } else { - result = res.result; - fexec res.p; - } - } - action parse_object { - currentNesting++; - parseObject(res, fpc, pe); - currentNesting--; - if (res.result == null) { - fhold; - fbreak; - } else { - result = res.result; - fexec res.p; - } - } - action exit { - fhold; - fbreak; - } - - main := ( Vnull @parse_null | - Vfalse @parse_false | - Vtrue @parse_true | - VNaN @parse_nan | - VInfinity @parse_infinity | - begin_number >parse_number | - begin_string >parse_string | - begin_array >parse_array | - begin_object >parse_object - ) %*exit; - }%% - - void parseValue(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject result = null; - - %% write init; - %% write exec; - - if (cs >= JSON_value_first_final && result != null) { - res.update(result, p); - } else { - res.update(null, p); - } - } - - %%{ - machine JSON_integer; - - write data; - - action exit { - fhold; - fbreak; - } - - main := '-'? ( '0' | [1-9][0-9]* ) ( ^[0-9]? @exit ); - }%% - - void parseInteger(ParserResult res, int p, int pe) { - int new_p = parseIntegerInternal(p, pe); - if (new_p == -1) { - res.update(null, p); - return; - } - RubyInteger number = createInteger(p, new_p); - res.update(number, new_p + 1); - return; - } - - int parseIntegerInternal(int p, int pe) { - int cs = EVIL; - - %% write init; - int memo = p; - %% write exec; - - if (cs < JSON_integer_first_final) { - return -1; - } - - return p; - } - - RubyInteger createInteger(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - return bytesToInum(runtime, num); - } - - RubyInteger bytesToInum(Ruby runtime, ByteList num) { - return runtime.is1_9() ? - ConvertBytes.byteListToInum19(runtime, num, 10, true) : - ConvertBytes.byteListToInum(runtime, num, 10, true); - } - - %%{ - machine JSON_float; - include JSON_common; - - write data; - - action exit { - fhold; - fbreak; - } - - main := '-'? - ( ( ( '0' | [1-9][0-9]* ) '.' [0-9]+ ( [Ee] [+\-]?[0-9]+ )? ) - | ( ( '0' | [1-9][0-9]* ) ( [Ee] [+\-]? [0-9]+ ) ) ) - ( ^[0-9Ee.\-]? @exit ); - }%% - - void parseFloat(ParserResult res, int p, int pe) { - int new_p = parseFloatInternal(p, pe); - if (new_p == -1) { - res.update(null, p); - return; - } - IRubyObject number = parser.decimalClass == null ? - createFloat(p, new_p) : createCustomDecimal(p, new_p); - - res.update(number, new_p + 1); - return; - } - - int parseFloatInternal(int p, int pe) { - int cs = EVIL; - - %% write init; - int memo = p; - %% write exec; - - if (cs < JSON_float_first_final) { - return -1; - } - - return p; - } - - RubyFloat createFloat(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - return RubyFloat.newFloat(runtime, dc.parse(num, true, runtime.is1_9())); - } - - IRubyObject createCustomDecimal(int p, int new_p) { - Ruby runtime = getRuntime(); - ByteList num = absSubSequence(p, new_p); - IRubyObject numString = runtime.newString(num.toString()); - return parser.decimalClass.callMethod(context, "new", numString); - } - - %%{ - machine JSON_string; - include JSON_common; - - write data; - - action parse_string { - int offset = byteList.begin(); - ByteList decoded = decoder.decode(byteList, memo + 1 - offset, - p - offset); - result = getRuntime().newString(decoded); - if (result == null) { - fhold; - fbreak; - } else { - fexec p + 1; - } - } - - action exit { - fhold; - fbreak; - } - - main := '"' - ( ( ^(["\\]|0..0x1f) - | '\\'["\\/bfnrt] - | '\\u'[0-9a-fA-F]{4} - | '\\'^(["\\/bfnrtu]|0..0x1f) - )* %parse_string - ) '"' @exit; - }%% - - void parseString(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject result = null; - - %% write init; - int memo = p; - %% write exec; - - if (parser.createAdditions) { - RubyHash matchString = parser.match_string; - if (matchString != null) { - final IRubyObject[] memoArray = { result, null }; - try { - matchString.visitAll(new RubyHash.Visitor() { - @Override - public void visit(IRubyObject pattern, IRubyObject klass) { - if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) { - memoArray[1] = klass; - throw JumpException.SPECIAL_JUMP; - } - } - }); - } catch (JumpException e) { } - if (memoArray[1] != null) { - RubyClass klass = (RubyClass) memoArray[1]; - if (klass.respondsTo("json_creatable?") && - klass.callMethod(context, "json_creatable?").isTrue()) { - result = klass.callMethod(context, "json_create", result); - } - } - } - } - - if (cs >= JSON_string_first_final && result != null) { - if (result instanceof RubyString) { - ((RubyString)result).force_encoding(context, info.utf8.get()); - } - res.update(result, p + 1); - } else { - res.update(null, p + 1); - } - } - - %%{ - machine JSON_array; - include JSON_common; - - write data; - - action parse_value { - parseValue(res, fpc, pe); - if (res.result == null) { - fhold; - fbreak; - } else { - if (parser.arrayClass == getRuntime().getArray()) { - ((RubyArray)result).append(res.result); - } else { - result.callMethod(context, "<<", res.result); - } - fexec res.p; - } - } - - action exit { - fhold; - fbreak; - } - - next_element = value_separator ignore* begin_value >parse_value; - - main := begin_array - ignore* - ( ( begin_value >parse_value - ignore* ) - ( ignore* - next_element - ignore* )* )? - ignore* - end_array @exit; - }%% - - void parseArray(ParserResult res, int p, int pe) { - int cs = EVIL; - - if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) { - throw newException(Utils.M_NESTING_ERROR, - "nesting of " + currentNesting + " is too deep"); - } - - IRubyObject result; - if (parser.arrayClass == getRuntime().getArray()) { - result = RubyArray.newArray(getRuntime()); - } else { - result = parser.arrayClass.newInstance(context, - IRubyObject.NULL_ARRAY, Block.NULL_BLOCK); - } - - %% write init; - %% write exec; - - if (cs >= JSON_array_first_final) { - res.update(result, p + 1); - } else { - throw unexpectedToken(p, pe); - } - } - - %%{ - machine JSON_object; - include JSON_common; - - write data; - - action parse_value { - parseValue(res, fpc, pe); - if (res.result == null) { - fhold; - fbreak; - } else { - if (parser.objectClass == getRuntime().getHash()) { - ((RubyHash)result).op_aset(context, lastName, res.result); - } else { - result.callMethod(context, "[]=", new IRubyObject[] { lastName, res.result }); - } - fexec res.p; - } - } - - action parse_name { - parseString(res, fpc, pe); - if (res.result == null) { - fhold; - fbreak; - } else { - RubyString name = (RubyString)res.result; - if (parser.symbolizeNames) { - lastName = context.getRuntime().is1_9() - ? name.intern19() - : name.intern(); - } else { - lastName = name; - } - fexec res.p; - } - } - - action exit { - fhold; - fbreak; - } - - pair = ignore* begin_name >parse_name ignore* name_separator - ignore* begin_value >parse_value; - next_pair = ignore* value_separator pair; - - main := ( - begin_object (pair (next_pair)*)? ignore* end_object - ) @exit; - }%% - - void parseObject(ParserResult res, int p, int pe) { - int cs = EVIL; - IRubyObject lastName = null; - boolean objectDefault = true; - - if (parser.maxNesting > 0 && currentNesting > parser.maxNesting) { - throw newException(Utils.M_NESTING_ERROR, - "nesting of " + currentNesting + " is too deep"); - } - - // this is guaranteed to be a RubyHash due to the earlier - // allocator test at OptionsReader#getClass - IRubyObject result; - if (parser.objectClass == getRuntime().getHash()) { - result = RubyHash.newHash(getRuntime()); - } else { - objectDefault = false; - result = parser.objectClass.newInstance(context, - IRubyObject.NULL_ARRAY, Block.NULL_BLOCK); - } - - %% write init; - %% write exec; - - if (cs < JSON_object_first_final) { - res.update(null, p + 1); - return; - } - - IRubyObject returnedResult = result; - - // attempt to de-serialize object - if (parser.createAdditions) { - IRubyObject vKlassName; - if (objectDefault) { - vKlassName = ((RubyHash)result).op_aref(context, parser.createId); - } else { - vKlassName = result.callMethod(context, "[]", parser.createId); - } - - if (!vKlassName.isNil()) { - // might throw ArgumentError, we let it propagate - IRubyObject klass = parser.info.jsonModule.get(). - callMethod(context, "deep_const_get", vKlassName); - if (klass.respondsTo("json_creatable?") && - klass.callMethod(context, "json_creatable?").isTrue()) { - - returnedResult = klass.callMethod(context, "json_create", result); - } - } - } - res.update(returnedResult, p + 1); - } - - %%{ - machine JSON; - include JSON_common; - - write data; - - action parse_value { - parseValue(res, fpc, pe); - if (res.result == null) { - fhold; - fbreak; - } else { - result = res.result; - fexec res.p; - } - } - - main := ignore* - ( begin_value >parse_value) - ignore*; - }%% - - public IRubyObject parseImplemetation() { - int cs = EVIL; - int p, pe; - IRubyObject result = null; - ParserResult res = new ParserResult(); - - %% write init; - p = byteList.begin(); - pe = p + byteList.length(); - %% write exec; - - if (cs >= JSON_first_final && p == pe) { - return result; - } else { - throw unexpectedToken(p, pe); - } - } - - public IRubyObject parse() { - return parseImplemetation(); - } - - /** - * Updates the "view" bytelist with the new offsets and returns it. - * @param start - * @param end - */ - private ByteList absSubSequence(int absStart, int absEnd) { - view.setBegin(absStart); - view.setRealSize(absEnd - absStart); - return view; - } - - /** - * Retrieves a constant directly descended from the JSON module. - * @param name The constant name - */ - private IRubyObject getConstant(String name) { - return parser.info.jsonModule.get().getConstant(name); - } - - private RaiseException newException(String className, String message) { - return Utils.newException(context, className, message); - } - - private RaiseException newException(String className, RubyString message) { - return Utils.newException(context, className, message); - } - - private RaiseException newException(String className, - String messageBegin, ByteList messageEnd) { - return newException(className, - getRuntime().newString(messageBegin).cat(messageEnd)); - } - } -} diff --git a/java/src/json/ext/ParserService.java b/java/src/json/ext/ParserService.java index b6015f964..2d49bd1a4 100644 --- a/java/src/json/ext/ParserService.java +++ b/java/src/json/ext/ParserService.java @@ -25,10 +25,10 @@ public boolean basicLoad(Ruby runtime) throws IOException { info.jsonModule = new WeakReference(runtime.defineModule("JSON")); RubyModule jsonExtModule = info.jsonModule.get().defineModuleUnder("Ext"); - RubyClass parserClass = - jsonExtModule.defineClassUnder("Parser", runtime.getObject(), + RubyClass parserConfigClass = + jsonExtModule.defineClassUnder("ParserConfig", runtime.getObject(), Parser.ALLOCATOR); - parserClass.defineAnnotatedMethods(Parser.class); + parserConfigClass.defineAnnotatedMethods(Parser.class); return true; } } diff --git a/java/src/json/ext/RuntimeInfo.java b/java/src/json/ext/RuntimeInfo.java index 2323bd942..9906a5d95 100644 --- a/java/src/json/ext/RuntimeInfo.java +++ b/java/src/json/ext/RuntimeInfo.java @@ -6,12 +6,10 @@ package json.ext; import java.lang.ref.WeakReference; -import java.util.HashMap; import java.util.Map; import java.util.WeakHashMap; import org.jruby.Ruby; import org.jruby.RubyClass; -import org.jruby.RubyEncoding; import org.jruby.RubyModule; import org.jruby.runtime.ThreadContext; import org.jruby.runtime.builtin.IRubyObject; @@ -20,7 +18,7 @@ final class RuntimeInfo { // since the vast majority of cases runs just one runtime, // we optimize for that - private static WeakReference runtime1 = new WeakReference(null); + private static WeakReference runtime1 = new WeakReference<>(null); private static RuntimeInfo info1; // store remaining runtimes here (does not include runtime1) private static Map runtimes; @@ -30,32 +28,10 @@ final class RuntimeInfo { // the Ruby runtime object, which would cause memory leaks in the runtimes map above. /** JSON */ WeakReference jsonModule; - /** JSON::Ext::Generator::GeneratorMethods::String::Extend */ - WeakReference stringExtendModule; /** JSON::Ext::Generator::State */ WeakReference generatorStateClass; - /** JSON::SAFE_STATE_PROTOTYPE */ - WeakReference safeStatePrototype; - final WeakReference utf8; - final WeakReference ascii8bit; - // other encodings - private final Map> encodings; - - private RuntimeInfo(Ruby runtime) { - RubyClass encodingClass = runtime.getEncoding(); - if (encodingClass == null) { // 1.8 mode - utf8 = ascii8bit = null; - encodings = null; - } else { - ThreadContext context = runtime.getCurrentContext(); - - utf8 = new WeakReference((RubyEncoding)RubyEncoding.find(context, - encodingClass, runtime.newString("utf-8"))); - ascii8bit = new WeakReference((RubyEncoding)RubyEncoding.find(context, - encodingClass, runtime.newString("ascii-8bit"))); - encodings = new HashMap>(); - } + private RuntimeInfo() { } static RuntimeInfo initRuntime(Ruby runtime) { @@ -63,16 +39,16 @@ static RuntimeInfo initRuntime(Ruby runtime) { if (runtime1.get() == runtime) { return info1; } else if (runtime1.get() == null) { - runtime1 = new WeakReference(runtime); - info1 = new RuntimeInfo(runtime); + runtime1 = new WeakReference<>(runtime); + info1 = new RuntimeInfo(); return info1; } else { if (runtimes == null) { - runtimes = new WeakHashMap(1); + runtimes = new WeakHashMap<>(1); } RuntimeInfo cache = runtimes.get(runtime); if (cache == null) { - cache = new RuntimeInfo(runtime); + cache = new RuntimeInfo(); runtimes.put(runtime, cache); } return cache; @@ -89,28 +65,4 @@ public static RuntimeInfo forRuntime(Ruby runtime) { return cache; } } - - public RubyEncoding getEncoding(ThreadContext context, String name) { - synchronized (encodings) { - WeakReference encoding = encodings.get(name); - if (encoding == null) { - Ruby runtime = context.getRuntime(); - encoding = new WeakReference((RubyEncoding)RubyEncoding.find(context, - runtime.getEncoding(), runtime.newString(name))); - encodings.put(name, encoding); - } - return encoding.get(); - } - } - - public GeneratorState getSafeStatePrototype(ThreadContext context) { - if (safeStatePrototype == null) { - IRubyObject value = jsonModule.get().getConstant("SAFE_STATE_PROTOTYPE"); - if (!(value instanceof GeneratorState)) { - throw context.getRuntime().newTypeError(value, generatorStateClass.get()); - } - safeStatePrototype = new WeakReference((GeneratorState)value); - } - return safeStatePrototype.get(); - } } diff --git a/java/src/json/ext/Ryu.java b/java/src/json/ext/Ryu.java new file mode 100644 index 000000000..570cd24c4 --- /dev/null +++ b/java/src/json/ext/Ryu.java @@ -0,0 +1,770 @@ +// Copyright 2018 Ulf Adams +// +// The contents of this file may be used under the terms of the Apache License, +// Version 2.0. +// +// Alternatively, the contents of this file may be used under the terms of +// the Boost Software License, Version 1.0. +// +// Unless required by applicable law or agreed to in writing, this software +// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. +// +// --- +// +// Apache License +// Version 2.0, January 2004 +// http://www.apache.org/licenses/ +// +// TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +// +// 1. Definitions. +// +// "License" shall mean the terms and conditions for use, reproduction, +// and distribution as defined by Sections 1 through 9 of this document. +// +// "Licensor" shall mean the copyright owner or entity authorized by +// the copyright owner that is granting the License. +// +// "Legal Entity" shall mean the union of the acting entity and all +// other entities that control, are controlled by, or are under common +// control with that entity. For the purposes of this definition, +// "control" means (i) the power, direct or indirect, to cause the +// direction or management of such entity, whether by contract or +// otherwise, or (ii) ownership of fifty percent (50%) or more of the +// outstanding shares, or (iii) beneficial ownership of such entity. +// +// "You" (or "Your") shall mean an individual or Legal Entity +// exercising permissions granted by this License. +// +// "Source" form shall mean the preferred form for making modifications, +// including but not limited to software source code, documentation +// source, and configuration files. +// +// "Object" form shall mean any form resulting from mechanical +// transformation or translation of a Source form, including but +// not limited to compiled object code, generated documentation, +// and conversions to other media types. +// +// "Work" shall mean the work of authorship, whether in Source or +// Object form, made available under the License, as indicated by a +// copyright notice that is included in or attached to the work +// (an example is provided in the Appendix below). +// +// "Derivative Works" shall mean any work, whether in Source or Object +// form, that is based on (or derived from) the Work and for which the +// editorial revisions, annotations, elaborations, or other modifications +// represent, as a whole, an original work of authorship. For the purposes +// of this License, Derivative Works shall not include works that remain +// separable from, or merely link (or bind by name) to the interfaces of, +// the Work and Derivative Works thereof. +// +// "Contribution" shall mean any work of authorship, including +// the original version of the Work and any modifications or additions +// to that Work or Derivative Works thereof, that is intentionally +// submitted to Licensor for inclusion in the Work by the copyright owner +// or by an individual or Legal Entity authorized to submit on behalf of +// the copyright owner. For the purposes of this definition, "submitted" +// means any form of electronic, verbal, or written communication sent +// to the Licensor or its representatives, including but not limited to +// communication on electronic mailing lists, source code control systems, +// and issue tracking systems that are managed by, or on behalf of, the +// Licensor for the purpose of discussing and improving the Work, but +// excluding communication that is conspicuously marked or otherwise +// designated in writing by the copyright owner as "Not a Contribution." +// +// "Contributor" shall mean Licensor and any individual or Legal Entity +// on behalf of whom a Contribution has been received by Licensor and +// subsequently incorporated within the Work. +// +// 2. Grant of Copyright License. Subject to the terms and conditions of +// this License, each Contributor hereby grants to You a perpetual, +// worldwide, non-exclusive, no-charge, royalty-free, irrevocable +// copyright license to reproduce, prepare Derivative Works of, +// publicly display, publicly perform, sublicense, and distribute the +// Work and such Derivative Works in Source or Object form. +// +// 3. Grant of Patent License. Subject to the terms and conditions of +// this License, each Contributor hereby grants to You a perpetual, +// worldwide, non-exclusive, no-charge, royalty-free, irrevocable +// (except as stated in this section) patent license to make, have made, +// use, offer to sell, sell, import, and otherwise transfer the Work, +// where such license applies only to those patent claims licensable +// by such Contributor that are necessarily infringed by their +// Contribution(s) alone or by combination of their Contribution(s) +// with the Work to which such Contribution(s) was submitted. If You +// institute patent litigation against any entity (including a +// cross-claim or counterclaim in a lawsuit) alleging that the Work +// or a Contribution incorporated within the Work constitutes direct +// or contributory patent infringement, then any patent licenses +// granted to You under this License for that Work shall terminate +// as of the date such litigation is filed. +// +// 4. Redistribution. You may reproduce and distribute copies of the +// Work or Derivative Works thereof in any medium, with or without +// modifications, and in Source or Object form, provided that You +// meet the following conditions: +// +// (a) You must give any other recipients of the Work or +// Derivative Works a copy of this License; and +// +// (b) You must cause any modified files to carry prominent notices +// stating that You changed the files; and +// +// (c) You must retain, in the Source form of any Derivative Works +// that You distribute, all copyright, patent, trademark, and +// attribution notices from the Source form of the Work, +// excluding those notices that do not pertain to any part of +// the Derivative Works; and +// +// (d) If the Work includes a "NOTICE" text file as part of its +// distribution, then any Derivative Works that You distribute must +// include a readable copy of the attribution notices contained +// within such NOTICE file, excluding those notices that do not +// pertain to any part of the Derivative Works, in at least one +// of the following places: within a NOTICE text file distributed +// as part of the Derivative Works; within the Source form or +// documentation, if provided along with the Derivative Works; or, +// within a display generated by the Derivative Works, if and +// wherever such third-party notices normally appear. The contents +// of the NOTICE file are for informational purposes only and +// do not modify the License. You may add Your own attribution +// notices within Derivative Works that You distribute, alongside +// or as an addendum to the NOTICE text from the Work, provided +// that such additional attribution notices cannot be construed +// as modifying the License. +// +// You may add Your own copyright statement to Your modifications and +// may provide additional or different license terms and conditions +// for use, reproduction, or distribution of Your modifications, or +// for any such Derivative Works as a whole, provided Your use, +// reproduction, and distribution of the Work otherwise complies with +// the conditions stated in this License. +// +// 5. Submission of Contributions. Unless You explicitly state otherwise, +// any Contribution intentionally submitted for inclusion in the Work +// by You to the Licensor shall be under the terms and conditions of +// this License, without any additional terms or conditions. +// Notwithstanding the above, nothing herein shall supersede or modify +// the terms of any separate license agreement you may have executed +// with Licensor regarding such Contributions. +// +// 6. Trademarks. This License does not grant permission to use the trade +// names, trademarks, service marks, or product names of the Licensor, +// except as required for reasonable and customary use in describing the +// origin of the Work and reproducing the content of the NOTICE file. +// +// 7. Disclaimer of Warranty. Unless required by applicable law or +// agreed to in writing, Licensor provides the Work (and each +// Contributor provides its Contributions) on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied, including, without limitation, any warranties or conditions +// of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +// PARTICULAR PURPOSE. You are solely responsible for determining the +// appropriateness of using or redistributing the Work and assume any +// risks associated with Your exercise of permissions under this License. +// +// 8. Limitation of Liability. In no event and under no legal theory, +// whether in tort (including negligence), contract, or otherwise, +// unless required by applicable law (such as deliberate and grossly +// negligent acts) or agreed to in writing, shall any Contributor be +// liable to You for damages, including any direct, indirect, special, +// incidental, or consequential damages of any character arising as a +// result of this License or out of the use or inability to use the +// Work (including but not limited to damages for loss of goodwill, +// work stoppage, computer failure or malfunction, or any and all +// other commercial damages or losses), even if such Contributor +// has been advised of the possibility of such damages. +// +// 9. Accepting Warranty or Additional Liability. While redistributing +// the Work or Derivative Works thereof, You may choose to offer, +// and charge a fee for, acceptance of support, warranty, indemnity, +// or other liability obligations and/or rights consistent with this +// License. However, in accepting such obligations, You may act only +// on Your own behalf and on Your sole responsibility, not on behalf +// of any other Contributor, and only if You agree to indemnify, +// defend, and hold each Contributor harmless for any liability +// incurred by, or claims asserted against, such Contributor by reason +// of your accepting any such warranty or additional liability. +// +// END OF TERMS AND CONDITIONS +// +// APPENDIX: How to apply the Apache License to your work. +// +// To apply the Apache License to your work, attach the following +// boilerplate notice, with the fields enclosed by brackets "[]" +// replaced with your own identifying information. (Don't include +// the brackets!) The text should be enclosed in the appropriate +// comment syntax for the file format. We also recommend that a +// file or class name and description of purpose be included on the +// same "printed page" as the copyright notice for easier +// identification within third-party archives. +// +// Copyright [yyyy] [name of copyright owner] +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// --- +// +// Boost Software License - Version 1.0 - August 17th, 2003 +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// 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, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// +// --- +// Minimal Ryu implementation adapted for Ruby JSON gem by Josef Šimánek +// Optimized for pre-extracted mantissa/exponent from JSON parsing +// This is a stripped-down version containing only what's needed for +// converting decimal mantissa+exponent to IEEE 754 double precision. +package json.ext; + +// Note: This is manually translated from ext/json/ext/vendor/ryu.h +public class Ryu { + static final int DOUBLE_POW5_INV_BITCOUNT = 125; + static final int DOUBLE_POW5_BITCOUNT = 125; + static long[][] DOUBLE_POW5_INV_SPLIT = { + { 1L, 2305843009213693952L}, { -7378697629483820646L, 1844674407370955161L}, + { 5165088340638674453L, 1475739525896764129L}, { 7821419487252849886L, 1180591620717411303L}, + { 8824922364862649494L, 1888946593147858085L}, { 7059937891890119595L, 1511157274518286468L}, + { -5420096130713635294L, 1208925819614629174L}, { -8672153809141816470L, 1934281311383406679L}, + { -6937723047313453176L, 1547425049106725343L}, { -1860829623108852217L, 1237940039285380274L}, + { -2977327396974163548L, 1980704062856608439L}, { -2381861917579330838L, 1584563250285286751L}, + { 9162556910162266299L, 1267650600228229401L}, { 7281393426775805432L, 2028240960365167042L}, + { -1553582888063176301L, 1622592768292133633L}, { 2446482504291369283L, 1298074214633706907L}, + { 7603720821608101175L, 2076918743413931051L}, { 2393627842544570617L, 1661534994731144841L}, + { -1774446540706253830L, 1329227995784915872L}, { -6528463279871916451L, 2126764793255865396L}, + { 5845275820328197809L, 1701411834604692317L}, { -2702476973221262399L, 1361129467683753853L}, + { 3054734472329800808L, 2177807148294006166L}, { -1245561236878069677L, 1742245718635204932L}, + { 6382248639981364905L, 1393796574908163946L}, { 2832900194486363201L, 2230074519853062314L}, + { 5955668970331000884L, 1784059615882449851L}, { 1075186361522890384L, 1427247692705959881L}, + { -5658399451047196032L, 2283596308329535809L}, { -4526719560837756825L, 1826877046663628647L}, + { 3757321980813615186L, 1461501637330902918L}, { -8062188859574838821L, 1169201309864722334L}, + { 5547241898389809503L, 1870722095783555735L}, { 4437793518711847602L, 1496577676626844588L}, + { -7517811629256252888L, 1197262141301475670L}, { -960452162584273651L, 1915619426082361072L}, + { 6610335899416401726L, 1532495540865888858L}, { -5779777724692609589L, 1225996432692711086L}, + { -5558295544766265019L, 1961594292308337738L}, { -757287621071101692L, 1569275433846670190L}, + { -4295178911598791677L, 1255420347077336152L}, { 7885109000409574610L, 2008672555323737844L}, + { -8449308058639981605L, 1606938044258990275L}, { 7997948812055656009L, 1285550435407192220L}, + { -5650025974420502002L, 2056880696651507552L}, { 2858676849947419045L, 1645504557321206042L}, + { -5091756149525885410L, 1316403645856964833L}, { -768112209757596011L, 2106245833371143733L}, + { 3074859046935833515L, 1684996666696914987L}, { -4918810391935153834L, 1347997333357531989L}, + { -7870096627096246135L, 2156795733372051183L}, { -2606728486935086585L, 1725436586697640946L}, + { 8982663654677661702L, 1380349269358112757L}, { -385133411483382570L, 2208558830972980411L}, + { -7686804358670526703L, 1766847064778384329L}, { -6149443486936421362L, 1413477651822707463L}, + { -2460411949614453533L, 2261564242916331941L}, { 9099716884534168143L, 1809251394333065553L}, + { -3788272936598396455L, 1447401115466452442L}, { 4348079280205103483L, 1157920892373161954L}, + { -4111119595897565398L, 1852673427797059126L}, { 7779150767507678651L, 1482138742237647301L}, + { 2533971799264232598L, 1185710993790117841L}, { -3324342750661048490L, 1897137590064188545L}, + { -6348823015270749115L, 1517710072051350836L}, { 5988988032009131678L, 1214168057641080669L}, + { -1485665593011120286L, 1942668892225729070L}, { -4877881289150806552L, 1554135113780583256L}, + { 7165741412905085728L, 1243308091024466605L}, { -6981557813061414451L, 1989292945639146568L}, + { -1895897435707221237L, 1591434356511317254L}, { -1516717948565776990L, 1273147485209053803L}, + { 4951948911778577463L, 2037035976334486086L}, { 272210314680951647L, 1629628781067588869L}, + { 3907117066486671641L, 1303703024854071095L}, { 6251387306378674625L, 2085924839766513752L}, + { -2377587784380880946L, 1668739871813211001L}, { 9165976216721026213L, 1334991897450568801L}, + { 7286864317269821294L, 2135987035920910082L}, { -1549206175667963611L, 1708789628736728065L}, + { -4928713755276281212L, 1367031702989382452L}, { 6871453250525591353L, 2187250724783011924L}, + { 9186511415162383406L, 1749800579826409539L}, { -7408186126837734568L, 1399840463861127631L}, + { -8163748988198464986L, 2239744742177804210L}, { 8226396068408869304L, 1791795793742243368L}, + { -4486929589498635526L, 1433436634993794694L}, { -7179087343197816842L, 2293498615990071511L}, + { 5324776569667477496L, 1834798892792057209L}, { 7949170070475892320L, 1467839114233645767L}, + { -1019361573103106790L, 1174271291386916613L}, { 5747719112518849781L, 1878834066219066582L}, + { -2780522339468740821L, 1503067252975253265L}, { -5913766686316902980L, 1202453802380202612L}, + { 5295368560860596524L, 1923926083808324180L}, { 4236294848688477220L, 1539140867046659344L}, + { 7078384693692692099L, 1231312693637327475L}, { -7121328563801244258L, 1970100309819723960L}, + { 9060332407926645887L, 1576080247855779168L}, { -3819780517884414260L, 1260864198284623334L}, + { -6111648828615062817L, 2017382717255397335L}, { -8578667877633960576L, 1613906173804317868L}, + { -3173585487365258138L, 1291124939043454294L}, { -5077736779784413021L, 2065799902469526871L}, + { 7005857020398200553L, 1652639921975621497L}, { -1774012013165260204L, 1322111937580497197L}, + { -6527768035806326650L, 2115379100128795516L}, { 5845832015580669650L, 1692303280103036413L}, + { -6391380831761195250L, 1353842624082429130L}, { 841837113407818570L, 2166148198531886609L}, + { 4362818505468165179L, 1732918558825509287L}, { -3888442825109288503L, 1386334847060407429L}, + { -6221508520174861605L, 2218135755296651887L}, { 2401490813343931363L, 1774508604237321510L}, + { 1921192650675145090L, 1419606883389857208L}, { -615440573661678179L, 2271371013423771532L}, + { 6886345170554478103L, 1817096810739017226L}, { 1819727321701672159L, 1453677448591213781L}, + { -2233566957380572596L, 1162941958872971024L}, { -3573707131808916153L, 1860707134196753639L}, + { -2858965705447132922L, 1488565707357402911L}, { 8780873879868024632L, 1190852565885922329L}, + { 2981351763563108441L, 1905364105417475727L}, { -4993616218633333894L, 1524291284333980581L}, + { 7073153469319063855L, 1219433027467184465L}, { -7129698522799049449L, 1951092843947495144L}, + { -5703758818239239559L, 1560874275157996115L}, { -8252355869333301970L, 1248699420126396892L}, + { 1553625868034358140L, 1997919072202235028L}, { 8621598323911307159L, 1598335257761788022L}, + { -481418970354774919L, 1278668206209430417L}, { -4459619167309550194L, 2045869129935088668L}, + { 121653480894270168L, 1636695303948070935L}, { 97322784715416134L, 1309356243158456748L}, + { -3533632359197244509L, 2094969989053530796L}, { 8241140556867935363L, 1675975991242824637L}, + { -785785183989472356L, 1340780792994259709L}, { -1257256294383155770L, 2145249268790815535L}, + { -4695153850248434939L, 1716199415032652428L}, { -66774265456837628L, 1372959532026121942L}, + { -3796187639472850528L, 2196735251241795108L}, { 652398703163629901L, 1757388200993436087L}, + { -6856778666952916726L, 1405910560794748869L}, { 7475898206584884855L, 2249456897271598191L}, + { 2291369750525997561L, 1799565517817278553L}, { 9211793429904618695L, 1439652414253822842L}, + { -18525771120251381L, 2303443862806116547L}, { 7363877012587619542L, 1842755090244893238L}, + { -5176944834155635336L, 1474204072195914590L}, { -7830904682066418592L, 1179363257756731672L}, + { 2227947767661371545L, 1886981212410770676L}, { -1906990600612813087L, 1509584969928616540L}, + { -5214941295232160793L, 1207667975942893232L}, { 6413489186596184024L, 1932268761508629172L}, + { -2247906280206873427L, 1545815009206903337L}, { 5580372605318321905L, 1236652007365522670L}, + { 8928596168509315048L, 1978643211784836272L}, { -235820694676368608L, 1582914569427869017L}, + { 7190041073742725760L, 1266331655542295214L}, { 436019273762630246L, 2026130648867672343L}, + { 7727513048493924843L, 1620904519094137874L}, { -8575384820172501418L, 1296723615275310299L}, + { 4726128361433549347L, 2074757784440496479L}, { 7470251503888749801L, 1659806227552397183L}, + { -5091845241114731129L, 1327844982041917746L}, { -4457603571041659483L, 2124551971267068394L}, + { -3566082856833327587L, 1699641577013654715L}, { -6542215100208572392L, 1359713261610923772L}, + { 4289851098633925465L, 2175541218577478036L}, { -257467935834769951L, 1740432974861982428L}, + { 3483374466074094362L, 1392346379889585943L}, { 1884050330976640656L, 2227754207823337509L}, + { 5196589079523222848L, 1782203366258670007L}, { -3221426365865242368L, 1425762693006936005L}, + { 5913764258841343181L, 2281220308811097609L}, { 8420360221814984868L, 1824976247048878087L}, + { -642409452031832752L, 1459980997639102469L}, { -513927561625466201L, 1167984798111281975L}, + { -8200981728084566569L, 1868775676978051161L}, { 4507261061758077715L, 1495020541582440929L}, + { 7295157664148372495L, 1196016433265952743L}, { 7982903447895485668L, 1913626293225524389L}, + { -8371072500651252758L, 1530901034580419511L}, { 4371188443704728763L, 1224720827664335609L}, + { -4074144934298164949L, 1959553324262936974L}, { -3259315947438531959L, 1567642659410349579L}, + { -2607452757950825567L, 1254114127528279663L}, { 3206773216762499739L, 2006582604045247462L}, + { -4813279056073820855L, 1605266083236197969L}, { -3850623244859056684L, 1284212866588958375L}, + { 4907049252451240275L, 2054740586542333401L}, { 236290587219081897L, 1643792469233866721L}, + { -3500316344966644806L, 1315033975387093376L}, { -1911157337204721366L, 2104054360619349402L}, + { 5849771759720043554L, 1683243488495479522L}, { -2698880221707785803L, 1346594790796383617L}, + { -8007557169474367609L, 2154551665274213788L}, { -2716696920837583764L, 1723641332219371030L}, + { -5862706351411977334L, 1378913065775496824L}, { 9066413911450387881L, 2206260905240794919L}, + { -7504264129807330988L, 1765008724192635935L}, { 8753983955121776503L, 1412006979354108748L}, + { -8129718560256619535L, 2259211166966573997L}, { 874922781278525018L, 1807368933573259198L}, + { 8078635854506640661L, 1445895146858607358L}, { -4605137760620418441L, 1156716117486885886L}, + { -3678871602250759182L, 1850745787979017418L}, { 746251532941302978L, 1480596630383213935L}, + { 597001226353042382L, 1184477304306571148L}, { -2734146852577042512L, 1895163686890513836L}, + { 8880728962164096960L, 1516130949512411069L}, { -7652812089236363725L, 1212904759609928855L}, + { -1176452898552450990L, 1940647615375886168L}, { 2748186495899949531L, 1552518092300708935L}, + { 2198549196719959625L, 1242014473840567148L}, { -171670099989974923L, 1987223158144907436L}, + { -7516033709475800585L, 1589778526515925949L}, { -6012826967580640468L, 1271822821212740759L}, + { 8826220925580526867L, 2034916513940385215L}, { 7060976740464421494L, 1627933211152308172L}, + { -1729916237112283451L, 1302346568921846537L}, { -6457214794121563846L, 2083754510274954460L}, + { -8855120650039161400L, 1667003608219963568L}, { -3394747705289418796L, 1333602886575970854L}, + { -5431596328463070074L, 2133764618521553367L}, { 3033420566713364587L, 1707011694817242694L}, + { 6116085268112601993L, 1365609355853794155L}, { -8661007644729388428L, 2184974969366070648L}, + { -3239457301041600419L, 1747979975492856518L}, { 1097782973908629988L, 1398383980394285215L}, + { 1756452758253807981L, 2237414368630856344L}, { 5094511021344956708L, 1789931494904685075L}, + { 4075608817075965366L, 1431945195923748060L}, { 6520974107321544586L, 2291112313477996896L}, + { 1527430471115325346L, 1832889850782397517L}, { -6156753252591560370L, 1466311880625918013L}, + { -1236053787331337972L, 1173049504500734410L}, { 9090360384495590213L, 1876879207201175057L}, + { -106409321887348476L, 1501503365760940045L}, { -3774476272251789104L, 1201202692608752036L}, + { -2349813220860952243L, 1921924308174003258L}, { 1809498238053148529L, 1537539446539202607L}, + { -5931099039041301823L, 1230031557231362085L}, { 1578287981759648052L, 1968050491570179337L}, + { -6116067244076102204L, 1574440393256143469L}, { -4892853795260881763L, 1259552314604914775L}, + { 3239480371808320148L, 2015283703367863641L}, { -1097764517295254205L, 1612226962694290912L}, + { 6500486015647617283L, 1289781570155432730L}, { -8045966448673363964L, 2063650512248692368L}, + { -2747424344196780848L, 1650920409798953894L}, { -2197939475357424678L, 1320736327839163115L}, + { 7551343283653851484L, 2113178124542660985L}, { 6041074626923081187L, 1690542499634128788L}, + { -6235186742687266020L, 1352433999707303030L}, { 1091747655926105338L, 2163894399531684849L}, + { 4562746939482794594L, 1731115519625347879L}, { 7339546366328145998L, 1384892415700278303L}, + { 8053925371383123274L, 2215827865120445285L}, { 6443140297106498619L, 1772662292096356228L}, + { -5913534206540532074L, 1418129833677084982L}, { 5295740528502789974L, 2269007733883335972L}, + { -3142105206681588667L, 1815206187106668777L}, { 4865013464138549713L, 1452164949685335022L}, + { -3486686858172980876L, 1161731959748268017L}, { 9178696285890871890L, 1858771135597228828L}, + { -3725089415513033457L, 1487016908477783062L}, { 4398626097073393881L, 1189613526782226450L}, + { 7037801755317430209L, 1903381642851562320L}, { 5630241404253944167L, 1522705314281249856L}, + { 814844308661245011L, 1218164251424999885L}, { 1303750893857992017L, 1949062802279999816L}, + { -2646348099655516710L, 1559250241823999852L}, { 5261619149759407279L, 1247400193459199882L}, + { -6338804619352589647L, 1995840309534719811L}, { 5997002748743659252L, 1596672247627775849L}, + { 8486951013736837725L, 1277337798102220679L}, { 2511075177753209390L, 2043740476963553087L}, + { -5369837487281253134L, 1634992381570842469L}, { -4295869989825002507L, 1307993905256673975L}, + { 4194654460505726958L, 2092790248410678361L}, { -333625246337328757L, 1674232198728542688L}, + { 3422448617672047318L, 1339385758982834151L}, { -1902779841208544938L, 2143017214372534641L}, + { -8900921502450656597L, 1714413771498027713L}, { -3431388387218614954L, 1371531017198422170L}, + { 5577825024675947042L, 2194449627517475473L}, { -6605786424484973336L, 1755559702013980378L}, + { -1595280324846068345L, 1404447761611184302L}, { -6241797334495619676L, 2247116418577894884L}, + { -4993437867596495741L, 1797693134862315907L}, { 3383947335406624054L, 1438154507889852726L}, + { -1964381892833222160L, 2301047212623764361L}, { -8950203143750398374L, 1840837770099011489L}, + { -7160162515000318699L, 1472670216079209191L}, { 5339916432225476010L, 1178136172863367353L}, + { 4854517476818851293L, 1885017876581387765L}, { 3883613981455081034L, 1508014301265110212L}, + { -4271806444319755819L, 1206411441012088169L}, { -6834890310911609310L, 1930258305619341071L}, + { 5600134195496443521L, 1544206644495472857L}, { -2898590273086665829L, 1235365315596378285L}, + { 6430302007287065643L, 1976584504954205257L}, { -2234456023654168132L, 1581267603963364205L}, + { -5476913633665244829L, 1265014083170691364L}, { -8763061813864391727L, 2024022533073106183L}, + { -3321100636349603058L, 1619218026458484946L}, { 8411165935146048523L, 1295374421166787957L}, + { -1299529762733963656L, 2072599073866860731L}, { -8418321439670991571L, 1658079259093488585L}, + { 8022738107230848036L, 1326463407274790868L}, { 9147032156827446534L, 2122341451639665389L}, + { -7439769533505684065L, 1697873161311732311L}, { 5116230817421183718L, 1358298529049385849L}, + { -2882077136351837022L, 2173277646479017358L}, { 1383687105660440706L, 1738622117183213887L}, + { -6271747944955468082L, 1390897693746571109L}, { 8411947361780802685L, 2225436309994513775L}, + { 6729557889424642148L, 1780349047995611020L}, { 5383646311539713719L, 1424279238396488816L}, + { 1235136468979721303L, 2278846781434382106L}, { -2701239639558133281L, 1823077425147505684L}, + { -2160991711646506624L, 1458461940118004547L}, { 5649904260166615347L, 1166769552094403638L}, + { 5350498001524674232L, 1866831283351045821L}, { 591049586477829062L, 1493465026680836657L}, + { -6905857960301557397L, 1194772021344669325L}, { 18673707743239135L, 1911635234151470921L}, + { -3674409848547319015L, 1529308187321176736L}, { 8128518565387875758L, 1223446549856941389L}, + { 1937583260394870242L, 1957514479771106223L}, { 8928764237799716840L, 1566011583816884978L}, + { -3925035053985957497L, 1252809267053507982L}, { 8477339172590109297L, 2004494827285612772L}, + { -596826291411733209L, 1603595861828490217L}, { 6901236596354434079L, 1282876689462792174L}, + { -26067890058636443L, 2052602703140467478L}, { 3668494502695001169L, 1642082162512373983L}, + { -8133250842069730034L, 1313665730009899186L}, { 9122891541139893884L, 2101865168015838698L}, + { -3769733211313815862L, 1681492134412670958L}, { 673562245690857633L, 1345193707530136767L}, + }; + static long[][] DOUBLE_POW5_SPLIT = { + { 0L, 1152921504606846976L}, { 0L, 1441151880758558720L}, + { 0L, 1801439850948198400L}, { 0L, 2251799813685248000L}, + { 0L, 1407374883553280000L}, { 0L, 1759218604441600000L}, + { 0L, 2199023255552000000L}, { 0L, 1374389534720000000L}, + { 0L, 1717986918400000000L}, { 0L, 2147483648000000000L}, + { 0L, 1342177280000000000L}, { 0L, 1677721600000000000L}, + { 0L, 2097152000000000000L}, { 0L, 1310720000000000000L}, + { 0L, 1638400000000000000L}, { 0L, 2048000000000000000L}, + { 0L, 1280000000000000000L}, { 0L, 1600000000000000000L}, + { 0L, 2000000000000000000L}, { 0L, 1250000000000000000L}, + { 0L, 1562500000000000000L}, { 0L, 1953125000000000000L}, + { 0L, 1220703125000000000L}, { 0L, 1525878906250000000L}, + { 0L, 1907348632812500000L}, { 0L, 1192092895507812500L}, + { 0L, 1490116119384765625L}, { 4611686018427387904L, 1862645149230957031L}, + { -8646911284551352320L, 1164153218269348144L}, { -6196953087261802496L, 1455191522836685180L}, + { -3134505340649865216L, 1818989403545856475L}, { -3918131675812331520L, 2273736754432320594L}, + { -4754675306596401152L, 1421085471520200371L}, { -5943344133245501440L, 1776356839400250464L}, + { -2817494148129488896L, 2220446049250313080L}, { -8678462870222012416L, 1387778780781445675L}, + { 7598665485932036096L, 1734723475976807094L}, { 274959820560269312L, 2168404344971008868L}, + { -9051522149004607488L, 1355252715606880542L}, { 2520655369026404352L, 1694065894508600678L}, + { -6072552825571770368L, 2117582368135750847L}, { -3795345515982356480L, 1323488980084844279L}, + { -4744181894977945600L, 1654361225106055349L}, { 3293144668132343808L, 2067951531382569187L}, + { -247627591630979072L, 1292469707114105741L}, { 8913837547316051968L, 1615587133892632177L}, + { -2692761121137098752L, 2019483917365790221L}, { -6294661719138074624L, 1262177448353618888L}, + { -3256641130495205376L, 1577721810442023610L}, { -8682487431546394624L, 1972152263052529513L}, + { -814868626289108736L, 1232595164407830945L}, { 8204786253993389888L, 1540743955509788682L}, + { 1032610780636961552L, 1925929944387235853L}, { 2951224747111794922L, 1203706215242022408L}, + { 3689030933889743652L, 1504632769052528010L}, { -4612083369492596243L, 1880790961315660012L}, + { -576709096719178700L, 1175494350822287507L}, { -720886370898973375L, 1469367938527859384L}, + { 3710578054803671186L, 1836709923159824231L}, { 26536550077201078L, 2295887403949780289L}, + { -6900943683842831182L, 1434929627468612680L}, { -4014493586376151074L, 1793662034335765850L}, + { 8816941072311974870L, 2242077542919707313L}, { -1406940857446097563L, 1401298464324817070L}, + { -6370362090235009857L, 1751623080406021338L}, { 5872105442488401391L, 2189528850507526673L}, + { -3247463126085830987L, 1368455531567204170L}, { -8671014926034676638L, 1710569414459005213L}, + { -1615396620688569989L, 2138211768073756516L}, { 1296220121283337709L, 1336382355046097823L}, + { -2991410866823215768L, 1670477943807622278L}, { -8350949601956407614L, 2088097429759527848L}, + { 6309871544845715001L, 1305060893599704905L}, { -5947718624225019960L, 1631326116999631131L}, + { -7434648280281274950L, 2039157646249538914L}, { -6952498184389490796L, 1274473528905961821L}, + { 532749306367912313L, 1593091911132452277L}, { 5277622651387278295L, 1991364888915565346L}, + { 7910200175544436838L, 1244603055572228341L}, { -3947307835851617664L, 1555753819465285426L}, + { 8900923260467641632L, 1944692274331606783L}, { -5966138008276193740L, 1215432671457254239L}, + { -7457672510345242175L, 1519290839321567799L}, { 9124653435777998898L, 1899113549151959749L}, + { 8008751406574943263L, 1186945968219974843L}, { 5399253239791291175L, 1483682460274968554L}, + { -2474305487115661840L, 1854603075343710692L}, { 759402079766405302L, 1159126922089819183L}, + { -3662433418719381276L, 1448908652612273978L}, { -9189727791826614499L, 1811135815765342473L}, + { -2263787702928492316L, 2263919769706678091L}, { 7808504722524468110L, 1414949856066673807L}, + { 5148944884728197234L, 1768687320083342259L}, { 1824495087482858639L, 2210859150104177824L}, + { 1140309429676786649L, 1381786968815111140L}, { 1425386787095983311L, 1727233711018888925L}, + { 6393419502297367043L, 2159042138773611156L}, { -5227484847918921406L, 1349401336733506972L}, + { -1922670041471263854L, 1686751670916883715L}, { -2403337551839079817L, 2108439588646104644L}, + { 803757039314269066L, 1317774742903815403L}, { -3606989719284551571L, 1647218428629769253L}, + { 4714634887749086344L, 2059023035787211567L}, { -8582568241225290795L, 1286889397367007229L}, + { -1504838264676837686L, 1608611746708759036L}, { 2730638187581340797L, 2010764683385948796L}, + { -7516723169616437810L, 1256727927116217997L}, { -172531925165771454L, 1570909908895272496L}, + { 4396021111970173586L, 1963637386119090621L}, { 5053356204195052443L, 1227273366324431638L}, + { -2906676781610960254L, 1534091707905539547L}, { -3633345977013700317L, 1917614634881924434L}, + { -4576684244847256650L, 1198509146801202771L}, { -5720855306059070813L, 1498136433501503464L}, + { -2539383114146450612L, 1872670541876879330L}, { -3892957455555225585L, 1170419088673049581L}, + { 4357175217410743827L, 1463023860841311977L}, { -8388589033518733928L, 1828779826051639971L}, + { 7961007781811134206L, 2285974782564549964L}, { -4247742173222816929L, 1428734239102843727L}, + { -5309677716528521161L, 1785917798878554659L}, { -6637097145660651452L, 2232397248598193324L}, + { -1842342706824213205L, 1395248280373870827L}, { -2302928383530266507L, 1744060350467338534L}, + { -7490346497840221037L, 2180075438084173168L}, { 6847748484918331612L, 1362547148802608230L}, + { -663686430706861293L, 1703183936003260287L}, { -829608038383576617L, 2128979920004075359L}, + { -518505023989735386L, 1330612450002547099L}, { -648131279987169232L, 1663265562503183874L}, + { -5421850118411349444L, 2079081953128979843L}, { 5834715712847682405L, 1299426220705612402L}, + { -1929977395795172801L, 1624282775882015502L}, { -7024157763171353905L, 2030353469852519378L}, + { -6695941611195790143L, 1268970918657824611L}, { -8369927013994737679L, 1586213648322280764L}, + { -5850722749066034194L, 1982767060402850955L}, { 5566670318688504437L, 1239229412751781847L}, + { 2346651879933242642L, 1549036765939727309L}, { 7545000868343941206L, 1936295957424659136L}, + { 4715625542714963254L, 1210184973390411960L}, { 5894531928393704067L, 1512731216738014950L}, + { -1855207126362645724L, 1890914020922518687L}, { -1159504453976653577L, 1181821263076574179L}, + { -1449380567470816972L, 1477276578845717724L}, { 2799960309088866689L, 1846595723557147156L}, + { -7473396843674234127L, 1154122327223216972L}, { -4730060036165404755L, 1442652909029021215L}, + { -5912575045206755944L, 1803316136286276519L}, { -7390718806508444929L, 2254145170357845649L}, + { -7513235640390177L, 1408840731473653530L}, { -4621077562977875625L, 1761050914342066913L}, + { 3447025083132431277L, 2201313642927583642L}, { 6766076695385157452L, 1375821026829739776L}, + { 8457595869231446815L, 1719776283537174720L}, { -7874749237170243097L, 2149720354421468400L}, + { 6607496772837067824L, 1343575221513417750L}, { -964001070808441028L, 1679469026891772187L}, + { -1205001338510551285L, 2099336283614715234L}, { -3058968845782788505L, 1312085177259197021L}, + { 5399660979626290177L, 1640106471573996277L}, { -7085481830749300991L, 2050133089467495346L}, + { -6734269153432007072L, 1281333180917184591L}, { -8417836441790008839L, 1601666476146480739L}, + { 7924448521472040567L, 2002083095183100924L}, { -4270591710934750454L, 1251301934489438077L}, + { 3885132398186337741L, 1564127418111797597L}, { -8978642557549241536L, 1955159272639746996L}, + { -3305808589254582008L, 1221974545399841872L}, { 479425281859160394L, 1527468181749802341L}, + { 5210967620751338397L, 1909335227187252926L}, { -1354831255457801406L, 1193334516992033078L}, + { -6305225087749639662L, 1491668146240041348L}, { -3269845341259661673L, 1864585182800051685L}, + { -6655339356714676450L, 1165365739250032303L}, { -8319174195893345562L, 1456707174062540379L}, + { 8047776328842869663L, 1820883967578175474L}, { 836348374198811271L, 2276104959472719343L}, + { 7440246761515338900L, 1422565599670449589L}, { -4534749603387990086L, 1778206999588061986L}, + { 8166621051047176104L, 2222758749485077483L}, { 2798295147690791113L, 1389224218428173427L}, + { -1113817083813899013L, 1736530273035216783L}, { -1392271354767373766L, 2170662841294020979L}, + { 8353202440125167204L, 1356664275808763112L}, { -8005241023553092611L, 1695830344760953890L}, + { 3828506775840797949L, 2119787930951192363L}, { 86973725686804766L, 1324867456844495227L}, + { -4502968861318881947L, 1656084321055619033L}, { 3594660960206173375L, 2070105401319523792L}, + { 2246663100128858359L, 1293815875824702370L}, { -6415043161693702859L, 1617269844780877962L}, + { 5816254103165035138L, 2021587305976097453L}, { 5941001823691840913L, 1263492066235060908L}, + { 7426252279614801142L, 1579365082793826135L}, { 4671129331091113523L, 1974206353492282669L}, + { 5225298841145639904L, 1233878970932676668L}, { 6531623551432049880L, 1542348713665845835L}, + { 3552843420862674446L, 1927935892082307294L}, { -2391158880388216375L, 1204959932551442058L}, + { -7600634618912658373L, 1506199915689302573L}, { -277421236786047158L, 1882749894611628216L}, + { -7090917300632361330L, 1176718684132267635L}, { -8863646625790451662L, 1470898355165334544L}, + { -6467872263810676674L, 1838622943956668180L}, { -3473154311335957938L, 2298278679945835225L}, + { 2440964573842414192L, 1436424174966147016L}, { 3051205717303017741L, 1795530218707683770L}, + { -5409364890226003632L, 2244412773384604712L}, { 8148361989677217490L, 1402757983365377945L}, + { -3649605568185641850L, 1753447479206722431L}, { -4562006960232052312L, 2191809349008403039L}, + { -2851254350145032695L, 1369880843130251899L}, { -3564067937681290869L, 1712351053912814874L}, + { -9066770940529001490L, 2140438817391018593L}, { -1055045819403238027L, 1337774260869386620L}, + { 3292878744173340370L, 1672217826086733276L}, { 4116098430216675462L, 2090272282608416595L}, + { 266718509671728212L, 1306420176630260372L}, { 333398137089660265L, 1633025220787825465L}, + { 5028433689789463235L, 2041281525984781831L}, { -8386443989950055238L, 1275800953740488644L}, + { -5871368969010181144L, 1594751192175610805L}, { 1884160825592049379L, 1993438990219513507L}, + { -1128242493218663091L, 1245899368887195941L}, { 7813068920331446945L, 1557374211108994927L}, + { 5154650131986920777L, 1946717763886243659L}, { 915813323278131534L, 1216698602428902287L}, + { -3466919364329723487L, 1520873253036127858L}, { -8945335223839542262L, 1901091566295159823L}, + { -5590834514899713914L, 1188182228934474889L}, { 2234828893230133415L, 1485227786168093612L}, + { 2793536116537666769L, 1856534732710117015L}, { 8663489100477123587L, 1160334207943823134L}, + { 1605989338741628675L, 1450417759929778918L}, { -7215885363427739964L, 1813022199912223647L}, + { -9019856704284674954L, 2266277749890279559L}, { -5637410440177921847L, 1416423593681424724L}, + { -2435077031795014404L, 1770529492101780905L}, { 6179525747111007803L, 2213161865127226132L}, + { -5361168444910395931L, 1383226165704516332L}, { -2089774537710607010L, 1729032707130645415L}, + { -2612218172138258762L, 2161290883913306769L}, { 2979049660840976177L, 1350806802445816731L}, + { -887873942376167682L, 1688508503057270913L}, { 8113529608884566205L, 2110635628821588642L}, + { -8764102049729309834L, 1319147268013492901L}, { -1731755525306861484L, 1648934085016866126L}, + { -6776380425060964759L, 2061167606271082658L}, { -6541080774876796927L, 1288229753919426661L}, + { 1047021068258779650L, 1610287192399283327L}, { -3302909683103913342L, 2012858990499104158L}, + { 4853210475701136017L, 1258036869061940099L}, { 1454827076199032118L, 1572546086327425124L}, + { 1818533845248790147L, 1965682607909281405L}, { 3442426662494187794L, 1228551629943300878L}, + { -4920338708737041066L, 1535689537429126097L}, { 3072948650933474476L, 1919611921786407622L}, + { -2691093111593966357L, 1199757451116504763L}, { -3363866389492457946L, 1499696813895630954L}, + { -8816519005292960336L, 1874621017369538693L}, { 8324733676974063502L, 1171638135855961683L}, + { 5794231077790191473L, 1464547669819952104L}, { 7242788847237739342L, 1830684587274940130L}, + { -169885977807601630L, 2288355734093675162L}, { -2412021745343444971L, 1430222333808546976L}, + { 1596658836748081690L, 1787777917260683721L}, { 6607509564362490017L, 2234722396575854651L}, + { 1823850468512862308L, 1396701497859909157L}, { 6891499104068465790L, 1745876872324886446L}, + { -608998156769193571L, 2182346090406108057L}, { 4231062170446641922L, 1363966306503817536L}, + { 5288827713058302403L, 1704957883129771920L}, { 6611034641322878003L, 2131197353912214900L}, + { -5091475386027977056L, 1331998346195134312L}, { -1752658214107583416L, 1664997932743917890L}, + { -6802508786061867174L, 2081247415929897363L}, { 4971804045566108824L, 1300779634956185852L}, + { 6214755056957636030L, 1625974543695232315L}, { 3156757802769657134L, 2032468179619040394L}, + { 6584659645158423613L, 1270292612261900246L}, { -992547480406746292L, 1587865765327375307L}, + { -1240684350508432865L, 1984832206659219134L}, { 6142101308573311315L, 1240520129162011959L}, + { 3065940617289251240L, 1550650161452514949L}, { 8444111790038951954L, 1938312701815643686L}, + { 665883850346957067L, 1211445438634777304L}, { 832354812933696334L, 1514306798293471630L}, + { -8182928520687655390L, 1892883497866839537L}, { -502644307002396715L, 1183052186166774710L}, + { -5239991402180383798L, 1478815232708468388L}, { -1938303234298091843L, 1848519040885585485L}, + { -5823125539863695306L, 1155324400553490928L}, { -2667220906402231229L, 1444155500691863660L}, + { 1277659885424598868L, 1805194375864829576L}, { 1597074856780748586L, 2256492969831036970L}, + { 5609857803915355770L, 1410308106144398106L}, { -2211049781960581095L, 1762885132680497632L}, + { 1847873790976661535L, 2203606415850622041L}, { -5762607908280668397L, 1377254009906638775L}, + { -7203259885350835496L, 1721567512383298469L}, { 219297180166231438L, 2151959390479123087L}, + { 7054589765244976505L, 1344974619049451929L}, { -5016820848725943081L, 1681218273811814911L}, + { -6271026060907428851L, 2101522842264768639L}, { -3919391288067143032L, 1313451776415480399L}, + { -4899239110083928790L, 1641814720519350499L}, { -6124048887604910988L, 2052268400649188124L}, + { -1521687545539375415L, 1282667750405742577L}, { 7321262604930556539L, 1603334688007178222L}, + { -71793780691580134L, 2004168360008972777L}, { 4566814905495150320L, 1252605225005607986L}, + { -3514853404985837908L, 1565756531257009982L}, { -9005252774659685289L, 1957195664071262478L}, + { 1289246043478778550L, 1223247290044539049L}, { 6223243572775861092L, 1529059112555673811L}, + { 3167368447542438461L, 1911323890694592264L}, { 1979605279714024038L, 1194577431684120165L}, + { 7086192618069917952L, 1493221789605150206L}, { -365631264267378368L, 1866527237006437757L}, + { -4840205558594499384L, 1166579523129023598L}, { 7784801107039039482L, 1458224403911279498L}, + { 507629346944023544L, 1822780504889099373L}, { 5246222702107417334L, 2278475631111374216L}, + { 3278889188817135834L, 1424047269444608885L}, { 8710297504448807696L, 1780059086805761106L}, + }; + + // IEEE 754 double precision constants + static final int DOUBLE_MANTISSA_BITS = 52; + static final int DOUBLE_EXPONENT_BITS = 11; + static final int DOUBLE_EXPONENT_BIAS = 1023; + + // Helper: floor(log2(value)) using ryu_leading_zeros64 + static int floorLog2(long value) { + return 63 - Long.numberOfLeadingZeros(value); + } + + // Helper: log2(5^e) approximation + static int log2pow5(int e) { + return (e * 1217359) >> 19; + } + + // Helper: ceil(log2(5^e)) + static int ceilLog2pow5(int e) { + return log2pow5(e) + 1; + } + + // Helper: convert uint64 bits to double + static double int64Bits2Double(long bits) { + return Double.longBitsToDouble(bits); + } + + // Check if value is multiple of 2^p + static boolean multipleOfPowerOf2(long value) { + return (value & (value - 1)) == 0; + } + + // Count how many times value is divisible by 5 + // Uses modular inverse to avoid expensive division + static int pow5Factor(long value) { + final long mInv5 = -3689348814741910323L; + final long nDiv5 = 3689348814741910323L; + int count = 0; + for (;;) { + value *= mInv5; + if (Long.compareUnsigned(value, nDiv5) > 0) { + break; + } + ++count; + } + return count; + } + + // Check if value is multiple of 5^p + // Optimized: uses modular inverse instead of division + static boolean multipleOfPowerOf5(long value, int p) { + return pow5Factor(value) >= p; + } + + // Fallback for systems without 128-bit integers + static long umul128(long a, long b, long[] productHi) { + long aLo = Integer.toUnsignedLong((int)a); + long aHi = Integer.toUnsignedLong((int)(a >> 32)); + long bLo = Integer.toUnsignedLong((int)b); + long bHi = Integer.toUnsignedLong((int)(b >> 32)); + + long b00 = aLo * bLo; + long b01 = aLo * bHi; + long b10 = aHi * bLo; + long b11 = aHi * bHi; + + long b00Lo = Integer.toUnsignedLong((int)b00); + long b00Hi = Integer.toUnsignedLong((int)(b00 >> 32)); + + long mid1 = b10 + b00Hi; + long mid1Lo = Integer.toUnsignedLong((int)(mid1)); + long mid1Hi = Integer.toUnsignedLong((int)(mid1 >> 32)); + + long mid2 = b01 + mid1Lo; + long mid2Lo = Integer.toUnsignedLong((int)(mid2)); + long mid2Hi = Integer.toUnsignedLong((int)(mid2 >> 32)); + + long pHi = b11 + mid1Hi + mid2Hi; + long pLo = (mid2Lo << 32) | b00Lo; + + productHi[0] = pHi; + return pLo; + } + + static long shiftright128(long lo, long hi, int dist) { + return (hi << (64 - dist)) | (lo >>> dist); + } + + static long mulShift64(long m, long[] mul, int j) { + long[] high1Buf = new long[1]; + long low1 = umul128(m, mul[1], high1Buf); + long high1 = high1Buf[0]; + long[] high0Buf = high1Buf; // reuse alloc since we extracted high1 into its own long + umul128(m, mul[0], high0Buf); + long high0 = high0Buf[0]; + long sum = high0 + low1; + if (Long.compareUnsigned(sum, high0) < 0) { + ++high1; + } + return shiftright128(sum, high1, j - 64); + } + + // Precomputed powers of ten from 10^0 to 10^22. These + // can be represented exactly using the double type. + private static final double[] POWER_OF_TEN = { + 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, + 1e12, 1e13, 1e14, 1e15, 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22}; + + // Main conversion function: decimal mantissa+exponent to IEEE 754 double + // Optimized for JSON parsing with fast paths for edge cases + public static double ryuS2dFromParts(long m10, int m10digits, int e10, boolean signedM) { + // From Daniel Lemire's fast_double_parser which is an extraction of part of 'How to Read + // Floating Point Numbers Accurately' by Willian D. Clinger: https://www.cs.uoregon.edu/Reports/TR-1990-001.pdf + if (-22 <= e10 && e10 <= 22 && Long.compareUnsigned(m10, 9007199254740991L) <= 0) { + double value = (double) m10; // Lossless conversion for 0 <= i <= 2^53 - 1. + + if (e10 < 0) { + value /= POWER_OF_TEN[-e10]; + } else { + value *= POWER_OF_TEN[e10]; + } + + return signedM ? -value : value; + } + + // Fast path: handle zero explicitly (e.g., "0.0", "0e0") or overflow/underflow early + if (m10 == 0 || m10digits + e10 <= -324) return signedM ? -0.0 : 0.0; + + // Overflow to infinity + if (m10digits + e10 >= 310) return Double.POSITIVE_INFINITY; + + // Convert decimal to binary: m10 * 10^e10 = m2 * 2^e2 + int e2; + long m2; + boolean trailingZeros; + + if (e10 >= 0) { + // Positive exponent: multiply by 5^e10 and adjust binary exponent + e2 = floorLog2(m10) + e10 + log2pow5(e10) - (DOUBLE_MANTISSA_BITS + 1); + int j = e2 - e10 - ceilLog2pow5(e10) + DOUBLE_POW5_BITCOUNT; + m2 = mulShift64(m10, DOUBLE_POW5_SPLIT[e10], j); + trailingZeros = e2 < e10 || (e2 - e10 < 64 && multipleOfPowerOf2(m10)); + } else { + // Negative exponent: divide by 5^(-e10) + e2 = floorLog2(m10) + e10 - ceilLog2pow5(-e10) - (DOUBLE_MANTISSA_BITS + 1); + int j = e2 - e10 + ceilLog2pow5(-e10) - 1 + DOUBLE_POW5_INV_BITCOUNT; + m2 = mulShift64(m10, DOUBLE_POW5_INV_SPLIT[-e10], j); + trailingZeros = multipleOfPowerOf5(m10, -e10); + } + + // Compute IEEE 754 exponent + int ieee_e2 = Math.max(0, e2 + DOUBLE_EXPONENT_BIAS + floorLog2(m2)); + int signedML = signedM ? 1 : 0; + + if (ieee_e2 > 0x7fe) { + // Overflow to infinity + return int64Bits2Double((signedML << 63) | 0x7ff0000000000000L); + } + + // Compute shift amount for rounding + int shift = (ieee_e2 == 0 ? 1 : ieee_e2) - e2 - DOUBLE_EXPONENT_BIAS - DOUBLE_MANTISSA_BITS; + + // IEEE 754 round-to-even (banker's rounding) + trailingZeros &= (m2 & ((1L << (shift - 1)) - 1)) == 0; + long lastRemovedBit = (m2 >> (shift - 1)) & 1; + int roundUp = (lastRemovedBit != 0) && (!trailingZeros || (((m2 >> shift) & 1) != 0)) ? 1 : 0; + + long ieee_m2 = (m2 >> shift) + roundUp; + ieee_m2 &= (1L << DOUBLE_MANTISSA_BITS) - 1; + + if (ieee_m2 == 0 && roundUp == 1) { + ieee_e2++; + } + + // Pack sign, exponent, and mantissa into IEEE 754 format + // Match original Ryu: group sign+exponent, then shift and add mantissa + long ieee = (((signedML << DOUBLE_EXPONENT_BITS) | (long)ieee_e2) << DOUBLE_MANTISSA_BITS) | ieee_m2; + return int64Bits2Double(ieee); + } +} diff --git a/java/src/json/ext/SWARBasicStringEncoder.java b/java/src/json/ext/SWARBasicStringEncoder.java new file mode 100644 index 000000000..bd0d1a70f --- /dev/null +++ b/java/src/json/ext/SWARBasicStringEncoder.java @@ -0,0 +1,91 @@ +package json.ext; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.jruby.util.ByteList; + +public class SWARBasicStringEncoder extends StringEncoder { + + public SWARBasicStringEncoder() { + super(ESCAPE_TABLE); + } + + @Override + void encode(ByteList src) throws IOException { + byte[] hexdig = HEX; + byte[] scratch = aux; + + byte[] ptrBytes = src.unsafeBytes(); + int ptr = src.begin(); + int len = src.realSize(); + + int beg = 0; + int pos = 0; + + // There are optimizations in JRuby where ptr > 0 will be true. For example, if we + // slice a string, the underlying byte array is the same, but the + // begin index and real size are different. When reading from the ptrBytes + // array, we need to always add ptr to the index. + ByteBuffer bb = ByteBuffer.wrap(ptrBytes, 0, ptr + len); + + while (pos + 8 <= len) { + long x = bb.getLong(ptr + pos); + if (skipChunk(x)) { + pos += 8; + continue; + } + int chunkEnd = ptr + pos + 8; + while (ptr + pos < chunkEnd) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = ESCAPE_TABLE[ch]; + if (ch_len > 0) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, scratch, hexdig); + } else { + pos++; + } + } + } + + if (pos + 4 <= len) { + int x = bb.getInt(ptr + pos); + if (skipChunk(x)) { + pos += 4; + } + } + + while (pos < len) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = ESCAPE_TABLE[ch]; + if (ch_len > 0) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, scratch, hexdig); + } else { + pos++; + } + } + + if (beg < len) { + append(ptrBytes, ptr + beg, len - beg); + } + } + + boolean skipChunk(long x) { + long is_ascii = 0x8080808080808080L & ~x; + long xor2 = x ^ 0x0202020202020202L; + long lt32_or_eq34 = xor2 - 0x2121212121212121L; + long sub92 = x ^ 0x5C5C5C5C5C5C5C5CL; + long eq92 = (sub92 - 0x0101010101010101L); + return ((lt32_or_eq34 | eq92) & is_ascii) == 0; + } + + boolean skipChunk(int x) { + int is_ascii = 0x80808080 & ~x; + int xor2 = x ^ 0x02020202; + int lt32_or_eq34 = xor2 - 0x21212121; + int sub92 = x ^ 0x5C5C5C5C; + int eq92 = (sub92 - 0x01010101); + return ((lt32_or_eq34 | eq92) & is_ascii) == 0; + } +} diff --git a/java/src/json/ext/SegmentedByteListDirectOutputStream.java b/java/src/json/ext/SegmentedByteListDirectOutputStream.java new file mode 100644 index 000000000..0e89e50df --- /dev/null +++ b/java/src/json/ext/SegmentedByteListDirectOutputStream.java @@ -0,0 +1,84 @@ +package json.ext; + +import org.jcodings.Encoding; +import org.jruby.util.ByteList; + +import java.io.IOException; + +public class SegmentedByteListDirectOutputStream extends AbstractByteListDirectOutputStream { + private static final int DEFAULT_CAPACITY = 1024; + + private int totalLength; + // Why 21? The minimum segment size is 1024 bytes. If we double the segment size each time + // we need a new segment, we only need 21 segments to reach the maximum array size in Java. + private byte[][] segments = new byte[21][]; + private int currentSegmentIndex; + private int currentSegmentLength; + private byte[] currentSegment; + + SegmentedByteListDirectOutputStream(int size) { + currentSegment = new byte[Math.max(size, DEFAULT_CAPACITY)]; + segments[0] = currentSegment; + } + + public ByteList toByteListDirect(Encoding encoding) { + byte[] buffer = new byte[totalLength]; + int pos = 0; + // We handle the current segment separately. + for (int i = 0; i < currentSegmentIndex; i++) { + byte[] segment = segments[i]; + System.arraycopy(segment, 0, buffer, pos, segment.length); + pos += segment.length; + } + System.arraycopy(currentSegment, 0, buffer, pos, currentSegmentLength); + return new ByteList(buffer, 0, totalLength, encoding, false); + } + + @Override + public void write(int b) throws IOException { + if (currentSegmentLength == currentSegment.length) { + if (totalLength + 1 < 0) { + throw new IOException("Total length exceeds maximum length of an array."); + } + currentSegmentIndex++; + int capacity = currentSegment.length * 2; + capacity = (capacity < 0) ? DEFAULT_CAPACITY : capacity; + currentSegment = new byte[capacity]; + currentSegmentLength = 0; + segments[currentSegmentIndex] = currentSegment; + } + currentSegment[currentSegmentLength++] = (byte) b; + totalLength++; + } + + @Override + public void write(byte[] bytes, int start, int length) throws IOException { + int remaining = length; + + while (remaining > 0) { + if (currentSegmentLength == currentSegment.length) { + if (totalLength + remaining < 0) { + throw new IOException("Total length exceeds maximum length of an array."); + } + currentSegmentIndex++; + int capacity = currentSegment.length << 1; + capacity = (capacity < 0) ? DEFAULT_CAPACITY : capacity; + capacity = (capacity < remaining) ? remaining : capacity; + currentSegment = new byte[capacity]; + currentSegmentLength = 0; + segments[currentSegmentIndex] = currentSegment; + } + int toWrite = Math.min(remaining, currentSegment.length - currentSegmentLength); + System.arraycopy(bytes, start, currentSegment, currentSegmentLength, toWrite); + currentSegmentLength += toWrite; + start += toWrite; + remaining -= toWrite; + } + totalLength += length; + } + + @Override + public void write(byte[] bytes) throws IOException { + write(bytes, 0, bytes.length); + } +} diff --git a/java/src/json/ext/StringDecoder.java b/java/src/json/ext/StringDecoder.java index 76cf18375..362a0d685 100644 --- a/java/src/json/ext/StringDecoder.java +++ b/java/src/json/ext/StringDecoder.java @@ -9,6 +9,9 @@ import org.jruby.runtime.ThreadContext; import org.jruby.util.ByteList; +import java.io.IOException; +import java.nio.ByteBuffer; + /** * A decoder that reads a JSON-encoded string from the given sources and * returns its decoded form on a new ByteList. Escaped Unicode characters @@ -20,37 +23,100 @@ final class StringDecoder extends ByteListTranscoder { * or -1 when not. */ private int surrogatePairStart = -1; + private boolean allowControlCharacters = false; + private boolean allowInvalidEscape = false; + + private final StringScanner scanner = StringScanner.getInstance(); + + private ByteList out; - // Array used for writing multi-byte characters into the buffer at once + // Array used for writing multibyte characters into the buffer at once private final byte[] aux = new byte[4]; - StringDecoder(ThreadContext context) { - super(context); + public StringDecoder(boolean allowControlCharacters, boolean allowInvalidEscape) { + this.allowControlCharacters = allowControlCharacters; + this.allowInvalidEscape = allowInvalidEscape; + } + + ByteList decode(ThreadContext context, ByteList src, int start, int end) { + try { + init(src, start, end); + this.out = new ByteList(end - start); + while (hasNext()) { + handleChar(context, readUtf8Char(context)); + } + quoteStop(pos); + return out; + } catch (IOException e) { + throw context.runtime.newIOErrorFromException(e); + } + } + + // Decodes strings with no UTF-8 validation. It is assumed the string is either ASCII-only + // or UTF-8 avlidation has been disabled. + ByteList decodeNoValidate(ThreadContext context, ByteList src, int start, int end, ByteBuffer chunks) { + try { + init(src, start, end); + this.out = new ByteList(end - start); + final byte[] data = src.unsafeBytes(); + final int base = src.begin(); + final int absEnd = base + srcEnd; + int cursor = base + pos; + int runStart = cursor; + while (cursor < absEnd) { + cursor = scanner.scanEscape(data, chunks, cursor, absEnd); + if (cursor >= absEnd) { + break; + } + int b = Byte.toUnsignedInt(data[cursor]); + if (b == '\\') { + if (cursor > runStart) { + append(data, runStart, cursor - runStart); + } + charStart = cursor - base; + pos = charStart + 1; + handleEscapeSequence(context); + cursor = base + pos; + runStart = cursor; + } else { + if (!allowControlCharacters) { + charStart = cursor - base; + throw invalidControlChar(context); + } + cursor++; + } + } + if (absEnd > runStart) { + append(data, runStart, absEnd - runStart); + } + return out; + } catch (IOException e) { + throw context.runtime.newIOErrorFromException(e); + } } - ByteList decode(ByteList src, int start, int end) { - ByteList out = new ByteList(end - start); - out.setEncoding(src.getEncoding()); - init(src, start, end, out); - while (hasNext()) { - handleChar(readUtf8Char()); + @Override + protected int readUtf8Char(ThreadContext context) { + int c = super.readUtf8Char(context); + if (c < 0x20 && !allowControlCharacters) { + throw invalidControlChar(context); } - quoteStop(pos); - return out; + return c; } - private void handleChar(int c) { + private void handleChar(ThreadContext context, int c) throws IOException { if (c == '\\') { quoteStop(charStart); - handleEscapeSequence(); + handleEscapeSequence(context); } else { quoteStart(); } } - private void handleEscapeSequence() { - ensureMin(1); - switch (readUtf8Char()) { + private void handleEscapeSequence(ThreadContext context) throws IOException { + ensureMin(context, 1); + int character = readUtf8Char(context); + switch (character) { case 'b': append('\b'); break; @@ -66,32 +132,53 @@ private void handleEscapeSequence() { case 't': append('\t'); break; + case '/': + append('/'); + break; + case '"': + append('"'); + break; + case '\\': + append('\\'); + break; case 'u': - ensureMin(4); - int cp = readHex(); + ensureMin(context, 4); + int cp = readHex(context); if (Character.isHighSurrogate((char)cp)) { - handleLowSurrogate((char)cp); + handleLowSurrogate(context, (char)cp); } else if (Character.isLowSurrogate((char)cp)) { // low surrogate with no high surrogate - throw invalidUtf8(); + throw invalidUtf8(context); } else { writeUtf8Char(cp); } break; - default: // '\\', '"', '/'... - quoteStart(); + default: + if (allowInvalidEscape) { + writeUtf8Char(character); + } else { + throw invalidEscape(context); + } } } - private void handleLowSurrogate(char highSurrogate) { + protected void append(int b) throws IOException { + out.append(b); + } + + protected void append(byte[] origin, int start, int length) throws IOException { + out.append(origin, start, length); + } + + private void handleLowSurrogate(ThreadContext context, char highSurrogate) throws IOException { surrogatePairStart = charStart; - ensureMin(1); - int lowSurrogate = readUtf8Char(); + ensureMin(context, 1); + int lowSurrogate = readUtf8Char(context); if (lowSurrogate == '\\') { - ensureMin(5); - if (readUtf8Char() != 'u') throw invalidUtf8(); - lowSurrogate = readHex(); + ensureMin(context, 5); + if (readUtf8Char(context) != 'u') throw invalidUtf8(context); + lowSurrogate = readHex(context); } if (Character.isLowSurrogate((char)lowSurrogate)) { @@ -99,11 +186,11 @@ private void handleLowSurrogate(char highSurrogate) { (char)lowSurrogate)); surrogatePairStart = -1; } else { - throw invalidUtf8(); + throw invalidUtf8(context); } } - private void writeUtf8Char(int codePoint) { + private void writeUtf8Char(int codePoint) throws IOException { if (codePoint < 0x80) { append(codePoint); } else if (codePoint < 0x800) { @@ -131,12 +218,12 @@ private byte tailByte(int value) { /** * Reads a 4-digit unsigned hexadecimal number from the source. */ - private int readHex() { + private int readHex(ThreadContext context) { int numberStart = pos; int result = 0; int length = 4; for (int i = 0; i < length; i++) { - int digit = readUtf8Char(); + int digit = readUtf8Char(context); int digitValue; if (digit >= '0' && digit <= '9') { digitValue = digit - '0'; @@ -145,8 +232,7 @@ private int readHex() { } else if (digit >= 'A' && digit <= 'F') { digitValue = 10 + digit - 'A'; } else { - throw new NumberFormatException("Invalid base 16 number " - + src.subSequence(numberStart, numberStart + length)); + throw invalidUnicodeEscape(context, numberStart); } result = result * 16 + digitValue; } @@ -154,13 +240,39 @@ private int readHex() { } @Override - protected RaiseException invalidUtf8() { + protected RaiseException invalidUtf8(ThreadContext context) { ByteList message = new ByteList( ByteList.plain("partial character in source, " + "but hit end near ")); int start = surrogatePairStart != -1 ? surrogatePairStart : charStart; message.append(src, start, srcEnd - start); return Utils.newException(context, Utils.M_PARSER_ERROR, - context.getRuntime().newString(message)); + context.runtime.newString(message)); + } + + protected RaiseException invalidControlChar(ThreadContext context) { + ByteList message = new ByteList( + ByteList.plain("invalid ASCII control character in string: ")); + message.append(src, charStart, srcEnd - charStart); + return Utils.newException(context, Utils.M_PARSER_ERROR, + context.runtime.newString(message)); + } + + protected RaiseException invalidEscape(ThreadContext context) { + ByteList message = new ByteList( + ByteList.plain("invalid escape character in string: ")); + message.append(src, charStart, srcEnd - charStart); + return Utils.newException(context, Utils.M_PARSER_ERROR, + context.runtime.newString(message)); + } + + protected RaiseException invalidUnicodeEscape(ThreadContext context, int escapeStart) { + ByteList message = new ByteList( + ByteList.plain("incomplete unicode character escape sequence at ")); + // Point at the backslash-u that introduced the escape. + int start = Math.max(escapeStart - 2, 0); + message.append(src, start, srcEnd - start); + return Utils.newException(context, Utils.M_PARSER_ERROR, + context.runtime.newString(message)); } } diff --git a/java/src/json/ext/StringEncoder.java b/java/src/json/ext/StringEncoder.java index 9d40dd383..347635cad 100644 --- a/java/src/json/ext/StringEncoder.java +++ b/java/src/json/ext/StringEncoder.java @@ -5,107 +5,374 @@ */ package json.ext; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.nio.charset.StandardCharsets; + +import org.jcodings.Encoding; +import org.jcodings.specific.USASCIIEncoding; +import org.jcodings.specific.UTF8Encoding; +import org.jruby.Ruby; +import org.jruby.RubyException; +import org.jruby.RubyString; import org.jruby.exceptions.RaiseException; import org.jruby.runtime.ThreadContext; import org.jruby.util.ByteList; +import org.jruby.util.StringSupport; /** * An encoder that reads from the given source and outputs its representation * to another ByteList. The source string is fully checked for UTF-8 validity, * and throws a GeneratorError if any problem is found. */ -final class StringEncoder extends ByteListTranscoder { - private final boolean asciiOnly; +class StringEncoder extends ByteListTranscoder { + protected static final int CHAR_LENGTH_MASK = 7; + private static final byte[] BACKSLASH_DOUBLEQUOTE = {'\\', '"'}; + private static final byte[] BACKSLASH_BACKSLASH = {'\\', '\\'}; + private static final byte[] BACKSLASH_FORWARDSLASH = {'\\', '/'}; + private static final byte[] BACKSLASH_B = {'\\', 'b'}; + private static final byte[] BACKSLASH_F = {'\\', 'f'}; + private static final byte[] BACKSLASH_N = {'\\', 'n'}; + private static final byte[] BACKSLASH_R = {'\\', 'r'}; + private static final byte[] BACKSLASH_T = {'\\', 't'}; + + static final byte[] ESCAPE_TABLE = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + }; + + static final byte[] ASCII_ONLY_ESCAPE_TABLE = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // '"' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // Continuation byte + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // First byte of a 2-byte code point + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + // First byte of a 3-byte code point + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + //First byte of a 4+ byte code point + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 9, 9, + }; + + static final byte[] SCRIPT_SAFE_ESCAPE_TABLE = { + // ASCII Control Characters + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + // ASCII Characters + 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, // '"' and '/' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, // '\\' + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // Continuation byte + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + // First byte of a 2-byte code point + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + // First byte of a 3-byte code point + 3, 3, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xE2 is the start of \u2028 and \u2029 + //First byte of a 4+ byte code point + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 9, 9, + }; + + private static final byte[] BACKSLASH_U2028 = "\\u2028".getBytes(StandardCharsets.US_ASCII); + private static final byte[] BACKSLASH_U2029 = "\\u2029".getBytes(StandardCharsets.US_ASCII); + + protected final byte[] escapeTable; + + private static final String VECTORIZED_STRING_ENCODER_CLASS = "json.ext.VectorizedStringEncoder"; + private static final String USE_VECTORIZED_BASIC_ENCODER_PROP = "jruby.json.useVectorizedBasicEncoder"; + private static final String USE_VECTORIZED_BASIC_ENCODER_DEFAULT = "false"; + private static final boolean USE_VECTORIZED_BASIC_ENCODER; + private static final StringEncoder VECTORIZED_SCANNER; + + private static final String USE_SWAR_BASIC_ENCODER_PROP = "jruby.json.useSWARBasicEncoder"; + private static final String USE_SWAR_BASIC_ENCODER_DEFAULT = "true"; + private static final boolean USE_BASIC_SWAR_ENCODER; + + static { + String enableVectorizedScanner = System.getProperty(USE_VECTORIZED_BASIC_ENCODER_PROP, USE_VECTORIZED_BASIC_ENCODER_DEFAULT); + if ("true".equalsIgnoreCase(enableVectorizedScanner) || "1".equalsIgnoreCase(enableVectorizedScanner)) { + StringEncoder scanner; + try { + Class vectorizedStringEncoderClass = StringEncoder.class.getClassLoader().loadClass(VECTORIZED_STRING_ENCODER_CLASS); + Constructor vectorizedStringEncoderConstructor = vectorizedStringEncoderClass.getDeclaredConstructor(); + scanner = (StringEncoder) vectorizedStringEncoderConstructor.newInstance(); + } catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) { + // Fallback to the StringEncoder if we cannot load the VectorizedStringEncoder. + scanner = null; + } + VECTORIZED_SCANNER = scanner; + USE_VECTORIZED_BASIC_ENCODER = scanner != null; + } else { + VECTORIZED_SCANNER = null; + USE_VECTORIZED_BASIC_ENCODER = false; + } + + USE_BASIC_SWAR_ENCODER = Boolean.parseBoolean( + System.getProperty(USE_SWAR_BASIC_ENCODER_PROP, USE_SWAR_BASIC_ENCODER_DEFAULT)); + } + + OutputStream out; // Escaped characters will reuse this array, to avoid new allocations // or appending them byte-by-byte - private final byte[] aux = - new byte[] {/* First unicode character */ + protected final byte[] aux = + new byte[] {/* First Unicode character */ '\\', 'u', 0, 0, 0, 0, /* Second unicode character (for surrogate pairs) */ '\\', 'u', 0, 0, 0, 0, /* "\X" characters */ '\\', 0}; - // offsets on the array above - private static final int ESCAPE_UNI1_OFFSET = 0; - private static final int ESCAPE_UNI2_OFFSET = ESCAPE_UNI1_OFFSET + 6; - private static final int ESCAPE_CHAR_OFFSET = ESCAPE_UNI2_OFFSET + 6; - /** Array used for code point decomposition in surrogates */ - private final char[] utf16 = new char[2]; - - private static final byte[] HEX = + + protected static final byte[] HEX = new byte[] {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; - StringEncoder(ThreadContext context, boolean asciiOnly) { - super(context); - this.asciiOnly = asciiOnly; + StringEncoder(boolean scriptSafe) { + this(scriptSafe ? SCRIPT_SAFE_ESCAPE_TABLE : ESCAPE_TABLE); } - void encode(ByteList src, ByteList out) { - init(src, out); + StringEncoder(byte[] escapeTable) { + this.escapeTable = escapeTable; + } + + @Override + public StringEncoder clone() { + return new StringEncoder(escapeTable); + } + + static StringEncoder createBasicEncoder() { + if (USE_VECTORIZED_BASIC_ENCODER) { + return (StringEncoder) VECTORIZED_SCANNER.clone(); + } else if (USE_BASIC_SWAR_ENCODER) { + return new SWARBasicStringEncoder(); + } else { + return new StringEncoder(false); + } + } + + // C: generate_json_string + void generate(ThreadContext context, RubyString object, OutputStream buffer) throws IOException { + object = ensureValidEncoding(context, object); + + // IO writes can mutate the original string while we are reading it. + RubyString source = buffer instanceof BufferedOutputStream ? object.newFrozen() : object; + ByteList byteList = source.getByteList(); + init(byteList); + out = buffer; append('"'); - while (hasNext()) { - handleChar(readUtf8Char()); + switch (source.scanForCodeRange()) { + case StringSupport.CR_7BIT: + case StringSupport.CR_VALID: + encode(byteList); + break; + default: + throw Utils.buildGeneratorError(context, object, "source sequence is illegal/malformed utf-8").toThrowable(); } quoteStop(pos); append('"'); } - private void handleChar(int c) { - switch (c) { - case '"': - case '\\': - escapeChar((char)c); - break; - case '\n': - escapeChar('n'); - break; - case '\r': - escapeChar('r'); - break; - case '\t': - escapeChar('t'); - break; - case '\f': - escapeChar('f'); - break; - case '\b': - escapeChar('b'); - break; - default: - if (c >= 0x20 && c <= 0x7f || - (c >= 0x80 && !asciiOnly)) { - quoteStart(); + static boolean hasValidEncoding(RubyString str) { + switch (str.scanForCodeRange()) { + case StringSupport.CR_7BIT: + return true; + case StringSupport.CR_VALID: + return str.getEncoding() == UTF8Encoding.INSTANCE || str.getEncoding() == USASCIIEncoding.INSTANCE; + default: + return false; + } + } + + static RubyString ensureValidEncoding(ThreadContext context, RubyString str) { + Encoding encoding = str.getEncoding(); + + if (encoding == USASCIIEncoding.INSTANCE || encoding == UTF8Encoding.INSTANCE) { + return str; + } + + return tryWeirdEncodings(context, str); + } + + private static RubyString tryWeirdEncodings(ThreadContext context, RubyString str) { + Ruby runtime = context.runtime; + + try { + str = (RubyString) str.encode(context, runtime.getEncodingService().convertEncodingToRubyEncoding(UTF8Encoding.INSTANCE)); + } catch (RaiseException re) { + RubyException exc = Utils.buildGeneratorError(context, str, re.getMessage()); + exc.setCause(re.getException()); + throw exc.toThrowable(); + } + + return str; + } + + void encodeBasic(ByteList src) throws IOException { + byte[] hexdig = HEX; + byte[] scratch = aux; + + byte[] ptrBytes = src.unsafeBytes(); + int ptr = src.begin(); + int len = src.realSize(); + + int beg = 0; + int pos = 0; + + while (pos < len) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = ESCAPE_TABLE[ch]; + if (ch_len > 0) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, scratch, hexdig); } else { - quoteStop(charStart); - escapeUtf8Char(c); + pos++; } } + + if (beg < len) { + append(ptrBytes, ptr + beg, len - beg); + } } - private void escapeChar(char c) { - quoteStop(charStart); - aux[ESCAPE_CHAR_OFFSET + 1] = (byte)c; - append(aux, ESCAPE_CHAR_OFFSET, 2); + // C: convert_UTF8_to_JSON + void encode(ByteList src) throws IOException { + if (escapeTable == ESCAPE_TABLE) { + encodeBasic(src); + return; + } + + byte[] hexdig = HEX; + byte[] scratch = aux; + byte[] escapeTable = this.escapeTable; + + byte[] ptrBytes = src.unsafeBytes(); + int ptr = src.begin(); + int len = src.realSize(); + + int beg = 0; + int pos = 0; + + while (pos < len) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = escapeTable[ch]; + /* JSON encoding */ + + if (ch_len > 0) { + switch (ch_len) { + case 9: { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, scratch, hexdig); + break; + } + case 11: { + int b2 = Byte.toUnsignedInt(ptrBytes[ptr + pos + 1]); + if (b2 == 0x80) { + int b3 = Byte.toUnsignedInt(ptrBytes[ptr + pos + 2]); + if (b3 == 0xA8) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 3); + append(BACKSLASH_U2028, 0, 6); + break; + } else if (b3 == 0xA9) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 3); + append(BACKSLASH_U2029, 0, 6); + break; + } + } + ch_len = 3; + // fallthrough + } + default: + pos += ch_len; + break; + } + } else { + pos++; + } + } + + if (beg < len) { + append(ptrBytes, ptr + beg, len - beg); + } } - private void escapeUtf8Char(int codePoint) { - int numChars = Character.toChars(codePoint, utf16, 0); - escapeCodeUnit(utf16[0], ESCAPE_UNI1_OFFSET + 2); - if (numChars > 1) escapeCodeUnit(utf16[1], ESCAPE_UNI2_OFFSET + 2); - append(aux, ESCAPE_UNI1_OFFSET, 6 * numChars); + protected int flushPos(int pos, int beg, byte[] ptrBytes, int ptr, int size) throws IOException { + if (pos > beg) { append(ptrBytes, ptr + beg, pos - beg); } + return pos + size; } - private void escapeCodeUnit(char c, int auxOffset) { - for (int i = 0; i < 4; i++) { - aux[auxOffset + i] = HEX[(c >>> (12 - 4 * i)) & 0xf]; + protected void escapeAscii(int ch, byte[] scratch, byte[] hexdig) throws IOException { + switch (ch) { + case '"': appendEscape(BACKSLASH_DOUBLEQUOTE); break; + case '\\': appendEscape(BACKSLASH_BACKSLASH); break; + case '/': appendEscape(BACKSLASH_FORWARDSLASH); break; + case '\b': appendEscape(BACKSLASH_B); break; + case '\f': appendEscape(BACKSLASH_F); break; + case '\n': appendEscape(BACKSLASH_N); break; + case '\r': appendEscape(BACKSLASH_R); break; + case '\t': appendEscape(BACKSLASH_T); break; + default: { + scratch[2] = '0'; + scratch[3] = '0'; + scratch[4] = hexdig[(ch >> 4) & 0xf]; + scratch[5] = hexdig[ch & 0xf]; + append(scratch, 0, 6); + break; + } } } + private void appendEscape(byte[] escape) throws IOException { + append(escape, 0, 2); + } + + protected void append(int b) throws IOException { + out.write(b); + } + + protected void append(byte[] origin, int start, int length) throws IOException { + out.write(origin, start, length); + } + @Override - protected RaiseException invalidUtf8() { - return Utils.newException(context, Utils.M_GENERATOR_ERROR, - "source sequence is illegal/malformed utf-8"); + protected RaiseException invalidUtf8(ThreadContext context) { + return Utils.newException(context, Utils.M_GENERATOR_ERROR, "source sequence is illegal/malformed utf-8"); } } diff --git a/java/src/json/ext/StringEncoderAsciiOnly.java b/java/src/json/ext/StringEncoderAsciiOnly.java new file mode 100644 index 000000000..de1af2840 --- /dev/null +++ b/java/src/json/ext/StringEncoderAsciiOnly.java @@ -0,0 +1,116 @@ +/* + * This code is copyrighted work by Daniel Luz . + * + * Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt + */ +package json.ext; + +import org.jcodings.Encoding; +import org.jcodings.specific.ASCIIEncoding; +import org.jcodings.specific.USASCIIEncoding; +import org.jcodings.specific.UTF8Encoding; +import org.jruby.RubyException; +import org.jruby.RubyString; +import org.jruby.exceptions.RaiseException; +import org.jruby.runtime.ThreadContext; +import org.jruby.util.ByteList; +import org.jruby.util.StringSupport; + +import java.io.IOException; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; + +/** + * An encoder that reads from the given source and outputs its representation + * to another ByteList. The source string is fully checked for UTF-8 validity, + * and throws a GeneratorError if any problem is found. + */ +final class StringEncoderAsciiOnly extends StringEncoder { + StringEncoderAsciiOnly(boolean scriptSafe) { + super(scriptSafe ? SCRIPT_SAFE_ESCAPE_TABLE : ASCII_ONLY_ESCAPE_TABLE); + } + + // C: convert_UTF8_to_ASCII_only_JSON + void encode(ByteList src) throws IOException { + byte[] hexdig = HEX; + byte[] scratch = aux; + byte[] escapeTable = this.escapeTable; + + byte[] ptrBytes = src.unsafeBytes(); + int ptr = src.begin(); + int len = src.realSize(); + + int beg = 0; + int pos = 0; + + while (pos < len) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = escapeTable[ch]; + + if (ch_len != 0) { + switch (ch_len) { + case 9: { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, scratch, hexdig); + break; + } + default: { + int wchar = 0; + ch_len = ch_len & CHAR_LENGTH_MASK; + + switch(ch_len) { + case 2: + wchar = ptrBytes[ptr + pos] & 0x1F; + break; + case 3: + wchar = ptrBytes[ptr + pos] & 0x0F; + break; + case 4: + wchar = ptrBytes[ptr + pos] & CHAR_LENGTH_MASK; + break; + } + + for (short i = 1; i < ch_len; i++) { + wchar = (wchar << 6) | (ptrBytes[ptr + pos +i] & 0x3F); + } + + beg = pos = flushPos(pos, beg, ptrBytes, ptr, ch_len); + + if (wchar <= 0xFFFF) { + scratch[2] = hexdig[wchar >> 12]; + scratch[3] = hexdig[(wchar >> 8) & 0xf]; + scratch[4] = hexdig[(wchar >> 4) & 0xf]; + scratch[5] = hexdig[wchar & 0xf]; + append(scratch, 0, 6); + } else { + int hi, lo; + wchar -= 0x10000; + hi = 0xD800 + (wchar >> 10); + lo = 0xDC00 + (wchar & 0x3FF); + + scratch[2] = hexdig[hi >> 12]; + scratch[3] = hexdig[(hi >> 8) & 0xf]; + scratch[4] = hexdig[(hi >> 4) & 0xf]; + scratch[5] = hexdig[hi & 0xf]; + + scratch[8] = hexdig[lo >> 12]; + scratch[9] = hexdig[(lo >> 8) & 0xf]; + scratch[10] = hexdig[(lo >> 4) & 0xf]; + scratch[11] = hexdig[lo & 0xf]; + + append(scratch, 0, 12); + } + + break; + } + } + } else { + pos++; + } + } + + if (beg < len) { + append(ptrBytes, ptr + beg, len - beg); + } + } +} diff --git a/java/src/json/ext/StringScanner.java b/java/src/json/ext/StringScanner.java new file mode 100644 index 000000000..605c0ad97 --- /dev/null +++ b/java/src/json/ext/StringScanner.java @@ -0,0 +1,243 @@ +package json.ext; + +import java.nio.ByteBuffer; + +/** + * Scans the body of a JSON string for its closing quote, reporting whether the + * body can be copied verbatim (the "plain" fast path) or must be handed to + * {@link StringDecoder} for escape expansion and UTF-8/control validation. + * + *

The default implementation is SWAR (8 bytes per step). A vectorized + * subclass ({@code VectorizedStringScanner}) is loaded reflectively when the + * {@code jruby.json.useVectorizedParser} system property is set and the + * {@code jdk.incubator.vector} module is available; otherwise this SWAR + * implementation is used. Instances are stateless and therefore shared. + */ +class StringScanner { + /** Set in the returned bits when the whole body is plain printable ASCII. */ + static final long PLAIN_BIT = 1L << 32; + static final long ASCII_BIT = 1L << 33; + + /** Returned when no closing quote is found before {@code end}. */ + static final long NOT_FOUND = -1L; + + private static final long HIGH_BITS = 0x8080808080808080L; + private static final long ONES = 0x0101010101010101L; + + private static final long SPACES = 0x2020202020202020L; + private static final long DOUBLE_QUOTES = 0x2222222222222222L; + private static final long BACKSLASHES = 0x5C5C5C5C5C5C5C5CL; + + private static final String VECTORIZED_SCANNER_CLASS = "json.ext.VectorizedStringScanner"; + private static final String USE_VECTORIZED_PARSER_PROP = "jruby.json.useVectorizedParser"; + private static final String USE_VECTORIZED_PARSER_DEFAULT = "false"; + + private static final StringScanner INSTANCE; + + static { + StringScanner scanner = new StringScanner(); + String enable = System.getProperty(USE_VECTORIZED_PARSER_PROP, USE_VECTORIZED_PARSER_DEFAULT); + if ("true".equalsIgnoreCase(enable) || "1".equals(enable)) { + try { + Class vectorized = StringScanner.class.getClassLoader() + .loadClass(VECTORIZED_SCANNER_CLASS); + scanner = (StringScanner) vectorized.getDeclaredConstructor().newInstance(); + } catch (Throwable t) { + scanner = new StringScanner(); + } + } + INSTANCE = scanner; + } + + static StringScanner getInstance() { + return INSTANCE; + } + + /** + * Scans {@code data[start..end)} for a closing quote. This method will + * also report if there are any interesting bytes within the range + * {@link data[start..end)}. An interestin byte is defined as control + * characters, backslashes or bytes with the high bit set. + * + * @param chunks a little-endian {@link ByteBuffer} over {@code data} + * + * @return packed result: the low 32 bits hold the index of the closing + * quote, or {@code -1} ({@link #NOT_FOUND}) when none is found + * before {@code end}; {@link #PLAIN_BIT} is set when the entire body + * is plain printable ASCII (no escape, no ASCII control character, + * and no non-ASCII byte) and can be copied verbatim; + * {@link #ASCII_BIT} is set when the body contains no non-ASCII byte + * (it may still hold escapes or control characters) + */ + long scan(byte[] data, ByteBuffer chunks, int start, int end, boolean validateUtf8) { + int p = start; + boolean plain = true; + boolean ascii = true; + + outer: + while (true) { + while (p + 8 <= end) { + long x = chunks.getLong(p); + // Pick the cheapest mask that still observes every transition we + // still care about: + // plain -> control, quote, backslash and high bytes + // non-plain, ASCII -> quote, backslash and high bytes, so the + // first non-ASCII byte still stops us and + // clears ASCII_BIT + // non-plain, !ASCII -> quote and backslash only; multi-byte + // UTF-8 is skipped eight bytes at a time + // + // When UTF-8 validation is disabled, non-ASCII bytes are copied + // verbatim, so they stay on the plain fast path and the high-bit + // term drops out of every mask: plain scans for control, quote + // and backslash; non-plain scans for quote and backslash only. + long m; + if (validateUtf8) { + m = plain ? stringScanMask(x) + : ascii ? quoteBackslashHighMask(x) + : quoteBackslashMask(x); + } else { + m = plain ? controlQuoteBackslashMask(x) + : quoteBackslashMask(x); + } + if (m == 0) { + p += 8; + } else { + p += Long.numberOfTrailingZeros(m) >>> 3; + break; + } + } + // If we match on a byte above and/or tail handling for <8 remaining bytes. + while (p < end) { + int b = data[p] & 0xFF; + if (b == '"') { + return (((long) p) | (plain ? PLAIN_BIT : 0L) | (ascii ? ASCII_BIT : 0L)); + } + if (b == '\\') { + plain = false; + p += 2; // skip the backslash and the escaped byte + continue outer; + } + if (b < 0x20) { + plain = false; + p++; + continue outer; + } + if (b >= 0x80) { + ascii = false; + if (validateUtf8) { + plain = false; + } + p++; + continue outer; + } + p++; + } + return NOT_FOUND; + } + } + + + /** + * Scans {@code data[start..end)} for the next backslash or control character. + * + *

The caller must guarantee the {@link data[start..end]} contains + * no non-ASCII bytes that need to be decoded.

+ * + * @return the index of the first backslash or control byte, or {@code end} + * when none is found. + */ + int scanEscape(byte[] data, ByteBuffer chunks, int start, int end) { + int p = start; + while (p + 8 <= end) { + long x = chunks.getLong(p); + long m = backslashControlMask(x); + if (m == 0) { + p += 8; + } else { + return p + (Long.numberOfTrailingZeros(m) >>> 3); + } + } + while (p < end) { + int b = data[p] & 0xFF; + if (b == '\\' || b < 0x20) { + return p; + } + p++; + } + return end; + } + + /** + * Returns a mask whose high bit (0x80) is set in every lane of {@code x} + * that needs scalar attention: an ASCII control character (< 0x20), a + * double quote, a backslash, or a non-ASCII byte (high bit set). Returns 0 + * when the whole 8-byte chunk is printable ASCII copyable verbatim. + */ + private static long stringScanMask(long x) { + long control = (x - SPACES) & ~x; // bytes < 0x20 (ASCII) + long high = x; // bit 0x80 set iff non-ASCII + long q = x ^ DOUBLE_QUOTES; + long quote = (q - ONES) & ~q; + long s = x ^ BACKSLASHES; + long bslash = (s - ONES) & ~s; + return (control | high | quote | bslash) & HIGH_BITS; + } + + /** + * Like {@link #quoteBackslashMask} but for the ASCII-only decode fast path: + * flags backslashes and ASCII control characters (< 0x20). The control + * test relies on every byte being ASCII (< 0x80), which the caller + * guarantees, so no high-bit cleanup is needed. + */ + private static long backslashControlMask(long x) { + long control = (x - SPACES) & ~x; // bytes < 0x20 (ASCII) + long s = x ^ BACKSLASHES; + long bslash = (s - ONES) & ~s; + return (control | bslash) & HIGH_BITS; + } + + /** + * Like {@link #stringScanMask} but omits the non-ASCII (high-bit) term: + * flags double quotes, backslashes and ASCII control characters (< 0x20) + * only. Used as the starting mask when UTF-8 validation is disabled, where + * non-ASCII bytes are copied verbatim and so stay on the plain fast path. + */ + private static long controlQuoteBackslashMask(long x) { + long control = (x - SPACES) & ~x; // bytes < 0x20 (ASCII) + long q = x ^ DOUBLE_QUOTES; + long quote = (q - ONES) & ~q; + long s = x ^ BACKSLASHES; + long bslash = (s - ONES) & ~s; + return (control | quote | bslash) & HIGH_BITS; + } + + /** + * Like {@link #stringScanMask} but only flags double quotes and backslashes. + * Used once a string is known to require the decoder and to already + * contain non-ASCII bytes, so the remaining scan for the closing quote skips + * clean chunks (including multi-byte UTF-8) eight bytes at a time. + */ + private static long quoteBackslashMask(long x) { + long q = x ^ DOUBLE_QUOTES; + long quote = (q - ONES) & ~q; + long s = x ^ BACKSLASHES; + long bslash = (s - ONES) & ~s; + return (quote | bslash) & HIGH_BITS; + } + + /** + * Like {@link #quoteBackslashMask} but also flags non-ASCII bytes. Used once + * a string is known to require the decoder but is still ASCII-only, so the + * scan keeps skipping printable runs eight bytes at a time yet still stops on + * the first high byte and clears {@link #ASCII_BIT}. + */ + private static long quoteBackslashHighMask(long x) { + long high = x; // bit 0x80 set iff non-ASCII + long q = x ^ DOUBLE_QUOTES; + long quote = (q - ONES) & ~q; + long s = x ^ BACKSLASHES; + long bslash = (s - ONES) & ~s; + return (high | quote | bslash) & HIGH_BITS; + } +} diff --git a/java/src/json/ext/Utils.java b/java/src/json/ext/Utils.java index ed6f8329e..38491d2e3 100644 --- a/java/src/json/ext/Utils.java +++ b/java/src/json/ext/Utils.java @@ -9,7 +9,6 @@ import org.jruby.RubyArray; import org.jruby.RubyClass; import org.jruby.RubyException; -import org.jruby.RubyHash; import org.jruby.RubyString; import org.jruby.exceptions.RaiseException; import org.jruby.runtime.Block; @@ -17,6 +16,9 @@ import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ByteList; +import java.io.IOException; +import java.io.OutputStream; + /** * Library of miscellaneous utility functions */ @@ -44,12 +46,6 @@ static RubyArray ensureArray(IRubyObject object) throws RaiseException { throw runtime.newTypeError(object, runtime.getArray()); } - static RubyHash ensureHash(IRubyObject object) throws RaiseException { - if (object instanceof RubyHash) return (RubyHash)object; - Ruby runtime = object.getRuntime(); - throw runtime.newTypeError(object, runtime.getHash()); - } - static RubyString ensureString(IRubyObject object) throws RaiseException { if (object instanceof RubyString) return (RubyString)object; Ruby runtime = object.getRuntime(); @@ -59,17 +55,27 @@ static RubyString ensureString(IRubyObject object) throws RaiseException { static RaiseException newException(ThreadContext context, String className, String message) { return newException(context, className, - context.getRuntime().newString(message)); + context.runtime.newString(message)); } static RaiseException newException(ThreadContext context, String className, RubyString message) { - RuntimeInfo info = RuntimeInfo.forRuntime(context.getRuntime()); + RuntimeInfo info = RuntimeInfo.forRuntime(context.runtime); RubyClass klazz = info.jsonModule.get().getClass(className); - RubyException excptn = - (RubyException)klazz.newInstance(context, - new IRubyObject[] {message}, Block.NULL_BLOCK); - return new RaiseException(excptn); + RubyException excptn = (RubyException)klazz.newInstance(context, message, Block.NULL_BLOCK); + return excptn.toThrowable(); + } + + static RubyException buildGeneratorError(ThreadContext context, IRubyObject invalidObject, RubyString message) { + RuntimeInfo info = RuntimeInfo.forRuntime(context.runtime); + RubyClass klazz = info.jsonModule.get().getClass(M_GENERATOR_ERROR); + RubyException excptn = (RubyException)klazz.newInstance(context, message, Block.NULL_BLOCK); + excptn.setInstanceVariable("@invalid_object", invalidObject); + return excptn; + } + + static RubyException buildGeneratorError(ThreadContext context, IRubyObject invalidObject, String message) { + return buildGeneratorError(context, invalidObject, context.runtime.newString(message)); } static byte[] repeat(ByteList a, int n) { @@ -78,11 +84,25 @@ static byte[] repeat(ByteList a, int n) { static byte[] repeat(byte[] a, int begin, int length, int n) { if (length == 0) return ByteList.NULL_ARRAY; + + if (n == 1 && begin == 0 && length == a.length) return a; + int resultLen = length * n; byte[] result = new byte[resultLen]; for (int pos = 0; pos < resultLen; pos += length) { System.arraycopy(a, begin, result, pos, length); } + return result; } + + static void repeatWrite(OutputStream out, ByteList a, int n) throws IOException { + byte[] bytes = a.unsafeBytes(); + int begin = a.begin(); + int length = a.length(); + + for (int i = 0; i < n; i++) { + out.write(bytes, begin, length); + } + } } diff --git a/java/src/json/ext/VectorizedStringEncoder.java b/java/src/json/ext/VectorizedStringEncoder.java new file mode 100644 index 000000000..14b3c8d7c --- /dev/null +++ b/java/src/json/ext/VectorizedStringEncoder.java @@ -0,0 +1,104 @@ +package json.ext; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.jruby.util.ByteList; + +import jdk.incubator.vector.ByteVector; +import jdk.incubator.vector.VectorMask; +import jdk.incubator.vector.VectorOperators; +import jdk.incubator.vector.VectorSpecies; + +class VectorizedStringEncoder extends SWARBasicStringEncoder { + private static final VectorSpecies SP = ByteVector.SPECIES_PREFERRED; + private static final ByteVector ZERO = ByteVector.zero(SP); + private static final ByteVector TWO = ByteVector.broadcast(SP, 2); + private static final ByteVector THIRTY_THREE = ByteVector.broadcast(SP, 33); + private static final ByteVector BACKSLASH = ByteVector.broadcast(SP, '\\'); + + @Override + public StringEncoder clone() { + return new VectorizedStringEncoder(); + } + + @Override + void encode(ByteList src) throws IOException { + byte[] ptrBytes = src.unsafeBytes(); + int ptr = src.begin(); + int len = src.realSize(); + int beg = 0; + int pos = ptr; + + while ((pos + SP.length() <= len)) { + ByteVector chunk = ByteVector.fromArray(SP, ptrBytes, ptr + pos); + // bytes are signed in java, so we need to remove negative values + VectorMask negative = chunk.lt(ZERO); + VectorMask tooLowOrDblQuote = chunk.lanewise(VectorOperators.XOR, TWO).lt(THIRTY_THREE).andNot(negative); + VectorMask needsEscape = chunk.eq(BACKSLASH).or(tooLowOrDblQuote); + if (needsEscape.anyTrue()) { + int chunkStart = pos; + long mask = needsEscape.toLong(); + + while(mask > 0) { + // nextMatch inlined + int index = Long.numberOfTrailingZeros(mask); + mask &= (mask - 1); + pos = chunkStart + index; + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, aux, HEX); + } + + // Skip over any remaining characters in the current chunk + pos = chunkStart + SP.length(); + continue; + } + + pos += SP.length(); + } + + ByteBuffer bb = ByteBuffer.wrap(ptrBytes, ptr, len); + if (pos + 8 <= len) { + long x = bb.getLong(ptr + pos); + if (skipChunk(x)) { + pos += 8; + } else { + int chunkEnd = ptr + pos + 8; + while (pos < chunkEnd) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = ESCAPE_TABLE[ch]; + if (ch_len > 0) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, aux, HEX); + } else { + pos++; + } + } + } + } + + if (pos + 4 <= len) { + int x = bb.getInt(ptr + pos); + if (skipChunk(x)) { + pos += 4; + } + } + + while (pos < len) { + int ch = Byte.toUnsignedInt(ptrBytes[ptr + pos]); + int ch_len = ESCAPE_TABLE[ch]; + if (ch_len > 0) { + beg = pos = flushPos(pos, beg, ptrBytes, ptr, 1); + escapeAscii(ch, aux, HEX); + } else { + pos++; + } + } + + if (beg < len) { + append(ptrBytes, ptr + beg, len - beg); + } + } +} diff --git a/java/src/json/ext/VectorizedStringScanner.java b/java/src/json/ext/VectorizedStringScanner.java new file mode 100644 index 000000000..b63544fea --- /dev/null +++ b/java/src/json/ext/VectorizedStringScanner.java @@ -0,0 +1,131 @@ +package json.ext; + +import java.nio.ByteBuffer; + +import jdk.incubator.vector.ByteVector; +import jdk.incubator.vector.VectorMask; +import jdk.incubator.vector.VectorOperators; +import jdk.incubator.vector.VectorSpecies; + +final class VectorizedStringScanner extends StringScanner { + private static final VectorSpecies SP = ByteVector.SPECIES_PREFERRED; + private static final ByteVector ZERO = ByteVector.zero(SP); + private static final ByteVector TWO = ByteVector.broadcast(SP, 2); + private static final ByteVector THIRTY_THREE = ByteVector.broadcast(SP, 33); + private static final ByteVector SPACE = ByteVector.broadcast(SP, 0x20); + private static final ByteVector BACKSLASH = ByteVector.broadcast(SP, '\\'); + private static final ByteVector DQUOTE = ByteVector.broadcast(SP, '"'); + + @Override + long scan(byte[] data, ByteBuffer chunks, int start, int end, boolean validateUtf8) { + final int width = SP.length(); + int p = start; + boolean plain = true; + boolean ascii = true; + + // The same structure as the StringEncoder. The logic is + // duplicated for maximum inlining. + // + // When UTF-8 validation is disabled, non-ASCII lanes are copied verbatim + // and stay on the plain fast path, so the high-bit term drops out: plain + // scans for control, quote and backslash; non-plain for quote and + // backslash only. + outer: + while (true) { + while (p + width <= end) { + ByteVector chunk = ByteVector.fromArray(SP, data, p); + VectorMask interesting; + if (validateUtf8) { + interesting = plain ? interestingLanes(chunk) + : ascii ? quoteBackslashOrHighLanes(chunk) + : quoteOrBackslashLanes(chunk); + } else { + interesting = plain ? controlQuoteBackslashLanes(chunk) + : quoteOrBackslashLanes(chunk); + } + if (interesting.anyTrue()) { + p += interesting.firstTrue(); + break; + } + p += width; + } + while (p < end) { + int b = data[p] & 0xFF; + if (b == '"') { + return ((long) p) | (plain ? PLAIN_BIT : 0L) | (ascii ? ASCII_BIT : 0L); + } + if (b == '\\') { + plain = false; + p += 2; // skip the backslash and the escaped byte + continue outer; + } + if (b >= 0x80) { + ascii = false; + if (validateUtf8) { + plain = false; + } + p++; + continue outer; + } + if (b < 0x20) { + plain = false; + p++; + continue outer; + } + p++; + } + return NOT_FOUND; + } + } + + @Override + int scanEscape(byte[] data, ByteBuffer chunks, int start, int end) { + final int width = SP.length(); + if (start + width > end) { + return super.scanEscape(data, chunks, start, end); + } + int p = start; + while (p + width <= end) { + ByteVector chunk = ByteVector.fromArray(SP, data, p); + VectorMask interesting = escapeOrControlLanes(chunk); + if (interesting.anyTrue()) { + return p + interesting.firstTrue(); + } + p += width; + } + return super.scanEscape(data, chunks, p, end); + } + + private static VectorMask escapeOrControlLanes(ByteVector chunk) { + VectorMask negative = chunk.lt(ZERO); + VectorMask control = chunk.lt(SPACE).andNot(negative); + return control.or(chunk.eq(BACKSLASH)); + } + + private static VectorMask interestingLanes(ByteVector chunk) { + VectorMask negative = chunk.lt(ZERO); + VectorMask lowOrQuote = chunk.lanewise(VectorOperators.XOR, TWO) + .lt(THIRTY_THREE) + .andNot(negative); + return lowOrQuote.or(chunk.eq(BACKSLASH)).or(negative); + } + + private static VectorMask quoteOrBackslashLanes(ByteVector chunk) { + return chunk.eq(DQUOTE).or(chunk.eq(BACKSLASH)); + } + + // Like interestingLanes but without the non-ASCII (high-bit) term: flags + // ASCII control characters, double quotes and backslashes only. Used as the + // plain-path mask when UTF-8 validation is disabled. + private static VectorMask controlQuoteBackslashLanes(ByteVector chunk) { + VectorMask negative = chunk.lt(ZERO); + VectorMask lowOrQuote = chunk.lanewise(VectorOperators.XOR, TWO) + .lt(THIRTY_THREE) + .andNot(negative); + return lowOrQuote.or(chunk.eq(BACKSLASH)); + } + + private static VectorMask quoteBackslashOrHighLanes(ByteVector chunk) { + return chunk.eq(DQUOTE).or(chunk.eq(BACKSLASH)).or(chunk.lt(ZERO)); + } +} diff --git a/json-java.gemspec b/json-java.gemspec deleted file mode 100644 index f3fa0c913..000000000 --- a/json-java.gemspec +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env jruby -require "rubygems" - -spec = Gem::Specification.new do |s| - s.name = "json" - s.version = File.read("VERSION").chomp - s.summary = "JSON implementation for JRuby" - s.description = "A JSON implementation as a JRuby extension." - s.author = "Daniel Luz" - s.email = "dev+ruby@mernen.com" - s.homepage = "http://flori.github.com/json" - s.platform = 'java' - s.licenses = ["Ruby"] - - s.files = Dir["{docs,lib,tests}/**/*"] - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q, [">= 0"]) - s.add_development_dependency(%q, ["~> 2.0"]) - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 2.0"]) - end - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, ["~> 2.0"]) - end -end - -if $0 == __FILE__ - Gem::Builder.new(spec).build -else - spec -end diff --git a/json.gemspec b/json.gemspec index 6e7873fde..557573102 100644 Binary files a/json.gemspec and b/json.gemspec differ diff --git a/json_pure.gemspec b/json_pure.gemspec deleted file mode 100644 index 1dffb22ac..000000000 --- a/json_pure.gemspec +++ /dev/null @@ -1,38 +0,0 @@ -# -*- encoding: utf-8 -*- -# stub: json_pure 2.2.0 ruby lib - -Gem::Specification.new do |s| - s.name = "json_pure".freeze - s.version = "2.2.0" - - s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= - s.require_paths = ["lib".freeze] - s.authors = ["Florian Frank".freeze] - s.date = "2019-07-13" - s.description = "This is a JSON implementation in pure Ruby.".freeze - s.email = "flori@ping.de".freeze - s.extra_rdoc_files = ["README.md".freeze] - s.files = ["./tests/test_helper.rb".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README-json-jruby.md".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "diagrams/.keep".freeze, "ext/json/ext/fbuffer/fbuffer.h".freeze, "ext/json/ext/generator/depend".freeze, "ext/json/ext/generator/extconf.rb".freeze, "ext/json/ext/generator/generator.c".freeze, "ext/json/ext/generator/generator.h".freeze, "ext/json/ext/parser/depend".freeze, "ext/json/ext/parser/extconf.rb".freeze, "ext/json/ext/parser/parser.c".freeze, "ext/json/ext/parser/parser.h".freeze, "ext/json/ext/parser/parser.rl".freeze, "ext/json/extconf.rb".freeze, "install.rb".freeze, "java/src/json/ext/ByteListTranscoder.java".freeze, "java/src/json/ext/Generator.java".freeze, "java/src/json/ext/GeneratorMethods.java".freeze, "java/src/json/ext/GeneratorService.java".freeze, "java/src/json/ext/GeneratorState.java".freeze, "java/src/json/ext/OptionsReader.java".freeze, "java/src/json/ext/Parser.java".freeze, "java/src/json/ext/Parser.rl".freeze, "java/src/json/ext/ParserService.java".freeze, "java/src/json/ext/RuntimeInfo.java".freeze, "java/src/json/ext/StringDecoder.java".freeze, "java/src/json/ext/StringEncoder.java".freeze, "java/src/json/ext/Utils.java".freeze, "json-java.gemspec".freeze, "json.gemspec".freeze, "json_pure.gemspec".freeze, "lib/json.rb".freeze, "lib/json/add/bigdecimal.rb".freeze, "lib/json/add/complex.rb".freeze, "lib/json/add/core.rb".freeze, "lib/json/add/date.rb".freeze, "lib/json/add/date_time.rb".freeze, "lib/json/add/exception.rb".freeze, "lib/json/add/ostruct.rb".freeze, "lib/json/add/range.rb".freeze, "lib/json/add/rational.rb".freeze, "lib/json/add/regexp.rb".freeze, "lib/json/add/set.rb".freeze, "lib/json/add/struct.rb".freeze, "lib/json/add/symbol.rb".freeze, "lib/json/add/time.rb".freeze, "lib/json/common.rb".freeze, "lib/json/ext.rb".freeze, "lib/json/ext/.keep".freeze, "lib/json/generic_object.rb".freeze, "lib/json/pure.rb".freeze, "lib/json/pure/generator.rb".freeze, "lib/json/pure/parser.rb".freeze, "lib/json/version.rb".freeze, "references/rfc7159.txt".freeze, "tests/fixtures/fail10.json".freeze, "tests/fixtures/fail11.json".freeze, "tests/fixtures/fail12.json".freeze, "tests/fixtures/fail13.json".freeze, "tests/fixtures/fail14.json".freeze, "tests/fixtures/fail18.json".freeze, "tests/fixtures/fail19.json".freeze, "tests/fixtures/fail2.json".freeze, "tests/fixtures/fail20.json".freeze, "tests/fixtures/fail21.json".freeze, "tests/fixtures/fail22.json".freeze, "tests/fixtures/fail23.json".freeze, "tests/fixtures/fail24.json".freeze, "tests/fixtures/fail25.json".freeze, "tests/fixtures/fail27.json".freeze, "tests/fixtures/fail28.json".freeze, "tests/fixtures/fail3.json".freeze, "tests/fixtures/fail4.json".freeze, "tests/fixtures/fail5.json".freeze, "tests/fixtures/fail6.json".freeze, "tests/fixtures/fail7.json".freeze, "tests/fixtures/fail8.json".freeze, "tests/fixtures/fail9.json".freeze, "tests/fixtures/obsolete_fail1.json".freeze, "tests/fixtures/pass1.json".freeze, "tests/fixtures/pass15.json".freeze, "tests/fixtures/pass16.json".freeze, "tests/fixtures/pass17.json".freeze, "tests/fixtures/pass2.json".freeze, "tests/fixtures/pass26.json".freeze, "tests/fixtures/pass3.json".freeze, "tests/json_addition_test.rb".freeze, "tests/json_common_interface_test.rb".freeze, "tests/json_encoding_test.rb".freeze, "tests/json_ext_parser_test.rb".freeze, "tests/json_fixtures_test.rb".freeze, "tests/json_generator_test.rb".freeze, "tests/json_generic_object_test.rb".freeze, "tests/json_parser_test.rb".freeze, "tests/json_string_matching_test.rb".freeze, "tests/test_helper.rb".freeze, "tools/diff.sh".freeze, "tools/fuzz.rb".freeze, "tools/server.rb".freeze] - s.homepage = "http://flori.github.com/json".freeze - s.licenses = ["Ruby".freeze] - s.rdoc_options = ["--title".freeze, "JSON implemention for ruby".freeze, "--main".freeze, "README.md".freeze] - s.required_ruby_version = Gem::Requirement.new(">= 1.9".freeze) - s.rubygems_version = "3.0.3".freeze - s.summary = "JSON Implementation for Ruby".freeze - s.test_files = ["./tests/test_helper.rb".freeze] - - if s.respond_to? :specification_version then - s.specification_version = 4 - - if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then - s.add_development_dependency(%q.freeze, [">= 0"]) - s.add_development_dependency(%q.freeze, ["~> 2.0"]) - else - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - end - else - s.add_dependency(%q.freeze, [">= 0"]) - s.add_dependency(%q.freeze, ["~> 2.0"]) - end -end diff --git a/lib/json.rb b/lib/json.rb index b5a691241..1969b026d 100644 --- a/lib/json.rb +++ b/lib/json.rb @@ -1,63 +1,460 @@ -#frozen_string_literal: false +# frozen_string_literal: true require 'json/common' ## -# = JavaScript Object Notation (JSON) +# = JavaScript \Object Notation (\JSON) # -# JSON is a lightweight data-interchange format. It is easy for us -# humans to read and write. Plus, equally simple for machines to generate or parse. -# JSON is completely language agnostic, making it the ideal interchange format. +# \JSON is a lightweight data-interchange format. # -# Built on two universally available structures: -# 1. A collection of name/value pairs. Often referred to as an _object_, hash table, record, struct, keyed list, or associative array. -# 2. An ordered list of values. More commonly called an _array_, vector, sequence or list. +# \JSON is easy for us humans to read and write, +# and equally simple for machines to read (parse) and write (generate). # -# To read more about JSON visit: http://json.org +# \JSON is language-independent, making it an ideal interchange format +# for applications in differing programming languages +# and on differing operating systems. # -# == Parsing JSON +# == \JSON Values # -# To parse a JSON string received by another application or generated within -# your existing application: +# A \JSON value is one of the following: +# - Double-quoted text: "foo". +# - Number: +1+, +1.0+, +2.0e2+. +# - Boolean: +true+, +false+. +# - Null: +null+. +# - \Array: an ordered list of values, enclosed by square brackets: +# ["foo", 1, 1.0, 2.0e2, true, false, null] # +# - \Object: a collection of name/value pairs, enclosed by curly braces; +# each name is double-quoted text; +# the values may be any \JSON values: +# {"a": "foo", "b": 1, "c": 1.0, "d": 2.0e2, "e": true, "f": false, "g": null} +# +# A \JSON array or object may contain nested arrays, objects, and scalars +# to any depth: +# {"foo": {"bar": 1, "baz": 2}, "bat": [0, 1, 2]} +# [{"foo": 0, "bar": 1}, ["baz", 2]] +# +# == Using \Module \JSON +# +# To make module \JSON available in your code, begin with: # require 'json' # -# my_hash = JSON.parse('{"hello": "goodbye"}') -# puts my_hash["hello"] => "goodbye" +# All examples here assume that this has been done. # -# Notice the extra quotes '' around the hash notation. Ruby expects -# the argument to be a string and can't convert objects like a hash or array. +# === Parsing \JSON # -# Ruby converts your string into a hash +# You can parse a \String containing \JSON data using +# either of two methods: +# - JSON.parse(source, **opts) +# - JSON.parse!(source, **opts) # -# == Generating JSON +# where +# - +source+ is a Ruby object. +# - +opts+ are keyword arguments that control both input +# allowed and output formatting. # -# Creating a JSON string for communication or serialization is -# just as simple. +# The difference between the two methods +# is that JSON.parse! omits some checks +# and may not be safe for some +source+ data; +# use it only for data from trusted sources. +# Use the safer method JSON.parse for less trusted sources. # -# require 'json' +# ==== Parsing \JSON Arrays # -# my_hash = {:hello => "goodbye"} -# puts JSON.generate(my_hash) => "{\"hello\":\"goodbye\"}" +# When +source+ is a \JSON array, JSON.parse by default returns a Ruby \Array: +# json = '["foo", 1, 1.0, 2.0e2, true, false, null]' +# ruby = JSON.parse(json) +# ruby # => ["foo", 1, 1.0, 200.0, true, false, nil] +# ruby.class # => Array # -# Or an alternative way: +# The \JSON array may contain nested arrays, objects, and scalars +# to any depth: +# json = '[{"foo": 0, "bar": 1}, ["baz", 2]]' +# JSON.parse(json) # => [{"foo"=>0, "bar"=>1}, ["baz", 2]] # -# require 'json' -# puts {:hello => "goodbye"}.to_json => "{\"hello\":\"goodbye\"}" +# ==== Parsing \JSON \Objects # -# JSON.generate only allows objects or arrays to be converted -# to JSON syntax. to_json, however, accepts many Ruby classes -# even though it acts only as a method for serialization: +# When the source is a \JSON object, JSON.parse by default returns a Ruby \Hash: +# json = '{"a": "foo", "b": 1, "c": 1.0, "d": 2.0e2, "e": true, "f": false, "g": null}' +# ruby = JSON.parse(json) +# ruby # => {"a"=>"foo", "b"=>1, "c"=>1.0, "d"=>200.0, "e"=>true, "f"=>false, "g"=>nil} +# ruby.class # => Hash # -# require 'json' +# The \JSON object may contain nested arrays, objects, and scalars +# to any depth: +# json = '{"foo": {"bar": 1, "baz": 2}, "bat": [0, 1, 2]}' +# JSON.parse(json) # => {"foo"=>{"bar"=>1, "baz"=>2}, "bat"=>[0, 1, 2]} +# +# ==== Parsing \JSON Scalars +# +# When the source is a \JSON scalar (not an array or object), +# JSON.parse returns a Ruby scalar. +# +# \String: +# ruby = JSON.parse('"foo"') +# ruby # => 'foo' +# ruby.class # => String +# \Integer: +# ruby = JSON.parse('1') +# ruby # => 1 +# ruby.class # => Integer +# \Float: +# ruby = JSON.parse('1.0') +# ruby # => 1.0 +# ruby.class # => Float +# ruby = JSON.parse('2.0e2') +# ruby # => 200.0 +# ruby.class # => Float +# Boolean: +# ruby = JSON.parse('true') +# ruby # => true +# ruby.class # => TrueClass +# ruby = JSON.parse('false') +# ruby # => false +# ruby.class # => FalseClass +# Null: +# ruby = JSON.parse('null') +# ruby # => nil +# ruby.class # => NilClass +# +# ==== Parsing Options +# +# ====== Input Options +# +# Option +max_nesting+ (\Integer) specifies the maximum nesting depth allowed; +# defaults to +100+; +# You can set it to +false+ to disable depth checking entirely, but that is dangerous +# when parsing untrusted input. +# +# With the default, +100+: +# source = '[0, [1, [2, [3]]]]' +# ruby = JSON.parse(source) +# ruby # => [0, [1, [2, [3]]]] +# Too deep: +# # Raises JSON::NestingError (nesting of 2 is too deep): +# JSON.parse(source, max_nesting: 1) +# Bad value: +# # Raises TypeError (no implicit conversion of Symbol into Integer): +# JSON.parse(source, max_nesting: :foo) +# +# --- +# +# Option +allow_duplicate_key+ specifies whether duplicate keys in objects +# should be ignored or cause an error to be raised: +# +# When set to +false+, the default: +# JSON.parse('{"a": 1, "a": 2}') # duplicate key "a" at line 1 column 1 (JSON::ParserError) +# +# When set to +true+: +# # The last value is used. +# JSON.parse('{"a": 1, "a": 2}', allow_duplicate_key: true) # => {"a" => 2} +# +# --- +# +# Option +allow_nan+ (boolean) specifies whether to allow +# NaN, Infinity, and MinusInfinity in +source+; +# defaults to +false+. +# +# With the default, +false+: +# # Raises JSON::ParserError (unexpected token 'NaN]' at line 1 column 2): +# JSON.parse('[NaN]') +# # Raises JSON::ParserError (unexpected token 'Infinity]' at line 1 column 2): +# JSON.parse('[Infinity]') +# # Raises JSON::ParserError (invalid number: '-Infinity]' at line 1 column 2): +# JSON.parse('[-Infinity]') +# Allow: +# source = '[NaN, Infinity, -Infinity]' +# ruby = JSON.parse(source, allow_nan: true) +# ruby # => [NaN, Infinity, -Infinity] +# +# --- +# +# Option +allow_trailing_comma+ (boolean) specifies whether to allow +# trailing commas in objects and arrays; +# defaults to +false+. +# +# With the default, +false+: +# JSON.parse('[1,]') # unexpected character: ']' at line 1 column 4 (JSON::ParserError) +# +# When enabled: +# JSON.parse('[1,]', allow_trailing_comma: true) # => [1] +# +# --- +# +# Option +allow_comments+ (boolean) specifies whether to allow +# JavaScript style comments (either // comment or /* comment */); +# defaults to +false+. +# +# When set to +false+, the default: +# JSON.parse('/* comment */ {"a": 1, "a": 2}') # unexpected token '/*' at line 1 column 1 (JSON::ParserError) +# +# When set to +true+, comments are ignored: +# JSON.parse('/* comment */ {"a": 1} // more comment', allow_comments: true) # => {"a" => 1} +# +# --- +# +# Option +allow_control_characters+ (boolean) specifies whether to allow +# unescaped ASCII control characters, such as newlines, in strings; +# defaults to +false+. +# +# With the default, +false+: +# JSON.parse(%{"Hello\nWorld"}) # invalid ASCII control character in string: \nWorld" at line 2 column 0 (JSON::ParserError) +# +# When enabled: +# JSON.parse(%{"Hello\nWorld"}, allow_control_characters: true) # => "Hello\nWorld" +# +# --- +# +# Option +allow_invalid_escape+ (boolean) specifies whether to ignore backslahes that are followed +# by an invalid escape character in strings; +# defaults to +false+. +# +# With the default, +false+: +# JSON.parse('"Hell\o"') # invalid escape character in string: '\o"' at line 1 column 6 (JSON::ParserError) +# +# When enabled: +# JSON.parse('"Hell\o"', allow_invalid_escape: true) # => "Hello" +# +# ====== Output Options +# +# Option +freeze+ (boolean) specifies whether the returned objects will be frozen; +# defaults to +false+. +# +# Option +symbolize_names+ (boolean) specifies whether returned \Hash keys +# should be Symbols; +# defaults to +false+ (use Strings). +# +# With the default, +false+: +# source = '{"a": "foo", "b": 1.0, "c": true, "d": false, "e": null}' +# ruby = JSON.parse(source) +# ruby # => {"a"=>"foo", "b"=>1.0, "c"=>true, "d"=>false, "e"=>nil} +# Use Symbols: +# ruby = JSON.parse(source, symbolize_names: true) +# ruby # => {a: "foo", b: 1.0, c: true, d: false, e: nil} +# +# --- +# +# Option +object_class+ (\Class) specifies the Ruby class to be used +# for each \JSON object; +# defaults to \Hash. +# +# With the default, \Hash: +# source = '{"a": "foo", "b": 1.0, "c": true, "d": false, "e": null}' +# ruby = JSON.parse(source) +# ruby.class # => Hash +# Use class \OpenStruct: +# ruby = JSON.parse(source, object_class: OpenStruct) +# ruby # => # # -# 1.to_json => "1" +# --- +# +# Option +array_class+ (\Class) specifies the Ruby class to be used +# for each \JSON array; +# defaults to \Array. +# +# With the default, \Array: +# source = '["foo", 1.0, true, false, null]' +# ruby = JSON.parse(source) +# ruby.class # => Array +# Use class \Set: +# ruby = JSON.parse(source, array_class: Set) +# ruby # => Set["foo", 1.0, true, false, nil] +# +# === Generating \JSON +# +# To generate a Ruby \String containing \JSON data, +# use method JSON.generate(source, opts), where +# - +source+ is a Ruby object. +# - +opts+ is a \Hash object containing options +# that control both input allowed and output formatting. +# +# ==== Generating \JSON from Arrays +# +# When the source is a Ruby \Array, JSON.generate returns +# a \String containing a \JSON array: +# ruby = [0, 's', :foo] +# json = JSON.generate(ruby) +# json # => '[0,"s","foo"]' +# +# The Ruby \Array array may contain nested arrays, hashes, and scalars +# to any depth: +# ruby = [0, [1, 2], {foo: 3, bar: 4}] +# json = JSON.generate(ruby) +# json # => '[0,[1,2],{"foo":3,"bar":4}]' +# +# ==== Generating \JSON from Hashes +# +# When the source is a Ruby \Hash, JSON.generate returns +# a \String containing a \JSON object: +# ruby = {foo: 0, bar: 's', baz: :bat} +# json = JSON.generate(ruby) +# json # => '{"foo":0,"bar":"s","baz":"bat"}' +# +# The Ruby \Hash array may contain nested arrays, hashes, and scalars +# to any depth: +# ruby = {foo: [0, 1], bar: {baz: 2, bat: 3}, bam: :bad} +# json = JSON.generate(ruby) +# json # => '{"foo":[0,1],"bar":{"baz":2,"bat":3},"bam":"bad"}' +# +# ==== Generating \JSON from Other Objects +# +# When the source is neither an \Array nor a \Hash, +# the generated \JSON data depends on the class of the source. +# +# When the source is a Ruby \Integer or \Float, JSON.generate returns +# a \String containing a \JSON number: +# JSON.generate(42) # => '42' +# JSON.generate(0.42) # => '0.42' +# +# When the source is a Ruby \String, JSON.generate returns +# a \String containing a \JSON string (with double-quotes): +# JSON.generate('A string') # => '"A string"' +# +# When the source is +true+, +false+ or +nil+, JSON.generate returns +# a \String containing the corresponding \JSON token: +# JSON.generate(true) # => 'true' +# JSON.generate(false) # => 'false' +# JSON.generate(nil) # => 'null' +# +# When the source is none of the above, JSON.generate returns +# a \String containing a \JSON string representation of the source: +# JSON.generate(:foo) # => '"foo"' +# JSON.generate(Complex(0, 0)) # => '"0+0i"' +# JSON.generate(Dir.new('.')) # => '"#"' +# +# ==== Generating Options +# +# ====== Input Options +# +# Option +allow_nan+ (boolean) specifies whether +# +NaN+, +Infinity+, and +-Infinity+ may be generated; +# defaults to +false+. +# +# With the default, +false+: +# # Raises JSON::GeneratorError (NaN not allowed in JSON): +# JSON.generate(JSON::NaN) +# # Raises JSON::GeneratorError (Infinity not allowed in JSON): +# JSON.generate(JSON::Infinity) +# # Raises JSON::GeneratorError (-Infinity not allowed in JSON): +# JSON.generate(JSON::MinusInfinity) +# +# Allow: +# ruby = [Float::NAN, Float::INFINITY, JSON::NaN, JSON::Infinity, JSON::MinusInfinity] +# JSON.generate(ruby, allow_nan: true) # => '[NaN,Infinity,NaN,Infinity,-Infinity]' +# +# --- +# +# Option +allow_duplicate_key+ (boolean) specifies whether +# hashes with duplicate keys should be allowed or produce an error. +# Defaults to +false+, which raises an error. +# +# With the default, +false+: +# JSON.generate({foo: 1, "foo" => 2}) +# # detected duplicate key "foo" in {foo: 1, "foo" => 2} (JSON::GeneratorError) +# +# With +true+: +# JSON.generate({foo: 1, "foo" => 2}, allow_duplicate_key: true) +# # => '{"foo":1,"foo":2}' +# +# --- +# +# Option +max_nesting+ (\Integer) specifies the maximum nesting depth +# in +obj+; defaults to +100+. +# +# With the default, +100+: +# obj = [[[[[[0]]]]]] +# JSON.generate(obj) # => '[[[[[[0]]]]]]' +# +# Too deep: +# # Raises JSON::NestingError (nesting of 2 is too deep. Did you try to serialize objects with circular references?): +# JSON.generate(obj, max_nesting: 2) +# +# With +false+: +# obj = [] +# obj[0] = obj +# # Raises SystemStackError (stack level too deep): +# JSON.generate(obj, max_nesting: false) +# +# Setting +max_nesting+ to +false+ or a very large number can lead to a stack overflow +# which may leave the process in an unrecoverable state. +# It is highly discouraged. +# +# ====== Escaping Options +# +# Options +script_safe+ (boolean) specifies wether '\u2028', '\u2029' +# and '/' should be escaped as to make the JSON object safe to interpolate in script +# tags. +# +# Options +ascii_only+ (boolean) specifies wether all characters outside the ASCII range +# should be escaped. +# +# ====== Output Options +# +# The default formatting options generate the most compact +# \JSON data, all on one line and with no whitespace. +# +# You can use these formatting options to generate +# \JSON data in a more open format, using whitespace. +# See also JSON.pretty_generate. +# +# - Option +array_nl+ (\String) specifies a string (usually a newline) +# to be inserted after each \JSON array; defaults to the empty \String, ''. +# - Option +object_nl+ (\String) specifies a string (usually a newline) +# to be inserted after each \JSON object; defaults to the empty \String, ''. +# - Option +indent+ (\String) specifies the string (usually spaces) to be +# used for indentation; defaults to the empty \String, ''; +# has no effect unless options +array_nl+ or +object_nl+ specify newlines. +# - Option +space+ (\String) specifies a string (usually a space) to be +# inserted after the colon in each \JSON object's pair; +# defaults to the empty \String, ''. +# - Option +space_before+ (\String) specifies a string (usually a space) to be +# inserted before the colon in each \JSON object's pair; +# defaults to the empty \String, ''. +# - Option +sort_keys+ (boolean or \Proc) controls whether and how the keys of a +# hash are sorted when generating the output; defaults to +false+. +# When +true+, keys are sorted lexicographically. When a \Proc, it receives +# the entire \Hash and must return a \Hash with its pairs in the desired +# order, allowing for arbitrary sort orders. +# - Option +rfc8785+ (boolean) controls whether the generated JSON will be canonicalized +# as defined in RFC8785. +# Integers are converted to Float before formatting and may be rounded. +# Integers outside the finite Float range raise JSON::GeneratorError. +# Nonempty +indent+, +space+, +space_before+, +object_nl+, or +array_nl+, +# and enabled +ascii_only+, +script_safe+, or +allow_nan+ raise ArgumentError. +# JSON.dump defaults +allow_nan+ to +false+ when +rfc8785+ is enabled. +# JSON::Fragment contents are inserted as is; the caller must ensure they are canonical. +# +# In this example, +obj+ is used first to generate the shortest +# \JSON data (no whitespace), then again with all formatting options +# specified: +# +# obj = {foo: [:bar, :baz], bat: {bam: 0, bad: 1}} +# json = JSON.generate(obj) +# puts 'Compact:', json +# opts = { +# array_nl: "\n", +# object_nl: "\n", +# indent: ' ', +# space_before: ' ', +# space: ' ' +# } +# puts 'Open:', JSON.generate(obj, opts) +# +# Output: +# Compact: +# {"foo":["bar","baz"],"bat":{"bam":0,"bad":1}} +# Open: +# { +# "foo" : [ +# "bar", +# "baz" +# ], +# "bat" : { +# "bam" : 0, +# "bad" : 1 +# } +# } # module JSON require 'json/version' - - begin - require 'json/ext' - rescue LoadError - require 'json/pure' - end + require 'json/ext' end diff --git a/lib/json/add/bigdecimal.rb b/lib/json/add/bigdecimal.rb deleted file mode 100644 index c8b4f567c..000000000 --- a/lib/json/add/bigdecimal.rb +++ /dev/null @@ -1,29 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -defined?(::BigDecimal) or require 'bigdecimal' - -class BigDecimal - # Import a JSON Marshalled object. - # - # method used for JSON marshalling support. - def self.json_create(object) - BigDecimal._load object['b'] - end - - # Marshal the object to JSON. - # - # method used for JSON marshalling support. - def as_json(*) - { - JSON.create_id => self.class.name, - 'b' => _dump, - } - end - - # return the JSON value - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/complex.rb b/lib/json/add/complex.rb deleted file mode 100644 index 4d977e758..000000000 --- a/lib/json/add/complex.rb +++ /dev/null @@ -1,29 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -defined?(::Complex) or require 'complex' - -class Complex - - # Deserializes JSON string by converting Real value r, imaginary - # value i, to a Complex object. - def self.json_create(object) - Complex(object['r'], object['i']) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'r' => real, - 'i' => imag, - } - end - - # Stores class name (Complex) along with real value r and imaginary value i as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/core.rb b/lib/json/add/core.rb deleted file mode 100644 index bfb017c46..000000000 --- a/lib/json/add/core.rb +++ /dev/null @@ -1,12 +0,0 @@ -#frozen_string_literal: false -# This file requires the implementations of ruby core's custom objects for -# serialisation/deserialisation. - -require 'json/add/date' -require 'json/add/date_time' -require 'json/add/exception' -require 'json/add/range' -require 'json/add/regexp' -require 'json/add/struct' -require 'json/add/symbol' -require 'json/add/time' diff --git a/lib/json/add/date.rb b/lib/json/add/date.rb deleted file mode 100644 index 25523561a..000000000 --- a/lib/json/add/date.rb +++ /dev/null @@ -1,34 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -require 'date' - -class Date - - # Deserializes JSON string by converting Julian year y, month - # m, day d and Day of Calendar Reform sg to Date. - def self.json_create(object) - civil(*object.values_at('y', 'm', 'd', 'sg')) - end - - alias start sg unless method_defined?(:start) - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'y' => year, - 'm' => month, - 'd' => day, - 'sg' => start, - } - end - - # Stores class name (Date) with Julian year y, month m, day - # d and Day of Calendar Reform sg as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/date_time.rb b/lib/json/add/date_time.rb deleted file mode 100644 index 38b0e86ab..000000000 --- a/lib/json/add/date_time.rb +++ /dev/null @@ -1,50 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -require 'date' - -class DateTime - - # Deserializes JSON string by converting year y, month m, - # day d, hour H, minute M, second S, - # offset of and Day of Calendar Reform sg to DateTime. - def self.json_create(object) - args = object.values_at('y', 'm', 'd', 'H', 'M', 'S') - of_a, of_b = object['of'].split('/') - if of_b and of_b != '0' - args << Rational(of_a.to_i, of_b.to_i) - else - args << of_a - end - args << object['sg'] - civil(*args) - end - - alias start sg unless method_defined?(:start) - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'y' => year, - 'm' => month, - 'd' => day, - 'H' => hour, - 'M' => min, - 'S' => sec, - 'of' => offset.to_s, - 'sg' => start, - } - end - - # Stores class name (DateTime) with Julian year y, month m, - # day d, hour H, minute M, second S, - # offset of and Day of Calendar Reform sg as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end - - diff --git a/lib/json/add/exception.rb b/lib/json/add/exception.rb deleted file mode 100644 index a107e5b3c..000000000 --- a/lib/json/add/exception.rb +++ /dev/null @@ -1,31 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Exception - - # Deserializes JSON string by constructing new Exception object with message - # m and backtrace b serialized with to_json - def self.json_create(object) - result = new(object['m']) - result.set_backtrace object['b'] - result - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'm' => message, - 'b' => backtrace, - } - end - - # Stores class name (Exception) with message m and backtrace array - # b as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/ostruct.rb b/lib/json/add/ostruct.rb deleted file mode 100644 index 686cf0025..000000000 --- a/lib/json/add/ostruct.rb +++ /dev/null @@ -1,31 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -require 'ostruct' - -class OpenStruct - - # Deserializes JSON string by constructing new Struct object with values - # t serialized by to_json. - def self.json_create(object) - new(object['t'] || object[:t]) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - klass = self.class.name - klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!" - { - JSON.create_id => klass, - 't' => table, - } - end - - # Stores class name (OpenStruct) with this struct's values t as a - # JSON string. - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/range.rb b/lib/json/add/range.rb deleted file mode 100644 index 93529fb1c..000000000 --- a/lib/json/add/range.rb +++ /dev/null @@ -1,29 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Range - - # Deserializes JSON string by constructing new Range object with arguments - # a serialized by to_json. - def self.json_create(object) - new(*object['a']) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'a' => [ first, last, exclude_end? ] - } - end - - # Stores class name (Range) with JSON array of arguments a which - # include first (integer), last (integer), and - # exclude_end? (boolean) as JSON string. - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/rational.rb b/lib/json/add/rational.rb deleted file mode 100644 index 6be403458..000000000 --- a/lib/json/add/rational.rb +++ /dev/null @@ -1,28 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -defined?(::Rational) or require 'rational' - -class Rational - # Deserializes JSON string by converting numerator value n, - # denominator value d, to a Rational object. - def self.json_create(object) - Rational(object['n'], object['d']) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'n' => numerator, - 'd' => denominator, - } - end - - # Stores class name (Rational) along with numerator value n and denominator value d as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/regexp.rb b/lib/json/add/regexp.rb deleted file mode 100644 index 39d69fede..000000000 --- a/lib/json/add/regexp.rb +++ /dev/null @@ -1,30 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Regexp - - # Deserializes JSON string by constructing new Regexp object with source - # s (Regexp or String) and options o serialized by - # to_json - def self.json_create(object) - new(object['s'], object['o']) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 'o' => options, - 's' => source, - } - end - - # Stores class name (Regexp) with options o and source s - # (Regexp or String) as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/set.rb b/lib/json/add/set.rb deleted file mode 100644 index 71e2a0ac8..000000000 --- a/lib/json/add/set.rb +++ /dev/null @@ -1,29 +0,0 @@ -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end -defined?(::Set) or require 'set' - -class Set - # Import a JSON Marshalled object. - # - # method used for JSON marshalling support. - def self.json_create(object) - new object['a'] - end - - # Marshal the object to JSON. - # - # method used for JSON marshalling support. - def as_json(*) - { - JSON.create_id => self.class.name, - 'a' => to_a, - } - end - - # return the JSON value - def to_json(*args) - as_json.to_json(*args) - end -end - diff --git a/lib/json/add/struct.rb b/lib/json/add/struct.rb deleted file mode 100644 index e8395ed42..000000000 --- a/lib/json/add/struct.rb +++ /dev/null @@ -1,30 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Struct - - # Deserializes JSON string by constructing new Struct object with values - # v serialized by to_json. - def self.json_create(object) - new(*object['v']) - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - klass = self.class.name - klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!" - { - JSON.create_id => klass, - 'v' => values, - } - end - - # Stores class name (Struct) with Struct values v as a JSON string. - # Only named structs are supported. - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/add/symbol.rb b/lib/json/add/symbol.rb deleted file mode 100644 index 74b13a423..000000000 --- a/lib/json/add/symbol.rb +++ /dev/null @@ -1,25 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Symbol - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - { - JSON.create_id => self.class.name, - 's' => to_s, - } - end - - # Stores class name (Symbol) with String representation of Symbol as a JSON string. - def to_json(*a) - as_json.to_json(*a) - end - - # Deserializes JSON string by converting the string value stored in the object to a Symbol - def self.json_create(o) - o['s'].to_sym - end -end diff --git a/lib/json/add/time.rb b/lib/json/add/time.rb deleted file mode 100644 index b73acc408..000000000 --- a/lib/json/add/time.rb +++ /dev/null @@ -1,38 +0,0 @@ -#frozen_string_literal: false -unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED - require 'json' -end - -class Time - - # Deserializes JSON string by converting time since epoch to Time - def self.json_create(object) - if usec = object.delete('u') # used to be tv_usec -> tv_nsec - object['n'] = usec * 1000 - end - if method_defined?(:tv_nsec) - at(object['s'], Rational(object['n'], 1000)) - else - at(object['s'], object['n'] / 1000) - end - end - - # Returns a hash, that will be turned into a JSON object and represent this - # object. - def as_json(*) - nanoseconds = [ tv_usec * 1000 ] - respond_to?(:tv_nsec) and nanoseconds << tv_nsec - nanoseconds = nanoseconds.max - { - JSON.create_id => self.class.name, - 's' => tv_sec, - 'n' => nanoseconds, - } - end - - # Stores class name (Time) with number of seconds since epoch and number of - # microseconds for Time as JSON string - def to_json(*args) - as_json.to_json(*args) - end -end diff --git a/lib/json/common.rb b/lib/json/common.rb index 7cc852916..bf96f4137 100644 --- a/lib/json/common.rb +++ b/lib/json/common.rb @@ -1,25 +1,72 @@ -#frozen_string_literal: false +# frozen_string_literal: true + require 'json/version' -require 'json/generic_object' module JSON + module ParserOptions # :nodoc: + class << self + def on_load(on_load, object_class, array_class) + on_load = object_class_proc(object_class, on_load) if object_class + on_load = array_class_proc(array_class, on_load) if array_class + on_load + end + + private + + def object_class_proc(object_class, on_load) + ->(obj) do + if Hash === obj + object = object_class.new + obj.each { |k, v| object[k] = v } + obj = object + end + on_load.nil? ? obj : on_load.call(obj) + end + end + + def array_class_proc(array_class, on_load) + ->(obj) do + if Array === obj + array = array_class.new + obj.each { |v| array << v } + obj = array + end + on_load.nil? ? obj : on_load.call(obj) + end + end + end + end + + private_constant :ParserOptions + class << self - # If _object_ is string-like, parse the string and return the parsed - # result as a Ruby data structure. Otherwise generate a JSON text from the - # Ruby data structure object and return it. + # :call-seq: + # JSON[object] -> new_array or new_string # - # The _opts_ argument is passed through to generate/parse respectively. - # See generate and parse for their documentation. - def [](object, opts = {}) - if object.respond_to? :to_str - JSON.parse(object.to_str, opts) - else - JSON.generate(object, opts) + # If +object+ is a \String, + # calls JSON.parse with +object+ and +opts+ (see method #parse): + # json = '[0, 1, null]' + # JSON[json]# => [0, 1, nil] + # + # Otherwise, calls JSON.generate with +object+ and +opts+ (see method #generate): + # ruby = [0, 1, nil] + # JSON[ruby] # => '[0,1,null]' + def [](object, opts = nil) + opts ||= {}.freeze + + if object.is_a?(String) + return JSON.parse(object, **opts) + elsif object.respond_to?(:to_str) + str = object.to_str + if str.is_a?(String) + return JSON.parse(str, **opts) + end end + + JSON.generate(object, opts) end - # Returns the JSON parser class that is used by JSON. This is either - # JSON::Ext::Parser or JSON::Pure::Parser. + # Returns the JSON parser class that is used by JSON. attr_reader :parser # Set the JSON parser class _parser_ to be used by JSON. @@ -29,405 +76,837 @@ def parser=(parser) # :nodoc: const_set :Parser, parser end - # Return the constant located at _path_. The format of _path_ has to be - # either ::A::B::C or A::B::C. In any case, A has to be located at the top - # level (absolute namespace path?). If there doesn't exist a constant at - # the given path, an ArgumentError is raised. - def deep_const_get(path) # :nodoc: - path.to_s.split(/::/).inject(Object) do |p, c| - case - when c.empty? then p - when p.const_defined?(c, true) then p.const_get(c) - else - begin - p.const_missing(c) - rescue NameError => e - raise ArgumentError, "can't get const #{path}: #{e}" - end - end - end - end - # Set the module _generator_ to be used by JSON. def generator=(generator) # :nodoc: old, $VERBOSE = $VERBOSE, nil + @generator = generator - generator_methods = generator::GeneratorMethods - for const in generator_methods.constants - klass = deep_const_get(const) - modul = generator_methods.const_get(const) - klass.class_eval do - instance_methods(false).each do |m| - m.to_s == 'to_json' and remove_method m + if generator.const_defined?(:GeneratorMethods) + generator_methods = generator::GeneratorMethods + for const in generator_methods.constants + klass = const_get(const) + modul = generator_methods.const_get(const) + klass.class_eval do + instance_methods(false).each do |m| + m.to_s == 'to_json' and remove_method m + end + include modul end - include modul end end self.state = generator::State - const_set :State, self.state - const_set :SAFE_STATE_PROTOTYPE, State.new - const_set :FAST_STATE_PROTOTYPE, State.new( - :indent => '', - :space => '', - :object_nl => "", - :array_nl => "", - :max_nesting => false - ) - const_set :PRETTY_STATE_PROTOTYPE, State.new( - :indent => ' ', - :space => ' ', - :object_nl => "\n", - :array_nl => "\n" - ) + const_set :State, state ensure $VERBOSE = old end - # Returns the JSON generator module that is used by JSON. This is - # either JSON::Ext::Generator or JSON::Pure::Generator. + # Returns the JSON generator module that is used by JSON. attr_reader :generator - # Returns the JSON generator state class that is used by JSON. This is - # either JSON::Ext::Generator::State or JSON::Pure::Generator::State. + # Sets or Returns the JSON generator state class that is used by JSON. attr_accessor :state - # This is create identifier, which is used to decide if the _json_create_ - # hook of a class should be called. It defaults to 'json_class'. - attr_accessor :create_id + private + + # Called from the extension when a hash has both string and symbol keys + def on_mixed_keys_hash(hash) + set = {} + hash.each_key do |key| + key_str = key.to_s + + if set[key_str] + raise GeneratorError, "detected duplicate key #{key_str.inspect} in #{hash.inspect}" + else + set[key_str] = true + end + end + end end - self.create_id = 'json_class' - NaN = 0.0/0 + NaN = Float::NAN - Infinity = 1.0/0 + Infinity = Float::INFINITY MinusInfinity = -Infinity # The base exception for JSON errors. - class JSONError < StandardError - def self.wrap(exception) - obj = new("Wrapped(#{exception.class}): #{exception.message.inspect}") - obj.set_backtrace exception.backtrace - obj - end - end + class JSONError < StandardError; end # This exception is raised if a parser error occurs. - class ParserError < JSONError; end + class ParserError < JSONError + # Line number where the parser encountered an error. + # Is +nil+ when raised by JSON::ResumableParser. + attr_reader :line + + # One-based column number where the parser encountered an error, counted in Unicode codepoints. + # Is +nil+ when raised by JSON::ResumableParser. + attr_reader :column + + # Returns a best effort JSONPath string representing where in the document + # the parser encountered an error: + # + # begin + # JSON.parse('{"articles": [ { "title": invalid } ]}') + # rescue JSON::ParserError => error + # error.json_path # => "$.articles[0].title" + # end + def json_path + return @json_path if String === @json_path + + if Array === @json_path + path = build_json_path(@json_path) + @json_path = path unless frozen? + return path + end + end + + private + + def build_json_path(segments) + error = false + path = segments.filter_map do |segment| + next if error + + case segment + when Integer + "[#{segment}]" + when String, Symbol + segment = segment.to_s + if !segment.valid_encoding? + segment = segment.b.gsub(/["\\]/n, { '"' => '\\"', '\\' => '\\\\' }).force_encoding(Encoding::UTF_8) + %{["#{segment}"]} + elsif segment.match?(/\A[a-zA-Z\$\_][a-zA-Z\$\_0-9]*\z/) + ".#{segment}" + else + segment = segment.gsub(/["\\]/, { '"' => '\\"', '\\' => '\\\\' }) + %{["#{segment}"]} + end + else + error = true + nil + end + end.join + "$#{path}".freeze + end + end # This exception is raised if the nesting of parsed data structures is too # deep. class NestingError < ParserError; end - # :stopdoc: - class CircularDatastructure < NestingError; end - # :startdoc: - # This exception is raised if a generator or unparser error occurs. - class GeneratorError < JSONError; end - # For backwards compatibility - UnparserError = GeneratorError + class GeneratorError < JSONError + attr_reader :invalid_object - # This exception is raised if the required unicode support is missing on the - # system. Usually this means that the iconv library is not installed. - class MissingUnicodeSupport < JSONError; end + def initialize(message, invalid_object = nil) + super(message) + @invalid_object = invalid_object + end - module_function + def detailed_message(...) + # Exception#detailed_message doesn't exist until Ruby 3.2 + super_message = defined?(super) ? super : message - # Parse the JSON document _source_ into a Ruby data structure and return it. - # - # _opts_ can have the following - # keys: - # * *max_nesting*: The maximum depth of nesting allowed in the parsed data - # structures. Disable depth checking with :max_nesting => false. It - # defaults to 100. - # * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in - # defiance of RFC 7159 to be parsed by the Parser. This option defaults - # to false. - # * *symbolize_names*: If set to true, returns symbols for the names - # (keys) in a JSON object. Otherwise strings are returned. Strings are - # the default. - # * *create_additions*: If set to false, the Parser doesn't create - # additions even if a matching class and create_id was found. This option - # defaults to false. - # * *object_class*: Defaults to Hash - # * *array_class*: Defaults to Array - def parse(source, opts = {}) - Parser.new(source, opts).parse + if @invalid_object.nil? + super_message + else + "#{super_message}\nInvalid object: #{@invalid_object.inspect}" + end + end end - # Parse the JSON document _source_ into a Ruby data structure and return it. - # The bang version of the parse method defaults to the more dangerous values - # for the _opts_ hash, so be sure only to parse trusted _source_ documents. - # - # _opts_ can have the following keys: - # * *max_nesting*: The maximum depth of nesting allowed in the parsed data - # structures. Enable depth checking with :max_nesting => anInteger. The - # parse! methods defaults to not doing max depth checking: This can be - # dangerous if someone wants to fill up your stack. - # * *allow_nan*: If set to true, allow NaN, Infinity, and -Infinity in - # defiance of RFC 7159 to be parsed by the Parser. This option defaults - # to true. - # * *create_additions*: If set to false, the Parser doesn't create - # additions even if a matching class and create_id was found. This option - # defaults to false. - def parse!(source, opts = {}) - opts = { - :max_nesting => false, - :allow_nan => true - }.merge(opts) - Parser.new(source, opts).parse - end + # Fragment of JSON document that is to be included as is: + # fragment = JSON::Fragment.new("[1, 2, 3]") + # JSON.generate({ count: 3, items: fragments }) + # + # This allows to easily assemble multiple JSON fragments that have + # been persisted somewhere without having to parse them nor resorting + # to string interpolation. + # + # Note: no validation is performed on the provided string. It is the + # responsibility of the caller to ensure the string contains valid JSON. + Fragment = Struct.new(:json) do + def initialize(json) + unless string = String.try_convert(json) + raise TypeError, "no implicit conversion of #{json.class} into String" + end - # Generate a JSON document from the Ruby data structure _obj_ and return - # it. _state_ is * a JSON::State object, - # * or a Hash like object (responding to to_hash), - # * an object convertible into a hash by a to_h method, - # that is used as or to configure a State object. - # - # It defaults to a state object, that creates the shortest possible JSON text - # in one line, checks for circular data structures and doesn't allow NaN, - # Infinity, and -Infinity. - # - # A _state_ hash can have the following keys: - # * *indent*: a string used to indent levels (default: ''), - # * *space*: a string that is put after, a : or , delimiter (default: ''), - # * *space_before*: a string that is put before a : pair delimiter (default: ''), - # * *object_nl*: a string that is put at the end of a JSON object (default: ''), - # * *array_nl*: a string that is put at the end of a JSON array (default: ''), - # * *allow_nan*: true if NaN, Infinity, and -Infinity should be - # generated, otherwise an exception is thrown if these values are - # encountered. This options defaults to false. - # * *max_nesting*: The maximum depth of nesting allowed in the data - # structures from which JSON is to be generated. Disable depth checking - # with :max_nesting => false, it defaults to 100. - # - # See also the fast_generate for the fastest creation method with the least - # amount of sanity checks, and the pretty_generate method for some - # defaults for pretty output. - def generate(obj, opts = nil) - if State === opts - state, opts = opts, nil - else - state = SAFE_STATE_PROTOTYPE.dup + super(string) end - if opts - if opts.respond_to? :to_hash - opts = opts.to_hash - elsif opts.respond_to? :to_h - opts = opts.to_h - else - raise TypeError, "can't convert #{opts.class} into Hash" - end - state = state.configure(opts) + + def to_json(state = nil, *) + json end - state.generate(obj) end - # :stopdoc: - # I want to deprecate these later, so I'll first be silent about them, and - # later delete them. - alias unparse generate - module_function :unparse - # :startdoc: + module_function - # Generate a JSON document from the Ruby data structure _obj_ and return it. - # This method disables the checks for circles in Ruby objects. + # :call-seq: + # JSON.parse(source, opts) -> object # - # *WARNING*: Be careful not to pass any Ruby data structures with circles as - # _obj_ argument because this will cause JSON to go into an infinite loop. - def fast_generate(obj, opts = nil) - if State === opts - state, opts = opts, nil - else - state = FAST_STATE_PROTOTYPE.dup - end - if opts - if opts.respond_to? :to_hash - opts = opts.to_hash - elsif opts.respond_to? :to_h - opts = opts.to_h - else - raise TypeError, "can't convert #{opts.class} into Hash" - end - state.configure(opts) + # Returns the Ruby objects created by parsing the given +source+. + # + # Argument +source+ contains the \String to be parsed. + # + # Argument +opts+, if given, contains a \Hash of options for the parsing. + # See {Parsing Options}[#module-JSON-label-Parsing+Options]. + # + # --- + # + # When +source+ is a \JSON array, returns a Ruby \Array: + # source = '["foo", 1.0, true, false, null]' + # ruby = JSON.parse(source) + # ruby # => ["foo", 1.0, true, false, nil] + # ruby.class # => Array + # + # When +source+ is a \JSON object, returns a Ruby \Hash: + # source = '{"a": "foo", "b": 1.0, "c": true, "d": false, "e": null}' + # ruby = JSON.parse(source) + # ruby # => {"a"=>"foo", "b"=>1.0, "c"=>true, "d"=>false, "e"=>nil} + # ruby.class # => Hash + # + # For examples of parsing for all \JSON data types, see + # {Parsing \JSON}[#module-JSON-label-Parsing+JSON]. + # + # Parses nested JSON objects: + # source = <<~JSON + # { + # "name": "Dave", + # "age" :40, + # "hats": [ + # "Cattleman's", + # "Panama", + # "Tophat" + # ] + # } + # JSON + # ruby = JSON.parse(source) + # ruby # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # --- + # + # Raises an exception if +source+ is not valid JSON: + # # Raises JSON::ParserError (unexpected character: 'invalid' at line 1 column 1): + # JSON.parse('invalid') + # + def parse(source, on_load: nil, object_class: nil, array_class: nil, **options) + if object_class || array_class + on_load = ParserOptions.on_load(on_load, object_class, array_class) end - state.generate(obj) + + options[:on_load] = on_load if on_load + Parser.parse(source, options) end - # :stopdoc: - # I want to deprecate these later, so I'll first be silent about them, and later delete them. - alias fast_unparse fast_generate - module_function :fast_unparse - # :startdoc: + # :call-seq: + # JSON.parse!(source, opts) -> object + # + # Calls + # parse(source, opts) + # with +source+ and possibly modified +opts+. + # + # Differences from JSON.parse: + # - Option +max_nesting+, if not provided, defaults to +false+, + # which disables checking for nesting depth. + # - Option +allow_nan+, if not provided, defaults to +true+. + def parse!(source, **options) + parse(source, max_nesting: false, allow_nan: true, **options) + end - # Generate a JSON document from the Ruby data structure _obj_ and return it. - # The returned document is a prettier form of the document returned by - # #unparse. + # :call-seq: + # JSON.load_file(path, **) -> object # - # The _opts_ argument can be used to configure the generator. See the - # generate method for a more detailed explanation. - def pretty_generate(obj, opts = nil) + # Calls: + # parse(File.read(path), **) + # + # See method #parse. + def load_file(filespec, **options) + parse(File.read(filespec, encoding: Encoding::UTF_8), **options) + end + + # :call-seq: + # JSON.load_file!(path, **) + # + # Calls: + # JSON.parse!(File.read(path), **) + # + # See method #parse! + def load_file!(filespec, **options) + parse!(File.read(filespec, encoding: Encoding::UTF_8), **options) + end + + # :call-seq: + # JSON.generate(obj, opts = nil) -> new_string + # + # Returns a \String containing the generated \JSON data. + # + # See also JSON.pretty_generate. + # + # Argument +obj+ is the Ruby object to be converted to \JSON. + # + # Argument +opts+, if given, contains a \Hash of options for the generation. + # See {Generating Options}[#module-JSON-label-Generating+Options]. + # + # --- + # + # When +obj+ is an \Array, returns a \String containing a \JSON array: + # obj = ["foo", 1.0, true, false, nil] + # json = JSON.generate(obj) + # json # => '["foo",1.0,true,false,null]' + # + # When +obj+ is a \Hash, returns a \String containing a \JSON object: + # obj = {foo: 0, bar: 's', baz: :bat} + # json = JSON.generate(obj) + # json # => '{"foo":0,"bar":"s","baz":"bat"}' + # + # For examples of generating from other Ruby objects, see + # {Generating \JSON from Other Objects}[#module-JSON-label-Generating+JSON+from+Other+Objects]. + # + # --- + # + # Raises an exception if any formatting option is not a \String. + # + # Raises an exception if +obj+ contains circular references: + # a = []; b = []; a.push(b); b.push(a) + # # Raises JSON::NestingError (nesting of 100 is too deep. Did you try to serialize objects with circular references?): + # JSON.generate(a) + # + def generate(obj, opts = nil) if State === opts - state, opts = opts, nil + opts.generate(obj) else - state = PRETTY_STATE_PROTOTYPE.dup + State.generate(obj, opts.frozen? ? opts : opts.dup, nil) end + end + + PRETTY_GENERATE_OPTIONS = { + indent: ' ', + space: ' ', + object_nl: "\n", + array_nl: "\n", + }.freeze + private_constant :PRETTY_GENERATE_OPTIONS + + # :call-seq: + # JSON.pretty_generate(obj, opts = nil) -> new_string + # + # Arguments +obj+ and +opts+ here are the same as + # arguments +obj+ and +opts+ in JSON.generate. + # + # Default options are: + # { + # indent: ' ', # Two spaces + # space: ' ', # One space + # array_nl: "\n", # Newline + # object_nl: "\n" # Newline + # } + # + # Example: + # obj = {foo: [:bar, :baz], bat: {bam: 0, bad: 1}} + # json = JSON.pretty_generate(obj) + # puts json + # Output: + # { + # "foo": [ + # "bar", + # "baz" + # ], + # "bat": { + # "bam": 0, + # "bad": 1 + # } + # } + # + def pretty_generate(obj, opts = nil) + return opts.generate(obj) if State === opts + + options = PRETTY_GENERATE_OPTIONS + if opts - if opts.respond_to? :to_hash - opts = opts.to_hash - elsif opts.respond_to? :to_h - opts = opts.to_h - else - raise TypeError, "can't convert #{opts.class} into Hash" + unless opts.is_a?(Hash) + if opts.respond_to? :to_hash + opts = opts.to_hash + elsif opts.respond_to? :to_h + opts = opts.to_h + else + raise TypeError, "can't convert #{opts.class} into Hash" + end end - state.configure(opts) - end - state.generate(obj) - end - # :stopdoc: - # I want to deprecate these later, so I'll first be silent about them, and later delete them. - alias pretty_unparse pretty_generate - module_function :pretty_unparse - # :startdoc: + options = options.merge(opts) + end - class << self - # The global default options for the JSON.load method: - # :max_nesting: false - # :allow_nan: true - # :allow_blank: true - attr_accessor :load_default_options + State.generate(obj, options, nil) end - self.load_default_options = { - :max_nesting => false, - :allow_nan => true, - :allow_blank => true, - :create_additions => true, - } - - # Load a ruby data structure from a JSON _source_ and return it. A source can - # either be a string-like object, an IO-like object, or an object responding - # to the read method. If _proc_ was given, it will be called with any nested - # Ruby object as an argument recursively in depth first order. To modify the - # default options pass in the optional _options_ argument as well. - # - # BEWARE: This method is meant to serialise data from trusted user input, + + # :call-seq: + # JSON.unsafe_load(source, options = {}) -> object + # JSON.unsafe_load(source, proc = nil, options = {}) -> object + # + # Returns the Ruby objects created by parsing the given +source+. + # + # BEWARE: This method is meant to deserialise data from trusted user input, # like from your own database server or clients under your control, it could - # be dangerous to allow untrusted users to pass JSON sources into it. The - # default options for the parser can be changed via the load_default_options - # method. - # - # This method is part of the implementation of the load/dump interface of - # Marshal and YAML. - def load(source, proc = nil, options = {}) - opts = load_default_options.merge options - if source.respond_to? :to_str - source = source.to_str - elsif source.respond_to? :to_io - source = source.to_io.read - elsif source.respond_to?(:read) - source = source.read + # be dangerous to allow untrusted users to pass JSON sources into it. + # + # - Argument +source+ must be, or be convertible to, a \String: + # - If +source+ responds to instance method +to_str+, + # source.to_str becomes the source. + # - If +source+ responds to instance method +to_io+, + # source.to_io.read becomes the source. + # - If +source+ responds to instance method +read+, + # source.read becomes the source. + # - If both of the following are true, source becomes the \String 'null': + # - Option +allow_blank+ specifies a truthy value. + # - The source, as defined above, is +nil+ or the empty \String ''. + # - Otherwise, +source+ remains the source. + # - Argument +proc+, if given, must be a \Proc that accepts one argument. + # It will be called recursively with each result (depth-first order). + # See details below. + # - Argument +opts+, if given, contains a \Hash of options for the parsing. + # See {Parsing Options}[#module-JSON-label-Parsing+Options]. + # + # --- + # + # When no +proc+ is given, modifies +source+ as above and returns the result of + # parse(source, opts); see #parse. + # + # Source for following examples: + # source = <<~JSON + # { + # "name": "Dave", + # "age" :40, + # "hats": [ + # "Cattleman's", + # "Panama", + # "Tophat" + # ] + # } + # JSON + # + # Load a \String: + # ruby = JSON.unsafe_load(source) + # ruby # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # Load an \IO object: + # require 'stringio' + # object = JSON.unsafe_load(StringIO.new(source)) + # object # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # Load a \File object: + # path = 't.json' + # File.write(path, source) + # File.open(path) do |file| + # JSON.unsafe_load(file) + # end # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # --- + # + # When +proc+ is given: + # - Modifies +source+ as above. + # - Gets the +result+ from calling parse(source, opts). + # - Recursively calls proc(result). + # - Returns the final result. + # + # Example: + # require 'json' + # + # # Some classes for the example. + # class Base + # def initialize(attributes) + # @attributes = attributes + # end + # end + # class User < Base; end + # class Account < Base; end + # class Admin < Base; end + # # The JSON source. + # json = <<-EOF + # { + # "users": [ + # {"type": "User", "username": "jane", "email": "jane@example.com"}, + # {"type": "User", "username": "john", "email": "john@example.com"} + # ], + # "accounts": [ + # {"account": {"type": "Account", "paid": true, "account_id": "1234"}}, + # {"account": {"type": "Account", "paid": false, "account_id": "1235"}} + # ], + # "admins": {"type": "Admin", "password": "0wn3d"} + # } + # EOF + # # Deserializer method. + # def deserialize_obj(obj, safe_types = %w(User Account Admin)) + # type = obj.is_a?(Hash) && obj["type"] + # safe_types.include?(type) ? Object.const_get(type).new(obj) : obj + # end + # # Call to JSON.unsafe_load + # ruby = JSON.unsafe_load(json, proc {|obj| + # case obj + # when Hash + # obj.each {|k, v| obj[k] = deserialize_obj v } + # when Array + # obj.map! {|v| deserialize_obj v } + # end + # obj + # }) + # pp ruby + # Output: + # {"users"=> + # [#"User", "username"=>"jane", "email"=>"jane@example.com"}>, + # #"User", "username"=>"john", "email"=>"john@example.com"}>], + # "accounts"=> + # [{"account"=> + # #"Account", "paid"=>true, "account_id"=>"1234"}>}, + # {"account"=> + # #"Account", "paid"=>false, "account_id"=>"1235"}>}], + # "admins"=> + # #"Admin", "password"=>"0wn3d"}>} + # + def unsafe_load(source, proc = nil, **options) + load(source, proc, max_nesting: false, **options) + end + + # :call-seq: + # JSON.load(source, options = {}) -> object + # JSON.load(source, proc = nil, options = {}) -> object + # + # Returns the Ruby objects created by parsing the given +source+. + # + # - Argument +source+ must be, or be convertible to, a \String: + # - If +source+ responds to instance method +to_str+, + # source.to_str becomes the source. + # - If +source+ responds to instance method +to_io+, + # source.to_io.read becomes the source. + # - If +source+ responds to instance method +read+, + # source.read becomes the source. + # - If both of the following are true, source becomes the \String 'null': + # - Option +allow_blank+ specifies a truthy value. + # - The source, as defined above, is +nil+ or the empty \String ''. + # - Otherwise, +source+ remains the source. + # - Argument +proc+, if given, must be a \Proc that accepts one argument. + # It will be called recursively with each result (depth-first order). + # See details below. + # - Argument +opts+, if given, contains a \Hash of options for the parsing. + # See {Parsing Options}[#module-JSON-label-Parsing+Options]. + # + # --- + # + # When no +proc+ is given, modifies +source+ as above and returns the result of + # parse(source, opts); see #parse. + # + # Source for following examples: + # source = <<~JSON + # { + # "name": "Dave", + # "age" :40, + # "hats": [ + # "Cattleman's", + # "Panama", + # "Tophat" + # ] + # } + # JSON + # + # Load a \String: + # ruby = JSON.load(source) + # ruby # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # Load an \IO object: + # require 'stringio' + # object = JSON.load(StringIO.new(source)) + # object # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # Load a \File object: + # path = 't.json' + # File.write(path, source) + # File.open(path) do |file| + # JSON.load(file) + # end # => {"name"=>"Dave", "age"=>40, "hats"=>["Cattleman's", "Panama", "Tophat"]} + # + # --- + # + # When +proc+ is given: + # - Modifies +source+ as above. + # - Gets the +result+ from calling parse(source, opts). + # - Recursively calls proc(result). + # - Returns the final result. + # + # Example: + # require 'json' + # + # # Some classes for the example. + # class Base + # def initialize(attributes) + # @attributes = attributes + # end + # end + # class User < Base; end + # class Account < Base; end + # class Admin < Base; end + # # The JSON source. + # json = <<-EOF + # { + # "users": [ + # {"type": "User", "username": "jane", "email": "jane@example.com"}, + # {"type": "User", "username": "john", "email": "john@example.com"} + # ], + # "accounts": [ + # {"account": {"type": "Account", "paid": true, "account_id": "1234"}}, + # {"account": {"type": "Account", "paid": false, "account_id": "1235"}} + # ], + # "admins": {"type": "Admin", "password": "0wn3d"} + # } + # EOF + # # Deserializer method. + # def deserialize_obj(obj, safe_types = %w(User Account Admin)) + # type = obj.is_a?(Hash) && obj["type"] + # safe_types.include?(type) ? Object.const_get(type).new(obj) : obj + # end + # # Call to JSON.load + # ruby = JSON.load(json, proc {|obj| + # case obj + # when Hash + # obj.each {|k, v| obj[k] = deserialize_obj v } + # when Array + # obj.map! {|v| deserialize_obj v } + # end + # obj + # }) + # pp ruby + # Output: + # {"users"=> + # [#"User", "username"=>"jane", "email"=>"jane@example.com"}>, + # #"User", "username"=>"john", "email"=>"john@example.com"}>], + # "accounts"=> + # [{"account"=> + # #"Account", "paid"=>true, "account_id"=>"1234"}>}, + # {"account"=> + # #"Account", "paid"=>false, "account_id"=>"1235"}>}], + # "admins"=> + # #"Admin", "password"=>"0wn3d"}>} + # + def load(source, proc = nil, allow_blank: true, **options) + unless source.is_a?(String) + if source.respond_to? :to_str + source = source.to_str + elsif source.respond_to? :read + source = source.read + elsif source.respond_to? :to_io + source = source.to_io.read + end end - if opts[:allow_blank] && (source.nil? || source.empty?) + + if allow_blank && (source.nil? || (String === source && source.empty?)) source = 'null' end - result = parse(source, opts) - recurse_proc(result, &proc) if proc - result - end - # Recursively calls passed _Proc_ if the parsed data structure is an _Array_ or _Hash_ - def recurse_proc(result, &proc) - case result - when Array - result.each { |x| recurse_proc x, &proc } - proc.call result - when Hash - result.each { |x, y| recurse_proc x, &proc; recurse_proc y, &proc } - proc.call result + if proc + parse(source, allow_nan: true, on_load: proc.to_proc, **options) else - proc.call result + parse(source, allow_nan: true, **options) end end - alias restore load - module_function :restore - - class << self - # The global default options for the JSON.dump method: - # :max_nesting: false - # :allow_nan: true - # :allow_blank: true - attr_accessor :dump_default_options - end - self.dump_default_options = { - :max_nesting => false, - :allow_nan => true, - } - - # Dumps _obj_ as a JSON string, i.e. calls generate on the object and returns - # the result. - # - # If anIO (an IO-like object or an object that responds to the write method) - # was given, the resulting JSON is written to it. - # - # If the number of nested arrays or objects exceeds _limit_, an ArgumentError - # exception is raised. This argument is similar (but not exactly the - # same!) to the _limit_ argument in Marshal.dump. - # - # The default options for the generator can be changed via the - # dump_default_options method. - # - # This method is part of the implementation of the load/dump interface of - # Marshal and YAML. - def dump(obj, anIO = nil, limit = nil) - if anIO and limit.nil? - anIO = anIO.to_io if anIO.respond_to?(:to_io) - unless anIO.respond_to?(:write) - limit = anIO - anIO = nil + # :call-seq: + # JSON.dump(obj, io = nil, _deprecated_limit = nil, options = nil) + # + # Dumps +obj+ as a \JSON string, i.e. calls generate on the object and returns the result. + # + # - Argument +io+, if given, should respond to method +write+; + # the \JSON \String is written to +io+, and +io+ is returned. + # If +io+ is not given, the \JSON \String is returned. + # - Argument +_deprecated_limit+ is deprecated, pass the +:max_nesting+ option instead. + # --- + # + # When argument +io+ is not given, returns the \JSON \String generated from +obj+: + # obj = {foo: [0, 1], bar: {baz: 2, bat: 3}, bam: :bad} + # json = JSON.dump(obj) + # json # => "{\"foo\":[0,1],\"bar\":{\"baz\":2,\"bat\":3},\"bam\":\"bad\"}" + # + # When argument +io+ is given, writes the \JSON \String to +io+ and returns +io+: + # path = 't.json' + # File.open(path, 'w') do |file| + # JSON.dump(obj, file) + # end # => # + # puts File.read(path) + # Output: + # {"foo":[0,1],"bar":{"baz":2,"bat":3},"bam":"bad"} + def dump(obj, anIO = nil, _deprecated_limit = nil, kwargs = nil) + if kwargs.nil? + if _deprecated_limit.nil? + if anIO.is_a?(Hash) + kwargs = anIO + anIO = nil + end + elsif _deprecated_limit.is_a?(Hash) + kwargs = _deprecated_limit + _deprecated_limit = nil end end - opts = JSON.dump_default_options - opts = opts.merge(:max_nesting => limit) if limit - result = generate(obj, opts) - if anIO - anIO.write result - anIO - else - result + + unless anIO.nil? + if anIO.respond_to?(:to_io) + anIO = anIO.to_io + elsif _deprecated_limit.nil? && !anIO.respond_to?(:write) + anIO, _deprecated_limit = nil, anIO + end end - rescue JSON::NestingError - raise ArgumentError, "exceed depth limit" - end - # Encodes string using Ruby's _String.encode_ - def self.iconv(to, from, string) - string.encode(to, from) + opts = { + allow_nan: !(kwargs && kwargs[:rfc8785]), + } + opts[:max_nesting] = _deprecated_limit if _deprecated_limit + opts.merge!(kwargs) if kwargs + + State.generate(obj, opts, anIO) end -end -module ::Kernel - private + # JSON::Coder holds a parser and generator configuration. + # + # module MyApp + # JSONC_CODER = JSON::Coder.new( + # allow_trailing_comma: true + # ) + # end + # + # MyApp::JSONC_CODER.load(document) + # + class Coder + PARSER_OPTIONS = %i( + max_nesting + allow_nan + allow_trailing_comma + allow_comments + allow_control_characters + allow_invalid_escape + symbolize_names + freeze + allow_duplicate_key + decimal_class + ).freeze + private_constant :PARSER_OPTIONS + + EXCLUDED_GENERATOR_OPTIONS = (PARSER_OPTIONS - %i( + max_nesting + allow_nan + allow_duplicate_key + )).freeze + private_constant :EXCLUDED_GENERATOR_OPTIONS + + # :call-seq: + # JSON::Coder.new(**options, &block) + # + # Keyword arguments +options+, if given, are options for both parsing and generating. + # See {Parsing Options}[rdoc-ref:JSON@Parsing+Options], + # and {Generating Options}[rdoc-ref:JSON@Generating+Options]. + # + # For generation, the strict: true option is always set. When a Ruby object with no native \JSON counterpart is + # encountered, the block provided to the initialize method is invoked, and must return a Ruby object that has a native + # \JSON counterpart: + # + # module MyApp + # API_JSON_CODER = JSON::Coder.new do |object| + # case object + # when Time + # object.iso8601(3) + # else + # object # Unknown type, will raise + # end + # end + # end + # + # puts MyApp::API_JSON_CODER.dump(Time.now.utc) # => "2025-01-21T08:41:44.286Z" + # + # The conversion callback can also be passed as +as_json:+. If both are given, the block takes precedence. + # Passing +false+ or +nil+ for +strict:+ raises ArgumentError. + # + def initialize(object_class: nil, array_class: nil, on_load: nil, strict: true, **options, &as_json) + raise ArgumentError, "JSON::Coder requires strict mode" unless strict - # Outputs _objs_ to STDOUT as JSON strings in the shortest form, that is in - # one line. - def j(*objs) - objs.each do |obj| - puts JSON::generate(obj, :allow_nan => true, :max_nesting => false) + if object_class || array_class + on_load = ParserOptions.on_load(on_load, object_class, array_class) + end + parser_options = options.slice(*PARSER_OPTIONS) + parser_options[:on_load] = on_load if on_load + @parser_config = Ext::Parser::Config.new(parser_options).freeze + + generator_options = options.reject { |k, _| EXCLUDED_GENERATOR_OPTIONS.include?(k) } + @state = State.new( + **generator_options, + strict: true, + as_json: as_json || generator_options[:as_json], + ).freeze + end + + # call-seq: + # dump(object) -> String + # dump(object, io) -> io + # + # Serialize the given object into a \JSON document. + def dump(object, io = nil) + @state.generate(object, io) + end + alias_method :generate, :dump + + # call-seq: + # load(string) -> Object + # + # Parse the given \JSON document and return an equivalent Ruby object. + def load(source) + @parser_config.parse(source) + end + alias_method :parse, :load + + # call-seq: + # load(path) -> Object + # + # Parse the given \JSON document and return an equivalent Ruby object. + def load_file(path) + load(File.read(path, encoding: Encoding::UTF_8)) end - nil end - # Outputs _objs_ to STDOUT as JSON strings in a pretty format, with - # indentation and over many lines. - def jj(*objs) - objs.each do |obj| - puts JSON::pretty_generate(obj, :allow_nan => true, :max_nesting => false) + module GeneratorMethods + # call-seq: to_json(*) + # + # Converts this object into a JSON string. + # If this object doesn't directly maps to a JSON native type, + # first convert it to a string (calling #to_s), then converts + # it to a JSON string, and returns the result. + # This is a fallback, if no special method #to_json was defined for some object. + def to_json(state = nil, *) + obj = case self + when nil, false, true, Integer, Float, Array, Hash + self + else + "#{self}" + end + + if state.nil? + JSON::State._generate_no_fallback(obj, nil, nil) + else + JSON::State.from_state(state)._generate_no_fallback(obj) + end end - nil end +end + +module ::Kernel + private # If _object_ is string-like, parse the string and return the parsed result as # a Ruby data structure. Otherwise, generate a JSON text from the Ruby data @@ -435,22 +914,11 @@ def jj(*objs) # # The _opts_ argument is passed through to generate/parse respectively. See # generate and parse for their documentation. - def JSON(object, *args) - if object.respond_to? :to_str - JSON.parse(object.to_str, args.first) - else - JSON.generate(object, args.first) - end + def JSON(object, opts = nil) + JSON[object, opts] end end -# Extends any Class to include _json_creatable?_ method. -class ::Class - # Returns true if this class can be used to create an instance - # from a serialised JSON string. The class has to implement a class - # method _json_create_ that expects a hash as first parameter. The hash - # should include the required data. - def json_creatable? - respond_to?(:json_create) - end +class Object + include JSON::GeneratorMethods end diff --git a/lib/json/ext.rb b/lib/json/ext.rb index 7264a857f..75d0e4e3d 100644 --- a/lib/json/ext.rb +++ b/lib/json/ext.rb @@ -1,15 +1,195 @@ +# frozen_string_literal: true + require 'json/common' module JSON # This module holds all the modules/classes that implement JSON's # functionality as C extensions. module Ext + class Parser + class << self + def parse(...) + new(...).parse + end + alias_method :parse, :parse # Allow redefinition by extensions + end + + def initialize(source, opts = nil) + @source = source + @config = Config.new(opts) + end + + def source + @source.dup + end + + def parse + @config.parse(@source) + end + end + + class << self + if defined?(::Ractor) && Ractor.respond_to?(:shareable_lambda) + def shareable_lambda(block) # :nodoc: + Ractor.shareable_lambda(&block) + end + else + def shareable_lambda(block) # :nodoc: + block + end + end + + def valid_encoding?(str) # :nodoc: + str.ascii_only? || (str.encoding == Encoding::UTF_8 && str.valid_encoding?) + end + + def coerce_key(key, as_json) # :nodoc: + as_json_called = false + + unless String === key || Symbol === key + key = as_json.call(key, true) + as_json_called = true + end + + if Symbol === key + key = key.to_s + end + + unless String === key + raise GeneratorError.new("#{key.class} not allowed as object key in JSON", key) + end + + unless valid_encoding?(key) + if as_json_called + raise GeneratorError.new("source sequence is illegal/malformed utf-8", key) + end + + key = as_json.call(key, true) + unless String === key + raise GeneratorError.new("#{key.class} not allowed as object key in JSON", key) + end + + unless Ext.valid_encoding?(key) + raise GeneratorError.new("source sequence is illegal/malformed utf-8", key) + end + end + + key + end + + def on_duplicate_key(hash, as_json) + set = {} + hash.each_key do |key| + key = coerce_key(key, as_json) + if set[key] + raise GeneratorError.new("detected duplicate key #{key.inspect}", key) + else + set[key] = true + end + end + end + end + require 'json/ext/parser' - require 'json/ext/generator' - $DEBUG and warn "Using Ext extension for JSON." - JSON.parser = Parser - JSON.generator = Generator + Ext::Parser::Config = Ext::ParserConfig + JSON.parser = Ext::Parser + + generator = if RUBY_ENGINE == 'truffleruby' + require 'json/truffle_ruby/generator' + JSON::TruffleRuby::Generator + else + require 'json/ext/generator' + Generator + end + + # The default proc used when the +sort_keys+ generation option is +true+. + # It returns a new hash with the entries sorted by their keys. + generator::State.default_sort_keys_proc = shareable_lambda(->(hash) { + hash.sort.to_h + }) + + # Directly lifted from Gregg Kellogg's json-canonicalization + generator::State.rfc8785_number_formatter_proc = shareable_lambda(->(num) { + if Integer === num + if num > Float::MAX || num < -Float::MAX + raise GeneratorError.new("Integer out of range for RFC 8785", num) + end + num = num.to_f + end + if num.zero? + "0" + else + if num < 0 + num, sign = -num, '-' + end + native_rep = num.to_s + decimal, exponential = native_rep.split('e') + exp_val = exponential.to_i + exponential = exp_val > 0 ? ('+' + exp_val.to_s) : exp_val.to_s + + integral, fractional = decimal.split('.') + fractional = fractional.sub(/0+$/, '') # Remove trailing zeros + + if exp_val > 0 && exp_val < 21 + while exp_val > 0 + integral += fractional.to_s[0] || '0' + fractional = fractional.to_s[1..-1] + exp_val -= 1 + end + exponential = nil + elsif exp_val == 0 + exponential = nil + elsif exp_val < 0 && exp_val > -7 + # Small numbers are shown as 0.etc with e-6 as lower limit + fractional, integral, exponential = integral + fractional.to_s, '0', nil + fractional = ("0" * (-exp_val - 1)) + fractional + end + + fractional = nil if fractional.to_s.empty? + sign.to_s + integral + (fractional ? ".#{fractional}" : '') + (exponential ? "e#{exponential}" : '') + end + }) + + generator::State.rfc8785_sort_keys_proc = shareable_lambda(->(hash, as_json) { + converted = if as_json + hash.transform_keys { |k| Ext.coerce_key(k, as_json) } + else + hash.transform_keys(&:to_s) + end + + if converted.size < hash.size + Ext.on_duplicate_key(hash, as_json) + end + + converted.sort_by { |k,| k.encode(Encoding::UTF_16) }.to_h + }) + + JSON.generator = generator end - JSON_LOADED = true unless defined?(::JSON::JSON_LOADED) + if defined?(ResumableParser) # Not yet available on JRuby + class ResumableParser + # Returns whether the parser is entirely done: no unconsumed bytes in + # the buffer, no document under construction and no parsed value + # awaiting retrieval. + # + # The main use case is detecting a truncated stream once the input is + # exhausted: + # + # loop do + # begin + # parser << socket.readpartial(4096) + # rescue EOFError + # break + # end + # while parser.parse + # process(parser.value) + # end + # end + # warn "stream was truncated" unless parser.empty? + def empty? + eos? && !partial_value? && !value? + end + end + end end diff --git a/lib/json/ext/generator/state.rb b/lib/json/ext/generator/state.rb new file mode 100644 index 000000000..92c8fc480 --- /dev/null +++ b/lib/json/ext/generator/state.rb @@ -0,0 +1,73 @@ +# frozen_string_literal: true + +module JSON + module Ext + module Generator + class State + # call-seq: new(opts = {}) + # + # Instantiates a new State object, configured by _opts_. + # + # Argument +opts+, if given, contains a \Hash of options for the generation. + # See {Generating Options}[rdoc-ref:JSON@Generating+Options]. + def initialize(opts = nil) + if opts && !opts.empty? + configure(opts) + end + end + + # call-seq: configure(opts) + # + # Configure this State instance with the Hash _opts_, and return + # itself. + def configure(opts) + unless opts.is_a?(Hash) + if opts.respond_to?(:to_hash) + opts = opts.to_hash + elsif opts.respond_to?(:to_h) + opts = opts.to_h + else + raise TypeError, "can't convert #{opts.class} into Hash" + end + end + _configure(opts) + end + + alias_method :merge, :configure + + # call-seq: to_h + # + # Returns the configuration instance variables as a hash, that can be + # passed to the configure method. + def to_h + result = { + indent: indent, + space: space, + space_before: space_before, + object_nl: object_nl, + array_nl: array_nl, + as_json: as_json, + allow_nan: allow_nan?, + ascii_only: ascii_only?, + max_nesting: max_nesting, + script_safe: script_safe?, + strict: strict?, + depth: depth, + buffer_initial_length: buffer_initial_length, + sort_keys: sort_keys, + rfc8785: rfc8785?, + } + + allow_duplicate_key = allow_duplicate_key? + unless allow_duplicate_key.nil? + result[:allow_duplicate_key] = allow_duplicate_key + end + + result + end + + alias_method :to_hash, :to_h + end + end + end +end diff --git a/lib/json/generic_object.rb b/lib/json/generic_object.rb deleted file mode 100644 index 108309db2..000000000 --- a/lib/json/generic_object.rb +++ /dev/null @@ -1,71 +0,0 @@ -#frozen_string_literal: false -require 'ostruct' - -module JSON - class GenericObject < OpenStruct - class << self - alias [] new - - def json_creatable? - @json_creatable - end - - attr_writer :json_creatable - - def json_create(data) - data = data.dup - data.delete JSON.create_id - self[data] - end - - def from_hash(object) - case - when object.respond_to?(:to_hash) - result = new - object.to_hash.each do |key, value| - result[key] = from_hash(value) - end - result - when object.respond_to?(:to_ary) - object.to_ary.map { |a| from_hash(a) } - else - object - end - end - - def load(source, proc = nil, opts = {}) - result = ::JSON.load(source, proc, opts.merge(:object_class => self)) - result.nil? ? new : result - end - - def dump(obj, *args) - ::JSON.dump(obj, *args) - end - end - self.json_creatable = false - - def to_hash - table - end - - def [](name) - __send__(name) - end unless method_defined?(:[]) - - def []=(name, value) - __send__("#{name}=", value) - end unless method_defined?(:[]=) - - def |(other) - self.class[other.to_hash.merge(to_hash)] - end - - def as_json(*) - { JSON.create_id => self.class.name }.merge to_hash - end - - def to_json(*a) - as_json.to_json(*a) - end - end -end diff --git a/lib/json/pure.rb b/lib/json/pure.rb deleted file mode 100644 index 53178b360..000000000 --- a/lib/json/pure.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'json/common' - -module JSON - # This module holds all the modules/classes that implement JSON's - # functionality in pure ruby. - module Pure - require 'json/pure/parser' - require 'json/pure/generator' - $DEBUG and warn "Using Pure library for JSON." - JSON.parser = Parser - JSON.generator = Generator - end - - JSON_LOADED = true unless defined?(::JSON::JSON_LOADED) -end diff --git a/lib/json/pure/generator.rb b/lib/json/pure/generator.rb deleted file mode 100644 index ccb6fe422..000000000 --- a/lib/json/pure/generator.rb +++ /dev/null @@ -1,458 +0,0 @@ -#frozen_string_literal: false -module JSON - MAP = { - "\x0" => '\u0000', - "\x1" => '\u0001', - "\x2" => '\u0002', - "\x3" => '\u0003', - "\x4" => '\u0004', - "\x5" => '\u0005', - "\x6" => '\u0006', - "\x7" => '\u0007', - "\b" => '\b', - "\t" => '\t', - "\n" => '\n', - "\xb" => '\u000b', - "\f" => '\f', - "\r" => '\r', - "\xe" => '\u000e', - "\xf" => '\u000f', - "\x10" => '\u0010', - "\x11" => '\u0011', - "\x12" => '\u0012', - "\x13" => '\u0013', - "\x14" => '\u0014', - "\x15" => '\u0015', - "\x16" => '\u0016', - "\x17" => '\u0017', - "\x18" => '\u0018', - "\x19" => '\u0019', - "\x1a" => '\u001a', - "\x1b" => '\u001b', - "\x1c" => '\u001c', - "\x1d" => '\u001d', - "\x1e" => '\u001e', - "\x1f" => '\u001f', - '"' => '\"', - '\\' => '\\\\', - } # :nodoc: - - # Convert a UTF8 encoded Ruby string _string_ to a JSON string, encoded with - # UTF16 big endian characters as \u????, and return it. - def utf8_to_json(string) # :nodoc: - string = string.dup - string.force_encoding(::Encoding::ASCII_8BIT) - string.gsub!(/["\\\x0-\x1f]/) { MAP[$&] } - string.force_encoding(::Encoding::UTF_8) - string - end - - def utf8_to_json_ascii(string) # :nodoc: - string = string.dup - string.force_encoding(::Encoding::ASCII_8BIT) - string.gsub!(/["\\\x0-\x1f]/n) { MAP[$&] } - string.gsub!(/( - (?: - [\xc2-\xdf][\x80-\xbf] | - [\xe0-\xef][\x80-\xbf]{2} | - [\xf0-\xf4][\x80-\xbf]{3} - )+ | - [\x80-\xc1\xf5-\xff] # invalid - )/nx) { |c| - c.size == 1 and raise GeneratorError, "invalid utf8 byte: '#{c}'" - s = JSON.iconv('utf-16be', 'utf-8', c).unpack('H*')[0] - s.force_encoding(::Encoding::ASCII_8BIT) - s.gsub!(/.{4}/n, '\\\\u\&') - s.force_encoding(::Encoding::UTF_8) - } - string.force_encoding(::Encoding::UTF_8) - string - rescue => e - raise GeneratorError.wrap(e) - end - - def valid_utf8?(string) - encoding = string.encoding - (encoding == Encoding::UTF_8 || encoding == Encoding::ASCII) && - string.valid_encoding? - end - module_function :utf8_to_json, :utf8_to_json_ascii, :valid_utf8? - - module Pure - module Generator - # This class is used to create State instances, that are use to hold data - # while generating a JSON text from a Ruby data structure. - class State - # Creates a State object from _opts_, which ought to be Hash to create - # a new State instance configured by _opts_, something else to create - # an unconfigured instance. If _opts_ is a State object, it is just - # returned. - def self.from_state(opts) - case - when self === opts - opts - when opts.respond_to?(:to_hash) - new(opts.to_hash) - when opts.respond_to?(:to_h) - new(opts.to_h) - else - SAFE_STATE_PROTOTYPE.dup - end - end - - # Instantiates a new State object, configured by _opts_. - # - # _opts_ can have the following keys: - # - # * *indent*: a string used to indent levels (default: ''), - # * *space*: a string that is put after, a : or , delimiter (default: ''), - # * *space_before*: a string that is put before a : pair delimiter (default: ''), - # * *object_nl*: a string that is put at the end of a JSON object (default: ''), - # * *array_nl*: a string that is put at the end of a JSON array (default: ''), - # * *check_circular*: is deprecated now, use the :max_nesting option instead, - # * *max_nesting*: sets the maximum level of data structure nesting in - # the generated JSON, max_nesting = 0 if no maximum should be checked. - # * *allow_nan*: true if NaN, Infinity, and -Infinity should be - # generated, otherwise an exception is thrown, if these values are - # encountered. This options defaults to false. - def initialize(opts = {}) - @indent = '' - @space = '' - @space_before = '' - @object_nl = '' - @array_nl = '' - @allow_nan = false - @ascii_only = false - @buffer_initial_length = 1024 - configure opts - end - - # This string is used to indent levels in the JSON text. - attr_accessor :indent - - # This string is used to insert a space between the tokens in a JSON - # string. - attr_accessor :space - - # This string is used to insert a space before the ':' in JSON objects. - attr_accessor :space_before - - # This string is put at the end of a line that holds a JSON object (or - # Hash). - attr_accessor :object_nl - - # This string is put at the end of a line that holds a JSON array. - attr_accessor :array_nl - - # This integer returns the maximum level of data structure nesting in - # the generated JSON, max_nesting = 0 if no maximum is checked. - attr_accessor :max_nesting - - # :stopdoc: - attr_reader :buffer_initial_length - - def buffer_initial_length=(length) - if length > 0 - @buffer_initial_length = length - end - end - # :startdoc: - - # This integer returns the current depth data structure nesting in the - # generated JSON. - attr_accessor :depth - - def check_max_nesting # :nodoc: - return if @max_nesting.zero? - current_nesting = depth + 1 - current_nesting > @max_nesting and - raise NestingError, "nesting of #{current_nesting} is too deep" - end - - # Returns true, if circular data structures are checked, - # otherwise returns false. - def check_circular? - !@max_nesting.zero? - end - - # Returns true if NaN, Infinity, and -Infinity should be considered as - # valid JSON and output. - def allow_nan? - @allow_nan - end - - # Returns true, if only ASCII characters should be generated. Otherwise - # returns false. - def ascii_only? - @ascii_only - end - - # Configure this State instance with the Hash _opts_, and return - # itself. - def configure(opts) - if opts.respond_to?(:to_hash) - opts = opts.to_hash - elsif opts.respond_to?(:to_h) - opts = opts.to_h - else - raise TypeError, "can't convert #{opts.class} into Hash" - end - for key, value in opts - instance_variable_set "@#{key}", value - end - @indent = opts[:indent] if opts.key?(:indent) - @space = opts[:space] if opts.key?(:space) - @space_before = opts[:space_before] if opts.key?(:space_before) - @object_nl = opts[:object_nl] if opts.key?(:object_nl) - @array_nl = opts[:array_nl] if opts.key?(:array_nl) - @allow_nan = !!opts[:allow_nan] if opts.key?(:allow_nan) - @ascii_only = opts[:ascii_only] if opts.key?(:ascii_only) - @depth = opts[:depth] || 0 - @buffer_initial_length ||= opts[:buffer_initial_length] - - if !opts.key?(:max_nesting) # defaults to 100 - @max_nesting = 100 - elsif opts[:max_nesting] - @max_nesting = opts[:max_nesting] - else - @max_nesting = 0 - end - self - end - alias merge configure - - # Returns the configuration instance variables as a hash, that can be - # passed to the configure method. - def to_h - result = {} - for iv in instance_variables - iv = iv.to_s[1..-1] - result[iv.to_sym] = self[iv] - end - result - end - - alias to_hash to_h - - # Generates a valid JSON document from object +obj+ and - # returns the result. If no valid JSON document can be - # created this method raises a - # GeneratorError exception. - def generate(obj) - result = obj.to_json(self) - JSON.valid_utf8?(result) or raise GeneratorError, - "source sequence #{result.inspect} is illegal/malformed utf-8" - result - end - - # Return the value returned by method +name+. - def [](name) - if respond_to?(name) - __send__(name) - else - instance_variable_get("@#{name}") - end - end - - def []=(name, value) - if respond_to?(name_writer = "#{name}=") - __send__ name_writer, value - else - instance_variable_set "@#{name}", value - end - end - end - - module GeneratorMethods - module Object - # Converts this object to a string (calling #to_s), converts - # it to a JSON string, and returns the result. This is a fallback, if no - # special method #to_json was defined for some object. - def to_json(*) to_s.to_json end - end - - module Hash - # Returns a JSON string containing a JSON object, that is unparsed from - # this Hash instance. - # _state_ is a JSON::State object, that can also be used to configure the - # produced JSON string output further. - # _depth_ is used to find out nesting depth, to indent accordingly. - def to_json(state = nil, *) - state = State.from_state(state) - state.check_max_nesting - json_transform(state) - end - - private - - def json_shift(state) - state.object_nl.empty? or return '' - state.indent * state.depth - end - - def json_transform(state) - delim = ',' - delim << state.object_nl - result = '{' - result << state.object_nl - depth = state.depth += 1 - first = true - indent = !state.object_nl.empty? - each { |key,value| - result << delim unless first - result << state.indent * depth if indent - result << key.to_s.to_json(state) - result << state.space_before - result << ':' - result << state.space - if value.respond_to?(:to_json) - result << value.to_json(state) - else - result << %{"#{String(value)}"} - end - first = false - } - depth = state.depth -= 1 - result << state.object_nl - result << state.indent * depth if indent - result << '}' - result - end - end - - module Array - # Returns a JSON string containing a JSON array, that is unparsed from - # this Array instance. - # _state_ is a JSON::State object, that can also be used to configure the - # produced JSON string output further. - def to_json(state = nil, *) - state = State.from_state(state) - state.check_max_nesting - json_transform(state) - end - - private - - def json_transform(state) - delim = ',' - delim << state.array_nl - result = '[' - result << state.array_nl - depth = state.depth += 1 - first = true - indent = !state.array_nl.empty? - each { |value| - result << delim unless first - result << state.indent * depth if indent - if value.respond_to?(:to_json) - result << value.to_json(state) - else - result << %{"#{String(value)}"} - end - first = false - } - depth = state.depth -= 1 - result << state.array_nl - result << state.indent * depth if indent - result << ']' - end - end - - module Integer - # Returns a JSON string representation for this Integer number. - def to_json(*) to_s end - end - - module Float - # Returns a JSON string representation for this Float number. - def to_json(state = nil, *) - state = State.from_state(state) - case - when infinite? - if state.allow_nan? - to_s - else - raise GeneratorError, "#{self} not allowed in JSON" - end - when nan? - if state.allow_nan? - to_s - else - raise GeneratorError, "#{self} not allowed in JSON" - end - else - to_s - end - end - end - - module String - # This string should be encoded with UTF-8 A call to this method - # returns a JSON string encoded with UTF16 big endian characters as - # \u????. - def to_json(state = nil, *args) - state = State.from_state(state) - if encoding == ::Encoding::UTF_8 - string = self - else - string = encode(::Encoding::UTF_8) - end - if state.ascii_only? - '"' << JSON.utf8_to_json_ascii(string) << '"' - else - '"' << JSON.utf8_to_json(string) << '"' - end - end - - # Module that holds the extinding methods if, the String module is - # included. - module Extend - # Raw Strings are JSON Objects (the raw bytes are stored in an - # array for the key "raw"). The Ruby String can be created by this - # module method. - def json_create(o) - o['raw'].pack('C*') - end - end - - # Extends _modul_ with the String::Extend module. - def self.included(modul) - modul.extend Extend - end - - # This method creates a raw object hash, that can be nested into - # other data structures and will be unparsed as a raw string. This - # method should be used, if you want to convert raw strings to JSON - # instead of UTF-8 strings, e. g. binary data. - def to_json_raw_object - { - JSON.create_id => self.class.name, - 'raw' => self.unpack('C*'), - } - end - - # This method creates a JSON text from the result of - # a call to to_json_raw_object of this String. - def to_json_raw(*args) - to_json_raw_object.to_json(*args) - end - end - - module TrueClass - # Returns a JSON string for true: 'true'. - def to_json(*) 'true' end - end - - module FalseClass - # Returns a JSON string for false: 'false'. - def to_json(*) 'false' end - end - - module NilClass - # Returns a JSON string for nil: 'null'. - def to_json(*) 'null' end - end - end - end - end -end diff --git a/lib/json/pure/parser.rb b/lib/json/pure/parser.rb deleted file mode 100644 index 3a6343bc9..000000000 --- a/lib/json/pure/parser.rb +++ /dev/null @@ -1,311 +0,0 @@ -#frozen_string_literal: false -require 'strscan' - -module JSON - module Pure - # This class implements the JSON parser that is used to parse a JSON string - # into a Ruby data structure. - class Parser < StringScanner - STRING = /" ((?:[^\x0-\x1f"\\] | - # escaped special characters: - \\["\\\/bfnrt] | - \\u[0-9a-fA-F]{4} | - # match all but escaped special characters: - \\[\x20-\x21\x23-\x2e\x30-\x5b\x5d-\x61\x63-\x65\x67-\x6d\x6f-\x71\x73\x75-\xff])*) - "/nx - INTEGER = /(-?0|-?[1-9]\d*)/ - FLOAT = /(-? - (?:0|[1-9]\d*) - (?: - \.\d+(?i:e[+-]?\d+) | - \.\d+ | - (?i:e[+-]?\d+) - ) - )/x - NAN = /NaN/ - INFINITY = /Infinity/ - MINUS_INFINITY = /-Infinity/ - OBJECT_OPEN = /\{/ - OBJECT_CLOSE = /\}/ - ARRAY_OPEN = /\[/ - ARRAY_CLOSE = /\]/ - PAIR_DELIMITER = /:/ - COLLECTION_DELIMITER = /,/ - TRUE = /true/ - FALSE = /false/ - NULL = /null/ - IGNORE = %r( - (?: - //[^\n\r]*[\n\r]| # line comments - /\* # c-style comments - (?: - [^*/]| # normal chars - /[^*]| # slashes that do not start a nested comment - \*[^/]| # asterisks that do not end this comment - /(?=\*/) # single slash before this comment's end - )* - \*/ # the End of this comment - |[ \t\r\n]+ # whitespaces: space, horicontal tab, lf, cr - )+ - )mx - - UNPARSED = Object.new.freeze - - # Creates a new JSON::Pure::Parser instance for the string _source_. - # - # It will be configured by the _opts_ hash. _opts_ can have the following - # keys: - # * *max_nesting*: The maximum depth of nesting allowed in the parsed data - # structures. Disable depth checking with :max_nesting => false|nil|0, - # it defaults to 100. - # * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in - # defiance of RFC 7159 to be parsed by the Parser. This option defaults - # to false. - # * *symbolize_names*: If set to true, returns symbols for the names - # (keys) in a JSON object. Otherwise strings are returned, which is - # also the default. It's not possible to use this option in - # conjunction with the *create_additions* option. - # * *create_additions*: If set to true, the Parser creates - # additions when if a matching class and create_id was found. This - # option defaults to false. - # * *object_class*: Defaults to Hash - # * *array_class*: Defaults to Array - # * *decimal_class*: Specifies which class to use instead of the default - # (Float) when parsing decimal numbers. This class must accept a single - # string argument in its constructor. - def initialize(source, opts = {}) - opts ||= {} - source = convert_encoding source - super source - if !opts.key?(:max_nesting) # defaults to 100 - @max_nesting = 100 - elsif opts[:max_nesting] - @max_nesting = opts[:max_nesting] - else - @max_nesting = 0 - end - @allow_nan = !!opts[:allow_nan] - @symbolize_names = !!opts[:symbolize_names] - if opts.key?(:create_additions) - @create_additions = !!opts[:create_additions] - else - @create_additions = false - end - @symbolize_names && @create_additions and raise ArgumentError, - 'options :symbolize_names and :create_additions cannot be used '\ - 'in conjunction' - @create_id = @create_additions ? JSON.create_id : nil - @object_class = opts[:object_class] || Hash - @array_class = opts[:array_class] || Array - @decimal_class = opts[:decimal_class] - @match_string = opts[:match_string] - end - - alias source string - - def reset - super - @current_nesting = 0 - end - - # Parses the current JSON string _source_ and returns the - # complete data structure as a result. - def parse - reset - obj = nil - while !eos? && skip(IGNORE) do end - if eos? - raise ParserError, "source is not valid JSON!" - else - obj = parse_value - UNPARSED.equal?(obj) and raise ParserError, - "source is not valid JSON!" - end - while !eos? && skip(IGNORE) do end - eos? or raise ParserError, "source is not valid JSON!" - obj - end - - private - - def convert_encoding(source) - if source.respond_to?(:to_str) - source = source.to_str - else - raise TypeError, - "#{source.inspect} is not like a string" - end - if source.encoding != ::Encoding::ASCII_8BIT - source = source.encode(::Encoding::UTF_8) - source.force_encoding(::Encoding::ASCII_8BIT) - end - source - end - - # Unescape characters in strings. - UNESCAPE_MAP = Hash.new { |h, k| h[k] = k.chr } - UNESCAPE_MAP.update({ - ?" => '"', - ?\\ => '\\', - ?/ => '/', - ?b => "\b", - ?f => "\f", - ?n => "\n", - ?r => "\r", - ?t => "\t", - ?u => nil, - }) - - EMPTY_8BIT_STRING = '' - if ::String.method_defined?(:encode) - EMPTY_8BIT_STRING.force_encoding Encoding::ASCII_8BIT - end - - def parse_string - if scan(STRING) - return '' if self[1].empty? - string = self[1].gsub(%r((?:\\[\\bfnrt"/]|(?:\\u(?:[A-Fa-f\d]{4}))+|\\[\x20-\xff]))n) do |c| - if u = UNESCAPE_MAP[$&[1]] - u - else # \uXXXX - bytes = EMPTY_8BIT_STRING.dup - i = 0 - while c[6 * i] == ?\\ && c[6 * i + 1] == ?u - bytes << c[6 * i + 2, 2].to_i(16) << c[6 * i + 4, 2].to_i(16) - i += 1 - end - JSON.iconv('utf-8', 'utf-16be', bytes) - end - end - if string.respond_to?(:force_encoding) - string.force_encoding(::Encoding::UTF_8) - end - if @create_additions and @match_string - for (regexp, klass) in @match_string - klass.json_creatable? or next - string =~ regexp and return klass.json_create(string) - end - end - string - else - UNPARSED - end - rescue => e - raise ParserError, "Caught #{e.class} at '#{peek(20)}': #{e}" - end - - def parse_value - case - when scan(FLOAT) - @decimal_class && @decimal_class.new(self[1]) || Float(self[1]) - when scan(INTEGER) - Integer(self[1]) - when scan(TRUE) - true - when scan(FALSE) - false - when scan(NULL) - nil - when !UNPARSED.equal?(string = parse_string) - string - when scan(ARRAY_OPEN) - @current_nesting += 1 - ary = parse_array - @current_nesting -= 1 - ary - when scan(OBJECT_OPEN) - @current_nesting += 1 - obj = parse_object - @current_nesting -= 1 - obj - when @allow_nan && scan(NAN) - NaN - when @allow_nan && scan(INFINITY) - Infinity - when @allow_nan && scan(MINUS_INFINITY) - MinusInfinity - else - UNPARSED - end - end - - def parse_array - raise NestingError, "nesting of #@current_nesting is too deep" if - @max_nesting.nonzero? && @current_nesting > @max_nesting - result = @array_class.new - delim = false - until eos? - case - when !UNPARSED.equal?(value = parse_value) - delim = false - result << value - skip(IGNORE) - if scan(COLLECTION_DELIMITER) - delim = true - elsif match?(ARRAY_CLOSE) - ; - else - raise ParserError, "expected ',' or ']' in array at '#{peek(20)}'!" - end - when scan(ARRAY_CLOSE) - if delim - raise ParserError, "expected next element in array at '#{peek(20)}'!" - end - break - when skip(IGNORE) - ; - else - raise ParserError, "unexpected token in array at '#{peek(20)}'!" - end - end - result - end - - def parse_object - raise NestingError, "nesting of #@current_nesting is too deep" if - @max_nesting.nonzero? && @current_nesting > @max_nesting - result = @object_class.new - delim = false - until eos? - case - when !UNPARSED.equal?(string = parse_string) - skip(IGNORE) - unless scan(PAIR_DELIMITER) - raise ParserError, "expected ':' in object at '#{peek(20)}'!" - end - skip(IGNORE) - unless UNPARSED.equal?(value = parse_value) - result[@symbolize_names ? string.to_sym : string] = value - delim = false - skip(IGNORE) - if scan(COLLECTION_DELIMITER) - delim = true - elsif match?(OBJECT_CLOSE) - ; - else - raise ParserError, "expected ',' or '}' in object at '#{peek(20)}'!" - end - else - raise ParserError, "expected value in object at '#{peek(20)}'!" - end - when scan(OBJECT_CLOSE) - if delim - raise ParserError, "expected next name, value pair in object at '#{peek(20)}'!" - end - if @create_additions and klassname = result[@create_id] - klass = JSON.deep_const_get klassname - break unless klass and klass.json_creatable? - result = klass.json_create(result) - end - break - when skip(IGNORE) - ; - else - raise ParserError, "unexpected token in object at '#{peek(20)}'!" - end - end - result - end - end - end -end diff --git a/lib/json/truffle_ruby/generator.rb b/lib/json/truffle_ruby/generator.rb new file mode 100644 index 000000000..f73708f2d --- /dev/null +++ b/lib/json/truffle_ruby/generator.rb @@ -0,0 +1,836 @@ +# frozen_string_literal: true +module JSON + module TruffleRuby + module Generator + MAP = { + "\x0" => '\u0000', + "\x1" => '\u0001', + "\x2" => '\u0002', + "\x3" => '\u0003', + "\x4" => '\u0004', + "\x5" => '\u0005', + "\x6" => '\u0006', + "\x7" => '\u0007', + "\b" => '\b', + "\t" => '\t', + "\n" => '\n', + "\xb" => '\u000b', + "\f" => '\f', + "\r" => '\r', + "\xe" => '\u000e', + "\xf" => '\u000f', + "\x10" => '\u0010', + "\x11" => '\u0011', + "\x12" => '\u0012', + "\x13" => '\u0013', + "\x14" => '\u0014', + "\x15" => '\u0015', + "\x16" => '\u0016', + "\x17" => '\u0017', + "\x18" => '\u0018', + "\x19" => '\u0019', + "\x1a" => '\u001a', + "\x1b" => '\u001b', + "\x1c" => '\u001c', + "\x1d" => '\u001d', + "\x1e" => '\u001e', + "\x1f" => '\u001f', + '"' => '\"', + '\\' => '\\\\', + }.freeze # :nodoc: + + SCRIPT_SAFE_MAP = MAP.merge( + '/' => '\\/', + "\u2028" => '\u2028', + "\u2029" => '\u2029', + ).freeze + + SCRIPT_SAFE_ESCAPE_PATTERN = /[\/"\\\x0-\x1f\u2028-\u2029]/ + + def self.native_type?(value) # :nodoc: + (false == value || true == value || nil == value || String === value || Symbol === value || Array === value || Hash === value || Integer === value || Float === value || Fragment === value) + end + + def self.native_key?(key) # :nodoc: + (Symbol === key || String === key) + end + + def self.valid_encoding?(string) # :nodoc: + return false unless string.encoding == ::Encoding::UTF_8 || string.encoding == ::Encoding::US_ASCII + string.is_a?(Symbol) || string.valid_encoding? + end + + # Convert a UTF8 encoded Ruby string _string_ to a JSON string, encoded with + # UTF16 big endian characters as \u????, and return it. + def self.utf8_to_json(string, script_safe = false) # :nodoc: + if script_safe + if SCRIPT_SAFE_ESCAPE_PATTERN.match?(string) + string.gsub(SCRIPT_SAFE_ESCAPE_PATTERN, SCRIPT_SAFE_MAP) + else + string + end + else + if /["\\\x0-\x1f]/.match?(string) + string.gsub(/["\\\x0-\x1f]/, MAP) + else + string + end + end + end + + def self.utf8_to_json_ascii(original_string, script_safe = false) # :nodoc: + string = original_string.b + map = script_safe ? SCRIPT_SAFE_MAP : MAP + string.gsub!(/[\/"\\\x0-\x1f]/n) { map[$&] || $& } + string.gsub!(/( + (?: + [\xc2-\xdf][\x80-\xbf] | + [\xe0-\xef][\x80-\xbf]{2} | + [\xf0-\xf4][\x80-\xbf]{3} + )+ | + [\x80-\xc1\xf5-\xff] # invalid + )/nx) { |c| + c.size == 1 and raise GeneratorError.new("invalid utf8 byte: '#{c}'", original_string) + s = c.encode(::Encoding::UTF_16BE, ::Encoding::UTF_8).unpack('H*')[0] + s.force_encoding(::Encoding::BINARY) + s.gsub!(/.{4}/n, '\\\\u\&') + s.force_encoding(::Encoding::UTF_8) + } + string.force_encoding(::Encoding::UTF_8) + string + rescue => e + raise GeneratorError.new(e.message, original_string) + end + + def self.valid_utf8?(string) + encoding = string.encoding + (encoding == Encoding::UTF_8 || encoding == Encoding::ASCII) && + string.valid_encoding? + end + + # This class is used to create State instances, that are use to hold data + # while generating a JSON text from a Ruby data structure. + class State + singleton_class.attr_accessor :default_sort_keys_proc # :nodoc: + singleton_class.attr_accessor :rfc8785_number_formatter_proc # :nodoc: + singleton_class.attr_accessor :rfc8785_sort_keys_proc # :nodoc: + + def self.generate(obj, opts = nil, io = nil) + new(opts).generate(obj, io) + end + + # Creates a State object from _opts_, which ought to be Hash to create + # a new State instance configured by _opts_, something else to create + # an unconfigured instance. If _opts_ is a State object, it is just + # returned. + def self.from_state(opts) + if opts + case + when self === opts + return opts.validate_rfc8785 + when opts.respond_to?(:to_hash) + return new(opts.to_hash) + when opts.respond_to?(:to_h) + return new(opts.to_h) + end + end + new + end + + # Instantiates a new State object, configured by _opts_. + # + # _opts_ can have the following keys: + # + # * *indent*: a string used to indent levels (default: ''), + # * *space*: a string that is put after, a : or , delimiter (default: ''), + # * *space_before*: a string that is put before a : pair delimiter (default: ''), + # * *object_nl*: a string that is put at the end of a JSON object (default: ''), + # * *array_nl*: a string that is put at the end of a JSON array (default: ''), + # * *script_safe*: true if U+2028, U+2029 and forward slash (/) should be escaped + # as to make the JSON object safe to interpolate in a script tag (default: false). + # * *check_circular*: is deprecated now, use the :max_nesting option instead, + # * *max_nesting*: sets the maximum level of data structure nesting in + # the generated JSON, max_nesting = 0 if no maximum should be checked. + # * *allow_nan*: true if NaN, Infinity, and -Infinity should be + # generated, otherwise an exception is thrown, if these values are + # encountered. This options defaults to false. + def initialize(opts = nil) + @indent = '' + @space = '' + @space_before = '' + @object_nl = '' + @array_nl = '' + @allow_nan = false + @ascii_only = false + @as_json = false + @depth = 0 + @buffer_initial_length = 1024 + @script_safe = false + @strict = false + @max_nesting = 100 + @sort_keys = false + @allow_duplicate_key = false + @rfc8785 = false + _configure(**opts) if opts + end + + # This string is used to indent levels in the JSON text. + attr_accessor :indent + + # This string is used to insert a space between the tokens in a JSON + # string. + attr_accessor :space + + # This string is used to insert a space before the ':' in JSON objects. + attr_accessor :space_before + + # This string is put at the end of a line that holds a JSON object (or + # Hash). + attr_accessor :object_nl + + # This string is put at the end of a line that holds a JSON array. + attr_accessor :array_nl + + # This proc converts unsupported types into native JSON types. + attr_reader :as_json + + def as_json=(value) + raise FrozenError, "can't modify frozen #{self.class}: #{inspect}" if frozen? + value = value.to_proc if !(Proc === value) && value.respond_to?(:to_proc) + unless Proc === value + raise TypeError, "as_json must be a Proc" + end + @as_json = value + end + + # This integer returns the maximum level of data structure nesting in + # the generated JSON, max_nesting = 0 if no maximum is checked. + attr_accessor :max_nesting + + # If this attribute is set to true, forward slashes will be escaped in + # all json strings. + attr_accessor :script_safe + + # If this attribute is set to true, attempting to serialize types not + # supported by the JSON spec will raise a JSON::GeneratorError + attr_accessor :strict + + # Controls key sorting in the generated JSON. If set to +true+, object + # keys are sorted by key lexicographically. If set to a Proc, it + # receives the entire Hash and must return a Hash with its pairs in the + # desired order. + attr_reader :sort_keys + + # Controls whether RFC8785 (canonicalization) mode is enabled. Otherwise returns false. + attr_writer :rfc8785 + + def sort_keys=(value) # :nodoc: + type_error = false + @sort_keys = case value + when Proc + value + when true + State.default_sort_keys_proc + when nil, false + false + else + type_error = true + false + end + + if type_error + raise TypeError, "The `sort_keys` argument must be a boolean or a Proc" + end + + @sort_keys + end + + # :stopdoc: + attr_reader :buffer_initial_length + + def buffer_initial_length=(length) + if length > 0 + @buffer_initial_length = length + end + end + # :startdoc: + + # This integer returns the current depth data structure nesting in the + # generated JSON. + attr_reader :depth + + def depth=(depth) + if depth.negative? + raise ArgumentError, "depth must be >= 0 (got #{depth})" + end + @depth = depth + end + + def check_max_nesting # :nodoc: + return if @max_nesting.zero? + current_nesting = depth + 1 + current_nesting > @max_nesting and + raise NestingError, "nesting of #{current_nesting} is too deep. Did you try to serialize objects with circular references?" + end + + # Returns true, if circular data structures are checked, + # otherwise returns false. + def check_circular? + !@max_nesting.zero? + end + + # Returns true if NaN, Infinity, and -Infinity should be considered as + # valid JSON and output. + def allow_nan? + @allow_nan + end + + # Returns true, if only ASCII characters should be generated. Otherwise + # returns false. + def ascii_only? + @ascii_only + end + + # Returns true, if forward slashes are escaped. Otherwise returns false. + def script_safe? + @script_safe + end + + # Returns true, if strict mode is enabled. Otherwise returns false. + # Strict mode only allow serializing JSON native types: Hash, Array, + # String, Integer, Float, true, false and nil. + def strict? + @strict + end + + # Returns true, if RFC8785 (canonicalization) mode is enabled. Otherwise returns false. + def rfc8785? + @rfc8785 + end + + def validate_rfc8785 # :nodoc: + if @rfc8785 + option = if !@indent.empty? then :indent + elsif !@space.empty? then :space + elsif !@space_before.empty? then :space_before + elsif !@object_nl.empty? then :object_nl + elsif !@array_nl.empty? then :array_nl + elsif @ascii_only then :ascii_only + elsif @script_safe then :script_safe + elsif @allow_nan then :allow_nan + end + raise ArgumentError, "#{option} cannot be used with rfc8785" if option + end + self + end + + # Configure this State instance with the Hash _opts_, and return + # itself. + def configure(options) + unless Hash == options + if options.respond_to?(:to_hash) + options = options.to_hash + elsif options.respond_to?(:to_h) + options = options.to_h + end + end + _configure(**options) + end + alias merge configure + + # Defaults are the current values so that #configure only writes what it was given. + private def _configure( + indent: @indent, space: @space, space_before: @space_before, object_nl: @object_nl, + array_nl: @array_nl, allow_nan: @allow_nan, as_json: @as_json, ascii_only: @ascii_only, + sort_keys: @sort_keys, depth: @depth, buffer_initial_length: @buffer_initial_length, + allow_duplicate_key: @allow_duplicate_key, script_safe: @script_safe, strict: @strict, + max_nesting: @max_nesting, rfc8785: @rfc8785 + ) + if depth.negative? + raise ArgumentError, "depth must be >= 0 (got #{depth})" + end + + if max_nesting && !(Integer === max_nesting) + raise TypeError, ":max_nesting must be `false` or an Integer, got: #{max_nesting.class}" + end + + @indent = indent || '' + @space = space || '' + @space_before = space_before || '' + @object_nl = object_nl || '' + @array_nl = array_nl || '' + @allow_nan = allow_nan || false + if as_json + self.as_json = as_json + else + @as_json = false + end + @ascii_only = ascii_only || false + self.sort_keys = sort_keys + @depth = depth + @buffer_initial_length = buffer_initial_length + @allow_duplicate_key = allow_duplicate_key + @script_safe = script_safe + @strict = strict + @max_nesting = max_nesting || 0 + self.rfc8785 = rfc8785 + + validate_rfc8785 + end + + def allow_duplicate_key? # :nodoc: + @allow_duplicate_key + end + + # Returns the configuration instance variables as a hash, that can be + # passed to the configure method. + def to_h + { + indent: @indent, + space: @space, + space_before: @space_before, + object_nl: @object_nl, + array_nl: @array_nl, + as_json: @as_json, + allow_nan: @allow_nan, + ascii_only: @ascii_only, + max_nesting: @max_nesting, + script_safe: @script_safe, + strict: @strict, + depth: @depth, + buffer_initial_length: @buffer_initial_length, + sort_keys: @sort_keys, + allow_duplicate_key: @allow_duplicate_key, + rfc8785: @rfc8785, + } + end + + alias to_hash to_h + + # Generates a valid JSON document from object +obj+ and + # returns the result. If no valid JSON document can be + # created this method raises a + # GeneratorError exception. + def generate(obj, anIO = nil) + return dup.generate(obj, anIO) if frozen? + + depth = @depth + validate_rfc8785 + if @indent.empty? and @space.empty? and @space_before.empty? and @object_nl.empty? and @array_nl.empty? and + !@ascii_only and !@script_safe and @max_nesting == 0 and (!@strict || Symbol === obj) and !@sort_keys + result = generate_json(obj, ''.dup) + else + result = obj.to_json(self) + end + + JSON::TruffleRuby::Generator.valid_utf8?(result) or raise GeneratorError.new( + "source sequence #{result.inspect} is illegal/malformed utf-8", + obj + ) + if anIO + anIO.write(result) + anIO + else + result + end + ensure + @depth = depth unless frozen? + end + + # Handles @allow_nan, @buffer_initial_length, other ivars must be the default value (see above) + private def generate_json(obj, buf) + case obj + when Hash + buf << '{' + first = true + key_type = nil + if @rfc8785 + obj = State.rfc8785_sort_keys_proc.call(obj, @strict && @as_json) + elsif @sort_keys + obj = @sort_keys.call(obj) + end + obj.each_pair do |k,v| + if first + if ::String == k.class || ::Symbol == k.class + key_type = k.class + else + JSON.send(:on_mixed_keys_hash, obj) + end + else + if key_type && !@allow_duplicate_key && key_type != k.class + key_type = nil # stop checking + JSON.send(:on_mixed_keys_hash, obj) + end + buf << ',' + end + + key_str = k.to_s + if key_str.class == String + fast_serialize_string(key_str, buf) + elsif key_str.is_a?(String) + generate_json(key_str, buf) + else + raise TypeError, "#{k.class}#to_s returns an instance of #{key_str.class}, expected a String" + end + + buf << ':' + generate_json(v, buf) + first = false + end + buf << '}' + when Array + buf << '[' + first = true + obj.each do |e| + buf << ',' unless first + generate_json(e, buf) + first = false + end + buf << ']' + when String + if obj.class == String + fast_serialize_string(obj, buf) + else + buf << obj.to_json(self) + end + when Integer + buf << (@rfc8785 ? State.rfc8785_number_formatter_proc.call(obj) : obj.to_s) + when Symbol + if @strict + fast_serialize_string(obj.name, buf) + else + buf << obj.to_json(self) + end + else + # Note: Float is handled this way since Float#to_s is slow anyway + buf << obj.to_json(self) + end + end + + # Assumes !@ascii_only, !@script_safe + private def fast_serialize_string(string, buf) # :nodoc: + buf << '"' + unless string.encoding == ::Encoding::UTF_8 + begin + string = string.encode(::Encoding::UTF_8) + rescue Encoding::UndefinedConversionError => error + raise GeneratorError.new(error.message, string) + end + end + raise GeneratorError.new("source sequence is illegal/malformed utf-8", string) unless string.valid_encoding? + + if /["\\\x0-\x1f]/.match?(string) + buf << string.gsub(/["\\\x0-\x1f]/, MAP) + else + buf << string + end + buf << '"' + end + end + + module GeneratorMethods + module Object + # Converts this object to a string (calling #to_s), converts + # it to a JSON string, and returns the result. This is a fallback, if no + # special method #to_json was defined for some object. + def to_json(state = nil, *) + state = State.from_state(state) if state + if state&.strict? + value = self + if state.strict? && !Generator.native_type?(value) + if state.as_json + value = state.as_json.call(value, false) + unless Generator.native_type?(value) + raise GeneratorError.new("#{value.class} returned by #{state.as_json} not allowed in JSON", value) + end + value.to_json(state) + else + raise GeneratorError.new("#{value.class} not allowed in JSON", value) + end + end + else + to_s.to_json + end + end + end + + module Hash + # Returns a JSON string containing a JSON object, that is unparsed from + # this Hash instance. + # _state_ is a JSON::State object, that can also be used to configure the + # produced JSON string output further. + # _depth_ is used to find out nesting depth, to indent accordingly. + def to_json(state = nil, *) + state = State.from_state(state) + depth = state.depth + begin + state.check_max_nesting + json_transform(state) + ensure + state.depth = depth + end + end + + private + + def json_transform(state) + depth = state.depth += 1 + + if empty? + state.depth -= 1 + return +'{}' + end + + delim = ",#{state.object_nl}" + result = "{#{state.object_nl}" + first = true + key_type = nil + indent = !state.object_nl.empty? + hash = self + + if state.rfc8785? + hash = State.rfc8785_sort_keys_proc.call(hash, state.strict? && state.as_json) + elsif state.sort_keys + hash = state.sort_keys.call(hash) + end + + hash.each { |key, value| + if first + if ::String == key.class || ::Symbol == key.class + key_type = key.class + else + JSON.send(:on_mixed_keys_hash, hash) + end + else + if key_type && !state.allow_duplicate_key? && key_type != key.class + key_type = nil # stop checking + JSON.send(:on_mixed_keys_hash, hash) + end + result << delim + end + result << state.indent * depth if indent + + if state.strict? + if state.as_json && (!Generator.native_key?(key) || !Generator.valid_encoding?(key)) + key = state.as_json.call(key, true) + end + + unless Generator.native_key?(key) + raise GeneratorError.new("#{key.class} not allowed as object key in JSON", key) + end + + unless Generator.valid_encoding?(key) + raise GeneratorError.new("source sequence is illegal/malformed utf-8", key) + end + end + + key_str = key.to_s + if key_str.is_a?(String) + key_json = key_str.to_json(state) + else + raise TypeError, "#{key.class}#to_s returns an instance of #{key_str.class}, expected a String" + end + + result = "#{result}#{key_json}#{state.space_before}:#{state.space}" + if state.strict? && !Generator.native_type?(value) + if state.as_json + value = state.as_json.call(value, false) + unless Generator.native_type?(value) + raise GeneratorError.new("#{value.class} returned by #{state.as_json} not allowed in JSON", value) + end + result << value.to_json(state) + state.depth = depth + else + raise GeneratorError.new("#{value.class} not allowed in JSON", value) + end + elsif value.respond_to?(:to_json) + result << value.to_json(state) + state.depth = depth + else + result << %{"#{String(value)}"} + end + first = false + } + depth -= 1 + unless first + result << state.object_nl + result << state.indent * depth if indent + end + result << '}' + result + end + end + + module Array + # Returns a JSON string containing a JSON array, that is unparsed from + # this Array instance. + # _state_ is a JSON::State object, that can also be used to configure the + # produced JSON string output further. + def to_json(state = nil, *) + state = State.from_state(state) + depth = state.depth + begin + state.check_max_nesting + json_transform(state) + ensure + state.depth = depth + end + end + + private + + def json_transform(state) + depth = state.depth += 1 + + if empty? + state.depth -= 1 + return +'[]' + end + + result = '['.dup + if state.array_nl.empty? + delim = "," + else + result << state.array_nl + delim = ",#{state.array_nl}" + end + + first = true + indent = !state.array_nl.empty? + each { |value| + result << delim unless first + result << state.indent * depth if indent + if state.strict? && !Generator.native_type?(value) + if state.as_json + value = state.as_json.call(value, false) + unless Generator.native_type?(value) + raise GeneratorError.new("#{value.class} returned by #{state.as_json} not allowed in JSON", value) + end + result << value.to_json(state) + else + raise GeneratorError.new("#{value.class} not allowed in JSON", value) + end + elsif value.respond_to?(:to_json) + result << value.to_json(state) + state.depth = depth + else + result << %{"#{String(value)}"} + end + first = false + } + depth -= 1 + result << state.array_nl + result << state.indent * depth if indent + result << ']' + end + end + + module Integer + # Returns a JSON string representation for this Integer number. + def to_json(state = nil, *) + if state && State.from_state(state).rfc8785? + State.rfc8785_number_formatter_proc.call(self) + else + to_s + end + end + end + + module Float + # Returns a JSON string representation for this Float number. + def to_json(state = nil, *args) + state = State.from_state(state) + + if infinite? || nan? + if state.allow_nan? + to_s + elsif state.strict? && state.as_json + casted_value = state.as_json.call(self, false) + + if casted_value.equal?(self) + raise GeneratorError.new("#{self} not allowed in JSON", self) + end + unless Generator.native_type?(casted_value) + raise GeneratorError.new("#{casted_value.class} returned by #{state.as_json} not allowed in JSON", casted_value) + end + + state.check_max_nesting + state.depth += 1 + result = casted_value.to_json(state, *args) + state.depth -= 1 + result + else + raise GeneratorError.new("#{self} not allowed in JSON", self) + end + elsif state.rfc8785? + State.rfc8785_number_formatter_proc.call(self) + else + to_s + end + end + end + + module Symbol + def to_json(state = nil, *args) + state = State.from_state(state) + if state.strict? + name.to_json(state, *args) + else + super + end + end + end + + module String + # This string should be encoded with UTF-8 A call to this method + # returns a JSON string encoded with UTF16 big endian characters as + # \u????. + def to_json(state = nil, *args) + state = State.from_state(state) + string = self + + if state.strict? && state.as_json + unless Generator.valid_encoding?(string) + string = state.as_json.call(string, false) + unless string.is_a?(::String) + return string.to_json(state, *args) + end + end + end + + if string.encoding == ::Encoding::UTF_8 + unless string.valid_encoding? + raise GeneratorError.new("source sequence is illegal/malformed utf-8", self) + end + else + string = string.encode(::Encoding::UTF_8) + end + + if state.ascii_only? + %("#{JSON::TruffleRuby::Generator.utf8_to_json_ascii(string, state.script_safe)}") + else + %("#{JSON::TruffleRuby::Generator.utf8_to_json(string, state.script_safe)}") + end + rescue Encoding::UndefinedConversionError => error + raise ::JSON::GeneratorError.new(error.message, self) + end + end + + module TrueClass + # Returns a JSON string for true: 'true'. + def to_json(*) +'true' end + end + + module FalseClass + # Returns a JSON string for false: 'false'. + def to_json(*) +'false' end + end + + module NilClass + # Returns a JSON string for nil: 'null'. + def to_json(*) +'null' end + end + end + end + end +end diff --git a/lib/json/version.rb b/lib/json/version.rb index 115eb5bb9..4d37baaa7 100644 --- a/lib/json/version.rb +++ b/lib/json/version.rb @@ -1,9 +1,5 @@ -# frozen_string_literal: false +# frozen_string_literal: true + module JSON - # JSON version - VERSION = '2.2.0' - VERSION_ARRAY = VERSION.split(/\./).map { |x| x.to_i } # :nodoc: - VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc: - VERSION_MINOR = VERSION_ARRAY[1] # :nodoc: - VERSION_BUILD = VERSION_ARRAY[2] # :nodoc: + VERSION = '3.1.0' end diff --git a/tests/fixtures/fail10.json b/test/json/fixtures/fail10.json similarity index 100% rename from tests/fixtures/fail10.json rename to test/json/fixtures/fail10.json diff --git a/tests/fixtures/fail11.json b/test/json/fixtures/fail11.json similarity index 100% rename from tests/fixtures/fail11.json rename to test/json/fixtures/fail11.json diff --git a/tests/fixtures/fail12.json b/test/json/fixtures/fail12.json similarity index 100% rename from tests/fixtures/fail12.json rename to test/json/fixtures/fail12.json diff --git a/tests/fixtures/fail13.json b/test/json/fixtures/fail13.json similarity index 100% rename from tests/fixtures/fail13.json rename to test/json/fixtures/fail13.json diff --git a/tests/fixtures/fail14.json b/test/json/fixtures/fail14.json similarity index 100% rename from tests/fixtures/fail14.json rename to test/json/fixtures/fail14.json diff --git a/tests/fixtures/pass15.json b/test/json/fixtures/fail15.json similarity index 100% rename from tests/fixtures/pass15.json rename to test/json/fixtures/fail15.json diff --git a/tests/fixtures/pass16.json b/test/json/fixtures/fail16.json similarity index 100% rename from tests/fixtures/pass16.json rename to test/json/fixtures/fail16.json diff --git a/tests/fixtures/pass17.json b/test/json/fixtures/fail17.json similarity index 100% rename from tests/fixtures/pass17.json rename to test/json/fixtures/fail17.json diff --git a/tests/fixtures/fail18.json b/test/json/fixtures/fail18.json similarity index 100% rename from tests/fixtures/fail18.json rename to test/json/fixtures/fail18.json diff --git a/tests/fixtures/fail19.json b/test/json/fixtures/fail19.json similarity index 100% rename from tests/fixtures/fail19.json rename to test/json/fixtures/fail19.json diff --git a/tests/fixtures/fail2.json b/test/json/fixtures/fail2.json similarity index 100% rename from tests/fixtures/fail2.json rename to test/json/fixtures/fail2.json diff --git a/tests/fixtures/fail20.json b/test/json/fixtures/fail20.json similarity index 100% rename from tests/fixtures/fail20.json rename to test/json/fixtures/fail20.json diff --git a/tests/fixtures/fail21.json b/test/json/fixtures/fail21.json similarity index 100% rename from tests/fixtures/fail21.json rename to test/json/fixtures/fail21.json diff --git a/tests/fixtures/fail22.json b/test/json/fixtures/fail22.json similarity index 100% rename from tests/fixtures/fail22.json rename to test/json/fixtures/fail22.json diff --git a/tests/fixtures/fail23.json b/test/json/fixtures/fail23.json similarity index 100% rename from tests/fixtures/fail23.json rename to test/json/fixtures/fail23.json diff --git a/tests/fixtures/fail24.json b/test/json/fixtures/fail24.json similarity index 100% rename from tests/fixtures/fail24.json rename to test/json/fixtures/fail24.json diff --git a/tests/fixtures/fail25.json b/test/json/fixtures/fail25.json similarity index 100% rename from tests/fixtures/fail25.json rename to test/json/fixtures/fail25.json diff --git a/tests/fixtures/pass26.json b/test/json/fixtures/fail26.json similarity index 100% rename from tests/fixtures/pass26.json rename to test/json/fixtures/fail26.json diff --git a/tests/fixtures/fail27.json b/test/json/fixtures/fail27.json similarity index 100% rename from tests/fixtures/fail27.json rename to test/json/fixtures/fail27.json diff --git a/tests/fixtures/fail28.json b/test/json/fixtures/fail28.json similarity index 100% rename from tests/fixtures/fail28.json rename to test/json/fixtures/fail28.json diff --git a/test/json/fixtures/fail29.json b/test/json/fixtures/fail29.json new file mode 100644 index 000000000..98232c64f --- /dev/null +++ b/test/json/fixtures/fail29.json @@ -0,0 +1 @@ +{ diff --git a/tests/fixtures/fail3.json b/test/json/fixtures/fail3.json similarity index 100% rename from tests/fixtures/fail3.json rename to test/json/fixtures/fail3.json diff --git a/test/json/fixtures/fail30.json b/test/json/fixtures/fail30.json new file mode 100644 index 000000000..558ed37d9 --- /dev/null +++ b/test/json/fixtures/fail30.json @@ -0,0 +1 @@ +[ diff --git a/test/json/fixtures/fail31.json b/test/json/fixtures/fail31.json new file mode 100644 index 000000000..70773e47f --- /dev/null +++ b/test/json/fixtures/fail31.json @@ -0,0 +1 @@ +[1, 2, 3, diff --git a/test/json/fixtures/fail32.json b/test/json/fixtures/fail32.json new file mode 100644 index 000000000..b18d550ca --- /dev/null +++ b/test/json/fixtures/fail32.json @@ -0,0 +1 @@ +{"foo": "bar" diff --git a/tests/fixtures/fail5.json b/test/json/fixtures/fail5.json similarity index 100% rename from tests/fixtures/fail5.json rename to test/json/fixtures/fail5.json diff --git a/tests/fixtures/fail6.json b/test/json/fixtures/fail6.json similarity index 100% rename from tests/fixtures/fail6.json rename to test/json/fixtures/fail6.json diff --git a/tests/fixtures/fail7.json b/test/json/fixtures/fail7.json similarity index 100% rename from tests/fixtures/fail7.json rename to test/json/fixtures/fail7.json diff --git a/tests/fixtures/fail8.json b/test/json/fixtures/fail8.json similarity index 100% rename from tests/fixtures/fail8.json rename to test/json/fixtures/fail8.json diff --git a/test/json/fixtures/minefield/i_number_double_huge_neg_exp.json b/test/json/fixtures/minefield/i_number_double_huge_neg_exp.json new file mode 100644 index 000000000..ae4c7b71f --- /dev/null +++ b/test/json/fixtures/minefield/i_number_double_huge_neg_exp.json @@ -0,0 +1 @@ +[123.456e-789] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_huge_exp.json b/test/json/fixtures/minefield/i_number_huge_exp.json new file mode 100644 index 000000000..9b5efa236 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_huge_exp.json @@ -0,0 +1 @@ +[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_neg_int_huge_exp.json b/test/json/fixtures/minefield/i_number_neg_int_huge_exp.json new file mode 100644 index 000000000..3abd58a5c --- /dev/null +++ b/test/json/fixtures/minefield/i_number_neg_int_huge_exp.json @@ -0,0 +1 @@ +[-1e+9999] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_pos_double_huge_exp.json b/test/json/fixtures/minefield/i_number_pos_double_huge_exp.json new file mode 100644 index 000000000..e10a7eb62 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_pos_double_huge_exp.json @@ -0,0 +1 @@ +[1.5e+9999] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_real_neg_overflow.json b/test/json/fixtures/minefield/i_number_real_neg_overflow.json new file mode 100644 index 000000000..3d628a994 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_real_neg_overflow.json @@ -0,0 +1 @@ +[-123123e100000] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_real_pos_overflow.json b/test/json/fixtures/minefield/i_number_real_pos_overflow.json new file mode 100644 index 000000000..54d7d3dcd --- /dev/null +++ b/test/json/fixtures/minefield/i_number_real_pos_overflow.json @@ -0,0 +1 @@ +[123123e100000] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_real_underflow.json b/test/json/fixtures/minefield/i_number_real_underflow.json new file mode 100644 index 000000000..c5236eb26 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_real_underflow.json @@ -0,0 +1 @@ +[123e-10000000] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_too_big_neg_int.json b/test/json/fixtures/minefield/i_number_too_big_neg_int.json new file mode 100644 index 000000000..dfa384619 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_too_big_neg_int.json @@ -0,0 +1 @@ +[-123123123123123123123123123123] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_too_big_pos_int.json b/test/json/fixtures/minefield/i_number_too_big_pos_int.json new file mode 100644 index 000000000..338a8c3c0 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_too_big_pos_int.json @@ -0,0 +1 @@ +[100000000000000000000] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_number_very_big_negative_int.json b/test/json/fixtures/minefield/i_number_very_big_negative_int.json new file mode 100644 index 000000000..e2d9738c2 --- /dev/null +++ b/test/json/fixtures/minefield/i_number_very_big_negative_int.json @@ -0,0 +1 @@ +[-237462374673276894279832749832423479823246327846] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_object_key_lone_2nd_surrogate.json b/test/json/fixtures/minefield/i_object_key_lone_2nd_surrogate.json new file mode 100644 index 000000000..5be7ebaf9 --- /dev/null +++ b/test/json/fixtures/minefield/i_object_key_lone_2nd_surrogate.json @@ -0,0 +1 @@ +{"\uDFAA":0} \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_1st_surrogate_but_2nd_missing.json b/test/json/fixtures/minefield/i_string_1st_surrogate_but_2nd_missing.json new file mode 100644 index 000000000..3b9e37c67 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_1st_surrogate_but_2nd_missing.json @@ -0,0 +1 @@ +["\uDADA"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_1st_valid_surrogate_2nd_invalid.json b/test/json/fixtures/minefield/i_string_1st_valid_surrogate_2nd_invalid.json new file mode 100644 index 000000000..487592832 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_1st_valid_surrogate_2nd_invalid.json @@ -0,0 +1 @@ +["\uD888\u1234"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_UTF-16LE_with_BOM.json b/test/json/fixtures/minefield/i_string_UTF-16LE_with_BOM.json new file mode 100644 index 000000000..2a79c0629 Binary files /dev/null and b/test/json/fixtures/minefield/i_string_UTF-16LE_with_BOM.json differ diff --git a/test/json/fixtures/minefield/i_string_UTF-8_invalid_sequence.json b/test/json/fixtures/minefield/i_string_UTF-8_invalid_sequence.json new file mode 100644 index 000000000..e2a968a15 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_UTF-8_invalid_sequence.json @@ -0,0 +1 @@ +["日шú"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_UTF8_surrogate_U+D800.json b/test/json/fixtures/minefield/i_string_UTF8_surrogate_U+D800.json new file mode 100644 index 000000000..916bff920 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_UTF8_surrogate_U+D800.json @@ -0,0 +1 @@ +["í €"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_incomplete_surrogate_and_escape_valid.json b/test/json/fixtures/minefield/i_string_incomplete_surrogate_and_escape_valid.json new file mode 100644 index 000000000..3cb11d229 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_incomplete_surrogate_and_escape_valid.json @@ -0,0 +1 @@ +["\uD800\n"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_incomplete_surrogate_pair.json b/test/json/fixtures/minefield/i_string_incomplete_surrogate_pair.json new file mode 100644 index 000000000..38ec23bb0 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_incomplete_surrogate_pair.json @@ -0,0 +1 @@ +["\uDd1ea"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_incomplete_surrogates_escape_valid.json b/test/json/fixtures/minefield/i_string_incomplete_surrogates_escape_valid.json new file mode 100644 index 000000000..c9cd6f6c3 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_incomplete_surrogates_escape_valid.json @@ -0,0 +1 @@ +["\uD800\uD800\n"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_invalid_lonely_surrogate.json b/test/json/fixtures/minefield/i_string_invalid_lonely_surrogate.json new file mode 100644 index 000000000..3abbd8d8d --- /dev/null +++ b/test/json/fixtures/minefield/i_string_invalid_lonely_surrogate.json @@ -0,0 +1 @@ +["\ud800"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_invalid_surrogate.json b/test/json/fixtures/minefield/i_string_invalid_surrogate.json new file mode 100644 index 000000000..ffddc04f5 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_invalid_surrogate.json @@ -0,0 +1 @@ +["\ud800abc"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_invalid_utf-8.json b/test/json/fixtures/minefield/i_string_invalid_utf-8.json new file mode 100644 index 000000000..8e45a7eca --- /dev/null +++ b/test/json/fixtures/minefield/i_string_invalid_utf-8.json @@ -0,0 +1 @@ +["ÿ"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_inverted_surrogates_U+1D11E.json b/test/json/fixtures/minefield/i_string_inverted_surrogates_U+1D11E.json new file mode 100644 index 000000000..0d5456cc3 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_inverted_surrogates_U+1D11E.json @@ -0,0 +1 @@ +["\uDd1e\uD834"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_iso_latin_1.json b/test/json/fixtures/minefield/i_string_iso_latin_1.json new file mode 100644 index 000000000..9389c9823 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_iso_latin_1.json @@ -0,0 +1 @@ +["é"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_lone_second_surrogate.json b/test/json/fixtures/minefield/i_string_lone_second_surrogate.json new file mode 100644 index 000000000..1dbd397f3 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_lone_second_surrogate.json @@ -0,0 +1 @@ +["\uDFAA"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_lone_utf8_continuation_byte.json b/test/json/fixtures/minefield/i_string_lone_utf8_continuation_byte.json new file mode 100644 index 000000000..729337c0a --- /dev/null +++ b/test/json/fixtures/minefield/i_string_lone_utf8_continuation_byte.json @@ -0,0 +1 @@ +["�"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_not_in_unicode_range.json b/test/json/fixtures/minefield/i_string_not_in_unicode_range.json new file mode 100644 index 000000000..df90a2916 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_not_in_unicode_range.json @@ -0,0 +1 @@ +["ô¿¿¿"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_overlong_sequence_2_bytes.json b/test/json/fixtures/minefield/i_string_overlong_sequence_2_bytes.json new file mode 100644 index 000000000..c8cee5e0a --- /dev/null +++ b/test/json/fixtures/minefield/i_string_overlong_sequence_2_bytes.json @@ -0,0 +1 @@ +["À¯"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes.json b/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes.json new file mode 100644 index 000000000..9a91da791 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes.json @@ -0,0 +1 @@ +["üƒ¿¿¿¿"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes_null.json b/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes_null.json new file mode 100644 index 000000000..d24fffdd9 --- /dev/null +++ b/test/json/fixtures/minefield/i_string_overlong_sequence_6_bytes_null.json @@ -0,0 +1 @@ +["ü€€€€€"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_truncated-utf-8.json b/test/json/fixtures/minefield/i_string_truncated-utf-8.json new file mode 100644 index 000000000..63c7777fb --- /dev/null +++ b/test/json/fixtures/minefield/i_string_truncated-utf-8.json @@ -0,0 +1 @@ +["àÿ"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_string_utf16BE_no_BOM.json b/test/json/fixtures/minefield/i_string_utf16BE_no_BOM.json new file mode 100644 index 000000000..57e5392ff Binary files /dev/null and b/test/json/fixtures/minefield/i_string_utf16BE_no_BOM.json differ diff --git a/test/json/fixtures/minefield/i_string_utf16LE_no_BOM.json b/test/json/fixtures/minefield/i_string_utf16LE_no_BOM.json new file mode 100644 index 000000000..c49c1b25d Binary files /dev/null and b/test/json/fixtures/minefield/i_string_utf16LE_no_BOM.json differ diff --git a/test/json/fixtures/minefield/i_structure_500_nested_arrays.json b/test/json/fixtures/minefield/i_structure_500_nested_arrays.json new file mode 100644 index 000000000..711840589 --- /dev/null +++ b/test/json/fixtures/minefield/i_structure_500_nested_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/test/json/fixtures/minefield/i_structure_UTF-8_BOM_empty_object.json b/test/json/fixtures/minefield/i_structure_UTF-8_BOM_empty_object.json new file mode 100644 index 000000000..22fdca1b2 --- /dev/null +++ b/test/json/fixtures/minefield/i_structure_UTF-8_BOM_empty_object.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_1_true_without_comma.json b/test/json/fixtures/minefield/n_array_1_true_without_comma.json new file mode 100644 index 000000000..c14e3f6b1 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_1_true_without_comma.json @@ -0,0 +1 @@ +[1 true] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_a_invalid_utf8.json b/test/json/fixtures/minefield/n_array_a_invalid_utf8.json new file mode 100644 index 000000000..38a86e2e6 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_a_invalid_utf8.json @@ -0,0 +1 @@ +[aå] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_colon_instead_of_comma.json b/test/json/fixtures/minefield/n_array_colon_instead_of_comma.json new file mode 100644 index 000000000..0d02ad448 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_colon_instead_of_comma.json @@ -0,0 +1 @@ +["": 1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_comma_after_close.json b/test/json/fixtures/minefield/n_array_comma_after_close.json new file mode 100644 index 000000000..2ccba8d95 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_comma_after_close.json @@ -0,0 +1 @@ +[""], \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_comma_and_number.json b/test/json/fixtures/minefield/n_array_comma_and_number.json new file mode 100644 index 000000000..d2c84e374 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_comma_and_number.json @@ -0,0 +1 @@ +[,1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_double_comma.json b/test/json/fixtures/minefield/n_array_double_comma.json new file mode 100644 index 000000000..0431712bc --- /dev/null +++ b/test/json/fixtures/minefield/n_array_double_comma.json @@ -0,0 +1 @@ +[1,,2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_double_extra_comma.json b/test/json/fixtures/minefield/n_array_double_extra_comma.json new file mode 100644 index 000000000..3f01d3129 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_double_extra_comma.json @@ -0,0 +1 @@ +["x",,] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_extra_close.json b/test/json/fixtures/minefield/n_array_extra_close.json new file mode 100644 index 000000000..c12f9fae1 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_extra_close.json @@ -0,0 +1 @@ +["x"]] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_extra_comma.json b/test/json/fixtures/minefield/n_array_extra_comma.json new file mode 100644 index 000000000..5f8ce18e4 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_extra_comma.json @@ -0,0 +1 @@ +["",] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_incomplete.json b/test/json/fixtures/minefield/n_array_incomplete.json new file mode 100644 index 000000000..cc65b0b51 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_incomplete.json @@ -0,0 +1 @@ +["x" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_incomplete_invalid_value.json b/test/json/fixtures/minefield/n_array_incomplete_invalid_value.json new file mode 100644 index 000000000..c21a8f6cf --- /dev/null +++ b/test/json/fixtures/minefield/n_array_incomplete_invalid_value.json @@ -0,0 +1 @@ +[x \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_inner_array_no_comma.json b/test/json/fixtures/minefield/n_array_inner_array_no_comma.json new file mode 100644 index 000000000..c70b71647 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_inner_array_no_comma.json @@ -0,0 +1 @@ +[3[4]] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_invalid_utf8.json b/test/json/fixtures/minefield/n_array_invalid_utf8.json new file mode 100644 index 000000000..6099d3441 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_invalid_utf8.json @@ -0,0 +1 @@ +[ÿ] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_items_separated_by_semicolon.json b/test/json/fixtures/minefield/n_array_items_separated_by_semicolon.json new file mode 100644 index 000000000..d4bd7314c --- /dev/null +++ b/test/json/fixtures/minefield/n_array_items_separated_by_semicolon.json @@ -0,0 +1 @@ +[1:2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_just_comma.json b/test/json/fixtures/minefield/n_array_just_comma.json new file mode 100644 index 000000000..9d7077c68 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_just_comma.json @@ -0,0 +1 @@ +[,] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_just_minus.json b/test/json/fixtures/minefield/n_array_just_minus.json new file mode 100644 index 000000000..29501c6ca --- /dev/null +++ b/test/json/fixtures/minefield/n_array_just_minus.json @@ -0,0 +1 @@ +[-] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_missing_value.json b/test/json/fixtures/minefield/n_array_missing_value.json new file mode 100644 index 000000000..3a6ba86f3 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_missing_value.json @@ -0,0 +1 @@ +[ , ""] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_newlines_unclosed.json b/test/json/fixtures/minefield/n_array_newlines_unclosed.json new file mode 100644 index 000000000..646680065 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_newlines_unclosed.json @@ -0,0 +1,3 @@ +["a", +4 +,1, \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_number_and_comma.json b/test/json/fixtures/minefield/n_array_number_and_comma.json new file mode 100644 index 000000000..13f6f1d18 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_number_and_comma.json @@ -0,0 +1 @@ +[1,] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_number_and_several_commas.json b/test/json/fixtures/minefield/n_array_number_and_several_commas.json new file mode 100644 index 000000000..0ac408cb8 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_number_and_several_commas.json @@ -0,0 +1 @@ +[1,,] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_spaces_vertical_tab_formfeed.json b/test/json/fixtures/minefield/n_array_spaces_vertical_tab_formfeed.json new file mode 100644 index 000000000..6cd7cf585 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_spaces_vertical_tab_formfeed.json @@ -0,0 +1 @@ +[" a"\f] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_star_inside.json b/test/json/fixtures/minefield/n_array_star_inside.json new file mode 100644 index 000000000..5a5194647 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_star_inside.json @@ -0,0 +1 @@ +[*] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_unclosed.json b/test/json/fixtures/minefield/n_array_unclosed.json new file mode 100644 index 000000000..060733059 --- /dev/null +++ b/test/json/fixtures/minefield/n_array_unclosed.json @@ -0,0 +1 @@ +["" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_unclosed_trailing_comma.json b/test/json/fixtures/minefield/n_array_unclosed_trailing_comma.json new file mode 100644 index 000000000..6604698ff --- /dev/null +++ b/test/json/fixtures/minefield/n_array_unclosed_trailing_comma.json @@ -0,0 +1 @@ +[1, \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_unclosed_with_new_lines.json b/test/json/fixtures/minefield/n_array_unclosed_with_new_lines.json new file mode 100644 index 000000000..4f61de3fb --- /dev/null +++ b/test/json/fixtures/minefield/n_array_unclosed_with_new_lines.json @@ -0,0 +1,3 @@ +[1, +1 +,1 \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_array_unclosed_with_object_inside.json b/test/json/fixtures/minefield/n_array_unclosed_with_object_inside.json new file mode 100644 index 000000000..043a87e2d --- /dev/null +++ b/test/json/fixtures/minefield/n_array_unclosed_with_object_inside.json @@ -0,0 +1 @@ +[{} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_incomplete_false.json b/test/json/fixtures/minefield/n_incomplete_false.json new file mode 100644 index 000000000..eb18c6a14 --- /dev/null +++ b/test/json/fixtures/minefield/n_incomplete_false.json @@ -0,0 +1 @@ +[fals] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_incomplete_null.json b/test/json/fixtures/minefield/n_incomplete_null.json new file mode 100644 index 000000000..c18ef5385 --- /dev/null +++ b/test/json/fixtures/minefield/n_incomplete_null.json @@ -0,0 +1 @@ +[nul] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_incomplete_true.json b/test/json/fixtures/minefield/n_incomplete_true.json new file mode 100644 index 000000000..f451ac6d2 --- /dev/null +++ b/test/json/fixtures/minefield/n_incomplete_true.json @@ -0,0 +1 @@ +[tru] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_multidigit_number_then_00.json b/test/json/fixtures/minefield/n_multidigit_number_then_00.json new file mode 100644 index 000000000..c22507b86 Binary files /dev/null and b/test/json/fixtures/minefield/n_multidigit_number_then_00.json differ diff --git a/test/json/fixtures/minefield/n_number_++.json b/test/json/fixtures/minefield/n_number_++.json new file mode 100644 index 000000000..bdb62aaf4 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_++.json @@ -0,0 +1 @@ +[++1234] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_+1.json b/test/json/fixtures/minefield/n_number_+1.json new file mode 100644 index 000000000..3cbe58c92 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_+1.json @@ -0,0 +1 @@ +[+1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_+Inf.json b/test/json/fixtures/minefield/n_number_+Inf.json new file mode 100644 index 000000000..871ae14d5 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_+Inf.json @@ -0,0 +1 @@ +[+Inf] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_-01.json b/test/json/fixtures/minefield/n_number_-01.json new file mode 100644 index 000000000..0df32bac8 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_-01.json @@ -0,0 +1 @@ +[-01] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_-1.0..json b/test/json/fixtures/minefield/n_number_-1.0..json new file mode 100644 index 000000000..7cf55a85a --- /dev/null +++ b/test/json/fixtures/minefield/n_number_-1.0..json @@ -0,0 +1 @@ +[-1.0.] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_-2..json b/test/json/fixtures/minefield/n_number_-2..json new file mode 100644 index 000000000..9be84365d --- /dev/null +++ b/test/json/fixtures/minefield/n_number_-2..json @@ -0,0 +1 @@ +[-2.] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_-NaN.json b/test/json/fixtures/minefield/n_number_-NaN.json new file mode 100644 index 000000000..f61615d40 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_-NaN.json @@ -0,0 +1 @@ +[-NaN] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_.-1.json b/test/json/fixtures/minefield/n_number_.-1.json new file mode 100644 index 000000000..1c9f2dd1b --- /dev/null +++ b/test/json/fixtures/minefield/n_number_.-1.json @@ -0,0 +1 @@ +[.-1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_.2e-3.json b/test/json/fixtures/minefield/n_number_.2e-3.json new file mode 100644 index 000000000..c6c976f25 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_.2e-3.json @@ -0,0 +1 @@ +[.2e-3] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0.1.2.json b/test/json/fixtures/minefield/n_number_0.1.2.json new file mode 100644 index 000000000..c83a25621 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0.1.2.json @@ -0,0 +1 @@ +[0.1.2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0.3e+.json b/test/json/fixtures/minefield/n_number_0.3e+.json new file mode 100644 index 000000000..a55a1bfef --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0.3e+.json @@ -0,0 +1 @@ +[0.3e+] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0.3e.json b/test/json/fixtures/minefield/n_number_0.3e.json new file mode 100644 index 000000000..3dd5df4b3 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0.3e.json @@ -0,0 +1 @@ +[0.3e] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0.e1.json b/test/json/fixtures/minefield/n_number_0.e1.json new file mode 100644 index 000000000..c92c71ccb --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0.e1.json @@ -0,0 +1 @@ +[0.e1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0_capital_E+.json b/test/json/fixtures/minefield/n_number_0_capital_E+.json new file mode 100644 index 000000000..3ba2c7d6d --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0_capital_E+.json @@ -0,0 +1 @@ +[0E+] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0_capital_E.json b/test/json/fixtures/minefield/n_number_0_capital_E.json new file mode 100644 index 000000000..5301840d1 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0_capital_E.json @@ -0,0 +1 @@ +[0E] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0e+.json b/test/json/fixtures/minefield/n_number_0e+.json new file mode 100644 index 000000000..8ab0bc4b8 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0e+.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_0e.json b/test/json/fixtures/minefield/n_number_0e.json new file mode 100644 index 000000000..47ec421bb --- /dev/null +++ b/test/json/fixtures/minefield/n_number_0e.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_1.0e+.json b/test/json/fixtures/minefield/n_number_1.0e+.json new file mode 100644 index 000000000..cd84b9f69 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_1.0e+.json @@ -0,0 +1 @@ +[1.0e+] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_1.0e-.json b/test/json/fixtures/minefield/n_number_1.0e-.json new file mode 100644 index 000000000..4eb7afa0f --- /dev/null +++ b/test/json/fixtures/minefield/n_number_1.0e-.json @@ -0,0 +1 @@ +[1.0e-] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_1.0e.json b/test/json/fixtures/minefield/n_number_1.0e.json new file mode 100644 index 000000000..21753f4c7 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_1.0e.json @@ -0,0 +1 @@ +[1.0e] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_1_000.json b/test/json/fixtures/minefield/n_number_1_000.json new file mode 100644 index 000000000..7b18b66b3 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_1_000.json @@ -0,0 +1 @@ +[1 000.0] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_1eE2.json b/test/json/fixtures/minefield/n_number_1eE2.json new file mode 100644 index 000000000..4318a341d --- /dev/null +++ b/test/json/fixtures/minefield/n_number_1eE2.json @@ -0,0 +1 @@ +[1eE2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_2.e+3.json b/test/json/fixtures/minefield/n_number_2.e+3.json new file mode 100644 index 000000000..4442f394d --- /dev/null +++ b/test/json/fixtures/minefield/n_number_2.e+3.json @@ -0,0 +1 @@ +[2.e+3] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_2.e-3.json b/test/json/fixtures/minefield/n_number_2.e-3.json new file mode 100644 index 000000000..a65060edf --- /dev/null +++ b/test/json/fixtures/minefield/n_number_2.e-3.json @@ -0,0 +1 @@ +[2.e-3] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_2.e3.json b/test/json/fixtures/minefield/n_number_2.e3.json new file mode 100644 index 000000000..66f7cf701 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_2.e3.json @@ -0,0 +1 @@ +[2.e3] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_9.e+.json b/test/json/fixtures/minefield/n_number_9.e+.json new file mode 100644 index 000000000..732a7b11c --- /dev/null +++ b/test/json/fixtures/minefield/n_number_9.e+.json @@ -0,0 +1 @@ +[9.e+] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_Inf.json b/test/json/fixtures/minefield/n_number_Inf.json new file mode 100644 index 000000000..c40c734c3 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_Inf.json @@ -0,0 +1 @@ +[Inf] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_NaN.json b/test/json/fixtures/minefield/n_number_NaN.json new file mode 100644 index 000000000..499231790 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_NaN.json @@ -0,0 +1 @@ +[NaN] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_U+FF11_fullwidth_digit_one.json b/test/json/fixtures/minefield/n_number_U+FF11_fullwidth_digit_one.json new file mode 100644 index 000000000..b14587e5e --- /dev/null +++ b/test/json/fixtures/minefield/n_number_U+FF11_fullwidth_digit_one.json @@ -0,0 +1 @@ +[1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_expression.json b/test/json/fixtures/minefield/n_number_expression.json new file mode 100644 index 000000000..76fdbc8a4 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_expression.json @@ -0,0 +1 @@ +[1+2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_hex_1_digit.json b/test/json/fixtures/minefield/n_number_hex_1_digit.json new file mode 100644 index 000000000..3b214880c --- /dev/null +++ b/test/json/fixtures/minefield/n_number_hex_1_digit.json @@ -0,0 +1 @@ +[0x1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_hex_2_digits.json b/test/json/fixtures/minefield/n_number_hex_2_digits.json new file mode 100644 index 000000000..83e516ab0 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_hex_2_digits.json @@ -0,0 +1 @@ +[0x42] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_infinity.json b/test/json/fixtures/minefield/n_number_infinity.json new file mode 100644 index 000000000..8c2baf783 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_infinity.json @@ -0,0 +1 @@ +[Infinity] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_invalid+-.json b/test/json/fixtures/minefield/n_number_invalid+-.json new file mode 100644 index 000000000..1cce602b5 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_invalid+-.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_invalid-negative-real.json b/test/json/fixtures/minefield/n_number_invalid-negative-real.json new file mode 100644 index 000000000..5fc3c1efb --- /dev/null +++ b/test/json/fixtures/minefield/n_number_invalid-negative-real.json @@ -0,0 +1 @@ +[-123.123foo] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_invalid-utf-8-in-bigger-int.json b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-bigger-int.json new file mode 100644 index 000000000..3b97e580e --- /dev/null +++ b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-bigger-int.json @@ -0,0 +1 @@ +[123å] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_invalid-utf-8-in-exponent.json b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-exponent.json new file mode 100644 index 000000000..ea35d723c --- /dev/null +++ b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-exponent.json @@ -0,0 +1 @@ +[1e1å] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_invalid-utf-8-in-int.json b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-int.json new file mode 100644 index 000000000..371226e4c --- /dev/null +++ b/test/json/fixtures/minefield/n_number_invalid-utf-8-in-int.json @@ -0,0 +1 @@ +[0å] diff --git a/test/json/fixtures/minefield/n_number_minus_infinity.json b/test/json/fixtures/minefield/n_number_minus_infinity.json new file mode 100644 index 000000000..cf4133d22 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_minus_infinity.json @@ -0,0 +1 @@ +[-Infinity] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_minus_sign_with_trailing_garbage.json b/test/json/fixtures/minefield/n_number_minus_sign_with_trailing_garbage.json new file mode 100644 index 000000000..a6d8e78e7 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_minus_sign_with_trailing_garbage.json @@ -0,0 +1 @@ +[-foo] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_minus_space_1.json b/test/json/fixtures/minefield/n_number_minus_space_1.json new file mode 100644 index 000000000..9a5ebedf6 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_minus_space_1.json @@ -0,0 +1 @@ +[- 1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_neg_int_starting_with_zero.json b/test/json/fixtures/minefield/n_number_neg_int_starting_with_zero.json new file mode 100644 index 000000000..67af0960a --- /dev/null +++ b/test/json/fixtures/minefield/n_number_neg_int_starting_with_zero.json @@ -0,0 +1 @@ +[-012] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_neg_real_without_int_part.json b/test/json/fixtures/minefield/n_number_neg_real_without_int_part.json new file mode 100644 index 000000000..1f2a43496 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_neg_real_without_int_part.json @@ -0,0 +1 @@ +[-.123] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_neg_with_garbage_at_end.json b/test/json/fixtures/minefield/n_number_neg_with_garbage_at_end.json new file mode 100644 index 000000000..2aa73119f --- /dev/null +++ b/test/json/fixtures/minefield/n_number_neg_with_garbage_at_end.json @@ -0,0 +1 @@ +[-1x] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_real_garbage_after_e.json b/test/json/fixtures/minefield/n_number_real_garbage_after_e.json new file mode 100644 index 000000000..9213dfca8 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_real_garbage_after_e.json @@ -0,0 +1 @@ +[1ea] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_real_with_invalid_utf8_after_e.json b/test/json/fixtures/minefield/n_number_real_with_invalid_utf8_after_e.json new file mode 100644 index 000000000..1e52ef964 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_real_with_invalid_utf8_after_e.json @@ -0,0 +1 @@ +[1eå] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_real_without_fractional_part.json b/test/json/fixtures/minefield/n_number_real_without_fractional_part.json new file mode 100644 index 000000000..1de287cf8 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_real_without_fractional_part.json @@ -0,0 +1 @@ +[1.] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_starting_with_dot.json b/test/json/fixtures/minefield/n_number_starting_with_dot.json new file mode 100644 index 000000000..f682dbdce --- /dev/null +++ b/test/json/fixtures/minefield/n_number_starting_with_dot.json @@ -0,0 +1 @@ +[.123] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_with_alpha.json b/test/json/fixtures/minefield/n_number_with_alpha.json new file mode 100644 index 000000000..1e42d8182 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_with_alpha.json @@ -0,0 +1 @@ +[1.2a-3] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_with_alpha_char.json b/test/json/fixtures/minefield/n_number_with_alpha_char.json new file mode 100644 index 000000000..b79daccb8 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_with_alpha_char.json @@ -0,0 +1 @@ +[1.8011670033376514H-308] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_number_with_leading_zero.json b/test/json/fixtures/minefield/n_number_with_leading_zero.json new file mode 100644 index 000000000..7106da1f3 --- /dev/null +++ b/test/json/fixtures/minefield/n_number_with_leading_zero.json @@ -0,0 +1 @@ +[012] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_bad_value.json b/test/json/fixtures/minefield/n_object_bad_value.json new file mode 100644 index 000000000..a03a8c03b --- /dev/null +++ b/test/json/fixtures/minefield/n_object_bad_value.json @@ -0,0 +1 @@ +["x", truth] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_bracket_key.json b/test/json/fixtures/minefield/n_object_bracket_key.json new file mode 100644 index 000000000..cc443b483 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_bracket_key.json @@ -0,0 +1 @@ +{[: "x"} diff --git a/test/json/fixtures/minefield/n_object_comma_instead_of_colon.json b/test/json/fixtures/minefield/n_object_comma_instead_of_colon.json new file mode 100644 index 000000000..8d5637708 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_comma_instead_of_colon.json @@ -0,0 +1 @@ +{"x", null} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_double_colon.json b/test/json/fixtures/minefield/n_object_double_colon.json new file mode 100644 index 000000000..80e8c7b89 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_double_colon.json @@ -0,0 +1 @@ +{"x"::"b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_emoji.json b/test/json/fixtures/minefield/n_object_emoji.json new file mode 100644 index 000000000..cb4078eaa --- /dev/null +++ b/test/json/fixtures/minefield/n_object_emoji.json @@ -0,0 +1 @@ +{🇨🇭} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_garbage_at_end.json b/test/json/fixtures/minefield/n_object_garbage_at_end.json new file mode 100644 index 000000000..80c42cbad --- /dev/null +++ b/test/json/fixtures/minefield/n_object_garbage_at_end.json @@ -0,0 +1 @@ +{"a":"a" 123} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_key_with_single_quotes.json b/test/json/fixtures/minefield/n_object_key_with_single_quotes.json new file mode 100644 index 000000000..77c327599 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_key_with_single_quotes.json @@ -0,0 +1 @@ +{key: 'value'} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_lone_continuation_byte_in_key_and_trailing_comma.json b/test/json/fixtures/minefield/n_object_lone_continuation_byte_in_key_and_trailing_comma.json new file mode 100644 index 000000000..aa2cb637c --- /dev/null +++ b/test/json/fixtures/minefield/n_object_lone_continuation_byte_in_key_and_trailing_comma.json @@ -0,0 +1 @@ +{"¹":"0",} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_missing_colon.json b/test/json/fixtures/minefield/n_object_missing_colon.json new file mode 100644 index 000000000..b98eff62d --- /dev/null +++ b/test/json/fixtures/minefield/n_object_missing_colon.json @@ -0,0 +1 @@ +{"a" b} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_missing_key.json b/test/json/fixtures/minefield/n_object_missing_key.json new file mode 100644 index 000000000..b4fb0f528 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_missing_key.json @@ -0,0 +1 @@ +{:"b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_missing_semicolon.json b/test/json/fixtures/minefield/n_object_missing_semicolon.json new file mode 100644 index 000000000..e3451384f --- /dev/null +++ b/test/json/fixtures/minefield/n_object_missing_semicolon.json @@ -0,0 +1 @@ +{"a" "b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_missing_value.json b/test/json/fixtures/minefield/n_object_missing_value.json new file mode 100644 index 000000000..3ef538a60 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_missing_value.json @@ -0,0 +1 @@ +{"a": \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_no-colon.json b/test/json/fixtures/minefield/n_object_no-colon.json new file mode 100644 index 000000000..f3797b357 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_no-colon.json @@ -0,0 +1 @@ +{"a" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_non_string_key.json b/test/json/fixtures/minefield/n_object_non_string_key.json new file mode 100644 index 000000000..b9945b34b --- /dev/null +++ b/test/json/fixtures/minefield/n_object_non_string_key.json @@ -0,0 +1 @@ +{1:1} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_non_string_key_but_huge_number_instead.json b/test/json/fixtures/minefield/n_object_non_string_key_but_huge_number_instead.json new file mode 100644 index 000000000..b37fa86c0 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_non_string_key_but_huge_number_instead.json @@ -0,0 +1 @@ +{9999E9999:1} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_repeated_null_null.json b/test/json/fixtures/minefield/n_object_repeated_null_null.json new file mode 100644 index 000000000..f7d2959d0 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_repeated_null_null.json @@ -0,0 +1 @@ +{null:null,null:null} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_several_trailing_commas.json b/test/json/fixtures/minefield/n_object_several_trailing_commas.json new file mode 100644 index 000000000..3c9afe8dc --- /dev/null +++ b/test/json/fixtures/minefield/n_object_several_trailing_commas.json @@ -0,0 +1 @@ +{"id":0,,,,,} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_single_quote.json b/test/json/fixtures/minefield/n_object_single_quote.json new file mode 100644 index 000000000..e5cdf976a --- /dev/null +++ b/test/json/fixtures/minefield/n_object_single_quote.json @@ -0,0 +1 @@ +{'a':0} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_trailing_comma.json b/test/json/fixtures/minefield/n_object_trailing_comma.json new file mode 100644 index 000000000..a4b025094 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_trailing_comma.json @@ -0,0 +1 @@ +{"id":0,} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_trailing_comment.json b/test/json/fixtures/minefield/n_object_trailing_comment.json new file mode 100644 index 000000000..a372c6553 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_trailing_comment.json @@ -0,0 +1 @@ +{"a":"b"}/**/ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_trailing_comment_open.json b/test/json/fixtures/minefield/n_object_trailing_comment_open.json new file mode 100644 index 000000000..d557f41ca --- /dev/null +++ b/test/json/fixtures/minefield/n_object_trailing_comment_open.json @@ -0,0 +1 @@ +{"a":"b"}/**// \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_trailing_comment_slash_open.json b/test/json/fixtures/minefield/n_object_trailing_comment_slash_open.json new file mode 100644 index 000000000..e335136c0 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_trailing_comment_slash_open.json @@ -0,0 +1 @@ +{"a":"b"}// \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_trailing_comment_slash_open_incomplete.json b/test/json/fixtures/minefield/n_object_trailing_comment_slash_open_incomplete.json new file mode 100644 index 000000000..d892e49f1 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_trailing_comment_slash_open_incomplete.json @@ -0,0 +1 @@ +{"a":"b"}/ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_two_commas_in_a_row.json b/test/json/fixtures/minefield/n_object_two_commas_in_a_row.json new file mode 100644 index 000000000..7c639ae64 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_two_commas_in_a_row.json @@ -0,0 +1 @@ +{"a":"b",,"c":"d"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_unquoted_key.json b/test/json/fixtures/minefield/n_object_unquoted_key.json new file mode 100644 index 000000000..8ba137293 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_unquoted_key.json @@ -0,0 +1 @@ +{a: "b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_unterminated-value.json b/test/json/fixtures/minefield/n_object_unterminated-value.json new file mode 100644 index 000000000..7fe699a6a --- /dev/null +++ b/test/json/fixtures/minefield/n_object_unterminated-value.json @@ -0,0 +1 @@ +{"a":"a \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_with_single_string.json b/test/json/fixtures/minefield/n_object_with_single_string.json new file mode 100644 index 000000000..d63f7fbb7 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_with_single_string.json @@ -0,0 +1 @@ +{ "foo" : "bar", "a" } \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_object_with_trailing_garbage.json b/test/json/fixtures/minefield/n_object_with_trailing_garbage.json new file mode 100644 index 000000000..787c8f0a8 --- /dev/null +++ b/test/json/fixtures/minefield/n_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a":"b"}# \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_single_space.json b/test/json/fixtures/minefield/n_single_space.json new file mode 100644 index 000000000..0519ecba6 --- /dev/null +++ b/test/json/fixtures/minefield/n_single_space.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_1_surrogate_then_escape.json b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape.json new file mode 100644 index 000000000..acec66d8f --- /dev/null +++ b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape.json @@ -0,0 +1 @@ +["\uD800\"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u.json b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u.json new file mode 100644 index 000000000..e834b05e9 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u.json @@ -0,0 +1 @@ +["\uD800\u"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1.json b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1.json new file mode 100644 index 000000000..a04cd3489 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1.json @@ -0,0 +1 @@ +["\uD800\u1"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1x.json b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1x.json new file mode 100644 index 000000000..bfbd23409 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_1_surrogate_then_escape_u1x.json @@ -0,0 +1 @@ +["\uD800\u1x"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_accentuated_char_no_quotes.json b/test/json/fixtures/minefield/n_string_accentuated_char_no_quotes.json new file mode 100644 index 000000000..fd6895693 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_accentuated_char_no_quotes.json @@ -0,0 +1 @@ +[é] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_backslash_00.json b/test/json/fixtures/minefield/n_string_backslash_00.json new file mode 100644 index 000000000..b5bf267b5 Binary files /dev/null and b/test/json/fixtures/minefield/n_string_backslash_00.json differ diff --git a/test/json/fixtures/minefield/n_string_escape_x.json b/test/json/fixtures/minefield/n_string_escape_x.json new file mode 100644 index 000000000..fae291938 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_escape_x.json @@ -0,0 +1 @@ +["\x00"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_escaped_backslash_bad.json b/test/json/fixtures/minefield/n_string_escaped_backslash_bad.json new file mode 100644 index 000000000..016fcb47e --- /dev/null +++ b/test/json/fixtures/minefield/n_string_escaped_backslash_bad.json @@ -0,0 +1 @@ +["\\\"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_escaped_ctrl_char_tab.json b/test/json/fixtures/minefield/n_string_escaped_ctrl_char_tab.json new file mode 100644 index 000000000..f35ea382b --- /dev/null +++ b/test/json/fixtures/minefield/n_string_escaped_ctrl_char_tab.json @@ -0,0 +1 @@ +["\ "] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_escaped_emoji.json b/test/json/fixtures/minefield/n_string_escaped_emoji.json new file mode 100644 index 000000000..a27775421 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_escaped_emoji.json @@ -0,0 +1 @@ +["\🌀"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_incomplete_escape.json b/test/json/fixtures/minefield/n_string_incomplete_escape.json new file mode 100644 index 000000000..3415c33ca --- /dev/null +++ b/test/json/fixtures/minefield/n_string_incomplete_escape.json @@ -0,0 +1 @@ +["\"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_incomplete_escaped_character.json b/test/json/fixtures/minefield/n_string_incomplete_escaped_character.json new file mode 100644 index 000000000..0f2197ea2 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_incomplete_escaped_character.json @@ -0,0 +1 @@ +["\u00A"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_incomplete_surrogate.json b/test/json/fixtures/minefield/n_string_incomplete_surrogate.json new file mode 100644 index 000000000..75504a656 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_incomplete_surrogate.json @@ -0,0 +1 @@ +["\uD834\uDd"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_incomplete_surrogate_escape_invalid.json b/test/json/fixtures/minefield/n_string_incomplete_surrogate_escape_invalid.json new file mode 100644 index 000000000..bd9656060 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_incomplete_surrogate_escape_invalid.json @@ -0,0 +1 @@ +["\uD800\uD800\x"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_invalid-utf-8-in-escape.json b/test/json/fixtures/minefield/n_string_invalid-utf-8-in-escape.json new file mode 100644 index 000000000..0c4300643 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_invalid-utf-8-in-escape.json @@ -0,0 +1 @@ +["\uå"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_invalid_backslash_esc.json b/test/json/fixtures/minefield/n_string_invalid_backslash_esc.json new file mode 100644 index 000000000..d1eb60921 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_invalid_backslash_esc.json @@ -0,0 +1 @@ +["\a"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_invalid_unicode_escape.json b/test/json/fixtures/minefield/n_string_invalid_unicode_escape.json new file mode 100644 index 000000000..7608cb6ba --- /dev/null +++ b/test/json/fixtures/minefield/n_string_invalid_unicode_escape.json @@ -0,0 +1 @@ +["\uqqqq"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_invalid_utf8_after_escape.json b/test/json/fixtures/minefield/n_string_invalid_utf8_after_escape.json new file mode 100644 index 000000000..2f757a25b --- /dev/null +++ b/test/json/fixtures/minefield/n_string_invalid_utf8_after_escape.json @@ -0,0 +1 @@ +["\å"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_leading_uescaped_thinspace.json b/test/json/fixtures/minefield/n_string_leading_uescaped_thinspace.json new file mode 100644 index 000000000..7b297c636 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_leading_uescaped_thinspace.json @@ -0,0 +1 @@ +[\u0020"asd"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_no_quotes_with_bad_escape.json b/test/json/fixtures/minefield/n_string_no_quotes_with_bad_escape.json new file mode 100644 index 000000000..01bc70aba --- /dev/null +++ b/test/json/fixtures/minefield/n_string_no_quotes_with_bad_escape.json @@ -0,0 +1 @@ +[\n] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_single_doublequote.json b/test/json/fixtures/minefield/n_string_single_doublequote.json new file mode 100644 index 000000000..9d68933c4 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_single_doublequote.json @@ -0,0 +1 @@ +" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_single_quote.json b/test/json/fixtures/minefield/n_string_single_quote.json new file mode 100644 index 000000000..caff239bf --- /dev/null +++ b/test/json/fixtures/minefield/n_string_single_quote.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_single_string_no_double_quotes.json b/test/json/fixtures/minefield/n_string_single_string_no_double_quotes.json new file mode 100644 index 000000000..f2ba8f84a --- /dev/null +++ b/test/json/fixtures/minefield/n_string_single_string_no_double_quotes.json @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_start_escape_unclosed.json b/test/json/fixtures/minefield/n_string_start_escape_unclosed.json new file mode 100644 index 000000000..db62a46fc --- /dev/null +++ b/test/json/fixtures/minefield/n_string_start_escape_unclosed.json @@ -0,0 +1 @@ +["\ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_unescaped_ctrl_char.json b/test/json/fixtures/minefield/n_string_unescaped_ctrl_char.json new file mode 100644 index 000000000..9f2134807 Binary files /dev/null and b/test/json/fixtures/minefield/n_string_unescaped_ctrl_char.json differ diff --git a/test/json/fixtures/minefield/n_string_unescaped_newline.json b/test/json/fixtures/minefield/n_string_unescaped_newline.json new file mode 100644 index 000000000..700d36086 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_unescaped_newline.json @@ -0,0 +1,2 @@ +["new +line"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_unescaped_tab.json b/test/json/fixtures/minefield/n_string_unescaped_tab.json new file mode 100644 index 000000000..160264a2d --- /dev/null +++ b/test/json/fixtures/minefield/n_string_unescaped_tab.json @@ -0,0 +1 @@ +[" "] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_unicode_CapitalU.json b/test/json/fixtures/minefield/n_string_unicode_CapitalU.json new file mode 100644 index 000000000..17332bb17 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_unicode_CapitalU.json @@ -0,0 +1 @@ +"\UA66D" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_string_with_trailing_garbage.json b/test/json/fixtures/minefield/n_string_with_trailing_garbage.json new file mode 100644 index 000000000..efe3bd272 --- /dev/null +++ b/test/json/fixtures/minefield/n_string_with_trailing_garbage.json @@ -0,0 +1 @@ +""x \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_100000_opening_arrays.json b/test/json/fixtures/minefield/n_structure_100000_opening_arrays.json new file mode 100644 index 000000000..a4823eecc --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_100000_opening_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_U+2060_word_joined.json b/test/json/fixtures/minefield/n_structure_U+2060_word_joined.json new file mode 100644 index 000000000..81156a699 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_U+2060_word_joined.json @@ -0,0 +1 @@ +[⁠] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_UTF8_BOM_no_data.json b/test/json/fixtures/minefield/n_structure_UTF8_BOM_no_data.json new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_UTF8_BOM_no_data.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_angle_bracket_..json b/test/json/fixtures/minefield/n_structure_angle_bracket_..json new file mode 100644 index 000000000..a56fef0b0 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_angle_bracket_..json @@ -0,0 +1 @@ +<.> \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_angle_bracket_null.json b/test/json/fixtures/minefield/n_structure_angle_bracket_null.json new file mode 100644 index 000000000..617f26254 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_angle_bracket_null.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_array_trailing_garbage.json b/test/json/fixtures/minefield/n_structure_array_trailing_garbage.json new file mode 100644 index 000000000..5a745e6f3 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_array_trailing_garbage.json @@ -0,0 +1 @@ +[1]x \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_array_with_extra_array_close.json b/test/json/fixtures/minefield/n_structure_array_with_extra_array_close.json new file mode 100644 index 000000000..6cfb1398d --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_array_with_extra_array_close.json @@ -0,0 +1 @@ +[1]] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_array_with_unclosed_string.json b/test/json/fixtures/minefield/n_structure_array_with_unclosed_string.json new file mode 100644 index 000000000..ba6b1788b --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_array_with_unclosed_string.json @@ -0,0 +1 @@ +["asd] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_ascii-unicode-identifier.json b/test/json/fixtures/minefield/n_structure_ascii-unicode-identifier.json new file mode 100644 index 000000000..ef2ab62fe --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_ascii-unicode-identifier.json @@ -0,0 +1 @@ +aå \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_capitalized_True.json b/test/json/fixtures/minefield/n_structure_capitalized_True.json new file mode 100644 index 000000000..7cd88469a --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_capitalized_True.json @@ -0,0 +1 @@ +[True] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_close_unopened_array.json b/test/json/fixtures/minefield/n_structure_close_unopened_array.json new file mode 100644 index 000000000..d2af0c646 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_close_unopened_array.json @@ -0,0 +1 @@ +1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_comma_instead_of_closing_brace.json b/test/json/fixtures/minefield/n_structure_comma_instead_of_closing_brace.json new file mode 100644 index 000000000..ac61b8200 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_comma_instead_of_closing_brace.json @@ -0,0 +1 @@ +{"x": true, \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_double_array.json b/test/json/fixtures/minefield/n_structure_double_array.json new file mode 100644 index 000000000..058d1626e --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_double_array.json @@ -0,0 +1 @@ +[][] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_end_array.json b/test/json/fixtures/minefield/n_structure_end_array.json new file mode 100644 index 000000000..54caf60b1 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_end_array.json @@ -0,0 +1 @@ +] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_incomplete_UTF8_BOM.json b/test/json/fixtures/minefield/n_structure_incomplete_UTF8_BOM.json new file mode 100644 index 000000000..bfcdd514f --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_incomplete_UTF8_BOM.json @@ -0,0 +1 @@ +ï»{} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_lone-invalid-utf-8.json b/test/json/fixtures/minefield/n_structure_lone-invalid-utf-8.json new file mode 100644 index 000000000..8b1296cad --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_lone-invalid-utf-8.json @@ -0,0 +1 @@ +å \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_lone-open-bracket.json b/test/json/fixtures/minefield/n_structure_lone-open-bracket.json new file mode 100644 index 000000000..8e2f0bef1 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_lone-open-bracket.json @@ -0,0 +1 @@ +[ \ No newline at end of file diff --git a/diagrams/.keep b/test/json/fixtures/minefield/n_structure_no_data.json similarity index 100% rename from diagrams/.keep rename to test/json/fixtures/minefield/n_structure_no_data.json diff --git a/test/json/fixtures/minefield/n_structure_null-byte-outside-string.json b/test/json/fixtures/minefield/n_structure_null-byte-outside-string.json new file mode 100644 index 000000000..326db1442 Binary files /dev/null and b/test/json/fixtures/minefield/n_structure_null-byte-outside-string.json differ diff --git a/test/json/fixtures/minefield/n_structure_number_with_trailing_garbage.json b/test/json/fixtures/minefield/n_structure_number_with_trailing_garbage.json new file mode 100644 index 000000000..0746539d2 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_number_with_trailing_garbage.json @@ -0,0 +1 @@ +2@ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_object_followed_by_closing_object.json b/test/json/fixtures/minefield/n_structure_object_followed_by_closing_object.json new file mode 100644 index 000000000..aa9ebaec5 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_object_followed_by_closing_object.json @@ -0,0 +1 @@ +{}} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_object_unclosed_no_value.json b/test/json/fixtures/minefield/n_structure_object_unclosed_no_value.json new file mode 100644 index 000000000..17d045147 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_object_unclosed_no_value.json @@ -0,0 +1 @@ +{"": \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_object_with_comment.json b/test/json/fixtures/minefield/n_structure_object_with_comment.json new file mode 100644 index 000000000..ed1b569b7 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_object_with_comment.json @@ -0,0 +1 @@ +{"a":/*comment*/"b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_object_with_trailing_garbage.json b/test/json/fixtures/minefield/n_structure_object_with_trailing_garbage.json new file mode 100644 index 000000000..9ca2336d7 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a": true} "x" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_array_apostrophe.json b/test/json/fixtures/minefield/n_structure_open_array_apostrophe.json new file mode 100644 index 000000000..8bebe3af0 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_apostrophe.json @@ -0,0 +1 @@ +[' \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_array_comma.json b/test/json/fixtures/minefield/n_structure_open_array_comma.json new file mode 100644 index 000000000..6295fdc36 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_comma.json @@ -0,0 +1 @@ +[, \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_array_object.json b/test/json/fixtures/minefield/n_structure_open_array_object.json new file mode 100644 index 000000000..e870445b2 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_object.json @@ -0,0 +1 @@ +[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"": diff --git a/test/json/fixtures/minefield/n_structure_open_array_open_object.json b/test/json/fixtures/minefield/n_structure_open_array_open_object.json new file mode 100644 index 000000000..7a63c8c57 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_open_object.json @@ -0,0 +1 @@ +[{ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_array_open_string.json b/test/json/fixtures/minefield/n_structure_open_array_open_string.json new file mode 100644 index 000000000..9822a6baf --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_open_string.json @@ -0,0 +1 @@ +["a \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_array_string.json b/test/json/fixtures/minefield/n_structure_open_array_string.json new file mode 100644 index 000000000..42a619362 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_array_string.json @@ -0,0 +1 @@ +["a" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object.json b/test/json/fixtures/minefield/n_structure_open_object.json new file mode 100644 index 000000000..81750b96f --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object.json @@ -0,0 +1 @@ +{ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object_close_array.json b/test/json/fixtures/minefield/n_structure_open_object_close_array.json new file mode 100644 index 000000000..eebc700a1 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object_close_array.json @@ -0,0 +1 @@ +{] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object_comma.json b/test/json/fixtures/minefield/n_structure_open_object_comma.json new file mode 100644 index 000000000..47bc9106f --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object_comma.json @@ -0,0 +1 @@ +{, \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object_open_array.json b/test/json/fixtures/minefield/n_structure_open_object_open_array.json new file mode 100644 index 000000000..381ede5de --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object_open_array.json @@ -0,0 +1 @@ +{[ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object_open_string.json b/test/json/fixtures/minefield/n_structure_open_object_open_string.json new file mode 100644 index 000000000..328c30cd7 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object_open_string.json @@ -0,0 +1 @@ +{"a \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_object_string_with_apostrophes.json b/test/json/fixtures/minefield/n_structure_open_object_string_with_apostrophes.json new file mode 100644 index 000000000..9dba17090 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_object_string_with_apostrophes.json @@ -0,0 +1 @@ +{'a' \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_open_open.json b/test/json/fixtures/minefield/n_structure_open_open.json new file mode 100644 index 000000000..841fd5f86 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_open_open.json @@ -0,0 +1 @@ +["\{["\{["\{["\{ \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_single_eacute.json b/test/json/fixtures/minefield/n_structure_single_eacute.json new file mode 100644 index 000000000..92a39f398 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_single_eacute.json @@ -0,0 +1 @@ +é \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_single_star.json b/test/json/fixtures/minefield/n_structure_single_star.json new file mode 100644 index 000000000..f59ec20aa --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_single_star.json @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_trailing_#.json b/test/json/fixtures/minefield/n_structure_trailing_#.json new file mode 100644 index 000000000..898611087 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_trailing_#.json @@ -0,0 +1 @@ +{"a":"b"}#{} \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_uescaped_LF_before_string.json b/test/json/fixtures/minefield/n_structure_uescaped_LF_before_string.json new file mode 100644 index 000000000..df2f0f242 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_uescaped_LF_before_string.json @@ -0,0 +1 @@ +[\u000A""] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unclosed_array.json b/test/json/fixtures/minefield/n_structure_unclosed_array.json new file mode 100644 index 000000000..11209515c --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unclosed_array.json @@ -0,0 +1 @@ +[1 \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unclosed_array_partial_null.json b/test/json/fixtures/minefield/n_structure_unclosed_array_partial_null.json new file mode 100644 index 000000000..0d591762c --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unclosed_array_partial_null.json @@ -0,0 +1 @@ +[ false, nul \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_false.json b/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_false.json new file mode 100644 index 000000000..a2ff8504a --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_false.json @@ -0,0 +1 @@ +[ true, fals \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_true.json b/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_true.json new file mode 100644 index 000000000..3149e8f5a --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unclosed_array_unfinished_true.json @@ -0,0 +1 @@ +[ false, tru \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unclosed_object.json b/test/json/fixtures/minefield/n_structure_unclosed_object.json new file mode 100644 index 000000000..694d69dbd --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unclosed_object.json @@ -0,0 +1 @@ +{"asd":"asd" \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_unicode-identifier.json b/test/json/fixtures/minefield/n_structure_unicode-identifier.json new file mode 100644 index 000000000..7284aea33 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_unicode-identifier.json @@ -0,0 +1 @@ +å \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_whitespace_U+2060_word_joiner.json b/test/json/fixtures/minefield/n_structure_whitespace_U+2060_word_joiner.json new file mode 100644 index 000000000..81156a699 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_whitespace_U+2060_word_joiner.json @@ -0,0 +1 @@ +[⁠] \ No newline at end of file diff --git a/test/json/fixtures/minefield/n_structure_whitespace_formfeed.json b/test/json/fixtures/minefield/n_structure_whitespace_formfeed.json new file mode 100644 index 000000000..a9ea535d1 --- /dev/null +++ b/test/json/fixtures/minefield/n_structure_whitespace_formfeed.json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_arraysWithSpaces.json b/test/json/fixtures/minefield/y_array_arraysWithSpaces.json new file mode 100644 index 000000000..582290798 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_arraysWithSpaces.json @@ -0,0 +1 @@ +[[] ] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_empty-string.json b/test/json/fixtures/minefield/y_array_empty-string.json new file mode 100644 index 000000000..93b6be2bc --- /dev/null +++ b/test/json/fixtures/minefield/y_array_empty-string.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_empty.json b/test/json/fixtures/minefield/y_array_empty.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/test/json/fixtures/minefield/y_array_empty.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_ending_with_newline.json b/test/json/fixtures/minefield/y_array_ending_with_newline.json new file mode 100644 index 000000000..eac5f7b46 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_ending_with_newline.json @@ -0,0 +1 @@ +["a"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_false.json b/test/json/fixtures/minefield/y_array_false.json new file mode 100644 index 000000000..67b2f0760 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_false.json @@ -0,0 +1 @@ +[false] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_heterogeneous.json b/test/json/fixtures/minefield/y_array_heterogeneous.json new file mode 100644 index 000000000..d3c1e2648 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_heterogeneous.json @@ -0,0 +1 @@ +[null, 1, "1", {}] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_null.json b/test/json/fixtures/minefield/y_array_null.json new file mode 100644 index 000000000..500db4a86 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_null.json @@ -0,0 +1 @@ +[null] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_with_1_and_newline.json b/test/json/fixtures/minefield/y_array_with_1_and_newline.json new file mode 100644 index 000000000..994825500 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_with_1_and_newline.json @@ -0,0 +1,2 @@ +[1 +] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_with_leading_space.json b/test/json/fixtures/minefield/y_array_with_leading_space.json new file mode 100644 index 000000000..18bfe6422 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_with_leading_space.json @@ -0,0 +1 @@ + [1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_with_several_null.json b/test/json/fixtures/minefield/y_array_with_several_null.json new file mode 100644 index 000000000..99f6c5d1d --- /dev/null +++ b/test/json/fixtures/minefield/y_array_with_several_null.json @@ -0,0 +1 @@ +[1,null,null,null,2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_array_with_trailing_space.json b/test/json/fixtures/minefield/y_array_with_trailing_space.json new file mode 100644 index 000000000..de9e7a944 --- /dev/null +++ b/test/json/fixtures/minefield/y_array_with_trailing_space.json @@ -0,0 +1 @@ +[2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number.json b/test/json/fixtures/minefield/y_number.json new file mode 100644 index 000000000..e5f5cc334 --- /dev/null +++ b/test/json/fixtures/minefield/y_number.json @@ -0,0 +1 @@ +[123e65] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_0e+1.json b/test/json/fixtures/minefield/y_number_0e+1.json new file mode 100644 index 000000000..d1d396706 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_0e+1.json @@ -0,0 +1 @@ +[0e+1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_0e1.json b/test/json/fixtures/minefield/y_number_0e1.json new file mode 100644 index 000000000..3283a7936 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_0e1.json @@ -0,0 +1 @@ +[0e1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_after_space.json b/test/json/fixtures/minefield/y_number_after_space.json new file mode 100644 index 000000000..623570d96 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_after_space.json @@ -0,0 +1 @@ +[ 4] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_double_close_to_zero.json b/test/json/fixtures/minefield/y_number_double_close_to_zero.json new file mode 100644 index 000000000..96555ff78 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_double_close_to_zero.json @@ -0,0 +1 @@ +[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001] diff --git a/test/json/fixtures/minefield/y_number_int_with_exp.json b/test/json/fixtures/minefield/y_number_int_with_exp.json new file mode 100644 index 000000000..a4ca9e754 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_int_with_exp.json @@ -0,0 +1 @@ +[20e1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_minus_zero.json b/test/json/fixtures/minefield/y_number_minus_zero.json new file mode 100644 index 000000000..37af1312a --- /dev/null +++ b/test/json/fixtures/minefield/y_number_minus_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_negative_int.json b/test/json/fixtures/minefield/y_number_negative_int.json new file mode 100644 index 000000000..8e30f8bd9 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_negative_int.json @@ -0,0 +1 @@ +[-123] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_negative_one.json b/test/json/fixtures/minefield/y_number_negative_one.json new file mode 100644 index 000000000..99d21a2a0 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_negative_one.json @@ -0,0 +1 @@ +[-1] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_negative_zero.json b/test/json/fixtures/minefield/y_number_negative_zero.json new file mode 100644 index 000000000..37af1312a --- /dev/null +++ b/test/json/fixtures/minefield/y_number_negative_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_capital_e.json b/test/json/fixtures/minefield/y_number_real_capital_e.json new file mode 100644 index 000000000..6edbdfcb1 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_capital_e.json @@ -0,0 +1 @@ +[1E22] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_capital_e_neg_exp.json b/test/json/fixtures/minefield/y_number_real_capital_e_neg_exp.json new file mode 100644 index 000000000..0a01bd3ef --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_capital_e_neg_exp.json @@ -0,0 +1 @@ +[1E-2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_capital_e_pos_exp.json b/test/json/fixtures/minefield/y_number_real_capital_e_pos_exp.json new file mode 100644 index 000000000..5a8fc0972 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_capital_e_pos_exp.json @@ -0,0 +1 @@ +[1E+2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_exponent.json b/test/json/fixtures/minefield/y_number_real_exponent.json new file mode 100644 index 000000000..da2522d61 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_exponent.json @@ -0,0 +1 @@ +[123e45] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_fraction_exponent.json b/test/json/fixtures/minefield/y_number_real_fraction_exponent.json new file mode 100644 index 000000000..3944a7a45 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_fraction_exponent.json @@ -0,0 +1 @@ +[123.456e78] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_neg_exp.json b/test/json/fixtures/minefield/y_number_real_neg_exp.json new file mode 100644 index 000000000..ca40d3c25 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_neg_exp.json @@ -0,0 +1 @@ +[1e-2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_real_pos_exponent.json b/test/json/fixtures/minefield/y_number_real_pos_exponent.json new file mode 100644 index 000000000..343601d51 --- /dev/null +++ b/test/json/fixtures/minefield/y_number_real_pos_exponent.json @@ -0,0 +1 @@ +[1e+2] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_simple_int.json b/test/json/fixtures/minefield/y_number_simple_int.json new file mode 100644 index 000000000..e47f69afc --- /dev/null +++ b/test/json/fixtures/minefield/y_number_simple_int.json @@ -0,0 +1 @@ +[123] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_number_simple_real.json b/test/json/fixtures/minefield/y_number_simple_real.json new file mode 100644 index 000000000..b02878e5f --- /dev/null +++ b/test/json/fixtures/minefield/y_number_simple_real.json @@ -0,0 +1 @@ +[123.456789] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object.json b/test/json/fixtures/minefield/y_object.json new file mode 100644 index 000000000..78262eda3 --- /dev/null +++ b/test/json/fixtures/minefield/y_object.json @@ -0,0 +1 @@ +{"asd":"sdf", "dfg":"fgh"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_basic.json b/test/json/fixtures/minefield/y_object_basic.json new file mode 100644 index 000000000..646bbe7bb --- /dev/null +++ b/test/json/fixtures/minefield/y_object_basic.json @@ -0,0 +1 @@ +{"asd":"sdf"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_duplicated_key.json b/test/json/fixtures/minefield/y_object_duplicated_key.json new file mode 100644 index 000000000..bbc2e1ce4 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_duplicated_key.json @@ -0,0 +1 @@ +{"a":"b","a":"c"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_duplicated_key_and_value.json b/test/json/fixtures/minefield/y_object_duplicated_key_and_value.json new file mode 100644 index 000000000..211581c20 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_duplicated_key_and_value.json @@ -0,0 +1 @@ +{"a":"b","a":"b"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_empty.json b/test/json/fixtures/minefield/y_object_empty.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/test/json/fixtures/minefield/y_object_empty.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_empty_key.json b/test/json/fixtures/minefield/y_object_empty_key.json new file mode 100644 index 000000000..c0013d3b8 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_empty_key.json @@ -0,0 +1 @@ +{"":0} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_escaped_null_in_key.json b/test/json/fixtures/minefield/y_object_escaped_null_in_key.json new file mode 100644 index 000000000..593f0f67f --- /dev/null +++ b/test/json/fixtures/minefield/y_object_escaped_null_in_key.json @@ -0,0 +1 @@ +{"foo\u0000bar": 42} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_extreme_numbers.json b/test/json/fixtures/minefield/y_object_extreme_numbers.json new file mode 100644 index 000000000..a0d3531c3 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_extreme_numbers.json @@ -0,0 +1 @@ +{ "min": -1.0e+28, "max": 1.0e+28 } \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_long_strings.json b/test/json/fixtures/minefield/y_object_long_strings.json new file mode 100644 index 000000000..bdc4a0871 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_long_strings.json @@ -0,0 +1 @@ +{"x":[{"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}], "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_simple.json b/test/json/fixtures/minefield/y_object_simple.json new file mode 100644 index 000000000..dacac917f --- /dev/null +++ b/test/json/fixtures/minefield/y_object_simple.json @@ -0,0 +1 @@ +{"a":[]} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_string_unicode.json b/test/json/fixtures/minefield/y_object_string_unicode.json new file mode 100644 index 000000000..8effdb297 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_string_unicode.json @@ -0,0 +1 @@ +{"title":"\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0417\u0435\u043c\u043b\u0435\u043a\u043e\u043f\u0430" } \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_object_with_newlines.json b/test/json/fixtures/minefield/y_object_with_newlines.json new file mode 100644 index 000000000..246ec6b34 --- /dev/null +++ b/test/json/fixtures/minefield/y_object_with_newlines.json @@ -0,0 +1,3 @@ +{ +"a": "b" +} \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_1_2_3_bytes_UTF-8_sequences.json b/test/json/fixtures/minefield/y_string_1_2_3_bytes_UTF-8_sequences.json new file mode 100644 index 000000000..9967ddeb8 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_1_2_3_bytes_UTF-8_sequences.json @@ -0,0 +1 @@ +["\u0060\u012a\u12AB"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_accepted_surrogate_pair.json b/test/json/fixtures/minefield/y_string_accepted_surrogate_pair.json new file mode 100644 index 000000000..996875cc8 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_accepted_surrogate_pair.json @@ -0,0 +1 @@ +["\uD801\udc37"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_accepted_surrogate_pairs.json b/test/json/fixtures/minefield/y_string_accepted_surrogate_pairs.json new file mode 100644 index 000000000..3401021ec --- /dev/null +++ b/test/json/fixtures/minefield/y_string_accepted_surrogate_pairs.json @@ -0,0 +1 @@ +["\ud83d\ude39\ud83d\udc8d"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_allowed_escapes.json b/test/json/fixtures/minefield/y_string_allowed_escapes.json new file mode 100644 index 000000000..7f495532f --- /dev/null +++ b/test/json/fixtures/minefield/y_string_allowed_escapes.json @@ -0,0 +1 @@ +["\"\\\/\b\f\n\r\t"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_backslash_and_u_escaped_zero.json b/test/json/fixtures/minefield/y_string_backslash_and_u_escaped_zero.json new file mode 100644 index 000000000..d4439eda7 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_backslash_and_u_escaped_zero.json @@ -0,0 +1 @@ +["\\u0000"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_backslash_doublequotes.json b/test/json/fixtures/minefield/y_string_backslash_doublequotes.json new file mode 100644 index 000000000..ae03243b6 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_backslash_doublequotes.json @@ -0,0 +1 @@ +["\""] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_comments.json b/test/json/fixtures/minefield/y_string_comments.json new file mode 100644 index 000000000..2260c20c2 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_comments.json @@ -0,0 +1 @@ +["a/*b*/c/*d//e"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_double_escape_a.json b/test/json/fixtures/minefield/y_string_double_escape_a.json new file mode 100644 index 000000000..6715d6f40 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_double_escape_a.json @@ -0,0 +1 @@ +["\\a"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_double_escape_n.json b/test/json/fixtures/minefield/y_string_double_escape_n.json new file mode 100644 index 000000000..44ca56c4d --- /dev/null +++ b/test/json/fixtures/minefield/y_string_double_escape_n.json @@ -0,0 +1 @@ +["\\n"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_escaped_control_character.json b/test/json/fixtures/minefield/y_string_escaped_control_character.json new file mode 100644 index 000000000..5b014a9c2 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_escaped_control_character.json @@ -0,0 +1 @@ +["\u0012"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_escaped_noncharacter.json b/test/json/fixtures/minefield/y_string_escaped_noncharacter.json new file mode 100644 index 000000000..2ff52e2c5 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_escaped_noncharacter.json @@ -0,0 +1 @@ +["\uFFFF"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_in_array.json b/test/json/fixtures/minefield/y_string_in_array.json new file mode 100644 index 000000000..21d7ae4cd --- /dev/null +++ b/test/json/fixtures/minefield/y_string_in_array.json @@ -0,0 +1 @@ +["asd"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_in_array_with_leading_space.json b/test/json/fixtures/minefield/y_string_in_array_with_leading_space.json new file mode 100644 index 000000000..9e1887c1e --- /dev/null +++ b/test/json/fixtures/minefield/y_string_in_array_with_leading_space.json @@ -0,0 +1 @@ +[ "asd"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_last_surrogates_1_and_2.json b/test/json/fixtures/minefield/y_string_last_surrogates_1_and_2.json new file mode 100644 index 000000000..3919cef76 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_last_surrogates_1_and_2.json @@ -0,0 +1 @@ +["\uDBFF\uDFFF"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_nbsp_uescaped.json b/test/json/fixtures/minefield/y_string_nbsp_uescaped.json new file mode 100644 index 000000000..2085ab1a1 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_nbsp_uescaped.json @@ -0,0 +1 @@ +["new\u00A0line"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+10FFFF.json b/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+10FFFF.json new file mode 100644 index 000000000..059e4d9dd --- /dev/null +++ b/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+10FFFF.json @@ -0,0 +1 @@ +["􏿿"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+FFFF.json b/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+FFFF.json new file mode 100644 index 000000000..4c913bd41 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_nonCharacterInUTF-8_U+FFFF.json @@ -0,0 +1 @@ +["￿"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_null_escape.json b/test/json/fixtures/minefield/y_string_null_escape.json new file mode 100644 index 000000000..c1ad84404 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_null_escape.json @@ -0,0 +1 @@ +["\u0000"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_one-byte-utf-8.json b/test/json/fixtures/minefield/y_string_one-byte-utf-8.json new file mode 100644 index 000000000..157185923 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_one-byte-utf-8.json @@ -0,0 +1 @@ +["\u002c"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_pi.json b/test/json/fixtures/minefield/y_string_pi.json new file mode 100644 index 000000000..9df11ae88 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_pi.json @@ -0,0 +1 @@ +["π"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_reservedCharacterInUTF-8_U+1BFFF.json b/test/json/fixtures/minefield/y_string_reservedCharacterInUTF-8_U+1BFFF.json new file mode 100644 index 000000000..10a33a171 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_reservedCharacterInUTF-8_U+1BFFF.json @@ -0,0 +1 @@ +["𛿿"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_simple_ascii.json b/test/json/fixtures/minefield/y_string_simple_ascii.json new file mode 100644 index 000000000..8cadf7d05 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_simple_ascii.json @@ -0,0 +1 @@ +["asd "] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_space.json b/test/json/fixtures/minefield/y_string_space.json new file mode 100644 index 000000000..efd782cc3 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_space.json @@ -0,0 +1 @@ +" " \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json b/test/json/fixtures/minefield/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json new file mode 100644 index 000000000..7620b6655 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json @@ -0,0 +1 @@ +["\uD834\uDd1e"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_three-byte-utf-8.json b/test/json/fixtures/minefield/y_string_three-byte-utf-8.json new file mode 100644 index 000000000..108f1d67d --- /dev/null +++ b/test/json/fixtures/minefield/y_string_three-byte-utf-8.json @@ -0,0 +1 @@ +["\u0821"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_two-byte-utf-8.json b/test/json/fixtures/minefield/y_string_two-byte-utf-8.json new file mode 100644 index 000000000..461503c31 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_two-byte-utf-8.json @@ -0,0 +1 @@ +["\u0123"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_u+2028_line_sep.json b/test/json/fixtures/minefield/y_string_u+2028_line_sep.json new file mode 100644 index 000000000..897b6021a --- /dev/null +++ b/test/json/fixtures/minefield/y_string_u+2028_line_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_u+2029_par_sep.json b/test/json/fixtures/minefield/y_string_u+2029_par_sep.json new file mode 100644 index 000000000..8cd998c89 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_u+2029_par_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_uEscape.json b/test/json/fixtures/minefield/y_string_uEscape.json new file mode 100644 index 000000000..f7b41a02f --- /dev/null +++ b/test/json/fixtures/minefield/y_string_uEscape.json @@ -0,0 +1 @@ +["\u0061\u30af\u30EA\u30b9"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_uescaped_newline.json b/test/json/fixtures/minefield/y_string_uescaped_newline.json new file mode 100644 index 000000000..3a5a220b6 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_uescaped_newline.json @@ -0,0 +1 @@ +["new\u000Aline"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unescaped_char_delete.json b/test/json/fixtures/minefield/y_string_unescaped_char_delete.json new file mode 100644 index 000000000..7d064f498 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unescaped_char_delete.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode.json b/test/json/fixtures/minefield/y_string_unicode.json new file mode 100644 index 000000000..3598095b7 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode.json @@ -0,0 +1 @@ +["\uA66D"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicodeEscapedBackslash.json b/test/json/fixtures/minefield/y_string_unicodeEscapedBackslash.json new file mode 100644 index 000000000..0bb3b51e7 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicodeEscapedBackslash.json @@ -0,0 +1 @@ +["\u005C"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_2.json b/test/json/fixtures/minefield/y_string_unicode_2.json new file mode 100644 index 000000000..a7dcb9768 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_2.json @@ -0,0 +1 @@ +["⍂㈴⍂"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+10FFFE_nonchar.json b/test/json/fixtures/minefield/y_string_unicode_U+10FFFE_nonchar.json new file mode 100644 index 000000000..9a8370b96 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+10FFFE_nonchar.json @@ -0,0 +1 @@ +["\uDBFF\uDFFE"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+1FFFE_nonchar.json b/test/json/fixtures/minefield/y_string_unicode_U+1FFFE_nonchar.json new file mode 100644 index 000000000..c51f8ae45 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+1FFFE_nonchar.json @@ -0,0 +1 @@ +["\uD83F\uDFFE"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json b/test/json/fixtures/minefield/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json new file mode 100644 index 000000000..626d5f815 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json @@ -0,0 +1 @@ +["\u200B"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+2064_invisible_plus.json b/test/json/fixtures/minefield/y_string_unicode_U+2064_invisible_plus.json new file mode 100644 index 000000000..1e23972c6 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+2064_invisible_plus.json @@ -0,0 +1 @@ +["\u2064"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+FDD0_nonchar.json b/test/json/fixtures/minefield/y_string_unicode_U+FDD0_nonchar.json new file mode 100644 index 000000000..18ef151b4 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+FDD0_nonchar.json @@ -0,0 +1 @@ +["\uFDD0"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_U+FFFE_nonchar.json b/test/json/fixtures/minefield/y_string_unicode_U+FFFE_nonchar.json new file mode 100644 index 000000000..13d261fda --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_U+FFFE_nonchar.json @@ -0,0 +1 @@ +["\uFFFE"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_unicode_escaped_double_quote.json b/test/json/fixtures/minefield/y_string_unicode_escaped_double_quote.json new file mode 100644 index 000000000..4e6257856 --- /dev/null +++ b/test/json/fixtures/minefield/y_string_unicode_escaped_double_quote.json @@ -0,0 +1 @@ +["\u0022"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_utf8.json b/test/json/fixtures/minefield/y_string_utf8.json new file mode 100644 index 000000000..40878435f --- /dev/null +++ b/test/json/fixtures/minefield/y_string_utf8.json @@ -0,0 +1 @@ +["€𝄞"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_string_with_del_character.json b/test/json/fixtures/minefield/y_string_with_del_character.json new file mode 100644 index 000000000..8bd24907d --- /dev/null +++ b/test/json/fixtures/minefield/y_string_with_del_character.json @@ -0,0 +1 @@ +["aa"] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_false.json b/test/json/fixtures/minefield/y_structure_lonely_false.json new file mode 100644 index 000000000..02e4a84d6 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_false.json @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_int.json b/test/json/fixtures/minefield/y_structure_lonely_int.json new file mode 100644 index 000000000..f70d7bba4 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_int.json @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_negative_real.json b/test/json/fixtures/minefield/y_structure_lonely_negative_real.json new file mode 100644 index 000000000..b5135a207 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_negative_real.json @@ -0,0 +1 @@ +-0.1 \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_null.json b/test/json/fixtures/minefield/y_structure_lonely_null.json new file mode 100644 index 000000000..ec747fa47 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_null.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_string.json b/test/json/fixtures/minefield/y_structure_lonely_string.json new file mode 100644 index 000000000..b6e982ca9 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_string.json @@ -0,0 +1 @@ +"asd" \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_lonely_true.json b/test/json/fixtures/minefield/y_structure_lonely_true.json new file mode 100644 index 000000000..f32a5804e --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_lonely_true.json @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_string_empty.json b/test/json/fixtures/minefield/y_structure_string_empty.json new file mode 100644 index 000000000..3cc762b55 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_string_empty.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_trailing_newline.json b/test/json/fixtures/minefield/y_structure_trailing_newline.json new file mode 100644 index 000000000..0c3426d4c --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_trailing_newline.json @@ -0,0 +1 @@ +["a"] diff --git a/test/json/fixtures/minefield/y_structure_true_in_array.json b/test/json/fixtures/minefield/y_structure_true_in_array.json new file mode 100644 index 000000000..de601e305 --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_true_in_array.json @@ -0,0 +1 @@ +[true] \ No newline at end of file diff --git a/test/json/fixtures/minefield/y_structure_whitespace_array.json b/test/json/fixtures/minefield/y_structure_whitespace_array.json new file mode 100644 index 000000000..2bedf7f2d --- /dev/null +++ b/test/json/fixtures/minefield/y_structure_whitespace_array.json @@ -0,0 +1 @@ + [] \ No newline at end of file diff --git a/tests/fixtures/obsolete_fail1.json b/test/json/fixtures/obsolete_fail1.json similarity index 100% rename from tests/fixtures/obsolete_fail1.json rename to test/json/fixtures/obsolete_fail1.json diff --git a/tests/fixtures/pass1.json b/test/json/fixtures/pass1.json similarity index 97% rename from tests/fixtures/pass1.json rename to test/json/fixtures/pass1.json index 7828fcc13..fa9058b13 100644 --- a/tests/fixtures/pass1.json +++ b/test/json/fixtures/pass1.json @@ -12,7 +12,7 @@ "real": -9876.543210, "e": 0.123456789e-12, "E": 1.234567890E+34, - "": 23456789012E666, + "": 23456789012E66, "zero": 0, "one": 1, "space": " ", diff --git a/tests/fixtures/pass2.json b/test/json/fixtures/pass2.json similarity index 100% rename from tests/fixtures/pass2.json rename to test/json/fixtures/pass2.json diff --git a/tests/fixtures/pass3.json b/test/json/fixtures/pass3.json similarity index 100% rename from tests/fixtures/pass3.json rename to test/json/fixtures/pass3.json diff --git a/test/json/fixtures/rfc8785/input/arrays.json b/test/json/fixtures/rfc8785/input/arrays.json new file mode 100644 index 000000000..9154bdf15 --- /dev/null +++ b/test/json/fixtures/rfc8785/input/arrays.json @@ -0,0 +1,8 @@ +[ + 56, + { + "d": true, + "10": null, + "1": [ ] + } +] \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/input/french.json b/test/json/fixtures/rfc8785/input/french.json new file mode 100644 index 000000000..d4ad2e4ed --- /dev/null +++ b/test/json/fixtures/rfc8785/input/french.json @@ -0,0 +1,6 @@ +{ + "peach": "This sorting order", + "péché": "is wrong according to French", + "pêche": "but canonicalization MUST", + "sin": "ignore locale" +} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/input/structures.json b/test/json/fixtures/rfc8785/input/structures.json new file mode 100644 index 000000000..eb71efb84 --- /dev/null +++ b/test/json/fixtures/rfc8785/input/structures.json @@ -0,0 +1,8 @@ +{ + "1": {"f": {"f": "hi","F": 5} ,"\n": 56.0}, + "10": { }, + "": "empty", + "a": { }, + "111": [ {"e": "yes","E": "no" } ], + "A": { } +} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/input/unicode.json b/test/json/fixtures/rfc8785/input/unicode.json new file mode 100644 index 000000000..9ec5cc7db --- /dev/null +++ b/test/json/fixtures/rfc8785/input/unicode.json @@ -0,0 +1,3 @@ +{ + "Unnormalized Unicode":"A\u030a" +} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/input/values.json b/test/json/fixtures/rfc8785/input/values.json new file mode 100644 index 000000000..f7712c2fb --- /dev/null +++ b/test/json/fixtures/rfc8785/input/values.json @@ -0,0 +1,5 @@ +{ + "numbers": [333333333.33333329, 1E30, 4.50, 2e-3, 0.000000000000000000000000001], + "string": "\u20ac$\u000F\u000aA'\u0042\u0022\u005c\\\"\/", + "literals": [null, true, false] +} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/input/wierd.json b/test/json/fixtures/rfc8785/input/wierd.json new file mode 100644 index 000000000..940bec4f9 --- /dev/null +++ b/test/json/fixtures/rfc8785/input/wierd.json @@ -0,0 +1,11 @@ +{ + "\u20ac": "Euro Sign", + "\r": "Carriage Return", + "\u000a": "Newline", + "1": "One", + "\u0080": "Control\u007f", + "\ud83d\ude02": "Smiley", + "\u00f6": "Latin Small Letter O With Diaeresis", + "\ufb33": "Hebrew Letter Dalet With Dagesh", + "": "Browser Challenge" +} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/arrays.json b/test/json/fixtures/rfc8785/output/arrays.json new file mode 100644 index 000000000..5efb93db7 --- /dev/null +++ b/test/json/fixtures/rfc8785/output/arrays.json @@ -0,0 +1 @@ +[56,{"1":[],"10":null,"d":true}] \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/french.json b/test/json/fixtures/rfc8785/output/french.json new file mode 100644 index 000000000..2e15cd1b2 --- /dev/null +++ b/test/json/fixtures/rfc8785/output/french.json @@ -0,0 +1 @@ +{"peach":"This sorting order","péché":"is wrong according to French","pêche":"but canonicalization MUST","sin":"ignore locale"} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/structures.json b/test/json/fixtures/rfc8785/output/structures.json new file mode 100644 index 000000000..dc21e2424 --- /dev/null +++ b/test/json/fixtures/rfc8785/output/structures.json @@ -0,0 +1 @@ +{"":"empty","1":{"\n":56,"f":{"F":5,"f":"hi"}},"10":{},"111":[{"E":"no","e":"yes"}],"A":{},"a":{}} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/unicode.json b/test/json/fixtures/rfc8785/output/unicode.json new file mode 100644 index 000000000..ee60fd121 --- /dev/null +++ b/test/json/fixtures/rfc8785/output/unicode.json @@ -0,0 +1 @@ +{"Unnormalized Unicode":"Å"} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/values.json b/test/json/fixtures/rfc8785/output/values.json new file mode 100644 index 000000000..29b720b6e --- /dev/null +++ b/test/json/fixtures/rfc8785/output/values.json @@ -0,0 +1 @@ +{"literals":[null,true,false],"numbers":[333333333.3333333,1e+30,4.5,0.002,1e-27],"string":"€$\u000f\nA'B\"\\\\\"/"} \ No newline at end of file diff --git a/test/json/fixtures/rfc8785/output/wierd.json b/test/json/fixtures/rfc8785/output/wierd.json new file mode 100644 index 000000000..62c83a333 --- /dev/null +++ b/test/json/fixtures/rfc8785/output/wierd.json @@ -0,0 +1 @@ +{"\n":"Newline","\r":"Carriage Return","1":"One","":"Browser Challenge","€":"Control","ö":"Latin Small Letter O With Diaeresis","€":"Euro Sign","😂":"Smiley","דּ":"Hebrew Letter Dalet With Dagesh"} \ No newline at end of file diff --git a/test/json/json_coder_test.rb b/test/json/json_coder_test.rb new file mode 100755 index 000000000..b91431821 --- /dev/null +++ b/test/json/json_coder_test.rb @@ -0,0 +1,264 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONCoderTest < Test::Unit::TestCase + def test_json_coder_with_proc + coder = JSON::Coder.new do |object| + "[Object object]" + end + assert_equal %(["[Object object]"]), coder.dump([Object.new]) + end + + def test_json_coder_with_as_json_option + callback = ->(object, is_key) { 42 } + [callback, callback.method(:call)].each do |as_json| + coder = JSON::Coder.new(as_json: as_json) + assert_equal '[42]', coder.dump([Object.new]) + end + end + + def test_json_coder_block_overrides_as_json_option + coder = JSON::Coder.new(as_json: ->(object) { 1 }) { 2 } + assert_equal '[2]', coder.dump([Object.new]) + end + + def test_json_coder_as_json_invalid_type + assert_raise(TypeError) { JSON::Coder.new(as_json: 'x') } + end + + def test_json_coder_rejects_disabling_strict_mode + [false, nil].each do |strict| + error = assert_raise(ArgumentError) { JSON::Coder.new(strict: strict) } + assert_equal 'JSON::Coder requires strict mode', error.message + end + assert_raise(JSON::GeneratorError) { JSON::Coder.new.dump(Object.new) } + assert_raise(JSON::GeneratorError) { JSON::Coder.new(strict: true).dump(Object.new) } + end + + def test_json_coder_with_proc_with_unsupported_value + coder = JSON::Coder.new do |object, is_key| + assert_equal false, is_key + Object.new + end + assert_raise(JSON::GeneratorError) { coder.dump([Object.new]) } + end + + def test_json_coder_with_proc_returning_symbol + coder = JSON::Coder.new { _1 } + assert_equal %({"sym":"sym"}), coder.dump({ sym: :sym }) + end + + def test_json_coder_hash_key + obj = Object.new + coder = JSON::Coder.new do |obj, is_key| + assert_equal true, is_key + obj.to_s + end + assert_equal %({#{obj.to_s.inspect}:1}), coder.dump({ obj => 1 }) + + coder = JSON::Coder.new { 42 } + error = assert_raise JSON::GeneratorError do + coder.dump({ obj => 1 }) + end + assert_equal "Integer not allowed as object key in JSON", error.message + end + + def test_json_coder_rfc8785_converted_keys + time = Time.utc(1999) + calls = [] + coder = JSON::Coder.new(rfc8785: true) do |object, is_key| + calls << [object, is_key] + object.year.to_s + end + input = { time => 1, '1999!' => 2, Time.utc(2000) => 3 } + assert_equal '{"1999":1,"1999!":2,"2000":3}', coder.dump(input) + assert_equal [[time, true], [Time.utc(2000), true]], calls + assert_equal [time, '1999!', Time.utc(2000)], input.keys + end + + def test_json_coder_rfc8785_converted_key_validation + object = Object.new + coder = JSON::Coder.new(rfc8785: true) { 42 } + error = assert_raise(JSON::GeneratorError) { coder.dump(object => 1) } + assert_equal 'Integer not allowed as object key in JSON', error.message + assert_equal 42, error.invalid_object + + coder = JSON::Coder.new(rfc8785: true) { :a } + assert_equal '{"a":1,"b":2}', coder.dump('b' => 2, object => 1) + + invalid = "\xFF" + calls = 0 + coder = JSON::Coder.new(rfc8785: true) { calls += 1; invalid } + error = assert_raise(JSON::GeneratorError) { coder.dump(object => 1) } + assert_same invalid, error.invalid_object + assert_equal 1, calls + end + + def test_json_coder_rfc8785_converted_key_collision + coder = JSON::Coder.new(rfc8785: true) { 'a' } + assert_raise(JSON::GeneratorError) { coder.dump(Object.new => 1, 'a' => 2) } + assert_raise(JSON::GeneratorError) { coder.dump(Object.new => 1, Object.new => 2) } + assert_raise(JSON::GeneratorError) { coder.dump(Object.new => 1, :a => 2) } + end + + def test_json_coder_rfc8785_invalid_encoding_key + calls = [] + coder = JSON::Coder.new(rfc8785: true) do |object, is_key| + calls << [object, is_key] + 'a' + end + assert_equal '{"a":1,"b":2}', coder.dump('b' => 2, "\xFF" => 1) + assert_equal [["\xFF", true]], calls + end + + def test_json_coder_options + coder = JSON::Coder.new(array_nl: "\n") do |object| + 42 + end + + assert_equal "[\n42\n]", coder.dump([Object.new]) + end + + def test_json_coder_load + coder = JSON::Coder.new + assert_equal [1,2,3], coder.load("[1,2,3]") + end + + def test_json_coder_load_options + coder = JSON::Coder.new(symbolize_names: true) + assert_equal({a: 1}, coder.load('{"a":1}')) + end + + def test_json_coder_load_with_on_load_method + on_load = ->(value) { Integer === value ? value + 1 : value }.method(:call) + coder = JSON::Coder.new(on_load: on_load) + assert_equal [2], coder.load('[1]') + end + + def test_json_coder_on_load_invalid_type + assert_raise(TypeError) { JSON::Coder.new(on_load: 'x') } + end + + def test_json_coder_dump_NaN_or_Infinity + coder = JSON::Coder.new { |o| o.inspect } + assert_equal "NaN", coder.load(coder.dump(Float::NAN)) + assert_equal "Infinity", coder.load(coder.dump(Float::INFINITY)) + assert_equal "-Infinity", coder.load(coder.dump(-Float::INFINITY)) + end + + def test_json_coder_dump_NaN_or_Infinity_loop + coder = JSON::Coder.new { |o| o.itself } + error = assert_raise JSON::GeneratorError do + coder.dump(Float::NAN) + end + assert_include error.message, "NaN not allowed in JSON" + end + + def test_json_coder_string_invalid_encoding + calls = 0 + coder = JSON::Coder.new do |object, is_key| + calls += 1 + object + end + + error = assert_raise JSON::GeneratorError do + coder.dump("\xFF") + end + assert_equal "source sequence is illegal/malformed utf-8", error.message + assert_equal 1, calls + + error = assert_raise JSON::GeneratorError do + coder.dump({ "\xFF" => 1 }) + end + assert_equal "source sequence is illegal/malformed utf-8", error.message + assert_equal 2, calls + + calls = 0 + coder = JSON::Coder.new do |object, is_key| + calls += 1 + object.dup + end + + error = assert_raise JSON::GeneratorError do + coder.dump("\xFF") + end + assert_equal "source sequence is illegal/malformed utf-8", error.message + assert_equal 1, calls + + error = assert_raise JSON::GeneratorError do + coder.dump({ "\xFF" => 1 }) + end + assert_equal "source sequence is illegal/malformed utf-8", error.message + assert_equal 2, calls + + calls = 0 + coder = JSON::Coder.new do |object, is_key| + calls += 1 + object.bytes + end + + assert_equal "[255]", coder.dump("\xFF") + assert_equal 1, calls + + error = assert_raise JSON::GeneratorError do + coder.dump({ "\xFF" => 1 }) + end + assert_equal "Array not allowed as object key in JSON", error.message + assert_equal 2, calls + + calls = 0 + coder = JSON::Coder.new do |object, is_key| + calls += 1 + [object].pack("m") + end + + assert_equal '"/w==\\n"', coder.dump("\xFF") + assert_equal 1, calls + + assert_equal '{"/w==\\n":1}', coder.dump({ "\xFF" => 1 }) + assert_equal 2, calls + end + + def test_json_coder_symbol_invalid_encoding + symbol = "\xFF".b.to_sym + + calls = 0 + coder = JSON::Coder.new do |object, is_key| + calls += 1 + object.bytes + end + + assert_equal "[[255]]", coder.dump([symbol]) + assert_equal 1, calls + + coder = JSON::Coder.new { |object, is_key| nil } + assert_equal "[null]", coder.dump([symbol]) + + coder = JSON::Coder.new { |object, is_key| Object.new } + assert_raise(JSON::GeneratorError) { coder.dump([symbol]) } + + if RUBY_ENGINE == "ruby" + coder = JSON::Coder.new { |object, is_key| symbol } + error = assert_raise JSON::GeneratorError do + coder.dump([symbol]) + end + assert_equal "source sequence is illegal/malformed utf-8", error.message + end + end + + def test_depth + coder = JSON::Coder.new(object_nl: "\n", array_nl: "\n", space: " ", indent: " ", depth: 1) + assert_equal %({\n "foo": 42\n }), coder.dump(foo: 42) + end + + def test_nesting_recovery + coder = JSON::Coder.new + ary = [] + ary << ary + assert_raise JSON::NestingError do + coder.dump(ary) + end + assert_equal '{"a":1}', coder.dump({ a: 1 }) + end +end diff --git a/test/json/json_common_interface_test.rb b/test/json/json_common_interface_test.rb new file mode 100644 index 000000000..cf11c8f0e --- /dev/null +++ b/test/json/json_common_interface_test.rb @@ -0,0 +1,370 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONCommonInterfaceTest < Test::Unit::TestCase + include JSON + + module MethodMissing + def method_missing(name, *args); end + def respond_to_missing?(name, include_private) + true + end + end + + def setup + @hash = { + 'a' => 2, + 'b' => 3.141, + 'c' => 'c', + 'd' => [ 1, "b", 3.14 ], + 'e' => { 'foo' => 'bar' }, + 'g' => "\"\0\037", + 'h' => 1000.0, + 'i' => 0.001 + } + + @hash_with_method_missing = { + 'a' => 2, + 'b' => 3.141, + 'c' => 'c', + 'd' => [ 1, "b", 3.14 ], + 'e' => { 'foo' => 'bar' }, + 'g' => "\"\0\037", + 'h' => 1000.0, + 'i' => 0.001 + } + @hash_with_method_missing.extend MethodMissing + + @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\ + '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}' + end + + def test_parser + assert_match(/::Parser\z/, JSON.parser.name) + end + + def test_generator + assert_match(/::(TruffleRuby)?Generator\z/, JSON.generator.name) + end + + def test_state + assert_match(/::(TruffleRuby)?Generator::State\z/, JSON.state.name) + end + + def test_parse + assert_equal [ 1, 2, 3, ], JSON.parse('[ 1, 2, 3 ]') + end + + def test_parse_unknown_option + error = assert_raise(ArgumentError) do + JSON.parse('[]', quirks_mode: true) + end + assert_match "quirks_mode", error.message + + error = assert_raise(ArgumentError) do + JSON.parse('[]', a: 1, b: 2) + end + assert_match "a, b", error.message + end + + def test_parse_bang + assert_equal [ 1, Infinity, 3, ], JSON.parse!('[ 1, Infinity, 3 ]') + end + + def test_generate + assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ]) + end + + def test_generate_unknown_option + error = assert_raise(ArgumentError) do + JSON.generate([], quirks_mode: true) + end + assert_match "quirks_mode", error.message + + error = assert_raise(ArgumentError) do + JSON.generate([], a: 1, b: 2) + end + assert_match(/unknown keywords: :?a, :?b/, error.message) + end + + def test_fast_generate + assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ]) + end + + def test_pretty_generate + assert_equal "[\n 1,\n 2,\n 3\n]", JSON.pretty_generate([ 1, 2, 3 ]) + assert_equal <<~JSON.strip, JSON.pretty_generate({ a: { b: "f"}, c: "d"}) + { + "a": { + "b": "f" + }, + "c": "d" + } + JSON + + # Cause the state to be spilled on the heap. + o = Object.new + def o.to_s + "Object" + end + actual = JSON.pretty_generate({ a: { b: o}, c: "d", e: "f"}) + assert_equal <<~JSON.strip, actual + { + "a": { + "b": "Object" + }, + "c": "d", + "e": "f" + } + JSON + end + + def test_load + assert_equal @hash, JSON.load(@json) + assert_equal nil, JSON.load(nil) + assert_equal nil, JSON.load('') + + tempfile = Tempfile.open('@json') + tempfile.write @json + tempfile.rewind + assert_equal @hash, JSON.load(tempfile) + tempfile.close! + + stringio = StringIO.new(@json) + stringio.rewind + assert_equal @hash, JSON.load(stringio) + + tempfile = Tempfile.open('@json.gzip', mode: File::BINARY) + gzw = Zlib::GzipWriter.new(tempfile) + gzw.write(@json) + gzw.close + tempfile.open + gzr = Zlib::GzipReader.new(tempfile) + assert_equal @hash, JSON.load(gzr) + ensure + tempfile.close! + end + + def test_load_with_proc + visited = [] + JSON.load('{"foo": [1, 2, 3], "bar": {"baz": "plop"}}', proc { |o| visited << JSON.dump(o); o }) + + expected = [ + '"foo"', + '1', + '2', + '3', + '[1,2,3]', + '"bar"', + '"baz"', + '"plop"', + '{"baz":"plop"}', + '{"foo":[1,2,3],"bar":{"baz":"plop"}}', + ] + assert_equal expected, visited + end + + def test_load_with_options + json = '{ "foo": NaN }' + assert JSON.load(json, nil, allow_nan: true)['foo'].nan? + assert JSON.load(json, allow_nan: true)['foo'].nan? + end + + def test_load_null + assert_equal nil, JSON.load(nil, nil, allow_blank: true) + assert_raise(TypeError) { JSON.load(nil, nil, allow_blank: false) } + assert_raise(JSON::ParserError) { JSON.load('', nil, allow_blank: false) } + assert_raise(TypeError) { JSON.load([], nil, allow_blank: true) } + assert_raise(TypeError) { JSON.load({}, nil, allow_blank: true) } + end + + def test_unsafe_load + string_able_klass = Class.new do + def initialize(str) + @str = str + end + + def to_str + @str + end + end + + io_able_klass = Class.new do + def initialize(str) + @str = str + end + + def to_io + StringIO.new(@str) + end + end + + assert_equal @hash, JSON.unsafe_load(@json) + tempfile = Tempfile.open('@json') + tempfile.write @json + tempfile.rewind + assert_equal @hash, JSON.unsafe_load(tempfile) + stringio = StringIO.new(@json) + stringio.rewind + assert_equal @hash, JSON.unsafe_load(stringio) + string_able = string_able_klass.new(@json) + assert_equal @hash, JSON.unsafe_load(string_able) + io_able = io_able_klass.new(@json) + assert_equal @hash, JSON.unsafe_load(io_able) + assert_equal nil, JSON.unsafe_load(nil) + assert_equal nil, JSON.unsafe_load('') + ensure + tempfile.close! + end + + def test_unsafe_load_with_proc + visited = [] + JSON.unsafe_load('{"foo": [1, 2, 3], "bar": {"baz": "plop"}}', proc { |o| visited << JSON.dump(o); o }) + + expected = [ + '"foo"', + '1', + '2', + '3', + '[1,2,3]', + '"bar"', + '"baz"', + '"plop"', + '{"baz":"plop"}', + '{"foo":[1,2,3],"bar":{"baz":"plop"}}', + ] + assert_equal expected, visited + end + + def test_unsafe_load_default_options + too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' + assert JSON.unsafe_load(too_deep, nil).is_a?(Array) + nan_json = '{ "foo": NaN }' + assert JSON.unsafe_load(nan_json, nil)['foo'].nan? + assert_equal nil, JSON.unsafe_load(nil, nil) + t = Time.new(2025, 9, 3, 14, 50, 0) + assert_equal t.to_s, JSON.unsafe_load(JSON(t)).to_s + end + + def test_unsafe_load_with_options + nan_json = '{ "foo": NaN }' + assert_raise(JSON::ParserError) { JSON.unsafe_load(nan_json, nil, allow_nan: false)['foo'].nan? } + # make sure it still uses the defaults when something is provided + assert JSON.unsafe_load(nan_json, nil, allow_blank: true)['foo'].nan? + assert JSON.unsafe_load(nan_json, allow_nan: true)['foo'].nan? + end + + def test_unsafe_load_null + assert_equal nil, JSON.unsafe_load(nil, nil, allow_blank: true) + assert_raise(TypeError) { JSON.unsafe_load(nil, nil, allow_blank: false) } + assert_raise(JSON::ParserError) { JSON.unsafe_load('', nil, allow_blank: false) } + end + + def test_dump + too_deep = '[' * 101 + ']' * 101 + obj = eval(too_deep) + assert_raise(JSON::NestingError) { dump(obj) } + assert_equal too_deep, dump(obj, max_nesting: 101) + + assert_equal too_deep, JSON.dump(obj, StringIO.new, max_nesting: 101, strict: false).string + assert_equal too_deep, dump(obj, StringIO.new, max_nesting: 101, strict: false).string + assert_raise(JSON::GeneratorError) { JSON.dump(Object.new, StringIO.new, max_nesting: 101, strict: true).string } + assert_raise(JSON::GeneratorError) { dump(Object.new, StringIO.new, max_nesting: 101, strict: true).string } + + assert_raise(JSON::NestingError) { dump(obj, nil, strict: false) } + assert_equal too_deep, dump(obj, nil, max_nesting: 101, strict: false) + assert_raise(JSON::NestingError) { dump(obj, StringIO.new, strict: false) } + assert_raise(JSON::NestingError) { dump(obj, strict: false) } + assert_equal too_deep, dump(obj, max_nesting: 101, strict: false) + assert_raise(JSON::NestingError) { dump(obj, StringIO.new, strict: false) } + assert_raise(JSON::NestingError) { dump(obj, strict: false) } + end + + def test_dump_in_io + io = StringIO.new + assert_same io, JSON.dump([1], io) + assert_equal "[1]", io.string + + big_object = ["a" * 10, "b" * 40, { foo: 1.23 }] * 5000 + io.rewind + assert_same io, JSON.dump(big_object, io) + assert_equal JSON.dump(big_object), io.string + end + + def test_JSON + assert_equal @json, JSON(@hash) + assert_equal @json, JSON(@hash_with_method_missing) + assert_equal @hash, JSON(@json) + end + + def test_index + assert_equal @json, JSON[@hash] + assert_equal @json, JSON[@hash_with_method_missing] + assert_equal @hash, JSON[@json] + end + + def test_load_file + test_load_shared(:load_file) + end + + def test_load_file! + test_load_shared(:load_file!) + end + + def test_load_file_with_option + test_load_file_with_option_shared(:load_file) + end + + def test_load_file_with_option! + test_load_file_with_option_shared(:load_file!) + end + + def test_load_file_with_bad_default_external_encoding + data = { "key" => "€" } + temp_file_containing(JSON.dump(data)) do |path| + loaded_data = with_external_encoding(Encoding::US_ASCII) do + JSON.load_file(path) + end + assert_equal data, loaded_data + end + end + + private + + def with_external_encoding(encoding) + verbose = $VERBOSE + $VERBOSE = nil + previous_encoding = Encoding.default_external + Encoding.default_external = encoding + yield + ensure + Encoding.default_external = previous_encoding + $VERBOSE = verbose + end + + def test_load_shared(method_name) + temp_file_containing(@json) do |filespec| + assert_equal JSON.public_send(method_name, filespec), @hash + end + end + + def test_load_file_with_option_shared(method_name) + temp_file_containing(@json) do |filespec| + parsed_object = JSON.public_send(method_name, filespec, symbolize_names: true) + key_classes = parsed_object.keys.map(&:class) + assert_include(key_classes, Symbol) + assert_not_include(key_classes, String) + end + end + + def temp_file_containing(text, file_prefix = '') + raise "This method must be called with a code block." unless block_given? + + Tempfile.create(file_prefix) do |file| + file << text + file.close + yield file.path + end + end +end diff --git a/test/json/json_encoding_test.rb b/test/json/json_encoding_test.rb new file mode 100644 index 000000000..7ac06b2a7 --- /dev/null +++ b/test/json/json_encoding_test.rb @@ -0,0 +1,275 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONEncodingTest < Test::Unit::TestCase + include JSON + + def setup + @utf_8 = '"© ≠ €!"' + @ascii_8bit = @utf_8.b + @parsed = "© ≠ €!" + @generated = '"\u00a9 \u2260 \u20ac!"' + @utf_16_data = @parsed.encode(Encoding::UTF_16BE, Encoding::UTF_8) + @utf_16be = @utf_8.encode(Encoding::UTF_16BE, Encoding::UTF_8) + @utf_16le = @utf_8.encode(Encoding::UTF_16LE, Encoding::UTF_8) + @utf_32be = @utf_8.encode(Encoding::UTF_32BE, Encoding::UTF_8) + @utf_32le = @utf_8.encode(Encoding::UTF_32LE, Encoding::UTF_8) + end + + def test_parse + assert_equal @parsed, JSON.parse(@ascii_8bit) + assert_equal @parsed, JSON.parse(@utf_8) + assert_equal @parsed, JSON.parse(@utf_16be) + assert_equal @parsed, JSON.parse(@utf_16le) + assert_equal @parsed, JSON.parse(@utf_32be) + assert_equal @parsed, JSON.parse(@utf_32le) + end + + def test_generate + assert_equal @generated, JSON.generate(@parsed, ascii_only: true) + assert_equal @generated, JSON.generate(@utf_16_data, ascii_only: true) + end + + def test_generate_shared_string + # Ref: https://github.com/ruby/json/issues/859 + s = "01234567890" + assert_equal '"234567890"', JSON.dump(s[2..-1]) + s = '01234567890123456789"a"b"c"d"e"f"g"h' + assert_equal '"\"a\"b\"c\"d\"e\"f\"g\""', JSON.dump(s[20, 15]) + s = "0123456789001234567890012345678900123456789001234567890" + assert_equal '"23456789001234567890012345678900123456789001234567890"', JSON.dump(s[2..-1]) + s = "0123456789001234567890012345678900123456789001234567890" + assert_equal '"567890012345678900123456789001234567890012345678"', JSON.dump(s[5..-3]) + end + + def test_unicode + assert_equal '""', ''.to_json + assert_equal '"\\b"', "\b".to_json + assert_equal '"\u0001"', 0x1.chr.to_json + assert_equal '"\u001f"', 0x1f.chr.to_json + assert_equal '" "', ' '.to_json + assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json + utf8 = ["© ≠ €! \01"] + json = '["© ≠ €! \u0001"]' + assert_equal json, utf8.to_json(ascii_only: false) + assert_equal utf8, parse(json) + json = '["\u00a9 \u2260 \u20ac! \u0001"]' + assert_equal json, utf8.to_json(ascii_only: true) + assert_equal utf8, parse(json) + utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"] + json = "[\"\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212\"]" + assert_equal utf8, parse(json) + assert_equal json, utf8.to_json(ascii_only: false) + utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"] + assert_equal utf8, parse(json) + json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]" + assert_equal json, utf8.to_json(ascii_only: true) + assert_equal utf8, parse(json) + utf8 = ['საქართველო'] + json = '["საქართველო"]' + assert_equal json, utf8.to_json(ascii_only: false) + json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]" + assert_equal json, utf8.to_json(ascii_only: true) + assert_equal utf8, parse(json) + assert_equal '["Ã"]', generate(["Ã"], ascii_only: false) + assert_equal '["\\u00c3"]', generate(["Ã"], ascii_only: true) + assert_equal ["€"], parse('["\u20ac"]') + utf8 = ["\xf0\xa0\x80\x81"] + json = "[\"\xf0\xa0\x80\x81\"]" + assert_equal json, generate(utf8, ascii_only: false) + assert_equal utf8, parse(json) + json = '["\ud840\udc01"]' + assert_equal json, generate(utf8, ascii_only: true) + assert_equal utf8, parse(json) + assert_raise(JSON::ParserError) { parse('"\u"') } + assert_raise(JSON::ParserError) { parse('"\ud800"') } + end + + def test_chars + (0..0x7f).each do |i| + json = '"\u%04x"' % i + i = i.chr + assert_equal i, parse(json)[0] + if i == "\b" + generated = generate(i) + assert ['"\b"', '"\10"'].include?(generated) + elsif ["\n", "\r", "\t", "\f"].include?(i) + assert_equal i.dump, generate(i) + elsif i.chr < 0x20.chr + assert_equal json, generate(i) + end + end + assert_raise(JSON::GeneratorError) do + generate(["\x80"], ascii_only: true) + end + assert_equal "\302\200", parse('"\u0080"') + end + + def test_deeply_nested_structures + # Test for deeply nested arrays + nesting_level = 100 + deeply_nested = [] + current = deeply_nested + + (nesting_level - 1).times do + current << [] + current = current[0] + end + + json = generate(deeply_nested) + assert_equal deeply_nested, parse(json) + + # Test for deeply nested objects/hashes + deeply_nested_hash = {} + current_hash = deeply_nested_hash + + (nesting_level - 1).times do |i| + current_hash["key#{i}"] = {} + current_hash = current_hash["key#{i}"] + end + + json = generate(deeply_nested_hash) + assert_equal deeply_nested_hash, parse(json) + end + + def test_very_large_json_strings + # Create a large array with repeated elements + large_array = Array.new(10_000) { |i| "item#{i}" } + + json = generate(large_array) + parsed = parse(json) + + assert_equal large_array.size, parsed.size + assert_equal large_array.first, parsed.first + assert_equal large_array.last, parsed.last + + # Create a large hash + large_hash = {} + 10_000.times { |i| large_hash["key#{i}"] = "value#{i}" } + + json = generate(large_hash) + parsed = parse(json) + + assert_equal large_hash.size, parsed.size + assert_equal large_hash["key0"], parsed["key0"] + assert_equal large_hash["key9999"], parsed["key9999"] + end + + def test_invalid_utf8_sequences + invalid_utf8 = "\xFF\xFF" + error = assert_raise(JSON::GeneratorError) do + generate(invalid_utf8) + end + assert_match(%r{source sequence is illegal/malformed utf-8}, error.message) + end + + def test_surrogate_pair_handling + # Test valid surrogate pairs + assert_equal "\u{10000}", parse('"\ud800\udc00"') + assert_equal "\u{10FFFF}", parse('"\udbff\udfff"') + + # The existing test already checks for orphaned high surrogate + assert_raise(JSON::ParserError) { parse('"\ud800"') } + + # Test generating surrogate pairs + utf8_string = "\u{10437}" + generated = generate(utf8_string, ascii_only: true) + assert_match(/\\ud801\\udc37/, generated) + end + + def test_json_escaping_edge_cases + # Test escaping forward slashes + assert_equal "/", parse('"\/"') + + # Test escaping backslashes + assert_equal "\\", parse('"\\\\"') + + # Test escaping quotes + assert_equal '"', parse('"\\""') + + # Multiple escapes in sequence - different JSON parsers might handle escaped forward slashes differently + # Some parsers preserve the escaping, others don't + escaped_result = parse('"\\\\\\"\\/"') + assert_match(/\\"/, escaped_result) + assert_match(%r{/}, escaped_result) + + # Generate string with all special characters + special_chars = "\b\f\n\r\t\"\\" + escaped_json = generate(special_chars) + assert_equal special_chars, parse(escaped_json) + end + + def test_empty_objects_and_arrays + # Test empty objects with different encodings + assert_equal({}, parse('{}')) + assert_equal({}, parse('{}'.encode(Encoding::UTF_16BE))) + assert_equal({}, parse('{}'.encode(Encoding::UTF_16LE))) + assert_equal({}, parse('{}'.encode(Encoding::UTF_32BE))) + assert_equal({}, parse('{}'.encode(Encoding::UTF_32LE))) + + # Test empty arrays with different encodings + assert_equal([], parse('[]')) + assert_equal([], parse('[]'.encode(Encoding::UTF_16BE))) + assert_equal([], parse('[]'.encode(Encoding::UTF_16LE))) + assert_equal([], parse('[]'.encode(Encoding::UTF_32BE))) + assert_equal([], parse('[]'.encode(Encoding::UTF_32LE))) + + # Test generating empty objects and arrays + assert_equal '{}', generate({}) + assert_equal '[]', generate([]) + end + + def test_null_character_handling + # Test parsing null character + assert_equal "\u0000", parse('"\u0000"') + + # Test generating null character + string_with_null = "\u0000" + generated = generate(string_with_null) + assert_equal '"\u0000"', generated + + # Test null characters in middle of string + mixed_string = "before\u0000after" + generated = generate(mixed_string) + assert_equal mixed_string, parse(generated) + end + + def test_whitespace_handling + # Test parsing with various whitespace patterns + assert_equal({}, parse(' { } ')) + assert_equal({}, parse("{\r\n}")) + assert_equal([], parse(" [ \n ] ")) + assert_equal(["a", "b"], parse(" [ \n\"a\",\r\n \"b\"\n ] ")) + assert_equal({ "a" => "b" }, parse(" { \n\"a\" \r\n: \t\"b\"\n } ")) + + # Test with excessive whitespace + excessive_whitespace = " \n\r\t" * 10 + "{}" + " \n\r\t" * 10 + assert_equal({}, parse(excessive_whitespace)) + + # Mixed whitespace in keys and values + mixed_json = '{"a \n b":"c \r\n d"}' + assert_equal({ "a \n b" => "c \r\n d" }, parse(mixed_json)) + end + + def test_control_character_handling + # Test all control characters (U+0000 to U+001F) + (0..0x1F).each do |i| + # Skip already tested ones + next if [0x08, 0x0A, 0x0D, 0x0C, 0x09].include?(i) + + control_char = i.chr('UTF-8') + escaped_json = '"' + "\\u%04x" % i + '"' + assert_equal control_char, parse(escaped_json) + + # Check that the character is properly escaped when generating + assert_match(/\\u00[0-1][0-9a-f]/, generate(control_char)) + end + + # Test string with multiple control characters + control_str = "\u0001\u0002\u0003\u0004" + generated = generate(control_str) + assert_equal control_str, parse(generated) + assert_match(/\\u0001\\u0002\\u0003\\u0004/, generated) + end +end diff --git a/test/json/json_ext_parser_test.rb b/test/json/json_ext_parser_test.rb new file mode 100644 index 000000000..8b10146ad --- /dev/null +++ b/test/json/json_ext_parser_test.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONExtParserTest < Test::Unit::TestCase + include JSON + + def test_allocate + parser = JSON::Ext::Parser.new("{}") + parser.__send__(:initialize, "{}") + assert_equal "{}", parser.source + + parser = JSON::Ext::Parser.allocate + assert_nil parser.source + end + + def test_error_messages + ex = assert_raise(ParserError) { parse('Infinity something') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "unexpected token 'Infinity' at line 1 column 1", ex.message + end + + ex = assert_raise(ParserError) { parse('foo bar') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "unexpected token 'foo' at line 1 column 1", ex.message + end + + ex = assert_raise(ParserError) { parse('-Infinity something') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "invalid number: '-Infinity' at line 1 column 1", ex.message + end + + ex = assert_raise(ParserError) { parse('NaN something') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "unexpected token 'NaN' at line 1 column 1", ex.message + end + + ex = assert_raise(ParserError) { parse(' ') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "unexpected end of input at line 1 column 4", ex.message + end + + ex = assert_raise(ParserError) { parse('{ ') } + unless RUBY_PLATFORM =~ /java/ + assert_equal "expected object key, got EOF at line 1 column 5", ex.message + end + end + + if GC.respond_to?(:stress=) + def test_gc_stress_parser_new + payload = JSON.dump([{ foo: 1, bar: 2, baz: 3, egg: { spam: 4 } }] * 10) + + previous_stress = GC.stress + JSON::Parser.new(payload).parse + ensure + GC.stress = previous_stress + end + + def test_gc_stress + payload = JSON.dump([{ foo: 1, bar: 2, baz: 3, egg: { spam: 4 } }] * 10) + + previous_stress = GC.stress + JSON.parse(payload) + ensure + GC.stress = previous_stress + end + end + + def parse(json) + JSON::Ext::Parser.new(json).parse + end +end diff --git a/test/json/json_fixtures_test.rb b/test/json/json_fixtures_test.rb new file mode 100644 index 000000000..a3f114c41 --- /dev/null +++ b/test/json/json_fixtures_test.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONFixturesTest < Test::Unit::TestCase + fixtures = File.join(File.dirname(__FILE__), 'fixtures/{fail,pass}*.json') + passed, failed = Dir[fixtures].partition { |f| f['pass'] } + + passed.each do |f| + name = File.basename(f).gsub(".", "_") + source = File.read(f) + define_method("test_#{name}") do + assert JSON.parse(source), "Did not pass for fixture '#{File.basename(f)}': #{source.inspect}" + rescue JSON::ParserError + raise "#{File.basename(f)} parsing failure" + end + end + + failed.each do |f| + name = File.basename(f).gsub(".", "_") + source = File.read(f) + define_method("test_#{name}") do + assert_raise(JSON::ParserError, JSON::NestingError, + "Did not fail for fixture '#{name}': #{source.inspect}") do + JSON.parse(source) + end + end + end +end diff --git a/test/json/json_float_parser_fallback_test.rb b/test/json/json_float_parser_fallback_test.rb new file mode 100644 index 000000000..97423837b --- /dev/null +++ b/test/json/json_float_parser_fallback_test.rb @@ -0,0 +1,188 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONFloatParserFallbackTest < Test::Unit::TestCase + include JSON + + # Test that numbers with more than 18 significant digits fall back to rb_cstr_to_dbl + def test_more_than_18_significant_digits + # These numbers have > 18 significant digits and should use fallback path. + # They should still parse correctly, just not via the Fast Float optimization + + # input, expected (rounded to double precision) + assert_float_parsing "1.23456789012345678901234567890" + assert_float_parsing "123456789012345678.901234567890" + assert_float_parsing "0.123456789012345678901234567890" + assert_float_parsing "9999999999999999999999999999.9" + + # Edge case: exactly 18 digits + assert_float_parsing "123456789012345678.0" + + # Many fractional digits + assert_float_parsing "0.12345678901234567890123456789" + end + + # Test decimal_class option forces fallback + def test_decimal_class_option + input = "3.141" + + # Without decimal_class: uses Ryu, returns Float + result_float = JSON.parse(input) + assert_instance_of(Float, result_float) + assert_equal(3.141, result_float) + + # With decimal_class: uses fallback, returns BigDecimal + result_bigdecimal = JSON.parse(input, decimal_class: BigDecimal) + assert_instance_of(BigDecimal, result_bigdecimal) + assert_equal(BigDecimal("3.141"), result_bigdecimal) + end if defined?(::BigDecimal) + + # Test that numbers with <= 17 digits use Ryu optimization + def test_ryu_optimization_used_for_normal_numbers + test_cases = [ + ["3.141", 3.141], + ["1.23456789012345e100", 1.23456789012345e100], + ["0.00000000000001", 1.0e-14], + ["123456789012345.67", 123456789012345.67], + ["-1.7976931348623157e+308", -1.7976931348623157e+308], + ["2.2250738585072014e-308", 2.2250738585072014e-308], + # Exactly 17 significant digits + ["12345678901234567", 12345678901234567.0], + ["1.2345678901234567", 1.2345678901234567], + ] + + test_cases.each do |input, expected| + result = JSON.parse(input) + assert_in_delta(expected, result, expected.abs * 1e-15, + "Failed to parse #{input} correctly (<=17 digits, Ryu path)") + end + end + + # Test edge cases at the boundary (17 digits) + def test_seventeen_digit_boundary + # Exactly 17 significant digits should use Ryu + input_17 = "12345678901234567.0" # Force it to be a float with .0 + result = JSON.parse(input_17) + assert_in_delta(12345678901234567.0, result, 1e-10) + + # 18 significant digits should use fallback + input_18 = "123456789012345678.0" + result = JSON.parse(input_18) + # Note: This will be rounded to double precision + assert_in_delta(123456789012345680.0, result, 1e-10) + end + + # Test that leading zeros don't count toward the 17-digit limit + def test_leading_zeros_dont_count + test_cases = [ + ["0.00012345678901234567", 0.00012345678901234567], # 17 significant digits + ["0.000000000000001234567890123456789", 1.234567890123457e-15], # >17 significant + ] + + test_cases.each do |input, expected| + result = JSON.parse(input) + assert_in_delta(expected, result, expected.abs * 1e-10, + "Failed to parse #{input} correctly") + end + end + + # Test that Ryu handles special values correctly + def test_special_double_values + test_cases = [ + ["1.7976931348623157e+308", Float::MAX], # Largest finite double + ["2.2250738585072014e-308", Float::MIN], # Smallest normalized double + ] + + test_cases.each do |input, expected| + result = JSON.parse(input) + assert_in_delta(expected, result, expected.abs * 1e-10, + "Failed to parse #{input} correctly") + end + + # Test zero separately + result_pos_zero = JSON.parse("0.0") + assert_equal(0.0, result_pos_zero) + + # Note: JSON.parse doesn't preserve -0.0 vs +0.0 distinction in standard mode + result_neg_zero = JSON.parse("-0.0") + assert_equal(0.0, result_neg_zero.abs) + end + + # Test subnormal numbers that caused precision issues before fallback was added + # These are extreme edge cases discovered by fuzzing (4 in 6 billion numbers tested) + def test_subnormal_edge_cases_round_trip + # These subnormal numbers (~1e-310) had 1 ULP rounding errors in original Ryu + # They now use rb_cstr_to_dbl fallback for exact precision + test_cases = [ + "-3.2652630314355e-310", + "3.9701623107025e-310", + "-3.6607772435415e-310", + "2.9714076801985e-310", + ] + + test_cases.each do |input| + # Parse the number + result = JSON.parse(input) + + # Should be bit-identical + assert_equal(result, JSON.parse(result.to_s), + "Subnormal #{input} failed round-trip test") + + # Should be bit-identical + assert_equal(result, JSON.parse(JSON.dump(result)), + "Subnormal #{input} failed round-trip test") + + # Verify the value is in the expected subnormal range + assert(result.abs < 2.225e-308, + "#{input} should be subnormal (< 2.225e-308)") + end + end + + # Test invalid numbers are properly rejected + def test_invalid_numbers_rejected + invalid_cases = [ + "-", + ".", + "-.", + "-.e10", + "1.2.3", + "1e", + "1e+", + ] + + invalid_cases.each do |input| + assert_raise(JSON::ParserError, "Should reject invalid number: #{input}") do + JSON.parse(input) + end + end + end + + def test_large_exponent_numbers + assert_equal Float::INFINITY, JSON.parse("1e4294967296") + assert_equal 0.0, JSON.parse("1e-4294967296") + assert_equal 0.0, JSON.parse("99999999999999999e-4294967296") + assert_equal Float::INFINITY, JSON.parse("1e4294967295") + assert_equal Float::INFINITY, JSON.parse("1e4294967297") + + assert_equal(-Float::INFINITY, JSON.parse("-1e4294967296")) + assert_equal(-0.0, JSON.parse("-1e-4294967296")) + assert_equal(-0.0, JSON.parse("-99999999999999999e-4294967296")) + assert_equal(-Float::INFINITY, JSON.parse("-1e4294967295")) + assert_equal(-Float::INFINITY, JSON.parse("-1e4294967297")) + + assert_equal(Float::INFINITY, JSON.parse("1e9223372036854775808")) + assert_equal(Float::INFINITY, JSON.parse("1e9999999999999999999")) + assert_equal(Float::INFINITY, JSON.parse("1e18446744073709551616")) + assert_equal(Float::INFINITY, JSON.parse("1e10000000000000000000")) + assert_equal(Float::INFINITY, JSON.parse("1e184467440737095516160")) + assert_equal 0.0, JSON.parse("1e-18446744073709551615") + assert_equal 0.0, JSON.parse("1e-9223372036854775809") + end + + private + + def assert_float_parsing(number) + assert_equal(Float(number), JSON.parse(number), "Failed to parse #{number} correctly") + end +end diff --git a/test/json/json_generator_test.rb b/test/json/json_generator_test.rb new file mode 100755 index 000000000..c4b1a8ace --- /dev/null +++ b/test/json/json_generator_test.rb @@ -0,0 +1,1531 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONGeneratorTest < Test::Unit::TestCase + include JSON + + def setup + @hash = { + 'a' => 2, + 'b' => 3.141, + 'c' => 'c', + 'd' => [ 1, "b", 3.14 ], + 'e' => { 'foo' => 'bar' }, + 'g' => "\"\0\037", + 'h' => 1000.0, + 'i' => 0.001 + } + @json2 = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' + + '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}' + @json3 = <<~'JSON'.chomp + { + "a": 2, + "b": 3.141, + "c": "c", + "d": [ + 1, + "b", + 3.14 + ], + "e": { + "foo": "bar" + }, + "g": "\"\u0000\u001f", + "h": 1000.0, + "i": 0.001 + } + JSON + end + + def test_generate + json = generate(@hash) + assert_equal(parse(@json2), parse(json)) + json = JSON[@hash] + assert_equal(parse(@json2), parse(json)) + parsed_json = parse(json) + assert_equal(@hash, parsed_json) + json = generate({1=>2}) + assert_equal('{"1":2}', json) + parsed_json = parse(json) + assert_equal({"1"=>2}, parsed_json) + assert_equal '666', generate(666) + end + + def test_dump_unenclosed_hash + assert_equal '{"a":1,"b":2}', dump(a: 1, b: 2) + end + + def test_dump_strict + assert_equal '{}', dump({}, strict: true) + + assert_equal '{"array":[42,4.2,"forty-two",true,false,null]}', dump({ + "array" => [42, 4.2, "forty-two", true, false, nil] + }, strict: true) + + assert_equal '{"int":42,"float":4.2,"string":"forty-two","true":true,"false":false,"nil":null,"hash":{}}', dump({ + "int" => 42, + "float" => 4.2, + "string" => "forty-two", + "true" => true, + "false" => false, + "nil" => nil, + "hash" => {}, + }, strict: true) + + assert_equal '[]', dump([], strict: true) + + assert_equal '42', dump(42, strict: true) + assert_equal 'true', dump(true, strict: true) + + assert_equal '"hello"', dump(:hello, strict: true) + assert_equal '"hello"', :hello.to_json(strict: true) + assert_equal '"World"', "World".to_json(strict: true) + assert_equal '["hello"]', dump([:hello], strict: true) + assert_equal '{"hello":"world"}', dump({ hello: :world }, strict: true) + end + + def test_dump_deprecated_limit + io = StringIO.new + JSON.dump([1], io, 0) + assert_equal '[1]', io.string + end + + def test_dump_string_mutated_during_io_write + [{}, {ascii_only: true}, {script_safe: true}, {buffer_initial_length: 1}].each do |options| + ['a', "a\né/"].each do |pattern| + string = pattern * 100_000 + assert_dump_preserves_string_during_io_write(string, string, options) + end + end + end + + def test_dump_fragment_mutated_during_io_write + string = JSON.generate('a' * 100_000) + assert_dump_preserves_string_during_io_write(JSON::Fragment.new(string), string) + end + + def test_dump_to_json_result_mutated_during_io_write + string = JSON.generate('a' * 100_000) + object = Object.new + object.define_singleton_method(:to_json) { |*| string } + assert_dump_preserves_string_during_io_write(object, string) + end + + def assert_dump_preserves_string_during_io_write(object, string, options = {}) + expected = JSON.dump([object], options) + io = StringIO.new + mutated = false + io.define_singleton_method(:write) do |chunk| + unless mutated + string.setbyte(0, 'b'.ord) + string.replace('changed') + mutated = true + GC.start + end + super(chunk) + end + assert_same io, JSON.dump([object], io, options) + assert_equal 'changed', string + assert_equal true, expected == io.string, 'IO output must preserve the original string' + end + + def test_not_frozen + [ + [[], '[]'], + [{}, '{}'], + ["string", '"string"'], + [:sym, '"sym"'], + [1, '1'], + [1.0, '1.0'], + [true, 'true'], + [false, 'false'], + [nil, 'null'], + ].each do |(obj, exp)| + dumped = dump(obj, strict: true) + assert_equal exp, dumped + refute_predicate dumped, :frozen? + end + end + + def test_state_depth_to_json + depth = Object.new + def depth.to_json(state) + JSON::State.from_state(state).depth.to_s + end + + assert_equal "0", JSON.generate(depth) + assert_equal "[1]", JSON.generate([depth]) + assert_equal %({"depth":1}), JSON.generate(depth: depth) + assert_equal "[[2]]", JSON.generate([[depth]]) + assert_equal %([{"depth":2}]), JSON.generate([{depth: depth}]) + + state = JSON::State.new + assert_equal "0", state.generate(depth) + assert_equal "[1]", state.generate([depth]) + assert_equal %({"depth":1}), state.generate(depth: depth) + assert_equal "[[2]]", state.generate([[depth]]) + assert_equal %([{"depth":2}]), state.generate([{depth: depth}]) + end + + def test_state_depth_to_json_recursive + recur = Object.new + def recur.to_json(state = nil, *) + state = JSON::State.from_state(state) + if state.depth < 3 + state.generate([state.depth, self]) + else + state.generate([state.depth]) + end + end + + assert_raise(NestingError) { JSON.generate(recur, max_nesting: 3) } + assert_equal "[0,[1,[2,[3]]]]", JSON.generate(recur, max_nesting: 4) + + state = JSON::State.new(max_nesting: 3) + assert_raise(NestingError) { state.generate(recur) } + state.max_nesting = 4 + assert_equal "[0,[1,[2,[3]]]]", JSON.generate(recur, max_nesting: 4) + end + + def test_generate_pretty + json = pretty_generate({}) + assert_equal('{}', json) + + json = pretty_generate({1=>{}, 2=>[], 3=>4}) + assert_equal(<<~'JSON'.chomp, json) + { + "1": {}, + "2": [], + "3": 4 + } + JSON + + json = pretty_generate(@hash) + # hashes aren't (insertion) ordered on every ruby implementation + # assert_equal(@json3, json) + assert_equal(parse(@json3), parse(json)) + parsed_json = parse(json) + assert_equal(@hash, parsed_json) + json = pretty_generate({1=>2}) + assert_equal(<<~'JSON'.chomp, json) + { + "1": 2 + } + JSON + parsed_json = parse(json) + assert_equal({"1"=>2}, parsed_json) + assert_equal '666', pretty_generate(666) + end + + def test_generate_pretty_custom + state = State.new(space_before: "", space: "", indent: "", object_nl: "\n\n", array_nl: "") + json = pretty_generate({1=>{}, 2=>['a','b'], 3=>4}, state) + assert_equal(<<~'JSON'.chomp, json) + { + + "1":{}, + + "2":["a","b"], + + "3":4 + + } + JSON + end + + def test_generate_sort_keys + json = generate({2=>"a", 1=>"b", 3=>"c"}, sort_keys: true) + assert_equal('{"1":"b","2":"a","3":"c"}', json) + + json = generate({2=>"a", 1=>"b", 3=>"c"}, sort_keys: false) + assert_equal('{"2":"a","1":"b","3":"c"}', json) + + json = pretty_generate({2=>"a", 1=>"b", 3=>"c"}, sort_keys: true) + assert_equal(<<~'JSON'.chomp, json) + { + "1": "b", + "2": "a", + "3": "c" + } + JSON + + json = pretty_generate({2=>"a", 1=>"b", 3=>"c"}, sort_keys: false) + assert_equal(<<~'JSON'.chomp, json) + { + "2": "a", + "1": "b", + "3": "c" + } + JSON + + json = pretty_generate({2=>"a", 1=>"b", 3=>"c"}) + assert_equal(<<~'JSON'.chomp, json) + { + "2": "a", + "1": "b", + "3": "c" + } + JSON + end + + def test_generate_sort_keys_with_proc + reverse = ->(hash) { hash.sort.reverse.to_h } + json = generate({2=>"a", 1=>"b", 3=>"c"}, sort_keys: reverse) + assert_equal('{"3":"c","2":"a","1":"b"}', json) + + by_value = ->(hash) { hash.sort_by { |_k, v| v }.to_h } + json = generate({2=>"c", 1=>"a", 3=>"b"}, sort_keys: by_value) + assert_equal('{"1":"a","3":"b","2":"c"}', json) + + state = State.new(sort_keys: reverse) + assert_same reverse, state.to_h[:sort_keys] + assert_equal('{"3":"c","2":"a","1":"b"}', state.generate({2=>"a", 1=>"b", 3=>"c"})) + + # A truthy sort_keys is normalized to the default sorting proc. + state = State.new(sort_keys: true) + assert_instance_of Proc, state.sort_keys + end + + def test_generate_custom + state = State.new(space_before: " ", space: " ", indent: "", object_nl: "\n", array_nl: "") + json = generate({1=>{2=>3,4=>[5,6]}}, state) + assert_equal(<<~'JSON'.chomp, json) + { + "1" : { + "2" : 3, + "4" : [5,6] + } + } + JSON + end + + def test_own_state + state = State.new + json = generate(@hash, state) + assert_equal(parse(@json2), parse(json)) + parsed_json = parse(json) + assert_equal(@hash, parsed_json) + json = generate({1=>2}, state) + assert_equal('{"1":2}', json) + parsed_json = parse(json) + assert_equal({"1"=>2}, parsed_json) + assert_equal '666', generate(666, state) + end + + def test_states + json = generate({1=>2}, nil) + assert_equal('{"1":2}', json) + s = JSON.state.new + h = { 1=>2 } + h[3] = h + assert_raise(JSON::NestingError) { generate(h) } + assert_raise(JSON::NestingError) { generate(h, s) } + s = JSON.state.new + a = [ 1, 2 ] + a << a + assert_raise(JSON::NestingError) { generate(a, s) } + end + + def test_falsy_state + object = { foo: [1, 2], bar: { egg: :spam }} + expected_json = JSON.generate( + object, + array_nl: "", + indent: "", + object_nl: "", + space: "", + space_before: "", + ) + + assert_equal expected_json, JSON.generate( + object, + array_nl: nil, + indent: nil, + object_nl: nil, + space: nil, + space_before: nil, + ) + end + + def test_state_defaults + state = JSON::State.new + assert_equal({ + allow_duplicate_key: false, + allow_nan: false, + array_nl: "", + as_json: false, + ascii_only: false, + buffer_initial_length: 1024, + depth: 0, + script_safe: false, + strict: false, + indent: "", + max_nesting: 100, + object_nl: "", + space: "", + space_before: "", + sort_keys: false, + rfc8785: false, + }.sort_by { |n,| n.to_s }.to_h, state.to_h.sort_by { |n,| n.to_s }.to_h) + + state = JSON::State.new(allow_duplicate_key: true) + assert_equal({ + allow_duplicate_key: true, + allow_nan: false, + array_nl: "", + as_json: false, + ascii_only: false, + buffer_initial_length: 1024, + depth: 0, + script_safe: false, + strict: false, + indent: "", + max_nesting: 100, + object_nl: "", + space: "", + space_before: "", + sort_keys: false, + rfc8785: false, + }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s }) + end + + def test_allow_nan + error = assert_raise(GeneratorError) { generate([JSON::NaN]) } + assert_same JSON::NaN, error.invalid_object + assert_equal '[NaN]', generate([JSON::NaN], allow_nan: true) + assert_raise(GeneratorError) { generate([JSON::NaN]) } + assert_raise(GeneratorError) { pretty_generate([JSON::NaN]) } + assert_equal "[\n NaN\n]", pretty_generate([JSON::NaN], allow_nan: true) + error = assert_raise(GeneratorError) { generate([JSON::Infinity]) } + assert_same JSON::Infinity, error.invalid_object + assert_equal '[Infinity]', generate([JSON::Infinity], allow_nan: true) + assert_raise(GeneratorError) { generate([JSON::Infinity]) } + assert_raise(GeneratorError) { pretty_generate([JSON::Infinity]) } + assert_equal "[\n Infinity\n]", pretty_generate([JSON::Infinity], allow_nan: true) + error = assert_raise(GeneratorError) { generate([JSON::MinusInfinity]) } + assert_same JSON::MinusInfinity, error.invalid_object + assert_equal '[-Infinity]', generate([JSON::MinusInfinity], allow_nan: true) + assert_raise(GeneratorError) { generate([JSON::MinusInfinity]) } + assert_raise(GeneratorError) { pretty_generate([JSON::MinusInfinity]) } + assert_equal "[\n -Infinity\n]", pretty_generate([JSON::MinusInfinity], allow_nan: true) + end + + # An object that changes state.depth when it receives to_json(state) + def bad_to_json + obj = Object.new + def obj.to_json(state) + state.depth += 1 + "{#{state.object_nl}"\ + "#{state.indent * state.depth}\"foo\":#{state.space}1#{state.object_nl}"\ + "#{state.indent * (state.depth - 1)}}" + end + obj + end + + def test_depth_restored_bad_to_json + state = JSON::State.new + state.generate(bad_to_json) + assert_equal 0, state.depth + end + + def test_depth_restored_bad_to_json_in_Array + assert_equal <<~JSON.chomp, JSON.pretty_generate([bad_to_json] * 2) + [ + { + "foo": 1 + }, + { + "foo": 1 + } + ] + JSON + state = JSON::State.new + state.generate([bad_to_json]) + assert_equal 0, state.depth + end + + def test_depth_restored_bad_to_json_in_Hash + assert_equal <<~JSON.chomp, JSON.pretty_generate(a: bad_to_json, b: bad_to_json) + { + "a": { + "foo": 1 + }, + "b": { + "foo": 1 + } + } + JSON + state = JSON::State.new + state.generate(a: bad_to_json) + assert_equal 0, state.depth + end + + def test_depth + pretty = { object_nl: "\n", array_nl: "\n", space: " ", indent: " " } + state = JSON.state.new(**pretty) + assert_equal %({\n "foo": 42\n}), JSON.generate({ foo: 42 }, pretty) + assert_equal %({\n "foo": 42\n}), state.generate(foo: 42) + state.depth = 1 + assert_equal %({\n "foo": 42\n }), JSON.generate({ foo: 42 }, pretty.merge(depth: 1)) + assert_equal %({\n "foo": 42\n }), state.generate(foo: 42) + end + + def test_depth_nesting_error + ary = []; ary << ary + assert_raise(JSON::NestingError) { generate(ary) } + assert_raise(JSON::NestingError) { JSON.pretty_generate(ary) } + end + + def test_nesting_error_reports_attempted_depth + [[[]], { a: {} }].each do |object| + [0, 1].each do |depth| + state = JSON.state.new(depth: depth, max_nesting: depth + 1) + error = assert_raise(JSON::NestingError) { state.generate(object) } + assert_match(/\Anesting of #{depth + 2} is too deep\./, error.message) + assert_equal depth, state.depth + assert_equal '[]', state.generate([]) + end + end + end + + def test_depth_nesting_error_to_json + ary = []; ary << ary + s = JSON.state.new(depth: 1) + assert_raise(JSON::NestingError) { ary.to_json(s) } + assert_equal 1, s.depth + end + + def test_depth_nesting_error_Hash_to_json + hash = {}; hash[:a] = hash + s = JSON.state.new(depth: 1) + assert_raise(JSON::NestingError) { hash.to_json(s) } + assert_equal 1, s.depth + end + + def test_depth_nesting_error_generate + ary = []; ary << ary + s = JSON.state.new(depth: 1) + assert_raise(JSON::NestingError) { s.generate(ary) } + assert_equal 1, s.depth + end + + def test_depth_exception_calling_to_json + def (obj = Object.new).to_json(*) + raise + end + s = JSON.state.new(depth: 1).freeze + assert_raise(RuntimeError) { s.generate([{ hash: obj }]) } + assert_equal 1, s.depth + end + + def test_buffer_initial_length + s = JSON.state.new + assert_equal 1024, s.buffer_initial_length + s.buffer_initial_length = 0 + assert_equal 1024, s.buffer_initial_length + s.buffer_initial_length = -1 + assert_equal 1024, s.buffer_initial_length + s.buffer_initial_length = 128 + assert_equal 128, s.buffer_initial_length + end + + def test_gc + pid = fork do + bignum_too_long_to_embed_as_string = 1234567890123456789012345 + expect = bignum_too_long_to_embed_as_string.to_s + GC.stress = true + + 10.times do |i| + tmp = bignum_too_long_to_embed_as_string.to_json + raise "#{expect}' is expected, but '#{tmp}'" unless tmp == expect + end + end + _, status = Process.waitpid2(pid) + assert_predicate status, :success? + end if GC.respond_to?(:stress=) && Process.respond_to?(:fork) + + def test_configure_using_configure_and_merge + numbered_state = { + indent: "1", + space: '2', + space_before: '3', + object_nl: '4', + array_nl: '5' + } + state1 = JSON.state.new + state1.merge(numbered_state) + assert_equal '1', state1.indent + assert_equal '2', state1.space + assert_equal '3', state1.space_before + assert_equal '4', state1.object_nl + assert_equal '5', state1.array_nl + state2 = JSON.state.new + state2.configure(numbered_state) + assert_equal '1', state2.indent + assert_equal '2', state2.space + assert_equal '3', state2.space_before + assert_equal '4', state2.object_nl + assert_equal '5', state2.array_nl + end + + def test_configure_only_writes_the_string_options_it_is_given + state = JSON.state.new(indent: '1', space: '2', space_before: '3', object_nl: '4', array_nl: '5') + state.configure(space: '9') + assert_equal '1', state.indent + assert_equal '9', state.space + assert_equal '3', state.space_before + assert_equal '4', state.object_nl + assert_equal '5', state.array_nl + state.merge(array_nl: '8') + assert_equal '1', state.indent + assert_equal '9', state.space + assert_equal '3', state.space_before + assert_equal '4', state.object_nl + assert_equal '8', state.array_nl + end + + def test_configure_keeps_the_layout_of_a_pretty_state + state = JSON.state.new(indent: ' ', object_nl: "\n", array_nl: "\n") + state.configure(depth: 0) + assert_equal %({\n "foo":[\n 1\n ]\n}), state.generate({ 'foo' => [1] }) + end + + def test_configure_only_writes_the_other_options_it_is_given + state = JSON.state.new(max_nesting: 3, allow_nan: true, ascii_only: true, script_safe: true, + strict: true, buffer_initial_length: 32) + state.configure(indent: '1') + assert_equal '1', state.indent + assert_equal 3, state.max_nesting + assert_equal true, state.allow_nan? + assert_equal true, state.ascii_only? + assert_equal true, state.script_safe? + assert_equal true, state.strict? + assert_equal 32, state.buffer_initial_length + end + + def test_configure_keeps_sort_keys + state = JSON.state.new(sort_keys: true) + state.configure(depth: 0) + assert_equal '{"a":2,"b":1}', state.generate({ 'b' => 1, 'a' => 2 }) + end + + def test_configure_keeps_as_json + as_json = ->(object, _is_key) { object.to_s } + state = JSON.state.new(strict: true, as_json: as_json) + state.configure(depth: 0) + assert_equal as_json, state.as_json + end + + def test_configure_writes_a_string_option_given_as_nil + state = JSON.state.new(indent: '1', space: '2') + state.configure(indent: nil) + assert_equal '', state.indent + assert_equal '2', state.space + end + + def test_configure_hash_conversion + state = JSON.state.new + state.configure(indent: '1') + assert_equal '1', state.indent + state = JSON.state.new + foo = 'foo'.dup + assert_raise(TypeError) do + state.configure(foo) + end + def foo.to_h + { indent: '2' } + end + state.configure(foo) + assert_equal '2', state.indent + end + + def test_broken_bignum # [Bug #5173] + bignum = 1 << 64 + bignum_to_s = bignum.to_s + + original_to_s = bignum.class.instance_method(:to_s) + bignum.class.class_eval do + def to_s + nil + end + alias_method :to_s, :to_s + end + case RUBY_ENGINE + when "jruby" + assert_equal bignum_to_s, JSON.generate(bignum) + when "truffleruby" + assert_raise(NoMethodError) do + JSON.generate(bignum) + end + when "ruby" + assert_raise(TypeError) do + JSON.generate(bignum) + end + end + ensure + bignum.class.define_method(:to_s, original_to_s) if original_to_s + end + + def test_json_state_to_h_roundtrip + state = JSON.state.new + assert_equal state.to_h, JSON.state.new(state.to_h).to_h + end + + def test_json_state_to_h_ignores_instance_variables + state = JSON.state.new(indent: ' ') + expected = state.to_h + state.instance_variable_set(:@custom, 42) + state.instance_variable_set(:@enabled, false) + + assert_equal expected, state.to_h + assert_equal expected, state.to_hash + end + + def test_json_generate + assert_raise JSON::GeneratorError do + generate(["\xea"]) + end + end + + def test_json_generate_error_detailed_message + error = assert_raise JSON::GeneratorError do + generate(["\xea"]) + end + + assert_not_nil(error.detailed_message) + end + + def test_json_generate_unsupported_types + assert_raise JSON::GeneratorError do + generate(Object.new, strict: true) + end + + assert_raise JSON::GeneratorError do + generate([Object.new], strict: true) + end + + assert_raise JSON::GeneratorError do + generate({ "key" => Object.new }, strict: true) + end + + assert_raise JSON::GeneratorError do + generate({ Object.new => "value" }, strict: true) + end + end + + def test_nesting + too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' + too_deep_ary = eval too_deep + assert_raise(JSON::NestingError) { generate too_deep_ary } + assert_raise(JSON::NestingError) { generate too_deep_ary, max_nesting: 100 } + ok = generate too_deep_ary, max_nesting: 101 + assert_equal too_deep, ok + ok = generate too_deep_ary, max_nesting: nil + assert_equal too_deep, ok + ok = generate too_deep_ary, max_nesting: false + assert_equal too_deep, ok + ok = generate too_deep_ary, max_nesting: 0 + assert_equal too_deep, ok + + assert_raise(TypeError) { generate too_deep_ary, max_nesting: "garbage" } + end + + def test_backslash + data = [ '\\.(?i:gif|jpe?g|png)$' ] + json = '["\\\\.(?i:gif|jpe?g|png)$"]' + assert_equal json, generate(data) + # + data = [ '\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$\\.(?i:gif|jpe?g|png)$' ] + json = '["\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$\\\\.(?i:gif|jpe?g|png)$"]' + assert_equal json, generate(data) + # + data = [ '\\"\\"\\"\\"\\"\\"\\"\\"\\"\\"\\"' ] + json = '["\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\"\\\\\""]' + assert_equal json, generate(data) + # + data = [ '/' ] + json = '["/"]' + assert_equal json, generate(data) + # + data = [ '////////////////////////////////////////////////////////////////////////////////////' ] + json = '["////////////////////////////////////////////////////////////////////////////////////"]' + assert_equal json, generate(data) + # + data = [ '/' ] + json = '["\/"]' + assert_equal json, generate(data, script_safe: true) + # + data = [ '///////////' ] + json = '["\/\/\/\/\/\/\/\/\/\/\/"]' + assert_equal json, generate(data, script_safe: true) + # + data = [ '///////////////////////////////////////////////////////' ] + json = '["\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/"]' + assert_equal json, generate(data, script_safe: true) + # + data = [ "\u2028\u2029" ] + json = '["\u2028\u2029"]' + assert_equal json, generate(data, script_safe: true) + # + data = [ "ABC \u2028 DEF \u2029 GHI" ] + json = '["ABC \u2028 DEF \u2029 GHI"]' + assert_equal json, generate(data, script_safe: true) + # + data = [ "/\u2028\u2029" ] + json = '["\/\u2028\u2029"]' + assert_equal json, generate(data, script_safe: true) + # + data = ['"'] + json = '["\""]' + assert_equal json, generate(data) + # + data = ['"""""""""""""""""""""""""'] + json = '["\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""]' + assert_equal json, generate(data) + # + data = '"""""' + json = '"\"\"\"\"\""' + assert_equal json, generate(data) + # + data = "abc\n" + json = '"abc\\n"' + assert_equal json, generate(data) + # + data = "\nabc" + json = '"\\nabc"' + assert_equal json, generate(data) + # + data = "\n" + json = '"\\n"' + assert_equal json, generate(data) + # + (0..16).each do |i| + data = ('a' * i) + "\n" + json = '"' + ('a' * i) + '\\n"' + assert_equal json, generate(data) + end + # + (0..16).each do |i| + data = "\n" + ('a' * i) + json = '"' + '\\n' + ('a' * i) + '"' + assert_equal json, generate(data) + end + # + data = ["'"] + json = '["\\\'"]' + assert_equal '["\'"]', generate(data) + # + data = ["倩", "瀨"] + json = '["倩","瀨"]' + assert_equal json, generate(data, script_safe: true) + # + data = '["This is a "test" of the emergency broadcast system."]' + json = "\"[\\\"This is a \\\"test\\\" of the emergency broadcast system.\\\"]\"" + assert_equal json, generate(data) + # + data = '\tThis is a test of the emergency broadcast system.' + json = "\"\\\\tThis is a test of the emergency broadcast system.\"" + assert_equal json, generate(data) + # + data = 'This\tis a test of the emergency broadcast system.' + json = "\"This\\\\tis a test of the emergency broadcast system.\"" + assert_equal json, generate(data) + # + data = 'This is\ta test of the emergency broadcast system.' + json = "\"This is\\\\ta test of the emergency broadcast system.\"" + assert_equal json, generate(data) + # + data = 'This is a test of the emergency broadcast\tsystem.' + json = "\"This is a test of the emergency broadcast\\\\tsystem.\"" + assert_equal json, generate(data) + # + data = 'This is a test of the emergency broadcast\tsystem.\n' + json = "\"This is a test of the emergency broadcast\\\\tsystem.\\\\n\"" + assert_equal json, generate(data) + data = '"' * 15 + json = "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\"" + assert_equal json, generate(data) + data = "\"\"\"\"\"\"\"\"\"\"\"\"\"\"a" + json = "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"a\"" + assert_equal json, generate(data) + data = "\u0001\u0001\u0001\u0001" + json = "\"\\u0001\\u0001\\u0001\\u0001\"" + assert_equal json, generate(data) + data = "\u0001a\u0001a\u0001a\u0001a" + json = "\"\\u0001a\\u0001a\\u0001a\\u0001a\"" + assert_equal json, generate(data) + data = "\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\"" + assert_equal json, generate(data) + data = "\u0001aa\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\\u0001aa\"" + assert_equal json, generate(data) + data = "\u0001aa\u0001aa\u0001aa\u0001aa\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\\u0001aa\\u0001aa\\u0001aa\\u0001aa\"" + assert_equal json, generate(data) + data = "\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002" + json = "\"\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\"" + assert_equal json, generate(data) + data = "ab\u0002c" + json = "\"ab\\u0002c\"" + assert_equal json, generate(data) + data = "ab\u0002cab\u0002cab\u0002cab\u0002c" + json = "\"ab\\u0002cab\\u0002cab\\u0002cab\\u0002c\"" + assert_equal json, generate(data) + data = "ab\u0002cab\u0002cab\u0002cab\u0002cab\u0002cab\u0002c" + json = "\"ab\\u0002cab\\u0002cab\\u0002cab\\u0002cab\\u0002cab\\u0002c\"" + assert_equal json, generate(data) + data = "\n\t\f\b\n\t\f\b\n\t\f\b\n\t\f" + json = "\"\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\"" + assert_equal json, generate(data) + data = "\n\t\f\b\n\t\f\b\n\t\f\b\n\t\f\b" + json = "\"\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\"" + assert_equal json, generate(data) + data = "a\n\t\f\b\n\t\f\b\n\t\f\b\n\t" + json = "\"a\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\"" + assert_equal json, generate(data) + end + + def test_string_subclass + s = Class.new(String) do + def to_s; self; end + undef to_json + end + assert_nothing_raised(SystemStackError) do + assert_equal '["foo"]', JSON.generate([s.new('foo')]) + end + end + + def test_invalid_encoding_string + error = assert_raise(JSON::GeneratorError) do + "\x82\xAC\xEF".to_json + end + assert_includes error.message, "source sequence is illegal/malformed utf-8" + + error = assert_raise(JSON::GeneratorError) do + JSON.dump("\x82\xAC\xEF") + end + assert_includes error.message, "source sequence is illegal/malformed utf-8" + + assert_raise(JSON::GeneratorError) do + JSON.dump("\x82\xAC\xEF".b) + end + + assert_raise(JSON::GeneratorError) do + "\x82\xAC\xEF".b.to_json + end + + assert_raise(JSON::GeneratorError) do + ["\x82\xAC\xEF".b].to_json + end + + badly_encoded = "\x82\xAC\xEF".b + exception = assert_raise(JSON::GeneratorError) do + { foo: badly_encoded }.to_json + end + + assert_kind_of EncodingError, exception.cause + assert_same badly_encoded, exception.invalid_object + end + + class MyCustomString < String + def to_json(_state = nil) + '"my_custom_key"' + end + + def to_s + self + end + end + + def test_string_subclass_as_keys + # Ref: https://github.com/ruby/json/issues/667 + # if key.to_s doesn't return a bare string, we call `to_json` on it. + key = MyCustomString.new("won't be used") + assert_equal '{"my_custom_key":1}', JSON.generate(key => 1) + end + + class FakeString + def to_json(_state = nil) + raise "Shouldn't be called" + end + + def to_s + self + end + end + + def test_custom_object_as_keys + key = FakeString.new + error = assert_raise(TypeError) do + JSON.generate(key => 1) + end + assert_match "FakeString", error.message + end + + def test_to_json_called_with_state_object + object = Object.new + called = false + argument = nil + object.singleton_class.define_method(:to_json) do |state| + called = true + argument = state + "" + end + + assert_equal "", JSON.dump(object) + assert called, "#to_json wasn't called" + assert_instance_of JSON::State, argument + end + + module CustomToJSON + def to_json(*) + %{"#{self.class.name}#to_json"} + end + end + + module CustomToS + def to_s + "#{self.class.name}#to_s" + end + end + + class ArrayWithToJSON < Array + include CustomToJSON + end + + def test_array_subclass_with_to_json + assert_equal '["JSONGeneratorTest::ArrayWithToJSON#to_json"]', JSON.generate([ArrayWithToJSON.new]) + assert_equal '{"[]":1}', JSON.generate(ArrayWithToJSON.new => 1) + end + + class ArrayWithToS < Array + include CustomToS + end + + def test_array_subclass_with_to_s + assert_equal '[[]]', JSON.generate([ArrayWithToS.new]) + assert_equal '{"JSONGeneratorTest::ArrayWithToS#to_s":1}', JSON.generate(ArrayWithToS.new => 1) + end + + class HashWithToJSON < Hash + include CustomToJSON + end + + def test_hash_subclass_with_to_json + assert_equal '["JSONGeneratorTest::HashWithToJSON#to_json"]', JSON.generate([HashWithToJSON.new]) + assert_equal '{"{}":1}', JSON.generate(HashWithToJSON.new => 1) + end + + class HashWithToS < Hash + include CustomToS + end + + def test_hash_subclass_with_to_s + assert_equal '[{}]', JSON.generate([HashWithToS.new]) + assert_equal '{"JSONGeneratorTest::HashWithToS#to_s":1}', JSON.generate(HashWithToS.new => 1) + end + + class StringWithToJSON < String + include CustomToJSON + end + + def test_string_subclass_with_to_json + assert_equal '["JSONGeneratorTest::StringWithToJSON#to_json"]', JSON.generate([StringWithToJSON.new]) + assert_equal '{"":1}', JSON.generate(StringWithToJSON.new => 1) + end + + class StringWithToS < String + include CustomToS + end + + def test_string_subclass_with_to_s + assert_equal '[""]', JSON.generate([StringWithToS.new]) + assert_equal '{"JSONGeneratorTest::StringWithToS#to_s":1}', JSON.generate(StringWithToS.new => 1) + end + + def test_string_subclass_with_broken_to_s + klass = Class.new(String) do + def to_s + false + end + end + s = klass.new("test") + assert_equal '["test"]', JSON.generate([s]) + + assert_raise TypeError do + JSON.generate(s => 1) + end + end + + def test_valid_utf8_in_binary_encoding + string = "€™".b.freeze + assert_raise(JSON::GeneratorError) { string.to_json } + assert_raise(JSON::GeneratorError) { JSON.dump(string) } + [string, [string], { string => 1 }, { value: string }].each do |object| + error = assert_raise(JSON::GeneratorError) { JSON.generate(object) } + assert_same string, error.invalid_object + assert_kind_of Encoding::UndefinedConversionError, error.cause + end + end + + def test_ascii_in_binary_encoding + string = "ascii".b + assert_equal '"ascii"', string.to_json + assert_equal '"ascii"', JSON.dump(string) + assert_equal '["ascii"]', JSON.generate([string]) + assert_equal '{"ascii":1}', JSON.generate(string => 1) + end + + def test_nonutf8_encoding + assert_equal("\"5\u{b0}\"", "5\xb0".dup.force_encoding(Encoding::ISO_8859_1).to_json) + end + + def test_utf8_multibyte + assert_equal('["foßbar"]', JSON.generate(["foßbar"])) + assert_equal('"n€ßt€ð2"', JSON.generate("n€ßt€ð2")) + assert_equal('"\"\u0000\u001f"', JSON.generate("\"\u0000\u001f")) + end + + def test_fragment + fragment = JSON::Fragment.new(" 42") + assert_equal '{"number": 42}', JSON.generate({ number: fragment }) + assert_equal '{"number": 42}', JSON.generate({ number: fragment }, strict: true) + end + + def test_json_generate_as_json_convert_to_proc + object = Object.new + assert_equal object.object_id.to_json, JSON.generate(object, strict: true, as_json: -> (o, is_key) { o.object_id }) + end + + def test_json_generate_as_json_method + object = Object.new + as_json = -> (o, is_key) { o.object_id }.method(:call) + assert_equal object.object_id.to_json, JSON.generate(object, strict: true, as_json: as_json) + end + + def test_state_as_json_method + object = Object.new + state = JSON.state.new(strict: true) + state.as_json = -> (o, is_key) { o.object_id }.method(:call) + assert_kind_of Proc, state.as_json + assert_equal object.object_id.to_json, state.generate(object) + end + + def test_json_generate_as_json_invalid_type + [Object.new, Time.now].each do |as_json| + assert_raise(TypeError) { JSON.generate(Object.new, strict: true, as_json: as_json) } + end + end + + def test_state_as_json_invalid_type + state = JSON.state.new(strict: true) + [Object.new, Time.now].each do |as_json| + assert_raise(TypeError) { state.as_json = as_json } + assert_raise(TypeError) { state.configure(as_json: as_json) } + end + end + + def test_as_json_to_proc_returns_invalid_type + as_json = Object.new + def as_json.to_proc + method(:to_proc) + end + assert_raise(TypeError) { JSON.generate(Object.new, strict: true, as_json: as_json) } + assert_raise(TypeError) { JSON.state.new.as_json = as_json } + end + + def test_as_json_nan_does_not_call_to_json + def (obj = Object.new).to_json(*) + "null" + end + assert_raise(JSON::GeneratorError) do + JSON.generate(Float::NAN, strict: true, as_json: proc { obj }) + end + end + + def assert_float_roundtrip(expected, actual) + assert_equal(expected, JSON.generate(actual)) + assert_equal(actual, JSON.parse(JSON.generate(actual)), "JSON: #{JSON.generate(actual)}") + end + + def test_json_generate_float + assert_float_roundtrip "-1.0", -1.0 + assert_float_roundtrip "1.0", 1.0 + assert_float_roundtrip "0.0", 0.0 + assert_float_roundtrip "12.2", 12.2 + assert_float_roundtrip "2.34375", 7.5 / 3.2 + assert_float_roundtrip "12.0", 12.0 + assert_float_roundtrip "100.0", 100.0 + assert_float_roundtrip "1000.0", 1000.0 + + if RUBY_ENGINE == "jruby" + assert_float_roundtrip "1.7468619377842371E9", 1746861937.7842371 + else + assert_float_roundtrip "1746861937.7842371", 1746861937.7842371 + end + + if RUBY_ENGINE == "ruby" + assert_float_roundtrip "100000000000000.0", 100000000000000.0 + assert_float_roundtrip "1e+15", 1e+15 + assert_float_roundtrip "-100000000000000.0", -100000000000000.0 + assert_float_roundtrip "-1e+15", -1e+15 + assert_float_roundtrip "1111111111111111.1", 1111111111111111.1 + assert_float_roundtrip "1.1111111111111112e+16", 11111111111111111.1 + assert_float_roundtrip "-1111111111111111.1", -1111111111111111.1 + assert_float_roundtrip "-1.1111111111111112e+16", -11111111111111111.1 + + assert_float_roundtrip "-0.000000022471348024634545", -2.2471348024634545e-08 + assert_float_roundtrip "-0.0000000022471348024634545", -2.2471348024634545e-09 + assert_float_roundtrip "-2.2471348024634546e-10", -2.2471348024634545e-10 + end + end + + def test_numbers_of_various_sizes + numbers = [ + 0, 1, -1, 9, -9, 13, -13, 91, -91, 513, -513, 7513, -7513, + 17591, -17591, -4611686018427387904, 4611686018427387903, + 2**62, 2**63, 2**64, -(2**62), -(2**63), -(2**64) + ] + + numbers.each do |number| + assert_equal "[#{number}]", JSON.generate([number]) + end + end + + def test_generate_duplicate_keys_allowed + hash = { foo: 1, "foo" => 2 } + assert_equal %({"foo":1,"foo":2}), JSON.generate(hash, allow_duplicate_key: true) + end + + def test_generate_duplicate_keys_disallowed + assert_duplicate_key({ foo: 1, "foo" => 2 }) + assert_duplicate_key({ "1" => 1, 1 => 2 }) + assert_duplicate_key({ :"1" => 1, 1 => 2 }) + + fake_string = Class.new do + def initialize(str) + @str = str + end + + def to_s + @str.dup + end + end + + assert_duplicate_key({ fake_string.new("a") => 1, fake_string.new("a") => 2 }) + end + + def assert_duplicate_key(hash) + error = assert_raise JSON::GeneratorError do + JSON.generate(hash, allow_duplicate_key: false) + end + assert_equal %(detected duplicate key "#{hash.keys.first}" in #{hash.inspect}), error.message + end + + def test_generate_mixed_keys_without_duplicates + assert_equal %({"1":1,"2":2}), JSON.generate({ "1" => 1, 2 => 2 }, allow_duplicate_key: false) + end + + def test_frozen + state = JSON::State.new.freeze + assert_raise(FrozenError) do + state.configure(max_nesting: 1) + end + setters = state.methods.grep(/\w=$/) + assert_not_empty setters + setters.each do |setter| + assert_raise(FrozenError) do + state.send(setter, 1) + end + end + end + + def test_adversary_encode + fake_string = Class.new(String) do + def to_s + self + end + + def encode(*) + 42 + end + end + + assert_raise TypeError, JSON::GeneratorError do + JSON.generate({fake_string.new("\xff".b) => 1}) + end + + no_to_json = Class.new do + undef_method :to_json + + def initialize(str) + @str = str + end + + def to_s + @str + end + end + + assert_raise TypeError, JSON::GeneratorError do + JSON.generate([no_to_json.new(fake_string.new("\xff".b))]) + end + end + + # The case when the State is frozen is tested in JSONCoderTest#test_nesting_recovery + def test_nesting_recovery + state = JSON::State.new + ary = [] + ary << ary + assert_raise(JSON::NestingError) { state.generate(ary) } + assert_equal 0, state.depth + assert_equal '{"a":1}', state.generate({ a: 1 }) + end + + def test_negative_depth_raises + assert_raise(ArgumentError) do + JSON.generate({"a" => 1}, depth: -1) + end + assert_raise(ArgumentError) do + JSON.state.new(depth: -1) + end + end + + def test_large_depth_raises + assert_raise(RangeError, ArgumentError) do + JSON.generate([[1]], + indent: " " * 5, + array_nl: "\n", + depth: 3_689_348_814_741_910_324, + max_nesting: 0 + ) + end + end + + def test_rfc8785_key_order + assert_rfc8785 '{"a":1,"a b":2}', { 'a' => 1, 'a b' => 2 } + assert_rfc8785 '{"a":2,"a!":1}', { 'a!' => 1, 'a' => 2 } + assert_rfc8785 '{"\n":1,"A":2}', { "\n" => 1, 'A' => 2 } + assert_rfc8785 '[{"a":1,"a b":2}]', [{ 'a b' => 2, 'a' => 1 }] + end + + def test_rfc8785_mixed_key_order + assert_rfc8785 '{"10":2,"9":1}', { '9' => 1, 10 => 2 } + assert_rfc8785 '{"a":1,"b":2}', { a: 1, 'b' => 2 } + end + + def test_rfc8785_key_order_with_as_json + key = Object.new + def key.to_s + raise 'must not sort the original key' + end + as_json = ->(object, is_key) { is_key ? 'a' : object } + options = { rfc8785: true, strict: true, as_json: as_json } + object = [{ 'b' => 2, key => 1 }] + expected = '[{"a":1,"b":2}]' + assert_equal expected, JSON.generate(object, options) + assert_equal expected, object.to_json(options) + state = JSON::State.new(options) + io = StringIO.new + state.generate(object, io) + assert_equal expected, io.string + + assert_equal '{"1":1,"b":2}', JSON.generate({ 'b' => 2, 1 => 1 }, options.merge(strict: false)) + end + + def test_rfc8785_key_order_with_default_external_encoding + # https://www.rfc-editor.org/rfc/rfc8785.html#section-3.2.3 + hash = { "\u20ac" => 1, "\r" => 2, "\ufb33" => 3, '1' => 4, + "\u{1f600}" => 5, "\u0080" => 6, "\u00f6" => 7 } + expected = "{\"\\r\":2,\"1\":4,\"\u0080\":6,\"\u00f6\":7,\"\u20ac\":1,\"\u{1f600}\":5,\"\ufb33\":3}" + verbose = $VERBOSE + previous_encoding = Encoding.default_external + $VERBOSE = nil + outputs = [Encoding::UTF_8, Encoding::US_ASCII].map do |encoding| + Encoding.default_external = encoding + JSON.generate(hash, rfc8785: true) + end + assert_equal [expected, expected], outputs + ensure + Encoding.default_external = previous_encoding + $VERBOSE = verbose + end + + { + 0 => '0', + 1 => '1', + 2**53 - 1 => '9007199254740991', + 2**53 => '9007199254740992', + 2**53 + 1 => '9007199254740992', + 2**53 + 3 => '9007199254740996', + 2**63 - 1 => '9223372036854776000', + 2**68 => '295147905179352830000', + 10**20 => '100000000000000000000', + 10**21 => '1e+21', + Float::MAX.to_i => '1.7976931348623157e+308', + }.each do |integer, expected| + define_method("test_rfc8785_integer_#{integer}") do + [1, -1].each do |sign| + number = sign * integer + json = sign < 0 && integer != 0 ? "-#{expected}" : expected + assert_rfc8785 json, number + assert_rfc8785 %({"n":[#{json}]}), { 'n' => [number] } + assert_equal json, number.to_json(rfc8785: true) + assert_equal json, JSON.generate(number, rfc8785: true, max_nesting: false) + assert_equal json, JSON::Coder.new(rfc8785: true).dump(number) + io = StringIO.new + JSON.dump(number, io, rfc8785: true) + assert_equal json, io.string + assert_equal number.to_s, JSON.generate(number) + end + end + end + + def test_rfc8785_rejects_out_of_range_integers + [Float::MAX.to_i + 1, 10**400].each do |integer| + [integer, -integer].each do |number| + error = assert_raise(JSON::GeneratorError) { JSON.generate(number, rfc8785: true) } + assert_same number, error.invalid_object + assert_equal 'Integer out of range for RFC 8785', error.message + assert_raise(JSON::GeneratorError) { JSON.dump([number], rfc8785: true) } + assert_equal number.to_s, JSON.generate(number) + end + end + end + + { + indent: ' ', space: ' ', space_before: ' ', object_nl: "\n", array_nl: "\n", + ascii_only: true, script_safe: true, allow_nan: true, + }.each do |option, value| + define_method("test_rfc8785_rejects_#{option}") do + options = { rfc8785: true, option => value } + error = assert_raise(ArgumentError) { JSON.generate({ 'a' => [1] }, options) } + assert_equal "#{option} cannot be used with rfc8785", error.message + assert_raise(ArgumentError) { JSON.generate(nil, options.to_a.reverse.to_h) } + assert_raise(ArgumentError) { [1].to_json(options) } + assert_raise(ArgumentError) { { 'a' => 1 }.to_json(options) } + assert_raise(ArgumentError) { JSON::Coder.new(**options).dump([1]) } + + state = JSON::State.new(option => value) + state.rfc8785 = true + io = StringIO.new + assert_raise(ArgumentError) { state.generate([1], io) } + assert_equal '', io.string + assert_raise(ArgumentError) { [1].to_json(state) } + assert_equal 0, state.depth + assert_raise(ArgumentError) { state.freeze.generate([1]) } + end + end + + def test_rfc8785_accepts_disabled_options + options = { rfc8785: true, indent: '', space: '', space_before: '', + object_nl: '', array_nl: '', ascii_only: false, + script_safe: false, allow_nan: false } + assert_equal '["é/",1]', JSON.generate(['é/', 1], options) + end + + def test_rfc8785_rejects_pretty_generation + assert_raise(ArgumentError) { JSON.pretty_generate({ 'a' => 1 }, rfc8785: true) } + end + + def test_rfc8785_dump_disables_allow_nan_by_default + assert_equal '[1]', JSON.dump([1], rfc8785: true) + [Float::NAN, Float::INFINITY, -Float::INFINITY].each do |number| + assert_raise(JSON::GeneratorError) { JSON.dump([number], rfc8785: true) } + end + assert_raise(ArgumentError) { JSON.dump([1], rfc8785: true, allow_nan: true) } + end + + def test_rfc8785_fragments + fragment = JSON::Fragment.new('[1,2]') + assert_rfc8785 '[1,2]', fragment + assert_rfc8785 '[[1,2]]', [fragment] + assert_rfc8785 '{"a":[1,2]}', { 'a' => fragment } + assert_equal '[[1,2]]', JSON.generate([fragment], rfc8785: true, max_nesting: false) + assert_equal '[1,2]', JSON::Coder.new(rfc8785: true).dump(fragment) + assert_equal '[1,2]', fragment.to_json(rfc8785: true) + + # Fragment contents are the caller's responsibility and are inserted as is. + assert_rfc8785 '[1, 2]', JSON::Fragment.new('[1, 2]') + end + + def test_rfc8785_numbers + assert_rfc8785 '-9007199254740992', -9007199254740992 + assert_rfc8785 '0', 0 + assert_rfc8785 '0.000001', 0.000001 + assert_rfc8785 '1e+21', 1e+21 + assert_rfc8785 '9.999999999999997e+22', 9.999999999999997e+22 + assert_rfc8785 '9.999999999999997e-7', 9.999999999999997e-7 + assert_rfc8785 '9007199254740992', 9007199254740992 + assert_rfc8785 '9007199254740994', 9007199254740994 + assert_rfc8785 '9007199254740996', 9007199254740996 + assert_rfc8785 '999999999999999700000', 999999999999999700000 + assert_rfc8785 '999999999999999900000', 999999999999999900000 + assert_rfc8785 '333333333.3333333', 333333333.33333329 + assert_rfc8785 '0.30000000000000004', 0.1 + 0.2 + end + + # RFC 8785 numbers are formatted with Float#to_s, which only gives the + # shortest round-trip digits on JRuby 10.1.3 and later. + SHORTEST_FLOAT_TO_S = RUBY_ENGINE == "ruby" || + (RUBY_ENGINE == "jruby" && Gem::Version.new(JRUBY_VERSION) >= Gem::Version.new("10.1.3")) + + # https://www.rfc-editor.org/rfc/rfc8785.html#appendix-B + { + '0000000000000000' => '0', + '8000000000000000' => '0', + '0000000000000001' => '5e-324', + '8000000000000001' => '-5e-324', + '7fefffffffffffff' => '1.7976931348623157e+308', + 'ffefffffffffffff' => '-1.7976931348623157e+308', + '4340000000000000' => '9007199254740992', + 'c340000000000000' => '-9007199254740992', + '4430000000000000' => '295147905179352830000', + '7fffffffffffffff' => nil, + '7ff0000000000000' => nil, + '44b52d02c7e14af5' => '9.999999999999997e+22', + '44b52d02c7e14af6' => '1e+23', + '44b52d02c7e14af7' => '1.0000000000000001e+23', + '444b1ae4d6e2ef4e' => '999999999999999700000', + '444b1ae4d6e2ef4f' => '999999999999999900000', + '444b1ae4d6e2ef50' => '1e+21', + '3eb0c6f7a0b5ed8c' => '9.999999999999997e-7', + '3eb0c6f7a0b5ed8d' => '0.000001', + '41b3de4355555553' => '333333333.3333332', + '41b3de4355555554' => '333333333.33333325', + '41b3de4355555555' => '333333333.3333333', + '41b3de4355555556' => '333333333.3333334', + '41b3de4355555557' => '333333333.33333343', + 'becbf647612f3696' => '-0.0000033333333333333333', + '43143ff3c1cb0959' => '1424953923781206.2', + }.each do |bits, expected| + define_method("test_rfc8785_number_#{bits}") do + omit "Float#to_s is not always shortest on this engine" unless SHORTEST_FLOAT_TO_S + number = [bits].pack('H*').unpack('G').first + if expected + assert_rfc8785 expected, number + assert_equal number, JSON.parse(JSON.generate(number, rfc8785: true)).to_f + else + assert_raise(JSON::GeneratorError) { JSON.generate(number, rfc8785: true) } + end + end + end + + fixtures_path = File.expand_path('../fixtures/rfc8785/', __FILE__) + Dir[File.join(fixtures_path, "input/*.json")].each do |input| + filename = File.basename(input) + name, _ = File.basename(filename, ".json") + expected = File.join(fixtures_path, 'output', filename) + define_method("test_rfc8785_#{name}") do + assert_rfc8785(File.read(expected, encoding: Encoding::UTF_8), JSON.load_file(input)) + end + end + + private + + def assert_rfc8785(expected, value) + assert_equal(expected, JSON.generate(value, rfc8785: true)) + end +end diff --git a/test/json/json_minefield_parser_test.rb b/test/json/json_minefield_parser_test.rb new file mode 100644 index 000000000..a447b8d31 --- /dev/null +++ b/test/json/json_minefield_parser_test.rb @@ -0,0 +1,103 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONMinefieldParserTest < Test::Unit::TestCase + # Test fixtures from https://github.com/nst/JSONTestSuite + # https://seriot.ch/security/parsing_json.html + + fixtures = Dir[File.join(File.expand_path("../fixtures/minefield", __FILE__), "*.json")] + + class << self + private + + def define_test(name, &block) + define_method("test_#{name}", &block) + end + end + + INVALID_ENCODING_TESTS = %w( + i_string_truncated-utf-8 + i_string_overlong_sequence_6_bytes_null + i_string_overlong_sequence_6_bytes + i_string_overlong_sequence_2_bytes + i_string_not_in_unicode_range + i_string_lone_utf8_continuation_byte + i_string_iso_latin_1 + i_string_invalid_utf-8 + i_string_UTF-8_invalid_sequence + ) + + COMMENT_TESTS = %w( + n_object_trailing_comment + n_object_trailing_comment_slash_open + n_structure_object_with_comment + ).freeze + + DUPLICATE_KEY_TESTS = %w( + y_object_duplicated_key + y_object_duplicated_key_and_value + ).freeze + + # Tests starting with `i_` aren't defined by the spec, we can chose to + # change our behavior, but ideally we'd be consistent across the Java and C + # parsers. + UNDEFINED_FAILING = %w( + i_string_1st_surrogate_but_2nd_missing + i_string_1st_valid_surrogate_2nd_invalid + i_string_UTF-16LE_with_BOM + i_string_incomplete_surrogate_and_escape_valid + i_string_incomplete_surrogates_escape_valid + i_string_invalid_lonely_surrogate + i_string_invalid_surrogate + i_string_inverted_surrogates_U+1D11E + i_string_utf16BE_no_BOM + i_string_utf16LE_no_BOM + i_structure_UTF-8_BOM_empty_object + i_string_lone_second_surrogate + i_string_incomplete_surrogate_pair + i_object_key_lone_2nd_surrogate + ) + + if RUBY_ENGINE == 'jruby' + # The Java parser validate the document encoding + # but the C parser doesn't. + # See: https://github.com/ruby/json/issues/138 + UNDEFINED_FAILING.concat(INVALID_ENCODING_TESTS) + end + + fixtures.each do |path| + payload = File.binread(path) + name = File.basename(path, '.json') + + if COMMENT_TESTS.include?(name) + define_test(name) do + JSON.parse(payload, allow_comments: true) + + assert_raise(JSON::ParserError) do + JSON.parse(payload, allow_comments: false) + end + end + elsif DUPLICATE_KEY_TESTS.include?(name) + define_test(name) do + JSON.parse(payload, allow_duplicate_key: true) + assert_raise(JSON::ParserError) do + JSON.parse(payload, allow_duplicate_key: false) + end + end + elsif name.start_with?("y_") || (name.start_with?("i_") && !UNDEFINED_FAILING.include?(name)) + define_test(name) do + JSON.parse(payload, max_nesting: false, allow_duplicate_key: false, allow_comments: false) + assert true + end + elsif name.start_with?("n_") || (name.start_with?("i_") && UNDEFINED_FAILING.include?(name)) + define_test(name) do + assert_raise(JSON::ParserError) do + JSON.parse(payload, max_nesting: false, allow_comments: true) + end + end + else + raise "Unexpected minefield test: #{name}" + end + end +end diff --git a/test/json/json_parser_test.rb b/test/json/json_parser_test.rb new file mode 100644 index 000000000..0549f6f4c --- /dev/null +++ b/test/json/json_parser_test.rb @@ -0,0 +1,1146 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONParserTest < Test::Unit::TestCase + include JSON + + def test_construction + parser = JSON::Parser.new('test') + assert_equal 'test', parser.source + end + + def test_argument_encoding_unmodified + source = "{}".encode(Encoding::UTF_16) + JSON::Parser.new(source) + assert_equal Encoding::UTF_16, source.encoding + end + + def test_argument_encoding_for_binary_unmodified + source = "{}".b + JSON::Parser.new(source) + assert_equal Encoding::ASCII_8BIT, source.encoding + end + + def test_error_message_encoding + bug10705 = '[ruby-core:67386] [Bug #10705]' + json = ".\"\xE2\x88\x9A\"" + assert_equal(Encoding::UTF_8, json.encoding) + e = assert_raise(JSON::ParserError) { + JSON::Ext::Parser.new(json).parse + } + assert_equal(Encoding::UTF_8, e.message.encoding, bug10705) + assert_include(e.message, json, bug10705) + end + + def test_parsing + parser = JSON::Parser.new('"test"') + assert_equal 'test', parser.parse + end + + def test_on_load_method + on_load = ->(value) { Integer === value ? value + 1 : value }.method(:call) + assert_equal [2], JSON.parse('[1]', on_load: on_load) + end + + def test_on_load_invalid_type + ['x', Object.new, Time.now].each do |on_load| + assert_raise(TypeError) { JSON.parse('[1]', on_load: on_load) } + end + end + + def test_on_load_invalid_to_proc + on_load = Object.new + def on_load.to_proc + method(:to_proc) + end + assert_raise(TypeError) { JSON.parse('[1]', on_load: on_load) } + end + + def test_on_load_falsy + [nil, false].each do |on_load| + config = JSON::Parser::Config.new(on_load: on_load) + assert_equal [1], config.parse('[1]') + end + end + + def test_parser_reset + parser = Parser.new('{"a":"b"}') + assert_equal({ 'a' => 'b' }, parser.parse) + assert_equal({ 'a' => 'b' }, parser.parse) + end + + def test_parse_values + assert_equal(nil, parse('null')) + assert_equal(false, parse('false')) + assert_equal(true, parse('true')) + assert_equal(-23, parse('-23')) + assert_equal(23, parse('23')) + assert_in_delta(0.23, parse('0.23'), 1e-2) + assert_equal(0.0, parse('0e0')) + assert_equal(-0.0, parse('-0e0')) + assert_equal("", parse('""')) + assert_equal("foobar", parse('"foobar"')) + end + + def test_parse_simple_arrays + assert_equal([], parse('[]')) + assert_equal([], parse(' [ ] ')) + assert_equal([ nil ], parse('[null]')) + assert_equal([ false ], parse('[false]')) + assert_equal([ true ], parse('[true]')) + assert_equal([ -23 ], parse('[-23]')) + assert_equal([ 23 ], parse('[23]')) + assert_equal_float([ 0.23 ], parse('[0.23]')) + assert_equal_float([ 0.0 ], parse('[0e0]')) + assert_equal([""], parse('[""]')) + assert_equal(["foobar"], parse('["foobar"]')) + assert_equal([{}], parse('[{}]')) + end + + def test_parse_simple_objects + assert_equal({}, parse('{}')) + assert_equal({}, parse(' { } ')) + assert_equal({ "a" => nil }, parse('{ "a" : null}')) + assert_equal({ "a" => nil }, parse('{"a":null}')) + assert_equal({ "a" => false }, parse('{ "a" : false } ')) + assert_equal({ "a" => false }, parse('{"a":false}')) + assert_raise(JSON::ParserError) { parse('{false}') } + assert_equal({ "a" => true }, parse('{"a":true}')) + assert_equal({ "a" => true }, parse(' { "a" : true } ')) + assert_equal({ "a" => -23 }, parse(' { "a" : -23 } ')) + assert_equal({ "a" => -23 }, parse(' { "a" : -23 } ')) + assert_equal({ "a" => 23 }, parse('{"a":23 } ')) + assert_equal({ "a" => 23 }, parse(' { "a" : 23 } ')) + assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } ')) + assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } ')) + assert_equal({ "" => 123 }, parse('{"":123}')) + end + + def test_parse_numbers + assert_raise(JSON::ParserError) { parse('+23.2') } + assert_raise(JSON::ParserError) { parse('+23') } + assert_raise(JSON::ParserError) { parse('.23') } + assert_raise(JSON::ParserError) { parse('023') } + assert_raise(JSON::ParserError) { parse('-023') } + assert_raise(JSON::ParserError) { parse('023.12') } + assert_raise(JSON::ParserError) { parse('-023.12') } + assert_raise(JSON::ParserError) { parse('023e12') } + assert_raise(JSON::ParserError) { parse('-023e12') } + assert_raise(JSON::ParserError) { parse('-') } + assert_raise(JSON::ParserError) { parse('-.1') } + assert_raise(JSON::ParserError) { parse('-e0') } + assert_equal(23, parse('23')) + assert_equal(-23, parse('-23')) + assert_equal_float(3.141, parse('3.141')) + assert_equal_float(-3.141, parse('-3.141')) + assert_equal_float(3.141, parse('3141e-3')) + assert_equal_float(3.141, parse('3141.1e-3')) + assert_equal_float(3.141, parse('3141E-3')) + assert_equal_float(3.141, parse('3141.0E-3')) + assert_equal_float(-3.141, parse('-3141.0e-3')) + assert_equal_float(-3.141, parse('-3141e-3')) + assert_raise(ParserError) { parse('NaN') } + assert parse('NaN', allow_nan: true).nan? + assert_raise(ParserError) { parse('Infinity') } + assert_equal(1.0/0, parse('Infinity', allow_nan: true)) + assert_raise(ParserError) { parse('-Infinity') } + assert_equal(-1.0/0, parse('-Infinity', allow_nan: true)) + capture_output { assert_equal(Float::INFINITY, parse("23456789012E666")) } + + assert_parse_float "1.5e-99999999999999999999" + assert_parse_float "1.5e-9223372036854775808" + assert_parse_float "0.0e-99999999999999999999" + assert_parse_float "-1.5e-99999999999999999999" + assert_parse_float "123.456e-18446744073709551615" + end + + INTEGER_FAST_PATH_BOUNDARIES = [ + "999999999999999999", # 18 digits + "1000000000000000000", # narrowest 19 digits + "9999999999999999999", # widest 19 digits, still inside uint64_t + "-999999999999999999", + "-9223372036854775807", # INT64_MAX, the widest negatable accumulator + "-9223372036854775808", # INT64_MIN, one past what negating a uint64_t covers + "-9223372036854775809", + "-9999999999999999999", # widest negative 19 digits + "10000000000000000000", # narrowest 20 digits + "18446744073709551614", + "18446744073709551615", # UINT64_MAX exactly, the last value the range check admits + "18446744073709551616", # 2**64, first value it must reject + "18446744073709551617", + "19999999999999999999", + "99999999999999999999", # widest 20 digits + "-18446744073709551615", # negatives never take the 20 digit path + "-18446744073709551616", + "-99999999999999999999", + "100000000000000000000", # 21 digits, always a bignum + "-100000000000000000000", + ].freeze + + def test_parse_integer_boundaries + INTEGER_FAST_PATH_BOUNDARIES.each do |literal| + expected = Integer(literal, 10) + + assert_equal(expected, parse(literal)) + end + end + + def test_parse_bignum + bignum = Integer('1234567890' * 10) + assert_equal(bignum, JSON.parse(bignum.to_s)) + assert_equal(bignum.to_f, JSON.parse(bignum.to_s + ".0")) + + bignum = Integer('1234567890' * 50) + assert_equal(bignum, JSON.parse(bignum.to_s)) + bignum_float = EnvUtil.suppress_warning { bignum.to_f } + assert_equal(bignum_float, EnvUtil.suppress_warning { JSON.parse(bignum.to_s + ".0") }) + end + + def test_parse_bigdecimals + assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class) + assert_equal(BigDecimal("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) + end if defined?(::BigDecimal) + + def test_parse_string_mixed_unicode + assert_equal(["éé"], JSON.parse("[\"\\u00e9é\"]")) + end + + def test_parse_more_complex_arrays + a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }] + a.permutation.each do |perm| + json = pretty_generate(perm) + assert_equal perm, parse(json) + end + end + + def test_parse_complex_objects + a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }] + a.permutation.each do |perm| + s = "a" + orig_obj = perm.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h } + json = pretty_generate(orig_obj) + assert_equal orig_obj, parse(json) + end + end + + def test_parse_control_chars_in_string + 0.upto(31) do |ord| + assert_raise JSON::ParserError do + parse(%("#{ord.chr}")) + end + end + end + + def test_parse_allowed_control_chars_in_string + 0.upto(31) do |ord| + assert_equal ord.chr, parse(%("#{ord.chr}"), allow_control_characters: true) + end + end + + def test_parse_control_char_and_backslash + backslash_and_control_char = "\\\t" + assert_raise JSON::ParserError do + JSON.parse(%("#{'a' * 30}#{backslash_and_control_char}"), allow_control_characters: true, allow_invalid_escape: false) + end + + JSON.parse(%("#{'a' * 30}#{backslash_and_control_char}"), allow_control_characters: true, allow_invalid_escape: true) + + assert_equal ["a\u0000b", 2], JSON.parse("[\"a\\\x00b\", 2]", allow_control_characters: true, allow_invalid_escape: true) + end + + def test_parse_invalid_escape + assert_raise JSON::ParserError do + parse(%("fo\\o")) + end + + assert_equal "foo", parse(%("fo\\o"), allow_invalid_escape: true) + end + + def test_parse_invalid_escape_non_ascii + assert_equal "caf\u00e9", parse(%("caf\\\u00e9"), allow_invalid_escape: true) + assert_equal "\u3042", parse(%("\\\u3042"), allow_invalid_escape: true) + assert_equal "\u{1F600}", parse(%("\\\u{1F600}"), allow_invalid_escape: true) + end + + def test_parse_arrays + assert_equal([1,2,3], parse('[1,2,3]')) + assert_equal([1.2,2,3], parse('[1.2,2,3]')) + assert_equal([[],[[],[]]], parse('[[],[[],[]]]')) + assert_equal([], parse('[]')) + assert_equal([], parse(' [ ] ')) + assert_equal([1], parse('[1]')) + assert_equal([1], parse(' [ 1 ] ')) + ary = [[1], ["foo"], [3.14], [4711.0], [2.718], [nil], + [[1, -2, 3]], [false], [true]] + assert_equal(ary, + parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]],[false],[true]]')) + assert_equal(ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]\s + , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] })) + end + + def test_parse_json_primitive_values + assert_raise(JSON::ParserError) { parse('') } + assert_raise(TypeError) { parse(nil) } + EnvUtil.suppress_warning do # still no warning in JRuby verions + assert_raise(JSON::ParserError) { parse(' /* foo */ ') } + end + assert_equal nil, parse('null') + assert_equal false, parse('false') + assert_equal true, parse('true') + assert_equal 23, parse('23') + assert_equal 1, parse('1') + assert_equal_float 3.141, parse('3.141'), 1E-3 + assert_equal 2 ** 64, parse('18446744073709551616') + assert_equal 'foo', parse('"foo"') + assert parse('NaN', allow_nan: true).nan? + assert parse('Infinity', allow_nan: true).infinite? + assert parse('-Infinity', allow_nan: true).infinite? + end + + def test_parse_arrays_with_allow_trailing_comma + assert_equal([], parse('[]', allow_trailing_comma: true)) + assert_equal([], parse('[]', allow_trailing_comma: false)) + assert_raise(JSON::ParserError) { parse('[,]', allow_trailing_comma: true) } + assert_raise(JSON::ParserError) { parse('[,]', allow_trailing_comma: false) } + + assert_equal([1], parse('[1]', allow_trailing_comma: true)) + assert_equal([1], parse('[1]', allow_trailing_comma: false)) + assert_equal([1], parse('[1,]', allow_trailing_comma: true)) + assert_raise(JSON::ParserError) { parse('[1,]', allow_trailing_comma: false) } + + assert_equal([1, 2, 3], parse('[1,2,3]', allow_trailing_comma: true)) + assert_equal([1, 2, 3], parse('[1,2,3]', allow_trailing_comma: false)) + assert_equal([1, 2, 3], parse('[1,2,3,]', allow_trailing_comma: true)) + assert_raise(JSON::ParserError) { parse('[1,2,3,]', allow_trailing_comma: false) } + + assert_equal([1, 2, 3], parse('[ 1 , 2 , 3 ]', allow_trailing_comma: true)) + assert_equal([1, 2, 3], parse('[ 1 , 2 , 3 ]', allow_trailing_comma: false)) + assert_equal([1, 2, 3], parse('[ 1 , 2 , 3 , ]', allow_trailing_comma: true)) + assert_raise(JSON::ParserError) { parse('[ 1 , 2 , 3 , ]', allow_trailing_comma: false) } + + assert_equal({'foo' => [1, 2, 3]}, parse('{ "foo": [1,2,3] }', allow_trailing_comma: true)) + assert_equal({'foo' => [1, 2, 3]}, parse('{ "foo": [1,2,3] }', allow_trailing_comma: false)) + assert_equal({'foo' => [1, 2, 3]}, parse('{ "foo": [1,2,3,] }', allow_trailing_comma: true)) + assert_raise(JSON::ParserError) { parse('{ "foo": [1,2,3,] }', allow_trailing_comma: false) } + end + + def test_parse_object_with_allow_trailing_comma + assert_equal({}, parse('{}', allow_trailing_comma: true)) + assert_equal({}, parse('{}', allow_trailing_comma: false)) + assert_raise(JSON::ParserError) { parse('{,}', allow_trailing_comma: true) } + assert_raise(JSON::ParserError) { parse('{,}', allow_trailing_comma: false) } + + assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}', allow_trailing_comma: true)) + assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}', allow_trailing_comma: false)) + assert_equal({'foo'=>'bar'}, parse('{"foo":"bar",}', allow_trailing_comma: true)) + assert_raise(JSON::ParserError) { parse('{"foo":"bar",}', allow_trailing_comma: false) } + + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{"foo":"bar","baz":"qux","quux":"garply"}', allow_trailing_comma: true) + ) + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{"foo":"bar","baz":"qux","quux":"garply"}', allow_trailing_comma: false) + ) + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{"foo":"bar","baz":"qux","quux":"garply",}', allow_trailing_comma: true) + ) + assert_raise(JSON::ParserError) { + parse('{"foo":"bar","baz":"qux","quux":"garply",}', allow_trailing_comma: false) + } + + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{ "foo":"bar" , "baz":"qux" , "quux":"garply" }', allow_trailing_comma: true) + ) + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{ "foo":"bar" , "baz":"qux" , "quux":"garply" }', allow_trailing_comma: false) + ) + assert_equal( + {'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}, + parse('{ "foo":"bar" , "baz":"qux" , "quux":"garply" , }', allow_trailing_comma: true) + ) + assert_raise(JSON::ParserError) { + parse('{ "foo":"bar" , "baz":"qux" , "quux":"garply" , }', allow_trailing_comma: false) + } + + assert_equal( + [{'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}], + parse('[{"foo":"bar","baz":"qux","quux":"garply"}]', allow_trailing_comma: true) + ) + assert_equal( + [{'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}], + parse('[{"foo":"bar","baz":"qux","quux":"garply"}]', allow_trailing_comma: false) + ) + assert_equal( + [{'foo'=>'bar', 'baz'=>'qux', 'quux'=>'garply'}], + parse('[{"foo":"bar","baz":"qux","quux":"garply",}]', allow_trailing_comma: true) + ) + assert_raise(JSON::ParserError) { + parse('[{"foo":"bar","baz":"qux","quux":"garply",}]', allow_trailing_comma: false) + } + end + + def test_parse_some_strings + assert_equal([""], parse('[""]')) + assert_equal(["\\"], parse('["\\\\"]')) + assert_equal(['"'], parse('["\""]')) + assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]')) + assert_equal( + ["\"\b\n\r\t\0\037"], + parse('["\"\b\n\r\t\u0000\u001f"]') + ) + end + + if RUBY_ENGINE != "jruby" # https://github.com/ruby/json/issues/138 + def test_parse_broken_string + s = parse(%{["\x80"]})[0] + assert_equal("\x80", s) + assert_equal Encoding::UTF_8, s.encoding + assert_equal false, s.valid_encoding? + + s = parse(%{["\x80"]}.b)[0] + assert_equal("\x80", s) + assert_equal Encoding::UTF_8, s.encoding + assert_equal false, s.valid_encoding? + + input = %{["\x80"]}.dup.force_encoding(Encoding::US_ASCII) + assert_raise(Encoding::InvalidByteSequenceError) { parse(input) } + end + end + + def test_invalid_unicode_escape + assert_raise(JSON::ParserError) { parse('"\u"') } + assert_raise(JSON::ParserError) { parse('"\ua"') } + assert_raise(JSON::ParserError) { parse('"\uaa"') } + assert_raise(JSON::ParserError) { parse('"\uaaa"') } + assert_equal "\uaaaa", parse('"\uaaaa"') + + assert_raise(JSON::ParserError) { parse('"\u______"') } + assert_raise(JSON::ParserError) { parse('"\u1_____"') } + assert_raise(JSON::ParserError) { parse('"\u11____"') } + assert_raise(JSON::ParserError) { parse('"\u111___"') } + end + + def test_unicode_followed_by_newline + # Ref: https://github.com/ruby/json/issues/912 + assert_equal "🌌\n".bytes, JSON.parse('"\ud83c\udf0c\n"').bytes + assert_equal "🌌\n", JSON.parse('"\ud83c\udf0c\n"') + assert_predicate JSON.parse('"\ud83c\udf0c\n"'), :valid_encoding? + end + + def test_invalid_surogates + assert_raise(JSON::ParserError) { parse('"\\uD800"') } + assert_raise(JSON::ParserError) { parse('"\\uD800_________________"') } + assert_raise(JSON::ParserError) { parse('"\\uD800\\u0041"') } + assert_raise(JSON::ParserError) { parse('"\\uD800\\u004') } + # Lone trailing surrogate (issue #1069): parser previously returned an + # invalid-UTF-8 String instead of raising. Symmetric to the leading cases + # above. + assert_raise(JSON::ParserError) { parse('"\\uDC00"') } + assert_raise(JSON::ParserError) { parse('"\\uDC00_________________"') } + assert_raise(JSON::ParserError) { parse('"\\uDC00\\uD800"') } + # Valid pair still parses to the astral codepoint U+10000. + assert_predicate JSON.parse('"\\uD800\\uDC00"'), :valid_encoding? + assert_equal "\u{10000}", JSON.parse('"\\uD800\\uDC00"') + end + + def test_parse_big_integers + json1 = JSON(orig = (1 << 31) - 1) + assert_equal orig, parse(json1) + json2 = JSON(orig = 1 << 31) + assert_equal orig, parse(json2) + json3 = JSON(orig = (1 << 62) - 1) + assert_equal orig, parse(json3) + json4 = JSON(orig = 1 << 62) + assert_equal orig, parse(json4) + json5 = JSON(orig = 1 << 64) + assert_equal orig, parse(json5) + end + + def test_parse_escaped_key + doc = { + "test\r1" => 1, + "entries" => [ + "test\t2" => 2, + "test\n3" => 3, + ] + } + + assert_equal doc, parse(JSON.generate(doc)) + end + + def test_parse_duplicate_key + expected = {"a" => 2} + + assert_equal expected, parse('{"a": 1, "a": 2}', allow_duplicate_key: true) + assert_raise(ParserError) { parse('{"a": 1, "a": 2}', allow_duplicate_key: false) } + assert_raise(ParserError) { parse('{"a": 1, "a": 2}', allow_duplicate_key: false, symbolize_names: true) } + + unless RUBY_ENGINE == 'jruby' + assert_raise(ParserError) do + fake_key = Object.new + JSON.load('{"a": 1, "a": 2}', -> (obj) { obj == "a" ? fake_key : obj }, allow_duplicate_key: false) + end + end + end + + def test_parse_duplicate_key_escape + error = assert_raise(ParserError) do + JSON.parse('{"%s%s%s%s":1,"%s%s%s%s":2}', allow_duplicate_key: false) + end + assert_match "%s%s%s%s", error.message + end + + def test_some_wrong_inputs + assert_raise(ParserError) { parse('[] bla') } + assert_raise(ParserError) { parse('[] 1') } + assert_raise(ParserError) { parse('[] []') } + assert_raise(ParserError) { parse('[] {}') } + assert_raise(ParserError) { parse('{} []') } + assert_raise(ParserError) { parse('{} {}') } + assert_raise(ParserError) { parse('[NULL]') } + assert_raise(ParserError) { parse('[FALSE]') } + assert_raise(ParserError) { parse('[TRUE]') } + assert_raise(ParserError) { parse('[07] ') } + assert_raise(ParserError) { parse('[0a]') } + assert_raise(ParserError) { parse('[1.]') } + assert_raise(ParserError) { parse(' ') } + end + + def test_symbolize_names + assert_equal({ "foo" => "bar", "baz" => "quux" }, + parse('{"foo":"bar", "baz":"quux"}')) + assert_equal({ foo: "bar", baz: "quux" }, + parse('{"foo":"bar", "baz":"quux"}', symbolize_names: true)) + end + + def test_freeze + assert_predicate parse('{}', freeze: true), :frozen? + assert_predicate parse('[]', freeze: true), :frozen? + assert_predicate parse('"foo"', freeze: true), :frozen? + + assert_same(-'foo', parse('"foo"', freeze: true)) + assert_same(-'foo', parse('{"foo": 1}', freeze: true).keys.first) + end + + def test_parse_comments + json = <<~JSON + { + "key1":"value1", // eol comment + "key2":"value2" /* multi line + * comment */, + "key3":"value3" /* multi line + // nested eol comment + * comment */ + } + JSON + assert_equal( + { "key1" => "value1", "key2" => "value2", "key3" => "value3" }, + parse(json, allow_comments: true)) + json = <<~JSON + { + "key1":"value1" /* multi line + // nested eol comment + /* illegal nested multi line comment */ + * comment */ + } + JSON + assert_raise(ParserError) { parse(json, allow_comments: true) } + json = <<~JSON + { + "key1":"value1" /* multi line + // nested eol comment + /* legal nested multi line comment start sequence */ + } + JSON + assert_equal({ "key1" => "value1" }, parse(json, allow_comments: true)) + json = <<~JSON + { + "key1":"value1" /* multi line + // nested eol comment + closed multi comment */ + and again, throw an Error */ + } + JSON + assert_raise(ParserError) { parse(json, allow_comments: true) } + json = <<~JSON + { + "key1":"value1" /*/*/ + } + JSON + assert_equal({ "key1" => "value1" }, parse(json, allow_comments: true)) + assert_equal({}, parse('{} /**/', allow_comments: true)) + assert_equal({}, parse('{} // eol comment ending at eof', allow_comments: true)) + assert_raise(ParserError) { parse('{} /* comment not closed', allow_comments: true) } + assert_raise(ParserError) { parse('{} /*/', allow_comments: true) } + assert_raise(ParserError) { parse('{} /x wrong comment', allow_comments: true) } + assert_raise(ParserError) { parse('{} /', allow_comments: true) } + assert_equal({}, parse('/**/ {}', allow_comments: true)) + assert_raise(ParserError) { parse('/**/ {}', allow_comments: false) } + end + + def test_nesting + too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' + too_deep_ary = eval too_deep + assert_raise(JSON::NestingError) { parse too_deep } + assert_raise(JSON::NestingError) { parse too_deep, max_nesting: 100 } + ok = parse too_deep, max_nesting: 101 + assert_equal too_deep_ary, ok + ok = parse too_deep, max_nesting: nil + assert_equal too_deep_ary, ok + ok = parse too_deep, max_nesting: false + assert_equal too_deep_ary, ok + ok = parse too_deep, max_nesting: 0 + assert_equal too_deep_ary, ok + end + + def test_backslash + assert_raise(JSON::ParserError) do + JSON.parse('"\\') + end + + data = [ '\\.(?i:gif|jpe?g|png)$' ] + json = '["\\\\.(?i:gif|jpe?g|png)$"]' + assert_equal data, parse(json) + + data = [ '\\"' ] + json = '["\\\\\""]' + assert_equal data, parse(json) + + json = '["/"]' + data = [ '/' ] + assert_equal data, parse(json) + + json = '["\""]' + data = ['"'] + assert_equal data, parse(json) + + json = '["\\/"]' + data = ["/"] + assert_equal data, parse(json) + + json = '["\/"]' + data = [ '/' ] + assert_equal data, parse(json) + + data = ['"""""""""""""""""""""""""'] + json = '["\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\""]' + assert_equal data, parse(json) + + data = '["This is a "test" of the emergency broadcast system."]' + json = "\"[\\\"This is a \\\"test\\\" of the emergency broadcast system.\\\"]\"" + assert_equal data, parse(json) + + data = '\tThis is a test of the emergency broadcast system.' + json = "\"\\\\tThis is a test of the emergency broadcast system.\"" + assert_equal data, parse(json) + + data = 'This\tis a test of the emergency broadcast system.' + json = "\"This\\\\tis a test of the emergency broadcast system.\"" + assert_equal data, parse(json) + + data = 'This is\ta test of the emergency broadcast system.' + json = "\"This is\\\\ta test of the emergency broadcast system.\"" + assert_equal data, parse(json) + + data = 'This is a test of the emergency broadcast\tsystem.' + json = "\"This is a test of the emergency broadcast\\\\tsystem.\"" + assert_equal data, parse(json) + + data = 'This is a test of the emergency broadcast\tsystem.\n' + json = "\"This is a test of the emergency broadcast\\\\tsystem.\\\\n\"" + assert_equal data, parse(json) + + data = '"' * 15 + json = "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\"" + assert_equal data, parse(json) + + data = "\"\"\"\"\"\"\"\"\"\"\"\"\"\"a" + json = "\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"\\\"a\"" + assert_equal data, parse(json) + + data = "\u0001\u0001\u0001\u0001" + json = "\"\\u0001\\u0001\\u0001\\u0001\"" + assert_equal data, parse(json) + + data = "\u0001a\u0001a\u0001a\u0001a" + json = "\"\\u0001a\\u0001a\\u0001a\\u0001a\"" + assert_equal data, parse(json) + + data = "\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\"" + assert_equal data, parse(json) + + data = "\u0001aa\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\\u0001aa\"" + assert_equal data, parse(json) + + data = "\u0001aa\u0001aa\u0001aa\u0001aa\u0001aa\u0001aa" + json = "\"\\u0001aa\\u0001aa\\u0001aa\\u0001aa\\u0001aa\\u0001aa\"" + assert_equal data, parse(json) + + data = "\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002\u0001a\u0002" + json = "\"\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\\u0001a\\u0002\"" + assert_equal data, parse(json) + + data = "ab\u0002c" + json = "\"ab\\u0002c\"" + assert_equal data, parse(json) + + data = "ab\u0002cab\u0002cab\u0002cab\u0002c" + json = "\"ab\\u0002cab\\u0002cab\\u0002cab\\u0002c\"" + assert_equal data, parse(json) + + data = "ab\u0002cab\u0002cab\u0002cab\u0002cab\u0002cab\u0002c" + json = "\"ab\\u0002cab\\u0002cab\\u0002cab\\u0002cab\\u0002cab\\u0002c\"" + assert_equal data, parse(json) + + data = "\n\t\f\b\n\t\f\b\n\t\f\b\n\t\f" + json = "\"\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\"" + assert_equal data, parse(json) + + data = "\n\t\f\b\n\t\f\b\n\t\f\b\n\t\f\b" + json = "\"\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\"" + assert_equal data, parse(json) + + data = "a\n\t\f\b\n\t\f\b\n\t\f\b\n\t" + json = "\"a\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\\f\\b\\n\\t\"" + assert_equal data, parse(json) + end + + class SubArray < Array + def <<(v) + @shifted = true + super + end + + def shifted? + @shifted + end + end + + class SubArrayWrapper + def initialize + @data = [] + end + + attr_reader :data + + def [](index) + @data[index] + end + + def <<(value) + @data << value + @shifted = true + end + + def shifted? + @shifted + end + end + + def test_parse_array_custom_array_derived_class + res = parse('[1,2]', array_class: SubArray) + assert_equal([1,2], res) + assert_equal(SubArray, res.class) + assert res.shifted? + end + + def test_parse_array_custom_non_array_derived_class + res = parse('[1,2]', array_class: SubArrayWrapper) + assert_equal([1,2], res.data) + assert_equal(1, res[0]) + assert_equal(SubArrayWrapper, res.class) + assert res.shifted? + end + + def test_parse_object + assert_equal({}, parse('{}')) + assert_equal({}, parse(' { } ')) + assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}')) + assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } ')) + end + + class SubHash < Hash + def []=(k, v) + @item_set = true + super + end + + def item_set? + @item_set + end + end + + class SubHash2 < Hash + def to_json(*a) + { + JSON.create_id => self.class.name, + }.merge(self).to_json(*a) + end + + def self.json_create(o) + o.delete JSON.create_id + self[o] + end + end + + def test_parse_object_custom_hash_derived_class + res = parse('{"foo":"bar"}', object_class: SubHash) + assert_equal({"foo" => "bar"}, res) + assert_equal(SubHash, res.class) + assert res.item_set? + end + + class OpenStructLike + def initialize + @attrs = {} + end + + def [](k) + @attrs[k.to_sym] + end + + def []=(k, v) + @attrs[k.to_sym] = v + end + + def method_missing(name, *) + @attrs.fetch(name) do + super + end + end + end + + def test_parse_object_custom_non_hash_derived_class + res = parse('{"foo":"bar"}', object_class: OpenStructLike) + assert_equal "bar", res.foo + assert_equal "bar", res[:foo] + assert_equal(OpenStructLike, res.class) + end + + def test_generate_core_subclasses_with_default_to_json + assert_equal '{"foo":"bar"}', JSON(SubHash["foo" => "bar"]) + assert_equal '["foo"]', JSON(SubArray["foo"]) + end + + def test_generate_of_core_subclasses + obj = SubHash["foo" => SubHash["bar" => true]] + obj_json = JSON(obj) + obj_again = JSON(obj_json) + assert_kind_of Hash, obj_again + assert_kind_of Hash, obj_again['foo'] + assert obj_again['foo']['bar'] + assert_equal obj, obj_again + end + + def test_parsing_frozen_ascii8bit_string + assert_equal( + { 'foo' => 'bar' }, + JSON('{ "foo": "bar" }'.b.freeze) + ) + end + + def test_parse_error_message_length + # Error messages aren't consistent across backends, but we can at least + # enforce that if they include fragments of the source it should be of + # reasonable size. + error = assert_raise(JSON::ParserError) do + JSON.parse('{"foo": ' + ('A' * 500) + '}') + end + assert_operator 80, :>, error.message.bytesize + end + + def test_parse_error_incomplete_hash + error = assert_raise(JSON::ParserError) do + JSON.parse('{"input":{"firstName":"Bob","lastName":"Mob","email":"bob@example.com"}') + end + if RUBY_ENGINE == "ruby" + assert_equal %(expected ',' or '}' after object value, got: EOF at line 1 column 72), error.message + end + end + + def test_parse_error_snippet + omit "JRuby errors don't contain positions" if RUBY_ENGINE == "jruby" + + error = assert_raise(JSON::ParserError) { JSON.parse("あああああああああああああああああああああああ") } + assert_equal "unexpected character: 'ああああああああああ' at line 1 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("aあああああああああああああああああああああああ") } + assert_equal "unexpected character: 'aああああああああああ' at line 1 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("abあああああああああああああああああああああああ") } + assert_equal "unexpected character: 'abああああああああああ' at line 1 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("abcあああああああああああああああああああああああ") } + assert_equal "unexpected character: 'abcあああああああああ' at line 1 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("[1,\n@") } + assert_equal "unexpected character: '@' at line 2 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("[\n 1,\n @\n]") } + assert_equal "unexpected character: '@' at line 3 column 3", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse("@") } + assert_equal "unexpected character: '@' at line 1 column 1", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse('"a" 日本') } + assert_equal "unexpected token at end of stream '日本' at line 1 column 5", error.message + + error = assert_raise(JSON::ParserError) { JSON.parse('[1, é') } + assert_equal "unexpected character: 'é' at line 1 column 5", error.message + end + + def test_parse_error_snippet_multibyte_boundaries + omit "JRuby errors don't contain positions" if RUBY_ENGINE == "jruby" + + ['é', '日', '😀'].each do |char| + ['', ' ', "\n", "\t", "\r"].each do |suffix| + error = assert_raise(JSON::ParserError) { JSON.parse(char + suffix) } + assert_equal "unexpected character: '#{char}' at line 1 column 1", error.message + end + + (28..32).each do |padding| + prefix = 'a' * padding + fragment = prefix + char * ((32 - padding) / char.bytesize) + error = assert_raise(JSON::ParserError) { JSON.parse(prefix + char * 20) } + assert_equal "unexpected character: '#{fragment}' at line 1 column 1", error.message + assert_predicate error.message, :valid_encoding? + end + end + end + + def test_parse_error_json_path + assert_parse_error_at "$", "xyz" + assert_parse_error_at "$.a", '{"a": xyz}' + assert_parse_error_at "$[3]", '[1, 2, "hi", xyz]' + assert_parse_error_at "$.a[1].b", '{"a": [1, {"b": xyz}]}' + assert_parse_error_at "$.a", '{"a": 1 xyz}' + assert_parse_error_at "$", '{"a": 1, xyz}' + + assert_parse_error_at "$.a.b.c", '{"a": {"b": {"c"' + assert_parse_error_at "$.a.b.c", '{"a": {"b": {"c":' + assert_parse_error_at "$.a.b", '{"a": {"b": {"c": 1, "d' + + assert_parse_error_at "$[4]", '[1,2,3,4,5' + assert_parse_error_at "$[5]", '[1,2,3,4,5,' + assert_parse_error_at "$[5]", '[1,2,3,4,5,]' + + if RUBY_ENGINE != "jruby" + assert_parse_error_at %($["\xff"][1]), %({"\xff":[1,x]}) + end + end + + def test_parse_error_position + error = assert_raise(JSON::ParserError) { JSON.parse("[1,\n@") } + assert_equal 2, error.line + assert_equal 1, error.column + + error = assert_raise(JSON::ParserError) { JSON.parse('{"a": {"b": [1, {"c": 1, "c": 2}]}}') } + assert_equal 1, error.line + assert_equal 17, error.column + end + + def test_parse_error_position_at_newline + omit "JRuby string decoding errors don't contain positions" if RUBY_ENGINE == "jruby" + + ["[1,\n\"ab\ncd\"]", "[1,\n\"日本\ncd\"]"].each do |json| + error = assert_raise(JSON::ParserError) { JSON.parse(json) } + assert_equal 2, error.line + assert_equal 4, error.column + assert_include error.message, 'at line 2 column 4' + end + end + + def test_parse_error_position_with_multibyte_characters + { + '["日本", @]' => [1, 8], + "[\n\"é日😀\", @" => [2, 8], + '{"日本":{"a":1,"a":2}}' => [1, 7], + '["日本",' => [1, 7], + "[1,\n" => [2, 1], + '' => [1, 1], + }.each do |json, (line, column)| + error = assert_raise(JSON::ParserError) { JSON.parse(json) } + assert_equal line, error.line + assert_equal column, error.column + assert_include error.message, "at line #{line} column #{column}" + end + end + + def test_parse_error_json_path_on_load + assert_parse_error_at "$" do + JSON.load('{"a": {"b": {"c":', -> (obj) { + if String === obj + BasicObject.new + else + obj + end + }) + end + + assert_parse_error_at "$.a" do + JSON.load('{"a": {"b": {"c":', -> (obj) { + if obj == "b" + BasicObject.new + else + obj + end + }) + end + end + + def test_parse_error_json_path_key_escaping + assert_parse_error_at '$["hello world"]', '{"hello world": xyz}' + assert_parse_error_at '$["a\"b"]', '{"a\"b": xyz}' + assert_parse_error_at '$[""]', '{"": xyz}' + assert_parse_error_at '$["あ"]', '{"あ": xyz}' + assert_parse_error_at '$.foo["1x"]', '{"foo": {"1x": xyz}}' + end + + def test_parse_error_json_path_symbolize_names + assert_parse_error_at "$.a[1].b" do + JSON.parse('{"a": [1, {"b": xyz}]}', symbolize_names: true) + end + assert_parse_error_at '$["hello world"]' do + JSON.parse('{"hello world": xyz}', symbolize_names: true) + end + assert_parse_error_at "$.x.a" do + JSON.parse('{"x": {"a": 1, "a": 2}}', symbolize_names: true) + end + end + + def test_parse_error_json_path_duplicate_key + assert_parse_error_at "$.a", '{"a": 1, "a": 2}' + assert_parse_error_at "$.x.a", '{"x": {"a": 1, "b": 2, "a": 3}}' + assert_parse_error_at "$.arr[0].a", '{"arr": [{"a": 1, "a": 2}]}' + assert_parse_error_at "$.x.a", '{"x": {"a": 1, "a": 2}}' + end + + def test_parse_error_json_path_resumable + omit "JSON::ResumableParser not available" unless defined?(JSON::ResumableParser) + + parser = JSON::ResumableParser.new + parser << '{"a": [1, {"b": ' + parser.parse + assert_parse_error_at "$.a[1].b" do + parser << 'xyz' + parser.parse + end + end + + def test_parse_leading_slash + # ref: https://github.com/ruby/ruby/pull/12598 + assert_raise(JSON::ParserError) do + JSON.parse("/foo/bar") + end + end + + def test_parse_whitespace_after_newline + assert_equal [], JSON.parse("[\n#{' ' * (8 + 8 + 4 + 3)}]") + end + + def test_frozen + parser_config = JSON::Parser::Config.new({}).freeze + assert_raise FrozenError do + parser_config.send(:initialize, {}) + end + end + + def test_mutating_source_string_during_parsing + expected = ([1] * 100) + [2.3] + ([1] * 100) + source = JSON.generate(expected) + expected.delete_at(100) + + fake_decimal_class = Class.new + fake_decimal_class.define_method(:initialize) do |number| + source.tr!('1', '0') + number.to_f + end + + actual = JSON.parse(source, decimal_class: fake_decimal_class) + actual.delete_at(100) + assert_equal expected, actual + end + + def test_mutating_source_string_with_known_coderange_during_parsing + expected = ([1] * 100) + [2.3] + ([1] * 100) + source = JSON.generate(expected) + source.ascii_only? # caches the coderange, which lets JRuby's String#tr! write in place + expected.delete_at(100) + + fake_decimal_class = Class.new + fake_decimal_class.define_method(:initialize) do |number| + source.tr!('1', '0') + number.to_f + end + + actual = JSON.parse(source, decimal_class: fake_decimal_class) + actual.delete_at(100) + assert_equal expected, actual + end + + def test_adversary_encode + fake_string = Class.new(String) do + def encode(*) + 42 + end + end + + assert_raise TypeError, Encoding::InvalidByteSequenceError do + JSON.parse(fake_string.new("\xff".b, encoding: Encoding::UTF_16)) + end + + if RUBY_ENGINE != "jruby" + fake_string = Class.new(String) do + attr_reader :encoded_str + + def initialize(...) + super + @encoded_str = JSON.dump(1000.times.to_a) + end + + def encode(*) + @encoded_str + end + end + + fake = fake_string.new("blah", encoding: Encoding::UTF_16) + assert_equal 1000.times.to_a, JSON.parse(fake, on_load: ->(v) { + if v == 20 + fake.encoded_str.clear + end + v + }) + end + end + + private + + def assert_parse_float(float_str) + assert_equal Float(float_str), JSON.parse(float_str) + end + + def assert_equal_float(expected, actual, delta = 1e-2) + Array === expected and expected = expected.first + Array === actual and actual = actual.first + assert_in_delta(expected, actual, delta) + end + + def assert_parse_error_at(path, json = nil) + error = assert_raise(JSON::ParserError) do + if block_given? + yield + else + JSON.parse(json) + end + end + assert_equal path, error.json_path + end +end diff --git a/test/json/ractor_test.rb b/test/json/ractor_test.rb new file mode 100644 index 000000000..9e28f13c1 --- /dev/null +++ b/test/json/ractor_test.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +begin + require_relative './lib/helper' +rescue LoadError +end + +class JSONInRactorTest < Test::Unit::TestCase + unless Ractor.method_defined?(:value) + module RactorBackport + refine Ractor do + alias_method :value, :take + end + end + + using RactorBackport + end + + def test_generate + roundtrip_test(:generate, :parse) + end + + def test_dump + roundtrip_test(:dump, :load) + end + + def roundtrip_test(generator_method, parser_method) + pid = fork do + Warning[:experimental] = false + generator = Ractor.new(generator_method) do |generator_method| + json = JSON.public_send(generator_method, { + 'a' => 2, + 'b' => 3.141, + 'c' => 'c', + 'd' => [ 1, "b", 3.14 ], + 'e' => { 'foo' => 'bar' }, + 'g' => "\"\0\037", + 'h' => 1000.0, + 'i' => 0.001 + }) + JSON.parse(json) + end + + parser = Ractor.new(parser_method) do |parser_method| + JSON.public_send(parser_method, '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' + + '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}') + end + + actual_json = generator.value + expected_json = parser.value + if expected_json == actual_json + exit 0 + else + puts "Expected:" + puts expected_json + puts "Actual:" + puts actual_json + puts + exit 1 + end + end + _, status = Process.waitpid2(pid) + assert_predicate status, :success? + end + + def test_coder + coder = JSON::Coder.new.freeze + assert Ractor.shareable?(coder) + pid = fork do + Warning[:experimental] = false + r = Ractor.new(coder) do |coder| + json = coder.dump({ + 'a' => 2, + 'b' => 3.141, + 'c' => 'c', + 'd' => [ 1, "b", 3.14 ], + 'e' => { 'foo' => 'bar' }, + 'g' => "\"\0\037", + 'h' => 1000.0, + 'i' => 0.001 + }) + coder.load(json) + end + expected_json = JSON.parse('{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' + + '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}') + actual_json = r.value + + if expected_json == actual_json + exit 0 + else + puts "Expected:" + puts expected_json + puts "Actual:" + puts actual_json + puts + exit 1 + end + end + _, status = Process.waitpid2(pid) + assert_predicate status, :success? + end + + class NonNative + def initialize(value) + @value = value + end + end + + def test_coder_proc + block = Ractor.shareable_proc { |value| value.as_json } + coder = JSON::Coder.new(&block).freeze + assert Ractor.shareable?(coder) + + pid = fork do + Warning[:experimental] = false + assert_equal [{}], Ractor.new(coder) { |coder| + coder.load('[{}]') + }.value + end + + _, status = Process.waitpid2(pid) + assert_predicate status, :success? + end if Ractor.respond_to?(:shareable_proc) +end if defined?(Ractor) && Process.respond_to?(:fork) diff --git a/test/json/resumable_parser_test.rb b/test/json/resumable_parser_test.rb new file mode 100644 index 000000000..dbf3ea7b6 --- /dev/null +++ b/test/json/resumable_parser_test.rb @@ -0,0 +1,777 @@ +# frozen_string_literal: true + +require_relative 'test_helper' + +class JSONResumageParserTest < Test::Unit::TestCase + include JSON + + def setup + omit "JRuby not supported" if RUBY_ENGINE == "jruby" + @parser = new_parser + end + + def test_keyword_arguments + new_parser + new_parser({}) + new_parser(allow_nan: true) + + error = assert_raise(ArgumentError) do + new_parser(doesnt_exist: true, allow_nan: true) + end + assert_equal "unknown keyword: doesnt_exist", error.message + + error = assert_raise(ArgumentError) do + new_parser(doesnt_exist: true, allow_nan: true, a: 1, b: 2) + end + assert_equal "unknown keywords: doesnt_exist, a, b", error.message + end + + def test_value + refute_predicate @parser, :value? + assert_raise(ArgumentError) { @parser.value } + + @parser << '[]' + + refute_predicate @parser, :value? + assert_raise(ArgumentError) { @parser.value } + + assert @parser.parse + + assert_predicate @parser, :value? + assert_equal [], @parser.value + + refute_predicate @parser, :value? + assert_raise(ArgumentError) { @parser.value } + end + + def test_clear + @parser << '[1, 2, 3' + refute @parser.parse + assert_equal '3', @parser.rest + + @parser.clear + + assert_equal '', @parser.rest + refute_predicate @parser, :value? + + @parser << '[1, 2, 3][' + assert @parser.parse + assert_predicate @parser, :value? + assert_equal '[', @parser.rest + + @parser.clear + + assert_equal '', @parser.rest + refute_predicate @parser, :value? + end + + def test_parse_with_empty_buffer_keeps_parser_usable + # parse before any feed must not leak the in_use lock + refute @parser.parse + @parser << '[1, 2, 3]' + assert @parser.parse + assert_equal [1, 2, 3], @parser.value + + # same after a clear with no following feed + @parser.clear + refute @parser.parse + @parser << '[4]' + assert @parser.parse + assert_equal [4], @parser.value + end + + def test_clear_resets_nesting_depth + # An unfinished document leaks a nesting level; #clear must reset it so a later shallow + # document is not rejected with a spurious NestingError. + parser = new_parser(max_nesting: 10) + 10.times do + parser << '[1' # opens an array that is never closed before clear + parser.parse + parser.clear + end + parser << '[1]' + assert parser.parse + assert_equal [1], parser.value + end + + def test_nested_parse_error + parser = new_parser(on_load: ->(o) do + JSON.parse("") #=> raises JSON::ParserError + o + end) + parser << "[1]" + + assert_raise(JSON::ParserError) do + parser.parse + end + end + + def test_on_load_method + on_load = ->(value) { Integer === value ? value + 1 : value }.method(:call) + parser = new_parser(on_load: on_load) + parser << '[1]' + assert parser.parse + assert_equal [2], parser.value + end + + def test_parse_document_direct + @parser << '[true]' + assert_equal true, @parser.parse + assert_equal [true], @parser.value + end + + def test_parse_multiple_documents_direct + @parser << '[true]{}[1, 2, 3]' + + assert_equal true, @parser.parse + assert_equal [true], @parser.value + + assert_equal true, @parser.parse + assert_equal({}, @parser.value) + + assert_equal true, @parser.parse + assert_equal [1, 2, 3], @parser.value + end + + def test_parse_top_level_keywords + assert_resumed_parsing('true') + assert_resumed_parsing('false') + assert_resumed_parsing('null') + + assert_parse_stream([true, false, nil], 'truefalsenull') + end + + def test_parse_top_level_numbers + assert_parse_stream([1, 2, 3], '1 2 3 ') + assert_parse_stream([1, 2], '1 2 3') # Parser can't know if the number is terminated + assert_parse_stream([3], ' ') + assert_parse_stream([1, 2, 3, true], '1 2 3true') + assert_parse_stream([-1, 2.34, 5.0e67], '-1 2.34 5e67 ') + end + + def test_parse_byte_by_byte_array + assert_resumed_parsing('[]') + assert_resumed_parsing('[ ]') + assert_resumed_parsing('[true]') + assert_resumed_parsing('[12]') + assert_resumed_parsing('[ 12 ]') + assert_resumed_parsing('[ 12.3 ]') + assert_resumed_parsing('[ 12.3e12 ]') + assert_resumed_parsing('[ 1e12 ]') + assert_resumed_parsing('[-12]') + assert_resumed_parsing('[ -12 ]') + assert_resumed_parsing('[ -12.3 ]') + assert_resumed_parsing('[ -12.3e12 ]') + assert_resumed_parsing('[ -1e12 ]') + end + + def test_parse_byte_by_byte_object + assert_resumed_parsing('{}') + assert_resumed_parsing('{ }') + assert_resumed_parsing('{"test" : true}') + assert_resumed_parsing('{ "test":12, "value" : { "key": 42} }') + assert_resumed_parsing('{"te\u0000st":true}') + end + + def test_parse_byte_by_byte_string + assert_resumed_parsing(JSON.generate('test')) + assert_resumed_parsing(JSON.generate('te\\st')) + assert_resumed_parsing('"te\\u2028st"') + assert_resumed_parsing(JSON.generate("te\u2028st")) + assert_resumed_parsing(JSON.generate("te \u2028 st")) + + parser = JSON::ResumableParser.new + parser << '"\u12"' + assert_raise JSON::ParserError do + parser.parse + end + end + + def test_parse_byte_by_byte_numbers + assert_resumed_parsing('123 ', trailing_bytes: 1) + end + + def test_large_numbers_split_across_feeds_are_decoded_correctly + { + '12345678901234567890123456789012345678901234567890 ' => 12345678901234567890123456789012345678901234567890, + '-98765432109876543210987654321 ' => -98765432109876543210987654321, + '3.14159265358979323846264338327950288 ' => 3.14159265358979323846264338327950288, + '-1.5e-300 ' => -1.5e-300, + }.each do |doc, expected| + parser = new_parser + value = nil + doc.each_char do |char| + parser << char + value = parser.value if parser.parse + end + assert_equal expected, value, doc.inspect + end + end + + def test_integer_boundaries_split_across_feeds + [ + '9999999999999999999', # widest 19 digits + '-9223372036854775808', # INT64_MIN + '18446744073709551615', # UINT64_MAX exactly + '18446744073709551616', # 2**64, wraps the accumulator to 0 + '99999999999999999999', # widest 20 digits + '-18446744073709551616', + '100000000000000000000', # 21 digits + ].each do |literal| + doc = "#{literal} " + parser = new_parser + value = nil + doc.each_char do |char| + parser << char + value = parser.value if parser.parse + end + assert_equal Integer(literal, 10), value, doc.inspect + end + end + + def test_nul_byte_is_a_syntax_error + # A NUL byte in a structural position must raise, not stall forever waiting for more input + # (peek() returns 0 both at EOS and for a literal NUL byte). + assert_parse_error "\x00" # document value + assert_parse_error "[\x00]" # first array element + assert_parse_error "[1\x00]" # after an array element (',' or ']' expected) + assert_parse_error "[1,\x00]" # array element after ',' + assert_parse_error "{\x00}" # object key + assert_parse_error "{\"a\":1\x00}" # after an object value (',' or '}' expected) + assert_parse_error "{\"a\":1,\x00}" # object key after ',' + end + + def test_nul_after_backslash_in_object_key_is_a_syntax_error + assert_parse_error "{\"key\\\x00\":1}" + assert_parse_error "{\"a\":1,\"key\\\x00\":2}" + end + + def test_nul_after_backslash_in_object_key_across_feeds + @parser << "{\"key\\" + refute @parser.parse + @parser << "\x00\":1}" + assert_raise(JSON::ParserError) { @parser.parse } + end + + def test_incomplete_input_at_structural_positions_resumes + # Counterpart of test_nul_byte_is_a_syntax_error: a genuine EOS at the same positions must + # stay incomplete (return false), not raise -- this is what distinguishes EOS from a NUL. + assert_incomplete "[" + assert_incomplete "[1" + assert_incomplete "[1," + assert_incomplete "{" + assert_incomplete "{\"a\"" + assert_incomplete "{\"a\":1" + assert_incomplete "{\"a\":1," + end + + def test_line_comment_spanning_feed_boundary_is_not_terminated_early + # A `//` line comment is only terminated by a newline. When the newline + # has not arrived yet, the comment must stay incomplete rather than being + # treated as consumed -- otherwise its body, delivered in a later chunk, + # leaks out as parsed values. + values = [] + parser = new_parser(allow_comments: true) + parser << '[1] //' + values << parser.value while parser.parse + + parser << "[2]\n[3]" # [2] belongs to the comment, [3] is a real document + values << parser.value while parser.parse + + assert_equal [[1], [3]], values + end + + def test_line_comment_terminated_by_newline_across_feeds + values = [] + parser = new_parser(allow_comments: true) + parser << '[1] //co' + values << parser.value while parser.parse + + parser << "mment\n[2]" + values << parser.value while parser.parse + + assert_equal [[1], [2]], values + end + + def test_block_comment_spanning_feed_boundary_is_not_terminated_early + # A `/* */` block comment whose closing `*/` has not arrived yet must stay + # incomplete, mirroring the line-comment behaviour above. + values = [] + parser = new_parser(allow_comments: true) + parser << '[1] /*' + values << parser.value while parser.parse + + parser << '[2]*/[3]' # [2] belongs to the comment, [3] is a real document + values << parser.value while parser.parse + + assert_equal [[1], [3]], values + end + + def test_trailing_comma_split_across_feed_boundary + # With allow_trailing_comma the closing bracket may arrive in a later chunk + # than the comma; consuming the comma must not lose the ability to close. + parser = new_parser(allow_trailing_comma: true) + parser << '[1,' + refute parser.parse + parser << ']' + assert parser.parse + assert_equal [1], parser.value + + parser = new_parser(allow_trailing_comma: true) + parser << '{"a":1,' + refute parser.parse + parser << '}' + assert parser.parse + assert_equal({ "a" => 1 }, parser.value) + + # The boundary can also fall after an inner comma, then after the outer one. + parser = new_parser(allow_trailing_comma: true) + parser << '[[1,' + refute parser.parse + parser << '],]' + assert parser.parse + assert_equal [[1]], parser.value + end + + def test_trailing_comma_byte_by_byte + parser = new_parser(allow_trailing_comma: true) + '[1, 2, ]'.each_char { |c| parser << c; parser.parse } + assert_equal [1, 2], parser.value + + parser = new_parser(allow_trailing_comma: true) + '{ "a": 1, }'.each_char { |c| parser << c; parser.parse } + assert_equal({ "a" => 1 }, parser.value) + end + + def test_comment_after_comma_split_across_feed_boundary + # A comment right after a ',' straddling a feed boundary must not drop the + # comma: the value/key it separates must still be parsed on resume. + # The array case needs allow_trailing_comma: without it the array comma path + # commits its phase before eating the comment, so only the trailing-comma + # path exercises the eat-before-commit bug (the object path always did). + parser = new_parser(allow_comments: true, allow_trailing_comma: true) + parser << '[1,/*' + refute parser.parse + parser << '*/2]' + assert parser.parse + assert_equal [1, 2], parser.value + + parser = new_parser(allow_comments: true) + parser << '{"a":1,/*' + refute parser.parse + parser << '*/"b":2}' + assert parser.parse + assert_equal({ "a" => 1, "b" => 2 }, parser.value) + end + + def test_comment_after_container_open_split_across_feed_boundary + # A comment right after '[' or '{' straddling a feed boundary must not drop + # the opening token: it is consumed before its frame is pushed, so the + # suspension must resume from the bracket, not from inside the comment. + parser = new_parser(allow_comments: true) + parser << '[/*' + refute parser.parse + parser << '*/1]' + assert parser.parse + assert_equal [1], parser.value + + parser = new_parser(allow_comments: true) + parser << '{/*' + refute parser.parse + parser << '*/"a":1}' + assert parser.parse + assert_equal({ "a" => 1 }, parser.value) + + parser = new_parser(allow_comments: true) + parser << '[ /*' + refute parser.parse + parser << '*/ ]' + assert parser.parse + assert_equal [], parser.value + + # The boundary can even split the comment marker itself. + parser = new_parser(allow_comments: true) + parser << '[/' + refute parser.parse + parser << '**/1]' + assert parser.parse + assert_equal [1], parser.value + + # Line comments suspend the same way when their newline hasn't arrived. + parser = new_parser(allow_comments: true) + parser << '[//' + refute parser.parse + parser << "x\n1]" + assert parser.parse + assert_equal [1], parser.value + end + + def test_rest + @parser << '[1, 2, 3, "unterminated string' + refute @parser.parse + assert_equal '"unterminated string', @parser.rest + end + + def test_feed_frozen_multibyte_chunks + @parser << '{"message":"日本'.freeze + refute @parser.parse + @parser << '語のつづき"}'.freeze + assert @parser.parse + value = @parser.value + assert_equal({ "message" => "日本語のつづき" }, value) + assert_equal Encoding::UTF_8, value["message"].encoding + end + + def test_eos + assert_predicate @parser, :eos? + + @parser << '[1, 2, 3]' + refute_predicate @parser, :eos? + + assert @parser.parse + assert_predicate @parser, :eos? + + @parser << '123' + refute_predicate @parser, :eos? + + refute @parser.parse + refute_predicate @parser, :eos? + + @parser << ' ' + assert @parser.parse + assert_equal 123, @parser.value + assert_predicate @parser, :eos? + + refute @parser.parse + assert_predicate @parser, :eos? + end + + def test_empty_predicate + # empty? is defined on the state left after parsing everything that + # could be parsed from the fed bytes, so drain with parse/value first. + { + '' => true, # nothing fed: vacuously empty + '{"a":1}' => true, + '{"a":1}{"b":2}' => true, + '{"a":1} ' => true, # trailing whitespace + '{"a":1}{"b":2' => false, # inside a number token + '{"a":1}{"b":' => false, # right after a colon (token boundary) + '{"a":1}{' => false, # right after an object open + '{"a":1,' => false, # right after a comma (token boundary) + '"abc' => false, # inside a string token + '[1,2' => false, # unclosed array + }.each do |json, expected| + parser = new_parser + parser << json + parser.value while parser.parse + assert_equal expected, parser.empty?, "expected #{json.inspect} to be empty? == #{expected}" + end + end + + def test_empty_predicate_with_undrained_buffer + @parser << '{"a":1}{"b":2}' + assert @parser.parse + refute_predicate @parser, :empty? # second document still in the buffer + assert_equal({ "a" => 1 }, @parser.value) + assert @parser.parse + assert_equal({ "b" => 2 }, @parser.value) + assert_predicate @parser, :empty? + end + + def test_empty_predicate_with_pending_value + # A fully parsed document awaiting retrieval with #value is not empty. + @parser << '{"a":1}' + assert @parser.parse + refute_predicate @parser, :empty? + assert_equal({ "a" => 1 }, @parser.value) + assert_predicate @parser, :empty? + end + + def test_empty_predicate_across_feeds + @parser << '{"a' # chunk boundary inside a string literal + refute @parser.parse + refute_predicate @parser, :empty? + + @parser << '":1' + refute @parser.parse + refute_predicate @parser, :empty? + + @parser << '}' + assert @parser.parse + refute_predicate @parser, :empty? # value not retrieved yet + assert_equal({ "a" => 1 }, @parser.value) + assert_predicate @parser, :empty? + end + + def test_partial_value_predicate + { + '' => false, + '{"a":1}' => false, + '{"a":1}{"b":2}' => false, + '{"a":1} ' => false, + '{"a":1}{"b":2' => true, # inside a number token + '{"a":1}{"b":' => true, # right after a colon (token boundary) + # The tokenizer rewinds to the token start on EOS, so nothing is + # registered yet for a lone '{' or an unterminated top-level string: + # partial_value returns nil and partial_value? agrees. The truncation + # is still observable through the buffer: eos? is false, rest isn't + # empty. + '{"a":1}{' => false, # right after an object open + '"abc' => false, # inside a string token + '{"a":1,' => true, # right after a comma (token boundary) + '[1,2' => true, # unclosed array + }.each do |json, expected| + parser = new_parser + parser << json + parser.value while parser.parse + assert_equal expected, parser.partial_value?, "expected #{json.inspect} to be partial_value? == #{expected}" + assert_equal !parser.partial_value.nil?, parser.partial_value?, "partial_value?/partial_value mismatch for #{json.inspect}" + end + end + + def test_partial_value + assert_nil @parser.partial_value + assert_partial_value [1, 2, 3], '[1, 2, 3, "unterminated string' + assert_partial_value({ "a" => 1, "b" => { "c" => nil } }, '{ "a": 1, "b": { "c": "unterminated string') + assert_partial_value({ "a" => 1, "b" => { "c" => nil } }, '{ "a": 1, "b": { "c"') + assert_partial_value([1, { "a" => 1, "b" => { "c" => nil } }], '[1, { "a": 1, "b": { "c"') + end + + def test_partial_value_collapses_nested_incomplete_containers + # partial_value rebuilds the open containers on a scratch value stack; folding + # an empty inner container pushes a value, so that stack must hold more than its + # live size or the push reallocates the scratch buffer. + assert_partial_value({ "abc" => {} }, '{"abc":{"d') + assert_partial_value({ "a" => { "b" => { "c" => {} } } }, '{"a":{"b":{"c":{"e') + assert_partial_value([1, { "a" => {} }], '[1,{"a":{"d') + assert_partial_value({ "a" => [1, { "b" => [2, { "c" => nil }] }] }, '{"a":[1,{"b":[2,{"c"') + assert_partial_value([1, [2, [3, { "x" => nil }]]], '[1,[2,[3,{"x":[') + end + + def test_partial_value_issue_1005 + data = <<~JSON + [ + [] + ] + JSON + data.each_line do |line| + @parser << line + @parser.parse + @parser.partial_value # This unexpected parse error doesn't happen if we comment this out + end + assert_equal [[]], @parser.value + end + + def test_partial_value_missing + assert_nil @parser.partial_value + end + + def test_reentrency_prevented + called = false + parser = nil + callback = ->(o) do + unless called + called = true + parser.parse + end + o + end + parser = new_parser(on_load: callback) + parser << '[]' + error = assert_raise ArgumentError do + parser.parse + end + assert_equal "ResumableParser can't be used recursively", error.message + + called = false + parser = nil + callback = ->(o) do + unless called + called = true + parser.partial_value + end + o + end + parser = new_parser(on_load: callback) + parser << '[]' + error = assert_raise ArgumentError do + parser.parse + end + assert_equal "ResumableParser can't be used recursively", error.message + end + + def test_reentrency_prevented_in_partial_value + parser = nil + callback = ->(o) do + # Arrays are only built while partial_value runs (the scalars were pushed by the + # earlier parse); re-entering here used to corrupt/free the shared frame stack. + parser.parse if o.is_a?(Array) + o + end + parser = new_parser(on_load: callback) + parser << '[1, [2, 3,' + parser.parse + error = assert_raise ArgumentError do + parser.partial_value + end + assert_equal "ResumableParser can't be used recursively", error.message + + # The in_use lock must be released even though partial_value raised. + refute_predicate parser, :value? + end + + def test_feed_during_callback_prevented + parser = nil + callback = ->(o) do + parser << '99' if o == 1 # feeding while a parse is running must be rejected + o + end + parser = new_parser(on_load: callback) + parser << '[1, 2, 3]' + error = assert_raise ArgumentError do + parser.parse + end + assert_equal "ResumableParser can't be used recursively", error.message + + # the lock is released, so the parser stays usable + parser = new_parser + parser << '[1, 2, 3]' + assert parser.parse + assert_equal [1, 2, 3], parser.value + end + + def test_exception_unlock_parser + called = false + parser = nil + callback = ->(o) do + unless called + called = true + raise "oops" + end + o + end + parser = new_parser(on_load: callback) + parser << '[][1]' + assert_raise RuntimeError do + parser.parse + end + + assert parser.parse + assert_equal [1], parser.value + end + + def test_spill_rvalue_stack + expected = [1] * 1000 + @parser << JSON.dump(expected) + assert @parser.parse + assert_equal expected, @parser.value + end + + def test_spill_frames_stack + json = '[' * 1000 + ']' * 1000 + expected = JSON.parse(json, max_nesting: 1000) + @parser = new_parser(max_nesting: 1000) + @parser << json + assert @parser.parse + assert_equal expected, @parser.value + end + + def test_buffer_shrink + doc1 = '{"a":"' + ("x" * 800) + '"} {' # >= 512 bytes + doc2 = '"b":1} ' + + parser = JSON::ResumableParser.new({}) + + parser << doc1 # internal buffer becomes a *shared* string here + parser.parse # consume doc1 -> >50% of a >=512B buffer is now consumed + parser.value + + parser << doc2 # buffer is shrinked + parser.parse + parser.value + end + + def test_parsed_bytes + chunk = '[1, 2, 3, 4, tru' + @parser << chunk + refute @parser.parse + assert_equal chunk.bytesize, @parser.parsed_bytes + + @parser << 'e][]' + assert @parser.parse + assert_equal chunk.bytesize + 2, @parser.parsed_bytes + + assert @parser.parse + assert_equal 2, @parser.parsed_bytes + + @parser << chunk + refute @parser.parse + assert_equal chunk.bytesize, @parser.parsed_bytes + @parser.clear + assert_equal 0, @parser.parsed_bytes + end + + def test_parse_error_message + error = assert_parse_error("\n\n[plop\nfoo", "unexpected character: 'plop'") + assert_equal 0, error.line + assert_equal 0, error.column + end + + private + + def assert_parse_error(json, expected_error_message = nil) + parser = new_parser + parser << json + error = assert_raise(JSON::ParserError, "expected a parse error for #{json.inspect}") do + parser.parse + end + if expected_error_message + assert_equal expected_error_message, error.message + end + error + end + + def assert_incomplete(json) + parser = new_parser + parser << json + refute(parser.parse, "expected #{json.inspect} not to produce a value") + end + + def assert_partial_value(expected, json) + parser = new_parser + parser << json + refute parser.parse + 2.times do + assert_equal expected, parser.partial_value + end + end + + def assert_resumed_parsing(json, parser = @parser, trailing_bytes: 0) + expected = JSON.parse(json) + + last_parsed_byte_index = 0 + json.each_byte do |byte| + parser << byte.chr + last_parsed_byte_index += 1 + break if parser.parse + end + actual = parser.value + assert_equal expected, actual + remaining_bytes = (json.bytesize - last_parsed_byte_index) + assert_equal 0, remaining_bytes, "unconsumed bytes: #{actual.inspect}, remaining: #{json.byteslice(-1, remaining_bytes).inspect}" + assert_equal json.bytesize - trailing_bytes, parser.parsed_bytes + end + + def assert_parse_stream(expected, json, parser = @parser) + actual = [] + parser << json + while parser.parse + actual << parser.value + end + assert_equal(expected, actual) + end + + def new_parser(...) + JSON::ResumableParser.new(...) + end +end diff --git a/test/json/test_helper.rb b/test/json/test_helper.rb new file mode 100644 index 000000000..222ba86df --- /dev/null +++ b/test/json/test_helper.rb @@ -0,0 +1,63 @@ +$LOAD_PATH.unshift(File.expand_path('../../../ext', __FILE__), File.expand_path('../../../lib', __FILE__)) + +if ENV["JSON_COVERAGE"] + # This test helper is loaded inside Ruby's own test suite, so we try to not mess it up. + require 'coverage' + + branches_supported = Coverage.respond_to?(:supported?) && Coverage.supported?(:branches) + + # Coverage module must be started before SimpleCov to work around the cyclic require order. + # Track both branches and lines, or else SimpleCov misleadingly reports 0/0 = 100% for non-branching files. + Coverage.start(lines: true, + branches: branches_supported) + + require 'simplecov' + SimpleCov.start do + # Enabling both coverage types to let SimpleCov know to output them together in reports + enable_coverage :line + enable_coverage :branch if branches_supported + + # Can't always trust SimpleCov to find files implicitly + track_files 'lib/**/*.rb' + + add_filter 'lib/json/truffle_ruby' unless RUBY_ENGINE == 'truffleruby' + add_filter 'test/' + + coverage_dir '.coverage' + end +end + +require 'json' +require 'test/unit' +require 'stringio' +require 'tempfile' +require 'zlib' +begin + require 'bigdecimal' +rescue LoadError +end + +if ENV["JSON_COMPACT"] + if GC.respond_to?(:verify_compaction_references) + # This method was added in Ruby 3.0.0. Calling it this way asks the GC to + # move objects around, helping to find object movement bugs. + begin + GC.verify_compaction_references(expand_heap: true, toward: :empty) + rescue NotImplementedError, ArgumentError + # Some platforms don't support compaction + end + end + + if GC.respond_to?(:auto_compact=) + begin + GC.auto_compact = true + rescue NotImplementedError + # Some platforms don't support compaction + end + end +end + +unless defined?(Test::Unit::CoreAssertions) + require "core_assertions" + Test::Unit::TestCase.include Test::Unit::CoreAssertions +end diff --git a/tests/fixtures/fail4.json b/tests/fixtures/fail4.json deleted file mode 100644 index 9de168bf3..000000000 --- a/tests/fixtures/fail4.json +++ /dev/null @@ -1 +0,0 @@ -["extra comma",] \ No newline at end of file diff --git a/tests/fixtures/fail9.json b/tests/fixtures/fail9.json deleted file mode 100644 index 5815574f3..000000000 --- a/tests/fixtures/fail9.json +++ /dev/null @@ -1 +0,0 @@ -{"Extra comma": true,} \ No newline at end of file diff --git a/tests/json_addition_test.rb b/tests/json_addition_test.rb deleted file mode 100644 index 61625f89e..000000000 --- a/tests/json_addition_test.rb +++ /dev/null @@ -1,203 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' -require 'json/add/core' -require 'json/add/complex' -require 'json/add/rational' -require 'json/add/bigdecimal' -require 'json/add/ostruct' -require 'json/add/set' -require 'date' - -class JSONAdditionTest < Test::Unit::TestCase - include JSON - - class A - def initialize(a) - @a = a - end - - attr_reader :a - - def ==(other) - a == other.a - end - - def self.json_create(object) - new(*object['args']) - end - - def to_json(*args) - { - 'json_class' => self.class.name, - 'args' => [ @a ], - }.to_json(*args) - end - end - - class A2 < A - def to_json(*args) - { - 'json_class' => self.class.name, - 'args' => [ @a ], - }.to_json(*args) - end - end - - class B - def self.json_creatable? - false - end - - def to_json(*args) - { - 'json_class' => self.class.name, - }.to_json(*args) - end - end - - class C - def self.json_creatable? - false - end - - def to_json(*args) - { - 'json_class' => 'JSONAdditionTest::Nix', - }.to_json(*args) - end - end - - def test_extended_json - a = A.new(666) - assert A.json_creatable? - json = generate(a) - a_again = parse(json, :create_additions => true) - assert_kind_of a.class, a_again - assert_equal a, a_again - end - - def test_extended_json_default - a = A.new(666) - assert A.json_creatable? - json = generate(a) - a_hash = parse(json) - assert_kind_of Hash, a_hash - end - - def test_extended_json_disabled - a = A.new(666) - assert A.json_creatable? - json = generate(a) - a_again = parse(json, :create_additions => true) - assert_kind_of a.class, a_again - assert_equal a, a_again - a_hash = parse(json, :create_additions => false) - assert_kind_of Hash, a_hash - assert_equal( - {"args"=>[666], "json_class"=>"JSONAdditionTest::A"}.sort_by { |k,| k }, - a_hash.sort_by { |k,| k } - ) - end - - def test_extended_json_fail1 - b = B.new - assert !B.json_creatable? - json = generate(b) - assert_equal({ "json_class"=>"JSONAdditionTest::B" }, parse(json)) - end - - def test_extended_json_fail2 - c = C.new - assert !C.json_creatable? - json = generate(c) - assert_raise(ArgumentError, NameError) { parse(json, :create_additions => true) } - end - - def test_raw_strings - raw = '' - raw.respond_to?(:encode!) and raw.encode!(Encoding::ASCII_8BIT) - raw_array = [] - for i in 0..255 - raw << i - raw_array << i - end - json = raw.to_json_raw - json_raw_object = raw.to_json_raw_object - hash = { 'json_class' => 'String', 'raw'=> raw_array } - assert_equal hash, json_raw_object - assert_match(/\A\{.*\}\z/, json) - assert_match(/"json_class":"String"/, json) - assert_match(/"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json) - raw_again = parse(json, :create_additions => true) - assert_equal raw, raw_again - end - - MyJsonStruct = Struct.new 'MyJsonStruct', :foo, :bar - - def test_core - t = Time.now - assert_equal t, JSON(JSON(t), :create_additions => true) - d = Date.today - assert_equal d, JSON(JSON(d), :create_additions => true) - d = DateTime.civil(2007, 6, 14, 14, 57, 10, Rational(1, 12), 2299161) - assert_equal d, JSON(JSON(d), :create_additions => true) - assert_equal 1..10, JSON(JSON(1..10), :create_additions => true) - assert_equal 1...10, JSON(JSON(1...10), :create_additions => true) - assert_equal "a".."c", JSON(JSON("a".."c"), :create_additions => true) - assert_equal "a"..."c", JSON(JSON("a"..."c"), :create_additions => true) - s = MyJsonStruct.new 4711, 'foot' - assert_equal s, JSON(JSON(s), :create_additions => true) - struct = Struct.new :foo, :bar - s = struct.new 4711, 'foot' - assert_raise(JSONError) { JSON(s) } - begin - raise TypeError, "test me" - rescue TypeError => e - e_json = JSON.generate e - e_again = JSON e_json, :create_additions => true - assert_kind_of TypeError, e_again - assert_equal e.message, e_again.message - assert_equal e.backtrace, e_again.backtrace - end - assert_equal(/foo/, JSON(JSON(/foo/), :create_additions => true)) - assert_equal(/foo/i, JSON(JSON(/foo/i), :create_additions => true)) - end - - def test_utc_datetime - now = Time.now - d = DateTime.parse(now.to_s, :create_additions => true) # usual case - assert_equal d, parse(d.to_json, :create_additions => true) - d = DateTime.parse(now.utc.to_s) # of = 0 - assert_equal d, parse(d.to_json, :create_additions => true) - d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(1,24)) - assert_equal d, parse(d.to_json, :create_additions => true) - d = DateTime.civil(2008, 6, 17, 11, 48, 32, Rational(12,24)) - assert_equal d, parse(d.to_json, :create_additions => true) - end - - def test_rational_complex - assert_equal Rational(2, 9), parse(JSON(Rational(2, 9)), :create_additions => true) - assert_equal Complex(2, 9), parse(JSON(Complex(2, 9)), :create_additions => true) - end - - def test_bigdecimal - assert_equal BigDecimal('3.141', 23), JSON(JSON(BigDecimal('3.141', 23)), :create_additions => true) - assert_equal BigDecimal('3.141', 666), JSON(JSON(BigDecimal('3.141', 666)), :create_additions => true) - end - - def test_ostruct - o = OpenStruct.new - # XXX this won't work; o.foo = { :bar => true } - o.foo = { 'bar' => true } - assert_equal o, parse(JSON(o), :create_additions => true) - end - - def test_set - s = Set.new([:a, :b, :c, :a]) - assert_equal s, JSON.parse(JSON(s), :create_additions => true) - ss = SortedSet.new([:d, :b, :a, :c]) - ss_again = JSON.parse(JSON(ss), :create_additions => true) - assert_kind_of ss.class, ss_again - assert_equal ss, ss_again - end -end diff --git a/tests/json_common_interface_test.rb b/tests/json_common_interface_test.rb deleted file mode 100644 index de88c6e89..000000000 --- a/tests/json_common_interface_test.rb +++ /dev/null @@ -1,126 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' -require 'stringio' -require 'tempfile' - -class JSONCommonInterfaceTest < Test::Unit::TestCase - include JSON - - def setup - @hash = { - 'a' => 2, - 'b' => 3.141, - 'c' => 'c', - 'd' => [ 1, "b", 3.14 ], - 'e' => { 'foo' => 'bar' }, - 'g' => "\"\0\037", - 'h' => 1000.0, - 'i' => 0.001 - } - @json = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},'\ - '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}' - end - - def test_index - assert_equal @json, JSON[@hash] - assert_equal @hash, JSON[@json] - end - - def test_parser - assert_match /::Parser\z/, JSON.parser.name - end - - def test_generator - assert_match /::Generator\z/, JSON.generator.name - end - - def test_state - assert_match /::Generator::State\z/, JSON.state.name - end - - def test_create_id - assert_equal 'json_class', JSON.create_id - JSON.create_id = 'foo_bar' - assert_equal 'foo_bar', JSON.create_id - ensure - JSON.create_id = 'json_class' - end - - def test_deep_const_get - assert_raise(ArgumentError) { JSON.deep_const_get('Nix::Da') } - assert_equal File::SEPARATOR, JSON.deep_const_get('File::SEPARATOR') - end - - def test_parse - assert_equal [ 1, 2, 3, ], JSON.parse('[ 1, 2, 3 ]') - end - - def test_parse_bang - assert_equal [ 1, Infinity, 3, ], JSON.parse!('[ 1, Infinity, 3 ]') - end - - def test_generate - assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ]) - end - - def test_fast_generate - assert_equal '[1,2,3]', JSON.generate([ 1, 2, 3 ]) - end - - def test_pretty_generate - assert_equal "[\n 1,\n 2,\n 3\n]", JSON.pretty_generate([ 1, 2, 3 ]) - end - - def test_load - assert_equal @hash, JSON.load(@json) - tempfile = Tempfile.open('@json') - tempfile.write @json - tempfile.rewind - assert_equal @hash, JSON.load(tempfile) - stringio = StringIO.new(@json) - stringio.rewind - assert_equal @hash, JSON.load(stringio) - assert_equal nil, JSON.load(nil) - assert_equal nil, JSON.load('') - ensure - tempfile.close! - end - - def test_load_with_options - json = '{ "foo": NaN }' - assert JSON.load(json, nil, :allow_nan => true)['foo'].nan? - end - - def test_load_null - assert_equal nil, JSON.load(nil, nil, :allow_blank => true) - assert_raise(TypeError) { JSON.load(nil, nil, :allow_blank => false) } - assert_raise(JSON::ParserError) { JSON.load('', nil, :allow_blank => false) } - end - - def test_dump - too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' - assert_equal too_deep, dump(eval(too_deep)) - assert_kind_of String, Marshal.dump(eval(too_deep)) - assert_raise(ArgumentError) { dump(eval(too_deep), 100) } - assert_raise(ArgumentError) { Marshal.dump(eval(too_deep), 100) } - assert_equal too_deep, dump(eval(too_deep), 101) - assert_kind_of String, Marshal.dump(eval(too_deep), 101) - output = StringIO.new - dump(eval(too_deep), output) - assert_equal too_deep, output.string - output = StringIO.new - dump(eval(too_deep), output, 101) - assert_equal too_deep, output.string - end - - def test_dump_should_modify_defaults - max_nesting = JSON.dump_default_options[:max_nesting] - dump([], StringIO.new, 10) - assert_equal max_nesting, JSON.dump_default_options[:max_nesting] - end - - def test_JSON - assert_equal @json, JSON(@hash) - assert_equal @hash, JSON(@json) - end -end diff --git a/tests/json_encoding_test.rb b/tests/json_encoding_test.rb deleted file mode 100644 index cc7b71553..000000000 --- a/tests/json_encoding_test.rb +++ /dev/null @@ -1,107 +0,0 @@ -# encoding: utf-8 -#frozen_string_literal: false -require 'test_helper' - -class JSONEncodingTest < Test::Unit::TestCase - include JSON - - def setup - @utf_8 = '"© ≠ €!"' - @ascii_8bit = @utf_8.dup.force_encoding('ascii-8bit') - @parsed = "© ≠ €!" - @generated = '"\u00a9 \u2260 \u20ac!"' - if String.method_defined?(:encode) - @utf_16_data = @parsed.encode('utf-16be', 'utf-8') - @utf_16be = @utf_8.encode('utf-16be', 'utf-8') - @utf_16le = @utf_8.encode('utf-16le', 'utf-8') - @utf_32be = @utf_8.encode('utf-32be', 'utf-8') - @utf_32le = @utf_8.encode('utf-32le', 'utf-8') - else - require 'iconv' - @utf_16_data, = Iconv.iconv('utf-16be', 'utf-8', @parsed) - @utf_16be, = Iconv.iconv('utf-16be', 'utf-8', @utf_8) - @utf_16le, = Iconv.iconv('utf-16le', 'utf-8', @utf_8) - @utf_32be, = Iconv.iconv('utf-32be', 'utf-8', @utf_8) - @utf_32le, = Iconv.iconv('utf-32le', 'utf-8', @utf_8) - end - end - - def test_parse - assert_equal @parsed, JSON.parse(@ascii_8bit) - assert_equal @parsed, JSON.parse(@utf_8) - assert_equal @parsed, JSON.parse(@utf_16be) - assert_equal @parsed, JSON.parse(@utf_16le) - assert_equal @parsed, JSON.parse(@utf_32be) - assert_equal @parsed, JSON.parse(@utf_32le) - end - - def test_generate - assert_equal @generated, JSON.generate(@parsed, :ascii_only => true) - assert_equal @generated, JSON.generate(@utf_16_data, :ascii_only => true) - end - - def test_unicode - assert_equal '""', ''.to_json - assert_equal '"\\b"', "\b".to_json - assert_equal '"\u0001"', 0x1.chr.to_json - assert_equal '"\u001f"', 0x1f.chr.to_json - assert_equal '" "', ' '.to_json - assert_equal "\"#{0x7f.chr}\"", 0x7f.chr.to_json - utf8 = [ "© ≠ €! \01" ] - json = '["© ≠ €! \u0001"]' - assert_equal json, utf8.to_json(:ascii_only => false) - assert_equal utf8, parse(json) - json = '["\u00a9 \u2260 \u20ac! \u0001"]' - assert_equal json, utf8.to_json(:ascii_only => true) - assert_equal utf8, parse(json) - utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"] - json = "[\"\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212\"]" - assert_equal utf8, parse(json) - assert_equal json, utf8.to_json(:ascii_only => false) - utf8 = ["\343\201\202\343\201\204\343\201\206\343\201\210\343\201\212"] - assert_equal utf8, parse(json) - json = "[\"\\u3042\\u3044\\u3046\\u3048\\u304a\"]" - assert_equal json, utf8.to_json(:ascii_only => true) - assert_equal utf8, parse(json) - utf8 = ['საქართველო'] - json = '["საქართველო"]' - assert_equal json, utf8.to_json(:ascii_only => false) - json = "[\"\\u10e1\\u10d0\\u10e5\\u10d0\\u10e0\\u10d7\\u10d5\\u10d4\\u10da\\u10dd\"]" - assert_equal json, utf8.to_json(:ascii_only => true) - assert_equal utf8, parse(json) - assert_equal '["Ã"]', generate(["Ã"], :ascii_only => false) - assert_equal '["\\u00c3"]', generate(["Ã"], :ascii_only => true) - assert_equal ["€"], parse('["\u20ac"]') - utf8 = ["\xf0\xa0\x80\x81"] - json = "[\"\xf0\xa0\x80\x81\"]" - assert_equal json, generate(utf8, :ascii_only => false) - assert_equal utf8, parse(json) - json = '["\ud840\udc01"]' - assert_equal json, generate(utf8, :ascii_only => true) - assert_equal utf8, parse(json) - assert_raise(JSON::ParserError) { parse('"\u"') } - assert_raise(JSON::ParserError) { parse('"\ud800"') } - end - - def test_chars - (0..0x7f).each do |i| - json = '["\u%04x"]' % i - if RUBY_VERSION >= "1.9." - i = i.chr - end - assert_equal i, parse(json).first[0] - if i == ?\b - generated = generate(["" << i]) - assert '["\b"]' == generated || '["\10"]' == generated - elsif [?\n, ?\r, ?\t, ?\f].include?(i) - assert_equal '[' << ('' << i).dump << ']', generate(["" << i]) - elsif i.chr < 0x20.chr - assert_equal json, generate(["" << i]) - end - end - assert_raise(JSON::GeneratorError) do - generate(["\x80"], :ascii_only => true) - end - assert_equal "\302\200", parse('["\u0080"]').first - end -end diff --git a/tests/json_ext_parser_test.rb b/tests/json_ext_parser_test.rb deleted file mode 100644 index c5a030ea8..000000000 --- a/tests/json_ext_parser_test.rb +++ /dev/null @@ -1,15 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' - -class JSONExtParserTest < Test::Unit::TestCase - if defined?(JSON::Ext::Parser) - def test_allocate - parser = JSON::Ext::Parser.new("{}") - assert_raise(TypeError, '[ruby-core:35079]') do - parser.__send__(:initialize, "{}") - end - parser = JSON::Ext::Parser.allocate - assert_raise(TypeError, '[ruby-core:35079]') { parser.source } - end - end -end diff --git a/tests/json_fixtures_test.rb b/tests/json_fixtures_test.rb deleted file mode 100644 index 01954fe70..000000000 --- a/tests/json_fixtures_test.rb +++ /dev/null @@ -1,32 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' - -class JSONFixturesTest < Test::Unit::TestCase - def setup - fixtures = File.join(File.dirname(__FILE__), 'fixtures/{fail,pass}.json') - passed, failed = Dir[fixtures].partition { |f| f['pass'] } - @passed = passed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort - @failed = failed.inject([]) { |a, f| a << [ f, File.read(f) ] }.sort - end - - def test_passing - for name, source in @passed - begin - assert JSON.parse(source), - "Did not pass for fixture '#{name}': #{source.inspect}" - rescue => e - warn "\nCaught #{e.class}(#{e}) for fixture '#{name}': #{source.inspect}\n#{e.backtrace * "\n"}" - raise e - end - end - end - - def test_failing - for name, source in @failed - assert_raise(JSON::ParserError, JSON::NestingError, - "Did not fail for fixture '#{name}': #{source.inspect}") do - JSON.parse(source) - end - end - end -end diff --git a/tests/json_generator_test.rb b/tests/json_generator_test.rb deleted file mode 100644 index 86be398f4..000000000 --- a/tests/json_generator_test.rb +++ /dev/null @@ -1,377 +0,0 @@ -#!/usr/bin/env ruby -# encoding: utf-8 -# frozen_string_literal: false - -require 'test_helper' - -class JSONGeneratorTest < Test::Unit::TestCase - include JSON - - def setup - @hash = { - 'a' => 2, - 'b' => 3.141, - 'c' => 'c', - 'd' => [ 1, "b", 3.14 ], - 'e' => { 'foo' => 'bar' }, - 'g' => "\"\0\037", - 'h' => 1000.0, - 'i' => 0.001 - } - @json2 = '{"a":2,"b":3.141,"c":"c","d":[1,"b",3.14],"e":{"foo":"bar"},' + - '"g":"\\"\\u0000\\u001f","h":1000.0,"i":0.001}' - @json3 = <<'EOT'.chomp -{ - "a": 2, - "b": 3.141, - "c": "c", - "d": [ - 1, - "b", - 3.14 - ], - "e": { - "foo": "bar" - }, - "g": "\"\u0000\u001f", - "h": 1000.0, - "i": 0.001 -} -EOT - end - - def test_generate - json = generate(@hash) - assert_equal(parse(@json2), parse(json)) - json = JSON[@hash] - assert_equal(parse(@json2), parse(json)) - parsed_json = parse(json) - assert_equal(@hash, parsed_json) - json = generate({1=>2}) - assert_equal('{"1":2}', json) - parsed_json = parse(json) - assert_equal({"1"=>2}, parsed_json) - assert_equal '666', generate(666) - end - - def test_generate_pretty - json = pretty_generate(@hash) - # hashes aren't (insertion) ordered on every ruby implementation - # assert_equal(@json3, json) - assert_equal(parse(@json3), parse(json)) - parsed_json = parse(json) - assert_equal(@hash, parsed_json) - json = pretty_generate({1=>2}) - assert_equal(<<'EOT'.chomp, json) -{ - "1": 2 -} -EOT - parsed_json = parse(json) - assert_equal({"1"=>2}, parsed_json) - assert_equal '666', pretty_generate(666) - end - - def test_generate_custom - state = State.new(:space_before => " ", :space => " ", :indent => "", :object_nl => "\n", :array_nl => "") - json = generate({1=>{2=>3,4=>[5,6]}}, state) - assert_equal(<<'EOT'.chomp, json) -{ -"1" : { -"2" : 3, -"4" : [5,6] -} -} -EOT - end - - def test_fast_generate - json = fast_generate(@hash) - assert_equal(parse(@json2), parse(json)) - parsed_json = parse(json) - assert_equal(@hash, parsed_json) - json = fast_generate({1=>2}) - assert_equal('{"1":2}', json) - parsed_json = parse(json) - assert_equal({"1"=>2}, parsed_json) - assert_equal '666', fast_generate(666) - end - - def test_own_state - state = State.new - json = generate(@hash, state) - assert_equal(parse(@json2), parse(json)) - parsed_json = parse(json) - assert_equal(@hash, parsed_json) - json = generate({1=>2}, state) - assert_equal('{"1":2}', json) - parsed_json = parse(json) - assert_equal({"1"=>2}, parsed_json) - assert_equal '666', generate(666, state) - end - - def test_states - json = generate({1=>2}, nil) - assert_equal('{"1":2}', json) - s = JSON.state.new - assert s.check_circular? - assert s[:check_circular?] - h = { 1=>2 } - h[3] = h - assert_raise(JSON::NestingError) { generate(h) } - assert_raise(JSON::NestingError) { generate(h, s) } - s = JSON.state.new - a = [ 1, 2 ] - a << a - assert_raise(JSON::NestingError) { generate(a, s) } - assert s.check_circular? - assert s[:check_circular?] - end - - def test_pretty_state - state = PRETTY_STATE_PROTOTYPE.dup - assert_equal({ - :allow_nan => false, - :array_nl => "\n", - :ascii_only => false, - :buffer_initial_length => 1024, - :depth => 0, - :indent => " ", - :max_nesting => 100, - :object_nl => "\n", - :space => " ", - :space_before => "", - }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s }) - end - - def test_safe_state - state = SAFE_STATE_PROTOTYPE.dup - assert_equal({ - :allow_nan => false, - :array_nl => "", - :ascii_only => false, - :buffer_initial_length => 1024, - :depth => 0, - :indent => "", - :max_nesting => 100, - :object_nl => "", - :space => "", - :space_before => "", - }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s }) - end - - def test_fast_state - state = FAST_STATE_PROTOTYPE.dup - assert_equal({ - :allow_nan => false, - :array_nl => "", - :ascii_only => false, - :buffer_initial_length => 1024, - :depth => 0, - :indent => "", - :max_nesting => 0, - :object_nl => "", - :space => "", - :space_before => "", - }.sort_by { |n,| n.to_s }, state.to_h.sort_by { |n,| n.to_s }) - end - - def test_allow_nan - assert_raise(GeneratorError) { generate([JSON::NaN]) } - assert_equal '[NaN]', generate([JSON::NaN], :allow_nan => true) - assert_raise(GeneratorError) { fast_generate([JSON::NaN]) } - assert_raise(GeneratorError) { pretty_generate([JSON::NaN]) } - assert_equal "[\n NaN\n]", pretty_generate([JSON::NaN], :allow_nan => true) - assert_raise(GeneratorError) { generate([JSON::Infinity]) } - assert_equal '[Infinity]', generate([JSON::Infinity], :allow_nan => true) - assert_raise(GeneratorError) { fast_generate([JSON::Infinity]) } - assert_raise(GeneratorError) { pretty_generate([JSON::Infinity]) } - assert_equal "[\n Infinity\n]", pretty_generate([JSON::Infinity], :allow_nan => true) - assert_raise(GeneratorError) { generate([JSON::MinusInfinity]) } - assert_equal '[-Infinity]', generate([JSON::MinusInfinity], :allow_nan => true) - assert_raise(GeneratorError) { fast_generate([JSON::MinusInfinity]) } - assert_raise(GeneratorError) { pretty_generate([JSON::MinusInfinity]) } - assert_equal "[\n -Infinity\n]", pretty_generate([JSON::MinusInfinity], :allow_nan => true) - end - - def test_depth - ary = []; ary << ary - assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth - assert_raise(JSON::NestingError) { generate(ary) } - assert_equal 0, JSON::SAFE_STATE_PROTOTYPE.depth - assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth - assert_raise(JSON::NestingError) { JSON.pretty_generate(ary) } - assert_equal 0, JSON::PRETTY_STATE_PROTOTYPE.depth - s = JSON.state.new - assert_equal 0, s.depth - assert_raise(JSON::NestingError) { ary.to_json(s) } - assert_equal 100, s.depth - end - - def test_buffer_initial_length - s = JSON.state.new - assert_equal 1024, s.buffer_initial_length - s.buffer_initial_length = 0 - assert_equal 1024, s.buffer_initial_length - s.buffer_initial_length = -1 - assert_equal 1024, s.buffer_initial_length - s.buffer_initial_length = 128 - assert_equal 128, s.buffer_initial_length - end - - def test_gc - if respond_to?(:assert_in_out_err) - assert_in_out_err(%w[-rjson --disable-gems], <<-EOS, [], []) - bignum_too_long_to_embed_as_string = 1234567890123456789012345 - expect = bignum_too_long_to_embed_as_string.to_s - GC.stress = true - - 10.times do |i| - tmp = bignum_too_long_to_embed_as_string.to_json - raise "'\#{expect}' is expected, but '\#{tmp}'" unless tmp == expect - end - EOS - end - end if GC.respond_to?(:stress=) - - def test_configure_using_configure_and_merge - numbered_state = { - :indent => "1", - :space => '2', - :space_before => '3', - :object_nl => '4', - :array_nl => '5' - } - state1 = JSON.state.new - state1.merge(numbered_state) - assert_equal '1', state1.indent - assert_equal '2', state1.space - assert_equal '3', state1.space_before - assert_equal '4', state1.object_nl - assert_equal '5', state1.array_nl - state2 = JSON.state.new - state2.configure(numbered_state) - assert_equal '1', state2.indent - assert_equal '2', state2.space - assert_equal '3', state2.space_before - assert_equal '4', state2.object_nl - assert_equal '5', state2.array_nl - end - - def test_configure_hash_conversion - state = JSON.state.new - state.configure(:indent => '1') - assert_equal '1', state.indent - state = JSON.state.new - foo = 'foo' - assert_raise(TypeError) do - state.configure(foo) - end - def foo.to_h - { :indent => '2' } - end - state.configure(foo) - assert_equal '2', state.indent - end - - if defined?(JSON::Ext::Generator) - def test_broken_bignum # [ruby-core:38867] - pid = fork do - x = 1 << 64 - x.class.class_eval do - def to_s - end - end - begin - JSON::Ext::Generator::State.new.generate(x) - exit 1 - rescue TypeError - exit 0 - end - end - _, status = Process.waitpid2(pid) - assert status.success? - rescue NotImplementedError - # forking to avoid modifying core class of a parent process and - # introducing race conditions of tests are run in parallel - end - end - - def test_hash_likeness_set_symbol - state = JSON.state.new - assert_equal nil, state[:foo] - assert_equal nil.class, state[:foo].class - assert_equal nil, state['foo'] - state[:foo] = :bar - assert_equal :bar, state[:foo] - assert_equal :bar, state['foo'] - state_hash = state.to_hash - assert_kind_of Hash, state_hash - assert_equal :bar, state_hash[:foo] - end - - def test_hash_likeness_set_string - state = JSON.state.new - assert_equal nil, state[:foo] - assert_equal nil, state['foo'] - state['foo'] = :bar - assert_equal :bar, state[:foo] - assert_equal :bar, state['foo'] - state_hash = state.to_hash - assert_kind_of Hash, state_hash - assert_equal :bar, state_hash[:foo] - end - - def test_json_generate - assert_raise JSON::GeneratorError do - assert_equal true, generate(["\xea"]) - end - end - - def test_nesting - too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' - too_deep_ary = eval too_deep - assert_raise(JSON::NestingError) { generate too_deep_ary } - assert_raise(JSON::NestingError) { generate too_deep_ary, :max_nesting => 100 } - ok = generate too_deep_ary, :max_nesting => 101 - assert_equal too_deep, ok - ok = generate too_deep_ary, :max_nesting => nil - assert_equal too_deep, ok - ok = generate too_deep_ary, :max_nesting => false - assert_equal too_deep, ok - ok = generate too_deep_ary, :max_nesting => 0 - assert_equal too_deep, ok - end - - def test_backslash - data = [ '\\.(?i:gif|jpe?g|png)$' ] - json = '["\\\\.(?i:gif|jpe?g|png)$"]' - assert_equal json, generate(data) - # - data = [ '\\"' ] - json = '["\\\\\""]' - assert_equal json, generate(data) - # - data = [ '/' ] - json = '["/"]' - assert_equal json, generate(data) - # - data = ['"'] - json = '["\""]' - assert_equal json, generate(data) - # - data = ["'"] - json = '["\\\'"]' - assert_equal '["\'"]', generate(data) - end - - def test_string_subclass - s = Class.new(String) do - def to_s; self; end - undef to_json - end - assert_nothing_raised(SystemStackError) do - assert_equal '["foo"]', JSON.generate([s.new('foo')]) - end - end -end diff --git a/tests/json_generic_object_test.rb b/tests/json_generic_object_test.rb deleted file mode 100644 index 82742dcd6..000000000 --- a/tests/json_generic_object_test.rb +++ /dev/null @@ -1,82 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' - -class JSONGenericObjectTest < Test::Unit::TestCase - include JSON - - def setup - @go = GenericObject[ :a => 1, :b => 2 ] - end - - def test_attributes - assert_equal 1, @go.a - assert_equal 1, @go[:a] - assert_equal 2, @go.b - assert_equal 2, @go[:b] - assert_nil @go.c - assert_nil @go[:c] - end - - def test_generate_json - switch_json_creatable do - assert_equal @go, JSON(JSON(@go), :create_additions => true) - end - end - - def test_parse_json - assert_kind_of Hash, - JSON( - '{ "json_class": "JSON::GenericObject", "a": 1, "b": 2 }', - :create_additions => true - ) - switch_json_creatable do - assert_equal @go, l = - JSON( - '{ "json_class": "JSON::GenericObject", "a": 1, "b": 2 }', - :create_additions => true - ) - assert_equal 1, l.a - assert_equal @go, - l = JSON('{ "a": 1, "b": 2 }', :object_class => GenericObject) - assert_equal 1, l.a - assert_equal GenericObject[:a => GenericObject[:b => 2]], - l = JSON('{ "a": { "b": 2 } }', :object_class => GenericObject) - assert_equal 2, l.a.b - end - end - - def test_from_hash - result = GenericObject.from_hash( - :foo => { :bar => { :baz => true }, :quux => [ { :foobar => true } ] }) - assert_kind_of GenericObject, result.foo - assert_kind_of GenericObject, result.foo.bar - assert_equal true, result.foo.bar.baz - assert_kind_of GenericObject, result.foo.quux.first - assert_equal true, result.foo.quux.first.foobar - assert_equal true, GenericObject.from_hash(true) - end - - def test_json_generic_object_load - empty = JSON::GenericObject.load(nil) - assert_kind_of JSON::GenericObject, empty - simple_json = '{"json_class":"JSON::GenericObject","hello":"world"}' - simple = JSON::GenericObject.load(simple_json) - assert_kind_of JSON::GenericObject, simple - assert_equal "world", simple.hello - converting = JSON::GenericObject.load('{ "hello": "world" }') - assert_kind_of JSON::GenericObject, converting - assert_equal "world", converting.hello - - json = JSON::GenericObject.dump(JSON::GenericObject[:hello => 'world']) - assert_equal JSON(json), JSON('{"json_class":"JSON::GenericObject","hello":"world"}') - end - - private - - def switch_json_creatable - JSON::GenericObject.json_creatable = true - yield - ensure - JSON::GenericObject.json_creatable = false - end -end diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb deleted file mode 100644 index 5f454eb12..000000000 --- a/tests/json_parser_test.rb +++ /dev/null @@ -1,472 +0,0 @@ -# encoding: utf-8 -# frozen_string_literal: false -require 'test_helper' -require 'stringio' -require 'tempfile' -require 'ostruct' -require 'bigdecimal' - -class JSONParserTest < Test::Unit::TestCase - include JSON - - def test_construction - parser = JSON::Parser.new('test') - assert_equal 'test', parser.source - end - - def test_argument_encoding - source = "{}".encode("UTF-16") - JSON::Parser.new(source) - assert_equal Encoding::UTF_16, source.encoding - end if defined?(Encoding::UTF_16) - - def test_error_message_encoding - bug10705 = '[ruby-core:67386] [Bug #10705]' - json = ".\"\xE2\x88\x9A\"".force_encoding(Encoding::UTF_8) - e = assert_raise(JSON::ParserError) { - JSON::Ext::Parser.new(json).parse - } - assert_equal(Encoding::UTF_8, e.message.encoding, bug10705) - assert_include(e.message, json, bug10705) - end if defined?(Encoding::UTF_8) and defined?(JSON::Ext::Parser) - - def test_parsing - parser = JSON::Parser.new('"test"') - assert_equal 'test', parser.parse - end - - def test_parser_reset - parser = Parser.new('{"a":"b"}') - assert_equal({ 'a' => 'b' }, parser.parse) - assert_equal({ 'a' => 'b' }, parser.parse) - end - - def test_parse_values - assert_equal(nil, parse('null')) - assert_equal(false, parse('false')) - assert_equal(true, parse('true')) - assert_equal(-23, parse('-23')) - assert_equal(23, parse('23')) - assert_in_delta(0.23, parse('0.23'), 1e-2) - assert_in_delta(0.0, parse('0e0'), 1e-2) - assert_equal("", parse('""')) - assert_equal("foobar", parse('"foobar"')) - end - - def test_parse_simple_arrays - assert_equal([], parse('[]')) - assert_equal([], parse(' [ ] ')) - assert_equal([ nil ], parse('[null]')) - assert_equal([ false ], parse('[false]')) - assert_equal([ true ], parse('[true]')) - assert_equal([ -23 ], parse('[-23]')) - assert_equal([ 23 ], parse('[23]')) - assert_equal_float([ 0.23 ], parse('[0.23]')) - assert_equal_float([ 0.0 ], parse('[0e0]')) - assert_equal([""], parse('[""]')) - assert_equal(["foobar"], parse('["foobar"]')) - assert_equal([{}], parse('[{}]')) - end - - def test_parse_simple_objects - assert_equal({}, parse('{}')) - assert_equal({}, parse(' { } ')) - assert_equal({ "a" => nil }, parse('{ "a" : null}')) - assert_equal({ "a" => nil }, parse('{"a":null}')) - assert_equal({ "a" => false }, parse('{ "a" : false } ')) - assert_equal({ "a" => false }, parse('{"a":false}')) - assert_raise(JSON::ParserError) { parse('{false}') } - assert_equal({ "a" => true }, parse('{"a":true}')) - assert_equal({ "a" => true }, parse(' { "a" : true } ')) - assert_equal({ "a" => -23 }, parse(' { "a" : -23 } ')) - assert_equal({ "a" => -23 }, parse(' { "a" : -23 } ')) - assert_equal({ "a" => 23 }, parse('{"a":23 } ')) - assert_equal({ "a" => 23 }, parse(' { "a" : 23 } ')) - assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } ')) - assert_equal({ "a" => 0.23 }, parse(' { "a" : 0.23 } ')) - end - - def test_parse_numbers - assert_raise(JSON::ParserError) { parse('+23.2') } - assert_raise(JSON::ParserError) { parse('+23') } - assert_raise(JSON::ParserError) { parse('.23') } - assert_raise(JSON::ParserError) { parse('023') } - assert_equal 23, parse('23') - assert_equal -23, parse('-23') - assert_equal_float 3.141, parse('3.141') - assert_equal_float -3.141, parse('-3.141') - assert_equal_float 3.141, parse('3141e-3') - assert_equal_float 3.141, parse('3141.1e-3') - assert_equal_float 3.141, parse('3141E-3') - assert_equal_float 3.141, parse('3141.0E-3') - assert_equal_float -3.141, parse('-3141.0e-3') - assert_equal_float -3.141, parse('-3141e-3') - assert_raise(ParserError) { parse('NaN') } - assert parse('NaN', :allow_nan => true).nan? - assert_raise(ParserError) { parse('Infinity') } - assert_equal 1.0/0, parse('Infinity', :allow_nan => true) - assert_raise(ParserError) { parse('-Infinity') } - assert_equal -1.0/0, parse('-Infinity', :allow_nan => true) - end - - def test_parse_bigdecimals - assert_equal(BigDecimal, JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"].class) - assert_equal(BigDecimal.new("0.901234567890123456789E1"),JSON.parse('{"foo": 9.01234567890123456789}', decimal_class: BigDecimal)["foo"] ) - end - - if Array.method_defined?(:permutation) - def test_parse_more_complex_arrays - a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }] - a.permutation.each do |perm| - json = pretty_generate(perm) - assert_equal perm, parse(json) - end - end - - def test_parse_complex_objects - a = [ nil, false, true, "foßbar", [ "n€st€d", true ], { "nested" => true, "n€ßt€ð2" => {} }] - a.permutation.each do |perm| - s = "a" - orig_obj = perm.inject({}) { |h, x| h[s.dup] = x; s = s.succ; h } - json = pretty_generate(orig_obj) - assert_equal orig_obj, parse(json) - end - end - end - - def test_parse_arrays - assert_equal([1,2,3], parse('[1,2,3]')) - assert_equal([1.2,2,3], parse('[1.2,2,3]')) - assert_equal([[],[[],[]]], parse('[[],[[],[]]]')) - assert_equal([], parse('[]')) - assert_equal([], parse(' [ ] ')) - assert_equal([1], parse('[1]')) - assert_equal([1], parse(' [ 1 ] ')) - ary = [[1], ["foo"], [3.14], [4711.0], [2.718], [nil], - [[1, -2, 3]], [false], [true]] - assert_equal(ary, - parse('[[1],["foo"],[3.14],[47.11e+2],[2718.0E-3],[null],[[1,-2,3]],[false],[true]]')) - assert_equal(ary, parse(%Q{ [ [1] , ["foo"] , [3.14] \t , [47.11e+2]\s - , [2718.0E-3 ],\r[ null] , [[1, -2, 3 ]], [false ],[ true]\n ] })) - end - - def test_parse_json_primitive_values - assert_raise(JSON::ParserError) { parse('') } - assert_raise(TypeError) { parse(nil) } - assert_raise(JSON::ParserError) { parse(' /* foo */ ') } - assert_equal nil, parse('null') - assert_equal false, parse('false') - assert_equal true, parse('true') - assert_equal 23, parse('23') - assert_equal 1, parse('1') - assert_equal_float 3.141, parse('3.141'), 1E-3 - assert_equal 2 ** 64, parse('18446744073709551616') - assert_equal 'foo', parse('"foo"') - assert parse('NaN', :allow_nan => true).nan? - assert parse('Infinity', :allow_nan => true).infinite? - assert parse('-Infinity', :allow_nan => true).infinite? - assert_raise(JSON::ParserError) { parse('[ 1, ]') } - end - - def test_parse_some_strings - assert_equal([""], parse('[""]')) - assert_equal(["\\"], parse('["\\\\"]')) - assert_equal(['"'], parse('["\""]')) - assert_equal(['\\"\\'], parse('["\\\\\\"\\\\"]')) - assert_equal( - ["\"\b\n\r\t\0\037"], - parse('["\"\b\n\r\t\u0000\u001f"]') - ) - end - - def test_parse_big_integers - json1 = JSON(orig = (1 << 31) - 1) - assert_equal orig, parse(json1) - json2 = JSON(orig = 1 << 31) - assert_equal orig, parse(json2) - json3 = JSON(orig = (1 << 62) - 1) - assert_equal orig, parse(json3) - json4 = JSON(orig = 1 << 62) - assert_equal orig, parse(json4) - json5 = JSON(orig = 1 << 64) - assert_equal orig, parse(json5) - end - - def test_some_wrong_inputs - assert_raise(ParserError) { parse('[] bla') } - assert_raise(ParserError) { parse('[] 1') } - assert_raise(ParserError) { parse('[] []') } - assert_raise(ParserError) { parse('[] {}') } - assert_raise(ParserError) { parse('{} []') } - assert_raise(ParserError) { parse('{} {}') } - assert_raise(ParserError) { parse('[NULL]') } - assert_raise(ParserError) { parse('[FALSE]') } - assert_raise(ParserError) { parse('[TRUE]') } - assert_raise(ParserError) { parse('[07] ') } - assert_raise(ParserError) { parse('[0a]') } - assert_raise(ParserError) { parse('[1.]') } - assert_raise(ParserError) { parse(' ') } - end - - def test_symbolize_names - assert_equal({ "foo" => "bar", "baz" => "quux" }, - parse('{"foo":"bar", "baz":"quux"}')) - assert_equal({ :foo => "bar", :baz => "quux" }, - parse('{"foo":"bar", "baz":"quux"}', :symbolize_names => true)) - assert_raise(ArgumentError) do - parse('{}', :symbolize_names => true, :create_additions => true) - end - end - - def test_parse_comments - json = < "value1", "key2" => "value2", "key3" => "value3" }, - parse(json)) - json = < "value1" }, parse(json)) - end - - def test_nesting - too_deep = '[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' - too_deep_ary = eval too_deep - assert_raise(JSON::NestingError) { parse too_deep } - assert_raise(JSON::NestingError) { parse too_deep, :max_nesting => 100 } - ok = parse too_deep, :max_nesting => 101 - assert_equal too_deep_ary, ok - ok = parse too_deep, :max_nesting => nil - assert_equal too_deep_ary, ok - ok = parse too_deep, :max_nesting => false - assert_equal too_deep_ary, ok - ok = parse too_deep, :max_nesting => 0 - assert_equal too_deep_ary, ok - end - - def test_backslash - data = [ '\\.(?i:gif|jpe?g|png)$' ] - json = '["\\\\.(?i:gif|jpe?g|png)$"]' - assert_equal data, parse(json) - # - data = [ '\\"' ] - json = '["\\\\\""]' - assert_equal data, parse(json) - # - json = '["/"]' - data = [ '/' ] - assert_equal data, parse(json) - # - json = '["\""]' - data = ['"'] - assert_equal data, parse(json) - # - json = '["\\\'"]' - data = ["'"] - assert_equal data, parse(json) - end - - class SubArray < Array - def <<(v) - @shifted = true - super - end - - def shifted? - @shifted - end - end - - class SubArray2 < Array - def to_json(*a) - { - JSON.create_id => self.class.name, - 'ary' => to_a, - }.to_json(*a) - end - - def self.json_create(o) - o.delete JSON.create_id - o['ary'] - end - end - - class SubArrayWrapper - def initialize - @data = [] - end - - attr_reader :data - - def [](index) - @data[index] - end - - def <<(value) - @data << value - @shifted = true - end - - def shifted? - @shifted - end - end - - def test_parse_array_custom_array_derived_class - res = parse('[1,2]', :array_class => SubArray) - assert_equal([1,2], res) - assert_equal(SubArray, res.class) - assert res.shifted? - end - - def test_parse_array_custom_non_array_derived_class - res = parse('[1,2]', :array_class => SubArrayWrapper) - assert_equal([1,2], res.data) - assert_equal(SubArrayWrapper, res.class) - assert res.shifted? - end - - def test_parse_object - assert_equal({}, parse('{}')) - assert_equal({}, parse(' { } ')) - assert_equal({'foo'=>'bar'}, parse('{"foo":"bar"}')) - assert_equal({'foo'=>'bar'}, parse(' { "foo" : "bar" } ')) - end - - class SubHash < Hash - def []=(k, v) - @item_set = true - super - end - - def item_set? - @item_set - end - end - - class SubHash2 < Hash - def to_json(*a) - { - JSON.create_id => self.class.name, - }.merge(self).to_json(*a) - end - - def self.json_create(o) - o.delete JSON.create_id - self[o] - end - end - - class SubOpenStruct < OpenStruct - def [](k) - __send__(k) - end - - def []=(k, v) - @item_set = true - __send__("#{k}=", v) - end - - def item_set? - @item_set - end - end - - def test_parse_object_custom_hash_derived_class - res = parse('{"foo":"bar"}', :object_class => SubHash) - assert_equal({"foo" => "bar"}, res) - assert_equal(SubHash, res.class) - assert res.item_set? - end - - def test_parse_object_custom_non_hash_derived_class - res = parse('{"foo":"bar"}', :object_class => SubOpenStruct) - assert_equal "bar", res.foo - assert_equal(SubOpenStruct, res.class) - assert res.item_set? - end - - def test_parse_generic_object - res = parse( - '{"foo":"bar", "baz":{}}', - :object_class => JSON::GenericObject - ) - assert_equal(JSON::GenericObject, res.class) - assert_equal "bar", res.foo - assert_equal "bar", res["foo"] - assert_equal "bar", res[:foo] - assert_equal "bar", res.to_hash[:foo] - assert_equal(JSON::GenericObject, res.baz.class) - end - - def test_generate_core_subclasses_with_new_to_json - obj = SubHash2["foo" => SubHash2["bar" => true]] - obj_json = JSON(obj) - obj_again = parse(obj_json, :create_additions => true) - assert_kind_of SubHash2, obj_again - assert_kind_of SubHash2, obj_again['foo'] - assert obj_again['foo']['bar'] - assert_equal obj, obj_again - assert_equal ["foo"], - JSON(JSON(SubArray2["foo"]), :create_additions => true) - end - - def test_generate_core_subclasses_with_default_to_json - assert_equal '{"foo":"bar"}', JSON(SubHash["foo" => "bar"]) - assert_equal '["foo"]', JSON(SubArray["foo"]) - end - - def test_generate_of_core_subclasses - obj = SubHash["foo" => SubHash["bar" => true]] - obj_json = JSON(obj) - obj_again = JSON(obj_json) - assert_kind_of Hash, obj_again - assert_kind_of Hash, obj_again['foo'] - assert obj_again['foo']['bar'] - assert_equal obj, obj_again - end - - def test_parsing_frozen_ascii8bit_string - assert_equal( - { 'foo' => 'bar' }, - JSON('{ "foo": "bar" }'.force_encoding(Encoding::ASCII_8BIT).freeze) - ) - end - - private - - def assert_equal_float(expected, actual, delta = 1e-2) - Array === expected and expected = expected.first - Array === actual and actual = actual.first - assert_in_delta(expected, actual, delta) - end -end diff --git a/tests/json_string_matching_test.rb b/tests/json_string_matching_test.rb deleted file mode 100644 index 5d55dc31b..000000000 --- a/tests/json_string_matching_test.rb +++ /dev/null @@ -1,38 +0,0 @@ -#frozen_string_literal: false -require 'test_helper' -require 'time' - -class JSONStringMatchingTest < Test::Unit::TestCase - include JSON - - class TestTime < ::Time - def self.json_create(string) - Time.parse(string) - end - - def to_json(*) - %{"#{strftime('%FT%T%z')}"} - end - - def ==(other) - to_i == other.to_i - end - end - - def test_match_date - t = TestTime.new - t_json = [ t ].to_json - time_regexp = /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{4}\z/ - assert_equal [ t ], - parse( - t_json, - :create_additions => true, - :match_string => { time_regexp => TestTime } - ) - assert_equal [ t.strftime('%FT%T%z') ], - parse( - t_json, - :match_string => { time_regexp => TestTime } - ) - end -end diff --git a/tests/test_helper.rb b/tests/test_helper.rb deleted file mode 100644 index c5ec0fca7..000000000 --- a/tests/test_helper.rb +++ /dev/null @@ -1,17 +0,0 @@ -case ENV['JSON'] -when 'pure' - $:.unshift 'lib' - require 'json/pure' -when 'ext' - $:.unshift 'ext', 'lib' - require 'json/ext' -else - $:.unshift 'ext', 'lib' - require 'json' -end - -require 'test/unit' -begin - require 'byebug' -rescue LoadError -end diff --git a/tools/diff.sh b/tools/diff.sh deleted file mode 100755 index 89385b038..000000000 --- a/tools/diff.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -files=`find ext -name '*.[ch]' -o -name parser.rl` - -for f in $files -do - b=`basename $f` - g=`find ../ruby/ext/json -name $b` - d=`diff -u $f $g` - test -z "$d" && continue - echo "$d" - read -p "Edit diff of $b? " a - case $a in - [yY]*) - vimdiff $f $g - ;; - esac -done diff --git a/tools/fuzz.rb b/tools/fuzz.rb deleted file mode 100755 index 826193019..000000000 --- a/tools/fuzz.rb +++ /dev/null @@ -1,131 +0,0 @@ -require 'json' - -class Fuzzer - def initialize(n, freqs = {}) - sum = freqs.inject(0.0) { |s, x| s + x.last } - freqs.each_key { |x| freqs[x] /= sum } - s = 0.0 - freqs.each_key do |x| - freqs[x] = s .. (s + t = freqs[x]) - s += t - end - @freqs = freqs - @n = n - @alpha = (0..0xff).to_a - end - - def random_string - s = '' - 30.times { s << @alpha[rand(@alpha.size)] } - s - end - - def pick - r = rand - found = @freqs.find { |k, f| f.include? rand } - found && found.first - end - - def make_pick - k = pick - case - when k == Hash, k == Array - k.new - when k == true, k == false, k == nil - k - when k == String - random_string - when k == Fixnum - rand(2 ** 30) - 2 ** 29 - when k == Bignum - rand(2 ** 70) - 2 ** 69 - end - end - - def fuzz(current = nil) - if @n > 0 - case current - when nil - @n -= 1 - current = fuzz [ Hash, Array ][rand(2)].new - when Array - while @n > 0 - @n -= 1 - current << case p = make_pick - when Array, Hash - fuzz(p) - else - p - end - end - when Hash - while @n > 0 - @n -= 1 - current[random_string] = case p = make_pick - when Array, Hash - fuzz(p) - else - p - end - end - end - end - current - end -end - -class MyState < JSON.state - WS = " \r\t\n" - - def initialize - super( - :indent => make_spaces, - :space => make_spaces, - :space_before => make_spaces, - :object_nl => make_spaces, - :array_nl => make_spaces, - :max_nesting => false - ) - end - - def make_spaces - s = '' - rand(1).times { s << WS[rand(WS.size)] } - s - end -end - -n = (ARGV.shift || 500).to_i -loop do - fuzzer = Fuzzer.new(n, - Hash => 25, - Array => 25, - String => 10, - Fixnum => 10, - Bignum => 10, - nil => 5, - true => 5, - false => 5 - ) - o1 = fuzzer.fuzz - json = JSON.generate o1, MyState.new - if $DEBUG - puts "-" * 80 - puts json, json.size - else - puts json.size - end - begin - o2 = JSON.parse(json, :max_nesting => false) - rescue JSON::ParserError => e - puts "Caught #{e.class}: #{e.message}\n#{e.backtrace * "\n"}" - puts "o1 = #{o1.inspect}", "json = #{json}", "json_str = #{json.inspect}" - puts "locals = #{local_variables.inspect}" - exit - end - if o1 != o2 - puts "mismatch", "o1 = #{o1.inspect}", "o2 = #{o2.inspect}", - "json = #{json}", "json_str = #{json.inspect}" - puts "locals = #{local_variables.inspect}" - end -end diff --git a/tools/server.rb b/tools/server.rb deleted file mode 100755 index 184a01c6a..000000000 --- a/tools/server.rb +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env ruby -# encoding: utf-8 - -require 'webrick' -include WEBrick -$:.unshift 'ext' -$:.unshift 'lib' -require 'json' - -class JSONServlet < HTTPServlet::AbstractServlet - @@count = 1 - - def do_GET(req, res) - obj = { - "TIME" => Time.now.strftime("%FT%T"), - "foo" => "Bär", - "bar" => "© ≠ €!", - 'a' => 2, - 'b' => 3.141, - 'COUNT' => @@count += 1, - 'c' => 'c', - 'd' => [ 1, "b", 3.14 ], - 'e' => { 'foo' => 'bar' }, - 'g' => "松本行弘", - 'h' => 1000.0, - 'i' => 0.001, - 'j' => "\xf0\xa0\x80\x81", - } - res.body = JSON.generate obj - res['Content-Type'] = "application/json" - end -end - -def create_server(err, dir, port) - dir = File.expand_path(dir) - err.puts "Surf to:", "http://#{Socket.gethostname}:#{port}" - - s = HTTPServer.new( - :Port => port, - :DocumentRoot => dir, - :Logger => WEBrick::Log.new(err), - :AccessLog => [ - [ err, WEBrick::AccessLog::COMMON_LOG_FORMAT ], - [ err, WEBrick::AccessLog::REFERER_LOG_FORMAT ], - [ err, WEBrick::AccessLog::AGENT_LOG_FORMAT ] - ] - ) - s.mount("/json", JSONServlet) - s -end - -default_dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'data')) -dir = ARGV.shift || default_dir -port = (ARGV.shift || 6666).to_i -s = create_server(STDERR, dir, 6666) -t = Thread.new { s.start } -trap(:INT) do - s.shutdown - t.join - exit -end -sleep